From 7adcb81e4f83f98c468889aaa5a85558ba88c770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isma=C3=ABl=20Bouya?= Date: Mon, 25 Jan 2016 17:45:33 +0100 Subject: Initial commit --- sources/plugins/a11yhelp/dialogs/a11yhelp.js | 216 ++ .../a11yhelp/dialogs/lang/_translationstatus.txt | 25 + sources/plugins/a11yhelp/dialogs/lang/af.js | 148 + sources/plugins/a11yhelp/dialogs/lang/ar.js | 148 + sources/plugins/a11yhelp/dialogs/lang/bg.js | 148 + sources/plugins/a11yhelp/dialogs/lang/ca.js | 148 + sources/plugins/a11yhelp/dialogs/lang/cs.js | 148 + sources/plugins/a11yhelp/dialogs/lang/cy.js | 148 + sources/plugins/a11yhelp/dialogs/lang/da.js | 148 + sources/plugins/a11yhelp/dialogs/lang/de.js | 148 + sources/plugins/a11yhelp/dialogs/lang/el.js | 148 + sources/plugins/a11yhelp/dialogs/lang/en-gb.js | 148 + sources/plugins/a11yhelp/dialogs/lang/en.js | 167 + sources/plugins/a11yhelp/dialogs/lang/eo.js | 148 + sources/plugins/a11yhelp/dialogs/lang/es.js | 148 + sources/plugins/a11yhelp/dialogs/lang/et.js | 148 + sources/plugins/a11yhelp/dialogs/lang/eu.js | 148 + sources/plugins/a11yhelp/dialogs/lang/fa.js | 148 + sources/plugins/a11yhelp/dialogs/lang/fi.js | 148 + sources/plugins/a11yhelp/dialogs/lang/fo.js | 148 + sources/plugins/a11yhelp/dialogs/lang/fr-ca.js | 148 + sources/plugins/a11yhelp/dialogs/lang/fr.js | 148 + sources/plugins/a11yhelp/dialogs/lang/gl.js | 148 + sources/plugins/a11yhelp/dialogs/lang/gu.js | 148 + sources/plugins/a11yhelp/dialogs/lang/he.js | 148 + sources/plugins/a11yhelp/dialogs/lang/hi.js | 148 + sources/plugins/a11yhelp/dialogs/lang/hr.js | 148 + sources/plugins/a11yhelp/dialogs/lang/hu.js | 148 + sources/plugins/a11yhelp/dialogs/lang/id.js | 148 + sources/plugins/a11yhelp/dialogs/lang/it.js | 148 + sources/plugins/a11yhelp/dialogs/lang/ja.js | 148 + sources/plugins/a11yhelp/dialogs/lang/km.js | 148 + sources/plugins/a11yhelp/dialogs/lang/ko.js | 148 + sources/plugins/a11yhelp/dialogs/lang/ku.js | 148 + sources/plugins/a11yhelp/dialogs/lang/lt.js | 148 + sources/plugins/a11yhelp/dialogs/lang/lv.js | 148 + sources/plugins/a11yhelp/dialogs/lang/mk.js | 148 + sources/plugins/a11yhelp/dialogs/lang/mn.js | 148 + sources/plugins/a11yhelp/dialogs/lang/nb.js | 148 + sources/plugins/a11yhelp/dialogs/lang/nl.js | 148 + sources/plugins/a11yhelp/dialogs/lang/no.js | 148 + sources/plugins/a11yhelp/dialogs/lang/pl.js | 148 + sources/plugins/a11yhelp/dialogs/lang/pt-br.js | 148 + sources/plugins/a11yhelp/dialogs/lang/pt.js | 148 + sources/plugins/a11yhelp/dialogs/lang/ro.js | 148 + sources/plugins/a11yhelp/dialogs/lang/ru.js | 148 + sources/plugins/a11yhelp/dialogs/lang/si.js | 148 + sources/plugins/a11yhelp/dialogs/lang/sk.js | 148 + sources/plugins/a11yhelp/dialogs/lang/sl.js | 148 + sources/plugins/a11yhelp/dialogs/lang/sq.js | 148 + sources/plugins/a11yhelp/dialogs/lang/sr-latn.js | 148 + sources/plugins/a11yhelp/dialogs/lang/sr.js | 148 + sources/plugins/a11yhelp/dialogs/lang/sv.js | 148 + sources/plugins/a11yhelp/dialogs/lang/th.js | 148 + sources/plugins/a11yhelp/dialogs/lang/tr.js | 148 + sources/plugins/a11yhelp/dialogs/lang/tt.js | 148 + sources/plugins/a11yhelp/dialogs/lang/ug.js | 148 + sources/plugins/a11yhelp/dialogs/lang/uk.js | 148 + sources/plugins/a11yhelp/dialogs/lang/vi.js | 148 + sources/plugins/a11yhelp/dialogs/lang/zh-cn.js | 148 + sources/plugins/a11yhelp/dialogs/lang/zh.js | 148 + sources/plugins/a11yhelp/plugin.js | 51 + sources/plugins/about/dialogs/about.js | 73 + .../plugins/about/dialogs/hidpi/logo_ckeditor.png | Bin 0 -> 13339 bytes sources/plugins/about/dialogs/logo_ckeditor.png | Bin 0 -> 6757 bytes sources/plugins/about/icons/about.png | Bin 0 -> 843 bytes sources/plugins/about/icons/hidpi/about.png | Bin 0 -> 1992 bytes sources/plugins/about/lang/af.js | 12 + sources/plugins/about/lang/ar.js | 12 + sources/plugins/about/lang/bg.js | 12 + sources/plugins/about/lang/bn.js | 12 + sources/plugins/about/lang/bs.js | 12 + sources/plugins/about/lang/ca.js | 12 + sources/plugins/about/lang/cs.js | 12 + sources/plugins/about/lang/cy.js | 12 + sources/plugins/about/lang/da.js | 12 + sources/plugins/about/lang/de.js | 12 + sources/plugins/about/lang/el.js | 12 + sources/plugins/about/lang/en-au.js | 12 + sources/plugins/about/lang/en-ca.js | 12 + sources/plugins/about/lang/en-gb.js | 12 + sources/plugins/about/lang/en.js | 12 + sources/plugins/about/lang/eo.js | 12 + sources/plugins/about/lang/es.js | 12 + sources/plugins/about/lang/et.js | 12 + sources/plugins/about/lang/eu.js | 12 + sources/plugins/about/lang/fa.js | 12 + sources/plugins/about/lang/fi.js | 12 + sources/plugins/about/lang/fo.js | 12 + sources/plugins/about/lang/fr-ca.js | 12 + sources/plugins/about/lang/fr.js | 12 + sources/plugins/about/lang/gl.js | 12 + sources/plugins/about/lang/gu.js | 12 + sources/plugins/about/lang/he.js | 12 + sources/plugins/about/lang/hi.js | 12 + sources/plugins/about/lang/hr.js | 12 + sources/plugins/about/lang/hu.js | 12 + sources/plugins/about/lang/id.js | 12 + sources/plugins/about/lang/is.js | 12 + sources/plugins/about/lang/it.js | 12 + sources/plugins/about/lang/ja.js | 12 + sources/plugins/about/lang/ka.js | 12 + sources/plugins/about/lang/km.js | 12 + sources/plugins/about/lang/ko.js | 12 + sources/plugins/about/lang/ku.js | 12 + sources/plugins/about/lang/lt.js | 12 + sources/plugins/about/lang/lv.js | 12 + sources/plugins/about/lang/mk.js | 12 + sources/plugins/about/lang/mn.js | 12 + sources/plugins/about/lang/ms.js | 12 + sources/plugins/about/lang/nb.js | 12 + sources/plugins/about/lang/nl.js | 12 + sources/plugins/about/lang/no.js | 12 + sources/plugins/about/lang/pl.js | 12 + sources/plugins/about/lang/pt-br.js | 12 + sources/plugins/about/lang/pt.js | 12 + sources/plugins/about/lang/ro.js | 12 + sources/plugins/about/lang/ru.js | 12 + sources/plugins/about/lang/si.js | 12 + sources/plugins/about/lang/sk.js | 12 + sources/plugins/about/lang/sl.js | 12 + sources/plugins/about/lang/sq.js | 12 + sources/plugins/about/lang/sr-latn.js | 12 + sources/plugins/about/lang/sr.js | 12 + sources/plugins/about/lang/sv.js | 12 + sources/plugins/about/lang/th.js | 12 + sources/plugins/about/lang/tr.js | 12 + sources/plugins/about/lang/tt.js | 12 + sources/plugins/about/lang/ug.js | 12 + sources/plugins/about/lang/uk.js | 12 + sources/plugins/about/lang/vi.js | 12 + sources/plugins/about/lang/zh-cn.js | 12 + sources/plugins/about/lang/zh.js | 12 + sources/plugins/about/plugin.js | 27 + sources/plugins/basicstyles/icons/bold.png | Bin 0 -> 813 bytes sources/plugins/basicstyles/icons/hidpi/bold.png | Bin 0 -> 1865 bytes sources/plugins/basicstyles/icons/hidpi/italic.png | Bin 0 -> 1452 bytes sources/plugins/basicstyles/icons/hidpi/strike.png | Bin 0 -> 2171 bytes .../plugins/basicstyles/icons/hidpi/subscript.png | Bin 0 -> 1965 bytes .../basicstyles/icons/hidpi/superscript.png | Bin 0 -> 2021 bytes .../plugins/basicstyles/icons/hidpi/underline.png | Bin 0 -> 1577 bytes sources/plugins/basicstyles/icons/italic.png | Bin 0 -> 708 bytes sources/plugins/basicstyles/icons/strike.png | Bin 0 -> 879 bytes sources/plugins/basicstyles/icons/subscript.png | Bin 0 -> 806 bytes sources/plugins/basicstyles/icons/superscript.png | Bin 0 -> 859 bytes sources/plugins/basicstyles/icons/underline.png | Bin 0 -> 747 bytes sources/plugins/basicstyles/lang/af.js | 12 + sources/plugins/basicstyles/lang/ar.js | 12 + sources/plugins/basicstyles/lang/bg.js | 12 + sources/plugins/basicstyles/lang/bn.js | 12 + sources/plugins/basicstyles/lang/bs.js | 12 + sources/plugins/basicstyles/lang/ca.js | 12 + sources/plugins/basicstyles/lang/cs.js | 12 + sources/plugins/basicstyles/lang/cy.js | 12 + sources/plugins/basicstyles/lang/da.js | 12 + sources/plugins/basicstyles/lang/de.js | 12 + sources/plugins/basicstyles/lang/el.js | 12 + sources/plugins/basicstyles/lang/en-au.js | 12 + sources/plugins/basicstyles/lang/en-ca.js | 12 + sources/plugins/basicstyles/lang/en-gb.js | 12 + sources/plugins/basicstyles/lang/en.js | 12 + sources/plugins/basicstyles/lang/eo.js | 12 + sources/plugins/basicstyles/lang/es.js | 12 + sources/plugins/basicstyles/lang/et.js | 12 + sources/plugins/basicstyles/lang/eu.js | 12 + sources/plugins/basicstyles/lang/fa.js | 12 + sources/plugins/basicstyles/lang/fi.js | 12 + sources/plugins/basicstyles/lang/fo.js | 12 + sources/plugins/basicstyles/lang/fr-ca.js | 12 + sources/plugins/basicstyles/lang/fr.js | 12 + sources/plugins/basicstyles/lang/gl.js | 12 + sources/plugins/basicstyles/lang/gu.js | 12 + sources/plugins/basicstyles/lang/he.js | 12 + sources/plugins/basicstyles/lang/hi.js | 12 + sources/plugins/basicstyles/lang/hr.js | 12 + sources/plugins/basicstyles/lang/hu.js | 12 + sources/plugins/basicstyles/lang/id.js | 12 + sources/plugins/basicstyles/lang/is.js | 12 + sources/plugins/basicstyles/lang/it.js | 12 + sources/plugins/basicstyles/lang/ja.js | 12 + sources/plugins/basicstyles/lang/ka.js | 12 + sources/plugins/basicstyles/lang/km.js | 12 + sources/plugins/basicstyles/lang/ko.js | 12 + sources/plugins/basicstyles/lang/ku.js | 12 + sources/plugins/basicstyles/lang/lt.js | 12 + sources/plugins/basicstyles/lang/lv.js | 12 + sources/plugins/basicstyles/lang/mk.js | 12 + sources/plugins/basicstyles/lang/mn.js | 12 + sources/plugins/basicstyles/lang/ms.js | 12 + sources/plugins/basicstyles/lang/nb.js | 12 + sources/plugins/basicstyles/lang/nl.js | 12 + sources/plugins/basicstyles/lang/no.js | 12 + sources/plugins/basicstyles/lang/pl.js | 12 + sources/plugins/basicstyles/lang/pt-br.js | 12 + sources/plugins/basicstyles/lang/pt.js | 12 + sources/plugins/basicstyles/lang/ro.js | 12 + sources/plugins/basicstyles/lang/ru.js | 12 + sources/plugins/basicstyles/lang/si.js | 12 + sources/plugins/basicstyles/lang/sk.js | 12 + sources/plugins/basicstyles/lang/sl.js | 12 + sources/plugins/basicstyles/lang/sq.js | 12 + sources/plugins/basicstyles/lang/sr-latn.js | 12 + sources/plugins/basicstyles/lang/sr.js | 12 + sources/plugins/basicstyles/lang/sv.js | 12 + sources/plugins/basicstyles/lang/th.js | 12 + sources/plugins/basicstyles/lang/tr.js | 12 + sources/plugins/basicstyles/lang/tt.js | 12 + sources/plugins/basicstyles/lang/ug.js | 12 + sources/plugins/basicstyles/lang/uk.js | 12 + sources/plugins/basicstyles/lang/vi.js | 12 + sources/plugins/basicstyles/lang/zh-cn.js | 12 + sources/plugins/basicstyles/lang/zh.js | 12 + sources/plugins/basicstyles/plugin.js | 209 ++ sources/plugins/bidi/icons/bidiltr.png | Bin 0 -> 769 bytes sources/plugins/bidi/icons/bidirtl.png | Bin 0 -> 768 bytes sources/plugins/bidi/icons/hidpi/bidiltr.png | Bin 0 -> 1579 bytes sources/plugins/bidi/icons/hidpi/bidirtl.png | Bin 0 -> 1596 bytes sources/plugins/bidi/lang/af.js | 8 + sources/plugins/bidi/lang/ar.js | 8 + sources/plugins/bidi/lang/bg.js | 8 + sources/plugins/bidi/lang/bn.js | 8 + sources/plugins/bidi/lang/bs.js | 8 + sources/plugins/bidi/lang/ca.js | 8 + sources/plugins/bidi/lang/cs.js | 8 + sources/plugins/bidi/lang/cy.js | 8 + sources/plugins/bidi/lang/da.js | 8 + sources/plugins/bidi/lang/de.js | 8 + sources/plugins/bidi/lang/el.js | 8 + sources/plugins/bidi/lang/en-au.js | 8 + sources/plugins/bidi/lang/en-ca.js | 8 + sources/plugins/bidi/lang/en-gb.js | 8 + sources/plugins/bidi/lang/en.js | 8 + sources/plugins/bidi/lang/eo.js | 8 + sources/plugins/bidi/lang/es.js | 8 + sources/plugins/bidi/lang/et.js | 8 + sources/plugins/bidi/lang/eu.js | 8 + sources/plugins/bidi/lang/fa.js | 8 + sources/plugins/bidi/lang/fi.js | 8 + sources/plugins/bidi/lang/fo.js | 8 + sources/plugins/bidi/lang/fr-ca.js | 8 + sources/plugins/bidi/lang/fr.js | 8 + sources/plugins/bidi/lang/gl.js | 8 + sources/plugins/bidi/lang/gu.js | 8 + sources/plugins/bidi/lang/he.js | 8 + sources/plugins/bidi/lang/hi.js | 8 + sources/plugins/bidi/lang/hr.js | 8 + sources/plugins/bidi/lang/hu.js | 8 + sources/plugins/bidi/lang/id.js | 8 + sources/plugins/bidi/lang/is.js | 8 + sources/plugins/bidi/lang/it.js | 8 + sources/plugins/bidi/lang/ja.js | 8 + sources/plugins/bidi/lang/ka.js | 8 + sources/plugins/bidi/lang/km.js | 8 + sources/plugins/bidi/lang/ko.js | 8 + sources/plugins/bidi/lang/ku.js | 8 + sources/plugins/bidi/lang/lt.js | 8 + sources/plugins/bidi/lang/lv.js | 8 + sources/plugins/bidi/lang/mk.js | 8 + sources/plugins/bidi/lang/mn.js | 8 + sources/plugins/bidi/lang/ms.js | 8 + sources/plugins/bidi/lang/nb.js | 8 + sources/plugins/bidi/lang/nl.js | 8 + sources/plugins/bidi/lang/no.js | 8 + sources/plugins/bidi/lang/pl.js | 8 + sources/plugins/bidi/lang/pt-br.js | 8 + sources/plugins/bidi/lang/pt.js | 8 + sources/plugins/bidi/lang/ro.js | 8 + sources/plugins/bidi/lang/ru.js | 8 + sources/plugins/bidi/lang/si.js | 8 + sources/plugins/bidi/lang/sk.js | 8 + sources/plugins/bidi/lang/sl.js | 8 + sources/plugins/bidi/lang/sq.js | 8 + sources/plugins/bidi/lang/sr-latn.js | 8 + sources/plugins/bidi/lang/sr.js | 8 + sources/plugins/bidi/lang/sv.js | 8 + sources/plugins/bidi/lang/th.js | 8 + sources/plugins/bidi/lang/tr.js | 8 + sources/plugins/bidi/lang/tt.js | 8 + sources/plugins/bidi/lang/ug.js | 8 + sources/plugins/bidi/lang/uk.js | 8 + sources/plugins/bidi/lang/vi.js | 8 + sources/plugins/bidi/lang/zh-cn.js | 8 + sources/plugins/bidi/lang/zh.js | 8 + sources/plugins/bidi/plugin.js | 320 ++ sources/plugins/blockquote/icons/blockquote.png | Bin 0 -> 925 bytes .../plugins/blockquote/icons/hidpi/blockquote.png | Bin 0 -> 2233 bytes sources/plugins/blockquote/lang/af.js | 7 + sources/plugins/blockquote/lang/ar.js | 7 + sources/plugins/blockquote/lang/bg.js | 7 + sources/plugins/blockquote/lang/bn.js | 7 + sources/plugins/blockquote/lang/bs.js | 7 + sources/plugins/blockquote/lang/ca.js | 7 + sources/plugins/blockquote/lang/cs.js | 7 + sources/plugins/blockquote/lang/cy.js | 7 + sources/plugins/blockquote/lang/da.js | 7 + sources/plugins/blockquote/lang/de.js | 7 + sources/plugins/blockquote/lang/el.js | 7 + sources/plugins/blockquote/lang/en-au.js | 7 + sources/plugins/blockquote/lang/en-ca.js | 7 + sources/plugins/blockquote/lang/en-gb.js | 7 + sources/plugins/blockquote/lang/en.js | 7 + sources/plugins/blockquote/lang/eo.js | 7 + sources/plugins/blockquote/lang/es.js | 7 + sources/plugins/blockquote/lang/et.js | 7 + sources/plugins/blockquote/lang/eu.js | 7 + sources/plugins/blockquote/lang/fa.js | 7 + sources/plugins/blockquote/lang/fi.js | 7 + sources/plugins/blockquote/lang/fo.js | 7 + sources/plugins/blockquote/lang/fr-ca.js | 7 + sources/plugins/blockquote/lang/fr.js | 7 + sources/plugins/blockquote/lang/gl.js | 7 + sources/plugins/blockquote/lang/gu.js | 7 + sources/plugins/blockquote/lang/he.js | 7 + sources/plugins/blockquote/lang/hi.js | 7 + sources/plugins/blockquote/lang/hr.js | 7 + sources/plugins/blockquote/lang/hu.js | 7 + sources/plugins/blockquote/lang/id.js | 7 + sources/plugins/blockquote/lang/is.js | 7 + sources/plugins/blockquote/lang/it.js | 7 + sources/plugins/blockquote/lang/ja.js | 7 + sources/plugins/blockquote/lang/ka.js | 7 + sources/plugins/blockquote/lang/km.js | 7 + sources/plugins/blockquote/lang/ko.js | 7 + sources/plugins/blockquote/lang/ku.js | 7 + sources/plugins/blockquote/lang/lt.js | 7 + sources/plugins/blockquote/lang/lv.js | 7 + sources/plugins/blockquote/lang/mk.js | 7 + sources/plugins/blockquote/lang/mn.js | 7 + sources/plugins/blockquote/lang/ms.js | 7 + sources/plugins/blockquote/lang/nb.js | 7 + sources/plugins/blockquote/lang/nl.js | 7 + sources/plugins/blockquote/lang/no.js | 7 + sources/plugins/blockquote/lang/pl.js | 7 + sources/plugins/blockquote/lang/pt-br.js | 7 + sources/plugins/blockquote/lang/pt.js | 7 + sources/plugins/blockquote/lang/ro.js | 7 + sources/plugins/blockquote/lang/ru.js | 7 + sources/plugins/blockquote/lang/si.js | 7 + sources/plugins/blockquote/lang/sk.js | 7 + sources/plugins/blockquote/lang/sl.js | 7 + sources/plugins/blockquote/lang/sq.js | 7 + sources/plugins/blockquote/lang/sr-latn.js | 7 + sources/plugins/blockquote/lang/sr.js | 7 + sources/plugins/blockquote/lang/sv.js | 7 + sources/plugins/blockquote/lang/th.js | 7 + sources/plugins/blockquote/lang/tr.js | 7 + sources/plugins/blockquote/lang/tt.js | 7 + sources/plugins/blockquote/lang/ug.js | 7 + sources/plugins/blockquote/lang/uk.js | 7 + sources/plugins/blockquote/lang/vi.js | 7 + sources/plugins/blockquote/lang/zh-cn.js | 7 + sources/plugins/blockquote/lang/zh.js | 7 + sources/plugins/blockquote/plugin.js | 251 ++ sources/plugins/button/lang/af.js | 8 + sources/plugins/button/lang/ar.js | 8 + sources/plugins/button/lang/bg.js | 8 + sources/plugins/button/lang/ca.js | 8 + sources/plugins/button/lang/cs.js | 8 + sources/plugins/button/lang/da.js | 8 + sources/plugins/button/lang/de.js | 8 + sources/plugins/button/lang/el.js | 8 + sources/plugins/button/lang/en-gb.js | 8 + sources/plugins/button/lang/en.js | 8 + sources/plugins/button/lang/eo.js | 8 + sources/plugins/button/lang/es.js | 8 + sources/plugins/button/lang/eu.js | 8 + sources/plugins/button/lang/fa.js | 8 + sources/plugins/button/lang/fi.js | 8 + sources/plugins/button/lang/fr.js | 8 + sources/plugins/button/lang/gl.js | 8 + sources/plugins/button/lang/he.js | 8 + sources/plugins/button/lang/hu.js | 8 + sources/plugins/button/lang/id.js | 8 + sources/plugins/button/lang/it.js | 8 + sources/plugins/button/lang/ja.js | 8 + sources/plugins/button/lang/km.js | 8 + sources/plugins/button/lang/ko.js | 8 + sources/plugins/button/lang/ku.js | 8 + sources/plugins/button/lang/lt.js | 8 + sources/plugins/button/lang/nb.js | 8 + sources/plugins/button/lang/nl.js | 8 + sources/plugins/button/lang/pl.js | 8 + sources/plugins/button/lang/pt-br.js | 8 + sources/plugins/button/lang/pt.js | 8 + sources/plugins/button/lang/ro.js | 8 + sources/plugins/button/lang/ru.js | 8 + sources/plugins/button/lang/sk.js | 8 + sources/plugins/button/lang/sl.js | 8 + sources/plugins/button/lang/sq.js | 8 + sources/plugins/button/lang/sv.js | 8 + sources/plugins/button/lang/tr.js | 8 + sources/plugins/button/lang/tt.js | 8 + sources/plugins/button/lang/ug.js | 8 + sources/plugins/button/lang/uk.js | 8 + sources/plugins/button/lang/vi.js | 8 + sources/plugins/button/lang/zh-cn.js | 8 + sources/plugins/button/lang/zh.js | 8 + sources/plugins/button/plugin.js | 377 +++ sources/plugins/clipboard/dev/clipboard.html | 190 ++ sources/plugins/clipboard/dev/console.js | 49 + sources/plugins/clipboard/dev/dnd.html | 185 ++ sources/plugins/clipboard/dialogs/paste.js | 254 ++ sources/plugins/clipboard/icons/copy-rtl.png | Bin 0 -> 684 bytes sources/plugins/clipboard/icons/copy.png | Bin 0 -> 684 bytes sources/plugins/clipboard/icons/cut-rtl.png | Bin 0 -> 1031 bytes sources/plugins/clipboard/icons/cut.png | Bin 0 -> 1031 bytes sources/plugins/clipboard/icons/hidpi/copy-rtl.png | Bin 0 -> 1558 bytes sources/plugins/clipboard/icons/hidpi/copy.png | Bin 0 -> 1558 bytes sources/plugins/clipboard/icons/hidpi/cut-rtl.png | Bin 0 -> 2692 bytes sources/plugins/clipboard/icons/hidpi/cut.png | Bin 0 -> 2692 bytes .../plugins/clipboard/icons/hidpi/paste-rtl.png | Bin 0 -> 1959 bytes sources/plugins/clipboard/icons/hidpi/paste.png | Bin 0 -> 1959 bytes sources/plugins/clipboard/icons/paste-rtl.png | Bin 0 -> 724 bytes sources/plugins/clipboard/icons/paste.png | Bin 0 -> 724 bytes sources/plugins/clipboard/lang/af.js | 15 + sources/plugins/clipboard/lang/ar.js | 15 + sources/plugins/clipboard/lang/bg.js | 15 + sources/plugins/clipboard/lang/bn.js | 15 + sources/plugins/clipboard/lang/bs.js | 15 + sources/plugins/clipboard/lang/ca.js | 15 + sources/plugins/clipboard/lang/cs.js | 15 + sources/plugins/clipboard/lang/cy.js | 15 + sources/plugins/clipboard/lang/da.js | 15 + sources/plugins/clipboard/lang/de.js | 15 + sources/plugins/clipboard/lang/el.js | 15 + sources/plugins/clipboard/lang/en-au.js | 15 + sources/plugins/clipboard/lang/en-ca.js | 15 + sources/plugins/clipboard/lang/en-gb.js | 15 + sources/plugins/clipboard/lang/en.js | 15 + sources/plugins/clipboard/lang/eo.js | 15 + sources/plugins/clipboard/lang/es.js | 15 + sources/plugins/clipboard/lang/et.js | 15 + sources/plugins/clipboard/lang/eu.js | 15 + sources/plugins/clipboard/lang/fa.js | 15 + sources/plugins/clipboard/lang/fi.js | 15 + sources/plugins/clipboard/lang/fo.js | 15 + sources/plugins/clipboard/lang/fr-ca.js | 15 + sources/plugins/clipboard/lang/fr.js | 15 + sources/plugins/clipboard/lang/gl.js | 15 + sources/plugins/clipboard/lang/gu.js | 15 + sources/plugins/clipboard/lang/he.js | 15 + sources/plugins/clipboard/lang/hi.js | 15 + sources/plugins/clipboard/lang/hr.js | 15 + sources/plugins/clipboard/lang/hu.js | 15 + sources/plugins/clipboard/lang/id.js | 15 + sources/plugins/clipboard/lang/is.js | 15 + sources/plugins/clipboard/lang/it.js | 15 + sources/plugins/clipboard/lang/ja.js | 15 + sources/plugins/clipboard/lang/ka.js | 15 + sources/plugins/clipboard/lang/km.js | 15 + sources/plugins/clipboard/lang/ko.js | 15 + sources/plugins/clipboard/lang/ku.js | 15 + sources/plugins/clipboard/lang/lt.js | 15 + sources/plugins/clipboard/lang/lv.js | 15 + sources/plugins/clipboard/lang/mk.js | 15 + sources/plugins/clipboard/lang/mn.js | 15 + sources/plugins/clipboard/lang/ms.js | 15 + sources/plugins/clipboard/lang/nb.js | 15 + sources/plugins/clipboard/lang/nl.js | 15 + sources/plugins/clipboard/lang/no.js | 15 + sources/plugins/clipboard/lang/pl.js | 15 + sources/plugins/clipboard/lang/pt-br.js | 15 + sources/plugins/clipboard/lang/pt.js | 15 + sources/plugins/clipboard/lang/ro.js | 15 + sources/plugins/clipboard/lang/ru.js | 15 + sources/plugins/clipboard/lang/si.js | 15 + sources/plugins/clipboard/lang/sk.js | 15 + sources/plugins/clipboard/lang/sl.js | 15 + sources/plugins/clipboard/lang/sq.js | 15 + sources/plugins/clipboard/lang/sr-latn.js | 15 + sources/plugins/clipboard/lang/sr.js | 15 + sources/plugins/clipboard/lang/sv.js | 15 + sources/plugins/clipboard/lang/th.js | 15 + sources/plugins/clipboard/lang/tr.js | 15 + sources/plugins/clipboard/lang/tt.js | 15 + sources/plugins/clipboard/lang/ug.js | 15 + sources/plugins/clipboard/lang/uk.js | 15 + sources/plugins/clipboard/lang/vi.js | 15 + sources/plugins/clipboard/lang/zh-cn.js | 15 + sources/plugins/clipboard/lang/zh.js | 15 + sources/plugins/clipboard/plugin.js | 2723 ++++++++++++++++ sources/plugins/colorbutton/icons/bgcolor.png | Bin 0 -> 906 bytes .../plugins/colorbutton/icons/hidpi/bgcolor.png | Bin 0 -> 2169 bytes .../plugins/colorbutton/icons/hidpi/textcolor.png | Bin 0 -> 1725 bytes sources/plugins/colorbutton/icons/textcolor.png | Bin 0 -> 813 bytes sources/plugins/colorbutton/lang/af.js | 53 + sources/plugins/colorbutton/lang/ar.js | 53 + sources/plugins/colorbutton/lang/bg.js | 53 + sources/plugins/colorbutton/lang/bn.js | 53 + sources/plugins/colorbutton/lang/bs.js | 53 + sources/plugins/colorbutton/lang/ca.js | 53 + sources/plugins/colorbutton/lang/cs.js | 53 + sources/plugins/colorbutton/lang/cy.js | 53 + sources/plugins/colorbutton/lang/da.js | 53 + sources/plugins/colorbutton/lang/de.js | 53 + sources/plugins/colorbutton/lang/el.js | 53 + sources/plugins/colorbutton/lang/en-au.js | 53 + sources/plugins/colorbutton/lang/en-ca.js | 53 + sources/plugins/colorbutton/lang/en-gb.js | 53 + sources/plugins/colorbutton/lang/en.js | 53 + sources/plugins/colorbutton/lang/eo.js | 53 + sources/plugins/colorbutton/lang/es.js | 53 + sources/plugins/colorbutton/lang/et.js | 53 + sources/plugins/colorbutton/lang/eu.js | 53 + sources/plugins/colorbutton/lang/fa.js | 53 + sources/plugins/colorbutton/lang/fi.js | 53 + sources/plugins/colorbutton/lang/fo.js | 53 + sources/plugins/colorbutton/lang/fr-ca.js | 53 + sources/plugins/colorbutton/lang/fr.js | 53 + sources/plugins/colorbutton/lang/gl.js | 53 + sources/plugins/colorbutton/lang/gu.js | 53 + sources/plugins/colorbutton/lang/he.js | 53 + sources/plugins/colorbutton/lang/hi.js | 53 + sources/plugins/colorbutton/lang/hr.js | 53 + sources/plugins/colorbutton/lang/hu.js | 53 + sources/plugins/colorbutton/lang/id.js | 53 + sources/plugins/colorbutton/lang/is.js | 53 + sources/plugins/colorbutton/lang/it.js | 53 + sources/plugins/colorbutton/lang/ja.js | 53 + sources/plugins/colorbutton/lang/ka.js | 53 + sources/plugins/colorbutton/lang/km.js | 53 + sources/plugins/colorbutton/lang/ko.js | 53 + sources/plugins/colorbutton/lang/ku.js | 53 + sources/plugins/colorbutton/lang/lt.js | 53 + sources/plugins/colorbutton/lang/lv.js | 53 + sources/plugins/colorbutton/lang/mk.js | 53 + sources/plugins/colorbutton/lang/mn.js | 53 + sources/plugins/colorbutton/lang/ms.js | 53 + sources/plugins/colorbutton/lang/nb.js | 53 + sources/plugins/colorbutton/lang/nl.js | 53 + sources/plugins/colorbutton/lang/no.js | 53 + sources/plugins/colorbutton/lang/pl.js | 53 + sources/plugins/colorbutton/lang/pt-br.js | 53 + sources/plugins/colorbutton/lang/pt.js | 53 + sources/plugins/colorbutton/lang/ro.js | 53 + sources/plugins/colorbutton/lang/ru.js | 53 + sources/plugins/colorbutton/lang/si.js | 53 + sources/plugins/colorbutton/lang/sk.js | 53 + sources/plugins/colorbutton/lang/sl.js | 53 + sources/plugins/colorbutton/lang/sq.js | 53 + sources/plugins/colorbutton/lang/sr-latn.js | 53 + sources/plugins/colorbutton/lang/sr.js | 53 + sources/plugins/colorbutton/lang/sv.js | 53 + sources/plugins/colorbutton/lang/th.js | 53 + sources/plugins/colorbutton/lang/tr.js | 53 + sources/plugins/colorbutton/lang/tt.js | 53 + sources/plugins/colorbutton/lang/ug.js | 53 + sources/plugins/colorbutton/lang/uk.js | 53 + sources/plugins/colorbutton/lang/vi.js | 53 + sources/plugins/colorbutton/lang/zh-cn.js | 53 + sources/plugins/colorbutton/lang/zh.js | 53 + sources/plugins/colorbutton/plugin.js | 301 ++ sources/plugins/colordialog/dialogs/colordialog.js | 327 ++ sources/plugins/colordialog/lang/af.js | 11 + sources/plugins/colordialog/lang/ar.js | 11 + sources/plugins/colordialog/lang/bg.js | 11 + sources/plugins/colordialog/lang/bn.js | 11 + sources/plugins/colordialog/lang/bs.js | 11 + sources/plugins/colordialog/lang/ca.js | 11 + sources/plugins/colordialog/lang/cs.js | 11 + sources/plugins/colordialog/lang/cy.js | 11 + sources/plugins/colordialog/lang/da.js | 11 + sources/plugins/colordialog/lang/de.js | 11 + sources/plugins/colordialog/lang/el.js | 11 + sources/plugins/colordialog/lang/en-au.js | 11 + sources/plugins/colordialog/lang/en-ca.js | 11 + sources/plugins/colordialog/lang/en-gb.js | 11 + sources/plugins/colordialog/lang/en.js | 11 + sources/plugins/colordialog/lang/eo.js | 11 + sources/plugins/colordialog/lang/es.js | 11 + sources/plugins/colordialog/lang/et.js | 11 + sources/plugins/colordialog/lang/eu.js | 11 + sources/plugins/colordialog/lang/fa.js | 11 + sources/plugins/colordialog/lang/fi.js | 11 + sources/plugins/colordialog/lang/fo.js | 11 + sources/plugins/colordialog/lang/fr-ca.js | 11 + sources/plugins/colordialog/lang/fr.js | 11 + sources/plugins/colordialog/lang/gl.js | 11 + sources/plugins/colordialog/lang/gu.js | 11 + sources/plugins/colordialog/lang/he.js | 11 + sources/plugins/colordialog/lang/hi.js | 11 + sources/plugins/colordialog/lang/hr.js | 11 + sources/plugins/colordialog/lang/hu.js | 11 + sources/plugins/colordialog/lang/id.js | 11 + sources/plugins/colordialog/lang/is.js | 11 + sources/plugins/colordialog/lang/it.js | 11 + sources/plugins/colordialog/lang/ja.js | 11 + sources/plugins/colordialog/lang/ka.js | 11 + sources/plugins/colordialog/lang/km.js | 11 + sources/plugins/colordialog/lang/ko.js | 11 + sources/plugins/colordialog/lang/ku.js | 11 + sources/plugins/colordialog/lang/lt.js | 11 + sources/plugins/colordialog/lang/lv.js | 11 + sources/plugins/colordialog/lang/mk.js | 11 + sources/plugins/colordialog/lang/mn.js | 11 + sources/plugins/colordialog/lang/ms.js | 11 + sources/plugins/colordialog/lang/nb.js | 11 + sources/plugins/colordialog/lang/nl.js | 11 + sources/plugins/colordialog/lang/no.js | 11 + sources/plugins/colordialog/lang/pl.js | 11 + sources/plugins/colordialog/lang/pt-br.js | 11 + sources/plugins/colordialog/lang/pt.js | 11 + sources/plugins/colordialog/lang/ro.js | 11 + sources/plugins/colordialog/lang/ru.js | 11 + sources/plugins/colordialog/lang/si.js | 11 + sources/plugins/colordialog/lang/sk.js | 11 + sources/plugins/colordialog/lang/sl.js | 11 + sources/plugins/colordialog/lang/sq.js | 11 + sources/plugins/colordialog/lang/sr-latn.js | 11 + sources/plugins/colordialog/lang/sr.js | 11 + sources/plugins/colordialog/lang/sv.js | 11 + sources/plugins/colordialog/lang/th.js | 11 + sources/plugins/colordialog/lang/tr.js | 11 + sources/plugins/colordialog/lang/tt.js | 11 + sources/plugins/colordialog/lang/ug.js | 11 + sources/plugins/colordialog/lang/uk.js | 11 + sources/plugins/colordialog/lang/vi.js | 11 + sources/plugins/colordialog/lang/zh-cn.js | 11 + sources/plugins/colordialog/lang/zh.js | 11 + sources/plugins/colordialog/plugin.js | 71 + sources/plugins/contextmenu/lang/af.js | 7 + sources/plugins/contextmenu/lang/ar.js | 7 + sources/plugins/contextmenu/lang/bg.js | 7 + sources/plugins/contextmenu/lang/bn.js | 7 + sources/plugins/contextmenu/lang/bs.js | 7 + sources/plugins/contextmenu/lang/ca.js | 7 + sources/plugins/contextmenu/lang/cs.js | 7 + sources/plugins/contextmenu/lang/cy.js | 7 + sources/plugins/contextmenu/lang/da.js | 7 + sources/plugins/contextmenu/lang/de.js | 7 + sources/plugins/contextmenu/lang/el.js | 7 + sources/plugins/contextmenu/lang/en-au.js | 7 + sources/plugins/contextmenu/lang/en-ca.js | 7 + sources/plugins/contextmenu/lang/en-gb.js | 7 + sources/plugins/contextmenu/lang/en.js | 7 + sources/plugins/contextmenu/lang/eo.js | 7 + sources/plugins/contextmenu/lang/es.js | 7 + sources/plugins/contextmenu/lang/et.js | 7 + sources/plugins/contextmenu/lang/eu.js | 7 + sources/plugins/contextmenu/lang/fa.js | 7 + sources/plugins/contextmenu/lang/fi.js | 7 + sources/plugins/contextmenu/lang/fo.js | 7 + sources/plugins/contextmenu/lang/fr-ca.js | 7 + sources/plugins/contextmenu/lang/fr.js | 7 + sources/plugins/contextmenu/lang/gl.js | 7 + sources/plugins/contextmenu/lang/gu.js | 7 + sources/plugins/contextmenu/lang/he.js | 7 + sources/plugins/contextmenu/lang/hi.js | 7 + sources/plugins/contextmenu/lang/hr.js | 7 + sources/plugins/contextmenu/lang/hu.js | 7 + sources/plugins/contextmenu/lang/id.js | 7 + sources/plugins/contextmenu/lang/is.js | 7 + sources/plugins/contextmenu/lang/it.js | 7 + sources/plugins/contextmenu/lang/ja.js | 7 + sources/plugins/contextmenu/lang/ka.js | 7 + sources/plugins/contextmenu/lang/km.js | 7 + sources/plugins/contextmenu/lang/ko.js | 7 + sources/plugins/contextmenu/lang/ku.js | 7 + sources/plugins/contextmenu/lang/lt.js | 7 + sources/plugins/contextmenu/lang/lv.js | 7 + sources/plugins/contextmenu/lang/mk.js | 7 + sources/plugins/contextmenu/lang/mn.js | 7 + sources/plugins/contextmenu/lang/ms.js | 7 + sources/plugins/contextmenu/lang/nb.js | 7 + sources/plugins/contextmenu/lang/nl.js | 7 + sources/plugins/contextmenu/lang/no.js | 7 + sources/plugins/contextmenu/lang/pl.js | 7 + sources/plugins/contextmenu/lang/pt-br.js | 7 + sources/plugins/contextmenu/lang/pt.js | 7 + sources/plugins/contextmenu/lang/ro.js | 7 + sources/plugins/contextmenu/lang/ru.js | 7 + sources/plugins/contextmenu/lang/si.js | 7 + sources/plugins/contextmenu/lang/sk.js | 7 + sources/plugins/contextmenu/lang/sl.js | 7 + sources/plugins/contextmenu/lang/sq.js | 7 + sources/plugins/contextmenu/lang/sr-latn.js | 7 + sources/plugins/contextmenu/lang/sr.js | 7 + sources/plugins/contextmenu/lang/sv.js | 7 + sources/plugins/contextmenu/lang/th.js | 7 + sources/plugins/contextmenu/lang/tr.js | 7 + sources/plugins/contextmenu/lang/tt.js | 7 + sources/plugins/contextmenu/lang/ug.js | 7 + sources/plugins/contextmenu/lang/uk.js | 7 + sources/plugins/contextmenu/lang/vi.js | 7 + sources/plugins/contextmenu/lang/zh-cn.js | 7 + sources/plugins/contextmenu/lang/zh.js | 7 + sources/plugins/contextmenu/plugin.js | 159 + sources/plugins/dialog/dialogDefinition.js | 1032 ++++++ sources/plugins/dialog/plugin.js | 3398 ++++++++++++++++++++ sources/plugins/dialog/samples/assets/my_dialog.js | 49 + sources/plugins/dialog/samples/dialog.html | 190 ++ sources/plugins/dialogadvtab/plugin.js | 196 ++ sources/plugins/dialogui/plugin.js | 1530 +++++++++ sources/plugins/div/dialogs/div.js | 430 +++ sources/plugins/div/icons/creatediv.png | Bin 0 -> 862 bytes sources/plugins/div/icons/hidpi/creatediv.png | Bin 0 -> 3053 bytes sources/plugins/div/lang/af.js | 19 + sources/plugins/div/lang/ar.js | 19 + sources/plugins/div/lang/bg.js | 19 + sources/plugins/div/lang/bn.js | 19 + sources/plugins/div/lang/bs.js | 19 + sources/plugins/div/lang/ca.js | 19 + sources/plugins/div/lang/cs.js | 19 + sources/plugins/div/lang/cy.js | 19 + sources/plugins/div/lang/da.js | 19 + sources/plugins/div/lang/de.js | 19 + sources/plugins/div/lang/el.js | 19 + sources/plugins/div/lang/en-au.js | 19 + sources/plugins/div/lang/en-ca.js | 19 + sources/plugins/div/lang/en-gb.js | 19 + sources/plugins/div/lang/en.js | 19 + sources/plugins/div/lang/eo.js | 19 + sources/plugins/div/lang/es.js | 19 + sources/plugins/div/lang/et.js | 19 + sources/plugins/div/lang/eu.js | 19 + sources/plugins/div/lang/fa.js | 19 + sources/plugins/div/lang/fi.js | 19 + sources/plugins/div/lang/fo.js | 19 + sources/plugins/div/lang/fr-ca.js | 19 + sources/plugins/div/lang/fr.js | 19 + sources/plugins/div/lang/gl.js | 19 + sources/plugins/div/lang/gu.js | 19 + sources/plugins/div/lang/he.js | 19 + sources/plugins/div/lang/hi.js | 19 + sources/plugins/div/lang/hr.js | 19 + sources/plugins/div/lang/hu.js | 19 + sources/plugins/div/lang/id.js | 19 + sources/plugins/div/lang/is.js | 19 + sources/plugins/div/lang/it.js | 19 + sources/plugins/div/lang/ja.js | 19 + sources/plugins/div/lang/ka.js | 19 + sources/plugins/div/lang/km.js | 19 + sources/plugins/div/lang/ko.js | 19 + sources/plugins/div/lang/ku.js | 19 + sources/plugins/div/lang/lt.js | 19 + sources/plugins/div/lang/lv.js | 19 + sources/plugins/div/lang/mk.js | 19 + sources/plugins/div/lang/mn.js | 19 + sources/plugins/div/lang/ms.js | 19 + sources/plugins/div/lang/nb.js | 19 + sources/plugins/div/lang/nl.js | 19 + sources/plugins/div/lang/no.js | 19 + sources/plugins/div/lang/pl.js | 19 + sources/plugins/div/lang/pt-br.js | 19 + sources/plugins/div/lang/pt.js | 19 + sources/plugins/div/lang/ro.js | 19 + sources/plugins/div/lang/ru.js | 19 + sources/plugins/div/lang/si.js | 19 + sources/plugins/div/lang/sk.js | 19 + sources/plugins/div/lang/sl.js | 19 + sources/plugins/div/lang/sq.js | 19 + sources/plugins/div/lang/sr-latn.js | 19 + sources/plugins/div/lang/sr.js | 19 + sources/plugins/div/lang/sv.js | 19 + sources/plugins/div/lang/th.js | 19 + sources/plugins/div/lang/tr.js | 19 + sources/plugins/div/lang/tt.js | 19 + sources/plugins/div/lang/ug.js | 19 + sources/plugins/div/lang/uk.js | 19 + sources/plugins/div/lang/vi.js | 19 + sources/plugins/div/lang/zh-cn.js | 19 + sources/plugins/div/lang/zh.js | 19 + sources/plugins/div/plugin.js | 131 + sources/plugins/elementspath/lang/af.js | 8 + sources/plugins/elementspath/lang/ar.js | 8 + sources/plugins/elementspath/lang/bg.js | 8 + sources/plugins/elementspath/lang/bn.js | 8 + sources/plugins/elementspath/lang/bs.js | 8 + sources/plugins/elementspath/lang/ca.js | 8 + sources/plugins/elementspath/lang/cs.js | 8 + sources/plugins/elementspath/lang/cy.js | 8 + sources/plugins/elementspath/lang/da.js | 8 + sources/plugins/elementspath/lang/de.js | 8 + sources/plugins/elementspath/lang/el.js | 8 + sources/plugins/elementspath/lang/en-au.js | 8 + sources/plugins/elementspath/lang/en-ca.js | 8 + sources/plugins/elementspath/lang/en-gb.js | 8 + sources/plugins/elementspath/lang/en.js | 8 + sources/plugins/elementspath/lang/eo.js | 8 + sources/plugins/elementspath/lang/es.js | 8 + sources/plugins/elementspath/lang/et.js | 8 + sources/plugins/elementspath/lang/eu.js | 8 + sources/plugins/elementspath/lang/fa.js | 8 + sources/plugins/elementspath/lang/fi.js | 8 + sources/plugins/elementspath/lang/fo.js | 8 + sources/plugins/elementspath/lang/fr-ca.js | 8 + sources/plugins/elementspath/lang/fr.js | 8 + sources/plugins/elementspath/lang/gl.js | 8 + sources/plugins/elementspath/lang/gu.js | 8 + sources/plugins/elementspath/lang/he.js | 8 + sources/plugins/elementspath/lang/hi.js | 8 + sources/plugins/elementspath/lang/hr.js | 8 + sources/plugins/elementspath/lang/hu.js | 8 + sources/plugins/elementspath/lang/is.js | 8 + sources/plugins/elementspath/lang/it.js | 8 + sources/plugins/elementspath/lang/ja.js | 8 + sources/plugins/elementspath/lang/ka.js | 8 + sources/plugins/elementspath/lang/km.js | 8 + sources/plugins/elementspath/lang/ko.js | 8 + sources/plugins/elementspath/lang/ku.js | 8 + sources/plugins/elementspath/lang/lt.js | 8 + sources/plugins/elementspath/lang/lv.js | 8 + sources/plugins/elementspath/lang/mk.js | 8 + sources/plugins/elementspath/lang/mn.js | 8 + sources/plugins/elementspath/lang/ms.js | 8 + sources/plugins/elementspath/lang/nb.js | 8 + sources/plugins/elementspath/lang/nl.js | 8 + sources/plugins/elementspath/lang/no.js | 8 + sources/plugins/elementspath/lang/pl.js | 8 + sources/plugins/elementspath/lang/pt-br.js | 8 + sources/plugins/elementspath/lang/pt.js | 8 + sources/plugins/elementspath/lang/ro.js | 8 + sources/plugins/elementspath/lang/ru.js | 8 + sources/plugins/elementspath/lang/si.js | 8 + sources/plugins/elementspath/lang/sk.js | 8 + sources/plugins/elementspath/lang/sl.js | 8 + sources/plugins/elementspath/lang/sq.js | 8 + sources/plugins/elementspath/lang/sr-latn.js | 8 + sources/plugins/elementspath/lang/sr.js | 8 + sources/plugins/elementspath/lang/sv.js | 8 + sources/plugins/elementspath/lang/th.js | 8 + sources/plugins/elementspath/lang/tr.js | 8 + sources/plugins/elementspath/lang/tt.js | 8 + sources/plugins/elementspath/lang/ug.js | 8 + sources/plugins/elementspath/lang/uk.js | 8 + sources/plugins/elementspath/lang/vi.js | 8 + sources/plugins/elementspath/lang/zh-cn.js | 8 + sources/plugins/elementspath/lang/zh.js | 8 + sources/plugins/elementspath/plugin.js | 235 ++ sources/plugins/enterkey/plugin.js | 566 ++++ sources/plugins/enterkey/samples/enterkey.html | 106 + sources/plugins/entities/plugin.js | 239 ++ sources/plugins/fakeobjects/lang/af.js | 11 + sources/plugins/fakeobjects/lang/ar.js | 11 + sources/plugins/fakeobjects/lang/bg.js | 11 + sources/plugins/fakeobjects/lang/bn.js | 11 + sources/plugins/fakeobjects/lang/bs.js | 11 + sources/plugins/fakeobjects/lang/ca.js | 11 + sources/plugins/fakeobjects/lang/cs.js | 11 + sources/plugins/fakeobjects/lang/cy.js | 11 + sources/plugins/fakeobjects/lang/da.js | 11 + sources/plugins/fakeobjects/lang/de.js | 11 + sources/plugins/fakeobjects/lang/el.js | 11 + sources/plugins/fakeobjects/lang/en-au.js | 11 + sources/plugins/fakeobjects/lang/en-ca.js | 11 + sources/plugins/fakeobjects/lang/en-gb.js | 11 + sources/plugins/fakeobjects/lang/en.js | 11 + sources/plugins/fakeobjects/lang/eo.js | 11 + sources/plugins/fakeobjects/lang/es.js | 11 + sources/plugins/fakeobjects/lang/et.js | 11 + sources/plugins/fakeobjects/lang/eu.js | 11 + sources/plugins/fakeobjects/lang/fa.js | 11 + sources/plugins/fakeobjects/lang/fi.js | 11 + sources/plugins/fakeobjects/lang/fo.js | 11 + sources/plugins/fakeobjects/lang/fr-ca.js | 11 + sources/plugins/fakeobjects/lang/fr.js | 11 + sources/plugins/fakeobjects/lang/gl.js | 11 + sources/plugins/fakeobjects/lang/gu.js | 11 + sources/plugins/fakeobjects/lang/he.js | 11 + sources/plugins/fakeobjects/lang/hi.js | 11 + sources/plugins/fakeobjects/lang/hr.js | 11 + sources/plugins/fakeobjects/lang/hu.js | 11 + sources/plugins/fakeobjects/lang/id.js | 11 + sources/plugins/fakeobjects/lang/is.js | 11 + sources/plugins/fakeobjects/lang/it.js | 11 + sources/plugins/fakeobjects/lang/ja.js | 11 + sources/plugins/fakeobjects/lang/ka.js | 11 + sources/plugins/fakeobjects/lang/km.js | 11 + sources/plugins/fakeobjects/lang/ko.js | 11 + sources/plugins/fakeobjects/lang/ku.js | 11 + sources/plugins/fakeobjects/lang/lt.js | 11 + sources/plugins/fakeobjects/lang/lv.js | 11 + sources/plugins/fakeobjects/lang/mk.js | 11 + sources/plugins/fakeobjects/lang/mn.js | 11 + sources/plugins/fakeobjects/lang/ms.js | 11 + sources/plugins/fakeobjects/lang/nb.js | 11 + sources/plugins/fakeobjects/lang/nl.js | 11 + sources/plugins/fakeobjects/lang/no.js | 11 + sources/plugins/fakeobjects/lang/pl.js | 11 + sources/plugins/fakeobjects/lang/pt-br.js | 11 + sources/plugins/fakeobjects/lang/pt.js | 11 + sources/plugins/fakeobjects/lang/ro.js | 11 + sources/plugins/fakeobjects/lang/ru.js | 11 + sources/plugins/fakeobjects/lang/si.js | 11 + sources/plugins/fakeobjects/lang/sk.js | 11 + sources/plugins/fakeobjects/lang/sl.js | 11 + sources/plugins/fakeobjects/lang/sq.js | 11 + sources/plugins/fakeobjects/lang/sr-latn.js | 11 + sources/plugins/fakeobjects/lang/sr.js | 11 + sources/plugins/fakeobjects/lang/sv.js | 11 + sources/plugins/fakeobjects/lang/th.js | 11 + sources/plugins/fakeobjects/lang/tr.js | 11 + sources/plugins/fakeobjects/lang/tt.js | 11 + sources/plugins/fakeobjects/lang/ug.js | 11 + sources/plugins/fakeobjects/lang/uk.js | 11 + sources/plugins/fakeobjects/lang/vi.js | 11 + sources/plugins/fakeobjects/lang/zh-cn.js | 11 + sources/plugins/fakeobjects/lang/zh.js | 11 + sources/plugins/fakeobjects/plugin.js | 183 ++ sources/plugins/filebrowser/plugin.js | 573 ++++ sources/plugins/find/dialogs/find.js | 802 +++++ sources/plugins/find/icons/find-rtl.png | Bin 0 -> 980 bytes sources/plugins/find/icons/find.png | Bin 0 -> 980 bytes sources/plugins/find/icons/hidpi/find-rtl.png | Bin 0 -> 2417 bytes sources/plugins/find/icons/hidpi/find.png | Bin 0 -> 2417 bytes sources/plugins/find/icons/hidpi/replace.png | Bin 0 -> 2761 bytes sources/plugins/find/icons/replace.png | Bin 0 -> 948 bytes sources/plugins/find/lang/af.js | 18 + sources/plugins/find/lang/ar.js | 18 + sources/plugins/find/lang/bg.js | 18 + sources/plugins/find/lang/bn.js | 18 + sources/plugins/find/lang/bs.js | 18 + sources/plugins/find/lang/ca.js | 18 + sources/plugins/find/lang/cs.js | 18 + sources/plugins/find/lang/cy.js | 18 + sources/plugins/find/lang/da.js | 18 + sources/plugins/find/lang/de.js | 18 + sources/plugins/find/lang/el.js | 18 + sources/plugins/find/lang/en-au.js | 18 + sources/plugins/find/lang/en-ca.js | 18 + sources/plugins/find/lang/en-gb.js | 18 + sources/plugins/find/lang/en.js | 18 + sources/plugins/find/lang/eo.js | 18 + sources/plugins/find/lang/es.js | 18 + sources/plugins/find/lang/et.js | 18 + sources/plugins/find/lang/eu.js | 18 + sources/plugins/find/lang/fa.js | 18 + sources/plugins/find/lang/fi.js | 18 + sources/plugins/find/lang/fo.js | 18 + sources/plugins/find/lang/fr-ca.js | 18 + sources/plugins/find/lang/fr.js | 18 + sources/plugins/find/lang/gl.js | 18 + sources/plugins/find/lang/gu.js | 18 + sources/plugins/find/lang/he.js | 18 + sources/plugins/find/lang/hi.js | 18 + sources/plugins/find/lang/hr.js | 18 + sources/plugins/find/lang/hu.js | 18 + sources/plugins/find/lang/id.js | 18 + sources/plugins/find/lang/is.js | 18 + sources/plugins/find/lang/it.js | 18 + sources/plugins/find/lang/ja.js | 18 + sources/plugins/find/lang/ka.js | 18 + sources/plugins/find/lang/km.js | 18 + sources/plugins/find/lang/ko.js | 18 + sources/plugins/find/lang/ku.js | 18 + sources/plugins/find/lang/lt.js | 18 + sources/plugins/find/lang/lv.js | 18 + sources/plugins/find/lang/mk.js | 18 + sources/plugins/find/lang/mn.js | 18 + sources/plugins/find/lang/ms.js | 18 + sources/plugins/find/lang/nb.js | 18 + sources/plugins/find/lang/nl.js | 18 + sources/plugins/find/lang/no.js | 18 + sources/plugins/find/lang/pl.js | 18 + sources/plugins/find/lang/pt-br.js | 18 + sources/plugins/find/lang/pt.js | 18 + sources/plugins/find/lang/ro.js | 18 + sources/plugins/find/lang/ru.js | 18 + sources/plugins/find/lang/si.js | 18 + sources/plugins/find/lang/sk.js | 18 + sources/plugins/find/lang/sl.js | 18 + sources/plugins/find/lang/sq.js | 18 + sources/plugins/find/lang/sr-latn.js | 18 + sources/plugins/find/lang/sr.js | 18 + sources/plugins/find/lang/sv.js | 18 + sources/plugins/find/lang/th.js | 18 + sources/plugins/find/lang/tr.js | 18 + sources/plugins/find/lang/tt.js | 18 + sources/plugins/find/lang/ug.js | 18 + sources/plugins/find/lang/uk.js | 18 + sources/plugins/find/lang/vi.js | 18 + sources/plugins/find/lang/zh-cn.js | 18 + sources/plugins/find/lang/zh.js | 18 + sources/plugins/find/plugin.js | 52 + sources/plugins/flash/dialogs/flash.js | 647 ++++ sources/plugins/flash/icons/flash.png | Bin 0 -> 1038 bytes sources/plugins/flash/icons/hidpi/flash.png | Bin 0 -> 2532 bytes sources/plugins/flash/images/placeholder.png | Bin 0 -> 256 bytes sources/plugins/flash/lang/af.js | 43 + sources/plugins/flash/lang/ar.js | 43 + sources/plugins/flash/lang/bg.js | 43 + sources/plugins/flash/lang/bn.js | 43 + sources/plugins/flash/lang/bs.js | 43 + sources/plugins/flash/lang/ca.js | 43 + sources/plugins/flash/lang/cs.js | 43 + sources/plugins/flash/lang/cy.js | 43 + sources/plugins/flash/lang/da.js | 43 + sources/plugins/flash/lang/de.js | 43 + sources/plugins/flash/lang/el.js | 43 + sources/plugins/flash/lang/en-au.js | 43 + sources/plugins/flash/lang/en-ca.js | 43 + sources/plugins/flash/lang/en-gb.js | 43 + sources/plugins/flash/lang/en.js | 43 + sources/plugins/flash/lang/eo.js | 43 + sources/plugins/flash/lang/es.js | 43 + sources/plugins/flash/lang/et.js | 43 + sources/plugins/flash/lang/eu.js | 43 + sources/plugins/flash/lang/fa.js | 43 + sources/plugins/flash/lang/fi.js | 43 + sources/plugins/flash/lang/fo.js | 43 + sources/plugins/flash/lang/fr-ca.js | 43 + sources/plugins/flash/lang/fr.js | 43 + sources/plugins/flash/lang/gl.js | 43 + sources/plugins/flash/lang/gu.js | 43 + sources/plugins/flash/lang/he.js | 43 + sources/plugins/flash/lang/hi.js | 43 + sources/plugins/flash/lang/hr.js | 43 + sources/plugins/flash/lang/hu.js | 43 + sources/plugins/flash/lang/id.js | 43 + sources/plugins/flash/lang/is.js | 43 + sources/plugins/flash/lang/it.js | 43 + sources/plugins/flash/lang/ja.js | 43 + sources/plugins/flash/lang/ka.js | 43 + sources/plugins/flash/lang/km.js | 43 + sources/plugins/flash/lang/ko.js | 43 + sources/plugins/flash/lang/ku.js | 43 + sources/plugins/flash/lang/lt.js | 43 + sources/plugins/flash/lang/lv.js | 43 + sources/plugins/flash/lang/mk.js | 43 + sources/plugins/flash/lang/mn.js | 43 + sources/plugins/flash/lang/ms.js | 43 + sources/plugins/flash/lang/nb.js | 43 + sources/plugins/flash/lang/nl.js | 43 + sources/plugins/flash/lang/no.js | 43 + sources/plugins/flash/lang/pl.js | 43 + sources/plugins/flash/lang/pt-br.js | 43 + sources/plugins/flash/lang/pt.js | 43 + sources/plugins/flash/lang/ro.js | 43 + sources/plugins/flash/lang/ru.js | 43 + sources/plugins/flash/lang/si.js | 43 + sources/plugins/flash/lang/sk.js | 43 + sources/plugins/flash/lang/sl.js | 43 + sources/plugins/flash/lang/sq.js | 43 + sources/plugins/flash/lang/sr-latn.js | 43 + sources/plugins/flash/lang/sr.js | 43 + sources/plugins/flash/lang/sv.js | 43 + sources/plugins/flash/lang/th.js | 43 + sources/plugins/flash/lang/tr.js | 43 + sources/plugins/flash/lang/tt.js | 43 + sources/plugins/flash/lang/ug.js | 43 + sources/plugins/flash/lang/uk.js | 43 + sources/plugins/flash/lang/vi.js | 43 + sources/plugins/flash/lang/zh-cn.js | 43 + sources/plugins/flash/lang/zh.js | 43 + sources/plugins/flash/plugin.js | 151 + sources/plugins/floatingspace/plugin.js | 406 +++ sources/plugins/floatpanel/plugin.js | 598 ++++ sources/plugins/font/lang/af.js | 14 + sources/plugins/font/lang/ar.js | 14 + sources/plugins/font/lang/bg.js | 14 + sources/plugins/font/lang/bn.js | 14 + sources/plugins/font/lang/bs.js | 14 + sources/plugins/font/lang/ca.js | 14 + sources/plugins/font/lang/cs.js | 14 + sources/plugins/font/lang/cy.js | 14 + sources/plugins/font/lang/da.js | 14 + sources/plugins/font/lang/de.js | 14 + sources/plugins/font/lang/el.js | 14 + sources/plugins/font/lang/en-au.js | 14 + sources/plugins/font/lang/en-ca.js | 14 + sources/plugins/font/lang/en-gb.js | 14 + sources/plugins/font/lang/en.js | 14 + sources/plugins/font/lang/eo.js | 14 + sources/plugins/font/lang/es.js | 14 + sources/plugins/font/lang/et.js | 14 + sources/plugins/font/lang/eu.js | 14 + sources/plugins/font/lang/fa.js | 14 + sources/plugins/font/lang/fi.js | 14 + sources/plugins/font/lang/fo.js | 14 + sources/plugins/font/lang/fr-ca.js | 14 + sources/plugins/font/lang/fr.js | 14 + sources/plugins/font/lang/gl.js | 14 + sources/plugins/font/lang/gu.js | 14 + sources/plugins/font/lang/he.js | 14 + sources/plugins/font/lang/hi.js | 14 + sources/plugins/font/lang/hr.js | 14 + sources/plugins/font/lang/hu.js | 14 + sources/plugins/font/lang/id.js | 14 + sources/plugins/font/lang/is.js | 14 + sources/plugins/font/lang/it.js | 14 + sources/plugins/font/lang/ja.js | 14 + sources/plugins/font/lang/ka.js | 14 + sources/plugins/font/lang/km.js | 14 + sources/plugins/font/lang/ko.js | 14 + sources/plugins/font/lang/ku.js | 14 + sources/plugins/font/lang/lt.js | 14 + sources/plugins/font/lang/lv.js | 14 + sources/plugins/font/lang/mk.js | 14 + sources/plugins/font/lang/mn.js | 14 + sources/plugins/font/lang/ms.js | 14 + sources/plugins/font/lang/nb.js | 14 + sources/plugins/font/lang/nl.js | 14 + sources/plugins/font/lang/no.js | 14 + sources/plugins/font/lang/pl.js | 14 + sources/plugins/font/lang/pt-br.js | 14 + sources/plugins/font/lang/pt.js | 14 + sources/plugins/font/lang/ro.js | 14 + sources/plugins/font/lang/ru.js | 14 + sources/plugins/font/lang/si.js | 14 + sources/plugins/font/lang/sk.js | 14 + sources/plugins/font/lang/sl.js | 14 + sources/plugins/font/lang/sq.js | 14 + sources/plugins/font/lang/sr-latn.js | 14 + sources/plugins/font/lang/sr.js | 14 + sources/plugins/font/lang/sv.js | 14 + sources/plugins/font/lang/th.js | 14 + sources/plugins/font/lang/tr.js | 14 + sources/plugins/font/lang/tt.js | 14 + sources/plugins/font/lang/ug.js | 14 + sources/plugins/font/lang/uk.js | 14 + sources/plugins/font/lang/vi.js | 14 + sources/plugins/font/lang/zh-cn.js | 14 + sources/plugins/font/lang/zh.js | 14 + sources/plugins/font/plugin.js | 313 ++ sources/plugins/format/lang/af.js | 18 + sources/plugins/format/lang/ar.js | 18 + sources/plugins/format/lang/bg.js | 18 + sources/plugins/format/lang/bn.js | 18 + sources/plugins/format/lang/bs.js | 18 + sources/plugins/format/lang/ca.js | 18 + sources/plugins/format/lang/cs.js | 18 + sources/plugins/format/lang/cy.js | 18 + sources/plugins/format/lang/da.js | 18 + sources/plugins/format/lang/de.js | 18 + sources/plugins/format/lang/el.js | 18 + sources/plugins/format/lang/en-au.js | 18 + sources/plugins/format/lang/en-ca.js | 18 + sources/plugins/format/lang/en-gb.js | 18 + sources/plugins/format/lang/en.js | 18 + sources/plugins/format/lang/eo.js | 18 + sources/plugins/format/lang/es.js | 18 + sources/plugins/format/lang/et.js | 18 + sources/plugins/format/lang/eu.js | 18 + sources/plugins/format/lang/fa.js | 18 + sources/plugins/format/lang/fi.js | 18 + sources/plugins/format/lang/fo.js | 18 + sources/plugins/format/lang/fr-ca.js | 18 + sources/plugins/format/lang/fr.js | 18 + sources/plugins/format/lang/gl.js | 18 + sources/plugins/format/lang/gu.js | 18 + sources/plugins/format/lang/he.js | 18 + sources/plugins/format/lang/hi.js | 18 + sources/plugins/format/lang/hr.js | 18 + sources/plugins/format/lang/hu.js | 18 + sources/plugins/format/lang/id.js | 18 + sources/plugins/format/lang/is.js | 18 + sources/plugins/format/lang/it.js | 18 + sources/plugins/format/lang/ja.js | 18 + sources/plugins/format/lang/ka.js | 18 + sources/plugins/format/lang/km.js | 18 + sources/plugins/format/lang/ko.js | 18 + sources/plugins/format/lang/ku.js | 18 + sources/plugins/format/lang/lt.js | 18 + sources/plugins/format/lang/lv.js | 18 + sources/plugins/format/lang/mk.js | 18 + sources/plugins/format/lang/mn.js | 18 + sources/plugins/format/lang/ms.js | 18 + sources/plugins/format/lang/nb.js | 18 + sources/plugins/format/lang/nl.js | 18 + sources/plugins/format/lang/no.js | 18 + sources/plugins/format/lang/pl.js | 18 + sources/plugins/format/lang/pt-br.js | 18 + sources/plugins/format/lang/pt.js | 18 + sources/plugins/format/lang/ro.js | 18 + sources/plugins/format/lang/ru.js | 18 + sources/plugins/format/lang/si.js | 18 + sources/plugins/format/lang/sk.js | 18 + sources/plugins/format/lang/sl.js | 18 + sources/plugins/format/lang/sq.js | 18 + sources/plugins/format/lang/sr-latn.js | 18 + sources/plugins/format/lang/sr.js | 18 + sources/plugins/format/lang/sv.js | 18 + sources/plugins/format/lang/th.js | 18 + sources/plugins/format/lang/tr.js | 18 + sources/plugins/format/lang/tt.js | 18 + sources/plugins/format/lang/ug.js | 18 + sources/plugins/format/lang/uk.js | 18 + sources/plugins/format/lang/vi.js | 18 + sources/plugins/format/lang/zh-cn.js | 18 + sources/plugins/format/lang/zh.js | 18 + sources/plugins/format/plugin.js | 279 ++ sources/plugins/forms/dialogs/button.js | 100 + sources/plugins/forms/dialogs/checkbox.js | 146 + sources/plugins/forms/dialogs/form.js | 145 + sources/plugins/forms/dialogs/hiddenfield.js | 83 + sources/plugins/forms/dialogs/radio.js | 129 + sources/plugins/forms/dialogs/select.js | 505 +++ sources/plugins/forms/dialogs/textarea.js | 128 + sources/plugins/forms/dialogs/textfield.js | 193 ++ sources/plugins/forms/icons/button.png | Bin 0 -> 528 bytes sources/plugins/forms/icons/checkbox.png | Bin 0 -> 756 bytes sources/plugins/forms/icons/form.png | Bin 0 -> 590 bytes sources/plugins/forms/icons/hiddenfield.png | Bin 0 -> 239 bytes sources/plugins/forms/icons/hidpi/button.png | Bin 0 -> 933 bytes sources/plugins/forms/icons/hidpi/checkbox.png | Bin 0 -> 1780 bytes sources/plugins/forms/icons/hidpi/form.png | Bin 0 -> 1348 bytes sources/plugins/forms/icons/hidpi/hiddenfield.png | Bin 0 -> 2166 bytes sources/plugins/forms/icons/hidpi/imagebutton.png | Bin 0 -> 1398 bytes sources/plugins/forms/icons/hidpi/radio.png | Bin 0 -> 2435 bytes sources/plugins/forms/icons/hidpi/select-rtl.png | Bin 0 -> 1451 bytes sources/plugins/forms/icons/hidpi/select.png | Bin 0 -> 1452 bytes sources/plugins/forms/icons/hidpi/textarea-rtl.png | Bin 0 -> 1732 bytes sources/plugins/forms/icons/hidpi/textarea.png | Bin 0 -> 1680 bytes .../plugins/forms/icons/hidpi/textfield-rtl.png | Bin 0 -> 1324 bytes sources/plugins/forms/icons/hidpi/textfield.png | Bin 0 -> 1324 bytes sources/plugins/forms/icons/imagebutton.png | Bin 0 -> 680 bytes sources/plugins/forms/icons/radio.png | Bin 0 -> 874 bytes sources/plugins/forms/icons/select-rtl.png | Bin 0 -> 617 bytes sources/plugins/forms/icons/select.png | Bin 0 -> 616 bytes sources/plugins/forms/icons/textarea-rtl.png | Bin 0 -> 706 bytes sources/plugins/forms/icons/textarea.png | Bin 0 -> 677 bytes sources/plugins/forms/icons/textfield-rtl.png | Bin 0 -> 588 bytes sources/plugins/forms/icons/textfield.png | Bin 0 -> 588 bytes sources/plugins/forms/images/hiddenfield.gif | Bin 0 -> 178 bytes sources/plugins/forms/lang/af.js | 71 + sources/plugins/forms/lang/ar.js | 71 + sources/plugins/forms/lang/bg.js | 71 + sources/plugins/forms/lang/bn.js | 71 + sources/plugins/forms/lang/bs.js | 71 + sources/plugins/forms/lang/ca.js | 71 + sources/plugins/forms/lang/cs.js | 71 + sources/plugins/forms/lang/cy.js | 71 + sources/plugins/forms/lang/da.js | 71 + sources/plugins/forms/lang/de.js | 71 + sources/plugins/forms/lang/el.js | 71 + sources/plugins/forms/lang/en-au.js | 71 + sources/plugins/forms/lang/en-ca.js | 71 + sources/plugins/forms/lang/en-gb.js | 71 + sources/plugins/forms/lang/en.js | 71 + sources/plugins/forms/lang/eo.js | 71 + sources/plugins/forms/lang/es.js | 71 + sources/plugins/forms/lang/et.js | 71 + sources/plugins/forms/lang/eu.js | 71 + sources/plugins/forms/lang/fa.js | 71 + sources/plugins/forms/lang/fi.js | 71 + sources/plugins/forms/lang/fo.js | 71 + sources/plugins/forms/lang/fr-ca.js | 71 + sources/plugins/forms/lang/fr.js | 71 + sources/plugins/forms/lang/gl.js | 71 + sources/plugins/forms/lang/gu.js | 71 + sources/plugins/forms/lang/he.js | 71 + sources/plugins/forms/lang/hi.js | 71 + sources/plugins/forms/lang/hr.js | 71 + sources/plugins/forms/lang/hu.js | 71 + sources/plugins/forms/lang/id.js | 71 + sources/plugins/forms/lang/is.js | 71 + sources/plugins/forms/lang/it.js | 71 + sources/plugins/forms/lang/ja.js | 71 + sources/plugins/forms/lang/ka.js | 71 + sources/plugins/forms/lang/km.js | 71 + sources/plugins/forms/lang/ko.js | 71 + sources/plugins/forms/lang/ku.js | 71 + sources/plugins/forms/lang/lt.js | 71 + sources/plugins/forms/lang/lv.js | 71 + sources/plugins/forms/lang/mk.js | 71 + sources/plugins/forms/lang/mn.js | 71 + sources/plugins/forms/lang/ms.js | 71 + sources/plugins/forms/lang/nb.js | 71 + sources/plugins/forms/lang/nl.js | 71 + sources/plugins/forms/lang/no.js | 71 + sources/plugins/forms/lang/pl.js | 71 + sources/plugins/forms/lang/pt-br.js | 71 + sources/plugins/forms/lang/pt.js | 71 + sources/plugins/forms/lang/ro.js | 71 + sources/plugins/forms/lang/ru.js | 71 + sources/plugins/forms/lang/si.js | 71 + sources/plugins/forms/lang/sk.js | 71 + sources/plugins/forms/lang/sl.js | 71 + sources/plugins/forms/lang/sq.js | 71 + sources/plugins/forms/lang/sr-latn.js | 71 + sources/plugins/forms/lang/sr.js | 71 + sources/plugins/forms/lang/sv.js | 71 + sources/plugins/forms/lang/th.js | 71 + sources/plugins/forms/lang/tr.js | 71 + sources/plugins/forms/lang/tt.js | 71 + sources/plugins/forms/lang/ug.js | 71 + sources/plugins/forms/lang/uk.js | 71 + sources/plugins/forms/lang/vi.js | 71 + sources/plugins/forms/lang/zh-cn.js | 71 + sources/plugins/forms/lang/zh.js | 71 + sources/plugins/forms/plugin.js | 279 ++ .../horizontalrule/icons/hidpi/horizontalrule.png | Bin 0 -> 939 bytes .../horizontalrule/icons/horizontalrule.png | Bin 0 -> 519 bytes sources/plugins/horizontalrule/lang/af.js | 7 + sources/plugins/horizontalrule/lang/ar.js | 7 + sources/plugins/horizontalrule/lang/bg.js | 7 + sources/plugins/horizontalrule/lang/bn.js | 7 + sources/plugins/horizontalrule/lang/bs.js | 7 + sources/plugins/horizontalrule/lang/ca.js | 7 + sources/plugins/horizontalrule/lang/cs.js | 7 + sources/plugins/horizontalrule/lang/cy.js | 7 + sources/plugins/horizontalrule/lang/da.js | 7 + sources/plugins/horizontalrule/lang/de.js | 7 + sources/plugins/horizontalrule/lang/el.js | 7 + sources/plugins/horizontalrule/lang/en-au.js | 7 + sources/plugins/horizontalrule/lang/en-ca.js | 7 + sources/plugins/horizontalrule/lang/en-gb.js | 7 + sources/plugins/horizontalrule/lang/en.js | 7 + sources/plugins/horizontalrule/lang/eo.js | 7 + sources/plugins/horizontalrule/lang/es.js | 7 + sources/plugins/horizontalrule/lang/et.js | 7 + sources/plugins/horizontalrule/lang/eu.js | 7 + sources/plugins/horizontalrule/lang/fa.js | 7 + sources/plugins/horizontalrule/lang/fi.js | 7 + sources/plugins/horizontalrule/lang/fo.js | 7 + sources/plugins/horizontalrule/lang/fr-ca.js | 7 + sources/plugins/horizontalrule/lang/fr.js | 7 + sources/plugins/horizontalrule/lang/gl.js | 7 + sources/plugins/horizontalrule/lang/gu.js | 7 + sources/plugins/horizontalrule/lang/he.js | 7 + sources/plugins/horizontalrule/lang/hi.js | 7 + sources/plugins/horizontalrule/lang/hr.js | 7 + sources/plugins/horizontalrule/lang/hu.js | 7 + sources/plugins/horizontalrule/lang/id.js | 7 + sources/plugins/horizontalrule/lang/is.js | 7 + sources/plugins/horizontalrule/lang/it.js | 7 + sources/plugins/horizontalrule/lang/ja.js | 7 + sources/plugins/horizontalrule/lang/ka.js | 7 + sources/plugins/horizontalrule/lang/km.js | 7 + sources/plugins/horizontalrule/lang/ko.js | 7 + sources/plugins/horizontalrule/lang/ku.js | 7 + sources/plugins/horizontalrule/lang/lt.js | 7 + sources/plugins/horizontalrule/lang/lv.js | 7 + sources/plugins/horizontalrule/lang/mk.js | 7 + sources/plugins/horizontalrule/lang/mn.js | 7 + sources/plugins/horizontalrule/lang/ms.js | 7 + sources/plugins/horizontalrule/lang/nb.js | 7 + sources/plugins/horizontalrule/lang/nl.js | 7 + sources/plugins/horizontalrule/lang/no.js | 7 + sources/plugins/horizontalrule/lang/pl.js | 7 + sources/plugins/horizontalrule/lang/pt-br.js | 7 + sources/plugins/horizontalrule/lang/pt.js | 7 + sources/plugins/horizontalrule/lang/ro.js | 7 + sources/plugins/horizontalrule/lang/ru.js | 7 + sources/plugins/horizontalrule/lang/si.js | 7 + sources/plugins/horizontalrule/lang/sk.js | 7 + sources/plugins/horizontalrule/lang/sl.js | 7 + sources/plugins/horizontalrule/lang/sq.js | 7 + sources/plugins/horizontalrule/lang/sr-latn.js | 7 + sources/plugins/horizontalrule/lang/sr.js | 7 + sources/plugins/horizontalrule/lang/sv.js | 7 + sources/plugins/horizontalrule/lang/th.js | 7 + sources/plugins/horizontalrule/lang/tr.js | 7 + sources/plugins/horizontalrule/lang/tt.js | 7 + sources/plugins/horizontalrule/lang/ug.js | 7 + sources/plugins/horizontalrule/lang/uk.js | 7 + sources/plugins/horizontalrule/lang/vi.js | 7 + sources/plugins/horizontalrule/lang/zh-cn.js | 7 + sources/plugins/horizontalrule/lang/zh.js | 7 + sources/plugins/horizontalrule/plugin.js | 43 + sources/plugins/htmlwriter/plugin.js | 359 +++ .../assets/outputforflash/outputforflash.fla | Bin 0 -> 85504 bytes .../assets/outputforflash/outputforflash.swf | Bin 0 -> 15571 bytes .../samples/assets/outputforflash/swfobject.js | 5 + .../plugins/htmlwriter/samples/outputforflash.html | 283 ++ sources/plugins/htmlwriter/samples/outputhtml.html | 224 ++ sources/plugins/iframe/dialogs/iframe.js | 207 ++ sources/plugins/iframe/icons/hidpi/iframe.png | Bin 0 -> 3091 bytes sources/plugins/iframe/icons/iframe.png | Bin 0 -> 989 bytes sources/plugins/iframe/images/placeholder.png | Bin 0 -> 265 bytes sources/plugins/iframe/lang/af.js | 11 + sources/plugins/iframe/lang/ar.js | 11 + sources/plugins/iframe/lang/bg.js | 11 + sources/plugins/iframe/lang/bn.js | 11 + sources/plugins/iframe/lang/bs.js | 11 + sources/plugins/iframe/lang/ca.js | 11 + sources/plugins/iframe/lang/cs.js | 11 + sources/plugins/iframe/lang/cy.js | 11 + sources/plugins/iframe/lang/da.js | 11 + sources/plugins/iframe/lang/de.js | 11 + sources/plugins/iframe/lang/el.js | 11 + sources/plugins/iframe/lang/en-au.js | 11 + sources/plugins/iframe/lang/en-ca.js | 11 + sources/plugins/iframe/lang/en-gb.js | 11 + sources/plugins/iframe/lang/en.js | 11 + sources/plugins/iframe/lang/eo.js | 11 + sources/plugins/iframe/lang/es.js | 11 + sources/plugins/iframe/lang/et.js | 11 + sources/plugins/iframe/lang/eu.js | 11 + sources/plugins/iframe/lang/fa.js | 11 + sources/plugins/iframe/lang/fi.js | 11 + sources/plugins/iframe/lang/fo.js | 11 + sources/plugins/iframe/lang/fr-ca.js | 11 + sources/plugins/iframe/lang/fr.js | 11 + sources/plugins/iframe/lang/gl.js | 11 + sources/plugins/iframe/lang/gu.js | 11 + sources/plugins/iframe/lang/he.js | 11 + sources/plugins/iframe/lang/hi.js | 11 + sources/plugins/iframe/lang/hr.js | 11 + sources/plugins/iframe/lang/hu.js | 11 + sources/plugins/iframe/lang/id.js | 11 + sources/plugins/iframe/lang/is.js | 11 + sources/plugins/iframe/lang/it.js | 11 + sources/plugins/iframe/lang/ja.js | 11 + sources/plugins/iframe/lang/ka.js | 11 + sources/plugins/iframe/lang/km.js | 11 + sources/plugins/iframe/lang/ko.js | 11 + sources/plugins/iframe/lang/ku.js | 11 + sources/plugins/iframe/lang/lt.js | 11 + sources/plugins/iframe/lang/lv.js | 11 + sources/plugins/iframe/lang/mk.js | 11 + sources/plugins/iframe/lang/mn.js | 11 + sources/plugins/iframe/lang/ms.js | 11 + sources/plugins/iframe/lang/nb.js | 11 + sources/plugins/iframe/lang/nl.js | 11 + sources/plugins/iframe/lang/no.js | 11 + sources/plugins/iframe/lang/pl.js | 11 + sources/plugins/iframe/lang/pt-br.js | 11 + sources/plugins/iframe/lang/pt.js | 11 + sources/plugins/iframe/lang/ro.js | 11 + sources/plugins/iframe/lang/ru.js | 11 + sources/plugins/iframe/lang/si.js | 11 + sources/plugins/iframe/lang/sk.js | 11 + sources/plugins/iframe/lang/sl.js | 11 + sources/plugins/iframe/lang/sq.js | 11 + sources/plugins/iframe/lang/sr-latn.js | 11 + sources/plugins/iframe/lang/sr.js | 11 + sources/plugins/iframe/lang/sv.js | 11 + sources/plugins/iframe/lang/th.js | 11 + sources/plugins/iframe/lang/tr.js | 11 + sources/plugins/iframe/lang/tt.js | 11 + sources/plugins/iframe/lang/ug.js | 11 + sources/plugins/iframe/lang/uk.js | 11 + sources/plugins/iframe/lang/vi.js | 11 + sources/plugins/iframe/lang/zh-cn.js | 11 + sources/plugins/iframe/lang/zh.js | 11 + sources/plugins/iframe/plugin.js | 85 + sources/plugins/image/dialogs/image.js | 1251 +++++++ sources/plugins/image/icons/hidpi/image.png | Bin 0 -> 1745 bytes sources/plugins/image/icons/image.png | Bin 0 -> 756 bytes sources/plugins/image/images/noimage.png | Bin 0 -> 1610 bytes sources/plugins/image/lang/af.js | 25 + sources/plugins/image/lang/ar.js | 25 + sources/plugins/image/lang/bg.js | 25 + sources/plugins/image/lang/bn.js | 25 + sources/plugins/image/lang/bs.js | 25 + sources/plugins/image/lang/ca.js | 25 + sources/plugins/image/lang/cs.js | 25 + sources/plugins/image/lang/cy.js | 25 + sources/plugins/image/lang/da.js | 25 + sources/plugins/image/lang/de.js | 25 + sources/plugins/image/lang/el.js | 25 + sources/plugins/image/lang/en-au.js | 25 + sources/plugins/image/lang/en-ca.js | 25 + sources/plugins/image/lang/en-gb.js | 25 + sources/plugins/image/lang/en.js | 25 + sources/plugins/image/lang/eo.js | 25 + sources/plugins/image/lang/es.js | 25 + sources/plugins/image/lang/et.js | 25 + sources/plugins/image/lang/eu.js | 25 + sources/plugins/image/lang/fa.js | 25 + sources/plugins/image/lang/fi.js | 25 + sources/plugins/image/lang/fo.js | 25 + sources/plugins/image/lang/fr-ca.js | 25 + sources/plugins/image/lang/fr.js | 25 + sources/plugins/image/lang/gl.js | 25 + sources/plugins/image/lang/gu.js | 25 + sources/plugins/image/lang/he.js | 25 + sources/plugins/image/lang/hi.js | 25 + sources/plugins/image/lang/hr.js | 25 + sources/plugins/image/lang/hu.js | 25 + sources/plugins/image/lang/id.js | 25 + sources/plugins/image/lang/is.js | 25 + sources/plugins/image/lang/it.js | 25 + sources/plugins/image/lang/ja.js | 25 + sources/plugins/image/lang/ka.js | 25 + sources/plugins/image/lang/km.js | 25 + sources/plugins/image/lang/ko.js | 25 + sources/plugins/image/lang/ku.js | 25 + sources/plugins/image/lang/lt.js | 25 + sources/plugins/image/lang/lv.js | 25 + sources/plugins/image/lang/mk.js | 25 + sources/plugins/image/lang/mn.js | 25 + sources/plugins/image/lang/ms.js | 25 + sources/plugins/image/lang/nb.js | 25 + sources/plugins/image/lang/nl.js | 25 + sources/plugins/image/lang/no.js | 25 + sources/plugins/image/lang/pl.js | 25 + sources/plugins/image/lang/pt-br.js | 25 + sources/plugins/image/lang/pt.js | 25 + sources/plugins/image/lang/ro.js | 25 + sources/plugins/image/lang/ru.js | 25 + sources/plugins/image/lang/si.js | 25 + sources/plugins/image/lang/sk.js | 25 + sources/plugins/image/lang/sl.js | 25 + sources/plugins/image/lang/sq.js | 25 + sources/plugins/image/lang/sr-latn.js | 25 + sources/plugins/image/lang/sr.js | 25 + sources/plugins/image/lang/sv.js | 25 + sources/plugins/image/lang/th.js | 25 + sources/plugins/image/lang/tr.js | 25 + sources/plugins/image/lang/tt.js | 25 + sources/plugins/image/lang/ug.js | 25 + sources/plugins/image/lang/uk.js | 25 + sources/plugins/image/lang/vi.js | 25 + sources/plugins/image/lang/zh-cn.js | 25 + sources/plugins/image/lang/zh.js | 25 + sources/plugins/image/plugin.js | 183 ++ sources/plugins/imagebrowser/LICENSE.txt | 10 + sources/plugins/imagebrowser/README.rst | 69 + sources/plugins/imagebrowser/browser/browser.css | 62 + sources/plugins/imagebrowser/browser/browser.html | 25 + sources/plugins/imagebrowser/browser/browser.js | 136 + .../imagebrowser/browser/jquery-1.9.1.min.js | 5 + sources/plugins/imagebrowser/plugin.js | 14 + sources/plugins/indent/dev/indent.html | 284 ++ sources/plugins/indent/icons/hidpi/indent-rtl.png | Bin 0 -> 1610 bytes sources/plugins/indent/icons/hidpi/indent.png | Bin 0 -> 1573 bytes sources/plugins/indent/icons/hidpi/outdent-rtl.png | Bin 0 -> 1584 bytes sources/plugins/indent/icons/hidpi/outdent.png | Bin 0 -> 1598 bytes sources/plugins/indent/icons/indent-rtl.png | Bin 0 -> 726 bytes sources/plugins/indent/icons/indent.png | Bin 0 -> 711 bytes sources/plugins/indent/icons/outdent-rtl.png | Bin 0 -> 708 bytes sources/plugins/indent/icons/outdent.png | Bin 0 -> 699 bytes sources/plugins/indent/lang/af.js | 8 + sources/plugins/indent/lang/ar.js | 8 + sources/plugins/indent/lang/bg.js | 8 + sources/plugins/indent/lang/bn.js | 8 + sources/plugins/indent/lang/bs.js | 8 + sources/plugins/indent/lang/ca.js | 8 + sources/plugins/indent/lang/cs.js | 8 + sources/plugins/indent/lang/cy.js | 8 + sources/plugins/indent/lang/da.js | 8 + sources/plugins/indent/lang/de.js | 8 + sources/plugins/indent/lang/el.js | 8 + sources/plugins/indent/lang/en-au.js | 8 + sources/plugins/indent/lang/en-ca.js | 8 + sources/plugins/indent/lang/en-gb.js | 8 + sources/plugins/indent/lang/en.js | 8 + sources/plugins/indent/lang/eo.js | 8 + sources/plugins/indent/lang/es.js | 8 + sources/plugins/indent/lang/et.js | 8 + sources/plugins/indent/lang/eu.js | 8 + sources/plugins/indent/lang/fa.js | 8 + sources/plugins/indent/lang/fi.js | 8 + sources/plugins/indent/lang/fo.js | 8 + sources/plugins/indent/lang/fr-ca.js | 8 + sources/plugins/indent/lang/fr.js | 8 + sources/plugins/indent/lang/gl.js | 8 + sources/plugins/indent/lang/gu.js | 8 + sources/plugins/indent/lang/he.js | 8 + sources/plugins/indent/lang/hi.js | 8 + sources/plugins/indent/lang/hr.js | 8 + sources/plugins/indent/lang/hu.js | 8 + sources/plugins/indent/lang/id.js | 8 + sources/plugins/indent/lang/is.js | 8 + sources/plugins/indent/lang/it.js | 8 + sources/plugins/indent/lang/ja.js | 8 + sources/plugins/indent/lang/ka.js | 8 + sources/plugins/indent/lang/km.js | 8 + sources/plugins/indent/lang/ko.js | 8 + sources/plugins/indent/lang/ku.js | 8 + sources/plugins/indent/lang/lt.js | 8 + sources/plugins/indent/lang/lv.js | 8 + sources/plugins/indent/lang/mk.js | 8 + sources/plugins/indent/lang/mn.js | 8 + sources/plugins/indent/lang/ms.js | 8 + sources/plugins/indent/lang/nb.js | 8 + sources/plugins/indent/lang/nl.js | 8 + sources/plugins/indent/lang/no.js | 8 + sources/plugins/indent/lang/pl.js | 8 + sources/plugins/indent/lang/pt-br.js | 8 + sources/plugins/indent/lang/pt.js | 8 + sources/plugins/indent/lang/ro.js | 8 + sources/plugins/indent/lang/ru.js | 8 + sources/plugins/indent/lang/si.js | 8 + sources/plugins/indent/lang/sk.js | 8 + sources/plugins/indent/lang/sl.js | 8 + sources/plugins/indent/lang/sq.js | 8 + sources/plugins/indent/lang/sr-latn.js | 8 + sources/plugins/indent/lang/sr.js | 8 + sources/plugins/indent/lang/sv.js | 8 + sources/plugins/indent/lang/th.js | 8 + sources/plugins/indent/lang/tr.js | 8 + sources/plugins/indent/lang/tt.js | 8 + sources/plugins/indent/lang/ug.js | 8 + sources/plugins/indent/lang/uk.js | 8 + sources/plugins/indent/lang/vi.js | 8 + sources/plugins/indent/lang/zh-cn.js | 8 + sources/plugins/indent/lang/zh.js | 8 + sources/plugins/indent/plugin.js | 461 +++ sources/plugins/indentblock/plugin.js | 298 ++ sources/plugins/indentlist/plugin.js | 318 ++ .../plugins/justify/icons/hidpi/justifyblock.png | Bin 0 -> 882 bytes .../plugins/justify/icons/hidpi/justifycenter.png | Bin 0 -> 1142 bytes .../plugins/justify/icons/hidpi/justifyleft.png | Bin 0 -> 1042 bytes .../plugins/justify/icons/hidpi/justifyright.png | Bin 0 -> 1048 bytes sources/plugins/justify/icons/justifyblock.png | Bin 0 -> 496 bytes sources/plugins/justify/icons/justifycenter.png | Bin 0 -> 609 bytes sources/plugins/justify/icons/justifyleft.png | Bin 0 -> 558 bytes sources/plugins/justify/icons/justifyright.png | Bin 0 -> 554 bytes sources/plugins/justify/lang/af.js | 10 + sources/plugins/justify/lang/ar.js | 10 + sources/plugins/justify/lang/bg.js | 10 + sources/plugins/justify/lang/bn.js | 10 + sources/plugins/justify/lang/bs.js | 10 + sources/plugins/justify/lang/ca.js | 10 + sources/plugins/justify/lang/cs.js | 10 + sources/plugins/justify/lang/cy.js | 10 + sources/plugins/justify/lang/da.js | 10 + sources/plugins/justify/lang/de.js | 10 + sources/plugins/justify/lang/el.js | 10 + sources/plugins/justify/lang/en-au.js | 10 + sources/plugins/justify/lang/en-ca.js | 10 + sources/plugins/justify/lang/en-gb.js | 10 + sources/plugins/justify/lang/en.js | 10 + sources/plugins/justify/lang/eo.js | 10 + sources/plugins/justify/lang/es.js | 10 + sources/plugins/justify/lang/et.js | 10 + sources/plugins/justify/lang/eu.js | 10 + sources/plugins/justify/lang/fa.js | 10 + sources/plugins/justify/lang/fi.js | 10 + sources/plugins/justify/lang/fo.js | 10 + sources/plugins/justify/lang/fr-ca.js | 10 + sources/plugins/justify/lang/fr.js | 10 + sources/plugins/justify/lang/gl.js | 10 + sources/plugins/justify/lang/gu.js | 10 + sources/plugins/justify/lang/he.js | 10 + sources/plugins/justify/lang/hi.js | 10 + sources/plugins/justify/lang/hr.js | 10 + sources/plugins/justify/lang/hu.js | 10 + sources/plugins/justify/lang/id.js | 10 + sources/plugins/justify/lang/is.js | 10 + sources/plugins/justify/lang/it.js | 10 + sources/plugins/justify/lang/ja.js | 10 + sources/plugins/justify/lang/ka.js | 10 + sources/plugins/justify/lang/km.js | 10 + sources/plugins/justify/lang/ko.js | 10 + sources/plugins/justify/lang/ku.js | 10 + sources/plugins/justify/lang/lt.js | 10 + sources/plugins/justify/lang/lv.js | 10 + sources/plugins/justify/lang/mk.js | 10 + sources/plugins/justify/lang/mn.js | 10 + sources/plugins/justify/lang/ms.js | 10 + sources/plugins/justify/lang/nb.js | 10 + sources/plugins/justify/lang/nl.js | 10 + sources/plugins/justify/lang/no.js | 10 + sources/plugins/justify/lang/pl.js | 10 + sources/plugins/justify/lang/pt-br.js | 10 + sources/plugins/justify/lang/pt.js | 10 + sources/plugins/justify/lang/ro.js | 10 + sources/plugins/justify/lang/ru.js | 10 + sources/plugins/justify/lang/si.js | 10 + sources/plugins/justify/lang/sk.js | 10 + sources/plugins/justify/lang/sl.js | 10 + sources/plugins/justify/lang/sq.js | 10 + sources/plugins/justify/lang/sr-latn.js | 10 + sources/plugins/justify/lang/sr.js | 10 + sources/plugins/justify/lang/sv.js | 10 + sources/plugins/justify/lang/th.js | 10 + sources/plugins/justify/lang/tr.js | 10 + sources/plugins/justify/lang/tt.js | 10 + sources/plugins/justify/lang/ug.js | 10 + sources/plugins/justify/lang/uk.js | 10 + sources/plugins/justify/lang/vi.js | 10 + sources/plugins/justify/lang/zh-cn.js | 10 + sources/plugins/justify/lang/zh.js | 10 + sources/plugins/justify/plugin.js | 245 ++ sources/plugins/link/dialogs/anchor.js | 105 + sources/plugins/link/dialogs/link.js | 904 ++++++ sources/plugins/link/icons/anchor-rtl.png | Bin 0 -> 764 bytes sources/plugins/link/icons/anchor.png | Bin 0 -> 757 bytes sources/plugins/link/icons/hidpi/anchor-rtl.png | Bin 0 -> 1654 bytes sources/plugins/link/icons/hidpi/anchor.png | Bin 0 -> 1633 bytes sources/plugins/link/icons/hidpi/link.png | Bin 0 -> 1620 bytes sources/plugins/link/icons/hidpi/unlink.png | Bin 0 -> 2209 bytes sources/plugins/link/icons/link.png | Bin 0 -> 656 bytes sources/plugins/link/icons/unlink.png | Bin 0 -> 812 bytes sources/plugins/link/images/anchor.png | Bin 0 -> 589 bytes sources/plugins/link/images/hidpi/anchor.png | Bin 0 -> 1379 bytes sources/plugins/link/lang/af.js | 65 + sources/plugins/link/lang/ar.js | 65 + sources/plugins/link/lang/bg.js | 65 + sources/plugins/link/lang/bn.js | 65 + sources/plugins/link/lang/bs.js | 65 + sources/plugins/link/lang/ca.js | 65 + sources/plugins/link/lang/cs.js | 65 + sources/plugins/link/lang/cy.js | 65 + sources/plugins/link/lang/da.js | 65 + sources/plugins/link/lang/de.js | 65 + sources/plugins/link/lang/el.js | 65 + sources/plugins/link/lang/en-au.js | 65 + sources/plugins/link/lang/en-ca.js | 65 + sources/plugins/link/lang/en-gb.js | 65 + sources/plugins/link/lang/en.js | 65 + sources/plugins/link/lang/eo.js | 65 + sources/plugins/link/lang/es.js | 65 + sources/plugins/link/lang/et.js | 65 + sources/plugins/link/lang/eu.js | 65 + sources/plugins/link/lang/fa.js | 65 + sources/plugins/link/lang/fi.js | 65 + sources/plugins/link/lang/fo.js | 65 + sources/plugins/link/lang/fr-ca.js | 65 + sources/plugins/link/lang/fr.js | 65 + sources/plugins/link/lang/gl.js | 65 + sources/plugins/link/lang/gu.js | 65 + sources/plugins/link/lang/he.js | 65 + sources/plugins/link/lang/hi.js | 65 + sources/plugins/link/lang/hr.js | 65 + sources/plugins/link/lang/hu.js | 65 + sources/plugins/link/lang/id.js | 65 + sources/plugins/link/lang/is.js | 65 + sources/plugins/link/lang/it.js | 65 + sources/plugins/link/lang/ja.js | 65 + sources/plugins/link/lang/ka.js | 65 + sources/plugins/link/lang/km.js | 65 + sources/plugins/link/lang/ko.js | 65 + sources/plugins/link/lang/ku.js | 65 + sources/plugins/link/lang/lt.js | 65 + sources/plugins/link/lang/lv.js | 65 + sources/plugins/link/lang/mk.js | 65 + sources/plugins/link/lang/mn.js | 65 + sources/plugins/link/lang/ms.js | 65 + sources/plugins/link/lang/nb.js | 65 + sources/plugins/link/lang/nl.js | 65 + sources/plugins/link/lang/no.js | 65 + sources/plugins/link/lang/pl.js | 65 + sources/plugins/link/lang/pt-br.js | 65 + sources/plugins/link/lang/pt.js | 65 + sources/plugins/link/lang/ro.js | 65 + sources/plugins/link/lang/ru.js | 65 + sources/plugins/link/lang/si.js | 65 + sources/plugins/link/lang/sk.js | 65 + sources/plugins/link/lang/sl.js | 65 + sources/plugins/link/lang/sq.js | 65 + sources/plugins/link/lang/sr-latn.js | 65 + sources/plugins/link/lang/sr.js | 65 + sources/plugins/link/lang/sv.js | 65 + sources/plugins/link/lang/th.js | 65 + sources/plugins/link/lang/tr.js | 65 + sources/plugins/link/lang/tt.js | 65 + sources/plugins/link/lang/ug.js | 65 + sources/plugins/link/lang/uk.js | 65 + sources/plugins/link/lang/vi.js | 65 + sources/plugins/link/lang/zh-cn.js | 65 + sources/plugins/link/lang/zh.js | 65 + sources/plugins/link/plugin.js | 787 +++++ sources/plugins/list/icons/bulletedlist-rtl.png | Bin 0 -> 647 bytes sources/plugins/list/icons/bulletedlist.png | Bin 0 -> 646 bytes .../plugins/list/icons/hidpi/bulletedlist-rtl.png | Bin 0 -> 1451 bytes sources/plugins/list/icons/hidpi/bulletedlist.png | Bin 0 -> 1441 bytes .../plugins/list/icons/hidpi/numberedlist-rtl.png | Bin 0 -> 1248 bytes sources/plugins/list/icons/hidpi/numberedlist.png | Bin 0 -> 1218 bytes sources/plugins/list/icons/numberedlist-rtl.png | Bin 0 -> 666 bytes sources/plugins/list/icons/numberedlist.png | Bin 0 -> 645 bytes sources/plugins/list/lang/af.js | 8 + sources/plugins/list/lang/ar.js | 8 + sources/plugins/list/lang/bg.js | 8 + sources/plugins/list/lang/bn.js | 8 + sources/plugins/list/lang/bs.js | 8 + sources/plugins/list/lang/ca.js | 8 + sources/plugins/list/lang/cs.js | 8 + sources/plugins/list/lang/cy.js | 8 + sources/plugins/list/lang/da.js | 8 + sources/plugins/list/lang/de.js | 8 + sources/plugins/list/lang/el.js | 8 + sources/plugins/list/lang/en-au.js | 8 + sources/plugins/list/lang/en-ca.js | 8 + sources/plugins/list/lang/en-gb.js | 8 + sources/plugins/list/lang/en.js | 8 + sources/plugins/list/lang/eo.js | 8 + sources/plugins/list/lang/es.js | 8 + sources/plugins/list/lang/et.js | 8 + sources/plugins/list/lang/eu.js | 8 + sources/plugins/list/lang/fa.js | 8 + sources/plugins/list/lang/fi.js | 8 + sources/plugins/list/lang/fo.js | 8 + sources/plugins/list/lang/fr-ca.js | 8 + sources/plugins/list/lang/fr.js | 8 + sources/plugins/list/lang/gl.js | 8 + sources/plugins/list/lang/gu.js | 8 + sources/plugins/list/lang/he.js | 8 + sources/plugins/list/lang/hi.js | 8 + sources/plugins/list/lang/hr.js | 8 + sources/plugins/list/lang/hu.js | 8 + sources/plugins/list/lang/id.js | 8 + sources/plugins/list/lang/is.js | 8 + sources/plugins/list/lang/it.js | 8 + sources/plugins/list/lang/ja.js | 8 + sources/plugins/list/lang/ka.js | 8 + sources/plugins/list/lang/km.js | 8 + sources/plugins/list/lang/ko.js | 8 + sources/plugins/list/lang/ku.js | 8 + sources/plugins/list/lang/lt.js | 8 + sources/plugins/list/lang/lv.js | 8 + sources/plugins/list/lang/mk.js | 8 + sources/plugins/list/lang/mn.js | 8 + sources/plugins/list/lang/ms.js | 8 + sources/plugins/list/lang/nb.js | 8 + sources/plugins/list/lang/nl.js | 8 + sources/plugins/list/lang/no.js | 8 + sources/plugins/list/lang/pl.js | 8 + sources/plugins/list/lang/pt-br.js | 8 + sources/plugins/list/lang/pt.js | 8 + sources/plugins/list/lang/ro.js | 8 + sources/plugins/list/lang/ru.js | 8 + sources/plugins/list/lang/si.js | 8 + sources/plugins/list/lang/sk.js | 8 + sources/plugins/list/lang/sl.js | 8 + sources/plugins/list/lang/sq.js | 8 + sources/plugins/list/lang/sr-latn.js | 8 + sources/plugins/list/lang/sr.js | 8 + sources/plugins/list/lang/sv.js | 8 + sources/plugins/list/lang/th.js | 8 + sources/plugins/list/lang/tr.js | 8 + sources/plugins/list/lang/tt.js | 8 + sources/plugins/list/lang/ug.js | 8 + sources/plugins/list/lang/uk.js | 8 + sources/plugins/list/lang/vi.js | 8 + sources/plugins/list/lang/zh-cn.js | 8 + sources/plugins/list/lang/zh.js | 8 + sources/plugins/list/plugin.js | 1111 +++++++ sources/plugins/listblock/plugin.js | 241 ++ sources/plugins/liststyle/dialogs/liststyle.js | 189 ++ sources/plugins/liststyle/lang/af.js | 25 + sources/plugins/liststyle/lang/ar.js | 25 + sources/plugins/liststyle/lang/bg.js | 25 + sources/plugins/liststyle/lang/bn.js | 25 + sources/plugins/liststyle/lang/bs.js | 25 + sources/plugins/liststyle/lang/ca.js | 25 + sources/plugins/liststyle/lang/cs.js | 25 + sources/plugins/liststyle/lang/cy.js | 25 + sources/plugins/liststyle/lang/da.js | 25 + sources/plugins/liststyle/lang/de.js | 25 + sources/plugins/liststyle/lang/el.js | 25 + sources/plugins/liststyle/lang/en-au.js | 25 + sources/plugins/liststyle/lang/en-ca.js | 25 + sources/plugins/liststyle/lang/en-gb.js | 25 + sources/plugins/liststyle/lang/en.js | 25 + sources/plugins/liststyle/lang/eo.js | 25 + sources/plugins/liststyle/lang/es.js | 25 + sources/plugins/liststyle/lang/et.js | 25 + sources/plugins/liststyle/lang/eu.js | 25 + sources/plugins/liststyle/lang/fa.js | 25 + sources/plugins/liststyle/lang/fi.js | 25 + sources/plugins/liststyle/lang/fo.js | 25 + sources/plugins/liststyle/lang/fr-ca.js | 25 + sources/plugins/liststyle/lang/fr.js | 25 + sources/plugins/liststyle/lang/gl.js | 25 + sources/plugins/liststyle/lang/gu.js | 25 + sources/plugins/liststyle/lang/he.js | 25 + sources/plugins/liststyle/lang/hi.js | 25 + sources/plugins/liststyle/lang/hr.js | 25 + sources/plugins/liststyle/lang/hu.js | 25 + sources/plugins/liststyle/lang/id.js | 25 + sources/plugins/liststyle/lang/is.js | 25 + sources/plugins/liststyle/lang/it.js | 25 + sources/plugins/liststyle/lang/ja.js | 25 + sources/plugins/liststyle/lang/ka.js | 25 + sources/plugins/liststyle/lang/km.js | 25 + sources/plugins/liststyle/lang/ko.js | 25 + sources/plugins/liststyle/lang/ku.js | 25 + sources/plugins/liststyle/lang/lt.js | 25 + sources/plugins/liststyle/lang/lv.js | 25 + sources/plugins/liststyle/lang/mk.js | 25 + sources/plugins/liststyle/lang/mn.js | 25 + sources/plugins/liststyle/lang/ms.js | 25 + sources/plugins/liststyle/lang/nb.js | 25 + sources/plugins/liststyle/lang/nl.js | 25 + sources/plugins/liststyle/lang/no.js | 25 + sources/plugins/liststyle/lang/pl.js | 25 + sources/plugins/liststyle/lang/pt-br.js | 25 + sources/plugins/liststyle/lang/pt.js | 25 + sources/plugins/liststyle/lang/ro.js | 25 + sources/plugins/liststyle/lang/ru.js | 25 + sources/plugins/liststyle/lang/si.js | 25 + sources/plugins/liststyle/lang/sk.js | 25 + sources/plugins/liststyle/lang/sl.js | 25 + sources/plugins/liststyle/lang/sq.js | 25 + sources/plugins/liststyle/lang/sr-latn.js | 25 + sources/plugins/liststyle/lang/sr.js | 25 + sources/plugins/liststyle/lang/sv.js | 25 + sources/plugins/liststyle/lang/th.js | 25 + sources/plugins/liststyle/lang/tr.js | 25 + sources/plugins/liststyle/lang/tt.js | 25 + sources/plugins/liststyle/lang/ug.js | 25 + sources/plugins/liststyle/lang/uk.js | 25 + sources/plugins/liststyle/lang/vi.js | 25 + sources/plugins/liststyle/lang/zh-cn.js | 25 + sources/plugins/liststyle/lang/zh.js | 25 + sources/plugins/liststyle/plugin.js | 69 + sources/plugins/magicline/dev/magicline.html | 594 ++++ .../plugins/magicline/images/hidpi/icon-rtl.png | Bin 0 -> 176 bytes sources/plugins/magicline/images/hidpi/icon.png | Bin 0 -> 199 bytes sources/plugins/magicline/images/icon-rtl.png | Bin 0 -> 138 bytes sources/plugins/magicline/images/icon.png | Bin 0 -> 133 bytes sources/plugins/magicline/lang/af.js | 8 + sources/plugins/magicline/lang/ar.js | 8 + sources/plugins/magicline/lang/bg.js | 8 + sources/plugins/magicline/lang/ca.js | 8 + sources/plugins/magicline/lang/cs.js | 8 + sources/plugins/magicline/lang/cy.js | 8 + sources/plugins/magicline/lang/da.js | 8 + sources/plugins/magicline/lang/de.js | 8 + sources/plugins/magicline/lang/el.js | 8 + sources/plugins/magicline/lang/en-gb.js | 8 + sources/plugins/magicline/lang/en.js | 8 + sources/plugins/magicline/lang/eo.js | 8 + sources/plugins/magicline/lang/es.js | 8 + sources/plugins/magicline/lang/et.js | 8 + sources/plugins/magicline/lang/eu.js | 8 + sources/plugins/magicline/lang/fa.js | 8 + sources/plugins/magicline/lang/fi.js | 8 + sources/plugins/magicline/lang/fr-ca.js | 8 + sources/plugins/magicline/lang/fr.js | 8 + sources/plugins/magicline/lang/gl.js | 8 + sources/plugins/magicline/lang/he.js | 8 + sources/plugins/magicline/lang/hr.js | 8 + sources/plugins/magicline/lang/hu.js | 8 + sources/plugins/magicline/lang/id.js | 8 + sources/plugins/magicline/lang/it.js | 8 + sources/plugins/magicline/lang/ja.js | 8 + sources/plugins/magicline/lang/km.js | 8 + sources/plugins/magicline/lang/ko.js | 8 + sources/plugins/magicline/lang/ku.js | 8 + sources/plugins/magicline/lang/lv.js | 8 + sources/plugins/magicline/lang/nb.js | 8 + sources/plugins/magicline/lang/nl.js | 8 + sources/plugins/magicline/lang/no.js | 8 + sources/plugins/magicline/lang/pl.js | 8 + sources/plugins/magicline/lang/pt-br.js | 8 + sources/plugins/magicline/lang/pt.js | 8 + sources/plugins/magicline/lang/ru.js | 8 + sources/plugins/magicline/lang/si.js | 8 + sources/plugins/magicline/lang/sk.js | 8 + sources/plugins/magicline/lang/sl.js | 8 + sources/plugins/magicline/lang/sq.js | 8 + sources/plugins/magicline/lang/sv.js | 8 + sources/plugins/magicline/lang/tr.js | 8 + sources/plugins/magicline/lang/tt.js | 8 + sources/plugins/magicline/lang/ug.js | 8 + sources/plugins/magicline/lang/uk.js | 8 + sources/plugins/magicline/lang/vi.js | 8 + sources/plugins/magicline/lang/zh-cn.js | 8 + sources/plugins/magicline/lang/zh.js | 8 + sources/plugins/magicline/plugin.js | 1874 +++++++++++ sources/plugins/magicline/samples/magicline.html | 209 ++ sources/plugins/maximize/icons/hidpi/maximize.png | Bin 0 -> 2462 bytes sources/plugins/maximize/icons/maximize.png | Bin 0 -> 921 bytes sources/plugins/maximize/lang/af.js | 8 + sources/plugins/maximize/lang/ar.js | 8 + sources/plugins/maximize/lang/bg.js | 8 + sources/plugins/maximize/lang/bn.js | 8 + sources/plugins/maximize/lang/bs.js | 8 + sources/plugins/maximize/lang/ca.js | 8 + sources/plugins/maximize/lang/cs.js | 8 + sources/plugins/maximize/lang/cy.js | 8 + sources/plugins/maximize/lang/da.js | 8 + sources/plugins/maximize/lang/de.js | 8 + sources/plugins/maximize/lang/el.js | 8 + sources/plugins/maximize/lang/en-au.js | 8 + sources/plugins/maximize/lang/en-ca.js | 8 + sources/plugins/maximize/lang/en-gb.js | 8 + sources/plugins/maximize/lang/en.js | 8 + sources/plugins/maximize/lang/eo.js | 8 + sources/plugins/maximize/lang/es.js | 8 + sources/plugins/maximize/lang/et.js | 8 + sources/plugins/maximize/lang/eu.js | 8 + sources/plugins/maximize/lang/fa.js | 8 + sources/plugins/maximize/lang/fi.js | 8 + sources/plugins/maximize/lang/fo.js | 8 + sources/plugins/maximize/lang/fr-ca.js | 8 + sources/plugins/maximize/lang/fr.js | 8 + sources/plugins/maximize/lang/gl.js | 8 + sources/plugins/maximize/lang/gu.js | 8 + sources/plugins/maximize/lang/he.js | 8 + sources/plugins/maximize/lang/hi.js | 8 + sources/plugins/maximize/lang/hr.js | 8 + sources/plugins/maximize/lang/hu.js | 8 + sources/plugins/maximize/lang/id.js | 8 + sources/plugins/maximize/lang/is.js | 8 + sources/plugins/maximize/lang/it.js | 8 + sources/plugins/maximize/lang/ja.js | 8 + sources/plugins/maximize/lang/ka.js | 8 + sources/plugins/maximize/lang/km.js | 8 + sources/plugins/maximize/lang/ko.js | 8 + sources/plugins/maximize/lang/ku.js | 8 + sources/plugins/maximize/lang/lt.js | 8 + sources/plugins/maximize/lang/lv.js | 8 + sources/plugins/maximize/lang/mk.js | 8 + sources/plugins/maximize/lang/mn.js | 8 + sources/plugins/maximize/lang/ms.js | 8 + sources/plugins/maximize/lang/nb.js | 8 + sources/plugins/maximize/lang/nl.js | 8 + sources/plugins/maximize/lang/no.js | 8 + sources/plugins/maximize/lang/pl.js | 8 + sources/plugins/maximize/lang/pt-br.js | 8 + sources/plugins/maximize/lang/pt.js | 8 + sources/plugins/maximize/lang/ro.js | 8 + sources/plugins/maximize/lang/ru.js | 8 + sources/plugins/maximize/lang/si.js | 8 + sources/plugins/maximize/lang/sk.js | 8 + sources/plugins/maximize/lang/sl.js | 8 + sources/plugins/maximize/lang/sq.js | 8 + sources/plugins/maximize/lang/sr-latn.js | 8 + sources/plugins/maximize/lang/sr.js | 8 + sources/plugins/maximize/lang/sv.js | 8 + sources/plugins/maximize/lang/th.js | 8 + sources/plugins/maximize/lang/tr.js | 8 + sources/plugins/maximize/lang/tt.js | 8 + sources/plugins/maximize/lang/ug.js | 8 + sources/plugins/maximize/lang/uk.js | 8 + sources/plugins/maximize/lang/vi.js | 8 + sources/plugins/maximize/lang/zh-cn.js | 8 + sources/plugins/maximize/lang/zh.js | 8 + sources/plugins/maximize/plugin.js | 314 ++ sources/plugins/menu/plugin.js | 545 ++++ sources/plugins/menubutton/plugin.js | 101 + .../plugins/newpage/icons/hidpi/newpage-rtl.png | Bin 0 -> 1070 bytes sources/plugins/newpage/icons/hidpi/newpage.png | Bin 0 -> 1112 bytes sources/plugins/newpage/icons/newpage-rtl.png | Bin 0 -> 575 bytes sources/plugins/newpage/icons/newpage.png | Bin 0 -> 580 bytes sources/plugins/newpage/lang/af.js | 7 + sources/plugins/newpage/lang/ar.js | 7 + sources/plugins/newpage/lang/bg.js | 7 + sources/plugins/newpage/lang/bn.js | 7 + sources/plugins/newpage/lang/bs.js | 7 + sources/plugins/newpage/lang/ca.js | 7 + sources/plugins/newpage/lang/cs.js | 7 + sources/plugins/newpage/lang/cy.js | 7 + sources/plugins/newpage/lang/da.js | 7 + sources/plugins/newpage/lang/de.js | 7 + sources/plugins/newpage/lang/el.js | 7 + sources/plugins/newpage/lang/en-au.js | 7 + sources/plugins/newpage/lang/en-ca.js | 7 + sources/plugins/newpage/lang/en-gb.js | 7 + sources/plugins/newpage/lang/en.js | 7 + sources/plugins/newpage/lang/eo.js | 7 + sources/plugins/newpage/lang/es.js | 7 + sources/plugins/newpage/lang/et.js | 7 + sources/plugins/newpage/lang/eu.js | 7 + sources/plugins/newpage/lang/fa.js | 7 + sources/plugins/newpage/lang/fi.js | 7 + sources/plugins/newpage/lang/fo.js | 7 + sources/plugins/newpage/lang/fr-ca.js | 7 + sources/plugins/newpage/lang/fr.js | 7 + sources/plugins/newpage/lang/gl.js | 7 + sources/plugins/newpage/lang/gu.js | 7 + sources/plugins/newpage/lang/he.js | 7 + sources/plugins/newpage/lang/hi.js | 7 + sources/plugins/newpage/lang/hr.js | 7 + sources/plugins/newpage/lang/hu.js | 7 + sources/plugins/newpage/lang/id.js | 7 + sources/plugins/newpage/lang/is.js | 7 + sources/plugins/newpage/lang/it.js | 7 + sources/plugins/newpage/lang/ja.js | 7 + sources/plugins/newpage/lang/ka.js | 7 + sources/plugins/newpage/lang/km.js | 7 + sources/plugins/newpage/lang/ko.js | 7 + sources/plugins/newpage/lang/ku.js | 7 + sources/plugins/newpage/lang/lt.js | 7 + sources/plugins/newpage/lang/lv.js | 7 + sources/plugins/newpage/lang/mk.js | 7 + sources/plugins/newpage/lang/mn.js | 7 + sources/plugins/newpage/lang/ms.js | 7 + sources/plugins/newpage/lang/nb.js | 7 + sources/plugins/newpage/lang/nl.js | 7 + sources/plugins/newpage/lang/no.js | 7 + sources/plugins/newpage/lang/pl.js | 7 + sources/plugins/newpage/lang/pt-br.js | 7 + sources/plugins/newpage/lang/pt.js | 7 + sources/plugins/newpage/lang/ro.js | 7 + sources/plugins/newpage/lang/ru.js | 7 + sources/plugins/newpage/lang/si.js | 7 + sources/plugins/newpage/lang/sk.js | 7 + sources/plugins/newpage/lang/sl.js | 7 + sources/plugins/newpage/lang/sq.js | 7 + sources/plugins/newpage/lang/sr-latn.js | 7 + sources/plugins/newpage/lang/sr.js | 7 + sources/plugins/newpage/lang/sv.js | 7 + sources/plugins/newpage/lang/th.js | 7 + sources/plugins/newpage/lang/tr.js | 7 + sources/plugins/newpage/lang/tt.js | 7 + sources/plugins/newpage/lang/ug.js | 7 + sources/plugins/newpage/lang/uk.js | 7 + sources/plugins/newpage/lang/vi.js | 7 + sources/plugins/newpage/lang/zh-cn.js | 7 + sources/plugins/newpage/lang/zh.js | 7 + sources/plugins/newpage/plugin.js | 53 + .../pagebreak/icons/hidpi/pagebreak-rtl.png | Bin 0 -> 1318 bytes .../plugins/pagebreak/icons/hidpi/pagebreak.png | Bin 0 -> 1299 bytes sources/plugins/pagebreak/icons/pagebreak-rtl.png | Bin 0 -> 629 bytes sources/plugins/pagebreak/icons/pagebreak.png | Bin 0 -> 602 bytes sources/plugins/pagebreak/images/pagebreak.gif | Bin 0 -> 99 bytes sources/plugins/pagebreak/lang/af.js | 8 + sources/plugins/pagebreak/lang/ar.js | 8 + sources/plugins/pagebreak/lang/bg.js | 8 + sources/plugins/pagebreak/lang/bn.js | 8 + sources/plugins/pagebreak/lang/bs.js | 8 + sources/plugins/pagebreak/lang/ca.js | 8 + sources/plugins/pagebreak/lang/cs.js | 8 + sources/plugins/pagebreak/lang/cy.js | 8 + sources/plugins/pagebreak/lang/da.js | 8 + sources/plugins/pagebreak/lang/de.js | 8 + sources/plugins/pagebreak/lang/el.js | 8 + sources/plugins/pagebreak/lang/en-au.js | 8 + sources/plugins/pagebreak/lang/en-ca.js | 8 + sources/plugins/pagebreak/lang/en-gb.js | 8 + sources/plugins/pagebreak/lang/en.js | 8 + sources/plugins/pagebreak/lang/eo.js | 8 + sources/plugins/pagebreak/lang/es.js | 8 + sources/plugins/pagebreak/lang/et.js | 8 + sources/plugins/pagebreak/lang/eu.js | 8 + sources/plugins/pagebreak/lang/fa.js | 8 + sources/plugins/pagebreak/lang/fi.js | 8 + sources/plugins/pagebreak/lang/fo.js | 8 + sources/plugins/pagebreak/lang/fr-ca.js | 8 + sources/plugins/pagebreak/lang/fr.js | 8 + sources/plugins/pagebreak/lang/gl.js | 8 + sources/plugins/pagebreak/lang/gu.js | 8 + sources/plugins/pagebreak/lang/he.js | 8 + sources/plugins/pagebreak/lang/hi.js | 8 + sources/plugins/pagebreak/lang/hr.js | 8 + sources/plugins/pagebreak/lang/hu.js | 8 + sources/plugins/pagebreak/lang/id.js | 8 + sources/plugins/pagebreak/lang/is.js | 8 + sources/plugins/pagebreak/lang/it.js | 8 + sources/plugins/pagebreak/lang/ja.js | 8 + sources/plugins/pagebreak/lang/ka.js | 8 + sources/plugins/pagebreak/lang/km.js | 8 + sources/plugins/pagebreak/lang/ko.js | 8 + sources/plugins/pagebreak/lang/ku.js | 8 + sources/plugins/pagebreak/lang/lt.js | 8 + sources/plugins/pagebreak/lang/lv.js | 8 + sources/plugins/pagebreak/lang/mk.js | 8 + sources/plugins/pagebreak/lang/mn.js | 8 + sources/plugins/pagebreak/lang/ms.js | 8 + sources/plugins/pagebreak/lang/nb.js | 8 + sources/plugins/pagebreak/lang/nl.js | 8 + sources/plugins/pagebreak/lang/no.js | 8 + sources/plugins/pagebreak/lang/pl.js | 8 + sources/plugins/pagebreak/lang/pt-br.js | 8 + sources/plugins/pagebreak/lang/pt.js | 8 + sources/plugins/pagebreak/lang/ro.js | 8 + sources/plugins/pagebreak/lang/ru.js | 8 + sources/plugins/pagebreak/lang/si.js | 8 + sources/plugins/pagebreak/lang/sk.js | 8 + sources/plugins/pagebreak/lang/sl.js | 8 + sources/plugins/pagebreak/lang/sq.js | 8 + sources/plugins/pagebreak/lang/sr-latn.js | 8 + sources/plugins/pagebreak/lang/sr.js | 8 + sources/plugins/pagebreak/lang/sv.js | 8 + sources/plugins/pagebreak/lang/th.js | 8 + sources/plugins/pagebreak/lang/tr.js | 8 + sources/plugins/pagebreak/lang/tt.js | 8 + sources/plugins/pagebreak/lang/ug.js | 8 + sources/plugins/pagebreak/lang/uk.js | 8 + sources/plugins/pagebreak/lang/vi.js | 8 + sources/plugins/pagebreak/lang/zh-cn.js | 8 + sources/plugins/pagebreak/lang/zh.js | 8 + sources/plugins/pagebreak/plugin.js | 160 + sources/plugins/panel/plugin.js | 403 +++ sources/plugins/panelbutton/plugin.js | 138 + sources/plugins/pastefromword/filter/default.js | 1251 +++++++ .../icons/hidpi/pastefromword-rtl.png | Bin 0 -> 2090 bytes .../pastefromword/icons/hidpi/pastefromword.png | Bin 0 -> 2105 bytes .../pastefromword/icons/pastefromword-rtl.png | Bin 0 -> 720 bytes .../plugins/pastefromword/icons/pastefromword.png | Bin 0 -> 723 bytes sources/plugins/pastefromword/lang/af.js | 10 + sources/plugins/pastefromword/lang/ar.js | 10 + sources/plugins/pastefromword/lang/bg.js | 10 + sources/plugins/pastefromword/lang/bn.js | 10 + sources/plugins/pastefromword/lang/bs.js | 10 + sources/plugins/pastefromword/lang/ca.js | 10 + sources/plugins/pastefromword/lang/cs.js | 10 + sources/plugins/pastefromword/lang/cy.js | 10 + sources/plugins/pastefromword/lang/da.js | 10 + sources/plugins/pastefromword/lang/de.js | 10 + sources/plugins/pastefromword/lang/el.js | 10 + sources/plugins/pastefromword/lang/en-au.js | 10 + sources/plugins/pastefromword/lang/en-ca.js | 10 + sources/plugins/pastefromword/lang/en-gb.js | 10 + sources/plugins/pastefromword/lang/en.js | 10 + sources/plugins/pastefromword/lang/eo.js | 10 + sources/plugins/pastefromword/lang/es.js | 10 + sources/plugins/pastefromword/lang/et.js | 10 + sources/plugins/pastefromword/lang/eu.js | 10 + sources/plugins/pastefromword/lang/fa.js | 10 + sources/plugins/pastefromword/lang/fi.js | 10 + sources/plugins/pastefromword/lang/fo.js | 10 + sources/plugins/pastefromword/lang/fr-ca.js | 10 + sources/plugins/pastefromword/lang/fr.js | 10 + sources/plugins/pastefromword/lang/gl.js | 10 + sources/plugins/pastefromword/lang/gu.js | 10 + sources/plugins/pastefromword/lang/he.js | 10 + sources/plugins/pastefromword/lang/hi.js | 10 + sources/plugins/pastefromword/lang/hr.js | 10 + sources/plugins/pastefromword/lang/hu.js | 10 + sources/plugins/pastefromword/lang/id.js | 10 + sources/plugins/pastefromword/lang/is.js | 10 + sources/plugins/pastefromword/lang/it.js | 10 + sources/plugins/pastefromword/lang/ja.js | 10 + sources/plugins/pastefromword/lang/ka.js | 10 + sources/plugins/pastefromword/lang/km.js | 10 + sources/plugins/pastefromword/lang/ko.js | 10 + sources/plugins/pastefromword/lang/ku.js | 10 + sources/plugins/pastefromword/lang/lt.js | 10 + sources/plugins/pastefromword/lang/lv.js | 10 + sources/plugins/pastefromword/lang/mk.js | 10 + sources/plugins/pastefromword/lang/mn.js | 10 + sources/plugins/pastefromword/lang/ms.js | 10 + sources/plugins/pastefromword/lang/nb.js | 10 + sources/plugins/pastefromword/lang/nl.js | 10 + sources/plugins/pastefromword/lang/no.js | 10 + sources/plugins/pastefromword/lang/pl.js | 10 + sources/plugins/pastefromword/lang/pt-br.js | 10 + sources/plugins/pastefromword/lang/pt.js | 10 + sources/plugins/pastefromword/lang/ro.js | 10 + sources/plugins/pastefromword/lang/ru.js | 10 + sources/plugins/pastefromword/lang/si.js | 10 + sources/plugins/pastefromword/lang/sk.js | 10 + sources/plugins/pastefromword/lang/sl.js | 10 + sources/plugins/pastefromword/lang/sq.js | 10 + sources/plugins/pastefromword/lang/sr-latn.js | 10 + sources/plugins/pastefromword/lang/sr.js | 10 + sources/plugins/pastefromword/lang/sv.js | 10 + sources/plugins/pastefromword/lang/th.js | 10 + sources/plugins/pastefromword/lang/tr.js | 10 + sources/plugins/pastefromword/lang/tt.js | 10 + sources/plugins/pastefromword/lang/ug.js | 10 + sources/plugins/pastefromword/lang/uk.js | 10 + sources/plugins/pastefromword/lang/vi.js | 10 + sources/plugins/pastefromword/lang/zh-cn.js | 10 + sources/plugins/pastefromword/lang/zh.js | 10 + sources/plugins/pastefromword/plugin.js | 149 + .../pastetext/icons/hidpi/pastetext-rtl.png | Bin 0 -> 1950 bytes .../plugins/pastetext/icons/hidpi/pastetext.png | Bin 0 -> 1963 bytes sources/plugins/pastetext/icons/pastetext-rtl.png | Bin 0 -> 752 bytes sources/plugins/pastetext/icons/pastetext.png | Bin 0 -> 750 bytes sources/plugins/pastetext/lang/af.js | 8 + sources/plugins/pastetext/lang/ar.js | 8 + sources/plugins/pastetext/lang/bg.js | 8 + sources/plugins/pastetext/lang/bn.js | 8 + sources/plugins/pastetext/lang/bs.js | 8 + sources/plugins/pastetext/lang/ca.js | 8 + sources/plugins/pastetext/lang/cs.js | 8 + sources/plugins/pastetext/lang/cy.js | 8 + sources/plugins/pastetext/lang/da.js | 8 + sources/plugins/pastetext/lang/de.js | 8 + sources/plugins/pastetext/lang/el.js | 8 + sources/plugins/pastetext/lang/en-au.js | 8 + sources/plugins/pastetext/lang/en-ca.js | 8 + sources/plugins/pastetext/lang/en-gb.js | 8 + sources/plugins/pastetext/lang/en.js | 8 + sources/plugins/pastetext/lang/eo.js | 8 + sources/plugins/pastetext/lang/es.js | 8 + sources/plugins/pastetext/lang/et.js | 8 + sources/plugins/pastetext/lang/eu.js | 8 + sources/plugins/pastetext/lang/fa.js | 8 + sources/plugins/pastetext/lang/fi.js | 8 + sources/plugins/pastetext/lang/fo.js | 8 + sources/plugins/pastetext/lang/fr-ca.js | 8 + sources/plugins/pastetext/lang/fr.js | 8 + sources/plugins/pastetext/lang/gl.js | 8 + sources/plugins/pastetext/lang/gu.js | 8 + sources/plugins/pastetext/lang/he.js | 8 + sources/plugins/pastetext/lang/hi.js | 8 + sources/plugins/pastetext/lang/hr.js | 8 + sources/plugins/pastetext/lang/hu.js | 8 + sources/plugins/pastetext/lang/id.js | 8 + sources/plugins/pastetext/lang/is.js | 8 + sources/plugins/pastetext/lang/it.js | 8 + sources/plugins/pastetext/lang/ja.js | 8 + sources/plugins/pastetext/lang/ka.js | 8 + sources/plugins/pastetext/lang/km.js | 8 + sources/plugins/pastetext/lang/ko.js | 8 + sources/plugins/pastetext/lang/ku.js | 8 + sources/plugins/pastetext/lang/lt.js | 8 + sources/plugins/pastetext/lang/lv.js | 8 + sources/plugins/pastetext/lang/mk.js | 8 + sources/plugins/pastetext/lang/mn.js | 8 + sources/plugins/pastetext/lang/ms.js | 8 + sources/plugins/pastetext/lang/nb.js | 8 + sources/plugins/pastetext/lang/nl.js | 8 + sources/plugins/pastetext/lang/no.js | 8 + sources/plugins/pastetext/lang/pl.js | 8 + sources/plugins/pastetext/lang/pt-br.js | 8 + sources/plugins/pastetext/lang/pt.js | 8 + sources/plugins/pastetext/lang/ro.js | 8 + sources/plugins/pastetext/lang/ru.js | 8 + sources/plugins/pastetext/lang/si.js | 8 + sources/plugins/pastetext/lang/sk.js | 8 + sources/plugins/pastetext/lang/sl.js | 8 + sources/plugins/pastetext/lang/sq.js | 8 + sources/plugins/pastetext/lang/sr-latn.js | 8 + sources/plugins/pastetext/lang/sr.js | 8 + sources/plugins/pastetext/lang/sv.js | 8 + sources/plugins/pastetext/lang/th.js | 8 + sources/plugins/pastetext/lang/tr.js | 8 + sources/plugins/pastetext/lang/tt.js | 8 + sources/plugins/pastetext/lang/ug.js | 8 + sources/plugins/pastetext/lang/uk.js | 8 + sources/plugins/pastetext/lang/vi.js | 8 + sources/plugins/pastetext/lang/zh-cn.js | 8 + sources/plugins/pastetext/lang/zh.js | 8 + sources/plugins/pastetext/plugin.js | 83 + sources/plugins/popup/plugin.js | 65 + .../plugins/preview/icons/hidpi/preview-rtl.png | Bin 0 -> 2145 bytes sources/plugins/preview/icons/hidpi/preview.png | Bin 0 -> 2204 bytes sources/plugins/preview/icons/preview-rtl.png | Bin 0 -> 850 bytes sources/plugins/preview/icons/preview.png | Bin 0 -> 855 bytes sources/plugins/preview/lang/af.js | 7 + sources/plugins/preview/lang/ar.js | 7 + sources/plugins/preview/lang/bg.js | 7 + sources/plugins/preview/lang/bn.js | 7 + sources/plugins/preview/lang/bs.js | 7 + sources/plugins/preview/lang/ca.js | 7 + sources/plugins/preview/lang/cs.js | 7 + sources/plugins/preview/lang/cy.js | 7 + sources/plugins/preview/lang/da.js | 7 + sources/plugins/preview/lang/de.js | 7 + sources/plugins/preview/lang/el.js | 7 + sources/plugins/preview/lang/en-au.js | 7 + sources/plugins/preview/lang/en-ca.js | 7 + sources/plugins/preview/lang/en-gb.js | 7 + sources/plugins/preview/lang/en.js | 7 + sources/plugins/preview/lang/eo.js | 7 + sources/plugins/preview/lang/es.js | 7 + sources/plugins/preview/lang/et.js | 7 + sources/plugins/preview/lang/eu.js | 7 + sources/plugins/preview/lang/fa.js | 7 + sources/plugins/preview/lang/fi.js | 7 + sources/plugins/preview/lang/fo.js | 7 + sources/plugins/preview/lang/fr-ca.js | 7 + sources/plugins/preview/lang/fr.js | 7 + sources/plugins/preview/lang/gl.js | 7 + sources/plugins/preview/lang/gu.js | 7 + sources/plugins/preview/lang/he.js | 7 + sources/plugins/preview/lang/hi.js | 7 + sources/plugins/preview/lang/hr.js | 7 + sources/plugins/preview/lang/hu.js | 7 + sources/plugins/preview/lang/id.js | 7 + sources/plugins/preview/lang/is.js | 7 + sources/plugins/preview/lang/it.js | 7 + sources/plugins/preview/lang/ja.js | 7 + sources/plugins/preview/lang/ka.js | 7 + sources/plugins/preview/lang/km.js | 7 + sources/plugins/preview/lang/ko.js | 7 + sources/plugins/preview/lang/ku.js | 7 + sources/plugins/preview/lang/lt.js | 7 + sources/plugins/preview/lang/lv.js | 7 + sources/plugins/preview/lang/mk.js | 7 + sources/plugins/preview/lang/mn.js | 7 + sources/plugins/preview/lang/ms.js | 7 + sources/plugins/preview/lang/nb.js | 7 + sources/plugins/preview/lang/nl.js | 7 + sources/plugins/preview/lang/no.js | 7 + sources/plugins/preview/lang/pl.js | 7 + sources/plugins/preview/lang/pt-br.js | 7 + sources/plugins/preview/lang/pt.js | 7 + sources/plugins/preview/lang/ro.js | 7 + sources/plugins/preview/lang/ru.js | 7 + sources/plugins/preview/lang/si.js | 7 + sources/plugins/preview/lang/sk.js | 7 + sources/plugins/preview/lang/sl.js | 7 + sources/plugins/preview/lang/sq.js | 7 + sources/plugins/preview/lang/sr-latn.js | 7 + sources/plugins/preview/lang/sr.js | 7 + sources/plugins/preview/lang/sv.js | 7 + sources/plugins/preview/lang/th.js | 7 + sources/plugins/preview/lang/tr.js | 7 + sources/plugins/preview/lang/tt.js | 7 + sources/plugins/preview/lang/ug.js | 7 + sources/plugins/preview/lang/uk.js | 7 + sources/plugins/preview/lang/vi.js | 7 + sources/plugins/preview/lang/zh-cn.js | 7 + sources/plugins/preview/lang/zh.js | 7 + sources/plugins/preview/plugin.js | 145 + sources/plugins/preview/preview.html | 13 + sources/plugins/print/icons/hidpi/print.png | Bin 0 -> 1648 bytes sources/plugins/print/icons/print.png | Bin 0 -> 765 bytes sources/plugins/print/lang/af.js | 7 + sources/plugins/print/lang/ar.js | 7 + sources/plugins/print/lang/bg.js | 7 + sources/plugins/print/lang/bn.js | 7 + sources/plugins/print/lang/bs.js | 7 + sources/plugins/print/lang/ca.js | 7 + sources/plugins/print/lang/cs.js | 7 + sources/plugins/print/lang/cy.js | 7 + sources/plugins/print/lang/da.js | 7 + sources/plugins/print/lang/de.js | 7 + sources/plugins/print/lang/el.js | 7 + sources/plugins/print/lang/en-au.js | 7 + sources/plugins/print/lang/en-ca.js | 7 + sources/plugins/print/lang/en-gb.js | 7 + sources/plugins/print/lang/en.js | 7 + sources/plugins/print/lang/eo.js | 7 + sources/plugins/print/lang/es.js | 7 + sources/plugins/print/lang/et.js | 7 + sources/plugins/print/lang/eu.js | 7 + sources/plugins/print/lang/fa.js | 7 + sources/plugins/print/lang/fi.js | 7 + sources/plugins/print/lang/fo.js | 7 + sources/plugins/print/lang/fr-ca.js | 7 + sources/plugins/print/lang/fr.js | 7 + sources/plugins/print/lang/gl.js | 7 + sources/plugins/print/lang/gu.js | 7 + sources/plugins/print/lang/he.js | 7 + sources/plugins/print/lang/hi.js | 7 + sources/plugins/print/lang/hr.js | 7 + sources/plugins/print/lang/hu.js | 7 + sources/plugins/print/lang/id.js | 7 + sources/plugins/print/lang/is.js | 7 + sources/plugins/print/lang/it.js | 7 + sources/plugins/print/lang/ja.js | 7 + sources/plugins/print/lang/ka.js | 7 + sources/plugins/print/lang/km.js | 7 + sources/plugins/print/lang/ko.js | 7 + sources/plugins/print/lang/ku.js | 7 + sources/plugins/print/lang/lt.js | 7 + sources/plugins/print/lang/lv.js | 7 + sources/plugins/print/lang/mk.js | 7 + sources/plugins/print/lang/mn.js | 7 + sources/plugins/print/lang/ms.js | 7 + sources/plugins/print/lang/nb.js | 7 + sources/plugins/print/lang/nl.js | 7 + sources/plugins/print/lang/no.js | 7 + sources/plugins/print/lang/pl.js | 7 + sources/plugins/print/lang/pt-br.js | 7 + sources/plugins/print/lang/pt.js | 7 + sources/plugins/print/lang/ro.js | 7 + sources/plugins/print/lang/ru.js | 7 + sources/plugins/print/lang/si.js | 7 + sources/plugins/print/lang/sk.js | 7 + sources/plugins/print/lang/sl.js | 7 + sources/plugins/print/lang/sq.js | 7 + sources/plugins/print/lang/sr-latn.js | 7 + sources/plugins/print/lang/sr.js | 7 + sources/plugins/print/lang/sv.js | 7 + sources/plugins/print/lang/th.js | 7 + sources/plugins/print/lang/tr.js | 7 + sources/plugins/print/lang/tt.js | 7 + sources/plugins/print/lang/ug.js | 7 + sources/plugins/print/lang/uk.js | 7 + sources/plugins/print/lang/vi.js | 7 + sources/plugins/print/lang/zh-cn.js | 7 + sources/plugins/print/lang/zh.js | 7 + sources/plugins/print/plugin.js | 46 + .../removeformat/icons/hidpi/removeformat.png | Bin 0 -> 2119 bytes .../plugins/removeformat/icons/removeformat.png | Bin 0 -> 871 bytes sources/plugins/removeformat/lang/af.js | 7 + sources/plugins/removeformat/lang/ar.js | 7 + sources/plugins/removeformat/lang/bg.js | 7 + sources/plugins/removeformat/lang/bn.js | 7 + sources/plugins/removeformat/lang/bs.js | 7 + sources/plugins/removeformat/lang/ca.js | 7 + sources/plugins/removeformat/lang/cs.js | 7 + sources/plugins/removeformat/lang/cy.js | 7 + sources/plugins/removeformat/lang/da.js | 7 + sources/plugins/removeformat/lang/de.js | 7 + sources/plugins/removeformat/lang/el.js | 7 + sources/plugins/removeformat/lang/en-au.js | 7 + sources/plugins/removeformat/lang/en-ca.js | 7 + sources/plugins/removeformat/lang/en-gb.js | 7 + sources/plugins/removeformat/lang/en.js | 7 + sources/plugins/removeformat/lang/eo.js | 7 + sources/plugins/removeformat/lang/es.js | 7 + sources/plugins/removeformat/lang/et.js | 7 + sources/plugins/removeformat/lang/eu.js | 7 + sources/plugins/removeformat/lang/fa.js | 7 + sources/plugins/removeformat/lang/fi.js | 7 + sources/plugins/removeformat/lang/fo.js | 7 + sources/plugins/removeformat/lang/fr-ca.js | 7 + sources/plugins/removeformat/lang/fr.js | 7 + sources/plugins/removeformat/lang/gl.js | 7 + sources/plugins/removeformat/lang/gu.js | 7 + sources/plugins/removeformat/lang/he.js | 7 + sources/plugins/removeformat/lang/hi.js | 7 + sources/plugins/removeformat/lang/hr.js | 7 + sources/plugins/removeformat/lang/hu.js | 7 + sources/plugins/removeformat/lang/id.js | 7 + sources/plugins/removeformat/lang/is.js | 7 + sources/plugins/removeformat/lang/it.js | 7 + sources/plugins/removeformat/lang/ja.js | 7 + sources/plugins/removeformat/lang/ka.js | 7 + sources/plugins/removeformat/lang/km.js | 7 + sources/plugins/removeformat/lang/ko.js | 7 + sources/plugins/removeformat/lang/ku.js | 7 + sources/plugins/removeformat/lang/lt.js | 7 + sources/plugins/removeformat/lang/lv.js | 7 + sources/plugins/removeformat/lang/mk.js | 7 + sources/plugins/removeformat/lang/mn.js | 7 + sources/plugins/removeformat/lang/ms.js | 7 + sources/plugins/removeformat/lang/nb.js | 7 + sources/plugins/removeformat/lang/nl.js | 7 + sources/plugins/removeformat/lang/no.js | 7 + sources/plugins/removeformat/lang/pl.js | 7 + sources/plugins/removeformat/lang/pt-br.js | 7 + sources/plugins/removeformat/lang/pt.js | 7 + sources/plugins/removeformat/lang/ro.js | 7 + sources/plugins/removeformat/lang/ru.js | 7 + sources/plugins/removeformat/lang/si.js | 7 + sources/plugins/removeformat/lang/sk.js | 7 + sources/plugins/removeformat/lang/sl.js | 7 + sources/plugins/removeformat/lang/sq.js | 7 + sources/plugins/removeformat/lang/sr-latn.js | 7 + sources/plugins/removeformat/lang/sr.js | 7 + sources/plugins/removeformat/lang/sv.js | 7 + sources/plugins/removeformat/lang/th.js | 7 + sources/plugins/removeformat/lang/tr.js | 7 + sources/plugins/removeformat/lang/tt.js | 7 + sources/plugins/removeformat/lang/ug.js | 7 + sources/plugins/removeformat/lang/uk.js | 7 + sources/plugins/removeformat/lang/vi.js | 7 + sources/plugins/removeformat/lang/zh-cn.js | 7 + sources/plugins/removeformat/lang/zh.js | 7 + sources/plugins/removeformat/plugin.js | 193 ++ sources/plugins/resize/plugin.js | 187 ++ sources/plugins/richcombo/plugin.js | 434 +++ sources/plugins/save/icons/hidpi/save.png | Bin 0 -> 1648 bytes sources/plugins/save/icons/save.png | Bin 0 -> 716 bytes sources/plugins/save/lang/af.js | 7 + sources/plugins/save/lang/ar.js | 7 + sources/plugins/save/lang/bg.js | 7 + sources/plugins/save/lang/bn.js | 7 + sources/plugins/save/lang/bs.js | 7 + sources/plugins/save/lang/ca.js | 7 + sources/plugins/save/lang/cs.js | 7 + sources/plugins/save/lang/cy.js | 7 + sources/plugins/save/lang/da.js | 7 + sources/plugins/save/lang/de.js | 7 + sources/plugins/save/lang/el.js | 7 + sources/plugins/save/lang/en-au.js | 7 + sources/plugins/save/lang/en-ca.js | 7 + sources/plugins/save/lang/en-gb.js | 7 + sources/plugins/save/lang/en.js | 7 + sources/plugins/save/lang/eo.js | 7 + sources/plugins/save/lang/es.js | 7 + sources/plugins/save/lang/et.js | 7 + sources/plugins/save/lang/eu.js | 7 + sources/plugins/save/lang/fa.js | 7 + sources/plugins/save/lang/fi.js | 7 + sources/plugins/save/lang/fo.js | 7 + sources/plugins/save/lang/fr-ca.js | 7 + sources/plugins/save/lang/fr.js | 7 + sources/plugins/save/lang/gl.js | 7 + sources/plugins/save/lang/gu.js | 7 + sources/plugins/save/lang/he.js | 7 + sources/plugins/save/lang/hi.js | 7 + sources/plugins/save/lang/hr.js | 7 + sources/plugins/save/lang/hu.js | 7 + sources/plugins/save/lang/id.js | 7 + sources/plugins/save/lang/is.js | 7 + sources/plugins/save/lang/it.js | 7 + sources/plugins/save/lang/ja.js | 7 + sources/plugins/save/lang/ka.js | 7 + sources/plugins/save/lang/km.js | 7 + sources/plugins/save/lang/ko.js | 7 + sources/plugins/save/lang/ku.js | 7 + sources/plugins/save/lang/lt.js | 7 + sources/plugins/save/lang/lv.js | 7 + sources/plugins/save/lang/mk.js | 7 + sources/plugins/save/lang/mn.js | 7 + sources/plugins/save/lang/ms.js | 7 + sources/plugins/save/lang/nb.js | 7 + sources/plugins/save/lang/nl.js | 7 + sources/plugins/save/lang/no.js | 7 + sources/plugins/save/lang/pl.js | 7 + sources/plugins/save/lang/pt-br.js | 7 + sources/plugins/save/lang/pt.js | 7 + sources/plugins/save/lang/ro.js | 7 + sources/plugins/save/lang/ru.js | 7 + sources/plugins/save/lang/si.js | 7 + sources/plugins/save/lang/sk.js | 7 + sources/plugins/save/lang/sl.js | 7 + sources/plugins/save/lang/sq.js | 7 + sources/plugins/save/lang/sr-latn.js | 7 + sources/plugins/save/lang/sr.js | 7 + sources/plugins/save/lang/sv.js | 7 + sources/plugins/save/lang/th.js | 7 + sources/plugins/save/lang/tr.js | 7 + sources/plugins/save/lang/tt.js | 7 + sources/plugins/save/lang/ug.js | 7 + sources/plugins/save/lang/uk.js | 7 + sources/plugins/save/lang/vi.js | 7 + sources/plugins/save/lang/zh-cn.js | 7 + sources/plugins/save/lang/zh.js | 7 + sources/plugins/save/plugin.js | 67 + sources/plugins/scayt/CHANGELOG.md | 20 + sources/plugins/scayt/LICENSE.md | 28 + sources/plugins/scayt/README.md | 25 + sources/plugins/scayt/dialogs/options.js | 573 ++++ sources/plugins/scayt/dialogs/toolbar.css | 71 + sources/plugins/scayt/icons/hidpi/scayt.png | Bin 0 -> 2816 bytes sources/plugins/scayt/icons/scayt.png | Bin 0 -> 839 bytes sources/plugins/scayt/lang/af.js | 13 + sources/plugins/scayt/lang/ar.js | 13 + sources/plugins/scayt/lang/bg.js | 13 + sources/plugins/scayt/lang/bn.js | 13 + sources/plugins/scayt/lang/bs.js | 13 + sources/plugins/scayt/lang/ca.js | 13 + sources/plugins/scayt/lang/cs.js | 13 + sources/plugins/scayt/lang/cy.js | 13 + sources/plugins/scayt/lang/da.js | 13 + sources/plugins/scayt/lang/de.js | 13 + sources/plugins/scayt/lang/el.js | 13 + sources/plugins/scayt/lang/en-au.js | 13 + sources/plugins/scayt/lang/en-ca.js | 13 + sources/plugins/scayt/lang/en-gb.js | 13 + sources/plugins/scayt/lang/en.js | 13 + sources/plugins/scayt/lang/eo.js | 13 + sources/plugins/scayt/lang/es.js | 13 + sources/plugins/scayt/lang/et.js | 13 + sources/plugins/scayt/lang/eu.js | 13 + sources/plugins/scayt/lang/fa.js | 13 + sources/plugins/scayt/lang/fi.js | 13 + sources/plugins/scayt/lang/fo.js | 13 + sources/plugins/scayt/lang/fr-ca.js | 13 + sources/plugins/scayt/lang/fr.js | 13 + sources/plugins/scayt/lang/gl.js | 13 + sources/plugins/scayt/lang/gu.js | 13 + sources/plugins/scayt/lang/he.js | 13 + sources/plugins/scayt/lang/hi.js | 13 + sources/plugins/scayt/lang/hr.js | 13 + sources/plugins/scayt/lang/hu.js | 13 + sources/plugins/scayt/lang/is.js | 13 + sources/plugins/scayt/lang/it.js | 13 + sources/plugins/scayt/lang/ja.js | 13 + sources/plugins/scayt/lang/ka.js | 13 + sources/plugins/scayt/lang/km.js | 13 + sources/plugins/scayt/lang/ko.js | 13 + sources/plugins/scayt/lang/ku.js | 13 + sources/plugins/scayt/lang/lt.js | 13 + sources/plugins/scayt/lang/lv.js | 13 + sources/plugins/scayt/lang/mk.js | 13 + sources/plugins/scayt/lang/mn.js | 13 + sources/plugins/scayt/lang/ms.js | 13 + sources/plugins/scayt/lang/nb.js | 13 + sources/plugins/scayt/lang/nl.js | 13 + sources/plugins/scayt/lang/no.js | 13 + sources/plugins/scayt/lang/pl.js | 13 + sources/plugins/scayt/lang/pt-br.js | 13 + sources/plugins/scayt/lang/pt.js | 13 + sources/plugins/scayt/lang/ro.js | 13 + sources/plugins/scayt/lang/ru.js | 13 + sources/plugins/scayt/lang/sk.js | 13 + sources/plugins/scayt/lang/sl.js | 13 + sources/plugins/scayt/lang/sr-latn.js | 13 + sources/plugins/scayt/lang/sr.js | 13 + sources/plugins/scayt/lang/sv.js | 13 + sources/plugins/scayt/lang/th.js | 13 + sources/plugins/scayt/lang/tr.js | 13 + sources/plugins/scayt/lang/ug.js | 13 + sources/plugins/scayt/lang/uk.js | 13 + sources/plugins/scayt/lang/vi.js | 13 + sources/plugins/scayt/lang/zh-cn.js | 13 + sources/plugins/scayt/lang/zh.js | 13 + sources/plugins/scayt/plugin.js | 1800 +++++++++++ .../plugins/selectall/icons/hidpi/selectall.png | Bin 0 -> 1093 bytes sources/plugins/selectall/icons/selectall.png | Bin 0 -> 665 bytes sources/plugins/selectall/lang/af.js | 7 + sources/plugins/selectall/lang/ar.js | 7 + sources/plugins/selectall/lang/bg.js | 7 + sources/plugins/selectall/lang/bn.js | 7 + sources/plugins/selectall/lang/bs.js | 7 + sources/plugins/selectall/lang/ca.js | 7 + sources/plugins/selectall/lang/cs.js | 7 + sources/plugins/selectall/lang/cy.js | 7 + sources/plugins/selectall/lang/da.js | 7 + sources/plugins/selectall/lang/de.js | 7 + sources/plugins/selectall/lang/el.js | 7 + sources/plugins/selectall/lang/en-au.js | 7 + sources/plugins/selectall/lang/en-ca.js | 7 + sources/plugins/selectall/lang/en-gb.js | 7 + sources/plugins/selectall/lang/en.js | 7 + sources/plugins/selectall/lang/eo.js | 7 + sources/plugins/selectall/lang/es.js | 7 + sources/plugins/selectall/lang/et.js | 7 + sources/plugins/selectall/lang/eu.js | 7 + sources/plugins/selectall/lang/fa.js | 7 + sources/plugins/selectall/lang/fi.js | 7 + sources/plugins/selectall/lang/fo.js | 7 + sources/plugins/selectall/lang/fr-ca.js | 7 + sources/plugins/selectall/lang/fr.js | 7 + sources/plugins/selectall/lang/gl.js | 7 + sources/plugins/selectall/lang/gu.js | 7 + sources/plugins/selectall/lang/he.js | 7 + sources/plugins/selectall/lang/hi.js | 7 + sources/plugins/selectall/lang/hr.js | 7 + sources/plugins/selectall/lang/hu.js | 7 + sources/plugins/selectall/lang/id.js | 7 + sources/plugins/selectall/lang/is.js | 7 + sources/plugins/selectall/lang/it.js | 7 + sources/plugins/selectall/lang/ja.js | 7 + sources/plugins/selectall/lang/ka.js | 7 + sources/plugins/selectall/lang/km.js | 7 + sources/plugins/selectall/lang/ko.js | 7 + sources/plugins/selectall/lang/ku.js | 7 + sources/plugins/selectall/lang/lt.js | 7 + sources/plugins/selectall/lang/lv.js | 7 + sources/plugins/selectall/lang/mk.js | 7 + sources/plugins/selectall/lang/mn.js | 7 + sources/plugins/selectall/lang/ms.js | 7 + sources/plugins/selectall/lang/nb.js | 7 + sources/plugins/selectall/lang/nl.js | 7 + sources/plugins/selectall/lang/no.js | 7 + sources/plugins/selectall/lang/pl.js | 7 + sources/plugins/selectall/lang/pt-br.js | 7 + sources/plugins/selectall/lang/pt.js | 7 + sources/plugins/selectall/lang/ro.js | 7 + sources/plugins/selectall/lang/ru.js | 7 + sources/plugins/selectall/lang/si.js | 7 + sources/plugins/selectall/lang/sk.js | 7 + sources/plugins/selectall/lang/sl.js | 7 + sources/plugins/selectall/lang/sq.js | 7 + sources/plugins/selectall/lang/sr-latn.js | 7 + sources/plugins/selectall/lang/sr.js | 7 + sources/plugins/selectall/lang/sv.js | 7 + sources/plugins/selectall/lang/th.js | 7 + sources/plugins/selectall/lang/tr.js | 7 + sources/plugins/selectall/lang/tt.js | 7 + sources/plugins/selectall/lang/ug.js | 7 + sources/plugins/selectall/lang/uk.js | 7 + sources/plugins/selectall/lang/vi.js | 7 + sources/plugins/selectall/lang/zh-cn.js | 7 + sources/plugins/selectall/lang/zh.js | 7 + sources/plugins/selectall/plugin.js | 60 + .../showblocks/icons/hidpi/showblocks-rtl.png | Bin 0 -> 1853 bytes .../plugins/showblocks/icons/hidpi/showblocks.png | Bin 0 -> 1895 bytes .../plugins/showblocks/icons/showblocks-rtl.png | Bin 0 -> 691 bytes sources/plugins/showblocks/icons/showblocks.png | Bin 0 -> 701 bytes .../plugins/showblocks/images/block_address.png | Bin 0 -> 152 bytes .../plugins/showblocks/images/block_blockquote.png | Bin 0 -> 154 bytes sources/plugins/showblocks/images/block_div.png | Bin 0 -> 127 bytes sources/plugins/showblocks/images/block_h1.png | Bin 0 -> 120 bytes sources/plugins/showblocks/images/block_h2.png | Bin 0 -> 127 bytes sources/plugins/showblocks/images/block_h3.png | Bin 0 -> 123 bytes sources/plugins/showblocks/images/block_h4.png | Bin 0 -> 123 bytes sources/plugins/showblocks/images/block_h5.png | Bin 0 -> 126 bytes sources/plugins/showblocks/images/block_h6.png | Bin 0 -> 123 bytes sources/plugins/showblocks/images/block_p.png | Bin 0 -> 115 bytes sources/plugins/showblocks/images/block_pre.png | Bin 0 -> 128 bytes sources/plugins/showblocks/lang/af.js | 7 + sources/plugins/showblocks/lang/ar.js | 7 + sources/plugins/showblocks/lang/bg.js | 7 + sources/plugins/showblocks/lang/bn.js | 7 + sources/plugins/showblocks/lang/bs.js | 7 + sources/plugins/showblocks/lang/ca.js | 7 + sources/plugins/showblocks/lang/cs.js | 7 + sources/plugins/showblocks/lang/cy.js | 7 + sources/plugins/showblocks/lang/da.js | 7 + sources/plugins/showblocks/lang/de.js | 7 + sources/plugins/showblocks/lang/el.js | 7 + sources/plugins/showblocks/lang/en-au.js | 7 + sources/plugins/showblocks/lang/en-ca.js | 7 + sources/plugins/showblocks/lang/en-gb.js | 7 + sources/plugins/showblocks/lang/en.js | 7 + sources/plugins/showblocks/lang/eo.js | 7 + sources/plugins/showblocks/lang/es.js | 7 + sources/plugins/showblocks/lang/et.js | 7 + sources/plugins/showblocks/lang/eu.js | 7 + sources/plugins/showblocks/lang/fa.js | 7 + sources/plugins/showblocks/lang/fi.js | 7 + sources/plugins/showblocks/lang/fo.js | 7 + sources/plugins/showblocks/lang/fr-ca.js | 7 + sources/plugins/showblocks/lang/fr.js | 7 + sources/plugins/showblocks/lang/gl.js | 7 + sources/plugins/showblocks/lang/gu.js | 7 + sources/plugins/showblocks/lang/he.js | 7 + sources/plugins/showblocks/lang/hi.js | 7 + sources/plugins/showblocks/lang/hr.js | 7 + sources/plugins/showblocks/lang/hu.js | 7 + sources/plugins/showblocks/lang/id.js | 7 + sources/plugins/showblocks/lang/is.js | 7 + sources/plugins/showblocks/lang/it.js | 7 + sources/plugins/showblocks/lang/ja.js | 7 + sources/plugins/showblocks/lang/ka.js | 7 + sources/plugins/showblocks/lang/km.js | 7 + sources/plugins/showblocks/lang/ko.js | 7 + sources/plugins/showblocks/lang/ku.js | 7 + sources/plugins/showblocks/lang/lt.js | 7 + sources/plugins/showblocks/lang/lv.js | 7 + sources/plugins/showblocks/lang/mk.js | 7 + sources/plugins/showblocks/lang/mn.js | 7 + sources/plugins/showblocks/lang/ms.js | 7 + sources/plugins/showblocks/lang/nb.js | 7 + sources/plugins/showblocks/lang/nl.js | 7 + sources/plugins/showblocks/lang/no.js | 7 + sources/plugins/showblocks/lang/pl.js | 7 + sources/plugins/showblocks/lang/pt-br.js | 7 + sources/plugins/showblocks/lang/pt.js | 7 + sources/plugins/showblocks/lang/ro.js | 7 + sources/plugins/showblocks/lang/ru.js | 7 + sources/plugins/showblocks/lang/si.js | 7 + sources/plugins/showblocks/lang/sk.js | 7 + sources/plugins/showblocks/lang/sl.js | 7 + sources/plugins/showblocks/lang/sq.js | 7 + sources/plugins/showblocks/lang/sr-latn.js | 7 + sources/plugins/showblocks/lang/sr.js | 7 + sources/plugins/showblocks/lang/sv.js | 7 + sources/plugins/showblocks/lang/th.js | 7 + sources/plugins/showblocks/lang/tr.js | 7 + sources/plugins/showblocks/lang/tt.js | 7 + sources/plugins/showblocks/lang/ug.js | 7 + sources/plugins/showblocks/lang/uk.js | 7 + sources/plugins/showblocks/lang/vi.js | 7 + sources/plugins/showblocks/lang/zh-cn.js | 7 + sources/plugins/showblocks/lang/zh.js | 7 + sources/plugins/showblocks/plugin.js | 153 + sources/plugins/showborders/plugin.js | 174 + sources/plugins/smiley/dialogs/smiley.js | 193 ++ sources/plugins/smiley/icons/hidpi/smiley.png | Bin 0 -> 3073 bytes sources/plugins/smiley/icons/smiley.png | Bin 0 -> 916 bytes sources/plugins/smiley/images/angel_smile.gif | Bin 0 -> 1245 bytes sources/plugins/smiley/images/angel_smile.png | Bin 0 -> 1172 bytes sources/plugins/smiley/images/angry_smile.gif | Bin 0 -> 1219 bytes sources/plugins/smiley/images/angry_smile.png | Bin 0 -> 1220 bytes sources/plugins/smiley/images/broken_heart.gif | Bin 0 -> 732 bytes sources/plugins/smiley/images/broken_heart.png | Bin 0 -> 1139 bytes sources/plugins/smiley/images/confused_smile.gif | Bin 0 -> 1202 bytes sources/plugins/smiley/images/confused_smile.png | Bin 0 -> 1101 bytes sources/plugins/smiley/images/cry_smile.gif | Bin 0 -> 795 bytes sources/plugins/smiley/images/cry_smile.png | Bin 0 -> 1214 bytes sources/plugins/smiley/images/devil_smile.gif | Bin 0 -> 1239 bytes sources/plugins/smiley/images/devil_smile.png | Bin 0 -> 1220 bytes sources/plugins/smiley/images/embaressed_smile.gif | Bin 0 -> 786 bytes .../plugins/smiley/images/embarrassed_smile.gif | Bin 0 -> 786 bytes .../plugins/smiley/images/embarrassed_smile.png | Bin 0 -> 1145 bytes sources/plugins/smiley/images/envelope.gif | Bin 0 -> 506 bytes sources/plugins/smiley/images/envelope.png | Bin 0 -> 760 bytes sources/plugins/smiley/images/heart.gif | Bin 0 -> 692 bytes sources/plugins/smiley/images/heart.png | Bin 0 -> 999 bytes sources/plugins/smiley/images/kiss.gif | Bin 0 -> 683 bytes sources/plugins/smiley/images/kiss.png | Bin 0 -> 1003 bytes sources/plugins/smiley/images/lightbulb.gif | Bin 0 -> 660 bytes sources/plugins/smiley/images/lightbulb.png | Bin 0 -> 919 bytes sources/plugins/smiley/images/omg_smile.gif | Bin 0 -> 820 bytes sources/plugins/smiley/images/omg_smile.png | Bin 0 -> 1122 bytes sources/plugins/smiley/images/regular_smile.gif | Bin 0 -> 1209 bytes sources/plugins/smiley/images/regular_smile.png | Bin 0 -> 1084 bytes sources/plugins/smiley/images/sad_smile.gif | Bin 0 -> 782 bytes sources/plugins/smiley/images/sad_smile.png | Bin 0 -> 1115 bytes sources/plugins/smiley/images/shades_smile.gif | Bin 0 -> 1231 bytes sources/plugins/smiley/images/shades_smile.png | Bin 0 -> 1204 bytes sources/plugins/smiley/images/teeth_smile.gif | Bin 0 -> 1201 bytes sources/plugins/smiley/images/teeth_smile.png | Bin 0 -> 1183 bytes sources/plugins/smiley/images/thumbs_down.gif | Bin 0 -> 715 bytes sources/plugins/smiley/images/thumbs_down.png | Bin 0 -> 985 bytes sources/plugins/smiley/images/thumbs_up.gif | Bin 0 -> 714 bytes sources/plugins/smiley/images/thumbs_up.png | Bin 0 -> 959 bytes sources/plugins/smiley/images/tongue_smile.gif | Bin 0 -> 1210 bytes sources/plugins/smiley/images/tongue_smile.png | Bin 0 -> 1132 bytes sources/plugins/smiley/images/tounge_smile.gif | Bin 0 -> 1210 bytes .../smiley/images/whatchutalkingabout_smile.gif | Bin 0 -> 775 bytes .../smiley/images/whatchutalkingabout_smile.png | Bin 0 -> 1039 bytes sources/plugins/smiley/images/wink_smile.gif | Bin 0 -> 1202 bytes sources/plugins/smiley/images/wink_smile.png | Bin 0 -> 1114 bytes sources/plugins/smiley/lang/af.js | 9 + sources/plugins/smiley/lang/ar.js | 9 + sources/plugins/smiley/lang/bg.js | 9 + sources/plugins/smiley/lang/bn.js | 9 + sources/plugins/smiley/lang/bs.js | 9 + sources/plugins/smiley/lang/ca.js | 9 + sources/plugins/smiley/lang/cs.js | 9 + sources/plugins/smiley/lang/cy.js | 9 + sources/plugins/smiley/lang/da.js | 9 + sources/plugins/smiley/lang/de.js | 9 + sources/plugins/smiley/lang/el.js | 9 + sources/plugins/smiley/lang/en-au.js | 9 + sources/plugins/smiley/lang/en-ca.js | 9 + sources/plugins/smiley/lang/en-gb.js | 9 + sources/plugins/smiley/lang/en.js | 9 + sources/plugins/smiley/lang/eo.js | 9 + sources/plugins/smiley/lang/es.js | 9 + sources/plugins/smiley/lang/et.js | 9 + sources/plugins/smiley/lang/eu.js | 9 + sources/plugins/smiley/lang/fa.js | 9 + sources/plugins/smiley/lang/fi.js | 9 + sources/plugins/smiley/lang/fo.js | 9 + sources/plugins/smiley/lang/fr-ca.js | 9 + sources/plugins/smiley/lang/fr.js | 9 + sources/plugins/smiley/lang/gl.js | 9 + sources/plugins/smiley/lang/gu.js | 9 + sources/plugins/smiley/lang/he.js | 9 + sources/plugins/smiley/lang/hi.js | 9 + sources/plugins/smiley/lang/hr.js | 9 + sources/plugins/smiley/lang/hu.js | 9 + sources/plugins/smiley/lang/id.js | 9 + sources/plugins/smiley/lang/is.js | 9 + sources/plugins/smiley/lang/it.js | 9 + sources/plugins/smiley/lang/ja.js | 9 + sources/plugins/smiley/lang/ka.js | 9 + sources/plugins/smiley/lang/km.js | 9 + sources/plugins/smiley/lang/ko.js | 9 + sources/plugins/smiley/lang/ku.js | 9 + sources/plugins/smiley/lang/lt.js | 9 + sources/plugins/smiley/lang/lv.js | 9 + sources/plugins/smiley/lang/mk.js | 9 + sources/plugins/smiley/lang/mn.js | 9 + sources/plugins/smiley/lang/ms.js | 9 + sources/plugins/smiley/lang/nb.js | 9 + sources/plugins/smiley/lang/nl.js | 9 + sources/plugins/smiley/lang/no.js | 9 + sources/plugins/smiley/lang/pl.js | 9 + sources/plugins/smiley/lang/pt-br.js | 9 + sources/plugins/smiley/lang/pt.js | 9 + sources/plugins/smiley/lang/ro.js | 9 + sources/plugins/smiley/lang/ru.js | 9 + sources/plugins/smiley/lang/si.js | 9 + sources/plugins/smiley/lang/sk.js | 9 + sources/plugins/smiley/lang/sl.js | 9 + sources/plugins/smiley/lang/sq.js | 9 + sources/plugins/smiley/lang/sr-latn.js | 9 + sources/plugins/smiley/lang/sr.js | 9 + sources/plugins/smiley/lang/sv.js | 9 + sources/plugins/smiley/lang/th.js | 9 + sources/plugins/smiley/lang/tr.js | 9 + sources/plugins/smiley/lang/tt.js | 9 + sources/plugins/smiley/lang/ug.js | 9 + sources/plugins/smiley/lang/uk.js | 9 + sources/plugins/smiley/lang/vi.js | 9 + sources/plugins/smiley/lang/zh-cn.js | 9 + sources/plugins/smiley/lang/zh.js | 9 + sources/plugins/smiley/plugin.js | 98 + .../plugins/sourcearea/icons/hidpi/source-rtl.png | Bin 0 -> 1968 bytes sources/plugins/sourcearea/icons/hidpi/source.png | Bin 0 -> 1999 bytes sources/plugins/sourcearea/icons/source-rtl.png | Bin 0 -> 762 bytes sources/plugins/sourcearea/icons/source.png | Bin 0 -> 764 bytes sources/plugins/sourcearea/lang/af.js | 7 + sources/plugins/sourcearea/lang/ar.js | 7 + sources/plugins/sourcearea/lang/bg.js | 7 + sources/plugins/sourcearea/lang/bn.js | 7 + sources/plugins/sourcearea/lang/bs.js | 7 + sources/plugins/sourcearea/lang/ca.js | 7 + sources/plugins/sourcearea/lang/cs.js | 7 + sources/plugins/sourcearea/lang/cy.js | 7 + sources/plugins/sourcearea/lang/da.js | 7 + sources/plugins/sourcearea/lang/de.js | 7 + sources/plugins/sourcearea/lang/el.js | 7 + sources/plugins/sourcearea/lang/en-au.js | 7 + sources/plugins/sourcearea/lang/en-ca.js | 7 + sources/plugins/sourcearea/lang/en-gb.js | 7 + sources/plugins/sourcearea/lang/en.js | 7 + sources/plugins/sourcearea/lang/eo.js | 7 + sources/plugins/sourcearea/lang/es.js | 7 + sources/plugins/sourcearea/lang/et.js | 7 + sources/plugins/sourcearea/lang/eu.js | 7 + sources/plugins/sourcearea/lang/fa.js | 7 + sources/plugins/sourcearea/lang/fi.js | 7 + sources/plugins/sourcearea/lang/fo.js | 7 + sources/plugins/sourcearea/lang/fr-ca.js | 7 + sources/plugins/sourcearea/lang/fr.js | 7 + sources/plugins/sourcearea/lang/gl.js | 7 + sources/plugins/sourcearea/lang/gu.js | 7 + sources/plugins/sourcearea/lang/he.js | 7 + sources/plugins/sourcearea/lang/hi.js | 7 + sources/plugins/sourcearea/lang/hr.js | 7 + sources/plugins/sourcearea/lang/hu.js | 7 + sources/plugins/sourcearea/lang/id.js | 7 + sources/plugins/sourcearea/lang/is.js | 7 + sources/plugins/sourcearea/lang/it.js | 7 + sources/plugins/sourcearea/lang/ja.js | 7 + sources/plugins/sourcearea/lang/ka.js | 7 + sources/plugins/sourcearea/lang/km.js | 7 + sources/plugins/sourcearea/lang/ko.js | 7 + sources/plugins/sourcearea/lang/ku.js | 7 + sources/plugins/sourcearea/lang/lt.js | 7 + sources/plugins/sourcearea/lang/lv.js | 7 + sources/plugins/sourcearea/lang/mk.js | 7 + sources/plugins/sourcearea/lang/mn.js | 7 + sources/plugins/sourcearea/lang/ms.js | 7 + sources/plugins/sourcearea/lang/nb.js | 7 + sources/plugins/sourcearea/lang/nl.js | 7 + sources/plugins/sourcearea/lang/no.js | 7 + sources/plugins/sourcearea/lang/pl.js | 7 + sources/plugins/sourcearea/lang/pt-br.js | 7 + sources/plugins/sourcearea/lang/pt.js | 7 + sources/plugins/sourcearea/lang/ro.js | 7 + sources/plugins/sourcearea/lang/ru.js | 7 + sources/plugins/sourcearea/lang/si.js | 7 + sources/plugins/sourcearea/lang/sk.js | 7 + sources/plugins/sourcearea/lang/sl.js | 7 + sources/plugins/sourcearea/lang/sq.js | 7 + sources/plugins/sourcearea/lang/sr-latn.js | 7 + sources/plugins/sourcearea/lang/sr.js | 7 + sources/plugins/sourcearea/lang/sv.js | 7 + sources/plugins/sourcearea/lang/th.js | 7 + sources/plugins/sourcearea/lang/tr.js | 7 + sources/plugins/sourcearea/lang/tt.js | 7 + sources/plugins/sourcearea/lang/ug.js | 7 + sources/plugins/sourcearea/lang/uk.js | 7 + sources/plugins/sourcearea/lang/vi.js | 7 + sources/plugins/sourcearea/lang/zh-cn.js | 7 + sources/plugins/sourcearea/lang/zh.js | 7 + sources/plugins/sourcearea/plugin.js | 168 + .../dialogs/lang/_translationstatus.txt | 20 + sources/plugins/specialchar/dialogs/lang/af.js | 125 + sources/plugins/specialchar/dialogs/lang/ar.js | 125 + sources/plugins/specialchar/dialogs/lang/bg.js | 125 + sources/plugins/specialchar/dialogs/lang/ca.js | 125 + sources/plugins/specialchar/dialogs/lang/cs.js | 125 + sources/plugins/specialchar/dialogs/lang/cy.js | 125 + sources/plugins/specialchar/dialogs/lang/da.js | 125 + sources/plugins/specialchar/dialogs/lang/de.js | 125 + sources/plugins/specialchar/dialogs/lang/el.js | 125 + sources/plugins/specialchar/dialogs/lang/en-gb.js | 125 + sources/plugins/specialchar/dialogs/lang/en.js | 125 + sources/plugins/specialchar/dialogs/lang/eo.js | 125 + sources/plugins/specialchar/dialogs/lang/es.js | 125 + sources/plugins/specialchar/dialogs/lang/et.js | 125 + sources/plugins/specialchar/dialogs/lang/eu.js | 125 + sources/plugins/specialchar/dialogs/lang/fa.js | 125 + sources/plugins/specialchar/dialogs/lang/fi.js | 125 + sources/plugins/specialchar/dialogs/lang/fr-ca.js | 125 + sources/plugins/specialchar/dialogs/lang/fr.js | 125 + sources/plugins/specialchar/dialogs/lang/gl.js | 125 + sources/plugins/specialchar/dialogs/lang/he.js | 125 + sources/plugins/specialchar/dialogs/lang/hr.js | 125 + sources/plugins/specialchar/dialogs/lang/hu.js | 125 + sources/plugins/specialchar/dialogs/lang/id.js | 125 + sources/plugins/specialchar/dialogs/lang/it.js | 125 + sources/plugins/specialchar/dialogs/lang/ja.js | 125 + sources/plugins/specialchar/dialogs/lang/km.js | 125 + sources/plugins/specialchar/dialogs/lang/ko.js | 125 + sources/plugins/specialchar/dialogs/lang/ku.js | 125 + sources/plugins/specialchar/dialogs/lang/lt.js | 125 + sources/plugins/specialchar/dialogs/lang/lv.js | 125 + sources/plugins/specialchar/dialogs/lang/nb.js | 125 + sources/plugins/specialchar/dialogs/lang/nl.js | 125 + sources/plugins/specialchar/dialogs/lang/no.js | 125 + sources/plugins/specialchar/dialogs/lang/pl.js | 125 + sources/plugins/specialchar/dialogs/lang/pt-br.js | 125 + sources/plugins/specialchar/dialogs/lang/pt.js | 125 + sources/plugins/specialchar/dialogs/lang/ru.js | 125 + sources/plugins/specialchar/dialogs/lang/si.js | 125 + sources/plugins/specialchar/dialogs/lang/sk.js | 125 + sources/plugins/specialchar/dialogs/lang/sl.js | 125 + sources/plugins/specialchar/dialogs/lang/sq.js | 125 + sources/plugins/specialchar/dialogs/lang/sv.js | 125 + sources/plugins/specialchar/dialogs/lang/th.js | 125 + sources/plugins/specialchar/dialogs/lang/tr.js | 125 + sources/plugins/specialchar/dialogs/lang/tt.js | 125 + sources/plugins/specialchar/dialogs/lang/ug.js | 125 + sources/plugins/specialchar/dialogs/lang/uk.js | 125 + sources/plugins/specialchar/dialogs/lang/vi.js | 125 + sources/plugins/specialchar/dialogs/lang/zh-cn.js | 125 + sources/plugins/specialchar/dialogs/lang/zh.js | 125 + sources/plugins/specialchar/dialogs/specialchar.js | 297 ++ .../specialchar/icons/hidpi/specialchar.png | Bin 0 -> 2615 bytes sources/plugins/specialchar/icons/specialchar.png | Bin 0 -> 970 bytes .../specialchar/lang/_translationstatus.txt | 63 + sources/plugins/specialchar/lang/af.js | 9 + sources/plugins/specialchar/lang/ar.js | 9 + sources/plugins/specialchar/lang/bg.js | 9 + sources/plugins/specialchar/lang/bn.js | 9 + sources/plugins/specialchar/lang/bs.js | 9 + sources/plugins/specialchar/lang/ca.js | 9 + sources/plugins/specialchar/lang/cs.js | 9 + sources/plugins/specialchar/lang/cy.js | 9 + sources/plugins/specialchar/lang/da.js | 9 + sources/plugins/specialchar/lang/de.js | 9 + sources/plugins/specialchar/lang/el.js | 9 + sources/plugins/specialchar/lang/en-au.js | 9 + sources/plugins/specialchar/lang/en-ca.js | 9 + sources/plugins/specialchar/lang/en-gb.js | 9 + sources/plugins/specialchar/lang/en.js | 9 + sources/plugins/specialchar/lang/eo.js | 9 + sources/plugins/specialchar/lang/es.js | 9 + sources/plugins/specialchar/lang/et.js | 9 + sources/plugins/specialchar/lang/eu.js | 9 + sources/plugins/specialchar/lang/fa.js | 9 + sources/plugins/specialchar/lang/fi.js | 9 + sources/plugins/specialchar/lang/fo.js | 9 + sources/plugins/specialchar/lang/fr-ca.js | 9 + sources/plugins/specialchar/lang/fr.js | 9 + sources/plugins/specialchar/lang/gl.js | 9 + sources/plugins/specialchar/lang/gu.js | 9 + sources/plugins/specialchar/lang/he.js | 9 + sources/plugins/specialchar/lang/hi.js | 9 + sources/plugins/specialchar/lang/hr.js | 9 + sources/plugins/specialchar/lang/hu.js | 9 + sources/plugins/specialchar/lang/id.js | 9 + sources/plugins/specialchar/lang/is.js | 9 + sources/plugins/specialchar/lang/it.js | 9 + sources/plugins/specialchar/lang/ja.js | 9 + sources/plugins/specialchar/lang/ka.js | 9 + sources/plugins/specialchar/lang/km.js | 9 + sources/plugins/specialchar/lang/ko.js | 9 + sources/plugins/specialchar/lang/ku.js | 9 + sources/plugins/specialchar/lang/lt.js | 9 + sources/plugins/specialchar/lang/lv.js | 9 + sources/plugins/specialchar/lang/mk.js | 9 + sources/plugins/specialchar/lang/mn.js | 9 + sources/plugins/specialchar/lang/ms.js | 9 + sources/plugins/specialchar/lang/nb.js | 9 + sources/plugins/specialchar/lang/nl.js | 9 + sources/plugins/specialchar/lang/no.js | 9 + sources/plugins/specialchar/lang/pl.js | 9 + sources/plugins/specialchar/lang/pt-br.js | 9 + sources/plugins/specialchar/lang/pt.js | 9 + sources/plugins/specialchar/lang/ro.js | 9 + sources/plugins/specialchar/lang/ru.js | 9 + sources/plugins/specialchar/lang/si.js | 9 + sources/plugins/specialchar/lang/sk.js | 9 + sources/plugins/specialchar/lang/sl.js | 9 + sources/plugins/specialchar/lang/sq.js | 9 + sources/plugins/specialchar/lang/sr-latn.js | 9 + sources/plugins/specialchar/lang/sr.js | 9 + sources/plugins/specialchar/lang/sv.js | 9 + sources/plugins/specialchar/lang/th.js | 9 + sources/plugins/specialchar/lang/tr.js | 9 + sources/plugins/specialchar/lang/tt.js | 9 + sources/plugins/specialchar/lang/ug.js | 9 + sources/plugins/specialchar/lang/uk.js | 9 + sources/plugins/specialchar/lang/vi.js | 9 + sources/plugins/specialchar/lang/zh-cn.js | 9 + sources/plugins/specialchar/lang/zh.js | 9 + sources/plugins/specialchar/plugin.js | 83 + sources/plugins/stylescombo/lang/af.js | 11 + sources/plugins/stylescombo/lang/ar.js | 11 + sources/plugins/stylescombo/lang/bg.js | 11 + sources/plugins/stylescombo/lang/bn.js | 11 + sources/plugins/stylescombo/lang/bs.js | 11 + sources/plugins/stylescombo/lang/ca.js | 11 + sources/plugins/stylescombo/lang/cs.js | 11 + sources/plugins/stylescombo/lang/cy.js | 11 + sources/plugins/stylescombo/lang/da.js | 11 + sources/plugins/stylescombo/lang/de.js | 11 + sources/plugins/stylescombo/lang/el.js | 11 + sources/plugins/stylescombo/lang/en-au.js | 11 + sources/plugins/stylescombo/lang/en-ca.js | 11 + sources/plugins/stylescombo/lang/en-gb.js | 11 + sources/plugins/stylescombo/lang/en.js | 11 + sources/plugins/stylescombo/lang/eo.js | 11 + sources/plugins/stylescombo/lang/es.js | 11 + sources/plugins/stylescombo/lang/et.js | 11 + sources/plugins/stylescombo/lang/eu.js | 11 + sources/plugins/stylescombo/lang/fa.js | 11 + sources/plugins/stylescombo/lang/fi.js | 11 + sources/plugins/stylescombo/lang/fo.js | 11 + sources/plugins/stylescombo/lang/fr-ca.js | 11 + sources/plugins/stylescombo/lang/fr.js | 11 + sources/plugins/stylescombo/lang/gl.js | 11 + sources/plugins/stylescombo/lang/gu.js | 11 + sources/plugins/stylescombo/lang/he.js | 11 + sources/plugins/stylescombo/lang/hi.js | 11 + sources/plugins/stylescombo/lang/hr.js | 11 + sources/plugins/stylescombo/lang/hu.js | 11 + sources/plugins/stylescombo/lang/id.js | 11 + sources/plugins/stylescombo/lang/is.js | 11 + sources/plugins/stylescombo/lang/it.js | 11 + sources/plugins/stylescombo/lang/ja.js | 11 + sources/plugins/stylescombo/lang/ka.js | 11 + sources/plugins/stylescombo/lang/km.js | 11 + sources/plugins/stylescombo/lang/ko.js | 11 + sources/plugins/stylescombo/lang/ku.js | 11 + sources/plugins/stylescombo/lang/lt.js | 11 + sources/plugins/stylescombo/lang/lv.js | 11 + sources/plugins/stylescombo/lang/mk.js | 11 + sources/plugins/stylescombo/lang/mn.js | 11 + sources/plugins/stylescombo/lang/ms.js | 11 + sources/plugins/stylescombo/lang/nb.js | 11 + sources/plugins/stylescombo/lang/nl.js | 11 + sources/plugins/stylescombo/lang/no.js | 11 + sources/plugins/stylescombo/lang/pl.js | 11 + sources/plugins/stylescombo/lang/pt-br.js | 11 + sources/plugins/stylescombo/lang/pt.js | 11 + sources/plugins/stylescombo/lang/ro.js | 11 + sources/plugins/stylescombo/lang/ru.js | 11 + sources/plugins/stylescombo/lang/si.js | 11 + sources/plugins/stylescombo/lang/sk.js | 11 + sources/plugins/stylescombo/lang/sl.js | 11 + sources/plugins/stylescombo/lang/sq.js | 11 + sources/plugins/stylescombo/lang/sr-latn.js | 11 + sources/plugins/stylescombo/lang/sr.js | 11 + sources/plugins/stylescombo/lang/sv.js | 11 + sources/plugins/stylescombo/lang/th.js | 11 + sources/plugins/stylescombo/lang/tr.js | 11 + sources/plugins/stylescombo/lang/tt.js | 11 + sources/plugins/stylescombo/lang/ug.js | 11 + sources/plugins/stylescombo/lang/uk.js | 11 + sources/plugins/stylescombo/lang/vi.js | 11 + sources/plugins/stylescombo/lang/zh-cn.js | 11 + sources/plugins/stylescombo/lang/zh.js | 11 + sources/plugins/stylescombo/plugin.js | 193 ++ sources/plugins/tab/plugin.js | 302 ++ sources/plugins/table/dialogs/table.js | 541 ++++ sources/plugins/table/icons/hidpi/table.png | Bin 0 -> 1006 bytes sources/plugins/table/icons/table.png | Bin 0 -> 535 bytes sources/plugins/table/lang/af.js | 74 + sources/plugins/table/lang/ar.js | 74 + sources/plugins/table/lang/bg.js | 74 + sources/plugins/table/lang/bn.js | 74 + sources/plugins/table/lang/bs.js | 74 + sources/plugins/table/lang/ca.js | 74 + sources/plugins/table/lang/cs.js | 74 + sources/plugins/table/lang/cy.js | 74 + sources/plugins/table/lang/da.js | 74 + sources/plugins/table/lang/de.js | 74 + sources/plugins/table/lang/el.js | 74 + sources/plugins/table/lang/en-au.js | 74 + sources/plugins/table/lang/en-ca.js | 74 + sources/plugins/table/lang/en-gb.js | 74 + sources/plugins/table/lang/en.js | 74 + sources/plugins/table/lang/eo.js | 74 + sources/plugins/table/lang/es.js | 74 + sources/plugins/table/lang/et.js | 74 + sources/plugins/table/lang/eu.js | 74 + sources/plugins/table/lang/fa.js | 74 + sources/plugins/table/lang/fi.js | 74 + sources/plugins/table/lang/fo.js | 74 + sources/plugins/table/lang/fr-ca.js | 74 + sources/plugins/table/lang/fr.js | 74 + sources/plugins/table/lang/gl.js | 74 + sources/plugins/table/lang/gu.js | 74 + sources/plugins/table/lang/he.js | 74 + sources/plugins/table/lang/hi.js | 74 + sources/plugins/table/lang/hr.js | 74 + sources/plugins/table/lang/hu.js | 74 + sources/plugins/table/lang/id.js | 74 + sources/plugins/table/lang/is.js | 74 + sources/plugins/table/lang/it.js | 74 + sources/plugins/table/lang/ja.js | 74 + sources/plugins/table/lang/ka.js | 74 + sources/plugins/table/lang/km.js | 74 + sources/plugins/table/lang/ko.js | 74 + sources/plugins/table/lang/ku.js | 74 + sources/plugins/table/lang/lt.js | 74 + sources/plugins/table/lang/lv.js | 74 + sources/plugins/table/lang/mk.js | 74 + sources/plugins/table/lang/mn.js | 74 + sources/plugins/table/lang/ms.js | 74 + sources/plugins/table/lang/nb.js | 74 + sources/plugins/table/lang/nl.js | 74 + sources/plugins/table/lang/no.js | 74 + sources/plugins/table/lang/pl.js | 74 + sources/plugins/table/lang/pt-br.js | 74 + sources/plugins/table/lang/pt.js | 74 + sources/plugins/table/lang/ro.js | 74 + sources/plugins/table/lang/ru.js | 74 + sources/plugins/table/lang/si.js | 74 + sources/plugins/table/lang/sk.js | 74 + sources/plugins/table/lang/sl.js | 74 + sources/plugins/table/lang/sq.js | 74 + sources/plugins/table/lang/sr-latn.js | 74 + sources/plugins/table/lang/sr.js | 74 + sources/plugins/table/lang/sv.js | 74 + sources/plugins/table/lang/th.js | 74 + sources/plugins/table/lang/tr.js | 74 + sources/plugins/table/lang/tt.js | 74 + sources/plugins/table/lang/ug.js | 74 + sources/plugins/table/lang/uk.js | 74 + sources/plugins/table/lang/vi.js | 74 + sources/plugins/table/lang/zh-cn.js | 74 + sources/plugins/table/lang/zh.js | 74 + sources/plugins/table/plugin.js | 109 + sources/plugins/tabletools/dialogs/tableCell.js | 474 +++ sources/plugins/tabletools/plugin.js | 1005 ++++++ sources/plugins/templates/dialogs/templates.css | 84 + sources/plugins/templates/dialogs/templates.js | 199 ++ .../templates/icons/hidpi/templates-rtl.png | Bin 0 -> 1387 bytes .../plugins/templates/icons/hidpi/templates.png | Bin 0 -> 1387 bytes sources/plugins/templates/icons/templates-rtl.png | Bin 0 -> 639 bytes sources/plugins/templates/icons/templates.png | Bin 0 -> 639 bytes sources/plugins/templates/lang/af.js | 12 + sources/plugins/templates/lang/ar.js | 12 + sources/plugins/templates/lang/bg.js | 12 + sources/plugins/templates/lang/bn.js | 12 + sources/plugins/templates/lang/bs.js | 12 + sources/plugins/templates/lang/ca.js | 12 + sources/plugins/templates/lang/cs.js | 12 + sources/plugins/templates/lang/cy.js | 12 + sources/plugins/templates/lang/da.js | 12 + sources/plugins/templates/lang/de.js | 12 + sources/plugins/templates/lang/el.js | 12 + sources/plugins/templates/lang/en-au.js | 12 + sources/plugins/templates/lang/en-ca.js | 12 + sources/plugins/templates/lang/en-gb.js | 12 + sources/plugins/templates/lang/en.js | 12 + sources/plugins/templates/lang/eo.js | 12 + sources/plugins/templates/lang/es.js | 12 + sources/plugins/templates/lang/et.js | 12 + sources/plugins/templates/lang/eu.js | 12 + sources/plugins/templates/lang/fa.js | 12 + sources/plugins/templates/lang/fi.js | 12 + sources/plugins/templates/lang/fo.js | 12 + sources/plugins/templates/lang/fr-ca.js | 12 + sources/plugins/templates/lang/fr.js | 12 + sources/plugins/templates/lang/gl.js | 12 + sources/plugins/templates/lang/gu.js | 12 + sources/plugins/templates/lang/he.js | 12 + sources/plugins/templates/lang/hi.js | 12 + sources/plugins/templates/lang/hr.js | 12 + sources/plugins/templates/lang/hu.js | 12 + sources/plugins/templates/lang/id.js | 12 + sources/plugins/templates/lang/is.js | 12 + sources/plugins/templates/lang/it.js | 12 + sources/plugins/templates/lang/ja.js | 12 + sources/plugins/templates/lang/ka.js | 12 + sources/plugins/templates/lang/km.js | 12 + sources/plugins/templates/lang/ko.js | 12 + sources/plugins/templates/lang/ku.js | 12 + sources/plugins/templates/lang/lt.js | 12 + sources/plugins/templates/lang/lv.js | 12 + sources/plugins/templates/lang/mk.js | 12 + sources/plugins/templates/lang/mn.js | 12 + sources/plugins/templates/lang/ms.js | 12 + sources/plugins/templates/lang/nb.js | 12 + sources/plugins/templates/lang/nl.js | 12 + sources/plugins/templates/lang/no.js | 12 + sources/plugins/templates/lang/pl.js | 12 + sources/plugins/templates/lang/pt-br.js | 12 + sources/plugins/templates/lang/pt.js | 12 + sources/plugins/templates/lang/ro.js | 12 + sources/plugins/templates/lang/ru.js | 12 + sources/plugins/templates/lang/si.js | 12 + sources/plugins/templates/lang/sk.js | 12 + sources/plugins/templates/lang/sl.js | 12 + sources/plugins/templates/lang/sq.js | 12 + sources/plugins/templates/lang/sr-latn.js | 12 + sources/plugins/templates/lang/sr.js | 12 + sources/plugins/templates/lang/sv.js | 12 + sources/plugins/templates/lang/th.js | 12 + sources/plugins/templates/lang/tr.js | 12 + sources/plugins/templates/lang/tt.js | 12 + sources/plugins/templates/lang/ug.js | 12 + sources/plugins/templates/lang/uk.js | 12 + sources/plugins/templates/lang/vi.js | 12 + sources/plugins/templates/lang/zh-cn.js | 12 + sources/plugins/templates/lang/zh.js | 12 + sources/plugins/templates/plugin.js | 93 + sources/plugins/templates/templates/default.js | 87 + .../templates/templates/images/template1.gif | Bin 0 -> 375 bytes .../templates/templates/images/template2.gif | Bin 0 -> 333 bytes .../templates/templates/images/template3.gif | Bin 0 -> 422 bytes sources/plugins/toolbar/lang/af.js | 22 + sources/plugins/toolbar/lang/ar.js | 22 + sources/plugins/toolbar/lang/bg.js | 22 + sources/plugins/toolbar/lang/bn.js | 22 + sources/plugins/toolbar/lang/bs.js | 22 + sources/plugins/toolbar/lang/ca.js | 22 + sources/plugins/toolbar/lang/cs.js | 22 + sources/plugins/toolbar/lang/cy.js | 22 + sources/plugins/toolbar/lang/da.js | 22 + sources/plugins/toolbar/lang/de.js | 22 + sources/plugins/toolbar/lang/el.js | 22 + sources/plugins/toolbar/lang/en-au.js | 22 + sources/plugins/toolbar/lang/en-ca.js | 22 + sources/plugins/toolbar/lang/en-gb.js | 22 + sources/plugins/toolbar/lang/en.js | 22 + sources/plugins/toolbar/lang/eo.js | 22 + sources/plugins/toolbar/lang/es.js | 22 + sources/plugins/toolbar/lang/et.js | 22 + sources/plugins/toolbar/lang/eu.js | 22 + sources/plugins/toolbar/lang/fa.js | 22 + sources/plugins/toolbar/lang/fi.js | 22 + sources/plugins/toolbar/lang/fo.js | 22 + sources/plugins/toolbar/lang/fr-ca.js | 22 + sources/plugins/toolbar/lang/fr.js | 22 + sources/plugins/toolbar/lang/gl.js | 22 + sources/plugins/toolbar/lang/gu.js | 22 + sources/plugins/toolbar/lang/he.js | 22 + sources/plugins/toolbar/lang/hi.js | 22 + sources/plugins/toolbar/lang/hr.js | 22 + sources/plugins/toolbar/lang/hu.js | 22 + sources/plugins/toolbar/lang/id.js | 22 + sources/plugins/toolbar/lang/is.js | 22 + sources/plugins/toolbar/lang/it.js | 22 + sources/plugins/toolbar/lang/ja.js | 22 + sources/plugins/toolbar/lang/ka.js | 22 + sources/plugins/toolbar/lang/km.js | 22 + sources/plugins/toolbar/lang/ko.js | 22 + sources/plugins/toolbar/lang/ku.js | 22 + sources/plugins/toolbar/lang/lt.js | 22 + sources/plugins/toolbar/lang/lv.js | 22 + sources/plugins/toolbar/lang/mk.js | 22 + sources/plugins/toolbar/lang/mn.js | 22 + sources/plugins/toolbar/lang/ms.js | 22 + sources/plugins/toolbar/lang/nb.js | 22 + sources/plugins/toolbar/lang/nl.js | 22 + sources/plugins/toolbar/lang/no.js | 22 + sources/plugins/toolbar/lang/pl.js | 22 + sources/plugins/toolbar/lang/pt-br.js | 22 + sources/plugins/toolbar/lang/pt.js | 22 + sources/plugins/toolbar/lang/ro.js | 22 + sources/plugins/toolbar/lang/ru.js | 22 + sources/plugins/toolbar/lang/si.js | 22 + sources/plugins/toolbar/lang/sk.js | 22 + sources/plugins/toolbar/lang/sl.js | 22 + sources/plugins/toolbar/lang/sq.js | 22 + sources/plugins/toolbar/lang/sr-latn.js | 22 + sources/plugins/toolbar/lang/sr.js | 22 + sources/plugins/toolbar/lang/sv.js | 22 + sources/plugins/toolbar/lang/th.js | 22 + sources/plugins/toolbar/lang/tr.js | 22 + sources/plugins/toolbar/lang/tt.js | 22 + sources/plugins/toolbar/lang/ug.js | 22 + sources/plugins/toolbar/lang/uk.js | 22 + sources/plugins/toolbar/lang/vi.js | 22 + sources/plugins/toolbar/lang/zh-cn.js | 22 + sources/plugins/toolbar/lang/zh.js | 22 + sources/plugins/toolbar/plugin.js | 803 +++++ sources/plugins/toolbar/samples/toolbar.html | 235 ++ sources/plugins/undo/dev/snapshot.html | 86 + sources/plugins/undo/icons/hidpi/redo-rtl.png | Bin 0 -> 1869 bytes sources/plugins/undo/icons/hidpi/redo.png | Bin 0 -> 1783 bytes sources/plugins/undo/icons/hidpi/undo-rtl.png | Bin 0 -> 1783 bytes sources/plugins/undo/icons/hidpi/undo.png | Bin 0 -> 1869 bytes sources/plugins/undo/icons/redo-rtl.png | Bin 0 -> 849 bytes sources/plugins/undo/icons/redo.png | Bin 0 -> 842 bytes sources/plugins/undo/icons/undo-rtl.png | Bin 0 -> 842 bytes sources/plugins/undo/icons/undo.png | Bin 0 -> 850 bytes sources/plugins/undo/lang/af.js | 8 + sources/plugins/undo/lang/ar.js | 8 + sources/plugins/undo/lang/bg.js | 8 + sources/plugins/undo/lang/bn.js | 8 + sources/plugins/undo/lang/bs.js | 8 + sources/plugins/undo/lang/ca.js | 8 + sources/plugins/undo/lang/cs.js | 8 + sources/plugins/undo/lang/cy.js | 8 + sources/plugins/undo/lang/da.js | 8 + sources/plugins/undo/lang/de.js | 8 + sources/plugins/undo/lang/el.js | 8 + sources/plugins/undo/lang/en-au.js | 8 + sources/plugins/undo/lang/en-ca.js | 8 + sources/plugins/undo/lang/en-gb.js | 8 + sources/plugins/undo/lang/en.js | 8 + sources/plugins/undo/lang/eo.js | 8 + sources/plugins/undo/lang/es.js | 8 + sources/plugins/undo/lang/et.js | 8 + sources/plugins/undo/lang/eu.js | 8 + sources/plugins/undo/lang/fa.js | 8 + sources/plugins/undo/lang/fi.js | 8 + sources/plugins/undo/lang/fo.js | 8 + sources/plugins/undo/lang/fr-ca.js | 8 + sources/plugins/undo/lang/fr.js | 8 + sources/plugins/undo/lang/gl.js | 8 + sources/plugins/undo/lang/gu.js | 8 + sources/plugins/undo/lang/he.js | 8 + sources/plugins/undo/lang/hi.js | 8 + sources/plugins/undo/lang/hr.js | 8 + sources/plugins/undo/lang/hu.js | 8 + sources/plugins/undo/lang/id.js | 8 + sources/plugins/undo/lang/is.js | 8 + sources/plugins/undo/lang/it.js | 8 + sources/plugins/undo/lang/ja.js | 8 + sources/plugins/undo/lang/ka.js | 8 + sources/plugins/undo/lang/km.js | 8 + sources/plugins/undo/lang/ko.js | 8 + sources/plugins/undo/lang/ku.js | 8 + sources/plugins/undo/lang/lt.js | 8 + sources/plugins/undo/lang/lv.js | 8 + sources/plugins/undo/lang/mk.js | 8 + sources/plugins/undo/lang/mn.js | 8 + sources/plugins/undo/lang/ms.js | 8 + sources/plugins/undo/lang/nb.js | 8 + sources/plugins/undo/lang/nl.js | 8 + sources/plugins/undo/lang/no.js | 8 + sources/plugins/undo/lang/pl.js | 8 + sources/plugins/undo/lang/pt-br.js | 8 + sources/plugins/undo/lang/pt.js | 8 + sources/plugins/undo/lang/ro.js | 8 + sources/plugins/undo/lang/ru.js | 8 + sources/plugins/undo/lang/si.js | 8 + sources/plugins/undo/lang/sk.js | 8 + sources/plugins/undo/lang/sl.js | 8 + sources/plugins/undo/lang/sq.js | 8 + sources/plugins/undo/lang/sr-latn.js | 8 + sources/plugins/undo/lang/sr.js | 8 + sources/plugins/undo/lang/sv.js | 8 + sources/plugins/undo/lang/th.js | 8 + sources/plugins/undo/lang/tr.js | 8 + sources/plugins/undo/lang/tt.js | 8 + sources/plugins/undo/lang/ug.js | 8 + sources/plugins/undo/lang/uk.js | 8 + sources/plugins/undo/lang/vi.js | 8 + sources/plugins/undo/lang/zh-cn.js | 8 + sources/plugins/undo/lang/zh.js | 8 + sources/plugins/undo/plugin.js | 1328 ++++++++ sources/plugins/wsc/LICENSE.md | 28 + sources/plugins/wsc/README.md | 25 + sources/plugins/wsc/dialogs/ciframe.html | 66 + sources/plugins/wsc/dialogs/tmpFrameset.html | 52 + sources/plugins/wsc/dialogs/wsc.css | 82 + sources/plugins/wsc/dialogs/wsc.js | 3152 ++++++++++++++++++ sources/plugins/wsc/dialogs/wsc_ie.js | 176 + sources/plugins/wsc/icons/hidpi/spellchecker.png | Bin 0 -> 2816 bytes sources/plugins/wsc/icons/spellchecker.png | Bin 0 -> 836 bytes sources/plugins/wsc/lang/af.js | 24 + sources/plugins/wsc/lang/ar.js | 24 + sources/plugins/wsc/lang/bg.js | 24 + sources/plugins/wsc/lang/bn.js | 24 + sources/plugins/wsc/lang/bs.js | 24 + sources/plugins/wsc/lang/ca.js | 24 + sources/plugins/wsc/lang/cs.js | 24 + sources/plugins/wsc/lang/cy.js | 24 + sources/plugins/wsc/lang/da.js | 24 + sources/plugins/wsc/lang/de.js | 24 + sources/plugins/wsc/lang/el.js | 24 + sources/plugins/wsc/lang/en-au.js | 24 + sources/plugins/wsc/lang/en-ca.js | 24 + sources/plugins/wsc/lang/en-gb.js | 24 + sources/plugins/wsc/lang/en.js | 24 + sources/plugins/wsc/lang/eo.js | 24 + sources/plugins/wsc/lang/es.js | 24 + sources/plugins/wsc/lang/et.js | 24 + sources/plugins/wsc/lang/eu.js | 24 + sources/plugins/wsc/lang/fa.js | 24 + sources/plugins/wsc/lang/fi.js | 24 + sources/plugins/wsc/lang/fo.js | 24 + sources/plugins/wsc/lang/fr-ca.js | 24 + sources/plugins/wsc/lang/fr.js | 24 + sources/plugins/wsc/lang/gl.js | 24 + sources/plugins/wsc/lang/gu.js | 24 + sources/plugins/wsc/lang/he.js | 24 + sources/plugins/wsc/lang/hi.js | 24 + sources/plugins/wsc/lang/hr.js | 24 + sources/plugins/wsc/lang/hu.js | 24 + sources/plugins/wsc/lang/is.js | 24 + sources/plugins/wsc/lang/it.js | 24 + sources/plugins/wsc/lang/ja.js | 24 + sources/plugins/wsc/lang/ka.js | 24 + sources/plugins/wsc/lang/km.js | 24 + sources/plugins/wsc/lang/ko.js | 24 + sources/plugins/wsc/lang/ku.js | 24 + sources/plugins/wsc/lang/lt.js | 24 + sources/plugins/wsc/lang/lv.js | 24 + sources/plugins/wsc/lang/mk.js | 24 + sources/plugins/wsc/lang/mn.js | 24 + sources/plugins/wsc/lang/ms.js | 24 + sources/plugins/wsc/lang/nb.js | 24 + sources/plugins/wsc/lang/nl.js | 24 + sources/plugins/wsc/lang/no.js | 24 + sources/plugins/wsc/lang/pl.js | 24 + sources/plugins/wsc/lang/pt-br.js | 24 + sources/plugins/wsc/lang/pt.js | 24 + sources/plugins/wsc/lang/ro.js | 24 + sources/plugins/wsc/lang/ru.js | 24 + sources/plugins/wsc/lang/sk.js | 24 + sources/plugins/wsc/lang/sl.js | 24 + sources/plugins/wsc/lang/sr-latn.js | 24 + sources/plugins/wsc/lang/sr.js | 24 + sources/plugins/wsc/lang/sv.js | 24 + sources/plugins/wsc/lang/th.js | 24 + sources/plugins/wsc/lang/tr.js | 24 + sources/plugins/wsc/lang/ug.js | 24 + sources/plugins/wsc/lang/uk.js | 24 + sources/plugins/wsc/lang/vi.js | 24 + sources/plugins/wsc/lang/zh-cn.js | 24 + sources/plugins/wsc/lang/zh.js | 24 + sources/plugins/wsc/plugin.js | 142 + sources/plugins/wysiwygarea/plugin.js | 708 ++++ sources/plugins/wysiwygarea/samples/fullpage.html | 80 + 3543 files changed, 114237 insertions(+) create mode 100644 sources/plugins/a11yhelp/dialogs/a11yhelp.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/_translationstatus.txt create mode 100644 sources/plugins/a11yhelp/dialogs/lang/af.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/ar.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/bg.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/ca.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/cs.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/cy.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/da.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/de.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/el.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/en-gb.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/en.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/eo.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/es.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/et.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/eu.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/fa.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/fi.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/fo.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/fr-ca.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/fr.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/gl.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/gu.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/he.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/hi.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/hr.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/hu.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/id.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/it.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/ja.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/km.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/ko.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/ku.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/lt.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/lv.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/mk.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/mn.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/nb.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/nl.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/no.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/pl.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/pt-br.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/pt.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/ro.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/ru.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/si.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/sk.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/sl.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/sq.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/sr-latn.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/sr.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/sv.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/th.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/tr.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/tt.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/ug.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/uk.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/vi.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/zh-cn.js create mode 100644 sources/plugins/a11yhelp/dialogs/lang/zh.js create mode 100644 sources/plugins/a11yhelp/plugin.js create mode 100644 sources/plugins/about/dialogs/about.js create mode 100644 sources/plugins/about/dialogs/hidpi/logo_ckeditor.png create mode 100644 sources/plugins/about/dialogs/logo_ckeditor.png create mode 100644 sources/plugins/about/icons/about.png create mode 100644 sources/plugins/about/icons/hidpi/about.png create mode 100644 sources/plugins/about/lang/af.js create mode 100644 sources/plugins/about/lang/ar.js create mode 100644 sources/plugins/about/lang/bg.js create mode 100644 sources/plugins/about/lang/bn.js create mode 100644 sources/plugins/about/lang/bs.js create mode 100644 sources/plugins/about/lang/ca.js create mode 100644 sources/plugins/about/lang/cs.js create mode 100644 sources/plugins/about/lang/cy.js create mode 100644 sources/plugins/about/lang/da.js create mode 100644 sources/plugins/about/lang/de.js create mode 100644 sources/plugins/about/lang/el.js create mode 100644 sources/plugins/about/lang/en-au.js create mode 100644 sources/plugins/about/lang/en-ca.js create mode 100644 sources/plugins/about/lang/en-gb.js create mode 100644 sources/plugins/about/lang/en.js create mode 100644 sources/plugins/about/lang/eo.js create mode 100644 sources/plugins/about/lang/es.js create mode 100644 sources/plugins/about/lang/et.js create mode 100644 sources/plugins/about/lang/eu.js create mode 100644 sources/plugins/about/lang/fa.js create mode 100644 sources/plugins/about/lang/fi.js create mode 100644 sources/plugins/about/lang/fo.js create mode 100644 sources/plugins/about/lang/fr-ca.js create mode 100644 sources/plugins/about/lang/fr.js create mode 100644 sources/plugins/about/lang/gl.js create mode 100644 sources/plugins/about/lang/gu.js create mode 100644 sources/plugins/about/lang/he.js create mode 100644 sources/plugins/about/lang/hi.js create mode 100644 sources/plugins/about/lang/hr.js create mode 100644 sources/plugins/about/lang/hu.js create mode 100644 sources/plugins/about/lang/id.js create mode 100644 sources/plugins/about/lang/is.js create mode 100644 sources/plugins/about/lang/it.js create mode 100644 sources/plugins/about/lang/ja.js create mode 100644 sources/plugins/about/lang/ka.js create mode 100644 sources/plugins/about/lang/km.js create mode 100644 sources/plugins/about/lang/ko.js create mode 100644 sources/plugins/about/lang/ku.js create mode 100644 sources/plugins/about/lang/lt.js create mode 100644 sources/plugins/about/lang/lv.js create mode 100644 sources/plugins/about/lang/mk.js create mode 100644 sources/plugins/about/lang/mn.js create mode 100644 sources/plugins/about/lang/ms.js create mode 100644 sources/plugins/about/lang/nb.js create mode 100644 sources/plugins/about/lang/nl.js create mode 100644 sources/plugins/about/lang/no.js create mode 100644 sources/plugins/about/lang/pl.js create mode 100644 sources/plugins/about/lang/pt-br.js create mode 100644 sources/plugins/about/lang/pt.js create mode 100644 sources/plugins/about/lang/ro.js create mode 100644 sources/plugins/about/lang/ru.js create mode 100644 sources/plugins/about/lang/si.js create mode 100644 sources/plugins/about/lang/sk.js create mode 100644 sources/plugins/about/lang/sl.js create mode 100644 sources/plugins/about/lang/sq.js create mode 100644 sources/plugins/about/lang/sr-latn.js create mode 100644 sources/plugins/about/lang/sr.js create mode 100644 sources/plugins/about/lang/sv.js create mode 100644 sources/plugins/about/lang/th.js create mode 100644 sources/plugins/about/lang/tr.js create mode 100644 sources/plugins/about/lang/tt.js create mode 100644 sources/plugins/about/lang/ug.js create mode 100644 sources/plugins/about/lang/uk.js create mode 100644 sources/plugins/about/lang/vi.js create mode 100644 sources/plugins/about/lang/zh-cn.js create mode 100644 sources/plugins/about/lang/zh.js create mode 100644 sources/plugins/about/plugin.js create mode 100644 sources/plugins/basicstyles/icons/bold.png create mode 100644 sources/plugins/basicstyles/icons/hidpi/bold.png create mode 100644 sources/plugins/basicstyles/icons/hidpi/italic.png create mode 100644 sources/plugins/basicstyles/icons/hidpi/strike.png create mode 100644 sources/plugins/basicstyles/icons/hidpi/subscript.png create mode 100644 sources/plugins/basicstyles/icons/hidpi/superscript.png create mode 100644 sources/plugins/basicstyles/icons/hidpi/underline.png create mode 100644 sources/plugins/basicstyles/icons/italic.png create mode 100644 sources/plugins/basicstyles/icons/strike.png create mode 100644 sources/plugins/basicstyles/icons/subscript.png create mode 100644 sources/plugins/basicstyles/icons/superscript.png create mode 100644 sources/plugins/basicstyles/icons/underline.png create mode 100644 sources/plugins/basicstyles/lang/af.js create mode 100644 sources/plugins/basicstyles/lang/ar.js create mode 100644 sources/plugins/basicstyles/lang/bg.js create mode 100644 sources/plugins/basicstyles/lang/bn.js create mode 100644 sources/plugins/basicstyles/lang/bs.js create mode 100644 sources/plugins/basicstyles/lang/ca.js create mode 100644 sources/plugins/basicstyles/lang/cs.js create mode 100644 sources/plugins/basicstyles/lang/cy.js create mode 100644 sources/plugins/basicstyles/lang/da.js create mode 100644 sources/plugins/basicstyles/lang/de.js create mode 100644 sources/plugins/basicstyles/lang/el.js create mode 100644 sources/plugins/basicstyles/lang/en-au.js create mode 100644 sources/plugins/basicstyles/lang/en-ca.js create mode 100644 sources/plugins/basicstyles/lang/en-gb.js create mode 100644 sources/plugins/basicstyles/lang/en.js create mode 100644 sources/plugins/basicstyles/lang/eo.js create mode 100644 sources/plugins/basicstyles/lang/es.js create mode 100644 sources/plugins/basicstyles/lang/et.js create mode 100644 sources/plugins/basicstyles/lang/eu.js create mode 100644 sources/plugins/basicstyles/lang/fa.js create mode 100644 sources/plugins/basicstyles/lang/fi.js create mode 100644 sources/plugins/basicstyles/lang/fo.js create mode 100644 sources/plugins/basicstyles/lang/fr-ca.js create mode 100644 sources/plugins/basicstyles/lang/fr.js create mode 100644 sources/plugins/basicstyles/lang/gl.js create mode 100644 sources/plugins/basicstyles/lang/gu.js create mode 100644 sources/plugins/basicstyles/lang/he.js create mode 100644 sources/plugins/basicstyles/lang/hi.js create mode 100644 sources/plugins/basicstyles/lang/hr.js create mode 100644 sources/plugins/basicstyles/lang/hu.js create mode 100644 sources/plugins/basicstyles/lang/id.js create mode 100644 sources/plugins/basicstyles/lang/is.js create mode 100644 sources/plugins/basicstyles/lang/it.js create mode 100644 sources/plugins/basicstyles/lang/ja.js create mode 100644 sources/plugins/basicstyles/lang/ka.js create mode 100644 sources/plugins/basicstyles/lang/km.js create mode 100644 sources/plugins/basicstyles/lang/ko.js create mode 100644 sources/plugins/basicstyles/lang/ku.js create mode 100644 sources/plugins/basicstyles/lang/lt.js create mode 100644 sources/plugins/basicstyles/lang/lv.js create mode 100644 sources/plugins/basicstyles/lang/mk.js create mode 100644 sources/plugins/basicstyles/lang/mn.js create mode 100644 sources/plugins/basicstyles/lang/ms.js create mode 100644 sources/plugins/basicstyles/lang/nb.js create mode 100644 sources/plugins/basicstyles/lang/nl.js create mode 100644 sources/plugins/basicstyles/lang/no.js create mode 100644 sources/plugins/basicstyles/lang/pl.js create mode 100644 sources/plugins/basicstyles/lang/pt-br.js create mode 100644 sources/plugins/basicstyles/lang/pt.js create mode 100644 sources/plugins/basicstyles/lang/ro.js create mode 100644 sources/plugins/basicstyles/lang/ru.js create mode 100644 sources/plugins/basicstyles/lang/si.js create mode 100644 sources/plugins/basicstyles/lang/sk.js create mode 100644 sources/plugins/basicstyles/lang/sl.js create mode 100644 sources/plugins/basicstyles/lang/sq.js create mode 100644 sources/plugins/basicstyles/lang/sr-latn.js create mode 100644 sources/plugins/basicstyles/lang/sr.js create mode 100644 sources/plugins/basicstyles/lang/sv.js create mode 100644 sources/plugins/basicstyles/lang/th.js create mode 100644 sources/plugins/basicstyles/lang/tr.js create mode 100644 sources/plugins/basicstyles/lang/tt.js create mode 100644 sources/plugins/basicstyles/lang/ug.js create mode 100644 sources/plugins/basicstyles/lang/uk.js create mode 100644 sources/plugins/basicstyles/lang/vi.js create mode 100644 sources/plugins/basicstyles/lang/zh-cn.js create mode 100644 sources/plugins/basicstyles/lang/zh.js create mode 100644 sources/plugins/basicstyles/plugin.js create mode 100644 sources/plugins/bidi/icons/bidiltr.png create mode 100644 sources/plugins/bidi/icons/bidirtl.png create mode 100644 sources/plugins/bidi/icons/hidpi/bidiltr.png create mode 100644 sources/plugins/bidi/icons/hidpi/bidirtl.png create mode 100644 sources/plugins/bidi/lang/af.js create mode 100644 sources/plugins/bidi/lang/ar.js create mode 100644 sources/plugins/bidi/lang/bg.js create mode 100644 sources/plugins/bidi/lang/bn.js create mode 100644 sources/plugins/bidi/lang/bs.js create mode 100644 sources/plugins/bidi/lang/ca.js create mode 100644 sources/plugins/bidi/lang/cs.js create mode 100644 sources/plugins/bidi/lang/cy.js create mode 100644 sources/plugins/bidi/lang/da.js create mode 100644 sources/plugins/bidi/lang/de.js create mode 100644 sources/plugins/bidi/lang/el.js create mode 100644 sources/plugins/bidi/lang/en-au.js create mode 100644 sources/plugins/bidi/lang/en-ca.js create mode 100644 sources/plugins/bidi/lang/en-gb.js create mode 100644 sources/plugins/bidi/lang/en.js create mode 100644 sources/plugins/bidi/lang/eo.js create mode 100644 sources/plugins/bidi/lang/es.js create mode 100644 sources/plugins/bidi/lang/et.js create mode 100644 sources/plugins/bidi/lang/eu.js create mode 100644 sources/plugins/bidi/lang/fa.js create mode 100644 sources/plugins/bidi/lang/fi.js create mode 100644 sources/plugins/bidi/lang/fo.js create mode 100644 sources/plugins/bidi/lang/fr-ca.js create mode 100644 sources/plugins/bidi/lang/fr.js create mode 100644 sources/plugins/bidi/lang/gl.js create mode 100644 sources/plugins/bidi/lang/gu.js create mode 100644 sources/plugins/bidi/lang/he.js create mode 100644 sources/plugins/bidi/lang/hi.js create mode 100644 sources/plugins/bidi/lang/hr.js create mode 100644 sources/plugins/bidi/lang/hu.js create mode 100644 sources/plugins/bidi/lang/id.js create mode 100644 sources/plugins/bidi/lang/is.js create mode 100644 sources/plugins/bidi/lang/it.js create mode 100644 sources/plugins/bidi/lang/ja.js create mode 100644 sources/plugins/bidi/lang/ka.js create mode 100644 sources/plugins/bidi/lang/km.js create mode 100644 sources/plugins/bidi/lang/ko.js create mode 100644 sources/plugins/bidi/lang/ku.js create mode 100644 sources/plugins/bidi/lang/lt.js create mode 100644 sources/plugins/bidi/lang/lv.js create mode 100644 sources/plugins/bidi/lang/mk.js create mode 100644 sources/plugins/bidi/lang/mn.js create mode 100644 sources/plugins/bidi/lang/ms.js create mode 100644 sources/plugins/bidi/lang/nb.js create mode 100644 sources/plugins/bidi/lang/nl.js create mode 100644 sources/plugins/bidi/lang/no.js create mode 100644 sources/plugins/bidi/lang/pl.js create mode 100644 sources/plugins/bidi/lang/pt-br.js create mode 100644 sources/plugins/bidi/lang/pt.js create mode 100644 sources/plugins/bidi/lang/ro.js create mode 100644 sources/plugins/bidi/lang/ru.js create mode 100644 sources/plugins/bidi/lang/si.js create mode 100644 sources/plugins/bidi/lang/sk.js create mode 100644 sources/plugins/bidi/lang/sl.js create mode 100644 sources/plugins/bidi/lang/sq.js create mode 100644 sources/plugins/bidi/lang/sr-latn.js create mode 100644 sources/plugins/bidi/lang/sr.js create mode 100644 sources/plugins/bidi/lang/sv.js create mode 100644 sources/plugins/bidi/lang/th.js create mode 100644 sources/plugins/bidi/lang/tr.js create mode 100644 sources/plugins/bidi/lang/tt.js create mode 100644 sources/plugins/bidi/lang/ug.js create mode 100644 sources/plugins/bidi/lang/uk.js create mode 100644 sources/plugins/bidi/lang/vi.js create mode 100644 sources/plugins/bidi/lang/zh-cn.js create mode 100644 sources/plugins/bidi/lang/zh.js create mode 100644 sources/plugins/bidi/plugin.js create mode 100644 sources/plugins/blockquote/icons/blockquote.png create mode 100644 sources/plugins/blockquote/icons/hidpi/blockquote.png create mode 100644 sources/plugins/blockquote/lang/af.js create mode 100644 sources/plugins/blockquote/lang/ar.js create mode 100644 sources/plugins/blockquote/lang/bg.js create mode 100644 sources/plugins/blockquote/lang/bn.js create mode 100644 sources/plugins/blockquote/lang/bs.js create mode 100644 sources/plugins/blockquote/lang/ca.js create mode 100644 sources/plugins/blockquote/lang/cs.js create mode 100644 sources/plugins/blockquote/lang/cy.js create mode 100644 sources/plugins/blockquote/lang/da.js create mode 100644 sources/plugins/blockquote/lang/de.js create mode 100644 sources/plugins/blockquote/lang/el.js create mode 100644 sources/plugins/blockquote/lang/en-au.js create mode 100644 sources/plugins/blockquote/lang/en-ca.js create mode 100644 sources/plugins/blockquote/lang/en-gb.js create mode 100644 sources/plugins/blockquote/lang/en.js create mode 100644 sources/plugins/blockquote/lang/eo.js create mode 100644 sources/plugins/blockquote/lang/es.js create mode 100644 sources/plugins/blockquote/lang/et.js create mode 100644 sources/plugins/blockquote/lang/eu.js create mode 100644 sources/plugins/blockquote/lang/fa.js create mode 100644 sources/plugins/blockquote/lang/fi.js create mode 100644 sources/plugins/blockquote/lang/fo.js create mode 100644 sources/plugins/blockquote/lang/fr-ca.js create mode 100644 sources/plugins/blockquote/lang/fr.js create mode 100644 sources/plugins/blockquote/lang/gl.js create mode 100644 sources/plugins/blockquote/lang/gu.js create mode 100644 sources/plugins/blockquote/lang/he.js create mode 100644 sources/plugins/blockquote/lang/hi.js create mode 100644 sources/plugins/blockquote/lang/hr.js create mode 100644 sources/plugins/blockquote/lang/hu.js create mode 100644 sources/plugins/blockquote/lang/id.js create mode 100644 sources/plugins/blockquote/lang/is.js create mode 100644 sources/plugins/blockquote/lang/it.js create mode 100644 sources/plugins/blockquote/lang/ja.js create mode 100644 sources/plugins/blockquote/lang/ka.js create mode 100644 sources/plugins/blockquote/lang/km.js create mode 100644 sources/plugins/blockquote/lang/ko.js create mode 100644 sources/plugins/blockquote/lang/ku.js create mode 100644 sources/plugins/blockquote/lang/lt.js create mode 100644 sources/plugins/blockquote/lang/lv.js create mode 100644 sources/plugins/blockquote/lang/mk.js create mode 100644 sources/plugins/blockquote/lang/mn.js create mode 100644 sources/plugins/blockquote/lang/ms.js create mode 100644 sources/plugins/blockquote/lang/nb.js create mode 100644 sources/plugins/blockquote/lang/nl.js create mode 100644 sources/plugins/blockquote/lang/no.js create mode 100644 sources/plugins/blockquote/lang/pl.js create mode 100644 sources/plugins/blockquote/lang/pt-br.js create mode 100644 sources/plugins/blockquote/lang/pt.js create mode 100644 sources/plugins/blockquote/lang/ro.js create mode 100644 sources/plugins/blockquote/lang/ru.js create mode 100644 sources/plugins/blockquote/lang/si.js create mode 100644 sources/plugins/blockquote/lang/sk.js create mode 100644 sources/plugins/blockquote/lang/sl.js create mode 100644 sources/plugins/blockquote/lang/sq.js create mode 100644 sources/plugins/blockquote/lang/sr-latn.js create mode 100644 sources/plugins/blockquote/lang/sr.js create mode 100644 sources/plugins/blockquote/lang/sv.js create mode 100644 sources/plugins/blockquote/lang/th.js create mode 100644 sources/plugins/blockquote/lang/tr.js create mode 100644 sources/plugins/blockquote/lang/tt.js create mode 100644 sources/plugins/blockquote/lang/ug.js create mode 100644 sources/plugins/blockquote/lang/uk.js create mode 100644 sources/plugins/blockquote/lang/vi.js create mode 100644 sources/plugins/blockquote/lang/zh-cn.js create mode 100644 sources/plugins/blockquote/lang/zh.js create mode 100644 sources/plugins/blockquote/plugin.js create mode 100644 sources/plugins/button/lang/af.js create mode 100644 sources/plugins/button/lang/ar.js create mode 100644 sources/plugins/button/lang/bg.js create mode 100644 sources/plugins/button/lang/ca.js create mode 100644 sources/plugins/button/lang/cs.js create mode 100644 sources/plugins/button/lang/da.js create mode 100644 sources/plugins/button/lang/de.js create mode 100644 sources/plugins/button/lang/el.js create mode 100644 sources/plugins/button/lang/en-gb.js create mode 100644 sources/plugins/button/lang/en.js create mode 100644 sources/plugins/button/lang/eo.js create mode 100644 sources/plugins/button/lang/es.js create mode 100644 sources/plugins/button/lang/eu.js create mode 100644 sources/plugins/button/lang/fa.js create mode 100644 sources/plugins/button/lang/fi.js create mode 100644 sources/plugins/button/lang/fr.js create mode 100644 sources/plugins/button/lang/gl.js create mode 100644 sources/plugins/button/lang/he.js create mode 100644 sources/plugins/button/lang/hu.js create mode 100644 sources/plugins/button/lang/id.js create mode 100644 sources/plugins/button/lang/it.js create mode 100644 sources/plugins/button/lang/ja.js create mode 100644 sources/plugins/button/lang/km.js create mode 100644 sources/plugins/button/lang/ko.js create mode 100644 sources/plugins/button/lang/ku.js create mode 100644 sources/plugins/button/lang/lt.js create mode 100644 sources/plugins/button/lang/nb.js create mode 100644 sources/plugins/button/lang/nl.js create mode 100644 sources/plugins/button/lang/pl.js create mode 100644 sources/plugins/button/lang/pt-br.js create mode 100644 sources/plugins/button/lang/pt.js create mode 100644 sources/plugins/button/lang/ro.js create mode 100644 sources/plugins/button/lang/ru.js create mode 100644 sources/plugins/button/lang/sk.js create mode 100644 sources/plugins/button/lang/sl.js create mode 100644 sources/plugins/button/lang/sq.js create mode 100644 sources/plugins/button/lang/sv.js create mode 100644 sources/plugins/button/lang/tr.js create mode 100644 sources/plugins/button/lang/tt.js create mode 100644 sources/plugins/button/lang/ug.js create mode 100644 sources/plugins/button/lang/uk.js create mode 100644 sources/plugins/button/lang/vi.js create mode 100644 sources/plugins/button/lang/zh-cn.js create mode 100644 sources/plugins/button/lang/zh.js create mode 100644 sources/plugins/button/plugin.js create mode 100644 sources/plugins/clipboard/dev/clipboard.html create mode 100644 sources/plugins/clipboard/dev/console.js create mode 100644 sources/plugins/clipboard/dev/dnd.html create mode 100644 sources/plugins/clipboard/dialogs/paste.js create mode 100644 sources/plugins/clipboard/icons/copy-rtl.png create mode 100644 sources/plugins/clipboard/icons/copy.png create mode 100644 sources/plugins/clipboard/icons/cut-rtl.png create mode 100644 sources/plugins/clipboard/icons/cut.png create mode 100644 sources/plugins/clipboard/icons/hidpi/copy-rtl.png create mode 100644 sources/plugins/clipboard/icons/hidpi/copy.png create mode 100644 sources/plugins/clipboard/icons/hidpi/cut-rtl.png create mode 100644 sources/plugins/clipboard/icons/hidpi/cut.png create mode 100644 sources/plugins/clipboard/icons/hidpi/paste-rtl.png create mode 100644 sources/plugins/clipboard/icons/hidpi/paste.png create mode 100644 sources/plugins/clipboard/icons/paste-rtl.png create mode 100644 sources/plugins/clipboard/icons/paste.png create mode 100644 sources/plugins/clipboard/lang/af.js create mode 100644 sources/plugins/clipboard/lang/ar.js create mode 100644 sources/plugins/clipboard/lang/bg.js create mode 100644 sources/plugins/clipboard/lang/bn.js create mode 100644 sources/plugins/clipboard/lang/bs.js create mode 100644 sources/plugins/clipboard/lang/ca.js create mode 100644 sources/plugins/clipboard/lang/cs.js create mode 100644 sources/plugins/clipboard/lang/cy.js create mode 100644 sources/plugins/clipboard/lang/da.js create mode 100644 sources/plugins/clipboard/lang/de.js create mode 100644 sources/plugins/clipboard/lang/el.js create mode 100644 sources/plugins/clipboard/lang/en-au.js create mode 100644 sources/plugins/clipboard/lang/en-ca.js create mode 100644 sources/plugins/clipboard/lang/en-gb.js create mode 100644 sources/plugins/clipboard/lang/en.js create mode 100644 sources/plugins/clipboard/lang/eo.js create mode 100644 sources/plugins/clipboard/lang/es.js create mode 100644 sources/plugins/clipboard/lang/et.js create mode 100644 sources/plugins/clipboard/lang/eu.js create mode 100644 sources/plugins/clipboard/lang/fa.js create mode 100644 sources/plugins/clipboard/lang/fi.js create mode 100644 sources/plugins/clipboard/lang/fo.js create mode 100644 sources/plugins/clipboard/lang/fr-ca.js create mode 100644 sources/plugins/clipboard/lang/fr.js create mode 100644 sources/plugins/clipboard/lang/gl.js create mode 100644 sources/plugins/clipboard/lang/gu.js create mode 100644 sources/plugins/clipboard/lang/he.js create mode 100644 sources/plugins/clipboard/lang/hi.js create mode 100644 sources/plugins/clipboard/lang/hr.js create mode 100644 sources/plugins/clipboard/lang/hu.js create mode 100644 sources/plugins/clipboard/lang/id.js create mode 100644 sources/plugins/clipboard/lang/is.js create mode 100644 sources/plugins/clipboard/lang/it.js create mode 100644 sources/plugins/clipboard/lang/ja.js create mode 100644 sources/plugins/clipboard/lang/ka.js create mode 100644 sources/plugins/clipboard/lang/km.js create mode 100644 sources/plugins/clipboard/lang/ko.js create mode 100644 sources/plugins/clipboard/lang/ku.js create mode 100644 sources/plugins/clipboard/lang/lt.js create mode 100644 sources/plugins/clipboard/lang/lv.js create mode 100644 sources/plugins/clipboard/lang/mk.js create mode 100644 sources/plugins/clipboard/lang/mn.js create mode 100644 sources/plugins/clipboard/lang/ms.js create mode 100644 sources/plugins/clipboard/lang/nb.js create mode 100644 sources/plugins/clipboard/lang/nl.js create mode 100644 sources/plugins/clipboard/lang/no.js create mode 100644 sources/plugins/clipboard/lang/pl.js create mode 100644 sources/plugins/clipboard/lang/pt-br.js create mode 100644 sources/plugins/clipboard/lang/pt.js create mode 100644 sources/plugins/clipboard/lang/ro.js create mode 100644 sources/plugins/clipboard/lang/ru.js create mode 100644 sources/plugins/clipboard/lang/si.js create mode 100644 sources/plugins/clipboard/lang/sk.js create mode 100644 sources/plugins/clipboard/lang/sl.js create mode 100644 sources/plugins/clipboard/lang/sq.js create mode 100644 sources/plugins/clipboard/lang/sr-latn.js create mode 100644 sources/plugins/clipboard/lang/sr.js create mode 100644 sources/plugins/clipboard/lang/sv.js create mode 100644 sources/plugins/clipboard/lang/th.js create mode 100644 sources/plugins/clipboard/lang/tr.js create mode 100644 sources/plugins/clipboard/lang/tt.js create mode 100644 sources/plugins/clipboard/lang/ug.js create mode 100644 sources/plugins/clipboard/lang/uk.js create mode 100644 sources/plugins/clipboard/lang/vi.js create mode 100644 sources/plugins/clipboard/lang/zh-cn.js create mode 100644 sources/plugins/clipboard/lang/zh.js create mode 100644 sources/plugins/clipboard/plugin.js create mode 100644 sources/plugins/colorbutton/icons/bgcolor.png create mode 100644 sources/plugins/colorbutton/icons/hidpi/bgcolor.png create mode 100644 sources/plugins/colorbutton/icons/hidpi/textcolor.png create mode 100644 sources/plugins/colorbutton/icons/textcolor.png create mode 100644 sources/plugins/colorbutton/lang/af.js create mode 100644 sources/plugins/colorbutton/lang/ar.js create mode 100644 sources/plugins/colorbutton/lang/bg.js create mode 100644 sources/plugins/colorbutton/lang/bn.js create mode 100644 sources/plugins/colorbutton/lang/bs.js create mode 100644 sources/plugins/colorbutton/lang/ca.js create mode 100644 sources/plugins/colorbutton/lang/cs.js create mode 100644 sources/plugins/colorbutton/lang/cy.js create mode 100644 sources/plugins/colorbutton/lang/da.js create mode 100644 sources/plugins/colorbutton/lang/de.js create mode 100644 sources/plugins/colorbutton/lang/el.js create mode 100644 sources/plugins/colorbutton/lang/en-au.js create mode 100644 sources/plugins/colorbutton/lang/en-ca.js create mode 100644 sources/plugins/colorbutton/lang/en-gb.js create mode 100644 sources/plugins/colorbutton/lang/en.js create mode 100644 sources/plugins/colorbutton/lang/eo.js create mode 100644 sources/plugins/colorbutton/lang/es.js create mode 100644 sources/plugins/colorbutton/lang/et.js create mode 100644 sources/plugins/colorbutton/lang/eu.js create mode 100644 sources/plugins/colorbutton/lang/fa.js create mode 100644 sources/plugins/colorbutton/lang/fi.js create mode 100644 sources/plugins/colorbutton/lang/fo.js create mode 100644 sources/plugins/colorbutton/lang/fr-ca.js create mode 100644 sources/plugins/colorbutton/lang/fr.js create mode 100644 sources/plugins/colorbutton/lang/gl.js create mode 100644 sources/plugins/colorbutton/lang/gu.js create mode 100644 sources/plugins/colorbutton/lang/he.js create mode 100644 sources/plugins/colorbutton/lang/hi.js create mode 100644 sources/plugins/colorbutton/lang/hr.js create mode 100644 sources/plugins/colorbutton/lang/hu.js create mode 100644 sources/plugins/colorbutton/lang/id.js create mode 100644 sources/plugins/colorbutton/lang/is.js create mode 100644 sources/plugins/colorbutton/lang/it.js create mode 100644 sources/plugins/colorbutton/lang/ja.js create mode 100644 sources/plugins/colorbutton/lang/ka.js create mode 100644 sources/plugins/colorbutton/lang/km.js create mode 100644 sources/plugins/colorbutton/lang/ko.js create mode 100644 sources/plugins/colorbutton/lang/ku.js create mode 100644 sources/plugins/colorbutton/lang/lt.js create mode 100644 sources/plugins/colorbutton/lang/lv.js create mode 100644 sources/plugins/colorbutton/lang/mk.js create mode 100644 sources/plugins/colorbutton/lang/mn.js create mode 100644 sources/plugins/colorbutton/lang/ms.js create mode 100644 sources/plugins/colorbutton/lang/nb.js create mode 100644 sources/plugins/colorbutton/lang/nl.js create mode 100644 sources/plugins/colorbutton/lang/no.js create mode 100644 sources/plugins/colorbutton/lang/pl.js create mode 100644 sources/plugins/colorbutton/lang/pt-br.js create mode 100644 sources/plugins/colorbutton/lang/pt.js create mode 100644 sources/plugins/colorbutton/lang/ro.js create mode 100644 sources/plugins/colorbutton/lang/ru.js create mode 100644 sources/plugins/colorbutton/lang/si.js create mode 100644 sources/plugins/colorbutton/lang/sk.js create mode 100644 sources/plugins/colorbutton/lang/sl.js create mode 100644 sources/plugins/colorbutton/lang/sq.js create mode 100644 sources/plugins/colorbutton/lang/sr-latn.js create mode 100644 sources/plugins/colorbutton/lang/sr.js create mode 100644 sources/plugins/colorbutton/lang/sv.js create mode 100644 sources/plugins/colorbutton/lang/th.js create mode 100644 sources/plugins/colorbutton/lang/tr.js create mode 100644 sources/plugins/colorbutton/lang/tt.js create mode 100644 sources/plugins/colorbutton/lang/ug.js create mode 100644 sources/plugins/colorbutton/lang/uk.js create mode 100644 sources/plugins/colorbutton/lang/vi.js create mode 100644 sources/plugins/colorbutton/lang/zh-cn.js create mode 100644 sources/plugins/colorbutton/lang/zh.js create mode 100644 sources/plugins/colorbutton/plugin.js create mode 100644 sources/plugins/colordialog/dialogs/colordialog.js create mode 100644 sources/plugins/colordialog/lang/af.js create mode 100644 sources/plugins/colordialog/lang/ar.js create mode 100644 sources/plugins/colordialog/lang/bg.js create mode 100644 sources/plugins/colordialog/lang/bn.js create mode 100644 sources/plugins/colordialog/lang/bs.js create mode 100644 sources/plugins/colordialog/lang/ca.js create mode 100644 sources/plugins/colordialog/lang/cs.js create mode 100644 sources/plugins/colordialog/lang/cy.js create mode 100644 sources/plugins/colordialog/lang/da.js create mode 100644 sources/plugins/colordialog/lang/de.js create mode 100644 sources/plugins/colordialog/lang/el.js create mode 100644 sources/plugins/colordialog/lang/en-au.js create mode 100644 sources/plugins/colordialog/lang/en-ca.js create mode 100644 sources/plugins/colordialog/lang/en-gb.js create mode 100644 sources/plugins/colordialog/lang/en.js create mode 100644 sources/plugins/colordialog/lang/eo.js create mode 100644 sources/plugins/colordialog/lang/es.js create mode 100644 sources/plugins/colordialog/lang/et.js create mode 100644 sources/plugins/colordialog/lang/eu.js create mode 100644 sources/plugins/colordialog/lang/fa.js create mode 100644 sources/plugins/colordialog/lang/fi.js create mode 100644 sources/plugins/colordialog/lang/fo.js create mode 100644 sources/plugins/colordialog/lang/fr-ca.js create mode 100644 sources/plugins/colordialog/lang/fr.js create mode 100644 sources/plugins/colordialog/lang/gl.js create mode 100644 sources/plugins/colordialog/lang/gu.js create mode 100644 sources/plugins/colordialog/lang/he.js create mode 100644 sources/plugins/colordialog/lang/hi.js create mode 100644 sources/plugins/colordialog/lang/hr.js create mode 100644 sources/plugins/colordialog/lang/hu.js create mode 100644 sources/plugins/colordialog/lang/id.js create mode 100644 sources/plugins/colordialog/lang/is.js create mode 100644 sources/plugins/colordialog/lang/it.js create mode 100644 sources/plugins/colordialog/lang/ja.js create mode 100644 sources/plugins/colordialog/lang/ka.js create mode 100644 sources/plugins/colordialog/lang/km.js create mode 100644 sources/plugins/colordialog/lang/ko.js create mode 100644 sources/plugins/colordialog/lang/ku.js create mode 100644 sources/plugins/colordialog/lang/lt.js create mode 100644 sources/plugins/colordialog/lang/lv.js create mode 100644 sources/plugins/colordialog/lang/mk.js create mode 100644 sources/plugins/colordialog/lang/mn.js create mode 100644 sources/plugins/colordialog/lang/ms.js create mode 100644 sources/plugins/colordialog/lang/nb.js create mode 100644 sources/plugins/colordialog/lang/nl.js create mode 100644 sources/plugins/colordialog/lang/no.js create mode 100644 sources/plugins/colordialog/lang/pl.js create mode 100644 sources/plugins/colordialog/lang/pt-br.js create mode 100644 sources/plugins/colordialog/lang/pt.js create mode 100644 sources/plugins/colordialog/lang/ro.js create mode 100644 sources/plugins/colordialog/lang/ru.js create mode 100644 sources/plugins/colordialog/lang/si.js create mode 100644 sources/plugins/colordialog/lang/sk.js create mode 100644 sources/plugins/colordialog/lang/sl.js create mode 100644 sources/plugins/colordialog/lang/sq.js create mode 100644 sources/plugins/colordialog/lang/sr-latn.js create mode 100644 sources/plugins/colordialog/lang/sr.js create mode 100644 sources/plugins/colordialog/lang/sv.js create mode 100644 sources/plugins/colordialog/lang/th.js create mode 100644 sources/plugins/colordialog/lang/tr.js create mode 100644 sources/plugins/colordialog/lang/tt.js create mode 100644 sources/plugins/colordialog/lang/ug.js create mode 100644 sources/plugins/colordialog/lang/uk.js create mode 100644 sources/plugins/colordialog/lang/vi.js create mode 100644 sources/plugins/colordialog/lang/zh-cn.js create mode 100644 sources/plugins/colordialog/lang/zh.js create mode 100644 sources/plugins/colordialog/plugin.js create mode 100644 sources/plugins/contextmenu/lang/af.js create mode 100644 sources/plugins/contextmenu/lang/ar.js create mode 100644 sources/plugins/contextmenu/lang/bg.js create mode 100644 sources/plugins/contextmenu/lang/bn.js create mode 100644 sources/plugins/contextmenu/lang/bs.js create mode 100644 sources/plugins/contextmenu/lang/ca.js create mode 100644 sources/plugins/contextmenu/lang/cs.js create mode 100644 sources/plugins/contextmenu/lang/cy.js create mode 100644 sources/plugins/contextmenu/lang/da.js create mode 100644 sources/plugins/contextmenu/lang/de.js create mode 100644 sources/plugins/contextmenu/lang/el.js create mode 100644 sources/plugins/contextmenu/lang/en-au.js create mode 100644 sources/plugins/contextmenu/lang/en-ca.js create mode 100644 sources/plugins/contextmenu/lang/en-gb.js create mode 100644 sources/plugins/contextmenu/lang/en.js create mode 100644 sources/plugins/contextmenu/lang/eo.js create mode 100644 sources/plugins/contextmenu/lang/es.js create mode 100644 sources/plugins/contextmenu/lang/et.js create mode 100644 sources/plugins/contextmenu/lang/eu.js create mode 100644 sources/plugins/contextmenu/lang/fa.js create mode 100644 sources/plugins/contextmenu/lang/fi.js create mode 100644 sources/plugins/contextmenu/lang/fo.js create mode 100644 sources/plugins/contextmenu/lang/fr-ca.js create mode 100644 sources/plugins/contextmenu/lang/fr.js create mode 100644 sources/plugins/contextmenu/lang/gl.js create mode 100644 sources/plugins/contextmenu/lang/gu.js create mode 100644 sources/plugins/contextmenu/lang/he.js create mode 100644 sources/plugins/contextmenu/lang/hi.js create mode 100644 sources/plugins/contextmenu/lang/hr.js create mode 100644 sources/plugins/contextmenu/lang/hu.js create mode 100644 sources/plugins/contextmenu/lang/id.js create mode 100644 sources/plugins/contextmenu/lang/is.js create mode 100644 sources/plugins/contextmenu/lang/it.js create mode 100644 sources/plugins/contextmenu/lang/ja.js create mode 100644 sources/plugins/contextmenu/lang/ka.js create mode 100644 sources/plugins/contextmenu/lang/km.js create mode 100644 sources/plugins/contextmenu/lang/ko.js create mode 100644 sources/plugins/contextmenu/lang/ku.js create mode 100644 sources/plugins/contextmenu/lang/lt.js create mode 100644 sources/plugins/contextmenu/lang/lv.js create mode 100644 sources/plugins/contextmenu/lang/mk.js create mode 100644 sources/plugins/contextmenu/lang/mn.js create mode 100644 sources/plugins/contextmenu/lang/ms.js create mode 100644 sources/plugins/contextmenu/lang/nb.js create mode 100644 sources/plugins/contextmenu/lang/nl.js create mode 100644 sources/plugins/contextmenu/lang/no.js create mode 100644 sources/plugins/contextmenu/lang/pl.js create mode 100644 sources/plugins/contextmenu/lang/pt-br.js create mode 100644 sources/plugins/contextmenu/lang/pt.js create mode 100644 sources/plugins/contextmenu/lang/ro.js create mode 100644 sources/plugins/contextmenu/lang/ru.js create mode 100644 sources/plugins/contextmenu/lang/si.js create mode 100644 sources/plugins/contextmenu/lang/sk.js create mode 100644 sources/plugins/contextmenu/lang/sl.js create mode 100644 sources/plugins/contextmenu/lang/sq.js create mode 100644 sources/plugins/contextmenu/lang/sr-latn.js create mode 100644 sources/plugins/contextmenu/lang/sr.js create mode 100644 sources/plugins/contextmenu/lang/sv.js create mode 100644 sources/plugins/contextmenu/lang/th.js create mode 100644 sources/plugins/contextmenu/lang/tr.js create mode 100644 sources/plugins/contextmenu/lang/tt.js create mode 100644 sources/plugins/contextmenu/lang/ug.js create mode 100644 sources/plugins/contextmenu/lang/uk.js create mode 100644 sources/plugins/contextmenu/lang/vi.js create mode 100644 sources/plugins/contextmenu/lang/zh-cn.js create mode 100644 sources/plugins/contextmenu/lang/zh.js create mode 100644 sources/plugins/contextmenu/plugin.js create mode 100644 sources/plugins/dialog/dialogDefinition.js create mode 100644 sources/plugins/dialog/plugin.js create mode 100644 sources/plugins/dialog/samples/assets/my_dialog.js create mode 100644 sources/plugins/dialog/samples/dialog.html create mode 100644 sources/plugins/dialogadvtab/plugin.js create mode 100644 sources/plugins/dialogui/plugin.js create mode 100644 sources/plugins/div/dialogs/div.js create mode 100644 sources/plugins/div/icons/creatediv.png create mode 100644 sources/plugins/div/icons/hidpi/creatediv.png create mode 100644 sources/plugins/div/lang/af.js create mode 100644 sources/plugins/div/lang/ar.js create mode 100644 sources/plugins/div/lang/bg.js create mode 100644 sources/plugins/div/lang/bn.js create mode 100644 sources/plugins/div/lang/bs.js create mode 100644 sources/plugins/div/lang/ca.js create mode 100644 sources/plugins/div/lang/cs.js create mode 100644 sources/plugins/div/lang/cy.js create mode 100644 sources/plugins/div/lang/da.js create mode 100644 sources/plugins/div/lang/de.js create mode 100644 sources/plugins/div/lang/el.js create mode 100644 sources/plugins/div/lang/en-au.js create mode 100644 sources/plugins/div/lang/en-ca.js create mode 100644 sources/plugins/div/lang/en-gb.js create mode 100644 sources/plugins/div/lang/en.js create mode 100644 sources/plugins/div/lang/eo.js create mode 100644 sources/plugins/div/lang/es.js create mode 100644 sources/plugins/div/lang/et.js create mode 100644 sources/plugins/div/lang/eu.js create mode 100644 sources/plugins/div/lang/fa.js create mode 100644 sources/plugins/div/lang/fi.js create mode 100644 sources/plugins/div/lang/fo.js create mode 100644 sources/plugins/div/lang/fr-ca.js create mode 100644 sources/plugins/div/lang/fr.js create mode 100644 sources/plugins/div/lang/gl.js create mode 100644 sources/plugins/div/lang/gu.js create mode 100644 sources/plugins/div/lang/he.js create mode 100644 sources/plugins/div/lang/hi.js create mode 100644 sources/plugins/div/lang/hr.js create mode 100644 sources/plugins/div/lang/hu.js create mode 100644 sources/plugins/div/lang/id.js create mode 100644 sources/plugins/div/lang/is.js create mode 100644 sources/plugins/div/lang/it.js create mode 100644 sources/plugins/div/lang/ja.js create mode 100644 sources/plugins/div/lang/ka.js create mode 100644 sources/plugins/div/lang/km.js create mode 100644 sources/plugins/div/lang/ko.js create mode 100644 sources/plugins/div/lang/ku.js create mode 100644 sources/plugins/div/lang/lt.js create mode 100644 sources/plugins/div/lang/lv.js create mode 100644 sources/plugins/div/lang/mk.js create mode 100644 sources/plugins/div/lang/mn.js create mode 100644 sources/plugins/div/lang/ms.js create mode 100644 sources/plugins/div/lang/nb.js create mode 100644 sources/plugins/div/lang/nl.js create mode 100644 sources/plugins/div/lang/no.js create mode 100644 sources/plugins/div/lang/pl.js create mode 100644 sources/plugins/div/lang/pt-br.js create mode 100644 sources/plugins/div/lang/pt.js create mode 100644 sources/plugins/div/lang/ro.js create mode 100644 sources/plugins/div/lang/ru.js create mode 100644 sources/plugins/div/lang/si.js create mode 100644 sources/plugins/div/lang/sk.js create mode 100644 sources/plugins/div/lang/sl.js create mode 100644 sources/plugins/div/lang/sq.js create mode 100644 sources/plugins/div/lang/sr-latn.js create mode 100644 sources/plugins/div/lang/sr.js create mode 100644 sources/plugins/div/lang/sv.js create mode 100644 sources/plugins/div/lang/th.js create mode 100644 sources/plugins/div/lang/tr.js create mode 100644 sources/plugins/div/lang/tt.js create mode 100644 sources/plugins/div/lang/ug.js create mode 100644 sources/plugins/div/lang/uk.js create mode 100644 sources/plugins/div/lang/vi.js create mode 100644 sources/plugins/div/lang/zh-cn.js create mode 100644 sources/plugins/div/lang/zh.js create mode 100644 sources/plugins/div/plugin.js create mode 100644 sources/plugins/elementspath/lang/af.js create mode 100644 sources/plugins/elementspath/lang/ar.js create mode 100644 sources/plugins/elementspath/lang/bg.js create mode 100644 sources/plugins/elementspath/lang/bn.js create mode 100644 sources/plugins/elementspath/lang/bs.js create mode 100644 sources/plugins/elementspath/lang/ca.js create mode 100644 sources/plugins/elementspath/lang/cs.js create mode 100644 sources/plugins/elementspath/lang/cy.js create mode 100644 sources/plugins/elementspath/lang/da.js create mode 100644 sources/plugins/elementspath/lang/de.js create mode 100644 sources/plugins/elementspath/lang/el.js create mode 100644 sources/plugins/elementspath/lang/en-au.js create mode 100644 sources/plugins/elementspath/lang/en-ca.js create mode 100644 sources/plugins/elementspath/lang/en-gb.js create mode 100644 sources/plugins/elementspath/lang/en.js create mode 100644 sources/plugins/elementspath/lang/eo.js create mode 100644 sources/plugins/elementspath/lang/es.js create mode 100644 sources/plugins/elementspath/lang/et.js create mode 100644 sources/plugins/elementspath/lang/eu.js create mode 100644 sources/plugins/elementspath/lang/fa.js create mode 100644 sources/plugins/elementspath/lang/fi.js create mode 100644 sources/plugins/elementspath/lang/fo.js create mode 100644 sources/plugins/elementspath/lang/fr-ca.js create mode 100644 sources/plugins/elementspath/lang/fr.js create mode 100644 sources/plugins/elementspath/lang/gl.js create mode 100644 sources/plugins/elementspath/lang/gu.js create mode 100644 sources/plugins/elementspath/lang/he.js create mode 100644 sources/plugins/elementspath/lang/hi.js create mode 100644 sources/plugins/elementspath/lang/hr.js create mode 100644 sources/plugins/elementspath/lang/hu.js create mode 100644 sources/plugins/elementspath/lang/is.js create mode 100644 sources/plugins/elementspath/lang/it.js create mode 100644 sources/plugins/elementspath/lang/ja.js create mode 100644 sources/plugins/elementspath/lang/ka.js create mode 100644 sources/plugins/elementspath/lang/km.js create mode 100644 sources/plugins/elementspath/lang/ko.js create mode 100644 sources/plugins/elementspath/lang/ku.js create mode 100644 sources/plugins/elementspath/lang/lt.js create mode 100644 sources/plugins/elementspath/lang/lv.js create mode 100644 sources/plugins/elementspath/lang/mk.js create mode 100644 sources/plugins/elementspath/lang/mn.js create mode 100644 sources/plugins/elementspath/lang/ms.js create mode 100644 sources/plugins/elementspath/lang/nb.js create mode 100644 sources/plugins/elementspath/lang/nl.js create mode 100644 sources/plugins/elementspath/lang/no.js create mode 100644 sources/plugins/elementspath/lang/pl.js create mode 100644 sources/plugins/elementspath/lang/pt-br.js create mode 100644 sources/plugins/elementspath/lang/pt.js create mode 100644 sources/plugins/elementspath/lang/ro.js create mode 100644 sources/plugins/elementspath/lang/ru.js create mode 100644 sources/plugins/elementspath/lang/si.js create mode 100644 sources/plugins/elementspath/lang/sk.js create mode 100644 sources/plugins/elementspath/lang/sl.js create mode 100644 sources/plugins/elementspath/lang/sq.js create mode 100644 sources/plugins/elementspath/lang/sr-latn.js create mode 100644 sources/plugins/elementspath/lang/sr.js create mode 100644 sources/plugins/elementspath/lang/sv.js create mode 100644 sources/plugins/elementspath/lang/th.js create mode 100644 sources/plugins/elementspath/lang/tr.js create mode 100644 sources/plugins/elementspath/lang/tt.js create mode 100644 sources/plugins/elementspath/lang/ug.js create mode 100644 sources/plugins/elementspath/lang/uk.js create mode 100644 sources/plugins/elementspath/lang/vi.js create mode 100644 sources/plugins/elementspath/lang/zh-cn.js create mode 100644 sources/plugins/elementspath/lang/zh.js create mode 100644 sources/plugins/elementspath/plugin.js create mode 100644 sources/plugins/enterkey/plugin.js create mode 100644 sources/plugins/enterkey/samples/enterkey.html create mode 100644 sources/plugins/entities/plugin.js create mode 100644 sources/plugins/fakeobjects/lang/af.js create mode 100644 sources/plugins/fakeobjects/lang/ar.js create mode 100644 sources/plugins/fakeobjects/lang/bg.js create mode 100644 sources/plugins/fakeobjects/lang/bn.js create mode 100644 sources/plugins/fakeobjects/lang/bs.js create mode 100644 sources/plugins/fakeobjects/lang/ca.js create mode 100644 sources/plugins/fakeobjects/lang/cs.js create mode 100644 sources/plugins/fakeobjects/lang/cy.js create mode 100644 sources/plugins/fakeobjects/lang/da.js create mode 100644 sources/plugins/fakeobjects/lang/de.js create mode 100644 sources/plugins/fakeobjects/lang/el.js create mode 100644 sources/plugins/fakeobjects/lang/en-au.js create mode 100644 sources/plugins/fakeobjects/lang/en-ca.js create mode 100644 sources/plugins/fakeobjects/lang/en-gb.js create mode 100644 sources/plugins/fakeobjects/lang/en.js create mode 100644 sources/plugins/fakeobjects/lang/eo.js create mode 100644 sources/plugins/fakeobjects/lang/es.js create mode 100644 sources/plugins/fakeobjects/lang/et.js create mode 100644 sources/plugins/fakeobjects/lang/eu.js create mode 100644 sources/plugins/fakeobjects/lang/fa.js create mode 100644 sources/plugins/fakeobjects/lang/fi.js create mode 100644 sources/plugins/fakeobjects/lang/fo.js create mode 100644 sources/plugins/fakeobjects/lang/fr-ca.js create mode 100644 sources/plugins/fakeobjects/lang/fr.js create mode 100644 sources/plugins/fakeobjects/lang/gl.js create mode 100644 sources/plugins/fakeobjects/lang/gu.js create mode 100644 sources/plugins/fakeobjects/lang/he.js create mode 100644 sources/plugins/fakeobjects/lang/hi.js create mode 100644 sources/plugins/fakeobjects/lang/hr.js create mode 100644 sources/plugins/fakeobjects/lang/hu.js create mode 100644 sources/plugins/fakeobjects/lang/id.js create mode 100644 sources/plugins/fakeobjects/lang/is.js create mode 100644 sources/plugins/fakeobjects/lang/it.js create mode 100644 sources/plugins/fakeobjects/lang/ja.js create mode 100644 sources/plugins/fakeobjects/lang/ka.js create mode 100644 sources/plugins/fakeobjects/lang/km.js create mode 100644 sources/plugins/fakeobjects/lang/ko.js create mode 100644 sources/plugins/fakeobjects/lang/ku.js create mode 100644 sources/plugins/fakeobjects/lang/lt.js create mode 100644 sources/plugins/fakeobjects/lang/lv.js create mode 100644 sources/plugins/fakeobjects/lang/mk.js create mode 100644 sources/plugins/fakeobjects/lang/mn.js create mode 100644 sources/plugins/fakeobjects/lang/ms.js create mode 100644 sources/plugins/fakeobjects/lang/nb.js create mode 100644 sources/plugins/fakeobjects/lang/nl.js create mode 100644 sources/plugins/fakeobjects/lang/no.js create mode 100644 sources/plugins/fakeobjects/lang/pl.js create mode 100644 sources/plugins/fakeobjects/lang/pt-br.js create mode 100644 sources/plugins/fakeobjects/lang/pt.js create mode 100644 sources/plugins/fakeobjects/lang/ro.js create mode 100644 sources/plugins/fakeobjects/lang/ru.js create mode 100644 sources/plugins/fakeobjects/lang/si.js create mode 100644 sources/plugins/fakeobjects/lang/sk.js create mode 100644 sources/plugins/fakeobjects/lang/sl.js create mode 100644 sources/plugins/fakeobjects/lang/sq.js create mode 100644 sources/plugins/fakeobjects/lang/sr-latn.js create mode 100644 sources/plugins/fakeobjects/lang/sr.js create mode 100644 sources/plugins/fakeobjects/lang/sv.js create mode 100644 sources/plugins/fakeobjects/lang/th.js create mode 100644 sources/plugins/fakeobjects/lang/tr.js create mode 100644 sources/plugins/fakeobjects/lang/tt.js create mode 100644 sources/plugins/fakeobjects/lang/ug.js create mode 100644 sources/plugins/fakeobjects/lang/uk.js create mode 100644 sources/plugins/fakeobjects/lang/vi.js create mode 100644 sources/plugins/fakeobjects/lang/zh-cn.js create mode 100644 sources/plugins/fakeobjects/lang/zh.js create mode 100644 sources/plugins/fakeobjects/plugin.js create mode 100644 sources/plugins/filebrowser/plugin.js create mode 100644 sources/plugins/find/dialogs/find.js create mode 100644 sources/plugins/find/icons/find-rtl.png create mode 100644 sources/plugins/find/icons/find.png create mode 100644 sources/plugins/find/icons/hidpi/find-rtl.png create mode 100644 sources/plugins/find/icons/hidpi/find.png create mode 100644 sources/plugins/find/icons/hidpi/replace.png create mode 100644 sources/plugins/find/icons/replace.png create mode 100644 sources/plugins/find/lang/af.js create mode 100644 sources/plugins/find/lang/ar.js create mode 100644 sources/plugins/find/lang/bg.js create mode 100644 sources/plugins/find/lang/bn.js create mode 100644 sources/plugins/find/lang/bs.js create mode 100644 sources/plugins/find/lang/ca.js create mode 100644 sources/plugins/find/lang/cs.js create mode 100644 sources/plugins/find/lang/cy.js create mode 100644 sources/plugins/find/lang/da.js create mode 100644 sources/plugins/find/lang/de.js create mode 100644 sources/plugins/find/lang/el.js create mode 100644 sources/plugins/find/lang/en-au.js create mode 100644 sources/plugins/find/lang/en-ca.js create mode 100644 sources/plugins/find/lang/en-gb.js create mode 100644 sources/plugins/find/lang/en.js create mode 100644 sources/plugins/find/lang/eo.js create mode 100644 sources/plugins/find/lang/es.js create mode 100644 sources/plugins/find/lang/et.js create mode 100644 sources/plugins/find/lang/eu.js create mode 100644 sources/plugins/find/lang/fa.js create mode 100644 sources/plugins/find/lang/fi.js create mode 100644 sources/plugins/find/lang/fo.js create mode 100644 sources/plugins/find/lang/fr-ca.js create mode 100644 sources/plugins/find/lang/fr.js create mode 100644 sources/plugins/find/lang/gl.js create mode 100644 sources/plugins/find/lang/gu.js create mode 100644 sources/plugins/find/lang/he.js create mode 100644 sources/plugins/find/lang/hi.js create mode 100644 sources/plugins/find/lang/hr.js create mode 100644 sources/plugins/find/lang/hu.js create mode 100644 sources/plugins/find/lang/id.js create mode 100644 sources/plugins/find/lang/is.js create mode 100644 sources/plugins/find/lang/it.js create mode 100644 sources/plugins/find/lang/ja.js create mode 100644 sources/plugins/find/lang/ka.js create mode 100644 sources/plugins/find/lang/km.js create mode 100644 sources/plugins/find/lang/ko.js create mode 100644 sources/plugins/find/lang/ku.js create mode 100644 sources/plugins/find/lang/lt.js create mode 100644 sources/plugins/find/lang/lv.js create mode 100644 sources/plugins/find/lang/mk.js create mode 100644 sources/plugins/find/lang/mn.js create mode 100644 sources/plugins/find/lang/ms.js create mode 100644 sources/plugins/find/lang/nb.js create mode 100644 sources/plugins/find/lang/nl.js create mode 100644 sources/plugins/find/lang/no.js create mode 100644 sources/plugins/find/lang/pl.js create mode 100644 sources/plugins/find/lang/pt-br.js create mode 100644 sources/plugins/find/lang/pt.js create mode 100644 sources/plugins/find/lang/ro.js create mode 100644 sources/plugins/find/lang/ru.js create mode 100644 sources/plugins/find/lang/si.js create mode 100644 sources/plugins/find/lang/sk.js create mode 100644 sources/plugins/find/lang/sl.js create mode 100644 sources/plugins/find/lang/sq.js create mode 100644 sources/plugins/find/lang/sr-latn.js create mode 100644 sources/plugins/find/lang/sr.js create mode 100644 sources/plugins/find/lang/sv.js create mode 100644 sources/plugins/find/lang/th.js create mode 100644 sources/plugins/find/lang/tr.js create mode 100644 sources/plugins/find/lang/tt.js create mode 100644 sources/plugins/find/lang/ug.js create mode 100644 sources/plugins/find/lang/uk.js create mode 100644 sources/plugins/find/lang/vi.js create mode 100644 sources/plugins/find/lang/zh-cn.js create mode 100644 sources/plugins/find/lang/zh.js create mode 100644 sources/plugins/find/plugin.js create mode 100644 sources/plugins/flash/dialogs/flash.js create mode 100644 sources/plugins/flash/icons/flash.png create mode 100644 sources/plugins/flash/icons/hidpi/flash.png create mode 100644 sources/plugins/flash/images/placeholder.png create mode 100644 sources/plugins/flash/lang/af.js create mode 100644 sources/plugins/flash/lang/ar.js create mode 100644 sources/plugins/flash/lang/bg.js create mode 100644 sources/plugins/flash/lang/bn.js create mode 100644 sources/plugins/flash/lang/bs.js create mode 100644 sources/plugins/flash/lang/ca.js create mode 100644 sources/plugins/flash/lang/cs.js create mode 100644 sources/plugins/flash/lang/cy.js create mode 100644 sources/plugins/flash/lang/da.js create mode 100644 sources/plugins/flash/lang/de.js create mode 100644 sources/plugins/flash/lang/el.js create mode 100644 sources/plugins/flash/lang/en-au.js create mode 100644 sources/plugins/flash/lang/en-ca.js create mode 100644 sources/plugins/flash/lang/en-gb.js create mode 100644 sources/plugins/flash/lang/en.js create mode 100644 sources/plugins/flash/lang/eo.js create mode 100644 sources/plugins/flash/lang/es.js create mode 100644 sources/plugins/flash/lang/et.js create mode 100644 sources/plugins/flash/lang/eu.js create mode 100644 sources/plugins/flash/lang/fa.js create mode 100644 sources/plugins/flash/lang/fi.js create mode 100644 sources/plugins/flash/lang/fo.js create mode 100644 sources/plugins/flash/lang/fr-ca.js create mode 100644 sources/plugins/flash/lang/fr.js create mode 100644 sources/plugins/flash/lang/gl.js create mode 100644 sources/plugins/flash/lang/gu.js create mode 100644 sources/plugins/flash/lang/he.js create mode 100644 sources/plugins/flash/lang/hi.js create mode 100644 sources/plugins/flash/lang/hr.js create mode 100644 sources/plugins/flash/lang/hu.js create mode 100644 sources/plugins/flash/lang/id.js create mode 100644 sources/plugins/flash/lang/is.js create mode 100644 sources/plugins/flash/lang/it.js create mode 100644 sources/plugins/flash/lang/ja.js create mode 100644 sources/plugins/flash/lang/ka.js create mode 100644 sources/plugins/flash/lang/km.js create mode 100644 sources/plugins/flash/lang/ko.js create mode 100644 sources/plugins/flash/lang/ku.js create mode 100644 sources/plugins/flash/lang/lt.js create mode 100644 sources/plugins/flash/lang/lv.js create mode 100644 sources/plugins/flash/lang/mk.js create mode 100644 sources/plugins/flash/lang/mn.js create mode 100644 sources/plugins/flash/lang/ms.js create mode 100644 sources/plugins/flash/lang/nb.js create mode 100644 sources/plugins/flash/lang/nl.js create mode 100644 sources/plugins/flash/lang/no.js create mode 100644 sources/plugins/flash/lang/pl.js create mode 100644 sources/plugins/flash/lang/pt-br.js create mode 100644 sources/plugins/flash/lang/pt.js create mode 100644 sources/plugins/flash/lang/ro.js create mode 100644 sources/plugins/flash/lang/ru.js create mode 100644 sources/plugins/flash/lang/si.js create mode 100644 sources/plugins/flash/lang/sk.js create mode 100644 sources/plugins/flash/lang/sl.js create mode 100644 sources/plugins/flash/lang/sq.js create mode 100644 sources/plugins/flash/lang/sr-latn.js create mode 100644 sources/plugins/flash/lang/sr.js create mode 100644 sources/plugins/flash/lang/sv.js create mode 100644 sources/plugins/flash/lang/th.js create mode 100644 sources/plugins/flash/lang/tr.js create mode 100644 sources/plugins/flash/lang/tt.js create mode 100644 sources/plugins/flash/lang/ug.js create mode 100644 sources/plugins/flash/lang/uk.js create mode 100644 sources/plugins/flash/lang/vi.js create mode 100644 sources/plugins/flash/lang/zh-cn.js create mode 100644 sources/plugins/flash/lang/zh.js create mode 100644 sources/plugins/flash/plugin.js create mode 100644 sources/plugins/floatingspace/plugin.js create mode 100644 sources/plugins/floatpanel/plugin.js create mode 100644 sources/plugins/font/lang/af.js create mode 100644 sources/plugins/font/lang/ar.js create mode 100644 sources/plugins/font/lang/bg.js create mode 100644 sources/plugins/font/lang/bn.js create mode 100644 sources/plugins/font/lang/bs.js create mode 100644 sources/plugins/font/lang/ca.js create mode 100644 sources/plugins/font/lang/cs.js create mode 100644 sources/plugins/font/lang/cy.js create mode 100644 sources/plugins/font/lang/da.js create mode 100644 sources/plugins/font/lang/de.js create mode 100644 sources/plugins/font/lang/el.js create mode 100644 sources/plugins/font/lang/en-au.js create mode 100644 sources/plugins/font/lang/en-ca.js create mode 100644 sources/plugins/font/lang/en-gb.js create mode 100644 sources/plugins/font/lang/en.js create mode 100644 sources/plugins/font/lang/eo.js create mode 100644 sources/plugins/font/lang/es.js create mode 100644 sources/plugins/font/lang/et.js create mode 100644 sources/plugins/font/lang/eu.js create mode 100644 sources/plugins/font/lang/fa.js create mode 100644 sources/plugins/font/lang/fi.js create mode 100644 sources/plugins/font/lang/fo.js create mode 100644 sources/plugins/font/lang/fr-ca.js create mode 100644 sources/plugins/font/lang/fr.js create mode 100644 sources/plugins/font/lang/gl.js create mode 100644 sources/plugins/font/lang/gu.js create mode 100644 sources/plugins/font/lang/he.js create mode 100644 sources/plugins/font/lang/hi.js create mode 100644 sources/plugins/font/lang/hr.js create mode 100644 sources/plugins/font/lang/hu.js create mode 100644 sources/plugins/font/lang/id.js create mode 100644 sources/plugins/font/lang/is.js create mode 100644 sources/plugins/font/lang/it.js create mode 100644 sources/plugins/font/lang/ja.js create mode 100644 sources/plugins/font/lang/ka.js create mode 100644 sources/plugins/font/lang/km.js create mode 100644 sources/plugins/font/lang/ko.js create mode 100644 sources/plugins/font/lang/ku.js create mode 100644 sources/plugins/font/lang/lt.js create mode 100644 sources/plugins/font/lang/lv.js create mode 100644 sources/plugins/font/lang/mk.js create mode 100644 sources/plugins/font/lang/mn.js create mode 100644 sources/plugins/font/lang/ms.js create mode 100644 sources/plugins/font/lang/nb.js create mode 100644 sources/plugins/font/lang/nl.js create mode 100644 sources/plugins/font/lang/no.js create mode 100644 sources/plugins/font/lang/pl.js create mode 100644 sources/plugins/font/lang/pt-br.js create mode 100644 sources/plugins/font/lang/pt.js create mode 100644 sources/plugins/font/lang/ro.js create mode 100644 sources/plugins/font/lang/ru.js create mode 100644 sources/plugins/font/lang/si.js create mode 100644 sources/plugins/font/lang/sk.js create mode 100644 sources/plugins/font/lang/sl.js create mode 100644 sources/plugins/font/lang/sq.js create mode 100644 sources/plugins/font/lang/sr-latn.js create mode 100644 sources/plugins/font/lang/sr.js create mode 100644 sources/plugins/font/lang/sv.js create mode 100644 sources/plugins/font/lang/th.js create mode 100644 sources/plugins/font/lang/tr.js create mode 100644 sources/plugins/font/lang/tt.js create mode 100644 sources/plugins/font/lang/ug.js create mode 100644 sources/plugins/font/lang/uk.js create mode 100644 sources/plugins/font/lang/vi.js create mode 100644 sources/plugins/font/lang/zh-cn.js create mode 100644 sources/plugins/font/lang/zh.js create mode 100644 sources/plugins/font/plugin.js create mode 100644 sources/plugins/format/lang/af.js create mode 100644 sources/plugins/format/lang/ar.js create mode 100644 sources/plugins/format/lang/bg.js create mode 100644 sources/plugins/format/lang/bn.js create mode 100644 sources/plugins/format/lang/bs.js create mode 100644 sources/plugins/format/lang/ca.js create mode 100644 sources/plugins/format/lang/cs.js create mode 100644 sources/plugins/format/lang/cy.js create mode 100644 sources/plugins/format/lang/da.js create mode 100644 sources/plugins/format/lang/de.js create mode 100644 sources/plugins/format/lang/el.js create mode 100644 sources/plugins/format/lang/en-au.js create mode 100644 sources/plugins/format/lang/en-ca.js create mode 100644 sources/plugins/format/lang/en-gb.js create mode 100644 sources/plugins/format/lang/en.js create mode 100644 sources/plugins/format/lang/eo.js create mode 100644 sources/plugins/format/lang/es.js create mode 100644 sources/plugins/format/lang/et.js create mode 100644 sources/plugins/format/lang/eu.js create mode 100644 sources/plugins/format/lang/fa.js create mode 100644 sources/plugins/format/lang/fi.js create mode 100644 sources/plugins/format/lang/fo.js create mode 100644 sources/plugins/format/lang/fr-ca.js create mode 100644 sources/plugins/format/lang/fr.js create mode 100644 sources/plugins/format/lang/gl.js create mode 100644 sources/plugins/format/lang/gu.js create mode 100644 sources/plugins/format/lang/he.js create mode 100644 sources/plugins/format/lang/hi.js create mode 100644 sources/plugins/format/lang/hr.js create mode 100644 sources/plugins/format/lang/hu.js create mode 100644 sources/plugins/format/lang/id.js create mode 100644 sources/plugins/format/lang/is.js create mode 100644 sources/plugins/format/lang/it.js create mode 100644 sources/plugins/format/lang/ja.js create mode 100644 sources/plugins/format/lang/ka.js create mode 100644 sources/plugins/format/lang/km.js create mode 100644 sources/plugins/format/lang/ko.js create mode 100644 sources/plugins/format/lang/ku.js create mode 100644 sources/plugins/format/lang/lt.js create mode 100644 sources/plugins/format/lang/lv.js create mode 100644 sources/plugins/format/lang/mk.js create mode 100644 sources/plugins/format/lang/mn.js create mode 100644 sources/plugins/format/lang/ms.js create mode 100644 sources/plugins/format/lang/nb.js create mode 100644 sources/plugins/format/lang/nl.js create mode 100644 sources/plugins/format/lang/no.js create mode 100644 sources/plugins/format/lang/pl.js create mode 100644 sources/plugins/format/lang/pt-br.js create mode 100644 sources/plugins/format/lang/pt.js create mode 100644 sources/plugins/format/lang/ro.js create mode 100644 sources/plugins/format/lang/ru.js create mode 100644 sources/plugins/format/lang/si.js create mode 100644 sources/plugins/format/lang/sk.js create mode 100644 sources/plugins/format/lang/sl.js create mode 100644 sources/plugins/format/lang/sq.js create mode 100644 sources/plugins/format/lang/sr-latn.js create mode 100644 sources/plugins/format/lang/sr.js create mode 100644 sources/plugins/format/lang/sv.js create mode 100644 sources/plugins/format/lang/th.js create mode 100644 sources/plugins/format/lang/tr.js create mode 100644 sources/plugins/format/lang/tt.js create mode 100644 sources/plugins/format/lang/ug.js create mode 100644 sources/plugins/format/lang/uk.js create mode 100644 sources/plugins/format/lang/vi.js create mode 100644 sources/plugins/format/lang/zh-cn.js create mode 100644 sources/plugins/format/lang/zh.js create mode 100644 sources/plugins/format/plugin.js create mode 100644 sources/plugins/forms/dialogs/button.js create mode 100644 sources/plugins/forms/dialogs/checkbox.js create mode 100644 sources/plugins/forms/dialogs/form.js create mode 100644 sources/plugins/forms/dialogs/hiddenfield.js create mode 100644 sources/plugins/forms/dialogs/radio.js create mode 100644 sources/plugins/forms/dialogs/select.js create mode 100644 sources/plugins/forms/dialogs/textarea.js create mode 100644 sources/plugins/forms/dialogs/textfield.js create mode 100644 sources/plugins/forms/icons/button.png create mode 100644 sources/plugins/forms/icons/checkbox.png create mode 100644 sources/plugins/forms/icons/form.png create mode 100644 sources/plugins/forms/icons/hiddenfield.png create mode 100644 sources/plugins/forms/icons/hidpi/button.png create mode 100644 sources/plugins/forms/icons/hidpi/checkbox.png create mode 100644 sources/plugins/forms/icons/hidpi/form.png create mode 100644 sources/plugins/forms/icons/hidpi/hiddenfield.png create mode 100644 sources/plugins/forms/icons/hidpi/imagebutton.png create mode 100644 sources/plugins/forms/icons/hidpi/radio.png create mode 100644 sources/plugins/forms/icons/hidpi/select-rtl.png create mode 100644 sources/plugins/forms/icons/hidpi/select.png create mode 100644 sources/plugins/forms/icons/hidpi/textarea-rtl.png create mode 100644 sources/plugins/forms/icons/hidpi/textarea.png create mode 100644 sources/plugins/forms/icons/hidpi/textfield-rtl.png create mode 100644 sources/plugins/forms/icons/hidpi/textfield.png create mode 100644 sources/plugins/forms/icons/imagebutton.png create mode 100644 sources/plugins/forms/icons/radio.png create mode 100644 sources/plugins/forms/icons/select-rtl.png create mode 100644 sources/plugins/forms/icons/select.png create mode 100644 sources/plugins/forms/icons/textarea-rtl.png create mode 100644 sources/plugins/forms/icons/textarea.png create mode 100644 sources/plugins/forms/icons/textfield-rtl.png create mode 100644 sources/plugins/forms/icons/textfield.png create mode 100644 sources/plugins/forms/images/hiddenfield.gif create mode 100644 sources/plugins/forms/lang/af.js create mode 100644 sources/plugins/forms/lang/ar.js create mode 100644 sources/plugins/forms/lang/bg.js create mode 100644 sources/plugins/forms/lang/bn.js create mode 100644 sources/plugins/forms/lang/bs.js create mode 100644 sources/plugins/forms/lang/ca.js create mode 100644 sources/plugins/forms/lang/cs.js create mode 100644 sources/plugins/forms/lang/cy.js create mode 100644 sources/plugins/forms/lang/da.js create mode 100644 sources/plugins/forms/lang/de.js create mode 100644 sources/plugins/forms/lang/el.js create mode 100644 sources/plugins/forms/lang/en-au.js create mode 100644 sources/plugins/forms/lang/en-ca.js create mode 100644 sources/plugins/forms/lang/en-gb.js create mode 100644 sources/plugins/forms/lang/en.js create mode 100644 sources/plugins/forms/lang/eo.js create mode 100644 sources/plugins/forms/lang/es.js create mode 100644 sources/plugins/forms/lang/et.js create mode 100644 sources/plugins/forms/lang/eu.js create mode 100644 sources/plugins/forms/lang/fa.js create mode 100644 sources/plugins/forms/lang/fi.js create mode 100644 sources/plugins/forms/lang/fo.js create mode 100644 sources/plugins/forms/lang/fr-ca.js create mode 100644 sources/plugins/forms/lang/fr.js create mode 100644 sources/plugins/forms/lang/gl.js create mode 100644 sources/plugins/forms/lang/gu.js create mode 100644 sources/plugins/forms/lang/he.js create mode 100644 sources/plugins/forms/lang/hi.js create mode 100644 sources/plugins/forms/lang/hr.js create mode 100644 sources/plugins/forms/lang/hu.js create mode 100644 sources/plugins/forms/lang/id.js create mode 100644 sources/plugins/forms/lang/is.js create mode 100644 sources/plugins/forms/lang/it.js create mode 100644 sources/plugins/forms/lang/ja.js create mode 100644 sources/plugins/forms/lang/ka.js create mode 100644 sources/plugins/forms/lang/km.js create mode 100644 sources/plugins/forms/lang/ko.js create mode 100644 sources/plugins/forms/lang/ku.js create mode 100644 sources/plugins/forms/lang/lt.js create mode 100644 sources/plugins/forms/lang/lv.js create mode 100644 sources/plugins/forms/lang/mk.js create mode 100644 sources/plugins/forms/lang/mn.js create mode 100644 sources/plugins/forms/lang/ms.js create mode 100644 sources/plugins/forms/lang/nb.js create mode 100644 sources/plugins/forms/lang/nl.js create mode 100644 sources/plugins/forms/lang/no.js create mode 100644 sources/plugins/forms/lang/pl.js create mode 100644 sources/plugins/forms/lang/pt-br.js create mode 100644 sources/plugins/forms/lang/pt.js create mode 100644 sources/plugins/forms/lang/ro.js create mode 100644 sources/plugins/forms/lang/ru.js create mode 100644 sources/plugins/forms/lang/si.js create mode 100644 sources/plugins/forms/lang/sk.js create mode 100644 sources/plugins/forms/lang/sl.js create mode 100644 sources/plugins/forms/lang/sq.js create mode 100644 sources/plugins/forms/lang/sr-latn.js create mode 100644 sources/plugins/forms/lang/sr.js create mode 100644 sources/plugins/forms/lang/sv.js create mode 100644 sources/plugins/forms/lang/th.js create mode 100644 sources/plugins/forms/lang/tr.js create mode 100644 sources/plugins/forms/lang/tt.js create mode 100644 sources/plugins/forms/lang/ug.js create mode 100644 sources/plugins/forms/lang/uk.js create mode 100644 sources/plugins/forms/lang/vi.js create mode 100644 sources/plugins/forms/lang/zh-cn.js create mode 100644 sources/plugins/forms/lang/zh.js create mode 100644 sources/plugins/forms/plugin.js create mode 100644 sources/plugins/horizontalrule/icons/hidpi/horizontalrule.png create mode 100644 sources/plugins/horizontalrule/icons/horizontalrule.png create mode 100644 sources/plugins/horizontalrule/lang/af.js create mode 100644 sources/plugins/horizontalrule/lang/ar.js create mode 100644 sources/plugins/horizontalrule/lang/bg.js create mode 100644 sources/plugins/horizontalrule/lang/bn.js create mode 100644 sources/plugins/horizontalrule/lang/bs.js create mode 100644 sources/plugins/horizontalrule/lang/ca.js create mode 100644 sources/plugins/horizontalrule/lang/cs.js create mode 100644 sources/plugins/horizontalrule/lang/cy.js create mode 100644 sources/plugins/horizontalrule/lang/da.js create mode 100644 sources/plugins/horizontalrule/lang/de.js create mode 100644 sources/plugins/horizontalrule/lang/el.js create mode 100644 sources/plugins/horizontalrule/lang/en-au.js create mode 100644 sources/plugins/horizontalrule/lang/en-ca.js create mode 100644 sources/plugins/horizontalrule/lang/en-gb.js create mode 100644 sources/plugins/horizontalrule/lang/en.js create mode 100644 sources/plugins/horizontalrule/lang/eo.js create mode 100644 sources/plugins/horizontalrule/lang/es.js create mode 100644 sources/plugins/horizontalrule/lang/et.js create mode 100644 sources/plugins/horizontalrule/lang/eu.js create mode 100644 sources/plugins/horizontalrule/lang/fa.js create mode 100644 sources/plugins/horizontalrule/lang/fi.js create mode 100644 sources/plugins/horizontalrule/lang/fo.js create mode 100644 sources/plugins/horizontalrule/lang/fr-ca.js create mode 100644 sources/plugins/horizontalrule/lang/fr.js create mode 100644 sources/plugins/horizontalrule/lang/gl.js create mode 100644 sources/plugins/horizontalrule/lang/gu.js create mode 100644 sources/plugins/horizontalrule/lang/he.js create mode 100644 sources/plugins/horizontalrule/lang/hi.js create mode 100644 sources/plugins/horizontalrule/lang/hr.js create mode 100644 sources/plugins/horizontalrule/lang/hu.js create mode 100644 sources/plugins/horizontalrule/lang/id.js create mode 100644 sources/plugins/horizontalrule/lang/is.js create mode 100644 sources/plugins/horizontalrule/lang/it.js create mode 100644 sources/plugins/horizontalrule/lang/ja.js create mode 100644 sources/plugins/horizontalrule/lang/ka.js create mode 100644 sources/plugins/horizontalrule/lang/km.js create mode 100644 sources/plugins/horizontalrule/lang/ko.js create mode 100644 sources/plugins/horizontalrule/lang/ku.js create mode 100644 sources/plugins/horizontalrule/lang/lt.js create mode 100644 sources/plugins/horizontalrule/lang/lv.js create mode 100644 sources/plugins/horizontalrule/lang/mk.js create mode 100644 sources/plugins/horizontalrule/lang/mn.js create mode 100644 sources/plugins/horizontalrule/lang/ms.js create mode 100644 sources/plugins/horizontalrule/lang/nb.js create mode 100644 sources/plugins/horizontalrule/lang/nl.js create mode 100644 sources/plugins/horizontalrule/lang/no.js create mode 100644 sources/plugins/horizontalrule/lang/pl.js create mode 100644 sources/plugins/horizontalrule/lang/pt-br.js create mode 100644 sources/plugins/horizontalrule/lang/pt.js create mode 100644 sources/plugins/horizontalrule/lang/ro.js create mode 100644 sources/plugins/horizontalrule/lang/ru.js create mode 100644 sources/plugins/horizontalrule/lang/si.js create mode 100644 sources/plugins/horizontalrule/lang/sk.js create mode 100644 sources/plugins/horizontalrule/lang/sl.js create mode 100644 sources/plugins/horizontalrule/lang/sq.js create mode 100644 sources/plugins/horizontalrule/lang/sr-latn.js create mode 100644 sources/plugins/horizontalrule/lang/sr.js create mode 100644 sources/plugins/horizontalrule/lang/sv.js create mode 100644 sources/plugins/horizontalrule/lang/th.js create mode 100644 sources/plugins/horizontalrule/lang/tr.js create mode 100644 sources/plugins/horizontalrule/lang/tt.js create mode 100644 sources/plugins/horizontalrule/lang/ug.js create mode 100644 sources/plugins/horizontalrule/lang/uk.js create mode 100644 sources/plugins/horizontalrule/lang/vi.js create mode 100644 sources/plugins/horizontalrule/lang/zh-cn.js create mode 100644 sources/plugins/horizontalrule/lang/zh.js create mode 100644 sources/plugins/horizontalrule/plugin.js create mode 100644 sources/plugins/htmlwriter/plugin.js create mode 100644 sources/plugins/htmlwriter/samples/assets/outputforflash/outputforflash.fla create mode 100644 sources/plugins/htmlwriter/samples/assets/outputforflash/outputforflash.swf create mode 100644 sources/plugins/htmlwriter/samples/assets/outputforflash/swfobject.js create mode 100644 sources/plugins/htmlwriter/samples/outputforflash.html create mode 100644 sources/plugins/htmlwriter/samples/outputhtml.html create mode 100644 sources/plugins/iframe/dialogs/iframe.js create mode 100644 sources/plugins/iframe/icons/hidpi/iframe.png create mode 100644 sources/plugins/iframe/icons/iframe.png create mode 100644 sources/plugins/iframe/images/placeholder.png create mode 100644 sources/plugins/iframe/lang/af.js create mode 100644 sources/plugins/iframe/lang/ar.js create mode 100644 sources/plugins/iframe/lang/bg.js create mode 100644 sources/plugins/iframe/lang/bn.js create mode 100644 sources/plugins/iframe/lang/bs.js create mode 100644 sources/plugins/iframe/lang/ca.js create mode 100644 sources/plugins/iframe/lang/cs.js create mode 100644 sources/plugins/iframe/lang/cy.js create mode 100644 sources/plugins/iframe/lang/da.js create mode 100644 sources/plugins/iframe/lang/de.js create mode 100644 sources/plugins/iframe/lang/el.js create mode 100644 sources/plugins/iframe/lang/en-au.js create mode 100644 sources/plugins/iframe/lang/en-ca.js create mode 100644 sources/plugins/iframe/lang/en-gb.js create mode 100644 sources/plugins/iframe/lang/en.js create mode 100644 sources/plugins/iframe/lang/eo.js create mode 100644 sources/plugins/iframe/lang/es.js create mode 100644 sources/plugins/iframe/lang/et.js create mode 100644 sources/plugins/iframe/lang/eu.js create mode 100644 sources/plugins/iframe/lang/fa.js create mode 100644 sources/plugins/iframe/lang/fi.js create mode 100644 sources/plugins/iframe/lang/fo.js create mode 100644 sources/plugins/iframe/lang/fr-ca.js create mode 100644 sources/plugins/iframe/lang/fr.js create mode 100644 sources/plugins/iframe/lang/gl.js create mode 100644 sources/plugins/iframe/lang/gu.js create mode 100644 sources/plugins/iframe/lang/he.js create mode 100644 sources/plugins/iframe/lang/hi.js create mode 100644 sources/plugins/iframe/lang/hr.js create mode 100644 sources/plugins/iframe/lang/hu.js create mode 100644 sources/plugins/iframe/lang/id.js create mode 100644 sources/plugins/iframe/lang/is.js create mode 100644 sources/plugins/iframe/lang/it.js create mode 100644 sources/plugins/iframe/lang/ja.js create mode 100644 sources/plugins/iframe/lang/ka.js create mode 100644 sources/plugins/iframe/lang/km.js create mode 100644 sources/plugins/iframe/lang/ko.js create mode 100644 sources/plugins/iframe/lang/ku.js create mode 100644 sources/plugins/iframe/lang/lt.js create mode 100644 sources/plugins/iframe/lang/lv.js create mode 100644 sources/plugins/iframe/lang/mk.js create mode 100644 sources/plugins/iframe/lang/mn.js create mode 100644 sources/plugins/iframe/lang/ms.js create mode 100644 sources/plugins/iframe/lang/nb.js create mode 100644 sources/plugins/iframe/lang/nl.js create mode 100644 sources/plugins/iframe/lang/no.js create mode 100644 sources/plugins/iframe/lang/pl.js create mode 100644 sources/plugins/iframe/lang/pt-br.js create mode 100644 sources/plugins/iframe/lang/pt.js create mode 100644 sources/plugins/iframe/lang/ro.js create mode 100644 sources/plugins/iframe/lang/ru.js create mode 100644 sources/plugins/iframe/lang/si.js create mode 100644 sources/plugins/iframe/lang/sk.js create mode 100644 sources/plugins/iframe/lang/sl.js create mode 100644 sources/plugins/iframe/lang/sq.js create mode 100644 sources/plugins/iframe/lang/sr-latn.js create mode 100644 sources/plugins/iframe/lang/sr.js create mode 100644 sources/plugins/iframe/lang/sv.js create mode 100644 sources/plugins/iframe/lang/th.js create mode 100644 sources/plugins/iframe/lang/tr.js create mode 100644 sources/plugins/iframe/lang/tt.js create mode 100644 sources/plugins/iframe/lang/ug.js create mode 100644 sources/plugins/iframe/lang/uk.js create mode 100644 sources/plugins/iframe/lang/vi.js create mode 100644 sources/plugins/iframe/lang/zh-cn.js create mode 100644 sources/plugins/iframe/lang/zh.js create mode 100644 sources/plugins/iframe/plugin.js create mode 100644 sources/plugins/image/dialogs/image.js create mode 100644 sources/plugins/image/icons/hidpi/image.png create mode 100644 sources/plugins/image/icons/image.png create mode 100644 sources/plugins/image/images/noimage.png create mode 100644 sources/plugins/image/lang/af.js create mode 100644 sources/plugins/image/lang/ar.js create mode 100644 sources/plugins/image/lang/bg.js create mode 100644 sources/plugins/image/lang/bn.js create mode 100644 sources/plugins/image/lang/bs.js create mode 100644 sources/plugins/image/lang/ca.js create mode 100644 sources/plugins/image/lang/cs.js create mode 100644 sources/plugins/image/lang/cy.js create mode 100644 sources/plugins/image/lang/da.js create mode 100644 sources/plugins/image/lang/de.js create mode 100644 sources/plugins/image/lang/el.js create mode 100644 sources/plugins/image/lang/en-au.js create mode 100644 sources/plugins/image/lang/en-ca.js create mode 100644 sources/plugins/image/lang/en-gb.js create mode 100644 sources/plugins/image/lang/en.js create mode 100644 sources/plugins/image/lang/eo.js create mode 100644 sources/plugins/image/lang/es.js create mode 100644 sources/plugins/image/lang/et.js create mode 100644 sources/plugins/image/lang/eu.js create mode 100644 sources/plugins/image/lang/fa.js create mode 100644 sources/plugins/image/lang/fi.js create mode 100644 sources/plugins/image/lang/fo.js create mode 100644 sources/plugins/image/lang/fr-ca.js create mode 100644 sources/plugins/image/lang/fr.js create mode 100644 sources/plugins/image/lang/gl.js create mode 100644 sources/plugins/image/lang/gu.js create mode 100644 sources/plugins/image/lang/he.js create mode 100644 sources/plugins/image/lang/hi.js create mode 100644 sources/plugins/image/lang/hr.js create mode 100644 sources/plugins/image/lang/hu.js create mode 100644 sources/plugins/image/lang/id.js create mode 100644 sources/plugins/image/lang/is.js create mode 100644 sources/plugins/image/lang/it.js create mode 100644 sources/plugins/image/lang/ja.js create mode 100644 sources/plugins/image/lang/ka.js create mode 100644 sources/plugins/image/lang/km.js create mode 100644 sources/plugins/image/lang/ko.js create mode 100644 sources/plugins/image/lang/ku.js create mode 100644 sources/plugins/image/lang/lt.js create mode 100644 sources/plugins/image/lang/lv.js create mode 100644 sources/plugins/image/lang/mk.js create mode 100644 sources/plugins/image/lang/mn.js create mode 100644 sources/plugins/image/lang/ms.js create mode 100644 sources/plugins/image/lang/nb.js create mode 100644 sources/plugins/image/lang/nl.js create mode 100644 sources/plugins/image/lang/no.js create mode 100644 sources/plugins/image/lang/pl.js create mode 100644 sources/plugins/image/lang/pt-br.js create mode 100644 sources/plugins/image/lang/pt.js create mode 100644 sources/plugins/image/lang/ro.js create mode 100644 sources/plugins/image/lang/ru.js create mode 100644 sources/plugins/image/lang/si.js create mode 100644 sources/plugins/image/lang/sk.js create mode 100644 sources/plugins/image/lang/sl.js create mode 100644 sources/plugins/image/lang/sq.js create mode 100644 sources/plugins/image/lang/sr-latn.js create mode 100644 sources/plugins/image/lang/sr.js create mode 100644 sources/plugins/image/lang/sv.js create mode 100644 sources/plugins/image/lang/th.js create mode 100644 sources/plugins/image/lang/tr.js create mode 100644 sources/plugins/image/lang/tt.js create mode 100644 sources/plugins/image/lang/ug.js create mode 100644 sources/plugins/image/lang/uk.js create mode 100644 sources/plugins/image/lang/vi.js create mode 100644 sources/plugins/image/lang/zh-cn.js create mode 100644 sources/plugins/image/lang/zh.js create mode 100644 sources/plugins/image/plugin.js create mode 100644 sources/plugins/imagebrowser/LICENSE.txt create mode 100644 sources/plugins/imagebrowser/README.rst create mode 100644 sources/plugins/imagebrowser/browser/browser.css create mode 100644 sources/plugins/imagebrowser/browser/browser.html create mode 100644 sources/plugins/imagebrowser/browser/browser.js create mode 100644 sources/plugins/imagebrowser/browser/jquery-1.9.1.min.js create mode 100644 sources/plugins/imagebrowser/plugin.js create mode 100644 sources/plugins/indent/dev/indent.html create mode 100644 sources/plugins/indent/icons/hidpi/indent-rtl.png create mode 100644 sources/plugins/indent/icons/hidpi/indent.png create mode 100644 sources/plugins/indent/icons/hidpi/outdent-rtl.png create mode 100644 sources/plugins/indent/icons/hidpi/outdent.png create mode 100644 sources/plugins/indent/icons/indent-rtl.png create mode 100644 sources/plugins/indent/icons/indent.png create mode 100644 sources/plugins/indent/icons/outdent-rtl.png create mode 100644 sources/plugins/indent/icons/outdent.png create mode 100644 sources/plugins/indent/lang/af.js create mode 100644 sources/plugins/indent/lang/ar.js create mode 100644 sources/plugins/indent/lang/bg.js create mode 100644 sources/plugins/indent/lang/bn.js create mode 100644 sources/plugins/indent/lang/bs.js create mode 100644 sources/plugins/indent/lang/ca.js create mode 100644 sources/plugins/indent/lang/cs.js create mode 100644 sources/plugins/indent/lang/cy.js create mode 100644 sources/plugins/indent/lang/da.js create mode 100644 sources/plugins/indent/lang/de.js create mode 100644 sources/plugins/indent/lang/el.js create mode 100644 sources/plugins/indent/lang/en-au.js create mode 100644 sources/plugins/indent/lang/en-ca.js create mode 100644 sources/plugins/indent/lang/en-gb.js create mode 100644 sources/plugins/indent/lang/en.js create mode 100644 sources/plugins/indent/lang/eo.js create mode 100644 sources/plugins/indent/lang/es.js create mode 100644 sources/plugins/indent/lang/et.js create mode 100644 sources/plugins/indent/lang/eu.js create mode 100644 sources/plugins/indent/lang/fa.js create mode 100644 sources/plugins/indent/lang/fi.js create mode 100644 sources/plugins/indent/lang/fo.js create mode 100644 sources/plugins/indent/lang/fr-ca.js create mode 100644 sources/plugins/indent/lang/fr.js create mode 100644 sources/plugins/indent/lang/gl.js create mode 100644 sources/plugins/indent/lang/gu.js create mode 100644 sources/plugins/indent/lang/he.js create mode 100644 sources/plugins/indent/lang/hi.js create mode 100644 sources/plugins/indent/lang/hr.js create mode 100644 sources/plugins/indent/lang/hu.js create mode 100644 sources/plugins/indent/lang/id.js create mode 100644 sources/plugins/indent/lang/is.js create mode 100644 sources/plugins/indent/lang/it.js create mode 100644 sources/plugins/indent/lang/ja.js create mode 100644 sources/plugins/indent/lang/ka.js create mode 100644 sources/plugins/indent/lang/km.js create mode 100644 sources/plugins/indent/lang/ko.js create mode 100644 sources/plugins/indent/lang/ku.js create mode 100644 sources/plugins/indent/lang/lt.js create mode 100644 sources/plugins/indent/lang/lv.js create mode 100644 sources/plugins/indent/lang/mk.js create mode 100644 sources/plugins/indent/lang/mn.js create mode 100644 sources/plugins/indent/lang/ms.js create mode 100644 sources/plugins/indent/lang/nb.js create mode 100644 sources/plugins/indent/lang/nl.js create mode 100644 sources/plugins/indent/lang/no.js create mode 100644 sources/plugins/indent/lang/pl.js create mode 100644 sources/plugins/indent/lang/pt-br.js create mode 100644 sources/plugins/indent/lang/pt.js create mode 100644 sources/plugins/indent/lang/ro.js create mode 100644 sources/plugins/indent/lang/ru.js create mode 100644 sources/plugins/indent/lang/si.js create mode 100644 sources/plugins/indent/lang/sk.js create mode 100644 sources/plugins/indent/lang/sl.js create mode 100644 sources/plugins/indent/lang/sq.js create mode 100644 sources/plugins/indent/lang/sr-latn.js create mode 100644 sources/plugins/indent/lang/sr.js create mode 100644 sources/plugins/indent/lang/sv.js create mode 100644 sources/plugins/indent/lang/th.js create mode 100644 sources/plugins/indent/lang/tr.js create mode 100644 sources/plugins/indent/lang/tt.js create mode 100644 sources/plugins/indent/lang/ug.js create mode 100644 sources/plugins/indent/lang/uk.js create mode 100644 sources/plugins/indent/lang/vi.js create mode 100644 sources/plugins/indent/lang/zh-cn.js create mode 100644 sources/plugins/indent/lang/zh.js create mode 100644 sources/plugins/indent/plugin.js create mode 100644 sources/plugins/indentblock/plugin.js create mode 100644 sources/plugins/indentlist/plugin.js create mode 100644 sources/plugins/justify/icons/hidpi/justifyblock.png create mode 100644 sources/plugins/justify/icons/hidpi/justifycenter.png create mode 100644 sources/plugins/justify/icons/hidpi/justifyleft.png create mode 100644 sources/plugins/justify/icons/hidpi/justifyright.png create mode 100644 sources/plugins/justify/icons/justifyblock.png create mode 100644 sources/plugins/justify/icons/justifycenter.png create mode 100644 sources/plugins/justify/icons/justifyleft.png create mode 100644 sources/plugins/justify/icons/justifyright.png create mode 100644 sources/plugins/justify/lang/af.js create mode 100644 sources/plugins/justify/lang/ar.js create mode 100644 sources/plugins/justify/lang/bg.js create mode 100644 sources/plugins/justify/lang/bn.js create mode 100644 sources/plugins/justify/lang/bs.js create mode 100644 sources/plugins/justify/lang/ca.js create mode 100644 sources/plugins/justify/lang/cs.js create mode 100644 sources/plugins/justify/lang/cy.js create mode 100644 sources/plugins/justify/lang/da.js create mode 100644 sources/plugins/justify/lang/de.js create mode 100644 sources/plugins/justify/lang/el.js create mode 100644 sources/plugins/justify/lang/en-au.js create mode 100644 sources/plugins/justify/lang/en-ca.js create mode 100644 sources/plugins/justify/lang/en-gb.js create mode 100644 sources/plugins/justify/lang/en.js create mode 100644 sources/plugins/justify/lang/eo.js create mode 100644 sources/plugins/justify/lang/es.js create mode 100644 sources/plugins/justify/lang/et.js create mode 100644 sources/plugins/justify/lang/eu.js create mode 100644 sources/plugins/justify/lang/fa.js create mode 100644 sources/plugins/justify/lang/fi.js create mode 100644 sources/plugins/justify/lang/fo.js create mode 100644 sources/plugins/justify/lang/fr-ca.js create mode 100644 sources/plugins/justify/lang/fr.js create mode 100644 sources/plugins/justify/lang/gl.js create mode 100644 sources/plugins/justify/lang/gu.js create mode 100644 sources/plugins/justify/lang/he.js create mode 100644 sources/plugins/justify/lang/hi.js create mode 100644 sources/plugins/justify/lang/hr.js create mode 100644 sources/plugins/justify/lang/hu.js create mode 100644 sources/plugins/justify/lang/id.js create mode 100644 sources/plugins/justify/lang/is.js create mode 100644 sources/plugins/justify/lang/it.js create mode 100644 sources/plugins/justify/lang/ja.js create mode 100644 sources/plugins/justify/lang/ka.js create mode 100644 sources/plugins/justify/lang/km.js create mode 100644 sources/plugins/justify/lang/ko.js create mode 100644 sources/plugins/justify/lang/ku.js create mode 100644 sources/plugins/justify/lang/lt.js create mode 100644 sources/plugins/justify/lang/lv.js create mode 100644 sources/plugins/justify/lang/mk.js create mode 100644 sources/plugins/justify/lang/mn.js create mode 100644 sources/plugins/justify/lang/ms.js create mode 100644 sources/plugins/justify/lang/nb.js create mode 100644 sources/plugins/justify/lang/nl.js create mode 100644 sources/plugins/justify/lang/no.js create mode 100644 sources/plugins/justify/lang/pl.js create mode 100644 sources/plugins/justify/lang/pt-br.js create mode 100644 sources/plugins/justify/lang/pt.js create mode 100644 sources/plugins/justify/lang/ro.js create mode 100644 sources/plugins/justify/lang/ru.js create mode 100644 sources/plugins/justify/lang/si.js create mode 100644 sources/plugins/justify/lang/sk.js create mode 100644 sources/plugins/justify/lang/sl.js create mode 100644 sources/plugins/justify/lang/sq.js create mode 100644 sources/plugins/justify/lang/sr-latn.js create mode 100644 sources/plugins/justify/lang/sr.js create mode 100644 sources/plugins/justify/lang/sv.js create mode 100644 sources/plugins/justify/lang/th.js create mode 100644 sources/plugins/justify/lang/tr.js create mode 100644 sources/plugins/justify/lang/tt.js create mode 100644 sources/plugins/justify/lang/ug.js create mode 100644 sources/plugins/justify/lang/uk.js create mode 100644 sources/plugins/justify/lang/vi.js create mode 100644 sources/plugins/justify/lang/zh-cn.js create mode 100644 sources/plugins/justify/lang/zh.js create mode 100644 sources/plugins/justify/plugin.js create mode 100644 sources/plugins/link/dialogs/anchor.js create mode 100644 sources/plugins/link/dialogs/link.js create mode 100644 sources/plugins/link/icons/anchor-rtl.png create mode 100644 sources/plugins/link/icons/anchor.png create mode 100644 sources/plugins/link/icons/hidpi/anchor-rtl.png create mode 100644 sources/plugins/link/icons/hidpi/anchor.png create mode 100644 sources/plugins/link/icons/hidpi/link.png create mode 100644 sources/plugins/link/icons/hidpi/unlink.png create mode 100644 sources/plugins/link/icons/link.png create mode 100644 sources/plugins/link/icons/unlink.png create mode 100644 sources/plugins/link/images/anchor.png create mode 100644 sources/plugins/link/images/hidpi/anchor.png create mode 100644 sources/plugins/link/lang/af.js create mode 100644 sources/plugins/link/lang/ar.js create mode 100644 sources/plugins/link/lang/bg.js create mode 100644 sources/plugins/link/lang/bn.js create mode 100644 sources/plugins/link/lang/bs.js create mode 100644 sources/plugins/link/lang/ca.js create mode 100644 sources/plugins/link/lang/cs.js create mode 100644 sources/plugins/link/lang/cy.js create mode 100644 sources/plugins/link/lang/da.js create mode 100644 sources/plugins/link/lang/de.js create mode 100644 sources/plugins/link/lang/el.js create mode 100644 sources/plugins/link/lang/en-au.js create mode 100644 sources/plugins/link/lang/en-ca.js create mode 100644 sources/plugins/link/lang/en-gb.js create mode 100644 sources/plugins/link/lang/en.js create mode 100644 sources/plugins/link/lang/eo.js create mode 100644 sources/plugins/link/lang/es.js create mode 100644 sources/plugins/link/lang/et.js create mode 100644 sources/plugins/link/lang/eu.js create mode 100644 sources/plugins/link/lang/fa.js create mode 100644 sources/plugins/link/lang/fi.js create mode 100644 sources/plugins/link/lang/fo.js create mode 100644 sources/plugins/link/lang/fr-ca.js create mode 100644 sources/plugins/link/lang/fr.js create mode 100644 sources/plugins/link/lang/gl.js create mode 100644 sources/plugins/link/lang/gu.js create mode 100644 sources/plugins/link/lang/he.js create mode 100644 sources/plugins/link/lang/hi.js create mode 100644 sources/plugins/link/lang/hr.js create mode 100644 sources/plugins/link/lang/hu.js create mode 100644 sources/plugins/link/lang/id.js create mode 100644 sources/plugins/link/lang/is.js create mode 100644 sources/plugins/link/lang/it.js create mode 100644 sources/plugins/link/lang/ja.js create mode 100644 sources/plugins/link/lang/ka.js create mode 100644 sources/plugins/link/lang/km.js create mode 100644 sources/plugins/link/lang/ko.js create mode 100644 sources/plugins/link/lang/ku.js create mode 100644 sources/plugins/link/lang/lt.js create mode 100644 sources/plugins/link/lang/lv.js create mode 100644 sources/plugins/link/lang/mk.js create mode 100644 sources/plugins/link/lang/mn.js create mode 100644 sources/plugins/link/lang/ms.js create mode 100644 sources/plugins/link/lang/nb.js create mode 100644 sources/plugins/link/lang/nl.js create mode 100644 sources/plugins/link/lang/no.js create mode 100644 sources/plugins/link/lang/pl.js create mode 100644 sources/plugins/link/lang/pt-br.js create mode 100644 sources/plugins/link/lang/pt.js create mode 100644 sources/plugins/link/lang/ro.js create mode 100644 sources/plugins/link/lang/ru.js create mode 100644 sources/plugins/link/lang/si.js create mode 100644 sources/plugins/link/lang/sk.js create mode 100644 sources/plugins/link/lang/sl.js create mode 100644 sources/plugins/link/lang/sq.js create mode 100644 sources/plugins/link/lang/sr-latn.js create mode 100644 sources/plugins/link/lang/sr.js create mode 100644 sources/plugins/link/lang/sv.js create mode 100644 sources/plugins/link/lang/th.js create mode 100644 sources/plugins/link/lang/tr.js create mode 100644 sources/plugins/link/lang/tt.js create mode 100644 sources/plugins/link/lang/ug.js create mode 100644 sources/plugins/link/lang/uk.js create mode 100644 sources/plugins/link/lang/vi.js create mode 100644 sources/plugins/link/lang/zh-cn.js create mode 100644 sources/plugins/link/lang/zh.js create mode 100644 sources/plugins/link/plugin.js create mode 100644 sources/plugins/list/icons/bulletedlist-rtl.png create mode 100644 sources/plugins/list/icons/bulletedlist.png create mode 100644 sources/plugins/list/icons/hidpi/bulletedlist-rtl.png create mode 100644 sources/plugins/list/icons/hidpi/bulletedlist.png create mode 100644 sources/plugins/list/icons/hidpi/numberedlist-rtl.png create mode 100644 sources/plugins/list/icons/hidpi/numberedlist.png create mode 100644 sources/plugins/list/icons/numberedlist-rtl.png create mode 100644 sources/plugins/list/icons/numberedlist.png create mode 100644 sources/plugins/list/lang/af.js create mode 100644 sources/plugins/list/lang/ar.js create mode 100644 sources/plugins/list/lang/bg.js create mode 100644 sources/plugins/list/lang/bn.js create mode 100644 sources/plugins/list/lang/bs.js create mode 100644 sources/plugins/list/lang/ca.js create mode 100644 sources/plugins/list/lang/cs.js create mode 100644 sources/plugins/list/lang/cy.js create mode 100644 sources/plugins/list/lang/da.js create mode 100644 sources/plugins/list/lang/de.js create mode 100644 sources/plugins/list/lang/el.js create mode 100644 sources/plugins/list/lang/en-au.js create mode 100644 sources/plugins/list/lang/en-ca.js create mode 100644 sources/plugins/list/lang/en-gb.js create mode 100644 sources/plugins/list/lang/en.js create mode 100644 sources/plugins/list/lang/eo.js create mode 100644 sources/plugins/list/lang/es.js create mode 100644 sources/plugins/list/lang/et.js create mode 100644 sources/plugins/list/lang/eu.js create mode 100644 sources/plugins/list/lang/fa.js create mode 100644 sources/plugins/list/lang/fi.js create mode 100644 sources/plugins/list/lang/fo.js create mode 100644 sources/plugins/list/lang/fr-ca.js create mode 100644 sources/plugins/list/lang/fr.js create mode 100644 sources/plugins/list/lang/gl.js create mode 100644 sources/plugins/list/lang/gu.js create mode 100644 sources/plugins/list/lang/he.js create mode 100644 sources/plugins/list/lang/hi.js create mode 100644 sources/plugins/list/lang/hr.js create mode 100644 sources/plugins/list/lang/hu.js create mode 100644 sources/plugins/list/lang/id.js create mode 100644 sources/plugins/list/lang/is.js create mode 100644 sources/plugins/list/lang/it.js create mode 100644 sources/plugins/list/lang/ja.js create mode 100644 sources/plugins/list/lang/ka.js create mode 100644 sources/plugins/list/lang/km.js create mode 100644 sources/plugins/list/lang/ko.js create mode 100644 sources/plugins/list/lang/ku.js create mode 100644 sources/plugins/list/lang/lt.js create mode 100644 sources/plugins/list/lang/lv.js create mode 100644 sources/plugins/list/lang/mk.js create mode 100644 sources/plugins/list/lang/mn.js create mode 100644 sources/plugins/list/lang/ms.js create mode 100644 sources/plugins/list/lang/nb.js create mode 100644 sources/plugins/list/lang/nl.js create mode 100644 sources/plugins/list/lang/no.js create mode 100644 sources/plugins/list/lang/pl.js create mode 100644 sources/plugins/list/lang/pt-br.js create mode 100644 sources/plugins/list/lang/pt.js create mode 100644 sources/plugins/list/lang/ro.js create mode 100644 sources/plugins/list/lang/ru.js create mode 100644 sources/plugins/list/lang/si.js create mode 100644 sources/plugins/list/lang/sk.js create mode 100644 sources/plugins/list/lang/sl.js create mode 100644 sources/plugins/list/lang/sq.js create mode 100644 sources/plugins/list/lang/sr-latn.js create mode 100644 sources/plugins/list/lang/sr.js create mode 100644 sources/plugins/list/lang/sv.js create mode 100644 sources/plugins/list/lang/th.js create mode 100644 sources/plugins/list/lang/tr.js create mode 100644 sources/plugins/list/lang/tt.js create mode 100644 sources/plugins/list/lang/ug.js create mode 100644 sources/plugins/list/lang/uk.js create mode 100644 sources/plugins/list/lang/vi.js create mode 100644 sources/plugins/list/lang/zh-cn.js create mode 100644 sources/plugins/list/lang/zh.js create mode 100644 sources/plugins/list/plugin.js create mode 100644 sources/plugins/listblock/plugin.js create mode 100644 sources/plugins/liststyle/dialogs/liststyle.js create mode 100644 sources/plugins/liststyle/lang/af.js create mode 100644 sources/plugins/liststyle/lang/ar.js create mode 100644 sources/plugins/liststyle/lang/bg.js create mode 100644 sources/plugins/liststyle/lang/bn.js create mode 100644 sources/plugins/liststyle/lang/bs.js create mode 100644 sources/plugins/liststyle/lang/ca.js create mode 100644 sources/plugins/liststyle/lang/cs.js create mode 100644 sources/plugins/liststyle/lang/cy.js create mode 100644 sources/plugins/liststyle/lang/da.js create mode 100644 sources/plugins/liststyle/lang/de.js create mode 100644 sources/plugins/liststyle/lang/el.js create mode 100644 sources/plugins/liststyle/lang/en-au.js create mode 100644 sources/plugins/liststyle/lang/en-ca.js create mode 100644 sources/plugins/liststyle/lang/en-gb.js create mode 100644 sources/plugins/liststyle/lang/en.js create mode 100644 sources/plugins/liststyle/lang/eo.js create mode 100644 sources/plugins/liststyle/lang/es.js create mode 100644 sources/plugins/liststyle/lang/et.js create mode 100644 sources/plugins/liststyle/lang/eu.js create mode 100644 sources/plugins/liststyle/lang/fa.js create mode 100644 sources/plugins/liststyle/lang/fi.js create mode 100644 sources/plugins/liststyle/lang/fo.js create mode 100644 sources/plugins/liststyle/lang/fr-ca.js create mode 100644 sources/plugins/liststyle/lang/fr.js create mode 100644 sources/plugins/liststyle/lang/gl.js create mode 100644 sources/plugins/liststyle/lang/gu.js create mode 100644 sources/plugins/liststyle/lang/he.js create mode 100644 sources/plugins/liststyle/lang/hi.js create mode 100644 sources/plugins/liststyle/lang/hr.js create mode 100644 sources/plugins/liststyle/lang/hu.js create mode 100644 sources/plugins/liststyle/lang/id.js create mode 100644 sources/plugins/liststyle/lang/is.js create mode 100644 sources/plugins/liststyle/lang/it.js create mode 100644 sources/plugins/liststyle/lang/ja.js create mode 100644 sources/plugins/liststyle/lang/ka.js create mode 100644 sources/plugins/liststyle/lang/km.js create mode 100644 sources/plugins/liststyle/lang/ko.js create mode 100644 sources/plugins/liststyle/lang/ku.js create mode 100644 sources/plugins/liststyle/lang/lt.js create mode 100644 sources/plugins/liststyle/lang/lv.js create mode 100644 sources/plugins/liststyle/lang/mk.js create mode 100644 sources/plugins/liststyle/lang/mn.js create mode 100644 sources/plugins/liststyle/lang/ms.js create mode 100644 sources/plugins/liststyle/lang/nb.js create mode 100644 sources/plugins/liststyle/lang/nl.js create mode 100644 sources/plugins/liststyle/lang/no.js create mode 100644 sources/plugins/liststyle/lang/pl.js create mode 100644 sources/plugins/liststyle/lang/pt-br.js create mode 100644 sources/plugins/liststyle/lang/pt.js create mode 100644 sources/plugins/liststyle/lang/ro.js create mode 100644 sources/plugins/liststyle/lang/ru.js create mode 100644 sources/plugins/liststyle/lang/si.js create mode 100644 sources/plugins/liststyle/lang/sk.js create mode 100644 sources/plugins/liststyle/lang/sl.js create mode 100644 sources/plugins/liststyle/lang/sq.js create mode 100644 sources/plugins/liststyle/lang/sr-latn.js create mode 100644 sources/plugins/liststyle/lang/sr.js create mode 100644 sources/plugins/liststyle/lang/sv.js create mode 100644 sources/plugins/liststyle/lang/th.js create mode 100644 sources/plugins/liststyle/lang/tr.js create mode 100644 sources/plugins/liststyle/lang/tt.js create mode 100644 sources/plugins/liststyle/lang/ug.js create mode 100644 sources/plugins/liststyle/lang/uk.js create mode 100644 sources/plugins/liststyle/lang/vi.js create mode 100644 sources/plugins/liststyle/lang/zh-cn.js create mode 100644 sources/plugins/liststyle/lang/zh.js create mode 100644 sources/plugins/liststyle/plugin.js create mode 100644 sources/plugins/magicline/dev/magicline.html create mode 100644 sources/plugins/magicline/images/hidpi/icon-rtl.png create mode 100644 sources/plugins/magicline/images/hidpi/icon.png create mode 100644 sources/plugins/magicline/images/icon-rtl.png create mode 100644 sources/plugins/magicline/images/icon.png create mode 100644 sources/plugins/magicline/lang/af.js create mode 100644 sources/plugins/magicline/lang/ar.js create mode 100644 sources/plugins/magicline/lang/bg.js create mode 100644 sources/plugins/magicline/lang/ca.js create mode 100644 sources/plugins/magicline/lang/cs.js create mode 100644 sources/plugins/magicline/lang/cy.js create mode 100644 sources/plugins/magicline/lang/da.js create mode 100644 sources/plugins/magicline/lang/de.js create mode 100644 sources/plugins/magicline/lang/el.js create mode 100644 sources/plugins/magicline/lang/en-gb.js create mode 100644 sources/plugins/magicline/lang/en.js create mode 100644 sources/plugins/magicline/lang/eo.js create mode 100644 sources/plugins/magicline/lang/es.js create mode 100644 sources/plugins/magicline/lang/et.js create mode 100644 sources/plugins/magicline/lang/eu.js create mode 100644 sources/plugins/magicline/lang/fa.js create mode 100644 sources/plugins/magicline/lang/fi.js create mode 100644 sources/plugins/magicline/lang/fr-ca.js create mode 100644 sources/plugins/magicline/lang/fr.js create mode 100644 sources/plugins/magicline/lang/gl.js create mode 100644 sources/plugins/magicline/lang/he.js create mode 100644 sources/plugins/magicline/lang/hr.js create mode 100644 sources/plugins/magicline/lang/hu.js create mode 100644 sources/plugins/magicline/lang/id.js create mode 100644 sources/plugins/magicline/lang/it.js create mode 100644 sources/plugins/magicline/lang/ja.js create mode 100644 sources/plugins/magicline/lang/km.js create mode 100644 sources/plugins/magicline/lang/ko.js create mode 100644 sources/plugins/magicline/lang/ku.js create mode 100644 sources/plugins/magicline/lang/lv.js create mode 100644 sources/plugins/magicline/lang/nb.js create mode 100644 sources/plugins/magicline/lang/nl.js create mode 100644 sources/plugins/magicline/lang/no.js create mode 100644 sources/plugins/magicline/lang/pl.js create mode 100644 sources/plugins/magicline/lang/pt-br.js create mode 100644 sources/plugins/magicline/lang/pt.js create mode 100644 sources/plugins/magicline/lang/ru.js create mode 100644 sources/plugins/magicline/lang/si.js create mode 100644 sources/plugins/magicline/lang/sk.js create mode 100644 sources/plugins/magicline/lang/sl.js create mode 100644 sources/plugins/magicline/lang/sq.js create mode 100644 sources/plugins/magicline/lang/sv.js create mode 100644 sources/plugins/magicline/lang/tr.js create mode 100644 sources/plugins/magicline/lang/tt.js create mode 100644 sources/plugins/magicline/lang/ug.js create mode 100644 sources/plugins/magicline/lang/uk.js create mode 100644 sources/plugins/magicline/lang/vi.js create mode 100644 sources/plugins/magicline/lang/zh-cn.js create mode 100644 sources/plugins/magicline/lang/zh.js create mode 100644 sources/plugins/magicline/plugin.js create mode 100644 sources/plugins/magicline/samples/magicline.html create mode 100644 sources/plugins/maximize/icons/hidpi/maximize.png create mode 100644 sources/plugins/maximize/icons/maximize.png create mode 100644 sources/plugins/maximize/lang/af.js create mode 100644 sources/plugins/maximize/lang/ar.js create mode 100644 sources/plugins/maximize/lang/bg.js create mode 100644 sources/plugins/maximize/lang/bn.js create mode 100644 sources/plugins/maximize/lang/bs.js create mode 100644 sources/plugins/maximize/lang/ca.js create mode 100644 sources/plugins/maximize/lang/cs.js create mode 100644 sources/plugins/maximize/lang/cy.js create mode 100644 sources/plugins/maximize/lang/da.js create mode 100644 sources/plugins/maximize/lang/de.js create mode 100644 sources/plugins/maximize/lang/el.js create mode 100644 sources/plugins/maximize/lang/en-au.js create mode 100644 sources/plugins/maximize/lang/en-ca.js create mode 100644 sources/plugins/maximize/lang/en-gb.js create mode 100644 sources/plugins/maximize/lang/en.js create mode 100644 sources/plugins/maximize/lang/eo.js create mode 100644 sources/plugins/maximize/lang/es.js create mode 100644 sources/plugins/maximize/lang/et.js create mode 100644 sources/plugins/maximize/lang/eu.js create mode 100644 sources/plugins/maximize/lang/fa.js create mode 100644 sources/plugins/maximize/lang/fi.js create mode 100644 sources/plugins/maximize/lang/fo.js create mode 100644 sources/plugins/maximize/lang/fr-ca.js create mode 100644 sources/plugins/maximize/lang/fr.js create mode 100644 sources/plugins/maximize/lang/gl.js create mode 100644 sources/plugins/maximize/lang/gu.js create mode 100644 sources/plugins/maximize/lang/he.js create mode 100644 sources/plugins/maximize/lang/hi.js create mode 100644 sources/plugins/maximize/lang/hr.js create mode 100644 sources/plugins/maximize/lang/hu.js create mode 100644 sources/plugins/maximize/lang/id.js create mode 100644 sources/plugins/maximize/lang/is.js create mode 100644 sources/plugins/maximize/lang/it.js create mode 100644 sources/plugins/maximize/lang/ja.js create mode 100644 sources/plugins/maximize/lang/ka.js create mode 100644 sources/plugins/maximize/lang/km.js create mode 100644 sources/plugins/maximize/lang/ko.js create mode 100644 sources/plugins/maximize/lang/ku.js create mode 100644 sources/plugins/maximize/lang/lt.js create mode 100644 sources/plugins/maximize/lang/lv.js create mode 100644 sources/plugins/maximize/lang/mk.js create mode 100644 sources/plugins/maximize/lang/mn.js create mode 100644 sources/plugins/maximize/lang/ms.js create mode 100644 sources/plugins/maximize/lang/nb.js create mode 100644 sources/plugins/maximize/lang/nl.js create mode 100644 sources/plugins/maximize/lang/no.js create mode 100644 sources/plugins/maximize/lang/pl.js create mode 100644 sources/plugins/maximize/lang/pt-br.js create mode 100644 sources/plugins/maximize/lang/pt.js create mode 100644 sources/plugins/maximize/lang/ro.js create mode 100644 sources/plugins/maximize/lang/ru.js create mode 100644 sources/plugins/maximize/lang/si.js create mode 100644 sources/plugins/maximize/lang/sk.js create mode 100644 sources/plugins/maximize/lang/sl.js create mode 100644 sources/plugins/maximize/lang/sq.js create mode 100644 sources/plugins/maximize/lang/sr-latn.js create mode 100644 sources/plugins/maximize/lang/sr.js create mode 100644 sources/plugins/maximize/lang/sv.js create mode 100644 sources/plugins/maximize/lang/th.js create mode 100644 sources/plugins/maximize/lang/tr.js create mode 100644 sources/plugins/maximize/lang/tt.js create mode 100644 sources/plugins/maximize/lang/ug.js create mode 100644 sources/plugins/maximize/lang/uk.js create mode 100644 sources/plugins/maximize/lang/vi.js create mode 100644 sources/plugins/maximize/lang/zh-cn.js create mode 100644 sources/plugins/maximize/lang/zh.js create mode 100644 sources/plugins/maximize/plugin.js create mode 100644 sources/plugins/menu/plugin.js create mode 100644 sources/plugins/menubutton/plugin.js create mode 100644 sources/plugins/newpage/icons/hidpi/newpage-rtl.png create mode 100644 sources/plugins/newpage/icons/hidpi/newpage.png create mode 100644 sources/plugins/newpage/icons/newpage-rtl.png create mode 100644 sources/plugins/newpage/icons/newpage.png create mode 100644 sources/plugins/newpage/lang/af.js create mode 100644 sources/plugins/newpage/lang/ar.js create mode 100644 sources/plugins/newpage/lang/bg.js create mode 100644 sources/plugins/newpage/lang/bn.js create mode 100644 sources/plugins/newpage/lang/bs.js create mode 100644 sources/plugins/newpage/lang/ca.js create mode 100644 sources/plugins/newpage/lang/cs.js create mode 100644 sources/plugins/newpage/lang/cy.js create mode 100644 sources/plugins/newpage/lang/da.js create mode 100644 sources/plugins/newpage/lang/de.js create mode 100644 sources/plugins/newpage/lang/el.js create mode 100644 sources/plugins/newpage/lang/en-au.js create mode 100644 sources/plugins/newpage/lang/en-ca.js create mode 100644 sources/plugins/newpage/lang/en-gb.js create mode 100644 sources/plugins/newpage/lang/en.js create mode 100644 sources/plugins/newpage/lang/eo.js create mode 100644 sources/plugins/newpage/lang/es.js create mode 100644 sources/plugins/newpage/lang/et.js create mode 100644 sources/plugins/newpage/lang/eu.js create mode 100644 sources/plugins/newpage/lang/fa.js create mode 100644 sources/plugins/newpage/lang/fi.js create mode 100644 sources/plugins/newpage/lang/fo.js create mode 100644 sources/plugins/newpage/lang/fr-ca.js create mode 100644 sources/plugins/newpage/lang/fr.js create mode 100644 sources/plugins/newpage/lang/gl.js create mode 100644 sources/plugins/newpage/lang/gu.js create mode 100644 sources/plugins/newpage/lang/he.js create mode 100644 sources/plugins/newpage/lang/hi.js create mode 100644 sources/plugins/newpage/lang/hr.js create mode 100644 sources/plugins/newpage/lang/hu.js create mode 100644 sources/plugins/newpage/lang/id.js create mode 100644 sources/plugins/newpage/lang/is.js create mode 100644 sources/plugins/newpage/lang/it.js create mode 100644 sources/plugins/newpage/lang/ja.js create mode 100644 sources/plugins/newpage/lang/ka.js create mode 100644 sources/plugins/newpage/lang/km.js create mode 100644 sources/plugins/newpage/lang/ko.js create mode 100644 sources/plugins/newpage/lang/ku.js create mode 100644 sources/plugins/newpage/lang/lt.js create mode 100644 sources/plugins/newpage/lang/lv.js create mode 100644 sources/plugins/newpage/lang/mk.js create mode 100644 sources/plugins/newpage/lang/mn.js create mode 100644 sources/plugins/newpage/lang/ms.js create mode 100644 sources/plugins/newpage/lang/nb.js create mode 100644 sources/plugins/newpage/lang/nl.js create mode 100644 sources/plugins/newpage/lang/no.js create mode 100644 sources/plugins/newpage/lang/pl.js create mode 100644 sources/plugins/newpage/lang/pt-br.js create mode 100644 sources/plugins/newpage/lang/pt.js create mode 100644 sources/plugins/newpage/lang/ro.js create mode 100644 sources/plugins/newpage/lang/ru.js create mode 100644 sources/plugins/newpage/lang/si.js create mode 100644 sources/plugins/newpage/lang/sk.js create mode 100644 sources/plugins/newpage/lang/sl.js create mode 100644 sources/plugins/newpage/lang/sq.js create mode 100644 sources/plugins/newpage/lang/sr-latn.js create mode 100644 sources/plugins/newpage/lang/sr.js create mode 100644 sources/plugins/newpage/lang/sv.js create mode 100644 sources/plugins/newpage/lang/th.js create mode 100644 sources/plugins/newpage/lang/tr.js create mode 100644 sources/plugins/newpage/lang/tt.js create mode 100644 sources/plugins/newpage/lang/ug.js create mode 100644 sources/plugins/newpage/lang/uk.js create mode 100644 sources/plugins/newpage/lang/vi.js create mode 100644 sources/plugins/newpage/lang/zh-cn.js create mode 100644 sources/plugins/newpage/lang/zh.js create mode 100644 sources/plugins/newpage/plugin.js create mode 100644 sources/plugins/pagebreak/icons/hidpi/pagebreak-rtl.png create mode 100644 sources/plugins/pagebreak/icons/hidpi/pagebreak.png create mode 100644 sources/plugins/pagebreak/icons/pagebreak-rtl.png create mode 100644 sources/plugins/pagebreak/icons/pagebreak.png create mode 100644 sources/plugins/pagebreak/images/pagebreak.gif create mode 100644 sources/plugins/pagebreak/lang/af.js create mode 100644 sources/plugins/pagebreak/lang/ar.js create mode 100644 sources/plugins/pagebreak/lang/bg.js create mode 100644 sources/plugins/pagebreak/lang/bn.js create mode 100644 sources/plugins/pagebreak/lang/bs.js create mode 100644 sources/plugins/pagebreak/lang/ca.js create mode 100644 sources/plugins/pagebreak/lang/cs.js create mode 100644 sources/plugins/pagebreak/lang/cy.js create mode 100644 sources/plugins/pagebreak/lang/da.js create mode 100644 sources/plugins/pagebreak/lang/de.js create mode 100644 sources/plugins/pagebreak/lang/el.js create mode 100644 sources/plugins/pagebreak/lang/en-au.js create mode 100644 sources/plugins/pagebreak/lang/en-ca.js create mode 100644 sources/plugins/pagebreak/lang/en-gb.js create mode 100644 sources/plugins/pagebreak/lang/en.js create mode 100644 sources/plugins/pagebreak/lang/eo.js create mode 100644 sources/plugins/pagebreak/lang/es.js create mode 100644 sources/plugins/pagebreak/lang/et.js create mode 100644 sources/plugins/pagebreak/lang/eu.js create mode 100644 sources/plugins/pagebreak/lang/fa.js create mode 100644 sources/plugins/pagebreak/lang/fi.js create mode 100644 sources/plugins/pagebreak/lang/fo.js create mode 100644 sources/plugins/pagebreak/lang/fr-ca.js create mode 100644 sources/plugins/pagebreak/lang/fr.js create mode 100644 sources/plugins/pagebreak/lang/gl.js create mode 100644 sources/plugins/pagebreak/lang/gu.js create mode 100644 sources/plugins/pagebreak/lang/he.js create mode 100644 sources/plugins/pagebreak/lang/hi.js create mode 100644 sources/plugins/pagebreak/lang/hr.js create mode 100644 sources/plugins/pagebreak/lang/hu.js create mode 100644 sources/plugins/pagebreak/lang/id.js create mode 100644 sources/plugins/pagebreak/lang/is.js create mode 100644 sources/plugins/pagebreak/lang/it.js create mode 100644 sources/plugins/pagebreak/lang/ja.js create mode 100644 sources/plugins/pagebreak/lang/ka.js create mode 100644 sources/plugins/pagebreak/lang/km.js create mode 100644 sources/plugins/pagebreak/lang/ko.js create mode 100644 sources/plugins/pagebreak/lang/ku.js create mode 100644 sources/plugins/pagebreak/lang/lt.js create mode 100644 sources/plugins/pagebreak/lang/lv.js create mode 100644 sources/plugins/pagebreak/lang/mk.js create mode 100644 sources/plugins/pagebreak/lang/mn.js create mode 100644 sources/plugins/pagebreak/lang/ms.js create mode 100644 sources/plugins/pagebreak/lang/nb.js create mode 100644 sources/plugins/pagebreak/lang/nl.js create mode 100644 sources/plugins/pagebreak/lang/no.js create mode 100644 sources/plugins/pagebreak/lang/pl.js create mode 100644 sources/plugins/pagebreak/lang/pt-br.js create mode 100644 sources/plugins/pagebreak/lang/pt.js create mode 100644 sources/plugins/pagebreak/lang/ro.js create mode 100644 sources/plugins/pagebreak/lang/ru.js create mode 100644 sources/plugins/pagebreak/lang/si.js create mode 100644 sources/plugins/pagebreak/lang/sk.js create mode 100644 sources/plugins/pagebreak/lang/sl.js create mode 100644 sources/plugins/pagebreak/lang/sq.js create mode 100644 sources/plugins/pagebreak/lang/sr-latn.js create mode 100644 sources/plugins/pagebreak/lang/sr.js create mode 100644 sources/plugins/pagebreak/lang/sv.js create mode 100644 sources/plugins/pagebreak/lang/th.js create mode 100644 sources/plugins/pagebreak/lang/tr.js create mode 100644 sources/plugins/pagebreak/lang/tt.js create mode 100644 sources/plugins/pagebreak/lang/ug.js create mode 100644 sources/plugins/pagebreak/lang/uk.js create mode 100644 sources/plugins/pagebreak/lang/vi.js create mode 100644 sources/plugins/pagebreak/lang/zh-cn.js create mode 100644 sources/plugins/pagebreak/lang/zh.js create mode 100644 sources/plugins/pagebreak/plugin.js create mode 100644 sources/plugins/panel/plugin.js create mode 100644 sources/plugins/panelbutton/plugin.js create mode 100644 sources/plugins/pastefromword/filter/default.js create mode 100644 sources/plugins/pastefromword/icons/hidpi/pastefromword-rtl.png create mode 100644 sources/plugins/pastefromword/icons/hidpi/pastefromword.png create mode 100644 sources/plugins/pastefromword/icons/pastefromword-rtl.png create mode 100644 sources/plugins/pastefromword/icons/pastefromword.png create mode 100644 sources/plugins/pastefromword/lang/af.js create mode 100644 sources/plugins/pastefromword/lang/ar.js create mode 100644 sources/plugins/pastefromword/lang/bg.js create mode 100644 sources/plugins/pastefromword/lang/bn.js create mode 100644 sources/plugins/pastefromword/lang/bs.js create mode 100644 sources/plugins/pastefromword/lang/ca.js create mode 100644 sources/plugins/pastefromword/lang/cs.js create mode 100644 sources/plugins/pastefromword/lang/cy.js create mode 100644 sources/plugins/pastefromword/lang/da.js create mode 100644 sources/plugins/pastefromword/lang/de.js create mode 100644 sources/plugins/pastefromword/lang/el.js create mode 100644 sources/plugins/pastefromword/lang/en-au.js create mode 100644 sources/plugins/pastefromword/lang/en-ca.js create mode 100644 sources/plugins/pastefromword/lang/en-gb.js create mode 100644 sources/plugins/pastefromword/lang/en.js create mode 100644 sources/plugins/pastefromword/lang/eo.js create mode 100644 sources/plugins/pastefromword/lang/es.js create mode 100644 sources/plugins/pastefromword/lang/et.js create mode 100644 sources/plugins/pastefromword/lang/eu.js create mode 100644 sources/plugins/pastefromword/lang/fa.js create mode 100644 sources/plugins/pastefromword/lang/fi.js create mode 100644 sources/plugins/pastefromword/lang/fo.js create mode 100644 sources/plugins/pastefromword/lang/fr-ca.js create mode 100644 sources/plugins/pastefromword/lang/fr.js create mode 100644 sources/plugins/pastefromword/lang/gl.js create mode 100644 sources/plugins/pastefromword/lang/gu.js create mode 100644 sources/plugins/pastefromword/lang/he.js create mode 100644 sources/plugins/pastefromword/lang/hi.js create mode 100644 sources/plugins/pastefromword/lang/hr.js create mode 100644 sources/plugins/pastefromword/lang/hu.js create mode 100644 sources/plugins/pastefromword/lang/id.js create mode 100644 sources/plugins/pastefromword/lang/is.js create mode 100644 sources/plugins/pastefromword/lang/it.js create mode 100644 sources/plugins/pastefromword/lang/ja.js create mode 100644 sources/plugins/pastefromword/lang/ka.js create mode 100644 sources/plugins/pastefromword/lang/km.js create mode 100644 sources/plugins/pastefromword/lang/ko.js create mode 100644 sources/plugins/pastefromword/lang/ku.js create mode 100644 sources/plugins/pastefromword/lang/lt.js create mode 100644 sources/plugins/pastefromword/lang/lv.js create mode 100644 sources/plugins/pastefromword/lang/mk.js create mode 100644 sources/plugins/pastefromword/lang/mn.js create mode 100644 sources/plugins/pastefromword/lang/ms.js create mode 100644 sources/plugins/pastefromword/lang/nb.js create mode 100644 sources/plugins/pastefromword/lang/nl.js create mode 100644 sources/plugins/pastefromword/lang/no.js create mode 100644 sources/plugins/pastefromword/lang/pl.js create mode 100644 sources/plugins/pastefromword/lang/pt-br.js create mode 100644 sources/plugins/pastefromword/lang/pt.js create mode 100644 sources/plugins/pastefromword/lang/ro.js create mode 100644 sources/plugins/pastefromword/lang/ru.js create mode 100644 sources/plugins/pastefromword/lang/si.js create mode 100644 sources/plugins/pastefromword/lang/sk.js create mode 100644 sources/plugins/pastefromword/lang/sl.js create mode 100644 sources/plugins/pastefromword/lang/sq.js create mode 100644 sources/plugins/pastefromword/lang/sr-latn.js create mode 100644 sources/plugins/pastefromword/lang/sr.js create mode 100644 sources/plugins/pastefromword/lang/sv.js create mode 100644 sources/plugins/pastefromword/lang/th.js create mode 100644 sources/plugins/pastefromword/lang/tr.js create mode 100644 sources/plugins/pastefromword/lang/tt.js create mode 100644 sources/plugins/pastefromword/lang/ug.js create mode 100644 sources/plugins/pastefromword/lang/uk.js create mode 100644 sources/plugins/pastefromword/lang/vi.js create mode 100644 sources/plugins/pastefromword/lang/zh-cn.js create mode 100644 sources/plugins/pastefromword/lang/zh.js create mode 100644 sources/plugins/pastefromword/plugin.js create mode 100644 sources/plugins/pastetext/icons/hidpi/pastetext-rtl.png create mode 100644 sources/plugins/pastetext/icons/hidpi/pastetext.png create mode 100644 sources/plugins/pastetext/icons/pastetext-rtl.png create mode 100644 sources/plugins/pastetext/icons/pastetext.png create mode 100644 sources/plugins/pastetext/lang/af.js create mode 100644 sources/plugins/pastetext/lang/ar.js create mode 100644 sources/plugins/pastetext/lang/bg.js create mode 100644 sources/plugins/pastetext/lang/bn.js create mode 100644 sources/plugins/pastetext/lang/bs.js create mode 100644 sources/plugins/pastetext/lang/ca.js create mode 100644 sources/plugins/pastetext/lang/cs.js create mode 100644 sources/plugins/pastetext/lang/cy.js create mode 100644 sources/plugins/pastetext/lang/da.js create mode 100644 sources/plugins/pastetext/lang/de.js create mode 100644 sources/plugins/pastetext/lang/el.js create mode 100644 sources/plugins/pastetext/lang/en-au.js create mode 100644 sources/plugins/pastetext/lang/en-ca.js create mode 100644 sources/plugins/pastetext/lang/en-gb.js create mode 100644 sources/plugins/pastetext/lang/en.js create mode 100644 sources/plugins/pastetext/lang/eo.js create mode 100644 sources/plugins/pastetext/lang/es.js create mode 100644 sources/plugins/pastetext/lang/et.js create mode 100644 sources/plugins/pastetext/lang/eu.js create mode 100644 sources/plugins/pastetext/lang/fa.js create mode 100644 sources/plugins/pastetext/lang/fi.js create mode 100644 sources/plugins/pastetext/lang/fo.js create mode 100644 sources/plugins/pastetext/lang/fr-ca.js create mode 100644 sources/plugins/pastetext/lang/fr.js create mode 100644 sources/plugins/pastetext/lang/gl.js create mode 100644 sources/plugins/pastetext/lang/gu.js create mode 100644 sources/plugins/pastetext/lang/he.js create mode 100644 sources/plugins/pastetext/lang/hi.js create mode 100644 sources/plugins/pastetext/lang/hr.js create mode 100644 sources/plugins/pastetext/lang/hu.js create mode 100644 sources/plugins/pastetext/lang/id.js create mode 100644 sources/plugins/pastetext/lang/is.js create mode 100644 sources/plugins/pastetext/lang/it.js create mode 100644 sources/plugins/pastetext/lang/ja.js create mode 100644 sources/plugins/pastetext/lang/ka.js create mode 100644 sources/plugins/pastetext/lang/km.js create mode 100644 sources/plugins/pastetext/lang/ko.js create mode 100644 sources/plugins/pastetext/lang/ku.js create mode 100644 sources/plugins/pastetext/lang/lt.js create mode 100644 sources/plugins/pastetext/lang/lv.js create mode 100644 sources/plugins/pastetext/lang/mk.js create mode 100644 sources/plugins/pastetext/lang/mn.js create mode 100644 sources/plugins/pastetext/lang/ms.js create mode 100644 sources/plugins/pastetext/lang/nb.js create mode 100644 sources/plugins/pastetext/lang/nl.js create mode 100644 sources/plugins/pastetext/lang/no.js create mode 100644 sources/plugins/pastetext/lang/pl.js create mode 100644 sources/plugins/pastetext/lang/pt-br.js create mode 100644 sources/plugins/pastetext/lang/pt.js create mode 100644 sources/plugins/pastetext/lang/ro.js create mode 100644 sources/plugins/pastetext/lang/ru.js create mode 100644 sources/plugins/pastetext/lang/si.js create mode 100644 sources/plugins/pastetext/lang/sk.js create mode 100644 sources/plugins/pastetext/lang/sl.js create mode 100644 sources/plugins/pastetext/lang/sq.js create mode 100644 sources/plugins/pastetext/lang/sr-latn.js create mode 100644 sources/plugins/pastetext/lang/sr.js create mode 100644 sources/plugins/pastetext/lang/sv.js create mode 100644 sources/plugins/pastetext/lang/th.js create mode 100644 sources/plugins/pastetext/lang/tr.js create mode 100644 sources/plugins/pastetext/lang/tt.js create mode 100644 sources/plugins/pastetext/lang/ug.js create mode 100644 sources/plugins/pastetext/lang/uk.js create mode 100644 sources/plugins/pastetext/lang/vi.js create mode 100644 sources/plugins/pastetext/lang/zh-cn.js create mode 100644 sources/plugins/pastetext/lang/zh.js create mode 100644 sources/plugins/pastetext/plugin.js create mode 100644 sources/plugins/popup/plugin.js create mode 100644 sources/plugins/preview/icons/hidpi/preview-rtl.png create mode 100644 sources/plugins/preview/icons/hidpi/preview.png create mode 100644 sources/plugins/preview/icons/preview-rtl.png create mode 100644 sources/plugins/preview/icons/preview.png create mode 100644 sources/plugins/preview/lang/af.js create mode 100644 sources/plugins/preview/lang/ar.js create mode 100644 sources/plugins/preview/lang/bg.js create mode 100644 sources/plugins/preview/lang/bn.js create mode 100644 sources/plugins/preview/lang/bs.js create mode 100644 sources/plugins/preview/lang/ca.js create mode 100644 sources/plugins/preview/lang/cs.js create mode 100644 sources/plugins/preview/lang/cy.js create mode 100644 sources/plugins/preview/lang/da.js create mode 100644 sources/plugins/preview/lang/de.js create mode 100644 sources/plugins/preview/lang/el.js create mode 100644 sources/plugins/preview/lang/en-au.js create mode 100644 sources/plugins/preview/lang/en-ca.js create mode 100644 sources/plugins/preview/lang/en-gb.js create mode 100644 sources/plugins/preview/lang/en.js create mode 100644 sources/plugins/preview/lang/eo.js create mode 100644 sources/plugins/preview/lang/es.js create mode 100644 sources/plugins/preview/lang/et.js create mode 100644 sources/plugins/preview/lang/eu.js create mode 100644 sources/plugins/preview/lang/fa.js create mode 100644 sources/plugins/preview/lang/fi.js create mode 100644 sources/plugins/preview/lang/fo.js create mode 100644 sources/plugins/preview/lang/fr-ca.js create mode 100644 sources/plugins/preview/lang/fr.js create mode 100644 sources/plugins/preview/lang/gl.js create mode 100644 sources/plugins/preview/lang/gu.js create mode 100644 sources/plugins/preview/lang/he.js create mode 100644 sources/plugins/preview/lang/hi.js create mode 100644 sources/plugins/preview/lang/hr.js create mode 100644 sources/plugins/preview/lang/hu.js create mode 100644 sources/plugins/preview/lang/id.js create mode 100644 sources/plugins/preview/lang/is.js create mode 100644 sources/plugins/preview/lang/it.js create mode 100644 sources/plugins/preview/lang/ja.js create mode 100644 sources/plugins/preview/lang/ka.js create mode 100644 sources/plugins/preview/lang/km.js create mode 100644 sources/plugins/preview/lang/ko.js create mode 100644 sources/plugins/preview/lang/ku.js create mode 100644 sources/plugins/preview/lang/lt.js create mode 100644 sources/plugins/preview/lang/lv.js create mode 100644 sources/plugins/preview/lang/mk.js create mode 100644 sources/plugins/preview/lang/mn.js create mode 100644 sources/plugins/preview/lang/ms.js create mode 100644 sources/plugins/preview/lang/nb.js create mode 100644 sources/plugins/preview/lang/nl.js create mode 100644 sources/plugins/preview/lang/no.js create mode 100644 sources/plugins/preview/lang/pl.js create mode 100644 sources/plugins/preview/lang/pt-br.js create mode 100644 sources/plugins/preview/lang/pt.js create mode 100644 sources/plugins/preview/lang/ro.js create mode 100644 sources/plugins/preview/lang/ru.js create mode 100644 sources/plugins/preview/lang/si.js create mode 100644 sources/plugins/preview/lang/sk.js create mode 100644 sources/plugins/preview/lang/sl.js create mode 100644 sources/plugins/preview/lang/sq.js create mode 100644 sources/plugins/preview/lang/sr-latn.js create mode 100644 sources/plugins/preview/lang/sr.js create mode 100644 sources/plugins/preview/lang/sv.js create mode 100644 sources/plugins/preview/lang/th.js create mode 100644 sources/plugins/preview/lang/tr.js create mode 100644 sources/plugins/preview/lang/tt.js create mode 100644 sources/plugins/preview/lang/ug.js create mode 100644 sources/plugins/preview/lang/uk.js create mode 100644 sources/plugins/preview/lang/vi.js create mode 100644 sources/plugins/preview/lang/zh-cn.js create mode 100644 sources/plugins/preview/lang/zh.js create mode 100644 sources/plugins/preview/plugin.js create mode 100644 sources/plugins/preview/preview.html create mode 100644 sources/plugins/print/icons/hidpi/print.png create mode 100644 sources/plugins/print/icons/print.png create mode 100644 sources/plugins/print/lang/af.js create mode 100644 sources/plugins/print/lang/ar.js create mode 100644 sources/plugins/print/lang/bg.js create mode 100644 sources/plugins/print/lang/bn.js create mode 100644 sources/plugins/print/lang/bs.js create mode 100644 sources/plugins/print/lang/ca.js create mode 100644 sources/plugins/print/lang/cs.js create mode 100644 sources/plugins/print/lang/cy.js create mode 100644 sources/plugins/print/lang/da.js create mode 100644 sources/plugins/print/lang/de.js create mode 100644 sources/plugins/print/lang/el.js create mode 100644 sources/plugins/print/lang/en-au.js create mode 100644 sources/plugins/print/lang/en-ca.js create mode 100644 sources/plugins/print/lang/en-gb.js create mode 100644 sources/plugins/print/lang/en.js create mode 100644 sources/plugins/print/lang/eo.js create mode 100644 sources/plugins/print/lang/es.js create mode 100644 sources/plugins/print/lang/et.js create mode 100644 sources/plugins/print/lang/eu.js create mode 100644 sources/plugins/print/lang/fa.js create mode 100644 sources/plugins/print/lang/fi.js create mode 100644 sources/plugins/print/lang/fo.js create mode 100644 sources/plugins/print/lang/fr-ca.js create mode 100644 sources/plugins/print/lang/fr.js create mode 100644 sources/plugins/print/lang/gl.js create mode 100644 sources/plugins/print/lang/gu.js create mode 100644 sources/plugins/print/lang/he.js create mode 100644 sources/plugins/print/lang/hi.js create mode 100644 sources/plugins/print/lang/hr.js create mode 100644 sources/plugins/print/lang/hu.js create mode 100644 sources/plugins/print/lang/id.js create mode 100644 sources/plugins/print/lang/is.js create mode 100644 sources/plugins/print/lang/it.js create mode 100644 sources/plugins/print/lang/ja.js create mode 100644 sources/plugins/print/lang/ka.js create mode 100644 sources/plugins/print/lang/km.js create mode 100644 sources/plugins/print/lang/ko.js create mode 100644 sources/plugins/print/lang/ku.js create mode 100644 sources/plugins/print/lang/lt.js create mode 100644 sources/plugins/print/lang/lv.js create mode 100644 sources/plugins/print/lang/mk.js create mode 100644 sources/plugins/print/lang/mn.js create mode 100644 sources/plugins/print/lang/ms.js create mode 100644 sources/plugins/print/lang/nb.js create mode 100644 sources/plugins/print/lang/nl.js create mode 100644 sources/plugins/print/lang/no.js create mode 100644 sources/plugins/print/lang/pl.js create mode 100644 sources/plugins/print/lang/pt-br.js create mode 100644 sources/plugins/print/lang/pt.js create mode 100644 sources/plugins/print/lang/ro.js create mode 100644 sources/plugins/print/lang/ru.js create mode 100644 sources/plugins/print/lang/si.js create mode 100644 sources/plugins/print/lang/sk.js create mode 100644 sources/plugins/print/lang/sl.js create mode 100644 sources/plugins/print/lang/sq.js create mode 100644 sources/plugins/print/lang/sr-latn.js create mode 100644 sources/plugins/print/lang/sr.js create mode 100644 sources/plugins/print/lang/sv.js create mode 100644 sources/plugins/print/lang/th.js create mode 100644 sources/plugins/print/lang/tr.js create mode 100644 sources/plugins/print/lang/tt.js create mode 100644 sources/plugins/print/lang/ug.js create mode 100644 sources/plugins/print/lang/uk.js create mode 100644 sources/plugins/print/lang/vi.js create mode 100644 sources/plugins/print/lang/zh-cn.js create mode 100644 sources/plugins/print/lang/zh.js create mode 100644 sources/plugins/print/plugin.js create mode 100644 sources/plugins/removeformat/icons/hidpi/removeformat.png create mode 100644 sources/plugins/removeformat/icons/removeformat.png create mode 100644 sources/plugins/removeformat/lang/af.js create mode 100644 sources/plugins/removeformat/lang/ar.js create mode 100644 sources/plugins/removeformat/lang/bg.js create mode 100644 sources/plugins/removeformat/lang/bn.js create mode 100644 sources/plugins/removeformat/lang/bs.js create mode 100644 sources/plugins/removeformat/lang/ca.js create mode 100644 sources/plugins/removeformat/lang/cs.js create mode 100644 sources/plugins/removeformat/lang/cy.js create mode 100644 sources/plugins/removeformat/lang/da.js create mode 100644 sources/plugins/removeformat/lang/de.js create mode 100644 sources/plugins/removeformat/lang/el.js create mode 100644 sources/plugins/removeformat/lang/en-au.js create mode 100644 sources/plugins/removeformat/lang/en-ca.js create mode 100644 sources/plugins/removeformat/lang/en-gb.js create mode 100644 sources/plugins/removeformat/lang/en.js create mode 100644 sources/plugins/removeformat/lang/eo.js create mode 100644 sources/plugins/removeformat/lang/es.js create mode 100644 sources/plugins/removeformat/lang/et.js create mode 100644 sources/plugins/removeformat/lang/eu.js create mode 100644 sources/plugins/removeformat/lang/fa.js create mode 100644 sources/plugins/removeformat/lang/fi.js create mode 100644 sources/plugins/removeformat/lang/fo.js create mode 100644 sources/plugins/removeformat/lang/fr-ca.js create mode 100644 sources/plugins/removeformat/lang/fr.js create mode 100644 sources/plugins/removeformat/lang/gl.js create mode 100644 sources/plugins/removeformat/lang/gu.js create mode 100644 sources/plugins/removeformat/lang/he.js create mode 100644 sources/plugins/removeformat/lang/hi.js create mode 100644 sources/plugins/removeformat/lang/hr.js create mode 100644 sources/plugins/removeformat/lang/hu.js create mode 100644 sources/plugins/removeformat/lang/id.js create mode 100644 sources/plugins/removeformat/lang/is.js create mode 100644 sources/plugins/removeformat/lang/it.js create mode 100644 sources/plugins/removeformat/lang/ja.js create mode 100644 sources/plugins/removeformat/lang/ka.js create mode 100644 sources/plugins/removeformat/lang/km.js create mode 100644 sources/plugins/removeformat/lang/ko.js create mode 100644 sources/plugins/removeformat/lang/ku.js create mode 100644 sources/plugins/removeformat/lang/lt.js create mode 100644 sources/plugins/removeformat/lang/lv.js create mode 100644 sources/plugins/removeformat/lang/mk.js create mode 100644 sources/plugins/removeformat/lang/mn.js create mode 100644 sources/plugins/removeformat/lang/ms.js create mode 100644 sources/plugins/removeformat/lang/nb.js create mode 100644 sources/plugins/removeformat/lang/nl.js create mode 100644 sources/plugins/removeformat/lang/no.js create mode 100644 sources/plugins/removeformat/lang/pl.js create mode 100644 sources/plugins/removeformat/lang/pt-br.js create mode 100644 sources/plugins/removeformat/lang/pt.js create mode 100644 sources/plugins/removeformat/lang/ro.js create mode 100644 sources/plugins/removeformat/lang/ru.js create mode 100644 sources/plugins/removeformat/lang/si.js create mode 100644 sources/plugins/removeformat/lang/sk.js create mode 100644 sources/plugins/removeformat/lang/sl.js create mode 100644 sources/plugins/removeformat/lang/sq.js create mode 100644 sources/plugins/removeformat/lang/sr-latn.js create mode 100644 sources/plugins/removeformat/lang/sr.js create mode 100644 sources/plugins/removeformat/lang/sv.js create mode 100644 sources/plugins/removeformat/lang/th.js create mode 100644 sources/plugins/removeformat/lang/tr.js create mode 100644 sources/plugins/removeformat/lang/tt.js create mode 100644 sources/plugins/removeformat/lang/ug.js create mode 100644 sources/plugins/removeformat/lang/uk.js create mode 100644 sources/plugins/removeformat/lang/vi.js create mode 100644 sources/plugins/removeformat/lang/zh-cn.js create mode 100644 sources/plugins/removeformat/lang/zh.js create mode 100644 sources/plugins/removeformat/plugin.js create mode 100644 sources/plugins/resize/plugin.js create mode 100644 sources/plugins/richcombo/plugin.js create mode 100644 sources/plugins/save/icons/hidpi/save.png create mode 100644 sources/plugins/save/icons/save.png create mode 100644 sources/plugins/save/lang/af.js create mode 100644 sources/plugins/save/lang/ar.js create mode 100644 sources/plugins/save/lang/bg.js create mode 100644 sources/plugins/save/lang/bn.js create mode 100644 sources/plugins/save/lang/bs.js create mode 100644 sources/plugins/save/lang/ca.js create mode 100644 sources/plugins/save/lang/cs.js create mode 100644 sources/plugins/save/lang/cy.js create mode 100644 sources/plugins/save/lang/da.js create mode 100644 sources/plugins/save/lang/de.js create mode 100644 sources/plugins/save/lang/el.js create mode 100644 sources/plugins/save/lang/en-au.js create mode 100644 sources/plugins/save/lang/en-ca.js create mode 100644 sources/plugins/save/lang/en-gb.js create mode 100644 sources/plugins/save/lang/en.js create mode 100644 sources/plugins/save/lang/eo.js create mode 100644 sources/plugins/save/lang/es.js create mode 100644 sources/plugins/save/lang/et.js create mode 100644 sources/plugins/save/lang/eu.js create mode 100644 sources/plugins/save/lang/fa.js create mode 100644 sources/plugins/save/lang/fi.js create mode 100644 sources/plugins/save/lang/fo.js create mode 100644 sources/plugins/save/lang/fr-ca.js create mode 100644 sources/plugins/save/lang/fr.js create mode 100644 sources/plugins/save/lang/gl.js create mode 100644 sources/plugins/save/lang/gu.js create mode 100644 sources/plugins/save/lang/he.js create mode 100644 sources/plugins/save/lang/hi.js create mode 100644 sources/plugins/save/lang/hr.js create mode 100644 sources/plugins/save/lang/hu.js create mode 100644 sources/plugins/save/lang/id.js create mode 100644 sources/plugins/save/lang/is.js create mode 100644 sources/plugins/save/lang/it.js create mode 100644 sources/plugins/save/lang/ja.js create mode 100644 sources/plugins/save/lang/ka.js create mode 100644 sources/plugins/save/lang/km.js create mode 100644 sources/plugins/save/lang/ko.js create mode 100644 sources/plugins/save/lang/ku.js create mode 100644 sources/plugins/save/lang/lt.js create mode 100644 sources/plugins/save/lang/lv.js create mode 100644 sources/plugins/save/lang/mk.js create mode 100644 sources/plugins/save/lang/mn.js create mode 100644 sources/plugins/save/lang/ms.js create mode 100644 sources/plugins/save/lang/nb.js create mode 100644 sources/plugins/save/lang/nl.js create mode 100644 sources/plugins/save/lang/no.js create mode 100644 sources/plugins/save/lang/pl.js create mode 100644 sources/plugins/save/lang/pt-br.js create mode 100644 sources/plugins/save/lang/pt.js create mode 100644 sources/plugins/save/lang/ro.js create mode 100644 sources/plugins/save/lang/ru.js create mode 100644 sources/plugins/save/lang/si.js create mode 100644 sources/plugins/save/lang/sk.js create mode 100644 sources/plugins/save/lang/sl.js create mode 100644 sources/plugins/save/lang/sq.js create mode 100644 sources/plugins/save/lang/sr-latn.js create mode 100644 sources/plugins/save/lang/sr.js create mode 100644 sources/plugins/save/lang/sv.js create mode 100644 sources/plugins/save/lang/th.js create mode 100644 sources/plugins/save/lang/tr.js create mode 100644 sources/plugins/save/lang/tt.js create mode 100644 sources/plugins/save/lang/ug.js create mode 100644 sources/plugins/save/lang/uk.js create mode 100644 sources/plugins/save/lang/vi.js create mode 100644 sources/plugins/save/lang/zh-cn.js create mode 100644 sources/plugins/save/lang/zh.js create mode 100644 sources/plugins/save/plugin.js create mode 100644 sources/plugins/scayt/CHANGELOG.md create mode 100644 sources/plugins/scayt/LICENSE.md create mode 100644 sources/plugins/scayt/README.md create mode 100644 sources/plugins/scayt/dialogs/options.js create mode 100644 sources/plugins/scayt/dialogs/toolbar.css create mode 100644 sources/plugins/scayt/icons/hidpi/scayt.png create mode 100644 sources/plugins/scayt/icons/scayt.png create mode 100644 sources/plugins/scayt/lang/af.js create mode 100644 sources/plugins/scayt/lang/ar.js create mode 100644 sources/plugins/scayt/lang/bg.js create mode 100644 sources/plugins/scayt/lang/bn.js create mode 100644 sources/plugins/scayt/lang/bs.js create mode 100644 sources/plugins/scayt/lang/ca.js create mode 100644 sources/plugins/scayt/lang/cs.js create mode 100644 sources/plugins/scayt/lang/cy.js create mode 100644 sources/plugins/scayt/lang/da.js create mode 100644 sources/plugins/scayt/lang/de.js create mode 100644 sources/plugins/scayt/lang/el.js create mode 100644 sources/plugins/scayt/lang/en-au.js create mode 100644 sources/plugins/scayt/lang/en-ca.js create mode 100644 sources/plugins/scayt/lang/en-gb.js create mode 100644 sources/plugins/scayt/lang/en.js create mode 100644 sources/plugins/scayt/lang/eo.js create mode 100644 sources/plugins/scayt/lang/es.js create mode 100644 sources/plugins/scayt/lang/et.js create mode 100644 sources/plugins/scayt/lang/eu.js create mode 100644 sources/plugins/scayt/lang/fa.js create mode 100644 sources/plugins/scayt/lang/fi.js create mode 100644 sources/plugins/scayt/lang/fo.js create mode 100644 sources/plugins/scayt/lang/fr-ca.js create mode 100644 sources/plugins/scayt/lang/fr.js create mode 100644 sources/plugins/scayt/lang/gl.js create mode 100644 sources/plugins/scayt/lang/gu.js create mode 100644 sources/plugins/scayt/lang/he.js create mode 100644 sources/plugins/scayt/lang/hi.js create mode 100644 sources/plugins/scayt/lang/hr.js create mode 100644 sources/plugins/scayt/lang/hu.js create mode 100644 sources/plugins/scayt/lang/is.js create mode 100644 sources/plugins/scayt/lang/it.js create mode 100644 sources/plugins/scayt/lang/ja.js create mode 100644 sources/plugins/scayt/lang/ka.js create mode 100644 sources/plugins/scayt/lang/km.js create mode 100644 sources/plugins/scayt/lang/ko.js create mode 100644 sources/plugins/scayt/lang/ku.js create mode 100644 sources/plugins/scayt/lang/lt.js create mode 100644 sources/plugins/scayt/lang/lv.js create mode 100644 sources/plugins/scayt/lang/mk.js create mode 100644 sources/plugins/scayt/lang/mn.js create mode 100644 sources/plugins/scayt/lang/ms.js create mode 100644 sources/plugins/scayt/lang/nb.js create mode 100644 sources/plugins/scayt/lang/nl.js create mode 100644 sources/plugins/scayt/lang/no.js create mode 100644 sources/plugins/scayt/lang/pl.js create mode 100644 sources/plugins/scayt/lang/pt-br.js create mode 100644 sources/plugins/scayt/lang/pt.js create mode 100644 sources/plugins/scayt/lang/ro.js create mode 100644 sources/plugins/scayt/lang/ru.js create mode 100644 sources/plugins/scayt/lang/sk.js create mode 100644 sources/plugins/scayt/lang/sl.js create mode 100644 sources/plugins/scayt/lang/sr-latn.js create mode 100644 sources/plugins/scayt/lang/sr.js create mode 100644 sources/plugins/scayt/lang/sv.js create mode 100644 sources/plugins/scayt/lang/th.js create mode 100644 sources/plugins/scayt/lang/tr.js create mode 100644 sources/plugins/scayt/lang/ug.js create mode 100644 sources/plugins/scayt/lang/uk.js create mode 100644 sources/plugins/scayt/lang/vi.js create mode 100644 sources/plugins/scayt/lang/zh-cn.js create mode 100644 sources/plugins/scayt/lang/zh.js create mode 100644 sources/plugins/scayt/plugin.js create mode 100644 sources/plugins/selectall/icons/hidpi/selectall.png create mode 100644 sources/plugins/selectall/icons/selectall.png create mode 100644 sources/plugins/selectall/lang/af.js create mode 100644 sources/plugins/selectall/lang/ar.js create mode 100644 sources/plugins/selectall/lang/bg.js create mode 100644 sources/plugins/selectall/lang/bn.js create mode 100644 sources/plugins/selectall/lang/bs.js create mode 100644 sources/plugins/selectall/lang/ca.js create mode 100644 sources/plugins/selectall/lang/cs.js create mode 100644 sources/plugins/selectall/lang/cy.js create mode 100644 sources/plugins/selectall/lang/da.js create mode 100644 sources/plugins/selectall/lang/de.js create mode 100644 sources/plugins/selectall/lang/el.js create mode 100644 sources/plugins/selectall/lang/en-au.js create mode 100644 sources/plugins/selectall/lang/en-ca.js create mode 100644 sources/plugins/selectall/lang/en-gb.js create mode 100644 sources/plugins/selectall/lang/en.js create mode 100644 sources/plugins/selectall/lang/eo.js create mode 100644 sources/plugins/selectall/lang/es.js create mode 100644 sources/plugins/selectall/lang/et.js create mode 100644 sources/plugins/selectall/lang/eu.js create mode 100644 sources/plugins/selectall/lang/fa.js create mode 100644 sources/plugins/selectall/lang/fi.js create mode 100644 sources/plugins/selectall/lang/fo.js create mode 100644 sources/plugins/selectall/lang/fr-ca.js create mode 100644 sources/plugins/selectall/lang/fr.js create mode 100644 sources/plugins/selectall/lang/gl.js create mode 100644 sources/plugins/selectall/lang/gu.js create mode 100644 sources/plugins/selectall/lang/he.js create mode 100644 sources/plugins/selectall/lang/hi.js create mode 100644 sources/plugins/selectall/lang/hr.js create mode 100644 sources/plugins/selectall/lang/hu.js create mode 100644 sources/plugins/selectall/lang/id.js create mode 100644 sources/plugins/selectall/lang/is.js create mode 100644 sources/plugins/selectall/lang/it.js create mode 100644 sources/plugins/selectall/lang/ja.js create mode 100644 sources/plugins/selectall/lang/ka.js create mode 100644 sources/plugins/selectall/lang/km.js create mode 100644 sources/plugins/selectall/lang/ko.js create mode 100644 sources/plugins/selectall/lang/ku.js create mode 100644 sources/plugins/selectall/lang/lt.js create mode 100644 sources/plugins/selectall/lang/lv.js create mode 100644 sources/plugins/selectall/lang/mk.js create mode 100644 sources/plugins/selectall/lang/mn.js create mode 100644 sources/plugins/selectall/lang/ms.js create mode 100644 sources/plugins/selectall/lang/nb.js create mode 100644 sources/plugins/selectall/lang/nl.js create mode 100644 sources/plugins/selectall/lang/no.js create mode 100644 sources/plugins/selectall/lang/pl.js create mode 100644 sources/plugins/selectall/lang/pt-br.js create mode 100644 sources/plugins/selectall/lang/pt.js create mode 100644 sources/plugins/selectall/lang/ro.js create mode 100644 sources/plugins/selectall/lang/ru.js create mode 100644 sources/plugins/selectall/lang/si.js create mode 100644 sources/plugins/selectall/lang/sk.js create mode 100644 sources/plugins/selectall/lang/sl.js create mode 100644 sources/plugins/selectall/lang/sq.js create mode 100644 sources/plugins/selectall/lang/sr-latn.js create mode 100644 sources/plugins/selectall/lang/sr.js create mode 100644 sources/plugins/selectall/lang/sv.js create mode 100644 sources/plugins/selectall/lang/th.js create mode 100644 sources/plugins/selectall/lang/tr.js create mode 100644 sources/plugins/selectall/lang/tt.js create mode 100644 sources/plugins/selectall/lang/ug.js create mode 100644 sources/plugins/selectall/lang/uk.js create mode 100644 sources/plugins/selectall/lang/vi.js create mode 100644 sources/plugins/selectall/lang/zh-cn.js create mode 100644 sources/plugins/selectall/lang/zh.js create mode 100644 sources/plugins/selectall/plugin.js create mode 100644 sources/plugins/showblocks/icons/hidpi/showblocks-rtl.png create mode 100644 sources/plugins/showblocks/icons/hidpi/showblocks.png create mode 100644 sources/plugins/showblocks/icons/showblocks-rtl.png create mode 100644 sources/plugins/showblocks/icons/showblocks.png create mode 100644 sources/plugins/showblocks/images/block_address.png create mode 100644 sources/plugins/showblocks/images/block_blockquote.png create mode 100644 sources/plugins/showblocks/images/block_div.png create mode 100644 sources/plugins/showblocks/images/block_h1.png create mode 100644 sources/plugins/showblocks/images/block_h2.png create mode 100644 sources/plugins/showblocks/images/block_h3.png create mode 100644 sources/plugins/showblocks/images/block_h4.png create mode 100644 sources/plugins/showblocks/images/block_h5.png create mode 100644 sources/plugins/showblocks/images/block_h6.png create mode 100644 sources/plugins/showblocks/images/block_p.png create mode 100644 sources/plugins/showblocks/images/block_pre.png create mode 100644 sources/plugins/showblocks/lang/af.js create mode 100644 sources/plugins/showblocks/lang/ar.js create mode 100644 sources/plugins/showblocks/lang/bg.js create mode 100644 sources/plugins/showblocks/lang/bn.js create mode 100644 sources/plugins/showblocks/lang/bs.js create mode 100644 sources/plugins/showblocks/lang/ca.js create mode 100644 sources/plugins/showblocks/lang/cs.js create mode 100644 sources/plugins/showblocks/lang/cy.js create mode 100644 sources/plugins/showblocks/lang/da.js create mode 100644 sources/plugins/showblocks/lang/de.js create mode 100644 sources/plugins/showblocks/lang/el.js create mode 100644 sources/plugins/showblocks/lang/en-au.js create mode 100644 sources/plugins/showblocks/lang/en-ca.js create mode 100644 sources/plugins/showblocks/lang/en-gb.js create mode 100644 sources/plugins/showblocks/lang/en.js create mode 100644 sources/plugins/showblocks/lang/eo.js create mode 100644 sources/plugins/showblocks/lang/es.js create mode 100644 sources/plugins/showblocks/lang/et.js create mode 100644 sources/plugins/showblocks/lang/eu.js create mode 100644 sources/plugins/showblocks/lang/fa.js create mode 100644 sources/plugins/showblocks/lang/fi.js create mode 100644 sources/plugins/showblocks/lang/fo.js create mode 100644 sources/plugins/showblocks/lang/fr-ca.js create mode 100644 sources/plugins/showblocks/lang/fr.js create mode 100644 sources/plugins/showblocks/lang/gl.js create mode 100644 sources/plugins/showblocks/lang/gu.js create mode 100644 sources/plugins/showblocks/lang/he.js create mode 100644 sources/plugins/showblocks/lang/hi.js create mode 100644 sources/plugins/showblocks/lang/hr.js create mode 100644 sources/plugins/showblocks/lang/hu.js create mode 100644 sources/plugins/showblocks/lang/id.js create mode 100644 sources/plugins/showblocks/lang/is.js create mode 100644 sources/plugins/showblocks/lang/it.js create mode 100644 sources/plugins/showblocks/lang/ja.js create mode 100644 sources/plugins/showblocks/lang/ka.js create mode 100644 sources/plugins/showblocks/lang/km.js create mode 100644 sources/plugins/showblocks/lang/ko.js create mode 100644 sources/plugins/showblocks/lang/ku.js create mode 100644 sources/plugins/showblocks/lang/lt.js create mode 100644 sources/plugins/showblocks/lang/lv.js create mode 100644 sources/plugins/showblocks/lang/mk.js create mode 100644 sources/plugins/showblocks/lang/mn.js create mode 100644 sources/plugins/showblocks/lang/ms.js create mode 100644 sources/plugins/showblocks/lang/nb.js create mode 100644 sources/plugins/showblocks/lang/nl.js create mode 100644 sources/plugins/showblocks/lang/no.js create mode 100644 sources/plugins/showblocks/lang/pl.js create mode 100644 sources/plugins/showblocks/lang/pt-br.js create mode 100644 sources/plugins/showblocks/lang/pt.js create mode 100644 sources/plugins/showblocks/lang/ro.js create mode 100644 sources/plugins/showblocks/lang/ru.js create mode 100644 sources/plugins/showblocks/lang/si.js create mode 100644 sources/plugins/showblocks/lang/sk.js create mode 100644 sources/plugins/showblocks/lang/sl.js create mode 100644 sources/plugins/showblocks/lang/sq.js create mode 100644 sources/plugins/showblocks/lang/sr-latn.js create mode 100644 sources/plugins/showblocks/lang/sr.js create mode 100644 sources/plugins/showblocks/lang/sv.js create mode 100644 sources/plugins/showblocks/lang/th.js create mode 100644 sources/plugins/showblocks/lang/tr.js create mode 100644 sources/plugins/showblocks/lang/tt.js create mode 100644 sources/plugins/showblocks/lang/ug.js create mode 100644 sources/plugins/showblocks/lang/uk.js create mode 100644 sources/plugins/showblocks/lang/vi.js create mode 100644 sources/plugins/showblocks/lang/zh-cn.js create mode 100644 sources/plugins/showblocks/lang/zh.js create mode 100644 sources/plugins/showblocks/plugin.js create mode 100644 sources/plugins/showborders/plugin.js create mode 100644 sources/plugins/smiley/dialogs/smiley.js create mode 100644 sources/plugins/smiley/icons/hidpi/smiley.png create mode 100644 sources/plugins/smiley/icons/smiley.png create mode 100644 sources/plugins/smiley/images/angel_smile.gif create mode 100644 sources/plugins/smiley/images/angel_smile.png create mode 100644 sources/plugins/smiley/images/angry_smile.gif create mode 100644 sources/plugins/smiley/images/angry_smile.png create mode 100644 sources/plugins/smiley/images/broken_heart.gif create mode 100644 sources/plugins/smiley/images/broken_heart.png create mode 100644 sources/plugins/smiley/images/confused_smile.gif create mode 100644 sources/plugins/smiley/images/confused_smile.png create mode 100644 sources/plugins/smiley/images/cry_smile.gif create mode 100644 sources/plugins/smiley/images/cry_smile.png create mode 100644 sources/plugins/smiley/images/devil_smile.gif create mode 100644 sources/plugins/smiley/images/devil_smile.png create mode 100644 sources/plugins/smiley/images/embaressed_smile.gif create mode 100644 sources/plugins/smiley/images/embarrassed_smile.gif create mode 100644 sources/plugins/smiley/images/embarrassed_smile.png create mode 100644 sources/plugins/smiley/images/envelope.gif create mode 100644 sources/plugins/smiley/images/envelope.png create mode 100644 sources/plugins/smiley/images/heart.gif create mode 100644 sources/plugins/smiley/images/heart.png create mode 100644 sources/plugins/smiley/images/kiss.gif create mode 100644 sources/plugins/smiley/images/kiss.png create mode 100644 sources/plugins/smiley/images/lightbulb.gif create mode 100644 sources/plugins/smiley/images/lightbulb.png create mode 100644 sources/plugins/smiley/images/omg_smile.gif create mode 100644 sources/plugins/smiley/images/omg_smile.png create mode 100644 sources/plugins/smiley/images/regular_smile.gif create mode 100644 sources/plugins/smiley/images/regular_smile.png create mode 100644 sources/plugins/smiley/images/sad_smile.gif create mode 100644 sources/plugins/smiley/images/sad_smile.png create mode 100644 sources/plugins/smiley/images/shades_smile.gif create mode 100644 sources/plugins/smiley/images/shades_smile.png create mode 100644 sources/plugins/smiley/images/teeth_smile.gif create mode 100644 sources/plugins/smiley/images/teeth_smile.png create mode 100644 sources/plugins/smiley/images/thumbs_down.gif create mode 100644 sources/plugins/smiley/images/thumbs_down.png create mode 100644 sources/plugins/smiley/images/thumbs_up.gif create mode 100644 sources/plugins/smiley/images/thumbs_up.png create mode 100644 sources/plugins/smiley/images/tongue_smile.gif create mode 100644 sources/plugins/smiley/images/tongue_smile.png create mode 100644 sources/plugins/smiley/images/tounge_smile.gif create mode 100644 sources/plugins/smiley/images/whatchutalkingabout_smile.gif create mode 100644 sources/plugins/smiley/images/whatchutalkingabout_smile.png create mode 100644 sources/plugins/smiley/images/wink_smile.gif create mode 100644 sources/plugins/smiley/images/wink_smile.png create mode 100644 sources/plugins/smiley/lang/af.js create mode 100644 sources/plugins/smiley/lang/ar.js create mode 100644 sources/plugins/smiley/lang/bg.js create mode 100644 sources/plugins/smiley/lang/bn.js create mode 100644 sources/plugins/smiley/lang/bs.js create mode 100644 sources/plugins/smiley/lang/ca.js create mode 100644 sources/plugins/smiley/lang/cs.js create mode 100644 sources/plugins/smiley/lang/cy.js create mode 100644 sources/plugins/smiley/lang/da.js create mode 100644 sources/plugins/smiley/lang/de.js create mode 100644 sources/plugins/smiley/lang/el.js create mode 100644 sources/plugins/smiley/lang/en-au.js create mode 100644 sources/plugins/smiley/lang/en-ca.js create mode 100644 sources/plugins/smiley/lang/en-gb.js create mode 100644 sources/plugins/smiley/lang/en.js create mode 100644 sources/plugins/smiley/lang/eo.js create mode 100644 sources/plugins/smiley/lang/es.js create mode 100644 sources/plugins/smiley/lang/et.js create mode 100644 sources/plugins/smiley/lang/eu.js create mode 100644 sources/plugins/smiley/lang/fa.js create mode 100644 sources/plugins/smiley/lang/fi.js create mode 100644 sources/plugins/smiley/lang/fo.js create mode 100644 sources/plugins/smiley/lang/fr-ca.js create mode 100644 sources/plugins/smiley/lang/fr.js create mode 100644 sources/plugins/smiley/lang/gl.js create mode 100644 sources/plugins/smiley/lang/gu.js create mode 100644 sources/plugins/smiley/lang/he.js create mode 100644 sources/plugins/smiley/lang/hi.js create mode 100644 sources/plugins/smiley/lang/hr.js create mode 100644 sources/plugins/smiley/lang/hu.js create mode 100644 sources/plugins/smiley/lang/id.js create mode 100644 sources/plugins/smiley/lang/is.js create mode 100644 sources/plugins/smiley/lang/it.js create mode 100644 sources/plugins/smiley/lang/ja.js create mode 100644 sources/plugins/smiley/lang/ka.js create mode 100644 sources/plugins/smiley/lang/km.js create mode 100644 sources/plugins/smiley/lang/ko.js create mode 100644 sources/plugins/smiley/lang/ku.js create mode 100644 sources/plugins/smiley/lang/lt.js create mode 100644 sources/plugins/smiley/lang/lv.js create mode 100644 sources/plugins/smiley/lang/mk.js create mode 100644 sources/plugins/smiley/lang/mn.js create mode 100644 sources/plugins/smiley/lang/ms.js create mode 100644 sources/plugins/smiley/lang/nb.js create mode 100644 sources/plugins/smiley/lang/nl.js create mode 100644 sources/plugins/smiley/lang/no.js create mode 100644 sources/plugins/smiley/lang/pl.js create mode 100644 sources/plugins/smiley/lang/pt-br.js create mode 100644 sources/plugins/smiley/lang/pt.js create mode 100644 sources/plugins/smiley/lang/ro.js create mode 100644 sources/plugins/smiley/lang/ru.js create mode 100644 sources/plugins/smiley/lang/si.js create mode 100644 sources/plugins/smiley/lang/sk.js create mode 100644 sources/plugins/smiley/lang/sl.js create mode 100644 sources/plugins/smiley/lang/sq.js create mode 100644 sources/plugins/smiley/lang/sr-latn.js create mode 100644 sources/plugins/smiley/lang/sr.js create mode 100644 sources/plugins/smiley/lang/sv.js create mode 100644 sources/plugins/smiley/lang/th.js create mode 100644 sources/plugins/smiley/lang/tr.js create mode 100644 sources/plugins/smiley/lang/tt.js create mode 100644 sources/plugins/smiley/lang/ug.js create mode 100644 sources/plugins/smiley/lang/uk.js create mode 100644 sources/plugins/smiley/lang/vi.js create mode 100644 sources/plugins/smiley/lang/zh-cn.js create mode 100644 sources/plugins/smiley/lang/zh.js create mode 100644 sources/plugins/smiley/plugin.js create mode 100644 sources/plugins/sourcearea/icons/hidpi/source-rtl.png create mode 100644 sources/plugins/sourcearea/icons/hidpi/source.png create mode 100644 sources/plugins/sourcearea/icons/source-rtl.png create mode 100644 sources/plugins/sourcearea/icons/source.png create mode 100644 sources/plugins/sourcearea/lang/af.js create mode 100644 sources/plugins/sourcearea/lang/ar.js create mode 100644 sources/plugins/sourcearea/lang/bg.js create mode 100644 sources/plugins/sourcearea/lang/bn.js create mode 100644 sources/plugins/sourcearea/lang/bs.js create mode 100644 sources/plugins/sourcearea/lang/ca.js create mode 100644 sources/plugins/sourcearea/lang/cs.js create mode 100644 sources/plugins/sourcearea/lang/cy.js create mode 100644 sources/plugins/sourcearea/lang/da.js create mode 100644 sources/plugins/sourcearea/lang/de.js create mode 100644 sources/plugins/sourcearea/lang/el.js create mode 100644 sources/plugins/sourcearea/lang/en-au.js create mode 100644 sources/plugins/sourcearea/lang/en-ca.js create mode 100644 sources/plugins/sourcearea/lang/en-gb.js create mode 100644 sources/plugins/sourcearea/lang/en.js create mode 100644 sources/plugins/sourcearea/lang/eo.js create mode 100644 sources/plugins/sourcearea/lang/es.js create mode 100644 sources/plugins/sourcearea/lang/et.js create mode 100644 sources/plugins/sourcearea/lang/eu.js create mode 100644 sources/plugins/sourcearea/lang/fa.js create mode 100644 sources/plugins/sourcearea/lang/fi.js create mode 100644 sources/plugins/sourcearea/lang/fo.js create mode 100644 sources/plugins/sourcearea/lang/fr-ca.js create mode 100644 sources/plugins/sourcearea/lang/fr.js create mode 100644 sources/plugins/sourcearea/lang/gl.js create mode 100644 sources/plugins/sourcearea/lang/gu.js create mode 100644 sources/plugins/sourcearea/lang/he.js create mode 100644 sources/plugins/sourcearea/lang/hi.js create mode 100644 sources/plugins/sourcearea/lang/hr.js create mode 100644 sources/plugins/sourcearea/lang/hu.js create mode 100644 sources/plugins/sourcearea/lang/id.js create mode 100644 sources/plugins/sourcearea/lang/is.js create mode 100644 sources/plugins/sourcearea/lang/it.js create mode 100644 sources/plugins/sourcearea/lang/ja.js create mode 100644 sources/plugins/sourcearea/lang/ka.js create mode 100644 sources/plugins/sourcearea/lang/km.js create mode 100644 sources/plugins/sourcearea/lang/ko.js create mode 100644 sources/plugins/sourcearea/lang/ku.js create mode 100644 sources/plugins/sourcearea/lang/lt.js create mode 100644 sources/plugins/sourcearea/lang/lv.js create mode 100644 sources/plugins/sourcearea/lang/mk.js create mode 100644 sources/plugins/sourcearea/lang/mn.js create mode 100644 sources/plugins/sourcearea/lang/ms.js create mode 100644 sources/plugins/sourcearea/lang/nb.js create mode 100644 sources/plugins/sourcearea/lang/nl.js create mode 100644 sources/plugins/sourcearea/lang/no.js create mode 100644 sources/plugins/sourcearea/lang/pl.js create mode 100644 sources/plugins/sourcearea/lang/pt-br.js create mode 100644 sources/plugins/sourcearea/lang/pt.js create mode 100644 sources/plugins/sourcearea/lang/ro.js create mode 100644 sources/plugins/sourcearea/lang/ru.js create mode 100644 sources/plugins/sourcearea/lang/si.js create mode 100644 sources/plugins/sourcearea/lang/sk.js create mode 100644 sources/plugins/sourcearea/lang/sl.js create mode 100644 sources/plugins/sourcearea/lang/sq.js create mode 100644 sources/plugins/sourcearea/lang/sr-latn.js create mode 100644 sources/plugins/sourcearea/lang/sr.js create mode 100644 sources/plugins/sourcearea/lang/sv.js create mode 100644 sources/plugins/sourcearea/lang/th.js create mode 100644 sources/plugins/sourcearea/lang/tr.js create mode 100644 sources/plugins/sourcearea/lang/tt.js create mode 100644 sources/plugins/sourcearea/lang/ug.js create mode 100644 sources/plugins/sourcearea/lang/uk.js create mode 100644 sources/plugins/sourcearea/lang/vi.js create mode 100644 sources/plugins/sourcearea/lang/zh-cn.js create mode 100644 sources/plugins/sourcearea/lang/zh.js create mode 100644 sources/plugins/sourcearea/plugin.js create mode 100644 sources/plugins/specialchar/dialogs/lang/_translationstatus.txt create mode 100644 sources/plugins/specialchar/dialogs/lang/af.js create mode 100644 sources/plugins/specialchar/dialogs/lang/ar.js create mode 100644 sources/plugins/specialchar/dialogs/lang/bg.js create mode 100644 sources/plugins/specialchar/dialogs/lang/ca.js create mode 100644 sources/plugins/specialchar/dialogs/lang/cs.js create mode 100644 sources/plugins/specialchar/dialogs/lang/cy.js create mode 100644 sources/plugins/specialchar/dialogs/lang/da.js create mode 100644 sources/plugins/specialchar/dialogs/lang/de.js create mode 100644 sources/plugins/specialchar/dialogs/lang/el.js create mode 100644 sources/plugins/specialchar/dialogs/lang/en-gb.js create mode 100644 sources/plugins/specialchar/dialogs/lang/en.js create mode 100644 sources/plugins/specialchar/dialogs/lang/eo.js create mode 100644 sources/plugins/specialchar/dialogs/lang/es.js create mode 100644 sources/plugins/specialchar/dialogs/lang/et.js create mode 100644 sources/plugins/specialchar/dialogs/lang/eu.js create mode 100644 sources/plugins/specialchar/dialogs/lang/fa.js create mode 100644 sources/plugins/specialchar/dialogs/lang/fi.js create mode 100644 sources/plugins/specialchar/dialogs/lang/fr-ca.js create mode 100644 sources/plugins/specialchar/dialogs/lang/fr.js create mode 100644 sources/plugins/specialchar/dialogs/lang/gl.js create mode 100644 sources/plugins/specialchar/dialogs/lang/he.js create mode 100644 sources/plugins/specialchar/dialogs/lang/hr.js create mode 100644 sources/plugins/specialchar/dialogs/lang/hu.js create mode 100644 sources/plugins/specialchar/dialogs/lang/id.js create mode 100644 sources/plugins/specialchar/dialogs/lang/it.js create mode 100644 sources/plugins/specialchar/dialogs/lang/ja.js create mode 100644 sources/plugins/specialchar/dialogs/lang/km.js create mode 100644 sources/plugins/specialchar/dialogs/lang/ko.js create mode 100644 sources/plugins/specialchar/dialogs/lang/ku.js create mode 100644 sources/plugins/specialchar/dialogs/lang/lt.js create mode 100644 sources/plugins/specialchar/dialogs/lang/lv.js create mode 100644 sources/plugins/specialchar/dialogs/lang/nb.js create mode 100644 sources/plugins/specialchar/dialogs/lang/nl.js create mode 100644 sources/plugins/specialchar/dialogs/lang/no.js create mode 100644 sources/plugins/specialchar/dialogs/lang/pl.js create mode 100644 sources/plugins/specialchar/dialogs/lang/pt-br.js create mode 100644 sources/plugins/specialchar/dialogs/lang/pt.js create mode 100644 sources/plugins/specialchar/dialogs/lang/ru.js create mode 100644 sources/plugins/specialchar/dialogs/lang/si.js create mode 100644 sources/plugins/specialchar/dialogs/lang/sk.js create mode 100644 sources/plugins/specialchar/dialogs/lang/sl.js create mode 100644 sources/plugins/specialchar/dialogs/lang/sq.js create mode 100644 sources/plugins/specialchar/dialogs/lang/sv.js create mode 100644 sources/plugins/specialchar/dialogs/lang/th.js create mode 100644 sources/plugins/specialchar/dialogs/lang/tr.js create mode 100644 sources/plugins/specialchar/dialogs/lang/tt.js create mode 100644 sources/plugins/specialchar/dialogs/lang/ug.js create mode 100644 sources/plugins/specialchar/dialogs/lang/uk.js create mode 100644 sources/plugins/specialchar/dialogs/lang/vi.js create mode 100644 sources/plugins/specialchar/dialogs/lang/zh-cn.js create mode 100644 sources/plugins/specialchar/dialogs/lang/zh.js create mode 100644 sources/plugins/specialchar/dialogs/specialchar.js create mode 100644 sources/plugins/specialchar/icons/hidpi/specialchar.png create mode 100644 sources/plugins/specialchar/icons/specialchar.png create mode 100644 sources/plugins/specialchar/lang/_translationstatus.txt create mode 100644 sources/plugins/specialchar/lang/af.js create mode 100644 sources/plugins/specialchar/lang/ar.js create mode 100644 sources/plugins/specialchar/lang/bg.js create mode 100644 sources/plugins/specialchar/lang/bn.js create mode 100644 sources/plugins/specialchar/lang/bs.js create mode 100644 sources/plugins/specialchar/lang/ca.js create mode 100644 sources/plugins/specialchar/lang/cs.js create mode 100644 sources/plugins/specialchar/lang/cy.js create mode 100644 sources/plugins/specialchar/lang/da.js create mode 100644 sources/plugins/specialchar/lang/de.js create mode 100644 sources/plugins/specialchar/lang/el.js create mode 100644 sources/plugins/specialchar/lang/en-au.js create mode 100644 sources/plugins/specialchar/lang/en-ca.js create mode 100644 sources/plugins/specialchar/lang/en-gb.js create mode 100644 sources/plugins/specialchar/lang/en.js create mode 100644 sources/plugins/specialchar/lang/eo.js create mode 100644 sources/plugins/specialchar/lang/es.js create mode 100644 sources/plugins/specialchar/lang/et.js create mode 100644 sources/plugins/specialchar/lang/eu.js create mode 100644 sources/plugins/specialchar/lang/fa.js create mode 100644 sources/plugins/specialchar/lang/fi.js create mode 100644 sources/plugins/specialchar/lang/fo.js create mode 100644 sources/plugins/specialchar/lang/fr-ca.js create mode 100644 sources/plugins/specialchar/lang/fr.js create mode 100644 sources/plugins/specialchar/lang/gl.js create mode 100644 sources/plugins/specialchar/lang/gu.js create mode 100644 sources/plugins/specialchar/lang/he.js create mode 100644 sources/plugins/specialchar/lang/hi.js create mode 100644 sources/plugins/specialchar/lang/hr.js create mode 100644 sources/plugins/specialchar/lang/hu.js create mode 100644 sources/plugins/specialchar/lang/id.js create mode 100644 sources/plugins/specialchar/lang/is.js create mode 100644 sources/plugins/specialchar/lang/it.js create mode 100644 sources/plugins/specialchar/lang/ja.js create mode 100644 sources/plugins/specialchar/lang/ka.js create mode 100644 sources/plugins/specialchar/lang/km.js create mode 100644 sources/plugins/specialchar/lang/ko.js create mode 100644 sources/plugins/specialchar/lang/ku.js create mode 100644 sources/plugins/specialchar/lang/lt.js create mode 100644 sources/plugins/specialchar/lang/lv.js create mode 100644 sources/plugins/specialchar/lang/mk.js create mode 100644 sources/plugins/specialchar/lang/mn.js create mode 100644 sources/plugins/specialchar/lang/ms.js create mode 100644 sources/plugins/specialchar/lang/nb.js create mode 100644 sources/plugins/specialchar/lang/nl.js create mode 100644 sources/plugins/specialchar/lang/no.js create mode 100644 sources/plugins/specialchar/lang/pl.js create mode 100644 sources/plugins/specialchar/lang/pt-br.js create mode 100644 sources/plugins/specialchar/lang/pt.js create mode 100644 sources/plugins/specialchar/lang/ro.js create mode 100644 sources/plugins/specialchar/lang/ru.js create mode 100644 sources/plugins/specialchar/lang/si.js create mode 100644 sources/plugins/specialchar/lang/sk.js create mode 100644 sources/plugins/specialchar/lang/sl.js create mode 100644 sources/plugins/specialchar/lang/sq.js create mode 100644 sources/plugins/specialchar/lang/sr-latn.js create mode 100644 sources/plugins/specialchar/lang/sr.js create mode 100644 sources/plugins/specialchar/lang/sv.js create mode 100644 sources/plugins/specialchar/lang/th.js create mode 100644 sources/plugins/specialchar/lang/tr.js create mode 100644 sources/plugins/specialchar/lang/tt.js create mode 100644 sources/plugins/specialchar/lang/ug.js create mode 100644 sources/plugins/specialchar/lang/uk.js create mode 100644 sources/plugins/specialchar/lang/vi.js create mode 100644 sources/plugins/specialchar/lang/zh-cn.js create mode 100644 sources/plugins/specialchar/lang/zh.js create mode 100644 sources/plugins/specialchar/plugin.js create mode 100644 sources/plugins/stylescombo/lang/af.js create mode 100644 sources/plugins/stylescombo/lang/ar.js create mode 100644 sources/plugins/stylescombo/lang/bg.js create mode 100644 sources/plugins/stylescombo/lang/bn.js create mode 100644 sources/plugins/stylescombo/lang/bs.js create mode 100644 sources/plugins/stylescombo/lang/ca.js create mode 100644 sources/plugins/stylescombo/lang/cs.js create mode 100644 sources/plugins/stylescombo/lang/cy.js create mode 100644 sources/plugins/stylescombo/lang/da.js create mode 100644 sources/plugins/stylescombo/lang/de.js create mode 100644 sources/plugins/stylescombo/lang/el.js create mode 100644 sources/plugins/stylescombo/lang/en-au.js create mode 100644 sources/plugins/stylescombo/lang/en-ca.js create mode 100644 sources/plugins/stylescombo/lang/en-gb.js create mode 100644 sources/plugins/stylescombo/lang/en.js create mode 100644 sources/plugins/stylescombo/lang/eo.js create mode 100644 sources/plugins/stylescombo/lang/es.js create mode 100644 sources/plugins/stylescombo/lang/et.js create mode 100644 sources/plugins/stylescombo/lang/eu.js create mode 100644 sources/plugins/stylescombo/lang/fa.js create mode 100644 sources/plugins/stylescombo/lang/fi.js create mode 100644 sources/plugins/stylescombo/lang/fo.js create mode 100644 sources/plugins/stylescombo/lang/fr-ca.js create mode 100644 sources/plugins/stylescombo/lang/fr.js create mode 100644 sources/plugins/stylescombo/lang/gl.js create mode 100644 sources/plugins/stylescombo/lang/gu.js create mode 100644 sources/plugins/stylescombo/lang/he.js create mode 100644 sources/plugins/stylescombo/lang/hi.js create mode 100644 sources/plugins/stylescombo/lang/hr.js create mode 100644 sources/plugins/stylescombo/lang/hu.js create mode 100644 sources/plugins/stylescombo/lang/id.js create mode 100644 sources/plugins/stylescombo/lang/is.js create mode 100644 sources/plugins/stylescombo/lang/it.js create mode 100644 sources/plugins/stylescombo/lang/ja.js create mode 100644 sources/plugins/stylescombo/lang/ka.js create mode 100644 sources/plugins/stylescombo/lang/km.js create mode 100644 sources/plugins/stylescombo/lang/ko.js create mode 100644 sources/plugins/stylescombo/lang/ku.js create mode 100644 sources/plugins/stylescombo/lang/lt.js create mode 100644 sources/plugins/stylescombo/lang/lv.js create mode 100644 sources/plugins/stylescombo/lang/mk.js create mode 100644 sources/plugins/stylescombo/lang/mn.js create mode 100644 sources/plugins/stylescombo/lang/ms.js create mode 100644 sources/plugins/stylescombo/lang/nb.js create mode 100644 sources/plugins/stylescombo/lang/nl.js create mode 100644 sources/plugins/stylescombo/lang/no.js create mode 100644 sources/plugins/stylescombo/lang/pl.js create mode 100644 sources/plugins/stylescombo/lang/pt-br.js create mode 100644 sources/plugins/stylescombo/lang/pt.js create mode 100644 sources/plugins/stylescombo/lang/ro.js create mode 100644 sources/plugins/stylescombo/lang/ru.js create mode 100644 sources/plugins/stylescombo/lang/si.js create mode 100644 sources/plugins/stylescombo/lang/sk.js create mode 100644 sources/plugins/stylescombo/lang/sl.js create mode 100644 sources/plugins/stylescombo/lang/sq.js create mode 100644 sources/plugins/stylescombo/lang/sr-latn.js create mode 100644 sources/plugins/stylescombo/lang/sr.js create mode 100644 sources/plugins/stylescombo/lang/sv.js create mode 100644 sources/plugins/stylescombo/lang/th.js create mode 100644 sources/plugins/stylescombo/lang/tr.js create mode 100644 sources/plugins/stylescombo/lang/tt.js create mode 100644 sources/plugins/stylescombo/lang/ug.js create mode 100644 sources/plugins/stylescombo/lang/uk.js create mode 100644 sources/plugins/stylescombo/lang/vi.js create mode 100644 sources/plugins/stylescombo/lang/zh-cn.js create mode 100644 sources/plugins/stylescombo/lang/zh.js create mode 100644 sources/plugins/stylescombo/plugin.js create mode 100644 sources/plugins/tab/plugin.js create mode 100644 sources/plugins/table/dialogs/table.js create mode 100644 sources/plugins/table/icons/hidpi/table.png create mode 100644 sources/plugins/table/icons/table.png create mode 100644 sources/plugins/table/lang/af.js create mode 100644 sources/plugins/table/lang/ar.js create mode 100644 sources/plugins/table/lang/bg.js create mode 100644 sources/plugins/table/lang/bn.js create mode 100644 sources/plugins/table/lang/bs.js create mode 100644 sources/plugins/table/lang/ca.js create mode 100644 sources/plugins/table/lang/cs.js create mode 100644 sources/plugins/table/lang/cy.js create mode 100644 sources/plugins/table/lang/da.js create mode 100644 sources/plugins/table/lang/de.js create mode 100644 sources/plugins/table/lang/el.js create mode 100644 sources/plugins/table/lang/en-au.js create mode 100644 sources/plugins/table/lang/en-ca.js create mode 100644 sources/plugins/table/lang/en-gb.js create mode 100644 sources/plugins/table/lang/en.js create mode 100644 sources/plugins/table/lang/eo.js create mode 100644 sources/plugins/table/lang/es.js create mode 100644 sources/plugins/table/lang/et.js create mode 100644 sources/plugins/table/lang/eu.js create mode 100644 sources/plugins/table/lang/fa.js create mode 100644 sources/plugins/table/lang/fi.js create mode 100644 sources/plugins/table/lang/fo.js create mode 100644 sources/plugins/table/lang/fr-ca.js create mode 100644 sources/plugins/table/lang/fr.js create mode 100644 sources/plugins/table/lang/gl.js create mode 100644 sources/plugins/table/lang/gu.js create mode 100644 sources/plugins/table/lang/he.js create mode 100644 sources/plugins/table/lang/hi.js create mode 100644 sources/plugins/table/lang/hr.js create mode 100644 sources/plugins/table/lang/hu.js create mode 100644 sources/plugins/table/lang/id.js create mode 100644 sources/plugins/table/lang/is.js create mode 100644 sources/plugins/table/lang/it.js create mode 100644 sources/plugins/table/lang/ja.js create mode 100644 sources/plugins/table/lang/ka.js create mode 100644 sources/plugins/table/lang/km.js create mode 100644 sources/plugins/table/lang/ko.js create mode 100644 sources/plugins/table/lang/ku.js create mode 100644 sources/plugins/table/lang/lt.js create mode 100644 sources/plugins/table/lang/lv.js create mode 100644 sources/plugins/table/lang/mk.js create mode 100644 sources/plugins/table/lang/mn.js create mode 100644 sources/plugins/table/lang/ms.js create mode 100644 sources/plugins/table/lang/nb.js create mode 100644 sources/plugins/table/lang/nl.js create mode 100644 sources/plugins/table/lang/no.js create mode 100644 sources/plugins/table/lang/pl.js create mode 100644 sources/plugins/table/lang/pt-br.js create mode 100644 sources/plugins/table/lang/pt.js create mode 100644 sources/plugins/table/lang/ro.js create mode 100644 sources/plugins/table/lang/ru.js create mode 100644 sources/plugins/table/lang/si.js create mode 100644 sources/plugins/table/lang/sk.js create mode 100644 sources/plugins/table/lang/sl.js create mode 100644 sources/plugins/table/lang/sq.js create mode 100644 sources/plugins/table/lang/sr-latn.js create mode 100644 sources/plugins/table/lang/sr.js create mode 100644 sources/plugins/table/lang/sv.js create mode 100644 sources/plugins/table/lang/th.js create mode 100644 sources/plugins/table/lang/tr.js create mode 100644 sources/plugins/table/lang/tt.js create mode 100644 sources/plugins/table/lang/ug.js create mode 100644 sources/plugins/table/lang/uk.js create mode 100644 sources/plugins/table/lang/vi.js create mode 100644 sources/plugins/table/lang/zh-cn.js create mode 100644 sources/plugins/table/lang/zh.js create mode 100644 sources/plugins/table/plugin.js create mode 100644 sources/plugins/tabletools/dialogs/tableCell.js create mode 100644 sources/plugins/tabletools/plugin.js create mode 100644 sources/plugins/templates/dialogs/templates.css create mode 100644 sources/plugins/templates/dialogs/templates.js create mode 100644 sources/plugins/templates/icons/hidpi/templates-rtl.png create mode 100644 sources/plugins/templates/icons/hidpi/templates.png create mode 100644 sources/plugins/templates/icons/templates-rtl.png create mode 100644 sources/plugins/templates/icons/templates.png create mode 100644 sources/plugins/templates/lang/af.js create mode 100644 sources/plugins/templates/lang/ar.js create mode 100644 sources/plugins/templates/lang/bg.js create mode 100644 sources/plugins/templates/lang/bn.js create mode 100644 sources/plugins/templates/lang/bs.js create mode 100644 sources/plugins/templates/lang/ca.js create mode 100644 sources/plugins/templates/lang/cs.js create mode 100644 sources/plugins/templates/lang/cy.js create mode 100644 sources/plugins/templates/lang/da.js create mode 100644 sources/plugins/templates/lang/de.js create mode 100644 sources/plugins/templates/lang/el.js create mode 100644 sources/plugins/templates/lang/en-au.js create mode 100644 sources/plugins/templates/lang/en-ca.js create mode 100644 sources/plugins/templates/lang/en-gb.js create mode 100644 sources/plugins/templates/lang/en.js create mode 100644 sources/plugins/templates/lang/eo.js create mode 100644 sources/plugins/templates/lang/es.js create mode 100644 sources/plugins/templates/lang/et.js create mode 100644 sources/plugins/templates/lang/eu.js create mode 100644 sources/plugins/templates/lang/fa.js create mode 100644 sources/plugins/templates/lang/fi.js create mode 100644 sources/plugins/templates/lang/fo.js create mode 100644 sources/plugins/templates/lang/fr-ca.js create mode 100644 sources/plugins/templates/lang/fr.js create mode 100644 sources/plugins/templates/lang/gl.js create mode 100644 sources/plugins/templates/lang/gu.js create mode 100644 sources/plugins/templates/lang/he.js create mode 100644 sources/plugins/templates/lang/hi.js create mode 100644 sources/plugins/templates/lang/hr.js create mode 100644 sources/plugins/templates/lang/hu.js create mode 100644 sources/plugins/templates/lang/id.js create mode 100644 sources/plugins/templates/lang/is.js create mode 100644 sources/plugins/templates/lang/it.js create mode 100644 sources/plugins/templates/lang/ja.js create mode 100644 sources/plugins/templates/lang/ka.js create mode 100644 sources/plugins/templates/lang/km.js create mode 100644 sources/plugins/templates/lang/ko.js create mode 100644 sources/plugins/templates/lang/ku.js create mode 100644 sources/plugins/templates/lang/lt.js create mode 100644 sources/plugins/templates/lang/lv.js create mode 100644 sources/plugins/templates/lang/mk.js create mode 100644 sources/plugins/templates/lang/mn.js create mode 100644 sources/plugins/templates/lang/ms.js create mode 100644 sources/plugins/templates/lang/nb.js create mode 100644 sources/plugins/templates/lang/nl.js create mode 100644 sources/plugins/templates/lang/no.js create mode 100644 sources/plugins/templates/lang/pl.js create mode 100644 sources/plugins/templates/lang/pt-br.js create mode 100644 sources/plugins/templates/lang/pt.js create mode 100644 sources/plugins/templates/lang/ro.js create mode 100644 sources/plugins/templates/lang/ru.js create mode 100644 sources/plugins/templates/lang/si.js create mode 100644 sources/plugins/templates/lang/sk.js create mode 100644 sources/plugins/templates/lang/sl.js create mode 100644 sources/plugins/templates/lang/sq.js create mode 100644 sources/plugins/templates/lang/sr-latn.js create mode 100644 sources/plugins/templates/lang/sr.js create mode 100644 sources/plugins/templates/lang/sv.js create mode 100644 sources/plugins/templates/lang/th.js create mode 100644 sources/plugins/templates/lang/tr.js create mode 100644 sources/plugins/templates/lang/tt.js create mode 100644 sources/plugins/templates/lang/ug.js create mode 100644 sources/plugins/templates/lang/uk.js create mode 100644 sources/plugins/templates/lang/vi.js create mode 100644 sources/plugins/templates/lang/zh-cn.js create mode 100644 sources/plugins/templates/lang/zh.js create mode 100644 sources/plugins/templates/plugin.js create mode 100644 sources/plugins/templates/templates/default.js create mode 100644 sources/plugins/templates/templates/images/template1.gif create mode 100644 sources/plugins/templates/templates/images/template2.gif create mode 100644 sources/plugins/templates/templates/images/template3.gif create mode 100644 sources/plugins/toolbar/lang/af.js create mode 100644 sources/plugins/toolbar/lang/ar.js create mode 100644 sources/plugins/toolbar/lang/bg.js create mode 100644 sources/plugins/toolbar/lang/bn.js create mode 100644 sources/plugins/toolbar/lang/bs.js create mode 100644 sources/plugins/toolbar/lang/ca.js create mode 100644 sources/plugins/toolbar/lang/cs.js create mode 100644 sources/plugins/toolbar/lang/cy.js create mode 100644 sources/plugins/toolbar/lang/da.js create mode 100644 sources/plugins/toolbar/lang/de.js create mode 100644 sources/plugins/toolbar/lang/el.js create mode 100644 sources/plugins/toolbar/lang/en-au.js create mode 100644 sources/plugins/toolbar/lang/en-ca.js create mode 100644 sources/plugins/toolbar/lang/en-gb.js create mode 100644 sources/plugins/toolbar/lang/en.js create mode 100644 sources/plugins/toolbar/lang/eo.js create mode 100644 sources/plugins/toolbar/lang/es.js create mode 100644 sources/plugins/toolbar/lang/et.js create mode 100644 sources/plugins/toolbar/lang/eu.js create mode 100644 sources/plugins/toolbar/lang/fa.js create mode 100644 sources/plugins/toolbar/lang/fi.js create mode 100644 sources/plugins/toolbar/lang/fo.js create mode 100644 sources/plugins/toolbar/lang/fr-ca.js create mode 100644 sources/plugins/toolbar/lang/fr.js create mode 100644 sources/plugins/toolbar/lang/gl.js create mode 100644 sources/plugins/toolbar/lang/gu.js create mode 100644 sources/plugins/toolbar/lang/he.js create mode 100644 sources/plugins/toolbar/lang/hi.js create mode 100644 sources/plugins/toolbar/lang/hr.js create mode 100644 sources/plugins/toolbar/lang/hu.js create mode 100644 sources/plugins/toolbar/lang/id.js create mode 100644 sources/plugins/toolbar/lang/is.js create mode 100644 sources/plugins/toolbar/lang/it.js create mode 100644 sources/plugins/toolbar/lang/ja.js create mode 100644 sources/plugins/toolbar/lang/ka.js create mode 100644 sources/plugins/toolbar/lang/km.js create mode 100644 sources/plugins/toolbar/lang/ko.js create mode 100644 sources/plugins/toolbar/lang/ku.js create mode 100644 sources/plugins/toolbar/lang/lt.js create mode 100644 sources/plugins/toolbar/lang/lv.js create mode 100644 sources/plugins/toolbar/lang/mk.js create mode 100644 sources/plugins/toolbar/lang/mn.js create mode 100644 sources/plugins/toolbar/lang/ms.js create mode 100644 sources/plugins/toolbar/lang/nb.js create mode 100644 sources/plugins/toolbar/lang/nl.js create mode 100644 sources/plugins/toolbar/lang/no.js create mode 100644 sources/plugins/toolbar/lang/pl.js create mode 100644 sources/plugins/toolbar/lang/pt-br.js create mode 100644 sources/plugins/toolbar/lang/pt.js create mode 100644 sources/plugins/toolbar/lang/ro.js create mode 100644 sources/plugins/toolbar/lang/ru.js create mode 100644 sources/plugins/toolbar/lang/si.js create mode 100644 sources/plugins/toolbar/lang/sk.js create mode 100644 sources/plugins/toolbar/lang/sl.js create mode 100644 sources/plugins/toolbar/lang/sq.js create mode 100644 sources/plugins/toolbar/lang/sr-latn.js create mode 100644 sources/plugins/toolbar/lang/sr.js create mode 100644 sources/plugins/toolbar/lang/sv.js create mode 100644 sources/plugins/toolbar/lang/th.js create mode 100644 sources/plugins/toolbar/lang/tr.js create mode 100644 sources/plugins/toolbar/lang/tt.js create mode 100644 sources/plugins/toolbar/lang/ug.js create mode 100644 sources/plugins/toolbar/lang/uk.js create mode 100644 sources/plugins/toolbar/lang/vi.js create mode 100644 sources/plugins/toolbar/lang/zh-cn.js create mode 100644 sources/plugins/toolbar/lang/zh.js create mode 100644 sources/plugins/toolbar/plugin.js create mode 100644 sources/plugins/toolbar/samples/toolbar.html create mode 100644 sources/plugins/undo/dev/snapshot.html create mode 100644 sources/plugins/undo/icons/hidpi/redo-rtl.png create mode 100644 sources/plugins/undo/icons/hidpi/redo.png create mode 100644 sources/plugins/undo/icons/hidpi/undo-rtl.png create mode 100644 sources/plugins/undo/icons/hidpi/undo.png create mode 100644 sources/plugins/undo/icons/redo-rtl.png create mode 100644 sources/plugins/undo/icons/redo.png create mode 100644 sources/plugins/undo/icons/undo-rtl.png create mode 100644 sources/plugins/undo/icons/undo.png create mode 100644 sources/plugins/undo/lang/af.js create mode 100644 sources/plugins/undo/lang/ar.js create mode 100644 sources/plugins/undo/lang/bg.js create mode 100644 sources/plugins/undo/lang/bn.js create mode 100644 sources/plugins/undo/lang/bs.js create mode 100644 sources/plugins/undo/lang/ca.js create mode 100644 sources/plugins/undo/lang/cs.js create mode 100644 sources/plugins/undo/lang/cy.js create mode 100644 sources/plugins/undo/lang/da.js create mode 100644 sources/plugins/undo/lang/de.js create mode 100644 sources/plugins/undo/lang/el.js create mode 100644 sources/plugins/undo/lang/en-au.js create mode 100644 sources/plugins/undo/lang/en-ca.js create mode 100644 sources/plugins/undo/lang/en-gb.js create mode 100644 sources/plugins/undo/lang/en.js create mode 100644 sources/plugins/undo/lang/eo.js create mode 100644 sources/plugins/undo/lang/es.js create mode 100644 sources/plugins/undo/lang/et.js create mode 100644 sources/plugins/undo/lang/eu.js create mode 100644 sources/plugins/undo/lang/fa.js create mode 100644 sources/plugins/undo/lang/fi.js create mode 100644 sources/plugins/undo/lang/fo.js create mode 100644 sources/plugins/undo/lang/fr-ca.js create mode 100644 sources/plugins/undo/lang/fr.js create mode 100644 sources/plugins/undo/lang/gl.js create mode 100644 sources/plugins/undo/lang/gu.js create mode 100644 sources/plugins/undo/lang/he.js create mode 100644 sources/plugins/undo/lang/hi.js create mode 100644 sources/plugins/undo/lang/hr.js create mode 100644 sources/plugins/undo/lang/hu.js create mode 100644 sources/plugins/undo/lang/id.js create mode 100644 sources/plugins/undo/lang/is.js create mode 100644 sources/plugins/undo/lang/it.js create mode 100644 sources/plugins/undo/lang/ja.js create mode 100644 sources/plugins/undo/lang/ka.js create mode 100644 sources/plugins/undo/lang/km.js create mode 100644 sources/plugins/undo/lang/ko.js create mode 100644 sources/plugins/undo/lang/ku.js create mode 100644 sources/plugins/undo/lang/lt.js create mode 100644 sources/plugins/undo/lang/lv.js create mode 100644 sources/plugins/undo/lang/mk.js create mode 100644 sources/plugins/undo/lang/mn.js create mode 100644 sources/plugins/undo/lang/ms.js create mode 100644 sources/plugins/undo/lang/nb.js create mode 100644 sources/plugins/undo/lang/nl.js create mode 100644 sources/plugins/undo/lang/no.js create mode 100644 sources/plugins/undo/lang/pl.js create mode 100644 sources/plugins/undo/lang/pt-br.js create mode 100644 sources/plugins/undo/lang/pt.js create mode 100644 sources/plugins/undo/lang/ro.js create mode 100644 sources/plugins/undo/lang/ru.js create mode 100644 sources/plugins/undo/lang/si.js create mode 100644 sources/plugins/undo/lang/sk.js create mode 100644 sources/plugins/undo/lang/sl.js create mode 100644 sources/plugins/undo/lang/sq.js create mode 100644 sources/plugins/undo/lang/sr-latn.js create mode 100644 sources/plugins/undo/lang/sr.js create mode 100644 sources/plugins/undo/lang/sv.js create mode 100644 sources/plugins/undo/lang/th.js create mode 100644 sources/plugins/undo/lang/tr.js create mode 100644 sources/plugins/undo/lang/tt.js create mode 100644 sources/plugins/undo/lang/ug.js create mode 100644 sources/plugins/undo/lang/uk.js create mode 100644 sources/plugins/undo/lang/vi.js create mode 100644 sources/plugins/undo/lang/zh-cn.js create mode 100644 sources/plugins/undo/lang/zh.js create mode 100644 sources/plugins/undo/plugin.js create mode 100644 sources/plugins/wsc/LICENSE.md create mode 100644 sources/plugins/wsc/README.md create mode 100644 sources/plugins/wsc/dialogs/ciframe.html create mode 100644 sources/plugins/wsc/dialogs/tmpFrameset.html create mode 100644 sources/plugins/wsc/dialogs/wsc.css create mode 100644 sources/plugins/wsc/dialogs/wsc.js create mode 100644 sources/plugins/wsc/dialogs/wsc_ie.js create mode 100644 sources/plugins/wsc/icons/hidpi/spellchecker.png create mode 100644 sources/plugins/wsc/icons/spellchecker.png create mode 100644 sources/plugins/wsc/lang/af.js create mode 100644 sources/plugins/wsc/lang/ar.js create mode 100644 sources/plugins/wsc/lang/bg.js create mode 100644 sources/plugins/wsc/lang/bn.js create mode 100644 sources/plugins/wsc/lang/bs.js create mode 100644 sources/plugins/wsc/lang/ca.js create mode 100644 sources/plugins/wsc/lang/cs.js create mode 100644 sources/plugins/wsc/lang/cy.js create mode 100644 sources/plugins/wsc/lang/da.js create mode 100644 sources/plugins/wsc/lang/de.js create mode 100644 sources/plugins/wsc/lang/el.js create mode 100644 sources/plugins/wsc/lang/en-au.js create mode 100644 sources/plugins/wsc/lang/en-ca.js create mode 100644 sources/plugins/wsc/lang/en-gb.js create mode 100644 sources/plugins/wsc/lang/en.js create mode 100644 sources/plugins/wsc/lang/eo.js create mode 100644 sources/plugins/wsc/lang/es.js create mode 100644 sources/plugins/wsc/lang/et.js create mode 100644 sources/plugins/wsc/lang/eu.js create mode 100644 sources/plugins/wsc/lang/fa.js create mode 100644 sources/plugins/wsc/lang/fi.js create mode 100644 sources/plugins/wsc/lang/fo.js create mode 100644 sources/plugins/wsc/lang/fr-ca.js create mode 100644 sources/plugins/wsc/lang/fr.js create mode 100644 sources/plugins/wsc/lang/gl.js create mode 100644 sources/plugins/wsc/lang/gu.js create mode 100644 sources/plugins/wsc/lang/he.js create mode 100644 sources/plugins/wsc/lang/hi.js create mode 100644 sources/plugins/wsc/lang/hr.js create mode 100644 sources/plugins/wsc/lang/hu.js create mode 100644 sources/plugins/wsc/lang/is.js create mode 100644 sources/plugins/wsc/lang/it.js create mode 100644 sources/plugins/wsc/lang/ja.js create mode 100644 sources/plugins/wsc/lang/ka.js create mode 100644 sources/plugins/wsc/lang/km.js create mode 100644 sources/plugins/wsc/lang/ko.js create mode 100644 sources/plugins/wsc/lang/ku.js create mode 100644 sources/plugins/wsc/lang/lt.js create mode 100644 sources/plugins/wsc/lang/lv.js create mode 100644 sources/plugins/wsc/lang/mk.js create mode 100644 sources/plugins/wsc/lang/mn.js create mode 100644 sources/plugins/wsc/lang/ms.js create mode 100644 sources/plugins/wsc/lang/nb.js create mode 100644 sources/plugins/wsc/lang/nl.js create mode 100644 sources/plugins/wsc/lang/no.js create mode 100644 sources/plugins/wsc/lang/pl.js create mode 100644 sources/plugins/wsc/lang/pt-br.js create mode 100644 sources/plugins/wsc/lang/pt.js create mode 100644 sources/plugins/wsc/lang/ro.js create mode 100644 sources/plugins/wsc/lang/ru.js create mode 100644 sources/plugins/wsc/lang/sk.js create mode 100644 sources/plugins/wsc/lang/sl.js create mode 100644 sources/plugins/wsc/lang/sr-latn.js create mode 100644 sources/plugins/wsc/lang/sr.js create mode 100644 sources/plugins/wsc/lang/sv.js create mode 100644 sources/plugins/wsc/lang/th.js create mode 100644 sources/plugins/wsc/lang/tr.js create mode 100644 sources/plugins/wsc/lang/ug.js create mode 100644 sources/plugins/wsc/lang/uk.js create mode 100644 sources/plugins/wsc/lang/vi.js create mode 100644 sources/plugins/wsc/lang/zh-cn.js create mode 100644 sources/plugins/wsc/lang/zh.js create mode 100644 sources/plugins/wsc/plugin.js create mode 100644 sources/plugins/wysiwygarea/plugin.js create mode 100644 sources/plugins/wysiwygarea/samples/fullpage.html (limited to 'sources/plugins') diff --git a/sources/plugins/a11yhelp/dialogs/a11yhelp.js b/sources/plugins/a11yhelp/dialogs/a11yhelp.js new file mode 100644 index 00000000..60ce9f86 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/a11yhelp.js @@ -0,0 +1,216 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.dialog.add( 'a11yHelp', function( editor ) { + var lang = editor.lang.a11yhelp, + id = CKEDITOR.tools.getNextId(); + + // CharCode <-> KeyChar. + var keyMap = { + 8: lang.backspace, + 9: lang.tab, + 13: lang.enter, + 16: lang.shift, + 17: lang.ctrl, + 18: lang.alt, + 19: lang.pause, + 20: lang.capslock, + 27: lang.escape, + 33: lang.pageUp, + 34: lang.pageDown, + 35: lang.end, + 36: lang.home, + 37: lang.leftArrow, + 38: lang.upArrow, + 39: lang.rightArrow, + 40: lang.downArrow, + 45: lang.insert, + 46: lang[ 'delete' ], + 91: lang.leftWindowKey, + 92: lang.rightWindowKey, + 93: lang.selectKey, + 96: lang.numpad0, + 97: lang.numpad1, + 98: lang.numpad2, + 99: lang.numpad3, + 100: lang.numpad4, + 101: lang.numpad5, + 102: lang.numpad6, + 103: lang.numpad7, + 104: lang.numpad8, + 105: lang.numpad9, + 106: lang.multiply, + 107: lang.add, + 109: lang.subtract, + 110: lang.decimalPoint, + 111: lang.divide, + 112: lang.f1, + 113: lang.f2, + 114: lang.f3, + 115: lang.f4, + 116: lang.f5, + 117: lang.f6, + 118: lang.f7, + 119: lang.f8, + 120: lang.f9, + 121: lang.f10, + 122: lang.f11, + 123: lang.f12, + 144: lang.numLock, + 145: lang.scrollLock, + 186: lang.semiColon, + 187: lang.equalSign, + 188: lang.comma, + 189: lang.dash, + 190: lang.period, + 191: lang.forwardSlash, + 192: lang.graveAccent, + 219: lang.openBracket, + 220: lang.backSlash, + 221: lang.closeBracket, + 222: lang.singleQuote + }; + + // Modifier keys override. + keyMap[ CKEDITOR.ALT ] = lang.alt; + keyMap[ CKEDITOR.SHIFT ] = lang.shift; + keyMap[ CKEDITOR.CTRL ] = lang.ctrl; + + // Sort in desc. + var modifiers = [ CKEDITOR.ALT, CKEDITOR.SHIFT, CKEDITOR.CTRL ]; + + function representKeyStroke( keystroke ) { + var quotient, modifier, + presentation = []; + + for ( var i = 0; i < modifiers.length; i++ ) { + modifier = modifiers[ i ]; + quotient = keystroke / modifiers[ i ]; + if ( quotient > 1 && quotient <= 2 ) { + keystroke -= modifier; + presentation.push( keyMap[ modifier ] ); + } + } + + presentation.push( keyMap[ keystroke ] || String.fromCharCode( keystroke ) ); + + return presentation.join( '+' ); + } + + var variablesPattern = /\$\{(.*?)\}/g; + + var replaceVariables = ( function() { + // Swaps keystrokes with their commands in object literal. + // This makes searching keystrokes by command much easier. + var keystrokesByCode = editor.keystrokeHandler.keystrokes, + keystrokesByName = {}; + + for ( var i in keystrokesByCode ) + keystrokesByName[ keystrokesByCode[ i ] ] = i; + + return function( match, name ) { + // Return the keystroke representation or leave match untouched + // if there's no keystroke for such command. + return keystrokesByName[ name ] ? representKeyStroke( keystrokesByName[ name ] ) : match; + }; + } )(); + + // Create the help list directly from lang file entries. + function buildHelpContents() { + var pageTpl = '
%1
' + + '' + lang.contents + ' ', + sectionTpl = '

%1

%2
', + itemTpl = '
%1
%2
'; + + var pageHtml = [], + sections = lang.legend, + sectionLength = sections.length; + + for ( var i = 0; i < sectionLength; i++ ) { + var section = sections[ i ], + sectionHtml = [], + items = section.items, + itemsLength = items.length; + + for ( var j = 0; j < itemsLength; j++ ) { + var item = items[ j ], + itemLegend = item.legend.replace( variablesPattern, replaceVariables ); + + // (#9765) If some commands haven't been replaced in the legend, + // most likely their keystrokes are unavailable and we shouldn't include + // them in our help list. + if ( itemLegend.match( variablesPattern ) ) + continue; + + sectionHtml.push( itemTpl.replace( '%1', item.name ).replace( '%2', itemLegend ) ); + } + + pageHtml.push( sectionTpl.replace( '%1', section.name ).replace( '%2', sectionHtml.join( '' ) ) ); + } + + return pageTpl.replace( '%1', pageHtml.join( '' ) ); + } + + return { + title: lang.title, + minWidth: 600, + minHeight: 400, + contents: [ { + id: 'info', + label: editor.lang.common.generalTab, + expand: true, + elements: [ + { + type: 'html', + id: 'legends', + style: 'white-space:normal;', + focus: function() { + this.getElement().focus(); + }, + html: buildHelpContents() + '' + } + ] + } ], + buttons: [ CKEDITOR.dialog.cancelButton ] + }; +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/_translationstatus.txt b/sources/plugins/a11yhelp/dialogs/lang/_translationstatus.txt new file mode 100644 index 00000000..a7cc6699 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/_translationstatus.txt @@ -0,0 +1,25 @@ +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license + +cs.js Found: 30 Missing: 0 +cy.js Found: 30 Missing: 0 +da.js Found: 12 Missing: 18 +de.js Found: 30 Missing: 0 +el.js Found: 25 Missing: 5 +eo.js Found: 30 Missing: 0 +fa.js Found: 30 Missing: 0 +fi.js Found: 30 Missing: 0 +fr.js Found: 30 Missing: 0 +gu.js Found: 12 Missing: 18 +he.js Found: 30 Missing: 0 +it.js Found: 30 Missing: 0 +mk.js Found: 5 Missing: 25 +nb.js Found: 30 Missing: 0 +nl.js Found: 30 Missing: 0 +no.js Found: 30 Missing: 0 +pt-br.js Found: 30 Missing: 0 +ro.js Found: 6 Missing: 24 +tr.js Found: 30 Missing: 0 +ug.js Found: 27 Missing: 3 +vi.js Found: 6 Missing: 24 +zh-cn.js Found: 30 Missing: 0 diff --git a/sources/plugins/a11yhelp/dialogs/lang/af.js b/sources/plugins/a11yhelp/dialogs/lang/af.js new file mode 100644 index 00000000..8d36d9cb --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/af.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'af', { + title: 'Toeganglikheid instruksies', + contents: 'Hulp inhoud. Druk ESC om toe te maak.', + legend: [ + { + name: 'Algemeen', + items: [ + { + name: 'Bewerker balk', + legend: 'Druk ${toolbarFocus} om op die werkbalk te land. Beweeg na die volgende en voorige wekrbalkgroep met TAB and SHIFT+TAB. Beweeg na die volgende en voorige werkbalkknop met die regter of linker pyl. Druk SPASIE of ENTER om die knop te bevestig.' + }, + + { + name: 'Bewerker dialoog', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Bewerkerinhoudmenu', + legend: 'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.' // MISSING + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Commands', // MISSING + items: [ + { + name: ' Undo command', // MISSING + legend: 'Press ${undo}' // MISSING + }, + { + name: ' Redo command', // MISSING + legend: 'Press ${redo}' // MISSING + }, + { + name: ' Bold command', // MISSING + legend: 'Press ${bold}' // MISSING + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pouse', + capslock: 'Hoofletterslot', + escape: 'Ontsnap', + pageUp: 'Blaaiop', + pageDown: 'Blaaiaf', + end: 'Einde', + home: 'Tuis', + leftArrow: 'Linkspyl', + upArrow: 'Oppyl', + rightArrow: 'Regterpyl', + downArrow: 'Afpyl', + insert: 'Toevoeg', + 'delete': 'Verwyder', + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Nommerblok 0', + numpad1: 'Nommerblok 1', + numpad2: 'Nommerblok 2', + numpad3: 'Nommerblok 3', + numpad4: 'Nommerblok 4', + numpad5: 'Nommerblok 5', + numpad6: 'Nommerblok 6', + numpad7: 'Nommerblok 7', + numpad8: 'Nommerblok 8', + numpad9: 'Nommerblok 9', + multiply: 'Maal', + add: 'Plus', + subtract: 'Minus', + decimalPoint: 'Desimaalepunt', + divide: 'Gedeeldeur', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Nommervergrendel', + scrollLock: 'Rolvergrendel', + semiColon: 'Kommapunt', + equalSign: 'Isgelykaan', + comma: 'Komma', + dash: 'Koppelteken', + period: 'Punt', + forwardSlash: 'Skuinsstreep', + graveAccent: 'Aksentteken', + openBracket: 'Oopblokhakkie', + backSlash: 'Trustreep', + closeBracket: 'Toeblokhakkie', + singleQuote: 'Enkelaanhaalingsteken' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/ar.js b/sources/plugins/a11yhelp/dialogs/lang/ar.js new file mode 100644 index 00000000..2131ed77 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ar.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'ar', { + title: 'Accessibility Instructions', // MISSING + contents: 'Help Contents. To close this dialog press ESC.', // MISSING + legend: [ + { + name: 'عام', + items: [ + { + name: 'Editor Toolbar', // MISSING + 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 + }, + + { + name: 'Editor Dialog', // MISSING + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Commands', // MISSING + items: [ + { + name: ' Undo command', // MISSING + legend: 'Press ${undo}' // MISSING + }, + { + name: ' Redo command', // MISSING + legend: 'Press ${redo}' // MISSING + }, + { + name: ' Bold command', // MISSING + legend: 'Press ${bold}' // MISSING + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'إضافة', + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'تقسيم', + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'فاصلة', + dash: 'Dash', // MISSING + period: 'نقطة', + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/bg.js b/sources/plugins/a11yhelp/dialogs/lang/bg.js new file mode 100644 index 00000000..605d5922 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/bg.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'bg', { + title: 'Accessibility Instructions', // MISSING + contents: 'Help Contents. To close this dialog press ESC.', // MISSING + legend: [ + { + name: 'Общо', + items: [ + { + name: 'Editor Toolbar', // MISSING + 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 + }, + + { + name: 'Editor Dialog', // MISSING + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Commands', // MISSING + items: [ + { + name: ' Undo command', // MISSING + legend: 'Press ${undo}' // MISSING + }, + { + name: ' Redo command', // MISSING + legend: 'Press ${redo}' // MISSING + }, + { + name: ' Bold command', // MISSING + legend: 'Press ${bold}' // MISSING + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/ca.js b/sources/plugins/a11yhelp/dialogs/lang/ca.js new file mode 100644 index 00000000..bd224f9b --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ca.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'ca', { + title: 'Instruccions d\'Accessibilitat', + contents: 'Continguts de l\'Ajuda. Per tancar aquest quadre de diàleg premi ESC.', + legend: [ + { + name: 'General', + items: [ + { + name: 'Editor de barra d\'eines', + legend: 'Premi ${toolbarFocus} per desplaçar-se per la barra d\'eines. Vagi en el següent i anterior grup de barra d\'eines amb TAB i SHIFT+TAB. Vagi en el següent i anterior botó de la barra d\'eines amb RIGHT ARROW i LEFT ARROW. Premi SPACE o ENTER per activar el botó de la barra d\'eines.' + }, + + { + name: 'Editor de quadre de diàleg', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor de menú contextual', + legend: 'Premi ${contextMenu} o APPLICATION KEY per obrir el menú contextual. Després desplacis a la següent opció del menú amb TAB o DOWN ARROW. Desplacis a l\'anterior opció amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l\'opció del menú. Obri el submenú de l\'actual opció utilitzant SPACE o ENTER o RIGHT ARROW. Pot tornar a l\'opció del menú pare amb ESC o LEFT ARROW. Tanqui el menú contextual amb ESC.' + }, + + { + name: 'Editor de caixa de llista', + legend: 'Dins d\'un quadre de llista, desplacis al següent element de la llista amb TAB o DOWN ARROW. Desplacis a l\'anterior element de la llista amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l\'opció de la llista. Premi ESC per tancar el quadre de llista.' + }, + + { + name: 'Editor de barra de ruta de l\'element', + legend: 'Premi ${elementsPathFocus} per anar als elements de la barra de ruta. Desplacis al botó de l\'element següent amb TAB o RIGHT ARROW. Desplacis a l\'anterior botó amb SHIFT+TAB o LEFT ARROW. Premi SPACE o ENTER per seleccionar l\'element a l\'editor.' + } + ] + }, + { + name: 'Ordres', + items: [ + { + name: 'Desfer ordre', + legend: 'Premi ${undo}' + }, + { + name: 'Refer ordre', + legend: 'Premi ${redo}' + }, + { + name: 'Ordre negreta', + legend: 'Premi ${bold}' + }, + { + name: 'Ordre cursiva', + legend: 'Premi ${italic}' + }, + { + name: 'Ordre subratllat', + legend: 'Premi ${underline}' + }, + { + name: 'Ordre enllaç', + legend: 'Premi ${link}' + }, + { + name: 'Ordre amagar barra d\'eines', + legend: 'Premi ${toolbarCollapse}' + }, + { + name: 'Ordre per accedir a l\'anterior espai enfocat', + legend: 'Premi ${accessPreviousSpace} per accedir a l\'enfocament d\'espai més proper inabastable abans del símbol d\'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d\'espais distants.' + }, + { + name: 'Ordre per accedir al següent espai enfocat', + legend: 'Premi ${accessNextSpace} per accedir a l\'enfocament d\'espai més proper inabastable després del símbol d\'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d\'espais distants.' + }, + { + name: 'Ajuda d\'accessibilitat', + legend: 'Premi ${a11yHelp}' + } + ] + } + ], + backspace: 'Retrocés', + tab: 'Tabulació', + enter: 'Intro', + shift: 'Majúscules', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pausa', + capslock: 'Bloqueig de majúscules', + escape: 'Escape', + pageUp: 'Pàgina Amunt', + pageDown: 'Pàgina Avall', + end: 'Fi', + home: 'Inici', + leftArrow: 'Fletxa Esquerra', + upArrow: 'Fletxa Amunt', + rightArrow: 'Fletxa Dreta', + downArrow: 'Fletxa Avall', + insert: 'Inserir', + 'delete': 'Eliminar', + leftWindowKey: 'Tecla Windows Esquerra', + rightWindowKey: 'Tecla Windows Dreta', + selectKey: 'Tecla Seleccionar', + numpad0: 'Teclat Numèric 0', + numpad1: 'Teclat Numèric 1', + numpad2: 'Teclat Numèric 2', + numpad3: 'Teclat Numèric 3', + numpad4: 'Teclat Numèric 4', + numpad5: 'Teclat Numèric 5', + numpad6: 'Teclat Numèric 6', + numpad7: 'Teclat Numèric 7', + numpad8: 'Teclat Numèric 8', + numpad9: 'Teclat Numèric 9', + multiply: 'Multiplicació', + add: 'Suma', + subtract: 'Resta', + decimalPoint: 'Punt Decimal', + divide: 'Divisió', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Bloqueig Teclat Numèric', + scrollLock: 'Bloqueig de Desplaçament', + semiColon: 'Punt i Coma', + equalSign: 'Símbol Igual', + comma: 'Coma', + dash: 'Guió', + period: 'Punt', + forwardSlash: 'Barra Diagonal', + graveAccent: 'Accent Obert', + openBracket: 'Claudàtor Obert', + backSlash: 'Barra Invertida', + closeBracket: 'Claudàtor Tancat', + singleQuote: 'Cometa Simple' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/cs.js b/sources/plugins/a11yhelp/dialogs/lang/cs.js new file mode 100644 index 00000000..ceb45767 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/cs.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'cs', { + title: 'Instrukce pro přístupnost', + contents: 'Obsah nápovědy. Pro uzavření tohoto dialogu stiskněte klávesu ESC.', + legend: [ + { + name: 'Obecné', + items: [ + { + name: 'Panel nástrojů editoru', + legend: 'Stiskněte${toolbarFocus} k procházení panelu nástrojů. Přejděte na další a předchozí skupiny pomocí TAB a SHIFT+TAB. Přechod na další a předchozí tlačítko panelu nástrojů je pomocí ŠIPKA VPRAVO nebo ŠIPKA VLEVO. Stisknutím mezerníku nebo klávesy ENTER tlačítko aktivujete.' + }, + + { + name: 'Dialogové okno editoru', + legend: + 'Uvnitř dialogového okna stiskněte TAB pro přesunutí na další prvek okna, stiskněte SHIFT+TAB pro přesun na předchozí prvek okna, stiskněte ENTER pro odeslání dialogu, stiskněte ESC pro jeho zrušení. Pro dialogová okna, která mají mnoho karet stiskněte ALT+F10 pro zaměření seznamu karet, nebo TAB, pro posun podle pořadí karet.Při zaměření seznamu karet se můžete jimi posouvat pomocí ŠIPKY VPRAVO a VLEVO.' + }, + + { + name: 'Kontextové menu editoru', + legend: 'Stiskněte ${contextMenu} nebo klávesu APPLICATION k otevření kontextového menu. Pak se přesuňte na další možnost menu pomocí TAB nebo ŠIPKY DOLŮ. Přesuňte se na předchozí možnost pomocí SHIFT+TAB nebo ŠIPKY NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti menu. Podmenu současné možnosti otevřete pomocí MEZERNÍKU nebo ENTER či ŠIPKY DOLEVA. Kontextové menu uzavřete stiskem ESC.' + }, + + { + name: 'Rámeček seznamu editoru', + legend: 'Uvnitř rámečku seznamu se přesunete na další položku menu pomocí TAB nebo ŠIPKA DOLŮ. Na předchozí položku se přesunete SHIFT+TAB nebo ŠIPKA NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti seznamu. Stiskněte ESC pro uzavření seznamu.' + }, + + { + name: 'Lišta cesty prvku v editoru', + legend: 'Stiskněte ${elementsPathFocus} pro procházení lišty cesty prvku. Na další tlačítko prvku se přesunete pomocí TAB nebo ŠIPKA VPRAVO. Na předchozí tlačítko se přesunete pomocí SHIFT+TAB nebo ŠIPKA VLEVO. Stiskněte MEZERNÍK nebo ENTER pro vybrání prvku v editoru.' + } + ] + }, + { + name: 'Příkazy', + items: [ + { + name: ' Příkaz Zpět', + legend: 'Stiskněte ${undo}' + }, + { + name: ' Příkaz Znovu', + legend: 'Stiskněte ${redo}' + }, + { + name: ' Příkaz Tučné', + legend: 'Stiskněte ${bold}' + }, + { + name: ' Příkaz Kurzíva', + legend: 'Stiskněte ${italic}' + }, + { + name: ' Příkaz Podtržení', + legend: 'Stiskněte ${underline}' + }, + { + name: ' Příkaz Odkaz', + legend: 'Stiskněte ${link}' + }, + { + name: ' Příkaz Skrýt panel nástrojů', + legend: 'Stiskněte ${toolbarCollapse}' + }, + { + name: 'Příkaz pro přístup k předchozímu prostoru zaměření', + legend: 'Stiskněte ${accessPreviousSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření před stříškou, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte.' + }, + { + name: 'Příkaz pro přístup k dalšímu prostoru zaměření', + legend: 'Stiskněte ${accessNextSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření po stříšce, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte.' + }, + { + name: ' Nápověda přístupnosti', + legend: 'Stiskněte ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tabulátor', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pauza', + capslock: 'Caps lock', + escape: 'Escape', + pageUp: 'Stránka nahoru', + pageDown: 'Stránka dolů', + end: 'Konec', + home: 'Domů', + leftArrow: 'Šipka vlevo', + upArrow: 'Šipka nahoru', + rightArrow: 'Šipka vpravo', + downArrow: 'Šipka dolů', + insert: 'Vložit', + 'delete': 'Smazat', + leftWindowKey: 'Levá klávesa Windows', + rightWindowKey: 'Pravá klávesa Windows', + selectKey: 'Vyberte klávesu', + numpad0: 'Numerická klávesa 0', + numpad1: 'Numerická klávesa 1', + numpad2: 'Numerická klávesa 2', + numpad3: 'Numerická klávesa 3', + numpad4: 'Numerická klávesa 4', + numpad5: 'Numerická klávesa 5', + numpad6: 'Numerická klávesa 6', + numpad7: 'Numerická klávesa 7', + numpad8: 'Numerická klávesa 8', + numpad9: 'Numerická klávesa 9', + multiply: 'Numerická klávesa násobení', + add: 'Přidat', + subtract: 'Numerická klávesa odečítání', + decimalPoint: 'Desetinná tečka', + divide: 'Numerická klávesa dělení', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num lock', + scrollLock: 'Scroll lock', + semiColon: 'Středník', + equalSign: 'Rovnítko', + comma: 'Čárka', + dash: 'Pomlčka', + period: 'Tečka', + forwardSlash: 'Lomítko', + graveAccent: 'Přízvuk', + openBracket: 'Otevřená hranatá závorka', + backSlash: 'Obrácené lomítko', + closeBracket: 'Uzavřená hranatá závorka', + singleQuote: 'Jednoduchá uvozovka' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/cy.js b/sources/plugins/a11yhelp/dialogs/lang/cy.js new file mode 100644 index 00000000..2d8fbb35 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/cy.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'cy', { + title: 'Canllawiau Hygyrchedd', + contents: 'Cynnwys Cymorth. I gau y deialog hwn, pwyswch ESC.', + legend: [ + { + name: 'Cyffredinol', + items: [ + { + name: 'Bar Offer y Golygydd', + legend: 'Pwyswch $ {toolbarFocus} i fynd at y bar offer. Symudwch i\'r grŵp bar offer nesaf a blaenorol gyda TAB a SHIFT+TAB. Symudwch i\'r botwm bar offer nesaf a blaenorol gyda SAETH DDE neu SAETH CHWITH. Pwyswch SPACE neu ENTER i wneud botwm y bar offer yn weithredol.' + }, + + { + name: 'Deialog y Golygydd', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Dewislen Cyd-destun y Golygydd', + legend: 'Pwyswch $ {contextMenu} neu\'r ALLWEDD \'APPLICATION\' i agor y ddewislen cyd-destun. Yna symudwch i\'r opsiwn ddewislen nesaf gyda\'r TAB neu\'r SAETH I LAWR. Symudwch i\'r opsiwn blaenorol gyda SHIFT+TAB neu\'r SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn ddewislen. Agorwch is-dewislen yr opsiwn cyfredol gyda SPACE neu ENTER neu SAETH DDE. Ewch yn ôl i\'r eitem ar y ddewislen uwch gydag ESC neu SAETH CHWITH. Ceuwch y ddewislen cyd-destun gydag ESC.' + }, + + { + name: 'Blwch Rhestr y Golygydd', + legend: 'Tu mewn y blwch rhestr, ewch i\'r eitem rhestr nesaf gyda TAB neu\'r SAETH I LAWR. Symudwch i restr eitem flaenorol gyda SHIFT+TAB neu SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn o\'r rhestr. Pwyswch ESC i gau\'r rhestr.' + }, + + { + name: 'Bar Llwybr Elfen y Golygydd', + legend: 'Pwyswch ${elementsPathFocus} i fynd i\'r bar llwybr elfennau. Symudwch i fotwm yr elfen nesaf gyda TAB neu SAETH DDE. Symudwch i fotwm blaenorol gyda SHIFT+TAB neu SAETH CHWITH. Pwyswch SPACE neu ENTER i ddewis yr elfen yn y golygydd.' + } + ] + }, + { + name: 'Gorchmynion', + items: [ + { + name: 'Gorchymyn dadwneud', + legend: 'Pwyswch ${undo}' + }, + { + name: 'Gorchymyn ailadrodd', + legend: 'Pwyswch ${redo}' + }, + { + name: 'Gorchymyn Bras', + legend: 'Pwyswch ${bold}' + }, + { + name: 'Gorchymyn italig', + legend: 'Pwyswch ${italig}' + }, + { + name: 'Gorchymyn tanlinellu', + legend: 'Pwyso ${underline}' + }, + { + name: 'Gorchymyn dolen', + legend: 'Pwyswch ${link}' + }, + { + name: 'Gorchymyn Cwympo\'r Dewislen', + legend: 'Pwyswch ${toolbarCollapse}' + }, + { + name: 'Myned i orchymyn bwlch ffocws blaenorol', + legend: 'Pwyswch ${accessPreviousSpace} i fyned i\'r "blwch ffocws sydd methu ei gyrraedd" cyn y caret, er enghraifft: dwy elfen HR drws nesaf i\'w gilydd. AIladroddwch y cyfuniad allwedd i gyrraedd bylchau ffocws pell.' + }, + { + name: 'Ewch i\'r gorchymyn blwch ffocws nesaf', + legend: 'Pwyswch ${accessNextSpace} i fyned i\'r blwch ffocws agosaf nad oes modd ei gyrraedd ar ôl y caret, er enghraifft: dwy elfen HR drws nesaf i\'w gilydd. Ailadroddwch y cyfuniad allwedd i gyrraedd blychau ffocws pell.' + }, + { + name: 'Cymorth Hygyrchedd', + legend: 'Pwyswch ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/da.js b/sources/plugins/a11yhelp/dialogs/lang/da.js new file mode 100644 index 00000000..e13b6ece --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/da.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'da', { + title: 'Tilgængelighedsinstrukser', + contents: 'Onlinehjælp. For at lukke dette vindue klik ESC', + legend: [ + { + name: 'Generelt', + items: [ + { + name: 'Editor værktøjslinje', + legend: 'Tryk ${toolbarFocus} for at navigere til værktøjslinjen. Flyt til næste eller forrige værktøjsline gruppe ved hjælp af TAB eller SHIFT+TAB. Flyt til næste eller forrige værktøjslinje knap med venstre- eller højre piltast. Tryk på SPACE eller ENTER for at aktivere værktøjslinje knappen.' + }, + + { + name: 'Editor dialogboks', + legend: + 'Inde i en dialogboks kan du, trykke på TAB for at navigere til næste element, trykke på SHIFT+TAB for at navigere til forrige element, trykke på ENTER for at afsende eller trykke på ESC for at lukke dialogboksen.\r\nNår en dialogboks har flere faner, fanelisten kan tilgås med ALT+F10 eller med TAB. Hvis fanelisten er i fokus kan du skifte til næste eller forrige tab, med højre- og venstre piltast.' + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Kommandoer', + items: [ + { + name: 'Fortryd kommando', + legend: 'Klik på ${undo}' + }, + { + name: 'Gentag kommando', + legend: 'Klik ${redo}' + }, + { + name: 'Fed kommando', + legend: 'Klik ${bold}' + }, + { + name: 'Kursiv kommando', + legend: 'Klik ${italic}' + }, + { + name: 'Understregnings kommando', + legend: 'Klik ${underline}' + }, + { + name: 'Link kommando', + legend: 'Klik ${link}' + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Klik ${toolbarCollapse}' + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: 'Tilgængelighedshjælp', + legend: 'Kilk ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Venstre pil', + upArrow: 'Pil op', + rightArrow: 'Højre pil', + downArrow: 'Pil ned', + insert: 'Insert', + 'delete': 'Delete', + leftWindowKey: 'Venstre Windows tast', + rightWindowKey: 'Højre Windows tast', + selectKey: 'Select-knap', + numpad0: 'Numpad 0', + numpad1: 'Numpad 1', + numpad2: 'Numpad 2', + numpad3: 'Numpad 3', + numpad4: 'Numpad 4', + numpad5: 'Numpad 5', + numpad6: 'Numpad 6', + numpad7: 'Numpad 7', + numpad8: 'Numpad 8', + numpad9: 'Numpad 9', + multiply: 'Gange', + add: 'Plus', + subtract: 'Minus', + decimalPoint: 'Komma', + divide: 'Divider', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Semikolon', + equalSign: 'Lighedstegn', + comma: 'Komma', + dash: 'Bindestreg', + period: 'Punktum', + forwardSlash: 'Skråstreg', + graveAccent: 'Accent grave', + openBracket: 'Start klamme', + backSlash: 'Omvendt skråstreg', + closeBracket: 'Slut klamme', + singleQuote: 'Enkelt citationstegn' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/de.js b/sources/plugins/a11yhelp/dialogs/lang/de.js new file mode 100644 index 00000000..16561978 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/de.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'de', { + title: 'Barrierefreiheitinformationen', + contents: 'Hilfeinhalt. Um den Dialog zu schliessen die Taste ESC drücken.', + legend: [ + { + name: 'Allgemein', + items: [ + { + name: 'Editorwerkzeugleiste', + legend: 'Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT+TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren.' + }, + + { + name: 'Editordialog', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor-Kontextmenü', + legend: 'Dürcken Sie ${contextMenu} oder die Anwendungstaste um das Kontextmenü zu öffnen. Man kann die Pfeiltasten zum Wechsel benutzen. Mit der Leertaste oder der Enter-Taste kann man den Menüpunkt aufrufen. Schliessen Sie das Kontextmenü mit der ESC-Taste.' + }, + + { + name: 'Editor-Listenbox', + legend: 'Innerhalb einer Listenbox kann man mit der TAB-Taste oder den Pfeilrunter-Taste den nächsten Menüeintrag wählen. Mit der SHIFT+TAB Tastenkombination oder der Pfeilhoch-Taste gelangt man zum vorherigen Menüpunkt. Mit der Leertaste oder Enter kann man den Menüpunkt auswählen. Drücken Sie ESC zum Verlassen des Menüs.' + }, + + { + name: 'Editor-Elementpfadleiste', + legend: 'Drücken Sie ${elementsPathFocus} um sich durch die Pfadleiste zu bewegen. Um zum nächsten Element zu gelangen drücken Sie TAB oder die Pfeilrechts-Taste. Zum vorherigen Element gelangen Sie mit der SHIFT+TAB oder der Pfeillinks-Taste. Drücken Sie die Leertaste oder Enter um das Element auszuwählen.' + } + ] + }, + { + name: 'Befehle', + items: [ + { + name: 'Rückgängig-Befehl', + legend: 'Drücken Sie ${undo}' + }, + { + name: 'Wiederherstellen-Befehl', + legend: 'Drücken Sie ${redo}' + }, + { + name: 'Fettschrift-Befehl', + legend: 'Drücken Sie ${bold}' + }, + { + name: 'Kursiv-Befehl', + legend: 'Drücken Sie ${italic}' + }, + { + name: 'Unterstreichen-Befehl', + legend: 'Drücken Sie ${underline}' + }, + { + name: 'Link-Befehl', + legend: 'Drücken Sie ${link}' + }, + { + name: 'Werkzeugleiste einklappen-Befehl', + legend: 'Drücken Sie ${toolbarCollapse}' + }, + { + name: 'Zugang bisheriger Fokussierung Raumbefehl ', + legend: 'Drücken Sie ${accessPreviousSpace} auf den am nächsten nicht erreichbar Fokus-Abstand vor die Einfügemarke zugreifen: zwei benachbarte HR-Elemente. Wiederholen Sie die Tastenkombination um entfernte Fokusräume zu erreichen. ' + }, + { + name: 'Zugang nächster Schwerpunkt Raumbefehl ', + legend: 'Drücken Sie $ { accessNextSpace }, um den nächsten unerreichbar Fokus Leerzeichen nach dem Cursor zum Beispiel auf: zwei benachbarten HR Elemente. Wiederholen Sie die Tastenkombination zum fernen Fokus Bereiche zu erreichen. ' + }, + { + name: 'Eingabehilfen', + legend: 'Drücken Sie ${a11yHelp}' + } + ] + } + ], + backspace: 'Rücktaste', + tab: 'Tab', + enter: 'Eingabe', + shift: 'Umschalt', + ctrl: 'Strg', + alt: 'Alt', + pause: 'Pause', + capslock: 'Feststell', + escape: 'Escape', + pageUp: 'Bild auf', + pageDown: 'Bild ab', + end: 'Ende', + home: 'Pos1', + leftArrow: 'Linke Pfeiltaste', + upArrow: 'Obere Pfeiltaste', + rightArrow: 'Rechte Pfeiltaste', + downArrow: 'Untere Pfeiltaste', + insert: 'Einfügen', + 'delete': 'Entfernen', + leftWindowKey: 'Linke Windowstaste', + rightWindowKey: 'Rechte Windowstaste', + selectKey: 'Taste auswählen', + numpad0: 'Ziffernblock 0', + numpad1: 'Ziffernblock 1', + numpad2: 'Ziffernblock 2', + numpad3: 'Ziffernblock 3', + numpad4: 'Ziffernblock 4', + numpad5: 'Ziffernblock 5', + numpad6: 'Ziffernblock 6', + numpad7: 'Ziffernblock 7', + numpad8: 'Ziffernblock 8', + numpad9: 'Ziffernblock 9', + multiply: 'Multiplizieren', + add: 'Addieren', + subtract: 'Subtrahieren', + decimalPoint: 'Punkt', + divide: 'Dividieren', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Ziffernblock feststellen', + scrollLock: 'Rollen', + semiColon: 'Semikolon', + equalSign: 'Gleichheitszeichen', + comma: 'Komma', + dash: 'Bindestrich', + period: 'Punkt', + forwardSlash: 'Schrägstrich', + graveAccent: 'Gravis', + openBracket: 'Öffnende eckige Klammer', + backSlash: 'Rückwärtsgewandter Schrägstrich', + closeBracket: 'Schließende eckige Klammer', + singleQuote: 'Einfaches Anführungszeichen' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/el.js b/sources/plugins/a11yhelp/dialogs/lang/el.js new file mode 100644 index 00000000..a9a39f4e --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/el.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'el', { + title: 'Οδηγίες Προσβασιμότητας', + contents: 'Περιεχόμενα Βοήθειας. Πατήστε ESC για κλείσιμο.', + legend: [ + { + name: 'Γενικά', + items: [ + { + name: 'Εργαλειοθήκη Επεξεργαστή', + legend: 'Πατήστε ${toolbarFocus} για να περιηγηθείτε στην γραμμή εργαλείων. Μετακινηθείτε ανάμεσα στις ομάδες της γραμμής εργαλείων με TAB και SHIFT+TAB. Μετακινηθείτε ανάμεσα στα κουμπιά εργαλείων με το ΔΕΞΙ ή ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να ενεργοποιήσετε το ενεργό κουμπί εργαλείου.' + }, + + { + name: 'Παράθυρο Διαλόγου Επεξεργαστή', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Αναδυόμενο Μενού Επεξεργαστή', + legend: 'Πατήστε ${contextMenu} ή APPLICATION KEY για να ανοίξετε το αναδυόμενο μενού. Μετά μετακινηθείτε στην επόμενη επιλογή του μενού με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στην προηγούμενη επιλογή με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξτε το τρέχων στοιχείο. Ανοίξτε το αναδυόμενο μενού της τρέχουσας επιλογής με ΔΙΑΣΤΗΜΑ ή ENTER ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μεταβείτε πίσω στο αρχικό στοιχείο μενού με το ESC ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Κλείστε το αναδυόμενο μενού με ESC.' + }, + + { + name: 'Κουτί Λίστας Επεξεργαστών', + legend: 'Μέσα σε ένα κουτί λίστας, μετακινηθείτε στο επόμενο στοιχείο με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στο προηγούμενο στοιχείο με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε ένα στοιχείο. Πατήστε ESC για να κλείσετε το κουτί της λίστας.' + }, + + { + name: 'Μπάρα Διαδρομών Στοιχείων Επεξεργαστή', + legend: 'Πατήστε ${elementsPathFocus} για να περιηγηθείτε στην μπάρα διαδρομών στοιχείων του επεξεργαστή. Μετακινηθείτε στο κουμπί του επόμενου στοιχείου με το TAB ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μετακινηθείτε στο κουμπί του προηγούμενου στοιχείου με το SHIFT+TAB ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε το στοιχείο στον επεξεργαστή.' + } + ] + }, + { + name: 'Εντολές', + items: [ + { + name: 'Εντολή αναίρεσης', + legend: 'Πατήστε ${undo}' + }, + { + name: 'Εντολή επανάληψης', + legend: 'Πατήστε ${redo}' + }, + { + name: 'Εντολή έντονης γραφής', + legend: 'Πατήστε ${bold}' + }, + { + name: 'Εντολή πλάγιας γραφής', + legend: 'Πατήστε ${italic}' + }, + { + name: 'Εντολή υπογράμμισης', + legend: 'Πατήστε ${underline}' + }, + { + name: 'Εντολή συνδέσμου', + legend: 'Πατήστε ${link}' + }, + { + name: 'Εντολή Σύμπτηξης Εργαλειοθήκης', + legend: 'Πατήστε ${toolbarCollapse}' + }, + { + name: 'Πρόσβαση στην προηγούμενη εντολή του χώρου εστίασης ', + legend: 'Πατήστε ${accessPreviousSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης πριν το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για να φθάσετε στους χώρους μακρινής εστίασης. ' + }, + { + name: 'Πρόσβαση στην επόμενη εντολή του χώρου εστίασης', + legend: 'Πατήστε ${accessNextSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης μετά το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για τους χώρους μακρινής εστίασης. ' + }, + { + name: 'Βοήθεια Προσβασιμότητας', + legend: 'Πατήστε ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Αριστερό Βέλος', + upArrow: 'Πάνω Βέλος', + rightArrow: 'Δεξί Βέλος', + downArrow: 'Κάτω Βέλος', + insert: 'Insert ', + 'delete': 'Delete', + leftWindowKey: 'Αριστερό Πλήκτρο Windows', + rightWindowKey: 'Δεξί Πλήκτρο Windows', + selectKey: 'Πλήκτρο Select', + numpad0: 'Αριθμητικό πληκτρολόγιο 0', + numpad1: 'Αριθμητικό Πληκτρολόγιο 1', + numpad2: 'Αριθμητικό πληκτρολόγιο 2', + numpad3: 'Αριθμητικό πληκτρολόγιο 3', + numpad4: 'Αριθμητικό πληκτρολόγιο 4', + numpad5: 'Αριθμητικό πληκτρολόγιο 5', + numpad6: 'Αριθμητικό πληκτρολόγιο 6', + numpad7: 'Αριθμητικό πληκτρολόγιο 7', + numpad8: 'Αριθμητικό πληκτρολόγιο 8', + numpad9: 'Αριθμητικό πληκτρολόγιο 9', + multiply: 'Πολλαπλασιασμός', + add: 'Πρόσθεση', + subtract: 'Αφαίρεση', + decimalPoint: 'Υποδιαστολή', + divide: 'Διαίρεση', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: '6', + f7: '7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Ερωτηματικό', + equalSign: 'Σύμβολο Ισότητας', + comma: 'Κόμμα', + dash: 'Παύλα', + period: 'Τελεία', + forwardSlash: 'Κάθετος', + graveAccent: 'Βαρεία', + openBracket: 'Άνοιγμα Παρένθεσης', + backSlash: 'Ανάστροφη Κάθετος', + closeBracket: 'Κλείσιμο Παρένθεσης', + singleQuote: 'Απόστροφος' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/en-gb.js b/sources/plugins/a11yhelp/dialogs/lang/en-gb.js new file mode 100644 index 00000000..800d0577 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/en-gb.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'en-gb', { + title: 'Accessibility Instructions', + contents: 'Help Contents. To close this dialog press ESC.', // MISSING + legend: [ + { + name: 'General', + items: [ + { + name: 'Editor Toolbar', + legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING + }, + + { + name: 'Editor Dialog', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', + legend: 'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.' // MISSING + }, + + { + name: 'Editor List Box', + legend: 'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.' // MISSING + }, + + { + name: 'Editor Element Path Bar', + legend: 'Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.' // MISSING + } + ] + }, + { + name: 'Commands', + items: [ + { + name: ' Undo command', + legend: 'Press ${undo}' + }, + { + name: ' Redo command', + legend: 'Press ${redo}' + }, + { + name: ' Bold command', + legend: 'Press ${bold}' + }, + { + name: ' Italic command', + legend: 'Press ${italic}' + }, + { + name: ' Underline command', + legend: 'Press ${underline}' + }, + { + name: ' Link command', + legend: 'Press ${link}' + }, + { + name: ' Toolbar Collapse command', + legend: 'Press ${toolbarCollapse}' + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', + legend: 'Press ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Left Arrow', + upArrow: 'Up Arrow', + rightArrow: 'Right Arrow', + downArrow: 'Down Arrow', + insert: 'Insert', + 'delete': 'Delete', + leftWindowKey: 'Left Windows key', + rightWindowKey: 'Right Windows key', + selectKey: 'Select key', + numpad0: 'Numpad 0', + numpad1: 'Numpad 1', + numpad2: 'Numpad 2', + numpad3: 'Numpad 3', + numpad4: 'Numpad 4', + numpad5: 'Numpad 5', + numpad6: 'Numpad 6', + numpad7: 'Numpad 7', + numpad8: 'Numpad 8', + numpad9: 'Numpad 9', + multiply: 'Multiply', + add: 'Add', + subtract: 'Subtract', + decimalPoint: 'Decimal Point', + divide: 'Divide', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Semicolon', + equalSign: 'Equal Sign', + comma: 'Comma', + dash: 'Dash', + period: 'Period', + forwardSlash: 'Forward Slash', + graveAccent: 'Grave Accent', + openBracket: 'Open Bracket', + backSlash: 'Backslash', + closeBracket: 'Close Bracket', + singleQuote: 'Single Quote' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/en.js b/sources/plugins/a11yhelp/dialogs/lang/en.js new file mode 100644 index 00000000..f18aff7b --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/en.js @@ -0,0 +1,167 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'en', { + title: 'Accessibility Instructions', + contents: 'Help Contents. To close this dialog press ESC.', + legend: [ + { + name: 'General', + items: [ + { + name: 'Editor Toolbar', + legend: 'Press ${toolbarFocus} to navigate to the toolbar. ' + + 'Move to the next and previous toolbar group with TAB and SHIFT+TAB. ' + + 'Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. ' + + 'Press SPACE or ENTER to activate the toolbar button.' + }, + + { + name: 'Editor Dialog', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. ' + + 'When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. ' + + 'With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' + }, + + { + name: 'Editor Context Menu', + legend: 'Press ${contextMenu} or APPLICATION KEY to open context-menu. ' + + 'Then move to next menu option with TAB or DOWN ARROW. ' + + 'Move to previous option with SHIFT+TAB or UP ARROW. ' + + 'Press SPACE or ENTER to select the menu option. ' + + 'Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. ' + + 'Go back to parent menu item with ESC or LEFT ARROW. ' + + 'Close context menu with ESC.' + }, + + { + name: 'Editor List Box', + legend: 'Inside a list-box, move to next list item with TAB OR DOWN ARROW. ' + + 'Move to previous list item with SHIFT+TAB or UP ARROW. ' + + 'Press SPACE or ENTER to select the list option. ' + + 'Press ESC to close the list-box.' + }, + + { + name: 'Editor Element Path Bar', + legend: 'Press ${elementsPathFocus} to navigate to the elements path bar. ' + + 'Move to next element button with TAB or RIGHT ARROW. ' + + 'Move to previous button with SHIFT+TAB or LEFT ARROW. ' + + 'Press SPACE or ENTER to select the element in editor.' + } + ] + }, + { + name: 'Commands', + items: [ + { + name: ' Undo command', + legend: 'Press ${undo}' + }, + { + name: ' Redo command', + legend: 'Press ${redo}' + }, + { + name: ' Bold command', + legend: 'Press ${bold}' + }, + { + name: ' Italic command', + legend: 'Press ${italic}' + }, + { + name: ' Underline command', + legend: 'Press ${underline}' + }, + { + name: ' Link command', + legend: 'Press ${link}' + }, + { + name: ' Toolbar Collapse command', + legend: 'Press ${toolbarCollapse}' + }, + { + name: ' Access previous focus space command', + legend: 'Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, ' + + 'for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' + }, + { + name: ' Access next focus space command', + legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, ' + + 'for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' + }, + { + name: ' Accessibility Help', + legend: 'Press ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Left Arrow', + upArrow: 'Up Arrow', + rightArrow: 'Right Arrow', + downArrow: 'Down Arrow', + insert: 'Insert', + 'delete': 'Delete', + leftWindowKey: 'Left Windows key', + rightWindowKey: 'Right Windows key', + selectKey: 'Select key', + numpad0: 'Numpad 0', + numpad1: 'Numpad 1', + numpad2: 'Numpad 2', + numpad3: 'Numpad 3', + numpad4: 'Numpad 4', + numpad5: 'Numpad 5', + numpad6: 'Numpad 6', + numpad7: 'Numpad 7', + numpad8: 'Numpad 8', + numpad9: 'Numpad 9', + multiply: 'Multiply', + add: 'Add', + subtract: 'Subtract', + decimalPoint: 'Decimal Point', + divide: 'Divide', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Semicolon', + equalSign: 'Equal Sign', + comma: 'Comma', + dash: 'Dash', + period: 'Period', + forwardSlash: 'Forward Slash', + graveAccent: 'Grave Accent', + openBracket: 'Open Bracket', + backSlash: 'Backslash', + closeBracket: 'Close Bracket', + singleQuote: 'Single Quote' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/eo.js b/sources/plugins/a11yhelp/dialogs/lang/eo.js new file mode 100644 index 00000000..66df8c3d --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/eo.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'eo', { + title: 'Uzindikoj pri atingeblo', + contents: 'Helpilenhavo. Por fermi tiun dialogon, premu la ESKAPAN klavon.', + legend: [ + { + name: 'Ĝeneralaĵoj', + items: [ + { + name: 'Ilbreto de la redaktilo', + legend: 'Premu ${toolbarFocus} por atingi la ilbreton. Moviĝu al la sekva aŭ antaŭa grupoj de la ilbreto per la klavoj TABA kaj MAJUSKLIGA+TABA. Moviĝu al la sekva aŭ antaŭa butonoj de la ilbreto per la klavoj SAGO DEKSTREN kaj SAGO MALDEKSTREN. Premu la SPACETklavon aŭ la ENENklavon por aktivigi la ilbretbutonon.' + }, + + { + name: 'Redaktildialogo', + legend: + 'En dialogo, premu la TABAN klavon por navigi al la sekva dialogelemento, premu la MAJUSKLIGAN+TABAN klavon por iri al la antaŭa dialogelemento, premu la ENEN klavon por sendi la dialogon, premu la ESKAPAN klavon por nuligi la dialogon. Kiam dialogo havas multajn langetojn, eblas atingi la langetliston aŭ per ALT+F10 aŭ per la TABA klavo kiel parton de la dialoga taba ordo. En langetlisto, moviĝu al la sekva kaj antaŭa langeto per la klavoj SAGO DEKSTREN KAJ MALDEKSTREN respektive.' + }, + + { + name: 'Kunteksta menuo de la redaktilo', + legend: 'Premu ${contextMenu} aŭ entajpu la KLAVKOMBINAĴON por malfermi la kuntekstan menuon. Poste moviĝu al la sekva opcio de la menuo per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa opcio per la klavoj MAJUSKLGA + TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la menuopcion. Malfermu la submenuon de la kuranta opcio per la SPACETklavo aŭ la ENENklavo aŭ la SAGO DEKSTREN. Revenu al la elemento de la patra menuo per la klavoj ESKAPA aŭ SAGO MALDEKSTREN. Fermu la kuntekstan menuon per la ESKAPA klavo.' + }, + + { + name: 'Fallisto de la redaktilo', + legend: 'En fallisto, moviĝu al la sekva listelemento per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa listelemento per la klavoj MAJUSKLIGA+TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la opcion en la listo. Premu la ESKAPAN klavon por fermi la falmenuon.' + }, + + { + name: 'Breto indikanta la vojon al la redaktilelementoj', + legend: 'Premu ${elementsPathFocus} por navigi al la breto indikanta la vojon al la redaktilelementoj. Moviĝu al la butono de la sekva elemento per la klavoj TABA aŭ SAGO DEKSTREN. Moviĝu al la butono de la antaŭa elemento per la klavoj MAJUSKLIGA+TABA aŭ SAGO MALDEKSTREN. Premu la SPACETklavon aŭ ENENklavon por selekti la elementon en la redaktilo.' + } + ] + }, + { + name: 'Komandoj', + items: [ + { + name: 'Komando malfari', + legend: 'Premu ${undo}' + }, + { + name: 'Komando refari', + legend: 'Premu ${redo}' + }, + { + name: 'Komando grasa', + legend: 'Premu ${bold}' + }, + { + name: 'Komando kursiva', + legend: 'Premu ${italic}' + }, + { + name: 'Komando substreki', + legend: 'Premu ${underline}' + }, + { + name: 'Komando ligilo', + legend: 'Premu ${link}' + }, + { + name: 'Komando faldi la ilbreton', + legend: 'Premu ${toolbarCollapse}' + }, + { + name: 'Komando por atingi la antaŭan fokusan spacon', + legend: 'Press ${accessPreviousSpace} por atingi la plej proksiman neatingeblan fokusan spacon antaŭ la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinaĵon por atingi malproksimajn fokusajn spacojn.' + }, + { + name: 'Komando por atingi la sekvan fokusan spacon', + legend: 'Press ${accessNextSpace} por atingi la plej proksiman neatingeblan fokusan spacon post la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinajôn por atingi malproksimajn fokusajn spacojn' + }, + { + name: 'Helpilo pri atingeblo', + legend: 'Premu ${a11yHelp}' + } + ] + } + ], + backspace: 'Retropaŝo', + tab: 'Tabo', + enter: 'Enigi', + shift: 'Registrumo', + ctrl: 'Stirklavo', + alt: 'Alt-klavo', + pause: 'Paŭzo', + capslock: 'Majuskla baskulo', + escape: 'Eskapa klavo', + pageUp: 'Antaŭa Paĝo', + pageDown: 'Sekva Paĝo', + end: 'Fino', + home: 'Hejmo', + leftArrow: 'Sago Maldekstren', + upArrow: 'Sago Supren', + rightArrow: 'Sago Dekstren', + downArrow: 'Sago Suben', + insert: 'Enmeti', + 'delete': 'Forigi', + leftWindowKey: 'Maldekstra Windows-klavo', + rightWindowKey: 'Dekstra Windows-klavo', + selectKey: 'Selektklavo', + numpad0: 'Nombra Klavaro 0', + numpad1: 'Nombra Klavaro 1', + numpad2: 'Nombra Klavaro 2', + numpad3: 'Nombra Klavaro 3', + numpad4: 'Nombra Klavaro 4', + numpad5: 'Nombra Klavaro 5', + numpad6: 'Nombra Klavaro 6', + numpad7: 'Nombra Klavaro 7', + numpad8: 'Nombra Klavaro 8', + numpad9: 'Nombra Klavaro 9', + multiply: 'Obligi', + add: 'Almeti', + subtract: 'Subtrahi', + decimalPoint: 'Dekuma Punkto', + divide: 'Dividi', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Nombra Baskulo', + scrollLock: 'Ruluma Baskulo', + semiColon: 'Punktokomo', + equalSign: 'Egalsigno', + comma: 'Komo', + dash: 'Haltostreko', + period: 'Punkto', + forwardSlash: 'Oblikvo', + graveAccent: 'Malakuto', + openBracket: 'Malferma Krampo', + backSlash: 'Retroklino', + closeBracket: 'Ferma Krampo', + singleQuote: 'Citilo' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/es.js b/sources/plugins/a11yhelp/dialogs/lang/es.js new file mode 100644 index 00000000..7b4e8b48 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/es.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'es', { + title: 'Instrucciones de accesibilidad', + contents: 'Ayuda. Para cerrar presione ESC.', + legend: [ + { + name: 'General', + items: [ + { + name: 'Barra de herramientas del editor', + legend: 'Presiona ${toolbarFocus} para navegar por la barra de herramientas. Para moverse por los distintos grupos de herramientas usa las teclas TAB y MAY+TAB. Para moverse por las distintas herramientas usa FLECHA DERECHA o FECHA IZQUIERDA. Presiona "espacio" o "intro" para activar la herramienta.' + }, + + { + name: 'Editor de diálogo', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor del menú contextual', + legend: 'Presiona ${contextMenu} o TECLA MENÚ para abrir el menú contextual. Entonces muévete a la siguiente opción del menú con TAB o FLECHA ABAJO. Muévete a la opción previa con SHIFT + TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para seleccionar la opción del menú. Abre el submenú de la opción actual con ESPACIO o ENTER o FLECHA DERECHA. Regresa al elemento padre del menú con ESC o FLECHA IZQUIERDA. Cierra el menú contextual con ESC.' + }, + + { + name: 'Lista del Editor', + legend: 'Dentro de una lista, te mueves al siguiente elemento de la lista con TAB o FLECHA ABAJO. Te mueves al elemento previo de la lista con SHIFT+TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para elegir la opción de la lista. Presiona ESC para cerrar la lista.' + }, + + { + name: 'Barra de Ruta del Elemento en el Editor', + legend: 'Presiona ${elementsPathFocus} para navegar a los elementos de la barra de ruta. Te mueves al siguiente elemento botón con TAB o FLECHA DERECHA. Te mueves al botón previo con SHIFT+TAB o FLECHA IZQUIERDA. Presiona ESPACIO o ENTER para seleccionar el elemento en el editor.' + } + ] + }, + { + name: 'Comandos', + items: [ + { + name: 'Comando deshacer', + legend: 'Presiona ${undo}' + }, + { + name: 'Comando rehacer', + legend: 'Presiona ${redo}' + }, + { + name: 'Comando negrita', + legend: 'Presiona ${bold}' + }, + { + name: 'Comando itálica', + legend: 'Presiona ${italic}' + }, + { + name: 'Comando subrayar', + legend: 'Presiona ${underline}' + }, + { + name: 'Comando liga', + legend: 'Presiona ${liga}' + }, + { + name: 'Comando colapsar barra de herramientas', + legend: 'Presiona ${toolbarCollapse}' + }, + { + name: 'Comando accesar el anterior espacio de foco', + legend: 'Presiona ${accessPreviousSpace} para accesar el espacio de foco no disponible más cercano anterior al cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes.' + }, + { + name: 'Comando accesar el siguiente spacio de foco', + legend: 'Presiona ${accessNextSpace} para accesar el espacio de foco no disponible más cercano después del cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes.' + }, + { + name: 'Ayuda de Accesibilidad', + legend: 'Presiona ${a11yHelp}' + } + ] + } + ], + backspace: 'Retroceso', + tab: 'Tabulador', + enter: 'Ingresar', + shift: 'Mayús.', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pausa', + capslock: 'Bloq. Mayús.', + escape: 'Escape', + pageUp: 'Regresar Página', + pageDown: 'Avanzar Página', + end: 'Fin', + home: 'Inicio', + leftArrow: 'Flecha Izquierda', + upArrow: 'Flecha Arriba', + rightArrow: 'Flecha Derecha', + downArrow: 'Flecha Abajo', + insert: 'Insertar', + 'delete': 'Suprimir', + leftWindowKey: 'Tecla Windows Izquierda', + rightWindowKey: 'Tecla Windows Derecha', + selectKey: 'Tecla de Selección', + numpad0: 'Tecla 0 del teclado numérico', + numpad1: 'Tecla 1 del teclado numérico', + numpad2: 'Tecla 2 del teclado numérico', + numpad3: 'Tecla 3 del teclado numérico', + numpad4: 'Tecla 4 del teclado numérico', + numpad5: 'Tecla 5 del teclado numérico', + numpad6: 'Tecla 6 del teclado numérico', + numpad7: 'Tecla 7 del teclado numérico', + numpad8: 'Tecla 8 del teclado numérico', + numpad9: 'Tecla 9 del teclado numérico', + multiply: 'Multiplicar', + add: 'Sumar', + subtract: 'Restar', + decimalPoint: 'Punto Decimal', + divide: 'Dividir', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Punto y coma', + equalSign: 'Signo de Igual', + comma: 'Coma', + dash: 'Guión', + period: 'Punto', + forwardSlash: 'Diagonal', + graveAccent: 'Acento Grave', + openBracket: 'Abrir llave', + backSlash: 'Diagonal Invertida', + closeBracket: 'Cerrar llave', + singleQuote: 'Comillas simples' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/et.js b/sources/plugins/a11yhelp/dialogs/lang/et.js new file mode 100644 index 00000000..4c98a568 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/et.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'et', { + title: 'Accessibility Instructions', // MISSING + contents: 'Abi sisu. Selle dialoogi sulgemiseks vajuta ESC klahvi.', + legend: [ + { + name: 'Üldine', + items: [ + { + name: 'Editor Toolbar', // MISSING + 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 + }, + + { + name: 'Editor Dialog', // MISSING + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Commands', // MISSING + items: [ + { + name: ' Undo command', // MISSING + legend: 'Press ${undo}' // MISSING + }, + { + name: ' Redo command', // MISSING + legend: 'Press ${redo}' // MISSING + }, + { + name: ' Bold command', // MISSING + legend: 'Press ${bold}' // MISSING + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/eu.js b/sources/plugins/a11yhelp/dialogs/lang/eu.js new file mode 100644 index 00000000..5d879bd4 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/eu.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'eu', { + title: 'Erabilerraztasunaren argibideak', + contents: 'Laguntzaren edukiak. Elkarrizketa-koadro hau ixteko sakatu ESC.', + legend: [ + { + name: 'Orokorra', + items: [ + { + name: 'Editorearen tresna-barra', + legend: 'Sakatu ${toolbarFocus} tresna-barrara nabigatzeko. Tresna-barrako aurreko eta hurrengo taldera joateko erabili TAB eta MAIUS+TAB. Tresna-barrako aurreko eta hurrengo botoira joateko erabili ESKUIN-GEZIA eta EZKER-GEZIA. Sakatu ZURIUNEA edo SARTU tresna-barrako botoia aktibatzeko.' + }, + + { + name: 'Editorearen elkarrizketa-koadroa', + legend: + 'Elkarrizketa-koadro baten barruan sakatu TAB hurrengo elementura nabigatzeko, sakatu MAIUS+TAB aurreko elementura joateko, sakatu SARTU elkarrizketa-koadroa bidaltzeko eta sakatu ESC uzteko. Elkarrizketa-koadro batek hainbat fitxa dituenean, ALT+F10 erabiliz irits daiteke fitxen zerrendara, edo TAB erabiliz. Fokoa fitxen zerrendak duenean, aurreko eta hurrengo fitxetara joateko erabili EZKER-GEZIA eta ESKUIN-GEZIA.' + }, + + { + name: 'Editorearen testuinguru-menua', + legend: 'Sakatu ${contextMenu} edo APLIKAZIO TEKLA testuinguru-menua irekitzeko. Menuko hurrengo aukerara joateko erabili TAB edo BEHERA GEZIA. Aurreko aukerara nabigatzeko erabili MAIUS+TAB edo GORA GEZIA. Sakatu ZURIUNEA edo SARTU menuko aukera hautatzeko. Ireki uneko aukeraren azpi-menua ZURIUNEA edo SARTU edo ESKUIN-GEZIA erabiliz. Menuko aukera gurasora itzultzeko erabili ESC edo EZKER-GEZIA. Testuinguru-menua ixteko sakatu ESC.' + }, + + { + name: 'Editorearen zerrenda-koadroa', + legend: 'Zerrenda-koadro baten barruan, zerrendako hurrengo elementura joateko erabili TAB edo BEHERA GEZIA. Zerrendako aurreko elementura nabigatzeko MAIUS+TAB edo GORA GEZIA. Sakatu ZURIUNEA edo SARTU zerrendako aukera hautatzeko. Sakatu ESC zerrenda-koadroa ixteko.' + }, + + { + name: 'Editorearen elementuaren bide-barra', + legend: 'Sakatu ${elementsPathFocus} elementuaren bide-barrara nabigatzeko. Hurrengo elementuaren botoira joateko erabili TAB edo ESKUIN-GEZIA. Aurreko botoira joateko aldiz erabili MAIUS+TAB edo EZKER-GEZIA. Elementua editorean hautatzeko sakatu ZURIUNEA edo SARTU.' + } + ] + }, + { + name: 'Komandoak', + items: [ + { + name: 'Desegin komandoa', + legend: 'Sakatu ${undo}' + }, + { + name: 'Berregin komandoa', + legend: 'Sakatu ${redo}' + }, + { + name: 'Lodia komandoa', + legend: 'Sakatu ${bold}' + }, + { + name: 'Etzana komandoa', + legend: 'Sakatu ${italic}' + }, + { + name: 'Azpimarratu komandoa', + legend: 'Sakatu ${underline}' + }, + { + name: 'Esteka komandoa', + legend: 'Sakatu ${link}' + }, + { + name: 'Tolestu tresna-barra komandoa', + legend: 'Sakatu ${toolbarCollapse}' + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: 'Erabilerraztasunaren laguntza', + legend: 'Sakatu ${a11yHelp}' + } + ] + } + ], + backspace: 'Atzera tekla', + tab: 'Tabuladorea', + enter: 'Sartu', + shift: 'Maius', + ctrl: 'Ktrl', + alt: 'Alt', + pause: 'Pausatu', + capslock: 'Blok Maius', + escape: 'Ihes', + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'Buka', + home: 'Etxea', + leftArrow: 'Ezker-gezia', + upArrow: 'Gora gezia', + rightArrow: 'Eskuin-gezia', + downArrow: 'Behera gezia', + insert: 'Txertatu', + 'delete': 'Ezabatu', + leftWindowKey: 'Ezkerreko Windows tekla', + rightWindowKey: 'Eskuineko Windows tekla', + selectKey: 'Hautatu tekla', + numpad0: 'Zenbakizko teklatua 0', + numpad1: 'Zenbakizko teklatua 1', + numpad2: 'Zenbakizko teklatua 2', + numpad3: 'Zenbakizko teklatua 3', + numpad4: 'Zenbakizko teklatua 4', + numpad5: 'Zenbakizko teklatua 5', + numpad6: 'Zenbakizko teklatua 6', + numpad7: 'Zenbakizko teklatua 7', + numpad8: 'Zenbakizko teklatua 8', + numpad9: 'Zenbakizko teklatua 9', + multiply: 'Biderkatu', + add: 'Gehitu', + subtract: 'Kendu', + decimalPoint: 'Koma hamartarra', + divide: 'Zatitu', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Blok Zenb', + scrollLock: 'Blok Korr', + semiColon: 'Puntu eta koma', + equalSign: 'Berdin zeinua', + comma: 'Koma', + dash: 'Marratxoa', + period: 'Puntua', + forwardSlash: 'Barra', + graveAccent: 'Azentu kamutsa', + openBracket: 'Parentesia ireki', + backSlash: 'Alderantzizko barra', + closeBracket: 'Itxi parentesia', + singleQuote: 'Komatxo bakuna' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/fa.js b/sources/plugins/a11yhelp/dialogs/lang/fa.js new file mode 100644 index 00000000..9d2802fa --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/fa.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'fa', { + title: 'دستورالعمل‌های دسترسی', + contents: 'راهنمای فهرست مطالب. برای بستن این کادر محاوره‌ای ESC را فشار دهید.', + legend: [ + { + name: 'عمومی', + items: [ + { + name: 'نوار ابزار ویرایشگر', + legend: '${toolbarFocus} را برای باز کردن نوار ابزار بفشارید. با کلید Tab و Shift+Tab در مجموعه نوار ابزار بعدی و قبلی حرکت کنید. برای حرکت در کلید نوار ابزار قبلی و بعدی با کلید جهت‌نمای راست و چپ جابجا شوید. کلید Space یا Enter را برای فعال کردن کلید نوار ابزار بفشارید.' + }, + + { + name: 'پنجره محاورهای ویرایشگر', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'منوی متنی ویرایشگر', + legend: '${contextMenu} یا کلید برنامههای کاربردی را برای باز کردن منوی متن را بفشارید. سپس میتوانید برای حرکت به گزینه بعدی منو با کلید Tab و یا کلید جهتنمای پایین جابجا شوید. حرکت به گزینه قبلی با Shift+Tab یا کلید جهتنمای بالا. فشردن Space یا Enter برای انتخاب یک گزینه از منو. باز کردن زیر شاخه گزینه منو جاری با کلید Space یا Enter و یا کلید جهتنمای راست و چپ. بازگشت به منوی والد با کلید Esc یا کلید جهتنمای چپ. بستن منوی متن با Esc.' + }, + + { + name: 'جعبه فهرست ویرایشگر', + legend: 'در داخل جعبه لیست، قلم دوم از اقلام لیست بعدی را با TAB و یا Arrow Down حرکت دهید. انتقال به قلم دوم از اقلام لیست قبلی را با SHIFT + TAB یا UP ARROW. کلید Space یا ENTER را برای انتخاب گزینه لیست بفشارید. کلید ESC را برای بستن جعبه لیست بفشارید.' + }, + + { + name: 'ویرایشگر عنصر نوار راه', + legend: 'برای رفتن به مسیر عناصر ${elementsPathFocus} را بفشارید. حرکت به کلید عنصر بعدی با کلید Tab یا کلید جهت‌نمای راست. برگشت به کلید قبلی با Shift+Tab یا کلید جهت‌نمای چپ. فشردن Space یا Enter برای انتخاب یک عنصر در ویرایشگر.' + } + ] + }, + { + name: 'فرمان‌ها', + items: [ + { + name: 'بازگشت به آخرین فرمان', + legend: 'فشردن ${undo}' + }, + { + name: 'انجام مجدد فرمان', + legend: 'فشردن ${redo}' + }, + { + name: 'فرمان درشت کردن متن', + legend: 'فشردن ${bold}' + }, + { + name: 'فرمان کج کردن متن', + legend: 'فشردن ${italic}' + }, + { + name: 'فرمان زیرخطدار کردن متن', + legend: 'فشردن ${underline}' + }, + { + name: 'فرمان پیوند دادن', + legend: 'فشردن ${link}' + }, + { + name: 'بستن نوار ابزار فرمان', + legend: 'فشردن ${toolbarCollapse}' + }, + { + name: 'دسترسی به فرمان محل تمرکز قبلی', + legend: 'فشردن ${accessPreviousSpace} برای دسترسی به نزدیک‌ترین فضای قابل دسترسی تمرکز قبل از هشتک، برای مثال: دو عنصر مجاور HR -خط افقی-. تکرار کلید ترکیبی برای رسیدن به فضاهای تمرکز از راه دور.' + }, + { + name: 'دسترسی به فضای دستور بعدی', + legend: 'برای دسترسی به نزدیک‌ترین فضای تمرکز غیر قابل دسترس، ${accessNextSpace} را پس از علامت هشتک بفشارید، برای مثال: دو عنصر مجاور HR -خط افقی-. کلید ترکیبی را برای رسیدن به فضای تمرکز تکرار کنید.' + }, + { + name: 'راهنمای دسترسی', + legend: 'فشردن ${a11yHelp}' + } + ] + } + ], + backspace: 'عقبگرد', + tab: 'برگه', + enter: 'ورود', + shift: 'تعویض', + ctrl: 'کنترل', + alt: 'دگرساز', + pause: 'توقف', + capslock: 'Caps Lock', + escape: 'گریز', + pageUp: 'صفحه به بالا', + pageDown: 'صفحه به پایین', + end: 'پایان', + home: 'خانه', + leftArrow: 'پیکان چپ', + upArrow: 'پیکان بالا', + rightArrow: 'پیکان راست', + downArrow: 'پیکان پایین', + insert: 'ورود', + 'delete': 'حذف', + leftWindowKey: 'کلید چپ ویندوز', + rightWindowKey: 'کلید راست ویندوز', + selectKey: 'انتخاب کلید', + numpad0: 'کلید شماره 0', + numpad1: 'کلید شماره 1', + numpad2: 'کلید شماره 2', + numpad3: 'کلید شماره 3', + numpad4: 'کلید شماره 4', + numpad5: 'کلید شماره 5', + numpad6: 'کلید شماره 6', + numpad7: 'کلید شماره 7', + numpad8: 'کلید شماره 8', + numpad9: 'کلید شماره 9', + multiply: 'ضرب', + add: 'افزودن', + subtract: 'تفریق', + decimalPoint: 'نقطه‌ی اعشار', + divide: 'جدا کردن', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Semicolon', + equalSign: 'علامت تساوی', + comma: 'کاما', + dash: 'خط تیره', + period: 'دوره', + forwardSlash: 'Forward Slash', + graveAccent: 'Grave Accent', + openBracket: 'Open Bracket', + backSlash: 'Backslash', + closeBracket: 'Close Bracket', + singleQuote: 'Single Quote' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/fi.js b/sources/plugins/a11yhelp/dialogs/lang/fi.js new file mode 100644 index 00000000..fce42284 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/fi.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'fi', { + title: 'Saavutettavuus ohjeet', + contents: 'Ohjeen sisällöt. Sulkeaksesi tämän dialogin paina ESC.', + legend: [ + { + name: 'Yleinen', + items: [ + { + name: 'Editorin työkalupalkki', + legend: 'Paina ${toolbarFocus} siirtyäksesi työkalupalkkiin. Siirry seuraavaan ja edelliseen työkalupalkin ryhmään TAB ja SHIFT+TAB näppäimillä. Siirry seuraavaan ja edelliseen työkalupainikkeeseen käyttämällä NUOLI OIKEALLE tai NUOLI VASEMMALLE näppäimillä. Paina VÄLILYÖNTI tai ENTER näppäintä aktivoidaksesi työkalupainikkeen.' + }, + + { + name: 'Editorin dialogi', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editorin oheisvalikko', + legend: 'Paina ${contextMenu} tai SOVELLUSPAINIKETTA avataksesi oheisvalikon. Liiku seuraavaan valikon vaihtoehtoon TAB tai NUOLI ALAS näppäimillä. Siirry edelliseen vaihtoehtoon SHIFT+TAB tai NUOLI YLÖS näppäimillä. Paina VÄLILYÖNTI tai ENTER valitaksesi valikon kohdan. Avataksesi nykyisen kohdan alivalikon paina VÄLILYÖNTI tai ENTER tai NUOLI OIKEALLE painiketta. Siirtyäksesi takaisin valikon ylemmälle tasolle paina ESC tai NUOLI vasemmalle. Oheisvalikko suljetaan ESC painikkeella.' + }, + + { + name: 'Editorin listalaatikko', + legend: 'Listalaatikon sisällä siirry seuraavaan listan kohtaan TAB tai NUOLI ALAS painikkeilla. Siirry edelliseen listan kohtaan SHIFT+TAB tai NUOLI YLÖS painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi listan vaihtoehdon. Paina ESC sulkeaksesi listalaatikon.' + }, + + { + name: 'Editorin elementtipolun palkki', + legend: 'Paina ${elementsPathFocus} siirtyäksesi elementtipolun palkkiin. Siirry seuraavaan elementtipainikkeeseen TAB tai NUOLI OIKEALLE painikkeilla. Siirry aiempaan painikkeeseen SHIFT+TAB tai NUOLI VASEMMALLE painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi elementin editorissa.' + } + ] + }, + { + name: 'Komennot', + items: [ + { + name: 'Peruuta komento', + legend: 'Paina ${undo}' + }, + { + name: 'Tee uudelleen komento', + legend: 'Paina ${redo}' + }, + { + name: 'Lihavoi komento', + legend: 'Paina ${bold}' + }, + { + name: 'Kursivoi komento', + legend: 'Paina ${italic}' + }, + { + name: 'Alleviivaa komento', + legend: 'Paina ${underline}' + }, + { + name: 'Linkki komento', + legend: 'Paina ${link}' + }, + { + name: 'Pienennä työkalupalkki komento', + legend: 'Paina ${toolbarCollapse}' + }, + { + name: 'Siirry aiempaan fokustilaan komento', + legend: 'Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin edellä olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin.' + }, + { + name: 'Siirry seuraavaan fokustilaan komento', + legend: 'Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin jälkeen olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin.' + }, + { + name: 'Saavutettavuus ohjeet', + legend: 'Paina ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numeronäppäimistö 0', + numpad1: 'Numeronäppäimistö 1', + numpad2: 'Numeronäppäimistö 2', + numpad3: 'Numeronäppäimistö 3', + numpad4: 'Numeronäppäimistö 4', + numpad5: 'Numeronäppäimistö 5', + numpad6: 'Numeronäppäimistö 6', + numpad7: 'Numeronäppäimistö 7', + numpad8: 'Numeronäppäimistö 8', + numpad9: 'Numeronäppäimistö 9', + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Puolipiste', + equalSign: 'Equal Sign', // MISSING + comma: 'Pilkku', + dash: 'Dash', // MISSING + period: 'Piste', + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/fo.js b/sources/plugins/a11yhelp/dialogs/lang/fo.js new file mode 100644 index 00000000..26b1739a --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/fo.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'fo', { + title: 'Accessibility Instructions', // MISSING + contents: 'Help Contents. To close this dialog press ESC.', // MISSING + legend: [ + { + name: 'General', // MISSING + items: [ + { + name: 'Editor Toolbar', // MISSING + 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 + }, + + { + name: 'Editor Dialog', // MISSING + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Commands', // MISSING + items: [ + { + name: ' Undo command', // MISSING + legend: 'Press ${undo}' // MISSING + }, + { + name: ' Redo command', // MISSING + legend: 'Press ${redo}' // MISSING + }, + { + name: ' Bold command', // MISSING + legend: 'Press ${bold}' // MISSING + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', + numpad1: 'Numpad 1', + numpad2: 'Numpad 2', + numpad3: 'Numpad 3', + numpad4: 'Numpad 4', + numpad5: 'Numpad 5', + numpad6: 'Numpad 6', + numpad7: 'Numpad 7', + numpad8: 'Numpad 8', + numpad9: 'Numpad 9', + multiply: 'Falda', + add: 'Pluss', + subtract: 'Frádráttar', + decimalPoint: 'Decimal Point', // MISSING + divide: 'Býta', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semikolon', + equalSign: 'Javnatekn', + comma: 'Komma', + dash: 'Dash', // MISSING + period: 'Punktum', + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/fr-ca.js b/sources/plugins/a11yhelp/dialogs/lang/fr-ca.js new file mode 100644 index 00000000..d37e497a --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/fr-ca.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'fr-ca', { + title: 'Instructions d\'accessibilité', + contents: 'Contenu de l\'aide. Pour fermer cette fenêtre, appuyez sur ESC.', + legend: [ + { + name: 'Général', + items: [ + { + name: 'Barre d\'outil de l\'éditeur', + legend: 'Appuyer sur ${toolbarFocus} pour accéder à la barre d\'outils. Se déplacer vers les groupes suivant ou précédent de la barre d\'outil avec les touches TAB et SHIFT+TAB. Se déplacer vers les boutons suivant ou précédent de la barre d\'outils avec les touches FLECHE DROITE et FLECHE GAUCHE. Appuyer sur la barre d\'espace ou la touche ENTRER pour activer le bouton de barre d\'outils.' + }, + + { + name: 'Dialogue de l\'éditeur', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Menu contextuel de l\'éditeur', + legend: 'Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l\'option suivante du menu avec les touches TAB ou FLECHE BAS. Se déplacer vers l\'option précédente avec les touches SHIFT+TAB ou FLECHE HAUT. appuyer sur la BARRE D\'ESPACE ou la touche ENTREE pour sélectionner l\'option du menu. Oovrir le sous-menu de l\'option courante avec la BARRE D\'ESPACE ou les touches ENTREE ou FLECHE DROITE. Revenir à l\'élément de menu parent avec les touches ESC ou FLECHE GAUCHE. Fermer le menu contextuel avec ESC.' + }, + + { + name: 'Menu déroulant de l\'éditeur', + legend: 'A l\'intérieur d\'une liste en menu déroulant, se déplacer vers l\'élément suivant de la liste avec les touches TAB ou FLECHE BAS. Se déplacer vers l\'élément précédent de la liste avec les touches SHIFT+TAB ou FLECHE HAUT. Appuyer sur la BARRE D\'ESPACE ou sur ENTREE pour sélectionner l\'option dans la liste. Appuyer sur ESC pour fermer le menu déroulant.' + }, + + { + name: 'Barre d\'emplacement des éléments de l\'éditeur', + legend: 'Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d\'emplacement des éléments de léditeur. Se déplacer vers le bouton d\'élément suivant avec les touches TAB ou FLECHE DROITE. Se déplacer vers le bouton d\'élément précédent avec les touches SHIFT+TAB ou FLECHE GAUCHE. Appuyer sur la BARRE D\'ESPACE ou sur ENTREE pour sélectionner l\'élément dans l\'éditeur.' + } + ] + }, + { + name: 'Commandes', + items: [ + { + name: 'Annuler', + legend: 'Appuyer sur ${undo}' + }, + { + name: 'Refaire', + legend: 'Appuyer sur ${redo}' + }, + { + name: 'Gras', + legend: 'Appuyer sur ${bold}' + }, + { + name: 'Italique', + legend: 'Appuyer sur ${italic}' + }, + { + name: 'Souligné', + legend: 'Appuyer sur ${underline}' + }, + { + name: 'Lien', + legend: 'Appuyer sur ${link}' + }, + { + name: 'Enrouler la barre d\'outils', + legend: 'Appuyer sur ${toolbarCollapse}' + }, + { + name: 'Accéder à l\'objet de focus précédent', + legend: 'Appuyer ${accessPreviousSpace} pour accéder au prochain espace disponible avant le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d\'espaces distantes.' + }, + { + name: 'Accéder au prochain objet de focus', + legend: 'Appuyer ${accessNextSpace} pour accéder au prochain espace disponible après le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d\'espaces distantes.' + }, + { + name: 'Aide d\'accessibilité', + legend: 'Appuyer sur ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/fr.js b/sources/plugins/a11yhelp/dialogs/lang/fr.js new file mode 100644 index 00000000..db7ac476 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/fr.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'fr', { + title: 'Instructions d\'accessibilité', + contents: 'Contenu de l\'aide. Pour fermer ce dialogue, appuyez sur la touche ÉCHAP (Echappement).', + legend: [ + { + name: 'Général', + items: [ + { + name: 'Barre d\'outils de l\'éditeur', + legend: 'Appuyer sur ${toolbarFocus} pour accéder à la barre d\'outils. Se déplacer vers les groupes suivant ou précédent de la barre d\'outil avec les touches MAJ et MAJ+TAB. Se déplacer vers les boutons suivant ou précédent de la barre d\'outils avec les touches FLÈCHE DROITE et FLÈCHE GAUCHE. Appuyer sur la barre d\'espace ou la touche ENTRÉE pour activer le bouton de barre d\'outils.' + }, + + { + name: 'Dialogue de l\'éditeur', + legend: + 'Dans un dialogue, appuyer sur TAB pour aller à l\'élément suivant du dialogue, appuyer sur MAJ+TAB pour aller à l\'élément précédent du dialogue, appuyer sur ECHAP pour annuler le dialogue. Quand un dialogue a de multiples onglets, on peut accéder à la liste des onglets avec ALT+F10 ou avec TAB. Dans la liste des onglets, se déplacer vers le suivant ou le précédent avec les FLECHES DROITE et GAUCHE respectivement.' + }, + + { + name: 'Menu contextuel de l\'éditeur', + legend: 'Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l\'option suivante du menu avec les touches TAB ou FLÈCHE BAS. Se déplacer vers l\'option précédente avec les touches MAJ+TAB ou FLÈCHE HAUT. appuyer sur la BARRE D\'ESPACE ou la touche ENTRÉE pour sélectionner l\'option du menu. Oovrir le sous-menu de l\'option courante avec la BARRE D\'ESPACE ou les touches ENTRÉE ou FLÈCHE DROITE. Revenir à l\'élément de menu parent avec les touches ÉCHAP ou FLÈCHE GAUCHE. Fermer le menu contextuel avec ÉCHAP.' + }, + + { + name: 'Zone de liste de l\'éditeur', + legend: 'Dans la liste en menu déroulant, se déplacer vers l\'élément suivant de la liste avec les touches TAB ou FLÈCHE BAS. Se déplacer vers l\'élément précédent de la liste avec les touches MAJ+TAB ou FLÈCHE HAUT. Appuyer sur la BARRE D\'ESPACE ou sur ENTRÉE pour sélectionner l\'option dans la liste. Appuyer sur ÉCHAP pour fermer le menu déroulant.' + }, + + { + name: 'Barre d\'emplacement des éléments de l\'éditeur', + legend: 'Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d\'emplacement des éléments de l\'éditeur. Se déplacer vers le bouton d\'élément suivant avec les touches TAB ou FLÈCHE DROITE. Se déplacer vers le bouton d\'élément précédent avec les touches MAJ+TAB ou FLÈCHE GAUCHE. Appuyer sur la BARRE D\'ESPACE ou sur ENTRÉE pour sélectionner l\'élément dans l\'éditeur.' + } + ] + }, + { + name: 'Commandes', + items: [ + { + name: ' Annuler la commande', + legend: 'Appuyer sur ${undo}' + }, + { + name: 'Refaire la commande', + legend: 'Appuyer sur ${redo}' + }, + { + name: ' Commande gras', + legend: 'Appuyer sur ${bold}' + }, + { + name: ' Commande italique', + legend: 'Appuyer sur ${italic}' + }, + { + name: ' Commande souligné', + legend: 'Appuyer sur ${underline}' + }, + { + name: ' Commande lien', + legend: 'Appuyer sur ${link}' + }, + { + name: ' Commande enrouler la barre d\'outils', + legend: 'Appuyer sur ${toolbarCollapse}' + }, + { + name: 'Accéder à la précédente commande d\'espace de mise au point', + 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.' + }, + { + name: 'Accès à la prochaine commande de l\'espace de mise au point', + legend: 'Appuyez sur ${accessNextSpace} pour accéder au plus proche espace de mise au point hors d\'atteinte après le caret, par exemple: deux éléments HR adjacents. répétez la combinaison de touches pour atteindre les espace de mise au point distants.' + }, + { + name: ' Aide Accessibilité', + legend: 'Appuyer sur ${a11yHelp}' + } + ] + } + ], + backspace: 'Retour arrière', + tab: 'Tabulation', + enter: 'Entrée', + shift: 'Majuscule', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Verr. Maj.', + escape: 'Échap', + pageUp: 'Page supérieure', + pageDown: 'Page inférieure', + end: 'Fin', + home: 'Retour', + leftArrow: 'Flèche gauche', + upArrow: 'Flèche haute', + rightArrow: 'Flèche droite', + downArrow: 'Flèche basse', + insert: 'Insertion', + 'delete': 'Supprimer', + leftWindowKey: 'Touche Windows gauche', + rightWindowKey: 'Touche Windows droite', + selectKey: 'Touche menu', + numpad0: 'Pavé numérique 0', + numpad1: 'Pavé numérique 1', + numpad2: 'Pavé numérique 2', + numpad3: 'Pavé numérique 3', + numpad4: 'Pavé numérique 4', + numpad5: 'Pavé numérique 5', + numpad6: 'Pavé numérique 6', + numpad7: 'Pavé numérique 7', + numpad8: 'Pavé numérique 8', + numpad9: 'Pavé numérique 9', + multiply: 'Multiplier', + add: 'Addition', + subtract: 'Soustraire', + decimalPoint: 'Point décimal', + divide: 'Diviser', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Verrouillage numérique', + scrollLock: 'Arrêt défilement', + semiColon: 'Point virgule', + equalSign: 'Signe égal', + comma: 'Virgule', + dash: 'Tiret', + period: 'Point', + forwardSlash: 'Barre oblique', + graveAccent: 'Accent grave', + openBracket: 'Parenthèse ouvrante', + backSlash: 'Barre oblique inverse', + closeBracket: 'Parenthèse fermante', + singleQuote: 'Apostrophe' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/gl.js b/sources/plugins/a11yhelp/dialogs/lang/gl.js new file mode 100644 index 00000000..c7090d9f --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/gl.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'gl', { + title: 'Instrucións de accesibilidade', + contents: 'Axuda. Para pechar este diálogo prema ESC.', + legend: [ + { + name: 'Xeral', + items: [ + { + name: 'Barra de ferramentas do editor', + legend: 'Prema ${toolbarFocus} para navegar pola barra de ferramentas. Para moverse polos distintos grupos de ferramentas use as teclas TAB e MAIÚS+TAB. Para moverse polas distintas ferramentas use FRECHA DEREITA ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para activar o botón da barra de ferramentas.' + }, + + { + name: 'Editor de diálogo', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor do menú contextual', + legend: 'Prema ${contextMenu} ou a TECLA MENÚ para abrir o menú contextual. A seguir móvase á seguinte opción do menú con TAB ou FRECHA ABAIXO. Móvase á opción anterior con MAIÚS + TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para seleccionar a opción do menú. Abra o submenú da opción actual con ESPAZO ou INTRO ou FRECHA DEREITA. Regrese ao elemento principal do menú con ESC ou FRECHA ESQUERDA. Peche o menú contextual con ESC.' + }, + + { + name: 'Lista do editor', + legend: 'Dentro dunha lista, móvase ao seguinte elemento da lista con TAB ou FRECHA ABAIXO. Móvase ao elemento anterior da lista con MAIÚS+TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para escoller a opción da lista. Prema ESC para pechar a lista.' + }, + + { + name: 'Barra da ruta ao elemento no editor', + legend: 'Prema ${elementsPathFocus} para navegar ata os elementos da barra de ruta. Móvase ao seguinte elemento botón con TAB ou FRECHA DEREITA. Móvase ao botón anterior con MAIÚS+TAB ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para seleccionar o elemento no editor.' + } + ] + }, + { + name: 'Ordes', + items: [ + { + name: 'Orde «desfacer»', + legend: 'Prema ${undo}' + }, + { + name: 'Orde «refacer»', + legend: 'Prema ${redo}' + }, + { + name: 'Orde «negra»', + legend: 'Prema ${bold}' + }, + { + name: 'Orde «cursiva»', + legend: 'Prema ${italic}' + }, + { + name: 'Orde «subliñar»', + legend: 'Prema ${underline}' + }, + { + name: 'Orde «ligazón»', + legend: 'Prema ${link}' + }, + { + name: 'Orde «contraer a barra de ferramentas»', + legend: 'Prema ${toolbarCollapse}' + }, + { + name: 'Orde «acceder ao anterior espazo en foco»', + legend: 'Prema ${accessPreviousSpace} para acceder ao espazo máis próximo de foco inalcanzábel anterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes.' + }, + { + name: 'Orde «acceder ao seguinte espazo en foco»', + legend: 'Prema ${accessNextSpace} para acceder ao espazo máis próximo de foco inalcanzábel posterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes.' + }, + { + name: 'Axuda da accesibilidade', + legend: 'Prema ${a11yHelp}' + } + ] + } + ], + backspace: 'Ir atrás', + tab: 'Tabulador', + enter: 'Intro', + shift: 'Maiús', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pausa', + capslock: 'Bloq. Maiús', + escape: 'Escape', + pageUp: 'Páxina arriba', + pageDown: 'Páxina abaixo', + end: 'Fin', + home: 'Inicio', + leftArrow: 'Frecha esquerda', + upArrow: 'Frecha arriba', + rightArrow: 'Frecha dereita', + downArrow: 'Frecha abaixo', + insert: 'Inserir', + 'delete': 'Supr', + leftWindowKey: 'Tecla Windows esquerda', + rightWindowKey: 'Tecla Windows dereita', + selectKey: 'Escolla a tecla', + numpad0: 'Tec. numérico 0', + numpad1: 'Tec. numérico 1', + numpad2: 'Tec. numérico 2', + numpad3: 'Tec. numérico 3', + numpad4: 'Tec. numérico 4', + numpad5: 'Tec. numérico 5', + numpad6: 'Tec. numérico 6', + numpad7: 'Tec. numérico 7', + numpad8: 'Tec. numérico 8', + numpad9: 'Tec. numérico 9', + multiply: 'Multiplicar', + add: 'Sumar', + subtract: 'Restar', + decimalPoint: 'Punto decimal', + divide: 'Dividir', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Bloq. num.', + scrollLock: 'Bloq. despraz.', + semiColon: 'Punto e coma', + equalSign: 'Signo igual', + comma: 'Coma', + dash: 'Guión', + period: 'Punto', + forwardSlash: 'Barra inclinada', + graveAccent: 'Acento grave', + openBracket: 'Abrir corchete', + backSlash: 'Barra invertida', + closeBracket: 'Pechar corchete', + singleQuote: 'Comiña simple' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/gu.js b/sources/plugins/a11yhelp/dialogs/lang/gu.js new file mode 100644 index 00000000..eaa762cc --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/gu.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'gu', { + title: 'એક્ક્ષેબિલિટી ની વિગતો', + contents: 'હેલ્પ. આ બંધ કરવા ESC દબાવો.', + legend: [ + { + name: 'જનરલ', + items: [ + { + name: 'એડિટર ટૂલબાર', + legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING + }, + + { + name: 'એડિટર ડાયલોગ', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'કમાંડસ', + items: [ + { + name: 'અન્ડું કમાંડ', + legend: '$ દબાવો {undo}' + }, + { + name: 'ફરી કરો કમાંડ', + legend: '$ દબાવો {redo}' + }, + { + name: 'બોલ્દનો કમાંડ', + legend: '$ દબાવો {bold}' + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/he.js b/sources/plugins/a11yhelp/dialogs/lang/he.js new file mode 100644 index 00000000..7e2f4009 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/he.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'he', { + title: 'הוראות נגישות', + contents: 'הוראות נגישות. לסגירה לחץ אסקייפ (ESC).', + legend: [ + { + name: 'כללי', + items: [ + { + name: 'סרגל הכלים', + legend: 'לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלים. עבור לכפתור הבא עם מקש הטאב (TAB) או חץ שמאלי. עבור לכפתור הקודם עם מקש השיפט (SHIFT) + טאב (TAB) או חץ ימני. לחץ רווח או אנטר (ENTER) כדי להפעיל את הכפתור הנבחר.' + }, + + { + name: 'דיאלוגים (חלונות תשאול)', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'תפריט ההקשר (Context Menu)', + legend: 'לחץ ${contextMenu} או APPLICATION KEYכדי לפתוח את תפריט ההקשר. עבור לאפשרות הבאה עם טאב (TAB) או חץ למטה. עבור לאפשרות הקודמת עם שיפט (SHIFT) + טאב (TAB) או חץ למעלה. לחץ רווח או אנטר (ENTER) כדי לבחור את האפשרות. פתח את תת התפריט (Sub-menu) של האפשרות הנוכחית עם רווח או אנטר (ENTER) או חץ שמאלי. חזור לתפריט האב עם אסקייפ (ESC) או חץ שמאלי. סגור את תפריט ההקשר עם אסקייפ (ESC).' + }, + + { + name: 'תפריטים צפים (List boxes)', + legend: 'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.' // MISSING + }, + + { + name: 'עץ אלמנטים (Elements Path)', + legend: 'לחץ ${elementsPathFocus} כדי לנווט לעץ האלמנטים. עבור לפריט הבא עם טאב (TAB) או חץ ימני. עבור לפריט הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. לחץ רווח או אנטר (ENTER) כדי לבחור את האלמנט בעורך.' + } + ] + }, + { + name: 'פקודות', + items: [ + { + name: ' ביטול צעד אחרון', + legend: 'לחץ ${undo}' + }, + { + name: ' חזרה על צעד אחרון', + legend: 'לחץ ${redo}' + }, + { + name: ' הדגשה', + legend: 'לחץ ${bold}' + }, + { + name: ' הטייה', + legend: 'לחץ ${italic}' + }, + { + name: ' הוספת קו תחתון', + legend: 'לחץ ${underline}' + }, + { + name: ' הוספת לינק', + legend: 'לחץ ${link}' + }, + { + name: ' כיווץ סרגל הכלים', + legend: 'לחץ ${toolbarCollapse}' + }, + { + name: 'גישה למיקום המיקוד הקודם', + legend: 'לחץ ${accessPreviousSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב לפני הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר.' + }, + { + name: 'גישה למיקום המיקוד הבא', + legend: 'לחץ ${accessNextSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב אחרי הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר.' + }, + { + name: ' הוראות נגישות', + legend: 'לחץ ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'חץ שמאלה', + upArrow: 'חץ למעלה', + rightArrow: 'חץ ימינה', + downArrow: 'חץ למטה', + insert: 'הכנס', + 'delete': 'מחק', + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'בחר מקש', + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'הוסף', + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'סלאש', + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'סלאש הפוך', + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'ציטוט יחיד' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/hi.js b/sources/plugins/a11yhelp/dialogs/lang/hi.js new file mode 100644 index 00000000..16fd5040 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/hi.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'hi', { + title: 'Accessibility Instructions', // MISSING + contents: 'Help Contents. To close this dialog press ESC.', // MISSING + legend: [ + { + name: 'सामान्य', + items: [ + { + name: 'Editor Toolbar', // MISSING + 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 + }, + + { + name: 'Editor Dialog', // MISSING + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Commands', // MISSING + items: [ + { + name: ' Undo command', // MISSING + legend: 'Press ${undo}' // MISSING + }, + { + name: ' Redo command', // MISSING + legend: 'Press ${redo}' // MISSING + }, + { + name: ' Bold command', // MISSING + legend: 'Press ${bold}' // MISSING + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/hr.js b/sources/plugins/a11yhelp/dialogs/lang/hr.js new file mode 100644 index 00000000..aa42c0a1 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/hr.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'hr', { + title: 'Upute dostupnosti', + contents: 'Sadržaj pomoći. Za zatvaranje pritisnite ESC.', + legend: [ + { + name: 'Općenito', + items: [ + { + name: 'Alatna traka', + legend: 'Pritisni ${toolbarFocus} za navigaciju do alatne trake. Pomicanje do prethodne ili sljedeće alatne grupe vrši se pomoću SHIFT+TAB i TAB. Pomicanje do prethodnog ili sljedećeg gumba u alatnoj traci vrši se pomoću lijeve i desne strelice kursora. Pritisnite SPACE ili ENTER za aktivaciju alatne trake.' + }, + + { + name: 'Dijalog', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Kontekstni izbornik', + legend: 'Pritisnite ${contextMenu} ili APPLICATION tipku za otvaranje kontekstnog izbornika. Pomicanje se vrši TAB ili strelicom kursora prema dolje ili SHIFT+TAB ili strelica kursora prema gore. SPACE ili ENTER odabiru opciju izbornika. Otvorite podizbornik trenutne opcije sa SPACE, ENTER ili desna strelica kursora. Povratak na prethodni izbornik vrši se sa ESC ili lijevom strelicom kursora. Zatvaranje se vrši pritiskom na tipku ESC.' + }, + + { + name: 'Lista', + legend: 'Unutar list-boxa, pomicanje na sljedeću stavku vrši se sa TAB ili strelica kursora prema dolje. Na prethodnu sa SHIFT+TAB ili strelica prema gore. Pritiskom na SPACE ili ENTER odabire se stavka ili ESC za zatvaranje.' + }, + + { + name: 'Traka putanje elemenata', + legend: 'Pritisnite ${elementsPathFocus} za navigaciju po putanji elemenata. Pritisnite TAB ili desnu strelicu kursora za pomicanje na sljedeći element ili SHIFT+TAB ili lijeva strelica kursora za pomicanje na prethodni element. Pritiskom na SPACE ili ENTER vrši se odabir elementa.' + } + ] + }, + { + name: 'Naredbe', + items: [ + { + name: 'Vrati naredbu', + legend: 'Pritisni ${undo}' + }, + { + name: 'Ponovi naredbu', + legend: 'Pritisni ${redo}' + }, + { + name: 'Bold naredba', + legend: 'Pritisni ${bold}' + }, + { + name: 'Italic naredba', + legend: 'Pritisni ${italic}' + }, + { + name: 'Underline naredba', + legend: 'Pritisni ${underline}' + }, + { + name: 'Link naredba', + legend: 'Pritisni ${link}' + }, + { + name: 'Smanji alatnu traku naredba', + legend: 'Pritisni ${toolbarCollapse}' + }, + { + name: 'Access previous focus space naredba', + legend: 'Pritisni ${accessPreviousSpace} za pristup najbližem nedostupnom razmaku prije kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak.' + }, + { + name: 'Access next focus space naredba', + legend: 'Pritisni ${accessNextSpace} za pristup najbližem nedostupnom razmaku nakon kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak.' + }, + { + name: 'Pomoć za dostupnost', + legend: 'Pritisni ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/hu.js b/sources/plugins/a11yhelp/dialogs/lang/hu.js new file mode 100644 index 00000000..7760f93a --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/hu.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'hu', { + title: 'Kisegítő utasítások', + contents: 'Súgó tartalmak. A párbeszédablak bezárásához nyomjon ESC-et.', + legend: [ + { + name: 'Általános', + items: [ + { + name: 'Szerkesztő Eszköztár', + legend: 'Nyomjon ${toolbarFocus} hogy kijelölje az eszköztárat. A következő és előző eszköztár csoporthoz a TAB és SHIFT+TAB-al juthat el. A következő és előző eszköztár gombhoz a BAL NYÍL vagy JOBB NYÍL gombbal juthat el. Nyomjon SPACE-t vagy ENTER-t hogy aktiválja az eszköztár gombot.' + }, + + { + name: 'Szerkesző párbeszéd ablak', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Szerkesztő helyi menü', + legend: 'Nyomjon ${contextMenu}-t vagy ALKALMAZÁS BILLENTYŰT a helyi menü megnyitásához. Ezután a következő menüpontra léphet a TAB vagy LEFELÉ NYÍLLAL. Az előző opciót a SHIFT+TAB vagy FELFELÉ NYÍLLAL érheti el. Nyomjon SPACE-t vagy ENTER-t a menüpont kiválasztásához. A jelenlegi menüpont almenüjének megnyitásához nyomjon SPACE-t vagy ENTER-t, vagy JOBB NYILAT. A főmenühöz való visszatéréshez nyomjon ESC-et vagy BAL NYILAT. A helyi menü bezárása az ESC billentyűvel lehetséges.' + }, + + { + name: 'Szerkesztő lista', + legend: 'A listán belül a következő elemre a TAB vagy LEFELÉ NYÍLLAL mozoghat. Az előző elem kiválasztásához nyomjon SHIFT+TAB-ot vagy FELFELÉ NYILAT. Nyomjon SPACE-t vagy ENTER-t az elem kiválasztásához. Az ESC billentyű megnyomásával bezárhatja a listát.' + }, + + { + name: 'Szerkesztő elem utak sáv', + legend: 'Nyomj ${elementsPathFocus} hogy kijelöld a elemek út sávját. A következő elem gombhoz a TAB-al vagy a JOBB NYÍLLAL juthatsz el. Az előző gombhoz a SHIFT+TAB vagy BAL NYÍLLAL mehetsz. A SPACE vagy ENTER billentyűvel kiválaszthatod az elemet a szerkesztőben.' + } + ] + }, + { + name: 'Parancsok', + items: [ + { + name: 'Parancs visszavonása', + legend: 'Nyomj ${undo}' + }, + { + name: 'Parancs megismétlése', + legend: 'Nyomjon ${redo}' + }, + { + name: 'Félkövér parancs', + legend: 'Nyomjon ${bold}' + }, + { + name: 'Dőlt parancs', + legend: 'Nyomjon ${italic}' + }, + { + name: 'Aláhúzott parancs', + legend: 'Nyomjon ${underline}' + }, + { + name: 'Link parancs', + legend: 'Nyomjon ${link}' + }, + { + name: 'Szerkesztősáv összecsukása parancs', + legend: 'Nyomjon ${toolbarCollapse}' + }, + { + name: 'Hozzáférés az előző fókusz helyhez parancs', + legend: 'Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel előtt, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket.' + }, + { + name: 'Hozzáférés a következő fókusz helyhez parancs', + legend: 'Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel után, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket.' + }, + { + name: 'Kisegítő súgó', + legend: 'Nyomjon ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'balra nyíl', + upArrow: 'felfelé nyíl', + rightArrow: 'jobbra nyíl', + downArrow: 'lefelé nyíl', + insert: 'Insert', + 'delete': 'Delete', + leftWindowKey: 'bal Windows-billentyű', + rightWindowKey: 'jobb Windows-billentyű', + selectKey: 'Billentyű választása', + numpad0: 'Számbillentyűk 0', + numpad1: 'Számbillentyűk 1', + numpad2: 'Számbillentyűk 2', + numpad3: 'Számbillentyűk 3', + numpad4: 'Számbillentyűk 4', + numpad5: 'Számbillentyűk 5', + numpad6: 'Számbillentyűk 6', + numpad7: 'Számbillentyűk 7', + numpad8: 'Számbillentyűk 8', + numpad9: 'Számbillentyűk 9', + multiply: 'Szorzás', + add: 'Hozzáadás', + subtract: 'Kivonás', + decimalPoint: 'Tizedespont', + divide: 'Osztás', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Pontosvessző', + equalSign: 'Egyenlőségjel', + comma: 'Vessző', + dash: 'Kötőjel', + period: 'Pont', + forwardSlash: 'Perjel', + graveAccent: 'Visszafelé dőlő ékezet', + openBracket: 'Nyitó szögletes zárójel', + backSlash: 'fordított perjel', + closeBracket: 'Záró szögletes zárójel', + singleQuote: 'szimpla idézőjel' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/id.js b/sources/plugins/a11yhelp/dialogs/lang/id.js new file mode 100644 index 00000000..4f33bff5 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/id.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'id', { + title: 'Accessibility Instructions', // MISSING + contents: 'Bantuan. Tekan ESC untuk menutup dialog ini.', + legend: [ + { + name: 'Umum', + items: [ + { + name: 'Editor Toolbar', // MISSING + 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 + }, + + { + name: 'Editor Dialog', // MISSING + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Commands', // MISSING + items: [ + { + name: ' Undo command', // MISSING + legend: 'Press ${undo}' // MISSING + }, + { + name: ' Redo command', // MISSING + legend: 'Press ${redo}' // MISSING + }, + { + name: ' Bold command', // MISSING + legend: 'Press ${bold}' // MISSING + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/it.js b/sources/plugins/a11yhelp/dialogs/lang/it.js new file mode 100644 index 00000000..62359ebe --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/it.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'it', { + title: 'Istruzioni di Accessibilità', + contents: 'Contenuti di Aiuto. Per chiudere questa finestra premi ESC.', + legend: [ + { + name: 'Generale', + items: [ + { + name: 'Barra degli strumenti Editor', + legend: 'Premere ${toolbarFocus} per passare alla barra degli strumenti. Usare TAB per spostarsi al gruppo successivo, MAIUSC+TAB per spostarsi a quello precedente. Usare FRECCIA DESTRA per spostarsi al pulsante successivo, FRECCIA SINISTRA per spostarsi a quello precedente. Premere SPAZIO o INVIO per attivare il pulsante della barra degli strumenti.' + }, + + { + name: 'Finestra Editor', + legend: + 'All\'interno di una finestra di dialogo è possibile premere TAB per passare all\'elemento successivo della finestra, MAIUSC+TAB per passare a quello precedente; premere INVIO per inviare i dati della finestra, oppure ESC per annullare l\'operazione. Quando una finestra di dialogo ha più schede, è possibile passare all\'elenco delle schede sia con ALT+F10 che con TAB, in base all\'ordine delle tabulazioni della finestra. Quando l\'elenco delle schede è attivo, premere la FRECCIA DESTRA o la FRECCIA SINISTRA per passare rispettivamente alla scheda successiva o a quella precedente.' + }, + + { + name: 'Menù contestuale Editor', + legend: 'Premi ${contextMenu} o TASTO APPLICAZIONE per aprire il menu contestuale. Dunque muoviti all\'opzione successiva del menu con il tasto TAB o con la Freccia Sotto. Muoviti all\'opzione precedente con MAIUSC+TAB o con Freccia Sopra. Premi SPAZIO o INVIO per scegliere l\'opzione di menu. Apri il sottomenu dell\'opzione corrente con SPAZIO o INVIO oppure con la Freccia Destra. Torna indietro al menu superiore con ESC oppure Freccia Sinistra. Chiudi il menu contestuale con ESC.' + }, + + { + name: 'Box Lista Editor', + legend: 'All\'interno di un elenco di opzioni, per spostarsi all\'elemento successivo premere TAB oppure FRECCIA GIÙ. Per spostarsi all\'elemento precedente usare SHIFT+TAB oppure FRECCIA SU. Premere SPAZIO o INVIO per selezionare l\'elemento della lista. Premere ESC per chiudere l\'elenco di opzioni.' + }, + + { + name: 'Barra percorso elementi editor', + legend: 'Premere ${elementsPathFocus} per passare agli elementi della barra del percorso. Usare TAB o FRECCIA DESTRA per passare al pulsante successivo. Per passare al pulsante precedente premere MAIUSC+TAB o FRECCIA SINISTRA. Premere SPAZIO o INVIO per selezionare l\'elemento nell\'editor.' + } + ] + }, + { + name: 'Comandi', + items: [ + { + name: ' Annulla comando', + legend: 'Premi ${undo}' + }, + { + name: ' Ripeti comando', + legend: 'Premi ${redo}' + }, + { + name: ' Comando Grassetto', + legend: 'Premi ${bold}' + }, + { + name: ' Comando Corsivo', + legend: 'Premi ${italic}' + }, + { + name: ' Comando Sottolineato', + legend: 'Premi ${underline}' + }, + { + name: ' Comando Link', + legend: 'Premi ${link}' + }, + { + name: ' Comando riduci barra degli strumenti', + legend: 'Premi ${toolbarCollapse}' + }, + { + name: 'Comando di accesso al precedente spazio di focus', + legend: 'Premi ${accessPreviousSpace} per accedere il più vicino spazio di focus non raggiungibile prima del simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti.' + }, + { + name: 'Comando di accesso al prossimo spazio di focus', + legend: 'Premi ${accessNextSpace} per accedere il più vicino spazio di focus non raggiungibile dopo il simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti.' + }, + { + name: ' Aiuto Accessibilità', + legend: 'Premi ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Invio', + shift: 'Maiusc', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pausa', + capslock: 'Bloc Maiusc', + escape: 'Esc', + pageUp: 'Pagina sù', + pageDown: 'Pagina giù', + end: 'Fine', + home: 'Inizio', + leftArrow: 'Freccia sinistra', + upArrow: 'Freccia su', + rightArrow: 'Freccia destra', + downArrow: 'Freccia giù', + insert: 'Ins', + 'delete': 'Canc', + leftWindowKey: 'Tasto di Windows sinistro', + rightWindowKey: 'Tasto di Windows destro', + selectKey: 'Tasto di selezione', + numpad0: '0 sul tastierino numerico', + numpad1: '1 sul tastierino numerico', + numpad2: '2 sul tastierino numerico', + numpad3: '3 sul tastierino numerico', + numpad4: '4 sul tastierino numerico', + numpad5: '5 sul tastierino numerico', + numpad6: '6 sul tastierino numerico', + numpad7: '7 sul tastierino numerico', + numpad8: '8 sul tastierino numerico', + numpad9: '9 sul tastierino numerico', + multiply: 'Moltiplicazione', + add: 'Più', + subtract: 'Sottrazione', + decimalPoint: 'Punto decimale', + divide: 'Divisione', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Bloc Num', + scrollLock: 'Bloc Scorr', + semiColon: 'Punto-e-virgola', + equalSign: 'Segno di uguale', + comma: 'Virgola', + dash: 'Trattino', + period: 'Punto', + forwardSlash: 'Barra', + graveAccent: 'Accento grave', + openBracket: 'Parentesi quadra aperta', + backSlash: 'Barra rovesciata', + closeBracket: 'Parentesi quadra chiusa', + singleQuote: 'Apostrofo' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/ja.js b/sources/plugins/a11yhelp/dialogs/lang/ja.js new file mode 100644 index 00000000..a4db94e2 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ja.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'ja', { + title: 'ユーザー補助の説明', + contents: 'ヘルプ このダイアログを閉じるには ESCを押してください。', + legend: [ + { + name: '全般', + items: [ + { + name: 'エディターツールバー', + legend: '${toolbarFocus} を押すとツールバーのオン/オフ操作ができます。カーソルをツールバーのグループで移動させるにはTabかSHIFT+Tabを押します。グループ内でカーソルを移動させるには、右カーソルか左カーソルを押します。スペースキーやエンターを押すとボタンを有効/無効にすることができます。' + }, + + { + name: '編集ダイアログ', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'エディターのメニュー', + legend: '${contextMenu} キーかAPPLICATION KEYを押すとコンテキストメニューが開きます。Tabか下カーソルでメニューのオプション選択が下に移動します。戻るには、SHIFT+Tabか上カーソルです。スペースもしくはENTERキーでメニューオプションを決定できます。現在選んでいるオプションのサブメニューを開くには、スペース、もしくは右カーソルを押します。サブメニューから親メニューに戻るには、ESCか左カーソルを押してください。ESCでコンテキストメニュー自体をキャンセルできます。' + }, + + { + name: 'エディターリストボックス', + legend: 'リストボックス内で移動するには、Tabか下カーソルで次のアイテムへ移動します。SHIFT+Tabで前のアイテムに戻ります。リストのオプションを選択するには、スペースもしくは、ENTERを押してください。リストボックスを閉じるには、ESCを押してください。' + }, + + { + name: 'エディター要素パスバー', + legend: '${elementsPathFocus} を押すとエレメントパスバーを操作出来ます。Tabか右カーソルで次のエレメントを選択できます。前のエレメントを選択するには、SHIFT+Tabか左カーソルです。スペースもしくは、ENTERでエディタ内の対象エレメントを選択出来ます。' + } + ] + }, + { + name: 'コマンド', + items: [ + { + name: '元に戻す', + legend: '${undo} をクリック' + }, + { + name: 'やり直し', + legend: '${redo} をクリック' + }, + { + name: '太字', + legend: '${bold} をクリック' + }, + { + name: '斜体 ', + legend: '${italic} をクリック' + }, + { + name: '下線', + legend: '${underline} をクリック' + }, + { + name: 'リンク', + legend: '${link} をクリック' + }, + { + name: 'ツールバーを縮める', + legend: '${toolbarCollapse} をクリック' + }, + { + name: '前のカーソル移動のできないポイントへ', + legend: '${accessPreviousSpace} を押すとカーソルより前にあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。' + }, + { + name: '次のカーソル移動のできないポイントへ', + legend: '${accessNextSpace} を押すとカーソルより後ろにあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。' + }, + { + name: 'ユーザー補助ヘルプ', + legend: '${a11yHelp} をクリック' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: '左矢印', + upArrow: '上矢印', + rightArrow: '右矢印', + downArrow: '下矢印', + insert: 'Insert', + 'delete': 'Delete', + leftWindowKey: '左Windowキー', + rightWindowKey: '右のWindowキー', + selectKey: 'Select', + numpad0: 'Num 0', + numpad1: 'Num 1', + numpad2: 'Num 2', + numpad3: 'Num 3', + numpad4: 'Num 4', + numpad5: 'Num 5', + numpad6: 'Num 6', + numpad7: 'Num 7', + numpad8: 'Num 8', + numpad9: 'Num 9', + multiply: '掛ける', + add: '足す', + subtract: '引く', + decimalPoint: '小数点', + divide: '割る', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'セミコロン', + equalSign: 'イコール記号', + comma: 'カンマ', + dash: 'ダッシュ', + period: 'ピリオド', + forwardSlash: 'フォワードスラッシュ', + graveAccent: 'グレイヴアクセント', + openBracket: '開きカッコ', + backSlash: 'バックスラッシュ', + closeBracket: '閉じカッコ', + singleQuote: 'シングルクォート' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/km.js b/sources/plugins/a11yhelp/dialogs/lang/km.js new file mode 100644 index 00000000..11dee319 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/km.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'km', { + title: 'Accessibility Instructions', // MISSING + contents: 'មាតិកា​ជំនួយ។ ដើម្បី​បិទ​ផ្ទាំង​នេះ សូម​ចុច ESC ។', + legend: [ + { + name: 'ទូទៅ', + items: [ + { + name: 'របារ​ឧបករណ៍​កម្មវិធី​និពន្ធ', + legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING + }, + + { + name: 'ផ្ទាំង​កម្មវិធីនិពន្ធ', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'ម៉ីនុយបរិបទអ្នកកែសម្រួល', + legend: 'Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.' // MISSING + }, + + { + name: 'ប្រអប់បញ្ជីអ្នកកែសម្រួល', + legend: 'Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.' // MISSING + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'ពាក្យបញ្ជា', + items: [ + { + name: 'ការ​បញ្ជា​មិនធ្វើវិញ', + legend: 'ចុច ${undo}' + }, + { + name: 'ការបញ្ជា​ធ្វើវិញ', + legend: 'ចុច ${redo}' + }, + { + name: 'ការបញ្ជា​អក្សរ​ដិត', + legend: 'ចុច ${bold}' + }, + { + name: 'ការបញ្ជា​អក្សរ​ទ្រេត', + legend: 'ចុច ${italic}' + }, + { + name: 'ពាក្យបញ្ជា​បន្ទាត់​ពីក្រោម', + legend: 'ចុច ${underline}' + }, + { + name: 'ពាក្យបញ្ជា​តំណ', + legend: 'ចុច ${link}' + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: 'ជំនួយ​ពី​ភាព​ងាយស្រួល', + legend: 'ជួយ ${a11yHelp}' + } + ] + } + ], + backspace: 'លុបថយក្រោយ', + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'ផ្អាក', + capslock: 'Caps Lock', // MISSING + escape: 'ចាកចេញ', + pageUp: 'ទំព័រ​លើ', + pageDown: 'ទំព័រ​ក្រោម', + end: 'ចុង', + home: 'ផ្ទះ', + leftArrow: 'ព្រួញ​ឆ្វេង', + upArrow: 'ព្រួញ​លើ', + rightArrow: 'ព្រួញ​ស្ដាំ', + downArrow: 'ព្រួញ​ក្រោម', + insert: 'បញ្ចូល', + 'delete': 'លុប', + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'ជ្រើស​គ្រាប់​ចុច', + numpad0: 'Numpad 0', + numpad1: 'Numpad 1', + numpad2: 'Numpad 2', + numpad3: 'Numpad 3', + numpad4: 'Numpad 4', + numpad5: 'Numpad 5', + numpad6: 'Numpad 6', + numpad7: 'Numpad 7', + numpad8: 'Numpad 8', + numpad9: 'Numpad 9', + multiply: 'គុណ', + add: 'បន្ថែម', + subtract: 'ដក', + decimalPoint: 'ចំណុចទសភាគ', + divide: 'ចែក', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', // MISSING + scrollLock: 'បិទ​រំកិល', + semiColon: 'ចុច​ក្បៀស', + equalSign: 'សញ្ញា​អឺរ៉ូ', + comma: 'ក្បៀស', + dash: 'Dash', // MISSING + period: 'ចុច', + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'តង្កៀប​បើក', + backSlash: 'Backslash', // MISSING + closeBracket: 'តង្កៀប​បិទ', + singleQuote: 'បន្តក់​មួយ' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/ko.js b/sources/plugins/a11yhelp/dialogs/lang/ko.js new file mode 100644 index 00000000..772af2b9 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ko.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'ko', { + title: '접근성 설명', + contents: '도움말. 이 창을 닫으시려면 ESC 를 누르세요.', + legend: [ + { + name: '일반', + items: [ + { + name: '편집기 툴바', + legend: '툴바를 탐색하시려면 ${toolbarFocus} 를 투르세요. 이전/다음 툴바 그룹으로 이동하시려면 TAB 키 또는 SHIFT+TAB 키를 누르세요. 이전/다음 툴바 버튼으로 이동하시려면 오른쪽 화살표 키 또는 왼쪽 화살표 키를 누르세요. 툴바 버튼을 활성화 하려면 SPACE 키 또는 ENTER 키를 누르세요.' + }, + + { + name: '편집기 다이얼로그', + legend: + 'TAB 키를 누르면 다음 대화상자로 이동하고, SHIFT+TAB 키를 누르면 이전 대화상자로 이동합니다. 대화상자를 제출하려면 ENTER 키를 누르고, ESC 키를 누르면 대화상자를 취소합니다. 대화상자에 탭이 여러개 있을 때, ALT+F10 키 또는 TAB 키를 누르면 순서에 따라 탭 목록에 도달할 수 있습니다. 탭 목록에 초점이 맞을 때, 오른쪽과 왼쪽 화살표 키를 이용하면 각각 다음과 이전 탭으로 이동할 수 있습니다.' + }, + + { + name: '편집기 환경 메뉴', + legend: '${contextMenu} 또는 어플리케이션 키를 누르면 환경-메뉴를 열 수 있습니다. 환경-메뉴에서 TAB 키 또는 아래 화살표 키를 누르면 다음 메뉴 옵션으로 이동할 수 있습니다. 이전 옵션으로 이동은 SHIFT+TAB 키 또는 위 화살표 키를 눌러서 할 수 있습니다. 스페이스 키 또는 ENTER 키를 눌러서 메뉴 옵션을 선택할 수 있습니다. 스페이스 키 또는 ENTER 키 또는 오른쪽 화살표 키를 눌러서 하위 메뉴를 열 수 있습니다. 부모 메뉴 항목으로 돌아가려면 ESC 키 또는 왼쪽 화살표 키를 누릅니다. ESC 키를 눌러서 환경-메뉴를 닫습니다.' + }, + + { + name: '편집기 목록 박스', + legend: '리스트-박스 내에서, 목록의 다음 항목으로 이동하려면 TAB 키 또는 아래쪽 화살표 키를 누릅니다. 목록의 이전 항목으로 이동하려면 SHIFT+TAB 키 또는 위쪽 화살표 키를 누릅니다. 스페이스 키 또는 ENTER 키를 누르면 목록의 해당 옵션을 선택합니다. ESC 키를 눌러서 리스트-박스를 닫을 수 있습니다.' + }, + + { + name: '편집기 요소 경로 막대', + legend: '${elementsPathFocus}를 눌러서 요소 경로 막대를 탐색할 수 있습니다. 다음 요소로 이동하려면 TAB 키 또는 오른쪽 화살표 키를 누릅니다. SHIFT+TAB 키 또는 왼쪽 화살표 키를 누르면 이전 버튼으로 이동할 수 있습니다. 스페이스 키나 ENTER 키를 누르면 편집기의 해당 항목을 선택합니다.' + } + ] + }, + { + name: '명령', + items: [ + { + name: ' 명령 실행 취소', + legend: '${undo} 누르시오' + }, + { + name: ' 명령 다시 실행', + legend: '${redo} 누르시오' + }, + { + name: ' 굵게 명령', + legend: '${bold} 누르시오' + }, + { + name: ' 기울임 꼴 명령', + legend: '${italic} 누르시오' + }, + { + name: ' 밑줄 명령', + legend: '${underline} 누르시오' + }, + { + name: ' 링크 명령', + legend: '${link} 누르시오' + }, + { + name: ' 툴바 줄이기 명령', + legend: '${toolbarCollapse} 누르시오' + }, + { + name: ' 이전 포커스 공간 접근 명령', + legend: '탈자 기호(^) 이전에 ${accessPreviousSpace} 를 누르면, 접근 불가능하면서 가장 가까운 포커스 영역에 접근합니다. 예를 들면, 두 인접한 HR 요소가 있습니다. 키 조합을 반복해서 멀리있는 포커스 영역들에 도달할 수 있습니다.' + }, + { + name: '다음 포커스 공간 접근 명령', + legend: '탈자 기호(^) 다음에 ${accessNextSpace} 를 누르면, 접근 불가능하면서 가장 가까운 포커스 영역에 접근합니다. 예를 들면, 두 인접한 HR 요소가 있습니다. 키 조합을 반복해서 멀리있는 포커스 영역들에 도달할 수 있습니다. ' + }, + { + name: ' 접근성 도움말', + legend: '${a11yHelp} 누르시오' + } + ] + } + ], + backspace: 'Backspace 키', + tab: '탭 키', + enter: '엔터 키', + shift: '시프트 키', + ctrl: '컨트롤 키', + alt: '알트 키', + pause: '일시정지 키', + capslock: '캡스 록 키', + escape: '이스케이프 키', + pageUp: '페이지 업 키', + pageDown: '페이지 다운 키', + end: '엔드 키', + home: '홈 키', + leftArrow: '왼쪽 화살표 키', + upArrow: '위쪽 화살표 키', + rightArrow: '오른쪽 화살표 키', + downArrow: '아래쪽 화살표 키', + insert: '인서트 키', + 'delete': '삭제 키', + leftWindowKey: '왼쪽 윈도우 키', + rightWindowKey: '오른쪽 윈도우 키', + selectKey: '셀렉트 키', + numpad0: '숫자 패드 0 키', + numpad1: '숫자 패드 1 키', + numpad2: '숫자 패드 2 키', + numpad3: '숫자 패드 3 키', + numpad4: '숫자 패드 4 키', + numpad5: '숫자 패드 5 키', + numpad6: '숫자 패드 6 키', + numpad7: '숫자 패드 7 키', + numpad8: '숫자 패드 8 키', + numpad9: '숫자 패드 9 키', + multiply: '곱셈(*) 키', + add: '덧셈(+) 키', + subtract: '뺄셈(-) 키', + decimalPoint: '온점(.) 키', + divide: '나눗셈(/) 키', + f1: 'F1 키', + f2: 'F2 키', + f3: 'F3 키', + f4: 'F4 키', + f5: 'F5 키', + f6: 'F6 키', + f7: 'F7 키', + f8: 'F8 키', + f9: 'F9 키', + f10: 'F10 키', + f11: 'F11 키', + f12: 'F12 키', + numLock: 'Num Lock 키', + scrollLock: 'Scroll Lock 키', + semiColon: '세미콜론(;) 키', + equalSign: '등호(=) 키', + comma: '쉼표(,) 키', + dash: '대시(-) 키', + period: '온점(.) 키', + forwardSlash: '슬래시(/) 키', + graveAccent: '억음 악센트(`) 키', + openBracket: '브라켓 열기([) 키', + backSlash: '역슬래시(\\\\) 키', + closeBracket: '브라켓 닫기(]) 키', + singleQuote: '외 따옴표(\') 키' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/ku.js b/sources/plugins/a11yhelp/dialogs/lang/ku.js new file mode 100644 index 00000000..4eda3fc7 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ku.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'ku', { + title: 'ڕێنمای لەبەردەستدابوون', + contents: 'پێکهاتەی یارمەتی. کلیك ESC بۆ داخستنی ئەم دیالۆگه.', + legend: [ + { + name: 'گشتی', + items: [ + { + name: 'تووڵامرازی دەستكاریكەر', + legend: 'کلیك ${toolbarFocus} بۆ ڕابەری تووڵامراز. بۆ گواستنەوەی پێشوو داهاتووی گرووپی تووڵامرازی داگرتنی کلیلی TAB لەگەڵ‌ SHIFT+TAB. بۆ گواستنەوەی پێشوو داهاتووی دووگمەی تووڵامرازی لەڕێی کلیلی تیری دەستی ڕاست یان کلیلی تیری دەستی چەپ. کلیکی کلیلی SPACE یان ENTER بۆ چالاککردنی دووگمەی تووڵامراز.' + }, + + { + name: 'دیالۆگی دەستكاریكەر', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' + }, + + { + name: 'پێڕستی سەرنووسەر', + legend: 'کلیك ${contextMenu} یان دوگمەی لیسته‌(Menu) بۆ کردنەوەی لیستەی دەق. بۆ چوونە هەڵبژاردەیەکی تر له‌ لیسته‌ کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوارەوه‌ بۆ چوون بۆ هەڵبژاردەی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو له‌ سەرەوە. داگرتنی کلیلی SPACE یان ENTER بۆ هەڵبژاردنی هەڵبژاردەی لیسته‌. بۆ کردنەوەی لقی ژێر لیسته‌ لەهەڵبژاردەی لیستە کلیکی کلیلی SPACE یان ENTER یان کلیلی تیری دەستی ڕاست. بۆ گەڕانەوه بۆ سەرەوەی لیسته‌ کلیکی کلیلی ESC یان کلیلی تیری دەستی چەپ. بۆ داخستنی لیستە کلیكی کلیلی ESC بکە.' + }, + + { + name: 'لیستی سنووقی سەرنووسەر', + legend: 'لەناو سنوقی لیست, چۆن بۆ هەڵنبژاردەی لیستێکی تر کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوار. چوون بۆ هەڵبژاردەی لیستی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو لەسەرەوه‌. کلیکی کلیلی SPACE یان ENTER بۆ دیاریکردنی ‌هەڵبژاردەی لیست. کلیکی کلیلی ESC بۆ داخستنی سنوقی لیست.' + }, + + { + name: 'تووڵامرازی توخم', + legend: 'کلیك ${elementsPathFocus} بۆ ڕابەری تووڵامرازی توخمەکان. چوون بۆ دوگمەی توخمێکی تر کلیکی کلیلی TAB یان کلیلی تیری دەستی ڕاست. چوون بۆ دوگمەی توخمی پێشوو کلیلی SHIFT+TAB یان کلیکی کلیلی تیری دەستی چەپ. داگرتنی کلیلی SPACE یان ENTER بۆ دیاریکردنی توخمەکه‌ لەسەرنووسه.' + } + ] + }, + { + name: 'فەرمانەکان', + items: [ + { + name: 'پووچکردنەوەی فەرمان', + legend: 'کلیك ${undo}' + }, + { + name: 'هەڵگەڕانەوەی فەرمان', + legend: 'کلیك ${redo}' + }, + { + name: 'فەرمانی دەقی قەڵەو', + legend: 'کلیك ${bold}' + }, + { + name: 'فەرمانی دەقی لار', + legend: 'کلیك ${italic}' + }, + { + name: 'فەرمانی ژێرهێڵ', + legend: 'کلیك ${underline}' + }, + { + name: 'فەرمانی به‌ستەر', + legend: 'کلیك ${link}' + }, + { + name: 'شاردەنەوەی تووڵامراز', + legend: 'کلیك ${toolbarCollapse}' + }, + { + name: 'چوونەناو سەرنجدانی پێشوی فەرمانی بۆشایی', + legend: 'کلیک ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' + }, + { + name: 'چوونەناو سەرنجدانی داهاتووی فەرمانی بۆشایی', + legend: 'کلیک ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' + }, + { + name: 'دەستپێگەیشتنی یارمەتی', + legend: 'کلیك ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Left Arrow', + upArrow: 'Up Arrow', + rightArrow: 'Right Arrow', + downArrow: 'Down Arrow', + insert: 'Insert', + 'delete': 'Delete', + leftWindowKey: 'پەنجەرەی چەپ', + rightWindowKey: 'پەنجەرەی ڕاست', + selectKey: 'Select', + numpad0: 'Numpad 0', // MISSING + numpad1: '1', + numpad2: '2', + numpad3: '3', + numpad4: '4', + numpad5: '5', + numpad6: '6', + numpad7: '7', + numpad8: '8', + numpad9: '9', + multiply: '*', + add: '+', + subtract: '-', + decimalPoint: '.', + divide: '/', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: ';', + equalSign: '=', + comma: ',', + dash: '-', + period: '.', + forwardSlash: '/', + graveAccent: '`', + openBracket: '[', + backSlash: '\\\\', + closeBracket: '}', + singleQuote: '\'' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/lt.js b/sources/plugins/a11yhelp/dialogs/lang/lt.js new file mode 100644 index 00000000..c4b4ac20 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/lt.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'lt', { + title: 'Accessibility Instructions', // MISSING + contents: 'Help Contents. To close this dialog press ESC.', // MISSING + legend: [ + { + name: 'Bendros savybės', + items: [ + { + name: 'Editor Toolbar', // MISSING + 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 + }, + + { + name: 'Editor Dialog', // MISSING + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Commands', // MISSING + items: [ + { + name: ' Undo command', // MISSING + legend: 'Press ${undo}' // MISSING + }, + { + name: ' Redo command', // MISSING + legend: 'Press ${redo}' // MISSING + }, + { + name: ' Bold command', // MISSING + legend: 'Press ${bold}' // MISSING + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/lv.js b/sources/plugins/a11yhelp/dialogs/lang/lv.js new file mode 100644 index 00000000..42f635bf --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/lv.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'lv', { + title: 'Pieejamības instrukcija', + contents: 'Palīdzības saturs. Lai aizvērtu ciet šo dialogu nospiediet ESC.', + legend: [ + { + name: 'Galvenais', + items: [ + { + name: 'Redaktora rīkjosla', + legend: 'Nospiediet ${toolbarFocus} lai pārvietotos uz rīkjoslu. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas grupu izmantojiet pogu TAB un SHIFT+TAB. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas pogu izmantojiet Kreiso vai Labo bultiņu. Nospiediet Atstarpi vai ENTER lai aktivizētu rīkjosla pogu.' + }, + + { + name: 'Redaktora dialoga logs', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Redaktora satura izvēle', + legend: 'Nospiediet ${contextMenu} vai APPLICATION KEY lai atvērtu satura izvēlni. Lai pārvietotos uz nākošo izvēlnes opciju izmantojiet pogu TAB vai pogu Bultiņu uz leju. Lai pārvietotos uz iepriekšējo opciju izmantojiet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvelētos izvēlnes opciju. Atveriet tekošajā opcija apakšizvēlni ar SAPCE vai ENTER ka ari to var izdarīt ar Labo bultiņu. Lai atgrieztos atpakaļ uz sakuma izvēlni nospiediet ESC vai Kreiso bultiņu. Lai aizvērtu ciet izvēlnes saturu nospiediet ESC.' + }, + + { + name: 'Redaktora saraksta lauks', + legend: 'Saraksta laukā, lai pārvietotos uz nākošo saraksta elementu nospiediet TAB vai pogu Bultiņa uz leju. Lai pārvietotos uz iepriekšējo saraksta elementu nospiediet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvēlētos saraksta opcijas. Nospiediet ESC lai aizvērtu saraksta lauku.' + }, + + { + name: 'Redaktora elementa ceļa josla', + legend: 'Nospiediet ${elementsPathFocus} lai pārvietotos uz elementa ceļa joslu. Lai pārvietotos uz nākošo elementa pogu izmantojiet TAB vai Labo bultiņu. Lai pārvietotos uz iepriekšējo elementa pogu izmantojiet SHIFT+TAB vai Kreiso bultiņu. Nospiediet SPACE vai ENTER lai izvēlētos elementu redaktorā.' + } + ] + }, + { + name: 'Komandas', + items: [ + { + name: 'Komanda atcelt darbību', + legend: 'Nospiediet ${undo}' + }, + { + name: 'Komanda atkārtot darbību', + legend: 'Nospiediet ${redo}' + }, + { + name: 'Treknraksta komanda', + legend: 'Nospiediet ${bold}' + }, + { + name: 'Kursīva komanda', + legend: 'Nospiediet ${italic}' + }, + { + name: 'Apakšsvītras komanda ', + legend: 'Nospiediet ${underline}' + }, + { + name: 'Hipersaites komanda', + legend: 'Nospiediet ${link}' + }, + { + name: 'Rīkjoslas aizvēršanas komanda', + legend: 'Nospiediet ${toolbarCollapse}' + }, + { + name: 'Piekļūt iepriekšējai fokusa vietas komandai', + legend: 'Nospiediet ${accessPreviousSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pirms kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām.' + }, + { + name: 'Piekļūt nākošā fokusa apgabala komandai', + legend: 'Nospiediet ${accessNextSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pēc kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām.' + }, + { + name: 'Pieejamības palīdzība', + legend: 'Nospiediet ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/mk.js b/sources/plugins/a11yhelp/dialogs/lang/mk.js new file mode 100644 index 00000000..124198e9 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/mk.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'mk', { + title: 'Инструкции за пристапност', + contents: 'Содржина на делот за помош. За да го затворите овој дијалот притиснете ESC.', + legend: [ + { + name: 'Општо', + items: [ + { + name: 'Мени за едиторот', + legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING + }, + + { + name: 'Дијалот за едиторот', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Commands', // MISSING + items: [ + { + name: ' Undo command', // MISSING + legend: 'Press ${undo}' // MISSING + }, + { + name: ' Redo command', // MISSING + legend: 'Press ${redo}' // MISSING + }, + { + name: ' Bold command', // MISSING + legend: 'Press ${bold}' // MISSING + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/mn.js b/sources/plugins/a11yhelp/dialogs/lang/mn.js new file mode 100644 index 00000000..9e22c7b6 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/mn.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'mn', { + title: 'Accessibility Instructions', // MISSING + contents: 'Help Contents. To close this dialog press ESC.', // MISSING + legend: [ + { + name: 'Ерөнхий', + items: [ + { + name: 'Editor Toolbar', // MISSING + 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 + }, + + { + name: 'Editor Dialog', // MISSING + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Commands', // MISSING + items: [ + { + name: ' Undo command', // MISSING + legend: 'Press ${undo}' // MISSING + }, + { + name: ' Redo command', // MISSING + legend: 'Press ${redo}' // MISSING + }, + { + name: ' Bold command', // MISSING + legend: 'Press ${bold}' // MISSING + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/nb.js b/sources/plugins/a11yhelp/dialogs/lang/nb.js new file mode 100644 index 00000000..2fb6c853 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/nb.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'nb', { + title: 'Instruksjoner for tilgjengelighet', + contents: 'Innhold for hjelp. Trykk ESC for å lukke denne dialogen.', + legend: [ + { + name: 'Generelt', + items: [ + { + name: 'Verktøylinje for editor', + legend: 'Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT+TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen.' + }, + + { + name: 'Dialog for editor', + legend: + 'Mens du er i en dialog, trykk TAB for å navigere til neste dialogelement, trykk SHIFT+TAB for å flytte til forrige dialogelement, trykk ENTER for å akseptere dialogen, trykk ESC for å avbryte dialogen. Når en dialog har flere faner, kan fanelisten nås med enten ALT+F10 eller med TAB. Når fanelisten er fokusert, går man til neste og forrige fane med henholdsvis HØYRE og VENSTRE PILTAST.' + }, + + { + name: 'Kontekstmeny for editor', + legend: 'Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC.' + }, + + { + name: 'Listeboks for editor', + legend: 'I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen.' + }, + + { + name: 'Verktøylinje for elementsti', + legend: 'Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren.' + } + ] + }, + { + name: 'Hurtigtaster', + items: [ + { + name: 'Angre', + legend: 'Trykk ${undo}' + }, + { + name: 'Gjør om', + legend: 'Trykk ${redo}' + }, + { + name: 'Fet tekst', + legend: 'Trykk ${bold}' + }, + { + name: 'Kursiv tekst', + legend: 'Trykk ${italic}' + }, + { + name: 'Understreking', + legend: 'Trykk ${underline}' + }, + { + name: 'Lenke', + legend: 'Trykk ${link}' + }, + { + name: 'Skjul verktøylinje', + legend: 'Trykk ${toolbarCollapse}' + }, + { + name: 'Gå til forrige fokusområde', + legend: 'Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet.' + }, + { + name: 'Gå til neste fokusområde', + legend: 'Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet.' + }, + { + name: 'Hjelp for tilgjengelighet', + legend: 'Trykk ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tabulator', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Venstre piltast', + upArrow: 'Opp-piltast', + rightArrow: 'Høyre piltast', + downArrow: 'Ned-piltast', + insert: 'Insert', + 'delete': 'Delete', + leftWindowKey: 'Venstre Windows-tast', + rightWindowKey: 'Høyre Windows-tast', + selectKey: 'Velg nøkkel', + numpad0: 'Numerisk tastatur 0', + numpad1: 'Numerisk tastatur 1', + numpad2: 'Numerisk tastatur 2', + numpad3: 'Numerisk tastatur 3', + numpad4: 'Numerisk tastatur 4', + numpad5: 'Numerisk tastatur 5', + numpad6: 'Numerisk tastatur 6', + numpad7: 'Numerisk tastatur 7', + numpad8: 'Numerisk tastatur 8', + numpad9: 'Numerisk tastatur 9', + multiply: 'Multipliser', + add: 'Legg til', + subtract: 'Trekk fra', + decimalPoint: 'Desimaltegn', + divide: 'Divider', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Semikolon', + equalSign: 'Likhetstegn', + comma: 'Komma', + dash: 'Bindestrek', + period: 'Punktum', + forwardSlash: 'Forover skråstrek', + graveAccent: 'Grav aksent', + openBracket: 'Åpne parentes', + backSlash: 'Bakover skråstrek', + closeBracket: 'Lukk parentes', + singleQuote: 'Enkelt sitattegn' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/nl.js b/sources/plugins/a11yhelp/dialogs/lang/nl.js new file mode 100644 index 00000000..bd39e4aa --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/nl.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'nl', { + title: 'Toegankelijkheidsinstructies', + contents: 'Help-inhoud. Druk op ESC om dit dialoog te sluiten.', + legend: [ + { + name: 'Algemeen', + items: [ + { + name: 'Werkbalk tekstverwerker', + legend: 'Druk op ${toolbarFocus} om naar de werkbalk te navigeren. Om te schakelen naar de volgende en vorige werkbalkgroep, gebruik TAB en SHIFT+TAB. Om te schakelen naar de volgende en vorige werkbalkknop, gebruik de PIJL RECHTS en PIJL LINKS. Druk op SPATIE of ENTER om een werkbalkknop te activeren.' + }, + + { + name: 'Dialoog tekstverwerker', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Contextmenu tekstverwerker', + legend: 'Druk op ${contextMenu} of APPLICATION KEY om het contextmenu te openen. Schakel naar de volgende menuoptie met TAB of PIJL OMLAAG. Schakel naar de vorige menuoptie met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om een menuoptie te selecteren. Op een submenu van de huidige optie met SPATIE, ENTER of PIJL RECHTS. Ga terug naar de bovenliggende menuoptie met ESC of PIJL LINKS. Sluit het contextmenu met ESC.' + }, + + { + name: 'Keuzelijst tekstverwerker', + legend: 'In een keuzelijst, schakel naar het volgende item met TAB of PIJL OMLAAG. Schakel naar het vorige item met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om het item te selecteren. Druk op ESC om de keuzelijst te sluiten.' + }, + + { + name: 'Elementenpad werkbalk tekstverwerker', + legend: 'Druk op ${elementsPathFocus} om naar het elementenpad te navigeren. Om te schakelen naar het volgende element, gebruik TAB of PIJL RECHTS. Om te schakelen naar het vorige element, gebruik SHIFT+TAB or PIJL LINKS. Druk op SPATIE of ENTER om een element te selecteren in de tekstverwerker.' + } + ] + }, + { + name: 'Opdrachten', + items: [ + { + name: 'Ongedaan maken opdracht', + legend: 'Druk op ${undo}' + }, + { + name: 'Opnieuw uitvoeren opdracht', + legend: 'Druk op ${redo}' + }, + { + name: 'Vetgedrukt opdracht', + legend: 'Druk op ${bold}' + }, + { + name: 'Cursief opdracht', + legend: 'Druk op ${italic}' + }, + { + name: 'Onderstrepen opdracht', + legend: 'Druk op ${underline}' + }, + { + name: 'Link opdracht', + legend: 'Druk op ${link}' + }, + { + name: 'Werkbalk inklappen opdracht', + legend: 'Druk op ${toolbarCollapse}' + }, + { + name: 'Ga naar vorige focus spatie commando', + legend: 'Druk ${accessPreviousSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie voor de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken.' + }, + { + name: 'Ga naar volgende focus spatie commando', + legend: 'Druk ${accessNextSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie na de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken.' + }, + { + name: 'Toegankelijkheidshulp', + legend: 'Druk op ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Pijl naar links', + upArrow: 'Pijl omhoog', + rightArrow: 'Pijl naar rechts', + downArrow: 'Pijl naar beneden', + insert: 'Invoegen', + 'delete': 'Verwijderen', + leftWindowKey: 'Linker Windows-toets', + rightWindowKey: 'Rechter Windows-toets', + selectKey: 'Selecteer toets', + numpad0: 'Numpad 0', + numpad1: 'Numpad 1', + numpad2: 'Numpad 2', + numpad3: 'Numpad 3', + numpad4: 'Numpad 4', + numpad5: 'Numpad 5', + numpad6: 'Numpad 6', + numpad7: 'Numpad 7', + numpad8: 'Numpad 8', + numpad9: 'Numpad 9', + multiply: 'Vermenigvuldigen', + add: 'Toevoegen', + subtract: 'Aftrekken', + decimalPoint: 'Decimaalteken', + divide: 'Delen', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Puntkomma', + equalSign: 'Is gelijk-teken', + comma: 'Komma', + dash: 'Koppelteken', + period: 'Punt', + forwardSlash: 'Slash', + graveAccent: 'Accent grave', + openBracket: 'Vierkant haakje openen', + backSlash: 'Backslash', + closeBracket: 'Vierkant haakje sluiten', + singleQuote: 'Apostrof' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/no.js b/sources/plugins/a11yhelp/dialogs/lang/no.js new file mode 100644 index 00000000..bf30a580 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/no.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'no', { + title: 'Instruksjoner for tilgjengelighet', + contents: 'Innhold for hjelp. Trykk ESC for å lukke denne dialogen.', + legend: [ + { + name: 'Generelt', + items: [ + { + name: 'Verktøylinje for editor', + legend: 'Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT+TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen.' + }, + + { + name: 'Dialog for editor', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Kontekstmeny for editor', + legend: 'Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC.' + }, + + { + name: 'Listeboks for editor', + legend: 'I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen.' + }, + + { + name: 'Verktøylinje for elementsti', + legend: 'Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren.' + } + ] + }, + { + name: 'Kommandoer', + items: [ + { + name: 'Angre', + legend: 'Trykk ${undo}' + }, + { + name: 'Gjør om', + legend: 'Trykk ${redo}' + }, + { + name: 'Fet tekst', + legend: 'Trykk ${bold}' + }, + { + name: 'Kursiv tekst', + legend: 'Trykk ${italic}' + }, + { + name: 'Understreking', + legend: 'Trykk ${underline}' + }, + { + name: 'Link', + legend: 'Trykk ${link}' + }, + { + name: 'Skjul verktøylinje', + legend: 'Trykk ${toolbarCollapse}' + }, + { + name: 'Gå til forrige fokusområde', + legend: 'Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet.' + }, + { + name: 'Gå til neste fokusområde', + legend: 'Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet.' + }, + { + name: 'Hjelp for tilgjengelighet', + legend: 'Trykk ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/pl.js b/sources/plugins/a11yhelp/dialogs/lang/pl.js new file mode 100644 index 00000000..aeae9963 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/pl.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'pl', { + title: 'Instrukcje dotyczące dostępności', + contents: 'Zawartość pomocy. Wciśnij ESC, aby zamknąć to okno.', + legend: [ + { + name: 'Informacje ogólne', + items: [ + { + name: 'Pasek narzędzi edytora', + legend: 'Naciśnij ${toolbarFocus}, by przejść do paska narzędzi. Przejdź do następnej i poprzedniej grupy narzędzi używając TAB oraz SHIFT+TAB. Przejdź do następnego i poprzedniego przycisku paska narzędzi za pomocą STRZAŁKI W PRAWO lub STRZAŁKI W LEWO. Naciśnij SPACJĘ lub ENTER by aktywować przycisk paska narzędzi.' + }, + + { + name: 'Okno dialogowe edytora', + legend: + 'Wewnątrz okna dialogowego naciśnij TAB, by przejść do kolejnego elementu tego okna lub SHIFT+TAB, by przejść do poprzedniego elementu okna. Naciśnij ENTER w celu zatwierdzenia opcji okna dialogowego lub ESC w celu anulowania zmian. Jeśli okno dialogowe ma kilka zakładek, do listy zakładek można przejść za pomocą ALT+F10 lub TAB. Gdy lista zakładek jest aktywna, możesz przejść do kolejnej i poprzedniej zakładki za pomocą STRZAŁKI W PRAWO i STRZAŁKI W LEWO.' + }, + + { + name: 'Menu kontekstowe edytora', + legend: 'Wciśnij ${contextMenu} lub PRZYCISK APLIKACJI aby otworzyć menu kontekstowe. Przejdź do następnej pozycji menu wciskając TAB lub STRZAŁKĘ W DÓŁ. Przejdź do poprzedniej pozycji menu wciskając SHIFT + TAB lub STRZAŁKĘ W GÓRĘ. Wciśnij SPACJĘ lub ENTER aby wygrać pozycję menu. Otwórz pod-menu obecnej pozycji wciskając SPACJĘ lub ENTER lub STRZAŁKĘ W PRAWO. Wróć do pozycji nadrzędnego menu wciskając ESC lub STRZAŁKĘ W LEWO. Zamknij menu wciskając ESC.' + }, + + { + name: 'Lista w edytorze', + legend: 'Wewnątrz listy przejdź do kolejnego elementu listy za pomocą przycisku TAB lub STRZAŁKI W DÓŁ. Przejdź do poprzedniego elementu listy za pomocą SHIFT+TAB lub STRZAŁKI W GÓRĘ. Naciśnij SPACJĘ lub ENTER w celu wybrania opcji z listy. Naciśnij ESC, by zamknąć listę.' + }, + + { + name: 'Pasek ścieżki elementów edytora', + legend: 'Naciśnij ${elementsPathFocus} w celu przejścia do paska ścieżki elementów edytora. W celu przejścia do kolejnego elementu naciśnij klawisz TAB lub STRZAŁKI W PRAWO. W celu przejścia do poprzedniego elementu naciśnij klawisze SHIFT+TAB lub STRZAŁKI W LEWO. By wybrać element w edytorze, użyj klawisza SPACJI lub ENTER.' + } + ] + }, + { + name: 'Polecenia', + items: [ + { + name: 'Polecenie Cofnij', + legend: 'Naciśnij ${undo}' + }, + { + name: 'Polecenie Ponów', + legend: 'Naciśnij ${redo}' + }, + { + name: 'Polecenie Pogrubienie', + legend: 'Naciśnij ${bold}' + }, + { + name: 'Polecenie Kursywa', + legend: 'Naciśnij ${italic}' + }, + { + name: 'Polecenie Podkreślenie', + legend: 'Naciśnij ${underline}' + }, + { + name: 'Polecenie Wstaw/ edytuj odnośnik', + legend: 'Naciśnij ${link}' + }, + { + name: 'Polecenie schowaj pasek narzędzi', + legend: 'Naciśnij ${toolbarCollapse}' + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: 'Pomoc dotycząca dostępności', + legend: 'Naciśnij ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Strzałka w lewo', + upArrow: 'Strzałka w górę', + rightArrow: 'Strzałka w prawo', + downArrow: 'Strzałka w dół', + insert: 'Insert', + 'delete': 'Delete', + leftWindowKey: 'Lewy klawisz Windows', + rightWindowKey: 'Prawy klawisz Windows', + selectKey: 'Klawisz wyboru', + numpad0: 'Klawisz 0 na klawiaturze numerycznej', + numpad1: 'Klawisz 1 na klawiaturze numerycznej', + numpad2: 'Klawisz 2 na klawiaturze numerycznej', + numpad3: 'Klawisz 3 na klawiaturze numerycznej', + numpad4: 'Klawisz 4 na klawiaturze numerycznej', + numpad5: 'Klawisz 5 na klawiaturze numerycznej', + numpad6: 'Klawisz 6 na klawiaturze numerycznej', + numpad7: 'Klawisz 7 na klawiaturze numerycznej', + numpad8: 'Klawisz 8 na klawiaturze numerycznej', + numpad9: 'Klawisz 9 na klawiaturze numerycznej', + multiply: 'Przemnóż', + add: 'Plus', + subtract: 'Minus', + decimalPoint: 'Separator dziesiętny', + divide: 'Podziel', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Średnik', + equalSign: 'Znak równości', + comma: 'Przecinek', + dash: 'Pauza', + period: 'Kropka', + forwardSlash: 'Ukośnik prawy', + graveAccent: 'Akcent słaby', + openBracket: 'Nawias kwadratowy otwierający', + backSlash: 'Ukośnik lewy', + closeBracket: 'Nawias kwadratowy zamykający', + singleQuote: 'Apostrof' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/pt-br.js b/sources/plugins/a11yhelp/dialogs/lang/pt-br.js new file mode 100644 index 00000000..2070b8ef --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/pt-br.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'pt-br', { + title: 'Instruções de Acessibilidade', + contents: 'Conteúdo da Ajuda. Para fechar este diálogo pressione ESC.', + legend: [ + { + name: 'Geral', + items: [ + { + name: 'Barra de Ferramentas do Editor', + legend: 'Pressione ${toolbarFocus} para navegar para a barra de ferramentas. Mova para o anterior ou próximo grupo de ferramentas com TAB e SHIFT+TAB. Mova para o anterior ou próximo botão com SETA PARA DIREITA or SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas.' + }, + + { + name: 'Diálogo do Editor', + legend: + 'Dentro de um diálogo, pressione TAB para navegar para o próximo elemento. Pressione SHIFT+TAB para mover para o elemento anterior. Pressione ENTER ara enviar o diálogo. pressione ESC para cancelar o diálogo. Quando um diálogo tem múltiplas abas, a lista de abas pode ser acessada com ALT+F10 ou TAB, como parte da ordem de tabulação do diálogo. Com a lista de abas em foco, mova para a próxima aba e para a aba anterior com a SETA DIREITA ou SETA ESQUERDA, respectivamente.' + }, + + { + name: 'Menu de Contexto do Editor', + legend: 'Pressione ${contextMenu} ou TECLA DE MENU para abrir o menu de contexto, então mova para a próxima opção com TAB ou SETA PARA BAIXO. Mova para a anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO ou ENTER ou SETA PARA DIREITA. Volte para o menu pai com ESC ou SETA PARA ESQUERDA. Feche o menu de contexto com ESC.' + }, + + { + name: 'Caixa de Lista do Editor', + legend: 'Dentro de uma caixa de lista, mova para o próximo item com TAB ou SETA PARA BAIXO. Mova para o item anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar uma opção na lista. Pressione ESC para fechar a caixa de lista.' + }, + + { + name: 'Barra de Caminho do Elementos do Editor', + legend: 'Pressione ${elementsPathFocus} para a barra de caminho dos elementos. Mova para o próximo botão de elemento com TAB ou SETA PARA DIREITA. Mova para o botão anterior com SHIFT+TAB ou SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor.' + } + ] + }, + { + name: 'Comandos', + items: [ + { + name: ' Comando Desfazer', + legend: 'Pressione ${undo}' + }, + { + name: ' Comando Refazer', + legend: 'Pressione ${redo}' + }, + { + name: ' Comando Negrito', + legend: 'Pressione ${bold}' + }, + { + name: ' Comando Itálico', + legend: 'Pressione ${italic}' + }, + { + name: ' Comando Sublinhado', + legend: 'Pressione ${underline}' + }, + { + name: ' Comando Link', + legend: 'Pressione ${link}' + }, + { + name: ' Comando Fechar Barra de Ferramentas', + legend: 'Pressione ${toolbarCollapse}' + }, + { + name: 'Acessar o comando anterior de spaço de foco', + legend: 'Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo antes do cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes.' + }, + { + name: 'Acessar próximo fomando de spaço de foco', + legend: 'Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo após o cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes.' + }, + { + name: ' Ajuda de Acessibilidade', + legend: 'Pressione ${a11yHelp}' + } + ] + } + ], + backspace: 'Tecla Backspace', + tab: 'Tecla Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Seta à Esquerda', + upArrow: 'Seta à Cima', + rightArrow: 'Seta à Direita', + downArrow: 'Seta à Baixo', + insert: 'Insert', + 'delete': 'Delete', + leftWindowKey: 'Tecla do Windows Esquerda', + rightWindowKey: 'Tecla do Windows Direita', + selectKey: 'Tecla Selecionar', + numpad0: '0 do Teclado Numérico', + numpad1: '1 do Teclado Numérico', + numpad2: '2 do Teclado Numérico', + numpad3: '3 do Teclado Numérico', + numpad4: '4 do Teclado Numérico', + numpad5: '5 do Teclado Numérico', + numpad6: '6 do Teclado Numérico', + numpad7: '7 do Teclado Numérico', + numpad8: '8 do Teclado Numérico', + numpad9: '9 do Teclado Numérico', + multiply: 'Multiplicar', + add: 'Mais', + subtract: 'Subtrair', + decimalPoint: 'Ponto', + divide: 'Dividir', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Ponto-e-vírgula', + equalSign: 'Igual', + comma: 'Vírgula', + dash: 'Hífen', + period: 'Ponto', + forwardSlash: 'Barra', + graveAccent: 'Acento Grave', + openBracket: 'Abrir Conchetes', + backSlash: 'Contra-barra', + closeBracket: 'Fechar Colchetes', + singleQuote: 'Aspas Simples' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/pt.js b/sources/plugins/a11yhelp/dialogs/lang/pt.js new file mode 100644 index 00000000..cddb9a7e --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/pt.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'pt', { + title: 'Instruções de acessibilidade', + contents: 'Conteúdo de ajuda. Use a tecla ESC para fechar esta janela.', + legend: [ + { + name: 'Geral', + items: [ + { + name: 'Barra de ferramentas do editor', + legend: 'Clique em ${toolbarFocus} para navegar para a barra de ferramentas. Vá para o grupo da barra de ferramentas anterior e seguinte com TAB e SHIFT+TAB. Vá para o botão da barra de ferramentas anterior com a SETA DIREITA ou ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas.' + }, + + { + name: 'Janela do Editor', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Menu de Contexto do Editor', + legend: 'Clique em ${contextMenu} ou TECLA APLICAÇÃO para abrir o menu de contexto. Depois vá para a opção do menu seguinte com TAB ou SETA PARA BAIXO. Vá para a opção anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO, ENTER ou SETA DIREITA. GVá para o item do menu parente com ESC ou SETA ESQUERDA. Feche o menu de contexto com ESC.' + }, + + { + name: 'Editor de caixa em lista', + legend: 'Dentro da caixa da lista, vá para o itemda lista seguinte com TAB ou SETA PARA BAIXO. Move Vá parao item da lista anterior com SHIFT+TAB ou SETA PARA BAIXO. Pressione ESPAÇO ou ENTER para selecionar a opção da lista. Pressione ESC para fechar a caisa da lista.' + }, + + { + name: 'Caminho Barra Elemento Editor', + legend: 'Clique em ${elementsPathFocus} para navegar para a barra do caminho dos elementos. Vá para o botão do elemento seguinte com TAB ou SETA DIREITA. Vá para o botão anterior com SHIFT+TAB ou SETA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor.' + } + ] + }, + { + name: 'Comandos', + items: [ + { + name: 'Comando de Anular', + legend: 'Carregar ${undo}' + }, + { + name: 'Comando de Refazer', + legend: 'Pressione ${redo}' + }, + { + name: 'Comando de Negrito', + legend: 'Pressione ${bold}' + }, + { + name: 'Comando de Itálico', + legend: 'Pressione ${italic}' + }, + { + name: 'Comando de Sublinhado', + legend: 'Pressione ${underline}' + }, + { + name: 'Comando de Hiperligação', + legend: 'Pressione ${link}' + }, + { + name: 'Comando de Ocultar Barra de Ferramentas', + legend: 'Pressione ${toolbarCollapse}' + }, + { + name: 'Acesso comando do espaço focus anterior', + 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.' + }, + { + name: 'Acesso comando do espaço focus seguinte', + legend: 'Pressione ${accessNextSpace} para aceder ao espaço do focos inalcançável mais perto depois do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes.' + }, + { + name: 'Ajuda a acessibilidade', + legend: 'Pressione ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pausa', + capslock: 'Maiúsculas', + escape: 'Esc', + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'Fim', + home: 'Entrada', + leftArrow: 'Seta esquerda', + upArrow: 'Seta para cima', + rightArrow: 'Seta direita', + downArrow: 'Seta para baixo', + insert: 'Inserir', + 'delete': 'Eliminar', + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiplicar', + add: 'Adicionar', + subtract: 'Subtrair', + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Vírgula', + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Acento grave', + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/ro.js b/sources/plugins/a11yhelp/dialogs/lang/ro.js new file mode 100644 index 00000000..e6702dd6 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ro.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'ro', { + title: 'Instrucțiuni de accesibilitate', + contents: 'Cuprins. Pentru a închide acest dialog, apăsați tasta ESC.', + legend: [ + { + name: 'General', + items: [ + { + name: 'Editează bara instrumente.', + legend: 'Apasă ${toolbarFocus} pentru a naviga prin bara de instrumente. Pentru a te mișca prin grupurile de instrumente folosește tastele TAB și SHIFT+TAB. Pentru a te mișca intre diverse instrumente folosește tastele SĂGEATĂ DREAPTA sau SĂGEATĂ STÂNGA. Apasă butonul SPAȚIU sau ENTER pentru activarea instrumentului.' + }, + + { + name: 'Dialog editor', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor meniu contextual', + legend: 'Apasă ${contextMenu} sau TASTA MENIU pentru a deschide meniul contextual. Treci la următoarea opțiune din meniu cu TAB sau SĂGEATĂ JOS. Treci la opțiunea anterioară cu SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din meniu. Deschide sub-meniul opțiunii curente cu SPAȚIU sau ENTER sau SĂGEATĂ DREAPTA. Revino la elementul din meniul părinte cu ESC sau SĂGEATĂ STÂNGA. Închide meniul de context cu ESC.' + }, + + { + name: 'Editor Casetă Listă', + legend: 'În interiorul unei liste, treci la următorull element cu TAB sau SĂGEATĂ JOS. Treci la elementul anterior din listă cu SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din listă. Apasă ESC pentru a închide lista.' + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Comenzi', + items: [ + { + name: ' Undo command', // MISSING + legend: 'Apasă ${undo}' + }, + { + name: 'Comanda precedentă', + legend: 'Apasă ${redo}' + }, + { + name: 'Comanda Îngroșat', + legend: 'Apasă ${bold}' + }, + { + name: 'Comanda Inclinat', + legend: 'Apasă ${italic}' + }, + { + name: 'Comanda Subliniere', + legend: 'Apasă ${underline}' + }, + { + name: 'Comanda Legatură', + legend: 'Apasă ${link}' + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/ru.js b/sources/plugins/a11yhelp/dialogs/lang/ru.js new file mode 100644 index 00000000..7e9075a2 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ru.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'ru', { + title: 'Горячие клавиши', + contents: 'Помощь. Для закрытия этого окна нажмите ESC.', + legend: [ + { + name: 'Основное', + items: [ + { + name: 'Панель инструментов', + legend: 'Нажмите ${toolbarFocus} для перехода к панели инструментов. Для перемещения между группами панели инструментов используйте TAB и SHIFT+TAB. Для перемещения между кнопками панели иструментов используйте кнопки ВПРАВО или ВЛЕВО. Нажмите ПРОБЕЛ или ENTER для запуска кнопки панели инструментов.' + }, + + { + name: 'Диалоги', + legend: + 'Внутри диалога, нажмите TAB чтобы перейти к следующему элементу диалога, нажмите SHIFT+TAB чтобы перейти к предыдущему элементу диалога, нажмите ENTER чтобы отправить диалог, нажмите ESC чтобы отменить диалог. Когда диалоговое окно имеет несколько вкладок, получить доступ к панели вкладок как части диалога можно нажатием или сочетания ALT+F10 или TAB, при этом активные элементы диалога будут перебираться с учетом порядка табуляции. При активной панели вкладок, переход к следующей или предыдущей вкладке осуществляется нажатием стрелки "ВПРАВО" или стрелки "ВЛЕВО" соответственно.' + }, + + { + name: 'Контекстное меню', + legend: 'Нажмите ${contextMenu} или клавишу APPLICATION, чтобы открыть контекстное меню. Затем перейдите к следующему пункту меню с помощью TAB или стрелкой "ВНИЗ". Переход к предыдущей опции - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию меню. Открыть подменю текущей опции - SPACE или ENTER или стрелкой "ВПРАВО". Возврат к родительскому пункту меню - ESC или стрелкой "ВЛЕВО". Закрытие контекстного меню - ESC.' + }, + + { + name: 'Редактор списка', + legend: 'Внутри окна списка, переход к следующему пункту списка - TAB или стрелкой "ВНИЗ". Переход к предыдущему пункту списка - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию списка. Нажмите ESC, чтобы закрыть окно списка.' + }, + + { + name: 'Путь к элементу', + legend: 'Нажмите ${elementsPathFocus}, чтобы перейти к панели пути элементов. Переход к следующей кнопке элемента - TAB или стрелкой "ВПРАВО". Переход к предыдущей кнопку - SHIFT+TAB или стрелкой "ВЛЕВО". Нажмите SPACE, или ENTER, чтобы выбрать элемент в редакторе.' + } + ] + }, + { + name: 'Команды', + items: [ + { + name: 'Отменить', + legend: 'Нажмите ${undo}' + }, + { + name: 'Повторить', + legend: 'Нажмите ${redo}' + }, + { + name: 'Полужирный', + legend: 'Нажмите ${bold}' + }, + { + name: 'Курсив', + legend: 'Нажмите ${italic}' + }, + { + name: 'Подчеркнутый', + legend: 'Нажмите ${underline}' + }, + { + name: 'Гиперссылка', + legend: 'Нажмите ${link}' + }, + { + name: 'Свернуть панель инструментов', + legend: 'Нажмите ${toolbarCollapse}' + }, + { + name: 'Команды доступа к предыдущему фокусному пространству', + legend: 'Нажмите ${accessPreviousSpace}, чтобы обратиться к ближайшему недостижимому фокусному пространству перед символом "^", например: два смежных HR элемента. Повторите комбинацию клавиш, чтобы достичь отдаленных фокусных пространств.' + }, + { + name: 'Команды доступа к следующему фокусному пространству', + legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' + }, + { + name: 'Справка по горячим клавишам', + legend: 'Нажмите ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Esc', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Стрелка влево', + upArrow: 'Стрелка вверх', + rightArrow: 'Стрелка вправо', + downArrow: 'Стрелка вниз', + insert: 'Insert', + 'delete': 'Delete', + leftWindowKey: 'Левая клавиша Windows', + rightWindowKey: 'Правая клавиша Windows', + selectKey: 'Выбрать', + numpad0: 'Цифра 0', + numpad1: 'Цифра 1', + numpad2: 'Цифра 2', + numpad3: 'Цифра 3', + numpad4: 'Цифра 4', + numpad5: 'Цифра 5', + numpad6: 'Цифра 6', + numpad7: 'Цифра 7', + numpad8: 'Цифра 8', + numpad9: 'Цифра 9', + multiply: 'Умножить', + add: 'Плюс', + subtract: 'Вычесть', + decimalPoint: 'Десятичная точка', + divide: 'Делить', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Точка с запятой', + equalSign: 'Равно', + comma: 'Запятая', + dash: 'Тире', + period: 'Точка', + forwardSlash: 'Наклонная черта', + graveAccent: 'Апостроф', + openBracket: 'Открыть скобку', + backSlash: 'Обратная наклонная черта', + closeBracket: 'Закрыть скобку', + singleQuote: 'Одинарная кавычка' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/si.js b/sources/plugins/a11yhelp/dialogs/lang/si.js new file mode 100644 index 00000000..62d605c1 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/si.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'si', { + title: 'ළඟා වියහැකි ', + contents: 'උදව් සඳහා අන්තර්ගතය.නික්මයෙමට ESC බොත්තම ඔබන්න', + legend: [ + { + name: 'පොදු කරුණු', + items: [ + { + name: 'සංස්කරණ මෙවලම් ', + legend: 'ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT+TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න.' + }, + + { + name: 'සංස්කරණ ', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'සංස්කරණ අඩංගුවට ', + legend: 'ඔබන්න ${අන්තර්ගත මෙනුව} හෝ APPLICATION KEY අන්තර්ගත-මෙනුව විවුරතකිරීමට. ඊළඟ මෙනුව-ව්කල්පයන්ට යෑමට TAB හෝ DOWN ARROW බොත්තම ද, පෙර විකල්පයන්ටයෑමට SHIFT+TAB හෝ UP ARROW බොත්තම ද, මෙනුව-ව්කල්පයන් තේරීමට SPACE හෝ ENTER බොත්තම ද, දැනට විවුර්තව ඇති උප-මෙනුවක වීකල්ප තේරීමට SPACE හෝ ENTER හෝ RIGHT ARROW ද, නැවත පෙර ප්‍රධාන මෙනුවට යෑමට ESC හෝ LEFT ARROW බොත්තම ද. අන්තර්ගත-මෙනුව වැසීමට ESC බොත්තම ද ඔබන්න.' + }, + + { + name: 'සංස්කරණ තේරුම් ', + legend: 'තේරුම් කොටුව තුළ , ඊළඟ අයිතමයට යෑමට TAB හෝ DOWN ARROW , පෙර අයිතමයට යෑමට SHIFT+TAB හෝ UP ARROW . අයිතම විකල්පයන් තේරීමට SPACE හෝ ENTER ,තේරුම් කොටුව වැසීමට ESC බොත්තම් ද ඔබන්න.' + }, + + { + name: 'සංස්කරණ අංග සහිත ', + legend: 'ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT+TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න.' + } + ] + }, + { + name: 'විධාන', + items: [ + { + name: 'විධානය වෙනස් ', + legend: 'ඔබන්න ${වෙනස් කිරීම}' + }, + { + name: 'විධාන නැවත් පෙර පරිදිම වෙනස්කර ගැනීම.', + legend: 'ඔබන්න ${නැවත් පෙර පරිදිම වෙනස්කර ගැනීම}' + }, + { + name: 'තද අකුරින් විධාන', + legend: 'ඔබන්න ${තද }' + }, + { + name: 'බැධී අකුරු විධාන', + legend: 'ඔබන්න ${බැධී අකුරු }' + }, + { + name: 'යටින් ඉරි ඇද ඇති විධාන.', + legend: 'ඔබන්න ${යටින් ඉරි ඇද ඇති}' + }, + { + name: 'සම්බන්ධිත විධාන', + legend: 'ඔබන්න ${සම්බන්ධ }' + }, + { + name: 'මෙවලම් තීරු හැකුලුම් විධාන', + legend: 'ඔබන්න ${මෙවලම් තීරු හැකුලුම් }' + }, + { + name: 'යොමුවීමට පෙර වැදගත් විධාන', + legend: 'ඔබන්න ${යොමුවීමට ඊළඟ }' + }, + { + name: 'යොමුවීමට ඊළග වැදගත් විධාන', + legend: 'ඔබන්න ${යොමුවීමට ඊළඟ }' + }, + { + name: 'ප්‍රවේශ ', + legend: 'ඔබන්න ${a11y }' + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/sk.js b/sources/plugins/a11yhelp/dialogs/lang/sk.js new file mode 100644 index 00000000..1267e8b7 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/sk.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'sk', { + title: 'Inštrukcie prístupnosti', + contents: 'Pomocný obsah. Pre zatvorenie tohto okna, stlačte ESC.', + legend: [ + { + name: 'Všeobecne', + items: [ + { + name: 'Lišta nástrojov editora', + legend: 'Stlačte ${toolbarFocus} pre navigáciu na lištu nástrojov. Medzi ďalšou a predchádzajúcou lištou nástrojov sa pohybujete s TAB a SHIFT+TAB. Medzi ďalším a predchádzajúcim tlačidlom na lište nástrojov sa pohybujete s pravou šípkou a ľavou šípkou. Stlačte medzerník alebo ENTER pre aktiváciu tlačidla lišty nástrojov.' + }, + + { + name: 'Editorový dialóg', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editorové kontextové menu', + legend: 'Stlačte ${contextMenu} alebo APPLICATION KEY pre otvorenie kontextového menu. Potom sa presúvajte na ďalšie možnosti menu s TAB alebo dolnou šípkou. Presunte sa k predchádzajúcej možnosti s SHIFT+TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti menu. Otvorte pod-menu danej možnosti s medzerníkom, alebo ENTER, alebo pravou šípkou. Vráťte sa späť do položky rodičovského menu s ESC alebo ľavou šípkou. Zatvorte kontextové menu s ESC.' + }, + + { + name: 'Editorov box zoznamu', + legend: 'V boxe zoznamu, presuňte sa na ďalšiu položku v zozname s TAB alebo dolnou šípkou. Presuňte sa k predchádzajúcej položke v zozname so SHIFT+TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti zoznamu. Stlačte ESC pre zatvorenie boxu zoznamu.' + }, + + { + name: 'Editorove pásmo cesty prvku', + legend: 'Stlačte ${elementsPathFocus} pre navigovanie na pásmo cesty elementu. Presuňte sa na tlačidlo ďalšieho prvku s TAB alebo pravou šípkou. Presuňte sa k predchádzajúcemu tlačidlu s SHIFT+TAB alebo ľavou šípkou. Stlačte medzerník alebo ENTER pre výber prvku v editore.' + } + ] + }, + { + name: 'Príkazy', + items: [ + { + name: 'Vrátiť príkazy', + legend: 'Stlačte ${undo}' + }, + { + name: 'Nanovo vrátiť príkaz', + legend: 'Stlačte ${redo}' + }, + { + name: 'Príkaz na stučnenie', + legend: 'Stlačte ${bold}' + }, + { + name: 'Príkaz na kurzívu', + legend: 'Stlačte ${italic}' + }, + { + name: 'Príkaz na podčiarknutie', + legend: 'Stlačte ${underline}' + }, + { + name: 'Príkaz na odkaz', + legend: 'Stlačte ${link}' + }, + { + name: 'Príkaz na zbalenie lišty nástrojov', + legend: 'Stlačte ${toolbarCollapse}' + }, + { + name: 'Prejsť na predchádzajúcu zamerateľnú medzeru príkazu', + legend: 'Stlačte ${accessPreviousSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery pred vsuvkuo. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier.' + }, + { + name: 'Prejsť na ďalší ', + legend: 'Stlačte ${accessNextSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery po vsuvke. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier.' + }, + { + name: 'Pomoc prístupnosti', + legend: 'Stlačte ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Stránka hore', + pageDown: 'Stránka dole', + end: 'End', + home: 'Home', + leftArrow: 'Šípka naľavo', + upArrow: 'Šípka hore', + rightArrow: 'Šípka napravo', + downArrow: 'Šípka dole', + insert: 'Insert', + 'delete': 'Delete', + leftWindowKey: 'Ľavé Windows tlačidlo', + rightWindowKey: 'Pravé Windows tlačidlo', + selectKey: 'Tlačidlo Select', + numpad0: 'Numpad 0', + numpad1: 'Numpad 1', + numpad2: 'Numpad 2', + numpad3: 'Numpad 3', + numpad4: 'Numpad 4', + numpad5: 'Numpad 5', + numpad6: 'Numpad 6', + numpad7: 'Numpad 7', + numpad8: 'Numpad 8', + numpad9: 'Numpad 9', + multiply: 'Násobenie', + add: 'Sčítanie', + subtract: 'Odčítanie', + decimalPoint: 'Desatinná čiarka', + divide: 'Delenie', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Bodkočiarka', + equalSign: 'Rovná sa', + comma: 'Čiarka', + dash: 'Pomĺčka', + period: 'Bodka', + forwardSlash: 'Lomítko', + graveAccent: 'Zdôrazňovanie prízvuku', + openBracket: 'Hranatá zátvorka otváracia', + backSlash: 'Backslash', + closeBracket: 'Hranatá zátvorka zatváracia', + singleQuote: 'Jednoduché úvodzovky' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/sl.js b/sources/plugins/a11yhelp/dialogs/lang/sl.js new file mode 100644 index 00000000..40fb244f --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/sl.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'sl', { + title: 'Navodila Dostopnosti', + contents: 'Vsebina Pomoči. Če želite zapreti to pogovorno okno pritisnite ESC.', + legend: [ + { + name: 'Splošno', + items: [ + { + name: 'Urejevalna Orodna Vrstica', + legend: 'Pritisnite ${toolbarFocus} za pomik v orodno vrstico. Z TAB in SHIFT+TAB se pomikate na naslednjo in prejšnjo skupino orodne vrstice. Z DESNO PUŠČICO ali LEVO PUŠČICO se pomikate na naslednji in prejšnji gumb orodne vrstice. Pritisnite SPACE ali ENTER, da aktivirate gumb orodne vrstice.' + }, + + { + name: 'Urejevalno Pogovorno Okno', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Urejevalni Kontekstni Meni', + legend: 'Pritisnite ${contextMenu} ali APPLICATION KEY, da odprete kontekstni meni. Nato se premaknite na naslednjo možnost menija s tipko TAB ali PUŠČICA DOL. Premakniti se na prejšnjo možnost z SHIFT + TAB ali PUŠČICA GOR. Pritisnite SPACE ali ENTER za izbiro možnosti menija. Odprite podmeni trenutne možnosti menija s tipko SPACE ali ENTER ali DESNA PUŠČICA. Vrnite se na matični element menija s tipko ESC ali LEVA PUŠČICA. Zaprite kontekstni meni z ESC.' + }, + + { + name: 'Urejevalno Seznamsko Polje', + legend: 'Znotraj seznama, se premaknete na naslednji element seznama s tipko TAB ali PUŠČICO DOL. Z SHIFT+TAB ali PUŠČICO GOR se premaknete na prejšnji element seznama. Pritisnite tipko SPACE ali ENTER za izbiro elementa. Pritisnite tipko ESC, da zaprete seznam.' + }, + + { + name: 'Urejevalna vrstica poti elementa', + legend: 'Pritisnite ${elementsPathFocus} za pomikanje po vrstici elementnih poti. S TAB ali DESNA PUŠČICA se premaknete na naslednji gumb elementa. Z SHIFT+TAB ali LEVO PUŠČICO se premaknete na prejšnji gumb elementa. Pritisnite SPACE ali ENTER za izbiro elementa v urejevalniku.' + } + ] + }, + { + name: 'Ukazi', + items: [ + { + name: 'Razveljavi ukaz', + legend: 'Pritisnite ${undo}' + }, + { + name: 'Ponovi ukaz', + legend: 'Pritisnite ${redo}' + }, + { + name: 'Krepki ukaz', + legend: 'Pritisnite ${bold}' + }, + { + name: 'Ležeči ukaz', + legend: 'Pritisnite ${italic}' + }, + { + name: 'Poudarni ukaz', + legend: 'Pritisnite ${underline}' + }, + { + name: 'Ukaz povezave', + legend: 'Pritisnite ${link}' + }, + { + name: 'Skrči Orodno Vrstico Ukaz', + legend: 'Pritisnite ${toolbarCollapse}' + }, + { + name: 'Dostop do prejšnjega ukaza ostrenja', + legend: 'Pritisnite ${accessPreviousSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora pred strešico, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore.' + }, + { + name: 'Dostop do naslednjega ukaza ostrenja', + legend: 'Pritisnite ${accessNextSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora po strešici, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore.' + }, + { + name: 'Pomoč Dostopnosti', + legend: 'Pritisnite ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Levo puščica', + upArrow: 'Gor puščica', + rightArrow: 'Desno puščica', + downArrow: 'Dol puščica', + insert: 'Insert', + 'delete': 'Delete', + leftWindowKey: 'Leva Windows tipka', + rightWindowKey: 'Desna Windows tipka', + selectKey: 'Select tipka', + numpad0: 'Numpad 0', + numpad1: 'Numpad 1', + numpad2: 'Numpad 2', + numpad3: 'Numpad 3', + numpad4: 'Numpad 4', + numpad5: 'Numpad 5', + numpad6: 'Numpad 6', + numpad7: 'Numpad 7', + numpad8: 'Numpad 8', + numpad9: 'Numpad 9', + multiply: 'Zmnoži', + add: 'Dodaj', + subtract: 'Odštej', + decimalPoint: 'Decimalna vejica', + divide: 'Deli', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Podpičje', + equalSign: 'enačaj', + comma: 'Vejica', + dash: 'Vezaj', + period: 'Pika', + forwardSlash: 'Desna poševnica', + graveAccent: 'Krativec', + openBracket: 'Oklepaj', + backSlash: 'Leva poševnica', + closeBracket: 'Oklepaj', + singleQuote: 'Opuščaj' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/sq.js b/sources/plugins/a11yhelp/dialogs/lang/sq.js new file mode 100644 index 00000000..9c634da5 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/sq.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'sq', { + title: 'Udhëzimet e Qasjes', + contents: 'Përmbajtja ndihmëse. Për ta mbyllur dialogun shtyp ESC.', + legend: [ + { + name: 'Të përgjithshme', + items: [ + { + name: 'Shiriti i Redaktuesit', + legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING + }, + + { + name: 'Dialogu i Redaktuesit', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Komandat', + items: [ + { + name: 'Rikthe komandën', + legend: 'Shtyp ${undo}' + }, + { + name: 'Ribëj komandën', + legend: 'Shtyp ${redo}' + }, + { + name: 'Komanda e trashjes së tekstit', + legend: 'Shtyp ${bold}' + }, + { + name: 'Komanda kursive', + legend: 'Shtyp ${italic}' + }, + { + name: 'Komanda e nënvijëzimit', + legend: 'Shtyp ${underline}' + }, + { + name: 'Komanda e Nyjes', + legend: 'Shtyp ${link}' + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Shtyp ${toolbarCollapse}' + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: 'Ndihmë Qasjeje', + legend: 'Shtyp ${a11yHelp}' + } + ] + } + ], + backspace: 'Prapa', + tab: 'Fletë', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Shenja majtas', + upArrow: 'Shenja sipër', + rightArrow: 'Shenja djathtas', + downArrow: 'Shenja poshtë', + insert: 'Shto', + 'delete': 'Grise', + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Shto', + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Semicolon', + equalSign: 'Equal Sign', // MISSING + comma: 'Presje', + dash: 'vizë', + period: 'Pikë', + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Hape kllapën', + backSlash: 'Backslash', // MISSING + closeBracket: 'Mbylle kllapën', + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/sr-latn.js b/sources/plugins/a11yhelp/dialogs/lang/sr-latn.js new file mode 100644 index 00000000..9f813980 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/sr-latn.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'sr-latn', { + title: 'Accessibility Instructions', // MISSING + contents: 'Help Contents. To close this dialog press ESC.', // MISSING + legend: [ + { + name: 'Opšte', + items: [ + { + name: 'Editor Toolbar', // MISSING + 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 + }, + + { + name: 'Editor Dialog', // MISSING + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Commands', // MISSING + items: [ + { + name: ' Undo command', // MISSING + legend: 'Press ${undo}' // MISSING + }, + { + name: ' Redo command', // MISSING + legend: 'Press ${redo}' // MISSING + }, + { + name: ' Bold command', // MISSING + legend: 'Press ${bold}' // MISSING + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/sr.js b/sources/plugins/a11yhelp/dialogs/lang/sr.js new file mode 100644 index 00000000..f2e37cc7 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/sr.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'sr', { + title: 'Accessibility Instructions', // MISSING + contents: 'Help Contents. To close this dialog press ESC.', // MISSING + legend: [ + { + name: 'Опште', + items: [ + { + name: 'Editor Toolbar', // MISSING + 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 + }, + + { + name: 'Editor Dialog', // MISSING + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Commands', // MISSING + items: [ + { + name: ' Undo command', // MISSING + legend: 'Press ${undo}' // MISSING + }, + { + name: ' Redo command', // MISSING + legend: 'Press ${redo}' // MISSING + }, + { + name: ' Bold command', // MISSING + legend: 'Press ${bold}' // MISSING + }, + { + name: ' Italic command', // MISSING + legend: 'Press ${italic}' // MISSING + }, + { + name: ' Underline command', // MISSING + legend: 'Press ${underline}' // MISSING + }, + { + name: ' Link command', // MISSING + legend: 'Press ${link}' // MISSING + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/sv.js b/sources/plugins/a11yhelp/dialogs/lang/sv.js new file mode 100644 index 00000000..27941d9b --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/sv.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'sv', { + title: 'Hjälpmedelsinstruktioner', + contents: 'Hjälpinnehåll. För att stänga denna dialogruta trycker du på ESC.', + legend: [ + { + name: 'Allmänt', + items: [ + { + name: 'Editor verktygsfält', + legend: 'Tryck på ${toolbarFocus} för att navigera till verktygsfältet. Flytta till nästa och föregående verktygsfältsgrupp med TAB och SHIFT+TAB. Flytta till nästa och föregående knapp i verktygsfältet med HÖGERPIL eller VÄNSTERPIL. Tryck SPACE eller ENTER för att aktivera knappen i verktygsfältet.' + }, + + { + name: 'Dialogeditor', + legend: + 'Inuti en dialogruta, tryck TAB för att navigera till nästa fält i dialogrutan, tryck SKIFT+TAB för att flytta till föregående fält, tryck ENTER för att skicka. Du avbryter och stänger dialogen med ESC. För dialogrutor som har flera flikar, tryck ALT+F10 eller TAB för att navigera till fliklistan. med fliklistan vald flytta till nästa och föregående flik med HÖGER- eller VÄNSTERPIL.' + }, + + { + name: 'Editor för innehållsmeny', + legend: 'Tryck på $ {contextMenu} eller PROGRAMTANGENTEN för att öppna snabbmenyn. Flytta sedan till nästa menyalternativ med TAB eller NEDPIL. Flytta till föregående alternativ med SHIFT + TABB eller UPPIL. Tryck Space eller ENTER för att välja menyalternativ. Öppna undermeny av nuvarande alternativ med SPACE eller ENTER eller HÖGERPIL. Gå tillbaka till överordnade menyalternativ med ESC eller VÄNSTERPIL. Stäng snabbmenyn med ESC.' + }, + + { + name: 'Editor för list-box', + legend: 'Inuti en list-box, gå till nästa listobjekt med TAB eller NEDPIL. Flytta till föregående listobjekt med SHIFT+TAB eller UPPIL. Tryck SPACE eller ENTER för att välja listan alternativet. Tryck ESC för att stänga list-boxen.' + }, + + { + name: 'Editor för elementens sökväg', + legend: 'Tryck på ${elementsPathFocus} för att navigera till verktygsfältet för elementens sökvägar. Flytta till nästa elementknapp med TAB eller HÖGERPIL. Flytta till föregående knapp med SKIFT+TAB eller VÄNSTERPIL. Tryck SPACE eller ENTER för att välja element i redigeraren.' + } + ] + }, + { + name: 'Kommandon', + items: [ + { + name: 'Ångra kommando', + legend: 'Tryck på ${undo}' + }, + { + name: 'Gör om kommando', + legend: 'Tryck på ${redo}' + }, + { + name: 'Kommandot fet stil', + legend: 'Tryck på ${bold}' + }, + { + name: 'Kommandot kursiv', + legend: 'Tryck på ${italic}' + }, + { + name: 'Kommandot understruken', + legend: 'Tryck på ${underline}' + }, + { + name: 'Kommandot länk', + legend: 'Tryck på ${link}' + }, + { + name: 'Verktygsfält Dölj kommandot', + legend: 'Tryck på ${toolbarCollapse}' + }, + { + name: 'Gå till föregående fokus plats', + legend: 'Tryck på ${accessPreviousSpace} för att gå till närmast onåbara utrymme före markören, exempel: två intilliggande HR element. Repetera tangentkombinationen för att gå till nästa.' + }, + { + name: 'Tillgå nästa fokuskommandots utrymme', + legend: 'Tryck ${accessNextSpace} på för att komma åt den närmaste onåbar fokus utrymme efter cirkumflex, till exempel: två intilliggande HR element. Upprepa tangentkombinationen för att nå avlägsna fokus utrymmen.' + }, + { + name: 'Hjälp om tillgänglighet', + legend: 'Tryck ${a11yHelp}' + } + ] + } + ], + backspace: 'Backsteg', + tab: 'Tab', + enter: 'Retur', + shift: 'Skift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Paus', + capslock: 'Caps lock', + escape: 'Escape', + pageUp: 'Sida Up', + pageDown: 'Sida Ned', + end: 'Slut', + home: 'Hem', + leftArrow: 'Vänsterpil', + upArrow: 'Uppil', + rightArrow: 'Högerpil', + downArrow: 'Nedåtpil', + insert: 'Infoga', + 'delete': 'Radera', + leftWindowKey: 'Vänster Windowstangent', + rightWindowKey: 'Höger Windowstangent', + selectKey: 'Välj tangent', + numpad0: 'Nummer 0', + numpad1: 'Nummer 1', + numpad2: 'Nummer 2', + numpad3: 'Nummer 3', + numpad4: 'Nummer 4', + numpad5: 'Nummer 5', + numpad6: 'Nummer 6', + numpad7: 'Nummer 7', + numpad8: 'Nummer 8', + numpad9: 'Nummer 9', + multiply: 'Multiplicera', + add: 'Addera', + subtract: 'Minus', + decimalPoint: 'Decimalpunkt', + divide: 'Dividera', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Semikolon', + equalSign: 'Lika med tecken', + comma: 'Komma', + dash: 'Minus', + period: 'Punkt', + forwardSlash: 'Snedstreck framåt', + graveAccent: 'Accent', + openBracket: 'Öppningsparentes', + backSlash: 'Snedstreck bakåt', + closeBracket: 'Slutparentes', + singleQuote: 'Enkelt Citattecken' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/th.js b/sources/plugins/a11yhelp/dialogs/lang/th.js new file mode 100644 index 00000000..c201bd9c --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/th.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'th', { + title: 'Accessibility Instructions', // MISSING + contents: 'Help Contents. To close this dialog press ESC.', // MISSING + legend: [ + { + name: 'ทั่วไป', + items: [ + { + name: 'แถบเครื่องมือสำหรับเครื่องมือช่วยพิมพ์', + legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING + }, + + { + name: 'Editor Dialog', // MISSING + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'คำสั่ง', + items: [ + { + name: 'เลิกทำคำสั่ง', + legend: 'วาง ${undo}' + }, + { + name: 'คำสั่งสำหรับทำซ้ำ', + legend: 'วาง ${redo}' + }, + { + name: 'คำสั่งสำหรับตัวหนา', + legend: 'วาง ${bold}' + }, + { + name: 'คำสั่งสำหรับตัวเอียง', + legend: 'วาง ${italic}' + }, + { + name: 'คำสั่งสำหรับขีดเส้นใต้', + legend: 'วาง ${underline}' + }, + { + name: 'คำสั่งสำหรับลิงก์', + legend: 'วาง ${link}' + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: 'Press ${toolbarCollapse}' // MISSING + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: 'Press ${a11yHelp}' // MISSING + } + ] + } + ], + backspace: 'Backspace', // MISSING + tab: 'Tab', // MISSING + enter: 'Enter', // MISSING + shift: 'Shift', // MISSING + ctrl: 'Ctrl', // MISSING + alt: 'Alt', // MISSING + pause: 'Pause', // MISSING + capslock: 'Caps Lock', // MISSING + escape: 'Escape', // MISSING + pageUp: 'Page Up', // MISSING + pageDown: 'Page Down', // MISSING + end: 'End', // MISSING + home: 'Home', // MISSING + leftArrow: 'Left Arrow', // MISSING + upArrow: 'Up Arrow', // MISSING + rightArrow: 'Right Arrow', // MISSING + downArrow: 'Down Arrow', // MISSING + insert: 'Insert', // MISSING + 'delete': 'Delete', // MISSING + leftWindowKey: 'Left Windows key', // MISSING + rightWindowKey: 'Right Windows key', // MISSING + selectKey: 'Select key', // MISSING + numpad0: 'Numpad 0', // MISSING + numpad1: 'Numpad 1', // MISSING + numpad2: 'Numpad 2', // MISSING + numpad3: 'Numpad 3', // MISSING + numpad4: 'Numpad 4', // MISSING + numpad5: 'Numpad 5', // MISSING + numpad6: 'Numpad 6', // MISSING + numpad7: 'Numpad 7', // MISSING + numpad8: 'Numpad 8', // MISSING + numpad9: 'Numpad 9', // MISSING + multiply: 'Multiply', // MISSING + add: 'Add', // MISSING + subtract: 'Subtract', // MISSING + decimalPoint: 'Decimal Point', // MISSING + divide: 'Divide', // MISSING + f1: 'F1', // MISSING + f2: 'F2', // MISSING + f3: 'F3', // MISSING + f4: 'F4', // MISSING + f5: 'F5', // MISSING + f6: 'F6', // MISSING + f7: 'F7', // MISSING + f8: 'F8', // MISSING + f9: 'F9', // MISSING + f10: 'F10', // MISSING + f11: 'F11', // MISSING + f12: 'F12', // MISSING + numLock: 'Num Lock', // MISSING + scrollLock: 'Scroll Lock', // MISSING + semiColon: 'Semicolon', // MISSING + equalSign: 'Equal Sign', // MISSING + comma: 'Comma', // MISSING + dash: 'Dash', // MISSING + period: 'Period', // MISSING + forwardSlash: 'Forward Slash', // MISSING + graveAccent: 'Grave Accent', // MISSING + openBracket: 'Open Bracket', // MISSING + backSlash: 'Backslash', // MISSING + closeBracket: 'Close Bracket', // MISSING + singleQuote: 'Single Quote' // MISSING +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/tr.js b/sources/plugins/a11yhelp/dialogs/lang/tr.js new file mode 100644 index 00000000..ce080eda --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/tr.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'tr', { + title: 'Erişilebilirlik Talimatları', + contents: 'Yardım içeriği. Bu pencereyi kapatmak için ESC tuşuna basın.', + legend: [ + { + name: 'Genel', + items: [ + { + name: 'Düzenleyici Araç Çubuğu', + legend: 'Araç çubuğunda gezinmek için ${toolbarFocus} basın. TAB ve SHIFT+TAB ile önceki ve sonraki araç çubuğu grubuna taşıyın. SAĞ OK veya SOL OK ile önceki ve sonraki bir araç çubuğu düğmesini hareket ettirin. SPACE tuşuna basın veya araç çubuğu düğmesini etkinleştirmek için ENTER tuşna basın.' + }, + + { + name: 'Diyalog Düzenleyici', + legend: + 'Dialog penceresi içinde, sonraki iletişim alanına gitmek için SEKME tuşuna basın, önceki alana geçmek için SHIFT + TAB tuşuna basın, pencereyi göndermek için ENTER tuşuna basın, dialog penceresini iptal etmek için ESC tuşuna basın. Birden çok sekme sayfaları olan diyalogların, sekme listesine gitmek için ALT + F10 tuşlarına basın. Sonra TAB veya SAĞ OK sonraki sekmeye taşıyın. SHIFT + TAB veya SOL OK ile önceki sekmeye geçin. Sekme sayfayı seçmek için SPACE veya ENTER tuşuna basın.' + }, + + { + name: 'İçerik Menü Editörü', + legend: 'İçerik menüsünü açmak için ${contextMenu} veya UYGULAMA TUŞU\'na basın. Daha sonra SEKME veya AŞAĞI OK ile bir sonraki menü seçeneği taşıyın. SHIFT + TAB veya YUKARI OK ile önceki seçeneğe gider. Menü seçeneğini seçmek için SPACE veya ENTER tuşuna basın. Seçili seçeneğin alt menüsünü SPACE ya da ENTER veya SAĞ OK açın. Üst menü öğesini geçmek için ESC veya SOL OK ile geri dönün. ESC ile bağlam menüsünü kapatın.' + }, + + { + name: 'Liste Kutusu Editörü', + legend: 'Liste kutusu içinde, bir sonraki liste öğesine SEKME VEYA AŞAĞI OK ile taşıyın. SHIFT+TAB veya YUKARI önceki liste öğesi taşıyın. Liste seçeneği seçmek için SPACE veya ENTER tuşuna basın. Liste kutusunu kapatmak için ESC tuşuna basın.' + }, + + { + name: 'Element Yol Çubuğu Editörü', + legend: 'Elementlerin yol çubuğunda gezinmek için ${ElementsPathFocus} basın. SEKME veya SAĞ OK ile sonraki element düğmesine taşıyın. SHIFT+TAB veya SOL OK önceki düğmeye hareket ettirin. Editör içindeki elementi seçmek için ENTER veya SPACE tuşuna basın.' + } + ] + }, + { + name: 'Komutlar', + items: [ + { + name: 'Komutu geri al', + legend: '$(undo)\'ya basın' + }, + { + name: 'Komutu geri al', + legend: '${redo} basın' + }, + { + name: ' Kalın komut', + legend: '${bold} basın' + }, + { + name: ' İtalik komutu', + legend: '${italic} basın' + }, + { + name: ' Alttan çizgi komutu', + legend: '${underline} basın' + }, + { + name: ' Bağlantı komutu', + legend: '${link} basın' + }, + { + name: ' Araç çubuğu Toplama komutu', + legend: '${toolbarCollapse} basın' + }, + { + name: 'Önceki komut alanına odaklan', + legend: 'Düzeltme imleçinden önce, en yakın uzaktaki alana erişmek için ${accessPreviousSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın.' + }, + { + name: 'Sonraki komut alanına odaklan', + legend: 'Düzeltme imleçinden sonra, en yakın uzaktaki alana erişmek için ${accessNextSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın.' + }, + { + name: 'Erişilebilirlik Yardımı', + legend: '${a11yHelp}\'e basın' + } + ] + } + ], + backspace: 'Silme', + tab: 'Sekme tuşu', + enter: 'Gir tuşu', + shift: '"Shift" Kaydırma tuşu', + ctrl: '"Ctrl" Kontrol tuşu', + alt: '"Alt" Anahtar tuşu', + pause: 'Durdurma tuşu', + capslock: 'Büyük harf tuşu', + escape: 'Vazgeç tuşu', + pageUp: 'Sayfa Yukarı', + pageDown: 'Sayfa Aşağı', + end: 'Sona', + home: 'En başa', + leftArrow: 'Sol ok', + upArrow: 'Yukarı ok', + rightArrow: 'Sağ ok', + downArrow: 'Aşağı ok', + insert: 'Araya gir', + 'delete': 'Silme', + leftWindowKey: 'Sol windows tuşu', + rightWindowKey: 'Sağ windows tuşu', + selectKey: 'Seçme tuşu', + numpad0: 'Nümerik 0', + numpad1: 'Nümerik 1', + numpad2: 'Nümerik 2', + numpad3: 'Nümerik 3', + numpad4: 'Nümerik 4', + numpad5: 'Nümerik 5', + numpad6: 'Nümerik 6', + numpad7: 'Nümerik 7', + numpad8: 'Nümerik 8', + numpad9: 'Nümerik 9', + multiply: 'Çarpma', + add: 'Toplama', + subtract: 'Çıkarma', + decimalPoint: 'Ondalık işareti', + divide: 'Bölme', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lk', + scrollLock: 'Scr Lk', + semiColon: 'Noktalı virgül', + equalSign: 'Eşittir', + comma: 'Virgül', + dash: 'Eksi', + period: 'Nokta', + forwardSlash: 'İleri eğik çizgi', + graveAccent: 'Üst tırnak', + openBracket: 'Parantez aç', + backSlash: 'Ters eğik çizgi', + closeBracket: 'Parantez kapa', + singleQuote: 'Tek tırnak' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/tt.js b/sources/plugins/a11yhelp/dialogs/lang/tt.js new file mode 100644 index 00000000..e59845ea --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/tt.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'tt', { + title: 'Accessibility Instructions', // MISSING + contents: 'Help Contents. To close this dialog press ESC.', // MISSING + legend: [ + { + name: 'Гомуми', + items: [ + { + name: 'Editor Toolbar', // MISSING + 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 + }, + + { + name: 'Editor Dialog', // MISSING + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Editor Context Menu', // MISSING + 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 + }, + + { + name: 'Editor List Box', // MISSING + 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 + }, + + { + name: 'Editor Element Path Bar', // MISSING + 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 + } + ] + }, + { + name: 'Командалар', + items: [ + { + name: 'Кайтару', + legend: '${undo} басыгыз' + }, + { + name: 'Кабатлау', + legend: '${redo} басыгыз' + }, + { + name: 'Калын', + legend: '${bold} басыгыз' + }, + { + name: 'Курсив', + legend: '${italic} басыгыз' + }, + { + name: 'Астына сызылган', + legend: '${underline} басыгыз' + }, + { + name: 'Сылталама', + legend: '${link} басыгыз' + }, + { + name: ' Toolbar Collapse command', // MISSING + legend: '${toolbarCollapse} басыгыз' + }, + { + name: ' Access previous focus space command', // MISSING + 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 + }, + { + name: ' Access next focus space command', // MISSING + 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 + }, + { + name: ' Accessibility Help', // MISSING + legend: '${a11yHelp} басыгыз' + } + ] + } + ], + backspace: 'Кайтару', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Тыныш', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Сул якка ук', + upArrow: 'Өскә таба ук', + rightArrow: 'Уң якка ук', + downArrow: 'Аска таба ук', + insert: 'Өстәү', + 'delete': 'Бетерү', + leftWindowKey: 'Сул Windows төймəсе', + rightWindowKey: 'Уң Windows төймəсе', + selectKey: 'Select төймəсе', + numpad0: 'Numpad 0', + numpad1: 'Numpad 1', + numpad2: 'Numpad 2', + numpad3: 'Numpad 3', + numpad4: 'Numpad 4', + numpad5: 'Numpad 5', + numpad6: 'Numpad 6', + numpad7: 'Numpad 7', + numpad8: 'Numpad 8', + numpad9: 'Numpad 9', + multiply: 'Тапкырлау', + add: 'Кушу', + subtract: 'Алу', + decimalPoint: 'Унарлы нокта', + divide: 'Бүлү', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Нокталы өтер', + equalSign: 'Тигезлек билгесе', + comma: 'Өтер', + dash: 'Сызык', + period: 'Дәрәҗә', + forwardSlash: 'Кыек сызык', + graveAccent: 'Гравис', + openBracket: 'Җәя ачу', + backSlash: 'Кире кыек сызык', + closeBracket: 'Җәя ябу', + singleQuote: 'Бер иңле куштырнаклар' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/ug.js b/sources/plugins/a11yhelp/dialogs/lang/ug.js new file mode 100644 index 00000000..1852daf5 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ug.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'ug', { + title: 'قوشۇمچە چۈشەندۈرۈش', + contents: 'ياردەم مەزمۇنى. بۇ سۆزلەشكۈنى ياپماقچى بولسىڭىز ESC نى بېسىڭ.', + legend: [ + { + name: 'ئادەتتىكى', + items: [ + { + name: 'قورال بالداق تەھرىر', + legend: '${toolbarFocus} بېسىلسا قورال بالداققا يېتەكلەيدۇ، TAB ياكى SHIFT+TAB ئارقىلىق قورال بالداق گۇرۇپپىسى تاللىنىدۇ، ئوڭ سول يا ئوقتا توپچا تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تاللانغان توپچىنى قوللىنىدۇ.' + }, + + { + name: 'تەھرىرلىگۈچ سۆزلەشكۈسى', + legend: + 'سۆزلەشكۈدە TAB كۇنۇپكىسىدا كېيىنكى سۆز بۆلىكىگە يۆتكىلىدۇ، SHIFT+TAB بىرىكمە كۇنۇپكىسىدا ئالدىنقى سۆز بۆلىكىگە يۆتكىلىدۇ، ENTER كۇنۇپكىسىدا سۆزلەشكۈنى تاپشۇرىدۇ، ESC كۇنۇپكىسى سۆزلەشكۈدىن ۋاز كېچىدۇ. كۆپ بەتكۈچلۈك سۆزلەشكۈگە نىسبەتەن، ALT+F10 دا بەتكۈچ تىزىمىغا يۆتكەيدۇ. ئاندىن TAB كۇنۇپكىسى ياكى ئوڭ يا ئوق كۇنۇپكىسى كېيىنكى بەتكۈچكە يۆتكەيدۇ؛SHIFT+ TAB كۇنۇپكىسى ياكى سول يا ئوق كۇنۇپكىسى ئالدىنقى بەتكۈچكە يۆتكەيدۇ. بوشلۇق كۇنۇپكىسى ياكى ENTER كۇنۇپكىسى بەتكۈچنى تاللايدۇ.' + }, + + { + name: 'تەھرىرلىگۈچ تىل مۇھىت تىزىملىكى', + legend: '${contextMenu} ياكى ئەپ كۇنۇپكىسىدا تىل مۇھىت تىزىملىكىنى ئاچىدۇ. ئاندىن TAB ياكى ئاستى يا ئوق كۇنۇپكىسىدا كېيىنكى تىزىملىك تۈرىگە يۆتكەيدۇ؛ SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسىدا ئالدىنقى تىزىملىك تۈرىگە يۆتكەيدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىملىك تۈرىنى تاللايدۇ. بوشلۇق، ENTER ياكى ئوڭ يا ئوق كۇنۇپكىسىدا تارماق تىزىملىكنى ئاچىدۇ. قايتىش تىزىملىكىگە ESC ياكى سول يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ESC كۇنۇپكىسىدا تىل مۇھىت تىزىملىكى تاقىلىدۇ.' + }, + + { + name: 'تەھرىرلىگۈچ تىزىمى', + legend: 'تىزىم قۇتىسىدا، كېيىنكى تىزىم تۈرىگە يۆتكەشتە TAB ياكى ئاستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ئالدىنقى تىزىم تۈرىگە يۆتكەشتە SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىم تۈرىنى تاللايدۇ.ESC كۇنۇپكىسىدا تىزىم قۇتىسىنى يىغىدۇ.' + }, + + { + name: 'تەھرىرلىگۈچ ئېلېمېنت يول بالداق', + legend: '${elementsPathFocus} بېسىلسا ئېلېمېنت يول بالداققا يېتەكلەيدۇ، TAB ياكى ئوڭ يا ئوقتا كېيىنكى ئېلېمېنت تاللىنىدۇ، SHIFT+TAB ياكى سول يا ئوقتا ئالدىنقى ئېلېمېنت تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تەھرىرلىگۈچتىكى ئېلېمېنت تاللىنىدۇ.' + } + ] + }, + { + name: 'بۇيرۇق', + items: [ + { + name: 'بۇيرۇقتىن يېنىۋال', + legend: '${undo} نى بېسىڭ' + }, + { + name: 'قايتىلاش بۇيرۇقى', + legend: '${redo} نى بېسىڭ' + }, + { + name: 'توملىتىش بۇيرۇقى', + legend: '${bold} نى بېسىڭ' + }, + { + name: 'يانتۇ بۇيرۇقى', + legend: '${italic} نى بېسىڭ' + }, + { + name: 'ئاستى سىزىق بۇيرۇقى', + legend: '${underline} نى بېسىڭ' + }, + { + name: 'ئۇلانما بۇيرۇقى', + legend: '${link} نى بېسىڭ' + }, + { + name: 'قورال بالداق قاتلاش بۇيرۇقى', + legend: '${toolbarCollapse} نى بېسىڭ' + }, + { + name: 'ئالدىنقى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق', + legend: '${accessPreviousSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ ئالدىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ.' + }, + { + name: 'كېيىنكى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق', + legend: '${accessNextSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ كەينىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ.' + }, + { + name: 'توسالغۇسىز لايىھە چۈشەندۈرۈشى', + legend: '${a11yHelp} نى بېسىڭ' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'سول يا ئوق', + upArrow: 'ئۈستى يا ئوق', + rightArrow: 'ئوڭ يا ئوق', + downArrow: 'ئاستى يا ئوق', + insert: 'قىستۇر', + 'delete': 'ئۆچۈر', + leftWindowKey: 'سول Windows كۇنۇپكىسى', + rightWindowKey: 'ئوڭ Windows كۇنۇپكىسى', + selectKey: 'تاللاش كۇنۇپكىسى', + numpad0: 'سان تاختا 0', + numpad1: 'سان تاختا 1', + numpad2: 'سان تاختا 2', + numpad3: 'سان تاختا 3', + numpad4: 'سان تاختا 4', + numpad5: 'سان تاختا 5', + numpad6: 'سان تاختا 6', + numpad7: 'سان تاختا 7', + numpad8: 'سان تاختا 8', + numpad9: 'سان تاختا 9', + multiply: 'يۇلتۇز كۇنۇپكىسى', + add: 'قوشۇش', + subtract: 'ئېلىش', + decimalPoint: 'كەسىر چېكىت', + divide: 'بۆلۈش', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'سان قۇلۇپ كۇنۇپكىسى', + scrollLock: 'سۈرگۈچ قۇلۇپ كۇنۇپكىسى', + semiColon: 'چېكىتلىك پەش', + equalSign: 'تەڭلىك بەلگىسى', + comma: 'پەش', + dash: 'سىزىقچە', + period: 'چېكىت', + forwardSlash: 'سولغا يانتۇ سىزىق', + graveAccent: 'ئۇرغۇ بەلگىسى', + openBracket: 'ئېچىلغان تىرناق', + backSlash: 'ئوڭغا يانتۇ سىزىق', + closeBracket: 'يېپىلغان تىرناق', + singleQuote: 'يالاڭ پەش' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/uk.js b/sources/plugins/a11yhelp/dialogs/lang/uk.js new file mode 100644 index 00000000..a290f296 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/uk.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'uk', { + title: 'Спеціальні Інструкції', + contents: 'Довідка. Натисніть ESC і вона зникне.', + legend: [ + { + name: 'Основне', + items: [ + { + name: 'Панель Редактора', + legend: 'Натисніть ${toolbarFocus} для переходу до панелі інструментів. Для переміщення між групами панелі інструментів використовуйте TAB і SHIFT+TAB. Для переміщення між кнопками панелі іструментів використовуйте кнопки СТРІЛКА ВПРАВО або ВЛІВО. Натисніть ПРОПУСК або ENTER для запуску кнопки панелі інструментів.' + }, + + { + name: 'Діалог Редактора', + legend: + 'Усередині діалогу, натисніть TAB щоб перейти до наступного елементу діалогу, натисніть SHIFT+TAB щоб перейти до попереднього елемента діалогу, натисніть ENTER щоб відправити діалог, натисніть ESC щоб скасувати діалог. Коли діалогове вікно має декілька вкладок, отримати доступ до панелі вкладок як частині діалогу можна натисканням або поєднання ALT+F10 або TAB, при цьому активні елементи діалогу будуть перебиратися з урахуванням порядку табуляції. При активній панелі вкладок, перехід до наступної або попередньої вкладці здійснюється натисканням стрілки "ВПРАВО" або стрілки "ВЛЕВО" відповідно.' + }, + + { + name: 'Контекстне Меню Редактора', + legend: 'Press ${contextMenu} or APPLICATION KEY to open context-menu. Потім перейдіть до наступного пункту меню за допомогою TAB або СТРІЛКИ ВНИЗ. Натисніть ПРОПУСК або ENTER для вибору параметру меню. Відкрийте підменю поточного параметру, натиснувши ПРОПУСК або ENTER або СТРІЛКУ ВПРАВО. Перейдіть до батьківського елемента меню, натиснувши ESC або СТРІЛКУ ВЛІВО. Закрийте контекстне меню, натиснувши ESC.' + }, + + { + name: 'Скринька Списків Редактора', + legend: 'Усередині списку, перехід до наступного пункту списку виконується клавішею TAB або СТРІЛКА ВНИЗ. Перехід до попереднього елемента списку клавішею SHIFT+TAB або СТРІЛКА ВГОРУ. Натисніть ПРОПУСК або ENTER, щоб вибрати параметр списку. Натисніть клавішу ESC, щоб закрити список.' + }, + + { + name: 'Шлях до елемента редактора', + legend: 'Натисніть ${elementsPathFocus} для навігації між елементами панелі. Перейдіть до наступного елемента кнопкою TAB або СТРІЛКА ВПРАВО. Перейдіть до попереднього елемента кнопкою SHIFT+TAB або СТРІЛКА ВЛІВО. Натисніть ПРОПУСК або ENTER для вибору елемента в редакторі.' + } + ] + }, + { + name: 'Команди', + items: [ + { + name: 'Відмінити команду', + legend: 'Натисніть ${undo}' + }, + { + name: 'Повторити', + legend: 'Натисніть ${redo}' + }, + { + name: 'Жирний', + legend: 'Натисніть ${bold}' + }, + { + name: 'Курсив', + legend: 'Натисніть ${italic}' + }, + { + name: 'Підкреслений', + legend: 'Натисніть ${underline}' + }, + { + name: 'Посилання', + legend: 'Натисніть ${link}' + }, + { + name: 'Згорнути панель інструментів', + legend: 'Натисніть ${toolbarCollapse}' + }, + { + name: 'Доступ до попереднього місця фокусування', + legend: 'Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування перед кареткою, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування.' + }, + { + name: 'Доступ до наступного місця фокусування', + legend: 'Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування після каретки, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування.' + }, + { + name: 'Допомога з доступності', + legend: 'Натисніть ${a11yHelp}' + } + ] + } + ], + backspace: 'Backspace', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Esc', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: 'Ліва стрілка', + upArrow: 'Стрілка вгору', + rightArrow: 'Права стрілка', + downArrow: 'Стрілка вниз', + insert: 'Вставити', + 'delete': 'Видалити', + leftWindowKey: 'Ліва клавіша Windows', + rightWindowKey: 'Права клавіша Windows', + selectKey: 'Виберіть клавішу', + numpad0: 'Numpad 0', + numpad1: 'Numpad 1', + numpad2: 'Numpad 2', + numpad3: 'Numpad 3', + numpad4: 'Numpad 4', + numpad5: 'Numpad 5', + numpad6: 'Numpad 6', + numpad7: 'Numpad 7', + numpad8: 'Numpad 8', + numpad9: 'Numpad 9', + multiply: 'Множення', + add: 'Додати', + subtract: 'Віднімання', + decimalPoint: 'Десяткова кома', + divide: 'Ділення', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Крапка з комою', + equalSign: 'Знак рівності', + comma: 'Кома', + dash: 'Тире', + period: 'Період', + forwardSlash: 'Коса риска', + graveAccent: 'Гравіс', + openBracket: 'Відкрити дужку', + backSlash: 'Зворотна коса риска', + closeBracket: 'Закрити дужку', + singleQuote: 'Одинарні лапки' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/vi.js b/sources/plugins/a11yhelp/dialogs/lang/vi.js new file mode 100644 index 00000000..91edc02d --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/vi.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'vi', { + title: 'Hướng dẫn trợ năng', + contents: 'Nội dung Hỗ trợ. Nhấn ESC để đóng hộp thoại.', + legend: [ + { + name: 'Chung', + items: [ + { + name: 'Thanh công cụ soạn thảo', + legend: 'Nhấn ${toolbarFocus} để điều hướng đến thanh công cụ. Nhấn TAB và SHIFT+TAB để chuyển đến nhóm thanh công cụ khác. Nhấn MŨI TÊN PHẢI hoặc MŨI TÊN TRÁI để chuyển sang nút khác trên thanh công cụ. Nhấn PHÍM CÁCH hoặc ENTER để kích hoạt nút trên thanh công cụ.' + }, + + { + name: 'Hộp thoại Biên t', + legend: + 'Inside a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING + }, + + { + name: 'Trình đơn Ngữ cảnh cBộ soạn thảo', + legend: 'Nhấn ${contextMenu} hoặc PHÍM ỨNG DỤNG để mở thực đơn ngữ cảnh. Sau đó nhấn TAB hoặc MŨI TÊN XUỐNG để di chuyển đến tuỳ chọn tiếp theo của thực đơn. Nhấn SHIFT+TAB hoặc MŨI TÊN LÊN để quay lại tuỳ chọn trước. Nhấn DẤU CÁCH hoặc ENTER để chọn tuỳ chọn của thực đơn. Nhấn DẤU CÁCH hoặc ENTER hoặc MŨI TÊN SANG PHẢI để mở thực đơn con của tuỳ chọn hiện tại. Nhấn ESC hoặc MŨI TÊN SANG TRÁI để quay trở lại thực đơn gốc. Nhấn ESC để đóng thực đơn ngữ cảnh.' + }, + + { + name: 'Hộp danh sách trình biên tập', + legend: 'Trong một danh sách chọn, di chuyển đối tượng tiếp theo với phím TAB hoặc phím mũi tên hướng xuống. Di chuyển đến đối tượng trước đó bằng cách nhấn tổ hợp phím SHIFT+TAB hoặc mũi tên hướng lên. Phím khoảng cách hoặc phím ENTER để chọn các tùy chọn trong danh sách. Nhấn phím ESC để đóng lại danh sách chọn.' + }, + + { + name: 'Thanh đường dẫn các đối tượng', + legend: 'Nhấn ${elementsPathFocus} để điều hướng các đối tượng trong thanh đường dẫn. Di chuyển đến đối tượng tiếp theo bằng phím TAB hoặc phím mũi tên bên phải. Di chuyển đến đối tượng trước đó bằng tổ hợp phím SHIFT+TAB hoặc phím mũi tên bên trái. Nhấn phím khoảng cách hoặc ENTER để chọn đối tượng trong trình soạn thảo.' + } + ] + }, + { + name: 'Lệnh', + items: [ + { + name: 'Làm lại lện', + legend: 'Ấn ${undo}' + }, + { + name: 'Làm lại lệnh', + legend: 'Ấn ${redo}' + }, + { + name: 'Lệnh in đậm', + legend: 'Ấn ${bold}' + }, + { + name: 'Lệnh in nghiêng', + legend: 'Ấn ${italic}' + }, + { + name: 'Lệnh gạch dưới', + legend: 'Ấn ${underline}' + }, + { + name: 'Lệnh liên kết', + legend: 'Nhấn ${link}' + }, + { + name: 'Lệnh hiển thị thanh công cụ', + legend: 'Nhấn${toolbarCollapse}' + }, + { + name: 'Truy cập đến lệnh tập trung vào khoảng cách trước đó', + legend: 'Ấn ${accessPreviousSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách.' + }, + { + name: 'Truy cập phần đối tượng lệnh khoảng trống', + legend: 'Ấn ${accessNextSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách.' + }, + { + name: 'Trợ giúp liên quan', + legend: 'Nhấn ${a11yHelp}' + } + ] + } + ], + backspace: 'Phím Backspace', + tab: 'Phím Tab', + enter: 'Phím Tab', + shift: 'Phím Shift', + ctrl: 'Phím Ctrl', + alt: 'Phím Alt', + pause: 'Phím Pause', + capslock: 'Phím Caps Lock', + escape: 'Phím Escape', + pageUp: 'Phím Page Up', + pageDown: 'Phím Page Down', + end: 'Phím End', + home: 'Phím Home', + leftArrow: 'Phím Left Arrow', + upArrow: 'Phím Up Arrow', + rightArrow: 'Phím Right Arrow', + downArrow: 'Phím Down Arrow', + insert: 'Chèn', + 'delete': 'Xóa', + leftWindowKey: 'Phím Left Windows', + rightWindowKey: 'Phím Right Windows ', + selectKey: 'Chọn phím', + numpad0: 'Phím 0', + numpad1: 'Phím 1', + numpad2: 'Phím 2', + numpad3: 'Phím 3', + numpad4: 'Phím 4', + numpad5: 'Phím 5', + numpad6: 'Phím 6', + numpad7: 'Phím 7', + numpad8: 'Phím 8', + numpad9: 'Phím 9', + multiply: 'Nhân', + add: 'Thêm', + subtract: 'Trừ', + decimalPoint: 'Điểm số thập phân', + divide: 'Chia', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: 'Dấu chấm phẩy', + equalSign: 'Đăng nhập bằng', + comma: 'Dấu phẩy', + dash: 'Dấu gạch ngang', + period: 'Phím .', + forwardSlash: 'Phím /', + graveAccent: 'Phím `', + openBracket: 'Open Bracket', + backSlash: 'Dấu gạch chéo ngược', + closeBracket: 'Gần giá đỡ', + singleQuote: 'Trích dẫn' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/zh-cn.js b/sources/plugins/a11yhelp/dialogs/lang/zh-cn.js new file mode 100644 index 00000000..829968ff --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/zh-cn.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'zh-cn', { + title: '辅助功能说明', + contents: '帮助内容。要关闭此对话框请按 ESC 键。', + legend: [ + { + name: '常规', + items: [ + { + name: '编辑器工具栏', + legend: '按 ${toolbarFocus} 切换到工具栏,使用 TAB 键和 SHIFT+TAB 组合键移动到上一个和下一个工具栏组。使用左右箭头键移动到上一个或下一个工具栏按钮。按空格键或回车键以选中工具栏按钮。' + }, + + { + name: '编辑器对话框', + legend: + '在对话框内,按 TAB 键移动到下一个字段,按 SHIFT + TAB 组合键移动到上一个字段,按 ENTER 键提交对话框,按 ESC 键取消对话框。对于有多选项卡的对话框,可以按 ALT + F10 直接切换到或者按 TAB 键逐步移到选项卡列表,当焦点移到选项卡列表时可以用左右箭头键来移动到前后的选项卡。' + }, + + { + name: '编辑器上下文菜单', + legend: '用 ${contextMenu} 或者“应用程序键”打开上下文菜单。然后用 TAB 键或者下箭头键来移动到下一个菜单项;SHIFT + TAB 组合键或者上箭头键移动到上一个菜单项。用 SPACE 键或者 ENTER 键选择菜单项。用 SPACE 键,ENTER 键或者右箭头键打开子菜单。返回菜单用 ESC 键或者左箭头键。用 ESC 键关闭上下文菜单。' + }, + + { + name: '编辑器列表框', + legend: '在列表框中,移到下一列表项用 TAB 键或者下箭头键。移到上一列表项用SHIFT+TAB 组合键或者上箭头键,用 SPACE 键或者 ENTER 键选择列表项。用 ESC 键收起列表框。' + }, + + { + name: '编辑器元素路径栏', + legend: '按 ${elementsPathFocus} 以导航到元素路径栏,使用 TAB 键或右箭头键选择下一个元素,使用 SHIFT+TAB 组合键或左箭头键选择上一个元素,按空格键或回车键以选定编辑器里的元素。' + } + ] + }, + { + name: '命令', + items: [ + { + name: ' 撤消命令', + legend: '按 ${undo}' + }, + { + name: ' 重做命令', + legend: '按 ${redo}' + }, + { + name: ' 加粗命令', + legend: '按 ${bold}' + }, + { + name: ' 倾斜命令', + legend: '按 ${italic}' + }, + { + name: ' 下划线命令', + legend: '按 ${underline}' + }, + { + name: ' 链接命令', + legend: '按 ${link}' + }, + { + name: ' 工具栏折叠命令', + legend: '按 ${toolbarCollapse}' + }, + { + name: '访问前一个焦点区域的命令', + legend: '按 ${accessPreviousSpace} 访问^符号前最近的不可访问的焦点区域,例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。' + }, + { + name: '访问下一个焦点区域命令', + legend: '按 ${accessNextSpace} 以访问^符号后最近的不可访问的焦点区域。例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。' + }, + { + name: '辅助功能帮助', + legend: '按 ${a11yHelp}' + } + ] + } + ], + backspace: '退格键', + tab: 'Tab 键', + enter: '回车键', + shift: 'Shift 键', + ctrl: 'Ctrl 键', + alt: 'Alt 键', + pause: '暂停键', + capslock: '大写锁定键', + escape: 'Esc 键', + pageUp: '上翻页键', + pageDown: '下翻页键', + end: '行尾键', + home: '行首键', + leftArrow: '向左箭头键', + upArrow: '向上箭头键', + rightArrow: '向右箭头键', + downArrow: '向下箭头键', + insert: '插入键', + 'delete': '删除键', + leftWindowKey: '左 WIN 键', + rightWindowKey: '右 WIN 键', + selectKey: '选择键', + numpad0: '小键盘 0 键', + numpad1: '小键盘 1 键', + numpad2: '小键盘 2 键', + numpad3: '小键盘 3 键', + numpad4: '小键盘 4 键', + numpad5: '小键盘 5 键', + numpad6: '小键盘 6 键', + numpad7: '小键盘 7 键', + numpad8: '小键盘 8 键', + numpad9: '小键盘 9 键', + multiply: '星号键', + add: '加号键', + subtract: '减号键', + decimalPoint: '小数点键', + divide: '除号键', + f1: 'F1 键', + f2: 'F2 键', + f3: 'F3 键', + f4: 'F4 键', + f5: 'F5 键', + f6: 'F6 键', + f7: 'F7 键', + f8: 'F8 键', + f9: 'F9 键', + f10: 'F10 键', + f11: 'F11 键', + f12: 'F12 键', + numLock: '数字锁定键', + scrollLock: '滚动锁定键', + semiColon: '分号键', + equalSign: '等号键', + comma: '逗号键', + dash: '短划线键', + period: '句号键', + forwardSlash: '斜杠键', + graveAccent: '重音符键', + openBracket: '左中括号键', + backSlash: '反斜杠键', + closeBracket: '右中括号键', + singleQuote: '单引号键' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/zh.js b/sources/plugins/a11yhelp/dialogs/lang/zh.js new file mode 100644 index 00000000..70061d33 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/zh.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'zh', { + title: '輔助工具指南', + contents: '說明內容。若要關閉此對話框請按「ESC」。', + legend: [ + { + name: '一般', + items: [ + { + name: '編輯器工具列', + legend: '請按 ${toolbarFocus} 以導覽到工具列。利用 TAB 或 SHIFT+TAB 以便移動到下一個及前一個工具列群組。利用右方向鍵或左方向鍵以便移動到下一個及上一個工具列按鈕。按下空白鍵或 ENTER 鍵啟用工具列按鈕。' + }, + + { + name: '編輯器對話方塊', + legend: + '在對話框中,按下 TAB 鍵以導覽到下一個對話框元素,按下 SHIFT+TAB 以移動到上一個對話框元素,按下 ENTER 以遞交對話框,按下 ESC 以取消對話框。當對話框有多個分頁時,可以使用 ALT+F10 或是在對話框分頁順序中的一部份按下 TAB 以使用分頁列表。焦點在分頁列表上時,分別使用右方向鍵及左方向鍵移動到下一個及上一個分頁。' + }, + + { + name: '編輯器內容功能表', + legend: '請按下「${contextMenu}」或是「應用程式鍵」以開啟內容選單。以「TAB」或是「↓」鍵移動到下一個選單選項。以「SHIFT + TAB」或是「↑」鍵移動到上一個選單選項。按下「空白鍵」或是「ENTER」鍵以選取選單選項。以「空白鍵」或「ENTER」或「→」開啟目前選項之子選單。以「ESC」或「←」回到父選單。以「ESC」鍵關閉內容選單」。' + }, + + { + name: '編輯器清單方塊', + legend: '在清單方塊中,使用 TAB 或下方向鍵移動到下一個列表項目。使用 SHIFT+TAB 或上方向鍵移動到上一個列表項目。按下空白鍵或 ENTER 以選取列表選項。按下 ESC 以關閉清單方塊。' + }, + + { + name: '編輯器元件路徑工具列', + legend: '請按 ${elementsPathFocus} 以瀏覽元素路徑列。利用 TAB 或右方向鍵以便移動到下一個元素按鈕。利用 SHIFT 或左方向鍵以便移動到上一個按鈕。按下空白鍵或 ENTER 鍵來選取在編輯器中的元素。' + } + ] + }, + { + name: '命令', + items: [ + { + name: '復原命令', + legend: '請按下「${undo}」' + }, + { + name: '重複命令', + legend: '請按下「 ${redo}」' + }, + { + name: '粗體命令', + legend: '請按下「${bold}」' + }, + { + name: '斜體', + legend: '請按下「${italic}」' + }, + { + name: '底線命令', + legend: '請按下「${underline}」' + }, + { + name: '連結', + legend: '請按下「${link}」' + }, + { + name: '隱藏工具列', + legend: '請按下「${toolbarCollapse}」' + }, + { + name: '存取前一個焦點空間命令', + legend: '請按下 ${accessPreviousSpace} 以存取最近但無法靠近之插字符號前的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。' + }, + { + name: '存取下一個焦點空間命令', + legend: '請按下 ${accessNextSpace} 以存取最近但無法靠近之插字符號後的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。' + }, + { + name: '協助工具說明', + legend: '請按下「${a11yHelp}」' + } + ] + } + ], + backspace: '退格鍵', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Pause', + capslock: 'Caps Lock', + escape: 'Esc', + pageUp: 'Page Up', + pageDown: 'Page Down', + end: 'End', + home: 'Home', + leftArrow: '向左箭號', + upArrow: '向上鍵號', + rightArrow: '向右鍵號', + downArrow: '向下鍵號', + insert: '插入', + 'delete': '刪除', + leftWindowKey: '左方 Windows 鍵', + rightWindowKey: '右方 Windows 鍵', + selectKey: '選擇鍵', + numpad0: 'Numpad 0', + numpad1: 'Numpad 1', + numpad2: 'Numpad 2', + numpad3: 'Numpad 3', + numpad4: 'Numpad 4', + numpad5: 'Numpad 5', + numpad6: 'Numpad 6', + numpad7: 'Numpad 7', + numpad8: 'Numpad 8', + numpad9: 'Numpad 9', + multiply: '乘號', + add: '新增', + subtract: '減號', + decimalPoint: '小數點', + divide: '除號', + f1: 'F1', + f2: 'F2', + f3: 'F3', + f4: 'F4', + f5: 'F5', + f6: 'F6', + f7: 'F7', + f8: 'F8', + f9: 'F9', + f10: 'F10', + f11: 'F11', + f12: 'F12', + numLock: 'Num Lock', + scrollLock: 'Scroll Lock', + semiColon: '分號', + equalSign: '等號', + comma: '逗號', + dash: '虛線', + period: '句點', + forwardSlash: '斜線', + graveAccent: '抑音符號', + openBracket: '左方括號', + backSlash: '反斜線', + closeBracket: '右方括號', + singleQuote: '單引號' +} ); diff --git a/sources/plugins/a11yhelp/plugin.js b/sources/plugins/a11yhelp/plugin.js new file mode 100644 index 00000000..0a7807c5 --- /dev/null +++ b/sources/plugins/a11yhelp/plugin.js @@ -0,0 +1,51 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview Plugin definition for the a11yhelp, which provides a dialog + * with accessibility related help. + */ + +( function() { + var pluginName = 'a11yhelp', + commandName = 'a11yHelp'; + + CKEDITOR.plugins.add( pluginName, { + requires: 'dialog', + + // List of available localizations. + // jscs:disable + availableLangs: { af:1,ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de: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 }, + // jscs:enable + + init: function( editor ) { + var plugin = this; + editor.addCommand( commandName, { + exec: function() { + var langCode = editor.langCode; + langCode = + plugin.availableLangs[ langCode ] ? langCode : + plugin.availableLangs[ langCode.replace( /-.*/, '' ) ] ? langCode.replace( /-.*/, '' ) : + 'en'; + + CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( plugin.path + 'dialogs/lang/' + langCode + '.js' ), function() { + editor.lang.a11yhelp = plugin.langEntries[ langCode ]; + editor.openDialog( commandName ); + } ); + }, + modes: { wysiwyg: 1, source: 1 }, + readOnly: 1, + canUndo: false + } ); + + editor.setKeystroke( CKEDITOR.ALT + 48 /*0*/, 'a11yHelp' ); + CKEDITOR.dialog.add( commandName, this.path + 'dialogs/a11yhelp.js' ); + + editor.on( 'ariaEditorHelpLabel', function( evt ) { + evt.data.label = editor.lang.common.editorHelp; + } ); + } + } ); +} )(); diff --git a/sources/plugins/about/dialogs/about.js b/sources/plugins/about/dialogs/about.js new file mode 100644 index 00000000..600bb3ac --- /dev/null +++ b/sources/plugins/about/dialogs/about.js @@ -0,0 +1,73 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.dialog.add( 'about', function( editor ) { + var lang = editor.lang.about, + imagePath = CKEDITOR.getUrl( CKEDITOR.plugins.get( 'about' ).path + 'dialogs/' + ( CKEDITOR.env.hidpi ? 'hidpi/' : '' ) + 'logo_ckeditor.png' ); + + return { + title: CKEDITOR.env.ie ? lang.dlgTitle : lang.title, + minWidth: 390, + minHeight: 230, + contents: [ { + id: 'tab1', + label: '', + title: '', + expand: true, + padding: 0, + elements: [ + { + type: 'html', + html: '' + + '
' + + '' + + '

' + + 'CKEditor ' + CKEDITOR.version + ' (revision ' + CKEDITOR.revision + ')
' + + 'http://ckeditor.com' + + '

' + + '

' + + lang.help.replace( '$1', '' + lang.userGuide + '' ) + + '

' + + '

' + + lang.moreInfo + '
' + + 'http://ckeditor.com/about/license' + + '

' + + '

' + + lang.copy.replace( '$1', 'CKSource - Frederico Knabben' ) + + '

' + + '
' + } + ] + } ], + buttons: [ CKEDITOR.dialog.cancelButton ] + }; +} ); diff --git a/sources/plugins/about/dialogs/hidpi/logo_ckeditor.png b/sources/plugins/about/dialogs/hidpi/logo_ckeditor.png new file mode 100644 index 00000000..10cc7368 Binary files /dev/null and b/sources/plugins/about/dialogs/hidpi/logo_ckeditor.png differ diff --git a/sources/plugins/about/dialogs/logo_ckeditor.png b/sources/plugins/about/dialogs/logo_ckeditor.png new file mode 100644 index 00000000..f186eb87 Binary files /dev/null and b/sources/plugins/about/dialogs/logo_ckeditor.png differ diff --git a/sources/plugins/about/icons/about.png b/sources/plugins/about/icons/about.png new file mode 100644 index 00000000..a087ac15 Binary files /dev/null and b/sources/plugins/about/icons/about.png differ diff --git a/sources/plugins/about/icons/hidpi/about.png b/sources/plugins/about/icons/hidpi/about.png new file mode 100644 index 00000000..8cc0e9fb Binary files /dev/null and b/sources/plugins/about/icons/hidpi/about.png differ diff --git a/sources/plugins/about/lang/af.js b/sources/plugins/about/lang/af.js new file mode 100644 index 00000000..1c05504b --- /dev/null +++ b/sources/plugins/about/lang/af.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'af', { + copy: 'Kopiereg © $1. Alle regte voorbehou.', + dlgTitle: 'Meer oor CKEditor', + help: 'Slaan $1 na vir hulp.', + moreInfo: 'Vir lisensie-informasie, besoek asb. ons webwerf:', + title: 'Meer oor CKEditor', + userGuide: 'CKEditor Gebruikers gits' +} ); diff --git a/sources/plugins/about/lang/ar.js b/sources/plugins/about/lang/ar.js new file mode 100644 index 00000000..23fdd952 --- /dev/null +++ b/sources/plugins/about/lang/ar.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'ar', { + copy: 'حقوق النشر © $1. جميع الحقوق محفوظة.', + dlgTitle: 'عن CKEditor', + help: 'راجع $1 من أجل المساعدة', + moreInfo: 'للحصول على معلومات الترخيص ، يرجى زيارة موقعنا:', + title: 'عن CKEditor', + userGuide: 'دليل مستخدم CKEditor.' +} ); diff --git a/sources/plugins/about/lang/bg.js b/sources/plugins/about/lang/bg.js new file mode 100644 index 00000000..6d463ad3 --- /dev/null +++ b/sources/plugins/about/lang/bg.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'bg', { + copy: 'Copyright © $1. All rights reserved.', + dlgTitle: 'Относно CKEditor', + help: 'Проверете $1 за помощ.', + moreInfo: 'За лицензионна информация моля посетете сайта ни:', + title: 'Относно CKEditor', + userGuide: 'CKEditor User\'s Guide' +} ); diff --git a/sources/plugins/about/lang/bn.js b/sources/plugins/about/lang/bn.js new file mode 100644 index 00000000..a476261a --- /dev/null +++ b/sources/plugins/about/lang/bn.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'bn', { + copy: 'Copyright © $1. All rights reserved.', // MISSING + dlgTitle: 'About CKEditor', // MISSING + help: 'Check $1 for help.', // MISSING + moreInfo: 'For licensing information please visit our web site:', // MISSING + title: 'About CKEditor', // MISSING + userGuide: 'CKEditor User\'s Guide' // MISSING +} ); diff --git a/sources/plugins/about/lang/bs.js b/sources/plugins/about/lang/bs.js new file mode 100644 index 00000000..88056e1b --- /dev/null +++ b/sources/plugins/about/lang/bs.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'bs', { + copy: 'Copyright © $1. All rights reserved.', // MISSING + dlgTitle: 'About CKEditor', // MISSING + help: 'Check $1 for help.', // MISSING + moreInfo: 'For licensing information please visit our web site:', // MISSING + title: 'About CKEditor', // MISSING + userGuide: 'CKEditor User\'s Guide' +} ); diff --git a/sources/plugins/about/lang/ca.js b/sources/plugins/about/lang/ca.js new file mode 100644 index 00000000..c6685105 --- /dev/null +++ b/sources/plugins/about/lang/ca.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'ca', { + copy: 'Copyright © $1. Tots els drets reservats.', + dlgTitle: 'Quant al CKEditor', + help: 'Premi $1 per obtenir ajuda.', + moreInfo: 'Per informació sobre llicències visiteu el nostre lloc web:', + title: 'Quant al CKEditor', + userGuide: 'Manual d\'usuari de CKEditor' +} ); diff --git a/sources/plugins/about/lang/cs.js b/sources/plugins/about/lang/cs.js new file mode 100644 index 00000000..8a0a4b25 --- /dev/null +++ b/sources/plugins/about/lang/cs.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'cs', { + copy: 'Copyright © $1. All rights reserved.', + dlgTitle: 'O aplikaci CKEditor', + help: 'Prohlédněte si $1 pro nápovědu.', + moreInfo: 'Pro informace o lincenci navštivte naši webovou stránku:', + title: 'O aplikaci CKEditor', + userGuide: 'Uživatelská příručka CKEditor' +} ); diff --git a/sources/plugins/about/lang/cy.js b/sources/plugins/about/lang/cy.js new file mode 100644 index 00000000..a9c1e6d4 --- /dev/null +++ b/sources/plugins/about/lang/cy.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'cy', { + copy: 'Hawlfraint © $1. Cedwir pob hawl.', + dlgTitle: 'Ynghylch CKEditor', + help: 'Gwirio $1 am gymorth.', + moreInfo: 'Am wybodaeth ynghylch trwyddedau, ewch i\'n gwefan:', + title: 'Ynghylch CKEditor', + userGuide: 'Canllawiau Defnyddiwr CKEditor' +} ); diff --git a/sources/plugins/about/lang/da.js b/sources/plugins/about/lang/da.js new file mode 100644 index 00000000..75700f3e --- /dev/null +++ b/sources/plugins/about/lang/da.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'da', { + copy: 'Copyright © $1. Alle rettigheder forbeholdes.', + dlgTitle: 'Om CKEditor', + help: 'Se $1 for at få hjælp.', + moreInfo: 'For informationer omkring licens, se venligst vores hjemmeside (på engelsk):', + title: 'Om CKEditor', + userGuide: 'CKEditor-brugermanual' +} ); diff --git a/sources/plugins/about/lang/de.js b/sources/plugins/about/lang/de.js new file mode 100644 index 00000000..7427c4b7 --- /dev/null +++ b/sources/plugins/about/lang/de.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'de', { + copy: 'Copyright © $1. Alle Rechte vorbehalten.', + dlgTitle: 'Über CKEditor', + help: 'Prüfen Sie $1 für Hilfe.', + moreInfo: 'Für Informationen über unsere Lizenzbestimmungen besuchen sie bitte unsere Webseite:', + title: 'Über CKEditor', + userGuide: 'CKEditor Benutzerhandbuch' +} ); diff --git a/sources/plugins/about/lang/el.js b/sources/plugins/about/lang/el.js new file mode 100644 index 00000000..5d20365d --- /dev/null +++ b/sources/plugins/about/lang/el.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'el', { + copy: 'Πνευματικά δικαιώματα © $1 Με επιφύλαξη παντός δικαιώματος.', + dlgTitle: 'Περί του CKEditor', + help: 'Ελέγξτε τις $1 για βοήθεια.', + moreInfo: 'Για πληροφορίες σχετικές με την άδεια χρήσης, παρακαλούμε επισκεφθείτε την ιστοσελίδα μας:', + title: 'Περί του CKEditor', + userGuide: 'Οδηγίες Χρήστη CKEditor' +} ); diff --git a/sources/plugins/about/lang/en-au.js b/sources/plugins/about/lang/en-au.js new file mode 100644 index 00000000..b473809b --- /dev/null +++ b/sources/plugins/about/lang/en-au.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'en-au', { + copy: 'Copyright © $1. All rights reserved.', + dlgTitle: 'About CKEditor', + help: 'Check $1 for help.', // MISSING + moreInfo: 'For licensing information please visit our web site:', + title: 'About CKEditor', + userGuide: 'CKEditor User\'s Guide' +} ); diff --git a/sources/plugins/about/lang/en-ca.js b/sources/plugins/about/lang/en-ca.js new file mode 100644 index 00000000..d709fc5c --- /dev/null +++ b/sources/plugins/about/lang/en-ca.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'en-ca', { + copy: 'Copyright © $1. All rights reserved.', + dlgTitle: 'About CKEditor', + help: 'Check $1 for help.', // MISSING + moreInfo: 'For licensing information please visit our web site:', + title: 'About CKEditor', + userGuide: 'CKEditor User\'s Guide' +} ); diff --git a/sources/plugins/about/lang/en-gb.js b/sources/plugins/about/lang/en-gb.js new file mode 100644 index 00000000..eb625945 --- /dev/null +++ b/sources/plugins/about/lang/en-gb.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'en-gb', { + copy: 'Copyright © $1. All rights reserved.', + dlgTitle: 'About CKEditor', + help: 'Check $1 for help.', + moreInfo: 'For licensing information please visit our web site:', + title: 'About CKEditor', + userGuide: 'CKEditor User\'s Guide' +} ); diff --git a/sources/plugins/about/lang/en.js b/sources/plugins/about/lang/en.js new file mode 100644 index 00000000..bd8c1045 --- /dev/null +++ b/sources/plugins/about/lang/en.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'en', { + copy: 'Copyright © $1. All rights reserved.', + dlgTitle: 'About CKEditor', + help: 'Check $1 for help.', + moreInfo: 'For licensing information please visit our web site:', + title: 'About CKEditor', + userGuide: 'CKEditor User\'s Guide' +} ); diff --git a/sources/plugins/about/lang/eo.js b/sources/plugins/about/lang/eo.js new file mode 100644 index 00000000..c26535d8 --- /dev/null +++ b/sources/plugins/about/lang/eo.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'eo', { + copy: 'Copyright © $1. Ĉiuj rajtoj rezervitaj.', + dlgTitle: 'Pri CKEditor', + help: 'Kontroli $1 por helpo.', + moreInfo: 'Por informoj pri licenco, bonvolu viziti nian retpaĝaron:', + title: 'Pri CKEditor', + userGuide: 'CKEditor Uzindikoj' +} ); diff --git a/sources/plugins/about/lang/es.js b/sources/plugins/about/lang/es.js new file mode 100644 index 00000000..f350cfce --- /dev/null +++ b/sources/plugins/about/lang/es.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'es', { + copy: 'Copyright © $1. Todos los derechos reservados.', + dlgTitle: 'Acerca de CKEditor', + help: 'Lea la $1 para resolver sus dudas.', + moreInfo: 'Para información de licencia, por favor visite nuestro sitio web:', + title: 'Acerca de CKEditor', + userGuide: 'Guía de usuario de CKEditor' +} ); diff --git a/sources/plugins/about/lang/et.js b/sources/plugins/about/lang/et.js new file mode 100644 index 00000000..21ad65ac --- /dev/null +++ b/sources/plugins/about/lang/et.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'et', { + copy: 'Copyright © $1. Kõik õigused kaitstud.', + dlgTitle: 'CKEditorist', + help: 'Abi jaoks vaata $1.', + moreInfo: 'Litsentsi andmed leiab meie veebilehelt:', + title: 'CKEditorist', + userGuide: 'CKEditori kasutusjuhendit' +} ); diff --git a/sources/plugins/about/lang/eu.js b/sources/plugins/about/lang/eu.js new file mode 100644 index 00000000..e2ed0309 --- /dev/null +++ b/sources/plugins/about/lang/eu.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'eu', { + copy: 'Copyright © $1. Eskubide guztiak erreserbaturik.', + dlgTitle: 'CKEditor-i buruz', + help: 'Begiratu $1 laguntzarako.', + moreInfo: 'Lizentziari buruzko informazioa gure webgunean:', + title: 'CKEditor-i buruz', + userGuide: 'CKEditor-en erabiltzaile-gida' +} ); diff --git a/sources/plugins/about/lang/fa.js b/sources/plugins/about/lang/fa.js new file mode 100644 index 00000000..2b818dbd --- /dev/null +++ b/sources/plugins/about/lang/fa.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'fa', { + copy: 'حق نشر © $1. کلیه حقوق محفوظ است.', + dlgTitle: 'درباره CKEditor', + help: ' برای راهنمایی $1 را ملاحظه کنید.', + moreInfo: 'برای کسب اطلاعات مجوز لطفا به وب سایت ما مراجعه کنید:', + title: 'درباره CKEditor', + userGuide: 'راهنمای کاربران CKEditor' +} ); diff --git a/sources/plugins/about/lang/fi.js b/sources/plugins/about/lang/fi.js new file mode 100644 index 00000000..58804730 --- /dev/null +++ b/sources/plugins/about/lang/fi.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'fi', { + copy: 'Copyright © $1. Kaikki oikeuden pidätetään.', + dlgTitle: 'Tietoa CKEditorista', + help: 'Katso ohjeet: $1.', + moreInfo: 'Lisenssitiedot löytyvät kotisivuiltamme:', + title: 'Tietoa CKEditorista', + userGuide: 'CKEditorin käyttäjäopas' +} ); diff --git a/sources/plugins/about/lang/fo.js b/sources/plugins/about/lang/fo.js new file mode 100644 index 00000000..cf2c2640 --- /dev/null +++ b/sources/plugins/about/lang/fo.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'fo', { + copy: 'Copyright © $1. All rights reserved.', + dlgTitle: 'Um CKEditor', + help: 'Kekka $1 fyri hjálp.', + moreInfo: 'Licens upplýsingar finnast á heimasíðu okkara:', + title: 'Um CKEditor', + userGuide: 'CKEditor Brúkaravegleiðing' +} ); diff --git a/sources/plugins/about/lang/fr-ca.js b/sources/plugins/about/lang/fr-ca.js new file mode 100644 index 00000000..8c027217 --- /dev/null +++ b/sources/plugins/about/lang/fr-ca.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'fr-ca', { + copy: 'Copyright © $1. Tous droits réservés.', + dlgTitle: 'À propos de CKEditor', + help: 'Consulter $1 pour l\'aide.', + moreInfo: 'Pour les informations de licence, consulter notre site internet:', + title: 'À propos de CKEditor', + userGuide: 'Guide utilisateur de CKEditor' +} ); diff --git a/sources/plugins/about/lang/fr.js b/sources/plugins/about/lang/fr.js new file mode 100644 index 00000000..b3356aaa --- /dev/null +++ b/sources/plugins/about/lang/fr.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'fr', { + copy: 'Copyright © $1. Tous droits réservés.', + dlgTitle: 'À propos de CKEditor', + help: 'Consulter $1 pour l\'aide.', + moreInfo: 'Pour les informations de licence, veuillez visiter notre site web:', + title: 'À propos de CKEditor', + userGuide: 'Guide de l\'utilisateur CKEditor en anglais' +} ); diff --git a/sources/plugins/about/lang/gl.js b/sources/plugins/about/lang/gl.js new file mode 100644 index 00000000..f6ee3b37 --- /dev/null +++ b/sources/plugins/about/lang/gl.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'gl', { + copy: 'Copyright © $1. Todos os dereitos reservados.', + dlgTitle: 'Sobre o CKEditor', + help: 'Consulte $1 para obter axuda.', + moreInfo: 'Para obter información sobre a licenza, visite o noso sitio web:', + title: 'Sobre o CKEditor', + userGuide: 'Guía do usuario do CKEditor' +} ); diff --git a/sources/plugins/about/lang/gu.js b/sources/plugins/about/lang/gu.js new file mode 100644 index 00000000..b71ff79d --- /dev/null +++ b/sources/plugins/about/lang/gu.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'gu', { + copy: 'કોપીરાઈટ © $1. ઓલ રાઈટ્સ ', + dlgTitle: 'CKEditor વિષે', + help: 'મદદ માટે $1 તપાસો', + moreInfo: 'લાયસનસની માહિતી માટે અમારી વેબ સાઈટ', + title: 'CKEditor વિષે', + userGuide: 'CKEditor યુઝર્સ ગાઈડ' +} ); diff --git a/sources/plugins/about/lang/he.js b/sources/plugins/about/lang/he.js new file mode 100644 index 00000000..48872191 --- /dev/null +++ b/sources/plugins/about/lang/he.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'he', { + copy: 'Copyright © $1. כל הזכויות שמורות.', + dlgTitle: 'אודות CKEditor', + help: 'היכנסו ל$1 לעזרה.', + moreInfo: 'למידע נוסף בקרו באתרנו:', + title: 'אודות CKEditor', + userGuide: 'מדריך המשתמש של CKEditor' +} ); diff --git a/sources/plugins/about/lang/hi.js b/sources/plugins/about/lang/hi.js new file mode 100644 index 00000000..c6911fe5 --- /dev/null +++ b/sources/plugins/about/lang/hi.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'hi', { + copy: 'Copyright © $1. All rights reserved.', // MISSING + dlgTitle: 'About CKEditor', // MISSING + help: 'Check $1 for help.', // MISSING + moreInfo: 'For licensing information please visit our web site:', // MISSING + title: 'About CKEditor', // MISSING + userGuide: 'CKEditor User\'s Guide' +} ); diff --git a/sources/plugins/about/lang/hr.js b/sources/plugins/about/lang/hr.js new file mode 100644 index 00000000..492b1fa4 --- /dev/null +++ b/sources/plugins/about/lang/hr.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'hr', { + copy: 'Copyright © $1. All rights reserved.', + dlgTitle: 'O CKEditoru', + help: 'Provjeri $1 za pomoć.', + moreInfo: 'Za informacije o licencama posjetite našu web stranicu:', + title: 'O CKEditoru', + userGuide: 'Vodič za CKEditor korisnike' +} ); diff --git a/sources/plugins/about/lang/hu.js b/sources/plugins/about/lang/hu.js new file mode 100644 index 00000000..ee9174d0 --- /dev/null +++ b/sources/plugins/about/lang/hu.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'hu', { + copy: 'Copyright © $1. Minden jog fenntartva.', + dlgTitle: 'CKEditor névjegy', + help: 'Itt találsz segítséget: $1', + moreInfo: 'Licenszelési információkért kérjük látogassa meg weboldalunkat:', + title: 'CKEditor névjegy', + userGuide: 'CKEditor Felhasználói útmutató' +} ); diff --git a/sources/plugins/about/lang/id.js b/sources/plugins/about/lang/id.js new file mode 100644 index 00000000..21378d1b --- /dev/null +++ b/sources/plugins/about/lang/id.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'id', { + copy: 'Hak cipta © $1. All rights reserved.', + dlgTitle: 'Tentang CKEditor', + help: 'Cel $1 untuk bantuan.', + moreInfo: 'Untuk informasi lisensi silahkan kunjungi web site kami:', + title: 'Tentang CKEditor', + userGuide: 'Petunjuk Pengguna CKEditor' +} ); diff --git a/sources/plugins/about/lang/is.js b/sources/plugins/about/lang/is.js new file mode 100644 index 00000000..fe455c53 --- /dev/null +++ b/sources/plugins/about/lang/is.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'is', { + copy: 'Copyright © $1. All rights reserved.', // MISSING + dlgTitle: 'About CKEditor', // MISSING + help: 'Check $1 for help.', // MISSING + moreInfo: 'For licensing information please visit our web site:', // MISSING + title: 'About CKEditor', // MISSING + userGuide: 'CKEditor User\'s Guide' // MISSING +} ); diff --git a/sources/plugins/about/lang/it.js b/sources/plugins/about/lang/it.js new file mode 100644 index 00000000..6bf1dbc0 --- /dev/null +++ b/sources/plugins/about/lang/it.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'it', { + copy: 'Copyright © $1. Tutti i diritti riservati.', + dlgTitle: 'Riguardo CKEditor', + help: 'Vedi $1 per l\'aiuto.', + moreInfo: 'Per le informazioni sulla licenza si prega di visitare il nostro sito:', + title: 'Riguardo CKEditor', + userGuide: 'Guida Utente CKEditor' +} ); diff --git a/sources/plugins/about/lang/ja.js b/sources/plugins/about/lang/ja.js new file mode 100644 index 00000000..3fa2e9f7 --- /dev/null +++ b/sources/plugins/about/lang/ja.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'ja', { + copy: 'Copyright © $1. All rights reserved.', + dlgTitle: 'CKEditorについて', + help: '$1 のヘルプを見てください。', + moreInfo: 'ライセンス情報の詳細はウェブサイトにて確認してください:', + title: 'CKEditorについて', + userGuide: 'CKEditor User\'s Guide' +} ); diff --git a/sources/plugins/about/lang/ka.js b/sources/plugins/about/lang/ka.js new file mode 100644 index 00000000..af55a888 --- /dev/null +++ b/sources/plugins/about/lang/ka.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'ka', { + copy: 'Copyright © $1. ყველა უფლება დაცულია.', + dlgTitle: 'CKEditor-ის შესახებ', + help: 'დახმარებისთვის იხილეთ $1.', + moreInfo: 'ლიცენზიის ინფორმაციისთვის ეწვიეთ ჩვენს საიტს:', + title: 'CKEditor-ის შესახებ', + userGuide: 'CKEditor-ის მომხმარებლის სახელმძღვანელო' +} ); diff --git a/sources/plugins/about/lang/km.js b/sources/plugins/about/lang/km.js new file mode 100644 index 00000000..32f052c8 --- /dev/null +++ b/sources/plugins/about/lang/km.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'km', { + copy: 'រក្សាសិទ្ធិ © $1។ រក្សា​សិទ្ធិ​គ្រប់​បែប​យ៉ាង។', + dlgTitle: 'អំពី CKEditor', + help: 'ពិនិត្យ $1 សម្រាប់​ជំនួយ។', + moreInfo: 'សម្រាប់​ព័ត៌មាន​អំពី​អាជ្ញាបណញណ សូម​មើល​ក្នុង​គេហទំព័រ​របស់​យើង៖', + title: 'អំពី CKEditor', + userGuide: 'វិធី​ប្រើ​ប្រាស់ CKEditor' +} ); diff --git a/sources/plugins/about/lang/ko.js b/sources/plugins/about/lang/ko.js new file mode 100644 index 00000000..7559ffa1 --- /dev/null +++ b/sources/plugins/about/lang/ko.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'ko', { + copy: '저작권 © $1 . 판권 소유.', + dlgTitle: 'CKEditor 에 대하여', + help: '도움이 필요하시면 $1 를 확인하세요.', + moreInfo: '라이선스에 대한 정보는 저희 웹 사이트를 참고하세요:', + title: 'CKEditor에 대하여', + userGuide: 'CKEditor 사용설명서' +} ); diff --git a/sources/plugins/about/lang/ku.js b/sources/plugins/about/lang/ku.js new file mode 100644 index 00000000..b9ae3c3e --- /dev/null +++ b/sources/plugins/about/lang/ku.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'ku', { + copy: 'مافی لەبەرگەرتنەوەی © $1. گشتی پارێزراوه. ورگێڕانی بۆ کوردی لەلایەن هۆژە کۆیی.', + dlgTitle: 'دەربارەی CKEditor', + help: 'سەیری $1 بکه بۆ یارمەتی.', + moreInfo: 'بۆ زانیاری زیاتر دەربارەی مۆڵەتی بەکارهێنان، تکایه سەردانی ماڵپەڕەکەمان بکه:', + title: 'دەربارەی CKEditor', + userGuide: 'ڕێپیشاندەری CKEditors' +} ); diff --git a/sources/plugins/about/lang/lt.js b/sources/plugins/about/lang/lt.js new file mode 100644 index 00000000..c08b0453 --- /dev/null +++ b/sources/plugins/about/lang/lt.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'lt', { + copy: 'Copyright © $1. Visos teiss saugomos.', + dlgTitle: 'Apie CKEditor', + help: 'Patikrinkite $1 dėl pagalbos.', + moreInfo: 'Dėl licencijavimo apsilankykite mūsų svetainėje:', + title: 'Apie CKEditor', + userGuide: 'CKEditor Vartotojo Gidas' +} ); diff --git a/sources/plugins/about/lang/lv.js b/sources/plugins/about/lang/lv.js new file mode 100644 index 00000000..a53d277b --- /dev/null +++ b/sources/plugins/about/lang/lv.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'lv', { + copy: 'Kopēšanas tiesības © $1. Visas tiesības rezervētas.', + dlgTitle: 'Par CKEditor', + help: 'Pārbaudiet $1 palīdzībai.', + moreInfo: 'Informācijai par licenzēšanu apmeklējiet mūsu mājas lapu:', + title: 'Par CKEditor', + userGuide: 'CKEditor Lietotāja pamācība' +} ); diff --git a/sources/plugins/about/lang/mk.js b/sources/plugins/about/lang/mk.js new file mode 100644 index 00000000..930b831f --- /dev/null +++ b/sources/plugins/about/lang/mk.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'mk', { + copy: 'Copyright © $1. All rights reserved.', // MISSING + dlgTitle: 'About CKEditor', // MISSING + help: 'Check $1 for help.', // MISSING + moreInfo: 'For licensing information please visit our web site:', // MISSING + title: 'About CKEditor', // MISSING + userGuide: 'CKEditor User\'s Guide' // MISSING +} ); diff --git a/sources/plugins/about/lang/mn.js b/sources/plugins/about/lang/mn.js new file mode 100644 index 00000000..2f74de78 --- /dev/null +++ b/sources/plugins/about/lang/mn.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'mn', { + copy: 'Copyright © $1. All rights reserved.', // MISSING + dlgTitle: 'About CKEditor', // MISSING + help: 'Check $1 for help.', // MISSING + moreInfo: 'For licensing information please visit our web site:', // MISSING + title: 'About CKEditor', // MISSING + userGuide: 'CKEditor User\'s Guide' +} ); diff --git a/sources/plugins/about/lang/ms.js b/sources/plugins/about/lang/ms.js new file mode 100644 index 00000000..1032088f --- /dev/null +++ b/sources/plugins/about/lang/ms.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'ms', { + copy: 'Copyright © $1. All rights reserved.', // MISSING + dlgTitle: 'About CKEditor', // MISSING + help: 'Check $1 for help.', // MISSING + moreInfo: 'For licensing information please visit our web site:', // MISSING + title: 'About CKEditor', // MISSING + userGuide: 'CKEditor User\'s Guide' // MISSING +} ); diff --git a/sources/plugins/about/lang/nb.js b/sources/plugins/about/lang/nb.js new file mode 100644 index 00000000..2562d782 --- /dev/null +++ b/sources/plugins/about/lang/nb.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'nb', { + copy: 'Copyright © $1. Alle rettigheter reservert.', + dlgTitle: 'Om CKEditor', + help: 'Se $1 for hjelp.', + moreInfo: 'For lisensieringsinformasjon, vennligst besøk vårt nettsted:', + title: 'Om CKEditor', + userGuide: 'CKEditors brukerveiledning' +} ); diff --git a/sources/plugins/about/lang/nl.js b/sources/plugins/about/lang/nl.js new file mode 100644 index 00000000..9298cb44 --- /dev/null +++ b/sources/plugins/about/lang/nl.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'nl', { + copy: 'Copyright © $1. Alle rechten voorbehouden.', + dlgTitle: 'Over CKEditor', + help: 'Bekijk de $1 voor hulp.', + moreInfo: 'Bezoek onze website voor licentieinformatie:', + title: 'Over CKEditor', + userGuide: 'CKEditor gebruiksaanwijzing' +} ); diff --git a/sources/plugins/about/lang/no.js b/sources/plugins/about/lang/no.js new file mode 100644 index 00000000..a2cc6d75 --- /dev/null +++ b/sources/plugins/about/lang/no.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'no', { + copy: 'Copyright © $1. Alle rettigheter reservert.', + dlgTitle: 'Om CKEditor', + help: 'Se $1 for hjelp.', + moreInfo: 'For lisensieringsinformasjon, vennligst besøk vårt nettsted:', + title: 'Om CKEditor', + userGuide: 'CKEditors brukerveiledning' +} ); diff --git a/sources/plugins/about/lang/pl.js b/sources/plugins/about/lang/pl.js new file mode 100644 index 00000000..5dbcd44d --- /dev/null +++ b/sources/plugins/about/lang/pl.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'pl', { + copy: 'Copyright © $1. Wszelkie prawa zastrzeżone.', + dlgTitle: 'Informacje o programie CKEditor', + help: 'Pomoc znajdziesz w $1.', + moreInfo: 'Informacje na temat licencji można znaleźć na naszej stronie:', + title: 'Informacje o programie CKEditor', + userGuide: 'podręczniku użytkownika programu CKEditor' +} ); diff --git a/sources/plugins/about/lang/pt-br.js b/sources/plugins/about/lang/pt-br.js new file mode 100644 index 00000000..773da19a --- /dev/null +++ b/sources/plugins/about/lang/pt-br.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'pt-br', { + copy: 'Copyright © $1. Todos os direitos reservados.', + dlgTitle: 'Sobre o CKEditor', + help: 'Verifique o $1 para obter ajuda.', + moreInfo: 'Para informações sobre a licença por favor visite o nosso site:', + title: 'Sobre o CKEditor', + userGuide: 'Guia do Usuário do CKEditor' +} ); diff --git a/sources/plugins/about/lang/pt.js b/sources/plugins/about/lang/pt.js new file mode 100644 index 00000000..7f78e0b9 --- /dev/null +++ b/sources/plugins/about/lang/pt.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'pt', { + copy: 'Direitos de Autor © $1. Todos os direitos reservados.', + dlgTitle: 'Sobre o CKEditor', + help: 'Doar $1 para ajudar.', + moreInfo: 'Para informação sobre licenciamento visite o nosso sítio web:', + title: 'Sobre o CKEditor', + userGuide: 'CKEditor - Guia do Utilizador' +} ); diff --git a/sources/plugins/about/lang/ro.js b/sources/plugins/about/lang/ro.js new file mode 100644 index 00000000..770146a1 --- /dev/null +++ b/sources/plugins/about/lang/ro.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'ro', { + copy: 'Copyright © $1. Toate drepturile rezervate.', + dlgTitle: 'Despre CKEeditor', + help: 'Citește $1 pentru ajutor.', + moreInfo: 'Pentru informații despre licență, vă rugăm vizitați web site-ul nostru:', + title: 'Despre CKEditor', + userGuide: 'CKEditor Ghid Utilizator' +} ); diff --git a/sources/plugins/about/lang/ru.js b/sources/plugins/about/lang/ru.js new file mode 100644 index 00000000..a1d4c70f --- /dev/null +++ b/sources/plugins/about/lang/ru.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'ru', { + copy: 'Copyright © $1. Все права защищены.', + dlgTitle: 'О CKEditor', + help: '$1 содержит подробную справку по использованию.', + moreInfo: 'Для получения информации о лицензии, пожалуйста, перейдите на наш сайт:', + title: 'О CKEditor', + userGuide: 'Руководство пользователя CKEditor' +} ); diff --git a/sources/plugins/about/lang/si.js b/sources/plugins/about/lang/si.js new file mode 100644 index 00000000..2d606d90 --- /dev/null +++ b/sources/plugins/about/lang/si.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'si', { + copy: 'පිටපත් අයිතිය සහ පිටපත් කිරීම;$1 .සියලුම හිමිකම් ඇවිරිණි.', + dlgTitle: 'CKEditor ගැන විස්තර', + help: 'උදව් සඳහා $1 ', + moreInfo: 'බලපත්‍ර තොරතුරු සදහා කරුණාකර අපගේ විද්‍යුත් ලිපිනයට පිවිසෙන්න:', + title: 'CKEditor ගැන විස්තර', + userGuide: 'CKEditor භාවිතා කිරීම පිළිබඳ ' +} ); diff --git a/sources/plugins/about/lang/sk.js b/sources/plugins/about/lang/sk.js new file mode 100644 index 00000000..eb114ad6 --- /dev/null +++ b/sources/plugins/about/lang/sk.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'sk', { + copy: 'Copyright © $1. Všetky práva vyhradené.', + dlgTitle: 'O CKEditor-e', + help: 'Zaškrtnite $1 pre pomoc.', + moreInfo: 'Pre informácie o licenciách, prosíme, navštívte našu web stránku:', + title: 'O CKEditor-e', + userGuide: 'Používateľská príručka KCEditor-a' +} ); diff --git a/sources/plugins/about/lang/sl.js b/sources/plugins/about/lang/sl.js new file mode 100644 index 00000000..6c970c71 --- /dev/null +++ b/sources/plugins/about/lang/sl.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'sl', { + copy: 'Copyright © $1. Vse pravice pridržane.', + dlgTitle: 'O programu CKEditor', + help: 'Preverite $1 za pomoč.', + moreInfo: 'Za informacijo o licenci prosim obiščite našo spletno stran:', + title: 'O programu CKEditor', + userGuide: 'CKEditor Navodila za Uporabo' +} ); diff --git a/sources/plugins/about/lang/sq.js b/sources/plugins/about/lang/sq.js new file mode 100644 index 00000000..856e2c47 --- /dev/null +++ b/sources/plugins/about/lang/sq.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'sq', { + copy: 'Të drejtat e kopjimit © $1. Të gjitha të drejtat e rezervuara.', + dlgTitle: 'Rreth CKEditor', + help: 'Kontrollo $1 për ndihmë.', + moreInfo: 'Për informacione rreth licencave shih faqen tonë:', + title: 'Rreth CKEditor', + userGuide: 'Udhëzuesi i Shfrytëzuesit të CKEditor' +} ); diff --git a/sources/plugins/about/lang/sr-latn.js b/sources/plugins/about/lang/sr-latn.js new file mode 100644 index 00000000..8d65ec98 --- /dev/null +++ b/sources/plugins/about/lang/sr-latn.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'sr-latn', { + copy: 'Copyright © $1. All rights reserved.', // MISSING + dlgTitle: 'About CKEditor', // MISSING + help: 'Check $1 for help.', // MISSING + moreInfo: 'For licensing information please visit our web site:', // MISSING + title: 'About CKEditor', // MISSING + userGuide: 'CKEditor User\'s Guide' // MISSING +} ); diff --git a/sources/plugins/about/lang/sr.js b/sources/plugins/about/lang/sr.js new file mode 100644 index 00000000..b726d9e8 --- /dev/null +++ b/sources/plugins/about/lang/sr.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'sr', { + copy: 'Copyright © $1. All rights reserved.', // MISSING + dlgTitle: 'About CKEditor', // MISSING + help: 'Check $1 for help.', // MISSING + moreInfo: 'For licensing information please visit our web site:', // MISSING + title: 'About CKEditor', // MISSING + userGuide: 'CKEditor User\'s Guide' // MISSING +} ); diff --git a/sources/plugins/about/lang/sv.js b/sources/plugins/about/lang/sv.js new file mode 100644 index 00000000..4f70f4b3 --- /dev/null +++ b/sources/plugins/about/lang/sv.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'sv', { + copy: 'Copyright © $1. Alla rättigheter reserverade.', + dlgTitle: 'Om CKEditor', + help: 'Se $1 för hjälp.', + moreInfo: 'För information av licensiering besök vår hemsida:', + title: 'Om CKEditor', + userGuide: 'CKEditor User\'s Guide' +} ); diff --git a/sources/plugins/about/lang/th.js b/sources/plugins/about/lang/th.js new file mode 100644 index 00000000..bac332d6 --- /dev/null +++ b/sources/plugins/about/lang/th.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'th', { + copy: 'Copyright © $1. All rights reserved.', // MISSING + dlgTitle: 'About CKEditor', // MISSING + help: 'Check $1 for help.', // MISSING + moreInfo: 'For licensing information please visit our web site:', // MISSING + title: 'About CKEditor', // MISSING + userGuide: 'CKEditor User\'s Guide' +} ); diff --git a/sources/plugins/about/lang/tr.js b/sources/plugins/about/lang/tr.js new file mode 100644 index 00000000..f16db121 --- /dev/null +++ b/sources/plugins/about/lang/tr.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'tr', { + copy: 'Copyright © $1. Tüm hakları saklıdır.', + dlgTitle: 'CKEditor Hakkında', + help: 'Yardım için $1 kontrol edin.', + moreInfo: 'Lisanslama hakkında daha fazla bilgi almak için lütfen sitemizi ziyaret edin:', + title: 'CKEditor Hakkında', + userGuide: 'CKEditor Kullanıcı Kılavuzu' +} ); diff --git a/sources/plugins/about/lang/tt.js b/sources/plugins/about/lang/tt.js new file mode 100644 index 00000000..17441c3e --- /dev/null +++ b/sources/plugins/about/lang/tt.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'tt', { + copy: 'Copyright © $1. Бар хокуклар сакланган', + dlgTitle: 'CKEditor турында', + help: 'Ярдәм өчен $1 тикшереп карагыз.', + moreInfo: 'For licensing information please visit our web site:', // MISSING + title: 'CKEditor турында', + userGuide: 'CKEditor кулланмасы' +} ); diff --git a/sources/plugins/about/lang/ug.js b/sources/plugins/about/lang/ug.js new file mode 100644 index 00000000..482f5012 --- /dev/null +++ b/sources/plugins/about/lang/ug.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'ug', { + copy: 'Copyright © $1. نەشر ھوقۇقىغا ئىگە', + dlgTitle: 'CKEditor ھەققىدە', + help: '$1 نى زىيارەت قىلىپ ياردەمگە ئېرىشىڭ', + moreInfo: 'تور تۇرايىمىزنى زىيارەت قىلىپ كېلىشىمگە ئائىت تېخىمۇ كۆپ ئۇچۇرغا ئېرىشىڭ', + title: 'CKEditor ھەققىدە', + userGuide: 'CKEditor ئىشلەتكۈچى قوللانمىسى' +} ); diff --git a/sources/plugins/about/lang/uk.js b/sources/plugins/about/lang/uk.js new file mode 100644 index 00000000..9acad4cf --- /dev/null +++ b/sources/plugins/about/lang/uk.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'uk', { + copy: 'Copyright © $1. Всі права застережено.', + dlgTitle: 'Про CKEditor', + help: 'Перевірте $1 для допомоги.', + moreInfo: 'Щодо інформації з ліцензування завітайте на наш сайт:', + title: 'Про CKEditor', + userGuide: 'Інструкція Користувача для CKEditor' +} ); diff --git a/sources/plugins/about/lang/vi.js b/sources/plugins/about/lang/vi.js new file mode 100644 index 00000000..a72559d4 --- /dev/null +++ b/sources/plugins/about/lang/vi.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'vi', { + copy: 'Bản quyền © $1. Giữ toàn quyền.', + dlgTitle: 'Thông tin về CKEditor', + help: 'Kiểm tra $1 để được giúp đỡ.', + moreInfo: 'Vui lòng ghé thăm trang web của chúng tôi để có thông tin về giấy phép:', + title: 'Thông tin về CKEditor', + userGuide: 'Hướng dẫn sử dụng CKEditor' +} ); diff --git a/sources/plugins/about/lang/zh-cn.js b/sources/plugins/about/lang/zh-cn.js new file mode 100644 index 00000000..e5548b29 --- /dev/null +++ b/sources/plugins/about/lang/zh-cn.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'zh-cn', { + copy: '版权所有 © $1。
保留所有权利。', + dlgTitle: '关于 CKEditor', + help: '访问 $1 以获取帮助。', + moreInfo: '相关授权许可信息请访问我们的网站:', + title: '关于 CKEditor', + userGuide: 'CKEditor 用户向导' +} ); diff --git a/sources/plugins/about/lang/zh.js b/sources/plugins/about/lang/zh.js new file mode 100644 index 00000000..955546d9 --- /dev/null +++ b/sources/plugins/about/lang/zh.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'about', 'zh', { + copy: 'Copyright © $1. All rights reserved.', + dlgTitle: '關於 CKEditor', + help: '檢閱 $1 尋求幫助。', + moreInfo: '關於授權資訊,請參閱我們的網站:', + title: '關於 CKEditor', + userGuide: 'CKEditor 使用者手冊' +} ); diff --git a/sources/plugins/about/plugin.js b/sources/plugins/about/plugin.js new file mode 100644 index 00000000..09dd4bc7 --- /dev/null +++ b/sources/plugins/about/plugin.js @@ -0,0 +1,27 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.add( 'about', { + requires: 'dialog', + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'about', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + var command = editor.addCommand( 'about', new CKEDITOR.dialogCommand( 'about' ) ); + command.modes = { wysiwyg: 1, source: 1 }; + command.canUndo = false; + command.readOnly = 1; + + editor.ui.addButton && editor.ui.addButton( 'About', { + label: editor.lang.about.title, + command: 'about', + toolbar: 'about' + } ); + + CKEDITOR.dialog.add( 'about', this.path + 'dialogs/about.js' ); + } +} ); diff --git a/sources/plugins/basicstyles/icons/bold.png b/sources/plugins/basicstyles/icons/bold.png new file mode 100644 index 00000000..5ff84fec Binary files /dev/null and b/sources/plugins/basicstyles/icons/bold.png differ diff --git a/sources/plugins/basicstyles/icons/hidpi/bold.png b/sources/plugins/basicstyles/icons/hidpi/bold.png new file mode 100644 index 00000000..65acb293 Binary files /dev/null and b/sources/plugins/basicstyles/icons/hidpi/bold.png differ diff --git a/sources/plugins/basicstyles/icons/hidpi/italic.png b/sources/plugins/basicstyles/icons/hidpi/italic.png new file mode 100644 index 00000000..2b0f44e7 Binary files /dev/null and b/sources/plugins/basicstyles/icons/hidpi/italic.png differ diff --git a/sources/plugins/basicstyles/icons/hidpi/strike.png b/sources/plugins/basicstyles/icons/hidpi/strike.png new file mode 100644 index 00000000..ef045c84 Binary files /dev/null and b/sources/plugins/basicstyles/icons/hidpi/strike.png differ diff --git a/sources/plugins/basicstyles/icons/hidpi/subscript.png b/sources/plugins/basicstyles/icons/hidpi/subscript.png new file mode 100644 index 00000000..f12f4be2 Binary files /dev/null and b/sources/plugins/basicstyles/icons/hidpi/subscript.png differ diff --git a/sources/plugins/basicstyles/icons/hidpi/superscript.png b/sources/plugins/basicstyles/icons/hidpi/superscript.png new file mode 100644 index 00000000..4f7b762f Binary files /dev/null and b/sources/plugins/basicstyles/icons/hidpi/superscript.png differ diff --git a/sources/plugins/basicstyles/icons/hidpi/underline.png b/sources/plugins/basicstyles/icons/hidpi/underline.png new file mode 100644 index 00000000..79702f69 Binary files /dev/null and b/sources/plugins/basicstyles/icons/hidpi/underline.png differ diff --git a/sources/plugins/basicstyles/icons/italic.png b/sources/plugins/basicstyles/icons/italic.png new file mode 100644 index 00000000..64d1332c Binary files /dev/null and b/sources/plugins/basicstyles/icons/italic.png differ diff --git a/sources/plugins/basicstyles/icons/strike.png b/sources/plugins/basicstyles/icons/strike.png new file mode 100644 index 00000000..31ea47a1 Binary files /dev/null and b/sources/plugins/basicstyles/icons/strike.png differ diff --git a/sources/plugins/basicstyles/icons/subscript.png b/sources/plugins/basicstyles/icons/subscript.png new file mode 100644 index 00000000..bfe5420e Binary files /dev/null and b/sources/plugins/basicstyles/icons/subscript.png differ diff --git a/sources/plugins/basicstyles/icons/superscript.png b/sources/plugins/basicstyles/icons/superscript.png new file mode 100644 index 00000000..a1eb2f1e Binary files /dev/null and b/sources/plugins/basicstyles/icons/superscript.png differ diff --git a/sources/plugins/basicstyles/icons/underline.png b/sources/plugins/basicstyles/icons/underline.png new file mode 100644 index 00000000..1dd0c593 Binary files /dev/null and b/sources/plugins/basicstyles/icons/underline.png differ diff --git a/sources/plugins/basicstyles/lang/af.js b/sources/plugins/basicstyles/lang/af.js new file mode 100644 index 00000000..bc781641 --- /dev/null +++ b/sources/plugins/basicstyles/lang/af.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'af', { + bold: 'Vet', + italic: 'Skuins', + strike: 'Deurgestreep', + subscript: 'Onderskrif', + superscript: 'Bo-skrif', + underline: 'Onderstreep' +} ); diff --git a/sources/plugins/basicstyles/lang/ar.js b/sources/plugins/basicstyles/lang/ar.js new file mode 100644 index 00000000..cb975e34 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ar.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'ar', { + bold: 'عريض', + italic: 'مائل', + strike: 'يتوسطه خط', + subscript: 'منخفض', + superscript: 'مرتفع', + underline: 'تسطير' +} ); diff --git a/sources/plugins/basicstyles/lang/bg.js b/sources/plugins/basicstyles/lang/bg.js new file mode 100644 index 00000000..da72e4a5 --- /dev/null +++ b/sources/plugins/basicstyles/lang/bg.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'bg', { + bold: 'Удебелен', + italic: 'Наклонен', + strike: 'Зачертан текст', + subscript: 'Индексиран текст', + superscript: 'Суперскрипт', + underline: 'Подчертан' +} ); diff --git a/sources/plugins/basicstyles/lang/bn.js b/sources/plugins/basicstyles/lang/bn.js new file mode 100644 index 00000000..85992c3b --- /dev/null +++ b/sources/plugins/basicstyles/lang/bn.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'bn', { + bold: 'বোল্ড', + italic: 'ইটালিক', + strike: 'স্ট্রাইক থ্রু', + subscript: 'অধোলেখ', + superscript: 'অভিলেখ', + underline: 'আন্ডারলাইন' +} ); diff --git a/sources/plugins/basicstyles/lang/bs.js b/sources/plugins/basicstyles/lang/bs.js new file mode 100644 index 00000000..5e1c7f24 --- /dev/null +++ b/sources/plugins/basicstyles/lang/bs.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'bs', { + bold: 'Boldiraj', + italic: 'Ukosi', + strike: 'Precrtaj', + subscript: 'Subscript', + superscript: 'Superscript', + underline: 'Podvuci' +} ); diff --git a/sources/plugins/basicstyles/lang/ca.js b/sources/plugins/basicstyles/lang/ca.js new file mode 100644 index 00000000..3c81cc11 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ca.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'ca', { + bold: 'Negreta', + italic: 'Cursiva', + strike: 'Ratllat', + subscript: 'Subíndex', + superscript: 'Superíndex', + underline: 'Subratllat' +} ); diff --git a/sources/plugins/basicstyles/lang/cs.js b/sources/plugins/basicstyles/lang/cs.js new file mode 100644 index 00000000..73b1267c --- /dev/null +++ b/sources/plugins/basicstyles/lang/cs.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'cs', { + bold: 'Tučné', + italic: 'Kurzíva', + strike: 'Přeškrtnuté', + subscript: 'Dolní index', + superscript: 'Horní index', + underline: 'Podtržené' +} ); diff --git a/sources/plugins/basicstyles/lang/cy.js b/sources/plugins/basicstyles/lang/cy.js new file mode 100644 index 00000000..e0ac3af3 --- /dev/null +++ b/sources/plugins/basicstyles/lang/cy.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'cy', { + bold: 'Bras', + italic: 'Italig', + strike: 'Llinell Trwyddo', + subscript: 'Is-sgript', + superscript: 'Uwchsgript', + underline: 'Tanlinellu' +} ); diff --git a/sources/plugins/basicstyles/lang/da.js b/sources/plugins/basicstyles/lang/da.js new file mode 100644 index 00000000..e9721830 --- /dev/null +++ b/sources/plugins/basicstyles/lang/da.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'da', { + bold: 'Fed', + italic: 'Kursiv', + strike: 'Gennemstreget', + subscript: 'Sænket skrift', + superscript: 'Hævet skrift', + underline: 'Understreget' +} ); diff --git a/sources/plugins/basicstyles/lang/de.js b/sources/plugins/basicstyles/lang/de.js new file mode 100644 index 00000000..c86554d7 --- /dev/null +++ b/sources/plugins/basicstyles/lang/de.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'de', { + bold: 'Fett', + italic: 'Kursiv', + strike: 'Durchgestrichen', + subscript: 'Tiefgestellt', + superscript: 'Hochgestellt', + underline: 'Unterstrichen' +} ); diff --git a/sources/plugins/basicstyles/lang/el.js b/sources/plugins/basicstyles/lang/el.js new file mode 100644 index 00000000..8cc2faec --- /dev/null +++ b/sources/plugins/basicstyles/lang/el.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'el', { + bold: 'Έντονη', + italic: 'Πλάγια', + strike: 'Διακριτή Διαγραφή', + subscript: 'Δείκτης', + superscript: 'Εκθέτης', + underline: 'Υπογράμμιση' +} ); diff --git a/sources/plugins/basicstyles/lang/en-au.js b/sources/plugins/basicstyles/lang/en-au.js new file mode 100644 index 00000000..a989ed0f --- /dev/null +++ b/sources/plugins/basicstyles/lang/en-au.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'en-au', { + bold: 'Bold', + italic: 'Italic', + strike: 'Strike Through', + subscript: 'Subscript', + superscript: 'Superscript', + underline: 'Underline' +} ); diff --git a/sources/plugins/basicstyles/lang/en-ca.js b/sources/plugins/basicstyles/lang/en-ca.js new file mode 100644 index 00000000..ae09008b --- /dev/null +++ b/sources/plugins/basicstyles/lang/en-ca.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'en-ca', { + bold: 'Bold', + italic: 'Italic', + strike: 'Strike Through', + subscript: 'Subscript', + superscript: 'Superscript', + underline: 'Underline' +} ); diff --git a/sources/plugins/basicstyles/lang/en-gb.js b/sources/plugins/basicstyles/lang/en-gb.js new file mode 100644 index 00000000..c3df8993 --- /dev/null +++ b/sources/plugins/basicstyles/lang/en-gb.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'en-gb', { + bold: 'Bold', + italic: 'Italic', + strike: 'Strike Through', + subscript: 'Subscript', + superscript: 'Superscript', + underline: 'Underline' +} ); diff --git a/sources/plugins/basicstyles/lang/en.js b/sources/plugins/basicstyles/lang/en.js new file mode 100644 index 00000000..1ccbfb88 --- /dev/null +++ b/sources/plugins/basicstyles/lang/en.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'en', { + bold: 'Bold', + italic: 'Italic', + strike: 'Strikethrough', + subscript: 'Subscript', + superscript: 'Superscript', + underline: 'Underline' +} ); diff --git a/sources/plugins/basicstyles/lang/eo.js b/sources/plugins/basicstyles/lang/eo.js new file mode 100644 index 00000000..41b8570d --- /dev/null +++ b/sources/plugins/basicstyles/lang/eo.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'eo', { + bold: 'Grasa', + italic: 'Kursiva', + strike: 'Trastreko', + subscript: 'Suba indico', + superscript: 'Supra indico', + underline: 'Substreko' +} ); diff --git a/sources/plugins/basicstyles/lang/es.js b/sources/plugins/basicstyles/lang/es.js new file mode 100644 index 00000000..196f1d04 --- /dev/null +++ b/sources/plugins/basicstyles/lang/es.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'es', { + bold: 'Negrita', + italic: 'Cursiva', + strike: 'Tachado', + subscript: 'Subíndice', + superscript: 'Superíndice', + underline: 'Subrayado' +} ); diff --git a/sources/plugins/basicstyles/lang/et.js b/sources/plugins/basicstyles/lang/et.js new file mode 100644 index 00000000..9cd8c7a0 --- /dev/null +++ b/sources/plugins/basicstyles/lang/et.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'et', { + bold: 'Paks', + italic: 'Kursiiv', + strike: 'Läbijoonitud', + subscript: 'Allindeks', + superscript: 'Ülaindeks', + underline: 'Allajoonitud' +} ); diff --git a/sources/plugins/basicstyles/lang/eu.js b/sources/plugins/basicstyles/lang/eu.js new file mode 100644 index 00000000..84a2d4e2 --- /dev/null +++ b/sources/plugins/basicstyles/lang/eu.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'eu', { + bold: 'Lodia', + italic: 'Etzana', + strike: 'Marratua', + subscript: 'Azpi-indizea', + superscript: 'Goi-indizea', + underline: 'Azpimarratu' +} ); diff --git a/sources/plugins/basicstyles/lang/fa.js b/sources/plugins/basicstyles/lang/fa.js new file mode 100644 index 00000000..8cea19a5 --- /dev/null +++ b/sources/plugins/basicstyles/lang/fa.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'fa', { + bold: 'درشت', + italic: 'خمیده', + strike: 'خط‌خورده', + subscript: 'زیرنویس', + superscript: 'بالانویس', + underline: 'زیرخط‌دار' +} ); diff --git a/sources/plugins/basicstyles/lang/fi.js b/sources/plugins/basicstyles/lang/fi.js new file mode 100644 index 00000000..b011b41f --- /dev/null +++ b/sources/plugins/basicstyles/lang/fi.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'fi', { + bold: 'Lihavoitu', + italic: 'Kursivoitu', + strike: 'Yliviivattu', + subscript: 'Alaindeksi', + superscript: 'Yläindeksi', + underline: 'Alleviivattu' +} ); diff --git a/sources/plugins/basicstyles/lang/fo.js b/sources/plugins/basicstyles/lang/fo.js new file mode 100644 index 00000000..7d293076 --- /dev/null +++ b/sources/plugins/basicstyles/lang/fo.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'fo', { + bold: 'Feit skrift', + italic: 'Skráskrift', + strike: 'Yvirstrikað', + subscript: 'Lækkað skrift', + superscript: 'Hækkað skrift', + underline: 'Undirstrikað' +} ); diff --git a/sources/plugins/basicstyles/lang/fr-ca.js b/sources/plugins/basicstyles/lang/fr-ca.js new file mode 100644 index 00000000..3f82c9af --- /dev/null +++ b/sources/plugins/basicstyles/lang/fr-ca.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'fr-ca', { + bold: 'Gras', + italic: 'Italique', + strike: 'Barré', + subscript: 'Indice', + superscript: 'Exposant', + underline: 'Souligné' +} ); diff --git a/sources/plugins/basicstyles/lang/fr.js b/sources/plugins/basicstyles/lang/fr.js new file mode 100644 index 00000000..44349e34 --- /dev/null +++ b/sources/plugins/basicstyles/lang/fr.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'fr', { + bold: 'Gras', + italic: 'Italique', + strike: 'Barré', + subscript: 'Indice', + superscript: 'Exposant', + underline: 'Souligné' +} ); diff --git a/sources/plugins/basicstyles/lang/gl.js b/sources/plugins/basicstyles/lang/gl.js new file mode 100644 index 00000000..7e7379a2 --- /dev/null +++ b/sources/plugins/basicstyles/lang/gl.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'gl', { + bold: 'Negra', + italic: 'Cursiva', + strike: 'Riscado', + subscript: 'Subíndice', + superscript: 'Superíndice', + underline: 'Subliñado' +} ); diff --git a/sources/plugins/basicstyles/lang/gu.js b/sources/plugins/basicstyles/lang/gu.js new file mode 100644 index 00000000..90619039 --- /dev/null +++ b/sources/plugins/basicstyles/lang/gu.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'gu', { + bold: 'બોલ્ડ/સ્પષ્ટ', + italic: 'ઇટેલિક, ત્રાંસા', + strike: 'છેકી નાખવું', + subscript: 'એક ચિહ્નની નીચે કરેલું બીજું ચિહ્ન', + superscript: 'એક ચિહ્ન ઉપર કરેલું બીજું ચિહ્ન.', + underline: 'અન્ડર્લાઇન, નીચે લીટી' +} ); diff --git a/sources/plugins/basicstyles/lang/he.js b/sources/plugins/basicstyles/lang/he.js new file mode 100644 index 00000000..e5279b6e --- /dev/null +++ b/sources/plugins/basicstyles/lang/he.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'he', { + bold: 'מודגש', + italic: 'נטוי', + strike: 'כתיב מחוק', + subscript: 'כתיב תחתון', + superscript: 'כתיב עליון', + underline: 'קו תחתון' +} ); diff --git a/sources/plugins/basicstyles/lang/hi.js b/sources/plugins/basicstyles/lang/hi.js new file mode 100644 index 00000000..daacb67d --- /dev/null +++ b/sources/plugins/basicstyles/lang/hi.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'hi', { + bold: 'बोल्ड', + italic: 'इटैलिक', + strike: 'स्ट्राइक थ्रू', + subscript: 'अधोलेख', + superscript: 'अभिलेख', + underline: 'रेखांकण' +} ); diff --git a/sources/plugins/basicstyles/lang/hr.js b/sources/plugins/basicstyles/lang/hr.js new file mode 100644 index 00000000..d3f16468 --- /dev/null +++ b/sources/plugins/basicstyles/lang/hr.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'hr', { + bold: 'Podebljaj', + italic: 'Ukosi', + strike: 'Precrtano', + subscript: 'Subscript', + superscript: 'Superscript', + underline: 'Potcrtano' +} ); diff --git a/sources/plugins/basicstyles/lang/hu.js b/sources/plugins/basicstyles/lang/hu.js new file mode 100644 index 00000000..9d18d3b4 --- /dev/null +++ b/sources/plugins/basicstyles/lang/hu.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'hu', { + bold: 'Félkövér', + italic: 'Dőlt', + strike: 'Áthúzott', + subscript: 'Alsó index', + superscript: 'Felső index', + underline: 'Aláhúzott' +} ); diff --git a/sources/plugins/basicstyles/lang/id.js b/sources/plugins/basicstyles/lang/id.js new file mode 100644 index 00000000..146b1a78 --- /dev/null +++ b/sources/plugins/basicstyles/lang/id.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'id', { + bold: 'Huruf Tebal', + italic: 'Huruf Miring', + strike: 'Strikethrough', // MISSING + subscript: 'Subscript', // MISSING + superscript: 'Superscript', // MISSING + underline: 'Garis Bawah' +} ); diff --git a/sources/plugins/basicstyles/lang/is.js b/sources/plugins/basicstyles/lang/is.js new file mode 100644 index 00000000..ccef9cd3 --- /dev/null +++ b/sources/plugins/basicstyles/lang/is.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'is', { + bold: 'Feitletrað', + italic: 'Skáletrað', + strike: 'Yfirstrikað', + subscript: 'Niðurskrifað', + superscript: 'Uppskrifað', + underline: 'Undirstrikað' +} ); diff --git a/sources/plugins/basicstyles/lang/it.js b/sources/plugins/basicstyles/lang/it.js new file mode 100644 index 00000000..d3f02488 --- /dev/null +++ b/sources/plugins/basicstyles/lang/it.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'it', { + bold: 'Grassetto', + italic: 'Corsivo', + strike: 'Barrato', + subscript: 'Pedice', + superscript: 'Apice', + underline: 'Sottolineato' +} ); diff --git a/sources/plugins/basicstyles/lang/ja.js b/sources/plugins/basicstyles/lang/ja.js new file mode 100644 index 00000000..38c0a0a4 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ja.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'ja', { + bold: '太字', + italic: '斜体', + strike: '打ち消し線', + subscript: '下付き', + superscript: '上付き', + underline: '下線' +} ); diff --git a/sources/plugins/basicstyles/lang/ka.js b/sources/plugins/basicstyles/lang/ka.js new file mode 100644 index 00000000..70c1bc38 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ka.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'ka', { + bold: 'მსხვილი', + italic: 'დახრილი', + strike: 'გადახაზული', + subscript: 'ინდექსი', + superscript: 'ხარისხი', + underline: 'გახაზული' +} ); diff --git a/sources/plugins/basicstyles/lang/km.js b/sources/plugins/basicstyles/lang/km.js new file mode 100644 index 00000000..29d87369 --- /dev/null +++ b/sources/plugins/basicstyles/lang/km.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'km', { + bold: 'ដិត', + italic: 'ទ្រេត', + strike: 'គូស​បន្ទាត់​ចំ​កណ្ដាល', + subscript: 'អក្សរតូចក្រោម', + superscript: 'អក្សរតូចលើ', + underline: 'គូស​បន្ទាត់​ក្រោម' +} ); diff --git a/sources/plugins/basicstyles/lang/ko.js b/sources/plugins/basicstyles/lang/ko.js new file mode 100644 index 00000000..53c2be18 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ko.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'ko', { + bold: '굵게', + italic: '기울임꼴', + strike: '취소선', + subscript: '아래 첨자', + superscript: '위 첨자', + underline: '밑줄' +} ); diff --git a/sources/plugins/basicstyles/lang/ku.js b/sources/plugins/basicstyles/lang/ku.js new file mode 100644 index 00000000..6dc67666 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ku.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'ku', { + bold: 'قەڵەو', + italic: 'لار', + strike: 'لێدان', + subscript: 'ژێرنووس', + superscript: 'سەرنووس', + underline: 'ژێرهێڵ' +} ); diff --git a/sources/plugins/basicstyles/lang/lt.js b/sources/plugins/basicstyles/lang/lt.js new file mode 100644 index 00000000..c42a74aa --- /dev/null +++ b/sources/plugins/basicstyles/lang/lt.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'lt', { + bold: 'Pusjuodis', + italic: 'Kursyvas', + strike: 'Perbrauktas', + subscript: 'Apatinis indeksas', + superscript: 'Viršutinis indeksas', + underline: 'Pabrauktas' +} ); diff --git a/sources/plugins/basicstyles/lang/lv.js b/sources/plugins/basicstyles/lang/lv.js new file mode 100644 index 00000000..227953ae --- /dev/null +++ b/sources/plugins/basicstyles/lang/lv.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'lv', { + bold: 'Treknināts', + italic: 'Kursīvs', + strike: 'Pārsvītrots', + subscript: 'Apakšrakstā', + superscript: 'Augšrakstā', + underline: 'Pasvītrots' +} ); diff --git a/sources/plugins/basicstyles/lang/mk.js b/sources/plugins/basicstyles/lang/mk.js new file mode 100644 index 00000000..a70ec268 --- /dev/null +++ b/sources/plugins/basicstyles/lang/mk.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'mk', { + bold: 'Bold', // MISSING + italic: 'Italic', // MISSING + strike: 'Strikethrough', // MISSING + subscript: 'Subscript', // MISSING + superscript: 'Superscript', // MISSING + underline: 'Underline' // MISSING +} ); diff --git a/sources/plugins/basicstyles/lang/mn.js b/sources/plugins/basicstyles/lang/mn.js new file mode 100644 index 00000000..262cf104 --- /dev/null +++ b/sources/plugins/basicstyles/lang/mn.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'mn', { + bold: 'Тод бүдүүн', + italic: 'Налуу', + strike: 'Дундуур нь зураастай болгох', + subscript: 'Суурь болгох', + superscript: 'Зэрэг болгох', + underline: 'Доогуур нь зураастай болгох' +} ); diff --git a/sources/plugins/basicstyles/lang/ms.js b/sources/plugins/basicstyles/lang/ms.js new file mode 100644 index 00000000..114b8e55 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ms.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'ms', { + bold: 'Bold', + italic: 'Italic', + strike: 'Strike Through', + subscript: 'Subscript', + superscript: 'Superscript', + underline: 'Underline' +} ); diff --git a/sources/plugins/basicstyles/lang/nb.js b/sources/plugins/basicstyles/lang/nb.js new file mode 100644 index 00000000..460de348 --- /dev/null +++ b/sources/plugins/basicstyles/lang/nb.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'nb', { + bold: 'Fet', + italic: 'Kursiv', + strike: 'Gjennomstreking', + subscript: 'Senket skrift', + superscript: 'Hevet skrift', + underline: 'Understreking' +} ); diff --git a/sources/plugins/basicstyles/lang/nl.js b/sources/plugins/basicstyles/lang/nl.js new file mode 100644 index 00000000..43a6aa69 --- /dev/null +++ b/sources/plugins/basicstyles/lang/nl.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'nl', { + bold: 'Vet', + italic: 'Cursief', + strike: 'Doorhalen', + subscript: 'Subscript', + superscript: 'Superscript', + underline: 'Onderstrepen' +} ); diff --git a/sources/plugins/basicstyles/lang/no.js b/sources/plugins/basicstyles/lang/no.js new file mode 100644 index 00000000..753d90a3 --- /dev/null +++ b/sources/plugins/basicstyles/lang/no.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'no', { + bold: 'Fet', + italic: 'Kursiv', + strike: 'Gjennomstreking', + subscript: 'Senket skrift', + superscript: 'Hevet skrift', + underline: 'Understreking' +} ); diff --git a/sources/plugins/basicstyles/lang/pl.js b/sources/plugins/basicstyles/lang/pl.js new file mode 100644 index 00000000..256630d5 --- /dev/null +++ b/sources/plugins/basicstyles/lang/pl.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'pl', { + bold: 'Pogrubienie', + italic: 'Kursywa', + strike: 'Przekreślenie', + subscript: 'Indeks dolny', + superscript: 'Indeks górny', + underline: 'Podkreślenie' +} ); diff --git a/sources/plugins/basicstyles/lang/pt-br.js b/sources/plugins/basicstyles/lang/pt-br.js new file mode 100644 index 00000000..655c5971 --- /dev/null +++ b/sources/plugins/basicstyles/lang/pt-br.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'pt-br', { + bold: 'Negrito', + italic: 'Itálico', + strike: 'Tachado', + subscript: 'Subscrito', + superscript: 'Sobrescrito', + underline: 'Sublinhado' +} ); diff --git a/sources/plugins/basicstyles/lang/pt.js b/sources/plugins/basicstyles/lang/pt.js new file mode 100644 index 00000000..c25ceb2e --- /dev/null +++ b/sources/plugins/basicstyles/lang/pt.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'pt', { + bold: 'Negrito', + italic: 'Itálico', + strike: 'Rasurado', + subscript: 'Superior à linha', + superscript: 'Inferior à Linha', + underline: 'Sublinhado' +} ); diff --git a/sources/plugins/basicstyles/lang/ro.js b/sources/plugins/basicstyles/lang/ro.js new file mode 100644 index 00000000..59c2483d --- /dev/null +++ b/sources/plugins/basicstyles/lang/ro.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'ro', { + bold: 'Îngroşat (bold)', + italic: 'Înclinat (italic)', + strike: 'Tăiat (strike through)', + subscript: 'Indice (subscript)', + superscript: 'Putere (superscript)', + underline: 'Subliniat (underline)' +} ); diff --git a/sources/plugins/basicstyles/lang/ru.js b/sources/plugins/basicstyles/lang/ru.js new file mode 100644 index 00000000..f87bea18 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ru.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'ru', { + bold: 'Полужирный', + italic: 'Курсив', + strike: 'Зачеркнутый', + subscript: 'Подстрочный индекс', + superscript: 'Надстрочный индекс', + underline: 'Подчеркнутый' +} ); diff --git a/sources/plugins/basicstyles/lang/si.js b/sources/plugins/basicstyles/lang/si.js new file mode 100644 index 00000000..8f7db5da --- /dev/null +++ b/sources/plugins/basicstyles/lang/si.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'si', { + bold: 'තද අකුරින් ලියනලද', + italic: 'බැධීඅකුරින් ලියන ලද', + strike: 'Strikethrough', // MISSING + subscript: 'Subscript', // MISSING + superscript: 'Superscript', // MISSING + underline: 'යටින් ඉරි අදින ලද' +} ); diff --git a/sources/plugins/basicstyles/lang/sk.js b/sources/plugins/basicstyles/lang/sk.js new file mode 100644 index 00000000..5d038c6d --- /dev/null +++ b/sources/plugins/basicstyles/lang/sk.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'sk', { + bold: 'Tučné', + italic: 'Kurzíva', + strike: 'Prečiarknuté', + subscript: 'Dolný index', + superscript: 'Horný index', + underline: 'Podčiarknuté' +} ); diff --git a/sources/plugins/basicstyles/lang/sl.js b/sources/plugins/basicstyles/lang/sl.js new file mode 100644 index 00000000..1397a700 --- /dev/null +++ b/sources/plugins/basicstyles/lang/sl.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'sl', { + bold: 'Krepko', + italic: 'Ležeče', + strike: 'Prečrtano', + subscript: 'Podpisano', + superscript: 'Nadpisano', + underline: 'Podčrtano' +} ); diff --git a/sources/plugins/basicstyles/lang/sq.js b/sources/plugins/basicstyles/lang/sq.js new file mode 100644 index 00000000..82242b26 --- /dev/null +++ b/sources/plugins/basicstyles/lang/sq.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'sq', { + bold: 'Trash', + italic: 'Pjerrët', + strike: 'Nëpërmes', + subscript: 'Nën-skriptë', + superscript: 'Super-skriptë', + underline: 'Nënvijëzuar' +} ); diff --git a/sources/plugins/basicstyles/lang/sr-latn.js b/sources/plugins/basicstyles/lang/sr-latn.js new file mode 100644 index 00000000..62f51edd --- /dev/null +++ b/sources/plugins/basicstyles/lang/sr-latn.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'sr-latn', { + bold: 'Podebljano', + italic: 'Kurziv', + strike: 'Precrtano', + subscript: 'Indeks', + superscript: 'Stepen', + underline: 'Podvučeno' +} ); diff --git a/sources/plugins/basicstyles/lang/sr.js b/sources/plugins/basicstyles/lang/sr.js new file mode 100644 index 00000000..59e6105b --- /dev/null +++ b/sources/plugins/basicstyles/lang/sr.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'sr', { + bold: 'Подебљано', + italic: 'Курзив', + strike: 'Прецртано', + subscript: 'Индекс', + superscript: 'Степен', + underline: 'Подвучено' +} ); diff --git a/sources/plugins/basicstyles/lang/sv.js b/sources/plugins/basicstyles/lang/sv.js new file mode 100644 index 00000000..afcbf3ff --- /dev/null +++ b/sources/plugins/basicstyles/lang/sv.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'sv', { + bold: 'Fet', + italic: 'Kursiv', + strike: 'Genomstruken', + subscript: 'Nedsänkta tecken', + superscript: 'Upphöjda tecken', + underline: 'Understruken' +} ); diff --git a/sources/plugins/basicstyles/lang/th.js b/sources/plugins/basicstyles/lang/th.js new file mode 100644 index 00000000..61700f54 --- /dev/null +++ b/sources/plugins/basicstyles/lang/th.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'th', { + bold: 'ตัวหนา', + italic: 'ตัวเอียง', + strike: 'ตัวขีดเส้นทับ', + subscript: 'ตัวห้อย', + superscript: 'ตัวยก', + underline: 'ตัวขีดเส้นใต้' +} ); diff --git a/sources/plugins/basicstyles/lang/tr.js b/sources/plugins/basicstyles/lang/tr.js new file mode 100644 index 00000000..0e226b89 --- /dev/null +++ b/sources/plugins/basicstyles/lang/tr.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'tr', { + bold: 'Kalın', + italic: 'İtalik', + strike: 'Üstü Çizgili', + subscript: 'Alt Simge', + superscript: 'Üst Simge', + underline: 'Altı Çizgili' +} ); diff --git a/sources/plugins/basicstyles/lang/tt.js b/sources/plugins/basicstyles/lang/tt.js new file mode 100644 index 00000000..6c4eb03f --- /dev/null +++ b/sources/plugins/basicstyles/lang/tt.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'tt', { + bold: 'Калын', + italic: 'Курсив', + strike: 'Сызылган', + subscript: 'Аскы индекс', + superscript: 'Өске индекс', + underline: 'Астына сызылган' +} ); diff --git a/sources/plugins/basicstyles/lang/ug.js b/sources/plugins/basicstyles/lang/ug.js new file mode 100644 index 00000000..10d42cdd --- /dev/null +++ b/sources/plugins/basicstyles/lang/ug.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'ug', { + bold: 'توم', + italic: 'يانتۇ', + strike: 'ئۆچۈرۈش سىزىقى', + subscript: 'تۆۋەن ئىندېكس', + superscript: 'يۇقىرى ئىندېكس', + underline: 'ئاستى سىزىق' +} ); diff --git a/sources/plugins/basicstyles/lang/uk.js b/sources/plugins/basicstyles/lang/uk.js new file mode 100644 index 00000000..7d5d84d9 --- /dev/null +++ b/sources/plugins/basicstyles/lang/uk.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'uk', { + bold: 'Жирний', + italic: 'Курсив', + strike: 'Закреслений', + subscript: 'Нижній індекс', + superscript: 'Верхній індекс', + underline: 'Підкреслений' +} ); diff --git a/sources/plugins/basicstyles/lang/vi.js b/sources/plugins/basicstyles/lang/vi.js new file mode 100644 index 00000000..cc1dfaac --- /dev/null +++ b/sources/plugins/basicstyles/lang/vi.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'vi', { + bold: 'Đậm', + italic: 'Nghiêng', + strike: 'Gạch xuyên ngang', + subscript: 'Chỉ số dưới', + superscript: 'Chỉ số trên', + underline: 'Gạch chân' +} ); diff --git a/sources/plugins/basicstyles/lang/zh-cn.js b/sources/plugins/basicstyles/lang/zh-cn.js new file mode 100644 index 00000000..538c36d2 --- /dev/null +++ b/sources/plugins/basicstyles/lang/zh-cn.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'zh-cn', { + bold: '加粗', + italic: '倾斜', + strike: '删除线', + subscript: '下标', + superscript: '上标', + underline: '下划线' +} ); diff --git a/sources/plugins/basicstyles/lang/zh.js b/sources/plugins/basicstyles/lang/zh.js new file mode 100644 index 00000000..c73c4d3f --- /dev/null +++ b/sources/plugins/basicstyles/lang/zh.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'zh', { + bold: '粗體', + italic: '斜體', + strike: '刪除線', + subscript: '下標', + superscript: '上標', + underline: '底線' +} ); diff --git a/sources/plugins/basicstyles/plugin.js b/sources/plugins/basicstyles/plugin.js new file mode 100644 index 00000000..3fa96373 --- /dev/null +++ b/sources/plugins/basicstyles/plugin.js @@ -0,0 +1,209 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.add( 'basicstyles', { + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'bold,italic,underline,strike,subscript,superscript', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + var order = 0; + // All buttons use the same code to register. So, to avoid + // duplications, let's use this tool function. + var addButtonCommand = function( buttonName, buttonLabel, commandName, styleDefiniton ) { + // Disable the command if no definition is configured. + if ( !styleDefiniton ) + return; + + var style = new CKEDITOR.style( styleDefiniton ), + forms = contentForms[ commandName ]; + + // Put the style as the most important form. + forms.unshift( style ); + + // Listen to contextual style activation. + editor.attachStyleStateChange( style, function( state ) { + !editor.readOnly && editor.getCommand( commandName ).setState( state ); + } ); + + // Create the command that can be used to apply the style. + editor.addCommand( commandName, new CKEDITOR.styleCommand( style, { + contentForms: forms + } ) ); + + // Register the button, if the button plugin is loaded. + if ( editor.ui.addButton ) { + editor.ui.addButton( buttonName, { + label: buttonLabel, + command: commandName, + toolbar: 'basicstyles,' + ( order += 10 ) + } ); + } + }; + + var contentForms = { + bold: [ + 'strong', + 'b', + [ 'span', function( el ) { + var fw = el.styles[ 'font-weight' ]; + return fw == 'bold' || +fw >= 700; + } ] + ], + + italic: [ + 'em', + 'i', + [ 'span', function( el ) { + return el.styles[ 'font-style' ] == 'italic'; + } ] + ], + + underline: [ + 'u', + [ 'span', function( el ) { + return el.styles[ 'text-decoration' ] == 'underline'; + } ] + ], + + strike: [ + 's', + 'strike', + [ 'span', function( el ) { + return el.styles[ 'text-decoration' ] == 'line-through'; + } ] + ], + + subscript: [ + 'sub' + ], + + superscript: [ + 'sup' + ] + }, + config = editor.config, + lang = editor.lang.basicstyles; + + addButtonCommand( 'Bold', lang.bold, 'bold', config.coreStyles_bold ); + addButtonCommand( 'Italic', lang.italic, 'italic', config.coreStyles_italic ); + addButtonCommand( 'Underline', lang.underline, 'underline', config.coreStyles_underline ); + addButtonCommand( 'Strike', lang.strike, 'strike', config.coreStyles_strike ); + addButtonCommand( 'Subscript', lang.subscript, 'subscript', config.coreStyles_subscript ); + addButtonCommand( 'Superscript', lang.superscript, 'superscript', config.coreStyles_superscript ); + + editor.setKeystroke( [ + [ CKEDITOR.CTRL + 66 /*B*/, 'bold' ], + [ CKEDITOR.CTRL + 73 /*I*/, 'italic' ], + [ CKEDITOR.CTRL + 85 /*U*/, 'underline' ] + ] ); + } +} ); + +// Basic Inline Styles. + +/** + * The style definition that applies the **bold** style to the text. + * + * Read more in the [documentation](#!/guide/dev_basicstyles) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/basicstyles.html). + * + * config.coreStyles_bold = { element: 'b', overrides: 'strong' }; + * + * config.coreStyles_bold = { + * element: 'span', + * attributes: { 'class': 'Bold' } + * }; + * + * @cfg + * @member CKEDITOR.config + */ +CKEDITOR.config.coreStyles_bold = { element: 'strong', overrides: 'b' }; + +/** + * The style definition that applies the *italics* style to the text. + * + * Read more in the [documentation](#!/guide/dev_basicstyles) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/basicstyles.html). + * + * config.coreStyles_italic = { element: 'i', overrides: 'em' }; + * + * CKEDITOR.config.coreStyles_italic = { + * element: 'span', + * attributes: { 'class': 'Italic' } + * }; + * + * @cfg + * @member CKEDITOR.config + */ +CKEDITOR.config.coreStyles_italic = { element: 'em', overrides: 'i' }; + +/** + * The style definition that applies the underline style to the text. + * + * Read more in the [documentation](#!/guide/dev_basicstyles) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/basicstyles.html). + * + * CKEDITOR.config.coreStyles_underline = { + * element: 'span', + * attributes: { 'class': 'Underline' } + * }; + * + * @cfg + * @member CKEDITOR.config + */ +CKEDITOR.config.coreStyles_underline = { element: 'u' }; + +/** + * The style definition that applies the strikethrough style to the text. + * + * Read more in the [documentation](#!/guide/dev_basicstyles) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/basicstyles.html). + * + * CKEDITOR.config.coreStyles_strike = { + * element: 'span', + * attributes: { 'class': 'Strikethrough' }, + * overrides: 'strike' + * }; + * + * @cfg + * @member CKEDITOR.config + */ +CKEDITOR.config.coreStyles_strike = { element: 's', overrides: 'strike' }; + +/** + * The style definition that applies the subscript style to the text. + * + * Read more in the [documentation](#!/guide/dev_basicstyles) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/basicstyles.html). + * + * CKEDITOR.config.coreStyles_subscript = { + * element: 'span', + * attributes: { 'class': 'Subscript' }, + * overrides: 'sub' + * }; + * + * @cfg + * @member CKEDITOR.config + */ +CKEDITOR.config.coreStyles_subscript = { element: 'sub' }; + +/** + * The style definition that applies the superscript style to the text. + * + * Read more in the [documentation](#!/guide/dev_basicstyles) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/basicstyles.html). + * + * CKEDITOR.config.coreStyles_superscript = { + * element: 'span', + * attributes: { 'class': 'Superscript' }, + * overrides: 'sup' + * }; + * + * @cfg + * @member CKEDITOR.config + */ +CKEDITOR.config.coreStyles_superscript = { element: 'sup' }; diff --git a/sources/plugins/bidi/icons/bidiltr.png b/sources/plugins/bidi/icons/bidiltr.png new file mode 100644 index 00000000..a909c010 Binary files /dev/null and b/sources/plugins/bidi/icons/bidiltr.png differ diff --git a/sources/plugins/bidi/icons/bidirtl.png b/sources/plugins/bidi/icons/bidirtl.png new file mode 100644 index 00000000..7dbad48c Binary files /dev/null and b/sources/plugins/bidi/icons/bidirtl.png differ diff --git a/sources/plugins/bidi/icons/hidpi/bidiltr.png b/sources/plugins/bidi/icons/hidpi/bidiltr.png new file mode 100644 index 00000000..c5998e00 Binary files /dev/null and b/sources/plugins/bidi/icons/hidpi/bidiltr.png differ diff --git a/sources/plugins/bidi/icons/hidpi/bidirtl.png b/sources/plugins/bidi/icons/hidpi/bidirtl.png new file mode 100644 index 00000000..8aa2adc8 Binary files /dev/null and b/sources/plugins/bidi/icons/hidpi/bidirtl.png differ diff --git a/sources/plugins/bidi/lang/af.js b/sources/plugins/bidi/lang/af.js new file mode 100644 index 00000000..048140a1 --- /dev/null +++ b/sources/plugins/bidi/lang/af.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'af', { + ltr: 'Skryfrigting van links na regs', + rtl: 'Skryfrigting van regs na links' +} ); diff --git a/sources/plugins/bidi/lang/ar.js b/sources/plugins/bidi/lang/ar.js new file mode 100644 index 00000000..78297ecb --- /dev/null +++ b/sources/plugins/bidi/lang/ar.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'ar', { + ltr: 'إتجاه النص من اليسار إلى اليمين', + rtl: 'إتجاه النص من اليمين إلى اليسار' +} ); diff --git a/sources/plugins/bidi/lang/bg.js b/sources/plugins/bidi/lang/bg.js new file mode 100644 index 00000000..b81ab861 --- /dev/null +++ b/sources/plugins/bidi/lang/bg.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'bg', { + ltr: 'Посока на текста от ляво на дясно', + rtl: 'Посока на текста от дясно на ляво' +} ); diff --git a/sources/plugins/bidi/lang/bn.js b/sources/plugins/bidi/lang/bn.js new file mode 100644 index 00000000..2c35288e --- /dev/null +++ b/sources/plugins/bidi/lang/bn.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'bn', { + ltr: 'Text direction from left to right', // MISSING + rtl: 'Text direction from right to left' // MISSING +} ); diff --git a/sources/plugins/bidi/lang/bs.js b/sources/plugins/bidi/lang/bs.js new file mode 100644 index 00000000..13f8ac49 --- /dev/null +++ b/sources/plugins/bidi/lang/bs.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'bs', { + ltr: 'Text direction from left to right', // MISSING + rtl: 'Text direction from right to left' // MISSING +} ); diff --git a/sources/plugins/bidi/lang/ca.js b/sources/plugins/bidi/lang/ca.js new file mode 100644 index 00000000..801a18f4 --- /dev/null +++ b/sources/plugins/bidi/lang/ca.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'ca', { + ltr: 'Direcció del text d\'esquerra a dreta', + rtl: 'Direcció del text de dreta a esquerra' +} ); diff --git a/sources/plugins/bidi/lang/cs.js b/sources/plugins/bidi/lang/cs.js new file mode 100644 index 00000000..b0852c0a --- /dev/null +++ b/sources/plugins/bidi/lang/cs.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'cs', { + ltr: 'Směr textu zleva doprava', + rtl: 'Směr textu zprava doleva' +} ); diff --git a/sources/plugins/bidi/lang/cy.js b/sources/plugins/bidi/lang/cy.js new file mode 100644 index 00000000..17e9d3bb --- /dev/null +++ b/sources/plugins/bidi/lang/cy.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'cy', { + ltr: 'Cyfeiriad testun o\'r chwith i\'r dde', + rtl: 'Cyfeiriad testun o\'r dde i\'r chwith' +} ); diff --git a/sources/plugins/bidi/lang/da.js b/sources/plugins/bidi/lang/da.js new file mode 100644 index 00000000..a53fbf7b --- /dev/null +++ b/sources/plugins/bidi/lang/da.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'da', { + ltr: 'Tekstretning fra venstre til højre', + rtl: 'Tekstretning fra højre til venstre' +} ); diff --git a/sources/plugins/bidi/lang/de.js b/sources/plugins/bidi/lang/de.js new file mode 100644 index 00000000..043fbc8b --- /dev/null +++ b/sources/plugins/bidi/lang/de.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'de', { + ltr: 'Leserichtung von Links nach Rechts', + rtl: 'Leserichtung von Rechts nach Links' +} ); diff --git a/sources/plugins/bidi/lang/el.js b/sources/plugins/bidi/lang/el.js new file mode 100644 index 00000000..7c38e8d7 --- /dev/null +++ b/sources/plugins/bidi/lang/el.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'el', { + ltr: 'Διεύθυνση κειμένου από αριστερά στα δεξιά', + rtl: 'Διεύθυνση κειμένου από δεξιά στα αριστερά' +} ); diff --git a/sources/plugins/bidi/lang/en-au.js b/sources/plugins/bidi/lang/en-au.js new file mode 100644 index 00000000..a5fe457e --- /dev/null +++ b/sources/plugins/bidi/lang/en-au.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'en-au', { + ltr: 'Text direction from left to right', // MISSING + rtl: 'Text direction from right to left' // MISSING +} ); diff --git a/sources/plugins/bidi/lang/en-ca.js b/sources/plugins/bidi/lang/en-ca.js new file mode 100644 index 00000000..8424bf67 --- /dev/null +++ b/sources/plugins/bidi/lang/en-ca.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'en-ca', { + ltr: 'Text direction from left to right', // MISSING + rtl: 'Text direction from right to left' // MISSING +} ); diff --git a/sources/plugins/bidi/lang/en-gb.js b/sources/plugins/bidi/lang/en-gb.js new file mode 100644 index 00000000..60c192fb --- /dev/null +++ b/sources/plugins/bidi/lang/en-gb.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'en-gb', { + ltr: 'Text direction from left to right', + rtl: 'Text direction from right to left' +} ); diff --git a/sources/plugins/bidi/lang/en.js b/sources/plugins/bidi/lang/en.js new file mode 100644 index 00000000..a685a87d --- /dev/null +++ b/sources/plugins/bidi/lang/en.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'en', { + ltr: 'Text direction from left to right', + rtl: 'Text direction from right to left' +} ); diff --git a/sources/plugins/bidi/lang/eo.js b/sources/plugins/bidi/lang/eo.js new file mode 100644 index 00000000..c63e15bb --- /dev/null +++ b/sources/plugins/bidi/lang/eo.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'eo', { + ltr: 'Tekstdirekto de maldekstre dekstren', + rtl: 'Tekstdirekto de dekstre maldekstren' +} ); diff --git a/sources/plugins/bidi/lang/es.js b/sources/plugins/bidi/lang/es.js new file mode 100644 index 00000000..6ea13209 --- /dev/null +++ b/sources/plugins/bidi/lang/es.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'es', { + ltr: 'Dirección del texto de izquierda a derecha', + rtl: 'Dirección del texto de derecha a izquierda' +} ); diff --git a/sources/plugins/bidi/lang/et.js b/sources/plugins/bidi/lang/et.js new file mode 100644 index 00000000..4f8517d6 --- /dev/null +++ b/sources/plugins/bidi/lang/et.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'et', { + ltr: 'Teksti suund vasakult paremale', + rtl: 'Teksti suund paremalt vasakule' +} ); diff --git a/sources/plugins/bidi/lang/eu.js b/sources/plugins/bidi/lang/eu.js new file mode 100644 index 00000000..8b46a9c4 --- /dev/null +++ b/sources/plugins/bidi/lang/eu.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'eu', { + ltr: 'Testuaren norantza ezkerretik eskuinera', + rtl: 'Testuaren norantza eskuinetik ezkerrera' +} ); diff --git a/sources/plugins/bidi/lang/fa.js b/sources/plugins/bidi/lang/fa.js new file mode 100644 index 00000000..5d9a6eac --- /dev/null +++ b/sources/plugins/bidi/lang/fa.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'fa', { + ltr: 'جهت متن از چپ به راست', + rtl: 'جهت متن از راست به چپ' +} ); diff --git a/sources/plugins/bidi/lang/fi.js b/sources/plugins/bidi/lang/fi.js new file mode 100644 index 00000000..805f5b10 --- /dev/null +++ b/sources/plugins/bidi/lang/fi.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'fi', { + ltr: 'Tekstin suunta vasemmalta oikealle', + rtl: 'Tekstin suunta oikealta vasemmalle' +} ); diff --git a/sources/plugins/bidi/lang/fo.js b/sources/plugins/bidi/lang/fo.js new file mode 100644 index 00000000..4e1c9408 --- /dev/null +++ b/sources/plugins/bidi/lang/fo.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'fo', { + ltr: 'Tekstkós frá vinstru til høgru', + rtl: 'Tekstkós frá høgru til vinstru' +} ); diff --git a/sources/plugins/bidi/lang/fr-ca.js b/sources/plugins/bidi/lang/fr-ca.js new file mode 100644 index 00000000..184ed8ef --- /dev/null +++ b/sources/plugins/bidi/lang/fr-ca.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'fr-ca', { + ltr: 'Direction du texte de gauche à droite', + rtl: 'Direction du texte de droite à gauche' +} ); diff --git a/sources/plugins/bidi/lang/fr.js b/sources/plugins/bidi/lang/fr.js new file mode 100644 index 00000000..549a465d --- /dev/null +++ b/sources/plugins/bidi/lang/fr.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'fr', { + ltr: 'Direction du texte de la gauche vers la droite', + rtl: 'Direction du texte de la droite vers la gauche' +} ); diff --git a/sources/plugins/bidi/lang/gl.js b/sources/plugins/bidi/lang/gl.js new file mode 100644 index 00000000..cb753e3f --- /dev/null +++ b/sources/plugins/bidi/lang/gl.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'gl', { + ltr: 'Dirección do texto de esquerda a dereita', + rtl: 'Dirección do texto de dereita a esquerda' +} ); diff --git a/sources/plugins/bidi/lang/gu.js b/sources/plugins/bidi/lang/gu.js new file mode 100644 index 00000000..a75d98a8 --- /dev/null +++ b/sources/plugins/bidi/lang/gu.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'gu', { + ltr: 'ટેક્ષ્ત્ ની દિશા ડાબે થી જમણે', + rtl: 'ટેક્ષ્ત્ ની દિશા જમણે થી ડાબે' +} ); diff --git a/sources/plugins/bidi/lang/he.js b/sources/plugins/bidi/lang/he.js new file mode 100644 index 00000000..89840cd9 --- /dev/null +++ b/sources/plugins/bidi/lang/he.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'he', { + ltr: 'כיוון טקסט משמאל לימין (LTR)', + rtl: 'כיוון טקסט מימין לשמאל (RTL)' +} ); diff --git a/sources/plugins/bidi/lang/hi.js b/sources/plugins/bidi/lang/hi.js new file mode 100644 index 00000000..66697cc8 --- /dev/null +++ b/sources/plugins/bidi/lang/hi.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'hi', { + ltr: 'Text direction from left to right', // MISSING + rtl: 'Text direction from right to left' // MISSING +} ); diff --git a/sources/plugins/bidi/lang/hr.js b/sources/plugins/bidi/lang/hr.js new file mode 100644 index 00000000..0be7b34c --- /dev/null +++ b/sources/plugins/bidi/lang/hr.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'hr', { + ltr: 'Smjer teksta s lijeva na desno', + rtl: 'Smjer teksta s desna na lijevo' +} ); diff --git a/sources/plugins/bidi/lang/hu.js b/sources/plugins/bidi/lang/hu.js new file mode 100644 index 00000000..58797e5d --- /dev/null +++ b/sources/plugins/bidi/lang/hu.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'hu', { + ltr: 'Szöveg iránya balról jobbra', + rtl: 'Szöveg iránya jobbról balra' +} ); diff --git a/sources/plugins/bidi/lang/id.js b/sources/plugins/bidi/lang/id.js new file mode 100644 index 00000000..2be45ac8 --- /dev/null +++ b/sources/plugins/bidi/lang/id.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'id', { + ltr: 'Arah penulisan dari kiri ke kanan.', + rtl: 'Arah penulisan dari kanan ke kiri.' +} ); diff --git a/sources/plugins/bidi/lang/is.js b/sources/plugins/bidi/lang/is.js new file mode 100644 index 00000000..cd41df26 --- /dev/null +++ b/sources/plugins/bidi/lang/is.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'is', { + ltr: 'Text direction from left to right', // MISSING + rtl: 'Text direction from right to left' // MISSING +} ); diff --git a/sources/plugins/bidi/lang/it.js b/sources/plugins/bidi/lang/it.js new file mode 100644 index 00000000..d4e9de6a --- /dev/null +++ b/sources/plugins/bidi/lang/it.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'it', { + ltr: 'Direzione del testo da sinistra verso destra', + rtl: 'Direzione del testo da destra verso sinistra' +} ); diff --git a/sources/plugins/bidi/lang/ja.js b/sources/plugins/bidi/lang/ja.js new file mode 100644 index 00000000..c79e1b64 --- /dev/null +++ b/sources/plugins/bidi/lang/ja.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'ja', { + ltr: 'テキストの向き : 左から右へ', + rtl: 'テキストの向き : 右から左へ' +} ); diff --git a/sources/plugins/bidi/lang/ka.js b/sources/plugins/bidi/lang/ka.js new file mode 100644 index 00000000..cf731816 --- /dev/null +++ b/sources/plugins/bidi/lang/ka.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'ka', { + ltr: 'ტექსტის მიმართულება მარცხნიდან მარჯვნივ', + rtl: 'ტექსტის მიმართულება მარჯვნიდან მარცხნივ' +} ); diff --git a/sources/plugins/bidi/lang/km.js b/sources/plugins/bidi/lang/km.js new file mode 100644 index 00000000..b28d330a --- /dev/null +++ b/sources/plugins/bidi/lang/km.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'km', { + ltr: 'ទិស​ដៅ​អក្សរ​ពី​ឆ្វេង​ទៅ​ស្ដាំ', + rtl: 'ទិស​ដៅ​អក្សរ​ពី​ស្ដាំ​ទៅ​ឆ្វេង' +} ); diff --git a/sources/plugins/bidi/lang/ko.js b/sources/plugins/bidi/lang/ko.js new file mode 100644 index 00000000..923f70ce --- /dev/null +++ b/sources/plugins/bidi/lang/ko.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'ko', { + ltr: '텍스트 방향이 왼쪽에서 오른쪽으로 ', + rtl: '텍스트 방향이 오른쪽에서 왼쪽으로' +} ); diff --git a/sources/plugins/bidi/lang/ku.js b/sources/plugins/bidi/lang/ku.js new file mode 100644 index 00000000..0d563c76 --- /dev/null +++ b/sources/plugins/bidi/lang/ku.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'ku', { + ltr: 'ئاراستەی نووسە لە چەپ بۆ ڕاست', + rtl: 'ئاراستەی نووسە لە ڕاست بۆ چەپ' +} ); diff --git a/sources/plugins/bidi/lang/lt.js b/sources/plugins/bidi/lang/lt.js new file mode 100644 index 00000000..e455b52b --- /dev/null +++ b/sources/plugins/bidi/lang/lt.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'lt', { + ltr: 'Tekstas iš kairės į dešinę', + rtl: 'Tekstas iš dešinės į kairę' +} ); diff --git a/sources/plugins/bidi/lang/lv.js b/sources/plugins/bidi/lang/lv.js new file mode 100644 index 00000000..b9e7d130 --- /dev/null +++ b/sources/plugins/bidi/lang/lv.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'lv', { + ltr: 'Teksta virziens no kreisās uz labo', + rtl: 'Teksta virziens no labās uz kreiso' +} ); diff --git a/sources/plugins/bidi/lang/mk.js b/sources/plugins/bidi/lang/mk.js new file mode 100644 index 00000000..f7771932 --- /dev/null +++ b/sources/plugins/bidi/lang/mk.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'mk', { + ltr: 'Text direction from left to right', // MISSING + rtl: 'Text direction from right to left' // MISSING +} ); diff --git a/sources/plugins/bidi/lang/mn.js b/sources/plugins/bidi/lang/mn.js new file mode 100644 index 00000000..acade9af --- /dev/null +++ b/sources/plugins/bidi/lang/mn.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'mn', { + ltr: 'Зүүнээс баруун тийш бичлэг', + rtl: 'Баруунаас зүүн тийш бичлэг' +} ); diff --git a/sources/plugins/bidi/lang/ms.js b/sources/plugins/bidi/lang/ms.js new file mode 100644 index 00000000..a86971b6 --- /dev/null +++ b/sources/plugins/bidi/lang/ms.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'ms', { + ltr: 'Text direction from left to right', // MISSING + rtl: 'Text direction from right to left' // MISSING +} ); diff --git a/sources/plugins/bidi/lang/nb.js b/sources/plugins/bidi/lang/nb.js new file mode 100644 index 00000000..3a1225b9 --- /dev/null +++ b/sources/plugins/bidi/lang/nb.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'nb', { + ltr: 'Tekstretning fra venstre til høyre', + rtl: 'Tekstretning fra høyre til venstre' +} ); diff --git a/sources/plugins/bidi/lang/nl.js b/sources/plugins/bidi/lang/nl.js new file mode 100644 index 00000000..d9cf8f7c --- /dev/null +++ b/sources/plugins/bidi/lang/nl.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'nl', { + ltr: 'Schrijfrichting van links naar rechts', + rtl: 'Schrijfrichting van rechts naar links' +} ); diff --git a/sources/plugins/bidi/lang/no.js b/sources/plugins/bidi/lang/no.js new file mode 100644 index 00000000..309a7474 --- /dev/null +++ b/sources/plugins/bidi/lang/no.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'no', { + ltr: 'Tekstretning fra venstre til høyre', + rtl: 'Tekstretning fra høyre til venstre' +} ); diff --git a/sources/plugins/bidi/lang/pl.js b/sources/plugins/bidi/lang/pl.js new file mode 100644 index 00000000..b9ad7eb9 --- /dev/null +++ b/sources/plugins/bidi/lang/pl.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'pl', { + ltr: 'Kierunek tekstu od lewej strony do prawej', + rtl: 'Kierunek tekstu od prawej strony do lewej' +} ); diff --git a/sources/plugins/bidi/lang/pt-br.js b/sources/plugins/bidi/lang/pt-br.js new file mode 100644 index 00000000..f97f3db1 --- /dev/null +++ b/sources/plugins/bidi/lang/pt-br.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'pt-br', { + ltr: 'Direção do texto da esquerda para a direita', + rtl: 'Direção do texto da direita para a esquerda' +} ); diff --git a/sources/plugins/bidi/lang/pt.js b/sources/plugins/bidi/lang/pt.js new file mode 100644 index 00000000..5dd99b3a --- /dev/null +++ b/sources/plugins/bidi/lang/pt.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'pt', { + ltr: 'Direção do texto da esquerda para a direita', + rtl: 'Direção do texto da direita para a esquerda' +} ); diff --git a/sources/plugins/bidi/lang/ro.js b/sources/plugins/bidi/lang/ro.js new file mode 100644 index 00000000..13a560b0 --- /dev/null +++ b/sources/plugins/bidi/lang/ro.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'ro', { + ltr: 'Direcția textului de la stânga la dreapta', + rtl: 'Direcția textului de la dreapta la stânga' +} ); diff --git a/sources/plugins/bidi/lang/ru.js b/sources/plugins/bidi/lang/ru.js new file mode 100644 index 00000000..e3dc391b --- /dev/null +++ b/sources/plugins/bidi/lang/ru.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'ru', { + ltr: 'Направление текста слева направо', + rtl: 'Направление текста справа налево' +} ); diff --git a/sources/plugins/bidi/lang/si.js b/sources/plugins/bidi/lang/si.js new file mode 100644 index 00000000..5260df1a --- /dev/null +++ b/sources/plugins/bidi/lang/si.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'si', { + ltr: 'වගන්ති දිශාව වමේ සිට දකුණට', + rtl: 'වගන්ති දිශාව දකුණේ සිට වමට' +} ); diff --git a/sources/plugins/bidi/lang/sk.js b/sources/plugins/bidi/lang/sk.js new file mode 100644 index 00000000..8f4a3587 --- /dev/null +++ b/sources/plugins/bidi/lang/sk.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'sk', { + ltr: 'Smer textu zľava doprava', + rtl: 'Smer textu sprava doľava' +} ); diff --git a/sources/plugins/bidi/lang/sl.js b/sources/plugins/bidi/lang/sl.js new file mode 100644 index 00000000..972d355c --- /dev/null +++ b/sources/plugins/bidi/lang/sl.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'sl', { + ltr: 'Smer besedila od leve proti desni', + rtl: 'Smer besedila od desne proti levi' +} ); diff --git a/sources/plugins/bidi/lang/sq.js b/sources/plugins/bidi/lang/sq.js new file mode 100644 index 00000000..55a2152b --- /dev/null +++ b/sources/plugins/bidi/lang/sq.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'sq', { + ltr: 'Drejtimi i tekstit nga e majta në të djathtë', + rtl: 'Drejtimi i tekstit nga e djathta në të majtë' +} ); diff --git a/sources/plugins/bidi/lang/sr-latn.js b/sources/plugins/bidi/lang/sr-latn.js new file mode 100644 index 00000000..bf349403 --- /dev/null +++ b/sources/plugins/bidi/lang/sr-latn.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'sr-latn', { + ltr: 'Text direction from left to right', // MISSING + rtl: 'Text direction from right to left' // MISSING +} ); diff --git a/sources/plugins/bidi/lang/sr.js b/sources/plugins/bidi/lang/sr.js new file mode 100644 index 00000000..c8cff445 --- /dev/null +++ b/sources/plugins/bidi/lang/sr.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'sr', { + ltr: 'Text direction from left to right', // MISSING + rtl: 'Text direction from right to left' // MISSING +} ); diff --git a/sources/plugins/bidi/lang/sv.js b/sources/plugins/bidi/lang/sv.js new file mode 100644 index 00000000..b2056407 --- /dev/null +++ b/sources/plugins/bidi/lang/sv.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'sv', { + ltr: 'Text riktning från vänster till höger', + rtl: 'Text riktning från höger till vänster' +} ); diff --git a/sources/plugins/bidi/lang/th.js b/sources/plugins/bidi/lang/th.js new file mode 100644 index 00000000..fefb49c7 --- /dev/null +++ b/sources/plugins/bidi/lang/th.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'th', { + ltr: 'Text direction from left to right', // MISSING + rtl: 'Text direction from right to left' // MISSING +} ); diff --git a/sources/plugins/bidi/lang/tr.js b/sources/plugins/bidi/lang/tr.js new file mode 100644 index 00000000..11cde918 --- /dev/null +++ b/sources/plugins/bidi/lang/tr.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'tr', { + ltr: 'Metin yönü soldan sağa', + rtl: 'Metin yönü sağdan sola' +} ); diff --git a/sources/plugins/bidi/lang/tt.js b/sources/plugins/bidi/lang/tt.js new file mode 100644 index 00000000..b60b3b28 --- /dev/null +++ b/sources/plugins/bidi/lang/tt.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'tt', { + ltr: 'Сулдан уңга язылыш', + rtl: 'Уңнан сулга язылыш' +} ); diff --git a/sources/plugins/bidi/lang/ug.js b/sources/plugins/bidi/lang/ug.js new file mode 100644 index 00000000..b17d36cc --- /dev/null +++ b/sources/plugins/bidi/lang/ug.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'ug', { + ltr: 'تېكىست يۆنىلىشى سولدىن ئوڭغا', + rtl: 'تېكىست يۆنىلىشى ئوڭدىن سولغا' +} ); diff --git a/sources/plugins/bidi/lang/uk.js b/sources/plugins/bidi/lang/uk.js new file mode 100644 index 00000000..a74f09fc --- /dev/null +++ b/sources/plugins/bidi/lang/uk.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'uk', { + ltr: 'Напрямок тексту зліва направо', + rtl: 'Напрямок тексту справа наліво' +} ); diff --git a/sources/plugins/bidi/lang/vi.js b/sources/plugins/bidi/lang/vi.js new file mode 100644 index 00000000..cc6fd7b0 --- /dev/null +++ b/sources/plugins/bidi/lang/vi.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'vi', { + ltr: 'Văn bản hướng từ trái sang phải', + rtl: 'Văn bản hướng từ phải sang trái' +} ); diff --git a/sources/plugins/bidi/lang/zh-cn.js b/sources/plugins/bidi/lang/zh-cn.js new file mode 100644 index 00000000..d56019e2 --- /dev/null +++ b/sources/plugins/bidi/lang/zh-cn.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'zh-cn', { + ltr: '文字方向为从左至右', + rtl: '文字方向为从右至左' +} ); diff --git a/sources/plugins/bidi/lang/zh.js b/sources/plugins/bidi/lang/zh.js new file mode 100644 index 00000000..ff5db4f9 --- /dev/null +++ b/sources/plugins/bidi/lang/zh.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'bidi', 'zh', { + ltr: '文字方向從左至右', + rtl: '文字方向從右至左' +} ); diff --git a/sources/plugins/bidi/plugin.js b/sources/plugins/bidi/plugin.js new file mode 100644 index 00000000..bfe3ffcb --- /dev/null +++ b/sources/plugins/bidi/plugin.js @@ -0,0 +1,320 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +( function() { + var guardElements = { table: 1, ul: 1, ol: 1, blockquote: 1, div: 1 }, + directSelectionGuardElements = {}, + // All guard elements which can have a direction applied on them. + allGuardElements = {}; + CKEDITOR.tools.extend( directSelectionGuardElements, guardElements, { tr: 1, p: 1, div: 1, li: 1 } ); + CKEDITOR.tools.extend( allGuardElements, directSelectionGuardElements, { td: 1 } ); + + function setToolbarStates( editor, path ) { + var useComputedState = editor.config.useComputedState, + selectedElement; + + useComputedState = useComputedState === undefined || useComputedState; + + // We can use computedState provided by the browser or traverse parents manually. + if ( !useComputedState ) + selectedElement = getElementForDirection( path.lastElement, editor.editable() ); + + selectedElement = selectedElement || path.block || path.blockLimit; + + // If we're having BODY here, user probably done CTRL+A, let's try to get the enclosed node, if any. + if ( selectedElement.equals( editor.editable() ) ) { + var enclosedNode = editor.getSelection().getRanges()[ 0 ].getEnclosedNode(); + enclosedNode && enclosedNode.type == CKEDITOR.NODE_ELEMENT && ( selectedElement = enclosedNode ); + } + + if ( !selectedElement ) + return; + + var selectionDir = useComputedState ? selectedElement.getComputedStyle( 'direction' ) : selectedElement.getStyle( 'direction' ) || selectedElement.getAttribute( 'dir' ); + + editor.getCommand( 'bidirtl' ).setState( selectionDir == 'rtl' ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF ); + editor.getCommand( 'bidiltr' ).setState( selectionDir == 'ltr' ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF ); + } + + function handleMixedDirContent( editor, path ) { + var directionNode = path.block || path.blockLimit || editor.editable(); + var pathDir = directionNode.getDirection( 1 ); + if ( pathDir != ( editor._.selDir || editor.lang.dir ) ) { + editor._.selDir = pathDir; + editor.fire( 'contentDirChanged', pathDir ); + } + } + + // Returns element with possibility of applying the direction. + // @param node + function getElementForDirection( node, root ) { + while ( node && !( node.getName() in allGuardElements || node.equals( root ) ) ) { + var parent = node.getParent(); + if ( !parent ) + break; + + node = parent; + } + + return node; + } + + function switchDir( element, dir, editor, database ) { + if ( element.isReadOnly() || element.equals( editor.editable() ) ) + return; + + // Mark this element as processed by switchDir. + CKEDITOR.dom.element.setMarker( database, element, 'bidi_processed', 1 ); + + // Check whether one of the ancestors has already been styled. + var parent = element, + editable = editor.editable(); + while ( ( parent = parent.getParent() ) && !parent.equals( editable ) ) { + if ( parent.getCustomData( 'bidi_processed' ) ) { + // Ancestor style must dominate. + element.removeStyle( 'direction' ); + element.removeAttribute( 'dir' ); + return; + } + } + + var useComputedState = ( 'useComputedState' in editor.config ) ? editor.config.useComputedState : 1; + + var elementDir = useComputedState ? element.getComputedStyle( 'direction' ) : element.getStyle( 'direction' ) || element.hasAttribute( 'dir' ); + + // Stop if direction is same as present. + if ( elementDir == dir ) + return; + + // Clear direction on this element. + element.removeStyle( 'direction' ); + + // Do the second check when computed state is ON, to check + // if we need to apply explicit direction on this element. + if ( useComputedState ) { + element.removeAttribute( 'dir' ); + if ( dir != element.getComputedStyle( 'direction' ) ) { + element.setAttribute( 'dir', dir ); + } + } else { + // Set new direction for this element. + element.setAttribute( 'dir', dir ); + } + + editor.forceNextSelectionCheck(); + + return; + } + + function getFullySelected( range, elements, enterMode ) { + var ancestor = range.getCommonAncestor( false, true ); + + range = range.clone(); + range.enlarge( enterMode == CKEDITOR.ENTER_BR ? CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS : CKEDITOR.ENLARGE_BLOCK_CONTENTS ); + + if ( range.checkBoundaryOfElement( ancestor, CKEDITOR.START ) && range.checkBoundaryOfElement( ancestor, CKEDITOR.END ) ) { + var parent; + while ( ancestor && ancestor.type == CKEDITOR.NODE_ELEMENT && ( parent = ancestor.getParent() ) && parent.getChildCount() == 1 && !( ancestor.getName() in elements ) ) + ancestor = parent; + + return ancestor.type == CKEDITOR.NODE_ELEMENT && ( ancestor.getName() in elements ) && ancestor; + } + } + + function bidiCommand( dir ) { + return { + // It applies to a "block-like" context. + context: 'p', + allowedContent: { + 'h1 h2 h3 h4 h5 h6 table ul ol blockquote div tr p div li td': { + propertiesOnly: true, + attributes: 'dir' + } + }, + requiredContent: 'p[dir]', + refresh: function( editor, path ) { + setToolbarStates( editor, path ); + handleMixedDirContent( editor, path ); + }, + exec: function( editor ) { + var selection = editor.getSelection(), + enterMode = editor.config.enterMode, + ranges = selection.getRanges(); + + if ( ranges && ranges.length ) { + var database = {}; + + // Creates bookmarks for selection, as we may split some blocks. + var bookmarks = selection.createBookmarks(); + + var rangeIterator = ranges.createIterator(), + range, + i = 0; + + while ( ( range = rangeIterator.getNextRange( 1 ) ) ) { + // Apply do directly selected elements from guardElements. + var selectedElement = range.getEnclosedNode(); + + // If this is not our element of interest, apply to fully selected elements from guardElements. + if ( !selectedElement || selectedElement && !( selectedElement.type == CKEDITOR.NODE_ELEMENT && selectedElement.getName() in directSelectionGuardElements ) ) + selectedElement = getFullySelected( range, guardElements, enterMode ); + + selectedElement && switchDir( selectedElement, dir, editor, database ); + + var iterator, block; + + // Walker searching for guardElements. + var walker = new CKEDITOR.dom.walker( range ); + + var start = bookmarks[ i ].startNode, + end = bookmarks[ i++ ].endNode; + + walker.evaluator = function( node ) { + var enterTagName = ( enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ); + + function isNodeElement( node ) { + return node ? ( node.type == CKEDITOR.NODE_ELEMENT ) : false; + } + + function isGuard( node ) { + return node.getName() in guardElements; + } + + return !!( isNodeElement( node ) && isGuard( node ) && !( node.is( enterTagName ) && isNodeElement( node.getParent() ) && node.getParent().is( 'blockquote' ) ) && + // Element must be fully included in the range as well. (#6485). + node.getPosition( start ) & CKEDITOR.POSITION_FOLLOWING && + ( ( node.getPosition( end ) & CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_CONTAINS ) == CKEDITOR.POSITION_PRECEDING ) ); + }; + + while ( ( block = walker.next() ) ) + switchDir( block, dir, editor, database ); + + iterator = range.createIterator(); + iterator.enlargeBr = enterMode != CKEDITOR.ENTER_BR; + + while ( ( block = iterator.getNextParagraph( enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ) ) ) + switchDir( block, dir, editor, database ); + } + + CKEDITOR.dom.element.clearAllMarkers( database ); + + editor.forceNextSelectionCheck(); + // Restore selection position. + selection.selectBookmarks( bookmarks ); + + editor.focus(); + } + } + }; + } + + CKEDITOR.plugins.add( 'bidi', { + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'bidiltr,bidirtl', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + if ( editor.blockless ) + return; + + // All buttons use the same code to register. So, to avoid + // duplications, let's use this tool function. + function addButtonCommand( buttonName, buttonLabel, commandName, commandDef, order ) { + editor.addCommand( commandName, new CKEDITOR.command( editor, commandDef ) ); + + if ( editor.ui.addButton ) { + editor.ui.addButton( buttonName, { + label: buttonLabel, + command: commandName, + toolbar: 'bidi,' + order + } ); + } + } + + var lang = editor.lang.bidi; + + addButtonCommand( 'BidiLtr', lang.ltr, 'bidiltr', bidiCommand( 'ltr' ), 10 ); + addButtonCommand( 'BidiRtl', lang.rtl, 'bidirtl', bidiCommand( 'rtl' ), 20 ); + + editor.on( 'contentDom', function() { + editor.document.on( 'dirChanged', function( evt ) { + editor.fire( 'dirChanged', { + node: evt.data, + dir: evt.data.getDirection( 1 ) + } ); + } ); + } ); + + // Indicate that the current selection is in different direction than the UI. + editor.on( 'contentDirChanged', function( evt ) { + var func = ( editor.lang.dir != evt.data ? 'add' : 'remove' ) + 'Class'; + var toolbar = editor.ui.space( editor.config.toolbarLocation ); + if ( toolbar ) + toolbar[ func ]( 'cke_mixed_dir_content' ); + } ); + } + } ); + + // If the element direction changed, we need to switch the margins of + // the element and all its children, so it will get really reflected + // like a mirror. (#5910) + function isOffline( el ) { + var html = el.getDocument().getBody().getParent(); + while ( el ) { + if ( el.equals( html ) ) + return false; + el = el.getParent(); + } + return true; + } + + function dirChangeNotifier( org ) { + var isAttribute = org == elementProto.setAttribute, + isRemoveAttribute = org == elementProto.removeAttribute, + dirStyleRegexp = /\bdirection\s*:\s*(.*?)\s*(:?$|;)/; + + return function( name, val ) { + if ( !this.isReadOnly() ) { + var orgDir; + if ( ( name == ( isAttribute || isRemoveAttribute ? 'dir' : 'direction' ) || name == 'style' && ( isRemoveAttribute || dirStyleRegexp.test( val ) ) ) && !isOffline( this ) ) { + orgDir = this.getDirection( 1 ); + var retval = org.apply( this, arguments ); + if ( orgDir != this.getDirection( 1 ) ) { + this.getDocument().fire( 'dirChanged', this ); + return retval; + } + } + } + + return org.apply( this, arguments ); + }; + } + + var elementProto = CKEDITOR.dom.element.prototype, + methods = [ 'setStyle', 'removeStyle', 'setAttribute', 'removeAttribute' ]; + for ( var i = 0; i < methods.length; i++ ) + elementProto[ methods[ i ] ] = CKEDITOR.tools.override( elementProto[ methods[ i ] ], dirChangeNotifier ); +} )(); + +/** + * Fired when the language direction of an element is changed. + * + * @event dirChanged + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param data + * @param {CKEDITOR.dom.node} data.node The element that is being changed. + * @param {String} data.dir The new direction. + */ + +/** + * Fired when the language direction in the specific cursor position is changed + * + * @event contentDirChanged + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param {String} data The direction in the current position. + */ diff --git a/sources/plugins/blockquote/icons/blockquote.png b/sources/plugins/blockquote/icons/blockquote.png new file mode 100644 index 00000000..95293e25 Binary files /dev/null and b/sources/plugins/blockquote/icons/blockquote.png differ diff --git a/sources/plugins/blockquote/icons/hidpi/blockquote.png b/sources/plugins/blockquote/icons/hidpi/blockquote.png new file mode 100644 index 00000000..50c23b9f Binary files /dev/null and b/sources/plugins/blockquote/icons/hidpi/blockquote.png differ diff --git a/sources/plugins/blockquote/lang/af.js b/sources/plugins/blockquote/lang/af.js new file mode 100644 index 00000000..e615381f --- /dev/null +++ b/sources/plugins/blockquote/lang/af.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'af', { + toolbar: 'Sitaatblok' +} ); diff --git a/sources/plugins/blockquote/lang/ar.js b/sources/plugins/blockquote/lang/ar.js new file mode 100644 index 00000000..eb22b93e --- /dev/null +++ b/sources/plugins/blockquote/lang/ar.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'ar', { + toolbar: 'اقتباس' +} ); diff --git a/sources/plugins/blockquote/lang/bg.js b/sources/plugins/blockquote/lang/bg.js new file mode 100644 index 00000000..97e6f126 --- /dev/null +++ b/sources/plugins/blockquote/lang/bg.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'bg', { + toolbar: 'Блок за цитат' +} ); diff --git a/sources/plugins/blockquote/lang/bn.js b/sources/plugins/blockquote/lang/bn.js new file mode 100644 index 00000000..02ab2002 --- /dev/null +++ b/sources/plugins/blockquote/lang/bn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'bn', { + toolbar: 'Block Quote' // MISSING +} ); diff --git a/sources/plugins/blockquote/lang/bs.js b/sources/plugins/blockquote/lang/bs.js new file mode 100644 index 00000000..3a4d3f38 --- /dev/null +++ b/sources/plugins/blockquote/lang/bs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'bs', { + toolbar: 'Block Quote' // MISSING +} ); diff --git a/sources/plugins/blockquote/lang/ca.js b/sources/plugins/blockquote/lang/ca.js new file mode 100644 index 00000000..41bfbc73 --- /dev/null +++ b/sources/plugins/blockquote/lang/ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'ca', { + toolbar: 'Bloc de cita' +} ); diff --git a/sources/plugins/blockquote/lang/cs.js b/sources/plugins/blockquote/lang/cs.js new file mode 100644 index 00000000..7c63ff53 --- /dev/null +++ b/sources/plugins/blockquote/lang/cs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'cs', { + toolbar: 'Citace' +} ); diff --git a/sources/plugins/blockquote/lang/cy.js b/sources/plugins/blockquote/lang/cy.js new file mode 100644 index 00000000..a47b50ab --- /dev/null +++ b/sources/plugins/blockquote/lang/cy.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'cy', { + toolbar: 'Dyfyniad bloc' +} ); diff --git a/sources/plugins/blockquote/lang/da.js b/sources/plugins/blockquote/lang/da.js new file mode 100644 index 00000000..e1f8de13 --- /dev/null +++ b/sources/plugins/blockquote/lang/da.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'da', { + toolbar: 'Blokcitat' +} ); diff --git a/sources/plugins/blockquote/lang/de.js b/sources/plugins/blockquote/lang/de.js new file mode 100644 index 00000000..e5c47e5f --- /dev/null +++ b/sources/plugins/blockquote/lang/de.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'de', { + toolbar: 'Zitatblock' +} ); diff --git a/sources/plugins/blockquote/lang/el.js b/sources/plugins/blockquote/lang/el.js new file mode 100644 index 00000000..af7cde55 --- /dev/null +++ b/sources/plugins/blockquote/lang/el.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'el', { + toolbar: 'Περιοχή Παράθεσης' +} ); diff --git a/sources/plugins/blockquote/lang/en-au.js b/sources/plugins/blockquote/lang/en-au.js new file mode 100644 index 00000000..9f70e6ce --- /dev/null +++ b/sources/plugins/blockquote/lang/en-au.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'en-au', { + toolbar: 'Block Quote' +} ); diff --git a/sources/plugins/blockquote/lang/en-ca.js b/sources/plugins/blockquote/lang/en-ca.js new file mode 100644 index 00000000..7caafa22 --- /dev/null +++ b/sources/plugins/blockquote/lang/en-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'en-ca', { + toolbar: 'Block Quote' +} ); diff --git a/sources/plugins/blockquote/lang/en-gb.js b/sources/plugins/blockquote/lang/en-gb.js new file mode 100644 index 00000000..f894911a --- /dev/null +++ b/sources/plugins/blockquote/lang/en-gb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'en-gb', { + toolbar: 'Block Quote' +} ); diff --git a/sources/plugins/blockquote/lang/en.js b/sources/plugins/blockquote/lang/en.js new file mode 100644 index 00000000..33c50694 --- /dev/null +++ b/sources/plugins/blockquote/lang/en.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'en', { + toolbar: 'Block Quote' +} ); diff --git a/sources/plugins/blockquote/lang/eo.js b/sources/plugins/blockquote/lang/eo.js new file mode 100644 index 00000000..b33c6f18 --- /dev/null +++ b/sources/plugins/blockquote/lang/eo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'eo', { + toolbar: 'Citaĵo' +} ); diff --git a/sources/plugins/blockquote/lang/es.js b/sources/plugins/blockquote/lang/es.js new file mode 100644 index 00000000..fb4e834e --- /dev/null +++ b/sources/plugins/blockquote/lang/es.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'es', { + toolbar: 'Cita' +} ); diff --git a/sources/plugins/blockquote/lang/et.js b/sources/plugins/blockquote/lang/et.js new file mode 100644 index 00000000..eb9eaa55 --- /dev/null +++ b/sources/plugins/blockquote/lang/et.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'et', { + toolbar: 'Blokktsitaat' +} ); diff --git a/sources/plugins/blockquote/lang/eu.js b/sources/plugins/blockquote/lang/eu.js new file mode 100644 index 00000000..6320397b --- /dev/null +++ b/sources/plugins/blockquote/lang/eu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'eu', { + toolbar: 'Aipamen blokea' +} ); diff --git a/sources/plugins/blockquote/lang/fa.js b/sources/plugins/blockquote/lang/fa.js new file mode 100644 index 00000000..2f12a50e --- /dev/null +++ b/sources/plugins/blockquote/lang/fa.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'fa', { + toolbar: 'بلوک نقل قول' +} ); diff --git a/sources/plugins/blockquote/lang/fi.js b/sources/plugins/blockquote/lang/fi.js new file mode 100644 index 00000000..44924d0a --- /dev/null +++ b/sources/plugins/blockquote/lang/fi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'fi', { + toolbar: 'Lainaus' +} ); diff --git a/sources/plugins/blockquote/lang/fo.js b/sources/plugins/blockquote/lang/fo.js new file mode 100644 index 00000000..0557b99c --- /dev/null +++ b/sources/plugins/blockquote/lang/fo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'fo', { + toolbar: 'Blockquote' +} ); diff --git a/sources/plugins/blockquote/lang/fr-ca.js b/sources/plugins/blockquote/lang/fr-ca.js new file mode 100644 index 00000000..0ae3f2b2 --- /dev/null +++ b/sources/plugins/blockquote/lang/fr-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'fr-ca', { + toolbar: 'Citation' +} ); diff --git a/sources/plugins/blockquote/lang/fr.js b/sources/plugins/blockquote/lang/fr.js new file mode 100644 index 00000000..21710d24 --- /dev/null +++ b/sources/plugins/blockquote/lang/fr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'fr', { + toolbar: 'Citation' +} ); diff --git a/sources/plugins/blockquote/lang/gl.js b/sources/plugins/blockquote/lang/gl.js new file mode 100644 index 00000000..0ace64eb --- /dev/null +++ b/sources/plugins/blockquote/lang/gl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'gl', { + toolbar: 'Cita' +} ); diff --git a/sources/plugins/blockquote/lang/gu.js b/sources/plugins/blockquote/lang/gu.js new file mode 100644 index 00000000..9fc65baa --- /dev/null +++ b/sources/plugins/blockquote/lang/gu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'gu', { + toolbar: 'બ્લૉક-કોટ, અવતરણચિહ્નો' +} ); diff --git a/sources/plugins/blockquote/lang/he.js b/sources/plugins/blockquote/lang/he.js new file mode 100644 index 00000000..a10d7e40 --- /dev/null +++ b/sources/plugins/blockquote/lang/he.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'he', { + toolbar: 'בלוק ציטוט' +} ); diff --git a/sources/plugins/blockquote/lang/hi.js b/sources/plugins/blockquote/lang/hi.js new file mode 100644 index 00000000..b7481e24 --- /dev/null +++ b/sources/plugins/blockquote/lang/hi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'hi', { + toolbar: 'ब्लॉक-कोट' +} ); diff --git a/sources/plugins/blockquote/lang/hr.js b/sources/plugins/blockquote/lang/hr.js new file mode 100644 index 00000000..421ffd57 --- /dev/null +++ b/sources/plugins/blockquote/lang/hr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'hr', { + toolbar: 'Blockquote' +} ); diff --git a/sources/plugins/blockquote/lang/hu.js b/sources/plugins/blockquote/lang/hu.js new file mode 100644 index 00000000..5bf22703 --- /dev/null +++ b/sources/plugins/blockquote/lang/hu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'hu', { + toolbar: 'Idézet blokk' +} ); diff --git a/sources/plugins/blockquote/lang/id.js b/sources/plugins/blockquote/lang/id.js new file mode 100644 index 00000000..3cab0ac3 --- /dev/null +++ b/sources/plugins/blockquote/lang/id.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'id', { + toolbar: 'Kutipan Blok' +} ); diff --git a/sources/plugins/blockquote/lang/is.js b/sources/plugins/blockquote/lang/is.js new file mode 100644 index 00000000..04f13a9b --- /dev/null +++ b/sources/plugins/blockquote/lang/is.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'is', { + toolbar: 'Inndráttur' +} ); diff --git a/sources/plugins/blockquote/lang/it.js b/sources/plugins/blockquote/lang/it.js new file mode 100644 index 00000000..77de24eb --- /dev/null +++ b/sources/plugins/blockquote/lang/it.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'it', { + toolbar: 'Citazione' +} ); diff --git a/sources/plugins/blockquote/lang/ja.js b/sources/plugins/blockquote/lang/ja.js new file mode 100644 index 00000000..d6155ea0 --- /dev/null +++ b/sources/plugins/blockquote/lang/ja.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'ja', { + toolbar: 'ブロック引用文' +} ); diff --git a/sources/plugins/blockquote/lang/ka.js b/sources/plugins/blockquote/lang/ka.js new file mode 100644 index 00000000..826113bb --- /dev/null +++ b/sources/plugins/blockquote/lang/ka.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'ka', { + toolbar: 'ციტატა' +} ); diff --git a/sources/plugins/blockquote/lang/km.js b/sources/plugins/blockquote/lang/km.js new file mode 100644 index 00000000..a29f072c --- /dev/null +++ b/sources/plugins/blockquote/lang/km.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'km', { + toolbar: 'ប្លក់​ពាក្យ​សម្រង់' +} ); diff --git a/sources/plugins/blockquote/lang/ko.js b/sources/plugins/blockquote/lang/ko.js new file mode 100644 index 00000000..f27c777d --- /dev/null +++ b/sources/plugins/blockquote/lang/ko.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'ko', { + toolbar: '인용 단락' +} ); diff --git a/sources/plugins/blockquote/lang/ku.js b/sources/plugins/blockquote/lang/ku.js new file mode 100644 index 00000000..c6e22aa6 --- /dev/null +++ b/sources/plugins/blockquote/lang/ku.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'ku', { + toolbar: 'بەربەستکردنی ووتەی وەرگیراو' +} ); diff --git a/sources/plugins/blockquote/lang/lt.js b/sources/plugins/blockquote/lang/lt.js new file mode 100644 index 00000000..775232a0 --- /dev/null +++ b/sources/plugins/blockquote/lang/lt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'lt', { + toolbar: 'Citata' +} ); diff --git a/sources/plugins/blockquote/lang/lv.js b/sources/plugins/blockquote/lang/lv.js new file mode 100644 index 00000000..006ec477 --- /dev/null +++ b/sources/plugins/blockquote/lang/lv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'lv', { + toolbar: 'Bloka citāts' +} ); diff --git a/sources/plugins/blockquote/lang/mk.js b/sources/plugins/blockquote/lang/mk.js new file mode 100644 index 00000000..87167bae --- /dev/null +++ b/sources/plugins/blockquote/lang/mk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'mk', { + toolbar: 'Block Quote' // MISSING +} ); diff --git a/sources/plugins/blockquote/lang/mn.js b/sources/plugins/blockquote/lang/mn.js new file mode 100644 index 00000000..a18eb38c --- /dev/null +++ b/sources/plugins/blockquote/lang/mn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'mn', { + toolbar: 'Ишлэл хэсэг' +} ); diff --git a/sources/plugins/blockquote/lang/ms.js b/sources/plugins/blockquote/lang/ms.js new file mode 100644 index 00000000..4c7e7b47 --- /dev/null +++ b/sources/plugins/blockquote/lang/ms.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'ms', { + toolbar: 'Block Quote' // MISSING +} ); diff --git a/sources/plugins/blockquote/lang/nb.js b/sources/plugins/blockquote/lang/nb.js new file mode 100644 index 00000000..154c2609 --- /dev/null +++ b/sources/plugins/blockquote/lang/nb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'nb', { + toolbar: 'Blokksitat' +} ); diff --git a/sources/plugins/blockquote/lang/nl.js b/sources/plugins/blockquote/lang/nl.js new file mode 100644 index 00000000..ef45be9a --- /dev/null +++ b/sources/plugins/blockquote/lang/nl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'nl', { + toolbar: 'Citaatblok' +} ); diff --git a/sources/plugins/blockquote/lang/no.js b/sources/plugins/blockquote/lang/no.js new file mode 100644 index 00000000..79388492 --- /dev/null +++ b/sources/plugins/blockquote/lang/no.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'no', { + toolbar: 'Blokksitat' +} ); diff --git a/sources/plugins/blockquote/lang/pl.js b/sources/plugins/blockquote/lang/pl.js new file mode 100644 index 00000000..ebaab5db --- /dev/null +++ b/sources/plugins/blockquote/lang/pl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'pl', { + toolbar: 'Cytat' +} ); diff --git a/sources/plugins/blockquote/lang/pt-br.js b/sources/plugins/blockquote/lang/pt-br.js new file mode 100644 index 00000000..8fbe5004 --- /dev/null +++ b/sources/plugins/blockquote/lang/pt-br.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'pt-br', { + toolbar: 'Citação' +} ); diff --git a/sources/plugins/blockquote/lang/pt.js b/sources/plugins/blockquote/lang/pt.js new file mode 100644 index 00000000..98c65b03 --- /dev/null +++ b/sources/plugins/blockquote/lang/pt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'pt', { + toolbar: 'Bloco de citação' +} ); diff --git a/sources/plugins/blockquote/lang/ro.js b/sources/plugins/blockquote/lang/ro.js new file mode 100644 index 00000000..699ee2cd --- /dev/null +++ b/sources/plugins/blockquote/lang/ro.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'ro', { + toolbar: 'Citat' +} ); diff --git a/sources/plugins/blockquote/lang/ru.js b/sources/plugins/blockquote/lang/ru.js new file mode 100644 index 00000000..b7ddbb46 --- /dev/null +++ b/sources/plugins/blockquote/lang/ru.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'ru', { + toolbar: 'Цитата' +} ); diff --git a/sources/plugins/blockquote/lang/si.js b/sources/plugins/blockquote/lang/si.js new file mode 100644 index 00000000..0cf851aa --- /dev/null +++ b/sources/plugins/blockquote/lang/si.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'si', { + toolbar: 'උද්ධෘත කොටස' +} ); diff --git a/sources/plugins/blockquote/lang/sk.js b/sources/plugins/blockquote/lang/sk.js new file mode 100644 index 00000000..3ee34ea8 --- /dev/null +++ b/sources/plugins/blockquote/lang/sk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'sk', { + toolbar: 'Citácia' +} ); diff --git a/sources/plugins/blockquote/lang/sl.js b/sources/plugins/blockquote/lang/sl.js new file mode 100644 index 00000000..50201069 --- /dev/null +++ b/sources/plugins/blockquote/lang/sl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'sl', { + toolbar: 'Citat' +} ); diff --git a/sources/plugins/blockquote/lang/sq.js b/sources/plugins/blockquote/lang/sq.js new file mode 100644 index 00000000..3e99a148 --- /dev/null +++ b/sources/plugins/blockquote/lang/sq.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'sq', { + toolbar: 'Citatet' +} ); diff --git a/sources/plugins/blockquote/lang/sr-latn.js b/sources/plugins/blockquote/lang/sr-latn.js new file mode 100644 index 00000000..8372a930 --- /dev/null +++ b/sources/plugins/blockquote/lang/sr-latn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'sr-latn', { + toolbar: 'Block Quote' // MISSING +} ); diff --git a/sources/plugins/blockquote/lang/sr.js b/sources/plugins/blockquote/lang/sr.js new file mode 100644 index 00000000..afbb2b6a --- /dev/null +++ b/sources/plugins/blockquote/lang/sr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'sr', { + toolbar: 'Block Quote' // MISSING +} ); diff --git a/sources/plugins/blockquote/lang/sv.js b/sources/plugins/blockquote/lang/sv.js new file mode 100644 index 00000000..6002c515 --- /dev/null +++ b/sources/plugins/blockquote/lang/sv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'sv', { + toolbar: 'Blockcitat' +} ); diff --git a/sources/plugins/blockquote/lang/th.js b/sources/plugins/blockquote/lang/th.js new file mode 100644 index 00000000..dbda0a53 --- /dev/null +++ b/sources/plugins/blockquote/lang/th.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'th', { + toolbar: 'Block Quote' +} ); diff --git a/sources/plugins/blockquote/lang/tr.js b/sources/plugins/blockquote/lang/tr.js new file mode 100644 index 00000000..db22c313 --- /dev/null +++ b/sources/plugins/blockquote/lang/tr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'tr', { + toolbar: 'Blok Oluştur' +} ); diff --git a/sources/plugins/blockquote/lang/tt.js b/sources/plugins/blockquote/lang/tt.js new file mode 100644 index 00000000..4dc271e3 --- /dev/null +++ b/sources/plugins/blockquote/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'tt', { + toolbar: 'Өземтә блогы' +} ); diff --git a/sources/plugins/blockquote/lang/ug.js b/sources/plugins/blockquote/lang/ug.js new file mode 100644 index 00000000..5be430bf --- /dev/null +++ b/sources/plugins/blockquote/lang/ug.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'ug', { + toolbar: 'بۆلەك نەقىل' +} ); diff --git a/sources/plugins/blockquote/lang/uk.js b/sources/plugins/blockquote/lang/uk.js new file mode 100644 index 00000000..b425fdaa --- /dev/null +++ b/sources/plugins/blockquote/lang/uk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'uk', { + toolbar: 'Цитата' +} ); diff --git a/sources/plugins/blockquote/lang/vi.js b/sources/plugins/blockquote/lang/vi.js new file mode 100644 index 00000000..e4eb496b --- /dev/null +++ b/sources/plugins/blockquote/lang/vi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'vi', { + toolbar: 'Khối trích dẫn' +} ); diff --git a/sources/plugins/blockquote/lang/zh-cn.js b/sources/plugins/blockquote/lang/zh-cn.js new file mode 100644 index 00000000..76a92636 --- /dev/null +++ b/sources/plugins/blockquote/lang/zh-cn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'zh-cn', { + toolbar: '块引用' +} ); diff --git a/sources/plugins/blockquote/lang/zh.js b/sources/plugins/blockquote/lang/zh.js new file mode 100644 index 00000000..7f892984 --- /dev/null +++ b/sources/plugins/blockquote/lang/zh.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'blockquote', 'zh', { + toolbar: '引用段落' +} ); diff --git a/sources/plugins/blockquote/plugin.js b/sources/plugins/blockquote/plugin.js new file mode 100644 index 00000000..0b2bf332 --- /dev/null +++ b/sources/plugins/blockquote/plugin.js @@ -0,0 +1,251 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +( function() { + function noBlockLeft( bqBlock ) { + for ( var i = 0, length = bqBlock.getChildCount(), child; i < length && ( child = bqBlock.getChild( i ) ); i++ ) { + if ( child.type == CKEDITOR.NODE_ELEMENT && child.isBlockBoundary() ) + return false; + } + return true; + } + + var commandObject = { + exec: function( editor ) { + var state = editor.getCommand( 'blockquote' ).state, + selection = editor.getSelection(), + range = selection && selection.getRanges()[ 0 ]; + + if ( !range ) + return; + + var bookmarks = selection.createBookmarks(); + + // Kludge for #1592: if the bookmark nodes are in the beginning of + // blockquote, then move them to the nearest block element in the + // blockquote. + if ( CKEDITOR.env.ie ) { + var bookmarkStart = bookmarks[ 0 ].startNode, + bookmarkEnd = bookmarks[ 0 ].endNode, + cursor; + + if ( bookmarkStart && bookmarkStart.getParent().getName() == 'blockquote' ) { + cursor = bookmarkStart; + while ( ( cursor = cursor.getNext() ) ) { + if ( cursor.type == CKEDITOR.NODE_ELEMENT && cursor.isBlockBoundary() ) { + bookmarkStart.move( cursor, true ); + break; + } + } + } + + if ( bookmarkEnd && bookmarkEnd.getParent().getName() == 'blockquote' ) { + cursor = bookmarkEnd; + while ( ( cursor = cursor.getPrevious() ) ) { + if ( cursor.type == CKEDITOR.NODE_ELEMENT && cursor.isBlockBoundary() ) { + bookmarkEnd.move( cursor ); + break; + } + } + } + } + + var iterator = range.createIterator(), + block; + iterator.enlargeBr = editor.config.enterMode != CKEDITOR.ENTER_BR; + + if ( state == CKEDITOR.TRISTATE_OFF ) { + var paragraphs = []; + while ( ( block = iterator.getNextParagraph() ) ) + paragraphs.push( block ); + + // If no paragraphs, create one from the current selection position. + if ( paragraphs.length < 1 ) { + var para = editor.document.createElement( editor.config.enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ), + firstBookmark = bookmarks.shift(); + range.insertNode( para ); + para.append( new CKEDITOR.dom.text( '\ufeff', editor.document ) ); + range.moveToBookmark( firstBookmark ); + range.selectNodeContents( para ); + range.collapse( true ); + firstBookmark = range.createBookmark(); + paragraphs.push( para ); + bookmarks.unshift( firstBookmark ); + } + + // Make sure all paragraphs have the same parent. + var commonParent = paragraphs[ 0 ].getParent(), + tmp = []; + for ( var i = 0; i < paragraphs.length; i++ ) { + block = paragraphs[ i ]; + commonParent = commonParent.getCommonAncestor( block.getParent() ); + } + + // The common parent must not be the following tags: table, tbody, tr, ol, ul. + var denyTags = { table: 1, tbody: 1, tr: 1, ol: 1, ul: 1 }; + while ( denyTags[ commonParent.getName() ] ) + commonParent = commonParent.getParent(); + + // Reconstruct the block list to be processed such that all resulting blocks + // satisfy parentNode.equals( commonParent ). + var lastBlock = null; + while ( paragraphs.length > 0 ) { + block = paragraphs.shift(); + while ( !block.getParent().equals( commonParent ) ) + block = block.getParent(); + if ( !block.equals( lastBlock ) ) + tmp.push( block ); + lastBlock = block; + } + + // If any of the selected blocks is a blockquote, remove it to prevent + // nested blockquotes. + while ( tmp.length > 0 ) { + block = tmp.shift(); + if ( block.getName() == 'blockquote' ) { + var docFrag = new CKEDITOR.dom.documentFragment( editor.document ); + while ( block.getFirst() ) { + docFrag.append( block.getFirst().remove() ); + paragraphs.push( docFrag.getLast() ); + } + + docFrag.replace( block ); + } else { + paragraphs.push( block ); + } + } + + // Now we have all the blocks to be included in a new blockquote node. + var bqBlock = editor.document.createElement( 'blockquote' ); + bqBlock.insertBefore( paragraphs[ 0 ] ); + while ( paragraphs.length > 0 ) { + block = paragraphs.shift(); + bqBlock.append( block ); + } + } else if ( state == CKEDITOR.TRISTATE_ON ) { + var moveOutNodes = [], + database = {}; + + while ( ( block = iterator.getNextParagraph() ) ) { + var bqParent = null, + bqChild = null; + while ( block.getParent() ) { + if ( block.getParent().getName() == 'blockquote' ) { + bqParent = block.getParent(); + bqChild = block; + break; + } + block = block.getParent(); + } + + // Remember the blocks that were recorded down in the moveOutNodes array + // to prevent duplicates. + if ( bqParent && bqChild && !bqChild.getCustomData( 'blockquote_moveout' ) ) { + moveOutNodes.push( bqChild ); + CKEDITOR.dom.element.setMarker( database, bqChild, 'blockquote_moveout', true ); + } + } + + CKEDITOR.dom.element.clearAllMarkers( database ); + + var movedNodes = [], + processedBlockquoteBlocks = []; + + database = {}; + while ( moveOutNodes.length > 0 ) { + var node = moveOutNodes.shift(); + bqBlock = node.getParent(); + + // If the node is located at the beginning or the end, just take it out + // without splitting. Otherwise, split the blockquote node and move the + // paragraph in between the two blockquote nodes. + if ( !node.getPrevious() ) + node.remove().insertBefore( bqBlock ); + else if ( !node.getNext() ) + node.remove().insertAfter( bqBlock ); + else { + node.breakParent( node.getParent() ); + processedBlockquoteBlocks.push( node.getNext() ); + } + + // Remember the blockquote node so we can clear it later (if it becomes empty). + if ( !bqBlock.getCustomData( 'blockquote_processed' ) ) { + processedBlockquoteBlocks.push( bqBlock ); + CKEDITOR.dom.element.setMarker( database, bqBlock, 'blockquote_processed', true ); + } + + movedNodes.push( node ); + } + + CKEDITOR.dom.element.clearAllMarkers( database ); + + // Clear blockquote nodes that have become empty. + for ( i = processedBlockquoteBlocks.length - 1; i >= 0; i-- ) { + bqBlock = processedBlockquoteBlocks[ i ]; + if ( noBlockLeft( bqBlock ) ) + bqBlock.remove(); + } + + if ( editor.config.enterMode == CKEDITOR.ENTER_BR ) { + var firstTime = true; + while ( movedNodes.length ) { + node = movedNodes.shift(); + + if ( node.getName() == 'div' ) { + docFrag = new CKEDITOR.dom.documentFragment( editor.document ); + var needBeginBr = firstTime && node.getPrevious() && !( node.getPrevious().type == CKEDITOR.NODE_ELEMENT && node.getPrevious().isBlockBoundary() ); + if ( needBeginBr ) + docFrag.append( editor.document.createElement( 'br' ) ); + + var needEndBr = node.getNext() && !( node.getNext().type == CKEDITOR.NODE_ELEMENT && node.getNext().isBlockBoundary() ); + while ( node.getFirst() ) + node.getFirst().remove().appendTo( docFrag ); + + if ( needEndBr ) + docFrag.append( editor.document.createElement( 'br' ) ); + + docFrag.replace( node ); + firstTime = false; + } + } + } + } + + selection.selectBookmarks( bookmarks ); + editor.focus(); + }, + + refresh: function( editor, path ) { + // Check if inside of blockquote. + var firstBlock = path.block || path.blockLimit; + this.setState( editor.elementPath( firstBlock ).contains( 'blockquote', 1 ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF ); + }, + + context: 'blockquote', + + allowedContent: 'blockquote', + requiredContent: 'blockquote' + }; + + CKEDITOR.plugins.add( 'blockquote', { + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'blockquote', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + if ( editor.blockless ) + return; + + editor.addCommand( 'blockquote', commandObject ); + + editor.ui.addButton && editor.ui.addButton( 'Blockquote', { + label: editor.lang.blockquote.toolbar, + command: 'blockquote', + toolbar: 'blocks,10' + } ); + } + } ); +} )(); diff --git a/sources/plugins/button/lang/af.js b/sources/plugins/button/lang/af.js new file mode 100644 index 00000000..03c8ec2c --- /dev/null +++ b/sources/plugins/button/lang/af.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'af', { + selectedLabel: '%1 uitgekies' +} ); diff --git a/sources/plugins/button/lang/ar.js b/sources/plugins/button/lang/ar.js new file mode 100644 index 00000000..06ac9de3 --- /dev/null +++ b/sources/plugins/button/lang/ar.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'ar', { + selectedLabel: '%1 (محدد)' +} ); diff --git a/sources/plugins/button/lang/bg.js b/sources/plugins/button/lang/bg.js new file mode 100644 index 00000000..11b356ee --- /dev/null +++ b/sources/plugins/button/lang/bg.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'bg', { + selectedLabel: '%1 (Избрано)' +} ); diff --git a/sources/plugins/button/lang/ca.js b/sources/plugins/button/lang/ca.js new file mode 100644 index 00000000..9b0aadac --- /dev/null +++ b/sources/plugins/button/lang/ca.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'ca', { + selectedLabel: '%1 (Seleccionat)' +} ); diff --git a/sources/plugins/button/lang/cs.js b/sources/plugins/button/lang/cs.js new file mode 100644 index 00000000..172f712a --- /dev/null +++ b/sources/plugins/button/lang/cs.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'cs', { + selectedLabel: '%1 (Vybráno)' +} ); diff --git a/sources/plugins/button/lang/da.js b/sources/plugins/button/lang/da.js new file mode 100644 index 00000000..16f2f6bf --- /dev/null +++ b/sources/plugins/button/lang/da.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'da', { + selectedLabel: '%1 (Valgt)' +} ); diff --git a/sources/plugins/button/lang/de.js b/sources/plugins/button/lang/de.js new file mode 100644 index 00000000..a1c07a0b --- /dev/null +++ b/sources/plugins/button/lang/de.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'de', { + selectedLabel: '%1 (Ausgewählt)' +} ); diff --git a/sources/plugins/button/lang/el.js b/sources/plugins/button/lang/el.js new file mode 100644 index 00000000..37aa384d --- /dev/null +++ b/sources/plugins/button/lang/el.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'el', { + selectedLabel: '%1 (Επιλεγμένο)' +} ); diff --git a/sources/plugins/button/lang/en-gb.js b/sources/plugins/button/lang/en-gb.js new file mode 100644 index 00000000..cd7c4a19 --- /dev/null +++ b/sources/plugins/button/lang/en-gb.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'en-gb', { + selectedLabel: '%1 (Selected)' +} ); diff --git a/sources/plugins/button/lang/en.js b/sources/plugins/button/lang/en.js new file mode 100644 index 00000000..cb07e4fc --- /dev/null +++ b/sources/plugins/button/lang/en.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'en', { + selectedLabel: '%1 (Selected)' +} ); diff --git a/sources/plugins/button/lang/eo.js b/sources/plugins/button/lang/eo.js new file mode 100644 index 00000000..ef12a0b6 --- /dev/null +++ b/sources/plugins/button/lang/eo.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'eo', { + selectedLabel: '%1 (Selektita)' +} ); diff --git a/sources/plugins/button/lang/es.js b/sources/plugins/button/lang/es.js new file mode 100644 index 00000000..0a272085 --- /dev/null +++ b/sources/plugins/button/lang/es.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'es', { + selectedLabel: '%1 (Seleccionado)' +} ); diff --git a/sources/plugins/button/lang/eu.js b/sources/plugins/button/lang/eu.js new file mode 100644 index 00000000..d932a7d8 --- /dev/null +++ b/sources/plugins/button/lang/eu.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'eu', { + selectedLabel: '%1 (hautatuta)' +} ); diff --git a/sources/plugins/button/lang/fa.js b/sources/plugins/button/lang/fa.js new file mode 100644 index 00000000..73d37e66 --- /dev/null +++ b/sources/plugins/button/lang/fa.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'fa', { + selectedLabel: '%1 (انتخاب شده)' +} ); diff --git a/sources/plugins/button/lang/fi.js b/sources/plugins/button/lang/fi.js new file mode 100644 index 00000000..dd706fa1 --- /dev/null +++ b/sources/plugins/button/lang/fi.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'fi', { + selectedLabel: '%1 (Valittu)' +} ); diff --git a/sources/plugins/button/lang/fr.js b/sources/plugins/button/lang/fr.js new file mode 100644 index 00000000..86dd735d --- /dev/null +++ b/sources/plugins/button/lang/fr.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'fr', { + selectedLabel: '%1 (Sélectionné)' +} ); diff --git a/sources/plugins/button/lang/gl.js b/sources/plugins/button/lang/gl.js new file mode 100644 index 00000000..f34d2f3f --- /dev/null +++ b/sources/plugins/button/lang/gl.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'gl', { + selectedLabel: '%1 (seleccionado)' +} ); diff --git a/sources/plugins/button/lang/he.js b/sources/plugins/button/lang/he.js new file mode 100644 index 00000000..5911f30f --- /dev/null +++ b/sources/plugins/button/lang/he.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'he', { + selectedLabel: '1% (סומן)' +} ); diff --git a/sources/plugins/button/lang/hu.js b/sources/plugins/button/lang/hu.js new file mode 100644 index 00000000..ecfbf0ae --- /dev/null +++ b/sources/plugins/button/lang/hu.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'hu', { + selectedLabel: '%1 (Kiválasztva)' +} ); diff --git a/sources/plugins/button/lang/id.js b/sources/plugins/button/lang/id.js new file mode 100644 index 00000000..29d04a0a --- /dev/null +++ b/sources/plugins/button/lang/id.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'id', { + selectedLabel: '%1(Dipilih)' +} ); diff --git a/sources/plugins/button/lang/it.js b/sources/plugins/button/lang/it.js new file mode 100644 index 00000000..e563591e --- /dev/null +++ b/sources/plugins/button/lang/it.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'it', { + selectedLabel: '%1 (selezionato)' +} ); diff --git a/sources/plugins/button/lang/ja.js b/sources/plugins/button/lang/ja.js new file mode 100644 index 00000000..fdac0604 --- /dev/null +++ b/sources/plugins/button/lang/ja.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'ja', { + selectedLabel: '%1 (選択中)' +} ); diff --git a/sources/plugins/button/lang/km.js b/sources/plugins/button/lang/km.js new file mode 100644 index 00000000..830061fb --- /dev/null +++ b/sources/plugins/button/lang/km.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'km', { + selectedLabel: '%1 (បាន​ជ្រើស​រើស)' +} ); diff --git a/sources/plugins/button/lang/ko.js b/sources/plugins/button/lang/ko.js new file mode 100644 index 00000000..ed1ecc2e --- /dev/null +++ b/sources/plugins/button/lang/ko.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'ko', { + selectedLabel: '%1 (선택됨)' +} ); diff --git a/sources/plugins/button/lang/ku.js b/sources/plugins/button/lang/ku.js new file mode 100644 index 00000000..9920be19 --- /dev/null +++ b/sources/plugins/button/lang/ku.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'ku', { + selectedLabel: '%1 (هەڵبژێردراو)' +} ); diff --git a/sources/plugins/button/lang/lt.js b/sources/plugins/button/lang/lt.js new file mode 100644 index 00000000..1f30aa94 --- /dev/null +++ b/sources/plugins/button/lang/lt.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'lt', { + selectedLabel: '%1 (Pasirinkta)' +} ); diff --git a/sources/plugins/button/lang/nb.js b/sources/plugins/button/lang/nb.js new file mode 100644 index 00000000..2d866303 --- /dev/null +++ b/sources/plugins/button/lang/nb.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'nb', { + selectedLabel: '%1 (Valgt)' +} ); diff --git a/sources/plugins/button/lang/nl.js b/sources/plugins/button/lang/nl.js new file mode 100644 index 00000000..c750f638 --- /dev/null +++ b/sources/plugins/button/lang/nl.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'nl', { + selectedLabel: '%1 (Geselecteerd)' +} ); diff --git a/sources/plugins/button/lang/pl.js b/sources/plugins/button/lang/pl.js new file mode 100644 index 00000000..661f372a --- /dev/null +++ b/sources/plugins/button/lang/pl.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'pl', { + selectedLabel: '%1 (Wybrany)' +} ); diff --git a/sources/plugins/button/lang/pt-br.js b/sources/plugins/button/lang/pt-br.js new file mode 100644 index 00000000..18c09381 --- /dev/null +++ b/sources/plugins/button/lang/pt-br.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'pt-br', { + selectedLabel: '%1 (Selecionado)' +} ); diff --git a/sources/plugins/button/lang/pt.js b/sources/plugins/button/lang/pt.js new file mode 100644 index 00000000..af7e673d --- /dev/null +++ b/sources/plugins/button/lang/pt.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'pt', { + selectedLabel: '%1 (Selecionado)' +} ); diff --git a/sources/plugins/button/lang/ro.js b/sources/plugins/button/lang/ro.js new file mode 100644 index 00000000..44dee158 --- /dev/null +++ b/sources/plugins/button/lang/ro.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'ro', { + selectedLabel: '%1 (Selectat)' +} ); diff --git a/sources/plugins/button/lang/ru.js b/sources/plugins/button/lang/ru.js new file mode 100644 index 00000000..bbfa42be --- /dev/null +++ b/sources/plugins/button/lang/ru.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'ru', { + selectedLabel: '%1 (Выбрано)' +} ); diff --git a/sources/plugins/button/lang/sk.js b/sources/plugins/button/lang/sk.js new file mode 100644 index 00000000..b4f35aa8 --- /dev/null +++ b/sources/plugins/button/lang/sk.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'sk', { + selectedLabel: '%1 (Vybrané)' +} ); diff --git a/sources/plugins/button/lang/sl.js b/sources/plugins/button/lang/sl.js new file mode 100644 index 00000000..4faf3c55 --- /dev/null +++ b/sources/plugins/button/lang/sl.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'sl', { + selectedLabel: '%1 (Izbrano)' +} ); diff --git a/sources/plugins/button/lang/sq.js b/sources/plugins/button/lang/sq.js new file mode 100644 index 00000000..e67b12ad --- /dev/null +++ b/sources/plugins/button/lang/sq.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'sq', { + selectedLabel: '%1 (Përzgjedhur)' +} ); diff --git a/sources/plugins/button/lang/sv.js b/sources/plugins/button/lang/sv.js new file mode 100644 index 00000000..9e714be3 --- /dev/null +++ b/sources/plugins/button/lang/sv.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'sv', { + selectedLabel: '%1 (Vald)' +} ); diff --git a/sources/plugins/button/lang/tr.js b/sources/plugins/button/lang/tr.js new file mode 100644 index 00000000..06ad32b0 --- /dev/null +++ b/sources/plugins/button/lang/tr.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'tr', { + selectedLabel: '%1 (Seçilmiş)' +} ); diff --git a/sources/plugins/button/lang/tt.js b/sources/plugins/button/lang/tt.js new file mode 100644 index 00000000..5572afac --- /dev/null +++ b/sources/plugins/button/lang/tt.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'tt', { + selectedLabel: '%1 (Сайланган)' +} ); diff --git a/sources/plugins/button/lang/ug.js b/sources/plugins/button/lang/ug.js new file mode 100644 index 00000000..a2ceef5b --- /dev/null +++ b/sources/plugins/button/lang/ug.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'ug', { + selectedLabel: '%1 (تاللاندى)' +} ); diff --git a/sources/plugins/button/lang/uk.js b/sources/plugins/button/lang/uk.js new file mode 100644 index 00000000..ddec74ae --- /dev/null +++ b/sources/plugins/button/lang/uk.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'uk', { + selectedLabel: '%1 (Вибрано)' +} ); diff --git a/sources/plugins/button/lang/vi.js b/sources/plugins/button/lang/vi.js new file mode 100644 index 00000000..7a7adc01 --- /dev/null +++ b/sources/plugins/button/lang/vi.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'vi', { + selectedLabel: '%1 (Đã chọn)' +} ); diff --git a/sources/plugins/button/lang/zh-cn.js b/sources/plugins/button/lang/zh-cn.js new file mode 100644 index 00000000..726a3dc7 --- /dev/null +++ b/sources/plugins/button/lang/zh-cn.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'zh-cn', { + selectedLabel: '已选中 %1 项' +} ); diff --git a/sources/plugins/button/lang/zh.js b/sources/plugins/button/lang/zh.js new file mode 100644 index 00000000..95949474 --- /dev/null +++ b/sources/plugins/button/lang/zh.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'zh', { + selectedLabel: '%1 (已選取)' +} ); diff --git a/sources/plugins/button/plugin.js b/sources/plugins/button/plugin.js new file mode 100644 index 00000000..2338229c --- /dev/null +++ b/sources/plugins/button/plugin.js @@ -0,0 +1,377 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +( function() { + var template = '' + + '{label}' + + '{arrowHtml}' + + ''; + + var templateArrow = '' + + // BLACK DOWN-POINTING TRIANGLE + ( CKEDITOR.env.hc ? '▼' : '' ) + + ''; + + var btnArrowTpl = CKEDITOR.addTemplate( 'buttonArrow', templateArrow ), + btnTpl = CKEDITOR.addTemplate( 'button', template ); + + CKEDITOR.plugins.add( 'button', { + lang: 'af,ar,bg,ca,cs,da,de,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% + beforeInit: function( editor ) { + editor.ui.addHandler( CKEDITOR.UI_BUTTON, CKEDITOR.ui.button.handler ); + } + } ); + + /** + * Button UI element. + * + * @readonly + * @property {String} [='button'] + * @member CKEDITOR + */ + CKEDITOR.UI_BUTTON = 'button'; + + /** + * Represents a button UI element. This class should not be called directly. To + * create new buttons use {@link CKEDITOR.ui#addButton} instead. + * + * @class + * @constructor Creates a button class instance. + * @param {Object} definition The button definition. + */ + CKEDITOR.ui.button = function( definition ) { + CKEDITOR.tools.extend( this, definition, + // Set defaults. + { + title: definition.label, + click: definition.click || + function( editor ) { + editor.execCommand( definition.command ); + } + } ); + + this._ = {}; + }; + + /** + * Represents the button handler object. + * + * @class + * @singleton + * @extends CKEDITOR.ui.handlerDefinition + */ + CKEDITOR.ui.button.handler = { + /** + * Transforms a button definition in a {@link CKEDITOR.ui.button} instance. + * + * @member CKEDITOR.ui.button.handler + * @param {Object} definition + * @returns {CKEDITOR.ui.button} + */ + create: function( definition ) { + return new CKEDITOR.ui.button( definition ); + } + }; + + /** @class CKEDITOR.ui.button */ + CKEDITOR.ui.button.prototype = { + /** + * Renders the button. + * + * @param {CKEDITOR.editor} editor The editor instance which this button is + * to be used by. + * @param {Array} output The output array to which the HTML code related to + * this button should be appended. + */ + render: function( editor, output ) { + function updateState() { + // "this" is a CKEDITOR.ui.button instance. + var mode = editor.mode; + + if ( mode ) { + // Restore saved button state. + var state = this.modes[ mode ] ? modeStates[ mode ] !== undefined ? modeStates[ mode ] : CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED; + + state = editor.readOnly && !this.readOnly ? CKEDITOR.TRISTATE_DISABLED : state; + + this.setState( state ); + + // Let plugin to disable button. + if ( this.refresh ) + this.refresh(); + } + } + + var env = CKEDITOR.env, + id = this._.id = CKEDITOR.tools.getNextId(), + stateName = '', + command = this.command, + // Get the command name. + clickFn; + + this._.editor = editor; + + var instance = { + id: id, + button: this, + editor: editor, + focus: function() { + var element = CKEDITOR.document.getById( id ); + element.focus(); + }, + execute: function() { + this.button.click( editor ); + }, + attach: function( editor ) { + this.button.attach( editor ); + } + }; + + var keydownFn = CKEDITOR.tools.addFunction( function( ev ) { + if ( instance.onkey ) { + ev = new CKEDITOR.dom.event( ev ); + return ( instance.onkey( instance, ev.getKeystroke() ) !== false ); + } + } ); + + var focusFn = CKEDITOR.tools.addFunction( function( ev ) { + var retVal; + + if ( instance.onfocus ) + retVal = ( instance.onfocus( instance, new CKEDITOR.dom.event( ev ) ) !== false ); + + return retVal; + } ); + + var selLocked = 0; + + instance.clickFn = clickFn = CKEDITOR.tools.addFunction( function() { + + // Restore locked selection in Opera. + if ( selLocked ) { + editor.unlockSelection( 1 ); + selLocked = 0; + } + instance.execute(); + + // Fixed iOS focus issue when your press disabled button (#12381). + if ( env.iOS ) { + editor.focus(); + } + } ); + + + // Indicate a mode sensitive button. + if ( this.modes ) { + var modeStates = {}; + + editor.on( 'beforeModeUnload', function() { + if ( editor.mode && this._.state != CKEDITOR.TRISTATE_DISABLED ) + modeStates[ editor.mode ] = this._.state; + }, this ); + + // Update status when activeFilter, mode or readOnly changes. + editor.on( 'activeFilterChange', updateState, this ); + editor.on( 'mode', updateState, this ); + // If this button is sensitive to readOnly state, update it accordingly. + !this.readOnly && editor.on( 'readOnly', updateState, this ); + + } else if ( command ) { + // Get the command instance. + command = editor.getCommand( command ); + + if ( command ) { + command.on( 'state', function() { + this.setState( command.state ); + }, this ); + + stateName += ( command.state == CKEDITOR.TRISTATE_ON ? 'on' : command.state == CKEDITOR.TRISTATE_DISABLED ? 'disabled' : 'off' ); + } + } + + // For button that has text-direction awareness on selection path. + if ( this.directional ) { + editor.on( 'contentDirChanged', function( evt ) { + var el = CKEDITOR.document.getById( this._.id ), + icon = el.getFirst(); + + var pathDir = evt.data; + + // Make a minor direction change to become style-able for the skin icon. + if ( pathDir != editor.lang.dir ) + el.addClass( 'cke_' + pathDir ); + else + el.removeClass( 'cke_ltr' ).removeClass( 'cke_rtl' ); + + // Inline style update for the plugin icon. + icon.setAttribute( 'style', CKEDITOR.skin.getIconStyle( iconName, pathDir == 'rtl', this.icon, this.iconOffset ) ); + }, this ); + } + + if ( !command ) + stateName += 'off'; + + var name = this.name || this.command, + iconName = name; + + // Check if we're pointing to an icon defined by another command. (#9555) + if ( this.icon && !( /\./ ).test( this.icon ) ) { + iconName = this.icon; + this.icon = null; + } + + var params = { + id: id, + name: name, + iconName: iconName, + label: this.label, + cls: this.className || '', + state: stateName, + ariaDisabled: stateName == 'disabled' ? 'true' : 'false', + title: this.title, + titleJs: env.gecko && !env.hc ? '' : ( this.title || '' ).replace( "'", '' ), + hasArrow: this.hasArrow ? 'true' : 'false', + keydownFn: keydownFn, + focusFn: focusFn, + clickFn: clickFn, + style: CKEDITOR.skin.getIconStyle( iconName, ( editor.lang.dir == 'rtl' ), this.icon, this.iconOffset ), + arrowHtml: this.hasArrow ? btnArrowTpl.output() : '' + }; + + btnTpl.output( params, output ); + + if ( this.onRender ) + this.onRender(); + + return instance; + }, + + /** + * Sets the button state. + * + * @param {Number} state Indicates the button state. One of {@link CKEDITOR#TRISTATE_ON}, + * {@link CKEDITOR#TRISTATE_OFF}, or {@link CKEDITOR#TRISTATE_DISABLED}. + */ + setState: function( state ) { + if ( this._.state == state ) + return false; + + this._.state = state; + + var element = CKEDITOR.document.getById( this._.id ); + + if ( element ) { + element.setState( state, 'cke_button' ); + + state == CKEDITOR.TRISTATE_DISABLED ? + element.setAttribute( 'aria-disabled', true ) : + element.removeAttribute( 'aria-disabled' ); + + if ( !this.hasArrow ) { + // Note: aria-pressed attribute should not be added to menuButton instances. (#11331) + state == CKEDITOR.TRISTATE_ON ? + element.setAttribute( 'aria-pressed', true ) : + element.removeAttribute( 'aria-pressed' ); + } else { + var newLabel = state == CKEDITOR.TRISTATE_ON ? + this._.editor.lang.button.selectedLabel.replace( /%1/g, this.label ) : this.label; + CKEDITOR.document.getById( this._.id + '_label' ).setText( newLabel ); + } + + return true; + } else { + return false; + } + }, + + /** + * Gets the button state. + * + * @returns {Number} The button state. One of {@link CKEDITOR#TRISTATE_ON}, + * {@link CKEDITOR#TRISTATE_OFF}, or {@link CKEDITOR#TRISTATE_DISABLED}. + */ + getState: function() { + return this._.state; + }, + + /** + * Returns this button's {@link CKEDITOR.feature} instance. + * + * It may be this button instance if it has at least one of + * `allowedContent` and `requiredContent` properties. Otherwise, + * if a command is bound to this button by the `command` property, then + * that command will be returned. + * + * This method implements the {@link CKEDITOR.feature#toFeature} interface method. + * + * @since 4.1 + * @param {CKEDITOR.editor} Editor instance. + * @returns {CKEDITOR.feature} The feature. + */ + toFeature: function( editor ) { + if ( this._.feature ) + return this._.feature; + + var feature = this; + + // If button isn't a feature, return command if is bound. + if ( !this.allowedContent && !this.requiredContent && this.command ) + feature = editor.getCommand( this.command ) || feature; + + return this._.feature = feature; + } + }; + + /** + * Adds a button definition to the UI elements list. + * + * editorInstance.ui.addButton( 'MyBold', { + * label: 'My Bold', + * command: 'bold', + * toolbar: 'basicstyles,1' + * } ); + * + * @member CKEDITOR.ui + * @param {String} name The button name. + * @param {Object} definition The button definition. + * @param {String} definition.label The textual part of the button (if visible) and its tooltip. + * @param {String} definition.command The command to be executed once the button is activated. + * @param {String} definition.toolbar The {@link CKEDITOR.config#toolbarGroups toolbar group} into which + * the button will be added. An optional index value (separated by a comma) determines the button position within the group. + */ + CKEDITOR.ui.prototype.addButton = function( name, definition ) { + this.add( name, CKEDITOR.UI_BUTTON, definition ); + }; + +} )(); diff --git a/sources/plugins/clipboard/dev/clipboard.html b/sources/plugins/clipboard/dev/clipboard.html new file mode 100644 index 00000000..00a073f8 --- /dev/null +++ b/sources/plugins/clipboard/dev/clipboard.html @@ -0,0 +1,190 @@ + + + + + + Clipboard playground – CKEditor Sample + + + + + +

+ CKEditor Sample — clipboard plugin playground +

+
+

+ + +

+

+ + +

+

+ + +

+

+ + +

+

+ + +

+
+

Editor 6

+

Content content content.

+

Styled by .someClass.

+
+
+
+
+ + + diff --git a/sources/plugins/clipboard/dev/console.js b/sources/plugins/clipboard/dev/console.js new file mode 100644 index 00000000..f0cc92db --- /dev/null +++ b/sources/plugins/clipboard/dev/console.js @@ -0,0 +1,49 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/* global CKCONSOLE */ + +'use strict'; + +( function() { + var pasteType, pasteValue; + + CKCONSOLE.add( 'paste', { + panels: [ + { + type: 'box', + content: + '', + + refresh: function() { + return { + header: 'Paste', + type: pasteType, + value: pasteValue + }; + }, + + refreshOn: function( editor, refresh ) { + editor.on( 'paste', function( evt ) { + pasteType = evt.data.type; + pasteValue = CKEDITOR.tools.htmlEncode( evt.data.dataValue ); + refresh(); + } ); + } + }, + { + type: 'log', + on: function( editor, log, logFn ) { + editor.on( 'paste', function( evt ) { + logFn( 'paste; type:' + evt.data.type )(); + } ); + } + } + ] + } ); +} )(); diff --git a/sources/plugins/clipboard/dev/dnd.html b/sources/plugins/clipboard/dev/dnd.html new file mode 100644 index 00000000..3a1845d1 --- /dev/null +++ b/sources/plugins/clipboard/dev/dnd.html @@ -0,0 +1,185 @@ + + + + + + Manual test for #11460 + + + + + + + +

+ Manual test for #11460 +

+

Description (hide/show)

+
+

Test internal D&D in the editor, dropping content from an external source (helpers, MS Word) and D&D between editors. Keep in mind that internal D&D is the most complex operation because editor have to handle two ranges at the same time.

+

Expected behavior:

+ +

Drag scenarios:

+ +

Drop scenarios:

+ +

Known issues (not part of this ticket):

+ +
+
+

Helpers (hide/show)

+
+ +
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In commodo vulputate tempor. Sed <b>at elit</b> vel ligula mollis aliquet a ac odio. +
+Aenean cursus egestas ipsum.
+				
+
+
+
+
+
+

Classic editor (hide/show)

+
+ +
+
+
+

Inline editor (hide/show)

+
+

Saturn V carrying Apollo 11 Apollo 11

+ +

Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, 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.

+ +

Armstrong spent about three and a half two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5 kg) of lunar material for return to Earth. A third member of the mission, Michael Collins, piloted the command spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.

+ +

Broadcasting and quotes

+ +

Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:

+ +
+

One small step for [a] man, one giant leap for mankind.

+
+ +

Apollo 11 effectively ended the Space Race and fulfilled a national goal proposed in 1961 by the late U.S. President John F. Kennedy in a speech before the United States Congress:

+ +
+

[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.

+
+ +

Technical details

+ + + + + + + + + + + + + + + + + + + + + + + +
Mission crew
PositionAstronaut
CommanderNeil A. Armstrong
Command Module PilotMichael Collins
Lunar Module PilotEdwin "Buzz" E. Aldrin, Jr.
+ +

Launched by a Saturn V rocket from Kennedy Space Center in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of NASA's Apollo program. The Apollo spacecraft had three parts:

+ +
    +
  1. Command Module with a cabin for the three astronauts which was the only part which landed back on Earth
  2. +
  3. Service Module which supported the Command Module with propulsion, electrical power, oxygen and water
  4. +
  5. Lunar Module for landing on the Moon.
  6. +
+ +

After being sent to the Moon by the Saturn V'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 Sea of Tranquility. 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 Pacific Ocean on July 24.

+ +
+

Source: Wikipedia.org

+
+
+ + + diff --git a/sources/plugins/clipboard/dialogs/paste.js b/sources/plugins/clipboard/dialogs/paste.js new file mode 100644 index 00000000..369decf7 --- /dev/null +++ b/sources/plugins/clipboard/dialogs/paste.js @@ -0,0 +1,254 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.dialog.add( 'paste', function( editor ) { + var lang = editor.lang.clipboard, + clipboard = CKEDITOR.plugins.clipboard, + lastDataTransfer; + + function onPasteFrameLoad( win ) { + var doc = new CKEDITOR.dom.document( win.document ), + body = doc.getBody(), + script = doc.getById( 'cke_actscrpt' ); + + script && script.remove(); + + body.setAttribute( 'contenteditable', true ); + + // Forward dataTransfer (#13883). + body.on( clipboard.mainPasteEvent, function( evt ) { + var dataTransfer = clipboard.initPasteDataTransfer( evt ); + + if ( !lastDataTransfer ) { + lastDataTransfer = dataTransfer; + } else + // For two paste with the same dataTransfer we can use that dataTransfer (two internal pastes are + // considered as an internal paste). + if ( dataTransfer != lastDataTransfer ) { + // If there were two paste with different DataTransfer objects create a new, empty, data transfer + // and use it (one internal and one external paste are considered as external paste). + lastDataTransfer = clipboard.initPasteDataTransfer(); + } + } ); + + // IE before version 8 will leave cursor blinking inside the document after + // editor blurred unless we clean up the selection. (#4716) + if ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 ) { + doc.getWindow().on( 'blur', function() { + doc.$.selection.empty(); + } ); + } + + doc.on( 'keydown', function( e ) { + var domEvent = e.data, + key = domEvent.getKeystroke(), + processed; + + switch ( key ) { + case 27: + this.hide(); + processed = 1; + break; + + case 9: + case CKEDITOR.SHIFT + 9: + this.changeFocus( 1 ); + processed = 1; + } + + processed && domEvent.preventDefault(); + }, this ); + + editor.fire( 'ariaWidget', new CKEDITOR.dom.element( win.frameElement ) ); + + // Handle pending focus. + if ( doc.getWindow().getFrame().removeCustomData( 'pendingFocus' ) ) + body.focus(); + } + + // If pasteDialogCommit wasn't canceled by e.g. editor.getClipboardData + // then fire paste event. + // Do not use editor#paste, because it would start from beforePaste event. + editor.on( 'pasteDialogCommit', function( evt ) { + if ( evt.data ) + editor.fire( 'paste', { + type: 'auto', + dataValue: evt.data.dataValue, + method: 'paste', + dataTransfer: evt.data.dataTransfer || clipboard.initPasteDataTransfer() + } ); + }, null, null, 1000 ); + + return { + title: lang.title, + + minWidth: CKEDITOR.env.ie && CKEDITOR.env.quirks ? 370 : 350, + minHeight: CKEDITOR.env.quirks ? 250 : 245, + onShow: function() { + // FIREFOX BUG: Force the browser to render the dialog to make the to-be- + // inserted iframe editable. (#3366) + this.parts.dialog.$.offsetHeight; + + this.setupContent(); + + // Set dialog title to the custom value (set e.g. in editor.openDialog callback) and reset this value. + // If custom title not set, use default one. + this.parts.title.setHtml( this.customTitle || lang.title ); + this.customTitle = null; + }, + + onLoad: function() { + if ( ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) && editor.lang.dir == 'rtl' ) + this.parts.contents.setStyle( 'overflow', 'hidden' ); + }, + + onOk: function() { + this.commitContent(); + }, + + contents: [ { + id: 'general', + label: editor.lang.common.generalTab, + elements: [ + { + type: 'html', + id: 'securityMsg', + html: '
' + lang.securityMsg + '
' + }, + { + type: 'html', + id: 'pasteMsg', + html: '
' + lang.pasteMsg + '
' + }, + { + type: 'html', + id: 'editing_area', + style: 'width:100%;height:100%', + html: '', + focus: function() { + var iframe = this.getInputElement(), + doc = iframe.getFrameDocument(), + body = doc.getBody(); + + // Frame content may not loaded at the moment. + if ( !body || body.isReadOnly() ) + iframe.setCustomData( 'pendingFocus', 1 ); + else + body.focus(); + }, + setup: function() { + var dialog = this.getDialog(); + var htmlToLoad = '' + + '' + + '' + + ''; + + var src = + CKEDITOR.env.air ? + 'javascript:void(0)' : // jshint ignore:line + ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) ? + 'javascript:void((function(){' + encodeURIComponent( // jshint ignore:line + 'document.open();' + + '(' + CKEDITOR.tools.fixDomain + ')();' + + 'document.close();' + ) + '})())"' + : ''; + + var iframe = CKEDITOR.dom.element.createFromHtml( '' ); + + // Reset last data transfer. + lastDataTransfer = null; + + iframe.on( 'load', function( e ) { + e.removeListener(); + + var doc = iframe.getFrameDocument(); + doc.write( htmlToLoad ); + + editor.focusManager.add( doc.getBody() ); + + if ( CKEDITOR.env.air ) + onPasteFrameLoad.call( this, doc.getWindow().$ ); + }, dialog ); + + iframe.setCustomData( 'dialog', dialog ); + + var container = this.getElement(); + container.setHtml( '' ); + container.append( iframe ); + + // IE need a redirect on focus to make + // the cursor blinking inside iframe. (#5461) + if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) { + var focusGrabber = CKEDITOR.dom.element.createFromHtml( '' ); + focusGrabber.on( 'focus', function() { + // Since fixDomain is called in src attribute, + // IE needs some slight delay to correctly move focus. + setTimeout( function() { + iframe.$.contentWindow.focus(); + } ); + } ); + container.append( focusGrabber ); + + // Override focus handler on field. + this.focus = function() { + focusGrabber.focus(); + this.fire( 'focus' ); + }; + } + + this.getInputElement = function() { + return iframe; + }; + + // Force container to scale in IE. + if ( CKEDITOR.env.ie ) { + container.setStyle( 'display', 'block' ); + container.setStyle( 'height', ( iframe.$.offsetHeight + 2 ) + 'px' ); + } + }, + commit: function() { + var editor = this.getDialog().getParentEditor(), + body = this.getInputElement().getFrameDocument().getBody(), + bogus = body.getBogus(), + html; + bogus && bogus.remove(); + + // Saving the contents so changes until paste is complete will not take place (#7500) + html = body.getHtml(); + + // Opera needs some time to think about what has happened and what it should do now. + setTimeout( function() { + editor.fire( 'pasteDialogCommit', { + dataValue: html, + // Avoid error if there was no paste so lastDataTransfer is null. + dataTransfer: lastDataTransfer || clipboard.initPasteDataTransfer() + } ); + }, 0 ); + } + } + ] + } ] + }; +} ); + +/** + * Internal event to pass paste dialog's data to the listeners. + * + * @private + * @event pasteDialogCommit + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + */ diff --git a/sources/plugins/clipboard/icons/copy-rtl.png b/sources/plugins/clipboard/icons/copy-rtl.png new file mode 100644 index 00000000..ef724460 Binary files /dev/null and b/sources/plugins/clipboard/icons/copy-rtl.png differ diff --git a/sources/plugins/clipboard/icons/copy.png b/sources/plugins/clipboard/icons/copy.png new file mode 100644 index 00000000..ef724460 Binary files /dev/null and b/sources/plugins/clipboard/icons/copy.png differ diff --git a/sources/plugins/clipboard/icons/cut-rtl.png b/sources/plugins/clipboard/icons/cut-rtl.png new file mode 100644 index 00000000..0b719653 Binary files /dev/null and b/sources/plugins/clipboard/icons/cut-rtl.png differ diff --git a/sources/plugins/clipboard/icons/cut.png b/sources/plugins/clipboard/icons/cut.png new file mode 100644 index 00000000..0b719653 Binary files /dev/null and b/sources/plugins/clipboard/icons/cut.png 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 00000000..29026cc0 Binary files /dev/null and b/sources/plugins/clipboard/icons/hidpi/copy-rtl.png differ diff --git a/sources/plugins/clipboard/icons/hidpi/copy.png b/sources/plugins/clipboard/icons/hidpi/copy.png new file mode 100644 index 00000000..29026cc0 Binary files /dev/null and b/sources/plugins/clipboard/icons/hidpi/copy.png 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 00000000..bfec0cfb Binary files /dev/null and b/sources/plugins/clipboard/icons/hidpi/cut-rtl.png differ diff --git a/sources/plugins/clipboard/icons/hidpi/cut.png b/sources/plugins/clipboard/icons/hidpi/cut.png new file mode 100644 index 00000000..bfec0cfb Binary files /dev/null and b/sources/plugins/clipboard/icons/hidpi/cut.png 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 00000000..f18dac37 Binary files /dev/null and b/sources/plugins/clipboard/icons/hidpi/paste-rtl.png differ diff --git a/sources/plugins/clipboard/icons/hidpi/paste.png b/sources/plugins/clipboard/icons/hidpi/paste.png new file mode 100644 index 00000000..f18dac37 Binary files /dev/null and b/sources/plugins/clipboard/icons/hidpi/paste.png differ diff --git a/sources/plugins/clipboard/icons/paste-rtl.png b/sources/plugins/clipboard/icons/paste-rtl.png new file mode 100644 index 00000000..b2bfef20 Binary files /dev/null and b/sources/plugins/clipboard/icons/paste-rtl.png differ diff --git a/sources/plugins/clipboard/icons/paste.png b/sources/plugins/clipboard/icons/paste.png new file mode 100644 index 00000000..b2bfef20 Binary files /dev/null and b/sources/plugins/clipboard/icons/paste.png differ diff --git a/sources/plugins/clipboard/lang/af.js b/sources/plugins/clipboard/lang/af.js new file mode 100644 index 00000000..b7dbddc5 --- /dev/null +++ b/sources/plugins/clipboard/lang/af.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'af', { + copy: 'Kopiëer', + copyError: 'U blaaier se sekuriteitsinstelling belet die kopiëringsaksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+C).', + cut: 'Knip', + cutError: 'U blaaier se sekuriteitsinstelling belet die outomatiese knip-aksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+X).', + paste: 'Plak', + pasteArea: 'Plak-area', + pasteMsg: 'Plak die teks in die volgende teks-area met die sleutelbordkombinasie (Ctrl/Cmd+V) en druk OK.', + securityMsg: 'Weens u blaaier se sekuriteitsinstelling is data op die knipbord nie toeganklik nie. U kan dit eers weer in hierdie venster plak.', + title: 'Byvoeg' +} ); diff --git a/sources/plugins/clipboard/lang/ar.js b/sources/plugins/clipboard/lang/ar.js new file mode 100644 index 00000000..c6b6613d --- /dev/null +++ b/sources/plugins/clipboard/lang/ar.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'ar', { + copy: 'نسخ', + copyError: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع عمليات النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+C).', + cut: 'قص', + cutError: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+X).', + paste: 'لصق', + pasteArea: 'منطقة اللصق', + pasteMsg: 'الصق داخل الصندوق بإستخدام زرائر (Ctrl/Cmd+V) في لوحة المفاتيح، ثم اضغط زر موافق.', + securityMsg: 'نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذلك يجب عليك لصق المحتوى مرة أخرى في هذه النافذة.', + title: 'لصق' +} ); diff --git a/sources/plugins/clipboard/lang/bg.js b/sources/plugins/clipboard/lang/bg.js new file mode 100644 index 00000000..c700865d --- /dev/null +++ b/sources/plugins/clipboard/lang/bg.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'bg', { + copy: 'Копирай', + copyError: 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl/Cmd+C).', + cut: 'Отрежи', + cutError: 'Настройките за сигурност на Вашия браузър не позволяват на редактора автоматично да изъплни действията за отрязване. Моля ползвайте клавиатурните команди за целта (ctrl+x).', + paste: 'Вмъкни', + pasteArea: 'Зона за вмъкване', + pasteMsg: 'Вмъкнете тук съдъжанието с клавиатуарата (Ctrl/Cmd+V) и натиснете OK.', + securityMsg: 'Заради настройките за сигурност на Вашия браузър, редакторът не може да прочете данните от клипборда коректно.', + title: 'Вмъкни' +} ); diff --git a/sources/plugins/clipboard/lang/bn.js b/sources/plugins/clipboard/lang/bn.js new file mode 100644 index 00000000..5df653c6 --- /dev/null +++ b/sources/plugins/clipboard/lang/bn.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'bn', { + copy: 'কপি', + copyError: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+C)।', + cut: 'কাট', + cutError: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+X)।', + paste: 'পেস্ট', + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (Ctrl/Cmd+V) পেস্ট করুন এবং OK চাপ দিন', + securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + title: 'পেস্ট' +} ); diff --git a/sources/plugins/clipboard/lang/bs.js b/sources/plugins/clipboard/lang/bs.js new file mode 100644 index 00000000..e6c11949 --- /dev/null +++ b/sources/plugins/clipboard/lang/bs.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'bs', { + copy: 'Kopiraj', + copyError: 'Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+C).', + cut: 'Izreži', + cutError: 'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).', + paste: 'Zalijepi', + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING + securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + title: 'Zalijepi' +} ); diff --git a/sources/plugins/clipboard/lang/ca.js b/sources/plugins/clipboard/lang/ca.js new file mode 100644 index 00000000..0445e697 --- /dev/null +++ b/sources/plugins/clipboard/lang/ca.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'ca', { + copy: 'Copiar', + 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).', + cut: 'Retallar', + 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).', + paste: 'Enganxar', + pasteArea: 'Àrea d\'enganxat', + pasteMsg: 'Si us plau, enganxi dins del següent camp utilitzant el teclat (Ctrl/Cmd+V) i premi OK.', + securityMsg: 'A causa de la configuració de seguretat del vostre navegador, l\'editor no pot accedir a les dades del porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.', + title: 'Enganxar' +} ); diff --git a/sources/plugins/clipboard/lang/cs.js b/sources/plugins/clipboard/lang/cs.js new file mode 100644 index 00000000..f32f1be6 --- /dev/null +++ b/sources/plugins/clipboard/lang/cs.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'cs', { + copy: 'Kopírovat', + 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).', + cut: 'Vyjmout', + 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).', + paste: 'Vložit', + pasteArea: 'Oblast vkládání', + pasteMsg: 'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (Ctrl/Cmd+V) a stiskněte OK.', + securityMsg: 'Z důvodů nastavení bezpečnosti vašeho prohlížeče nemůže editor přistupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.', + title: 'Vložit' +} ); diff --git a/sources/plugins/clipboard/lang/cy.js b/sources/plugins/clipboard/lang/cy.js new file mode 100644 index 00000000..65e71254 --- /dev/null +++ b/sources/plugins/clipboard/lang/cy.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'cy', { + copy: 'Copïo', + 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).', + cut: 'Torri', + cutError: 'Nid yw gosodiadau diogelwch eich porwr yn caniatàu\'r golygydd i gynnal \'gweithredoedd torri\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).', + paste: 'Gludo', + pasteArea: 'Ardal Gludo', + pasteMsg: 'Gludwch i mewn i\'r blwch canlynol gan ddefnyddio\'r bysellfwrdd (Ctrl/Cmd+V) a phwyso Iawn.', + securityMsg: 'Oherwydd gosodiadau diogelwch eich porwr, \'dyw\'r porwr ddim yn gallu ennill mynediad i\'r data ar y clipfwrdd yn uniongyrchol. Mae angen i chi ei ludo eto i\'r ffenestr hon.', + title: 'Gludo' +} ); diff --git a/sources/plugins/clipboard/lang/da.js b/sources/plugins/clipboard/lang/da.js new file mode 100644 index 00000000..41f73069 --- /dev/null +++ b/sources/plugins/clipboard/lang/da.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'da', { + copy: 'Kopiér', + copyError: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

Brug i stedet tastaturet til at kopiere teksten (Ctrl/Cmd+C).', + cut: 'Klip', + cutError: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

Brug i stedet tastaturet til at klippe teksten (Ctrl/Cmd+X).', + paste: 'Indsæt', + pasteArea: 'Indsæt område', + pasteMsg: 'Indsæt i feltet herunder (Ctrl/Cmd+V) og klik på OK.', + securityMsg: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

Du skal indsætte udklipsholderens indhold i dette vindue igen.', + title: 'Indsæt' +} ); diff --git a/sources/plugins/clipboard/lang/de.js b/sources/plugins/clipboard/lang/de.js new file mode 100644 index 00000000..baeb6528 --- /dev/null +++ b/sources/plugins/clipboard/lang/de.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'de', { + copy: 'Kopieren', + copyError: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).', + cut: 'Ausschneiden', + 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).', + paste: 'Einfügen', + pasteArea: 'Einfügebereich', + pasteMsg: 'Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit Strg+V) ein und bestätigen Sie mit OK.', + securityMsg: 'Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.', + title: 'Einfügen' +} ); diff --git a/sources/plugins/clipboard/lang/el.js b/sources/plugins/clipboard/lang/el.js new file mode 100644 index 00000000..57158663 --- /dev/null +++ b/sources/plugins/clipboard/lang/el.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'el', { + copy: 'Αντιγραφή', + copyError: 'Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+C).', + cut: 'Αποκοπή', + cutError: 'Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+X).', + paste: 'Επικόλληση', + pasteArea: 'Περιοχή Επικόλλησης', + pasteMsg: 'Παρακαλώ επικολλήστε στο ακόλουθο κουτί χρησιμοποιώντας το πληκτρολόγιο (Ctrl/Cmd+V) και πατήστε OK.', + securityMsg: 'Λόγων των ρυθμίσεων ασφάλειας του περιηγητή σας, ο επεξεργαστής δεν μπορεί να έχει πρόσβαση στην μνήμη επικόλλησης. Χρειάζεται να επικολλήσετε ξανά σε αυτό το παράθυρο.', + title: 'Επικόλληση' +} ); diff --git a/sources/plugins/clipboard/lang/en-au.js b/sources/plugins/clipboard/lang/en-au.js new file mode 100644 index 00000000..6c895f82 --- /dev/null +++ b/sources/plugins/clipboard/lang/en-au.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'en-au', { + copy: 'Copy', + copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', + cut: 'Cut', + cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', + paste: 'Paste', + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', + securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', + title: 'Paste' +} ); diff --git a/sources/plugins/clipboard/lang/en-ca.js b/sources/plugins/clipboard/lang/en-ca.js new file mode 100644 index 00000000..4f1220e0 --- /dev/null +++ b/sources/plugins/clipboard/lang/en-ca.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'en-ca', { + copy: 'Copy', + copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', + cut: 'Cut', + cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', + paste: 'Paste', + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', + securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', + title: 'Paste' +} ); diff --git a/sources/plugins/clipboard/lang/en-gb.js b/sources/plugins/clipboard/lang/en-gb.js new file mode 100644 index 00000000..a460489e --- /dev/null +++ b/sources/plugins/clipboard/lang/en-gb.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'en-gb', { + copy: 'Copy', + copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', + cut: 'Cut', + cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', + paste: 'Paste', + pasteArea: 'Paste Area', + pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', + securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', + title: 'Paste' +} ); diff --git a/sources/plugins/clipboard/lang/en.js b/sources/plugins/clipboard/lang/en.js new file mode 100644 index 00000000..db5dd596 --- /dev/null +++ b/sources/plugins/clipboard/lang/en.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'en', { + copy: 'Copy', + copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', + cut: 'Cut', + cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', + paste: 'Paste', + pasteArea: 'Paste Area', + pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', + securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', + title: 'Paste' +} ); diff --git a/sources/plugins/clipboard/lang/eo.js b/sources/plugins/clipboard/lang/eo.js new file mode 100644 index 00000000..55a62ef3 --- /dev/null +++ b/sources/plugins/clipboard/lang/eo.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'eo', { + copy: 'Kopii', + copyError: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-C).', + cut: 'Eltondi', + cutError: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).', + paste: 'Interglui', + pasteArea: 'Intergluoareo', + pasteMsg: 'Bonvolu glui la tekston en la jenan areon per uzado de la klavaro (Ctrl/Cmd+V) kaj premu OK', + securityMsg: 'Pro la sekurecagordo de via TTT-legilo, la redaktilo ne povas rekte atingi viajn datenojn en la poŝo. Bonvolu denove interglui la datenojn en tiun fenestron.', + title: 'Interglui' +} ); diff --git a/sources/plugins/clipboard/lang/es.js b/sources/plugins/clipboard/lang/es.js new file mode 100644 index 00000000..346265af --- /dev/null +++ b/sources/plugins/clipboard/lang/es.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'es', { + copy: 'Copiar', + 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).', + cut: 'Cortar', + 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).', + paste: 'Pegar', + pasteArea: 'Zona de pegado', + pasteMsg: 'Por favor pegue dentro del cuadro utilizando el teclado (Ctrl/Cmd+V);\r\nluego presione Aceptar.', + securityMsg: 'Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles.\r\nEs necesario que lo pegue de nuevo en esta ventana.', + title: 'Pegar' +} ); diff --git a/sources/plugins/clipboard/lang/et.js b/sources/plugins/clipboard/lang/et.js new file mode 100644 index 00000000..34dc3bc7 --- /dev/null +++ b/sources/plugins/clipboard/lang/et.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'et', { + copy: 'Kopeeri', + copyError: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+C).', + cut: 'Lõika', + cutError: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).', + paste: 'Aseta', + pasteArea: 'Asetamise ala', + pasteMsg: 'Palun aseta tekst järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+V) ja vajuta seejärel OK.', + securityMsg: 'Sinu veebisirvija turvaseadete tõttu ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead asetama need uuesti siia aknasse.', + title: 'Asetamine' +} ); diff --git a/sources/plugins/clipboard/lang/eu.js b/sources/plugins/clipboard/lang/eu.js new file mode 100644 index 00000000..6683130a --- /dev/null +++ b/sources/plugins/clipboard/lang/eu.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'eu', { + copy: 'Kopiatu', + copyError: 'Zure web nabigatzailearen segurtasun ezarpenek ez dute baimentzen testuak automatikoki kopiatzea. Mesedez teklatua erabil ezazu (Ctrl/Cmd+C).', + cut: 'Ebaki', + cutError: 'Zure web nabigatzailearen segurtasun ezarpenek ez dute baimentzen testuak automatikoki moztea. Mesedez teklatua erabil ezazu (Ctrl/Cmd+X).', + paste: 'Itsatsi', + pasteArea: 'Itsasteko area', + pasteMsg: 'Mesedez teklatua erabiliz (Ctrl/Cmd+V) ondorengo eremuan testua itsatsi eta sakatu Ados.', + securityMsg: 'Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.', + title: 'Itsatsi' +} ); diff --git a/sources/plugins/clipboard/lang/fa.js b/sources/plugins/clipboard/lang/fa.js new file mode 100644 index 00000000..2bf8ae48 --- /dev/null +++ b/sources/plugins/clipboard/lang/fa.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'fa', { + copy: 'رونوشت', + copyError: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپی کردن را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+C).', + cut: 'برش', + cutError: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+X).', + paste: 'چسباندن', + pasteArea: 'محل چسباندن', + pasteMsg: 'لطفا متن را با کلیدهای (Ctrl/Cmd+V) در این جعبهٴ متنی بچسبانید و پذیرش را بزنید.', + securityMsg: 'به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمیتواند دسترسی مستقیم به دادههای clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.', + title: 'چسباندن' +} ); diff --git a/sources/plugins/clipboard/lang/fi.js b/sources/plugins/clipboard/lang/fi.js new file mode 100644 index 00000000..60f63956 --- /dev/null +++ b/sources/plugins/clipboard/lang/fi.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'fi', { + copy: 'Kopioi', + copyError: 'Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).', + cut: 'Leikkaa', + cutError: 'Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).', + paste: 'Liitä', + pasteArea: 'Leikealue', + pasteMsg: 'Liitä painamalla (Ctrl+V) ja painamalla OK.', + securityMsg: 'Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.', + title: 'Liitä' +} ); diff --git a/sources/plugins/clipboard/lang/fo.js b/sources/plugins/clipboard/lang/fo.js new file mode 100644 index 00000000..1298d096 --- /dev/null +++ b/sources/plugins/clipboard/lang/fo.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'fo', { + copy: 'Avrita', + copyError: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (Ctrl/Cmd+C).', + cut: 'Kvett', + cutError: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).', + paste: 'Innrita', + pasteArea: 'Avritingarumráði', + pasteMsg: 'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (Ctrl/Cmd+V) og klikk á Góðtak.', + securityMsg: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.', + title: 'Innrita' +} ); diff --git a/sources/plugins/clipboard/lang/fr-ca.js b/sources/plugins/clipboard/lang/fr-ca.js new file mode 100644 index 00000000..2c01ed4e --- /dev/null +++ b/sources/plugins/clipboard/lang/fr-ca.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'fr-ca', { + copy: 'Copier', + 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).', + cut: 'Couper', + 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).', + paste: 'Coller', + pasteArea: 'Coller la zone', + pasteMsg: 'Veuillez coller dans la zone ci-dessous en utilisant le clavier (Ctrl/Cmd+V) et appuyer sur OK.', + securityMsg: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.', + title: 'Coller' +} ); diff --git a/sources/plugins/clipboard/lang/fr.js b/sources/plugins/clipboard/lang/fr.js new file mode 100644 index 00000000..a8dc5f9e --- /dev/null +++ b/sources/plugins/clipboard/lang/fr.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'fr', { + copy: 'Copier', + copyError: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement des opérations de copie. Veuillez utiliser le raccourci clavier (Ctrl/Cmd+C).', + cut: 'Couper', + cutError: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement l\'opération "couper". Veuillez utiliser le raccourci clavier (Ctrl/Cmd+X).', + paste: 'Coller', + pasteArea: 'Coller la zone', + pasteMsg: 'Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (Ctrl/Cmd+V) et cliquez sur OK.', + securityMsg: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur n\'est pas en mesure d\'accéder directement à vos données contenues dans le presse-papier. Vous devriez réessayer de coller les données dans la fenêtre.', + title: 'Coller' +} ); diff --git a/sources/plugins/clipboard/lang/gl.js b/sources/plugins/clipboard/lang/gl.js new file mode 100644 index 00000000..7fc6b465 --- /dev/null +++ b/sources/plugins/clipboard/lang/gl.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'gl', { + copy: 'Copiar', + 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).', + cut: 'Cortar', + 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).', + paste: 'Pegar', + pasteArea: 'Zona de pegado', + pasteMsg: 'Pegue dentro do seguinte cadro usando o teclado (Ctrl/Cmd+V) e prema en Aceptar', + securityMsg: 'Por mor da configuración de seguranza do seu navegador, o editor non ten acceso ao portapapeis. É necesario pegalo novamente nesta xanela.', + title: 'Pegar' +} ); diff --git a/sources/plugins/clipboard/lang/gu.js b/sources/plugins/clipboard/lang/gu.js new file mode 100644 index 00000000..a513482f --- /dev/null +++ b/sources/plugins/clipboard/lang/gu.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'gu', { + copy: 'નકલ', + copyError: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+C) का प्रयोग करें।', + cut: 'કાપવું', + cutError: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.', + paste: 'પેસ્ટ', + pasteArea: 'પેસ્ટ કરવાની જગ્યા', + pasteMsg: 'Ctrl/Cmd+V નો પ્રયોગ કરી પેસ્ટ કરો', + securityMsg: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.', + title: 'પેસ્ટ' +} ); diff --git a/sources/plugins/clipboard/lang/he.js b/sources/plugins/clipboard/lang/he.js new file mode 100644 index 00000000..d91fee0d --- /dev/null +++ b/sources/plugins/clipboard/lang/he.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'he', { + copy: 'העתקה', + copyError: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+C).', + cut: 'גזירה', + cutError: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+X).', + paste: 'הדבקה', + pasteArea: 'איזור הדבקה', + pasteMsg: 'נא להדביק בתוך הקופסה באמצעות (Ctrl/Cmd+V) וללחוץ על אישור.', + securityMsg: 'עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (Clipboard) בצורה ישירה. נא להדביק שוב בחלון זה.', + title: 'הדבקה' +} ); diff --git a/sources/plugins/clipboard/lang/hi.js b/sources/plugins/clipboard/lang/hi.js new file mode 100644 index 00000000..3660fb19 --- /dev/null +++ b/sources/plugins/clipboard/lang/hi.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'hi', { + copy: 'कॉपी', + copyError: 'आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+C) का प्रयोग करें।', + cut: 'कट', + cutError: 'आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+X) का प्रयोग करें।', + paste: 'पेस्ट', + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'Ctrl/Cmd+V का प्रयोग करके पेस्ट करें और ठीक है करें.', + securityMsg: 'आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.', + title: 'पेस्ट' +} ); diff --git a/sources/plugins/clipboard/lang/hr.js b/sources/plugins/clipboard/lang/hr.js new file mode 100644 index 00000000..b820eb9e --- /dev/null +++ b/sources/plugins/clipboard/lang/hr.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'hr', { + copy: 'Kopiraj', + copyError: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+C).', + cut: 'Izreži', + cutError: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).', + paste: 'Zalijepi', + pasteArea: 'Prostor za ljepljenje', + pasteMsg: 'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (Ctrl/Cmd+V) i kliknite OK.', + securityMsg: 'Zbog sigurnosnih postavki Vašeg pretraživača, editor nema direktan pristup Vašem međuspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.', + title: 'Zalijepi' +} ); diff --git a/sources/plugins/clipboard/lang/hu.js b/sources/plugins/clipboard/lang/hu.js new file mode 100644 index 00000000..61829ca9 --- /dev/null +++ b/sources/plugins/clipboard/lang/hu.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'hu', { + copy: 'Másolás', + 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).', + cut: 'Kivágás', + 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).', + paste: 'Beillesztés', + pasteArea: 'Beszúrás mező', + pasteMsg: 'Másolja be az alábbi mezőbe a Ctrl/Cmd+V billentyűk lenyomásával, majd nyomjon Rendben-t.', + securityMsg: 'A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.', + title: 'Beillesztés' +} ); diff --git a/sources/plugins/clipboard/lang/id.js b/sources/plugins/clipboard/lang/id.js new file mode 100644 index 00000000..eca3852a --- /dev/null +++ b/sources/plugins/clipboard/lang/id.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'id', { + copy: 'Salin', + copyError: 'Pengaturan keamanan peramban anda tidak mengizinkan editor untuk mengeksekusi operasi menyalin secara otomatis. Mohon gunakan papan tuts (Ctrl/Cmd+C)', + cut: 'Potong', + 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 + paste: 'Tempel', + pasteArea: 'Area Tempel', + pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING + securityMsg: 'Karena pengaturan keamanan peramban anda, editor tida dapat mengakses data clipboard anda secara langsung. Anda harus mem-paste kembali pada halaman ini', + title: 'Tempel' +} ); diff --git a/sources/plugins/clipboard/lang/is.js b/sources/plugins/clipboard/lang/is.js new file mode 100644 index 00000000..bdf5862f --- /dev/null +++ b/sources/plugins/clipboard/lang/is.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'is', { + copy: 'Afrita', + copyError: 'Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl/Cmd+C).', + cut: 'Klippa', + cutError: 'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl/Cmd+X).', + paste: 'Líma', + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'Límdu í svæðið hér að neðan og (Ctrl/Cmd+V) og smelltu á OK.', + securityMsg: 'Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.', + title: 'Líma' +} ); diff --git a/sources/plugins/clipboard/lang/it.js b/sources/plugins/clipboard/lang/it.js new file mode 100644 index 00000000..443fdf2e --- /dev/null +++ b/sources/plugins/clipboard/lang/it.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'it', { + copy: 'Copia', + copyError: 'Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).', + cut: 'Taglia', + cutError: 'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).', + paste: 'Incolla', + pasteArea: 'Incolla', + pasteMsg: 'Incolla il testo all\'interno dell\'area sottostante usando la scorciatoia di tastiere (Ctrl/Cmd+V) e premi OK.', + securityMsg: 'A causa delle impostazioni di sicurezza del browser,l\'editor non è in grado di accedere direttamente agli appunti. E\' pertanto necessario incollarli di nuovo in questa finestra.', + title: 'Incolla' +} ); diff --git a/sources/plugins/clipboard/lang/ja.js b/sources/plugins/clipboard/lang/ja.js new file mode 100644 index 00000000..5697cbb7 --- /dev/null +++ b/sources/plugins/clipboard/lang/ja.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'ja', { + copy: 'コピー', + copyError: 'ブラウザーのセキュリティ設定によりエディタのコピー操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+C)を使用してください。', + cut: '切り取り', + cutError: 'ブラウザーのセキュリティ設定によりエディタの切り取り操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+X)を使用してください。', + paste: '貼り付け', + pasteArea: '貼り付け場所', + pasteMsg: 'キーボード(Ctrl/Cmd+V)を使用して、次の入力エリア内で貼り付けて、OKを押してください。', + securityMsg: 'ブラウザのセキュリティ設定により、エディタはクリップボードデータに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。', + title: '貼り付け' +} ); diff --git a/sources/plugins/clipboard/lang/ka.js b/sources/plugins/clipboard/lang/ka.js new file mode 100644 index 00000000..021fe08e --- /dev/null +++ b/sources/plugins/clipboard/lang/ka.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'ka', { + copy: 'ასლი', + copyError: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ასლის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+C).', + cut: 'ამოჭრა', + cutError: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ამოჭრის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+X).', + paste: 'ჩასმა', + pasteArea: 'ჩასმის არე', + pasteMsg: 'ჩასვით ამ არის შიგნით კლავიატურის გამოყენებით (Ctrl/Cmd+V) და დააჭირეთ OK-ს', + securityMsg: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა clipboard-ის მონაცემების წვდომის უფლებას. კიდევ უნდა ჩასვათ ტექსტი ამ ფანჯარაში.', + title: 'ჩასმა' +} ); diff --git a/sources/plugins/clipboard/lang/km.js b/sources/plugins/clipboard/lang/km.js new file mode 100644 index 00000000..0baa9d8b --- /dev/null +++ b/sources/plugins/clipboard/lang/km.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'km', { + copy: 'ចម្លង', + copyError: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+C)។', + cut: 'កាត់យក', + cutError: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+X) ។', + paste: 'បិទ​ភ្ជាប់', + pasteArea: 'តំបន់​បិទ​ភ្ជាប់', + pasteMsg: 'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី ​(Ctrl/Cmd+V) ហើយចុច OK ។', + securityMsg: 'ព្រោះតែ​ការកំណត់​សុវត្ថិភាព ប្រអប់សរសេរ​មិន​អាចចាប់​យកទិន្នន័យពីក្តារតម្បៀតខ្ទាស់​អ្នក​​ដោយផ្ទាល់​បានទេ។ អ្នក​ត្រូវចំលង​ដាក់វាម្តង​ទៀត ក្នុងផ្ទាំងនេះ។', + title: 'បិទ​ភ្ជាប់' +} ); diff --git a/sources/plugins/clipboard/lang/ko.js b/sources/plugins/clipboard/lang/ko.js new file mode 100644 index 00000000..6db8caba --- /dev/null +++ b/sources/plugins/clipboard/lang/ko.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'ko', { + copy: '복사', + copyError: '브라우저의 보안설정 때문에 복사할 수 없습니다. 키보드(Ctrl/Cmd+C)를 이용해서 복사하십시오.', + cut: '잘라내기', + cutError: '브라우저의 보안설정 때문에 잘라내기 기능을 실행할 수 없습니다. 키보드(Ctrl/Cmd+X)를 이용해서 잘라내기 하십시오', + paste: '붙여넣기', + pasteArea: '붙여넣기 범위', + pasteMsg: '키보드(Ctrl/Cmd+V)를 이용해서 상자안에 붙여넣고 확인 를 누르세요.', + securityMsg: '브라우저 보안 설정으로 인해, 클립보드에 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.', + title: '붙여넣기' +} ); diff --git a/sources/plugins/clipboard/lang/ku.js b/sources/plugins/clipboard/lang/ku.js new file mode 100644 index 00000000..91b77671 --- /dev/null +++ b/sources/plugins/clipboard/lang/ku.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'ku', { + copy: 'لەبەرگرتنەوە', + copyError: 'پارێزی وێبگەڕەکەت ڕێگەنادات بەسەرنووسەکە لە لکاندنی دەقی خۆکارارنە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+C).', + cut: 'بڕین', + cutError: 'پارێزی وێبگەڕەکەت ڕێگەنادات بە سەرنووسەکە لەبڕینی خۆکارانە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+X).', + paste: 'لکاندن', + pasteArea: 'ناوچەی لکاندن', + pasteMsg: 'تکایە بیلکێنە لەناوەوەی ئەم سنوقە لەڕێی تەختەکلیلەکەت بە بەکارهێنانی کلیلی (Ctrl/Cmd+V) دووای کلیکی باشە بکە.', + securityMsg: 'بەهۆی شێوەپێدانی پارێزی وێبگەڕەکەت، سەرنووسەکه ناتوانێت دەستبگەیەنێت بەهەڵگیراوەکە ڕاستەوخۆ. بۆیه پێویسته دووباره بیلکێنیت لەم پەنجەرەیه.', + title: 'لکاندن' +} ); diff --git a/sources/plugins/clipboard/lang/lt.js b/sources/plugins/clipboard/lang/lt.js new file mode 100644 index 00000000..ef57ed48 --- /dev/null +++ b/sources/plugins/clipboard/lang/lt.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'lt', { + copy: 'Kopijuoti', + 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).', + cut: 'Iškirpti', + 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).', + paste: 'Įdėti', + pasteArea: 'Įkelti dalį', + pasteMsg: 'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (Ctrl/Cmd+V) ir paspauskite mygtuką OK.', + securityMsg: 'Dėl jūsų naršyklės saugumo nustatymų, redaktorius negali tiesiogiai pasiekti laikinosios atminties. Jums reikia nukopijuoti dar kartą į šį langą.', + title: 'Įdėti' +} ); diff --git a/sources/plugins/clipboard/lang/lv.js b/sources/plugins/clipboard/lang/lv.js new file mode 100644 index 00000000..f347cc4f --- /dev/null +++ b/sources/plugins/clipboard/lang/lv.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'lv', { + copy: 'Kopēt', + 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.', + cut: 'Izgriezt', + 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.', + paste: 'Ielīmēt', + pasteArea: 'Ielīmēšanas zona', + pasteMsg: 'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (Ctrl/Cmd+V) un apstipriniet ar Darīts!.', + securityMsg: 'Jūsu pārlūka drošības uzstādījumu dēļ, nav iespējams tieši piekļūt jūsu starpliktuvei. Jums jāielīmē atkārtoti šajā logā.', + title: 'Ievietot' +} ); diff --git a/sources/plugins/clipboard/lang/mk.js b/sources/plugins/clipboard/lang/mk.js new file mode 100644 index 00000000..3fbb5718 --- /dev/null +++ b/sources/plugins/clipboard/lang/mk.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'mk', { + copy: 'Copy', // MISSING + 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 + cut: 'Cut', // MISSING + 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 + paste: 'Paste', // MISSING + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING + securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + title: 'Paste' // MISSING +} ); diff --git a/sources/plugins/clipboard/lang/mn.js b/sources/plugins/clipboard/lang/mn.js new file mode 100644 index 00000000..68c3f77e --- /dev/null +++ b/sources/plugins/clipboard/lang/mn.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'mn', { + copy: 'Хуулах', + copyError: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+C) товчны хослолыг ашиглана уу.', + cut: 'Хайчлах', + cutError: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хослолыг ашиглана уу.', + paste: 'Буулгах', + pasteArea: 'Paste Area', // MISSING + pasteMsg: '(Ctrl/Cmd+V) товчийг ашиглан paste хийнэ үү. Мөн OK дар.', + securityMsg: 'Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.', + title: 'Буулгах' +} ); diff --git a/sources/plugins/clipboard/lang/ms.js b/sources/plugins/clipboard/lang/ms.js new file mode 100644 index 00000000..4381f047 --- /dev/null +++ b/sources/plugins/clipboard/lang/ms.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'ms', { + copy: 'Salin', + copyError: 'Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+C).', + cut: 'Potong', + cutError: 'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).', + paste: 'Tampal', + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING + securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + title: 'Tampal' +} ); diff --git a/sources/plugins/clipboard/lang/nb.js b/sources/plugins/clipboard/lang/nb.js new file mode 100644 index 00000000..d2dedbfc --- /dev/null +++ b/sources/plugins/clipboard/lang/nb.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'nb', { + copy: 'Kopier', + copyError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+C).', + cut: 'Klipp ut', + cutError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+X).', + paste: 'Lim inn', + pasteArea: 'Innlimingsområde', + pasteMsg: 'Vennligst lim inn i følgende boks med tastaturet (Ctrl/Cmd+V) og trykk OK.', + securityMsg: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må derfor lime det inn på nytt i dette vinduet.', + title: 'Lim inn' +} ); diff --git a/sources/plugins/clipboard/lang/nl.js b/sources/plugins/clipboard/lang/nl.js new file mode 100644 index 00000000..b9829c53 --- /dev/null +++ b/sources/plugins/clipboard/lang/nl.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'nl', { + copy: 'Kopiëren', + copyError: 'De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.', + cut: 'Knippen', + cutError: 'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.', + paste: 'Plakken', + pasteArea: 'Plakgebied', + pasteMsg: 'Plak de tekst in het volgende vak gebruikmakend van uw toetsenbord (Ctrl/Cmd+V) en klik op OK.', + securityMsg: 'Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.', + title: 'Plakken' +} ); diff --git a/sources/plugins/clipboard/lang/no.js b/sources/plugins/clipboard/lang/no.js new file mode 100644 index 00000000..d883f6c2 --- /dev/null +++ b/sources/plugins/clipboard/lang/no.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'no', { + copy: 'Kopier', + copyError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snarveien (Ctrl/Cmd+C).', + cut: 'Klipp ut', + cutError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk snarveien (Ctrl/Cmd+X).', + paste: 'Lim inn', + pasteArea: 'Innlimingsområde', + pasteMsg: 'Vennligst lim inn i følgende boks med tastaturet (Ctrl/Cmd+V) og trykk OK.', + securityMsg: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må derfor lime det inn på nytt i dette vinduet.', + title: 'Lim inn' +} ); diff --git a/sources/plugins/clipboard/lang/pl.js b/sources/plugins/clipboard/lang/pl.js new file mode 100644 index 00000000..ca45bd03 --- /dev/null +++ b/sources/plugins/clipboard/lang/pl.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'pl', { + copy: 'Kopiuj', + copyError: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+C.', + cut: 'Wytnij', + cutError: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.', + paste: 'Wklej', + pasteArea: 'Obszar wklejania', + pasteMsg: 'Wklej tekst w poniższym polu, używając skrótu klawiaturowego (Ctrl/Cmd+V), i kliknij OK.', + securityMsg: 'Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę ponownie wkleić dane w tym oknie.', + title: 'Wklej' +} ); diff --git a/sources/plugins/clipboard/lang/pt-br.js b/sources/plugins/clipboard/lang/pt-br.js new file mode 100644 index 00000000..895ff3db --- /dev/null +++ b/sources/plugins/clipboard/lang/pt-br.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'pt-br', { + copy: 'Copiar', + 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).', + cut: 'Recortar', + 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).', + paste: 'Colar', + pasteArea: 'Área para Colar', + pasteMsg: 'Transfira o link usado na caixa usando o teclado com (Ctrl/Cmd+V) e OK.', + securityMsg: 'As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo manualmente nesta janela.', + title: 'Colar' +} ); diff --git a/sources/plugins/clipboard/lang/pt.js b/sources/plugins/clipboard/lang/pt.js new file mode 100644 index 00000000..40bf99bd --- /dev/null +++ b/sources/plugins/clipboard/lang/pt.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'pt', { + copy: 'Copiar', + 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).', + cut: 'Cortar', + 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).', + paste: 'Colar', + pasteArea: 'Colar área', + pasteMsg: 'Por favor, cole dentro da seguinte caixa usando o teclado (Ctrl/Cmd+V) e prima OK.', + securityMsg: 'Devido ás definições de segurança do teu browser, o editor não pode aceder ao clipboard diretamente. É necessário que voltes a colar as informações nesta janela.', + title: 'Colar' +} ); diff --git a/sources/plugins/clipboard/lang/ro.js b/sources/plugins/clipboard/lang/ro.js new file mode 100644 index 00000000..2b34ef74 --- /dev/null +++ b/sources/plugins/clipboard/lang/ro.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'ro', { + copy: 'Copiază', + 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).', + cut: 'Taie', + 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).', + paste: 'Adaugă', + pasteArea: 'Suprafața de adăugare', + pasteMsg: 'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (Ctrl/Cmd+V) şi apăsaţi OK', + securityMsg: 'Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.', + title: 'Adaugă' +} ); diff --git a/sources/plugins/clipboard/lang/ru.js b/sources/plugins/clipboard/lang/ru.js new file mode 100644 index 00000000..9790f01d --- /dev/null +++ b/sources/plugins/clipboard/lang/ru.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'ru', { + copy: 'Копировать', + copyError: 'Настройки безопасности вашего браузера не разрешают редактору выполнять операции по копированию текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+C).', + cut: 'Вырезать', + cutError: 'Настройки безопасности вашего браузера не разрешают редактору выполнять операции по вырезке текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+X).', + paste: 'Вставить', + pasteArea: 'Зона для вставки', + pasteMsg: 'Пожалуйста, вставьте текст в зону ниже, используя клавиатуру (Ctrl/Cmd+V) и нажмите кнопку "OK".', + securityMsg: 'Настройки безопасности вашего браузера не разрешают редактору напрямую обращаться к буферу обмена. Вы должны вставить текст снова в это окно.', + title: 'Вставить' +} ); diff --git a/sources/plugins/clipboard/lang/si.js b/sources/plugins/clipboard/lang/si.js new file mode 100644 index 00000000..37dd1248 --- /dev/null +++ b/sources/plugins/clipboard/lang/si.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'si', { + copy: 'පිටපත් කරන්න', + copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', // MISSING + cut: 'කපාගන්න', + cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', // MISSING + paste: 'අලවන්න', + pasteArea: 'අලවන ප්‍රදේශ', + pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING + securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + title: 'අලවන්න' +} ); diff --git a/sources/plugins/clipboard/lang/sk.js b/sources/plugins/clipboard/lang/sk.js new file mode 100644 index 00000000..4f9e97a7 --- /dev/null +++ b/sources/plugins/clipboard/lang/sk.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'sk', { + copy: 'Kopírovať', + copyError: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu kopírovania. Prosím, použite na to klávesnicu (Ctrl/Cmd+C).', + cut: 'Vystrihnúť', + cutError: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu vystrihnutia. Prosím, použite na to klávesnicu (Ctrl/Cmd+X).', + paste: 'Vložiť', + pasteArea: 'Miesto pre vloženie', + pasteMsg: 'Prosím, vložte nasledovný rámček použitím klávesnice (Ctrl/Cmd+V) a stlačte OK.', + securityMsg: 'Kvôli vašim bezpečnostným nastaveniam prehliadača editor nie je schopný pristupovať k vašej schránke na kopírovanie priamo. Vložte to preto do tohto okna.', + title: 'Vložiť' +} ); diff --git a/sources/plugins/clipboard/lang/sl.js b/sources/plugins/clipboard/lang/sl.js new file mode 100644 index 00000000..4bb3b6c8 --- /dev/null +++ b/sources/plugins/clipboard/lang/sl.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'sl', { + copy: 'Kopiraj', + copyError: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+C).', + cut: 'Izreži', + cutError: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).', + paste: 'Prilepi', + pasteArea: 'Prilepi Prostor', + pasteMsg: 'Prosim prilepite v sleči okvir s pomočjo tipkovnice (Ctrl/Cmd+V) in pritisnite V redu.', + securityMsg: 'Zaradi varnostnih nastavitev vašega brskalnika urejevalnik ne more neposredno dostopati do odložišča. Vsebino odložišča ponovno prilepite v to okno.', + title: 'Prilepi' +} ); diff --git a/sources/plugins/clipboard/lang/sq.js b/sources/plugins/clipboard/lang/sq.js new file mode 100644 index 00000000..e5be3c6c --- /dev/null +++ b/sources/plugins/clipboard/lang/sq.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'sq', { + copy: 'Kopjo', + 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).', + cut: 'Preje', + 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).', + paste: 'Hidhe', + pasteArea: 'Hapësira Hedhëse', + pasteMsg: 'Ju lutemi hidhni brenda kutizës në vijim duke shfrytëzuar tastierën (Ctrl/Cmd+V) dhe shtypni Mirë.', + securityMsg: 'Për shkak të dhënave të sigurisë së shfletuesit tuaj, redaktuesi nuk është në gjendje të i qaset drejtpërdrejtë të dhanve të tabelës suaj të punës. Ju duhet të hidhni atë përsëri në këtë dritare.', + title: 'Hidhe' +} ); diff --git a/sources/plugins/clipboard/lang/sr-latn.js b/sources/plugins/clipboard/lang/sr-latn.js new file mode 100644 index 00000000..02a2fbe5 --- /dev/null +++ b/sources/plugins/clipboard/lang/sr-latn.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'sr-latn', { + copy: 'Kopiraj', + 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).', + cut: 'Iseci', + 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).', + paste: 'Zalepi', + pasteArea: 'Prostor za lepljenje', + pasteMsg: 'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (Ctrl/Cmd+V) i da pritisnete OK.', + securityMsg: 'Zbog sigurnosnih postavki vašeg pregledača, editor nije u mogućnosti da direktno pristupi podacima u klipbordu. Potrebno je da zalepite još jednom u ovom prozoru.', + title: 'Zalepi' +} ); diff --git a/sources/plugins/clipboard/lang/sr.js b/sources/plugins/clipboard/lang/sr.js new file mode 100644 index 00000000..51055eb2 --- /dev/null +++ b/sources/plugins/clipboard/lang/sr.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'sr', { + copy: 'Копирај', + copyError: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+C).', + cut: 'Исеци', + cutError: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+X).', + paste: 'Залепи', + pasteArea: 'Залепи зону', + pasteMsg: 'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (Ctrl/Cmd+V) и да притиснете OK.', + securityMsg: 'Због сигурносних подешавања претраживача, едитор не може да приступи оставу. Требате да га поново залепите у овом прозору.', + title: 'Залепи' +} ); diff --git a/sources/plugins/clipboard/lang/sv.js b/sources/plugins/clipboard/lang/sv.js new file mode 100644 index 00000000..747a1cb2 --- /dev/null +++ b/sources/plugins/clipboard/lang/sv.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'sv', { + copy: 'Kopiera', + copyError: 'Säkerhetsinställningar i Er webbläsare tillåter inte åtgärden kopiera. Använd (Ctrl/Cmd+C) istället.', + cut: 'Klipp ut', + cutError: 'Säkerhetsinställningar i Er webbläsare tillåter inte åtgärden klipp ut. Använd (Ctrl/Cmd+X) istället.', + paste: 'Klistra in', + pasteArea: 'Paste Area', + pasteMsg: 'Var god och klistra in Er text i rutan nedan genom att använda (Ctrl/Cmd+V) klicka sen på OK.', + securityMsg: 'På grund av din webbläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.', + title: 'Klistra in' +} ); diff --git a/sources/plugins/clipboard/lang/th.js b/sources/plugins/clipboard/lang/th.js new file mode 100644 index 00000000..2ece4685 --- /dev/null +++ b/sources/plugins/clipboard/lang/th.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'th', { + copy: 'สำเนา', + copyError: 'ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว C พร้อมกัน).', + cut: 'ตัด', + cutError: 'ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว X พร้อมกัน).', + paste: 'วาง', + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (Ctrl/Cmd และ V)พร้อมๆกัน และกด OK.', + securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + title: 'วาง' +} ); diff --git a/sources/plugins/clipboard/lang/tr.js b/sources/plugins/clipboard/lang/tr.js new file mode 100644 index 00000000..a960cbfe --- /dev/null +++ b/sources/plugins/clipboard/lang/tr.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'tr', { + copy: 'Kopyala', + 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.', + cut: 'Kes', + 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.', + paste: 'Yapıştır', + pasteArea: 'Yapıştırma Alanı', + pasteMsg: 'Lütfen aşağıdaki kutunun içine yapıştırın. (Ctrl/Cmd+V) ve Tamam butonunu tıklayın.', + securityMsg: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..', + title: 'Yapıştır' +} ); diff --git a/sources/plugins/clipboard/lang/tt.js b/sources/plugins/clipboard/lang/tt.js new file mode 100644 index 00000000..3921b895 --- /dev/null +++ b/sources/plugins/clipboard/lang/tt.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'tt', { + copy: 'Күчермәләү', + copyError: 'Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне тыя. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.', + cut: 'Кисеп алу', + cutError: 'Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне тыя. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.', + paste: 'Өстәү', + pasteArea: 'Өстәү мәйданы', + pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING + securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + title: 'Өстәү' +} ); diff --git a/sources/plugins/clipboard/lang/ug.js b/sources/plugins/clipboard/lang/ug.js new file mode 100644 index 00000000..6b0f0851 --- /dev/null +++ b/sources/plugins/clipboard/lang/ug.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'ug', { + copy: 'نەشر ھوقۇقىغا ئىگە بەلگىسى', + copyError: 'تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كۆچۈر مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+C) ئارقىلىق تاماملاڭ', + cut: 'كەس', + cutError: 'تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كەس مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+X) ئارقىلىق تاماملاڭ', + paste: 'چاپلا', + pasteArea: 'چاپلاش دائىرىسى', + pasteMsg: 'ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+V) نى ئىشلىتىپ مەزمۇننى تۆۋەندىكى رامكىغا كۆچۈرۈڭ، ئاندىن جەزملەنى بېسىڭ', + securityMsg: 'توركۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى سەۋەبىدىن بۇ تەھرىرلىگۈچ چاپلاش تاختىسىدىكى مەزمۇننى بىۋاستە زىيارەت قىلالمايدۇ، بۇ كۆزنەكتە قايتا بىر قېتىم چاپلىشىڭىز كېرەك.', + title: 'چاپلا' +} ); diff --git a/sources/plugins/clipboard/lang/uk.js b/sources/plugins/clipboard/lang/uk.js new file mode 100644 index 00000000..666be54c --- /dev/null +++ b/sources/plugins/clipboard/lang/uk.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'uk', { + copy: 'Копіювати', + copyError: 'Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+C).', + cut: 'Вирізати', + cutError: 'Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+X)', + paste: 'Вставити', + pasteArea: 'Область вставки', + pasteMsg: 'Будь ласка, вставте інформацію з буфера обміну в цю область, користуючись комбінацією клавіш (Ctrl/Cmd+V), та натисніть OK.', + securityMsg: 'Редактор не може отримати прямий доступ до буферу обміну у зв\'язку з налаштуваннями Вашого браузера. Вам потрібно вставити інформацію в це вікно.', + title: 'Вставити' +} ); diff --git a/sources/plugins/clipboard/lang/vi.js b/sources/plugins/clipboard/lang/vi.js new file mode 100644 index 00000000..dfbc8210 --- /dev/null +++ b/sources/plugins/clipboard/lang/vi.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'vi', { + copy: 'Sao chép', + 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).', + cut: 'Cắt', + 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).', + paste: 'Dán', + pasteArea: 'Khu vực dán', + pasteMsg: 'Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (Ctrl/Cmd+V) và nhấn vào nút Đồng ý.', + securityMsg: 'Do thiết lập bảo mật của trình duyệt nên trình biên tập không thể truy cập trực tiếp vào nội dung đã sao chép. Bạn cần phải dán lại nội dung vào cửa sổ này.', + title: 'Dán' +} ); diff --git a/sources/plugins/clipboard/lang/zh-cn.js b/sources/plugins/clipboard/lang/zh-cn.js new file mode 100644 index 00000000..426e4072 --- /dev/null +++ b/sources/plugins/clipboard/lang/zh-cn.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'zh-cn', { + copy: '复制', + copyError: '您的浏览器安全设置不允许编辑器自动执行复制操作,请使用键盘快捷键(Ctrl/Cmd+C)来完成。', + cut: '剪切', + cutError: '您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl/Cmd+X)来完成。', + paste: '粘贴', + pasteArea: '粘贴区域', + pasteMsg: '请使用键盘快捷键(Ctrl/Cmd+V)把内容粘贴到下面的方框里,再按 确定', + securityMsg: '因为您的浏览器的安全设置原因,本编辑器不能直接访问您的剪贴板内容,你需要在本窗口重新粘贴一次。', + title: '粘贴' +} ); diff --git a/sources/plugins/clipboard/lang/zh.js b/sources/plugins/clipboard/lang/zh.js new file mode 100644 index 00000000..116ab664 --- /dev/null +++ b/sources/plugins/clipboard/lang/zh.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'zh', { + copy: '複製', + copyError: '瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用鍵盤快捷鍵 (Ctrl/Cmd+C) 複製。', + cut: '剪下', + cutError: '瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用鏐盤快捷鍵 (Ctrl/Cmd+X) 剪下。', + paste: '貼上', + pasteArea: '貼上區', + pasteMsg: '請使用鍵盤快捷鍵 (Ctrl/Cmd+V) 貼到下方區域中並按下「確定」。', + securityMsg: '因為瀏覽器的安全性設定,本編輯器無法直接存取您的剪貼簿資料,請您自行在本視窗進行貼上動作。', + title: '貼上' +} ); diff --git a/sources/plugins/clipboard/plugin.js b/sources/plugins/clipboard/plugin.js new file mode 100644 index 00000000..e3bc5f09 --- /dev/null +++ b/sources/plugins/clipboard/plugin.js @@ -0,0 +1,2723 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @ignore + * File overview: Clipboard support. + */ + +// +// COPY & PASTE EXECUTION FLOWS: +// -- CTRL+C +// * if ( isCustomCopyCutSupported ) +// * dataTransfer.setData( 'text/html', getSelectedHtml ) +// * else +// * browser's default behavior +// -- CTRL+X +// * listen onKey (onkeydown) +// * fire 'saveSnapshot' on editor +// * if ( isCustomCopyCutSupported ) +// * dataTransfer.setData( 'text/html', getSelectedHtml ) +// * extractSelectedHtml // remove selected contents +// * else +// * browser's default behavior +// * deferred second 'saveSnapshot' event +// -- CTRL+V +// * listen onKey (onkeydown) +// * simulate 'beforepaste' for non-IEs on editable +// * listen 'onpaste' on editable ('onbeforepaste' for IE) +// * fire 'beforePaste' on editor +// * if ( !canceled && ( htmlInDataTransfer || !external paste) && dataTransfer is not empty ) getClipboardDataByPastebin +// * fire 'paste' on editor +// * !canceled && fire 'afterPaste' on editor +// -- Copy command +// * tryToCutCopy +// * execCommand +// * !success && notification +// -- Cut command +// * fixCut +// * tryToCutCopy +// * execCommand +// * !success && notification +// -- Paste command +// * fire 'paste' on editable ('beforepaste' for IE) +// * !canceled && execCommand 'paste' +// * !success && fire 'pasteDialog' on editor +// -- Paste from native context menu & menubar +// (Fx & Webkits are handled in 'paste' default listener. +// Opera cannot be handled at all because it doesn't fire any events +// Special treatment is needed for IE, for which is this part of doc) +// * listen 'onpaste' +// * cancel native event +// * fire 'beforePaste' on editor +// * if ( !canceled && ( htmlInDataTransfer || !external paste) && dataTransfer is not empty ) getClipboardDataByPastebin +// * execIECommand( 'paste' ) -> this fires another 'paste' event, so cancel it +// * fire 'paste' on editor +// * !canceled && fire 'afterPaste' on editor +// +// +// PASTE EVENT - PREPROCESSING: +// -- Possible dataValue types: auto, text, html. +// -- Possible dataValue contents: +// * text (possible \n\r) +// * htmlified text (text + br,div,p - no presentational markup & attrs - depends on browser) +// * html +// -- Possible flags: +// * htmlified - if true then content is a HTML even if no markup inside. This flag is set +// for content from editable pastebins, because they 'htmlify' pasted content. +// +// -- Type: auto: +// * content: htmlified text -> filter, unify text markup (brs, ps, divs), set type: text +// * content: html -> filter, set type: html +// -- Type: text: +// * content: htmlified text -> filter, unify text markup +// * content: html -> filter, strip presentational markup, unify text markup +// -- Type: html: +// * content: htmlified text -> filter, unify text markup +// * content: html -> filter +// +// -- Phases: +// * if dataValue is empty copy data from dataTransfer to dataValue (priority 1) +// * filtering (priorities 3-5) - e.g. pastefromword filters +// * content type sniffing (priority 6) +// * markup transformations for text (priority 6) +// +// DRAG & DROP EXECUTION FLOWS: +// -- Drag +// * save to the global object: +// * drag timestamp (with 'cke-' prefix), +// * selected html, +// * drag range, +// * editor instance. +// * put drag timestamp into event.dataTransfer.text +// -- Drop +// * if events text == saved timestamp && editor == saved editor +// internal drag & drop occurred +// * getRangeAtDropPosition +// * create bookmarks for drag and drop ranges starting from the end of the document +// * dragRange.deleteContents() +// * fire 'paste' with saved html and drop range +// * if events text == saved timestamp && editor != saved editor +// cross editor drag & drop occurred +// * getRangeAtDropPosition +// * fire 'paste' with saved html +// * dragRange.deleteContents() +// * FF: refreshCursor on afterPaste +// * if events text != saved timestamp +// drop form external source occurred +// * getRangeAtDropPosition +// * if event contains html data then fire 'paste' with html +// * else if event contains text data then fire 'paste' with encoded text +// * FF: refreshCursor on afterPaste + +'use strict'; + +( function() { + // Register the plugin. + CKEDITOR.plugins.add( 'clipboard', { + requires: 'dialog', + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'copy,copy-rtl,cut,cut-rtl,paste,paste-rtl', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + var filterType, + filtersFactory = filtersFactoryFactory(); + + if ( editor.config.forcePasteAsPlainText ) { + filterType = 'plain-text'; + } else if ( editor.config.pasteFilter ) { + filterType = editor.config.pasteFilter; + } + // On Webkit the pasteFilter defaults 'semantic-content' because pasted data is so terrible + // that it must be always filtered. + else if ( CKEDITOR.env.webkit && !( 'pasteFilter' in editor.config ) ) { + filterType = 'semantic-content'; + } + + editor.pasteFilter = filtersFactory.get( filterType ); + + initPasteClipboard( editor ); + initDragDrop( editor ); + + CKEDITOR.dialog.add( 'paste', CKEDITOR.getUrl( this.path + 'dialogs/paste.js' ) ); + + editor.on( 'paste', function( evt ) { + // Init `dataTransfer` if `paste` event was fired without it, so it will be always available. + if ( !evt.data.dataTransfer ) { + evt.data.dataTransfer = new CKEDITOR.plugins.clipboard.dataTransfer(); + } + + // If dataValue is already set (manually or by paste bin), so do not override it. + if ( evt.data.dataValue ) { + return; + } + + var dataTransfer = evt.data.dataTransfer, + // IE support only text data and throws exception if we try to get html data. + // This html data object may also be empty if we drag content of the textarea. + value = dataTransfer.getData( 'text/html' ); + + if ( value ) { + evt.data.dataValue = value; + evt.data.type = 'html'; + } else { + // Try to get text data otherwise. + value = dataTransfer.getData( 'text/plain' ); + + if ( value ) { + evt.data.dataValue = editor.editable().transformPlainTextToHtml( value ); + evt.data.type = 'text'; + } + } + }, null, null, 1 ); + + editor.on( 'paste', function( evt ) { + var data = evt.data.dataValue, + blockElements = CKEDITOR.dtd.$block; + + // Filter webkit garbage. + if ( data.indexOf( 'Apple-' ) > -1 ) { + // Replace special webkit's   with simple space, because webkit + // produces them even for normal spaces. + data = data.replace( / <\/span>/gi, ' ' ); + + // Strip around white-spaces when not in forced 'html' content type. + // This spans are created only when pasting plain text into Webkit, + // but for safety reasons remove them always. + if ( evt.data.type != 'html' ) { + data = data.replace( /]*>([^<]*)<\/span>/gi, function( all, spaces ) { + // Replace tabs with 4 spaces like Fx does. + return spaces.replace( /\t/g, '    ' ); + } ); + } + + // This br is produced only when copying & pasting HTML content. + if ( data.indexOf( '
' ) > -1 ) { + evt.data.startsWithEOL = 1; + evt.data.preSniffing = 'html'; // Mark as not text. + data = data.replace( /
/, '' ); + } + + // Remove all other classes. + data = data.replace( /(<[^>]+) class="Apple-[^"]*"/gi, '$1' ); + } + + // Strip editable that was copied from inside. (#9534) + if ( data.match( /^<[^<]+cke_(editable|contents)/i ) ) { + var tmp, + editable_wrapper, + wrapper = new CKEDITOR.dom.element( 'div' ); + + wrapper.setHtml( data ); + // Verify for sure and check for nested editor UI parts. (#9675) + while ( wrapper.getChildCount() == 1 && + ( tmp = wrapper.getFirst() ) && + tmp.type == CKEDITOR.NODE_ELEMENT && // Make sure first-child is element. + ( tmp.hasClass( 'cke_editable' ) || tmp.hasClass( 'cke_contents' ) ) ) { + wrapper = editable_wrapper = tmp; + } + + // If editable wrapper was found strip it and bogus
(added on FF). + if ( editable_wrapper ) + data = editable_wrapper.getHtml().replace( /
$/i, '' ); + } + + if ( CKEDITOR.env.ie ) { + //  

->

(br.cke-pasted-remove will be removed later) + data = data.replace( /^ (?: |\r\n)?<(\w+)/g, function( match, elementName ) { + if ( elementName.toLowerCase() in blockElements ) { + evt.data.preSniffing = 'html'; // Mark as not a text. + return '<' + elementName; + } + return match; + } ); + } else if ( CKEDITOR.env.webkit ) { + //


->


+ // We don't mark br, because this situation can happen for htmlified text too. + data = data.replace( /<\/(\w+)>

<\/div>$/, function( match, elementName ) { + if ( elementName in blockElements ) { + evt.data.endsWithEOL = 1; + return ''; + } + return match; + } ); + } else if ( CKEDITOR.env.gecko ) { + // Firefox adds bogus
when user pasted text followed by space(s). + data = data.replace( /(\s)
$/, '$1' ); + } + + evt.data.dataValue = data; + }, null, null, 3 ); + + editor.on( 'paste', function( evt ) { + var dataObj = evt.data, + type = dataObj.type, + data = dataObj.dataValue, + trueType, + // Default is 'html'. + defaultType = editor.config.clipboard_defaultContentType || 'html', + transferType = dataObj.dataTransfer.getTransferType( editor ); + + // If forced type is 'html' we don't need to know true data type. + if ( type == 'html' || dataObj.preSniffing == 'html' ) { + trueType = 'html'; + } else { + trueType = recogniseContentType( data ); + } + + // Unify text markup. + if ( trueType == 'htmlifiedtext' ) { + data = htmlifiedTextHtmlification( editor.config, data ); + } + + // Strip presentational markup & unify text markup. + // Forced plain text (dialog or forcePAPT). + // Note: we do not check dontFilter option in this case, because forcePAPT was implemented + // before pasteFilter and pasteFilter is automatically used on Webkit&Blink since 4.5, so + // forcePAPT should have priority as it had before 4.5. + if ( type == 'text' && trueType == 'html' ) { + data = filterContent( editor, data, filtersFactory.get( 'plain-text' ) ); + } + // External paste and pasteFilter exists and filtering isn't disabled. + else if ( transferType == CKEDITOR.DATA_TRANSFER_EXTERNAL && editor.pasteFilter && !dataObj.dontFilter ) { + data = filterContent( editor, data, editor.pasteFilter ); + } + + if ( dataObj.startsWithEOL ) { + data = '
' + data; + } + if ( dataObj.endsWithEOL ) { + data += '
'; + } + + if ( type == 'auto' ) { + type = ( trueType == 'html' || defaultType == 'html' ) ? 'html' : 'text'; + } + + dataObj.type = type; + dataObj.dataValue = data; + delete dataObj.preSniffing; + delete dataObj.startsWithEOL; + delete dataObj.endsWithEOL; + }, null, null, 6 ); + + // Inserts processed data into the editor at the end of the + // events chain. + editor.on( 'paste', function( evt ) { + var data = evt.data; + + if ( data.dataValue ) { + editor.insertHtml( data.dataValue, data.type, data.range ); + + // Defer 'afterPaste' so all other listeners for 'paste' will be fired first. + // Fire afterPaste only if paste inserted some HTML. + setTimeout( function() { + editor.fire( 'afterPaste' ); + }, 0 ); + } + }, null, null, 1000 ); + + editor.on( 'pasteDialog', function( evt ) { + // TODO it's possible that this setTimeout is not needed any more, + // because of changes introduced in the same commit as this comment. + // Editor.getClipboardData adds listener to the dialog's events which are + // fired after a while (not like 'showDialog'). + setTimeout( function() { + // Open default paste dialog. + editor.openDialog( 'paste', evt.data ); + }, 0 ); + } ); + } + } ); + + function firePasteEvents( editor, data, withBeforePaste ) { + if ( !data.type ) { + data.type = 'auto'; + } + + if ( withBeforePaste ) { + // Fire 'beforePaste' event so clipboard flavor get customized + // by other plugins. + if ( editor.fire( 'beforePaste', data ) === false ) + return false; // Event canceled + } + + // Do not fire paste if there is no data (dataValue and dataTranfser are empty). + // This check should be done after firing 'beforePaste' because for native paste + // 'beforePaste' is by default fired even for empty clipboard. + if ( !data.dataValue && data.dataTransfer.isEmpty() ) { + return false; + } + + if ( !data.dataValue ) { + data.dataValue = ''; + } + + // Because of FF bug we need to use this hack, otherwise cursor is hidden + // or it is not possible to move it (#12420). + // Also, check that editor.toolbox exists, because the toolbar plugin might not be loaded (#13305). + if ( CKEDITOR.env.gecko && data.method == 'drop' && editor.toolbox ) { + editor.once( 'afterPaste', function() { + editor.toolbox.focus(); + } ); + } + + return editor.fire( 'paste', data ); + } + + function initPasteClipboard( editor ) { + var clipboard = CKEDITOR.plugins.clipboard, + preventBeforePasteEvent = 0, + preventPasteEvent = 0, + inReadOnly = 0; + + addListeners(); + addButtonsCommands(); + + /** + * Gets clipboard data by directly accessing the clipboard (IE only) or opening the paste dialog window. + * + * editor.getClipboardData( { title: 'Get my data' }, function( data ) { + * if ( data ) + * alert( data.type + ' ' + data.dataValue ); + * } ); + * + * @member CKEDITOR.editor + * @param {Object} options + * @param {String} [options.title] The title of the paste dialog window. + * @param {Function} callback A function that will be executed with `data.type` and `data.dataValue` + * or `null` if none of the capturing methods succeeded. + */ + editor.getClipboardData = function( options, callback ) { + var beforePasteNotCanceled = false, + dataType = 'auto', + dialogCommited = false; + + // Options are optional - args shift. + if ( !callback ) { + callback = options; + options = null; + } + + // Listen with maximum priority to handle content before everyone else. + // This callback will handle paste event that will be fired if direct + // access to the clipboard succeed in IE. + editor.on( 'paste', onPaste, null, null, 0 ); + + // Listen at the end of listeners chain to see if event wasn't canceled + // and to retrieve modified data.type. + editor.on( 'beforePaste', onBeforePaste, null, null, 1000 ); + + // getClipboardDataDirectly() will fire 'beforePaste' synchronously, so we can + // check if it was canceled and if any listener modified data.type. + + // If command didn't succeed (only IE allows to access clipboard and only if + // user agrees) open and handle paste dialog. + if ( getClipboardDataDirectly() === false ) { + // Direct access to the clipboard wasn't successful so remove listener. + editor.removeListener( 'paste', onPaste ); + + // If beforePaste was canceled do not open dialog. + // Add listeners only if dialog really opened. 'pasteDialog' can be canceled. + if ( beforePasteNotCanceled && editor.fire( 'pasteDialog', onDialogOpen ) ) { + editor.on( 'pasteDialogCommit', onDialogCommit ); + + // 'dialogHide' will be fired after 'pasteDialogCommit'. + editor.on( 'dialogHide', function( evt ) { + evt.removeListener(); + evt.data.removeListener( 'pasteDialogCommit', onDialogCommit ); + + // Because Opera has to wait a while in pasteDialog we have to wait here. + setTimeout( function() { + // Notify even if user canceled dialog (clicked 'cancel', ESC, etc). + if ( !dialogCommited ) + callback( null ); + }, 10 ); + } ); + } else { + callback( null ); + } + } + + function onPaste( evt ) { + evt.removeListener(); + evt.cancel(); + callback( evt.data ); + } + + function onBeforePaste( evt ) { + evt.removeListener(); + beforePasteNotCanceled = true; + dataType = evt.data.type; + } + + function onDialogCommit( evt ) { + evt.removeListener(); + // Cancel pasteDialogCommit so paste dialog won't automatically fire + // 'paste' evt by itself. + evt.cancel(); + dialogCommited = true; + callback( { + type: dataType, + dataValue: evt.data.dataValue, + dataTransfer: evt.data.dataTransfer, + method: 'paste' + } ); + } + + function onDialogOpen() { + this.customTitle = ( options && options.title ); + } + }; + + function addButtonsCommands() { + addButtonCommand( 'Cut', 'cut', createCutCopyCmd( 'cut' ), 10, 1 ); + addButtonCommand( 'Copy', 'copy', createCutCopyCmd( 'copy' ), 20, 4 ); + addButtonCommand( 'Paste', 'paste', createPasteCmd(), 30, 8 ); + + function addButtonCommand( buttonName, commandName, command, toolbarOrder, ctxMenuOrder ) { + var lang = editor.lang.clipboard[ commandName ]; + + editor.addCommand( commandName, command ); + editor.ui.addButton && editor.ui.addButton( buttonName, { + label: lang, + command: commandName, + toolbar: 'clipboard,' + toolbarOrder + } ); + + // If the "menu" plugin is loaded, register the menu item. + if ( editor.addMenuItems ) { + editor.addMenuItem( commandName, { + label: lang, + command: commandName, + group: 'clipboard', + order: ctxMenuOrder + } ); + } + } + } + + function addListeners() { + editor.on( 'key', onKey ); + editor.on( 'contentDom', addPasteListenersToEditable ); + + // For improved performance, we're checking the readOnly state on selectionChange instead of hooking a key event for that. + editor.on( 'selectionChange', function( evt ) { + inReadOnly = evt.data.selection.getRanges()[ 0 ].checkReadOnly(); + setToolbarStates(); + } ); + + // If the "contextmenu" plugin is loaded, register the listeners. + if ( editor.contextMenu ) { + editor.contextMenu.addListener( function( element, selection ) { + inReadOnly = selection.getRanges()[ 0 ].checkReadOnly(); + return { + cut: stateFromNamedCommand( 'cut' ), + copy: stateFromNamedCommand( 'copy' ), + paste: stateFromNamedCommand( 'paste' ) + }; + } ); + } + } + + // Add events listeners to editable. + function addPasteListenersToEditable() { + var editable = editor.editable(); + + if ( CKEDITOR.plugins.clipboard.isCustomCopyCutSupported ) { + var initOnCopyCut = function( evt ) { + // If user tries to cut in read-only editor, we must prevent default action. (#13872) + if ( !editor.readOnly || evt.name != 'cut' ) { + clipboard.initPasteDataTransfer( evt, editor ); + } + evt.data.preventDefault(); + }; + + editable.on( 'copy', initOnCopyCut ); + editable.on( 'cut', initOnCopyCut ); + + // Delete content with the low priority so one can overwrite cut data. + editable.on( 'cut', function() { + // If user tries to cut in read-only editor, we must prevent default action. (#13872) + if ( !editor.readOnly ) { + editor.extractSelectedHtml(); + } + }, null, null, 999 ); + } + + // We'll be catching all pasted content in one line, regardless of whether + // it's introduced by a document command execution (e.g. toolbar buttons) or + // user paste behaviors (e.g. CTRL+V). + editable.on( clipboard.mainPasteEvent, function( evt ) { + if ( clipboard.mainPasteEvent == 'beforepaste' && preventBeforePasteEvent ) { + return; + } + + // If you've just asked yourself why preventPasteEventNow() is not here, but + // in listener for CTRL+V and exec method of 'paste' command + // you've asked the same question we did. + // + // THE ANSWER: + // + // First thing to notice - this answer makes sense only for IE, + // because other browsers don't listen for 'paste' event. + // + // What would happen if we move preventPasteEventNow() here? + // For: + // * CTRL+V - IE fires 'beforepaste', so we prevent 'paste' and pasteDataFromClipboard(). OK. + // * editor.execCommand( 'paste' ) - we fire 'beforepaste', so we prevent + // 'paste' and pasteDataFromClipboard() and doc.execCommand( 'Paste' ). OK. + // * native context menu - IE fires 'beforepaste', so we prevent 'paste', but unfortunately + // on IE we fail with pasteDataFromClipboard() here, because of... we don't know why, but + // we just fail, so... we paste nothing. FAIL. + // * native menu bar - the same as for native context menu. + // + // But don't you know any way to distinguish first two cases from last two? + // Only one - special flag set in CTRL+V handler and exec method of 'paste' + // command. And that's what we did using preventPasteEventNow(). + + pasteDataFromClipboard( evt ); + } ); + + // It's not possible to clearly handle all four paste methods (ctrl+v, native menu bar + // native context menu, editor's command) in one 'paste/beforepaste' event in IE. + // + // For ctrl+v & editor's command it's easy to handle pasting in 'beforepaste' listener, + // so we do this. For another two methods it's better to use 'paste' event. + // + // 'paste' is always being fired after 'beforepaste' (except of weird one on opening native + // context menu), so for two methods handled in 'beforepaste' we're canceling 'paste' + // using preventPasteEvent state. + // + // 'paste' event in IE is being fired before getClipboardDataByPastebin executes its callback. + // + // QUESTION: Why didn't you handle all 4 paste methods in handler for 'paste'? + // Wouldn't this just be simpler? + // ANSWER: Then we would have to evt.data.preventDefault() only for native + // context menu and menu bar pastes. The same with execIECommand(). + // That would force us to mark CTRL+V and editor's paste command with + // special flag, other than preventPasteEvent. But we still would have to + // have preventPasteEvent for the second event fired by execIECommand. + // Code would be longer and not cleaner. + if ( clipboard.mainPasteEvent == 'beforepaste' ) { + editable.on( 'paste', function( evt ) { + if ( preventPasteEvent ) { + return; + } + + // Cancel next 'paste' event fired by execIECommand( 'paste' ) + // at the end of this callback. + preventPasteEventNow(); + + // Prevent native paste. + evt.data.preventDefault(); + + pasteDataFromClipboard( evt ); + + // Force IE to paste content into pastebin so pasteDataFromClipboard will work. + if ( !execIECommand( 'paste' ) ) { + editor.openDialog( 'paste' ); + } + } ); + + // If mainPasteEvent is 'beforePaste' (IE before Edge), + // dismiss the (wrong) 'beforepaste' event fired on context/toolbar menu open. (#7953) + editable.on( 'contextmenu', preventBeforePasteEventNow, null, null, 0 ); + + editable.on( 'beforepaste', function( evt ) { + // Do not prevent event on CTRL+V and SHIFT+INS because it blocks paste (#11970). + if ( evt.data && !evt.data.$.ctrlKey && !evt.data.$.shiftKey ) + preventBeforePasteEventNow(); + }, null, null, 0 ); + } + + editable.on( 'beforecut', function() { + !preventBeforePasteEvent && fixCut( editor ); + } ); + + var mouseupTimeout; + + // Use editor.document instead of editable in non-IEs for observing mouseup + // since editable won't fire the event if selection process started within + // iframe and ended out of the editor (#9851). + editable.attachListener( CKEDITOR.env.ie ? editable : editor.document.getDocumentElement(), 'mouseup', function() { + mouseupTimeout = setTimeout( function() { + setToolbarStates(); + }, 0 ); + } ); + + // Make sure that deferred mouseup callback isn't executed after editor instance + // had been destroyed. This may happen when editor.destroy() is called in parallel + // with mouseup event (i.e. a button with onclick callback) (#10219). + editor.on( 'destroy', function() { + clearTimeout( mouseupTimeout ); + } ); + + editable.on( 'keyup', setToolbarStates ); + } + + // Create object representing Cut or Copy commands. + function createCutCopyCmd( type ) { + return { + type: type, + canUndo: type == 'cut', // We can't undo copy to clipboard. + startDisabled: true, + exec: function() { + // Attempts to execute the Cut and Copy operations. + function tryToCutCopy( type ) { + if ( CKEDITOR.env.ie ) + return execIECommand( type ); + + // non-IEs part + try { + // Other browsers throw an error if the command is disabled. + return editor.document.$.execCommand( type, false, null ); + } catch ( e ) { + return false; + } + } + + this.type == 'cut' && fixCut(); + + var success = tryToCutCopy( this.type ); + + if ( !success ) { + // Show cutError or copyError. + editor.showNotification( editor.lang.clipboard[ this.type + 'Error' ] ); // jshint ignore:line + } + + return success; + } + }; + } + + function createPasteCmd() { + return { + // Snapshots are done manually by editable.insertXXX methods. + canUndo: false, + async: true, + + exec: function( editor, data ) { + var fire = function( data, withBeforePaste ) { + data && firePasteEvents( editor, data, !!withBeforePaste ); + + editor.fire( 'afterCommandExec', { + name: 'paste', + command: cmd, + returnValue: !!data + } ); + }, + cmd = this; + + // Check data precisely - don't open dialog on empty string. + if ( typeof data == 'string' ) + fire( { + dataValue: data, + method: 'paste', + dataTransfer: clipboard.initPasteDataTransfer() + }, 1 ); + else + editor.getClipboardData( fire ); + } + }; + } + + function preventPasteEventNow() { + preventPasteEvent = 1; + // For safety reason we should wait longer than 0/1ms. + // We don't know how long execution of quite complex getClipboardData will take + // and in for example 'paste' listener execCommand() (which fires 'paste') is called + // after getClipboardData finishes. + // Luckily, it's impossible to immediately fire another 'paste' event we want to handle, + // because we only handle there native context menu and menu bar. + setTimeout( function() { + preventPasteEvent = 0; + }, 100 ); + } + + function preventBeforePasteEventNow() { + preventBeforePasteEvent = 1; + setTimeout( function() { + preventBeforePasteEvent = 0; + }, 10 ); + } + + // Tries to execute any of the paste, cut or copy commands in IE. Returns a + // boolean indicating that the operation succeeded. + // @param {String} command *LOWER CASED* name of command ('paste', 'cut', 'copy'). + function execIECommand( command ) { + var doc = editor.document, + body = doc.getBody(), + enabled = false, + onExec = function() { + enabled = true; + }; + + // The following seems to be the only reliable way to detect that + // clipboard commands are enabled in IE. It will fire the + // onpaste/oncut/oncopy events only if the security settings allowed + // the command to execute. + body.on( command, onExec ); + + // IE7: document.execCommand has problem to paste into positioned element. + if ( CKEDITOR.env.version > 7 ) { + doc.$.execCommand( command ); + } else { + doc.$.selection.createRange().execCommand( command ); + } + + body.removeListener( command, onExec ); + + return enabled; + } + + // Cutting off control type element in IE standards breaks the selection entirely. (#4881) + function fixCut() { + if ( !CKEDITOR.env.ie || CKEDITOR.env.quirks ) + return; + + var sel = editor.getSelection(), + control, range, dummy; + + if ( ( sel.getType() == CKEDITOR.SELECTION_ELEMENT ) && ( control = sel.getSelectedElement() ) ) { + range = sel.getRanges()[ 0 ]; + dummy = editor.document.createText( '' ); + dummy.insertBefore( control ); + range.setStartBefore( dummy ); + range.setEndAfter( control ); + sel.selectRanges( [ range ] ); + + // Clear up the fix if the paste wasn't succeeded. + setTimeout( function() { + // Element still online? + if ( control.getParent() ) { + dummy.remove(); + sel.selectElement( control ); + } + }, 0 ); + } + } + + // Allow to peek clipboard content by redirecting the + // pasting content into a temporary bin and grab the content of it. + function getClipboardDataByPastebin( evt, callback ) { + var doc = editor.document, + editable = editor.editable(), + cancel = function( evt ) { + evt.cancel(); + }, + blurListener; + + // Avoid recursions on 'paste' event or consequent paste too fast. (#5730) + if ( doc.getById( 'cke_pastebin' ) ) + return; + + var sel = editor.getSelection(); + var bms = sel.createBookmarks(); + + // #11384. On IE9+ we use native selectionchange (i.e. editor#selectionCheck) to cache the most + // recent selection which we then lock on editable blur. See selection.js for more info. + // selectionchange fired before getClipboardDataByPastebin() cached selection + // before creating bookmark (cached selection will be invalid, because bookmarks modified the DOM), + // so we need to fire selectionchange one more time, to store current seleciton. + // Selection will be locked when we focus pastebin. + if ( CKEDITOR.env.ie ) + sel.root.fire( 'selectionchange' ); + + // Create container to paste into. + // For rich content we prefer to use "body" since it holds + // the least possibility to be splitted by pasted content, while this may + // breaks the text selection on a frame-less editable, "div" would be + // the best one in that case. + // In another case on old IEs moving the selection into a "body" paste bin causes error panic. + // Body can't be also used for Opera which fills it with
+ // what is indistinguishable from pasted
(copying
in Opera isn't possible, + // but it can be copied from other browser). + var pastebin = new CKEDITOR.dom.element( + ( CKEDITOR.env.webkit || editable.is( 'body' ) ) && !CKEDITOR.env.ie ? 'body' : 'div', doc ); + + pastebin.setAttributes( { + id: 'cke_pastebin', + 'data-cke-temp': '1' + } ); + + var containerOffset = 0, + offsetParent, + win = doc.getWindow(); + + if ( CKEDITOR.env.webkit ) { + // It's better to paste close to the real paste destination, so inherited styles + // (which Webkits will try to compensate by styling span) differs less from the destination's one. + editable.append( pastebin ); + // Style pastebin like .cke_editable, to minimize differences between origin and destination. (#9754) + pastebin.addClass( 'cke_editable' ); + + // Compensate position of offsetParent. + if ( !editable.is( 'body' ) ) { + // We're not able to get offsetParent from pastebin (body element), so check whether + // its parent (editable) is positioned. + if ( editable.getComputedStyle( 'position' ) != 'static' ) + offsetParent = editable; + // And if not - safely get offsetParent from editable. + else + offsetParent = CKEDITOR.dom.element.get( editable.$.offsetParent ); + + containerOffset = offsetParent.getDocumentPosition().y; + } + } else { + // Opera and IE doesn't allow to append to html element. + editable.getAscendant( CKEDITOR.env.ie ? 'body' : 'html', 1 ).append( pastebin ); + } + + pastebin.setStyles( { + position: 'absolute', + // Position the bin at the top (+10 for safety) of viewport to avoid any subsequent document scroll. + top: ( win.getScrollPosition().y - containerOffset + 10 ) + 'px', + width: '1px', + // Caret has to fit in that height, otherwise browsers like Chrome & Opera will scroll window to show it. + // Set height equal to viewport's height - 20px (safety gaps), minimum 1px. + height: Math.max( 1, win.getViewPaneSize().height - 20 ) + 'px', + overflow: 'hidden', + // Reset styles that can mess up pastebin position. + margin: 0, + padding: 0 + } ); + + // Paste fails in Safari when the body tag has 'user-select: none'. (#12506) + if ( CKEDITOR.env.safari ) + pastebin.setStyles( CKEDITOR.tools.cssVendorPrefix( 'user-select', 'text' ) ); + + // Check if the paste bin now establishes new editing host. + var isEditingHost = pastebin.getParent().isReadOnly(); + + if ( isEditingHost ) { + // Hide the paste bin. + pastebin.setOpacity( 0 ); + // And make it editable. + pastebin.setAttribute( 'contenteditable', true ); + } + // Transparency is not enough since positioned non-editing host always shows + // resize handler, pull it off the screen instead. + else { + pastebin.setStyle( editor.config.contentsLangDirection == 'ltr' ? 'left' : 'right', '-1000px' ); + } + + editor.on( 'selectionChange', cancel, null, null, 0 ); + + // Webkit fill fire blur on editable when moving selection to + // pastebin (if body is used). Cancel it because it causes incorrect + // selection lock in case of inline editor (#10644). + // The same seems to apply to Firefox (#10787). + if ( CKEDITOR.env.webkit || CKEDITOR.env.gecko ) + blurListener = editable.once( 'blur', cancel, null, null, -100 ); + + // Temporarily move selection to the pastebin. + isEditingHost && pastebin.focus(); + var range = new CKEDITOR.dom.range( pastebin ); + range.selectNodeContents( pastebin ); + var selPastebin = range.select(); + + // If non-native paste is executed, IE will open security alert and blur editable. + // Editable will then lock selection inside itself and after accepting security alert + // this selection will be restored. We overwrite stored selection, so it's restored + // in pastebin. (#9552) + if ( CKEDITOR.env.ie ) { + blurListener = editable.once( 'blur', function() { + editor.lockSelection( selPastebin ); + } ); + } + + var scrollTop = CKEDITOR.document.getWindow().getScrollPosition().y; + + // Wait a while and grab the pasted contents. + setTimeout( function() { + // Restore main window's scroll position which could have been changed + // by browser in cases described in #9771. + if ( CKEDITOR.env.webkit ) + CKEDITOR.document.getBody().$.scrollTop = scrollTop; + + // Blur will be fired only on non-native paste. In other case manually remove listener. + blurListener && blurListener.removeListener(); + + // Restore properly the document focus. (#8849) + if ( CKEDITOR.env.ie ) + editable.focus(); + + // IE7: selection must go before removing pastebin. (#8691) + sel.selectBookmarks( bms ); + pastebin.remove(); + + // Grab the HTML contents. + // We need to look for a apple style wrapper on webkit it also adds + // a div wrapper if you copy/paste the body of the editor. + // Remove hidden div and restore selection. + var bogusSpan; + if ( CKEDITOR.env.webkit && ( bogusSpan = pastebin.getFirst() ) && ( bogusSpan.is && bogusSpan.hasClass( 'Apple-style-span' ) ) ) + pastebin = bogusSpan; + + editor.removeListener( 'selectionChange', cancel ); + callback( pastebin.getHtml() ); + }, 0 ); + } + + // Try to get content directly on IE from clipboard, without native event + // being fired before. In other words - synthetically get clipboard data, if it's possible. + // mainPasteEvent will be fired, so if forced native paste: + // * worked, getClipboardDataByPastebin will grab it, + // * didn't work, dataValue and dataTransfer will be empty and editor#paste won't be fired. + // Clipboard data can be accessed directly only on IEs older than Edge. + // On other browsers we should fire beforePaste event and return false. + function getClipboardDataDirectly() { + if ( clipboard.mainPasteEvent == 'paste' ) { + // beforePaste should be fired when dialog open so it can be canceled. + editor.fire( 'beforePaste', { type: 'auto', method: 'paste' } ); + return false; + } + + // Prevent IE from pasting at the begining of the document. + editor.focus(); + + // Command will be handled by 'beforepaste', but as + // execIECommand( 'paste' ) will fire also 'paste' event + // we're canceling it. + preventPasteEventNow(); + + // #9247: Lock focus to prevent IE from hiding toolbar for inline editor. + var focusManager = editor.focusManager; + focusManager.lock(); + + if ( editor.editable().fire( clipboard.mainPasteEvent ) && !execIECommand( 'paste' ) ) { + focusManager.unlock(); + return false; + } + focusManager.unlock(); + + return true; + } + + // Listens for some clipboard related keystrokes, so they get customized. + // Needs to be bind to keydown event. + function onKey( event ) { + if ( editor.mode != 'wysiwyg' ) + return; + + switch ( event.data.keyCode ) { + // Paste + case CKEDITOR.CTRL + 86: // CTRL+V + case CKEDITOR.SHIFT + 45: // SHIFT+INS + var editable = editor.editable(); + + // Cancel 'paste' event because ctrl+v is for IE handled + // by 'beforepaste'. + preventPasteEventNow(); + + // Simulate 'beforepaste' event for all browsers using 'paste' as main event. + if ( clipboard.mainPasteEvent == 'paste' ) { + editable.fire( 'beforepaste' ); + } + + return; + + // Cut + case CKEDITOR.CTRL + 88: // CTRL+X + case CKEDITOR.SHIFT + 46: // SHIFT+DEL + // Save Undo snapshot. + editor.fire( 'saveSnapshot' ); // Save before cut + setTimeout( function() { + editor.fire( 'saveSnapshot' ); // Save after cut + }, 50 ); // OSX is slow (#11416). + } + } + + function pasteDataFromClipboard( evt ) { + // Default type is 'auto', but can be changed by beforePaste listeners. + var eventData = { + type: 'auto', + method: 'paste', + dataTransfer: clipboard.initPasteDataTransfer( evt ) + }; + + eventData.dataTransfer.cacheData(); + + // Fire 'beforePaste' event so clipboard flavor get customized by other plugins. + // If 'beforePaste' is canceled continue executing getClipboardDataByPastebin and then do nothing + // (do not fire 'paste', 'afterPaste' events). This way we can grab all - synthetically + // and natively pasted content and prevent its insertion into editor + // after canceling 'beforePaste' event. + var beforePasteNotCanceled = editor.fire( 'beforePaste', eventData ) !== false; + + // Do not use paste bin if the browser let us get HTML or files from dataTranfer. + if ( beforePasteNotCanceled && clipboard.canClipboardApiBeTrusted( eventData.dataTransfer, editor ) ) { + evt.data.preventDefault(); + setTimeout( function() { + firePasteEvents( editor, eventData ); + }, 0 ); + } else { + getClipboardDataByPastebin( evt, function( data ) { + // Clean up. + eventData.dataValue = data.replace( /]+data-cke-bookmark[^<]*?<\/span>/ig, '' ); + + // Fire remaining events (without beforePaste) + beforePasteNotCanceled && firePasteEvents( editor, eventData ); + } ); + } + } + + function setToolbarStates() { + if ( editor.mode != 'wysiwyg' ) + return; + + var pasteState = stateFromNamedCommand( 'paste' ); + + editor.getCommand( 'cut' ).setState( stateFromNamedCommand( 'cut' ) ); + editor.getCommand( 'copy' ).setState( stateFromNamedCommand( 'copy' ) ); + editor.getCommand( 'paste' ).setState( pasteState ); + editor.fire( 'pasteState', pasteState ); + } + + function stateFromNamedCommand( command ) { + if ( inReadOnly && command in { paste: 1, cut: 1 } ) + return CKEDITOR.TRISTATE_DISABLED; + + if ( command == 'paste' ) + return CKEDITOR.TRISTATE_OFF; + + // Cut, copy - check if the selection is not empty. + var sel = editor.getSelection(), + ranges = sel.getRanges(), + selectionIsEmpty = sel.getType() == CKEDITOR.SELECTION_NONE || ( ranges.length == 1 && ranges[ 0 ].collapsed ); + + return selectionIsEmpty ? CKEDITOR.TRISTATE_DISABLED : CKEDITOR.TRISTATE_OFF; + } + } + + // Returns: + // * 'htmlifiedtext' if content looks like transformed by browser from plain text. + // See clipboard/paste.html TCs for more info. + // * 'html' if it is not 'htmlifiedtext'. + function recogniseContentType( data ) { + if ( CKEDITOR.env.webkit ) { + // Plain text or (

and text inside
). + if ( !data.match( /^[^<]*$/g ) && !data.match( /^(
<\/div>|
[^<]*<\/div>)*$/gi ) ) + return 'html'; + } else if ( CKEDITOR.env.ie ) { + // Text and
or ( text and
in

- paragraphs can be separated by new \r\n ). + if ( !data.match( /^([^<]|)*$/gi ) && !data.match( /^(

([^<]|)*<\/p>|(\r\n))*$/gi ) ) + return 'html'; + } else if ( CKEDITOR.env.gecko ) { + // Text or
. + if ( !data.match( /^([^<]|)*$/gi ) ) + return 'html'; + } else { + return 'html'; + } + + return 'htmlifiedtext'; + } + + // This function transforms what browsers produce when + // pasting plain text into editable element (see clipboard/paste.html TCs + // for more info) into correct HTML (similar to that produced by text2Html). + function htmlifiedTextHtmlification( config, data ) { + function repeatParagraphs( repeats ) { + // Repeat blocks floor((n+1)/2) times. + // Even number of repeats - add
at the beginning of last

. + return CKEDITOR.tools.repeat( '

', ~~( repeats / 2 ) ) + ( repeats % 2 == 1 ? '
' : '' ); + } + + // Replace adjacent white-spaces (EOLs too - Fx sometimes keeps them) with one space. + data = data.replace( /\s+/g, ' ' ) + // Remove spaces from between tags. + .replace( /> +<' ) + // Normalize XHTML syntax and upper cased
tags. + .replace( /
/gi, '
' ); + + // IE - lower cased tags. + data = data.replace( /<\/?[A-Z]+>/g, function( match ) { + return match.toLowerCase(); + } ); + + // Don't touch single lines (no ) - nothing to do here. + if ( data.match( /^[^<]$/ ) ) + return data; + + // Webkit. + if ( CKEDITOR.env.webkit && data.indexOf( '

' ) > -1 ) { + // One line break at the beginning - insert
+ data = data.replace( /^(
(
|)<\/div>)(?!$|(
(
|)<\/div>))/g, '
' ) + // Two or more - reduce number of new lines by one. + .replace( /^(
(
|)<\/div>){2}(?!$)/g, '
' ); + + // Two line breaks create one paragraph in Webkit. + if ( data.match( /
(
|)<\/div>/ ) ) { + data = '

' + data.replace( /(

(
|)<\/div>)+/g, function( match ) { + return repeatParagraphs( match.split( '
' ).length + 1 ); + } ) + '

'; + } + + // One line break create br. + data = data.replace( /<\/div>
/g, '
' ); + + // Remove remaining divs. + data = data.replace( /<\/?div>/g, '' ); + } + + // Opera and Firefox and enterMode != BR. + if ( CKEDITOR.env.gecko && config.enterMode != CKEDITOR.ENTER_BR ) { + // Remove bogus
- Fx generates two for one line break. + // For two line breaks it still produces two , but it's better to ignore this case than the first one. + if ( CKEDITOR.env.gecko ) + data = data.replace( /^

$/, '
' ); + + // This line satisfy edge case when for Opera we have two line breaks + //data = data.replace( /) + + if ( data.indexOf( '

' ) > -1 ) { + // Two line breaks create one paragraph, three - 2, four - 3, etc. + data = '

' + data.replace( /(
){2,}/g, function( match ) { + return repeatParagraphs( match.length / 4 ); + } ) + '

'; + } + } + + return switchEnterMode( config, data ); + } + + function filtersFactoryFactory() { + var filters = {}; + + function setUpTags() { + var tags = {}; + + for ( var tag in CKEDITOR.dtd ) { + if ( tag.charAt( 0 ) != '$' && tag != 'div' && tag != 'span' ) { + tags[ tag ] = 1; + } + } + + return tags; + } + + function createSemanticContentFilter() { + var filter = new CKEDITOR.filter(); + + filter.allow( { + $1: { + elements: setUpTags(), + attributes: true, + styles: false, + classes: false + } + } ); + + return filter; + } + + return { + get: function( type ) { + if ( type == 'plain-text' ) { + // Does this look confusing to you? Did we forget about enter mode? + // It is a trick that let's us creating one filter for edidtor, regardless of its + // activeEnterMode (which as the name indicates can change during runtime). + // + // How does it work? + // The active enter mode is passed to the filter.applyTo method. + // The filter first marks all elements except
as disallowed and then tries to remove + // them. However, it cannot remove e.g. a

element completely, because it's a basic structural element, + // so it tries to replace it with an element created based on the active enter mode, eventually doing nothing. + // + // Now you can sleep well. + return filters.plainText || ( filters.plainText = new CKEDITOR.filter( 'br' ) ); + } else if ( type == 'semantic-content' ) { + return filters.semanticContent || ( filters.semanticContent = createSemanticContentFilter() ); + } else if ( type ) { + // Create filter based on rules (string or object). + return new CKEDITOR.filter( type ); + } + + return null; + } + }; + } + + function filterContent( editor, data, filter ) { + var fragment = CKEDITOR.htmlParser.fragment.fromHtml( data ), + writer = new CKEDITOR.htmlParser.basicWriter(); + + filter.applyTo( fragment, true, false, editor.activeEnterMode ); + fragment.writeHtml( writer ); + + return writer.getHtml(); + } + + function switchEnterMode( config, data ) { + if ( config.enterMode == CKEDITOR.ENTER_BR ) { + data = data.replace( /(<\/p>

)+/g, function( match ) { + return CKEDITOR.tools.repeat( '
', match.length / 7 * 2 ); + } ).replace( /<\/?p>/g, '' ); + } else if ( config.enterMode == CKEDITOR.ENTER_DIV ) { + data = data.replace( /<(\/)?p>/g, '<$1div>' ); + } + + return data; + } + + function preventDefaultSetDropEffectToNone( evt ) { + evt.data.preventDefault(); + evt.data.$.dataTransfer.dropEffect = 'none'; + } + + function initDragDrop( editor ) { + var clipboard = CKEDITOR.plugins.clipboard; + + editor.on( 'contentDom', function() { + var editable = editor.editable(), + dropTarget = CKEDITOR.plugins.clipboard.getDropTarget( editor ), + top = editor.ui.space( 'top' ), + bottom = editor.ui.space( 'bottom' ); + + // -------------- DRAGOVER TOP & BOTTOM -------------- + + // Not allowing dragging on toolbar and bottom (#12613). + clipboard.preventDefaultDropOnElement( top ); + clipboard.preventDefaultDropOnElement( bottom ); + + // -------------- DRAGSTART -------------- + // Listed on dragstart to mark internal and cross-editor drag & drop + // and save range and selected HTML. + + editable.attachListener( dropTarget, 'dragstart', fireDragEvent ); + + // Make sure to reset data transfer (in case dragend was not called or was canceled). + editable.attachListener( editor, 'dragstart', clipboard.resetDragDataTransfer, clipboard, null, 1 ); + + // Create a dataTransfer object and save it globally. + editable.attachListener( editor, 'dragstart', function( evt ) { + clipboard.initDragDataTransfer( evt, editor ); + }, null, null, 2 ); + + editable.attachListener( editor, 'dragstart', function() { + // Save drag range globally for cross editor D&D. + var dragRange = clipboard.dragRange = editor.getSelection().getRanges()[ 0 ]; + + // Store number of children, so we can later tell if any text node was split on drop. (#13011, #13447) + if ( CKEDITOR.env.ie && CKEDITOR.env.version < 10 ) { + clipboard.dragStartContainerChildCount = dragRange ? getContainerChildCount( dragRange.startContainer ) : null; + clipboard.dragEndContainerChildCount = dragRange ? getContainerChildCount( dragRange.endContainer ) : null; + } + }, null, null, 100 ); + + // -------------- DRAGEND -------------- + // Clean up on dragend. + + editable.attachListener( dropTarget, 'dragend', fireDragEvent ); + + // Init data transfer if someone wants to use it in dragend. + editable.attachListener( editor, 'dragend', clipboard.initDragDataTransfer, clipboard, null, 1 ); + + // When drag & drop is done we need to reset dataTransfer so the future + // external drop will be not recognize as internal. + editable.attachListener( editor, 'dragend', clipboard.resetDragDataTransfer, clipboard, null, 100 ); + + // -------------- DRAGOVER -------------- + // We need to call preventDefault on dragover because otherwise if + // we drop image it will overwrite document. + + editable.attachListener( dropTarget, 'dragover', function( evt ) { + var target = evt.data.getTarget(); + + // Prevent reloading page when dragging image on empty document (#12619). + if ( target && target.is && target.is( 'html' ) ) { + evt.data.preventDefault(); + return; + } + + // If we do not prevent default dragover on IE the file path + // will be loaded and we will lose content. On the other hand + // if we prevent it the cursor will not we shown, so we prevent + // dragover only on IE, on versions which support file API and only + // if the event contains files. + if ( CKEDITOR.env.ie && + CKEDITOR.plugins.clipboard.isFileApiSupported && + evt.data.$.dataTransfer.types.contains( 'Files' ) ) { + evt.data.preventDefault(); + } + } ); + + // -------------- DROP -------------- + + editable.attachListener( dropTarget, 'drop', function( evt ) { + // Do nothing if event was already prevented. (#13879) + if ( evt.data.$.defaultPrevented ) { + return; + } + + // Cancel native drop. + evt.data.preventDefault(); + + var target = evt.data.getTarget(), + readOnly = target.isReadOnly(); + + // Do nothing if drop on non editable element (#13015). + // The tag isn't editable (body is), but we want to allow drop on it + // (so it is possible to drop below editor contents). + if ( readOnly && !( target.type == CKEDITOR.NODE_ELEMENT && target.is( 'html' ) ) ) { + return; + } + + // Getting drop position is one of the most complex parts. + var dropRange = clipboard.getRangeAtDropPosition( evt, editor ), + dragRange = clipboard.dragRange; + + // Do nothing if it was not possible to get drop range. + if ( !dropRange ) { + return; + } + + // Fire drop. + fireDragEvent( evt, dragRange, dropRange ); + }, null, null, 9999 ); + + // Create dataTransfer or get it, if it was created before. + editable.attachListener( editor, 'drop', clipboard.initDragDataTransfer, clipboard, null, 1 ); + + // Execute drop action, fire paste. + editable.attachListener( editor, 'drop', function( evt ) { + var data = evt.data; + + if ( !data ) { + return; + } + + // Let user modify drag and drop range. + var dropRange = data.dropRange, + dragRange = data.dragRange, + dataTransfer = data.dataTransfer; + + if ( dataTransfer.getTransferType( editor ) == CKEDITOR.DATA_TRANSFER_INTERNAL ) { + // Execute drop with a timeout because otherwise selection, after drop, + // on IE is in the drag position, instead of drop position. + setTimeout( function() { + clipboard.internalDrop( dragRange, dropRange, dataTransfer, editor ); + }, 0 ); + } else if ( dataTransfer.getTransferType( editor ) == CKEDITOR.DATA_TRANSFER_CROSS_EDITORS ) { + crossEditorDrop( dragRange, dropRange, dataTransfer ); + } else { + externalDrop( dropRange, dataTransfer ); + } + }, null, null, 9999 ); + + // Cross editor drag and drop (drag in one Editor and drop in the other). + function crossEditorDrop( dragRange, dropRange, dataTransfer ) { + // Paste event should be fired before delete contents because otherwise + // Chrome have a problem with drop range (Chrome split the drop + // range container so the offset is bigger then container length). + dropRange.select(); + firePasteEvents( editor, { dataTransfer: dataTransfer, method: 'drop' }, 1 ); + + // Remove dragged content and make a snapshot. + dataTransfer.sourceEditor.fire( 'saveSnapshot' ); + + dataTransfer.sourceEditor.editable().extractHtmlFromRange( dragRange ); + + // Make some selection before saving snapshot, otherwise error will be thrown, because + // there will be no valid selection after content is removed. + dataTransfer.sourceEditor.getSelection().selectRanges( [ dragRange ] ); + dataTransfer.sourceEditor.fire( 'saveSnapshot' ); + } + + // Drop from external source. + function externalDrop( dropRange, dataTransfer ) { + // Paste content into the drop position. + dropRange.select(); + + firePasteEvents( editor, { dataTransfer: dataTransfer, method: 'drop' }, 1 ); + + // Usually we reset DataTranfer on dragend, + // but dragend is called on the same element as dragstart + // so it will not be called on on external drop. + clipboard.resetDragDataTransfer(); + } + + // Fire drag/drop events (dragstart, dragend, drop). + function fireDragEvent( evt, dragRange, dropRange ) { + var eventData = { + $: evt.data.$, + target: evt.data.getTarget() + }; + + if ( dragRange ) { + eventData.dragRange = dragRange; + } + if ( dropRange ) { + eventData.dropRange = dropRange; + } + + if ( editor.fire( evt.name, eventData ) === false ) { + evt.data.preventDefault(); + } + } + + function getContainerChildCount( container ) { + if ( container.type != CKEDITOR.NODE_ELEMENT ) { + container = container.getParent(); + } + + return container.getChildCount(); + } + } ); + } + + /** + * @singleton + * @class CKEDITOR.plugins.clipboard + */ + CKEDITOR.plugins.clipboard = { + /** + * True if the environment allows to set data on copy or cut manually. This value is false in IE, because this browser + * shows the security dialog window when the script tries to set clipboard data and on iOS, because custom data is + * not saved to clipboard there. + * + * @since 4.5 + * @readonly + * @property {Boolean} + */ + isCustomCopyCutSupported: !CKEDITOR.env.ie && !CKEDITOR.env.iOS, + + /** + * True if the environment supports MIME types and custom data types in dataTransfer/cliboardData getData/setData methods. + * + * @since 4.5 + * @readonly + * @property {Boolean} + */ + isCustomDataTypesSupported: !CKEDITOR.env.ie, + + /** + * True if the environment supports File API. + * + * @since 4.5 + * @readonly + * @property {Boolean} + */ + isFileApiSupported: !CKEDITOR.env.ie || CKEDITOR.env.version > 9, + + /** + * Main native paste event editable should listen to. + * + * **Note:** Safari does not like the {@link CKEDITOR.editor#beforePaste} event — it sometimes does not + * handle Ctrl+C properly. This is probably caused by some race condition between events. + * Chrome, Firefox and Edge work well with both events, so it is better to use {@link CKEDITOR.editor#paste} + * which will handle pasting from e.g. browsers' menu bars. + * IE7/8 does not like the {@link CKEDITOR.editor#paste} event for which it is throwing random errors. + * + * @since 4.5 + * @readonly + * @property {String} + */ + mainPasteEvent: ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) ? 'beforepaste' : 'paste', + + /** + * Returns `true` if it is expected that a browser provides HTML data through the Clipboard API. + * If not, this method returns `false` and as a result CKEditor will use the paste bin. Read more in + * the [Clipboard Integration](http://docs.ckeditor.com/#!/guide/dev_clipboard-section-clipboard-api) guide. + * + * @since 4.5.2 + * @returns {Boolean} + */ + canClipboardApiBeTrusted: function( dataTransfer, editor ) { + // If it's an internal or cross-editor data transfer, then it means that custom cut/copy/paste support works + // and that the data were put manually on the data transfer so we can be sure that it's available. + if ( dataTransfer.getTransferType( editor ) != CKEDITOR.DATA_TRANSFER_EXTERNAL ) { + return true; + } + + // In Chrome we can trust Clipboard API, with the exception of Chrome on Android (in both - mobile and desktop modes), where + // clipboard API is not available so we need to check it (#13187). + if ( CKEDITOR.env.chrome && !dataTransfer.isEmpty() ) { + return true; + } + + // Because of a Firefox bug HTML data are not available in some cases (e.g. paste from Word), in such cases we + // need to use the pastebin (#13528, https://bugzilla.mozilla.org/show_bug.cgi?id=1183686). + if ( CKEDITOR.env.gecko && ( dataTransfer.getData( 'text/html' ) || dataTransfer.getFilesCount() ) ) { + return true; + } + + // In Safari and IE HTML data is not available though the Clipboard API. + // In Edge things are a bit messy at the moment - + // https://connect.microsoft.com/IE/feedback/details/1572456/edge-clipboard-api-text-html-content-messed-up-in-event-clipboarddata + // It is safer to use the paste bin in unknown cases. + return false; + }, + + /** + * Returns the element that should be used as the target for the drop event. + * + * @since 4.5 + * @param {CKEDITOR.editor} editor The editor instance. + * @returns {CKEDITOR.dom.domObject} the element that should be used as the target for the drop event. + */ + getDropTarget: function( editor ) { + var editable = editor.editable(); + + // #11123 Firefox needs to listen on document, because otherwise event won't be fired. + // #11086 IE8 cannot listen on document. + if ( ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) || editable.isInline() ) { + return editable; + } else { + return editor.document; + } + }, + + /** + * IE 8 & 9 split text node on drop so the first node contains the + * text before the drop position and the second contains the rest. If you + * drag the content from the same node you will be not be able to get + * it (the range becomes invalid), so you need to join them back. + * + * Note that the first node in IE 8 & 9 is the original node object + * but with shortened content. + * + * Before: + * --- Text Node A ---------------------------------- + * /\ + * Drag position + * + * After (IE 8 & 9): + * --- Text Node A ----- --- Text Node B ----------- + * /\ /\ + * Drop position Drag position + * (invalid) + * + * After (other browsers): + * --- Text Node A ---------------------------------- + * /\ /\ + * Drop position Drag position + * + * **Note:** This function is in the public scope for tests usage only. + * + * @since 4.5 + * @private + * @param {CKEDITOR.dom.range} dragRange The drag range. + * @param {CKEDITOR.dom.range} dropRange The drop range. + * @param {Number} preDragStartContainerChildCount The number of children of the drag range start container before the drop. + * @param {Number} preDragEndContainerChildCount The number of children of the drag range end container before the drop. + */ + fixSplitNodesAfterDrop: function( dragRange, dropRange, preDragStartContainerChildCount, preDragEndContainerChildCount ) { + var dropContainer = dropRange.startContainer; + + if ( + typeof preDragEndContainerChildCount != 'number' || + typeof preDragStartContainerChildCount != 'number' + ) { + return; + } + + // We are only concerned about ranges anchored in elements. + if ( dropContainer.type != CKEDITOR.NODE_ELEMENT ) { + return; + } + + if ( handleContainer( dragRange.startContainer, dropContainer, preDragStartContainerChildCount ) ) { + return; + } + + if ( handleContainer( dragRange.endContainer, dropContainer, preDragEndContainerChildCount ) ) { + return; + } + + function handleContainer( dragContainer, dropContainer, preChildCount ) { + var dragElement = dragContainer; + if ( dragElement.type == CKEDITOR.NODE_TEXT ) { + dragElement = dragContainer.getParent(); + } + + if ( dragElement.equals( dropContainer ) && preChildCount != dropContainer.getChildCount() ) { + applyFix( dropRange ); + return true; + } + } + + function applyFix( dropRange ) { + var nodeBefore = dropRange.startContainer.getChild( dropRange.startOffset - 1 ), + nodeAfter = dropRange.startContainer.getChild( dropRange.startOffset ); + + if ( + nodeBefore && nodeBefore.type == CKEDITOR.NODE_TEXT && + nodeAfter && nodeAfter.type == CKEDITOR.NODE_TEXT + ) { + var offset = nodeBefore.getLength(); + + nodeBefore.setText( nodeBefore.getText() + nodeAfter.getText() ); + nodeAfter.remove(); + + dropRange.setStart( nodeBefore, offset ); + dropRange.collapse( true ); + } + } + }, + + /** + * Checks whether turning the drag range into bookmarks will invalidate the drop range. + * This usually happens when the drop range shares the container with the drag range and is + * located after the drag range, but there are countless edge cases. + * + * This function is stricly related to {@link #internalDrop} which toggles + * order in which it creates bookmarks for both ranges based on a value returned + * by this method. In some cases this method returns a value which is not necessarily + * true in terms of what it was meant to check, but it is convenient, because + * we know how it is interpreted in {@link #internalDrop}, so the correct + * behavior of the entire algorithm is assured. + * + * **Note:** This function is in the public scope for tests usage only. + * + * @since 4.5 + * @private + * @param {CKEDITOR.dom.range} dragRange The first range to compare. + * @param {CKEDITOR.dom.range} dropRange The second range to compare. + * @returns {Boolean} `true` if the first range is before the second range. + */ + isDropRangeAffectedByDragRange: function( dragRange, dropRange ) { + var dropContainer = dropRange.startContainer, + dropOffset = dropRange.endOffset; + + // Both containers are the same and drop offset is at the same position or later. + // " A L] A " " M A " + // ^ ^ + if ( dragRange.endContainer.equals( dropContainer ) && dragRange.endOffset <= dropOffset ) { + return true; + } + + // Bookmark for drag start container will mess up with offsets. + // " O [L A " " M A " + // ^ ^ + if ( + dragRange.startContainer.getParent().equals( dropContainer ) && + dragRange.startContainer.getIndex() < dropOffset + ) { + return true; + } + + // Bookmark for drag end container will mess up with offsets. + // " O] L A " " M A " + // ^ ^ + if ( + dragRange.endContainer.getParent().equals( dropContainer ) && + dragRange.endContainer.getIndex() < dropOffset + ) { + return true; + } + + return false; + }, + + /** + * Internal drag and drop (drag and drop in the same editor instance). + * + * **Note:** This function is in the public scope for tests usage only. + * + * @since 4.5 + * @private + * @param {CKEDITOR.dom.range} dragRange The first range to compare. + * @param {CKEDITOR.dom.range} dropRange The second range to compare. + * @param {CKEDITOR.plugins.clipboard.dataTransfer} dataTransfer + * @param {CKEDITOR.editor} editor + */ + internalDrop: function( dragRange, dropRange, dataTransfer, editor ) { + var clipboard = CKEDITOR.plugins.clipboard, + editable = editor.editable(), + dragBookmark, dropBookmark, isDropRangeAffected; + + // Save and lock snapshot so there will be only + // one snapshot for both remove and insert content. + editor.fire( 'saveSnapshot' ); + editor.fire( 'lockSnapshot', { dontUpdate: 1 } ); + + if ( CKEDITOR.env.ie && CKEDITOR.env.version < 10 ) { + this.fixSplitNodesAfterDrop( + dragRange, + dropRange, + clipboard.dragStartContainerChildCount, + clipboard.dragEndContainerChildCount + ); + } + + // Because we manipulate multiple ranges we need to do it carefully, + // changing one range (event creating a bookmark) may make other invalid. + // We need to change ranges into bookmarks so we can manipulate them easily in the future. + // We can change the range which is later in the text before we change the preceding range. + // We call isDropRangeAffectedByDragRange to test the order of ranges. + isDropRangeAffected = this.isDropRangeAffectedByDragRange( dragRange, dropRange ); + if ( !isDropRangeAffected ) { + dragBookmark = dragRange.createBookmark( false ); + } + dropBookmark = dropRange.clone().createBookmark( false ); + if ( isDropRangeAffected ) { + dragBookmark = dragRange.createBookmark( false ); + } + + // Check if drop range is inside range. + // This is an edge case when we drop something on editable's margin/padding. + // That space is not treated as a part of the range we drag, so it is possible to drop there. + // When we drop, browser tries to find closest drop position and it finds it inside drag range. (#13453) + var startNode = dragBookmark.startNode, + endNode = dragBookmark.endNode, + dropNode = dropBookmark.startNode, + dropInsideDragRange = + // Must check endNode because dragRange could be collapsed in some edge cases (simulated DnD). + endNode && + ( startNode.getPosition( dropNode ) & CKEDITOR.POSITION_PRECEDING ) && + ( endNode.getPosition( dropNode ) & CKEDITOR.POSITION_FOLLOWING ); + + // If the drop range happens to be inside drag range change it's position to the beginning of the drag range. + if ( dropInsideDragRange ) { + // We only change position of bookmark span that is connected with dropBookmark. + // dropRange will be overwritten and set to the dropBookmark later. + dropNode.insertBefore( startNode ); + } + + // No we can safely delete content for the drag range... + dragRange = editor.createRange(); + dragRange.moveToBookmark( dragBookmark ); + editable.extractHtmlFromRange( dragRange, 1 ); + + // ...and paste content into the drop position. + dropRange = editor.createRange(); + dropRange.moveToBookmark( dropBookmark ); + + // We do not select drop range, because of may be in the place we can not set the selection + // (e.g. between blocks, in case of block widget D&D). We put range to the paste event instead. + firePasteEvents( editor, { dataTransfer: dataTransfer, method: 'drop', range: dropRange }, 1 ); + + editor.fire( 'unlockSnapshot' ); + }, + + /** + * Gets the range from the `drop` event. + * + * @since 4.5 + * @param {Object} domEvent A native DOM drop event object. + * @param {CKEDITOR.editor} editor The source editor instance. + * @returns {CKEDITOR.dom.range} range at drop position. + */ + getRangeAtDropPosition: function( dropEvt, editor ) { + var $evt = dropEvt.data.$, + x = $evt.clientX, + y = $evt.clientY, + $range, + defaultRange = editor.getSelection( true ).getRanges()[ 0 ], + range = editor.createRange(); + + // Make testing possible. + if ( dropEvt.data.testRange ) + return dropEvt.data.testRange; + + // Webkits. + if ( document.caretRangeFromPoint ) { + $range = editor.document.$.caretRangeFromPoint( x, y ); + range.setStart( CKEDITOR.dom.node( $range.startContainer ), $range.startOffset ); + range.collapse( true ); + } + // FF. + else if ( $evt.rangeParent ) { + range.setStart( CKEDITOR.dom.node( $evt.rangeParent ), $evt.rangeOffset ); + range.collapse( true ); + } + // IEs 9+. + // We check if editable is focused to make sure that it's an internal DnD. External DnD must use the second + // mechanism because of http://dev.ckeditor.com/ticket/13472#comment:6. + else if ( CKEDITOR.env.ie && CKEDITOR.env.version > 8 && defaultRange && editor.editable().hasFocus ) { + // On IE 9+ range by default is where we expected it. + // defaultRange may be undefined if dragover was canceled (file drop). + return defaultRange; + } + // IE 8 and all IEs if !defaultRange or external DnD. + else if ( document.body.createTextRange ) { + // To use this method we need a focus (which may be somewhere else in case of external drop). + editor.focus(); + + $range = editor.document.getBody().$.createTextRange(); + try { + var sucess = false; + + // If user drop between text line IEs moveToPoint throws exception: + // + // Lorem ipsum pulvinar purus et euismod + // + // dolor sit amet,| consectetur adipiscing + // * + // vestibulum tincidunt augue eget tempus. + // + // * - drop position + // | - expected cursor position + // + // So we try to call moveToPoint with +-1px up to +-20px above or + // below original drop position to find nearest good drop position. + for ( var i = 0; i < 20 && !sucess; i++ ) { + if ( !sucess ) { + try { + $range.moveToPoint( x, y - i ); + sucess = true; + } catch ( err ) { + } + } + if ( !sucess ) { + try { + $range.moveToPoint( x, y + i ); + sucess = true; + } catch ( err ) { + } + } + } + + if ( sucess ) { + var id = 'cke-temp-' + ( new Date() ).getTime(); + $range.pasteHTML( '\u200b' ); + + var span = editor.document.getById( id ); + range.moveToPosition( span, CKEDITOR.POSITION_BEFORE_START ); + span.remove(); + } else { + // If the fist method does not succeed we might be next to + // the short element (like header): + // + // Lorem ipsum pulvinar purus et euismod. + // + // + // SOME HEADER| * + // + // + // vestibulum tincidunt augue eget tempus. + // + // * - drop position + // | - expected cursor position + // + // In such situation elementFromPoint returns proper element. Using getClientRect + // it is possible to check if the cursor should be at the beginning or at the end + // of paragraph. + var $element = editor.document.$.elementFromPoint( x, y ), + element = new CKEDITOR.dom.element( $element ), + rect; + + if ( !element.equals( editor.editable() ) && element.getName() != 'html' ) { + rect = element.getClientRect(); + + if ( x < rect.left ) { + range.setStartAt( element, CKEDITOR.POSITION_AFTER_START ); + range.collapse( true ); + } else { + range.setStartAt( element, CKEDITOR.POSITION_BEFORE_END ); + range.collapse( true ); + } + } + // If drop happens on no element elementFromPoint returns html or body. + // + // * |Lorem ipsum pulvinar purus et euismod. + // + // vestibulum tincidunt augue eget tempus. + // + // * - drop position + // | - expected cursor position + // + // In such case we can try to use default selection. If startContainer is not + // 'editable' element it is probably proper selection. + else if ( defaultRange && defaultRange.startContainer && + !defaultRange.startContainer.equals( editor.editable() ) ) { + return defaultRange; + + // Otherwise we can not find any drop position and we have to return null + // and cancel drop event. + } else { + return null; + } + + } + } catch ( err ) { + return null; + } + } else { + return null; + } + + return range; + }, + + /** + * This function tries to link the `evt.data.dataTransfer` property of the {@link CKEDITOR.editor#dragstart}, + * {@link CKEDITOR.editor#dragend} and {@link CKEDITOR.editor#drop} events to a single + * {@link CKEDITOR.plugins.clipboard.dataTransfer} object. + * + * This method is automatically used by the core of the drag and drop functionality and + * usually does not have to be called manually when using the drag and drop events. + * + * This method behaves differently depending on whether the drag and drop events were fired + * artificially (to represent a non-native drag and drop) or whether they were caused by the native drag and drop. + * + * If the native event is not available, then it will create a new {@link CKEDITOR.plugins.clipboard.dataTransfer} + * instance (if it does not exist already) and will link it to this and all following event objects until + * the {@link #resetDragDataTransfer} method is called. It means that all three drag and drop events must be fired + * in order to ensure that the data transfer is bound correctly. + * + * If the native event is available, then the {@link CKEDITOR.plugins.clipboard.dataTransfer} is identified + * by its ID and a new instance is assigned to the `evt.data.dataTransfer` only if the ID changed or + * the {@link #resetDragDataTransfer} method was called. + * + * @since 4.5 + * @param {CKEDITOR.dom.event} [evt] A drop event object. + * @param {CKEDITOR.editor} [sourceEditor] The source editor instance. + */ + initDragDataTransfer: function( evt, sourceEditor ) { + // Create a new dataTransfer object based on the drop event. + // If this event was used on dragstart to create dataTransfer + // both dataTransfer objects will have the same id. + var nativeDataTransfer = evt.data.$ ? evt.data.$.dataTransfer : null, + dataTransfer = new this.dataTransfer( nativeDataTransfer, sourceEditor ); + + if ( !nativeDataTransfer ) { + // No native event. + if ( this.dragData ) { + dataTransfer = this.dragData; + } else { + this.dragData = dataTransfer; + } + } else { + // Native event. If there is the same id we will replace dataTransfer with the one + // created on drag, because it contains drag editor, drag content and so on. + // Otherwise (in case of drag from external source) we save new object to + // the global clipboard.dragData. + if ( this.dragData && dataTransfer.id == this.dragData.id ) { + dataTransfer = this.dragData; + } else { + this.dragData = dataTransfer; + } + } + + evt.data.dataTransfer = dataTransfer; + }, + + /** + * Removes the global {@link #dragData} so the next call to {@link #initDragDataTransfer} + * always creates a new instance of {@link CKEDITOR.plugins.clipboard.dataTransfer}. + * + * @since 4.5 + */ + resetDragDataTransfer: function() { + this.dragData = null; + }, + + /** + * Global object storing the data transfer of the current drag and drop operation. + * Do not use it directly, use {@link #initDragDataTransfer} and {@link #resetDragDataTransfer}. + * + * Note: This object is global (meaning that it is not related to a single editor instance) + * in order to handle drag and drop from one editor into another. + * + * @since 4.5 + * @private + * @property {CKEDITOR.plugins.clipboard.dataTransfer} dragData + */ + + /** + * Range object to save the drag range and remove its content after the drop. + * + * @since 4.5 + * @private + * @property {CKEDITOR.dom.range} dragRange + */ + + /** + * Initializes and links data transfer objects based on the paste event. If the data + * transfer object was already initialized on this event, the function will + * return that object. In IE it is not possible to link copy/cut and paste events + * so the method always returns a new object. The same happens if there is no paste event + * passed to the method. + * + * @since 4.5 + * @param {CKEDITOR.dom.event} [evt] A paste event object. + * @param {CKEDITOR.editor} [sourceEditor] The source editor instance. + * @returns {CKEDITOR.plugins.clipboard.dataTransfer} The data transfer object. + */ + initPasteDataTransfer: function( evt, sourceEditor ) { + if ( !this.isCustomCopyCutSupported ) { + return new this.dataTransfer( null, sourceEditor ); + } else if ( evt && evt.data && evt.data.$ ) { + var dataTransfer = new this.dataTransfer( evt.data.$.clipboardData, sourceEditor ); + + if ( this.copyCutData && dataTransfer.id == this.copyCutData.id ) { + dataTransfer = this.copyCutData; + dataTransfer.$ = evt.data.$.clipboardData; + } else { + this.copyCutData = dataTransfer; + } + + return dataTransfer; + } else { + return new this.dataTransfer( null, sourceEditor ); + } + }, + + /** + * Prevents dropping on the specified element. + * + * @since 4.5 + * @param {CKEDITOR.dom.element} element The element on which dropping should be disabled. + */ + preventDefaultDropOnElement: function( element ) { + element && element.on( 'dragover', preventDefaultSetDropEffectToNone ); + } + }; + + // Data type used to link drag and drop events. + // + // In IE URL data type is buggie and there is no way to mark drag & drop without + // modifying text data (which would be displayed if user drop content to the textarea) + // so we just read dragged text. + // + // In Chrome and Firefox we can use custom data types. + var clipboardIdDataType = CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ? 'cke/id' : 'Text'; + /** + * Facade for the native `dataTransfer`/`clipboadData` object to hide all differences + * between browsers. + * + * @since 4.5 + * @class CKEDITOR.plugins.clipboard.dataTransfer + * @constructor Creates a class instance. + * @param {Object} [nativeDataTransfer] A native data transfer object. + * @param {CKEDITOR.editor} [editor] The source editor instance. If the editor is defined, dataValue will + * be created based on the editor content and the type will be 'html'. + */ + CKEDITOR.plugins.clipboard.dataTransfer = function( nativeDataTransfer, editor ) { + if ( nativeDataTransfer ) { + this.$ = nativeDataTransfer; + } + + this._ = { + metaRegExp: /^/i, + bodyRegExp: /([\s\S]*)<\/body>/i, + fragmentRegExp: //g, + + data: {}, + files: [], + + normalizeType: function( type ) { + type = type.toLowerCase(); + + if ( type == 'text' || type == 'text/plain' ) { + return 'Text'; // IE support only Text and URL; + } else if ( type == 'url' ) { + return 'URL'; // IE support only Text and URL; + } else { + return type; + } + } + }; + + // Check if ID is already created. + this.id = this.getData( clipboardIdDataType ); + + // If there is no ID we need to create it. Different browsers needs different ID. + if ( !this.id ) { + if ( clipboardIdDataType == 'Text' ) { + // For IE10+ only Text data type is supported and we have to compare dragged + // and dropped text. If the ID is not set it means that empty string was dragged + // (ex. image with no alt). We change null to empty string. + this.id = ''; + } else { + // String for custom data type. + this.id = 'cke-' + CKEDITOR.tools.getUniqueId(); + } + } + + // In IE10+ we can not use any data type besides text, so we do not call setData. + if ( clipboardIdDataType != 'Text' ) { + // Try to set ID so it will be passed from the drag to the drop event. + // On some browsers with some event it is not possible to setData so we + // need to catch exceptions. + try { + this.$.setData( clipboardIdDataType, this.id ); + } catch ( err ) {} + } + + if ( editor ) { + this.sourceEditor = editor; + + this.setData( 'text/html', editor.getSelectedHtml( 1 ) ); + + // Without setData( 'text', ... ) on dragstart there is no drop event in Safari. + // Also 'text' data is empty as drop to the textarea does not work if we do not put there text. + if ( clipboardIdDataType != 'Text' && !this.getData( 'text/plain' ) ) { + this.setData( 'text/plain', editor.getSelection().getSelectedText() ); + } + } + + /** + * Data transfer ID used to bind all dataTransfer + * objects based on the same event (e.g. in drag and drop events). + * + * @readonly + * @property {String} id + */ + + /** + * A native DOM event object. + * + * @readonly + * @property {Object} $ + */ + + /** + * Source editor — the editor where the drag starts. + * Might be undefined if the drag starts outside the editor (e.g. when dropping files to the editor). + * + * @readonly + * @property {CKEDITOR.editor} sourceEditor + */ + + /** + * Private properties and methods. + * + * @private + * @property {Object} _ + */ + }; + + /** + * Data transfer operation (drag and drop or copy and paste) started and ended in the same + * editor instance. + * + * @since 4.5 + * @readonly + * @property {Number} [=1] + * @member CKEDITOR + */ + CKEDITOR.DATA_TRANSFER_INTERNAL = 1; + + /** + * Data transfer operation (drag and drop or copy and paste) started in one editor + * instance and ended in another. + * + * @since 4.5 + * @readonly + * @property {Number} [=2] + * @member CKEDITOR + */ + CKEDITOR.DATA_TRANSFER_CROSS_EDITORS = 2; + + /** + * Data transfer operation (drag and drop or copy and paste) started outside of the editor. + * The source of the data may be a textarea, HTML, another application, etc. + * + * @since 4.5 + * @readonly + * @property {Number} [=3] + * @member CKEDITOR + */ + CKEDITOR.DATA_TRANSFER_EXTERNAL = 3; + + CKEDITOR.plugins.clipboard.dataTransfer.prototype = { + /** + * Facade for the native `getData` method. + * + * @param {String} type The type of data to retrieve. + * @returns {String} type Stored data for the given type or an empty string if the data for that type does not exist. + */ + getData: function( type ) { + function isEmpty( data ) { + return data === undefined || data === null || data === ''; + } + + type = this._.normalizeType( type ); + + var data = this._.data[ type ], + result; + + if ( isEmpty( data ) ) { + try { + data = this.$.getData( type ); + } catch ( e ) {} + } + + if ( isEmpty( data ) ) { + data = ''; + } + + // Some browsers add at the begging of the HTML data + // or surround it with ...(some content) and (some content) + // This code removes meta tags and returns only the contents of the element if found. Note that + // some significant content may be placed outside Start/EndFragment comments so it's kept. + // + // See #13583 for more details. + if ( type == 'text/html' ) { + data = data.replace( this._.metaRegExp, '' ); + + // Keep only contents of the element + result = this._.bodyRegExp.exec( data ); + if ( result && result.length ) { + data = result[ 1 ]; + + // Remove also comments. + data = data.replace( this._.fragmentRegExp, '' ); + } + } + // Firefox on Linux put files paths as a text/plain data if there are files + // in the dataTransfer object. We need to hide it, because files should be + // handled on paste only if dataValue is empty. + else if ( type == 'Text' && CKEDITOR.env.gecko && this.getFilesCount() && + data.substring( 0, 7 ) == 'file://' ) { + data = ''; + } + + return data; + }, + + /** + * Facade for the native `setData` method. + * + * @param {String} type The type of data to retrieve. + * @param {String} value The data to add. + */ + setData: function( type, value ) { + type = this._.normalizeType( type ); + + this._.data[ type ] = value; + + // There is "Unexpected call to method or property access." error if you try + // to set data of unsupported type on IE. + if ( !CKEDITOR.plugins.clipboard.isCustomDataTypesSupported && type != 'URL' && type != 'Text' ) { + return; + } + + // If we use the text type to bind the ID, then if someone tries to set the text, we must also + // update ID accordingly. #13468. + if ( clipboardIdDataType == 'Text' && type == 'Text' ) { + this.id = value; + } + + try { + this.$.setData( type, value ); + } catch ( e ) {} + }, + + /** + * Gets the data transfer type. + * + * @param {CKEDITOR.editor} targetEditor The drop/paste target editor instance. + * @returns {Number} Possible values: {@link CKEDITOR#DATA_TRANSFER_INTERNAL}, + * {@link CKEDITOR#DATA_TRANSFER_CROSS_EDITORS}, {@link CKEDITOR#DATA_TRANSFER_EXTERNAL}. + */ + getTransferType: function( targetEditor ) { + if ( !this.sourceEditor ) { + return CKEDITOR.DATA_TRANSFER_EXTERNAL; + } else if ( this.sourceEditor == targetEditor ) { + return CKEDITOR.DATA_TRANSFER_INTERNAL; + } else { + return CKEDITOR.DATA_TRANSFER_CROSS_EDITORS; + } + }, + + /** + * Copies the data from the native data transfer to a private cache. + * This function is needed because the data from the native data transfer + * is available only synchronously to the event listener. It is not possible + * to get the data asynchronously, after a timeout, and the {@link CKEDITOR.editor#paste} + * event is fired asynchronously — hence the need for caching the data. + */ + cacheData: function() { + if ( !this.$ ) { + return; + } + + var that = this, + i, file; + + function getAndSetData( type ) { + type = that._.normalizeType( type ); + + var data = that.getData( type ); + if ( data ) { + that._.data[ type ] = data; + } + } + + // Copy data. + if ( CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ) { + if ( this.$.types ) { + for ( i = 0; i < this.$.types.length; i++ ) { + getAndSetData( this.$.types[ i ] ); + } + } + } else { + getAndSetData( 'Text' ); + getAndSetData( 'URL' ); + } + + // Copy files references. + file = this._getImageFromClipboard(); + if ( ( this.$ && this.$.files ) || file ) { + this._.files = []; + + for ( i = 0; i < this.$.files.length; i++ ) { + this._.files.push( this.$.files[ i ] ); + } + + // Don't include $.items if both $.files and $.items contains files, because, + // according to spec and browsers behavior, they contain the same files. + if ( this._.files.length === 0 && file ) { + this._.files.push( file ); + } + } + }, + + /** + * Gets the number of files in the dataTransfer object. + * + * @returns {Number} The number of files. + */ + getFilesCount: function() { + if ( this._.files.length ) { + return this._.files.length; + } + + if ( this.$ && this.$.files && this.$.files.length ) { + return this.$.files.length; + } + + return this._getImageFromClipboard() ? 1 : 0; + }, + + /** + * Gets the file at the index given. + * + * @param {Number} i Index. + * @returns {File} File instance. + */ + getFile: function( i ) { + if ( this._.files.length ) { + return this._.files[ i ]; + } + + if ( this.$ && this.$.files && this.$.files.length ) { + return this.$.files[ i ]; + } + + // File or null if the file was not found. + return i === 0 ? this._getImageFromClipboard() : undefined; + }, + + /** + * Checks if the data transfer contains any data. + * + * @returns {Boolean} `true` if the object contains no data. + */ + isEmpty: function() { + var typesToCheck = {}, + type; + + // If dataTransfer contains files it is not empty. + if ( this.getFilesCount() ) { + return false; + } + + // Add custom types. + for ( type in this._.data ) { + typesToCheck[ type ] = 1; + } + + // Add native types. + if ( this.$ ) { + if ( CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ) { + if ( this.$.types ) { + for ( var i = 0; i < this.$.types.length; i++ ) { + typesToCheck[ this.$.types[ i ] ] = 1; + } + } + } else { + typesToCheck.Text = 1; + typesToCheck.URL = 1; + } + } + + // Remove ID. + if ( clipboardIdDataType != 'Text' ) { + typesToCheck[ clipboardIdDataType ] = 0; + } + + for ( type in typesToCheck ) { + if ( typesToCheck[ type ] && this.getData( type ) !== '' ) { + return false; + } + } + + return true; + }, + + /** + * When the content of the clipboard is pasted in Chrome, the clipboard data object has an empty `files` property, + * but it is possible to get the file as `items[0].getAsFile();` (#12961). + * + * @private + * @returns {File} File instance or `null` if not found. + */ + _getImageFromClipboard: function() { + var file; + + if ( this.$ && this.$.items && this.$.items[ 0 ] ) { + try { + file = this.$.items[ 0 ].getAsFile(); + // Duck typing + if ( file && file.type ) { + return file; + } + } catch ( err ) { + // noop + } + } + + return undefined; + } + }; +} )(); + +/** + * The default content type that is used when pasted data cannot be clearly recognized as HTML or text. + * + * For example: `'foo'` may come from a plain text editor or a website. It is not possible to recognize the content + * type in this case, so the default type will be used. At the same time it is clear that `'example text'` is + * HTML and its origin is a web page, email or another rich text editor. + * + * **Note:** If content type is text, then styles of the paste context are preserved. + * + * CKEDITOR.config.clipboard_defaultContentType = 'text'; + * + * See also the {@link CKEDITOR.editor#paste} event and read more about the integration with clipboard + * in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). + * + * @since 4.0 + * @cfg {'html'/'text'} [clipboard_defaultContentType='html'] + * @member CKEDITOR.config + */ + +/** + * Fired after the user initiated a paste action, but before the data is inserted into the editor. + * The listeners to this event are able to process the content before its insertion into the document. + * + * Read more about the integration with clipboard in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). + * + * See also: + * + * * the {@link CKEDITOR.config#pasteFilter} option, + * * the {@link CKEDITOR.editor#drop} event, + * * the {@link CKEDITOR.plugins.clipboard.dataTransfer} class. + * + * @since 3.1 + * @event paste + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param data + * @param {String} data.type The type of data in `data.dataValue`. Usually `'html'` or `'text'`, but for listeners + * with a priority smaller than `6` it may also be `'auto'` which means that the content type has not been recognised yet + * (this will be done by the content type sniffer that listens with priority `6`). + * @param {String} data.dataValue HTML to be pasted. + * @param {String} data.method Indicates the data transfer method. It could be drag and drop or copy and paste. + * Possible values: `'drop'`, `'paste'`. Introduced in CKEditor 4.5. + * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer Facade for the native dataTransfer object + * which provides access to various data types and files, and passes some data between linked events + * (like drag and drop). Introduced in CKEditor 4.5. + * @param {Boolean} [data.dontFilter=false] Whether the {@link CKEDITOR.editor#pasteFilter paste filter} should not + * be applied to data. This option has no effect when `data.type` equals `'text'` which means that for instance + * {@link CKEDITOR.config#forcePasteAsPlainText} has a higher priority. Introduced in CKEditor 4.5. + */ + +/** + * Fired before the {@link #paste} event. Allows to preset data type. + * + * **Note:** This event is deprecated. Add a `0` priority listener for the + * {@link #paste} event instead. + * + * @deprecated + * @event beforePaste + * @member CKEDITOR.editor + */ + + /** + * Fired after the {@link #paste} event if content was modified. Note that if the paste + * event does not insert any data, the `afterPaste` event will not be fired. + * + * @event afterPaste + * @member CKEDITOR.editor + */ + +/** + * Internal event to open the Paste dialog window. + * + * @private + * @event pasteDialog + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param {Function} [data] Callback that will be passed to {@link CKEDITOR.editor#openDialog}. + */ + +/** + * Facade for the native `drop` event. Fired when the native `drop` event occurs. + * + * **Note:** To manipulate dropped data, use the {@link CKEDITOR.editor#paste} event. + * Use the `drop` event only to control drag and drop operations (e.g. to prevent the ability to drop some content). + * + * Read more about integration with drag and drop in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). + * + * See also: + * + * * The {@link CKEDITOR.editor#paste} event, + * * The {@link CKEDITOR.editor#dragstart} and {@link CKEDITOR.editor#dragend} events, + * * The {@link CKEDITOR.plugins.clipboard.dataTransfer} class. + * + * @since 4.5 + * @event drop + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param data + * @param {Object} data.$ Native drop event. + * @param {CKEDITOR.dom.node} data.target Drop target. + * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer DataTransfer facade. + * @param {CKEDITOR.dom.range} data.dragRange Drag range, lets you manipulate the drag range. + * Note that dragged HTML is saved as `text/html` data on `dragstart` so if you change the drag range + * on drop, dropped HTML will not change. You need to change it manually using + * {@link CKEDITOR.plugins.clipboard.dataTransfer#setData dataTransfer.setData}. + * @param {CKEDITOR.dom.range} data.dropRange Drop range, lets you manipulate the drop range. + */ + +/** + * Facade for the native `dragstart` event. Fired when the native `dragstart` event occurs. + * + * 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 + * operation. For instance, the `widget` plugin uses this option to integrate its custom block widget drag and drop with + * the entire system. + * + * Read more about integration with drag and drop in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). + * + * See also: + * + * * The {@link CKEDITOR.editor#paste} event, + * * The {@link CKEDITOR.editor#drop} and {@link CKEDITOR.editor#dragend} events, + * * The {@link CKEDITOR.plugins.clipboard.dataTransfer} class. + * + * @since 4.5 + * @event dragstart + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param data + * @param {Object} data.$ Native dragstart event. + * @param {CKEDITOR.dom.node} data.target Drag target. + * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer DataTransfer facade. + */ + +/** + * Facade for the native `dragend` event. Fired when the native `dragend` event occurs. + * + * Read more about integration with drag and drop in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). + * + * See also: + * + * * The {@link CKEDITOR.editor#paste} event, + * * The {@link CKEDITOR.editor#drop} and {@link CKEDITOR.editor#dragend} events, + * * The {@link CKEDITOR.plugins.clipboard.dataTransfer} class. + * + * @since 4.5 + * @event dragend + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param data + * @param {Object} data.$ Native dragend event. + * @param {CKEDITOR.dom.node} data.target Drag target. + * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer DataTransfer facade. + */ + +/** + * Defines a filter which is applied to external data pasted or dropped into the editor. Possible values are: + * + * * `'plain-text'` – Content will be pasted as a plain text. + * * `'semantic-content'` – Known tags (except `div`, `span`) with all attributes (except + * `style` and `class`) will be kept. + * * `'h1 h2 p div'` – Custom rules compatible with {@link CKEDITOR.filter}. + * * `null` – Content will not be filtered by the paste filter (but it still may be filtered + * by [Advanced Content Filter](#!/guide/dev_advanced_content_filter)). This value can be used to + * disable the paste filter in Chrome and Safari, where this option defaults to `'semantic-content'`. + * + * Example: + * + * config.pasteFilter = 'plain-text'; + * + * Custom setting: + * + * config.pasteFilter = 'h1 h2 p ul ol li; img[!src, alt]; a[!href]'; + * + * Based on this configuration option, a proper {@link CKEDITOR.filter} instance will be defined and assigned to the editor + * as a {@link CKEDITOR.editor#pasteFilter}. You can tweak the paste filter settings on the fly on this object + * as well as delete or replace it. + * + * var editor = CKEDITOR.replace( 'editor', { + * pasteFilter: 'semantic-content' + * } ); + * + * editor.on( 'instanceReady', function() { + * // The result of this will be that all semantic content will be preserved + * // except tables. + * editor.pasteFilter.disallow( 'table' ); + * } ); + * + * Note that the paste filter is applied only to **external** data. There are three data sources: + * + * * copied and pasted in the same editor (internal), + * * copied from one editor and pasted into another (cross-editor), + * * coming from all other sources like websites, MS Word, etc. (external). + * + * If {@link CKEDITOR.config#allowedContent Advanced Content Filter} is not disabled, then + * it will also be applied to pasted and dropped data. The paste filter job is to "normalize" + * external data which often needs to be handled differently than content produced by the editor. + * + * This setting defaults to `'semantic-content'` in Chrome, Opera and Safari (all Blink and Webkit based browsers) + * due to messy HTML which these browsers keep in the clipboard. In other browsers it defaults to `null`. + * + * @since 4.5 + * @cfg {String} [pasteFilter='semantic-content' in Chrome and Safari and `null` in other browsers] + * @member CKEDITOR.config + */ + +/** + * {@link CKEDITOR.filter Content filter} which is used when external data is pasted or dropped into the editor + * or a forced paste as plain text occurs. + * + * This object might be used on the fly to define rules for pasted external content. + * This object is available and used if the {@link CKEDITOR.plugins.clipboard clipboard} plugin is enabled and + * {@link CKEDITOR.config#pasteFilter} or {@link CKEDITOR.config#forcePasteAsPlainText} was defined. + * + * To enable the filter: + * + * var editor = CKEDITOR.replace( 'editor', { + * pasteFilter: 'plain-text' + * } ); + * + * You can also modify the filter on the fly later on: + * + * editor.pasteFilter = new CKEDITOR.filter( 'p h1 h2; a[!href]' ); + * + * Note that the paste filter is only applied to **external** data. There are three data sources: + * + * * copied and pasted in the same editor (internal), + * * copied from one editor and pasted into another (cross-editor), + * * coming from all other sources like websites, MS Word, etc. (external). + * + * If {@link CKEDITOR.config#allowedContent Advanced Content Filter} is not disabled, then + * it will also be applied to pasted and dropped data. The paste filter job is to "normalize" + * external data which often needs to be handled differently than content produced by the editor. + * + * @since 4.5 + * @readonly + * @property {CKEDITOR.filter} [pasteFilter] + * @member CKEDITOR.editor + */ diff --git a/sources/plugins/colorbutton/icons/bgcolor.png b/sources/plugins/colorbutton/icons/bgcolor.png new file mode 100644 index 00000000..a313938d Binary files /dev/null and b/sources/plugins/colorbutton/icons/bgcolor.png differ diff --git a/sources/plugins/colorbutton/icons/hidpi/bgcolor.png b/sources/plugins/colorbutton/icons/hidpi/bgcolor.png new file mode 100644 index 00000000..54b3e18c Binary files /dev/null and b/sources/plugins/colorbutton/icons/hidpi/bgcolor.png differ diff --git a/sources/plugins/colorbutton/icons/hidpi/textcolor.png b/sources/plugins/colorbutton/icons/hidpi/textcolor.png new file mode 100644 index 00000000..8fc56bcb Binary files /dev/null and b/sources/plugins/colorbutton/icons/hidpi/textcolor.png differ diff --git a/sources/plugins/colorbutton/icons/textcolor.png b/sources/plugins/colorbutton/icons/textcolor.png new file mode 100644 index 00000000..0d8e4590 Binary files /dev/null and b/sources/plugins/colorbutton/icons/textcolor.png differ diff --git a/sources/plugins/colorbutton/lang/af.js b/sources/plugins/colorbutton/lang/af.js new file mode 100644 index 00000000..ed7a3378 --- /dev/null +++ b/sources/plugins/colorbutton/lang/af.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'af', { + auto: 'Outomaties', + bgColorTitle: 'Agtergrondkleur', + colors: { + '000': 'Swart', + '800000': 'Meroen', + '8B4513': 'Sjokoladebruin', + '2F4F4F': 'Donkerleisteengrys', + '008080': 'Blougroen', + '000080': 'Vlootblou', + '4B0082': 'Indigo', + '696969': 'Donkergrys', + B22222: 'Rooibaksteen', + A52A2A: 'Bruin', + DAA520: 'Donkergeel', + '006400': 'Donkergroen', + '40E0D0': 'Turkoois', + '0000CD': 'Middelblou', + '800080': 'Pers', + '808080': 'Grys', + F00: 'Rooi', + FF8C00: 'Donkeroranje', + FFD700: 'Goud', + '008000': 'Groen', + '0FF': 'Siaan', + '00F': 'Blou', + EE82EE: 'Viooltjieblou', + A9A9A9: 'Donkergrys', + FFA07A: 'Ligsalm', + FFA500: 'Oranje', + FFFF00: 'Geel', + '00FF00': 'Lemmetjie', + AFEEEE: 'Ligturkoois', + ADD8E6: 'Ligblou', + DDA0DD: 'Pruim', + D3D3D3: 'Liggrys', + FFF0F5: 'Linne', + FAEBD7: 'Ivoor', + FFFFE0: 'Liggeel', + F0FFF0: 'Heuningdou', + F0FFFF: 'Asuur', + F0F8FF: 'Ligte hemelsblou', + E6E6FA: 'Laventel', + FFF: 'Wit' + }, + more: 'Meer Kleure...', + panelTitle: 'Kleure', + textColorTitle: 'Tekskleur' +} ); diff --git a/sources/plugins/colorbutton/lang/ar.js b/sources/plugins/colorbutton/lang/ar.js new file mode 100644 index 00000000..5203c4a4 --- /dev/null +++ b/sources/plugins/colorbutton/lang/ar.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'ar', { + auto: 'تلقائي', + bgColorTitle: 'لون الخلفية', + colors: { + '000': 'أسود', + '800000': 'كستنائي', + '8B4513': 'بني فاتح', + '2F4F4F': 'رمادي أردوازي غامق', + '008080': 'أزرق مخضر', + '000080': 'أزرق داكن', + '4B0082': 'كحلي', + '696969': 'رمادي داكن', + B22222: 'طوبي', + A52A2A: 'بني', + DAA520: 'ذهبي داكن', + '006400': 'أخضر داكن', + '40E0D0': 'فيروزي', + '0000CD': 'أزرق متوسط', + '800080': 'بنفسجي غامق', + '808080': 'رمادي', + F00: 'أحمر', + FF8C00: 'برتقالي داكن', + FFD700: 'ذهبي', + '008000': 'أخضر', + '0FF': 'تركواز', + '00F': 'أزرق', + EE82EE: 'بنفسجي', + A9A9A9: 'رمادي شاحب', + FFA07A: 'برتقالي وردي', + FFA500: 'برتقالي', + FFFF00: 'أصفر', + '00FF00': 'ليموني', + AFEEEE: 'فيروزي شاحب', + ADD8E6: 'أزرق فاتح', + DDA0DD: 'بنفسجي فاتح', + D3D3D3: 'رمادي فاتح', + FFF0F5: 'وردي فاتح', + FAEBD7: 'أبيض عتيق', + FFFFE0: 'أصفر فاتح', + F0FFF0: 'أبيض مائل للأخضر', + F0FFFF: 'سماوي', + F0F8FF: 'لبني', + E6E6FA: 'أرجواني', + FFF: 'أبيض' + }, + more: 'ألوان إضافية...', + panelTitle: 'Colors', + textColorTitle: 'لون النص' +} ); diff --git a/sources/plugins/colorbutton/lang/bg.js b/sources/plugins/colorbutton/lang/bg.js new file mode 100644 index 00000000..9d0cec28 --- /dev/null +++ b/sources/plugins/colorbutton/lang/bg.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'bg', { + auto: 'Автоматично', + bgColorTitle: 'Фонов цвят', + colors: { + '000': 'Черно', + '800000': 'Кестеняво', + '8B4513': 'Светлокафяво', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Индиго', + '696969': 'Тъмно сиво', + B22222: 'Огнено червено', + A52A2A: 'Кафяво', + DAA520: 'Златисто', + '006400': 'Тъмно зелено', + '40E0D0': 'Тюркуазено', + '0000CD': 'Средно синьо', + '800080': 'Пурпурно', + '808080': 'Сиво', + F00: 'Червено', + FF8C00: 'Тъмно оранжево', + FFD700: 'Златно', + '008000': 'Зелено', + '0FF': 'Светло синьо', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'Още цветове', + panelTitle: 'Цветове', + textColorTitle: 'Цвят на шрифт' +} ); diff --git a/sources/plugins/colorbutton/lang/bn.js b/sources/plugins/colorbutton/lang/bn.js new file mode 100644 index 00000000..66b4499f --- /dev/null +++ b/sources/plugins/colorbutton/lang/bn.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'bn', { + auto: 'অটোমেটিক', + bgColorTitle: 'বেকগ্রাউন্ড রং', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'আরও রং...', + panelTitle: 'Colors', + textColorTitle: 'টেক্স্ট রং' +} ); diff --git a/sources/plugins/colorbutton/lang/bs.js b/sources/plugins/colorbutton/lang/bs.js new file mode 100644 index 00000000..de913f42 --- /dev/null +++ b/sources/plugins/colorbutton/lang/bs.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'bs', { + auto: 'Automatska', + bgColorTitle: 'Boja pozadine', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'Više boja...', + panelTitle: 'Colors', + textColorTitle: 'Boja teksta' +} ); diff --git a/sources/plugins/colorbutton/lang/ca.js b/sources/plugins/colorbutton/lang/ca.js new file mode 100644 index 00000000..84ad219f --- /dev/null +++ b/sources/plugins/colorbutton/lang/ca.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'ca', { + auto: 'Automàtic', + bgColorTitle: 'Color de Fons', + colors: { + '000': 'Negre', + '800000': 'Grana', + '8B4513': 'Marró sella', + '2F4F4F': 'Gris pissarra fosca', + '008080': 'Blau xarxet', + '000080': 'Blau marí', + '4B0082': 'Indi', + '696969': 'Gris Fosc', + B22222: 'Foc Maó', + A52A2A: 'Marró', + DAA520: 'Solidago', + '006400': 'Verd Fosc', + '40E0D0': 'Turquesa', + '0000CD': 'Blau 1/2', + '800080': 'Lila', + '808080': 'Gris', + F00: 'Vermell', + FF8C00: 'Taronja Fosc', + FFD700: 'Or', + '008000': 'Verd', + '0FF': 'Cian', + '00F': 'Blau', + EE82EE: 'Violat', + A9A9A9: 'Gris clar', + FFA07A: 'Salmó clar', + FFA500: 'Taronja', + FFFF00: 'Groc', + '00FF00': 'Verd Llima', + AFEEEE: 'Turquesa Pàl·lid', + ADD8E6: 'Blau Clar', + DDA0DD: 'Pruna', + D3D3D3: 'Gris Clar', + FFF0F5: 'Lavanda rosat', + FAEBD7: 'Blanc Antic', + FFFFE0: 'Groc Clar', + F0FFF0: 'Verd Pàl·lid', + F0FFFF: 'Atzur', + F0F8FF: 'Cian pàlid', + E6E6FA: 'Lavanda', + FFF: 'Blanc' + }, + more: 'Més Colors...', + panelTitle: 'Colors', + textColorTitle: 'Color del Text' +} ); diff --git a/sources/plugins/colorbutton/lang/cs.js b/sources/plugins/colorbutton/lang/cs.js new file mode 100644 index 00000000..e266e02c --- /dev/null +++ b/sources/plugins/colorbutton/lang/cs.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'cs', { + auto: 'Automaticky', + bgColorTitle: 'Barva pozadí', + colors: { + '000': 'Černá', + '800000': 'Kaštanová', + '8B4513': 'Sedlová hněď', + '2F4F4F': 'Tmavě bledě šedá', + '008080': 'Čírka', + '000080': 'Námořnická modř', + '4B0082': 'Inkoustová', + '696969': 'Tmavě šedá', + B22222: 'Pálená cihla', + A52A2A: 'Hnědá', + DAA520: 'Zlatý prut', + '006400': 'Tmavě zelená', + '40E0D0': 'Tyrkisová', + '0000CD': 'Středně modrá', + '800080': 'Purpurová', + '808080': 'Šedá', + F00: 'Červená', + FF8C00: 'Tmavě oranžová', + FFD700: 'Zlatá', + '008000': 'Zelená', + '0FF': 'Azurová', + '00F': 'Modrá', + EE82EE: 'Fialová', + A9A9A9: 'Kalně šedá', + FFA07A: 'Světle lososová', + FFA500: 'Oranžová', + FFFF00: 'Žlutá', + '00FF00': 'Limetková', + AFEEEE: 'Bledě tyrkisová', + ADD8E6: 'Světle modrá', + DDA0DD: 'Švestková', + D3D3D3: 'Světle šedá', + FFF0F5: 'Levandulově ruměnná', + FAEBD7: 'Antická bílá', + FFFFE0: 'Světle žlutá', + F0FFF0: 'Medová rosa', + F0FFFF: 'Azurová', + F0F8FF: 'Alenčina modrá', + E6E6FA: 'Levandulová', + FFF: 'Bílá' + }, + more: 'Více barev...', + panelTitle: 'Barvy', + textColorTitle: 'Barva textu' +} ); diff --git a/sources/plugins/colorbutton/lang/cy.js b/sources/plugins/colorbutton/lang/cy.js new file mode 100644 index 00000000..6a02fc71 --- /dev/null +++ b/sources/plugins/colorbutton/lang/cy.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'cy', { + auto: 'Awtomatig', + bgColorTitle: 'Lliw Cefndir', + colors: { + '000': 'Du', + '800000': 'Marwn', + '8B4513': 'Brown Cyfrwy', + '2F4F4F': 'Llechen Tywyll', + '008080': 'Corhwyad', + '000080': 'Nefi', + '4B0082': 'Indigo', + '696969': 'Llwyd Tywyll', + B22222: 'Bric Tân', + A52A2A: 'Brown', + DAA520: 'Rhoden Aur', + '006400': 'Gwyrdd Tywyll', + '40E0D0': 'Gwyrddlas', + '0000CD': 'Glas Canolig', + '800080': 'Porffor', + '808080': 'Llwyd', + F00: 'Coch', + FF8C00: 'Oren Tywyll', + FFD700: 'Aur', + '008000': 'Gwyrdd', + '0FF': 'Cyan', + '00F': 'Glas', + EE82EE: 'Fioled', + A9A9A9: 'Llwyd Pwl', + FFA07A: 'Samwn Golau', + FFA500: 'Oren', + FFFF00: 'Melyn', + '00FF00': 'Leim', + AFEEEE: 'Gwyrddlas Golau', + ADD8E6: 'Glas Golau', + DDA0DD: 'Eirinen', + D3D3D3: 'Llwyd Golau', + FFF0F5: 'Gwrid Lafant', + FAEBD7: 'Gwyn Hynafol', + FFFFE0: 'Melyn Golau', + F0FFF0: 'Melwn Gwyrdd Golau', + F0FFFF: 'Aswr', + F0F8FF: 'Glas Alys', + E6E6FA: 'Lafant', + FFF: 'Gwyn' + }, + more: 'Mwy o Liwiau...', + panelTitle: 'Lliwiau', + textColorTitle: 'Lliw Testun' +} ); diff --git a/sources/plugins/colorbutton/lang/da.js b/sources/plugins/colorbutton/lang/da.js new file mode 100644 index 00000000..01ed2c14 --- /dev/null +++ b/sources/plugins/colorbutton/lang/da.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'da', { + auto: 'Automatisk', + bgColorTitle: 'Baggrundsfarve', + colors: { + '000': 'Sort', + '800000': 'Mørkerød', + '8B4513': 'Mørk orange', + '2F4F4F': 'Dark Slate Grå', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Mørkegrå', + B22222: 'Scarlet / Rød', + A52A2A: 'Brun', + DAA520: 'Guld', + '006400': 'Mørkegrøn', + '40E0D0': 'Tyrkis', + '0000CD': 'Mellemblå', + '800080': 'Lilla', + '808080': 'Grå', + F00: 'Rød', + FF8C00: 'Mørk orange', + FFD700: 'Guld', + '008000': 'Grøn', + '0FF': 'Cyan', + '00F': 'Blå', + EE82EE: 'Violet', + A9A9A9: 'Matgrå', + FFA07A: 'Laksefarve', + FFA500: 'Orange', + FFFF00: 'Gul', + '00FF00': 'Lime', + AFEEEE: 'Mat tyrkis', + ADD8E6: 'Lyseblå', + DDA0DD: 'Plum', + D3D3D3: 'Lysegrå', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antikhvid', + FFFFE0: 'Lysegul', + F0FFF0: 'Gul / Beige', + F0FFFF: 'Himmeblå', + F0F8FF: 'Alice blue', + E6E6FA: 'Lavendel', + FFF: 'Hvid' + }, + more: 'Flere farver...', + panelTitle: 'Farver', + textColorTitle: 'Tekstfarve' +} ); diff --git a/sources/plugins/colorbutton/lang/de.js b/sources/plugins/colorbutton/lang/de.js new file mode 100644 index 00000000..7007f578 --- /dev/null +++ b/sources/plugins/colorbutton/lang/de.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'de', { + auto: 'Automatisch', + bgColorTitle: 'Hintergrundfarbe', + colors: { + '000': 'Schwarz', + '800000': 'Kastanienbraun', + '8B4513': 'Braun', + '2F4F4F': 'Dunkles Schiefergrau', + '008080': 'Blaugrün', + '000080': 'Marineblau', + '4B0082': 'Indigo', + '696969': 'Dunkelgrau', + B22222: 'Ziegelrot', + A52A2A: 'Braun', + DAA520: 'Goldgelb', + '006400': 'Dunkelgrün', + '40E0D0': 'Türkis', + '0000CD': 'Mittelblau', + '800080': 'Lila', + '808080': 'Grau', + F00: 'Rot', + FF8C00: 'Dunkelorange', + FFD700: 'Gold', + '008000': 'Grün', + '0FF': 'Cyan', + '00F': 'Blau', + EE82EE: 'Violett', + A9A9A9: 'Dunkelgrau', + FFA07A: 'Helles Lachsrosa', + FFA500: 'Orange', + FFFF00: 'Gelb', + '00FF00': 'Lime', + AFEEEE: 'Blasstürkis', + ADD8E6: 'Hellblau', + DDA0DD: 'Pflaumenblau', + D3D3D3: 'Hellgrau', + FFF0F5: 'Lavendel', + FAEBD7: 'Antik Weiß', + FFFFE0: 'Hellgelb', + F0FFF0: 'Honigtau', + F0FFFF: 'Azurblau', + F0F8FF: 'Alice Blau', + E6E6FA: 'Lavendel', + FFF: 'Weiß' + }, + more: 'Weitere Farben...', + panelTitle: 'Farben', + textColorTitle: 'Textfarbe' +} ); diff --git a/sources/plugins/colorbutton/lang/el.js b/sources/plugins/colorbutton/lang/el.js new file mode 100644 index 00000000..5648438d --- /dev/null +++ b/sources/plugins/colorbutton/lang/el.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'el', { + auto: 'Αυτόματα', + bgColorTitle: 'Χρώμα Φόντου', + colors: { + '000': 'Μαύρο', + '800000': 'Καστανέρυθρο', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Βαθυκύανο', + '000080': 'Μπλε μαρέν', + '4B0082': 'Ινδικό', + '696969': 'Σκούρο Γκρι', + B22222: 'Ανοικτό Κόκκινο', + A52A2A: 'Καφέ', + DAA520: 'Golden Rod', + '006400': 'Σκούρο Πράσινο', + '40E0D0': 'Τυρκουάζ', + '0000CD': 'Medium Blue', + '800080': 'Μοβ', + '808080': 'Γκρι', + F00: 'Κόκκινο', + FF8C00: 'Σκούρο Πορτοκαλί', + FFD700: 'Χρυσαφί', + '008000': 'Πράσινο', + '0FF': 'Κυανό', + '00F': 'Μπλε', + EE82EE: 'Μενεξεδί', + A9A9A9: 'Ποντικί', + FFA07A: 'Ανοικτό Σομόν', + FFA500: 'Πορτοκαλί', + FFFF00: 'Κίτρινο', + '00FF00': 'Μοσχολέμονο', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Γαλάζιο', + DDA0DD: 'Δαμασκηνί', + D3D3D3: 'Ανοικτό Γκρι', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Ανοικτό Κίτρινο', + F0FFF0: 'Honeydew', + F0FFFF: 'Γαλανό', + F0F8FF: 'Alice Blue', + E6E6FA: 'Ελαφρός Ιώδες', + FFF: 'Λευκό' + }, + more: 'Περισσότερα Χρώματα...', + panelTitle: 'Χρώματα', + textColorTitle: 'Χρώμα Κειμένου' +} ); diff --git a/sources/plugins/colorbutton/lang/en-au.js b/sources/plugins/colorbutton/lang/en-au.js new file mode 100644 index 00000000..2cba9f7c --- /dev/null +++ b/sources/plugins/colorbutton/lang/en-au.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'en-au', { + auto: 'Automatic', + bgColorTitle: 'Background Colour', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'More Colours...', + panelTitle: 'Colors', + textColorTitle: 'Text Colour' +} ); diff --git a/sources/plugins/colorbutton/lang/en-ca.js b/sources/plugins/colorbutton/lang/en-ca.js new file mode 100644 index 00000000..68752c0e --- /dev/null +++ b/sources/plugins/colorbutton/lang/en-ca.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'en-ca', { + auto: 'Automatic', + bgColorTitle: 'Background Colour', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'More Colours...', + panelTitle: 'Colors', + textColorTitle: 'Text Colour' +} ); diff --git a/sources/plugins/colorbutton/lang/en-gb.js b/sources/plugins/colorbutton/lang/en-gb.js new file mode 100644 index 00000000..6047ce61 --- /dev/null +++ b/sources/plugins/colorbutton/lang/en-gb.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'en-gb', { + auto: 'Automatic', + bgColorTitle: 'Background Colour', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Grey', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Grey', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Grey', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Grey', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'More Colours...', + panelTitle: 'Colours', + textColorTitle: 'Text Colour' +} ); diff --git a/sources/plugins/colorbutton/lang/en.js b/sources/plugins/colorbutton/lang/en.js new file mode 100644 index 00000000..c3292ae8 --- /dev/null +++ b/sources/plugins/colorbutton/lang/en.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'en', { + auto: 'Automatic', + bgColorTitle: 'Background Color', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'More Colors...', + panelTitle: 'Colors', + textColorTitle: 'Text Color' +} ); diff --git a/sources/plugins/colorbutton/lang/eo.js b/sources/plugins/colorbutton/lang/eo.js new file mode 100644 index 00000000..289592e0 --- /dev/null +++ b/sources/plugins/colorbutton/lang/eo.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'eo', { + auto: 'Aŭtomata', + bgColorTitle: 'Fona Koloro', + colors: { + '000': 'Nigra', + '800000': 'Kaŝtankolora', + '8B4513': 'Mezbruna', + '2F4F4F': 'Ardezgriza', + '008080': 'Marĉanaskolora', + '000080': 'Maristblua', + '4B0082': 'Indigokolora', + '696969': 'Malhelgriza', + B22222: 'Brikruĝa', + A52A2A: 'Bruna', + DAA520: 'Senbrilorkolora', + '006400': 'Malhelverda', + '40E0D0': 'Turkisblua', + '0000CD': 'Reĝblua', + '800080': 'Purpura', + '808080': 'Griza', + F00: 'Ruĝa', + FF8C00: 'Malheloranĝkolora', + FFD700: 'Orkolora', + '008000': 'Verda', + '0FF': 'Verdblua', + '00F': 'Blua', + EE82EE: 'Viola', + A9A9A9: 'Mezgriza', + FFA07A: 'Salmokolora', + FFA500: 'Oranĝkolora', + FFFF00: 'Flava', + '00FF00': 'Limetkolora', + AFEEEE: 'Helturkiskolora', + ADD8E6: 'Helblua', + DDA0DD: 'Prunkolora', + D3D3D3: 'Helgriza', + FFF0F5: 'Lavendkolora vangoŝminko', + FAEBD7: 'Antikvablanka', + FFFFE0: 'Helflava', + F0FFF0: 'Vintromelonkolora', + F0FFFF: 'Lazura', + F0F8FF: 'Aliceblua', + E6E6FA: 'Lavendkolora', + FFF: 'Blanka' + }, + more: 'Pli da Koloroj...', + panelTitle: 'Koloroj', + textColorTitle: 'Teksta Koloro' +} ); diff --git a/sources/plugins/colorbutton/lang/es.js b/sources/plugins/colorbutton/lang/es.js new file mode 100644 index 00000000..f5d5117a --- /dev/null +++ b/sources/plugins/colorbutton/lang/es.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'es', { + auto: 'Automático', + bgColorTitle: 'Color de Fondo', + colors: { + '000': 'Negro', + '800000': 'Marrón oscuro', + '8B4513': 'Marrón tierra', + '2F4F4F': 'Pizarra Oscuro', + '008080': 'Azul verdoso', + '000080': 'Azul marino', + '4B0082': 'Añil', + '696969': 'Gris oscuro', + B22222: 'Ladrillo', + A52A2A: 'Marrón', + DAA520: 'Oro oscuro', + '006400': 'Verde oscuro', + '40E0D0': 'Turquesa', + '0000CD': 'Azul medio-oscuro', + '800080': 'Púrpura', + '808080': 'Gris', + F00: 'Rojo', + FF8C00: 'Naranja oscuro', + FFD700: 'Oro', + '008000': 'Verde', + '0FF': 'Cian', + '00F': 'Azul', + EE82EE: 'Violeta', + A9A9A9: 'Gris medio', + FFA07A: 'Salmón claro', + FFA500: 'Naranja', + FFFF00: 'Amarillo', + '00FF00': 'Lima', + AFEEEE: 'Turquesa claro', + ADD8E6: 'Azul claro', + DDA0DD: 'Violeta claro', + D3D3D3: 'Gris claro', + FFF0F5: 'Lavanda rojizo', + FAEBD7: 'Blanco antiguo', + FFFFE0: 'Amarillo claro', + F0FFF0: 'Miel', + F0FFFF: 'Azul celeste', + F0F8FF: 'Azul pálido', + E6E6FA: 'Lavanda', + FFF: 'Blanco' + }, + more: 'Más Colores...', + panelTitle: 'Colores', + textColorTitle: 'Color de Texto' +} ); diff --git a/sources/plugins/colorbutton/lang/et.js b/sources/plugins/colorbutton/lang/et.js new file mode 100644 index 00000000..36f712e6 --- /dev/null +++ b/sources/plugins/colorbutton/lang/et.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'et', { + auto: 'Automaatne', + bgColorTitle: 'Tausta värv', + colors: { + '000': 'Must', + '800000': 'Kastanpruun', + '8B4513': 'Sadulapruun', + '2F4F4F': 'Tume paehall', + '008080': 'Sinakasroheline', + '000080': 'Meresinine', + '4B0082': 'Indigosinine', + '696969': 'Tumehall', + B22222: 'Šamottkivi', + A52A2A: 'Pruun', + DAA520: 'Kuldkollane', + '006400': 'Tumeroheline', + '40E0D0': 'Türkiissinine', + '0000CD': 'Keskmine sinine', + '800080': 'Lilla', + '808080': 'Hall', + F00: 'Punanae', + FF8C00: 'Tumeoranž', + FFD700: 'Kuldne', + '008000': 'Roheline', + '0FF': 'Tsüaniidsinine', + '00F': 'Sinine', + EE82EE: 'Violetne', + A9A9A9: 'Tuhm hall', + FFA07A: 'Hele lõhe', + FFA500: 'Oranž', + FFFF00: 'Kollane', + '00FF00': 'Lubja hall', + AFEEEE: 'Kahvatu türkiis', + ADD8E6: 'Helesinine', + DDA0DD: 'Ploomililla', + D3D3D3: 'Helehall', + FFF0F5: 'Lavendlipunane', + FAEBD7: 'Antiikvalge', + FFFFE0: 'Helekollane', + F0FFF0: 'Meloniroheline', + F0FFFF: 'Taevasinine', + F0F8FF: 'Beebisinine', + E6E6FA: 'Lavendel', + FFF: 'Valge' + }, + more: 'Rohkem värve...', + panelTitle: 'Värvid', + textColorTitle: 'Teksti värv' +} ); diff --git a/sources/plugins/colorbutton/lang/eu.js b/sources/plugins/colorbutton/lang/eu.js new file mode 100644 index 00000000..f083f0b9 --- /dev/null +++ b/sources/plugins/colorbutton/lang/eu.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'eu', { + auto: 'Automatikoa', + bgColorTitle: 'Atzeko planoko kolorea', + colors: { + '000': 'Beltza', + '800000': 'Granatea', + '8B4513': 'Zela marroia', + '2F4F4F': 'Arbel gris iluna', + '008080': 'Urdin berdexka', + '000080': 'Urdin iluna', + '4B0082': 'Indigoa', + '696969': 'Gris iluna', + B22222: 'Adreilu erregogorra', + A52A2A: 'Marroia', + DAA520: 'Urrezko makila', + '006400': 'Berde iluna', + '40E0D0': 'Turkesa', + '0000CD': 'Urdin ertaina', + '800080': 'Morea', + '808080': 'Grisa', + F00: 'Gorria', + FF8C00: 'Laranja iluna', + FFD700: 'Urrea', + '008000': 'Berdea', + '0FF': 'Ziana', + '00F': 'Urdina', + EE82EE: 'Bioleta', + A9A9A9: 'Gris ahula', + FFA07A: 'Izokin-kolore argia', + FFA500: 'Laranja', + FFFF00: 'Horia', + '00FF00': 'Lima', + AFEEEE: 'Turkesa argia', + ADD8E6: 'Urdin argia', + DDA0DD: 'Aran-kolorea', + D3D3D3: 'Gris argia', + FFF0F5: 'Izpiliku-gorrixka', + FAEBD7: 'Zuri zaharra', + FFFFE0: 'Hori argia', + F0FFF0: 'Ezti-ihintza', + F0FFFF: 'Zeru-urdina', + F0F8FF: 'Alizia urdina', + E6E6FA: 'Izpilikua', + FFF: 'Zuria' + }, + more: 'Kolore gehiago...', + panelTitle: 'Koloreak', + textColorTitle: 'Testu-kolorea' +} ); diff --git a/sources/plugins/colorbutton/lang/fa.js b/sources/plugins/colorbutton/lang/fa.js new file mode 100644 index 00000000..0cd00db3 --- /dev/null +++ b/sources/plugins/colorbutton/lang/fa.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'fa', { + auto: 'خودکار', + bgColorTitle: 'رنگ پس​زمینه', + colors: { + '000': 'سیاه', + '800000': 'خرمایی', + '8B4513': 'قهوه​ای شکلاتی', + '2F4F4F': 'ارغوانی مایل به خاکستری', + '008080': 'آبی مایل به خاکستری', + '000080': 'آبی سیر', + '4B0082': 'نیلی', + '696969': 'خاکستری تیره', + B22222: 'آتش آجری', + A52A2A: 'قهوه​ای', + DAA520: 'میله​ی طلایی', + '006400': 'سبز تیره', + '40E0D0': 'فیروزه​ای', + '0000CD': 'آبی روشن', + '800080': 'ارغوانی', + '808080': 'خاکستری', + F00: 'قرمز', + FF8C00: 'نارنجی پررنگ', + FFD700: 'طلایی', + '008000': 'سبز', + '0FF': 'آبی مایل به سبز', + '00F': 'آبی', + EE82EE: 'بنفش', + A9A9A9: 'خاکستری مات', + FFA07A: 'صورتی کدر روشن', + FFA500: 'نارنجی', + FFFF00: 'زرد', + '00FF00': 'فسفری', + AFEEEE: 'فیروزه​ای رنگ پریده', + ADD8E6: 'آبی کمرنگ', + DDA0DD: 'آلویی', + D3D3D3: 'خاکستری روشن', + FFF0F5: 'بنفش کمرنگ', + FAEBD7: 'عتیقه سفید', + FFFFE0: 'زرد روشن', + F0FFF0: 'عسلی', + F0FFFF: 'لاجوردی', + F0F8FF: 'آبی براق', + E6E6FA: 'بنفش کمرنگ', + FFF: 'سفید' + }, + more: 'رنگ​های بیشتر...', + panelTitle: 'رنگها', + textColorTitle: 'رنگ متن' +} ); diff --git a/sources/plugins/colorbutton/lang/fi.js b/sources/plugins/colorbutton/lang/fi.js new file mode 100644 index 00000000..a25a0ffa --- /dev/null +++ b/sources/plugins/colorbutton/lang/fi.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'fi', { + auto: 'Automaattinen', + bgColorTitle: 'Taustaväri', + colors: { + '000': 'Musta', + '800000': 'Kastanjanruskea', + '8B4513': 'Satulanruskea', + '2F4F4F': 'Tumma liuskekivenharmaa', + '008080': 'Sinivihreä', + '000080': 'Laivastonsininen', + '4B0082': 'Indigonsininen', + '696969': 'Tummanharmaa', + B22222: 'Tiili', + A52A2A: 'Ruskea', + DAA520: 'Kultapiisku', + '006400': 'Tummanvihreä', + '40E0D0': 'Turkoosi', + '0000CD': 'Keskisininen', + '800080': 'Purppura', + '808080': 'Harmaa', + F00: 'Punainen', + FF8C00: 'Tumma oranssi', + FFD700: 'Kulta', + '008000': 'Vihreä', + '0FF': 'Syaani', + '00F': 'Sininen', + EE82EE: 'Violetti', + A9A9A9: 'Tummanharmaa', + FFA07A: 'Vaaleanlohenpunainen', + FFA500: 'Oranssi', + FFFF00: 'Keltainen', + '00FF00': 'Limetin vihreä', + AFEEEE: 'Haalea turkoosi', + ADD8E6: 'Vaaleansininen', + DDA0DD: 'Luumu', + D3D3D3: 'Vaaleanharmaa', + FFF0F5: 'Laventelinpunainen', + FAEBD7: 'Antiikinvalkoinen', + FFFFE0: 'Vaaleankeltainen', + F0FFF0: 'Hunajameloni', + F0FFFF: 'Asurinsininen', + F0F8FF: 'Alice Blue -sininen', + E6E6FA: 'Lavanteli', + FFF: 'Valkoinen' + }, + more: 'Lisää värejä...', + panelTitle: 'Värit', + textColorTitle: 'Tekstiväri' +} ); diff --git a/sources/plugins/colorbutton/lang/fo.js b/sources/plugins/colorbutton/lang/fo.js new file mode 100644 index 00000000..a361f8d2 --- /dev/null +++ b/sources/plugins/colorbutton/lang/fo.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'fo', { + auto: 'Automatiskt', + bgColorTitle: 'Bakgrundslitur', + colors: { + '000': 'Svart', + '800000': 'Maroon', + '8B4513': 'Saðilsbrúnt', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Myrkagrátt', + B22222: 'Fire Brick', + A52A2A: 'Brúnt', + DAA520: 'Gullstavur', + '006400': 'Myrkagrønt', + '40E0D0': 'Turquoise', + '0000CD': 'Meðal blátt', + '800080': 'Purple', + '808080': 'Grátt', + F00: 'Reytt', + FF8C00: 'Myrkt appelsingult', + FFD700: 'Gull', + '008000': 'Grønt', + '0FF': 'Cyan', + '00F': 'Blátt', + EE82EE: 'Violet', + A9A9A9: 'Døkt grátt', + FFA07A: 'Ljósur laksur', + FFA500: 'Appelsingult', + FFFF00: 'Gult', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Ljósablátt', + DDA0DD: 'Plum', + D3D3D3: 'Ljósagrátt', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Klassiskt hvítt', + FFFFE0: 'Ljósagult', + F0FFF0: 'Hunangsdøggur', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blátt', + E6E6FA: 'Lavender', + FFF: 'Hvítt' + }, + more: 'Fleiri litir...', + panelTitle: 'Litir', + textColorTitle: 'Tekstlitur' +} ); diff --git a/sources/plugins/colorbutton/lang/fr-ca.js b/sources/plugins/colorbutton/lang/fr-ca.js new file mode 100644 index 00000000..4a512b0d --- /dev/null +++ b/sources/plugins/colorbutton/lang/fr-ca.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'fr-ca', { + auto: 'Automatique', + bgColorTitle: 'Couleur de fond', + colors: { + '000': 'Noir', + '800000': 'Marron', + '8B4513': 'Brun foncé', + '2F4F4F': 'Gris ardoise foncé', + '008080': 'Sarcelle', + '000080': 'Marine', + '4B0082': 'Indigo', + '696969': 'Gris foncé', + B22222: 'Rouge brique', + A52A2A: 'Brun', + DAA520: 'Doré', + '006400': 'Vert foncé', + '40E0D0': 'Turquoise', + '0000CD': 'Bleu', + '800080': 'Mauve', + '808080': 'Gris', + F00: 'Rouge', + FF8C00: 'Orange foncé', + FFD700: 'Or', + '008000': 'Vert', + '0FF': 'Cyan', + '00F': 'Bleu', + EE82EE: 'Violet', + A9A9A9: 'Gris pâle', + FFA07A: 'Saumon clair', + FFA500: 'Orange', + FFFF00: 'Jaune', + '00FF00': 'Vert lime', + AFEEEE: 'Turquoise pâle', + ADD8E6: 'Bleu pâle', + DDA0DD: 'Prune', + D3D3D3: 'Gris pâle', + FFF0F5: 'Bleu lavande', + FAEBD7: 'Blanc antique', + FFFFE0: 'Jaune pâle', + F0FFF0: 'Miel doré', + F0FFFF: 'Azure', + F0F8FF: 'Bleu alice', + E6E6FA: 'Lavande', + FFF: 'Blanc' + }, + more: 'Plus de couleurs...', + panelTitle: 'Couleurs', + textColorTitle: 'Couleur de texte' +} ); diff --git a/sources/plugins/colorbutton/lang/fr.js b/sources/plugins/colorbutton/lang/fr.js new file mode 100644 index 00000000..dee76e5f --- /dev/null +++ b/sources/plugins/colorbutton/lang/fr.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'fr', { + auto: 'Automatique', + bgColorTitle: 'Couleur d\'arrière plan', + colors: { + '000': 'Noir', + '800000': 'Marron', + '8B4513': 'Brun moyen', + '2F4F4F': 'Vert sombre', + '008080': 'Canard', + '000080': 'Bleu marine', + '4B0082': 'Indigo', + '696969': 'Gris foncé', + B22222: 'Rouge brique', + A52A2A: 'Brun', + DAA520: 'Or terni', + '006400': 'Vert foncé', + '40E0D0': 'Turquoise', + '0000CD': 'Bleu royal', + '800080': 'Pourpre', + '808080': 'Gris', + F00: 'Rouge', + FF8C00: 'Orange foncé', + FFD700: 'Or', + '008000': 'Vert', + '0FF': 'Cyan', + '00F': 'Bleu', + EE82EE: 'Violet', + A9A9A9: 'Gris moyen', + FFA07A: 'Saumon', + FFA500: 'Orange', + FFFF00: 'Jaune', + '00FF00': 'Lime', + AFEEEE: 'Turquoise clair', + ADD8E6: 'Bleu clair', + DDA0DD: 'Prune', + D3D3D3: 'Gris clair', + FFF0F5: 'Fard Lavande', + FAEBD7: 'Blanc antique', + FFFFE0: 'Jaune clair', + F0FFF0: 'Honeydew', + F0FFFF: 'Azur', + F0F8FF: 'Bleu Alice', + E6E6FA: 'Lavande', + FFF: 'Blanc' + }, + more: 'Plus de couleurs...', + panelTitle: 'Couleurs', + textColorTitle: 'Couleur de texte' +} ); diff --git a/sources/plugins/colorbutton/lang/gl.js b/sources/plugins/colorbutton/lang/gl.js new file mode 100644 index 00000000..c2c3730b --- /dev/null +++ b/sources/plugins/colorbutton/lang/gl.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'gl', { + auto: 'Automático', + bgColorTitle: 'Cor do fondo', + colors: { + '000': 'Negro', + '800000': 'Marrón escuro', + '8B4513': 'Ocre', + '2F4F4F': 'Pizarra escuro', + '008080': 'Verde azulado', + '000080': 'Azul mariño', + '4B0082': 'Índigo', + '696969': 'Gris escuro', + B22222: 'Ladrillo', + A52A2A: 'Marrón', + DAA520: 'Dourado escuro', + '006400': 'Verde escuro', + '40E0D0': 'Turquesa', + '0000CD': 'Azul medio', + '800080': 'Púrpura', + '808080': 'Gris', + F00: 'Vermello', + FF8C00: 'Laranxa escuro', + FFD700: 'Dourado', + '008000': 'Verde', + '0FF': 'Cian', + '00F': 'Azul', + EE82EE: 'Violeta', + A9A9A9: 'Gris medio', + FFA07A: 'Salmón claro', + FFA500: 'Laranxa', + FFFF00: 'Amarelo', + '00FF00': 'Lima', + AFEEEE: 'Turquesa pálido', + ADD8E6: 'Azul claro', + DDA0DD: 'Violeta pálido', + D3D3D3: 'Verde claro', + FFF0F5: 'Lavanda vermello', + FAEBD7: 'Branco antigo', + FFFFE0: 'Amarelo claro', + F0FFF0: 'Mel', + F0FFFF: 'Azul celeste', + F0F8FF: 'Azul pálido', + E6E6FA: 'Lavanda', + FFF: 'Branco' + }, + more: 'Máis cores...', + panelTitle: 'Cores', + textColorTitle: 'Cor do texto' +} ); diff --git a/sources/plugins/colorbutton/lang/gu.js b/sources/plugins/colorbutton/lang/gu.js new file mode 100644 index 00000000..06dec6bf --- /dev/null +++ b/sources/plugins/colorbutton/lang/gu.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'gu', { + auto: 'સ્વચાલિત', + bgColorTitle: 'બૅકગ્રાઉન્ડ રંગ,', + colors: { + '000': 'કાળો', + '800000': 'મરુન', + '8B4513': 'છીક', + '2F4F4F': 'ડાર્ક સ્લેટ ગ્રે ', + '008080': 'ટીલ', + '000080': 'નેવી', + '4B0082': 'જામલી', + '696969': 'ડાર્ક ગ્રે', + B22222: 'ઈટ', + A52A2A: 'બ્રાઉન', + DAA520: 'ગોલ્ડન રોડ', + '006400': 'ડાર્ક લીલો', + '40E0D0': 'ટ્રકોઈસ', + '0000CD': 'મધ્યમ વાદળી', + '800080': 'પર્પલ', + '808080': 'ગ્રે', + F00: 'લાલ', + FF8C00: 'ડાર્ક ઓરંજ', + FFD700: 'ગોલ્ડ', + '008000': 'ગ્રીન', + '0FF': 'સાયન', + '00F': 'વાદળી', + EE82EE: 'વાયોલેટ', + A9A9A9: 'ડીમ ', + FFA07A: 'લાઈટ સાલમન', + FFA500: 'ઓરંજ', + FFFF00: 'પીળો', + '00FF00': 'લાઈમ', + AFEEEE: 'પેલ કોઈસ', + ADD8E6: 'લાઈટ બ્લુ', + DDA0DD: 'પલ્મ', + D3D3D3: 'લાઈટ ગ્રે', + FFF0F5: 'લવંડર ', + FAEBD7: 'એન્ટીક સફેદ', + FFFFE0: 'લાઈટ પીળો', + F0FFF0: 'હનીડઉય', + F0FFFF: 'અઝુરે', + F0F8FF: 'એલીસ બ્લુ', + E6E6FA: 'લવંડર', + FFF: 'સફેદ' + }, + more: 'ઔર રંગ...', + panelTitle: 'રંગ', + textColorTitle: 'શબ્દનો રંગ' +} ); diff --git a/sources/plugins/colorbutton/lang/he.js b/sources/plugins/colorbutton/lang/he.js new file mode 100644 index 00000000..f10eace9 --- /dev/null +++ b/sources/plugins/colorbutton/lang/he.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'he', { + auto: 'אוטומטי', + bgColorTitle: 'צבע רקע', + colors: { + '000': 'שחור', + '800000': 'סגול כהה', + '8B4513': 'חום בהיר', + '2F4F4F': 'אפור צפחה', + '008080': 'כחול-ירוק', + '000080': 'כחול-סגול', + '4B0082': 'אינדיגו', + '696969': 'אפור מעומעם', + B22222: 'אדום-חום', + A52A2A: 'חום', + DAA520: 'כתום זהב', + '006400': 'ירוק כהה', + '40E0D0': 'טורקיז', + '0000CD': 'כחול בינוני', + '800080': 'סגול', + '808080': 'אפור', + F00: 'אדום', + FF8C00: 'כתום כהה', + FFD700: 'זהב', + '008000': 'ירוק', + '0FF': 'ציאן', + '00F': 'כחול', + EE82EE: 'סגלגל', + A9A9A9: 'אפור כהה', + FFA07A: 'כתום-וורוד', + FFA500: 'כתום', + FFFF00: 'צהוב', + '00FF00': 'ליים', + AFEEEE: 'טורקיז בהיר', + ADD8E6: 'כחול בהיר', + DDA0DD: 'שזיף', + D3D3D3: 'אפור בהיר', + FFF0F5: 'לבנדר מסמיק', + FAEBD7: 'לבן עתיק', + FFFFE0: 'צהוב בהיר', + F0FFF0: 'טל דבש', + F0FFFF: 'תכלת', + F0F8FF: 'כחול טיפת מים', + E6E6FA: 'לבנדר', + FFF: 'לבן' + }, + more: 'צבעים נוספים...', + panelTitle: 'צבעים', + textColorTitle: 'צבע טקסט' +} ); diff --git a/sources/plugins/colorbutton/lang/hi.js b/sources/plugins/colorbutton/lang/hi.js new file mode 100644 index 00000000..6440a6e1 --- /dev/null +++ b/sources/plugins/colorbutton/lang/hi.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'hi', { + auto: 'स्वचालित', + bgColorTitle: 'बैक्ग्राउन्ड रंग', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'और रंग...', + panelTitle: 'Colors', + textColorTitle: 'टेक्स्ट रंग' +} ); diff --git a/sources/plugins/colorbutton/lang/hr.js b/sources/plugins/colorbutton/lang/hr.js new file mode 100644 index 00000000..e5099d24 --- /dev/null +++ b/sources/plugins/colorbutton/lang/hr.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'hr', { + auto: 'Automatski', + bgColorTitle: 'Boja pozadine', + colors: { + '000': 'Crna', + '800000': 'Kesten', + '8B4513': 'Smeđa', + '2F4F4F': 'Tamno siva', + '008080': 'Teal', + '000080': 'Mornarska', + '4B0082': 'Indigo', + '696969': 'Tamno siva', + B22222: 'Vatrena cigla', + A52A2A: 'Smeđa', + DAA520: 'Zlatna', + '006400': 'Tamno zelena', + '40E0D0': 'Tirkizna', + '0000CD': 'Srednje plava', + '800080': 'Ljubičasta', + '808080': 'Siva', + F00: 'Crvena', + FF8C00: 'Tamno naranđasta', + FFD700: 'Zlatna', + '008000': 'Zelena', + '0FF': 'Cijan', + '00F': 'Plava', + EE82EE: 'Ljubičasta', + A9A9A9: 'Mutno siva', + FFA07A: 'Svijetli losos', + FFA500: 'Naranđasto', + FFFF00: 'Žuto', + '00FF00': 'Limun', + AFEEEE: 'Blijedo tirkizna', + ADD8E6: 'Svijetlo plava', + DDA0DD: 'Šljiva', + D3D3D3: 'Svijetlo siva', + FFF0F5: 'Lavanda rumeno', + FAEBD7: 'Antikno bijela', + FFFFE0: 'Svijetlo žuta', + F0FFF0: 'Med', + F0FFFF: 'Azurna', + F0F8FF: 'Alice plava', + E6E6FA: 'Lavanda', + FFF: 'Bijela' + }, + more: 'Više boja...', + panelTitle: 'Boje', + textColorTitle: 'Boja teksta' +} ); diff --git a/sources/plugins/colorbutton/lang/hu.js b/sources/plugins/colorbutton/lang/hu.js new file mode 100644 index 00000000..4ff5d1d0 --- /dev/null +++ b/sources/plugins/colorbutton/lang/hu.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'hu', { + auto: 'Automatikus', + bgColorTitle: 'Háttérszín', + colors: { + '000': 'Fekete', + '800000': 'Bordó', + '8B4513': 'Barna', + '2F4F4F': 'Sötét türkiz', + '008080': 'Türkiz', + '000080': 'Király kék', + '4B0082': 'Indigó kék', + '696969': 'Szürke', + B22222: 'Tégla vörös', + A52A2A: 'Vörös', + DAA520: 'Arany sárga', + '006400': 'Sötét zöld', + '40E0D0': 'Türkiz', + '0000CD': 'Kék', + '800080': 'Lila', + '808080': 'Szürke', + F00: 'Piros', + FF8C00: 'Sötét narancs', + FFD700: 'Arany', + '008000': 'Zöld', + '0FF': 'Türkiz', + '00F': 'Kék', + EE82EE: 'Rózsaszín', + A9A9A9: 'Sötét szürke', + FFA07A: 'Lazac', + FFA500: 'Narancs', + FFFF00: 'Citromsárga', + '00FF00': 'Neon zöld', + AFEEEE: 'Világos türkiz', + ADD8E6: 'Világos kék', + DDA0DD: 'Világos lila', + D3D3D3: 'Világos szürke', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Törtfehér', + FFFFE0: 'Világos sárga', + F0FFF0: 'Menta', + F0FFFF: 'Azúr kék', + F0F8FF: 'Halvány kék', + E6E6FA: 'Lavender', + FFF: 'Fehér' + }, + more: 'További színek...', + panelTitle: 'Színek', + textColorTitle: 'Betűszín' +} ); diff --git a/sources/plugins/colorbutton/lang/id.js b/sources/plugins/colorbutton/lang/id.js new file mode 100644 index 00000000..049a9def --- /dev/null +++ b/sources/plugins/colorbutton/lang/id.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'id', { + auto: 'Automatic', // MISSING + bgColorTitle: 'Warna Latar Belakang', + colors: { + '000': 'Hitam', + '800000': 'Merah Tua', + '8B4513': 'Saddle Brown', // MISSING + '2F4F4F': 'Dark Slate Gray', // MISSING + '008080': 'Teal', // MISSING + '000080': 'Navy', // MISSING + '4B0082': 'Indigo', // MISSING + '696969': 'Abu-abu Gelap', + B22222: 'Merah Bata', + A52A2A: 'Coklat', + DAA520: 'Golden Rod', // MISSING + '006400': 'Hijau Gelap', + '40E0D0': 'Turquoise', // MISSING + '0000CD': 'Biru Sedang', + '800080': 'Ungu', + '808080': 'Abu-abu', + F00: 'Merah', + FF8C00: 'Jingga Gelap', + FFD700: 'Emas', + '008000': 'Hijau', + '0FF': 'Cyan', // MISSING + '00F': 'Biru', + EE82EE: 'Violet', // MISSING + A9A9A9: 'Abu-abu Redup', + FFA07A: 'Salmon Cerah', + FFA500: 'Jingga', + FFFF00: 'Kuning', + '00FF00': 'Jeruk Lemon', + AFEEEE: 'Biru Hijau Pucat', + ADD8E6: 'Biru Cerah', + DDA0DD: 'Plum', // MISSING + D3D3D3: 'Abu-abu Cerah', + FFF0F5: 'Lavender Blush', // MISSING + FAEBD7: 'Antique White', // MISSING + FFFFE0: 'Kuning Cerah', + F0FFF0: 'Honeydew', // MISSING + F0FFFF: 'Azure', // MISSING + F0F8FF: 'Alice Blue', // MISSING + E6E6FA: 'Lavender', // MISSING + FFF: 'Putih' + }, + more: 'Warna lainnya...', + panelTitle: 'Warna', + textColorTitle: 'Warna Teks' +} ); diff --git a/sources/plugins/colorbutton/lang/is.js b/sources/plugins/colorbutton/lang/is.js new file mode 100644 index 00000000..dc3a4697 --- /dev/null +++ b/sources/plugins/colorbutton/lang/is.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'is', { + auto: 'Sjálfval', + bgColorTitle: 'Bakgrunnslitur', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'Fleiri liti...', + panelTitle: 'Colors', + textColorTitle: 'Litur texta' +} ); diff --git a/sources/plugins/colorbutton/lang/it.js b/sources/plugins/colorbutton/lang/it.js new file mode 100644 index 00000000..616de5dd --- /dev/null +++ b/sources/plugins/colorbutton/lang/it.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'it', { + auto: 'Automatico', + bgColorTitle: 'Colore sfondo', + colors: { + '000': 'Nero', + '800000': 'Marrone Castagna', + '8B4513': 'Marrone Cuoio', + '2F4F4F': 'Grigio Fumo di Londra', + '008080': 'Acquamarina', + '000080': 'Blu Oceano', + '4B0082': 'Indigo', + '696969': 'Grigio Scuro', + B22222: 'Giallo Fiamma', + A52A2A: 'Marrone', + DAA520: 'Giallo Mimosa', + '006400': 'Verde Scuro', + '40E0D0': 'Turchese', + '0000CD': 'Blue Scuro', + '800080': 'Viola', + '808080': 'Grigio', + F00: 'Rosso', + FF8C00: 'Arancio Scuro', + FFD700: 'Oro', + '008000': 'Verde', + '0FF': 'Ciano', + '00F': 'Blu', + EE82EE: 'Violetto', + A9A9A9: 'Grigio Scuro', + FFA07A: 'Salmone', + FFA500: 'Arancio', + FFFF00: 'Giallo', + '00FF00': 'Lime', + AFEEEE: 'Turchese Chiaro', + ADD8E6: 'Blu Chiaro', + DDA0DD: 'Rosso Ciliegia', + D3D3D3: 'Grigio Chiaro', + FFF0F5: 'Lavanda Chiara', + FAEBD7: 'Bianco Antico', + FFFFE0: 'Giallo Chiaro', + F0FFF0: 'Verde Mela', + F0FFFF: 'Azzurro', + F0F8FF: 'Celeste', + E6E6FA: 'Lavanda', + FFF: 'Bianco' + }, + more: 'Altri colori...', + panelTitle: 'Colori', + textColorTitle: 'Colore testo' +} ); diff --git a/sources/plugins/colorbutton/lang/ja.js b/sources/plugins/colorbutton/lang/ja.js new file mode 100644 index 00000000..b717d33a --- /dev/null +++ b/sources/plugins/colorbutton/lang/ja.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'ja', { + auto: '自動', + bgColorTitle: '背景色', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'その他の色...', + panelTitle: '色', + textColorTitle: '文字色' +} ); diff --git a/sources/plugins/colorbutton/lang/ka.js b/sources/plugins/colorbutton/lang/ka.js new file mode 100644 index 00000000..0ea34a58 --- /dev/null +++ b/sources/plugins/colorbutton/lang/ka.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'ka', { + auto: 'ავტომატური', + bgColorTitle: 'ფონის ფერი', + colors: { + '000': 'შავი', + '800000': 'მუქი შინდისფერი', + '8B4513': 'ყავისფერი', + '2F4F4F': 'მოლურჯო ნაცრისფერი', + '008080': 'ჩამქრალი ლურჯი', + '000080': 'მუქი ლურჯი', + '4B0082': 'იასამნისფერი', + '696969': 'მუქი ნაცრისფერი', + B22222: 'აგურისფერი', + A52A2A: 'მუქი ყავისფერი', + DAA520: 'მოყვითალო', + '006400': 'მუქი მწვანე', + '40E0D0': 'ცისფერი', + '0000CD': 'ზომიერად ლურჯი', + '800080': 'იისფერი', + '808080': 'ნაცრისფერი', + F00: 'წითელი', + FF8C00: 'მუქი სტაფილოსფერი', + FFD700: 'ოქროსფერი', + '008000': 'მწვანე', + '0FF': 'ღია ცისფერი', + '00F': 'ლურჯი', + EE82EE: 'იისფერი', + A9A9A9: 'ბაცი ნაცრისფერი', + FFA07A: 'ჩამქრალი ვარდისფერი', + FFA500: 'სტაფილოსფერი', + FFFF00: 'ყვითელი', + '00FF00': 'ლურჯი', + AFEEEE: 'ცისფერი', + ADD8E6: 'ღია ლურჯი', + DDA0DD: 'ღია იისფერი', + D3D3D3: 'ღია ნაცრისფერი', + FFF0F5: 'ღია ვარდისფერი', + FAEBD7: 'ღია ყავისფერი', + FFFFE0: 'ნათელი ყვითელი', + F0FFF0: 'ღია მწვანე', + F0FFFF: 'ღია ცისფერი 2', + F0F8FF: 'ღია ცისფერი 3', + E6E6FA: 'ღია იისფერი 2', + FFF: 'თეთრი' + }, + more: 'მეტი ფერი...', + panelTitle: 'ფერები', + textColorTitle: 'ტექსტის ფერი' +} ); diff --git a/sources/plugins/colorbutton/lang/km.js b/sources/plugins/colorbutton/lang/km.js new file mode 100644 index 00000000..e33727e8 --- /dev/null +++ b/sources/plugins/colorbutton/lang/km.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'km', { + auto: 'ស្វ័យប្រវត្តិ', + bgColorTitle: 'ពណ៌ផ្ទៃខាងក្រោយ', + colors: { + '000': 'ខ្មៅ', + '800000': 'ត្នោត​ចាស់', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'ខៀវ​ចាស់', + '4B0082': 'ធ្លះ', + '696969': 'ប្រផេះ​ក្រាស់', + B22222: 'Fire Brick', + A52A2A: 'ត្នោត', + DAA520: 'Golden Rod', + '006400': 'បៃតង​ចាស់', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'ប្រផេះ', + F00: 'ក្រហម', + FF8C00: 'ទឹក​ក្រូច​ចាស់', + FFD700: 'មាស', + '008000': 'បៃតង', + '0FF': 'Cyan', + '00F': 'ខៀវ', + EE82EE: 'ស្វាយ', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'ទឹក​ក្រូច', + FFFF00: 'លឿង', + '00FF00': 'ក្រូច​ឆ្មារ', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'លឿង​ស្ដើង', + F0FFF0: 'Honeydew', + F0FFFF: 'ផ្ទៃមេឃ', + F0F8FF: 'Alice Blue', + E6E6FA: 'ឡាវិនដឺ', + FFF: 'ស' + }, + more: 'ពណ៌​ផ្សេង​ទៀត..', + panelTitle: 'ពណ៌', + textColorTitle: 'ពណ៌អក្សរ' +} ); diff --git a/sources/plugins/colorbutton/lang/ko.js b/sources/plugins/colorbutton/lang/ko.js new file mode 100644 index 00000000..6bd833f2 --- /dev/null +++ b/sources/plugins/colorbutton/lang/ko.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'ko', { + auto: '기본 색상', + bgColorTitle: '배경 색상', + colors: { + '000': '검정', + '800000': '밤색', + '8B4513': '새들 브라운', + '2F4F4F': '다크 슬레이트 그레이', + '008080': '틸', + '000080': '네이비', + '4B0082': '남색', + '696969': '짙은 회색', + B22222: '벽돌색', + A52A2A: '갈색', + DAA520: '골든 로드', + '006400': '암록색', + '40E0D0': '터코이즈', + '0000CD': '미디엄 블루', + '800080': '보라', + '808080': '회색', + F00: '빨강', + FF8C00: '짙은 주황', + FFD700: '금색', + '008000': '녹색', + '0FF': '시안', + '00F': '파랑', + EE82EE: '남보라', + A9A9A9: '딤 그레이', + FFA07A: '라이트 새먼', + FFA500: '주황', + FFFF00: '노랑', + '00FF00': '라임', + AFEEEE: '패일 터코이즈', + ADD8E6: '연한 파랑', + DDA0DD: '자두', + D3D3D3: '연한 회색', + FFF0F5: '라벤더 블러쉬', + FAEBD7: '앤틱 화이트', + FFFFE0: '연한 노랑', + F0FFF0: '허니듀', + F0FFFF: '하늘색', + F0F8FF: '앨리스 블루', + E6E6FA: '라벤더', + FFF: '흰색' + }, + more: '색상 선택...', + panelTitle: '색상', + textColorTitle: '글자 색상' +} ); diff --git a/sources/plugins/colorbutton/lang/ku.js b/sources/plugins/colorbutton/lang/ku.js new file mode 100644 index 00000000..79992f37 --- /dev/null +++ b/sources/plugins/colorbutton/lang/ku.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'ku', { + auto: 'خۆکار', + bgColorTitle: 'ڕەنگی پاشبنەما', + colors: { + '000': 'ڕەش', + '800000': 'سۆرو ماڕوونی', + '8B4513': 'ماڕوونی', + '2F4F4F': 'سەوزی تاریك', + '008080': 'سەوز و شین', + '000080': 'شینی تۆخ', + '4B0082': 'مۆری تۆخ', + '696969': 'ڕەساسی تۆخ', + B22222: 'سۆری تۆخ', + A52A2A: 'قاوەیی', + DAA520: 'قاوەیی بریسکەدار', + '006400': 'سەوزی تۆخ', + '40E0D0': 'شینی ناتۆخی بریسکەدار', + '0000CD': 'شینی مامناوەند', + '800080': 'پەمبەیی', + '808080': 'ڕەساسی', + F00: 'سۆر', + FF8C00: 'نارەنجی تۆخ', + FFD700: 'زەرد', + '008000': 'سەوز', + '0FF': 'شینی ئاسمانی', + '00F': 'شین', + EE82EE: 'پەمەیی', + A9A9A9: 'ڕەساسی ناتۆخ', + FFA07A: 'نارەنجی ناتۆخ', + FFA500: 'نارەنجی', + FFFF00: 'زەرد', + '00FF00': 'سەوز', + AFEEEE: 'شینی ناتۆخ', + ADD8E6: 'شینی زۆر ناتۆخ', + DDA0DD: 'پەمەیی ناتۆخ', + D3D3D3: 'ڕەساسی بریسکەدار', + FFF0F5: 'جەرگی زۆر ناتۆخ', + FAEBD7: 'جەرگی ناتۆخ', + FFFFE0: 'سپی ناتۆخ', + F0FFF0: 'هەنگوینی ناتۆخ', + F0FFFF: 'شینێکی زۆر ناتۆخ', + F0F8FF: 'شینێکی ئاسمانی زۆر ناتۆخ', + E6E6FA: 'شیری', + FFF: 'سپی' + }, + more: 'ڕەنگی زیاتر...', + panelTitle: 'ڕەنگەکان', + textColorTitle: 'ڕەنگی دەق' +} ); diff --git a/sources/plugins/colorbutton/lang/lt.js b/sources/plugins/colorbutton/lang/lt.js new file mode 100644 index 00000000..be82ae89 --- /dev/null +++ b/sources/plugins/colorbutton/lang/lt.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'lt', { + auto: 'Automatinis', + bgColorTitle: 'Fono spalva', + colors: { + '000': 'Juoda', + '800000': 'Kaštoninė', + '8B4513': 'Tamsiai ruda', + '2F4F4F': 'Pilka tamsaus šiferio', + '008080': 'Teal', + '000080': 'Karinis', + '4B0082': 'Indigo', + '696969': 'Tamsiai pilka', + B22222: 'Ugnies', + A52A2A: 'Ruda', + DAA520: 'Aukso', + '006400': 'Tamsiai žalia', + '40E0D0': 'Turquoise', + '0000CD': 'Vidutinė mėlyna', + '800080': 'Violetinė', + '808080': 'Pilka', + F00: 'Raudona', + FF8C00: 'Tamsiai oranžinė', + FFD700: 'Auksinė', + '008000': 'Žalia', + '0FF': 'Žydra', + '00F': 'Mėlyna', + EE82EE: 'Violetinė', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Oranžinė', + FFFF00: 'Geltona', + '00FF00': 'Citrinų', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Šviesiai mėlyna', + DDA0DD: 'Plum', + D3D3D3: 'Šviesiai pilka', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Šviesiai geltona', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'Balta' + }, + more: 'Daugiau spalvų...', + panelTitle: 'Spalva', + textColorTitle: 'Teksto spalva' +} ); diff --git a/sources/plugins/colorbutton/lang/lv.js b/sources/plugins/colorbutton/lang/lv.js new file mode 100644 index 00000000..bd0cfd30 --- /dev/null +++ b/sources/plugins/colorbutton/lang/lv.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'lv', { + auto: 'Automātiska', + bgColorTitle: 'Fona krāsa', + colors: { + '000': 'Melns', + '800000': 'Sarkanbrūns', + '8B4513': 'Sedlu brūns', + '2F4F4F': 'Tumšas tāfeles pelēks', + '008080': 'Zili-zaļš', + '000080': 'Jūras', + '4B0082': 'Indigo', + '696969': 'Tumši pelēks', + B22222: 'Ķieģeļsarkans', + A52A2A: 'Brūns', + DAA520: 'Zelta', + '006400': 'Tumši zaļš', + '40E0D0': 'Tirkīzs', + '0000CD': 'Vidēji zils', + '800080': 'Purpurs', + '808080': 'Pelēks', + F00: 'Sarkans', + FF8C00: 'Tumši oranžs', + FFD700: 'Zelta', + '008000': 'Zaļš', + '0FF': 'Tumšzils', + '00F': 'Zils', + EE82EE: 'Violets', + A9A9A9: 'Pelēks', + FFA07A: 'Gaiši laškrāsas', + FFA500: 'Oranžs', + FFFF00: 'Dzeltens', + '00FF00': 'Laima', + AFEEEE: 'Gaiši tirkīza', + ADD8E6: 'Gaiši zils', + DDA0DD: 'Plūmju', + D3D3D3: 'Gaiši pelēks', + FFF0F5: 'Lavandas sārts', + FAEBD7: 'Antīki balts', + FFFFE0: 'Gaiši dzeltens', + F0FFF0: 'Meduspile', + F0FFFF: 'Debesszils', + F0F8FF: 'Alises zils', + E6E6FA: 'Lavanda', + FFF: 'Balts' + }, + more: 'Plašāka palete...', + panelTitle: 'Krāsa', + textColorTitle: 'Teksta krāsa' +} ); diff --git a/sources/plugins/colorbutton/lang/mk.js b/sources/plugins/colorbutton/lang/mk.js new file mode 100644 index 00000000..139fea42 --- /dev/null +++ b/sources/plugins/colorbutton/lang/mk.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'mk', { + auto: 'Automatic', // MISSING + bgColorTitle: 'Background Color', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'More Colors...', // MISSING + panelTitle: 'Colors', + textColorTitle: 'Text Color' // MISSING +} ); diff --git a/sources/plugins/colorbutton/lang/mn.js b/sources/plugins/colorbutton/lang/mn.js new file mode 100644 index 00000000..c1999480 --- /dev/null +++ b/sources/plugins/colorbutton/lang/mn.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'mn', { + auto: 'Автоматаар', + bgColorTitle: 'Дэвсгэр өнгө', + colors: { + '000': 'Хар', + '800000': 'Хүрэн', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Саарал', + F00: 'Улаан', + FF8C00: 'Dark Orange', + FFD700: 'Алт', + '008000': 'Ногоон', + '0FF': 'Цэнхэр', + '00F': 'Хөх', + EE82EE: 'Ягаан', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Улбар шар', + FFFF00: 'Шар', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Цайвар саарал', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'Цагаан' + }, + more: 'Нэмэлт өнгөнүүд...', + panelTitle: 'Өнгөнүүд', + textColorTitle: 'Бичвэрийн өнгө' +} ); diff --git a/sources/plugins/colorbutton/lang/ms.js b/sources/plugins/colorbutton/lang/ms.js new file mode 100644 index 00000000..6fd19117 --- /dev/null +++ b/sources/plugins/colorbutton/lang/ms.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'ms', { + auto: 'Otomatik', + bgColorTitle: 'Warna Latarbelakang', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'Warna lain-lain...', + panelTitle: 'Colors', + textColorTitle: 'Warna Text' +} ); diff --git a/sources/plugins/colorbutton/lang/nb.js b/sources/plugins/colorbutton/lang/nb.js new file mode 100644 index 00000000..28906baa --- /dev/null +++ b/sources/plugins/colorbutton/lang/nb.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'nb', { + auto: 'Automatisk', + bgColorTitle: 'Bakgrunnsfarge', + colors: { + '000': 'Svart', + '800000': 'Rødbrun', + '8B4513': 'Salbrun', + '2F4F4F': 'Grønnsvart', + '008080': 'Blågrønn', + '000080': 'Marineblått', + '4B0082': 'Indigo', + '696969': 'Mørk grå', + B22222: 'Mørkerød', + A52A2A: 'Brun', + DAA520: 'Lys brun', + '006400': 'Mørk grønn', + '40E0D0': 'Turkis', + '0000CD': 'Medium blå', + '800080': 'Purpur', + '808080': 'Grå', + F00: 'Rød', + FF8C00: 'Mørk oransje', + FFD700: 'Gull', + '008000': 'Grønn', + '0FF': 'Cyan', + '00F': 'Blå', + EE82EE: 'Fiolett', + A9A9A9: 'Svak grå', + FFA07A: 'Rosa-oransje', + FFA500: 'Oransje', + FFFF00: 'Gul', + '00FF00': 'Lime', + AFEEEE: 'Svak turkis', + ADD8E6: 'Lys Blå', + DDA0DD: 'Plomme', + D3D3D3: 'Lys grå', + FFF0F5: 'Svak lavendelrosa', + FAEBD7: 'Antikk-hvit', + FFFFE0: 'Lys gul', + F0FFF0: 'Honningmelon', + F0FFFF: 'Svakt asurblått', + F0F8FF: 'Svak cyan', + E6E6FA: 'Lavendel', + FFF: 'Hvit' + }, + more: 'Flere farger...', + panelTitle: 'Farger', + textColorTitle: 'Tekstfarge' +} ); diff --git a/sources/plugins/colorbutton/lang/nl.js b/sources/plugins/colorbutton/lang/nl.js new file mode 100644 index 00000000..da2f57a4 --- /dev/null +++ b/sources/plugins/colorbutton/lang/nl.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'nl', { + auto: 'Automatisch', + bgColorTitle: 'Achtergrondkleur', + colors: { + '000': 'Zwart', + '800000': 'Kastanjebruin', + '8B4513': 'Chocoladebruin', + '2F4F4F': 'Donkerleigrijs', + '008080': 'Blauwgroen', + '000080': 'Marine', + '4B0082': 'Indigo', + '696969': 'Donkergrijs', + B22222: 'Baksteen', + A52A2A: 'Bruin', + DAA520: 'Donkergeel', + '006400': 'Donkergroen', + '40E0D0': 'Turquoise', + '0000CD': 'Middenblauw', + '800080': 'Paars', + '808080': 'Grijs', + F00: 'Rood', + FF8C00: 'Donkeroranje', + FFD700: 'Goud', + '008000': 'Groen', + '0FF': 'Cyaan', + '00F': 'Blauw', + EE82EE: 'Violet', + A9A9A9: 'Donkergrijs', + FFA07A: 'Lichtzalm', + FFA500: 'Oranje', + FFFF00: 'Geel', + '00FF00': 'Felgroen', + AFEEEE: 'Lichtturquoise', + ADD8E6: 'Lichtblauw', + DDA0DD: 'Pruim', + D3D3D3: 'Lichtgrijs', + FFF0F5: 'Linnen', + FAEBD7: 'Ivoor', + FFFFE0: 'Lichtgeel', + F0FFF0: 'Honingdauw', + F0FFFF: 'Azuur', + F0F8FF: 'Licht hemelsblauw', + E6E6FA: 'Lavendel', + FFF: 'Wit' + }, + more: 'Meer kleuren...', + panelTitle: 'Kleuren', + textColorTitle: 'Tekstkleur' +} ); diff --git a/sources/plugins/colorbutton/lang/no.js b/sources/plugins/colorbutton/lang/no.js new file mode 100644 index 00000000..4c415991 --- /dev/null +++ b/sources/plugins/colorbutton/lang/no.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'no', { + auto: 'Automatisk', + bgColorTitle: 'Bakgrunnsfarge', + colors: { + '000': 'Svart', + '800000': 'Rødbrun', + '8B4513': 'Salbrun', + '2F4F4F': 'Grønnsvart', + '008080': 'Blågrønn', + '000080': 'Marineblått', + '4B0082': 'Indigo', + '696969': 'Mørk grå', + B22222: 'Mørkerød', + A52A2A: 'Brun', + DAA520: 'Lys brun', + '006400': 'Mørk grønn', + '40E0D0': 'Turkis', + '0000CD': 'Medium blå', + '800080': 'Purpur', + '808080': 'Grå', + F00: 'Rød', + FF8C00: 'Mørk oransje', + FFD700: 'Gull', + '008000': 'Grønn', + '0FF': 'Cyan', + '00F': 'Blå', + EE82EE: 'Fiolett', + A9A9A9: 'Svak grå', + FFA07A: 'Rosa-oransje', + FFA500: 'Oransje', + FFFF00: 'Gul', + '00FF00': 'Lime', + AFEEEE: 'Svak turkis', + ADD8E6: 'Lys Blå', + DDA0DD: 'Plomme', + D3D3D3: 'Lys grå', + FFF0F5: 'Svak lavendelrosa', + FAEBD7: 'Antikk-hvit', + FFFFE0: 'Lys gul', + F0FFF0: 'Honningmelon', + F0FFFF: 'Svakt asurblått', + F0F8FF: 'Svak cyan', + E6E6FA: 'Lavendel', + FFF: 'Hvit' + }, + more: 'Flere farger...', + panelTitle: 'Farger', + textColorTitle: 'Tekstfarge' +} ); diff --git a/sources/plugins/colorbutton/lang/pl.js b/sources/plugins/colorbutton/lang/pl.js new file mode 100644 index 00000000..241ce758 --- /dev/null +++ b/sources/plugins/colorbutton/lang/pl.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'pl', { + auto: 'Automatycznie', + bgColorTitle: 'Kolor tła', + colors: { + '000': 'Czarny', + '800000': 'Kasztanowy', + '8B4513': 'Czekoladowy', + '2F4F4F': 'Ciemnografitowy', + '008080': 'Morski', + '000080': 'Granatowy', + '4B0082': 'Indygo', + '696969': 'Ciemnoszary', + B22222: 'Czerwień żelazowa', + A52A2A: 'Brązowy', + DAA520: 'Ciemnozłoty', + '006400': 'Ciemnozielony', + '40E0D0': 'Turkusowy', + '0000CD': 'Ciemnoniebieski', + '800080': 'Purpurowy', + '808080': 'Szary', + F00: 'Czerwony', + FF8C00: 'Ciemnopomarańczowy', + FFD700: 'Złoty', + '008000': 'Zielony', + '0FF': 'Cyjan', + '00F': 'Niebieski', + EE82EE: 'Fioletowy', + A9A9A9: 'Przygaszony szary', + FFA07A: 'Łososiowy', + FFA500: 'Pomarańczowy', + FFFF00: 'Żółty', + '00FF00': 'Limonkowy', + AFEEEE: 'Bladoturkusowy', + ADD8E6: 'Jasnoniebieski', + DDA0DD: 'Śliwkowy', + D3D3D3: 'Jasnoszary', + FFF0F5: 'Jasnolawendowy', + FAEBD7: 'Kremowobiały', + FFFFE0: 'Jasnożółty', + F0FFF0: 'Bladozielony', + F0FFFF: 'Jasnolazurowy', + F0F8FF: 'Jasnobłękitny', + E6E6FA: 'Lawendowy', + FFF: 'Biały' + }, + more: 'Więcej kolorów...', + panelTitle: 'Kolory', + textColorTitle: 'Kolor tekstu' +} ); diff --git a/sources/plugins/colorbutton/lang/pt-br.js b/sources/plugins/colorbutton/lang/pt-br.js new file mode 100644 index 00000000..88b9090e --- /dev/null +++ b/sources/plugins/colorbutton/lang/pt-br.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'pt-br', { + auto: 'Automático', + bgColorTitle: 'Cor do Plano de Fundo', + colors: { + '000': 'Preto', + '800000': 'Foquete', + '8B4513': 'Marrom 1', + '2F4F4F': 'Cinza 1', + '008080': 'Cerceta', + '000080': 'Azul Marinho', + '4B0082': 'Índigo', + '696969': 'Cinza 2', + B22222: 'Tijolo de Fogo', + A52A2A: 'Marrom 2', + DAA520: 'Vara Dourada', + '006400': 'Verde Escuro', + '40E0D0': 'Turquesa', + '0000CD': 'Azul Médio', + '800080': 'Roxo', + '808080': 'Cinza 3', + F00: 'Vermelho', + FF8C00: 'Laranja Escuro', + FFD700: 'Dourado', + '008000': 'Verde', + '0FF': 'Ciano', + '00F': 'Azul', + EE82EE: 'Violeta', + A9A9A9: 'Cinza Escuro', + FFA07A: 'Salmão Claro', + FFA500: 'Laranja', + FFFF00: 'Amarelo', + '00FF00': 'Lima', + AFEEEE: 'Turquesa Pálido', + ADD8E6: 'Azul Claro', + DDA0DD: 'Ameixa', + D3D3D3: 'Cinza Claro', + FFF0F5: 'Lavanda 1', + FAEBD7: 'Branco Antiguidade', + FFFFE0: 'Amarelo Claro', + F0FFF0: 'Orvalho', + F0FFFF: 'Azure', + F0F8FF: 'Azul Alice', + E6E6FA: 'Lavanda 2', + FFF: 'Branco' + }, + more: 'Mais Cores...', + panelTitle: 'Cores', + textColorTitle: 'Cor do Texto' +} ); diff --git a/sources/plugins/colorbutton/lang/pt.js b/sources/plugins/colorbutton/lang/pt.js new file mode 100644 index 00000000..c1fe458b --- /dev/null +++ b/sources/plugins/colorbutton/lang/pt.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'pt', { + auto: 'Automático', + bgColorTitle: 'Cor de Fundo', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Cinza claro', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Branco velho', + FFFFE0: 'Amarelo claro', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'Branco' + }, + more: 'Mais cores...', + panelTitle: 'Cores', + textColorTitle: 'Cor do texto' +} ); diff --git a/sources/plugins/colorbutton/lang/ro.js b/sources/plugins/colorbutton/lang/ro.js new file mode 100644 index 00000000..c1e7c1a0 --- /dev/null +++ b/sources/plugins/colorbutton/lang/ro.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'ro', { + auto: 'Automatic', + bgColorTitle: 'Coloarea fundalului', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'Mai multe culori...', + panelTitle: 'Colors', + textColorTitle: 'Culoarea textului' +} ); diff --git a/sources/plugins/colorbutton/lang/ru.js b/sources/plugins/colorbutton/lang/ru.js new file mode 100644 index 00000000..c2a017e2 --- /dev/null +++ b/sources/plugins/colorbutton/lang/ru.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'ru', { + auto: 'Автоматически', + bgColorTitle: 'Цвет фона', + colors: { + '000': 'Чёрный', + '800000': 'Бордовый', + '8B4513': 'Кожано-коричневый', + '2F4F4F': 'Темный синевато-серый', + '008080': 'Сине-зелёный', + '000080': 'Тёмно-синий', + '4B0082': 'Индиго', + '696969': 'Тёмно-серый', + B22222: 'Кирпичный', + A52A2A: 'Коричневый', + DAA520: 'Золотисто-берёзовый', + '006400': 'Темно-зелёный', + '40E0D0': 'Бирюзовый', + '0000CD': 'Умеренно синий', + '800080': 'Пурпурный', + '808080': 'Серый', + F00: 'Красный', + FF8C00: 'Темно-оранжевый', + FFD700: 'Золотистый', + '008000': 'Зелёный', + '0FF': 'Васильковый', + '00F': 'Синий', + EE82EE: 'Фиолетовый', + A9A9A9: 'Тускло-серый', + FFA07A: 'Светло-лососевый', + FFA500: 'Оранжевый', + FFFF00: 'Жёлтый', + '00FF00': 'Лайма', + AFEEEE: 'Бледно-синий', + ADD8E6: 'Свелто-голубой', + DDA0DD: 'Сливовый', + D3D3D3: 'Светло-серый', + FFF0F5: 'Розово-лавандовый', + FAEBD7: 'Античный белый', + FFFFE0: 'Светло-жёлтый', + F0FFF0: 'Медвяной росы', + F0FFFF: 'Лазурный', + F0F8FF: 'Бледно-голубой', + E6E6FA: 'Лавандовый', + FFF: 'Белый' + }, + more: 'Ещё цвета...', + panelTitle: 'Цвета', + textColorTitle: 'Цвет текста' +} ); diff --git a/sources/plugins/colorbutton/lang/si.js b/sources/plugins/colorbutton/lang/si.js new file mode 100644 index 00000000..0ca3fd3e --- /dev/null +++ b/sources/plugins/colorbutton/lang/si.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'si', { + auto: 'Automatic', // MISSING + bgColorTitle: 'පසුබිම් වර්ණය', + colors: { + '000': 'Black', // MISSING + '800000': 'Maroon', // MISSING + '8B4513': 'Saddle Brown', // MISSING + '2F4F4F': 'Dark Slate Gray', // MISSING + '008080': 'Teal', // MISSING + '000080': 'Navy', // MISSING + '4B0082': 'Indigo', // MISSING + '696969': 'Dark Gray', // MISSING + B22222: 'Fire Brick', // MISSING + A52A2A: 'Brown', // MISSING + DAA520: 'Golden Rod', // MISSING + '006400': 'Dark Green', // MISSING + '40E0D0': 'Turquoise', // MISSING + '0000CD': 'Medium Blue', // MISSING + '800080': 'Purple', // MISSING + '808080': 'Gray', // MISSING + F00: 'Red', // MISSING + FF8C00: 'Dark Orange', // MISSING + FFD700: 'Gold', // MISSING + '008000': 'Green', // MISSING + '0FF': 'Cyan', // MISSING + '00F': 'Blue', // MISSING + EE82EE: 'Violet', // MISSING + A9A9A9: 'Dim Gray', // MISSING + FFA07A: 'Light Salmon', // MISSING + FFA500: 'Orange', // MISSING + FFFF00: 'Yellow', // MISSING + '00FF00': 'Lime', // MISSING + AFEEEE: 'Pale Turquoise', // MISSING + ADD8E6: 'Light Blue', // MISSING + DDA0DD: 'Plum', // MISSING + D3D3D3: 'Light Grey', // MISSING + FFF0F5: 'Lavender Blush', // MISSING + FAEBD7: 'Antique White', // MISSING + FFFFE0: 'Light Yellow', // MISSING + F0FFF0: 'Honeydew', // MISSING + F0FFFF: 'Azure', // MISSING + F0F8FF: 'Alice Blue', // MISSING + E6E6FA: 'Lavender', // MISSING + FFF: 'White' // MISSING + }, + more: 'More Colors...', // MISSING + panelTitle: 'වර්ණය', + textColorTitle: 'අක්ෂර වර්ණ' +} ); diff --git a/sources/plugins/colorbutton/lang/sk.js b/sources/plugins/colorbutton/lang/sk.js new file mode 100644 index 00000000..838f78eb --- /dev/null +++ b/sources/plugins/colorbutton/lang/sk.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'sk', { + auto: 'Automaticky', + bgColorTitle: 'Farba pozadia', + colors: { + '000': 'Čierna', + '800000': 'Maroon', + '8B4513': 'Sedlová hnedá', + '2F4F4F': 'Tmavo bridlicovo sivá', + '008080': 'Modrozelená', + '000080': 'Tmavomodrá', + '4B0082': 'Indigo', + '696969': 'Tmavá sivá', + B22222: 'Ohňová tehlová', + A52A2A: 'Hnedá', + DAA520: 'Zlatobyľ', + '006400': 'Tmavá zelená', + '40E0D0': 'Tyrkysová', + '0000CD': 'Stredná modrá', + '800080': 'Purpurová', + '808080': 'Sivá', + F00: 'Červená', + FF8C00: 'Tmavá oranžová', + FFD700: 'Zlatá', + '008000': 'Zelená', + '0FF': 'Azúrová', + '00F': 'Modrá', + EE82EE: 'Fialová', + A9A9A9: 'Tmavá sivá', + FFA07A: 'Svetlo lososová', + FFA500: 'Oranžová', + FFFF00: 'Žltá', + '00FF00': 'Vápenná', + AFEEEE: 'Svetlo tyrkysová', + ADD8E6: 'Svetlo modrá', + DDA0DD: 'Slivková', + D3D3D3: 'Svetlo sivá', + FFF0F5: 'Levanduľovo červená', + FAEBD7: 'Antická biela', + FFFFE0: 'Svetlo žltá', + F0FFF0: 'Medová', + F0FFFF: 'Azúrová', + F0F8FF: 'Alicovo modrá', + E6E6FA: 'Levanduľová', + FFF: 'Biela' + }, + more: 'Viac farieb...', + panelTitle: 'Farby', + textColorTitle: 'Farba textu' +} ); diff --git a/sources/plugins/colorbutton/lang/sl.js b/sources/plugins/colorbutton/lang/sl.js new file mode 100644 index 00000000..03ea6644 --- /dev/null +++ b/sources/plugins/colorbutton/lang/sl.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'sl', { + auto: 'Samodejno', + bgColorTitle: 'Barva ozadja', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'Več barv...', + panelTitle: 'Colors', + textColorTitle: 'Barva besedila' +} ); diff --git a/sources/plugins/colorbutton/lang/sq.js b/sources/plugins/colorbutton/lang/sq.js new file mode 100644 index 00000000..4069e335 --- /dev/null +++ b/sources/plugins/colorbutton/lang/sq.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'sq', { + auto: 'Automatik', + bgColorTitle: 'Ngjyra e Prapavijës', + colors: { + '000': 'E zezë', + '800000': 'Ngjyrë gështenjë', + '8B4513': 'Ngjyrë Shale Kafe', + '2F4F4F': 'Ngjyrë Gri të errët ardëz', + '008080': 'Ngjyrë bajukë', + '000080': 'Ngjyrë Marine', + '4B0082': 'Indigo', + '696969': 'Gri e Errët', + B22222: 'Tullë në Flakë', + A52A2A: 'Ngjytë Kafe', + DAA520: 'Shkop i Artë', + '006400': 'E Gjelbër e Errët', + '40E0D0': 'Ngjyrë e Bruztë', + '0000CD': 'E Kaltër e Mesme', + '800080': 'Vjollcë', + '808080': 'Gri', + F00: 'E Kuqe', + FF8C00: 'E Portokalltë e Errët', + FFD700: 'Ngjyrë Ari', + '008000': 'E Gjelbërt', + '0FF': 'Cyan', + '00F': 'E Kaltër', + EE82EE: 'Vjollcë', + A9A9A9: 'Gri e Zbehtë', + FFA07A: 'Salmon i Ndritur', + FFA500: 'E Portokalltë', + FFFF00: 'E Verdhë', + '00FF00': 'Ngjyrë Gëlqere', + AFEEEE: 'Ngjyrë e Bruztë e Zbehtë', + ADD8E6: 'E Kaltër e Ndritur', + DDA0DD: 'Ngjyrë Llokumi', + D3D3D3: 'Gri e Ndritur', + FFF0F5: 'Ngjyrë Purpur e Skuqur', + FAEBD7: 'E Bardhë Antike', + FFFFE0: 'E verdhë e Ndritur', + F0FFF0: 'Ngjyrë Nektari', + F0FFFF: 'Ngjyrë Qielli', + F0F8FF: 'E Kaltër Alice', + E6E6FA: 'Ngjyrë Purpur e Zbetë', + FFF: 'E bardhë' + }, + more: 'Më Shumë Ngjyra...', + panelTitle: 'Ngjyrat', + textColorTitle: 'Ngjyra e Tekstit' +} ); diff --git a/sources/plugins/colorbutton/lang/sr-latn.js b/sources/plugins/colorbutton/lang/sr-latn.js new file mode 100644 index 00000000..b25c8ef6 --- /dev/null +++ b/sources/plugins/colorbutton/lang/sr-latn.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'sr-latn', { + auto: 'Automatski', + bgColorTitle: 'Boja pozadine', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'Više boja...', + panelTitle: 'Colors', + textColorTitle: 'Boja teksta' +} ); diff --git a/sources/plugins/colorbutton/lang/sr.js b/sources/plugins/colorbutton/lang/sr.js new file mode 100644 index 00000000..30c76dae --- /dev/null +++ b/sources/plugins/colorbutton/lang/sr.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'sr', { + auto: 'Аутоматски', + bgColorTitle: 'Боја позадине', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'Више боја...', + panelTitle: 'Colors', + textColorTitle: 'Боја текста' +} ); diff --git a/sources/plugins/colorbutton/lang/sv.js b/sources/plugins/colorbutton/lang/sv.js new file mode 100644 index 00000000..085ef8e8 --- /dev/null +++ b/sources/plugins/colorbutton/lang/sv.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'sv', { + auto: 'Automatisk', + bgColorTitle: 'Bakgrundsfärg', + colors: { + '000': 'Svart', + '800000': 'Rödbrun', + '8B4513': 'Mörkbrun', + '2F4F4F': 'Skiffergrå', + '008080': 'Kricka', + '000080': 'Marinblå', + '4B0082': 'Indigo', + '696969': 'Mörkgrå', + B22222: 'Tegelsten', + A52A2A: 'Brun', + DAA520: 'Mörk guld', + '006400': 'Mörkgrön', + '40E0D0': 'Turkos', + '0000CD': 'Medium blå', + '800080': 'Lila', + '808080': 'Grå', + F00: 'Röd', + FF8C00: 'Mörkorange', + FFD700: 'Guld', + '008000': 'Grön', + '0FF': 'Turkos', + '00F': 'Blå', + EE82EE: 'Violett', + A9A9A9: 'Matt grå', + FFA07A: 'Laxrosa', + FFA500: 'Orange', + FFFF00: 'Gul', + '00FF00': 'Lime', + AFEEEE: 'Ljusturkos', + ADD8E6: 'Ljusblå', + DDA0DD: 'Plommon', + D3D3D3: 'Ljusgrå', + FFF0F5: 'Ljus lavendel', + FAEBD7: 'Antikvit', + FFFFE0: 'Ljusgul', + F0FFF0: 'Honungsdagg', + F0FFFF: 'Azurblå', + F0F8FF: 'Aliceblå', + E6E6FA: 'Lavendel', + FFF: 'Vit' + }, + more: 'Fler färger...', + panelTitle: 'Färger', + textColorTitle: 'Textfärg' +} ); diff --git a/sources/plugins/colorbutton/lang/th.js b/sources/plugins/colorbutton/lang/th.js new file mode 100644 index 00000000..e3ed14c9 --- /dev/null +++ b/sources/plugins/colorbutton/lang/th.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'th', { + auto: 'สีอัตโนมัติ', + bgColorTitle: 'สีพื้นหลัง', + colors: { + '000': 'Black', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Brown', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Gray', + F00: 'Red', + FF8C00: 'Dark Orange', + FFD700: 'Gold', + '008000': 'Green', + '0FF': 'Cyan', + '00F': 'Blue', + EE82EE: 'Violet', + A9A9A9: 'Dim Gray', + FFA07A: 'Light Salmon', + FFA500: 'Orange', + FFFF00: 'Yellow', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'White' + }, + more: 'เลือกสีอื่นๆ...', + panelTitle: 'Colors', + textColorTitle: 'สีตัวอักษร' +} ); diff --git a/sources/plugins/colorbutton/lang/tr.js b/sources/plugins/colorbutton/lang/tr.js new file mode 100644 index 00000000..7558fd15 --- /dev/null +++ b/sources/plugins/colorbutton/lang/tr.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'tr', { + auto: 'Otomatik', + bgColorTitle: 'Arka Renk', + colors: { + '000': 'Siyah', + '800000': 'Kestane', + '8B4513': 'Koyu Kahverengi', + '2F4F4F': 'Koyu Kurşuni Gri', + '008080': 'Teal', + '000080': 'Mavi', + '4B0082': 'Çivit Mavisi', + '696969': 'Silik Gri', + B22222: 'Ateş Tuğlası', + A52A2A: 'Kahverengi', + DAA520: 'Altun Sırık', + '006400': 'Koyu Yeşil', + '40E0D0': 'Turkuaz', + '0000CD': 'Orta Mavi', + '800080': 'Pembe', + '808080': 'Gri', + F00: 'Kırmızı', + FF8C00: 'Koyu Portakal', + FFD700: 'Altın', + '008000': 'Yeşil', + '0FF': 'Ciyan', + '00F': 'Mavi', + EE82EE: 'Menekşe', + A9A9A9: 'Koyu Gri', + FFA07A: 'Açık Sarımsı', + FFA500: 'Portakal', + FFFF00: 'Sarı', + '00FF00': 'Açık Yeşil', + AFEEEE: 'Sönük Turkuaz', + ADD8E6: 'Açık Mavi', + DDA0DD: 'Mor', + D3D3D3: 'Açık Gri', + FFF0F5: 'Eflatun Pembe', + FAEBD7: 'Antik Beyaz', + FFFFE0: 'Açık Sarı', + F0FFF0: 'Balsarısı', + F0FFFF: 'Gök Mavisi', + F0F8FF: 'Reha Mavi', + E6E6FA: 'Eflatun', + FFF: 'Beyaz' + }, + more: 'Diğer renkler...', + panelTitle: 'Renkler', + textColorTitle: 'Yazı Rengi' +} ); diff --git a/sources/plugins/colorbutton/lang/tt.js b/sources/plugins/colorbutton/lang/tt.js new file mode 100644 index 00000000..e294a07d --- /dev/null +++ b/sources/plugins/colorbutton/lang/tt.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'tt', { + auto: 'Автоматик', + bgColorTitle: 'Фон төсе', + colors: { + '000': 'Кара', + '800000': 'Бордо', + '8B4513': 'Дарчин', + '2F4F4F': 'Аспид соры', + '008080': 'Күкле-яшелле', + '000080': 'Куе күк', + '4B0082': 'Индиго', + '696969': 'Куе соры', + B22222: 'Кармин', + A52A2A: 'Чия кызыл', + DAA520: 'Алтын каен', + '006400': 'Үлән', + '40E0D0': 'Фирәзә', + '0000CD': 'Фарсы күк', + '800080': 'Шәмәхә', + '808080': 'Соры', + F00: 'Кызыл', + FF8C00: 'Кабак', + FFD700: 'Алтын', + '008000': 'Яшел', + '0FF': 'Ачык зәңгәр', + '00F': 'Зәңгәр', + EE82EE: 'Миләүшә', + A9A9A9: 'Ачык соры', + FFA07A: 'Кызгылт сары алсу', + FFA500: 'Кызгылт сары', + FFFF00: 'Сары', + '00FF00': 'Лайм', + AFEEEE: 'Тонык күк', + ADD8E6: 'Тонык күкбаш', + DDA0DD: 'Аксыл шәмәхә', + D3D3D3: 'Ачык соры', + FFF0F5: 'Ал ала миләүшә', + FAEBD7: 'Җитен', + FFFFE0: 'Ачык сары', + F0FFF0: 'Аксыл көрән', + F0FFFF: 'Ап-ак', + F0F8FF: 'Аксыл зәңгәр диңгез', + E6E6FA: 'Ала миләүшә', + FFF: 'Ак' + }, + more: 'Башка төсләр...', + panelTitle: 'Төсләр', + textColorTitle: 'Текст төсе' +} ); diff --git a/sources/plugins/colorbutton/lang/ug.js b/sources/plugins/colorbutton/lang/ug.js new file mode 100644 index 00000000..4bfdee5f --- /dev/null +++ b/sources/plugins/colorbutton/lang/ug.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'ug', { + auto: 'ئۆزلۈكىدىن', + bgColorTitle: 'تەگلىك رەڭگى', + colors: { + '000': 'قارا', + '800000': 'قىزغۇچ سېرىق', + '8B4513': 'توق قوڭۇر', + '2F4F4F': 'قارامتۇل يېشىل', + '008080': 'كۆكۈش يېشىل', + '000080': 'قارامتۇل كۆك', + '4B0082': 'كۆكۈش كۈلرەڭ', + '696969': 'قارامتۇل كۈلرەڭ', + B22222: 'خىش قىزىل', + A52A2A: 'قوڭۇر', + DAA520: 'ئالتۇن سېرىق', + '006400': 'توق يېشىل', + '40E0D0': 'كۆكۈچ يېشىل', + '0000CD': 'ئوتتۇراھال كۆك', + '800080': 'بىنەپشە', + '808080': 'كۈلرەڭ', + F00: 'قىزىل', + FF8C00: 'توق قىزغۇچ سېرىق', + FFD700: 'ئالتۇن', + '008000': 'يېشىل', + '0FF': 'يېشىل كۆك', + '00F': 'كۆك', + EE82EE: 'قىزغۇچ بىنەپشە', + A9A9A9: 'توق كۈلرەڭ', + FFA07A: 'كاۋا چېچىكى سېرىق', + FFA500: 'قىزغۇچ سېرىق', + FFFF00: 'سېرىق', + '00FF00': 'Lime', + AFEEEE: 'سۇس ھاۋا رەڭ', + ADD8E6: 'ئوچۇق كۆك', + DDA0DD: 'قىزغۇچ بىنەپشە', + D3D3D3: 'سۇس كۆكۈچ كۈلرەڭ', + FFF0F5: 'سۇس قىزغۇچ بىنەپشە', + FAEBD7: 'Antique White', + FFFFE0: 'سۇس سېرىق', + F0FFF0: 'Honeydew', + F0FFFF: 'ئاسمان كۆكى', + F0F8FF: 'سۇس كۆك', + E6E6FA: 'سۇس بىنەپشە', + FFF: 'ئاق' + }, + more: 'باشقا رەڭ', + panelTitle: 'رەڭ', + textColorTitle: 'تېكىست رەڭگى' +} ); diff --git a/sources/plugins/colorbutton/lang/uk.js b/sources/plugins/colorbutton/lang/uk.js new file mode 100644 index 00000000..0b51083e --- /dev/null +++ b/sources/plugins/colorbutton/lang/uk.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'uk', { + auto: 'Авто', + bgColorTitle: 'Колір фону', + colors: { + '000': 'Чорний', + '800000': 'Бордовий', + '8B4513': 'Коричневий', + '2F4F4F': 'Темний сіро-зелений', + '008080': 'Морської хвилі', + '000080': 'Сливовий', + '4B0082': 'Індиго', + '696969': 'Темносірий', + B22222: 'Темночервоний', + A52A2A: 'Каштановий', + DAA520: 'Бежевий', + '006400': 'Темнозелений', + '40E0D0': 'Бірюзовий', + '0000CD': 'Темносиній', + '800080': 'Пурпурний', + '808080': 'Сірий', + F00: 'Червоний', + FF8C00: 'Темнооранжевий', + FFD700: 'Жовтий', + '008000': 'Зелений', + '0FF': 'Синьо-зелений', + '00F': 'Синій', + EE82EE: 'Фіолетовий', + A9A9A9: 'Світлосірий', + FFA07A: 'Рожевий', + FFA500: 'Оранжевий', + FFFF00: 'Яскравожовтий', + '00FF00': 'Салатовий', + AFEEEE: 'Світлобірюзовий', + ADD8E6: 'Блакитний', + DDA0DD: 'Світлофіолетовий', + D3D3D3: 'Сріблястий', + FFF0F5: 'Світлорожевий', + FAEBD7: 'Світлооранжевий', + FFFFE0: 'Світложовтий', + F0FFF0: 'Світлозелений', + F0FFFF: 'Світлий синьо-зелений', + F0F8FF: 'Світлоблакитний', + E6E6FA: 'Лавандовий', + FFF: 'Білий' + }, + more: 'Кольори...', + panelTitle: 'Кольори', + textColorTitle: 'Колір тексту' +} ); diff --git a/sources/plugins/colorbutton/lang/vi.js b/sources/plugins/colorbutton/lang/vi.js new file mode 100644 index 00000000..1f9e3e04 --- /dev/null +++ b/sources/plugins/colorbutton/lang/vi.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'vi', { + auto: 'Tự động', + bgColorTitle: 'Màu nền', + colors: { + '000': 'Đen', + '800000': 'Maroon', + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', + '008080': 'Teal', + '000080': 'Navy', + '4B0082': 'Indigo', + '696969': 'Dark Gray', + B22222: 'Fire Brick', + A52A2A: 'Nâu', + DAA520: 'Golden Rod', + '006400': 'Dark Green', + '40E0D0': 'Turquoise', + '0000CD': 'Medium Blue', + '800080': 'Purple', + '808080': 'Xám', + F00: 'Đỏ', + FF8C00: 'Dark Orange', + FFD700: 'Vàng', + '008000': 'Xanh lá cây', + '0FF': 'Cyan', + '00F': 'Xanh da trời', + EE82EE: 'Tím', + A9A9A9: 'Xám tối', + FFA07A: 'Light Salmon', + FFA500: 'Màu cam', + FFFF00: 'Vàng', + '00FF00': 'Lime', + AFEEEE: 'Pale Turquoise', + ADD8E6: 'Light Blue', + DDA0DD: 'Plum', + D3D3D3: 'Light Grey', + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', + FFFFE0: 'Light Yellow', + F0FFF0: 'Honeydew', + F0FFFF: 'Azure', + F0F8FF: 'Alice Blue', + E6E6FA: 'Lavender', + FFF: 'Trắng' + }, + more: 'Màu khác...', + panelTitle: 'Màu sắc', + textColorTitle: 'Màu chữ' +} ); diff --git a/sources/plugins/colorbutton/lang/zh-cn.js b/sources/plugins/colorbutton/lang/zh-cn.js new file mode 100644 index 00000000..a139da6e --- /dev/null +++ b/sources/plugins/colorbutton/lang/zh-cn.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'zh-cn', { + auto: '自动', + bgColorTitle: '背景颜色', + colors: { + '000': '黑', + '800000': '褐红', + '8B4513': '深褐', + '2F4F4F': '墨绿', + '008080': '绿松石', + '000080': '海军蓝', + '4B0082': '靛蓝', + '696969': '暗灰', + B22222: '砖红', + A52A2A: '褐', + DAA520: '金黄', + '006400': '深绿', + '40E0D0': '蓝绿', + '0000CD': '中蓝', + '800080': '紫', + '808080': '灰', + F00: '红', + FF8C00: '深橙', + FFD700: '金', + '008000': '绿', + '0FF': '青', + '00F': '蓝', + EE82EE: '紫罗兰', + A9A9A9: '深灰', + FFA07A: '亮橙', + FFA500: '橙', + FFFF00: '黄', + '00FF00': '水绿', + AFEEEE: '粉蓝', + ADD8E6: '亮蓝', + DDA0DD: '梅红', + D3D3D3: '淡灰', + FFF0F5: '淡紫红', + FAEBD7: '古董白', + FFFFE0: '淡黄', + F0FFF0: '蜜白', + F0FFFF: '天蓝', + F0F8FF: '淡蓝', + E6E6FA: '淡紫', + FFF: '白' + }, + more: '其它颜色...', + panelTitle: '颜色', + textColorTitle: '文本颜色' +} ); diff --git a/sources/plugins/colorbutton/lang/zh.js b/sources/plugins/colorbutton/lang/zh.js new file mode 100644 index 00000000..68d15952 --- /dev/null +++ b/sources/plugins/colorbutton/lang/zh.js @@ -0,0 +1,53 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'zh', { + auto: '自動', + bgColorTitle: '背景顏色', + colors: { + '000': '黑色', + '800000': '栗色', + '8B4513': '鞍褐色', + '2F4F4F': '暗瓦灰色', + '008080': '水壓色', + '000080': '丈青澀', + '4B0082': '靛青', + '696969': '深灰色', + B22222: '磚紅色', + A52A2A: '褐色', + DAA520: '金黃色', + '006400': '深綠色', + '40E0D0': '青綠色', + '0000CD': '藍色', + '800080': '紫色', + '808080': '灰色', + F00: '紅色', + FF8C00: '深橘色', + FFD700: '金色', + '008000': '綠色', + '0FF': '藍綠色', + '00F': '藍色', + EE82EE: '紫色', + A9A9A9: '暗灰色', + FFA07A: '亮鮭紅', + FFA500: '橘色', + FFFF00: '黃色', + '00FF00': '鮮綠色', + AFEEEE: '綠松色', + ADD8E6: '淺藍色', + DDA0DD: '枚紅色', + D3D3D3: '淺灰色', + FFF0F5: '淺紫色', + FAEBD7: '骨董白', + FFFFE0: '淺黃色', + F0FFF0: '蜜瓜綠', + F0FFFF: '天藍色', + F0F8FF: '愛麗斯蘭', + E6E6FA: '淺紫色', + FFF: '白色' + }, + more: '更多顏色', + panelTitle: '顏色', + textColorTitle: '文字顏色' +} ); diff --git a/sources/plugins/colorbutton/plugin.js b/sources/plugins/colorbutton/plugin.js new file mode 100644 index 00000000..131e2cb0 --- /dev/null +++ b/sources/plugins/colorbutton/plugin.js @@ -0,0 +1,301 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview The "colorbutton" plugin that makes it possible to assign + * text and background colors to editor contents. + * + */ +CKEDITOR.plugins.add( 'colorbutton', { + requires: 'panelbutton,floatpanel', + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'bgcolor,textcolor', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + var config = editor.config, + lang = editor.lang.colorbutton; + + if ( !CKEDITOR.env.hc ) { + addButton( 'TextColor', 'fore', lang.textColorTitle, 10 ); + addButton( 'BGColor', 'back', lang.bgColorTitle, 20 ); + } + + function addButton( name, type, title, order ) { + var style = new CKEDITOR.style( config[ 'colorButton_' + type + 'Style' ] ), + colorBoxId = CKEDITOR.tools.getNextId() + '_colorBox'; + + editor.ui.add( name, CKEDITOR.UI_PANELBUTTON, { + label: title, + title: title, + modes: { wysiwyg: 1 }, + editorFocus: 0, + toolbar: 'colors,' + order, + allowedContent: style, + requiredContent: style, + + panel: { + css: CKEDITOR.skin.getPath( 'editor' ), + attributes: { role: 'listbox', 'aria-label': lang.panelTitle } + }, + + onBlock: function( panel, block ) { + block.autoSize = true; + block.element.addClass( 'cke_colorblock' ); + block.element.setHtml( renderColors( panel, type, colorBoxId ) ); + // The block should not have scrollbars (#5933, #6056) + block.element.getDocument().getBody().setStyle( 'overflow', 'hidden' ); + + CKEDITOR.ui.fire( 'ready', this ); + + var keys = block.keys; + var rtl = editor.lang.dir == 'rtl'; + keys[ rtl ? 37 : 39 ] = 'next'; // ARROW-RIGHT + keys[ 40 ] = 'next'; // ARROW-DOWN + keys[ 9 ] = 'next'; // TAB + keys[ rtl ? 39 : 37 ] = 'prev'; // ARROW-LEFT + keys[ 38 ] = 'prev'; // ARROW-UP + keys[ CKEDITOR.SHIFT + 9 ] = 'prev'; // SHIFT + TAB + keys[ 32 ] = 'click'; // SPACE + }, + + refresh: function() { + if ( !editor.activeFilter.check( style ) ) + this.setState( CKEDITOR.TRISTATE_DISABLED ); + }, + + // The automatic colorbox should represent the real color (#6010) + onOpen: function() { + + var selection = editor.getSelection(), + block = selection && selection.getStartElement(), + path = editor.elementPath( block ), + color; + + if ( !path ) + return; + + // Find the closest block element. + block = path.block || path.blockLimit || editor.document.getBody(); + + // The background color might be transparent. In that case, look up the color in the DOM tree. + do { + color = block && block.getComputedStyle( type == 'back' ? 'background-color' : 'color' ) || 'transparent'; + } + while ( type == 'back' && color == 'transparent' && block && ( block = block.getParent() ) ); + + // The box should never be transparent. + if ( !color || color == 'transparent' ) + color = '#ffffff'; + + this._.panel._.iframe.getFrameDocument().getById( colorBoxId ).setStyle( 'background-color', color ); + + return color; + } + } ); + } + + function renderColors( panel, type, colorBoxId ) { + var output = [], + colors = config.colorButton_colors.split( ',' ), + // Tells if we should include "More Colors..." button. + moreColorsEnabled = editor.plugins.colordialog && config.colorButton_enableMore !== false, + // aria-setsize and aria-posinset attributes are used to indicate size of options, because + // screen readers doesn't play nice with table, based layouts (#12097). + total = colors.length + ( moreColorsEnabled ? 2 : 1 ); + + var clickFn = CKEDITOR.tools.addFunction( function( color, type ) { + var applyColorStyle = arguments.callee; + function onColorDialogClose( evt ) { + this.removeListener( 'ok', onColorDialogClose ); + this.removeListener( 'cancel', onColorDialogClose ); + + evt.name == 'ok' && applyColorStyle( this.getContentElement( 'picker', 'selectedColor' ).getValue(), type ); + } + + if ( color == '?' ) { + editor.openDialog( 'colordialog', function() { + this.on( 'ok', onColorDialogClose ); + this.on( 'cancel', onColorDialogClose ); + } ); + + return; + } + + editor.focus(); + + panel.hide(); + + editor.fire( 'saveSnapshot' ); + + // Clean up any conflicting style within the range. + editor.removeStyle( new CKEDITOR.style( config[ 'colorButton_' + type + 'Style' ], { color: 'inherit' } ) ); + + if ( color ) { + var colorStyle = config[ 'colorButton_' + type + 'Style' ]; + + colorStyle.childRule = type == 'back' ? + function( element ) { + // It's better to apply background color as the innermost style. (#3599) + // Except for "unstylable elements". (#6103) + return isUnstylable( element ); + } : function( element ) { + // Fore color style must be applied inside links instead of around it. (#4772,#6908) + return !( element.is( 'a' ) || element.getElementsByTag( 'a' ).count() ) || isUnstylable( element ); + }; + + editor.applyStyle( new CKEDITOR.style( colorStyle, { color: color } ) ); + } + + editor.fire( 'saveSnapshot' ); + } ); + + // Render the "Automatic" button. + output.push( '' + + '' + + '' + + '' + + '' + + '' + + '
' + + '' + + '', lang.auto, '
' + + '
' + + '' ); + + // Render the color boxes. + for ( var i = 0; i < colors.length; i++ ) { + if ( ( i % 8 ) === 0 ) + output.push( '' ); + + var parts = colors[ i ].split( '/' ), + colorName = parts[ 0 ], + colorCode = parts[ 1 ] || colorName; + + // The data can be only a color code (without #) or colorName + color code + // If only a color code is provided, then the colorName is the color with the hash + // Convert the color from RGB to RRGGBB for better compatibility with IE and . See #5676 + if ( !parts[ 1 ] ) + colorName = '#' + colorName.replace( /^(.)(.)(.)$/, '$1$1$2$2$3$3' ); + + var colorLabel = editor.lang.colorbutton.colors[ colorCode ] || colorCode; + output.push( '' ); + } + + // Render the "More Colors" button. + if ( moreColorsEnabled ) { + output.push( '' + + '' + + '' ); // tr is later in the code. + } + + output.push( '
' + + '' + + '' + + '' + + '
' + + '', lang.more, '' + + '
' ); + + return output.join( '' ); + } + + function isUnstylable( ele ) { + return ( ele.getAttribute( 'contentEditable' ) == 'false' ) || ele.getAttribute( 'data-nostyle' ); + } + } +} ); + +/** + * Whether to enable the **More Colors*** button in the color selectors. + * + * Read more in the [documentation](#!/guide/dev_colorbutton) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/colorbutton.html). + * + * config.colorButton_enableMore = false; + * + * @cfg {Boolean} [colorButton_enableMore=true] + * @member CKEDITOR.config + */ + +/** + * Defines the colors to be displayed in the color selectors. This is a string + * containing hexadecimal notation for HTML colors, without the `'#'` prefix. + * + * **Since 3.3:** A color name may optionally be defined by prefixing the entries with + * a name and the slash character. For example, `'FontColor1/FF9900'` will be + * displayed as the color `#FF9900` in the selector, but will be output as `'FontColor1'`. + * + * Read more in the [documentation](#!/guide/dev_colorbutton) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/colorbutton.html). + * + * // Brazil colors only. + * config.colorButton_colors = '00923E,F8C100,28166F'; + * + * config.colorButton_colors = 'FontColor1/FF9900,FontColor2/0066CC,FontColor3/F00'; + * + * @cfg {String} [colorButton_colors=see source] + * @member CKEDITOR.config + */ +CKEDITOR.config.colorButton_colors = '000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,' + + 'B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,' + + 'F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,' + + 'FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,' + + 'FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF'; + +/** + * Stores the style definition that applies the text foreground color. + * + * Read more in the [documentation](#!/guide/dev_colorbutton) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/colorbutton.html). + * + * // This is actually the default value. + * config.colorButton_foreStyle = { + * element: 'span', + * styles: { color: '#(color)' } + * }; + * + * @cfg [colorButton_foreStyle=see source] + * @member CKEDITOR.config + */ +CKEDITOR.config.colorButton_foreStyle = { + element: 'span', + styles: { 'color': '#(color)' }, + overrides: [ { + element: 'font', attributes: { 'color': null } + } ] +}; + +/** + * Stores the style definition that applies the text background color. + * + * Read more in the [documentation](#!/guide/dev_colorbutton) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/colorbutton.html). + * + * // This is actually the default value. + * config.colorButton_backStyle = { + * element: 'span', + * styles: { 'background-color': '#(color)' } + * }; + * + * @cfg [colorButton_backStyle=see source] + * @member CKEDITOR.config + */ +CKEDITOR.config.colorButton_backStyle = { + element: 'span', + styles: { 'background-color': '#(color)' } +}; diff --git a/sources/plugins/colordialog/dialogs/colordialog.js b/sources/plugins/colordialog/dialogs/colordialog.js new file mode 100644 index 00000000..f5ecd483 --- /dev/null +++ b/sources/plugins/colordialog/dialogs/colordialog.js @@ -0,0 +1,327 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.dialog.add( 'colordialog', function( editor ) { + // Define some shorthands. + var $el = CKEDITOR.dom.element, + $doc = CKEDITOR.document, + lang = editor.lang.colordialog; + + // Reference the dialog. + var dialog; + + var spacer = { + type: 'html', + html: ' ' + }; + + var selected; + + function clearSelected() { + $doc.getById( selHiColorId ).removeStyle( 'background-color' ); + dialog.getContentElement( 'picker', 'selectedColor' ).setValue( '' ); + selected && selected.removeAttribute( 'aria-selected' ); + selected = null; + } + + function updateSelected( evt ) { + var target = evt.data.getTarget(), + color; + + if ( target.getName() == 'td' && ( color = target.getChild( 0 ).getHtml() ) ) { + selected = target; + selected.setAttribute( 'aria-selected', true ); + dialog.getContentElement( 'picker', 'selectedColor' ).setValue( color ); + } + } + + // Basing black-white decision off of luma scheme using the Rec. 709 version + function whiteOrBlack( color ) { + color = color.replace( /^#/, '' ); + for ( var i = 0, rgb = []; i <= 2; i++ ) + rgb[ i ] = parseInt( color.substr( i * 2, 2 ), 16 ); + var luma = ( 0.2126 * rgb[ 0 ] ) + ( 0.7152 * rgb[ 1 ] ) + ( 0.0722 * rgb[ 2 ] ); + return '#' + ( luma >= 165 ? '000' : 'fff' ); + } + + // Distinguish focused and hover states. + var focused, hovered; + + // Apply highlight style. + function updateHighlight( event ) { + // Convert to event. + !event.name && ( event = new CKEDITOR.event( event ) ); + + var isFocus = !( /mouse/ ).test( event.name ), + target = event.data.getTarget(), + color; + + if ( target.getName() == 'td' && ( color = target.getChild( 0 ).getHtml() ) ) { + removeHighlight( event ); + + isFocus ? focused = target : hovered = target; + + // Apply outline style to show focus. + if ( isFocus ) { + target.setStyle( 'border-color', whiteOrBlack( color ) ); + target.setStyle( 'border-style', 'dotted' ); + } + + $doc.getById( hicolorId ).setStyle( 'background-color', color ); + $doc.getById( hicolorTextId ).setHtml( color ); + } + } + + function clearHighlight() { + var color = focused.getChild( 0 ).getHtml(); + focused.setStyle( 'border-color', color ); + focused.setStyle( 'border-style', 'solid' ); + $doc.getById( hicolorId ).removeStyle( 'background-color' ); + $doc.getById( hicolorTextId ).setHtml( ' ' ); + focused = null; + } + + // Remove previously focused style. + function removeHighlight( event ) { + var isFocus = !( /mouse/ ).test( event.name ), + target = isFocus && focused; + + if ( target ) { + var color = target.getChild( 0 ).getHtml(); + target.setStyle( 'border-color', color ); + target.setStyle( 'border-style', 'solid' ); + } + + if ( !( focused || hovered ) ) { + $doc.getById( hicolorId ).removeStyle( 'background-color' ); + $doc.getById( hicolorTextId ).setHtml( ' ' ); + } + } + + function onKeyStrokes( evt ) { + var domEvt = evt.data; + + var element = domEvt.getTarget(); + var relative, nodeToMove; + var keystroke = domEvt.getKeystroke(), + rtl = editor.lang.dir == 'rtl'; + + switch ( keystroke ) { + // UP-ARROW + case 38: + // relative is TR + if ( ( relative = element.getParent().getPrevious() ) ) { + nodeToMove = relative.getChild( [ element.getIndex() ] ); + nodeToMove.focus(); + } + domEvt.preventDefault(); + break; + // DOWN-ARROW + case 40: + // relative is TR + if ( ( relative = element.getParent().getNext() ) ) { + nodeToMove = relative.getChild( [ element.getIndex() ] ); + if ( nodeToMove && nodeToMove.type == 1 ) + nodeToMove.focus(); + + } + domEvt.preventDefault(); + break; + + // SPACE + // ENTER + case 32: + case 13: + updateSelected( evt ); + domEvt.preventDefault(); + break; + + // RIGHT-ARROW + case rtl ? 37 : 39: + // relative is TD + if ( ( nodeToMove = element.getNext() ) ) { + if ( nodeToMove.type == 1 ) { + nodeToMove.focus(); + domEvt.preventDefault( true ); + } + } + // relative is TR + else if ( ( relative = element.getParent().getNext() ) ) { + nodeToMove = relative.getChild( [ 0 ] ); + if ( nodeToMove && nodeToMove.type == 1 ) { + nodeToMove.focus(); + domEvt.preventDefault( true ); + } + } + break; + + // LEFT-ARROW + case rtl ? 39 : 37: + // relative is TD + if ( ( nodeToMove = element.getPrevious() ) ) { + nodeToMove.focus(); + domEvt.preventDefault( true ); + } + // relative is TR + else if ( ( relative = element.getParent().getPrevious() ) ) { + nodeToMove = relative.getLast(); + nodeToMove.focus(); + domEvt.preventDefault( true ); + } + break; + default: + // Do not stop not handled events. + return; + } + } + + function createColorTable() { + table = CKEDITOR.dom.element.createFromHtml( '' + + '' + + '
' + lang.options + '
' ); + + table.on( 'mouseover', updateHighlight ); + table.on( 'mouseout', removeHighlight ); + + // Create the base colors array. + var aColors = [ '00', '33', '66', '99', 'cc', 'ff' ]; + + // This function combines two ranges of three values from the color array into a row. + function appendColorRow( rangeA, rangeB ) { + for ( var i = rangeA; i < rangeA + 3; i++ ) { + var row = new $el( table.$.insertRow( -1 ) ); + row.setAttribute( 'role', 'row' ); + + for ( var j = rangeB; j < rangeB + 3; j++ ) { + for ( var n = 0; n < 6; n++ ) { + appendColorCell( row.$, '#' + aColors[ j ] + aColors[ n ] + aColors[ i ] ); + } + } + } + } + + // This function create a single color cell in the color table. + function appendColorCell( targetRow, color ) { + var cell = new $el( targetRow.insertCell( -1 ) ); + cell.setAttribute( 'class', 'ColorCell' ); + cell.setAttribute( 'tabIndex', -1 ); + cell.setAttribute( 'role', 'gridcell' ); + + cell.on( 'keydown', onKeyStrokes ); + cell.on( 'click', updateSelected ); + cell.on( 'focus', updateHighlight ); + cell.on( 'blur', removeHighlight ); + + cell.setStyle( 'background-color', color ); + cell.setStyle( 'border', '1px solid ' + color ); + + cell.setStyle( 'width', '14px' ); + cell.setStyle( 'height', '14px' ); + + var colorLabel = numbering( 'color_table_cell' ); + cell.setAttribute( 'aria-labelledby', colorLabel ); + cell.append( CKEDITOR.dom.element.createFromHtml( '' + color + '', CKEDITOR.document ) ); + } + + appendColorRow( 0, 0 ); + appendColorRow( 3, 0 ); + appendColorRow( 0, 3 ); + appendColorRow( 3, 3 ); + + // Create the last row. + var oRow = new $el( table.$.insertRow( -1 ) ); + oRow.setAttribute( 'role', 'row' ); + + // Create the gray scale colors cells. + appendColorCell( oRow.$, '#000000' ); + for ( var n = 0; n < 16; n++ ) { + var c = n.toString( 16 ); + appendColorCell( oRow.$, '#' + c + c + c + c + c + c ); + } + appendColorCell( oRow.$, '#ffffff' ); + } + + var numbering = function( id ) { + return CKEDITOR.tools.getNextId() + '_' + id; + }, + hicolorId = numbering( 'hicolor' ), + hicolorTextId = numbering( 'hicolortext' ), + selHiColorId = numbering( 'selhicolor' ), + table; + + createColorTable(); + + return { + title: lang.title, + minWidth: 360, + minHeight: 220, + onLoad: function() { + // Update reference. + dialog = this; + }, + onHide: function() { + clearSelected(); + clearHighlight(); + }, + contents: [ { + id: 'picker', + label: lang.title, + accessKey: 'I', + elements: [ { + type: 'hbox', + padding: 0, + widths: [ '70%', '10%', '30%' ], + children: [ { + type: 'html', + html: '

', + onLoad: function() { + CKEDITOR.document.getById( this.domId ).append( table ); + }, + focus: function() { + // Restore the previously focused cell, + // otherwise put the initial focus on the first table cell. + ( focused || this.getElement().getElementsByTag( 'td' ).getItem( 0 ) ).focus(); + } + }, + spacer, + { + type: 'vbox', + padding: 0, + widths: [ '70%', '5%', '25%' ], + children: [ { + type: 'html', + html: '' + lang.highlight + '' + + '
' + + '
 
' + lang.selected + '' + + '
' + }, + { + type: 'text', + label: lang.selected, + labelStyle: 'display:none', + id: 'selectedColor', + style: 'width: 76px;margin-top:4px', + onChange: function() { + // Try to update color preview with new value. If fails, then set it no none. + try { + $doc.getById( selHiColorId ).setStyle( 'background-color', this.getValue() ); + } catch ( e ) { + clearSelected(); + } + } + }, + spacer, + { + type: 'button', + id: 'clear', + label: lang.clear, + onClick: clearSelected + } ] + } ] + } ] + } ] + }; +} ); diff --git a/sources/plugins/colordialog/lang/af.js b/sources/plugins/colordialog/lang/af.js new file mode 100644 index 00000000..de005de4 --- /dev/null +++ b/sources/plugins/colordialog/lang/af.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'af', { + clear: 'Herstel', + highlight: 'Aktief', + options: 'Kleuropsies', + selected: 'Geselekteer', + title: 'Kies kleur' +} ); diff --git a/sources/plugins/colordialog/lang/ar.js b/sources/plugins/colordialog/lang/ar.js new file mode 100644 index 00000000..804d1535 --- /dev/null +++ b/sources/plugins/colordialog/lang/ar.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ar', { + clear: 'مسح', + highlight: 'تحديد', + options: 'اختيارات الألوان', + selected: 'اللون المختار', + title: 'اختر اللون' +} ); diff --git a/sources/plugins/colordialog/lang/bg.js b/sources/plugins/colordialog/lang/bg.js new file mode 100644 index 00000000..46cd0b44 --- /dev/null +++ b/sources/plugins/colordialog/lang/bg.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'bg', { + clear: 'Изчистване', + highlight: 'Осветяване', + options: 'Цветови опции', + selected: 'Изберете цвят', + title: 'Изберете цвят' +} ); diff --git a/sources/plugins/colordialog/lang/bn.js b/sources/plugins/colordialog/lang/bn.js new file mode 100644 index 00000000..ff8b58ac --- /dev/null +++ b/sources/plugins/colordialog/lang/bn.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'bn', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/bs.js b/sources/plugins/colordialog/lang/bs.js new file mode 100644 index 00000000..3d8145d7 --- /dev/null +++ b/sources/plugins/colordialog/lang/bs.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'bs', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/ca.js b/sources/plugins/colordialog/lang/ca.js new file mode 100644 index 00000000..351bde1d --- /dev/null +++ b/sources/plugins/colordialog/lang/ca.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ca', { + clear: 'Neteja', + highlight: 'Destacat', + options: 'Opcions del color', + selected: 'Color Seleccionat', + title: 'Seleccioni el color' +} ); diff --git a/sources/plugins/colordialog/lang/cs.js b/sources/plugins/colordialog/lang/cs.js new file mode 100644 index 00000000..49cb9efe --- /dev/null +++ b/sources/plugins/colordialog/lang/cs.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'cs', { + clear: 'Vyčistit', + highlight: 'Zvýraznit', + options: 'Nastavení barvy', + selected: 'Vybráno', + title: 'Výběr barvy' +} ); diff --git a/sources/plugins/colordialog/lang/cy.js b/sources/plugins/colordialog/lang/cy.js new file mode 100644 index 00000000..3ee93ba4 --- /dev/null +++ b/sources/plugins/colordialog/lang/cy.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'cy', { + clear: 'Clirio', + highlight: 'Uwcholeuo', + options: 'Opsiynau Lliw', + selected: 'Lliw a Ddewiswyd', + title: 'Dewis lliw' +} ); diff --git a/sources/plugins/colordialog/lang/da.js b/sources/plugins/colordialog/lang/da.js new file mode 100644 index 00000000..b4fd39de --- /dev/null +++ b/sources/plugins/colordialog/lang/da.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'da', { + clear: 'Nulstil', + highlight: 'Markér', + options: 'Farvemuligheder', + selected: 'Valgt farve', + title: 'Vælg farve' +} ); diff --git a/sources/plugins/colordialog/lang/de.js b/sources/plugins/colordialog/lang/de.js new file mode 100644 index 00000000..f45d8e1c --- /dev/null +++ b/sources/plugins/colordialog/lang/de.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'de', { + clear: 'Entfernen', + highlight: 'Hervorheben', + options: 'Farboptionen', + selected: 'Ausgewählte Farbe', + title: 'Farbe auswählen' +} ); diff --git a/sources/plugins/colordialog/lang/el.js b/sources/plugins/colordialog/lang/el.js new file mode 100644 index 00000000..6b4b4fcb --- /dev/null +++ b/sources/plugins/colordialog/lang/el.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'el', { + clear: 'Εκκαθάριση', + highlight: 'Σήμανση', + options: 'Επιλογές Χρωμάτων', + selected: 'Επιλεγμένο Χρώμα', + title: 'Επιλογή χρώματος' +} ); diff --git a/sources/plugins/colordialog/lang/en-au.js b/sources/plugins/colordialog/lang/en-au.js new file mode 100644 index 00000000..73a1e8c3 --- /dev/null +++ b/sources/plugins/colordialog/lang/en-au.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'en-au', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/en-ca.js b/sources/plugins/colordialog/lang/en-ca.js new file mode 100644 index 00000000..1f0d3225 --- /dev/null +++ b/sources/plugins/colordialog/lang/en-ca.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'en-ca', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/en-gb.js b/sources/plugins/colordialog/lang/en-gb.js new file mode 100644 index 00000000..06fea7a0 --- /dev/null +++ b/sources/plugins/colordialog/lang/en-gb.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'en-gb', { + clear: 'Clear', + highlight: 'Highlight', + options: 'Colour Options', + selected: 'Selected Colour', + title: 'Select colour' +} ); diff --git a/sources/plugins/colordialog/lang/en.js b/sources/plugins/colordialog/lang/en.js new file mode 100644 index 00000000..13ff82a3 --- /dev/null +++ b/sources/plugins/colordialog/lang/en.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'en', { + clear: 'Clear', + highlight: 'Highlight', + options: 'Color Options', + selected: 'Selected Color', + title: 'Select color' +} ); diff --git a/sources/plugins/colordialog/lang/eo.js b/sources/plugins/colordialog/lang/eo.js new file mode 100644 index 00000000..13b1f90a --- /dev/null +++ b/sources/plugins/colordialog/lang/eo.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'eo', { + clear: 'Forigi', + highlight: 'Detaloj', + options: 'Opcioj pri koloroj', + selected: 'Selektita koloro', + title: 'Selekti koloron' +} ); diff --git a/sources/plugins/colordialog/lang/es.js b/sources/plugins/colordialog/lang/es.js new file mode 100644 index 00000000..405cbeda --- /dev/null +++ b/sources/plugins/colordialog/lang/es.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'es', { + clear: 'Borrar', + highlight: 'Muestra', + options: 'Opciones de colores', + selected: 'Elegido', + title: 'Elegir color' +} ); diff --git a/sources/plugins/colordialog/lang/et.js b/sources/plugins/colordialog/lang/et.js new file mode 100644 index 00000000..2437052f --- /dev/null +++ b/sources/plugins/colordialog/lang/et.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'et', { + clear: 'Eemalda', + highlight: 'Näidis', + options: 'Värvi valikud', + selected: 'Valitud värv', + title: 'Värvi valimine' +} ); diff --git a/sources/plugins/colordialog/lang/eu.js b/sources/plugins/colordialog/lang/eu.js new file mode 100644 index 00000000..beecdf08 --- /dev/null +++ b/sources/plugins/colordialog/lang/eu.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'eu', { + clear: 'Garbitu', + highlight: 'Nabarmendu', + options: 'Kolore aukerak', + selected: 'Hautatutako kolorea', + title: 'Hautatu kolorea' +} ); diff --git a/sources/plugins/colordialog/lang/fa.js b/sources/plugins/colordialog/lang/fa.js new file mode 100644 index 00000000..9cdb113f --- /dev/null +++ b/sources/plugins/colordialog/lang/fa.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'fa', { + clear: 'پاک کردن', + highlight: 'متمایز', + options: 'گزینه​های رنگ', + selected: 'رنگ انتخاب شده', + title: 'انتخاب رنگ' +} ); diff --git a/sources/plugins/colordialog/lang/fi.js b/sources/plugins/colordialog/lang/fi.js new file mode 100644 index 00000000..e6292467 --- /dev/null +++ b/sources/plugins/colordialog/lang/fi.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'fi', { + clear: 'Poista', + highlight: 'Korostus', + options: 'Värin ominaisuudet', + selected: 'Valittu', + title: 'Valitse väri' +} ); diff --git a/sources/plugins/colordialog/lang/fo.js b/sources/plugins/colordialog/lang/fo.js new file mode 100644 index 00000000..516fbf1d --- /dev/null +++ b/sources/plugins/colordialog/lang/fo.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'fo', { + clear: 'Strika', + highlight: 'Framheva', + options: 'Litmøguleikar', + selected: 'Valdur litur', + title: 'Vel lit' +} ); diff --git a/sources/plugins/colordialog/lang/fr-ca.js b/sources/plugins/colordialog/lang/fr-ca.js new file mode 100644 index 00000000..b235b993 --- /dev/null +++ b/sources/plugins/colordialog/lang/fr-ca.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'fr-ca', { + clear: 'Effacer', + highlight: 'Surligner', + options: 'Options de couleur', + selected: 'Couleur sélectionnée', + title: 'Choisir une couleur' +} ); diff --git a/sources/plugins/colordialog/lang/fr.js b/sources/plugins/colordialog/lang/fr.js new file mode 100644 index 00000000..706df2ad --- /dev/null +++ b/sources/plugins/colordialog/lang/fr.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'fr', { + clear: 'Effacer', + highlight: 'Détails', + options: 'Option des couleurs', + selected: 'Couleur choisie', + title: 'Choisir une couleur' +} ); diff --git a/sources/plugins/colordialog/lang/gl.js b/sources/plugins/colordialog/lang/gl.js new file mode 100644 index 00000000..a5f42e14 --- /dev/null +++ b/sources/plugins/colordialog/lang/gl.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'gl', { + clear: 'Limpar', + highlight: 'Resaltar', + options: 'Opcións de cor', + selected: 'Cor seleccionado', + title: 'Seleccione unha cor' +} ); diff --git a/sources/plugins/colordialog/lang/gu.js b/sources/plugins/colordialog/lang/gu.js new file mode 100644 index 00000000..bacc9d22 --- /dev/null +++ b/sources/plugins/colordialog/lang/gu.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'gu', { + clear: 'સાફ કરવું', + highlight: 'હાઈઈટ', + options: 'રંગના વિકલ્પ', + selected: 'પસંદ કરેલો રંગ', + title: 'રંગ પસંદ કરો' +} ); diff --git a/sources/plugins/colordialog/lang/he.js b/sources/plugins/colordialog/lang/he.js new file mode 100644 index 00000000..3bd448b9 --- /dev/null +++ b/sources/plugins/colordialog/lang/he.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'he', { + clear: 'ניקוי', + highlight: 'סימון', + options: 'אפשרויות צבע', + selected: 'בחירה', + title: 'בחירת צבע' +} ); diff --git a/sources/plugins/colordialog/lang/hi.js b/sources/plugins/colordialog/lang/hi.js new file mode 100644 index 00000000..fc383287 --- /dev/null +++ b/sources/plugins/colordialog/lang/hi.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'hi', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/hr.js b/sources/plugins/colordialog/lang/hr.js new file mode 100644 index 00000000..15ef17fc --- /dev/null +++ b/sources/plugins/colordialog/lang/hr.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'hr', { + clear: 'Očisti', + highlight: 'Istaknuto', + options: 'Opcije boje', + selected: 'Odabrana boja', + title: 'Odaberi boju' +} ); diff --git a/sources/plugins/colordialog/lang/hu.js b/sources/plugins/colordialog/lang/hu.js new file mode 100644 index 00000000..69e75872 --- /dev/null +++ b/sources/plugins/colordialog/lang/hu.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'hu', { + clear: 'Ürítés', + highlight: 'Nagyítás', + options: 'Szín opciók', + selected: 'Kiválasztott', + title: 'Válasszon színt' +} ); diff --git a/sources/plugins/colordialog/lang/id.js b/sources/plugins/colordialog/lang/id.js new file mode 100644 index 00000000..f85ddf90 --- /dev/null +++ b/sources/plugins/colordialog/lang/id.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'id', { + clear: 'Hapus', + highlight: 'Sorot', + options: 'Pilihan Warna', + selected: 'Warna Dipilih', + title: 'Pilih Warna' +} ); diff --git a/sources/plugins/colordialog/lang/is.js b/sources/plugins/colordialog/lang/is.js new file mode 100644 index 00000000..2268c402 --- /dev/null +++ b/sources/plugins/colordialog/lang/is.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'is', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/it.js b/sources/plugins/colordialog/lang/it.js new file mode 100644 index 00000000..e4a2956b --- /dev/null +++ b/sources/plugins/colordialog/lang/it.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'it', { + clear: 'cancella', + highlight: 'Evidenzia', + options: 'Opzioni colore', + selected: 'Seleziona il colore', + title: 'Selezionare il colore' +} ); diff --git a/sources/plugins/colordialog/lang/ja.js b/sources/plugins/colordialog/lang/ja.js new file mode 100644 index 00000000..33f92053 --- /dev/null +++ b/sources/plugins/colordialog/lang/ja.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ja', { + clear: 'クリア', + highlight: 'ハイライト', + options: 'カラーオプション', + selected: '選択された色', + title: '色選択' +} ); diff --git a/sources/plugins/colordialog/lang/ka.js b/sources/plugins/colordialog/lang/ka.js new file mode 100644 index 00000000..fd1f929f --- /dev/null +++ b/sources/plugins/colordialog/lang/ka.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ka', { + clear: 'გასუფთავება', + highlight: 'ჩვენება', + options: 'ფერის პარამეტრები', + selected: 'არჩეული ფერი', + title: 'ფერის შეცვლა' +} ); diff --git a/sources/plugins/colordialog/lang/km.js b/sources/plugins/colordialog/lang/km.js new file mode 100644 index 00000000..7940f4eb --- /dev/null +++ b/sources/plugins/colordialog/lang/km.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'km', { + clear: 'សម្អាត', + highlight: 'បន្លិច​ពណ៌', + options: 'ជម្រើស​ពណ៌', + selected: 'ពណ៌​ដែល​បាន​រើស', + title: 'រើស​ពណ៌' +} ); diff --git a/sources/plugins/colordialog/lang/ko.js b/sources/plugins/colordialog/lang/ko.js new file mode 100644 index 00000000..ff19a6ae --- /dev/null +++ b/sources/plugins/colordialog/lang/ko.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ko', { + clear: '비우기', + highlight: '강조', + options: '색상 옵션', + selected: '선택된 색상', + title: '색상 선택' +} ); diff --git a/sources/plugins/colordialog/lang/ku.js b/sources/plugins/colordialog/lang/ku.js new file mode 100644 index 00000000..bbe1d1f1 --- /dev/null +++ b/sources/plugins/colordialog/lang/ku.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ku', { + clear: 'پاکیکەوە', + highlight: 'نیشانکردن', + options: 'هەڵبژاردەی ڕەنگەکان', + selected: 'ڕەنگی هەڵبژێردراو', + title: 'هەڵبژاردنی ڕەنگ' +} ); diff --git a/sources/plugins/colordialog/lang/lt.js b/sources/plugins/colordialog/lang/lt.js new file mode 100644 index 00000000..817b6e2d --- /dev/null +++ b/sources/plugins/colordialog/lang/lt.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'lt', { + clear: 'Išvalyti', + highlight: 'Paryškinti', + options: 'Spalvos nustatymai', + selected: 'Pasirinkta spalva', + title: 'Pasirinkite spalvą' +} ); diff --git a/sources/plugins/colordialog/lang/lv.js b/sources/plugins/colordialog/lang/lv.js new file mode 100644 index 00000000..6dc35d38 --- /dev/null +++ b/sources/plugins/colordialog/lang/lv.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'lv', { + clear: 'Notīrīt', + highlight: 'Paraugs', + options: 'Krāsas uzstādījumi', + selected: 'Izvēlētā krāsa', + title: 'Izvēlies krāsu' +} ); diff --git a/sources/plugins/colordialog/lang/mk.js b/sources/plugins/colordialog/lang/mk.js new file mode 100644 index 00000000..6981f12f --- /dev/null +++ b/sources/plugins/colordialog/lang/mk.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'mk', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/mn.js b/sources/plugins/colordialog/lang/mn.js new file mode 100644 index 00000000..6ad3bc95 --- /dev/null +++ b/sources/plugins/colordialog/lang/mn.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'mn', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/ms.js b/sources/plugins/colordialog/lang/ms.js new file mode 100644 index 00000000..6978496e --- /dev/null +++ b/sources/plugins/colordialog/lang/ms.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ms', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/nb.js b/sources/plugins/colordialog/lang/nb.js new file mode 100644 index 00000000..8d6daded --- /dev/null +++ b/sources/plugins/colordialog/lang/nb.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'nb', { + clear: 'Tøm', + highlight: 'Merk', + options: 'Alternativer for farge', + selected: 'Valgt farge', + title: 'Velg farge' +} ); diff --git a/sources/plugins/colordialog/lang/nl.js b/sources/plugins/colordialog/lang/nl.js new file mode 100644 index 00000000..2cd70ae3 --- /dev/null +++ b/sources/plugins/colordialog/lang/nl.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'nl', { + clear: 'Wissen', + highlight: 'Actief', + options: 'Kleuropties', + selected: 'Geselecteerde kleur', + title: 'Selecteer kleur' +} ); diff --git a/sources/plugins/colordialog/lang/no.js b/sources/plugins/colordialog/lang/no.js new file mode 100644 index 00000000..6471eeb8 --- /dev/null +++ b/sources/plugins/colordialog/lang/no.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'no', { + clear: 'Tøm', + highlight: 'Merk', + options: 'Alternativer for farge', + selected: 'Valgt', + title: 'Velg farge' +} ); diff --git a/sources/plugins/colordialog/lang/pl.js b/sources/plugins/colordialog/lang/pl.js new file mode 100644 index 00000000..14d7bb4c --- /dev/null +++ b/sources/plugins/colordialog/lang/pl.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'pl', { + clear: 'Wyczyść', + highlight: 'Zaznacz', + options: 'Opcje koloru', + selected: 'Wybrany', + title: 'Wybierz kolor' +} ); diff --git a/sources/plugins/colordialog/lang/pt-br.js b/sources/plugins/colordialog/lang/pt-br.js new file mode 100644 index 00000000..8c0da026 --- /dev/null +++ b/sources/plugins/colordialog/lang/pt-br.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'pt-br', { + clear: 'Limpar', + highlight: 'Grifar', + options: 'Opções de Cor', + selected: 'Cor Selecionada', + title: 'Selecione uma Cor' +} ); diff --git a/sources/plugins/colordialog/lang/pt.js b/sources/plugins/colordialog/lang/pt.js new file mode 100644 index 00000000..87005218 --- /dev/null +++ b/sources/plugins/colordialog/lang/pt.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'pt', { + clear: 'Limpar', + highlight: 'Realçar', + options: 'Opções de cor', + selected: 'Cor selecionada', + title: 'Selecionar cor' +} ); diff --git a/sources/plugins/colordialog/lang/ro.js b/sources/plugins/colordialog/lang/ro.js new file mode 100644 index 00000000..ce326ed9 --- /dev/null +++ b/sources/plugins/colordialog/lang/ro.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ro', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/ru.js b/sources/plugins/colordialog/lang/ru.js new file mode 100644 index 00000000..f491a789 --- /dev/null +++ b/sources/plugins/colordialog/lang/ru.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ru', { + clear: 'Очистить', + highlight: 'Под курсором', + options: 'Настройки цвета', + selected: 'Выбранный цвет', + title: 'Выберите цвет' +} ); diff --git a/sources/plugins/colordialog/lang/si.js b/sources/plugins/colordialog/lang/si.js new file mode 100644 index 00000000..ac833bb8 --- /dev/null +++ b/sources/plugins/colordialog/lang/si.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'si', { + clear: 'පැහැදිලි', + highlight: 'මතුකර පෙන්වන්න', + options: 'වර්ණ විකල්ප', + selected: 'තෙරු වර්ණ', + title: 'වර්ණ තෝරන්න' +} ); diff --git a/sources/plugins/colordialog/lang/sk.js b/sources/plugins/colordialog/lang/sk.js new file mode 100644 index 00000000..47afd9a7 --- /dev/null +++ b/sources/plugins/colordialog/lang/sk.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'sk', { + clear: 'Vyčistiť', + highlight: 'Zvýrazniť', + options: 'Možnosti farby', + selected: 'Vybraná farba', + title: 'Vyberte farbu' +} ); diff --git a/sources/plugins/colordialog/lang/sl.js b/sources/plugins/colordialog/lang/sl.js new file mode 100644 index 00000000..9ced88ab --- /dev/null +++ b/sources/plugins/colordialog/lang/sl.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'sl', { + clear: 'Počisti', + highlight: 'Poudarjeno', + options: 'Barvne Možnosti', + selected: 'Izbrano', + title: 'Izberi barvo' +} ); diff --git a/sources/plugins/colordialog/lang/sq.js b/sources/plugins/colordialog/lang/sq.js new file mode 100644 index 00000000..292da900 --- /dev/null +++ b/sources/plugins/colordialog/lang/sq.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'sq', { + clear: 'Pastro', + highlight: 'Thekso', + options: 'Përzgjedhjet e Ngjyrave', + selected: 'Ngjyra e Përzgjedhur', + title: 'Përzgjidh një ngjyrë' +} ); diff --git a/sources/plugins/colordialog/lang/sr-latn.js b/sources/plugins/colordialog/lang/sr-latn.js new file mode 100644 index 00000000..01498cec --- /dev/null +++ b/sources/plugins/colordialog/lang/sr-latn.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'sr-latn', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/sr.js b/sources/plugins/colordialog/lang/sr.js new file mode 100644 index 00000000..d6167876 --- /dev/null +++ b/sources/plugins/colordialog/lang/sr.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'sr', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/sv.js b/sources/plugins/colordialog/lang/sv.js new file mode 100644 index 00000000..1ffc3d89 --- /dev/null +++ b/sources/plugins/colordialog/lang/sv.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'sv', { + clear: 'Rensa', + highlight: 'Markera', + options: 'Färgalternativ', + selected: 'Vald färg', + title: 'Välj färg' +} ); diff --git a/sources/plugins/colordialog/lang/th.js b/sources/plugins/colordialog/lang/th.js new file mode 100644 index 00000000..7ac87873 --- /dev/null +++ b/sources/plugins/colordialog/lang/th.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'th', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/sources/plugins/colordialog/lang/tr.js b/sources/plugins/colordialog/lang/tr.js new file mode 100644 index 00000000..02d3bc81 --- /dev/null +++ b/sources/plugins/colordialog/lang/tr.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'tr', { + clear: 'Temizle', + highlight: 'İşaretle', + options: 'Renk Seçenekleri', + selected: 'Seçilmiş', + title: 'Renk seç' +} ); diff --git a/sources/plugins/colordialog/lang/tt.js b/sources/plugins/colordialog/lang/tt.js new file mode 100644 index 00000000..cf443883 --- /dev/null +++ b/sources/plugins/colordialog/lang/tt.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'tt', { + clear: 'Бушату', + highlight: 'Билгеләү', + options: 'Төс көйләүләре', + selected: 'Сайланган төсләр', + title: 'Төс сайлау' +} ); diff --git a/sources/plugins/colordialog/lang/ug.js b/sources/plugins/colordialog/lang/ug.js new file mode 100644 index 00000000..4a656ebf --- /dev/null +++ b/sources/plugins/colordialog/lang/ug.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ug', { + clear: 'تازىلا', + highlight: 'يورۇت', + options: 'رەڭ تاللانمىسى', + selected: 'رەڭ تاللاڭ', + title: 'رەڭ تاللاڭ' +} ); diff --git a/sources/plugins/colordialog/lang/uk.js b/sources/plugins/colordialog/lang/uk.js new file mode 100644 index 00000000..ff6ef752 --- /dev/null +++ b/sources/plugins/colordialog/lang/uk.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'uk', { + clear: 'Очистити', + highlight: 'Колір, на який вказує курсор', + options: 'Опції кольорів', + selected: 'Обраний колір', + title: 'Обрати колір' +} ); diff --git a/sources/plugins/colordialog/lang/vi.js b/sources/plugins/colordialog/lang/vi.js new file mode 100644 index 00000000..d04a2dd3 --- /dev/null +++ b/sources/plugins/colordialog/lang/vi.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'vi', { + clear: 'Xóa bỏ', + highlight: 'Màu chọn', + options: 'Tùy chọn màu', + selected: 'Màu đã chọn', + title: 'Chọn màu' +} ); diff --git a/sources/plugins/colordialog/lang/zh-cn.js b/sources/plugins/colordialog/lang/zh-cn.js new file mode 100644 index 00000000..57083a4d --- /dev/null +++ b/sources/plugins/colordialog/lang/zh-cn.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'zh-cn', { + clear: '清除', + highlight: '高亮', + options: '颜色选项', + selected: '选择颜色', + title: '选择颜色' +} ); diff --git a/sources/plugins/colordialog/lang/zh.js b/sources/plugins/colordialog/lang/zh.js new file mode 100644 index 00000000..d845a223 --- /dev/null +++ b/sources/plugins/colordialog/lang/zh.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'zh', { + clear: '清除', + highlight: '高亮', + options: '色彩選項', + selected: '選取的色彩', + title: '選取色彩' +} ); diff --git a/sources/plugins/colordialog/plugin.js b/sources/plugins/colordialog/plugin.js new file mode 100644 index 00000000..57f59199 --- /dev/null +++ b/sources/plugins/colordialog/plugin.js @@ -0,0 +1,71 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.colordialog = { + requires: 'dialog', + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + init: function( editor ) { + var cmd = new CKEDITOR.dialogCommand( 'colordialog' ); + cmd.editorFocus = false; + + editor.addCommand( 'colordialog', cmd ); + + CKEDITOR.dialog.add( 'colordialog', this.path + 'dialogs/colordialog.js' ); + + /** + * Open up color dialog and to receive the selected color. + * + * @param {Function} callback The callback when color dialog is closed + * @param {String} callback.color The color value received if selected on the dialog. + * @param [scope] The scope in which the callback will be bound. + * @member CKEDITOR.editor + */ + editor.getColorFromDialog = function( callback, scope ) { + var onClose = function( evt ) { + releaseHandlers( this ); + var color = evt.name == 'ok' ? this.getValueOf( 'picker', 'selectedColor' ) : null; + callback.call( scope, color ); + }; + var releaseHandlers = function( dialog ) { + dialog.removeListener( 'ok', onClose ); + dialog.removeListener( 'cancel', onClose ); + }; + var bindToDialog = function( dialog ) { + dialog.on( 'ok', onClose ); + dialog.on( 'cancel', onClose ); + }; + + editor.execCommand( 'colordialog' ); + + if ( editor._.storedDialogs && editor._.storedDialogs.colordialog ) + bindToDialog( editor._.storedDialogs.colordialog ); + else { + CKEDITOR.on( 'dialogDefinition', function( e ) { + if ( e.data.name != 'colordialog' ) + return; + + var definition = e.data.definition; + + e.removeListener(); + definition.onLoad = CKEDITOR.tools.override( definition.onLoad, + function( orginal ) { + return function() { + bindToDialog( this ); + definition.onLoad = orginal; + if ( typeof orginal == 'function' ) + orginal.call( this ); + }; + } ); + } ); + } + }; + + + } +}; + +CKEDITOR.plugins.add( 'colordialog', CKEDITOR.plugins.colordialog ); diff --git a/sources/plugins/contextmenu/lang/af.js b/sources/plugins/contextmenu/lang/af.js new file mode 100644 index 00000000..c2cc63a8 --- /dev/null +++ b/sources/plugins/contextmenu/lang/af.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'af', { + options: 'Konteks Spyskaart-opsies' +} ); diff --git a/sources/plugins/contextmenu/lang/ar.js b/sources/plugins/contextmenu/lang/ar.js new file mode 100644 index 00000000..cb6b0974 --- /dev/null +++ b/sources/plugins/contextmenu/lang/ar.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'ar', { + options: 'خصائص قائمة السياق' +} ); diff --git a/sources/plugins/contextmenu/lang/bg.js b/sources/plugins/contextmenu/lang/bg.js new file mode 100644 index 00000000..2c4bc028 --- /dev/null +++ b/sources/plugins/contextmenu/lang/bg.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'bg', { + options: 'Опции на контекстното меню' +} ); diff --git a/sources/plugins/contextmenu/lang/bn.js b/sources/plugins/contextmenu/lang/bn.js new file mode 100644 index 00000000..ff643525 --- /dev/null +++ b/sources/plugins/contextmenu/lang/bn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'bn', { + options: 'Context Menu Options' // MISSING +} ); diff --git a/sources/plugins/contextmenu/lang/bs.js b/sources/plugins/contextmenu/lang/bs.js new file mode 100644 index 00000000..3267caf5 --- /dev/null +++ b/sources/plugins/contextmenu/lang/bs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'bs', { + options: 'Context Menu Options' // MISSING +} ); diff --git a/sources/plugins/contextmenu/lang/ca.js b/sources/plugins/contextmenu/lang/ca.js new file mode 100644 index 00000000..b6da83d9 --- /dev/null +++ b/sources/plugins/contextmenu/lang/ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'ca', { + options: 'Opcions del menú contextual' +} ); diff --git a/sources/plugins/contextmenu/lang/cs.js b/sources/plugins/contextmenu/lang/cs.js new file mode 100644 index 00000000..63a0c8d0 --- /dev/null +++ b/sources/plugins/contextmenu/lang/cs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'cs', { + options: 'Nastavení kontextové nabídky' +} ); diff --git a/sources/plugins/contextmenu/lang/cy.js b/sources/plugins/contextmenu/lang/cy.js new file mode 100644 index 00000000..e01fb613 --- /dev/null +++ b/sources/plugins/contextmenu/lang/cy.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'cy', { + options: 'Opsiynau Dewislen Cyd-destun' +} ); diff --git a/sources/plugins/contextmenu/lang/da.js b/sources/plugins/contextmenu/lang/da.js new file mode 100644 index 00000000..aa637367 --- /dev/null +++ b/sources/plugins/contextmenu/lang/da.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'da', { + options: 'Muligheder for hjælpemenu' +} ); diff --git a/sources/plugins/contextmenu/lang/de.js b/sources/plugins/contextmenu/lang/de.js new file mode 100644 index 00000000..f9cfb44e --- /dev/null +++ b/sources/plugins/contextmenu/lang/de.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'de', { + options: 'Kontextmenüoptionen' +} ); diff --git a/sources/plugins/contextmenu/lang/el.js b/sources/plugins/contextmenu/lang/el.js new file mode 100644 index 00000000..16bf519c --- /dev/null +++ b/sources/plugins/contextmenu/lang/el.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'el', { + options: 'Επιλογές Αναδυόμενου Μενού' +} ); diff --git a/sources/plugins/contextmenu/lang/en-au.js b/sources/plugins/contextmenu/lang/en-au.js new file mode 100644 index 00000000..756dac5d --- /dev/null +++ b/sources/plugins/contextmenu/lang/en-au.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'en-au', { + options: 'Context Menu Options' // MISSING +} ); diff --git a/sources/plugins/contextmenu/lang/en-ca.js b/sources/plugins/contextmenu/lang/en-ca.js new file mode 100644 index 00000000..61160a0c --- /dev/null +++ b/sources/plugins/contextmenu/lang/en-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'en-ca', { + options: 'Context Menu Options' // MISSING +} ); diff --git a/sources/plugins/contextmenu/lang/en-gb.js b/sources/plugins/contextmenu/lang/en-gb.js new file mode 100644 index 00000000..64b81d07 --- /dev/null +++ b/sources/plugins/contextmenu/lang/en-gb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'en-gb', { + options: 'Context Menu Options' +} ); diff --git a/sources/plugins/contextmenu/lang/en.js b/sources/plugins/contextmenu/lang/en.js new file mode 100644 index 00000000..25522bd7 --- /dev/null +++ b/sources/plugins/contextmenu/lang/en.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'en', { + options: 'Context Menu Options' +} ); diff --git a/sources/plugins/contextmenu/lang/eo.js b/sources/plugins/contextmenu/lang/eo.js new file mode 100644 index 00000000..86c0bf31 --- /dev/null +++ b/sources/plugins/contextmenu/lang/eo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'eo', { + options: 'Opcioj de Kunteksta Menuo' +} ); diff --git a/sources/plugins/contextmenu/lang/es.js b/sources/plugins/contextmenu/lang/es.js new file mode 100644 index 00000000..91bebfa9 --- /dev/null +++ b/sources/plugins/contextmenu/lang/es.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'es', { + options: 'Opciones del menú contextual' +} ); diff --git a/sources/plugins/contextmenu/lang/et.js b/sources/plugins/contextmenu/lang/et.js new file mode 100644 index 00000000..2ff62fea --- /dev/null +++ b/sources/plugins/contextmenu/lang/et.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'et', { + options: 'Kontekstimenüü valikud' +} ); diff --git a/sources/plugins/contextmenu/lang/eu.js b/sources/plugins/contextmenu/lang/eu.js new file mode 100644 index 00000000..1f9aac01 --- /dev/null +++ b/sources/plugins/contextmenu/lang/eu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'eu', { + options: 'Testuinguru-menuaren aukerak' +} ); diff --git a/sources/plugins/contextmenu/lang/fa.js b/sources/plugins/contextmenu/lang/fa.js new file mode 100644 index 00000000..c83db4fd --- /dev/null +++ b/sources/plugins/contextmenu/lang/fa.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'fa', { + options: 'گزینه​های منوی زمینه' +} ); diff --git a/sources/plugins/contextmenu/lang/fi.js b/sources/plugins/contextmenu/lang/fi.js new file mode 100644 index 00000000..cfd3759e --- /dev/null +++ b/sources/plugins/contextmenu/lang/fi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'fi', { + options: 'Pikavalikon ominaisuudet' +} ); diff --git a/sources/plugins/contextmenu/lang/fo.js b/sources/plugins/contextmenu/lang/fo.js new file mode 100644 index 00000000..1f62a56b --- /dev/null +++ b/sources/plugins/contextmenu/lang/fo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'fo', { + options: 'Context Menu Options' +} ); diff --git a/sources/plugins/contextmenu/lang/fr-ca.js b/sources/plugins/contextmenu/lang/fr-ca.js new file mode 100644 index 00000000..d9220201 --- /dev/null +++ b/sources/plugins/contextmenu/lang/fr-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'fr-ca', { + options: 'Options du menu contextuel' +} ); diff --git a/sources/plugins/contextmenu/lang/fr.js b/sources/plugins/contextmenu/lang/fr.js new file mode 100644 index 00000000..2ecfabe8 --- /dev/null +++ b/sources/plugins/contextmenu/lang/fr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'fr', { + options: 'Options du menu contextuel' +} ); diff --git a/sources/plugins/contextmenu/lang/gl.js b/sources/plugins/contextmenu/lang/gl.js new file mode 100644 index 00000000..5ee15528 --- /dev/null +++ b/sources/plugins/contextmenu/lang/gl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'gl', { + options: 'Opcións do menú contextual' +} ); diff --git a/sources/plugins/contextmenu/lang/gu.js b/sources/plugins/contextmenu/lang/gu.js new file mode 100644 index 00000000..6ad6a358 --- /dev/null +++ b/sources/plugins/contextmenu/lang/gu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'gu', { + options: 'કોન્તેક્ષ્ત્ મેનુના વિકલ્પો' +} ); diff --git a/sources/plugins/contextmenu/lang/he.js b/sources/plugins/contextmenu/lang/he.js new file mode 100644 index 00000000..e3e9d044 --- /dev/null +++ b/sources/plugins/contextmenu/lang/he.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'he', { + options: 'אפשרויות תפריט ההקשר' +} ); diff --git a/sources/plugins/contextmenu/lang/hi.js b/sources/plugins/contextmenu/lang/hi.js new file mode 100644 index 00000000..f5317a97 --- /dev/null +++ b/sources/plugins/contextmenu/lang/hi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'hi', { + options: 'Context Menu Options' // MISSING +} ); diff --git a/sources/plugins/contextmenu/lang/hr.js b/sources/plugins/contextmenu/lang/hr.js new file mode 100644 index 00000000..d9b47761 --- /dev/null +++ b/sources/plugins/contextmenu/lang/hr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'hr', { + options: 'Opcije izbornika' +} ); diff --git a/sources/plugins/contextmenu/lang/hu.js b/sources/plugins/contextmenu/lang/hu.js new file mode 100644 index 00000000..8a23cd90 --- /dev/null +++ b/sources/plugins/contextmenu/lang/hu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'hu', { + options: 'Helyi menü opciók' +} ); diff --git a/sources/plugins/contextmenu/lang/id.js b/sources/plugins/contextmenu/lang/id.js new file mode 100644 index 00000000..4b54a87f --- /dev/null +++ b/sources/plugins/contextmenu/lang/id.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'id', { + options: 'Opsi Konteks Pilihan' +} ); diff --git a/sources/plugins/contextmenu/lang/is.js b/sources/plugins/contextmenu/lang/is.js new file mode 100644 index 00000000..cb5d8a96 --- /dev/null +++ b/sources/plugins/contextmenu/lang/is.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'is', { + options: 'Context Menu Options' // MISSING +} ); diff --git a/sources/plugins/contextmenu/lang/it.js b/sources/plugins/contextmenu/lang/it.js new file mode 100644 index 00000000..602dd30e --- /dev/null +++ b/sources/plugins/contextmenu/lang/it.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'it', { + options: 'Opzioni del menù contestuale' +} ); diff --git a/sources/plugins/contextmenu/lang/ja.js b/sources/plugins/contextmenu/lang/ja.js new file mode 100644 index 00000000..131cadf8 --- /dev/null +++ b/sources/plugins/contextmenu/lang/ja.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'ja', { + options: 'コンテキストメニューオプション' +} ); diff --git a/sources/plugins/contextmenu/lang/ka.js b/sources/plugins/contextmenu/lang/ka.js new file mode 100644 index 00000000..9398fcb9 --- /dev/null +++ b/sources/plugins/contextmenu/lang/ka.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'ka', { + options: 'კონტექსტური მენიუს პარამეტრები' +} ); diff --git a/sources/plugins/contextmenu/lang/km.js b/sources/plugins/contextmenu/lang/km.js new file mode 100644 index 00000000..5e29edca --- /dev/null +++ b/sources/plugins/contextmenu/lang/km.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'km', { + options: 'ជម្រើស​ម៉ឺនុយ​បរិបទ' +} ); diff --git a/sources/plugins/contextmenu/lang/ko.js b/sources/plugins/contextmenu/lang/ko.js new file mode 100644 index 00000000..f8dbc304 --- /dev/null +++ b/sources/plugins/contextmenu/lang/ko.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'ko', { + options: '컨텍스트 메뉴 옵션' +} ); diff --git a/sources/plugins/contextmenu/lang/ku.js b/sources/plugins/contextmenu/lang/ku.js new file mode 100644 index 00000000..9da10a07 --- /dev/null +++ b/sources/plugins/contextmenu/lang/ku.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'ku', { + options: 'هەڵبژاردەی لیستەی کلیکی دەستی ڕاست' +} ); diff --git a/sources/plugins/contextmenu/lang/lt.js b/sources/plugins/contextmenu/lang/lt.js new file mode 100644 index 00000000..1927f68e --- /dev/null +++ b/sources/plugins/contextmenu/lang/lt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'lt', { + options: 'Kontekstinio meniu parametrai' +} ); diff --git a/sources/plugins/contextmenu/lang/lv.js b/sources/plugins/contextmenu/lang/lv.js new file mode 100644 index 00000000..44271af9 --- /dev/null +++ b/sources/plugins/contextmenu/lang/lv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'lv', { + options: 'Uznirstošās izvēlnes uzstādījumi' +} ); diff --git a/sources/plugins/contextmenu/lang/mk.js b/sources/plugins/contextmenu/lang/mk.js new file mode 100644 index 00000000..6540c9cc --- /dev/null +++ b/sources/plugins/contextmenu/lang/mk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'mk', { + options: 'Context Menu Options' // MISSING +} ); diff --git a/sources/plugins/contextmenu/lang/mn.js b/sources/plugins/contextmenu/lang/mn.js new file mode 100644 index 00000000..effdcdd2 --- /dev/null +++ b/sources/plugins/contextmenu/lang/mn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'mn', { + options: 'Context Menu Options' // MISSING +} ); diff --git a/sources/plugins/contextmenu/lang/ms.js b/sources/plugins/contextmenu/lang/ms.js new file mode 100644 index 00000000..f5c2f413 --- /dev/null +++ b/sources/plugins/contextmenu/lang/ms.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'ms', { + options: 'Context Menu Options' // MISSING +} ); diff --git a/sources/plugins/contextmenu/lang/nb.js b/sources/plugins/contextmenu/lang/nb.js new file mode 100644 index 00000000..dcdcb514 --- /dev/null +++ b/sources/plugins/contextmenu/lang/nb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'nb', { + options: 'Alternativer for høyreklikkmeny' +} ); diff --git a/sources/plugins/contextmenu/lang/nl.js b/sources/plugins/contextmenu/lang/nl.js new file mode 100644 index 00000000..e8be1dcb --- /dev/null +++ b/sources/plugins/contextmenu/lang/nl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'nl', { + options: 'Contextmenu opties' +} ); diff --git a/sources/plugins/contextmenu/lang/no.js b/sources/plugins/contextmenu/lang/no.js new file mode 100644 index 00000000..4818b9a6 --- /dev/null +++ b/sources/plugins/contextmenu/lang/no.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'no', { + options: 'Alternativer for høyreklikkmeny' +} ); diff --git a/sources/plugins/contextmenu/lang/pl.js b/sources/plugins/contextmenu/lang/pl.js new file mode 100644 index 00000000..4f40a9be --- /dev/null +++ b/sources/plugins/contextmenu/lang/pl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'pl', { + options: 'Opcje menu kontekstowego' +} ); diff --git a/sources/plugins/contextmenu/lang/pt-br.js b/sources/plugins/contextmenu/lang/pt-br.js new file mode 100644 index 00000000..9a53a148 --- /dev/null +++ b/sources/plugins/contextmenu/lang/pt-br.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'pt-br', { + options: 'Opções Menu de Contexto' +} ); diff --git a/sources/plugins/contextmenu/lang/pt.js b/sources/plugins/contextmenu/lang/pt.js new file mode 100644 index 00000000..9e4cb095 --- /dev/null +++ b/sources/plugins/contextmenu/lang/pt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'pt', { + options: 'Menu de opções de contexto' +} ); diff --git a/sources/plugins/contextmenu/lang/ro.js b/sources/plugins/contextmenu/lang/ro.js new file mode 100644 index 00000000..5d58b996 --- /dev/null +++ b/sources/plugins/contextmenu/lang/ro.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'ro', { + options: 'Opțiuni Meniu Contextual' +} ); diff --git a/sources/plugins/contextmenu/lang/ru.js b/sources/plugins/contextmenu/lang/ru.js new file mode 100644 index 00000000..e53098a2 --- /dev/null +++ b/sources/plugins/contextmenu/lang/ru.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'ru', { + options: 'Параметры контекстного меню' +} ); diff --git a/sources/plugins/contextmenu/lang/si.js b/sources/plugins/contextmenu/lang/si.js new file mode 100644 index 00000000..96687455 --- /dev/null +++ b/sources/plugins/contextmenu/lang/si.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'si', { + options: 'අනතර්ග ලේඛණ විකල්ප' +} ); diff --git a/sources/plugins/contextmenu/lang/sk.js b/sources/plugins/contextmenu/lang/sk.js new file mode 100644 index 00000000..81bdfc46 --- /dev/null +++ b/sources/plugins/contextmenu/lang/sk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'sk', { + options: 'Možnosti kontextového menu' +} ); diff --git a/sources/plugins/contextmenu/lang/sl.js b/sources/plugins/contextmenu/lang/sl.js new file mode 100644 index 00000000..a9b96c13 --- /dev/null +++ b/sources/plugins/contextmenu/lang/sl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'sl', { + options: 'Možnosti Kontekstnega Menija' +} ); diff --git a/sources/plugins/contextmenu/lang/sq.js b/sources/plugins/contextmenu/lang/sq.js new file mode 100644 index 00000000..95bd4564 --- /dev/null +++ b/sources/plugins/contextmenu/lang/sq.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'sq', { + options: 'Mundësitë e Menysë së Kontekstit' +} ); diff --git a/sources/plugins/contextmenu/lang/sr-latn.js b/sources/plugins/contextmenu/lang/sr-latn.js new file mode 100644 index 00000000..42dac9f1 --- /dev/null +++ b/sources/plugins/contextmenu/lang/sr-latn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'sr-latn', { + options: 'Context Menu Options' // MISSING +} ); diff --git a/sources/plugins/contextmenu/lang/sr.js b/sources/plugins/contextmenu/lang/sr.js new file mode 100644 index 00000000..a3f61a8d --- /dev/null +++ b/sources/plugins/contextmenu/lang/sr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'sr', { + options: 'Context Menu Options' // MISSING +} ); diff --git a/sources/plugins/contextmenu/lang/sv.js b/sources/plugins/contextmenu/lang/sv.js new file mode 100644 index 00000000..2f141586 --- /dev/null +++ b/sources/plugins/contextmenu/lang/sv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'sv', { + options: 'Context Menu Options' +} ); diff --git a/sources/plugins/contextmenu/lang/th.js b/sources/plugins/contextmenu/lang/th.js new file mode 100644 index 00000000..9c51d1c9 --- /dev/null +++ b/sources/plugins/contextmenu/lang/th.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'th', { + options: 'Context Menu Options' // MISSING +} ); diff --git a/sources/plugins/contextmenu/lang/tr.js b/sources/plugins/contextmenu/lang/tr.js new file mode 100644 index 00000000..adc7c037 --- /dev/null +++ b/sources/plugins/contextmenu/lang/tr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'tr', { + options: 'İçerik Menüsü Seçenekleri' +} ); diff --git a/sources/plugins/contextmenu/lang/tt.js b/sources/plugins/contextmenu/lang/tt.js new file mode 100644 index 00000000..992e8938 --- /dev/null +++ b/sources/plugins/contextmenu/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'tt', { + options: 'Контекст меню үзлекләре' +} ); diff --git a/sources/plugins/contextmenu/lang/ug.js b/sources/plugins/contextmenu/lang/ug.js new file mode 100644 index 00000000..05926920 --- /dev/null +++ b/sources/plugins/contextmenu/lang/ug.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'ug', { + options: 'قىسقا يول تىزىملىك تاللانمىسى' +} ); diff --git a/sources/plugins/contextmenu/lang/uk.js b/sources/plugins/contextmenu/lang/uk.js new file mode 100644 index 00000000..cda18f62 --- /dev/null +++ b/sources/plugins/contextmenu/lang/uk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'uk', { + options: 'Опції контекстного меню' +} ); diff --git a/sources/plugins/contextmenu/lang/vi.js b/sources/plugins/contextmenu/lang/vi.js new file mode 100644 index 00000000..79c6cd65 --- /dev/null +++ b/sources/plugins/contextmenu/lang/vi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'vi', { + options: 'Tùy chọn menu bổ xung' +} ); diff --git a/sources/plugins/contextmenu/lang/zh-cn.js b/sources/plugins/contextmenu/lang/zh-cn.js new file mode 100644 index 00000000..ace5a341 --- /dev/null +++ b/sources/plugins/contextmenu/lang/zh-cn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'zh-cn', { + options: '快捷菜单选项' +} ); diff --git a/sources/plugins/contextmenu/lang/zh.js b/sources/plugins/contextmenu/lang/zh.js new file mode 100644 index 00000000..db18ee53 --- /dev/null +++ b/sources/plugins/contextmenu/lang/zh.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'zh', { + options: '內容功能表選項' +} ); diff --git a/sources/plugins/contextmenu/plugin.js b/sources/plugins/contextmenu/plugin.js new file mode 100644 index 00000000..111e1383 --- /dev/null +++ b/sources/plugins/contextmenu/plugin.js @@ -0,0 +1,159 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.add( 'contextmenu', { + requires: 'menu', + + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + + // Make sure the base class (CKEDITOR.menu) is loaded before it (#3318). + onLoad: function() { + /** + * Class replacing the non-configurable native context menu with a configurable CKEditor's equivalent. + * + * @class + * @extends CKEDITOR.menu + */ + CKEDITOR.plugins.contextMenu = CKEDITOR.tools.createClass( { + base: CKEDITOR.menu, + + /** + * Creates the CKEDITOR.plugins.contextMenu class instance. + * + * @constructor + * @param {CKEDITOR.editor} editor + */ + $: function( editor ) { + this.base.call( this, editor, { + panel: { + className: 'cke_menu_panel', + attributes: { + 'aria-label': editor.lang.contextmenu.options + } + } + } ); + }, + + proto: { + /** + * Starts watching on native context menu triggers (Option key, right click) on the given element. + * + * @param {CKEDITOR.dom.element} element + * @param {Boolean} [nativeContextMenuOnCtrl] Whether to open native context menu if the + * Ctrl key is held on opening the context menu. See {@link CKEDITOR.config#browserContextMenuOnCtrl}. + */ + addTarget: function( element, nativeContextMenuOnCtrl ) { + element.on( 'contextmenu', function( event ) { + var domEvent = event.data, + isCtrlKeyDown = + // Safari on Windows always show 'ctrlKey' as true in 'contextmenu' event, + // which make this property unreliable. (#4826) + ( CKEDITOR.env.webkit ? holdCtrlKey : ( CKEDITOR.env.mac ? domEvent.$.metaKey : domEvent.$.ctrlKey ) ); + + if ( nativeContextMenuOnCtrl && isCtrlKeyDown ) + return; + + // Cancel the browser context menu. + domEvent.preventDefault(); + + // Fix selection when non-editable element in Webkit/Blink (Mac) (#11306). + if ( CKEDITOR.env.mac && CKEDITOR.env.webkit ) { + var editor = this.editor, + contentEditableParent = new CKEDITOR.dom.elementPath( domEvent.getTarget(), editor.editable() ).contains( function( el ) { + // Return when non-editable or nested editable element is found. + return el.hasAttribute( 'contenteditable' ); + }, true ); // Exclude editor's editable. + + // Fake selection for non-editables only (to exclude nested editables). + if ( contentEditableParent && contentEditableParent.getAttribute( 'contenteditable' ) == 'false' ) + editor.getSelection().fake( contentEditableParent ); + } + + var doc = domEvent.getTarget().getDocument(), + offsetParent = domEvent.getTarget().getDocument().getDocumentElement(), + fromFrame = !doc.equals( CKEDITOR.document ), + scroll = doc.getWindow().getScrollPosition(), + offsetX = fromFrame ? domEvent.$.clientX : domEvent.$.pageX || scroll.x + domEvent.$.clientX, + offsetY = fromFrame ? domEvent.$.clientY : domEvent.$.pageY || scroll.y + domEvent.$.clientY; + + CKEDITOR.tools.setTimeout( function() { + this.open( offsetParent, null, offsetX, offsetY ); + + // IE needs a short while to allow selection change before opening menu. (#7908) + }, CKEDITOR.env.ie ? 200 : 0, this ); + }, this ); + + if ( CKEDITOR.env.webkit ) { + var holdCtrlKey, + onKeyDown = function( event ) { + holdCtrlKey = CKEDITOR.env.mac ? event.data.$.metaKey : event.data.$.ctrlKey; + }, + resetOnKeyUp = function() { + holdCtrlKey = 0; + }; + + element.on( 'keydown', onKeyDown ); + element.on( 'keyup', resetOnKeyUp ); + element.on( 'contextmenu', resetOnKeyUp ); + } + }, + + /** + * Opens the context menu in the given location. See the {@link CKEDITOR.menu#show} method. + * + * @param {CKEDITOR.dom.element} offsetParent + * @param {Number} [corner] + * @param {Number} [offsetX] + * @param {Number} [offsetY] + */ + open: function( offsetParent, corner, offsetX, offsetY ) { + this.editor.focus(); + offsetParent = offsetParent || CKEDITOR.document.getDocumentElement(); + + // #9362: Force selection check to update commands' states in the new context. + this.editor.selectionChange( 1 ); + + this.show( offsetParent, corner, offsetX, offsetY ); + } + } + } ); + }, + + beforeInit: function( editor ) { + /** + * @readonly + * @property {CKEDITOR.plugins.contextMenu} contextMenu + * @member CKEDITOR.editor + */ + var contextMenu = editor.contextMenu = new CKEDITOR.plugins.contextMenu( editor ); + + editor.on( 'contentDom', function() { + contextMenu.addTarget( editor.editable(), editor.config.browserContextMenuOnCtrl !== false ); + } ); + + editor.addCommand( 'contextMenu', { + exec: function() { + editor.contextMenu.open( editor.document.getBody() ); + } + } ); + + editor.setKeystroke( CKEDITOR.SHIFT + 121 /*F10*/, 'contextMenu' ); + editor.setKeystroke( CKEDITOR.CTRL + CKEDITOR.SHIFT + 121 /*F10*/, 'contextMenu' ); + } +} ); + +/** + * Whether to show the browser native context menu when the Ctrl or + * Meta (Mac) key is pressed on opening the context menu with the + * right mouse button click or the Menu key. + * + * config.browserContextMenuOnCtrl = false; + * + * @since 3.0.2 + * @cfg {Boolean} [browserContextMenuOnCtrl=true] + * @member CKEDITOR.config + */ diff --git a/sources/plugins/dialog/dialogDefinition.js b/sources/plugins/dialog/dialogDefinition.js new file mode 100644 index 00000000..79306795 --- /dev/null +++ b/sources/plugins/dialog/dialogDefinition.js @@ -0,0 +1,1032 @@ +// jscs:disable disallowMixedSpacesAndTabs +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview Defines the "virtual" dialog, dialog content and dialog button + * definition classes. + */ + +/** + * The definition of a dialog window. + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create dialogs. + * + * // There is no constructor for this class, the user just has to define an + * // object with the appropriate properties. + * + * CKEDITOR.dialog.add( 'testOnly', function( editor ) { + * return { + * title: 'Test Dialog', + * resizable: CKEDITOR.DIALOG_RESIZE_BOTH, + * minWidth: 500, + * minHeight: 400, + * contents: [ + * { + * id: 'tab1', + * label: 'First Tab', + * title: 'First Tab Title', + * accessKey: 'Q', + * elements: [ + * { + * type: 'text', + * label: 'Test Text 1', + * id: 'testText1', + * 'default': 'hello world!' + * } + * ] + * } + * ] + * }; + * } ); + * + * @class CKEDITOR.dialog.definition + */ + +/** + * The dialog title, displayed in the dialog's header. Required. + * + * @property {String} title + */ + +/** + * How the dialog can be resized, must be one of the four contents defined below. + * + * * {@link CKEDITOR#DIALOG_RESIZE_NONE} + * * {@link CKEDITOR#DIALOG_RESIZE_WIDTH} + * * {@link CKEDITOR#DIALOG_RESIZE_HEIGHT} + * * {@link CKEDITOR#DIALOG_RESIZE_BOTH} + * + * @property {Number} [resizable=CKEDITOR.DIALOG_RESIZE_NONE] + */ + +/** + * The minimum width of the dialog, in pixels. + * + * @property {Number} [minWidth=600] + */ + +/** + * The minimum height of the dialog, in pixels. + * + * @property {Number} [minHeight=400] + */ + + +/** + * The initial width of the dialog, in pixels. + * + * @since 3.5.3 + * @property {Number} [width=CKEDITOR.dialog.definition#minWidth] + */ + +/** + * The initial height of the dialog, in pixels. + * + * @since 3.5.3 + * @property {Number} [height=CKEDITOR.dialog.definition.minHeight] + */ + +/** + * The buttons in the dialog, defined as an array of + * {@link CKEDITOR.dialog.definition.button} objects. + * + * @property {Array} [buttons=[ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ]] + */ + +/** + * The contents in the dialog, defined as an array of + * {@link CKEDITOR.dialog.definition.content} objects. Required. + * + * @property {Array} contents + */ + +/** + * The function to execute when OK is pressed. + * + * @property {Function} onOk + */ + +/** + * The function to execute when Cancel is pressed. + * + * @property {Function} onCancel + */ + +/** + * The function to execute when the dialog is displayed for the first time. + * + * @property {Function} onLoad + */ + +/** + * The function to execute when the dialog is loaded (executed every time the dialog is opened). + * + * @property {Function} onShow + */ + +/** + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create dialog content pages. + * + * @class CKEDITOR.dialog.definition.content. + */ + +/** + * The id of the content page. + * + * @property {String} id + */ + +/** + * The tab label of the content page. + * + * @property {String} label + */ + +/** + * The popup message of the tab label. + * + * @property {String} title + */ + +/** + * The CTRL hotkey for switching to the tab. + * + * contentDefinition.accessKey = 'Q'; // Switch to this page when CTRL-Q is pressed. + * + * @property {String} accessKey + */ + +/** + * The UI elements contained in this content page, defined as an array of + * {@link CKEDITOR.dialog.definition.uiElement} objects. + * + * @property {Array} elements + */ + +/** + * The definition of user interface element (textarea, radio etc). + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create dialog UI elements. + * + * @class CKEDITOR.dialog.definition.uiElement + * @see CKEDITOR.ui.dialog.uiElement + */ + +/** + * The id of the UI element. + * + * @property {String} id + */ + +/** + * The type of the UI element. Required. + * + * @property {String} type + */ + +/** + * The popup label of the UI element. + * + * @property {String} title + */ + +/** + * The content that needs to be allowed to enable this UI element. + * All formats accepted by {@link CKEDITOR.filter#check} may be used. + * + * When all UI elements in a tab are disabled, this tab will be disabled automatically. + * + * @property {String/Object/CKEDITOR.style} requiredContent + */ + +/** + * CSS class names to append to the UI element. + * + * @property {String} className + */ + +/** + * Inline CSS classes to append to the UI element. + * + * @property {String} style + */ + +/** + * Horizontal alignment (in container) of the UI element. + * + * @property {String} align + */ + +/** + * Function to execute the first time the UI element is displayed. + * + * @property {Function} onLoad + */ + +/** + * Function to execute whenever the UI element's parent dialog is displayed. + * + * @property {Function} onShow + */ + +/** + * Function to execute whenever the UI element's parent dialog is closed. + * + * @property {Function} onHide + */ + +/** + * Function to execute whenever the UI element's parent + * dialog's {@link CKEDITOR.dialog#setupContent} method is executed. + * It usually takes care of the respective UI element as a standalone element. + * + * @property {Function} setup + */ + +/** + * Function to execute whenever the UI element's parent + * dialog's {@link CKEDITOR.dialog#commitContent} method is executed. + * It usually takes care of the respective UI element as a standalone element. + * + * @property {Function} commit + */ + +// ----- hbox ----------------------------------------------------------------- + +/** + * Horizontal layout box for dialog UI elements, auto-expends to available width of container. + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create horizontal layouts. + * + * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.hbox} object and can be accessed with {@link CKEDITOR.dialog#getContentElement}. + * + * // There is no constructor for this class, the user just has to define an + * // object with the appropriate properties. + * + * // Example: + * { + * type: 'hbox', + * widths: [ '25%', '25%', '50%' ], + * children: [ + * { + * type: 'text', + * id: 'id1', + * width: '40px', + * }, + * { + * type: 'text', + * id: 'id2', + * width: '40px', + * }, + * { + * type: 'text', + * id: 'id3' + * } + * ] + * } + * + * @class CKEDITOR.dialog.definition.hbox + * @extends CKEDITOR.dialog.definition.uiElement + */ + +/** + * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. + * + * @property {Array} children + */ + +/** + * (Optional) The widths of child cells. + * + * @property {Array} widths + */ + +/** + * (Optional) The height of the layout. + * + * @property {Number} height + */ + +/** + * The CSS styles to apply to this element. + * + * @property {String} styles + */ + +/** + * (Optional) The padding width inside child cells. Example: 0, 1. + * + * @property {Number} padding + */ + +/** + * (Optional) The alignment of the whole layout. Example: center, top. + * + * @property {String} align + */ + +// ----- vbox ----------------------------------------------------------------- + +/** + * Vertical layout box for dialog UI elements. + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create vertical layouts. + * + * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.vbox} object and can + * be accessed with {@link CKEDITOR.dialog#getContentElement}. + * + * // There is no constructor for this class, the user just has to define an + * // object with the appropriate properties. + * + * // Example: + * { + * type: 'vbox', + * align: 'right', + * width: '200px', + * children: [ + * { + * type: 'text', + * id: 'age', + * label: 'Age' + * }, + * { + * type: 'text', + * id: 'sex', + * label: 'Sex' + * }, + * { + * type: 'text', + * id: 'nationality', + * label: 'Nationality' + * } + * ] + * } + * + * @class CKEDITOR.dialog.definition.vbox + * @extends CKEDITOR.dialog.definition.uiElement + */ + +/** + * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. + * + * @property {Array} children + */ + +/** + * (Optional) The width of the layout. + * + * @property {Array} width + */ + +/** + * (Optional) The heights of individual cells. + * + * @property {Number} heights + */ + +/** + * The CSS styles to apply to this element. + * + * @property {String} styles + */ + +/** + * (Optional) The padding width inside child cells. Example: 0, 1. + * + * @property {Number} padding + */ + +/** + * (Optional) The alignment of the whole layout. Example: center, top. + * + * @property {String} align + */ + +/** + * (Optional) Whether the layout should expand vertically to fill its container. + * + * @property {Boolean} expand + */ + +// ----- labeled element ------------------------------------------------------ + +/** + * The definition of labeled user interface element (textarea, textInput etc). + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create dialog UI elements. + * + * @class CKEDITOR.dialog.definition.labeledElement + * @extends CKEDITOR.dialog.definition.uiElement + * @see CKEDITOR.ui.dialog.labeledElement + */ + +/** + * The label of the UI element. + * + * { + * type: 'text', + * label: 'My Label' + * } + * + * @property {String} label + */ + +/** + * (Optional) Specify the layout of the label. Set to `'horizontal'` for horizontal layout. + * The default layout is vertical. + * + * { + * type: 'text', + * label: 'My Label', + * labelLayout: 'horizontal' + * } + * + * @property {String} labelLayout + */ + +/** + * (Optional) Applies only to horizontal layouts: a two elements array of lengths to specify the widths of the + * label and the content element. See also {@link CKEDITOR.dialog.definition.labeledElement#labelLayout}. + * + * { + * type: 'text', + * label: 'My Label', + * labelLayout: 'horizontal', + * widths: [100, 200] + * } + * + * @property {Array} widths + */ + +/** + * Specify the inline style of the uiElement label. + * + * { + * type: 'text', + * label: 'My Label', + * labelStyle: 'color: red' + * } + * + * @property {String} labelStyle + */ + + +/** + * Specify the inline style of the input element. + * + * { + * type: 'text', + * label: 'My Label', + * inputStyle: 'text-align: center' + * } + * + * @since 3.6.1 + * @property {String} inputStyle + */ + +/** + * Specify the inline style of the input element container. + * + * { + * type: 'text', + * label: 'My Label', + * controlStyle: 'width: 3em' + * } + * + * @since 3.6.1 + * @property {String} controlStyle + */ + +// ----- button --------------------------------------------------------------- + +/** + * The definition of a button. + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create buttons. + * + * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.button} object + * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. + * + * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. + * + * // There is no constructor for this class, the user just has to define an + * // object with the appropriate properties. + * + * // Example: + * { + * type: 'button', + * id: 'buttonId', + * label: 'Click me', + * title: 'My title', + * onClick: function() { + * // this = CKEDITOR.ui.dialog.button + * alert( 'Clicked: ' + this.id ); + * } + * } + * + * @class CKEDITOR.dialog.definition.button + * @extends CKEDITOR.dialog.definition.uiElement + */ + +/** + * Whether the button is disabled. + * + * @property {Boolean} disabled + */ + +/** + * The label of the UI element. + * + * @property {String} label + */ + +// ----- checkbox ------ +/** + * The definition of a checkbox element. + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create groups of checkbox buttons. + * + * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.checkbox} object + * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. + * + * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. + * + * // There is no constructor for this class, the user just has to define an + * // object with the appropriate properties. + * + * // Example: + * { + * type: 'checkbox', + * id: 'agree', + * label: 'I agree', + * 'default': 'checked', + * onClick: function() { + * // this = CKEDITOR.ui.dialog.checkbox + * alert( 'Checked: ' + this.getValue() ); + * } + * } + * + * @class CKEDITOR.dialog.definition.checkbox + * @extends CKEDITOR.dialog.definition.uiElement + */ + +/** + * (Optional) The validation function. + * + * @property {Function} validate + */ + +/** + * The label of the UI element. + * + * @property {String} label + */ + +/** + * The default state. + * + * @property {String} [default='' (unchecked)] + */ + +// ----- file ----------------------------------------------------------------- + +/** + * The definition of a file upload input. + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create file upload elements. + * + * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.file} object + * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. + * + * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. + * + * // There is no constructor for this class, the user just has to define an + * // object with the appropriate properties. + * + * // Example: + * { + * type: 'file', + * id: 'upload', + * label: 'Select file from your computer', + * size: 38 + * }, + * { + * type: 'fileButton', + * id: 'fileId', + * label: 'Upload file', + * 'for': [ 'tab1', 'upload' ], + * filebrowser: { + * onSelect: function( fileUrl, data ) { + * alert( 'Successfully uploaded: ' + fileUrl ); + * } + * } + * } + * + * @class CKEDITOR.dialog.definition.file + * @extends CKEDITOR.dialog.definition.labeledElement + */ + +/** + * (Optional) The validation function. + * + * @property {Function} validate + */ + +/** + * (Optional) The action attribute of the form element associated with this file upload input. + * If empty, CKEditor will use path to server connector for currently opened folder. + * + * @property {String} action + */ + +/** + * The size of the UI element. + * + * @property {Number} size + */ + +// ----- fileButton ----------------------------------------------------------- + +/** + * The definition of a button for submitting the file in a file upload input. + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create a button for submitting the file in a file upload input. + * + * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.fileButton} object + * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. + * + * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. + * + * @class CKEDITOR.dialog.definition.fileButton + * @extends CKEDITOR.dialog.definition.uiElement + */ + +/** + * (Optional) The validation function. + * + * @property {Function} validate + */ + +/** + * The label of the UI element. + * + * @property {String} label + */ + +/** + * The instruction for CKEditor how to deal with file upload. + * By default, the file and fileButton elements will not work "as expected" if this attribute is not set. + * + * // Update field with id 'txtUrl' in the 'tab1' tab when file is uploaded. + * filebrowser: 'tab1:txtUrl' + * + * // Call custom onSelect function when file is successfully uploaded. + * filebrowser: { + * onSelect: function( fileUrl, data ) { + * alert( 'Successfully uploaded: ' + fileUrl ); + * } + * } + * + * @property {String} filebrowser/Object + */ + +/** + * An array that contains pageId and elementId of the file upload input element for which this button is created. + * + * [ pageId, elementId ] + * + * @property {String} for + */ + +// ----- html ----------------------------------------------------------------- + +/** + * The definition of a raw HTML element. + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create elements made from raw HTML code. + * + * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.html} object + * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. + * + * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. + * To access HTML elements use {@link CKEDITOR.dom.document#getById}. + * + * // There is no constructor for this class, the user just has to define an + * // object with the appropriate properties. + * + * // Example 1: + * { + * type: 'html', + * html: '

This is some sample HTML content.

' + * } + * + * // Example 2: + * // Complete sample with document.getById() call when the "Ok" button is clicked. + * var dialogDefinition = { + * title: 'Sample dialog', + * minWidth: 300, + * minHeight: 200, + * onOk: function() { + * // "this" is now a CKEDITOR.dialog object. + * var document = this.getElement().getDocument(); + * // document = CKEDITOR.dom.document + * var element = document.getById( 'myDiv' ); + * if ( element ) + * alert( element.getHtml() ); + * }, + * contents: [ + * { + * id: 'tab1', + * label: '', + * title: '', + * elements: [ + * { + * type: 'html', + * html: '
Sample text.
Another div.
' + * } + * ] + * } + * ], + * buttons: [ CKEDITOR.dialog.cancelButton, CKEDITOR.dialog.okButton ] + * }; + * + * @class CKEDITOR.dialog.definition.html + * @extends CKEDITOR.dialog.definition.uiElement + */ + +/** + * (Required) HTML code of this element. + * + * @property {String} html + */ + +// ----- radio ---------------------------------------------------------------- + +/** + * The definition of a radio group. + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create groups of radio buttons. + * + * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.radio} object + * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. + * + * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. + * + * // There is no constructor for this class, the user just has to define an + * // object with the appropriate properties. + * + * // Example: + * { + * type: 'radio', + * id: 'country', + * label: 'Which country is bigger', + * items: [ [ 'France', 'FR' ], [ 'Germany', 'DE' ] ], + * style: 'color: green', + * 'default': 'DE', + * onClick: function() { + * // this = CKEDITOR.ui.dialog.radio + * alert( 'Current value: ' + this.getValue() ); + * } + * } + * + * @class CKEDITOR.dialog.definition.radio + * @extends CKEDITOR.dialog.definition.labeledElement + */ + +/** + * The default value. + * + * @property {String} default + */ + +/** + * (Optional) The validation function. + * + * @property {Function} validate + */ + +/** + * An array of options. Each option is a 1- or 2-item array of format `[ 'Description', 'Value' ]`. + * If `'Value'` is missing, then the value would be assumed to be the same as the description. + * + * @property {Array} items + */ + +// ----- selectElement -------------------------------------------------------- + +/** + * The definition of a select element. + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create select elements. + * + * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.select} object + * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. + * + * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. + * + * // There is no constructor for this class, the user just has to define an + * // object with the appropriate properties. + * + * // Example: + * { + * type: 'select', + * id: 'sport', + * label: 'Select your favourite sport', + * items: [ [ 'Basketball' ], [ 'Baseball' ], [ 'Hockey' ], [ 'Football' ] ], + * 'default': 'Football', + * onChange: function( api ) { + * // this = CKEDITOR.ui.dialog.select + * alert( 'Current value: ' + this.getValue() ); + * } + * } + * + * @class CKEDITOR.dialog.definition.select + * @extends CKEDITOR.dialog.definition.labeledElement + */ + +/** + * The default value. + * + * @property {String} default + */ + +/** + * (Optional) The validation function. + * + * @property {Function} validate + */ + +/** + * An array of options. Each option is a 1- or 2-item array of format `[ 'Description', 'Value' ]`. + * If `'Value'` is missing, then the value would be assumed to be the same as the description. + * + * @property {Array} items + */ + +/** + * (Optional) Set this to true if you'd like to have a multiple-choice select box. + * + * @property {Boolean} [multiple=false] + */ + +/** + * (Optional) The number of items to display in the select box. + * + * @property {Number} size + */ + +// ----- textInput ------------------------------------------------------------ + +/** + * The definition of a text field (single line). + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create text fields. + * + * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.textInput} object + * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. + * + * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. + * + * // There is no constructor for this class, the user just has to define an + * // object with the appropriate properties. + * + * { + * type: 'text', + * id: 'name', + * label: 'Your name', + * 'default': '', + * validate: function() { + * if ( !this.getValue() ) { + * api.openMsgDialog( '', 'Name cannot be empty.' ); + * return false; + * } + * } + * } + * + * @class CKEDITOR.dialog.definition.textInput + * @extends CKEDITOR.dialog.definition.labeledElement + */ + +/** + * The default value. + * + * @property {String} default + */ + +/** + * (Optional) The maximum length. + * + * @property {Number} maxLength + */ + +/** + * (Optional) The size of the input field. + * + * @property {Number} size + */ + +/** + * (Optional) The validation function. + * + * @property {Function} validate + */ + +/** + * @property bidi + * @inheritdoc CKEDITOR.dialog.definition.textarea#bidi + */ + +// ----- textarea ------------------------------------------------------------- + +/** + * The definition of a text field (multiple lines). + * + * This class is not really part of the API. It just illustrates the properties + * that developers can use to define and create textarea. + * + * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.textarea} object + * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. + * + * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. + * +* // There is no constructor for this class, the user just has to define an +* // object with the appropriate properties. +* +* // Example: +* { +* type: 'textarea', +* id: 'message', +* label: 'Your comment', +* 'default': '', +* validate: function() { +* if ( this.getValue().length < 5 ) { +* api.openMsgDialog( 'The comment is too short.' ); +* return false; +* } +* } +* } + * + * @class CKEDITOR.dialog.definition.textarea + * @extends CKEDITOR.dialog.definition.labeledElement + */ + +/** + * The number of rows. + * + * @property {Number} rows + */ + +/** + * The number of columns. + * + * @property {Number} cols + */ + +/** + * (Optional) The validation function. + * + * @property {Function} validate + */ + +/** + * The default value. + * + * @property {String} default + */ + +/** + * Whether the text direction of this input should be togglable using the following keystrokes: + * + * * *Shift+Alt+End* – switch to Right-To-Left, + * * *Shift+Alt+Home* – switch to Left-To-Right. + * + * By default the input will be loaded without any text direction set, which means that + * the direction will be inherited from the editor's text direction. + * + * If the direction was set, a marker will be prepended to every non-empty value of this input: + * + * * [`\u202A`](http://unicode.org/cldr/utility/character.jsp?a=202A) – for Right-To-Left, + * * [`\u202B`](http://unicode.org/cldr/utility/character.jsp?a=202B) – for Left-To-Right. + * + * This marker allows for restoring the same text direction upon the next dialog opening. + * + * @since 4.5 + * @property {Boolean} bidi + */ diff --git a/sources/plugins/dialog/plugin.js b/sources/plugins/dialog/plugin.js new file mode 100644 index 00000000..751d7981 --- /dev/null +++ b/sources/plugins/dialog/plugin.js @@ -0,0 +1,3398 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview The floating dialog plugin. + */ + +/** + * No resize for this dialog. + * + * @readonly + * @property {Number} [=0] + * @member CKEDITOR + */ +CKEDITOR.DIALOG_RESIZE_NONE = 0; + +/** + * Only allow horizontal resizing for this dialog, disable vertical resizing. + * + * @readonly + * @property {Number} [=1] + * @member CKEDITOR + */ +CKEDITOR.DIALOG_RESIZE_WIDTH = 1; + +/** + * Only allow vertical resizing for this dialog, disable horizontal resizing. + * + * @readonly + * @property {Number} [=2] + * @member CKEDITOR + */ +CKEDITOR.DIALOG_RESIZE_HEIGHT = 2; + +/** + * Allow the dialog to be resized in both directions. + * + * @readonly + * @property {Number} [=3] + * @member CKEDITOR + */ +CKEDITOR.DIALOG_RESIZE_BOTH = 3; + +/** + * Dialog state when idle. + * + * @readonly + * @property {Number} [=1] + * @member CKEDITOR + */ +CKEDITOR.DIALOG_STATE_IDLE = 1; + +/** + * Dialog state when busy. + * + * @readonly + * @property {Number} [=2] + * @member CKEDITOR + */ +CKEDITOR.DIALOG_STATE_BUSY = 2; + +( function() { + var cssLength = CKEDITOR.tools.cssLength; + + function isTabVisible( tabId ) { + return !!this._.tabs[ tabId ][ 0 ].$.offsetHeight; + } + + function getPreviousVisibleTab() { + var tabId = this._.currentTabId, + length = this._.tabIdList.length, + tabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, tabId ) + length; + + for ( var i = tabIndex - 1; i > tabIndex - length; i-- ) { + if ( isTabVisible.call( this, this._.tabIdList[ i % length ] ) ) + return this._.tabIdList[ i % length ]; + } + + return null; + } + + function getNextVisibleTab() { + var tabId = this._.currentTabId, + length = this._.tabIdList.length, + tabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, tabId ); + + for ( var i = tabIndex + 1; i < tabIndex + length; i++ ) { + if ( isTabVisible.call( this, this._.tabIdList[ i % length ] ) ) + return this._.tabIdList[ i % length ]; + } + + return null; + } + + + function clearOrRecoverTextInputValue( container, isRecover ) { + var inputs = container.$.getElementsByTagName( 'input' ); + for ( var i = 0, length = inputs.length; i < length; i++ ) { + var item = new CKEDITOR.dom.element( inputs[ i ] ); + + if ( item.getAttribute( 'type' ).toLowerCase() == 'text' ) { + if ( isRecover ) { + item.setAttribute( 'value', item.getCustomData( 'fake_value' ) || '' ); + item.removeCustomData( 'fake_value' ); + } else { + item.setCustomData( 'fake_value', item.getAttribute( 'value' ) ); + item.setAttribute( 'value', '' ); + } + } + } + } + + // Handle dialog element validation state UI changes. + function handleFieldValidated( isValid, msg ) { + var input = this.getInputElement(); + if ( input ) + isValid ? input.removeAttribute( 'aria-invalid' ) : input.setAttribute( 'aria-invalid', true ); + + if ( !isValid ) { + if ( this.select ) + this.select(); + else + this.focus(); + } + + msg && alert( msg ); // jshint ignore:line + + this.fire( 'validated', { valid: isValid, msg: msg } ); + } + + function resetField() { + var input = this.getInputElement(); + input && input.removeAttribute( 'aria-invalid' ); + } + + var templateSource = ''; + + function buildDialog( editor ) { + var element = CKEDITOR.dom.element.createFromHtml( CKEDITOR.addTemplate( 'dialog', templateSource ).output( { + id: CKEDITOR.tools.getNextNumber(), + editorId: editor.id, + langDir: editor.lang.dir, + langCode: editor.langCode, + editorDialogClass: 'cke_editor_' + editor.name.replace( /\./g, '\\.' ) + '_dialog', + closeTitle: editor.lang.common.close, + hidpi: CKEDITOR.env.hidpi ? 'cke_hidpi' : '' + } ) ); + + // TODO: Change this to getById(), so it'll support custom templates. + var body = element.getChild( [ 0, 0, 0, 0, 0 ] ), + title = body.getChild( 0 ), + close = body.getChild( 1 ); + + // Don't allow dragging on dialog (#13184). + editor.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement( body ); + + // IFrame shim for dialog that masks activeX in IE. (#7619) + if ( CKEDITOR.env.ie && !CKEDITOR.env.quirks && !CKEDITOR.env.edge ) { + var src = 'javascript:void(function(){' + encodeURIComponent( 'document.open();(' + CKEDITOR.tools.fixDomain + ')();document.close();' ) + '}())', // jshint ignore:line + iframe = CKEDITOR.dom.element.createFromHtml( '' ); + iframe.appendTo( body.getParent() ); + } + + // Make the Title and Close Button unselectable. + title.unselectable(); + close.unselectable(); + + return { + element: element, + parts: { + dialog: element.getChild( 0 ), + title: title, + close: close, + tabs: body.getChild( 2 ), + contents: body.getChild( [ 3, 0, 0, 0 ] ), + footer: body.getChild( [ 3, 0, 1, 0 ] ) + } + }; + } + + /** + * This is the base class for runtime dialog objects. An instance of this + * class represents a single named dialog for a single editor instance. + * + * var dialogObj = new CKEDITOR.dialog( editor, 'smiley' ); + * + * @class + * @constructor Creates a dialog class instance. + * @param {Object} editor The editor which created the dialog. + * @param {String} dialogName The dialog's registered name. + */ + CKEDITOR.dialog = function( editor, dialogName ) { + // Load the dialog definition. + var definition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ], + defaultDefinition = CKEDITOR.tools.clone( defaultDialogDefinition ), + buttonsOrder = editor.config.dialog_buttonsOrder || 'OS', + dir = editor.lang.dir, + tabsToRemove = {}, + i, processed, stopPropagation; + + if ( ( buttonsOrder == 'OS' && CKEDITOR.env.mac ) || // The buttons in MacOS Apps are in reverse order (#4750) + ( buttonsOrder == 'rtl' && dir == 'ltr' ) || ( buttonsOrder == 'ltr' && dir == 'rtl' ) ) + defaultDefinition.buttons.reverse(); + + + // Completes the definition with the default values. + definition = CKEDITOR.tools.extend( definition( editor ), defaultDefinition ); + + // Clone a functionally independent copy for this dialog. + definition = CKEDITOR.tools.clone( definition ); + + // Create a complex definition object, extending it with the API + // functions. + definition = new definitionObject( this, definition ); + + var themeBuilt = buildDialog( editor ); + + // Initialize some basic parameters. + this._ = { + editor: editor, + element: themeBuilt.element, + name: dialogName, + contentSize: { width: 0, height: 0 }, + size: { width: 0, height: 0 }, + contents: {}, + buttons: {}, + accessKeyMap: {}, + + // Initialize the tab and page map. + tabs: {}, + tabIdList: [], + currentTabId: null, + currentTabIndex: null, + pageCount: 0, + lastTab: null, + tabBarMode: false, + + // Initialize the tab order array for input widgets. + focusList: [], + currentFocusIndex: 0, + hasFocus: false + }; + + this.parts = themeBuilt.parts; + + CKEDITOR.tools.setTimeout( function() { + editor.fire( 'ariaWidget', this.parts.contents ); + }, 0, this ); + + // Set the startup styles for the dialog, avoiding it enlarging the + // page size on the dialog creation. + var startStyles = { + position: CKEDITOR.env.ie6Compat ? 'absolute' : 'fixed', + top: 0, + visibility: 'hidden' + }; + + startStyles[ dir == 'rtl' ? 'right' : 'left' ] = 0; + this.parts.dialog.setStyles( startStyles ); + + + // Call the CKEDITOR.event constructor to initialize this instance. + CKEDITOR.event.call( this ); + + // Fire the "dialogDefinition" event, making it possible to customize + // the dialog definition. + this.definition = definition = CKEDITOR.fire( 'dialogDefinition', { + name: dialogName, + definition: definition + }, editor ).definition; + + // Cache tabs that should be removed. + if ( !( 'removeDialogTabs' in editor._ ) && editor.config.removeDialogTabs ) { + var removeContents = editor.config.removeDialogTabs.split( ';' ); + + for ( i = 0; i < removeContents.length; i++ ) { + var parts = removeContents[ i ].split( ':' ); + if ( parts.length == 2 ) { + var removeDialogName = parts[ 0 ]; + if ( !tabsToRemove[ removeDialogName ] ) + tabsToRemove[ removeDialogName ] = []; + tabsToRemove[ removeDialogName ].push( parts[ 1 ] ); + } + } + editor._.removeDialogTabs = tabsToRemove; + } + + // Remove tabs of this dialog. + if ( editor._.removeDialogTabs && ( tabsToRemove = editor._.removeDialogTabs[ dialogName ] ) ) { + for ( i = 0; i < tabsToRemove.length; i++ ) + definition.removeContents( tabsToRemove[ i ] ); + } + + // Initialize load, show, hide, ok and cancel events. + if ( definition.onLoad ) + this.on( 'load', definition.onLoad ); + + if ( definition.onShow ) + this.on( 'show', definition.onShow ); + + if ( definition.onHide ) + this.on( 'hide', definition.onHide ); + + if ( definition.onOk ) { + this.on( 'ok', function( evt ) { + // Dialog confirm might probably introduce content changes (#5415). + editor.fire( 'saveSnapshot' ); + setTimeout( function() { + editor.fire( 'saveSnapshot' ); + }, 0 ); + if ( definition.onOk.call( this, evt ) === false ) + evt.data.hide = false; + } ); + } + + // Set default dialog state. + this.state = CKEDITOR.DIALOG_STATE_IDLE; + + if ( definition.onCancel ) { + this.on( 'cancel', function( evt ) { + if ( definition.onCancel.call( this, evt ) === false ) + evt.data.hide = false; + } ); + } + + var me = this; + + // Iterates over all items inside all content in the dialog, calling a + // function for each of them. + var iterContents = function( func ) { + var contents = me._.contents, + stop = false; + + for ( var i in contents ) { + for ( var j in contents[ i ] ) { + stop = func.call( this, contents[ i ][ j ] ); + if ( stop ) + return; + } + } + }; + + this.on( 'ok', function( evt ) { + iterContents( function( item ) { + if ( item.validate ) { + var retval = item.validate( this ), + invalid = ( typeof retval == 'string' ) || retval === false; + + if ( invalid ) { + evt.data.hide = false; + evt.stop(); + } + + handleFieldValidated.call( item, !invalid, typeof retval == 'string' ? retval : undefined ); + return invalid; + } + } ); + }, this, null, 0 ); + + this.on( 'cancel', function( evt ) { + iterContents( function( item ) { + if ( item.isChanged() ) { + if ( !editor.config.dialog_noConfirmCancel && !confirm( editor.lang.common.confirmCancel ) ) // jshint ignore:line + evt.data.hide = false; + return true; + } + } ); + }, this, null, 0 ); + + this.parts.close.on( 'click', function( evt ) { + if ( this.fire( 'cancel', { hide: true } ).hide !== false ) + this.hide(); + evt.data.preventDefault(); + }, this ); + + // Sort focus list according to tab order definitions. + function setupFocus() { + var focusList = me._.focusList; + focusList.sort( function( a, b ) { + // Mimics browser tab order logics; + if ( a.tabIndex != b.tabIndex ) + return b.tabIndex - a.tabIndex; + // Sort is not stable in some browsers, + // fall-back the comparator to 'focusIndex'; + else + return a.focusIndex - b.focusIndex; + } ); + + var size = focusList.length; + for ( var i = 0; i < size; i++ ) + focusList[ i ].focusIndex = i; + } + + // Expects 1 or -1 as an offset, meaning direction of the offset change. + function changeFocus( offset ) { + var focusList = me._.focusList; + offset = offset || 0; + + if ( focusList.length < 1 ) + return; + + var startIndex = me._.currentFocusIndex; + + if ( me._.tabBarMode && offset < 0 ) { + // If we are in tab mode, we need to mimic that we started tabbing back from the first + // focusList (so it will go to the last one). + startIndex = 0; + } + + // Trigger the 'blur' event of any input element before anything, + // since certain UI updates may depend on it. + try { + focusList[ startIndex ].getInputElement().$.blur(); + } catch ( e ) {} + + var currentIndex = startIndex, + hasTabs = me._.pageCount > 1; + + do { + currentIndex = currentIndex + offset; + + if ( hasTabs && !me._.tabBarMode && ( currentIndex == focusList.length || currentIndex == -1 ) ) { + // If the dialog was not in tab mode, then focus the first tab (#13027). + me._.tabBarMode = true; + me._.tabs[ me._.currentTabId ][ 0 ].focus(); + me._.currentFocusIndex = -1; + + // Early return, in order to avoid accessing focusList[ -1 ]. + return; + } + + currentIndex = ( currentIndex + focusList.length ) % focusList.length; + + if ( currentIndex == startIndex ) { + break; + } + } while ( offset && !focusList[ currentIndex ].isFocusable() ); + + focusList[ currentIndex ].focus(); + + // Select whole field content. + if ( focusList[ currentIndex ].type == 'text' ) + focusList[ currentIndex ].select(); + } + + this.changeFocus = changeFocus; + + + function keydownHandler( evt ) { + // If I'm not the top dialog, ignore. + if ( me != CKEDITOR.dialog._.currentTop ) + return; + + var keystroke = evt.data.getKeystroke(), + rtl = editor.lang.dir == 'rtl', + arrowKeys = [ 37, 38, 39, 40 ], + button; + + processed = stopPropagation = 0; + + if ( keystroke == 9 || keystroke == CKEDITOR.SHIFT + 9 ) { + var shiftPressed = ( keystroke == CKEDITOR.SHIFT + 9 ); + changeFocus( shiftPressed ? -1 : 1 ); + processed = 1; + } else if ( keystroke == CKEDITOR.ALT + 121 && !me._.tabBarMode && me.getPageCount() > 1 ) { + // Alt-F10 puts focus into the current tab item in the tab bar. + me._.tabBarMode = true; + me._.tabs[ me._.currentTabId ][ 0 ].focus(); + me._.currentFocusIndex = -1; + processed = 1; + } else if ( CKEDITOR.tools.indexOf( arrowKeys, keystroke ) != -1 && me._.tabBarMode ) { + // Array with key codes that activate previous tab. + var prevKeyCodes = [ + // Depending on the lang dir: right or left key + rtl ? 39 : 37, + // Top/bot arrow: actually for both cases it's the same. + 38 + ], + nextId = CKEDITOR.tools.indexOf( prevKeyCodes, keystroke ) != -1 ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me ); + + me.selectPage( nextId ); + me._.tabs[ nextId ][ 0 ].focus(); + processed = 1; + } else if ( ( keystroke == 13 || keystroke == 32 ) && me._.tabBarMode ) { + this.selectPage( this._.currentTabId ); + this._.tabBarMode = false; + this._.currentFocusIndex = -1; + changeFocus( 1 ); + processed = 1; + } + // If user presses enter key in a text box, it implies clicking OK for the dialog. + else if ( keystroke == 13 /*ENTER*/ ) { + // Don't do that for a target that handles ENTER. + var target = evt.data.getTarget(); + if ( !target.is( 'a', 'button', 'select', 'textarea' ) && ( !target.is( 'input' ) || target.$.type != 'button' ) ) { + button = this.getButton( 'ok' ); + button && CKEDITOR.tools.setTimeout( button.click, 0, button ); + processed = 1; + } + stopPropagation = 1; // Always block the propagation (#4269) + } else if ( keystroke == 27 /*ESC*/ ) { + button = this.getButton( 'cancel' ); + + // If there's a Cancel button, click it, else just fire the cancel event and hide the dialog. + if ( button ) + CKEDITOR.tools.setTimeout( button.click, 0, button ); + else { + if ( this.fire( 'cancel', { hide: true } ).hide !== false ) + this.hide(); + } + stopPropagation = 1; // Always block the propagation (#4269) + } else { + return; + } + + keypressHandler( evt ); + } + + function keypressHandler( evt ) { + if ( processed ) + evt.data.preventDefault( 1 ); + else if ( stopPropagation ) + evt.data.stopPropagation(); + } + + var dialogElement = this._.element; + + editor.focusManager.add( dialogElement, 1 ); + + // Add the dialog keyboard handlers. + this.on( 'show', function() { + dialogElement.on( 'keydown', keydownHandler, this ); + + // Some browsers instead, don't cancel key events in the keydown, but in the + // keypress. So we must do a longer trip in those cases. (#4531,#8985) + if ( CKEDITOR.env.gecko ) + dialogElement.on( 'keypress', keypressHandler, this ); + + } ); + this.on( 'hide', function() { + dialogElement.removeListener( 'keydown', keydownHandler ); + if ( CKEDITOR.env.gecko ) + dialogElement.removeListener( 'keypress', keypressHandler ); + + // Reset fields state when closing dialog. + iterContents( function( item ) { + resetField.apply( item ); + } ); + } ); + this.on( 'iframeAdded', function( evt ) { + var doc = new CKEDITOR.dom.document( evt.data.iframe.$.contentWindow.document ); + doc.on( 'keydown', keydownHandler, this, null, 0 ); + } ); + + // Auto-focus logic in dialog. + this.on( 'show', function() { + // Setup tabIndex on showing the dialog instead of on loading + // to allow dynamic tab order happen in dialog definition. + setupFocus(); + + var hasTabs = me._.pageCount > 1; + + if ( editor.config.dialog_startupFocusTab && hasTabs ) { + me._.tabBarMode = true; + me._.tabs[ me._.currentTabId ][ 0 ].focus(); + me._.currentFocusIndex = -1; + } else if ( !this._.hasFocus ) { + // http://dev.ckeditor.com/ticket/13114#comment:4. + this._.currentFocusIndex = hasTabs ? -1 : this._.focusList.length - 1; + + // Decide where to put the initial focus. + if ( definition.onFocus ) { + var initialFocus = definition.onFocus.call( this ); + // Focus the field that the user specified. + initialFocus && initialFocus.focus(); + } + // Focus the first field in layout order. + else { + changeFocus( 1 ); + } + } + }, this, null, 0xffffffff ); + + // IE6 BUG: Text fields and text areas are only half-rendered the first time the dialog appears in IE6 (#2661). + // This is still needed after [2708] and [2709] because text fields in hidden TR tags are still broken. + if ( CKEDITOR.env.ie6Compat ) { + this.on( 'load', function() { + var outer = this.getElement(), + inner = outer.getFirst(); + inner.remove(); + inner.appendTo( outer ); + }, this ); + } + + initDragAndDrop( this ); + initResizeHandles( this ); + + // Insert the title. + ( new CKEDITOR.dom.text( definition.title, CKEDITOR.document ) ).appendTo( this.parts.title ); + + // Insert the tabs and contents. + for ( i = 0; i < definition.contents.length; i++ ) { + var page = definition.contents[ i ]; + page && this.addPage( page ); + } + + this.parts.tabs.on( 'click', function( evt ) { + var target = evt.data.getTarget(); + // If we aren't inside a tab, bail out. + if ( target.hasClass( 'cke_dialog_tab' ) ) { + // Get the ID of the tab, without the 'cke_' prefix and the unique number suffix. + var id = target.$.id; + this.selectPage( id.substring( 4, id.lastIndexOf( '_' ) ) ); + + if ( this._.tabBarMode ) { + this._.tabBarMode = false; + this._.currentFocusIndex = -1; + changeFocus( 1 ); + } + evt.data.preventDefault(); + } + }, this ); + + // Insert buttons. + var buttonsHtml = [], + buttons = CKEDITOR.dialog._.uiElementBuilders.hbox.build( this, { + type: 'hbox', + className: 'cke_dialog_footer_buttons', + widths: [], + children: definition.buttons + }, buttonsHtml ).getChild(); + this.parts.footer.setHtml( buttonsHtml.join( '' ) ); + + for ( i = 0; i < buttons.length; i++ ) + this._.buttons[ buttons[ i ].id ] = buttons[ i ]; + + /** + * Current state of the dialog. Use the {@link #setState} method to update it. + * See the {@link #event-state} event to know more. + * + * @readonly + * @property {Number} [state=CKEDITOR.DIALOG_STATE_IDLE] + */ + }; + + // Focusable interface. Use it via dialog.addFocusable. + function Focusable( dialog, element, index ) { + this.element = element; + this.focusIndex = index; + // TODO: support tabIndex for focusables. + this.tabIndex = 0; + this.isFocusable = function() { + return !element.getAttribute( 'disabled' ) && element.isVisible(); + }; + this.focus = function() { + dialog._.currentFocusIndex = this.focusIndex; + this.element.focus(); + }; + // Bind events + element.on( 'keydown', function( e ) { + if ( e.data.getKeystroke() in { 32: 1, 13: 1 } ) + this.fire( 'click' ); + } ); + element.on( 'focus', function() { + this.fire( 'mouseover' ); + } ); + element.on( 'blur', function() { + this.fire( 'mouseout' ); + } ); + } + + // Re-layout the dialog on window resize. + function resizeWithWindow( dialog ) { + var win = CKEDITOR.document.getWindow(); + function resizeHandler() { + dialog.layout(); + } + win.on( 'resize', resizeHandler ); + dialog.on( 'hide', function() { + win.removeListener( 'resize', resizeHandler ); + } ); + } + + CKEDITOR.dialog.prototype = { + destroy: function() { + this.hide(); + this._.element.remove(); + }, + + /** + * Resizes the dialog. + * + * dialogObj.resize( 800, 640 ); + * + * @method + * @param {Number} width The width of the dialog in pixels. + * @param {Number} height The height of the dialog in pixels. + */ + resize: ( function() { + return function( width, height ) { + if ( this._.contentSize && this._.contentSize.width == width && this._.contentSize.height == height ) + return; + + CKEDITOR.dialog.fire( 'resize', { + dialog: this, + width: width, + height: height + }, this._.editor ); + + this.fire( 'resize', { + width: width, + height: height + }, this._.editor ); + + var contents = this.parts.contents; + contents.setStyles( { + width: width + 'px', + height: height + 'px' + } ); + + // Update dialog position when dimension get changed in RTL. + if ( this._.editor.lang.dir == 'rtl' && this._.position ) + this._.position.x = CKEDITOR.document.getWindow().getViewPaneSize().width - this._.contentSize.width - parseInt( this._.element.getFirst().getStyle( 'right' ), 10 ); + + this._.contentSize = { width: width, height: height }; + }; + } )(), + + /** + * Gets the current size of the dialog in pixels. + * + * var width = dialogObj.getSize().width; + * + * @returns {Object} + * @returns {Number} return.width + * @returns {Number} return.height + */ + getSize: function() { + var element = this._.element.getFirst(); + return { width: element.$.offsetWidth || 0, height: element.$.offsetHeight || 0 }; + }, + + /** + * Moves the dialog to an `(x, y)` coordinate relative to the window. + * + * dialogObj.move( 10, 40 ); + * + * @method + * @param {Number} x The target x-coordinate. + * @param {Number} y The target y-coordinate. + * @param {Boolean} save Flag indicate whether the dialog position should be remembered on next open up. + */ + move: function( x, y, save ) { + + // The dialog may be fixed positioned or absolute positioned. Ask the + // browser what is the current situation first. + var element = this._.element.getFirst(), rtl = this._.editor.lang.dir == 'rtl'; + var isFixed = element.getComputedStyle( 'position' ) == 'fixed'; + + // (#8888) In some cases of a very small viewport, dialog is incorrectly + // positioned in IE7. It also happens that it remains sticky and user cannot + // scroll down/up to reveal dialog's content below/above the viewport; this is + // cumbersome. + // The only way to fix this is to move mouse out of the browser and + // go back to see that dialog position is automagically fixed. No events, + // no style change - pure magic. This is a IE7 rendering issue, which can be + // fixed with dummy style redraw on each move. + if ( CKEDITOR.env.ie ) + element.setStyle( 'zoom', '100%' ); + + if ( isFixed && this._.position && this._.position.x == x && this._.position.y == y ) + return; + + // Save the current position. + this._.position = { x: x, y: y }; + + // If not fixed positioned, add scroll position to the coordinates. + if ( !isFixed ) { + var scrollPosition = CKEDITOR.document.getWindow().getScrollPosition(); + x += scrollPosition.x; + y += scrollPosition.y; + } + + // Translate coordinate for RTL. + if ( rtl ) { + var dialogSize = this.getSize(), viewPaneSize = CKEDITOR.document.getWindow().getViewPaneSize(); + x = viewPaneSize.width - dialogSize.width - x; + } + + var styles = { 'top': ( y > 0 ? y : 0 ) + 'px' }; + styles[ rtl ? 'right' : 'left' ] = ( x > 0 ? x : 0 ) + 'px'; + + element.setStyles( styles ); + + save && ( this._.moved = 1 ); + }, + + /** + * Gets the dialog's position in the window. + * + * var dialogX = dialogObj.getPosition().x; + * + * @returns {Object} + * @returns {Number} return.x + * @returns {Number} return.y + */ + getPosition: function() { + return CKEDITOR.tools.extend( {}, this._.position ); + }, + + /** + * Shows the dialog box. + * + * dialogObj.show(); + */ + show: function() { + // Insert the dialog's element to the root document. + var element = this._.element; + var definition = this.definition; + if ( !( element.getParent() && element.getParent().equals( CKEDITOR.document.getBody() ) ) ) + element.appendTo( CKEDITOR.document.getBody() ); + else + element.setStyle( 'display', 'block' ); + + // First, set the dialog to an appropriate size. + this.resize( + this._.contentSize && this._.contentSize.width || definition.width || definition.minWidth, + this._.contentSize && this._.contentSize.height || definition.height || definition.minHeight + ); + + // Reset all inputs back to their default value. + this.reset(); + + // Select the first tab by default. + this.selectPage( this.definition.contents[ 0 ].id ); + + // Set z-index. + if ( CKEDITOR.dialog._.currentZIndex === null ) + CKEDITOR.dialog._.currentZIndex = this._.editor.config.baseFloatZIndex; + this._.element.getFirst().setStyle( 'z-index', CKEDITOR.dialog._.currentZIndex += 10 ); + + // Maintain the dialog ordering and dialog cover. + if ( CKEDITOR.dialog._.currentTop === null ) { + CKEDITOR.dialog._.currentTop = this; + this._.parentDialog = null; + showCover( this._.editor ); + + } else { + this._.parentDialog = CKEDITOR.dialog._.currentTop; + var parentElement = this._.parentDialog.getElement().getFirst(); + parentElement.$.style.zIndex -= Math.floor( this._.editor.config.baseFloatZIndex / 2 ); + CKEDITOR.dialog._.currentTop = this; + } + + element.on( 'keydown', accessKeyDownHandler ); + element.on( 'keyup', accessKeyUpHandler ); + + // Reset the hasFocus state. + this._.hasFocus = false; + + for ( var i in definition.contents ) { + if ( !definition.contents[ i ] ) + continue; + + var content = definition.contents[ i ], + tab = this._.tabs[ content.id ], + requiredContent = content.requiredContent, + enableElements = 0; + + if ( !tab ) + continue; + + for ( var j in this._.contents[ content.id ] ) { + var elem = this._.contents[ content.id ][ j ]; + + if ( elem.type == 'hbox' || elem.type == 'vbox' || !elem.getInputElement() ) + continue; + + if ( elem.requiredContent && !this._.editor.activeFilter.check( elem.requiredContent ) ) + elem.disable(); + else { + elem.enable(); + enableElements++; + } + } + + if ( !enableElements || ( requiredContent && !this._.editor.activeFilter.check( requiredContent ) ) ) + tab[ 0 ].addClass( 'cke_dialog_tab_disabled' ); + else + tab[ 0 ].removeClass( 'cke_dialog_tab_disabled' ); + } + + CKEDITOR.tools.setTimeout( function() { + this.layout(); + resizeWithWindow( this ); + + this.parts.dialog.setStyle( 'visibility', '' ); + + // Execute onLoad for the first show. + this.fireOnce( 'load', {} ); + CKEDITOR.ui.fire( 'ready', this ); + + this.fire( 'show', {} ); + this._.editor.fire( 'dialogShow', this ); + + if ( !this._.parentDialog ) + this._.editor.focusManager.lock(); + + // Save the initial values of the dialog. + this.foreach( function( contentObj ) { + contentObj.setInitValue && contentObj.setInitValue(); + } ); + + }, 100, this ); + }, + + /** + * Rearrange the dialog to its previous position or the middle of the window. + * + * @since 3.5 + */ + layout: function() { + var el = this.parts.dialog; + var dialogSize = this.getSize(); + var win = CKEDITOR.document.getWindow(), + viewSize = win.getViewPaneSize(); + + var posX = ( viewSize.width - dialogSize.width ) / 2, + posY = ( viewSize.height - dialogSize.height ) / 2; + + // Switch to absolute position when viewport is smaller than dialog size. + if ( !CKEDITOR.env.ie6Compat ) { + if ( dialogSize.height + ( posY > 0 ? posY : 0 ) > viewSize.height || dialogSize.width + ( posX > 0 ? posX : 0 ) > viewSize.width ) { + el.setStyle( 'position', 'absolute' ); + } else { + el.setStyle( 'position', 'fixed' ); + } + } + + this.move( this._.moved ? this._.position.x : posX, this._.moved ? this._.position.y : posY ); + }, + + /** + * Executes a function for each UI element. + * + * @param {Function} fn Function to execute for each UI element. + * @returns {CKEDITOR.dialog} The current dialog object. + */ + foreach: function( fn ) { + for ( var i in this._.contents ) { + for ( var j in this._.contents[ i ] ) { + fn.call( this, this._.contents[i][j] ); + } + } + + return this; + }, + + /** + * Resets all input values in the dialog. + * + * dialogObj.reset(); + * + * @method + * @chainable + */ + reset: ( function() { + var fn = function( widget ) { + if ( widget.reset ) + widget.reset( 1 ); + }; + return function() { + this.foreach( fn ); + return this; + }; + } )(), + + + /** + * Calls the {@link CKEDITOR.dialog.definition.uiElement#setup} method of each + * of the UI elements, with the arguments passed through it. + * It is usually being called when the dialog is opened, to put the initial value inside the field. + * + * dialogObj.setupContent(); + * + * var timestamp = ( new Date() ).valueOf(); + * dialogObj.setupContent( timestamp ); + */ + setupContent: function() { + var args = arguments; + this.foreach( function( widget ) { + if ( widget.setup ) + widget.setup.apply( widget, args ); + } ); + }, + + /** + * Calls the {@link CKEDITOR.dialog.definition.uiElement#commit} method of each + * of the UI elements, with the arguments passed through it. + * It is usually being called when the user confirms the dialog, to process the values. + * + * dialogObj.commitContent(); + * + * var timestamp = ( new Date() ).valueOf(); + * dialogObj.commitContent( timestamp ); + */ + commitContent: function() { + var args = arguments; + this.foreach( function( widget ) { + // Make sure IE triggers "change" event on last focused input before closing the dialog. (#7915) + if ( CKEDITOR.env.ie && this._.currentFocusIndex == widget.focusIndex ) + widget.getInputElement().$.blur(); + + if ( widget.commit ) + widget.commit.apply( widget, args ); + } ); + }, + + /** + * Hides the dialog box. + * + * dialogObj.hide(); + */ + hide: function() { + if ( !this.parts.dialog.isVisible() ) + return; + + this.fire( 'hide', {} ); + this._.editor.fire( 'dialogHide', this ); + // Reset the tab page. + this.selectPage( this._.tabIdList[ 0 ] ); + var element = this._.element; + element.setStyle( 'display', 'none' ); + this.parts.dialog.setStyle( 'visibility', 'hidden' ); + // Unregister all access keys associated with this dialog. + unregisterAccessKey( this ); + + // Close any child(top) dialogs first. + while ( CKEDITOR.dialog._.currentTop != this ) + CKEDITOR.dialog._.currentTop.hide(); + + // Maintain dialog ordering and remove cover if needed. + if ( !this._.parentDialog ) + hideCover( this._.editor ); + else { + var parentElement = this._.parentDialog.getElement().getFirst(); + parentElement.setStyle( 'z-index', parseInt( parentElement.$.style.zIndex, 10 ) + Math.floor( this._.editor.config.baseFloatZIndex / 2 ) ); + } + CKEDITOR.dialog._.currentTop = this._.parentDialog; + + // Deduct or clear the z-index. + if ( !this._.parentDialog ) { + CKEDITOR.dialog._.currentZIndex = null; + + // Remove access key handlers. + element.removeListener( 'keydown', accessKeyDownHandler ); + element.removeListener( 'keyup', accessKeyUpHandler ); + + var editor = this._.editor; + editor.focus(); + + // Give a while before unlock, waiting for focus to return to the editable. (#172) + setTimeout( function() { + editor.focusManager.unlock(); + + // Fixed iOS focus issue (#12381). + // Keep in mind that editor.focus() does not work in this case. + if ( CKEDITOR.env.iOS ) { + editor.window.focus(); + } + }, 0 ); + + } else { + CKEDITOR.dialog._.currentZIndex -= 10; + } + + delete this._.parentDialog; + // Reset the initial values of the dialog. + this.foreach( function( contentObj ) { + contentObj.resetInitValue && contentObj.resetInitValue(); + } ); + + // Reset dialog state back to IDLE, if busy (#13213). + this.setState( CKEDITOR.DIALOG_STATE_IDLE ); + }, + + /** + * Adds a tabbed page into the dialog. + * + * @param {Object} contents Content definition. + */ + addPage: function( contents ) { + if ( contents.requiredContent && !this._.editor.filter.check( contents.requiredContent ) ) + return; + + var pageHtml = [], + titleHtml = contents.label ? ' title="' + CKEDITOR.tools.htmlEncode( contents.label ) + '"' : '', + vbox = CKEDITOR.dialog._.uiElementBuilders.vbox.build( this, { + type: 'vbox', + className: 'cke_dialog_page_contents', + children: contents.elements, + expand: !!contents.expand, + padding: contents.padding, + style: contents.style || 'width: 100%;' + }, pageHtml ); + + var contentMap = this._.contents[ contents.id ] = {}, + cursor, + children = vbox.getChild(), + enabledFields = 0; + + while ( ( cursor = children.shift() ) ) { + // Count all allowed fields. + if ( !cursor.notAllowed && cursor.type != 'hbox' && cursor.type != 'vbox' ) + enabledFields++; + + contentMap[ cursor.id ] = cursor; + if ( typeof cursor.getChild == 'function' ) + children.push.apply( children, cursor.getChild() ); + } + + // If all fields are disabled (because they are not allowed) hide this tab. + if ( !enabledFields ) + contents.hidden = true; + + // Create the HTML for the tab and the content block. + var page = CKEDITOR.dom.element.createFromHtml( pageHtml.join( '' ) ); + page.setAttribute( 'role', 'tabpanel' ); + + var env = CKEDITOR.env; + var tabId = 'cke_' + contents.id + '_' + CKEDITOR.tools.getNextNumber(), + tab = CKEDITOR.dom.element.createFromHtml( [ + ' 0 ? ' cke_last' : 'cke_first' ), + titleHtml, + ( !!contents.hidden ? ' style="display:none"' : '' ), + ' id="', tabId, '"', + env.gecko && !env.hc ? '' : ' href="javascript:void(0)"', + ' tabIndex="-1"', + ' hidefocus="true"', + ' role="tab">', + contents.label, + '' + ].join( '' ) ); + + page.setAttribute( 'aria-labelledby', tabId ); + + // Take records for the tabs and elements created. + this._.tabs[ contents.id ] = [ tab, page ]; + this._.tabIdList.push( contents.id ); + !contents.hidden && this._.pageCount++; + this._.lastTab = tab; + this.updateStyle(); + + // Attach the DOM nodes. + + page.setAttribute( 'name', contents.id ); + page.appendTo( this.parts.contents ); + + tab.unselectable(); + this.parts.tabs.append( tab ); + + // Add access key handlers if access key is defined. + if ( contents.accessKey ) { + registerAccessKey( this, this, 'CTRL+' + contents.accessKey, tabAccessKeyDown, tabAccessKeyUp ); + this._.accessKeyMap[ 'CTRL+' + contents.accessKey ] = contents.id; + } + }, + + /** + * Activates a tab page in the dialog by its id. + * + * dialogObj.selectPage( 'tab_1' ); + * + * @param {String} id The id of the dialog tab to be activated. + */ + selectPage: function( id ) { + if ( this._.currentTabId == id ) + return; + + if ( this._.tabs[ id ][ 0 ].hasClass( 'cke_dialog_tab_disabled' ) ) + return; + + // If event was canceled - do nothing. + if ( this.fire( 'selectPage', { page: id, currentPage: this._.currentTabId } ) === false ) + return; + + // Hide the non-selected tabs and pages. + for ( var i in this._.tabs ) { + var tab = this._.tabs[ i ][ 0 ], + page = this._.tabs[ i ][ 1 ]; + if ( i != id ) { + tab.removeClass( 'cke_dialog_tab_selected' ); + page.hide(); + } + page.setAttribute( 'aria-hidden', i != id ); + } + + var selected = this._.tabs[ id ]; + selected[ 0 ].addClass( 'cke_dialog_tab_selected' ); + + // [IE] an invisible input[type='text'] will enlarge it's width + // if it's value is long when it shows, so we clear it's value + // before it shows and then recover it (#5649) + if ( CKEDITOR.env.ie6Compat || CKEDITOR.env.ie7Compat ) { + clearOrRecoverTextInputValue( selected[ 1 ] ); + selected[ 1 ].show(); + setTimeout( function() { + clearOrRecoverTextInputValue( selected[ 1 ], 1 ); + }, 0 ); + } else { + selected[ 1 ].show(); + } + + this._.currentTabId = id; + this._.currentTabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, id ); + }, + + /** + * Dialog state-specific style updates. + */ + updateStyle: function() { + // If only a single page shown, a different style is used in the central pane. + this.parts.dialog[ ( this._.pageCount === 1 ? 'add' : 'remove' ) + 'Class' ]( 'cke_single_page' ); + }, + + /** + * Hides a page's tab away from the dialog. + * + * dialog.hidePage( 'tab_3' ); + * + * @param {String} id The page's Id. + */ + hidePage: function( id ) { + var tab = this._.tabs[ id ] && this._.tabs[ id ][ 0 ]; + if ( !tab || this._.pageCount == 1 || !tab.isVisible() ) + return; + // Switch to other tab first when we're hiding the active tab. + else if ( id == this._.currentTabId ) + this.selectPage( getPreviousVisibleTab.call( this ) ); + + tab.hide(); + this._.pageCount--; + this.updateStyle(); + }, + + /** + * Unhides a page's tab. + * + * dialog.showPage( 'tab_2' ); + * + * @param {String} id The page's Id. + */ + showPage: function( id ) { + var tab = this._.tabs[ id ] && this._.tabs[ id ][ 0 ]; + if ( !tab ) + return; + tab.show(); + this._.pageCount++; + this.updateStyle(); + }, + + /** + * Gets the root DOM element of the dialog. + * + * var dialogElement = dialogObj.getElement().getFirst(); + * dialogElement.setStyle( 'padding', '5px' ); + * + * @returns {CKEDITOR.dom.element} The `` element containing this dialog. + */ + getElement: function() { + return this._.element; + }, + + /** + * Gets the name of the dialog. + * + * var dialogName = dialogObj.getName(); + * + * @returns {String} The name of this dialog. + */ + getName: function() { + return this._.name; + }, + + /** + * Gets a dialog UI element object from a dialog page. + * + * dialogObj.getContentElement( 'tabId', 'elementId' ).setValue( 'Example' ); + * + * @param {String} pageId id of dialog page. + * @param {String} elementId id of UI element. + * @returns {CKEDITOR.ui.dialog.uiElement} The dialog UI element. + */ + getContentElement: function( pageId, elementId ) { + var page = this._.contents[ pageId ]; + return page && page[ elementId ]; + }, + + /** + * Gets the value of a dialog UI element. + * + * alert( dialogObj.getValueOf( 'tabId', 'elementId' ) ); + * + * @param {String} pageId id of dialog page. + * @param {String} elementId id of UI element. + * @returns {Object} The value of the UI element. + */ + getValueOf: function( pageId, elementId ) { + return this.getContentElement( pageId, elementId ).getValue(); + }, + + /** + * Sets the value of a dialog UI element. + * + * dialogObj.setValueOf( 'tabId', 'elementId', 'Example' ); + * + * @param {String} pageId id of the dialog page. + * @param {String} elementId id of the UI element. + * @param {Object} value The new value of the UI element. + */ + setValueOf: function( pageId, elementId, value ) { + return this.getContentElement( pageId, elementId ).setValue( value ); + }, + + /** + * Gets the UI element of a button in the dialog's button row. + * + * @returns {CKEDITOR.ui.dialog.button} The button object. + * + * @param {String} id The id of the button. + */ + getButton: function( id ) { + return this._.buttons[ id ]; + }, + + /** + * Simulates a click to a dialog button in the dialog's button row. + * + * @returns The return value of the dialog's `click` event. + * + * @param {String} id The id of the button. + */ + click: function( id ) { + return this._.buttons[ id ].click(); + }, + + /** + * Disables a dialog button. + * + * @param {String} id The id of the button. + */ + disableButton: function( id ) { + return this._.buttons[ id ].disable(); + }, + + /** + * Enables a dialog button. + * + * @param {String} id The id of the button. + */ + enableButton: function( id ) { + return this._.buttons[ id ].enable(); + }, + + /** + * Gets the number of pages in the dialog. + * + * @returns {Number} Page count. + */ + getPageCount: function() { + return this._.pageCount; + }, + + /** + * Gets the editor instance which opened this dialog. + * + * @returns {CKEDITOR.editor} Parent editor instances. + */ + getParentEditor: function() { + return this._.editor; + }, + + /** + * Gets the element that was selected when opening the dialog, if any. + * + * @returns {CKEDITOR.dom.element} The element that was selected, or `null`. + */ + getSelectedElement: function() { + return this.getParentEditor().getSelection().getSelectedElement(); + }, + + /** + * Adds element to dialog's focusable list. + * + * @param {CKEDITOR.dom.element} element + * @param {Number} [index] + */ + addFocusable: function( element, index ) { + if ( typeof index == 'undefined' ) { + index = this._.focusList.length; + this._.focusList.push( new Focusable( this, element, index ) ); + } else { + this._.focusList.splice( index, 0, new Focusable( this, element, index ) ); + for ( var i = index + 1; i < this._.focusList.length; i++ ) + this._.focusList[ i ].focusIndex++; + } + }, + + /** + * Sets the dialog {@link #property-state}. + * + * @since 4.5 + * @param {Number} state Either {@link CKEDITOR#DIALOG_STATE_IDLE} or {@link CKEDITOR#DIALOG_STATE_BUSY}. + */ + setState: function( state ) { + var oldState = this.state; + + if ( oldState == state ) { + return; + } + + this.state = state; + + if ( state == CKEDITOR.DIALOG_STATE_BUSY ) { + // Insert the spinner on demand. + if ( !this.parts.spinner ) { + var dir = this.getParentEditor().lang.dir, + spinnerDef = { + attributes: { + 'class': 'cke_dialog_spinner' + }, + styles: { + 'float': dir == 'rtl' ? 'right' : 'left' + } + }; + + spinnerDef.styles[ 'margin-' + ( dir == 'rtl' ? 'left' : 'right' ) ] = '8px'; + + this.parts.spinner = CKEDITOR.document.createElement( 'div', spinnerDef ); + + this.parts.spinner.setHtml( '⌛' ); + this.parts.spinner.appendTo( this.parts.title, 1 ); + } + + // Finally, show the spinner. + this.parts.spinner.show(); + + this.getButton( 'ok' ).disable(); + } else if ( state == CKEDITOR.DIALOG_STATE_IDLE ) { + // Hide the spinner. But don't do anything if there is no spinner yet. + this.parts.spinner && this.parts.spinner.hide(); + + this.getButton( 'ok' ).enable(); + } + + this.fire( 'state', state ); + } + }; + + CKEDITOR.tools.extend( CKEDITOR.dialog, { + /** + * Registers a dialog. + * + * // Full sample plugin, which does not only register a dialog window but also adds an item to the context menu. + * // To open the dialog window, choose "Open dialog" in the context menu. + * CKEDITOR.plugins.add( 'myplugin', { + * init: function( editor ) { + * editor.addCommand( 'mydialog',new CKEDITOR.dialogCommand( 'mydialog' ) ); + * + * if ( editor.contextMenu ) { + * editor.addMenuGroup( 'mygroup', 10 ); + * editor.addMenuItem( 'My Dialog', { + * label: 'Open dialog', + * command: 'mydialog', + * group: 'mygroup' + * } ); + * editor.contextMenu.addListener( function( element ) { + * return { 'My Dialog': CKEDITOR.TRISTATE_OFF }; + * } ); + * } + * + * CKEDITOR.dialog.add( 'mydialog', function( api ) { + * // CKEDITOR.dialog.definition + * var dialogDefinition = { + * title: 'Sample dialog', + * minWidth: 390, + * minHeight: 130, + * contents: [ + * { + * id: 'tab1', + * label: 'Label', + * title: 'Title', + * expand: true, + * padding: 0, + * elements: [ + * { + * type: 'html', + * html: '

This is some sample HTML content.

' + * }, + * { + * type: 'textarea', + * id: 'textareaId', + * rows: 4, + * cols: 40 + * } + * ] + * } + * ], + * buttons: [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ], + * onOk: function() { + * // "this" is now a CKEDITOR.dialog object. + * // Accessing dialog elements: + * var textareaObj = this.getContentElement( 'tab1', 'textareaId' ); + * alert( "You have entered: " + textareaObj.getValue() ); + * } + * }; + * + * return dialogDefinition; + * } ); + * } + * } ); + * + * CKEDITOR.replace( 'editor1', { extraPlugins: 'myplugin' } ); + * + * @static + * @param {String} name The dialog's name. + * @param {Function/String} dialogDefinition + * A function returning the dialog's definition, or the URL to the `.js` file holding the function. + * The function should accept an argument `editor` which is the current editor instance, and + * return an object conforming to {@link CKEDITOR.dialog.definition}. + * @see CKEDITOR.dialog.definition + */ + add: function( name, dialogDefinition ) { + // Avoid path registration from multiple instances override definition. + if ( !this._.dialogDefinitions[ name ] || typeof dialogDefinition == 'function' ) + this._.dialogDefinitions[ name ] = dialogDefinition; + }, + + /** + * @static + * @todo + */ + exists: function( name ) { + return !!this._.dialogDefinitions[ name ]; + }, + + /** + * @static + * @todo + */ + getCurrent: function() { + return CKEDITOR.dialog._.currentTop; + }, + + /** + * Check whether tab wasn't removed by {@link CKEDITOR.config#removeDialogTabs}. + * + * @since 4.1 + * @static + * @param {CKEDITOR.editor} editor + * @param {String} dialogName + * @param {String} tabName + * @returns {Boolean} + */ + isTabEnabled: function( editor, dialogName, tabName ) { + var cfg = editor.config.removeDialogTabs; + + return !( cfg && cfg.match( new RegExp( '(?:^|;)' + dialogName + ':' + tabName + '(?:$|;)', 'i' ) ) ); + }, + + /** + * The default OK button for dialogs. Fires the `ok` event and closes the dialog if the event succeeds. + * + * @static + * @method + */ + okButton: ( function() { + var retval = function( editor, override ) { + override = override || {}; + return CKEDITOR.tools.extend( { + id: 'ok', + type: 'button', + label: editor.lang.common.ok, + 'class': 'cke_dialog_ui_button_ok', + onClick: function( evt ) { + var dialog = evt.data.dialog; + if ( dialog.fire( 'ok', { hide: true } ).hide !== false ) + dialog.hide(); + } + }, override, true ); + }; + retval.type = 'button'; + retval.override = function( override ) { + return CKEDITOR.tools.extend( function( editor ) { + return retval( editor, override ); + }, { type: 'button' }, true ); + }; + return retval; + } )(), + + /** + * The default cancel button for dialogs. Fires the `cancel` event and + * closes the dialog if no UI element value changed. + * + * @static + * @method + */ + cancelButton: ( function() { + var retval = function( editor, override ) { + override = override || {}; + return CKEDITOR.tools.extend( { + id: 'cancel', + type: 'button', + label: editor.lang.common.cancel, + 'class': 'cke_dialog_ui_button_cancel', + onClick: function( evt ) { + var dialog = evt.data.dialog; + if ( dialog.fire( 'cancel', { hide: true } ).hide !== false ) + dialog.hide(); + } + }, override, true ); + }; + retval.type = 'button'; + retval.override = function( override ) { + return CKEDITOR.tools.extend( function( editor ) { + return retval( editor, override ); + }, { type: 'button' }, true ); + }; + return retval; + } )(), + + /** + * Registers a dialog UI element. + * + * @static + * @param {String} typeName The name of the UI element. + * @param {Function} builder The function to build the UI element. + */ + addUIElement: function( typeName, builder ) { + this._.uiElementBuilders[ typeName ] = builder; + } + } ); + + CKEDITOR.dialog._ = { + uiElementBuilders: {}, + + dialogDefinitions: {}, + + currentTop: null, + + currentZIndex: null + }; + + // "Inherit" (copy actually) from CKEDITOR.event. + CKEDITOR.event.implementOn( CKEDITOR.dialog ); + CKEDITOR.event.implementOn( CKEDITOR.dialog.prototype ); + + var defaultDialogDefinition = { + resizable: CKEDITOR.DIALOG_RESIZE_BOTH, + minWidth: 600, + minHeight: 400, + buttons: [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ] + }; + + // Tool function used to return an item from an array based on its id + // property. + var getById = function( array, id, recurse ) { + for ( var i = 0, item; + ( item = array[ i ] ); i++ ) { + if ( item.id == id ) + return item; + if ( recurse && item[ recurse ] ) { + var retval = getById( item[ recurse ], id, recurse ); + if ( retval ) + return retval; + } + } + return null; + }; + + // Tool function used to add an item into an array. + var addById = function( array, newItem, nextSiblingId, recurse, nullIfNotFound ) { + if ( nextSiblingId ) { + for ( var i = 0, item; + ( item = array[ i ] ); i++ ) { + if ( item.id == nextSiblingId ) { + array.splice( i, 0, newItem ); + return newItem; + } + + if ( recurse && item[ recurse ] ) { + var retval = addById( item[ recurse ], newItem, nextSiblingId, recurse, true ); + if ( retval ) + return retval; + } + } + + if ( nullIfNotFound ) + return null; + } + + array.push( newItem ); + return newItem; + }; + + // Tool function used to remove an item from an array based on its id. + var removeById = function( array, id, recurse ) { + for ( var i = 0, item; + ( item = array[ i ] ); i++ ) { + if ( item.id == id ) + return array.splice( i, 1 ); + if ( recurse && item[ recurse ] ) { + var retval = removeById( item[ recurse ], id, recurse ); + if ( retval ) + return retval; + } + } + return null; + }; + + /** + * This class is not really part of the API. It is the `definition` property value + * passed to `dialogDefinition` event handlers. + * + * CKEDITOR.on( 'dialogDefinition', function( evt ) { + * var definition = evt.data.definition; + * var content = definition.getContents( 'page1' ); + * // ... + * } ); + * + * @private + * @class CKEDITOR.dialog.definitionObject + * @extends CKEDITOR.dialog.definition + * @constructor Creates a definitionObject class instance. + */ + var definitionObject = function( dialog, dialogDefinition ) { + // TODO : Check if needed. + this.dialog = dialog; + + // Transform the contents entries in contentObjects. + var contents = dialogDefinition.contents; + for ( var i = 0, content; + ( content = contents[ i ] ); i++ ) + contents[ i ] = content && new contentObject( dialog, content ); + + CKEDITOR.tools.extend( this, dialogDefinition ); + }; + + definitionObject.prototype = { + /** + * Gets a content definition. + * + * @param {String} id The id of the content definition. + * @returns {CKEDITOR.dialog.definition.content} The content definition matching id. + */ + getContents: function( id ) { + return getById( this.contents, id ); + }, + + /** + * Gets a button definition. + * + * @param {String} id The id of the button definition. + * @returns {CKEDITOR.dialog.definition.button} The button definition matching id. + */ + getButton: function( id ) { + return getById( this.buttons, id ); + }, + + /** + * Adds a content definition object under this dialog definition. + * + * @param {CKEDITOR.dialog.definition.content} contentDefinition The + * content definition. + * @param {String} [nextSiblingId] The id of an existing content + * definition which the new content definition will be inserted + * before. Omit if the new content definition is to be inserted as + * the last item. + * @returns {CKEDITOR.dialog.definition.content} The inserted content definition. + */ + addContents: function( contentDefinition, nextSiblingId ) { + return addById( this.contents, contentDefinition, nextSiblingId ); + }, + + /** + * Adds a button definition object under this dialog definition. + * + * @param {CKEDITOR.dialog.definition.button} buttonDefinition The + * button definition. + * @param {String} [nextSiblingId] The id of an existing button + * definition which the new button definition will be inserted + * before. Omit if the new button definition is to be inserted as + * the last item. + * @returns {CKEDITOR.dialog.definition.button} The inserted button definition. + */ + addButton: function( buttonDefinition, nextSiblingId ) { + return addById( this.buttons, buttonDefinition, nextSiblingId ); + }, + + /** + * Removes a content definition from this dialog definition. + * + * @param {String} id The id of the content definition to be removed. + * @returns {CKEDITOR.dialog.definition.content} The removed content definition. + */ + removeContents: function( id ) { + removeById( this.contents, id ); + }, + + /** + * Removes a button definition from the dialog definition. + * + * @param {String} id The id of the button definition to be removed. + * @returns {CKEDITOR.dialog.definition.button} The removed button definition. + */ + removeButton: function( id ) { + removeById( this.buttons, id ); + } + }; + + /** + * This class is not really part of the API. It is the template of the + * objects representing content pages inside the + * CKEDITOR.dialog.definitionObject. + * + * CKEDITOR.on( 'dialogDefinition', function( evt ) { + * var definition = evt.data.definition; + * var content = definition.getContents( 'page1' ); + * content.remove( 'textInput1' ); + * // ... + * } ); + * + * @private + * @class CKEDITOR.dialog.definition.contentObject + * @constructor Creates a contentObject class instance. + */ + function contentObject( dialog, contentDefinition ) { + this._ = { + dialog: dialog + }; + + CKEDITOR.tools.extend( this, contentDefinition ); + } + + contentObject.prototype = { + /** + * Gets a UI element definition under the content definition. + * + * @param {String} id The id of the UI element definition. + * @returns {CKEDITOR.dialog.definition.uiElement} + */ + get: function( id ) { + return getById( this.elements, id, 'children' ); + }, + + /** + * Adds a UI element definition to the content definition. + * + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition The + * UI elemnet definition to be added. + * @param {String} nextSiblingId The id of an existing UI element + * definition which the new UI element definition will be inserted + * before. Omit if the new button definition is to be inserted as + * the last item. + * @returns {CKEDITOR.dialog.definition.uiElement} The element definition inserted. + */ + add: function( elementDefinition, nextSiblingId ) { + return addById( this.elements, elementDefinition, nextSiblingId, 'children' ); + }, + + /** + * Removes a UI element definition from the content definition. + * + * @param {String} id The id of the UI element definition to be removed. + * @returns {CKEDITOR.dialog.definition.uiElement} The element definition removed. + */ + remove: function( id ) { + removeById( this.elements, id, 'children' ); + } + }; + + function initDragAndDrop( dialog ) { + var lastCoords = null, + abstractDialogCoords = null, + editor = dialog.getParentEditor(), + magnetDistance = editor.config.dialog_magnetDistance, + margins = CKEDITOR.skin.margins || [ 0, 0, 0, 0 ]; + + if ( typeof magnetDistance == 'undefined' ) + magnetDistance = 20; + + function mouseMoveHandler( evt ) { + var dialogSize = dialog.getSize(), + viewPaneSize = CKEDITOR.document.getWindow().getViewPaneSize(), + x = evt.data.$.screenX, + y = evt.data.$.screenY, + dx = x - lastCoords.x, + dy = y - lastCoords.y, + realX, realY; + + lastCoords = { x: x, y: y }; + abstractDialogCoords.x += dx; + abstractDialogCoords.y += dy; + + if ( abstractDialogCoords.x + margins[ 3 ] < magnetDistance ) + realX = -margins[ 3 ]; + else if ( abstractDialogCoords.x - margins[ 1 ] > viewPaneSize.width - dialogSize.width - magnetDistance ) + realX = viewPaneSize.width - dialogSize.width + ( editor.lang.dir == 'rtl' ? 0 : margins[ 1 ] ); + else + realX = abstractDialogCoords.x; + + if ( abstractDialogCoords.y + margins[ 0 ] < magnetDistance ) + realY = -margins[ 0 ]; + else if ( abstractDialogCoords.y - margins[ 2 ] > viewPaneSize.height - dialogSize.height - magnetDistance ) + realY = viewPaneSize.height - dialogSize.height + margins[ 2 ]; + else + realY = abstractDialogCoords.y; + + dialog.move( realX, realY, 1 ); + + evt.data.preventDefault(); + } + + function mouseUpHandler() { + CKEDITOR.document.removeListener( 'mousemove', mouseMoveHandler ); + CKEDITOR.document.removeListener( 'mouseup', mouseUpHandler ); + + if ( CKEDITOR.env.ie6Compat ) { + var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); + coverDoc.removeListener( 'mousemove', mouseMoveHandler ); + coverDoc.removeListener( 'mouseup', mouseUpHandler ); + } + } + + dialog.parts.title.on( 'mousedown', function( evt ) { + lastCoords = { x: evt.data.$.screenX, y: evt.data.$.screenY }; + + CKEDITOR.document.on( 'mousemove', mouseMoveHandler ); + CKEDITOR.document.on( 'mouseup', mouseUpHandler ); + abstractDialogCoords = dialog.getPosition(); + + if ( CKEDITOR.env.ie6Compat ) { + var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); + coverDoc.on( 'mousemove', mouseMoveHandler ); + coverDoc.on( 'mouseup', mouseUpHandler ); + } + + evt.data.preventDefault(); + }, dialog ); + } + + function initResizeHandles( dialog ) { + var def = dialog.definition, + resizable = def.resizable; + + if ( resizable == CKEDITOR.DIALOG_RESIZE_NONE ) + return; + + var editor = dialog.getParentEditor(); + var wrapperWidth, wrapperHeight, viewSize, origin, startSize, dialogCover; + + var mouseDownFn = CKEDITOR.tools.addFunction( function( $event ) { + startSize = dialog.getSize(); + + var content = dialog.parts.contents, + iframeDialog = content.$.getElementsByTagName( 'iframe' ).length; + + // Shim to help capturing "mousemove" over iframe. + if ( iframeDialog ) { + dialogCover = CKEDITOR.dom.element.createFromHtml( '
' ); + content.append( dialogCover ); + } + + // Calculate the offset between content and chrome size. + wrapperHeight = startSize.height - dialog.parts.contents.getSize( 'height', !( CKEDITOR.env.gecko || CKEDITOR.env.ie && CKEDITOR.env.quirks ) ); + wrapperWidth = startSize.width - dialog.parts.contents.getSize( 'width', 1 ); + + origin = { x: $event.screenX, y: $event.screenY }; + + viewSize = CKEDITOR.document.getWindow().getViewPaneSize(); + + CKEDITOR.document.on( 'mousemove', mouseMoveHandler ); + CKEDITOR.document.on( 'mouseup', mouseUpHandler ); + + if ( CKEDITOR.env.ie6Compat ) { + var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); + coverDoc.on( 'mousemove', mouseMoveHandler ); + coverDoc.on( 'mouseup', mouseUpHandler ); + } + + $event.preventDefault && $event.preventDefault(); + } ); + + // Prepend the grip to the dialog. + dialog.on( 'load', function() { + var direction = ''; + if ( resizable == CKEDITOR.DIALOG_RESIZE_WIDTH ) + direction = ' cke_resizer_horizontal'; + else if ( resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT ) + direction = ' cke_resizer_vertical'; + var resizer = CKEDITOR.dom.element.createFromHtml( + '' + + // BLACK LOWER RIGHT TRIANGLE (ltr) + // BLACK LOWER LEFT TRIANGLE (rtl) + ( editor.lang.dir == 'ltr' ? '\u25E2' : '\u25E3' ) + + '
' ); + dialog.parts.footer.append( resizer, 1 ); + } ); + editor.on( 'destroy', function() { + CKEDITOR.tools.removeFunction( mouseDownFn ); + } ); + + function mouseMoveHandler( evt ) { + var rtl = editor.lang.dir == 'rtl', + dx = ( evt.data.$.screenX - origin.x ) * ( rtl ? -1 : 1 ), + dy = evt.data.$.screenY - origin.y, + width = startSize.width, + height = startSize.height, + internalWidth = width + dx * ( dialog._.moved ? 1 : 2 ), + internalHeight = height + dy * ( dialog._.moved ? 1 : 2 ), + element = dialog._.element.getFirst(), + right = rtl && element.getComputedStyle( 'right' ), + position = dialog.getPosition(); + + if ( position.y + internalHeight > viewSize.height ) + internalHeight = viewSize.height - position.y; + + if ( ( rtl ? right : position.x ) + internalWidth > viewSize.width ) + internalWidth = viewSize.width - ( rtl ? right : position.x ); + + // Make sure the dialog will not be resized to the wrong side when it's in the leftmost position for RTL. + if ( ( resizable == CKEDITOR.DIALOG_RESIZE_WIDTH || resizable == CKEDITOR.DIALOG_RESIZE_BOTH ) ) + width = Math.max( def.minWidth || 0, internalWidth - wrapperWidth ); + + if ( resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT || resizable == CKEDITOR.DIALOG_RESIZE_BOTH ) + height = Math.max( def.minHeight || 0, internalHeight - wrapperHeight ); + + dialog.resize( width, height ); + + if ( !dialog._.moved ) + dialog.layout(); + + evt.data.preventDefault(); + } + + function mouseUpHandler() { + CKEDITOR.document.removeListener( 'mouseup', mouseUpHandler ); + CKEDITOR.document.removeListener( 'mousemove', mouseMoveHandler ); + + if ( dialogCover ) { + dialogCover.remove(); + dialogCover = null; + } + + if ( CKEDITOR.env.ie6Compat ) { + var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); + coverDoc.removeListener( 'mouseup', mouseUpHandler ); + coverDoc.removeListener( 'mousemove', mouseMoveHandler ); + } + } + } + + var resizeCover; + // Caching resuable covers and allowing only one cover + // on screen. + var covers = {}, + currentCover; + + function cancelEvent( ev ) { + ev.data.preventDefault( 1 ); + } + + function showCover( editor ) { + var win = CKEDITOR.document.getWindow(); + var config = editor.config, + backgroundColorStyle = config.dialog_backgroundCoverColor || 'white', + backgroundCoverOpacity = config.dialog_backgroundCoverOpacity, + baseFloatZIndex = config.baseFloatZIndex, + coverKey = CKEDITOR.tools.genKey( backgroundColorStyle, backgroundCoverOpacity, baseFloatZIndex ), + coverElement = covers[ coverKey ]; + + if ( !coverElement ) { + var html = [ + '
' + ]; + + if ( CKEDITOR.env.ie6Compat ) { + // Support for custom document.domain in IE. + var iframeHtml = ''; + + html.push( '' + + '' ); + } + + html.push( '
' ); + + coverElement = CKEDITOR.dom.element.createFromHtml( html.join( '' ) ); + coverElement.setOpacity( backgroundCoverOpacity !== undefined ? backgroundCoverOpacity : 0.5 ); + + coverElement.on( 'keydown', cancelEvent ); + coverElement.on( 'keypress', cancelEvent ); + coverElement.on( 'keyup', cancelEvent ); + + coverElement.appendTo( CKEDITOR.document.getBody() ); + covers[ coverKey ] = coverElement; + } else { + coverElement.show(); + } + + // Makes the dialog cover a focus holder as well. + editor.focusManager.add( coverElement ); + + currentCover = coverElement; + var resizeFunc = function() { + var size = win.getViewPaneSize(); + coverElement.setStyles( { + width: size.width + 'px', + height: size.height + 'px' + } ); + }; + + var scrollFunc = function() { + var pos = win.getScrollPosition(), + cursor = CKEDITOR.dialog._.currentTop; + coverElement.setStyles( { + left: pos.x + 'px', + top: pos.y + 'px' + } ); + + if ( cursor ) { + do { + var dialogPos = cursor.getPosition(); + cursor.move( dialogPos.x, dialogPos.y ); + } while ( ( cursor = cursor._.parentDialog ) ); + } + }; + + resizeCover = resizeFunc; + win.on( 'resize', resizeFunc ); + resizeFunc(); + // Using Safari/Mac, focus must be kept where it is (#7027) + if ( !( CKEDITOR.env.mac && CKEDITOR.env.webkit ) ) + coverElement.focus(); + + if ( CKEDITOR.env.ie6Compat ) { + // IE BUG: win.$.onscroll assignment doesn't work.. it must be window.onscroll. + // So we need to invent a really funny way to make it work. + var myScrollHandler = function() { + scrollFunc(); + arguments.callee.prevScrollHandler.apply( this, arguments ); + }; + win.$.setTimeout( function() { + myScrollHandler.prevScrollHandler = window.onscroll || + function() {}; + window.onscroll = myScrollHandler; + }, 0 ); + scrollFunc(); + } + } + + function hideCover( editor ) { + if ( !currentCover ) + return; + + editor.focusManager.remove( currentCover ); + var win = CKEDITOR.document.getWindow(); + currentCover.hide(); + win.removeListener( 'resize', resizeCover ); + + if ( CKEDITOR.env.ie6Compat ) { + win.$.setTimeout( function() { + var prevScrollHandler = window.onscroll && window.onscroll.prevScrollHandler; + window.onscroll = prevScrollHandler || null; + }, 0 ); + } + resizeCover = null; + } + + function removeCovers() { + for ( var coverId in covers ) + covers[ coverId ].remove(); + covers = {}; + } + + var accessKeyProcessors = {}; + + var accessKeyDownHandler = function( evt ) { + var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey, + alt = evt.data.$.altKey, + shift = evt.data.$.shiftKey, + key = String.fromCharCode( evt.data.$.keyCode ), + keyProcessor = accessKeyProcessors[ ( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '' ) + ( shift ? 'SHIFT+' : '' ) + key ]; + + if ( !keyProcessor || !keyProcessor.length ) + return; + + keyProcessor = keyProcessor[ keyProcessor.length - 1 ]; + keyProcessor.keydown && keyProcessor.keydown.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key ); + evt.data.preventDefault(); + }; + + var accessKeyUpHandler = function( evt ) { + var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey, + alt = evt.data.$.altKey, + shift = evt.data.$.shiftKey, + key = String.fromCharCode( evt.data.$.keyCode ), + keyProcessor = accessKeyProcessors[ ( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '' ) + ( shift ? 'SHIFT+' : '' ) + key ]; + + if ( !keyProcessor || !keyProcessor.length ) + return; + + keyProcessor = keyProcessor[ keyProcessor.length - 1 ]; + if ( keyProcessor.keyup ) { + keyProcessor.keyup.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key ); + evt.data.preventDefault(); + } + }; + + var registerAccessKey = function( uiElement, dialog, key, downFunc, upFunc ) { + var procList = accessKeyProcessors[ key ] || ( accessKeyProcessors[ key ] = [] ); + procList.push( { + uiElement: uiElement, + dialog: dialog, + key: key, + keyup: upFunc || uiElement.accessKeyUp, + keydown: downFunc || uiElement.accessKeyDown + } ); + }; + + var unregisterAccessKey = function( obj ) { + for ( var i in accessKeyProcessors ) { + var list = accessKeyProcessors[ i ]; + for ( var j = list.length - 1; j >= 0; j-- ) { + if ( list[ j ].dialog == obj || list[ j ].uiElement == obj ) + list.splice( j, 1 ); + } + if ( list.length === 0 ) + delete accessKeyProcessors[ i ]; + } + }; + + var tabAccessKeyUp = function( dialog, key ) { + if ( dialog._.accessKeyMap[ key ] ) + dialog.selectPage( dialog._.accessKeyMap[ key ] ); + }; + + var tabAccessKeyDown = function() {}; + + ( function() { + CKEDITOR.ui.dialog = { + /** + * The base class of all dialog UI elements. + * + * @class CKEDITOR.ui.dialog.uiElement + * @constructor Creates a uiElement class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition Element + * definition. + * + * Accepted fields: + * + * * `id` (Required) The id of the UI element. See {@link CKEDITOR.dialog#getContentElement}. + * * `type` (Required) The type of the UI element. The + * value to this field specifies which UI element class will be used to + * generate the final widget. + * * `title` (Optional) The popup tooltip for the UI + * element. + * * `hidden` (Optional) A flag that tells if the element + * should be initially visible. + * * `className` (Optional) Additional CSS class names + * to add to the UI element. Separated by space. + * * `style` (Optional) Additional CSS inline styles + * to add to the UI element. A semicolon (;) is required after the last + * style declaration. + * * `accessKey` (Optional) The alphanumeric access key + * for this element. Access keys are automatically prefixed by CTRL. + * * `on*` (Optional) Any UI element definition field that + * starts with `on` followed immediately by a capital letter and + * probably more letters is an event handler. Event handlers may be further + * divided into registered event handlers and DOM event handlers. Please + * refer to {@link CKEDITOR.ui.dialog.uiElement#registerEvents} and + * {@link CKEDITOR.ui.dialog.uiElement#eventProcessors} for more information. + * + * @param {Array} htmlList + * List of HTML code to be added to the dialog's content area. + * @param {Function/String} [nodeNameArg='div'] + * A function returning a string, or a simple string for the node name for + * the root DOM node. + * @param {Function/Object} [stylesArg={}] + * A function returning an object, or a simple object for CSS styles applied + * to the DOM node. + * @param {Function/Object} [attributesArg={}] + * A fucntion returning an object, or a simple object for attributes applied + * to the DOM node. + * @param {Function/String} [contentsArg=''] + * A function returning a string, or a simple string for the HTML code inside + * the root DOM node. Default is empty string. + */ + uiElement: function( dialog, elementDefinition, htmlList, nodeNameArg, stylesArg, attributesArg, contentsArg ) { + if ( arguments.length < 4 ) + return; + + var nodeName = ( nodeNameArg.call ? nodeNameArg( elementDefinition ) : nodeNameArg ) || 'div', + html = [ '<', nodeName, ' ' ], + styles = ( stylesArg && stylesArg.call ? stylesArg( elementDefinition ) : stylesArg ) || {}, + attributes = ( attributesArg && attributesArg.call ? attributesArg( elementDefinition ) : attributesArg ) || {}, + innerHTML = ( contentsArg && contentsArg.call ? contentsArg.call( this, dialog, elementDefinition ) : contentsArg ) || '', + domId = this.domId = attributes.id || CKEDITOR.tools.getNextId() + '_uiElement', + i; + + if ( elementDefinition.requiredContent && !dialog.getParentEditor().filter.check( elementDefinition.requiredContent ) ) { + styles.display = 'none'; + this.notAllowed = true; + } + + // Set the id, a unique id is required for getElement() to work. + attributes.id = domId; + + // Set the type and definition CSS class names. + var classes = {}; + if ( elementDefinition.type ) + classes[ 'cke_dialog_ui_' + elementDefinition.type ] = 1; + if ( elementDefinition.className ) + classes[ elementDefinition.className ] = 1; + if ( elementDefinition.disabled ) + classes.cke_disabled = 1; + + var attributeClasses = ( attributes[ 'class' ] && attributes[ 'class' ].split ) ? attributes[ 'class' ].split( ' ' ) : []; + for ( i = 0; i < attributeClasses.length; i++ ) { + if ( attributeClasses[ i ] ) + classes[ attributeClasses[ i ] ] = 1; + } + var finalClasses = []; + for ( i in classes ) + finalClasses.push( i ); + attributes[ 'class' ] = finalClasses.join( ' ' ); + + // Set the popup tooltop. + if ( elementDefinition.title ) + attributes.title = elementDefinition.title; + + // Write the inline CSS styles. + var styleStr = ( elementDefinition.style || '' ).split( ';' ); + + // Element alignment support. + if ( elementDefinition.align ) { + var align = elementDefinition.align; + styles[ 'margin-left' ] = align == 'left' ? 0 : 'auto'; + styles[ 'margin-right' ] = align == 'right' ? 0 : 'auto'; + } + + for ( i in styles ) + styleStr.push( i + ':' + styles[ i ] ); + if ( elementDefinition.hidden ) + styleStr.push( 'display:none' ); + for ( i = styleStr.length - 1; i >= 0; i-- ) { + if ( styleStr[ i ] === '' ) + styleStr.splice( i, 1 ); + } + if ( styleStr.length > 0 ) + attributes.style = ( attributes.style ? ( attributes.style + '; ' ) : '' ) + styleStr.join( '; ' ); + + // Write the attributes. + for ( i in attributes ) + html.push( i + '="' + CKEDITOR.tools.htmlEncode( attributes[ i ] ) + '" ' ); + + // Write the content HTML. + html.push( '>', innerHTML, '' ); + + // Add contents to the parent HTML array. + htmlList.push( html.join( '' ) ); + + ( this._ || ( this._ = {} ) ).dialog = dialog; + + // Override isChanged if it is defined in element definition. + if ( typeof elementDefinition.isChanged == 'boolean' ) + this.isChanged = function() { + return elementDefinition.isChanged; + }; + if ( typeof elementDefinition.isChanged == 'function' ) + this.isChanged = elementDefinition.isChanged; + + // Overload 'get(set)Value' on definition. + if ( typeof elementDefinition.setValue == 'function' ) { + this.setValue = CKEDITOR.tools.override( this.setValue, function( org ) { + return function( val ) { + org.call( this, elementDefinition.setValue.call( this, val ) ); + }; + } ); + } + + if ( typeof elementDefinition.getValue == 'function' ) { + this.getValue = CKEDITOR.tools.override( this.getValue, function( org ) { + return function() { + return elementDefinition.getValue.call( this, org.call( this ) ); + }; + } ); + } + + // Add events. + CKEDITOR.event.implementOn( this ); + + this.registerEvents( elementDefinition ); + if ( this.accessKeyUp && this.accessKeyDown && elementDefinition.accessKey ) + registerAccessKey( this, dialog, 'CTRL+' + elementDefinition.accessKey ); + + var me = this; + dialog.on( 'load', function() { + var input = me.getInputElement(); + if ( input ) { + var focusClass = me.type in { 'checkbox': 1, 'ratio': 1 } && CKEDITOR.env.ie && CKEDITOR.env.version < 8 ? 'cke_dialog_ui_focused' : ''; + input.on( 'focus', function() { + dialog._.tabBarMode = false; + dialog._.hasFocus = true; + me.fire( 'focus' ); + focusClass && this.addClass( focusClass ); + + } ); + + input.on( 'blur', function() { + me.fire( 'blur' ); + focusClass && this.removeClass( focusClass ); + } ); + } + } ); + + // Completes this object with everything we have in the + // definition. + CKEDITOR.tools.extend( this, elementDefinition ); + + // Register the object as a tab focus if it can be included. + if ( this.keyboardFocusable ) { + this.tabIndex = elementDefinition.tabIndex || 0; + + this.focusIndex = dialog._.focusList.push( this ) - 1; + this.on( 'focus', function() { + dialog._.currentFocusIndex = me.focusIndex; + } ); + } + }, + + /** + * Horizontal layout box for dialog UI elements, auto-expends to available width of container. + * + * @class CKEDITOR.ui.dialog.hbox + * @extends CKEDITOR.ui.dialog.uiElement + * @constructor Creates a hbox class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {Array} childObjList + * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. + * @param {Array} childHtmlList + * Array of HTML code that correspond to the HTML output of all the + * objects in childObjList. + * @param {Array} htmlList + * Array of HTML code that this element will output to. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `widths` (Optional) The widths of child cells. + * * `height` (Optional) The height of the layout. + * * `padding` (Optional) The padding width inside child cells. + * * `align` (Optional) The alignment of the whole layout. + */ + hbox: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { + if ( arguments.length < 4 ) + return; + + this._ || ( this._ = {} ); + + var children = this._.children = childObjList, + widths = elementDefinition && elementDefinition.widths || null, + height = elementDefinition && elementDefinition.height || null, + styles = {}, + i; + /** @ignore */ + var innerHTML = function() { + var html = [ '' ]; + for ( i = 0; i < childHtmlList.length; i++ ) { + var className = 'cke_dialog_ui_hbox_child', + styles = []; + if ( i === 0 ) { + className = 'cke_dialog_ui_hbox_first'; + } + if ( i == childHtmlList.length - 1 ) { + className = 'cke_dialog_ui_hbox_last'; + } + + html.push( ' 0 ) { + html.push( 'style="' + styles.join( '; ' ) + '" ' ); + } + html.push( '>', childHtmlList[ i ], '' ); + } + html.push( '' ); + return html.join( '' ); + }; + + var attribs = { role: 'presentation' }; + elementDefinition && elementDefinition.align && ( attribs.align = elementDefinition.align ); + + CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type: 'hbox' }, htmlList, 'table', styles, attribs, innerHTML ); + }, + + /** + * Vertical layout box for dialog UI elements. + * + * @class CKEDITOR.ui.dialog.vbox + * @extends CKEDITOR.ui.dialog.hbox + * @constructor Creates a vbox class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {Array} childObjList + * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. + * @param {Array} childHtmlList + * Array of HTML code that correspond to the HTML output of all the + * objects in childObjList. + * @param {Array} htmlList Array of HTML code that this element will output to. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `width` (Optional) The width of the layout. + * * `heights` (Optional) The heights of individual cells. + * * `align` (Optional) The alignment of the layout. + * * `padding` (Optional) The padding width inside child cells. + * * `expand` (Optional) Whether the layout should expand + * vertically to fill its container. + */ + vbox: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { + if ( arguments.length < 3 ) + return; + + this._ || ( this._ = {} ); + + var children = this._.children = childObjList, + width = elementDefinition && elementDefinition.width || null, + heights = elementDefinition && elementDefinition.heights || null; + /** @ignore */ + var innerHTML = function() { + var html = [ '' ); + for ( var i = 0; i < childHtmlList.length; i++ ) { + var styles = []; + html.push( '' ); + } + html.push( '
0 ) + html.push( 'style="', styles.join( '; ' ), '" ' ); + html.push( ' class="cke_dialog_ui_vbox_child">', childHtmlList[ i ], '
' ); + return html.join( '' ); + }; + CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type: 'vbox' }, htmlList, 'div', null, { role: 'presentation' }, innerHTML ); + } + }; + } )(); + + /** @class CKEDITOR.ui.dialog.uiElement */ + CKEDITOR.ui.dialog.uiElement.prototype = { + /** + * Gets the root DOM element of this dialog UI object. + * + * uiElement.getElement().hide(); + * + * @returns {CKEDITOR.dom.element} Root DOM element of UI object. + */ + getElement: function() { + return CKEDITOR.document.getById( this.domId ); + }, + + /** + * Gets the DOM element that the user inputs values. + * + * This function is used by {@link #setValue}, {@link #getValue} and {@link #focus}. It should + * be overrided in child classes where the input element isn't the root + * element. + * + * var rawValue = textInput.getInputElement().$.value; + * + * @returns {CKEDITOR.dom.element} The element where the user input values. + */ + getInputElement: function() { + return this.getElement(); + }, + + /** + * Gets the parent dialog object containing this UI element. + * + * var dialog = uiElement.getDialog(); + * + * @returns {CKEDITOR.dialog} Parent dialog object. + */ + getDialog: function() { + return this._.dialog; + }, + + /** + * Sets the value of this dialog UI object. + * + * uiElement.setValue( 'Dingo' ); + * + * @chainable + * @param {Object} value The new value. + * @param {Boolean} noChangeEvent Internal commit, to supress `change` event on this element. + */ + setValue: function( value, noChangeEvent ) { + this.getInputElement().setValue( value ); + !noChangeEvent && this.fire( 'change', { value: value } ); + return this; + }, + + /** + * Gets the current value of this dialog UI object. + * + * var myValue = uiElement.getValue(); + * + * @returns {Object} The current value. + */ + getValue: function() { + return this.getInputElement().getValue(); + }, + + /** + * Tells whether the UI object's value has changed. + * + * if ( uiElement.isChanged() ) + * confirm( 'Value changed! Continue?' ); + * + * @returns {Boolean} `true` if changed, `false` if not changed. + */ + isChanged: function() { + // Override in input classes. + return false; + }, + + /** + * Selects the parent tab of this element. Usually called by focus() or overridden focus() methods. + * + * focus : function() { + * this.selectParentTab(); + * // do something else. + * } + * + * @chainable + */ + selectParentTab: function() { + var element = this.getInputElement(), + cursor = element, + tabId; + while ( ( cursor = cursor.getParent() ) && cursor.$.className.search( 'cke_dialog_page_contents' ) == -1 ) { + + } + + // Some widgets don't have parent tabs (e.g. OK and Cancel buttons). + if ( !cursor ) + return this; + + tabId = cursor.getAttribute( 'name' ); + // Avoid duplicate select. + if ( this._.dialog._.currentTabId != tabId ) + this._.dialog.selectPage( tabId ); + return this; + }, + + /** + * Puts the focus to the UI object. Switches tabs if the UI object isn't in the active tab page. + * + * uiElement.focus(); + * + * @chainable + */ + focus: function() { + this.selectParentTab().getInputElement().focus(); + return this; + }, + + /** + * Registers the `on*` event handlers defined in the element definition. + * + * The default behavior of this function is: + * + * 1. If the on* event is defined in the class's eventProcesors list, + * then the registration is delegated to the corresponding function + * in the eventProcessors list. + * 2. If the on* event is not defined in the eventProcessors list, then + * register the event handler under the corresponding DOM event of + * the UI element's input DOM element (as defined by the return value + * of {@link #getInputElement}). + * + * This function is only called at UI element instantiation, but can + * be overridded in child classes if they require more flexibility. + * + * @chainable + * @param {CKEDITOR.dialog.definition.uiElement} definition The UI element + * definition. + */ + registerEvents: function( definition ) { + var regex = /^on([A-Z]\w+)/, + match; + + var registerDomEvent = function( uiElement, dialog, eventName, func ) { + dialog.on( 'load', function() { + uiElement.getInputElement().on( eventName, func, uiElement ); + } ); + }; + + for ( var i in definition ) { + if ( !( match = i.match( regex ) ) ) + continue; + if ( this.eventProcessors[ i ] ) + this.eventProcessors[ i ].call( this, this._.dialog, definition[ i ] ); + else + registerDomEvent( this, this._.dialog, match[ 1 ].toLowerCase(), definition[ i ] ); + } + + return this; + }, + + /** + * The event processor list used by + * {@link CKEDITOR.ui.dialog.uiElement#getInputElement} at UI element + * instantiation. The default list defines three `on*` events: + * + * 1. `onLoad` - Called when the element's parent dialog opens for the + * first time. + * 2. `onShow` - Called whenever the element's parent dialog opens. + * 3. `onHide` - Called whenever the element's parent dialog closes. + * + * // This connects the 'click' event in CKEDITOR.ui.dialog.button to onClick + * // handlers in the UI element's definitions. + * CKEDITOR.ui.dialog.button.eventProcessors = CKEDITOR.tools.extend( {}, + * CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, + * { onClick : function( dialog, func ) { this.on( 'click', func ); } }, + * true + * ); + * + * @property {Object} + */ + eventProcessors: { + onLoad: function( dialog, func ) { + dialog.on( 'load', func, this ); + }, + + onShow: function( dialog, func ) { + dialog.on( 'show', func, this ); + }, + + onHide: function( dialog, func ) { + dialog.on( 'hide', func, this ); + } + }, + + /** + * The default handler for a UI element's access key down event, which + * tries to put focus to the UI element. + * + * Can be overridded in child classes for more sophisticaed behavior. + * + * @param {CKEDITOR.dialog} dialog The parent dialog object. + * @param {String} key The key combination pressed. Since access keys + * are defined to always include the `CTRL` key, its value should always + * include a `'CTRL+'` prefix. + */ + accessKeyDown: function() { + this.focus(); + }, + + /** + * The default handler for a UI element's access key up event, which + * does nothing. + * + * Can be overridded in child classes for more sophisticated behavior. + * + * @param {CKEDITOR.dialog} dialog The parent dialog object. + * @param {String} key The key combination pressed. Since access keys + * are defined to always include the `CTRL` key, its value should always + * include a `'CTRL+'` prefix. + */ + accessKeyUp: function() {}, + + /** + * Disables a UI element. + */ + disable: function() { + var element = this.getElement(), + input = this.getInputElement(); + input.setAttribute( 'disabled', 'true' ); + element.addClass( 'cke_disabled' ); + }, + + /** + * Enables a UI element. + */ + enable: function() { + var element = this.getElement(), + input = this.getInputElement(); + input.removeAttribute( 'disabled' ); + element.removeClass( 'cke_disabled' ); + }, + + /** + * Determines whether an UI element is enabled or not. + * + * @returns {Boolean} Whether the UI element is enabled. + */ + isEnabled: function() { + return !this.getElement().hasClass( 'cke_disabled' ); + }, + + /** + * Determines whether an UI element is visible or not. + * + * @returns {Boolean} Whether the UI element is visible. + */ + isVisible: function() { + return this.getInputElement().isVisible(); + }, + + /** + * Determines whether an UI element is focus-able or not. + * Focus-able is defined as being both visible and enabled. + * + * @returns {Boolean} Whether the UI element can be focused. + */ + isFocusable: function() { + if ( !this.isEnabled() || !this.isVisible() ) + return false; + return true; + } + }; + + /** @class CKEDITOR.ui.dialog.hbox */ + CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { + /** + * Gets a child UI element inside this container. + * + * var checkbox = hbox.getChild( [0,1] ); + * checkbox.setValue( true ); + * + * @param {Array/Number} indices An array or a single number to indicate the child's + * position in the container's descendant tree. Omit to get all the children in an array. + * @returns {Array/CKEDITOR.ui.dialog.uiElement} Array of all UI elements in the container + * if no argument given, or the specified UI element if indices is given. + */ + getChild: function( indices ) { + // If no arguments, return a clone of the children array. + if ( arguments.length < 1 ) + return this._.children.concat(); + + // If indices isn't array, make it one. + if ( !indices.splice ) + indices = [ indices ]; + + // Retrieve the child element according to tree position. + if ( indices.length < 2 ) + return this._.children[ indices[ 0 ] ]; + else + return ( this._.children[ indices[ 0 ] ] && this._.children[ indices[ 0 ] ].getChild ) ? this._.children[ indices[ 0 ] ].getChild( indices.slice( 1, indices.length ) ) : null; + } + }, true ); + + CKEDITOR.ui.dialog.vbox.prototype = new CKEDITOR.ui.dialog.hbox(); + + ( function() { + var commonBuilder = { + build: function( dialog, elementDefinition, output ) { + var children = elementDefinition.children, + child, + childHtmlList = [], + childObjList = []; + for ( var i = 0; + ( i < children.length && ( child = children[ i ] ) ); i++ ) { + var childHtml = []; + childHtmlList.push( childHtml ); + childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) ); + } + return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, childObjList, childHtmlList, output, elementDefinition ); + } + }; + + CKEDITOR.dialog.addUIElement( 'hbox', commonBuilder ); + CKEDITOR.dialog.addUIElement( 'vbox', commonBuilder ); + } )(); + + /** + * Generic dialog command. It opens a specific dialog when executed. + * + * // Register the "link" command, which opens the "link" dialog. + * editor.addCommand( 'link', new CKEDITOR.dialogCommand( 'link' ) ); + * + * @class + * @constructor Creates a dialogCommand class instance. + * @extends CKEDITOR.commandDefinition + * @param {String} dialogName The name of the dialog to open when executing + * this command. + * @param {Object} [ext] Additional command definition's properties. + */ + CKEDITOR.dialogCommand = function( dialogName, ext ) { + this.dialogName = dialogName; + CKEDITOR.tools.extend( this, ext, true ); + }; + + CKEDITOR.dialogCommand.prototype = { + exec: function( editor ) { + editor.openDialog( this.dialogName ); + }, + + // Dialog commands just open a dialog ui, thus require no undo logic, + // undo support should dedicate to specific dialog implementation. + canUndo: false, + + editorFocus: 1 + }; + + ( function() { + var notEmptyRegex = /^([a]|[^a])+$/, + integerRegex = /^\d*$/, + numberRegex = /^\d*(?:\.\d+)?$/, + htmlLengthRegex = /^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/, + cssLengthRegex = /^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i, + inlineStyleRegex = /^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/; + + CKEDITOR.VALIDATE_OR = 1; + CKEDITOR.VALIDATE_AND = 2; + + CKEDITOR.dialog.validate = { + functions: function() { + var args = arguments; + return function() { + /** + * It's important for validate functions to be able to accept the value + * as argument in addition to this.getValue(), so that it is possible to + * combine validate functions together to make more sophisticated + * validators. + */ + var value = this && this.getValue ? this.getValue() : args[ 0 ]; + + var msg, + relation = CKEDITOR.VALIDATE_AND, + functions = [], + i; + + for ( i = 0; i < args.length; i++ ) { + if ( typeof args[ i ] == 'function' ) + functions.push( args[ i ] ); + else + break; + } + + if ( i < args.length && typeof args[ i ] == 'string' ) { + msg = args[ i ]; + i++; + } + + if ( i < args.length && typeof args[ i ] == 'number' ) + relation = args[ i ]; + + var passed = ( relation == CKEDITOR.VALIDATE_AND ? true : false ); + for ( i = 0; i < functions.length; i++ ) { + if ( relation == CKEDITOR.VALIDATE_AND ) + passed = passed && functions[ i ]( value ); + else + passed = passed || functions[ i ]( value ); + } + + return !passed ? msg : true; + }; + }, + + regex: function( regex, msg ) { + /* + * Can be greatly shortened by deriving from functions validator if code size + * turns out to be more important than performance. + */ + return function() { + var value = this && this.getValue ? this.getValue() : arguments[ 0 ]; + return !regex.test( value ) ? msg : true; + }; + }, + + notEmpty: function( msg ) { + return this.regex( notEmptyRegex, msg ); + }, + + integer: function( msg ) { + return this.regex( integerRegex, msg ); + }, + + 'number': function( msg ) { + return this.regex( numberRegex, msg ); + }, + + 'cssLength': function( msg ) { + return this.functions( function( val ) { + return cssLengthRegex.test( CKEDITOR.tools.trim( val ) ); + }, msg ); + }, + + 'htmlLength': function( msg ) { + return this.functions( function( val ) { + return htmlLengthRegex.test( CKEDITOR.tools.trim( val ) ); + }, msg ); + }, + + 'inlineStyle': function( msg ) { + return this.functions( function( val ) { + return inlineStyleRegex.test( CKEDITOR.tools.trim( val ) ); + }, msg ); + }, + + equals: function( value, msg ) { + return this.functions( function( val ) { + return val == value; + }, msg ); + }, + + notEqual: function( value, msg ) { + return this.functions( function( val ) { + return val != value; + }, msg ); + } + }; + + CKEDITOR.on( 'instanceDestroyed', function( evt ) { + // Remove dialog cover on last instance destroy. + if ( CKEDITOR.tools.isEmpty( CKEDITOR.instances ) ) { + var currentTopDialog; + while ( ( currentTopDialog = CKEDITOR.dialog._.currentTop ) ) + currentTopDialog.hide(); + removeCovers(); + } + + var dialogs = evt.editor._.storedDialogs; + for ( var name in dialogs ) + dialogs[ name ].destroy(); + + } ); + + } )(); + + // Extend the CKEDITOR.editor class with dialog specific functions. + CKEDITOR.tools.extend( CKEDITOR.editor.prototype, { + /** + * Loads and opens a registered dialog. + * + * CKEDITOR.instances.editor1.openDialog( 'smiley' ); + * + * @member CKEDITOR.editor + * @param {String} dialogName The registered name of the dialog. + * @param {Function} callback The function to be invoked after dialog instance created. + * @returns {CKEDITOR.dialog} The dialog object corresponding to the dialog displayed. + * `null` if the dialog name is not registered. + * @see CKEDITOR.dialog#add + */ + openDialog: function( dialogName, callback ) { + var dialog = null, dialogDefinitions = CKEDITOR.dialog._.dialogDefinitions[ dialogName ]; + + if ( CKEDITOR.dialog._.currentTop === null ) + showCover( this ); + + // If the dialogDefinition is already loaded, open it immediately. + if ( typeof dialogDefinitions == 'function' ) { + var storedDialogs = this._.storedDialogs || ( this._.storedDialogs = {} ); + + dialog = storedDialogs[ dialogName ] || ( storedDialogs[ dialogName ] = new CKEDITOR.dialog( this, dialogName ) ); + + callback && callback.call( dialog, dialog ); + dialog.show(); + + } else if ( dialogDefinitions == 'failed' ) { + hideCover( this ); + throw new Error( '[CKEDITOR.dialog.openDialog] Dialog "' + dialogName + '" failed when loading definition.' ); + } else if ( typeof dialogDefinitions == 'string' ) { + + CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( dialogDefinitions ), + function() { + var dialogDefinition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ]; + // In case of plugin error, mark it as loading failed. + if ( typeof dialogDefinition != 'function' ) + CKEDITOR.dialog._.dialogDefinitions[ dialogName ] = 'failed'; + + this.openDialog( dialogName, callback ); + }, this, 0, 1 ); + } + + CKEDITOR.skin.loadPart( 'dialog' ); + + return dialog; + } + } ); +} )(); + +CKEDITOR.plugins.add( 'dialog', { + requires: 'dialogui', + init: function( editor ) { + editor.on( 'doubleclick', function( evt ) { + if ( evt.data.dialog ) + editor.openDialog( evt.data.dialog ); + }, null, null, 999 ); + } +} ); + +// Dialog related configurations. + +/** + * The color of the dialog background cover. It should be a valid CSS color string. + * + * config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)'; + * + * @cfg {String} [dialog_backgroundCoverColor='white'] + * @member CKEDITOR.config + */ + +/** + * The opacity of the dialog background cover. It should be a number within the + * range `[0.0, 1.0]`. + * + * config.dialog_backgroundCoverOpacity = 0.7; + * + * @cfg {Number} [dialog_backgroundCoverOpacity=0.5] + * @member CKEDITOR.config + */ + +/** + * If the dialog has more than one tab, put focus into the first tab as soon as dialog is opened. + * + * config.dialog_startupFocusTab = true; + * + * @cfg {Boolean} [dialog_startupFocusTab=false] + * @member CKEDITOR.config + */ + +/** + * The distance of magnetic borders used in moving and resizing dialogs, + * measured in pixels. + * + * config.dialog_magnetDistance = 30; + * + * @cfg {Number} [dialog_magnetDistance=20] + * @member CKEDITOR.config + */ + +/** + * The guideline to follow when generating the dialog buttons. There are 3 possible options: + * + * * `'OS'` - the buttons will be displayed in the default order of the user's OS; + * * `'ltr'` - for Left-To-Right order; + * * `'rtl'` - for Right-To-Left order. + * + * Example: + * + * config.dialog_buttonsOrder = 'rtl'; + * + * @since 3.5 + * @cfg {String} [dialog_buttonsOrder='OS'] + * @member CKEDITOR.config + */ + +/** + * The dialog contents to removed. It's a string composed by dialog name and tab name with a colon between them. + * + * Separate each pair with semicolon (see example). + * + * **Note:** All names are case-sensitive. + * + * **Note:** Be cautious when specifying dialog tabs that are mandatory, + * like `'info'`, dialog functionality might be broken because of this! + * + * config.removeDialogTabs = 'flash:advanced;image:Link'; + * + * @since 3.5 + * @cfg {String} [removeDialogTabs=''] + * @member CKEDITOR.config + */ + +/** + * Tells if user should not be asked to confirm close, if any dialog field was modified. + * By default it is set to `false` meaning that the confirmation dialog will be shown. + * + * config.dialog_noConfirmCancel = true; + * + * @since 4.3 + * @cfg {Boolean} [dialog_noConfirmCancel=false] + * @member CKEDITOR.config + */ + +/** + * Event fired when a dialog definition is about to be used to create a dialog into + * an editor instance. This event makes it possible to customize the definition + * before creating it. + * + * Note that this event is called only the first time a specific dialog is + * opened. Successive openings will use the cached dialog, and this event will + * not get fired. + * + * @event dialogDefinition + * @member CKEDITOR + * @param {CKEDITOR.dialog.definition} data The dialog defination that + * is being loaded. + * @param {CKEDITOR.editor} editor The editor instance that will use the dialog. + */ + +/** + * Event fired when a tab is going to be selected in a dialog. + * + * @event selectPage + * @member CKEDITOR.dialog + * @param data + * @param {String} data.page The id of the page that it's gonna be selected. + * @param {String} data.currentPage The id of the current page. + */ + +/** + * Event fired when the user tries to dismiss a dialog. + * + * @event cancel + * @member CKEDITOR.dialog + * @param data + * @param {Boolean} data.hide Whether the event should proceed or not. + */ + +/** + * Event fired when the user tries to confirm a dialog. + * + * @event ok + * @member CKEDITOR.dialog + * @param data + * @param {Boolean} data.hide Whether the event should proceed or not. + */ + +/** + * Event fired when a dialog is shown. + * + * @event show + * @member CKEDITOR.dialog + */ + +/** + * Event fired when a dialog is shown. + * + * @event dialogShow + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param {CKEDITOR.dialog} data The opened dialog instance. + */ + +/** + * Event fired when a dialog is hidden. + * + * @event hide + * @member CKEDITOR.dialog + */ + +/** + * Event fired when a dialog is hidden. + * + * @event dialogHide + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param {CKEDITOR.dialog} data The hidden dialog instance. + */ + +/** + * Event fired when a dialog is being resized. The event is fired on + * both the {@link CKEDITOR.dialog} object and the dialog instance + * since 3.5.3, previously it was only available in the global object. + * + * @static + * @event resize + * @member CKEDITOR.dialog + * @param data + * @param {CKEDITOR.dialog} data.dialog The dialog being resized (if + * it is fired on the dialog itself, this parameter is not sent). + * @param {String} data.skin The skin name. + * @param {Number} data.width The new width. + * @param {Number} data.height The new height. + */ + +/** + * Event fired when a dialog is being resized. The event is fired on + * both the {@link CKEDITOR.dialog} object and the dialog instance + * since 3.5.3, previously it was only available in the global object. + * + * @since 3.5 + * @event resize + * @member CKEDITOR.dialog + * @param data + * @param {Number} data.width The new width. + * @param {Number} data.height The new height. + */ + +/** + * Event fired when the dialog state changes, usually by {@link CKEDITOR.dialog#setState}. + * + * @since 4.5 + * @event state + * @member CKEDITOR.dialog + * @param data + * @param {Number} data The new state. Either {@link CKEDITOR#DIALOG_STATE_IDLE} or {@link CKEDITOR#DIALOG_STATE_BUSY}. + */ diff --git a/sources/plugins/dialog/samples/assets/my_dialog.js b/sources/plugins/dialog/samples/assets/my_dialog.js new file mode 100644 index 00000000..6ee1a201 --- /dev/null +++ b/sources/plugins/dialog/samples/assets/my_dialog.js @@ -0,0 +1,49 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.dialog.add( 'myDialog', function() { + return { + title: 'My Dialog', + minWidth: 400, + minHeight: 200, + contents: [ + { + id: 'tab1', + label: 'First Tab', + title: 'First Tab', + elements: [ + { + id: 'input1', + type: 'text', + label: 'Text Field' + }, + { + id: 'select1', + type: 'select', + label: 'Select Field', + items: [ + [ 'option1', 'value1' ], + [ 'option2', 'value2' ] + ] + } + ] + }, + { + id: 'tab2', + label: 'Second Tab', + title: 'Second Tab', + elements: [ + { + id: 'button1', + type: 'button', + label: 'Button Field' + } + ] + } + ] + }; +} ); + +// %LEAVE_UNMINIFIED% %REMOVE_LINE% diff --git a/sources/plugins/dialog/samples/dialog.html b/sources/plugins/dialog/samples/dialog.html new file mode 100644 index 00000000..df43657e --- /dev/null +++ b/sources/plugins/dialog/samples/dialog.html @@ -0,0 +1,190 @@ + + + + + + Using API to Customize Dialog Windows — CKEditor Sample + + + + + + + + + +

+ CKEditor Samples » Using CKEditor Dialog API +

+
+ This sample is not maintained anymore. Check out the brand new samples in CKEditor SDK. +
+
+

+ This sample shows how to use the + CKEditor Dialog API + to customize CKEditor dialog windows without changing the original editor code. + The following customizations are being done in the example below: +

+

+ For details on how to create this setup check the source code of this sample page. +

+
+

A custom dialog is added to the editors using the pluginsLoaded event, from an external dialog definition file:

+
    +
  1. Creating a custom dialog window – "My Dialog" dialog window opened with the "My Dialog" toolbar button.
  2. +
  3. Creating a custom button – Add button to open the dialog with "My Dialog" toolbar button.
  4. +
+ + +

The below editor modify the dialog definition of the above added dialog using the dialogDefinition event:

+
    +
  1. Adding dialog tab – Add new tab "My Tab" to dialog window.
  2. +
  3. Removing a dialog window tab – Remove "Second Tab" page from the dialog window.
  4. +
  5. Adding dialog window fields – Add "My Custom Field" to the dialog window.
  6. +
  7. Removing dialog window field – Remove "Select Field" selection field from the dialog window.
  8. +
  9. Setting default values for dialog window fields – Set default value of "Text Field" text field.
  10. +
  11. Setup initial focus for dialog window – Put initial focus on "My Custom Field" text field.
  12. +
+ + + + + diff --git a/sources/plugins/dialogadvtab/plugin.js b/sources/plugins/dialogadvtab/plugin.js new file mode 100644 index 00000000..f57f604b --- /dev/null +++ b/sources/plugins/dialogadvtab/plugin.js @@ -0,0 +1,196 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +( function() { + + function setupAdvParams( element ) { + var attrName = this.att; + + var value = element && element.hasAttribute( attrName ) && element.getAttribute( attrName ) || ''; + + if ( value !== undefined ) + this.setValue( value ); + } + + function commitAdvParams() { + // Dialogs may use different parameters in the commit list, so, by + // definition, we take the first CKEDITOR.dom.element available. + var element; + + for ( var i = 0; i < arguments.length; i++ ) { + if ( arguments[ i ] instanceof CKEDITOR.dom.element ) { + element = arguments[ i ]; + break; + } + } + + if ( element ) { + var attrName = this.att, + value = this.getValue(); + + if ( value ) + element.setAttribute( attrName, value ); + else + element.removeAttribute( attrName, value ); + } + } + + var defaultTabConfig = { id: 1, dir: 1, classes: 1, styles: 1 }; + + CKEDITOR.plugins.add( 'dialogadvtab', { + requires: 'dialog', + + // Returns allowed content rule for the content created by this plugin. + allowedContent: function( tabConfig ) { + if ( !tabConfig ) + tabConfig = defaultTabConfig; + + var allowedAttrs = []; + if ( tabConfig.id ) + allowedAttrs.push( 'id' ); + if ( tabConfig.dir ) + allowedAttrs.push( 'dir' ); + + var allowed = ''; + + if ( allowedAttrs.length ) + allowed += '[' + allowedAttrs.join( ',' ) + ']'; + + if ( tabConfig.classes ) + allowed += '(*)'; + if ( tabConfig.styles ) + allowed += '{*}'; + + return allowed; + }, + + // @param tabConfig + // id, dir, classes, styles + createAdvancedTab: function( editor, tabConfig, element ) { + if ( !tabConfig ) + tabConfig = defaultTabConfig; + + var lang = editor.lang.common; + + var result = { + id: 'advanced', + label: lang.advancedTab, + title: lang.advancedTab, + elements: [ { + type: 'vbox', + padding: 1, + children: [] + } ] + }; + + var contents = []; + + if ( tabConfig.id || tabConfig.dir ) { + if ( tabConfig.id ) { + contents.push( { + id: 'advId', + att: 'id', + type: 'text', + requiredContent: element ? element + '[id]' : null, + label: lang.id, + setup: setupAdvParams, + commit: commitAdvParams + } ); + } + + if ( tabConfig.dir ) { + contents.push( { + id: 'advLangDir', + att: 'dir', + type: 'select', + requiredContent: element ? element + '[dir]' : null, + label: lang.langDir, + 'default': '', + style: 'width:100%', + items: [ + [ lang.notSet, '' ], + [ lang.langDirLTR, 'ltr' ], + [ lang.langDirRTL, 'rtl' ] + ], + setup: setupAdvParams, + commit: commitAdvParams + } ); + } + + result.elements[ 0 ].children.push( { + type: 'hbox', + widths: [ '50%', '50%' ], + children: [].concat( contents ) + } ); + } + + if ( tabConfig.styles || tabConfig.classes ) { + contents = []; + + if ( tabConfig.styles ) { + contents.push( { + id: 'advStyles', + att: 'style', + type: 'text', + requiredContent: element ? element + '{cke-xyz}' : null, + label: lang.styles, + 'default': '', + + validate: CKEDITOR.dialog.validate.inlineStyle( lang.invalidInlineStyle ), + onChange: function() {}, + + getStyle: function( name, defaultValue ) { + var match = this.getValue().match( new RegExp( '(?:^|;)\\s*' + name + '\\s*:\\s*([^;]*)', 'i' ) ); + return match ? match[ 1 ] : defaultValue; + }, + + updateStyle: function( name, value ) { + var styles = this.getValue(); + + var tmp = editor.document.createElement( 'span' ); + tmp.setAttribute( 'style', styles ); + tmp.setStyle( name, value ); + styles = CKEDITOR.tools.normalizeCssText( tmp.getAttribute( 'style' ) ); + + this.setValue( styles, 1 ); + }, + + setup: setupAdvParams, + + commit: commitAdvParams + + } ); + } + + if ( tabConfig.classes ) { + contents.push( { + type: 'hbox', + widths: [ '45%', '55%' ], + children: [ { + id: 'advCSSClasses', + att: 'class', + type: 'text', + requiredContent: element ? element + '(cke-xyz)' : null, + label: lang.cssClasses, + 'default': '', + setup: setupAdvParams, + commit: commitAdvParams + + } ] + } ); + } + + result.elements[ 0 ].children.push( { + type: 'hbox', + widths: [ '50%', '50%' ], + children: [].concat( contents ) + } ); + } + + return result; + } + } ); + +} )(); diff --git a/sources/plugins/dialogui/plugin.js b/sources/plugins/dialogui/plugin.js new file mode 100644 index 00000000..3b3f1e22 --- /dev/null +++ b/sources/plugins/dialogui/plugin.js @@ -0,0 +1,1530 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview The Dialog User Interface plugin. + */ + +CKEDITOR.plugins.add( 'dialogui', { + onLoad: function() { + + var initPrivateObject = function( elementDefinition ) { + this._ || ( this._ = {} ); + this._[ 'default' ] = this._.initValue = elementDefinition[ 'default' ] || ''; + this._.required = elementDefinition.required || false; + var args = [ this._ ]; + for ( var i = 1; i < arguments.length; i++ ) + args.push( arguments[ i ] ); + args.push( true ); + CKEDITOR.tools.extend.apply( CKEDITOR.tools, args ); + return this._; + }, + textBuilder = { + build: function( dialog, elementDefinition, output ) { + return new CKEDITOR.ui.dialog.textInput( dialog, elementDefinition, output ); + } + }, + commonBuilder = { + build: function( dialog, elementDefinition, output ) { + return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, elementDefinition, output ); + } + }, + containerBuilder = { + build: function( dialog, elementDefinition, output ) { + var children = elementDefinition.children, + child, + childHtmlList = [], + childObjList = []; + for ( var i = 0; + ( i < children.length && ( child = children[ i ] ) ); i++ ) { + var childHtml = []; + childHtmlList.push( childHtml ); + childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) ); + } + return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, childObjList, childHtmlList, output, elementDefinition ); + } + }, + commonPrototype = { + isChanged: function() { + return this.getValue() != this.getInitValue(); + }, + + reset: function( noChangeEvent ) { + this.setValue( this.getInitValue(), noChangeEvent ); + }, + + setInitValue: function() { + this._.initValue = this.getValue(); + }, + + resetInitValue: function() { + this._.initValue = this._[ 'default' ]; + }, + + getInitValue: function() { + return this._.initValue; + } + }, + commonEventProcessors = CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { + onChange: function( dialog, func ) { + if ( !this._.domOnChangeRegistered ) { + dialog.on( 'load', function() { + this.getInputElement().on( 'change', function() { + // Make sure 'onchange' doesn't get fired after dialog closed. (#5719) + if ( !dialog.parts.dialog.isVisible() ) + return; + + this.fire( 'change', { value: this.getValue() } ); + }, this ); + }, this ); + this._.domOnChangeRegistered = true; + } + + this.on( 'change', func ); + } + }, true ), + eventRegex = /^on([A-Z]\w+)/, + cleanInnerDefinition = function( def ) { + // An inner UI element should not have the parent's type, title or events. + for ( var i in def ) { + if ( eventRegex.test( i ) || i == 'title' || i == 'type' ) + delete def[ i ]; + } + return def; + }, + // @context {CKEDITOR.dialog.uiElement} UI element (textarea or textInput) + // @param {CKEDITOR.dom.event} evt + toggleBidiKeyUpHandler = function( evt ) { + var keystroke = evt.data.getKeystroke(); + + // ALT + SHIFT + Home for LTR direction. + if ( keystroke == CKEDITOR.SHIFT + CKEDITOR.ALT + 36 ) + this.setDirectionMarker( 'ltr' ); + + // ALT + SHIFT + End for RTL direction. + else if ( keystroke == CKEDITOR.SHIFT + CKEDITOR.ALT + 35 ) + this.setDirectionMarker( 'rtl' ); + }; + + CKEDITOR.tools.extend( CKEDITOR.ui.dialog, { + /** + * Base class for all dialog window elements with a textual label on the left. + * + * @class CKEDITOR.ui.dialog.labeledElement + * @extends CKEDITOR.ui.dialog.uiElement + * @constructor Creates a labeledElement class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `label` (Required) The label string. + * * `labelLayout` (Optional) Put 'horizontal' here if the + * label element is to be laid out horizontally. Otherwise a vertical + * layout will be used. + * * `widths` (Optional) This applies only to horizontal + * layouts — a two-element array of lengths to specify the widths of the + * label and the content element. + * * `role` (Optional) Value for the `role` attribute. + * * `includeLabel` (Optional) If set to `true`, the `aria-labelledby` attribute + * will be included. + * + * @param {Array} htmlList The list of HTML code to output to. + * @param {Function} contentHtml + * A function returning the HTML code string to be added inside the content + * cell. + */ + labeledElement: function( dialog, elementDefinition, htmlList, contentHtml ) { + if ( arguments.length < 4 ) + return; + + var _ = initPrivateObject.call( this, elementDefinition ); + _.labelId = CKEDITOR.tools.getNextId() + '_label'; + this._.children = []; + + var innerHTML = function() { + var html = [], + requiredClass = elementDefinition.required ? ' cke_required' : ''; + if ( elementDefinition.labelLayout != 'horizontal' ) { + html.push( + '', + '' ); + } else { + var hboxDefinition = { + type: 'hbox', + widths: elementDefinition.widths, + padding: 0, + children: [ { + type: 'html', + html: '' + }, + { + type: 'html', + html: '' + + contentHtml.call( this, dialog, elementDefinition ) + + '' + } ] + }; + CKEDITOR.dialog._.uiElementBuilders.hbox.build( dialog, hboxDefinition, html ); + } + return html.join( '' ); + }; + var attributes = { role: elementDefinition.role || 'presentation' }; + + if ( elementDefinition.includeLabel ) + attributes[ 'aria-labelledby' ] = _.labelId; + + CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'div', null, attributes, innerHTML ); + }, + + /** + * A text input with a label. This UI element class represents both the + * single-line text inputs and password inputs in dialog boxes. + * + * @class CKEDITOR.ui.dialog.textInput + * @extends CKEDITOR.ui.dialog.labeledElement + * @constructor Creates a textInput class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `default` (Optional) The default value. + * * `validate` (Optional) The validation function. + * * `maxLength` (Optional) The maximum length of text box contents. + * * `size` (Optional) The size of the text box. This is + * usually overridden by the size defined by the skin, though. + * + * @param {Array} htmlList List of HTML code to output to. + */ + textInput: function( dialog, elementDefinition, htmlList ) { + if ( arguments.length < 3 ) + return; + + initPrivateObject.call( this, elementDefinition ); + var domId = this._.inputId = CKEDITOR.tools.getNextId() + '_textInput', + attributes = { 'class': 'cke_dialog_ui_input_' + elementDefinition.type, id: domId, type: elementDefinition.type }; + + // Set the validator, if any. + if ( elementDefinition.validate ) + this.validate = elementDefinition.validate; + + // Set the max length and size. + if ( elementDefinition.maxLength ) + attributes.maxlength = elementDefinition.maxLength; + if ( elementDefinition.size ) + attributes.size = elementDefinition.size; + + if ( elementDefinition.inputStyle ) + attributes.style = elementDefinition.inputStyle; + + // If user presses Enter in a text box, it implies clicking OK for the dialog. + var me = this, + keyPressedOnMe = false; + dialog.on( 'load', function() { + me.getInputElement().on( 'keydown', function( evt ) { + if ( evt.data.getKeystroke() == 13 ) + keyPressedOnMe = true; + } ); + + // Lower the priority this 'keyup' since 'ok' will close the dialog.(#3749) + me.getInputElement().on( 'keyup', function( evt ) { + if ( evt.data.getKeystroke() == 13 && keyPressedOnMe ) { + dialog.getButton( 'ok' ) && setTimeout( function() { + dialog.getButton( 'ok' ).click(); + }, 0 ); + keyPressedOnMe = false; + } + + if ( me.bidi ) + toggleBidiKeyUpHandler.call( me, evt ); + }, null, null, 1000 ); + } ); + + var innerHTML = function() { + // IE BUG: Text input fields in IE at 100% would exceed a or inline + // container's width, so need to wrap it inside a
. + var html = [ '' ); + return html.join( '' ); + }; + CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); + }, + + /** + * A text area with a label at the top or on the left. + * + * @class CKEDITOR.ui.dialog.textarea + * @extends CKEDITOR.ui.dialog.labeledElement + * @constructor Creates a textarea class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * + * The element definition. Accepted fields: + * + * * `rows` (Optional) The number of rows displayed. + * Defaults to 5 if not defined. + * * `cols` (Optional) The number of cols displayed. + * Defaults to 20 if not defined. Usually overridden by skins. + * * `default` (Optional) The default value. + * * `validate` (Optional) The validation function. + * + * @param {Array} htmlList List of HTML code to output to. + */ + textarea: function( dialog, elementDefinition, htmlList ) { + if ( arguments.length < 3 ) + return; + + initPrivateObject.call( this, elementDefinition ); + var me = this, + domId = this._.inputId = CKEDITOR.tools.getNextId() + '_textarea', + attributes = {}; + + if ( elementDefinition.validate ) + this.validate = elementDefinition.validate; + + // Generates the essential attributes for the textarea tag. + attributes.rows = elementDefinition.rows || 5; + attributes.cols = elementDefinition.cols || 20; + + attributes[ 'class' ] = 'cke_dialog_ui_input_textarea ' + ( elementDefinition[ 'class' ] || '' ); + + if ( typeof elementDefinition.inputStyle != 'undefined' ) + attributes.style = elementDefinition.inputStyle; + + if ( elementDefinition.dir ) + attributes.dir = elementDefinition.dir; + + if ( me.bidi ) { + dialog.on( 'load', function() { + me.getInputElement().on( 'keyup', toggleBidiKeyUpHandler ); + }, me ); + } + + var innerHTML = function() { + attributes[ 'aria-labelledby' ] = this._.labelId; + this._.required && ( attributes[ 'aria-required' ] = this._.required ); + var html = [ '' ); + return html.join( '' ); + }; + CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); + }, + + /** + * A single checkbox with a label on the right. + * + * @class CKEDITOR.ui.dialog.checkbox + * @extends CKEDITOR.ui.dialog.uiElement + * @constructor Creates a checkbox class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `checked` (Optional) Whether the checkbox is checked + * on instantiation. Defaults to `false`. + * * `validate` (Optional) The validation function. + * * `label` (Optional) The checkbox label. + * + * @param {Array} htmlList List of HTML code to output to. + */ + checkbox: function( dialog, elementDefinition, htmlList ) { + if ( arguments.length < 3 ) + return; + + var _ = initPrivateObject.call( this, elementDefinition, { 'default': !!elementDefinition[ 'default' ] } ); + + if ( elementDefinition.validate ) + this.validate = elementDefinition.validate; + + var innerHTML = function() { + var myDefinition = CKEDITOR.tools.extend( + {}, + elementDefinition, + { + id: elementDefinition.id ? elementDefinition.id + '_checkbox' : CKEDITOR.tools.getNextId() + '_checkbox' + }, + true + ), + html = []; + + var labelId = CKEDITOR.tools.getNextId() + '_label'; + var attributes = { 'class': 'cke_dialog_ui_checkbox_input', type: 'checkbox', 'aria-labelledby': labelId }; + cleanInnerDefinition( myDefinition ); + if ( elementDefinition[ 'default' ] ) + attributes.checked = 'checked'; + + if ( typeof myDefinition.inputStyle != 'undefined' ) + myDefinition.style = myDefinition.inputStyle; + + _.checkbox = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'input', null, attributes ); + html.push( + ' ' + ); + return html.join( '' ); + }; + + CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'span', null, null, innerHTML ); + }, + + /** + * A group of radio buttons. + * + * @class CKEDITOR.ui.dialog.radio + * @extends CKEDITOR.ui.dialog.labeledElement + * @constructor Creates a radio class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `default` (Required) The default value. + * * `validate` (Optional) The validation function. + * * `items` (Required) An array of options. Each option + * is a one- or two-item array of format `[ 'Description', 'Value' ]`. If `'Value'` + * is missing, then the value would be assumed to be the same as the description. + * + * @param {Array} htmlList List of HTML code to output to. + */ + radio: function( dialog, elementDefinition, htmlList ) { + if ( arguments.length < 3 ) + return; + + initPrivateObject.call( this, elementDefinition ); + + if ( !this._[ 'default' ] ) + this._[ 'default' ] = this._.initValue = elementDefinition.items[ 0 ][ 1 ]; + + if ( elementDefinition.validate ) + this.validate = elementDefinition.validate; + + var children = [], + me = this; + + var innerHTML = function() { + var inputHtmlList = [], + html = [], + commonName = ( elementDefinition.id ? elementDefinition.id : CKEDITOR.tools.getNextId() ) + '_radio'; + + for ( var i = 0; i < elementDefinition.items.length; i++ ) { + var item = elementDefinition.items[ i ], + title = item[ 2 ] !== undefined ? item[ 2 ] : item[ 0 ], + value = item[ 1 ] !== undefined ? item[ 1 ] : item[ 0 ], + inputId = CKEDITOR.tools.getNextId() + '_radio_input', + labelId = inputId + '_label', + + inputDefinition = CKEDITOR.tools.extend( {}, elementDefinition, { + id: inputId, + title: null, + type: null + }, true ), + + labelDefinition = CKEDITOR.tools.extend( {}, inputDefinition, { + title: title + }, true ), + + inputAttributes = { + type: 'radio', + 'class': 'cke_dialog_ui_radio_input', + name: commonName, + value: value, + 'aria-labelledby': labelId + }, + + inputHtml = []; + + if ( me._[ 'default' ] == value ) + inputAttributes.checked = 'checked'; + + cleanInnerDefinition( inputDefinition ); + cleanInnerDefinition( labelDefinition ); + + if ( typeof inputDefinition.inputStyle != 'undefined' ) + inputDefinition.style = inputDefinition.inputStyle; + + // Make inputs of radio type focusable (#10866). + inputDefinition.keyboardFocusable = true; + + children.push( new CKEDITOR.ui.dialog.uiElement( dialog, inputDefinition, inputHtml, 'input', null, inputAttributes ) ); + + inputHtml.push( ' ' ); + + new CKEDITOR.ui.dialog.uiElement( dialog, labelDefinition, inputHtml, 'label', null, { + id: labelId, + 'for': inputAttributes.id + }, item[ 0 ] ); + + inputHtmlList.push( inputHtml.join( '' ) ); + } + + new CKEDITOR.ui.dialog.hbox( dialog, children, inputHtmlList, html ); + + return html.join( '' ); + }; + + // Adding a role="radiogroup" to definition used for wrapper. + elementDefinition.role = 'radiogroup'; + elementDefinition.includeLabel = true; + + CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); + this._.children = children; + }, + + /** + * A button with a label inside. + * + * @class CKEDITOR.ui.dialog.button + * @extends CKEDITOR.ui.dialog.uiElement + * @constructor Creates a button class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `label` (Required) The button label. + * * `disabled` (Optional) Set to `true` if you want the + * button to appear in the disabled state. + * + * @param {Array} htmlList List of HTML code to output to. + */ + button: function( dialog, elementDefinition, htmlList ) { + if ( !arguments.length ) + return; + + if ( typeof elementDefinition == 'function' ) + elementDefinition = elementDefinition( dialog.getParentEditor() ); + + initPrivateObject.call( this, elementDefinition, { disabled: elementDefinition.disabled || false } ); + + // Add OnClick event to this input. + CKEDITOR.event.implementOn( this ); + + var me = this; + + // Register an event handler for processing button clicks. + dialog.on( 'load', function() { + var element = this.getElement(); + + ( function() { + element.on( 'click', function( evt ) { + me.click(); + // #9958 + evt.data.preventDefault(); + } ); + + element.on( 'keydown', function( evt ) { + if ( evt.data.getKeystroke() in { 32: 1 } ) { + me.click(); + evt.data.preventDefault(); + } + } ); + } )(); + + element.unselectable(); + }, this ); + + var outerDefinition = CKEDITOR.tools.extend( {}, elementDefinition ); + delete outerDefinition.style; + + var labelId = CKEDITOR.tools.getNextId() + '_label'; + CKEDITOR.ui.dialog.uiElement.call( this, dialog, outerDefinition, htmlList, 'a', null, { + style: elementDefinition.style, + href: 'javascript:void(0)', // jshint ignore:line + title: elementDefinition.label, + hidefocus: 'true', + 'class': elementDefinition[ 'class' ], + role: 'button', + 'aria-labelledby': labelId + }, '' + + CKEDITOR.tools.htmlEncode( elementDefinition.label ) + + '' ); + }, + + /** + * A select box. + * + * @class CKEDITOR.ui.dialog.select + * @extends CKEDITOR.ui.dialog.uiElement + * @constructor Creates a button class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `default` (Required) The default value. + * * `validate` (Optional) The validation function. + * * `items` (Required) An array of options. Each option + * is a one- or two-item array of format `[ 'Description', 'Value' ]`. If `'Value'` + * is missing, then the value would be assumed to be the same as the + * description. + * * `multiple` (Optional) Set this to `true` if you would like + * to have a multiple-choice select box. + * * `size` (Optional) The number of items to display in + * the select box. + * + * @param {Array} htmlList List of HTML code to output to. + */ + select: function( dialog, elementDefinition, htmlList ) { + if ( arguments.length < 3 ) + return; + + var _ = initPrivateObject.call( this, elementDefinition ); + + if ( elementDefinition.validate ) + this.validate = elementDefinition.validate; + + _.inputId = CKEDITOR.tools.getNextId() + '_select'; + + var innerHTML = function() { + var myDefinition = CKEDITOR.tools.extend( + {}, + elementDefinition, + { + id: ( elementDefinition.id ? elementDefinition.id + '_select' : CKEDITOR.tools.getNextId() + '_select' ) + }, + true + ), + html = [], + innerHTML = [], + attributes = { 'id': _.inputId, 'class': 'cke_dialog_ui_input_select', 'aria-labelledby': this._.labelId }; + + html.push( '' ); + + return html.join( '' ); + }; + + CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); + }, + + /** + * A file upload input. + * + * @class CKEDITOR.ui.dialog.file + * @extends CKEDITOR.ui.dialog.labeledElement + * @constructor Creates a file class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `validate` (Optional) The validation function. + * + * @param {Array} htmlList List of HTML code to output to. + */ + file: function( dialog, elementDefinition, htmlList ) { + if ( arguments.length < 3 ) + return; + + if ( elementDefinition[ 'default' ] === undefined ) + elementDefinition[ 'default' ] = ''; + + var _ = CKEDITOR.tools.extend( initPrivateObject.call( this, elementDefinition ), { definition: elementDefinition, buttons: [] } ); + + if ( elementDefinition.validate ) + this.validate = elementDefinition.validate; + + /** @ignore */ + var innerHTML = function() { + _.frameId = CKEDITOR.tools.getNextId() + '_fileInput'; + + var html = [ + '' ); + + return html.join( '' ); + }; + + // IE BUG: Parent container does not resize to contain the iframe automatically. + dialog.on( 'load', function() { + var iframe = CKEDITOR.document.getById( _.frameId ), + contentDiv = iframe.getParent(); + contentDiv.addClass( 'cke_dialog_ui_input_file' ); + } ); + + CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); + }, + + /** + * A button for submitting the file in a file upload input. + * + * @class CKEDITOR.ui.dialog.fileButton + * @extends CKEDITOR.ui.dialog.button + * @constructor Creates a fileButton class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `for` (Required) The file input's page and element ID + * to associate with, in a two-item array format: `[ 'page_id', 'element_id' ]`. + * * `validate` (Optional) The validation function. + * + * @param {Array} htmlList List of HTML code to output to. + */ + fileButton: function( dialog, elementDefinition, htmlList ) { + var me = this; + if ( arguments.length < 3 ) + return; + + initPrivateObject.call( this, elementDefinition ); + + if ( elementDefinition.validate ) + this.validate = elementDefinition.validate; + + var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition ); + var onClick = myDefinition.onClick; + myDefinition.className = ( myDefinition.className ? myDefinition.className + ' ' : '' ) + 'cke_dialog_ui_button'; + myDefinition.onClick = function( evt ) { + var target = elementDefinition[ 'for' ]; // [ pageId, elementId ] + if ( !onClick || onClick.call( this, evt ) !== false ) { + dialog.getContentElement( target[ 0 ], target[ 1 ] ).submit(); + this.disable(); + } + }; + + dialog.on( 'load', function() { + dialog.getContentElement( elementDefinition[ 'for' ][ 0 ], elementDefinition[ 'for' ][ 1 ] )._.buttons.push( me ); + } ); + + CKEDITOR.ui.dialog.button.call( this, dialog, myDefinition, htmlList ); + }, + + html: ( function() { + var myHtmlRe = /^\s*<[\w:]+\s+([^>]*)?>/, + theirHtmlRe = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/, + emptyTagRe = /\/$/; + /** + * A dialog window element made from raw HTML code. + * + * @class CKEDITOR.ui.dialog.html + * @extends CKEDITOR.ui.dialog.uiElement + * @constructor Creates a html class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition Element definition. + * Accepted fields: + * + * * `html` (Required) HTML code of this element. + * + * @param {Array} htmlList List of HTML code to be added to the dialog's content area. + */ + return function( dialog, elementDefinition, htmlList ) { + if ( arguments.length < 3 ) + return; + + var myHtmlList = [], + myHtml, + theirHtml = elementDefinition.html, + myMatch, theirMatch; + + // If the HTML input doesn't contain any tags at the beginning, add a tag around it. + if ( theirHtml.charAt( 0 ) != '<' ) + theirHtml = '' + theirHtml + ''; + + // Look for focus function in definition. + var focus = elementDefinition.focus; + if ( focus ) { + var oldFocus = this.focus; + this.focus = function() { + ( typeof focus == 'function' ? focus : oldFocus ).call( this ); + this.fire( 'focus' ); + }; + if ( elementDefinition.isFocusable ) { + var oldIsFocusable = this.isFocusable; + this.isFocusable = oldIsFocusable; + } + this.keyboardFocusable = true; + } + + CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, myHtmlList, 'span', null, null, '' ); + + // Append the attributes created by the uiElement call to the real HTML. + myHtml = myHtmlList.join( '' ); + myMatch = myHtml.match( myHtmlRe ); + theirMatch = theirHtml.match( theirHtmlRe ) || [ '', '', '' ]; + + if ( emptyTagRe.test( theirMatch[ 1 ] ) ) { + theirMatch[ 1 ] = theirMatch[ 1 ].slice( 0, -1 ); + theirMatch[ 2 ] = '/' + theirMatch[ 2 ]; + } + + htmlList.push( [ theirMatch[ 1 ], ' ', myMatch[ 1 ] || '', theirMatch[ 2 ] ].join( '' ) ); + }; + } )(), + + /** + * Form fieldset for grouping dialog UI elements. + * + * @class CKEDITOR.ui.dialog.fieldset + * @extends CKEDITOR.ui.dialog.uiElement + * @constructor Creates a fieldset class instance. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. + * @param {Array} childObjList + * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. + * @param {Array} childHtmlList Array of HTML code that corresponds to the HTML output of all the + * objects in childObjList. + * @param {Array} htmlList Array of HTML code that this element will output to. + * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition + * The element definition. Accepted fields: + * + * * `label` (Optional) The legend of the this fieldset. + * * `children` (Required) An array of dialog window field definitions which will be grouped inside this fieldset. + * + */ + fieldset: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { + var legendLabel = elementDefinition.label; + /** @ignore */ + var innerHTML = function() { + var html = []; + legendLabel && html.push( '' + legendLabel + '' ); + for ( var i = 0; i < childHtmlList.length; i++ ) + html.push( childHtmlList[ i ] ); + return html.join( '' ); + }; + + this._ = { children: childObjList }; + CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'fieldset', null, null, innerHTML ); + } + + }, true ); + + CKEDITOR.ui.dialog.html.prototype = new CKEDITOR.ui.dialog.uiElement(); + + /** @class CKEDITOR.ui.dialog.labeledElement */ + CKEDITOR.ui.dialog.labeledElement.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { + /** + * Sets the label text of the element. + * + * @param {String} label The new label text. + * @returns {CKEDITOR.ui.dialog.labeledElement} The current labeled element. + */ + setLabel: function( label ) { + var node = CKEDITOR.document.getById( this._.labelId ); + if ( node.getChildCount() < 1 ) + ( new CKEDITOR.dom.text( label, CKEDITOR.document ) ).appendTo( node ); + else + node.getChild( 0 ).$.nodeValue = label; + return this; + }, + + /** + * Retrieves the current label text of the elment. + * + * @returns {String} The current label text. + */ + getLabel: function() { + var node = CKEDITOR.document.getById( this._.labelId ); + if ( !node || node.getChildCount() < 1 ) + return ''; + else + return node.getChild( 0 ).getText(); + }, + + /** + * Defines the `onChange` event for UI element definitions. + * @property {Object} + */ + eventProcessors: commonEventProcessors + }, true ); + + /** @class CKEDITOR.ui.dialog.button */ + CKEDITOR.ui.dialog.button.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { + /** + * Simulates a click to the button. + * + * @returns {Object} Return value of the `click` event. + */ + click: function() { + if ( !this._.disabled ) + return this.fire( 'click', { dialog: this._.dialog } ); + return false; + }, + + /** + * Enables the button. + */ + enable: function() { + this._.disabled = false; + var element = this.getElement(); + element && element.removeClass( 'cke_disabled' ); + }, + + /** + * Disables the button. + */ + disable: function() { + this._.disabled = true; + this.getElement().addClass( 'cke_disabled' ); + }, + + /** + * Checks whether a field is visible. + * + * @returns {Boolean} + */ + isVisible: function() { + return this.getElement().getFirst().isVisible(); + }, + + /** + * Checks whether a field is enabled. Fields can be disabled by using the + * {@link #disable} method and enabled by using the {@link #enable} method. + * + * @returns {Boolean} + */ + isEnabled: function() { + return !this._.disabled; + }, + + /** + * Defines the `onChange` event and `onClick` for button element definitions. + * + * @property {Object} + */ + eventProcessors: CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { + onClick: function( dialog, func ) { + this.on( 'click', function() { + func.apply( this, arguments ); + } ); + } + }, true ), + + /** + * Handler for the element's access key up event. Simulates a click to + * the button. + */ + accessKeyUp: function() { + this.click(); + }, + + /** + * Handler for the element's access key down event. Simulates a mouse + * down to the button. + */ + accessKeyDown: function() { + this.focus(); + }, + + keyboardFocusable: true + }, true ); + + /** @class CKEDITOR.ui.dialog.textInput */ + CKEDITOR.ui.dialog.textInput.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement(), { + /** + * Gets the text input DOM element under this UI object. + * + * @returns {CKEDITOR.dom.element} The DOM element of the text input. + */ + getInputElement: function() { + return CKEDITOR.document.getById( this._.inputId ); + }, + + /** + * Puts focus into the text input. + */ + focus: function() { + var me = this.selectParentTab(); + + // GECKO BUG: setTimeout() is needed to workaround invisible selections. + setTimeout( function() { + var element = me.getInputElement(); + element && element.$.focus(); + }, 0 ); + }, + + /** + * Selects all the text in the text input. + */ + select: function() { + var me = this.selectParentTab(); + + // GECKO BUG: setTimeout() is needed to workaround invisible selections. + setTimeout( function() { + var e = me.getInputElement(); + if ( e ) { + e.$.focus(); + e.$.select(); + } + }, 0 ); + }, + + /** + * Handler for the text input's access key up event. Makes a `select()` + * call to the text input. + */ + accessKeyUp: function() { + this.select(); + }, + + /** + * Sets the value of this text input object. + * + * uiElement.setValue( 'Blamo' ); + * + * @param {Object} value The new value. + * @returns {CKEDITOR.ui.dialog.textInput} The current UI element. + */ + setValue: function( value ) { + if ( this.bidi ) { + var marker = value && value.charAt( 0 ), + dir = ( marker == '\u202A' ? 'ltr' : marker == '\u202B' ? 'rtl' : null ); + + if ( dir ) { + value = value.slice( 1 ); + } + + // Set the marker or reset it (if dir==null). + this.setDirectionMarker( dir ); + } + + if ( !value ) { + value = ''; + } + + return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply( this, arguments ); + }, + + /** + * Gets the value of this text input object. + * + * @returns {String} The value. + */ + getValue: function() { + var value = CKEDITOR.ui.dialog.uiElement.prototype.getValue.call( this ); + + if ( this.bidi && value ) { + var dir = this.getDirectionMarker(); + if ( dir ) { + value = ( dir == 'ltr' ? '\u202A' : '\u202B' ) + value; + } + } + + return value; + }, + + /** + * Sets the text direction marker and the `dir` attribute of the input element. + * + * @since 4.5 + * @param {String} dir The text direction. Pass `null` to reset. + */ + setDirectionMarker: function( dir ) { + var inputElement = this.getInputElement(); + + if ( dir ) { + inputElement.setAttributes( { + dir: dir, + 'data-cke-dir-marker': dir + } ); + // Don't remove the dir attribute if this field hasn't got the marker, + // because the dir attribute could be set independently. + } else if ( this.getDirectionMarker() ) { + inputElement.removeAttributes( [ 'dir', 'data-cke-dir-marker' ] ); + } + }, + + /** + * Gets the value of the text direction marker. + * + * @since 4.5 + * @returns {String} `'ltr'`, `'rtl'` or `null` if the marker is not set. + */ + getDirectionMarker: function() { + return this.getInputElement().data( 'cke-dir-marker' ); + }, + + keyboardFocusable: true + }, commonPrototype, true ); + + CKEDITOR.ui.dialog.textarea.prototype = new CKEDITOR.ui.dialog.textInput(); + + /** @class CKEDITOR.ui.dialog.select */ + CKEDITOR.ui.dialog.select.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement(), { + /** + * Gets the DOM element of the select box. + * + * @returns {CKEDITOR.dom.element} The `` element of this file input. + * + * @returns {CKEDITOR.dom.element} The file input element. + */ + getInputElement: function() { + var frameDocument = CKEDITOR.document.getById( this._.frameId ).getFrameDocument(); + return frameDocument.$.forms.length > 0 ? new CKEDITOR.dom.element( frameDocument.$.forms[ 0 ].elements[ 0 ] ) : this.getElement(); + }, + + /** + * Uploads the file in the file input. + * + * @returns {CKEDITOR.ui.dialog.file} This object. + */ + submit: function() { + this.getInputElement().getParent().$.submit(); + return this; + }, + + /** + * Gets the action assigned to the form. + * + * @returns {String} The value of the action. + */ + getAction: function() { + return this.getInputElement().getParent().$.action; + }, + + /** + * The events must be applied to the inner input element, and + * this must be done when the iframe and form have been loaded. + */ + registerEvents: function( definition ) { + var regex = /^on([A-Z]\w+)/, + match; + + var registerDomEvent = function( uiElement, dialog, eventName, func ) { + uiElement.on( 'formLoaded', function() { + uiElement.getInputElement().on( eventName, func, uiElement ); + } ); + }; + + for ( var i in definition ) { + if ( !( match = i.match( regex ) ) ) + continue; + + if ( this.eventProcessors[ i ] ) + this.eventProcessors[ i ].call( this, this._.dialog, definition[ i ] ); + else + registerDomEvent( this, this._.dialog, match[ 1 ].toLowerCase(), definition[ i ] ); + } + + return this; + }, + + /** + * Redraws the file input and resets the file path in the file input. + * The redrawing logic is necessary because non-IE browsers tend to clear + * the `' ); + + var frameDocTpl = CKEDITOR.addTemplate( 'panel-frame-inner', '' + + '' + + '{css}' + + '' + + '<\/html>' ); + + /** @class CKEDITOR.ui.panel */ + CKEDITOR.ui.panel.prototype = { + /** + * Renders the combo. + * + * @param {CKEDITOR.editor} editor The editor instance which this button is + * to be used by. + * @param {Array} [output] The output array to which append the HTML relative + * to this button. + */ + render: function( editor, output ) { + this.getHolderElement = function() { + var holder = this._.holder; + + if ( !holder ) { + if ( this.isFramed ) { + var iframe = this.document.getById( this.id + '_frame' ), + parentDiv = iframe.getParent(), + doc = iframe.getFrameDocument(); + + // Make it scrollable on iOS. (#8308) + CKEDITOR.env.iOS && parentDiv.setStyles( { + 'overflow': 'scroll', + '-webkit-overflow-scrolling': 'touch' + } ); + + var onLoad = CKEDITOR.tools.addFunction( CKEDITOR.tools.bind( function() { + this.isLoaded = true; + if ( this.onLoad ) + this.onLoad(); + }, this ) ); + + doc.write( frameDocTpl.output( CKEDITOR.tools.extend( { + css: CKEDITOR.tools.buildStyleHtml( this.css ), + onload: 'window.parent.CKEDITOR.tools.callFunction(' + onLoad + ');' + }, data ) ) ); + + var win = doc.getWindow(); + + // Register the CKEDITOR global. + win.$.CKEDITOR = CKEDITOR; + + // Arrow keys for scrolling is only preventable with 'keypress' event in Opera (#4534). + doc.on( 'keydown', function( evt ) { + var keystroke = evt.data.getKeystroke(), + dir = this.document.getById( this.id ).getAttribute( 'dir' ); + + // Delegate key processing to block. + if ( this._.onKeyDown && this._.onKeyDown( keystroke ) === false ) { + evt.data.preventDefault(); + return; + } + + // ESC/ARROW-LEFT(ltr) OR ARROW-RIGHT(rtl) + if ( keystroke == 27 || keystroke == ( dir == 'rtl' ? 39 : 37 ) ) { + if ( this.onEscape && this.onEscape( keystroke ) === false ) + evt.data.preventDefault(); + } + }, this ); + + holder = doc.getBody(); + holder.unselectable(); + CKEDITOR.env.air && CKEDITOR.tools.callFunction( onLoad ); + } else { + holder = this.document.getById( this.id ); + } + + this._.holder = holder; + } + + return holder; + }; + + var data = { + editorId: editor.id, + id: this.id, + langCode: editor.langCode, + dir: editor.lang.dir, + cls: this.className, + frame: '', + env: CKEDITOR.env.cssClass, + 'z-index': editor.config.baseFloatZIndex + 1 + }; + + if ( this.isFramed ) { + // With IE, the custom domain has to be taken care at first, + // for other browers, the 'src' attribute should be left empty to + // trigger iframe's 'load' event. + var src = + CKEDITOR.env.air ? 'javascript:void(0)' : // jshint ignore:line + CKEDITOR.env.ie ? 'javascript:void(function(){' + encodeURIComponent( // jshint ignore:line + 'document.open();' + + // In IE, the document domain must be set any time we call document.open(). + '(' + CKEDITOR.tools.fixDomain + ')();' + + 'document.close();' + ) + '}())' : + ''; + + data.frame = frameTpl.output( { + id: this.id + '_frame', + src: src + } ); + } + + var html = panelTpl.output( data ); + + if ( output ) + output.push( html ); + + return html; + }, + + /** + * @todo + */ + addBlock: function( name, block ) { + block = this._.blocks[ name ] = block instanceof CKEDITOR.ui.panel.block ? block : new CKEDITOR.ui.panel.block( this.getHolderElement(), block ); + + if ( !this._.currentBlock ) + this.showBlock( name ); + + return block; + }, + + /** + * @todo + */ + getBlock: function( name ) { + return this._.blocks[ name ]; + }, + + /** + * @todo + */ + showBlock: function( name ) { + var blocks = this._.blocks, + block = blocks[ name ], + current = this._.currentBlock; + + // ARIA role works better in IE on the body element, while on the iframe + // for FF. (#8864) + var holder = !this.forceIFrame || CKEDITOR.env.ie ? this._.holder : this.document.getById( this.id + '_frame' ); + + if ( current ) + current.hide(); + + this._.currentBlock = block; + + CKEDITOR.fire( 'ariaWidget', holder ); + + // Reset the focus index, so it will always go into the first one. + block._.focusIndex = -1; + + this._.onKeyDown = block.onKeyDown && CKEDITOR.tools.bind( block.onKeyDown, block ); + + block.show(); + + return block; + }, + + /** + * @todo + */ + destroy: function() { + this.element && this.element.remove(); + } + }; + + /** + * @class + * + * @todo class and all methods + */ + CKEDITOR.ui.panel.block = CKEDITOR.tools.createClass( { + /** + * Creates a block class instances. + * + * @constructor + * @todo + */ + $: function( blockHolder, blockDefinition ) { + this.element = blockHolder.append( blockHolder.getDocument().createElement( 'div', { + attributes: { + 'tabindex': -1, + 'class': 'cke_panel_block' + }, + styles: { + display: 'none' + } + } ) ); + + // Copy all definition properties to this object. + if ( blockDefinition ) + CKEDITOR.tools.extend( this, blockDefinition ); + + // Set the a11y attributes of this element ... + this.element.setAttributes( { + 'role': this.attributes.role || 'presentation', + 'aria-label': this.attributes[ 'aria-label' ], + 'title': this.attributes.title || this.attributes[ 'aria-label' ] + } ); + + this.keys = {}; + + this._.focusIndex = -1; + + // Disable context menu for panels. + this.element.disableContextMenu(); + }, + + _: { + + /** + * Mark the item specified by the index as current activated. + */ + markItem: function( index ) { + if ( index == -1 ) + return; + var links = this.element.getElementsByTag( 'a' ); + var item = links.getItem( this._.focusIndex = index ); + + // Safari need focus on the iframe window first(#3389), but we need + // lock the blur to avoid hiding the panel. + if ( CKEDITOR.env.webkit ) + item.getDocument().getWindow().focus(); + item.focus(); + + this.onMark && this.onMark( item ); + } + }, + + proto: { + show: function() { + this.element.setStyle( 'display', '' ); + }, + + hide: function() { + if ( !this.onHide || this.onHide.call( this ) !== true ) + this.element.setStyle( 'display', 'none' ); + }, + + onKeyDown: function( keystroke, noCycle ) { + var keyAction = this.keys[ keystroke ]; + switch ( keyAction ) { + // Move forward. + case 'next': + var index = this._.focusIndex, + links = this.element.getElementsByTag( 'a' ), + link; + + while ( ( link = links.getItem( ++index ) ) ) { + // Move the focus only if the element is marked with + // the _cke_focus and it it's visible (check if it has + // width). + if ( link.getAttribute( '_cke_focus' ) && link.$.offsetWidth ) { + this._.focusIndex = index; + link.focus(); + break; + } + } + + // If no link was found, cycle and restart from the top. (#11125) + if ( !link && !noCycle ) { + this._.focusIndex = -1; + return this.onKeyDown( keystroke, 1 ); + } + + return false; + + // Move backward. + case 'prev': + index = this._.focusIndex; + links = this.element.getElementsByTag( 'a' ); + + while ( index > 0 && ( link = links.getItem( --index ) ) ) { + // Move the focus only if the element is marked with + // the _cke_focus and it it's visible (check if it has + // width). + if ( link.getAttribute( '_cke_focus' ) && link.$.offsetWidth ) { + this._.focusIndex = index; + link.focus(); + break; + } + + // Make sure link is null when the loop ends and nothing was + // found (#11125). + link = null; + } + + // If no link was found, cycle and restart from the bottom. (#11125) + if ( !link && !noCycle ) { + this._.focusIndex = links.count(); + return this.onKeyDown( keystroke, 1 ); + } + + return false; + + case 'click': + case 'mouseup': + index = this._.focusIndex; + link = index >= 0 && this.element.getElementsByTag( 'a' ).getItem( index ); + + if ( link ) + link.$[ keyAction ] ? link.$[ keyAction ]() : link.$[ 'on' + keyAction ](); + + return false; + } + + return true; + } + } + } ); + +} )(); + +/** + * Fired when a panel is added to the document. + * + * @event ariaWidget + * @member CKEDITOR + * @param {Object} data The element wrapping the panel. + */ diff --git a/sources/plugins/panelbutton/plugin.js b/sources/plugins/panelbutton/plugin.js new file mode 100644 index 00000000..7eab829a --- /dev/null +++ b/sources/plugins/panelbutton/plugin.js @@ -0,0 +1,138 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.add( 'panelbutton', { + requires: 'button', + onLoad: function() { + function clickFn( editor ) { + var _ = this._; + + if ( _.state == CKEDITOR.TRISTATE_DISABLED ) + return; + + this.createPanel( editor ); + + if ( _.on ) { + _.panel.hide(); + return; + } + + _.panel.showBlock( this._.id, this.document.getById( this._.id ), 4 ); + } + + /** + * @class + * @extends CKEDITOR.ui.button + * @todo class and methods + */ + CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass( { + base: CKEDITOR.ui.button, + + /** + * Creates a panelButton class instance. + * + * @constructor + */ + $: function( definition ) { + // We don't want the panel definition in this object. + var panelDefinition = definition.panel || {}; + delete definition.panel; + + this.base( definition ); + + this.document = ( panelDefinition.parent && panelDefinition.parent.getDocument() ) || CKEDITOR.document; + + panelDefinition.block = { + attributes: panelDefinition.attributes + }; + panelDefinition.toolbarRelated = true; + + this.hasArrow = true; + + this.click = clickFn; + + this._ = { + panelDefinition: panelDefinition + }; + }, + + statics: { + handler: { + create: function( definition ) { + return new CKEDITOR.ui.panelButton( definition ); + } + } + }, + + proto: { + createPanel: function( editor ) { + var _ = this._; + + if ( _.panel ) + return; + + var panelDefinition = this._.panelDefinition, + panelBlockDefinition = this._.panelDefinition.block, + panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(), + panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ), + block = panel.addBlock( _.id, panelBlockDefinition ), + me = this; + + panel.onShow = function() { + if ( me.className ) + this.element.addClass( me.className + '_panel' ); + + me.setState( CKEDITOR.TRISTATE_ON ); + + _.on = 1; + + me.editorFocus && editor.focus(); + + if ( me.onOpen ) + me.onOpen(); + }; + + panel.onHide = function( preventOnClose ) { + if ( me.className ) + this.element.getFirst().removeClass( me.className + '_panel' ); + + me.setState( me.modes && me.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); + + _.on = 0; + + if ( !preventOnClose && me.onClose ) + me.onClose(); + }; + + panel.onEscape = function() { + panel.hide( 1 ); + me.document.getById( _.id ).focus(); + }; + + if ( this.onBlock ) + this.onBlock( panel, block ); + + block.onHide = function() { + _.on = 0; + me.setState( CKEDITOR.TRISTATE_OFF ); + }; + } + } + } ); + + }, + beforeInit: function( editor ) { + editor.ui.addHandler( CKEDITOR.UI_PANELBUTTON, CKEDITOR.ui.panelButton.handler ); + } +} ); + +/** + * Button UI element. + * + * @readonly + * @property {String} [='panelbutton'] + * @member CKEDITOR + */ +CKEDITOR.UI_PANELBUTTON = 'panelbutton'; diff --git a/sources/plugins/pastefromword/filter/default.js b/sources/plugins/pastefromword/filter/default.js new file mode 100644 index 00000000..0c97ef52 --- /dev/null +++ b/sources/plugins/pastefromword/filter/default.js @@ -0,0 +1,1251 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +( function() { + var fragmentPrototype = CKEDITOR.htmlParser.fragment.prototype, + elementPrototype = CKEDITOR.htmlParser.element.prototype; + + fragmentPrototype.onlyChild = elementPrototype.onlyChild = function() { + var children = this.children, + count = children.length, + firstChild = ( count == 1 ) && children[ 0 ]; + return firstChild || null; + }; + + elementPrototype.removeAnyChildWithName = function( tagName ) { + var children = this.children, + childs = [], + child; + + for ( var i = 0; i < children.length; i++ ) { + child = children[ i ]; + if ( !child.name ) + continue; + + if ( child.name == tagName ) { + childs.push( child ); + children.splice( i--, 1 ); + } + childs = childs.concat( child.removeAnyChildWithName( tagName ) ); + } + return childs; + }; + + elementPrototype.getAncestor = function( tagNameRegex ) { + var parent = this.parent; + while ( parent && !( parent.name && parent.name.match( tagNameRegex ) ) ) + parent = parent.parent; + return parent; + }; + + fragmentPrototype.firstChild = elementPrototype.firstChild = function( evaluator ) { + var child; + + for ( var i = 0; i < this.children.length; i++ ) { + child = this.children[ i ]; + if ( evaluator( child ) ) + return child; + else if ( child.name ) { + child = child.firstChild( evaluator ); + if ( child ) + return child; + } + } + + return null; + }; + + // Adding a (set) of styles to the element's 'style' attributes. + elementPrototype.addStyle = function( name, value, isPrepend ) { + var styleText, + addingStyleText = ''; + // name/value pair. + if ( typeof value == 'string' ) + addingStyleText += name + ':' + value + ';'; + else { + // style literal. + if ( typeof name == 'object' ) { + for ( var style in name ) { + if ( name.hasOwnProperty( style ) ) + addingStyleText += style + ':' + name[ style ] + ';'; + } + } + // raw style text form. + else { + addingStyleText += name; + } + + isPrepend = value; + } + + if ( !this.attributes ) + this.attributes = {}; + + styleText = this.attributes.style || ''; + + styleText = ( isPrepend ? [ addingStyleText, styleText ] : [ styleText, addingStyleText ] ).join( ';' ); + + this.attributes.style = styleText.replace( /^;+|;(?=;)/g, '' ); + }; + + // Retrieve a style property value of the element. + elementPrototype.getStyle = function( name ) { + var styles = this.attributes.style; + if ( styles ) { + styles = CKEDITOR.tools.parseCssText( styles, 1 ); + return styles[ name ]; + } + }; + + /** + * Return the DTD-valid parent tag names of the specified one. + * + * @member CKEDITOR.dtd + * @param {String} tagName + * @returns {Object} + */ + CKEDITOR.dtd.parentOf = function( tagName ) { + var result = {}; + for ( var tag in this ) { + if ( tag.indexOf( '$' ) == -1 && this[ tag ][ tagName ] ) + result[ tag ] = 1; + } + return result; + }; + + // 1. move consistent list item styles up to list root. + // 2. clear out unnecessary list item numbering. + function postProcessList( list ) { + var children = list.children, + child, attrs, + count = list.children.length, + match, mergeStyle, + styleTypeRegexp = /list-style-type:(.*?)(?:;|$)/, + stylesFilter = CKEDITOR.plugins.pastefromword.filters.stylesFilter; + + attrs = list.attributes; + if ( styleTypeRegexp.exec( attrs.style ) ) + return; + + for ( var i = 0; i < count; i++ ) { + child = children[ i ]; + + if ( child.attributes.value && Number( child.attributes.value ) == i + 1 ) + delete child.attributes.value; + + match = styleTypeRegexp.exec( child.attributes.style ); + + if ( match ) { + if ( match[ 1 ] == mergeStyle || !mergeStyle ) + mergeStyle = match[ 1 ]; + else { + mergeStyle = null; + break; + } + } + } + + if ( mergeStyle ) { + for ( i = 0; i < count; i++ ) { + attrs = children[ i ].attributes; + attrs.style && ( attrs.style = stylesFilter( [ [ 'list-style-type' ] ] )( attrs.style ) || '' ); + } + + list.addStyle( 'list-style-type', mergeStyle ); + } + } + + var emptyMarginRegex = /^(?:\b0[^\s]*\s*){1,4}$/; // e.g. 0px 0pt 0px + var romanLiternalPattern = '^m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$', + lowerRomanLiteralRegex = new RegExp( romanLiternalPattern ), + upperRomanLiteralRegex = new RegExp( romanLiternalPattern.toUpperCase() ); + + var orderedPatterns = { 'decimal': /\d+/, 'lower-roman': lowerRomanLiteralRegex, 'upper-roman': upperRomanLiteralRegex, 'lower-alpha': /^[a-z]+$/, 'upper-alpha': /^[A-Z]+$/ }, + unorderedPatterns = { 'disc': /[l\u00B7\u2002]/, 'circle': /[\u006F\u00D8]/, 'square': /[\u006E\u25C6]/ }, + listMarkerPatterns = { 'ol': orderedPatterns, 'ul': unorderedPatterns }, + romans = [ [ 1000, 'M' ], [ 900, 'CM' ], [ 500, 'D' ], [ 400, 'CD' ], [ 100, 'C' ], [ 90, 'XC' ], [ 50, 'L' ], [ 40, 'XL' ], [ 10, 'X' ], [ 9, 'IX' ], [ 5, 'V' ], [ 4, 'IV' ], [ 1, 'I' ] ], + alpahbets = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + + // Convert roman numbering back to decimal. + function fromRoman( str ) { + str = str.toUpperCase(); + var l = romans.length, + retVal = 0; + for ( var i = 0; i < l; ++i ) { + for ( var j = romans[ i ], k = j[ 1 ].length; str.substr( 0, k ) == j[ 1 ]; str = str.substr( k ) ) + retVal += j[ 0 ]; + } + return retVal; + } + + // Convert alphabet numbering back to decimal. + function fromAlphabet( str ) { + str = str.toUpperCase(); + var l = alpahbets.length, + retVal = 1; + for ( var x = 1; str.length > 0; x *= l ) { + retVal += alpahbets.indexOf( str.charAt( str.length - 1 ) ) * x; + str = str.substr( 0, str.length - 1 ); + } + return retVal; + } + + var listBaseIndent = 0, + previousListItemMargin = null, + previousListId; + + var plugin = ( CKEDITOR.plugins.pastefromword = { + utils: { + // Create a which indicate an list item type. + createListBulletMarker: function( bullet, bulletText ) { + var marker = new CKEDITOR.htmlParser.element( 'cke:listbullet' ); + marker.attributes = { 'cke:listsymbol': bullet[ 0 ] }; + marker.add( new CKEDITOR.htmlParser.text( bulletText ) ); + return marker; + }, + + isListBulletIndicator: function( element ) { + var styleText = element.attributes && element.attributes.style; + if ( /mso-list\s*:\s*Ignore/i.test( styleText ) ) + return true; + }, + + isContainingOnlySpaces: function( element ) { + var text; + return ( ( text = element.onlyChild() ) && ( /^(:?\s| )+$/ ).test( text.value ) ); + }, + + resolveList: function( element ) { + // indicate a list item. + var attrs = element.attributes, + listMarker; + + if ( ( listMarker = element.removeAnyChildWithName( 'cke:listbullet' ) ) && listMarker.length && ( listMarker = listMarker[ 0 ] ) ) { + element.name = 'cke:li'; + + if ( attrs.style ) { + attrs.style = plugin.filters.stylesFilter( [ + // Text-indent is not representing list item level any more. + [ 'text-indent' ], + [ 'line-height' ], + // First attempt is to resolve indent level from on a constant margin increment. + [ ( /^margin(:?-left)?$/ ), null, function( margin ) { + // Deal with component/short-hand form. + var values = margin.split( ' ' ); + margin = CKEDITOR.tools.convertToPx( values[ 3 ] || values[ 1 ] || values[ 0 ] ); + + // Figure out the indent unit by checking the first time of incrementation. + if ( !listBaseIndent && previousListItemMargin !== null && margin > previousListItemMargin ) + listBaseIndent = margin - previousListItemMargin; + + previousListItemMargin = margin; + + attrs[ 'cke:indent' ] = listBaseIndent && ( Math.ceil( margin / listBaseIndent ) + 1 ) || 1; + } ], + // The best situation: "mso-list:l0 level1 lfo2" tells the belonged list root, list item indentation, etc. + [ ( /^mso-list$/ ), null, function( val ) { + val = val.split( ' ' ); + // Ignore values like "mso-list:Ignore". (FF #11976) + if ( val.length < 2 ) { + return; + } + + var listId = Number( val[ 0 ].match( /\d+/ ) ), + indent = Number( val[ 1 ].match( /\d+/ ) ); + + if ( indent == 1 ) { + listId !== previousListId && ( attrs[ 'cke:reset' ] = 1 ); + previousListId = listId; + } + attrs[ 'cke:indent' ] = indent; + } ] + ] )( attrs.style, element ) || ''; + } + + // First level list item might be presented without a margin. + + + // In case all above doesn't apply. + if ( !attrs[ 'cke:indent' ] ) { + previousListItemMargin = 0; + attrs[ 'cke:indent' ] = 1; + } + + // Inherit attributes from bullet. + CKEDITOR.tools.extend( attrs, listMarker.attributes ); + return true; + } + // Current list disconnected. + else { + previousListId = previousListItemMargin = listBaseIndent = null; + } + + return false; + }, + + // Providing a shorthand style then retrieve one or more style component values. + getStyleComponents: ( function() { + var calculator = CKEDITOR.dom.element.createFromHtml( '
', CKEDITOR.document ); + CKEDITOR.document.getBody().append( calculator ); + + return function( name, styleValue, fetchList ) { + calculator.setStyle( name, styleValue ); + var styles = {}, + count = fetchList.length; + for ( var i = 0; i < count; i++ ) + styles[ fetchList[ i ] ] = calculator.getStyle( fetchList[ i ] ); + + return styles; + }; + } )(), + + listDtdParents: CKEDITOR.dtd.parentOf( 'ol' ) + }, + + filters: { + // Transform a normal list into flat list items only presentation. + // E.g.
  • level1
    1. level2
  • => + // level1 + // level2 + flattenList: function( element, level ) { + level = typeof level == 'number' ? level : 1; + + var attrs = element.attributes, + listStyleType; + + // All list items are of the same type. + switch ( attrs.type ) { + case 'a': + listStyleType = 'lower-alpha'; + break; + case '1': + listStyleType = 'decimal'; + break; + // TODO: Support more list style type from MS-Word. + } + + var children = element.children, + child; + + for ( var i = 0; i < children.length; i++ ) { + child = children[ i ]; + + if ( child.name in CKEDITOR.dtd.$listItem ) { + var attributes = child.attributes, + listItemChildren = child.children, + count = listItemChildren.length, + first = listItemChildren[ 0 ], + last = listItemChildren[ count - 1 ]; + + // Converts
  • {...}

  • ->
  • {...}
  • . + // The above format is what we got when pasting from Word 2010 to IE11 and possibly some others. + // Existence of extra

    tag that can be later recognized as list item (see #getRules.return.elements.p) + // creates incorrect and problematic structures similar to {...}. (#11376) + if ( first.attributes && first.attributes.style && first.attributes.style.indexOf( 'mso-list' ) > -1 ) { + child.attributes.style = first.attributes.style; + first.replaceWithChildren(); + } + + // Move out nested list. + if ( last.name in CKEDITOR.dtd.$list ) { + element.add( last, i + 1 ); + + // Remove the parent list item if it's just a holder. + if ( !--listItemChildren.length ) + children.splice( i--, 1 ); + } + + child.name = 'cke:li'; + + // Inherit numbering from list root on the first list item. + attrs.start && !i && ( attributes.value = attrs.start ); + + plugin.filters.stylesFilter( [ + [ 'tab-stops', null, function( val ) { + // val = [left|center|right|decimal] Source: W3C, WD-tabs-970117. + // In some cases the first word is missing - hence the square brackets. + var margin = val.match( /0$|\d+\.?\d*\w+/ ); + margin && ( previousListItemMargin = CKEDITOR.tools.convertToPx( margin[ 0 ] ) ); + } ], + ( level == 1 ? [ 'mso-list', null, function( val ) { + val = val.split( ' ' ); + var listId = Number( val[ 0 ].match( /\d+/ ) ); + listId !== previousListId && ( attributes[ 'cke:reset' ] = 1 ); + previousListId = listId; + } ] : null ) + ] )( attributes.style ); + + attributes[ 'cke:indent' ] = level; + attributes[ 'cke:listtype' ] = element.name; + attributes[ 'cke:list-style-type' ] = listStyleType; + } + // Flatten sub list. + else if ( child.name in CKEDITOR.dtd.$list ) { + // Absorb sub list children. + arguments.callee.apply( this, [ child, level + 1 ] ); + children = children.slice( 0, i ).concat( child.children ).concat( children.slice( i + 1 ) ); + element.children = []; + for ( var j = 0, num = children.length; j < num; j++ ) + element.add( children[ j ] ); + + children = element.children; + } + } + + delete element.name; + + // We're loosing tag name here, signalize this element as a list. + attrs[ 'cke:list' ] = 1; + }, + + // Try to collect all list items among the children and establish one + // or more HTML list structures for them. + // @param element + assembleList: function( element ) { + var children = element.children, + child, listItem, // The current processing cke:li element. + listItemAttrs, listItemIndent, // Indent level of current list item. + lastIndent, lastListItem, // The previous one just been added to the list. + list, // Current staging list and it's parent list if any. + openedLists = [], + previousListStyleType, previousListType; + + // Properties of the list item are to be resolved from the list bullet. + var bullet, listType, listStyleType, itemNumeric; + + for ( var i = 0; i < children.length; i++ ) { + child = children[ i ]; + + if ( child.name == 'cke:li' ) { + child.name = 'li'; + listItem = child; + listItemAttrs = listItem.attributes; + bullet = listItemAttrs[ 'cke:listsymbol' ]; + bullet = bullet && bullet.match( /^(?:[(]?)([^\s]+?)([.)]?)$/ ); + listType = listStyleType = itemNumeric = null; + + if ( listItemAttrs[ 'cke:ignored' ] ) { + children.splice( i--, 1 ); + continue; + } + + + // This's from a new list root. + listItemAttrs[ 'cke:reset' ] && ( list = lastIndent = lastListItem = null ); + + // List item indent level might come from a real list indentation or + // been resolved from a pseudo list item's margin value, even get + // no indentation at all. + listItemIndent = Number( listItemAttrs[ 'cke:indent' ] ); + + // We're moving out of the current list, cleaning up. + if ( listItemIndent != lastIndent ) + previousListType = previousListStyleType = null; + + // List type and item style are already resolved. + if ( !bullet ) { + listType = listItemAttrs[ 'cke:listtype' ] || 'ol'; + listStyleType = listItemAttrs[ 'cke:list-style-type' ]; + } else { + // Probably share the same list style type with previous list item, + // give it priority to avoid ambiguous between C(Alpha) and C.(Roman). + if ( previousListType && listMarkerPatterns[ previousListType ][ previousListStyleType ].test( bullet[ 1 ] ) ) { + listType = previousListType; + listStyleType = previousListStyleType; + } else { + for ( var type in listMarkerPatterns ) { + for ( var style in listMarkerPatterns[ type ] ) { + if ( listMarkerPatterns[ type ][ style ].test( bullet[ 1 ] ) ) { + // Small numbering has higher priority, when dealing with ambiguous + // between C(Alpha) and C.(Roman). + if ( type == 'ol' && ( /alpha|roman/ ).test( style ) ) { + var num = /roman/.test( style ) ? fromRoman( bullet[ 1 ] ) : fromAlphabet( bullet[ 1 ] ); + if ( !itemNumeric || num < itemNumeric ) { + itemNumeric = num; + listType = type; + listStyleType = style; + } + } else { + listType = type; + listStyleType = style; + break; + } + } + } + } + } + + // Simply use decimal/disc for the rest forms of unrepresentable + // numerals, e.g. Chinese..., but as long as there a second part + // included, it has a bigger chance of being a order list ;) + !listType && ( listType = bullet[ 2 ] ? 'ol' : 'ul' ); + } + + previousListType = listType; + previousListStyleType = listStyleType || ( listType == 'ol' ? 'decimal' : 'disc' ); + if ( listStyleType && listStyleType != ( listType == 'ol' ? 'decimal' : 'disc' ) ) + listItem.addStyle( 'list-style-type', listStyleType ); + + // Figure out start numbering. + if ( listType == 'ol' && bullet ) { + switch ( listStyleType ) { + case 'decimal': + itemNumeric = Number( bullet[ 1 ] ); + break; + case 'lower-roman': + case 'upper-roman': + itemNumeric = fromRoman( bullet[ 1 ] ); + break; + case 'lower-alpha': + case 'upper-alpha': + itemNumeric = fromAlphabet( bullet[ 1 ] ); + break; + } + + // Always create the numbering, swipe out unnecessary ones later. + listItem.attributes.value = itemNumeric; + } + + // Start the list construction. + if ( !list ) { + openedLists.push( list = new CKEDITOR.htmlParser.element( listType ) ); + list.add( listItem ); + children[ i ] = list; + } else { + if ( listItemIndent > lastIndent ) { + openedLists.push( list = new CKEDITOR.htmlParser.element( listType ) ); + list.add( listItem ); + lastListItem.add( list ); + } else if ( listItemIndent < lastIndent ) { + // There might be a negative gap between two list levels. (#4944) + var diff = lastIndent - listItemIndent, + parent; + while ( diff-- && ( parent = list.parent ) ) + list = parent.parent; + + list.add( listItem ); + } else { + list.add( listItem ); + } + + children.splice( i--, 1 ); + } + + lastListItem = listItem; + lastIndent = listItemIndent; + } else if ( list ) { + list = lastIndent = lastListItem = null; + } + } + + for ( i = 0; i < openedLists.length; i++ ) + postProcessList( openedLists[ i ] ); + + list = lastIndent = lastListItem = previousListId = previousListItemMargin = listBaseIndent = null; + }, + + // A simple filter which always rejecting. + falsyFilter: function() { + return false; + }, + + // A filter dedicated on the 'style' attribute filtering, e.g. dropping/replacing style properties. + // @param styles {Array} in form of [ styleNameRegexp, styleValueRegexp, + // newStyleValue/newStyleGenerator, newStyleName ] where only the first + // parameter is mandatory. + // @param whitelist {Boolean} Whether the {@param styles} will be considered as a white-list. + stylesFilter: function( styles, whitelist ) { + return function( styleText, element ) { + var rules = []; + // html-encoded quote might be introduced by 'font-family' + // from MS-Word which confused the following regexp. e.g. + //'font-family: "Lucida, Console"' + ( styleText || '' ).replace( /"/g, '"' ).replace( /\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function( match, name, value ) { + name = name.toLowerCase(); + name == 'font-family' && ( value = value.replace( /["']/g, '' ) ); + + var namePattern, valuePattern, newValue, newName; + for ( var i = 0; i < styles.length; i++ ) { + if ( styles[ i ] ) { + namePattern = styles[ i ][ 0 ]; + valuePattern = styles[ i ][ 1 ]; + newValue = styles[ i ][ 2 ]; + newName = styles[ i ][ 3 ]; + + if ( name.match( namePattern ) && ( !valuePattern || value.match( valuePattern ) ) ) { + name = newName || name; + whitelist && ( newValue = newValue || value ); + + if ( typeof newValue == 'function' ) + newValue = newValue( value, element, name ); + + // Return an couple indicate both name and value + // changed. + if ( newValue && newValue.push ) + name = newValue[ 0 ], newValue = newValue[ 1 ]; + + if ( typeof newValue == 'string' ) + rules.push( [ name, newValue ] ); + return; + } + } + } + + !whitelist && rules.push( [ name, value ] ); + + } ); + + for ( var i = 0; i < rules.length; i++ ) + rules[ i ] = rules[ i ].join( ':' ); + return rules.length ? ( rules.join( ';' ) + ';' ) : false; + }; + }, + + // Migrate the element by decorate styles on it. + // @param styleDefinition + // @param variables + elementMigrateFilter: function( styleDefinition, variables ) { + return styleDefinition ? function( element ) { + var styleDef = variables ? new CKEDITOR.style( styleDefinition, variables )._.definition : styleDefinition; + element.name = styleDef.element; + CKEDITOR.tools.extend( element.attributes, CKEDITOR.tools.clone( styleDef.attributes ) ); + element.addStyle( CKEDITOR.style.getStyleText( styleDef ) ); + // Mark style classes as allowed so they will not be filtered out (#12256). + if ( styleDef.attributes && styleDef.attributes[ 'class' ] ) { + element.classWhiteList = ' ' + styleDef.attributes[ 'class' ] + ' '; + } + } : function() {}; + }, + + // Migrate styles by creating a new nested stylish element. + // @param styleDefinition + styleMigrateFilter: function( styleDefinition, variableName ) { + + var elementMigrateFilter = this.elementMigrateFilter; + return styleDefinition ? function( value, element ) { + // Build an stylish element first. + var styleElement = new CKEDITOR.htmlParser.element( null ), + variables = {}; + + variables[ variableName ] = value; + elementMigrateFilter( styleDefinition, variables )( styleElement ); + // Place the new element inside the existing span. + styleElement.children = element.children; + element.children = [ styleElement ]; + + // #10285 - later on styleElement will replace element if element won't have any attributes. + // However, in some cases styleElement is identical to element and therefore should not be filtered + // to avoid inf loop. Unfortunately calling element.filterChildren() does not prevent from that (#10327). + // However, we can assume that we don't need to filter styleElement at all, so it is safe to replace + // its filter method. + styleElement.filter = function() {}; + styleElement.parent = element; + } : function() {}; + }, + + // A filter which remove cke-namespaced-attribute on + // all none-cke-namespaced elements. + // @param value + // @param element + bogusAttrFilter: function( value, element ) { + if ( element.name.indexOf( 'cke:' ) == -1 ) + return false; + }, + + // A filter which will be used to apply inline css style according the stylesheet + // definition rules, is generated lazily when filtering. + applyStyleFilter: null + + }, + + getRules: function( editor, filter ) { + var dtd = CKEDITOR.dtd, + blockLike = CKEDITOR.tools.extend( {}, dtd.$block, dtd.$listItem, dtd.$tableContent ), + config = editor.config, + filters = this.filters, + falsyFilter = filters.falsyFilter, + stylesFilter = filters.stylesFilter, + elementMigrateFilter = filters.elementMigrateFilter, + styleMigrateFilter = CKEDITOR.tools.bind( this.filters.styleMigrateFilter, this.filters ), + createListBulletMarker = this.utils.createListBulletMarker, + flattenList = filters.flattenList, + assembleList = filters.assembleList, + isListBulletIndicator = this.utils.isListBulletIndicator, + containsNothingButSpaces = this.utils.isContainingOnlySpaces, + resolveListItem = this.utils.resolveList, + convertToPx = function( value ) { + value = CKEDITOR.tools.convertToPx( value ); + return isNaN( value ) ? value : value + 'px'; + }, + getStyleComponents = this.utils.getStyleComponents, + listDtdParents = this.utils.listDtdParents, + removeFontStyles = config.pasteFromWordRemoveFontStyles !== false, + removeStyles = config.pasteFromWordRemoveStyles !== false; + + return { + + elementNames: [ + // Remove script, meta and link elements. + [ ( /meta|link|script/ ), '' ] + ], + + root: function( element ) { + element.filterChildren( filter ); + assembleList( element ); + }, + + elements: { + '^': function( element ) { + // Transform CSS style declaration to inline style. + var applyStyleFilter; + if ( CKEDITOR.env.gecko && ( applyStyleFilter = filters.applyStyleFilter ) ) + applyStyleFilter( element ); + }, + + $: function( element ) { + var tagName = element.name || '', + attrs = element.attributes; + + // Convert length unit of width/height on blocks to + // a more editor-friendly way (px). + if ( tagName in blockLike && attrs.style ) + attrs.style = stylesFilter( [ [ ( /^(:?width|height)$/ ), null, convertToPx ] ] )( attrs.style ) || ''; + + // Processing headings. + if ( tagName.match( /h\d/ ) ) { + element.filterChildren( filter ); + // Is the heading actually a list item? + if ( resolveListItem( element ) ) + return; + + // Adapt heading styles to editor's convention. + elementMigrateFilter( config[ 'format_' + tagName ] )( element ); + } + // Remove inline elements which contain only empty spaces. + else if ( tagName in dtd.$inline ) { + element.filterChildren( filter ); + if ( containsNothingButSpaces( element ) ) + delete element.name; + } + // Remove element with ms-office namespace, + // with it's content preserved, e.g. 'o:p'. + else if ( tagName.indexOf( ':' ) != -1 && tagName.indexOf( 'cke' ) == -1 ) { + element.filterChildren( filter ); + + // Restore image real link from vml. + if ( tagName == 'v:imagedata' ) { + var href = element.attributes[ 'o:href' ]; + if ( href ) + element.attributes.src = href; + element.name = 'img'; + return; + } + delete element.name; + } + + // Assembling list items into a whole list. + if ( tagName in listDtdParents ) { + element.filterChildren( filter ); + assembleList( element ); + } + }, + + // We'll drop any style sheet, but Firefox conclude + // certain styles in a single style element, which are + // required to be changed into inline ones. + 'style': function( element ) { + if ( CKEDITOR.env.gecko ) { + // Grab only the style definition section. + var styleDefSection = element.onlyChild().value.match( /\/\* Style Definitions \*\/([\s\S]*?)\/\*/ ), + styleDefText = styleDefSection && styleDefSection[ 1 ], + rules = {}; // Storing the parsed result. + + if ( styleDefText ) { + styleDefText + // Remove line-breaks. + .replace( /[\n\r]/g, '' ) + // Extract selectors and style properties. + .replace( /(.+?)\{(.+?)\}/g, function( rule, selectors, styleBlock ) { + selectors = selectors.split( ',' ); + var length = selectors.length; + for ( var i = 0; i < length; i++ ) { + // Assume MS-Word mostly generate only simple + // selector( [Type selector][Class selector]). + CKEDITOR.tools.trim( selectors[ i ] ).replace( /^(\w+)(\.[\w-]+)?$/g, function( match, tagName, className ) { + tagName = tagName || '*'; + className = className.substring( 1, className.length ); + + // Reject MS-Word Normal styles. + if ( className.match( /MsoNormal/ ) ) + return; + + if ( !rules[ tagName ] ) + rules[ tagName ] = {}; + if ( className ) + rules[ tagName ][ className ] = styleBlock; + else + rules[ tagName ] = styleBlock; + } ); + } + } ); + + filters.applyStyleFilter = function( element ) { + var name = rules[ '*' ] ? '*' : element.name, + className = element.attributes && element.attributes[ 'class' ], + style; + if ( name in rules ) { + style = rules[ name ]; + if ( typeof style == 'object' ) + style = style[ className ]; + // Maintain style rules priorities. + style && element.addStyle( style, true ); + } + }; + } + } + return false; + }, + + 'p': function( element ) { + // A a fall-back approach to resolve list item in browsers + // that doesn't include "mso-list:Ignore" on list bullets, + // note it's not perfect as not all list style (e.g. "heading list") is shipped + // with this pattern. (#6662) + if ( ( /MsoListParagraph/i ).exec( element.attributes[ 'class' ] ) || + ( element.getStyle( 'mso-list' ) && !element.getStyle( 'mso-list' ).match( /^(none|skip)$/i ) ) ) { + var bulletText = element.firstChild( function( node ) { + return node.type == CKEDITOR.NODE_TEXT && !containsNothingButSpaces( node.parent ); + } ); + + var bullet = bulletText && bulletText.parent; + if ( bullet ) + bullet.addStyle( 'mso-list', 'Ignore' ); + + } + + element.filterChildren( filter ); + + // Is the paragraph actually a list item? + if ( resolveListItem( element ) ) + return; + + // Adapt paragraph formatting to editor's convention + // according to enter-mode. + if ( config.enterMode == CKEDITOR.ENTER_BR ) { + // We suffer from attribute/style lost in this situation. + delete element.name; + element.add( new CKEDITOR.htmlParser.element( 'br' ) ); + } else { + elementMigrateFilter( config[ 'format_' + ( config.enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ) ] )( element ); + } + }, + + 'div': function( element ) { + // Aligned table with no text surrounded is represented by a wrapper div, from which + // table cells inherit as text-align styles, which is wrong. + // Instead we use a clear-float div after the table to properly achieve the same layout. + var singleChild = element.onlyChild(); + if ( singleChild && singleChild.name == 'table' ) { + var attrs = element.attributes; + singleChild.attributes = CKEDITOR.tools.extend( singleChild.attributes, attrs ); + attrs.style && singleChild.addStyle( attrs.style ); + + var clearFloatDiv = new CKEDITOR.htmlParser.element( 'div' ); + clearFloatDiv.addStyle( 'clear', 'both' ); + element.add( clearFloatDiv ); + delete element.name; + } + }, + + 'td': function( element ) { + // 'td' in 'thead' is actually . + if ( element.getAncestor( 'thead' ) ) + element.name = 'th'; + }, + + // MS-Word sometimes present list as a mixing of normal list + // and pseudo-list, normalize the previous ones into pseudo form. + 'ol': flattenList, + 'ul': flattenList, + 'dl': flattenList, + + 'font': function( element ) { + // Drop the font tag if it comes from list bullet text. + if ( isListBulletIndicator( element.parent ) ) { + delete element.name; + return; + } + + element.filterChildren( filter ); + + var attrs = element.attributes, + styleText = attrs.style, + parent = element.parent; + + if ( parent.name == 'font' ) { // Merge nested tags. + CKEDITOR.tools.extend( parent.attributes, element.attributes ); + styleText && parent.addStyle( styleText ); + delete element.name; + } + // Convert the merged into a span with all attributes preserved. + else { + // Use array to avoid string concatenation and get rid of problems with trailing ";" (#12243). + styleText = ( styleText || '' ).split( ';' ); + + // IE's having those deprecated attributes, normalize them. + if ( attrs.color ) { + if ( attrs.color != '#000000' ) + styleText.push( 'color:' + attrs.color ); + delete attrs.color; + } + if ( attrs.face ) { + styleText.push( 'font-family:' + attrs.face ); + delete attrs.face; + } + // TODO: Mapping size in ranges of xx-small, + // x-small, small, medium, large, x-large, xx-large. + if ( attrs.size ) { + styleText.push( 'font-size:' + + ( attrs.size > 3 ? 'large' : ( attrs.size < 3 ? 'small' : 'medium' ) ) ); + delete attrs.size; + } + + element.name = 'span'; + element.addStyle( styleText.join( ';' ) ); + } + }, + + 'span': function( element ) { + // Remove the span if it comes from list bullet text. + if ( isListBulletIndicator( element.parent ) ) + return false; + + element.filterChildren( filter ); + if ( containsNothingButSpaces( element ) ) { + delete element.name; + return null; + } + + // List item bullet type is supposed to be indicated by + // the text of a span with style 'mso-list : Ignore' or an image. + if ( isListBulletIndicator( element ) ) { + var listSymbolNode = element.firstChild( function( node ) { + return node.value || node.name == 'img'; + } ); + + var listSymbol = listSymbolNode && ( listSymbolNode.value || 'l.' ), + listType = listSymbol && listSymbol.match( /^(?:[(]?)([^\s]+?)([.)]?)$/ ); + + if ( listType ) { + var marker = createListBulletMarker( listType, listSymbol ); + // Some non-existed list items might be carried by an inconsequential list, indicate by "mso-hide:all/display:none", + // those are to be removed later, now mark it with "cke:ignored". + var ancestor = element.getAncestor( 'span' ); + if ( ancestor && ( / mso-hide:\s*all|display:\s*none / ).test( ancestor.attributes.style ) ) + marker.attributes[ 'cke:ignored' ] = 1; + return marker; + } + } + + // Update the src attribute of image element with href. + var attrs = element.attributes, + styleText = attrs && attrs.style; + + // Assume MS-Word mostly carry font related styles on , + // adapting them to editor's convention. + if ( styleText ) { + attrs.style = stylesFilter( [ + // Drop 'inline-height' style which make lines overlapping. + [ 'line-height' ], + [ ( /^font-family$/ ), null, !removeFontStyles ? styleMigrateFilter( config.font_style, 'family' ) : null ], + [ ( /^font-size$/ ), null, !removeFontStyles ? styleMigrateFilter( config.fontSize_style, 'size' ) : null ], + [ ( /^color$/ ), null, !removeFontStyles ? styleMigrateFilter( config.colorButton_foreStyle, 'color' ) : null ], + [ ( /^background-color$/ ), null, !removeFontStyles ? styleMigrateFilter( config.colorButton_backStyle, 'color' ) : null ] + ] )( styleText, element ) || ''; + } + + if ( !attrs.style ) + delete attrs.style; + + if ( CKEDITOR.tools.isEmpty( attrs ) ) + delete element.name; + + return null; + }, + + // Migrate basic style formats to editor configured ones. + b: elementMigrateFilter( config.coreStyles_bold ), + i: elementMigrateFilter( config.coreStyles_italic ), + u: elementMigrateFilter( config.coreStyles_underline ), + s: elementMigrateFilter( config.coreStyles_strike ), + sup: elementMigrateFilter( config.coreStyles_superscript ), + sub: elementMigrateFilter( config.coreStyles_subscript ), + + // Remove full paths from links to anchors. + a: function( element ) { + var attrs = element.attributes; + + if ( attrs.name && attrs.name.match( /ole_link\d+/i ) ) { + delete element.name; + return; + } + + if ( attrs.href && attrs.href.match( /^file:\/\/\/[\S]+#/i ) ) + attrs.href = attrs.href.replace( /^file:\/\/\/[^#]+/i, '' ); + }, + + 'cke:listbullet': function( element ) { + if ( element.getAncestor( /h\d/ ) && !config.pasteFromWordNumberedHeadingToList ) + delete element.name; + } + }, + + attributeNames: [ + // Remove onmouseover and onmouseout events (from MS Word comments effect) + [ ( /^onmouse(:?out|over)/ ), '' ], + // Onload on image element. + [ ( /^onload$/ ), '' ], + // Remove office and vml attribute from elements. + [ ( /(?:v|o):\w+/ ), '' ], + // Remove lang/language attributes. + [ ( /^lang/ ), '' ] + ], + + attributes: { + 'style': stylesFilter( removeStyles ? + // Provide a white-list of styles that we preserve, those should + // be the ones that could later be altered with editor tools. + [ + // Leave list-style-type + [ ( /^list-style-type$/ ), null ], + + // Preserve margin-left/right which used as default indent style in the editor. + [ ( /^margin$|^margin-(?!bottom|top)/ ), null, function( value, element, name ) { + if ( element.name in { p: 1, div: 1 } ) { + var indentStyleName = config.contentsLangDirection == 'ltr' ? 'margin-left' : 'margin-right'; + + // Extract component value from 'margin' shorthand. + if ( name == 'margin' ) + value = getStyleComponents( name, value, [ indentStyleName ] )[ indentStyleName ]; + else if ( name != indentStyleName ) + return null; + + if ( value && !emptyMarginRegex.test( value ) ) + return [ indentStyleName, value ]; + } + + return null; + } ], + + // Preserve clear float style. + [ ( /^clear$/ ) ], + + [ ( /^border.*|margin.*|vertical-align|float$/ ), null, function( value, element ) { + if ( element.name == 'img' ) + return value; + } ], + + [ ( /^width|height$/ ), null, function( value, element ) { + if ( element.name in { table: 1, td: 1, th: 1, img: 1 } ) + return value; + } ] + ] : + // Otherwise provide a black-list of styles that we remove. + [ + [ ( /^mso-/ ) ], + // Fixing color values. + [ ( /-color$/ ), null, function( value ) { + if ( value == 'transparent' ) + return false; + if ( CKEDITOR.env.gecko ) + return value.replace( /-moz-use-text-color/g, 'transparent' ); + } ], + // Remove empty margin values, e.g. 0.00001pt 0em 0pt + [ ( /^margin$/ ), emptyMarginRegex ], + [ 'text-indent', '0cm' ], + [ 'page-break-before' ], + [ 'tab-stops' ], + [ 'display', 'none' ], + removeFontStyles ? [ ( /font-?/ ) ] : null + ], removeStyles ), + + // Prefer width styles over 'width' attributes. + 'width': function( value, element ) { + if ( element.name in dtd.$tableContent ) + return false; + }, + // Prefer border styles over table 'border' attributes. + 'border': function( value, element ) { + if ( element.name in dtd.$tableContent ) + return false; + }, + + // Only Firefox carry style sheet from MS-Word, which + // will be applied by us manually. For other browsers + // the css className is useless. + // We need to keep classes added as a style (#12256). + 'class': function( value, element ) { + if ( element.classWhiteList && element.classWhiteList.indexOf( ' ' + value + ' ' ) != -1 ) { + return value; + } + return false; + }, + + // MS-Word always generate 'background-color' along with 'bgcolor', + // simply drop the deprecated attributes. + 'bgcolor': falsyFilter, + + // Deprecate 'valign' attribute in favor of 'vertical-align'. + 'valign': removeStyles ? falsyFilter : function( value, element ) { + element.addStyle( 'vertical-align', value ); + return false; + } + }, + + // Fore none-IE, some useful data might be buried under these IE-conditional + // comments where RegExp were the right approach to dig them out where usual approach + // is transform it into a fake element node which hold the desired data. + comment: !CKEDITOR.env.ie ? function( value, node ) { + var imageInfo = value.match( // ), + listInfo = value.match( /^\[if !supportLists\]([\s\S]*?)\[endif\]$/ ); + + // Seek for list bullet indicator. + if ( listInfo ) { + // Bullet symbol could be either text or an image. + var listSymbol = listInfo[ 1 ] || ( imageInfo && 'l.' ), + listType = listSymbol && listSymbol.match( />(?:[(]?)([^\s]+?)([.)]?) element in conditional comments for Firefox. + if ( CKEDITOR.env.gecko && imageInfo ) { + var img = CKEDITOR.htmlParser.fragment.fromHtml( imageInfo[ 0 ] ).children[ 0 ], + previousComment = node.previous, + // Try to dig the real image link from vml markup from previous comment text. + imgSrcInfo = previousComment && previousComment.value.match( /]*o:href=['"](.*?)['"]/ ), + imgSrc = imgSrcInfo && imgSrcInfo[ 1 ]; + + // Is there a real 'src' url to be used? + imgSrc && ( img.attributes.src = imgSrc ); + return img; + } + + return false; + } : falsyFilter + }; + } + } ); + + // The paste processor here is just a reduced copy of html data processor. + var pasteProcessor = function() { + this.dataFilter = new CKEDITOR.htmlParser.filter(); + }; + + pasteProcessor.prototype = { + toHtml: function( data ) { + var fragment = CKEDITOR.htmlParser.fragment.fromHtml( data ), + writer = new CKEDITOR.htmlParser.basicWriter(); + + fragment.writeHtml( writer, this.dataFilter ); + return writer.getHtml( true ); + } + }; + + CKEDITOR.cleanWord = function( data, editor ) { + // We get and when we started using `dataTransfer` instead of pasteBin, so we need to + // change to and to . + data = data.replace( //g, '' ); + + // Firefox will be confused by those downlevel-revealed IE conditional + // comments, fixing them first( convert it to upperlevel-revealed one ). + // e.g. ... + if ( CKEDITOR.env.gecko ) + data = data.replace( /(([\S\s]*?))/gi, '$1$2$3' ); + + // #9456 - Webkit doesn't wrap list number with span, which is crucial for filter to recognize list. + // + //

    + // + // 3.       + // Test3 + //

    + // + // Transform to: + // + //

    + // + // + // 3.       + // + // Test3 + //

    + if ( CKEDITOR.env.webkit ) + data = data.replace( /(class="MsoListParagraph[^>]+>)([^<]+)()/gi, '$1$2$3' ); + + var dataProcessor = new pasteProcessor(), + dataFilter = dataProcessor.dataFilter; + + // These rules will have higher priorities than default ones. + dataFilter.addRules( CKEDITOR.plugins.pastefromword.getRules( editor, dataFilter ) ); + + // Allow extending data filter rules. + editor.fire( 'beforeCleanWord', { filter: dataFilter } ); + + try { + data = dataProcessor.toHtml( data ); + } catch ( e ) { + editor.showNotification( editor.lang.pastefromword.error ); + } + + // Below post processing those things that are unable to delivered by filter rules. + + // Remove 'cke' namespaced attribute used in filter rules as marker. + data = data.replace( /cke:.*?".*?"/g, '' ); + + // Remove empty style attribute. + data = data.replace( /style=""/g, '' ); + + // Remove the dummy spans ( having no inline style ). + data = data.replace( //g, '' ); + + return data; + }; +} )(); + +/** + * Whether to ignore all font related formatting styles, including: + * + * * font size; + * * font family; + * * font foreground/background color. + * + * config.pasteFromWordRemoveFontStyles = false; + * + * @since 3.1 + * @cfg {Boolean} [pasteFromWordRemoveFontStyles=true] + * @member CKEDITOR.config + */ + +/** + * Whether to transform MS Word outline numbered headings into lists. + * + * config.pasteFromWordNumberedHeadingToList = true; + * + * @since 3.1 + * @cfg {Boolean} [pasteFromWordNumberedHeadingToList=false] + * @member CKEDITOR.config + */ + +/** + * Whether to remove element styles that can't be managed with the editor. Note + * that this doesn't handle the font specific styles, which depends on the + * {@link #pasteFromWordRemoveFontStyles} setting instead. + * + * config.pasteFromWordRemoveStyles = false; + * + * @since 3.1 + * @cfg {Boolean} [pasteFromWordRemoveStyles=true] + * @member CKEDITOR.config + */ diff --git a/sources/plugins/pastefromword/icons/hidpi/pastefromword-rtl.png b/sources/plugins/pastefromword/icons/hidpi/pastefromword-rtl.png new file mode 100644 index 00000000..142bd569 Binary files /dev/null and b/sources/plugins/pastefromword/icons/hidpi/pastefromword-rtl.png differ diff --git a/sources/plugins/pastefromword/icons/hidpi/pastefromword.png b/sources/plugins/pastefromword/icons/hidpi/pastefromword.png new file mode 100644 index 00000000..ac043cdd Binary files /dev/null and b/sources/plugins/pastefromword/icons/hidpi/pastefromword.png differ diff --git a/sources/plugins/pastefromword/icons/pastefromword-rtl.png b/sources/plugins/pastefromword/icons/pastefromword-rtl.png new file mode 100644 index 00000000..7b69c555 Binary files /dev/null and b/sources/plugins/pastefromword/icons/pastefromword-rtl.png differ diff --git a/sources/plugins/pastefromword/icons/pastefromword.png b/sources/plugins/pastefromword/icons/pastefromword.png new file mode 100644 index 00000000..61a0ae43 Binary files /dev/null and b/sources/plugins/pastefromword/icons/pastefromword.png differ diff --git a/sources/plugins/pastefromword/lang/af.js b/sources/plugins/pastefromword/lang/af.js new file mode 100644 index 00000000..0e047b32 --- /dev/null +++ b/sources/plugins/pastefromword/lang/af.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'af', { + confirmCleanup: 'Die teks wat u wil plak lyk asof dit uit Word gekopiëer is. Wil u dit eers skoonmaak voordat dit geplak word?', + error: 'Die geplakte teks kon nie skoongemaak word nie, weens \'n interne fout', + title: 'Plak vanuit Word', + toolbar: 'Plak vanuit Word' +} ); diff --git a/sources/plugins/pastefromword/lang/ar.js b/sources/plugins/pastefromword/lang/ar.js new file mode 100644 index 00000000..37d6c35d --- /dev/null +++ b/sources/plugins/pastefromword/lang/ar.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'ar', { + confirmCleanup: 'يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيفه قبل الشروع في عملية اللصق؟', + error: 'لم يتم مسح المعلومات الملصقة لخلل داخلي', + title: 'لصق من وورد', + toolbar: 'لصق من وورد' +} ); diff --git a/sources/plugins/pastefromword/lang/bg.js b/sources/plugins/pastefromword/lang/bg.js new file mode 100644 index 00000000..eb4a6fab --- /dev/null +++ b/sources/plugins/pastefromword/lang/bg.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'bg', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'Вмъкни от MS Word', + toolbar: 'Вмъкни от MS Word' +} ); diff --git a/sources/plugins/pastefromword/lang/bn.js b/sources/plugins/pastefromword/lang/bn.js new file mode 100644 index 00000000..9fedb959 --- /dev/null +++ b/sources/plugins/pastefromword/lang/bn.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'bn', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'পেস্ট (শব্দ)', + toolbar: 'পেস্ট (শব্দ)' +} ); diff --git a/sources/plugins/pastefromword/lang/bs.js b/sources/plugins/pastefromword/lang/bs.js new file mode 100644 index 00000000..2b0528a7 --- /dev/null +++ b/sources/plugins/pastefromword/lang/bs.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'bs', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'Zalijepi iz Word-a', + toolbar: 'Zalijepi iz Word-a' +} ); diff --git a/sources/plugins/pastefromword/lang/ca.js b/sources/plugins/pastefromword/lang/ca.js new file mode 100644 index 00000000..b2da5cd8 --- /dev/null +++ b/sources/plugins/pastefromword/lang/ca.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'ca', { + confirmCleanup: 'El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?', + error: 'No ha estat possible netejar les dades enganxades degut a un error intern', + title: 'Enganxa des del Word', + toolbar: 'Enganxa des del Word' +} ); diff --git a/sources/plugins/pastefromword/lang/cs.js b/sources/plugins/pastefromword/lang/cs.js new file mode 100644 index 00000000..5cb7c174 --- /dev/null +++ b/sources/plugins/pastefromword/lang/cs.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'cs', { + confirmCleanup: 'Jak je vidět, vkládaný text je kopírován z Wordu. Chcete jej před vložením vyčistit?', + error: 'Z důvodu vnitřní chyby nebylo možné provést vyčištění vkládaného textu.', + title: 'Vložit z Wordu', + toolbar: 'Vložit z Wordu' +} ); diff --git a/sources/plugins/pastefromword/lang/cy.js b/sources/plugins/pastefromword/lang/cy.js new file mode 100644 index 00000000..75fe3662 --- /dev/null +++ b/sources/plugins/pastefromword/lang/cy.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'cy', { + confirmCleanup: 'Mae\'r testun rydych chi am ludo wedi\'i gopïo o Word. Ydych chi am ei lanhau cyn ei ludo?', + error: 'Doedd dim modd glanhau y data a ludwyd oherwydd gwall mewnol', + title: 'Gludo o Word', + toolbar: 'Gludo o Word' +} ); diff --git a/sources/plugins/pastefromword/lang/da.js b/sources/plugins/pastefromword/lang/da.js new file mode 100644 index 00000000..81b26307 --- /dev/null +++ b/sources/plugins/pastefromword/lang/da.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'da', { + confirmCleanup: 'Den tekst du forsøger at indsætte ser ud til at komme fra Word. Vil du rense teksten før den indsættes?', + error: 'Det var ikke muligt at fjerne formatteringen på den indsatte tekst grundet en intern fejl', + title: 'Indsæt fra Word', + toolbar: 'Indsæt fra Word' +} ); diff --git a/sources/plugins/pastefromword/lang/de.js b/sources/plugins/pastefromword/lang/de.js new file mode 100644 index 00000000..836b7d74 --- /dev/null +++ b/sources/plugins/pastefromword/lang/de.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'de', { + confirmCleanup: 'Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?', + error: 'Aufgrund eines internen Fehlers war es nicht möglich die eingefügten Daten zu bereinigen', + title: 'Aus Word einfügen', + toolbar: 'Aus Word einfügen' +} ); diff --git a/sources/plugins/pastefromword/lang/el.js b/sources/plugins/pastefromword/lang/el.js new file mode 100644 index 00000000..96d1e878 --- /dev/null +++ b/sources/plugins/pastefromword/lang/el.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'el', { + confirmCleanup: 'Το κείμενο που επικολλάται φαίνεται να είναι αντιγραμμένο από το Word. Μήπως θα θέλατε να καθαριστεί προτού επικολληθεί;', + error: 'Δεν ήταν δυνατό να καθαριστούν τα δεδομένα λόγω ενός εσωτερικού σφάλματος', + title: 'Επικόλληση από το Word', + toolbar: 'Επικόλληση από το Word' +} ); diff --git a/sources/plugins/pastefromword/lang/en-au.js b/sources/plugins/pastefromword/lang/en-au.js new file mode 100644 index 00000000..0f677593 --- /dev/null +++ b/sources/plugins/pastefromword/lang/en-au.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'en-au', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'Paste from Word', + toolbar: 'Paste from Word' +} ); diff --git a/sources/plugins/pastefromword/lang/en-ca.js b/sources/plugins/pastefromword/lang/en-ca.js new file mode 100644 index 00000000..c3386622 --- /dev/null +++ b/sources/plugins/pastefromword/lang/en-ca.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'en-ca', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'Paste from Word', + toolbar: 'Paste from Word' +} ); diff --git a/sources/plugins/pastefromword/lang/en-gb.js b/sources/plugins/pastefromword/lang/en-gb.js new file mode 100644 index 00000000..085e6bce --- /dev/null +++ b/sources/plugins/pastefromword/lang/en-gb.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'en-gb', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', + error: 'It was not possible to clean up the pasted data due to an internal error', + title: 'Paste from Word', + toolbar: 'Paste from Word' +} ); diff --git a/sources/plugins/pastefromword/lang/en.js b/sources/plugins/pastefromword/lang/en.js new file mode 100644 index 00000000..396c85b8 --- /dev/null +++ b/sources/plugins/pastefromword/lang/en.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'en', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', + error: 'It was not possible to clean up the pasted data due to an internal error', + title: 'Paste from Word', + toolbar: 'Paste from Word' +} ); diff --git a/sources/plugins/pastefromword/lang/eo.js b/sources/plugins/pastefromword/lang/eo.js new file mode 100644 index 00000000..b9fc8e57 --- /dev/null +++ b/sources/plugins/pastefromword/lang/eo.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'eo', { + confirmCleanup: 'La teksto, kiun vi volas interglui, ŝajnas esti kopiita el Word. Ĉu vi deziras purigi ĝin antaŭ intergluo?', + error: 'Ne eblis purigi la intergluitajn datenojn pro interna eraro', + title: 'Interglui el Word', + toolbar: 'Interglui el Word' +} ); diff --git a/sources/plugins/pastefromword/lang/es.js b/sources/plugins/pastefromword/lang/es.js new file mode 100644 index 00000000..031de57f --- /dev/null +++ b/sources/plugins/pastefromword/lang/es.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'es', { + confirmCleanup: 'El texto que desea parece provenir de Word.\r\n¿Desea depurarlo antes de pegarlo?', + error: 'No ha sido posible limpiar los datos debido a un error interno', + title: 'Pegar desde Word', + toolbar: 'Pegar desde Word' +} ); diff --git a/sources/plugins/pastefromword/lang/et.js b/sources/plugins/pastefromword/lang/et.js new file mode 100644 index 00000000..f41c5ac9 --- /dev/null +++ b/sources/plugins/pastefromword/lang/et.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'et', { + confirmCleanup: 'Tekst, mida tahad asetada näib pärinevat Wordist. Kas tahad selle enne asetamist puhastada?', + error: 'Asetatud andmete puhastamine ei olnud sisemise vea tõttu võimalik', + title: 'Asetamine Wordist', + toolbar: 'Asetamine Wordist' +} ); diff --git a/sources/plugins/pastefromword/lang/eu.js b/sources/plugins/pastefromword/lang/eu.js new file mode 100644 index 00000000..3035a14c --- /dev/null +++ b/sources/plugins/pastefromword/lang/eu.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'eu', { + confirmCleanup: 'Itsatsi nahi duzun testua Word-etik kopiatua dela dirudi. Itsatsi baino lehen garbitu nahi duzu?', + error: 'Barne-errore bat dela eta ezin izan da itsatsitako testua garbitu', + title: 'Itsatsi Word-etik', + toolbar: 'Itsatsi Word-etik' +} ); diff --git a/sources/plugins/pastefromword/lang/fa.js b/sources/plugins/pastefromword/lang/fa.js new file mode 100644 index 00000000..029209ba --- /dev/null +++ b/sources/plugins/pastefromword/lang/fa.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'fa', { + confirmCleanup: 'متنی که میخواهید بچسبانید به نظر میرسد که از Word کپی شده است. آیا میخواهید قبل از چسباندن آن را پاکسازی کنید؟', + error: 'به دلیل بروز خطای داخلی امکان پاکسازی اطلاعات بازنشانی شده وجود ندارد.', + title: 'چسباندن از Word', + toolbar: 'چسباندن از Word' +} ); diff --git a/sources/plugins/pastefromword/lang/fi.js b/sources/plugins/pastefromword/lang/fi.js new file mode 100644 index 00000000..7b368fe7 --- /dev/null +++ b/sources/plugins/pastefromword/lang/fi.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'fi', { + confirmCleanup: 'Liittämäsi teksti näyttäisi olevan Word-dokumentista. Haluatko siivota sen ennen liittämistä? (Suositus: Kyllä)', + error: 'Liitetyn tiedon siivoaminen ei onnistunut sisäisen virheen takia', + title: 'Liitä Word-dokumentista', + toolbar: 'Liitä Word-dokumentista' +} ); diff --git a/sources/plugins/pastefromword/lang/fo.js b/sources/plugins/pastefromword/lang/fo.js new file mode 100644 index 00000000..dc994220 --- /dev/null +++ b/sources/plugins/pastefromword/lang/fo.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'fo', { + confirmCleanup: 'Teksturin, tú roynir at seta inn, sýnist at stava frá Word. Skal teksturin reinsast fyrst?', + error: 'Tað eydnaðist ikki at reinsa tekstin vegna ein internan feil', + title: 'Innrita frá Word', + toolbar: 'Innrita frá Word' +} ); diff --git a/sources/plugins/pastefromword/lang/fr-ca.js b/sources/plugins/pastefromword/lang/fr-ca.js new file mode 100644 index 00000000..4e27e997 --- /dev/null +++ b/sources/plugins/pastefromword/lang/fr-ca.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'fr-ca', { + confirmCleanup: 'Le texte que vous tentez de coller semble provenir de Word. Désirez vous le nettoyer avant de coller?', + error: 'Il n\'a pas été possible de nettoyer les données collées du à une erreur interne', + title: 'Coller de Word', + toolbar: 'Coller de Word' +} ); diff --git a/sources/plugins/pastefromword/lang/fr.js b/sources/plugins/pastefromword/lang/fr.js new file mode 100644 index 00000000..13126f7a --- /dev/null +++ b/sources/plugins/pastefromword/lang/fr.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'fr', { + confirmCleanup: 'Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?', + error: 'Il n\'a pas été possible de nettoyer les données collées à la suite d\'une erreur interne.', + title: 'Coller depuis Word', + toolbar: 'Coller depuis Word' +} ); diff --git a/sources/plugins/pastefromword/lang/gl.js b/sources/plugins/pastefromword/lang/gl.js new file mode 100644 index 00000000..655cc3d5 --- /dev/null +++ b/sources/plugins/pastefromword/lang/gl.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'gl', { + confirmCleanup: 'O texto que quere pegar semella ser copiado desde o Word. Quere depuralo antes de pegalo?', + error: 'Non foi posíbel depurar os datos pegados por mor dun erro interno', + title: 'Pegar desde Word', + toolbar: 'Pegar desde Word' +} ); diff --git a/sources/plugins/pastefromword/lang/gu.js b/sources/plugins/pastefromword/lang/gu.js new file mode 100644 index 00000000..6ea245d6 --- /dev/null +++ b/sources/plugins/pastefromword/lang/gu.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'gu', { + confirmCleanup: 'તમે જે ટેક્ષ્ત્ કોપી કરી રહ્યા છો ટે વર્ડ ની છે. કોપી કરતા પેહલા સાફ કરવી છે?', + error: 'પેસ્ટ કરેલો ડેટા ઇન્ટરનલ એરર ના લીથે સાફ કરી શકાયો નથી.', + title: 'પેસ્ટ (વડૅ ટેક્સ્ટ)', + toolbar: 'પેસ્ટ (વડૅ ટેક્સ્ટ)' +} ); diff --git a/sources/plugins/pastefromword/lang/he.js b/sources/plugins/pastefromword/lang/he.js new file mode 100644 index 00000000..80666c70 --- /dev/null +++ b/sources/plugins/pastefromword/lang/he.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'he', { + confirmCleanup: 'נראה הטקסט שבכוונתך להדביק מקורו בקובץ וורד. האם ברצונך לנקות אותו טרם ההדבקה?', + error: 'לא ניתן היה לנקות את המידע בשל תקלה פנימית.', + title: 'הדבקה מ-Word', + toolbar: 'הדבקה מ-Word' +} ); diff --git a/sources/plugins/pastefromword/lang/hi.js b/sources/plugins/pastefromword/lang/hi.js new file mode 100644 index 00000000..2e39fee2 --- /dev/null +++ b/sources/plugins/pastefromword/lang/hi.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'hi', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'पेस्ट (वर्ड से)', + toolbar: 'पेस्ट (वर्ड से)' +} ); diff --git a/sources/plugins/pastefromword/lang/hr.js b/sources/plugins/pastefromword/lang/hr.js new file mode 100644 index 00000000..2a765328 --- /dev/null +++ b/sources/plugins/pastefromword/lang/hr.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'hr', { + confirmCleanup: 'Tekst koji želite zalijepiti čini se da je kopiran iz Worda. Želite li prije očistiti tekst?', + error: 'Nije moguće očistiti podatke za ljepljenje zbog interne greške', + title: 'Zalijepi iz Worda', + toolbar: 'Zalijepi iz Worda' +} ); diff --git a/sources/plugins/pastefromword/lang/hu.js b/sources/plugins/pastefromword/lang/hu.js new file mode 100644 index 00000000..5f670e1e --- /dev/null +++ b/sources/plugins/pastefromword/lang/hu.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'hu', { + confirmCleanup: 'Úgy tűnik a beillesztett szöveget Word-ből másolt át. Meg szeretné tisztítani a szöveget? (ajánlott)', + error: 'Egy belső hiba miatt nem sikerült megtisztítani a szöveget', + title: 'Beillesztés Word-ből', + toolbar: 'Beillesztés Word-ből' +} ); diff --git a/sources/plugins/pastefromword/lang/id.js b/sources/plugins/pastefromword/lang/id.js new file mode 100644 index 00000000..be60dd24 --- /dev/null +++ b/sources/plugins/pastefromword/lang/id.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'id', { + confirmCleanup: 'Teks yang ingin anda tempel sepertinya di salin dari Word. Apakah anda mau membersihkannya sebelum menempel?', + error: 'Tidak mungkin membersihkan data yang ditempel dikerenakan kesalahan internal', + title: 'Tempel dari Word', + toolbar: 'Tempel dari Word' +} ); diff --git a/sources/plugins/pastefromword/lang/is.js b/sources/plugins/pastefromword/lang/is.js new file mode 100644 index 00000000..35dfe084 --- /dev/null +++ b/sources/plugins/pastefromword/lang/is.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'is', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'Líma úr Word', + toolbar: 'Líma úr Word' +} ); diff --git a/sources/plugins/pastefromword/lang/it.js b/sources/plugins/pastefromword/lang/it.js new file mode 100644 index 00000000..68020681 --- /dev/null +++ b/sources/plugins/pastefromword/lang/it.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'it', { + confirmCleanup: 'Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?', + error: 'Non è stato possibile eliminare il testo incollato a causa di un errore interno.', + title: 'Incolla da Word', + toolbar: 'Incolla da Word' +} ); diff --git a/sources/plugins/pastefromword/lang/ja.js b/sources/plugins/pastefromword/lang/ja.js new file mode 100644 index 00000000..a1269c98 --- /dev/null +++ b/sources/plugins/pastefromword/lang/ja.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'ja', { + confirmCleanup: '貼り付けを行うテキストはワード文章からコピーされようとしています。貼り付ける前にクリーニングを行いますか?', + error: '内部エラーにより貼り付けたデータをクリアできませんでした', + title: 'ワード文章から貼り付け', + toolbar: 'ワード文章から貼り付け' +} ); diff --git a/sources/plugins/pastefromword/lang/ka.js b/sources/plugins/pastefromword/lang/ka.js new file mode 100644 index 00000000..472ff533 --- /dev/null +++ b/sources/plugins/pastefromword/lang/ka.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'ka', { + confirmCleanup: 'ჩასასმელი ტექსტი ვორდიდან გადმოტანილს გავს - გინდათ მისი წინასწარ გაწმენდა?', + error: 'შიდა შეცდომის გამო ვერ მოხერხდა ტექსტის გაწმენდა', + title: 'ვორდიდან ჩასმა', + toolbar: 'ვორდიდან ჩასმა' +} ); diff --git a/sources/plugins/pastefromword/lang/km.js b/sources/plugins/pastefromword/lang/km.js new file mode 100644 index 00000000..cd5268dc --- /dev/null +++ b/sources/plugins/pastefromword/lang/km.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'km', { + confirmCleanup: 'អត្ថបទ​ដែល​អ្នក​ចង់​បិទ​ភ្ជាប់​នេះ ទំនង​ដូច​ជា​ចម្លង​មក​ពី Word។ តើ​អ្នក​ចង់​សម្អាត​វា​មុន​បិទ​ភ្ជាប់​ទេ?', + error: 'ដោយ​សារ​មាន​បញ្ហា​ផ្នែក​ក្នុង​ធ្វើ​ឲ្យ​មិន​អាច​សម្អាត​ទិន្នន័យ​ដែល​បាន​បិទ​ភ្ជាប់', + title: 'បិទ​ភ្ជាប់​ពី Word', + toolbar: 'បិទ​ភ្ជាប់​ពី Word' +} ); diff --git a/sources/plugins/pastefromword/lang/ko.js b/sources/plugins/pastefromword/lang/ko.js new file mode 100644 index 00000000..54870707 --- /dev/null +++ b/sources/plugins/pastefromword/lang/ko.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'ko', { + confirmCleanup: '붙여 넣을 내용은 MS Word에서 복사 한 것입니다. 붙여 넣기 전에 정리 하시겠습니까?', + error: '내부 오류로 붙여 넣은 데이터를 정리 할 수 없습니다.', + title: 'MS Word 에서 붙여넣기', + toolbar: 'MS Word 에서 붙여넣기' +} ); diff --git a/sources/plugins/pastefromword/lang/ku.js b/sources/plugins/pastefromword/lang/ku.js new file mode 100644 index 00000000..7fa47dd7 --- /dev/null +++ b/sources/plugins/pastefromword/lang/ku.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'ku', { + confirmCleanup: 'ئەم دەقەی بەتەمای بیلکێنی پێدەچێت له word هێنرابێت. دەتەوێت پاکی بکەیوه پێش ئەوەی بیلکێنی؟', + error: 'هیچ ڕێگەیەك نەبوو لەلکاندنی دەقەکه بەهۆی هەڵەیەکی ناوەخۆیی', + title: 'لکاندنی لەلایەن Word', + toolbar: 'لکاندنی لەڕێی Word' +} ); diff --git a/sources/plugins/pastefromword/lang/lt.js b/sources/plugins/pastefromword/lang/lt.js new file mode 100644 index 00000000..b46b34f4 --- /dev/null +++ b/sources/plugins/pastefromword/lang/lt.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'lt', { + confirmCleanup: 'Tekstas, kurį įkeliate yra kopijuojamas iš Word. Ar norite jį išvalyti prieš įkeliant?', + error: 'Dėl vidinių sutrikimų, nepavyko išvalyti įkeliamo teksto', + title: 'Įdėti iš Word', + toolbar: 'Įdėti iš Word' +} ); diff --git a/sources/plugins/pastefromword/lang/lv.js b/sources/plugins/pastefromword/lang/lv.js new file mode 100644 index 00000000..c82f2093 --- /dev/null +++ b/sources/plugins/pastefromword/lang/lv.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'lv', { + confirmCleanup: 'Teksts, kuru vēlaties ielīmēt, izskatās ir nokopēts no Word. Vai vēlaties to iztīrīt pirms ielīmēšanas?', + error: 'Iekšējas kļūdas dēļ, neizdevās iztīrīt ielīmētos datus.', + title: 'Ievietot no Worda', + toolbar: 'Ievietot no Worda' +} ); diff --git a/sources/plugins/pastefromword/lang/mk.js b/sources/plugins/pastefromword/lang/mk.js new file mode 100644 index 00000000..b856a05e --- /dev/null +++ b/sources/plugins/pastefromword/lang/mk.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'mk', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'Paste from Word', // MISSING + toolbar: 'Paste from Word' // MISSING +} ); diff --git a/sources/plugins/pastefromword/lang/mn.js b/sources/plugins/pastefromword/lang/mn.js new file mode 100644 index 00000000..2e6fb128 --- /dev/null +++ b/sources/plugins/pastefromword/lang/mn.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'mn', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'Word-оос буулгах', + toolbar: 'Word-оос буулгах' +} ); diff --git a/sources/plugins/pastefromword/lang/ms.js b/sources/plugins/pastefromword/lang/ms.js new file mode 100644 index 00000000..ce6ffe6e --- /dev/null +++ b/sources/plugins/pastefromword/lang/ms.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'ms', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'Tampal dari Word', + toolbar: 'Tampal dari Word' +} ); diff --git a/sources/plugins/pastefromword/lang/nb.js b/sources/plugins/pastefromword/lang/nb.js new file mode 100644 index 00000000..edd15bdd --- /dev/null +++ b/sources/plugins/pastefromword/lang/nb.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'nb', { + confirmCleanup: 'Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?', + error: 'Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil', + title: 'Lim inn fra Word', + toolbar: 'Lim inn fra Word' +} ); diff --git a/sources/plugins/pastefromword/lang/nl.js b/sources/plugins/pastefromword/lang/nl.js new file mode 100644 index 00000000..a699f3d0 --- /dev/null +++ b/sources/plugins/pastefromword/lang/nl.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'nl', { + confirmCleanup: 'De tekst die u wilt plakken lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?', + error: 'Het was niet mogelijk om de geplakte tekst op te schonen door een interne fout', + title: 'Plakken vanuit Word', + toolbar: 'Plakken vanuit Word' +} ); diff --git a/sources/plugins/pastefromword/lang/no.js b/sources/plugins/pastefromword/lang/no.js new file mode 100644 index 00000000..fbb970be --- /dev/null +++ b/sources/plugins/pastefromword/lang/no.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'no', { + confirmCleanup: 'Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?', + error: 'Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil', + title: 'Lim inn fra Word', + toolbar: 'Lim inn fra Word' +} ); diff --git a/sources/plugins/pastefromword/lang/pl.js b/sources/plugins/pastefromword/lang/pl.js new file mode 100644 index 00000000..245b7d05 --- /dev/null +++ b/sources/plugins/pastefromword/lang/pl.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'pl', { + confirmCleanup: 'Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Microsoft Word. Czy chcesz go wyczyścić przed wklejeniem?', + error: 'Wyczyszczenie wklejonych danych nie było możliwe z powodu wystąpienia błędu.', + title: 'Wklej z programu MS Word', + toolbar: 'Wklej z programu MS Word' +} ); diff --git a/sources/plugins/pastefromword/lang/pt-br.js b/sources/plugins/pastefromword/lang/pt-br.js new file mode 100644 index 00000000..199b5a6b --- /dev/null +++ b/sources/plugins/pastefromword/lang/pt-br.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'pt-br', { + confirmCleanup: 'O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?', + error: 'Não foi possível limpar os dados colados devido a um erro interno', + title: 'Colar do Word', + toolbar: 'Colar do Word' +} ); diff --git a/sources/plugins/pastefromword/lang/pt.js b/sources/plugins/pastefromword/lang/pt.js new file mode 100644 index 00000000..06cdee8a --- /dev/null +++ b/sources/plugins/pastefromword/lang/pt.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'pt', { + confirmCleanup: 'O texto que pretende colar parece ter sido copiado do Word. Deseja limpá-lo antes de colar?', + error: 'Não foi possivel limpar a informação colada decido a um erro interno.', + title: 'Colar do Word', + toolbar: 'Colar do Word' +} ); diff --git a/sources/plugins/pastefromword/lang/ro.js b/sources/plugins/pastefromword/lang/ro.js new file mode 100644 index 00000000..5871070c --- /dev/null +++ b/sources/plugins/pastefromword/lang/ro.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'ro', { + confirmCleanup: 'Textul pe care doriți să-l lipiți este din Word. Doriți curățarea textului înante de a-l adăuga?', + error: 'Nu a fost posibilă curățarea datelor adăugate datorită unei erori interne', + title: 'Adaugă din Word', + toolbar: 'Adaugă din Word' +} ); diff --git a/sources/plugins/pastefromword/lang/ru.js b/sources/plugins/pastefromword/lang/ru.js new file mode 100644 index 00000000..1a8e159d --- /dev/null +++ b/sources/plugins/pastefromword/lang/ru.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'ru', { + confirmCleanup: 'Текст, который вы желаете вставить, по всей видимости, был скопирован из Word. Следует ли очистить его перед вставкой?', + error: 'Невозможно очистить вставленные данные из-за внутренней ошибки', + title: 'Вставить из Word', + toolbar: 'Вставить из Word' +} ); diff --git a/sources/plugins/pastefromword/lang/si.js b/sources/plugins/pastefromword/lang/si.js new file mode 100644 index 00000000..e66b0cbd --- /dev/null +++ b/sources/plugins/pastefromword/lang/si.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'si', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'වචන වලින් අලවන්න', + toolbar: 'වචන වලින් අලවන්න' +} ); diff --git a/sources/plugins/pastefromword/lang/sk.js b/sources/plugins/pastefromword/lang/sk.js new file mode 100644 index 00000000..8386c681 --- /dev/null +++ b/sources/plugins/pastefromword/lang/sk.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'sk', { + confirmCleanup: 'Vkladaný text vyzerá byť skopírovaný z Wordu. Chcete ho automaticky vyčistiť pred vkladaním?', + error: 'Nebolo možné vyčistiť vložené dáta kvôli internej chybe', + title: 'Vložiť z Wordu', + toolbar: 'Vložiť z Wordu' +} ); diff --git a/sources/plugins/pastefromword/lang/sl.js b/sources/plugins/pastefromword/lang/sl.js new file mode 100644 index 00000000..b558ca8a --- /dev/null +++ b/sources/plugins/pastefromword/lang/sl.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'sl', { + confirmCleanup: 'Besedilo, ki ga želite prilepiti je kopirano iz Word-a. Ali ga želite očistiti, preden ga prilepite?', + error: 'Ni bilo mogoče očistiti prilepljenih podatkov zaradi notranje napake', + title: 'Prilepi iz Worda', + toolbar: 'Prilepi iz Worda' +} ); diff --git a/sources/plugins/pastefromword/lang/sq.js b/sources/plugins/pastefromword/lang/sq.js new file mode 100644 index 00000000..41c7c775 --- /dev/null +++ b/sources/plugins/pastefromword/lang/sq.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'sq', { + confirmCleanup: 'Teksti që dëshironi të e hidhni siç duket është kopjuar nga Word-i. Dëshironi të e pastroni para se të e hidhni?', + error: 'Nuk ishte e mundur të fshiheshin të dhënat e hedhura për shkak të një gabimi të brendshëm', + title: 'Hidhe nga Word-i', + toolbar: 'Hidhe nga Word-i' +} ); diff --git a/sources/plugins/pastefromword/lang/sr-latn.js b/sources/plugins/pastefromword/lang/sr-latn.js new file mode 100644 index 00000000..3774a3de --- /dev/null +++ b/sources/plugins/pastefromword/lang/sr-latn.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'sr-latn', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'Zalepi iz Worda', + toolbar: 'Zalepi iz Worda' +} ); diff --git a/sources/plugins/pastefromword/lang/sr.js b/sources/plugins/pastefromword/lang/sr.js new file mode 100644 index 00000000..259715b3 --- /dev/null +++ b/sources/plugins/pastefromword/lang/sr.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'sr', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'Залепи из Worda', + toolbar: 'Залепи из Worda' +} ); diff --git a/sources/plugins/pastefromword/lang/sv.js b/sources/plugins/pastefromword/lang/sv.js new file mode 100644 index 00000000..d5954b49 --- /dev/null +++ b/sources/plugins/pastefromword/lang/sv.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'sv', { + confirmCleanup: 'Texten du vill klistra in verkar vara kopierad från Word. Vill du rensa den innan du klistrar in den?', + error: 'Det var inte möjligt att städa upp den inklistrade data på grund av ett internt fel', + title: 'Klistra in från Word', + toolbar: 'Klistra in från Word' +} ); diff --git a/sources/plugins/pastefromword/lang/th.js b/sources/plugins/pastefromword/lang/th.js new file mode 100644 index 00000000..2ddcca55 --- /dev/null +++ b/sources/plugins/pastefromword/lang/th.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'th', { + confirmCleanup: 'ข้อความที่คุณต้องการวางลงไปเป็นข้อความที่คัดลอกมาจากโปรแกรมไมโครซอฟท์เวิร์ด คุณต้องการล้างค่าข้อความดังกล่าวก่อนวางลงไปหรือไม่?', + error: 'ไม่สามารถล้างข้อมูลที่ต้องการวางได้เนื่องจากเกิดข้อผิดพลาดภายในระบบ', + title: 'วางสำเนาจากตัวอักษรเวิร์ด', + toolbar: 'วางสำเนาจากตัวอักษรเวิร์ด' +} ); diff --git a/sources/plugins/pastefromword/lang/tr.js b/sources/plugins/pastefromword/lang/tr.js new file mode 100644 index 00000000..12331e38 --- /dev/null +++ b/sources/plugins/pastefromword/lang/tr.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'tr', { + confirmCleanup: 'Yapıştırmaya çalıştığınız metin Word\'den kopyalanmıştır. Yapıştırmadan önce silmek istermisiniz?', + error: 'Yapıştırmadaki veri bilgisi hata düzelene kadar silinmeyecektir', + title: 'Word\'den Yapıştır', + toolbar: 'Word\'den Yapıştır' +} ); diff --git a/sources/plugins/pastefromword/lang/tt.js b/sources/plugins/pastefromword/lang/tt.js new file mode 100644 index 00000000..a5876219 --- /dev/null +++ b/sources/plugins/pastefromword/lang/tt.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'tt', { + confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING + title: 'Word\'тан өстәү', + toolbar: 'Word\'тан өстәү' +} ); diff --git a/sources/plugins/pastefromword/lang/ug.js b/sources/plugins/pastefromword/lang/ug.js new file mode 100644 index 00000000..8285b371 --- /dev/null +++ b/sources/plugins/pastefromword/lang/ug.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'ug', { + confirmCleanup: 'سىز چاپلىماقچى بولغان مەزمۇن MS Word تىن كەلگەندەك قىلىدۇ، MS Word پىچىمىنى تازىلىۋەتكەندىن كېيىن ئاندىن چاپلامدۇ؟', + error: 'ئىچكى خاتالىق سەۋەبىدىن چاپلايدىغان سانلىق مەلۇماتنى تازىلىيالمايدۇ', + title: 'MS Word تىن چاپلا', + toolbar: 'MS Word تىن چاپلا' +} ); diff --git a/sources/plugins/pastefromword/lang/uk.js b/sources/plugins/pastefromword/lang/uk.js new file mode 100644 index 00000000..ff3fe230 --- /dev/null +++ b/sources/plugins/pastefromword/lang/uk.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'uk', { + confirmCleanup: 'Текст, що Ви намагаєтесь вставити, схожий на скопійований з Word. Бажаєте очистити його форматування перед вставлянням?', + error: 'Неможливо очистити форматування через внутрішню помилку.', + title: 'Вставити з Word', + toolbar: 'Вставити з Word' +} ); diff --git a/sources/plugins/pastefromword/lang/vi.js b/sources/plugins/pastefromword/lang/vi.js new file mode 100644 index 00000000..e967297f --- /dev/null +++ b/sources/plugins/pastefromword/lang/vi.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'vi', { + confirmCleanup: 'Văn bản bạn muốn dán có kèm định dạng của Word. Bạn có muốn loại bỏ định dạng Word trước khi dán?', + error: 'Không thể để làm sạch các dữ liệu dán do một lỗi nội bộ', + title: 'Dán với định dạng Word', + toolbar: 'Dán với định dạng Word' +} ); diff --git a/sources/plugins/pastefromword/lang/zh-cn.js b/sources/plugins/pastefromword/lang/zh-cn.js new file mode 100644 index 00000000..f9e1a952 --- /dev/null +++ b/sources/plugins/pastefromword/lang/zh-cn.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'zh-cn', { + confirmCleanup: '您要粘贴的内容好像是来自 MS Word,是否要清除 MS Word 格式后再粘贴?', + error: '由于内部错误无法清理要粘贴的数据', + title: '从 MS Word 粘贴', + toolbar: '从 MS Word 粘贴' +} ); diff --git a/sources/plugins/pastefromword/lang/zh.js b/sources/plugins/pastefromword/lang/zh.js new file mode 100644 index 00000000..fc460ba6 --- /dev/null +++ b/sources/plugins/pastefromword/lang/zh.js @@ -0,0 +1,10 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastefromword', 'zh', { + confirmCleanup: '您想貼上的文字似乎是自 Word 複製而來,請問您是否要先清除 Word 的格式後再行貼上?', + error: '由於發生內部錯誤,無法清除清除 Word 的格式。', + title: '自 Word 貼上', + toolbar: '自 Word 貼上' +} ); diff --git a/sources/plugins/pastefromword/plugin.js b/sources/plugins/pastefromword/plugin.js new file mode 100644 index 00000000..3bc93798 --- /dev/null +++ b/sources/plugins/pastefromword/plugin.js @@ -0,0 +1,149 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +( function() { + CKEDITOR.plugins.add( 'pastefromword', { + requires: 'clipboard', + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'pastefromword,pastefromword-rtl', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + var commandName = 'pastefromword', + // Flag indicate this command is actually been asked instead of a generic pasting. + forceFromWord = 0, + path = this.path; + + editor.addCommand( commandName, { + // Snapshots are done manually by editable.insertXXX methods. + canUndo: false, + async: true, + + exec: function( editor ) { + var cmd = this; + + forceFromWord = 1; + // Force html mode for incomming paste events sequence. + editor.once( 'beforePaste', forceHtmlMode ); + + editor.getClipboardData( { title: editor.lang.pastefromword.title }, function( data ) { + // Do not use editor#paste, because it would start from beforePaste event. + data && editor.fire( 'paste', { + type: 'html', + dataValue: data.dataValue, + method: 'paste', + dataTransfer: CKEDITOR.plugins.clipboard.initPasteDataTransfer() + } ); + + editor.fire( 'afterCommandExec', { + name: commandName, + command: cmd, + returnValue: !!data + } ); + } ); + } + } ); + + // Register the toolbar button. + editor.ui.addButton && editor.ui.addButton( 'PasteFromWord', { + label: editor.lang.pastefromword.toolbar, + command: commandName, + toolbar: 'clipboard,50' + } ); + + editor.on( 'pasteState', function( evt ) { + editor.getCommand( commandName ).setState( evt.data ); + } ); + + // Features bring by this command beside the normal process: + // 1. No more bothering of user about the clean-up. + // 2. Perform the clean-up even if content is not from MS-Word. + // (e.g. from a MS-Word similar application.) + // 3. Listen with high priority (3), so clean up is done before content + // type sniffing (priority = 6). + editor.on( 'paste', function( evt ) { + var data = evt.data, + mswordHtml = data.dataValue; + + // MS-WORD format sniffing. + if ( mswordHtml && ( forceFromWord || ( /(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/ ).test( mswordHtml ) ) ) { + // Do not apply paste filter to data filtered by the Word filter (#13093). + data.dontFilter = true; + + // If filter rules aren't loaded then cancel 'paste' event, + // load them and when they'll get loaded fire new paste event + // for which data will be filtered in second execution of + // this listener. + var isLazyLoad = loadFilterRules( editor, path, function() { + // Event continuation with the original data. + if ( isLazyLoad ) + editor.fire( 'paste', data ); + else if ( !editor.config.pasteFromWordPromptCleanup || ( forceFromWord || confirm( editor.lang.pastefromword.confirmCleanup ) ) ) // jshint ignore:line + data.dataValue = CKEDITOR.cleanWord( mswordHtml, editor ); + + // Reset forceFromWord. + forceFromWord = 0; + } ); + + // The cleanup rules are to be loaded, we should just cancel + // this event. + isLazyLoad && evt.cancel(); + } + }, null, null, 3 ); + } + + } ); + + function loadFilterRules( editor, path, callback ) { + var isLoaded = CKEDITOR.cleanWord; + + if ( isLoaded ) + callback(); + else { + var filterFilePath = CKEDITOR.getUrl( editor.config.pasteFromWordCleanupFile || ( path + 'filter/default.js' ) ); + + // Load with busy indicator. + CKEDITOR.scriptLoader.load( filterFilePath, callback, null, true ); + } + + return !isLoaded; + } + + function forceHtmlMode( evt ) { + evt.data.type = 'html'; + } +} )(); + + +/** + * Whether to prompt the user about the clean up of content being pasted from MS Word. + * + * config.pasteFromWordPromptCleanup = true; + * + * @since 3.1 + * @cfg {Boolean} [pasteFromWordPromptCleanup=false] + * @member CKEDITOR.config + */ + +/** + * The file that provides the MS Word cleanup function for pasting operations. + * + * **Note:** This is a global configuration shared by all editor instances present + * in the page. + * + * // Load from 'pastefromword' plugin 'filter' sub folder (custom.js file) using path relative to CKEditor installation folder. + * CKEDITOR.config.pasteFromWordCleanupFile = 'plugins/pastefromword/filter/custom.js'; + * + * // Load from 'pastefromword' plugin 'filter' sub folder (custom.js file) using full path (including CKEditor installation folder). + * CKEDITOR.config.pasteFromWordCleanupFile = '/ckeditor/plugins/pastefromword/filter/custom.js'; + * + * // Load custom.js file from 'customFilerts' folder (located in server's root) using full URL. + * CKEDITOR.config.pasteFromWordCleanupFile = 'http://my.example.com/customFilerts/custom.js'; + * + * @since 3.1 + * @cfg {String} [pasteFromWordCleanupFile= + 'filter/default.js'] + * @member CKEDITOR.config + */ diff --git a/sources/plugins/pastetext/icons/hidpi/pastetext-rtl.png b/sources/plugins/pastetext/icons/hidpi/pastetext-rtl.png new file mode 100644 index 00000000..35354a5f Binary files /dev/null and b/sources/plugins/pastetext/icons/hidpi/pastetext-rtl.png differ diff --git a/sources/plugins/pastetext/icons/hidpi/pastetext.png b/sources/plugins/pastetext/icons/hidpi/pastetext.png new file mode 100644 index 00000000..f82900fa Binary files /dev/null and b/sources/plugins/pastetext/icons/hidpi/pastetext.png differ diff --git a/sources/plugins/pastetext/icons/pastetext-rtl.png b/sources/plugins/pastetext/icons/pastetext-rtl.png new file mode 100644 index 00000000..9393b347 Binary files /dev/null and b/sources/plugins/pastetext/icons/pastetext-rtl.png differ diff --git a/sources/plugins/pastetext/icons/pastetext.png b/sources/plugins/pastetext/icons/pastetext.png new file mode 100644 index 00000000..20816a4f Binary files /dev/null and b/sources/plugins/pastetext/icons/pastetext.png differ diff --git a/sources/plugins/pastetext/lang/af.js b/sources/plugins/pastetext/lang/af.js new file mode 100644 index 00000000..d917fa32 --- /dev/null +++ b/sources/plugins/pastetext/lang/af.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'af', { + button: 'Plak as eenvoudige teks', + title: 'Plak as eenvoudige teks' +} ); diff --git a/sources/plugins/pastetext/lang/ar.js b/sources/plugins/pastetext/lang/ar.js new file mode 100644 index 00000000..ff5627f4 --- /dev/null +++ b/sources/plugins/pastetext/lang/ar.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'ar', { + button: 'لصق كنص بسيط', + title: 'لصق كنص بسيط' +} ); diff --git a/sources/plugins/pastetext/lang/bg.js b/sources/plugins/pastetext/lang/bg.js new file mode 100644 index 00000000..5ff58b77 --- /dev/null +++ b/sources/plugins/pastetext/lang/bg.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'bg', { + button: 'Вмъкни като чист текст', + title: 'Вмъкни като чист текст' +} ); diff --git a/sources/plugins/pastetext/lang/bn.js b/sources/plugins/pastetext/lang/bn.js new file mode 100644 index 00000000..3d1098ef --- /dev/null +++ b/sources/plugins/pastetext/lang/bn.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'bn', { + button: 'সাদা টেক্সট হিসেবে পেস্ট কর', + title: 'সাদা টেক্সট হিসেবে পেস্ট কর' +} ); diff --git a/sources/plugins/pastetext/lang/bs.js b/sources/plugins/pastetext/lang/bs.js new file mode 100644 index 00000000..c466d309 --- /dev/null +++ b/sources/plugins/pastetext/lang/bs.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'bs', { + button: 'Zalijepi kao obièan tekst', + title: 'Zalijepi kao obièan tekst' +} ); diff --git a/sources/plugins/pastetext/lang/ca.js b/sources/plugins/pastetext/lang/ca.js new file mode 100644 index 00000000..2aa68fa8 --- /dev/null +++ b/sources/plugins/pastetext/lang/ca.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'ca', { + button: 'Enganxa com a text no formatat', + title: 'Enganxa com a text no formatat' +} ); diff --git a/sources/plugins/pastetext/lang/cs.js b/sources/plugins/pastetext/lang/cs.js new file mode 100644 index 00000000..99c40827 --- /dev/null +++ b/sources/plugins/pastetext/lang/cs.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'cs', { + button: 'Vložit jako čistý text', + title: 'Vložit jako čistý text' +} ); diff --git a/sources/plugins/pastetext/lang/cy.js b/sources/plugins/pastetext/lang/cy.js new file mode 100644 index 00000000..82047b61 --- /dev/null +++ b/sources/plugins/pastetext/lang/cy.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'cy', { + button: 'Gludo fel testun plaen', + title: 'Gludo fel Testun Plaen' +} ); diff --git a/sources/plugins/pastetext/lang/da.js b/sources/plugins/pastetext/lang/da.js new file mode 100644 index 00000000..11e2b974 --- /dev/null +++ b/sources/plugins/pastetext/lang/da.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'da', { + button: 'Indsæt som ikke-formateret tekst', + title: 'Indsæt som ikke-formateret tekst' +} ); diff --git a/sources/plugins/pastetext/lang/de.js b/sources/plugins/pastetext/lang/de.js new file mode 100644 index 00000000..40045c4b --- /dev/null +++ b/sources/plugins/pastetext/lang/de.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'de', { + button: 'Als Klartext einfügen', + title: 'Als Klartext einfügen' +} ); diff --git a/sources/plugins/pastetext/lang/el.js b/sources/plugins/pastetext/lang/el.js new file mode 100644 index 00000000..48bc65f6 --- /dev/null +++ b/sources/plugins/pastetext/lang/el.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'el', { + button: 'Επικόλληση ως απλό κείμενο', + title: 'Επικόλληση ως απλό κείμενο' +} ); diff --git a/sources/plugins/pastetext/lang/en-au.js b/sources/plugins/pastetext/lang/en-au.js new file mode 100644 index 00000000..8818ccea --- /dev/null +++ b/sources/plugins/pastetext/lang/en-au.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'en-au', { + button: 'Paste as plain text', + title: 'Paste as Plain Text' +} ); diff --git a/sources/plugins/pastetext/lang/en-ca.js b/sources/plugins/pastetext/lang/en-ca.js new file mode 100644 index 00000000..410af417 --- /dev/null +++ b/sources/plugins/pastetext/lang/en-ca.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'en-ca', { + button: 'Paste as plain text', + title: 'Paste as Plain Text' +} ); diff --git a/sources/plugins/pastetext/lang/en-gb.js b/sources/plugins/pastetext/lang/en-gb.js new file mode 100644 index 00000000..40767086 --- /dev/null +++ b/sources/plugins/pastetext/lang/en-gb.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'en-gb', { + button: 'Paste as plain text', + title: 'Paste as Plain Text' +} ); diff --git a/sources/plugins/pastetext/lang/en.js b/sources/plugins/pastetext/lang/en.js new file mode 100644 index 00000000..f79eefea --- /dev/null +++ b/sources/plugins/pastetext/lang/en.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'en', { + button: 'Paste as plain text', + title: 'Paste as Plain Text' +} ); diff --git a/sources/plugins/pastetext/lang/eo.js b/sources/plugins/pastetext/lang/eo.js new file mode 100644 index 00000000..9b51ba0e --- /dev/null +++ b/sources/plugins/pastetext/lang/eo.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'eo', { + button: 'Interglui kiel platan tekston', + title: 'Interglui kiel platan tekston' +} ); diff --git a/sources/plugins/pastetext/lang/es.js b/sources/plugins/pastetext/lang/es.js new file mode 100644 index 00000000..e8e189c6 --- /dev/null +++ b/sources/plugins/pastetext/lang/es.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'es', { + button: 'Pegar como Texto Plano', + title: 'Pegar como Texto Plano' +} ); diff --git a/sources/plugins/pastetext/lang/et.js b/sources/plugins/pastetext/lang/et.js new file mode 100644 index 00000000..f849310d --- /dev/null +++ b/sources/plugins/pastetext/lang/et.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'et', { + button: 'Asetamine tavalise tekstina', + title: 'Asetamine tavalise tekstina' +} ); diff --git a/sources/plugins/pastetext/lang/eu.js b/sources/plugins/pastetext/lang/eu.js new file mode 100644 index 00000000..6fee40ff --- /dev/null +++ b/sources/plugins/pastetext/lang/eu.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'eu', { + button: 'Itsatsi testu arrunta bezala', + title: 'Itsatsi testu arrunta bezala' +} ); diff --git a/sources/plugins/pastetext/lang/fa.js b/sources/plugins/pastetext/lang/fa.js new file mode 100644 index 00000000..366087ab --- /dev/null +++ b/sources/plugins/pastetext/lang/fa.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'fa', { + button: 'چسباندن به عنوان متن ساده', + title: 'چسباندن به عنوان متن ساده' +} ); diff --git a/sources/plugins/pastetext/lang/fi.js b/sources/plugins/pastetext/lang/fi.js new file mode 100644 index 00000000..7e9b6ce1 --- /dev/null +++ b/sources/plugins/pastetext/lang/fi.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'fi', { + button: 'Liitä tekstinä', + title: 'Liitä tekstinä' +} ); diff --git a/sources/plugins/pastetext/lang/fo.js b/sources/plugins/pastetext/lang/fo.js new file mode 100644 index 00000000..f40f3690 --- /dev/null +++ b/sources/plugins/pastetext/lang/fo.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'fo', { + button: 'Innrita som reinan tekst', + title: 'Innrita som reinan tekst' +} ); diff --git a/sources/plugins/pastetext/lang/fr-ca.js b/sources/plugins/pastetext/lang/fr-ca.js new file mode 100644 index 00000000..26fe8368 --- /dev/null +++ b/sources/plugins/pastetext/lang/fr-ca.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'fr-ca', { + button: 'Coller comme texte', + title: 'Coller comme texte' +} ); diff --git a/sources/plugins/pastetext/lang/fr.js b/sources/plugins/pastetext/lang/fr.js new file mode 100644 index 00000000..d7472a08 --- /dev/null +++ b/sources/plugins/pastetext/lang/fr.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'fr', { + button: 'Coller comme texte sans mise en forme', + title: 'Coller comme texte sans mise en forme' +} ); diff --git a/sources/plugins/pastetext/lang/gl.js b/sources/plugins/pastetext/lang/gl.js new file mode 100644 index 00000000..4440f7c6 --- /dev/null +++ b/sources/plugins/pastetext/lang/gl.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'gl', { + button: 'Pegar como texto simple', + title: 'Pegar como texto simple' +} ); diff --git a/sources/plugins/pastetext/lang/gu.js b/sources/plugins/pastetext/lang/gu.js new file mode 100644 index 00000000..b50fd31e --- /dev/null +++ b/sources/plugins/pastetext/lang/gu.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'gu', { + button: 'પેસ્ટ (ટેક્સ્ટ)', + title: 'પેસ્ટ (ટેક્સ્ટ)' +} ); diff --git a/sources/plugins/pastetext/lang/he.js b/sources/plugins/pastetext/lang/he.js new file mode 100644 index 00000000..c9f1996f --- /dev/null +++ b/sources/plugins/pastetext/lang/he.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'he', { + button: 'הדבקה כטקסט פשוט', + title: 'הדבקה כטקסט פשוט' +} ); diff --git a/sources/plugins/pastetext/lang/hi.js b/sources/plugins/pastetext/lang/hi.js new file mode 100644 index 00000000..bcada839 --- /dev/null +++ b/sources/plugins/pastetext/lang/hi.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'hi', { + button: 'पेस्ट (सादा टॅक्स्ट)', + title: 'पेस्ट (सादा टॅक्स्ट)' +} ); diff --git a/sources/plugins/pastetext/lang/hr.js b/sources/plugins/pastetext/lang/hr.js new file mode 100644 index 00000000..40d02a8f --- /dev/null +++ b/sources/plugins/pastetext/lang/hr.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'hr', { + button: 'Zalijepi kao čisti tekst', + title: 'Zalijepi kao čisti tekst' +} ); diff --git a/sources/plugins/pastetext/lang/hu.js b/sources/plugins/pastetext/lang/hu.js new file mode 100644 index 00000000..26293b4f --- /dev/null +++ b/sources/plugins/pastetext/lang/hu.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'hu', { + button: 'Beillesztés formázatlan szövegként', + title: 'Beillesztés formázatlan szövegként' +} ); diff --git a/sources/plugins/pastetext/lang/id.js b/sources/plugins/pastetext/lang/id.js new file mode 100644 index 00000000..6469321b --- /dev/null +++ b/sources/plugins/pastetext/lang/id.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'id', { + button: 'Tempel sebagai teks polos', + title: 'Tempel sebagai Teks Polos' +} ); diff --git a/sources/plugins/pastetext/lang/is.js b/sources/plugins/pastetext/lang/is.js new file mode 100644 index 00000000..8f4d4c19 --- /dev/null +++ b/sources/plugins/pastetext/lang/is.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'is', { + button: 'Líma sem ósniðinn texta', + title: 'Líma sem ósniðinn texta' +} ); diff --git a/sources/plugins/pastetext/lang/it.js b/sources/plugins/pastetext/lang/it.js new file mode 100644 index 00000000..f266c9eb --- /dev/null +++ b/sources/plugins/pastetext/lang/it.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'it', { + button: 'Incolla come testo semplice', + title: 'Incolla come testo semplice' +} ); diff --git a/sources/plugins/pastetext/lang/ja.js b/sources/plugins/pastetext/lang/ja.js new file mode 100644 index 00000000..0f470c4f --- /dev/null +++ b/sources/plugins/pastetext/lang/ja.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'ja', { + button: 'プレーンテキストとして貼り付け', + title: 'プレーンテキストとして貼り付け' +} ); diff --git a/sources/plugins/pastetext/lang/ka.js b/sources/plugins/pastetext/lang/ka.js new file mode 100644 index 00000000..5177458e --- /dev/null +++ b/sources/plugins/pastetext/lang/ka.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'ka', { + button: 'მხოლოდ ტექსტის ჩასმა', + title: 'მხოლოდ ტექსტის ჩასმა' +} ); diff --git a/sources/plugins/pastetext/lang/km.js b/sources/plugins/pastetext/lang/km.js new file mode 100644 index 00000000..529fd92a --- /dev/null +++ b/sources/plugins/pastetext/lang/km.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'km', { + button: 'បិទ​ភ្ជាប់​ជា​អត្ថបទ​ធម្មតា', + title: 'បិទ​ភ្ជាប់​ជា​អត្ថបទ​ធម្មតា' +} ); diff --git a/sources/plugins/pastetext/lang/ko.js b/sources/plugins/pastetext/lang/ko.js new file mode 100644 index 00000000..ba79a8a7 --- /dev/null +++ b/sources/plugins/pastetext/lang/ko.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'ko', { + button: '텍스트로 붙여넣기', + title: '텍스트로 붙여넣기' +} ); diff --git a/sources/plugins/pastetext/lang/ku.js b/sources/plugins/pastetext/lang/ku.js new file mode 100644 index 00000000..98f464ea --- /dev/null +++ b/sources/plugins/pastetext/lang/ku.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'ku', { + button: 'لکاندنی وەك دەقی ڕوون', + title: 'لکاندنی وەك دەقی ڕوون' +} ); diff --git a/sources/plugins/pastetext/lang/lt.js b/sources/plugins/pastetext/lang/lt.js new file mode 100644 index 00000000..71b8b388 --- /dev/null +++ b/sources/plugins/pastetext/lang/lt.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'lt', { + button: 'Įdėti kaip gryną tekstą', + title: 'Įdėti kaip gryną tekstą' +} ); diff --git a/sources/plugins/pastetext/lang/lv.js b/sources/plugins/pastetext/lang/lv.js new file mode 100644 index 00000000..392d71a9 --- /dev/null +++ b/sources/plugins/pastetext/lang/lv.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'lv', { + button: 'Ievietot kā vienkāršu tekstu', + title: 'Ievietot kā vienkāršu tekstu' +} ); diff --git a/sources/plugins/pastetext/lang/mk.js b/sources/plugins/pastetext/lang/mk.js new file mode 100644 index 00000000..6c3b171c --- /dev/null +++ b/sources/plugins/pastetext/lang/mk.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'mk', { + button: 'Paste as plain text', // MISSING + title: 'Paste as Plain Text' // MISSING +} ); diff --git a/sources/plugins/pastetext/lang/mn.js b/sources/plugins/pastetext/lang/mn.js new file mode 100644 index 00000000..d8ee0ef7 --- /dev/null +++ b/sources/plugins/pastetext/lang/mn.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'mn', { + button: 'Энгийн бичвэрээр буулгах', + title: 'Энгийн бичвэрээр буулгах' +} ); diff --git a/sources/plugins/pastetext/lang/ms.js b/sources/plugins/pastetext/lang/ms.js new file mode 100644 index 00000000..02310e5d --- /dev/null +++ b/sources/plugins/pastetext/lang/ms.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'ms', { + button: 'Tampal sebagai text biasa', + title: 'Tampal sebagai text biasa' +} ); diff --git a/sources/plugins/pastetext/lang/nb.js b/sources/plugins/pastetext/lang/nb.js new file mode 100644 index 00000000..0bea7da8 --- /dev/null +++ b/sources/plugins/pastetext/lang/nb.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'nb', { + button: 'Lim inn som ren tekst', + title: 'Lim inn som ren tekst' +} ); diff --git a/sources/plugins/pastetext/lang/nl.js b/sources/plugins/pastetext/lang/nl.js new file mode 100644 index 00000000..13891bac --- /dev/null +++ b/sources/plugins/pastetext/lang/nl.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'nl', { + button: 'Plakken als platte tekst', + title: 'Plakken als platte tekst' +} ); diff --git a/sources/plugins/pastetext/lang/no.js b/sources/plugins/pastetext/lang/no.js new file mode 100644 index 00000000..80423925 --- /dev/null +++ b/sources/plugins/pastetext/lang/no.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'no', { + button: 'Lim inn som ren tekst', + title: 'Lim inn som ren tekst' +} ); diff --git a/sources/plugins/pastetext/lang/pl.js b/sources/plugins/pastetext/lang/pl.js new file mode 100644 index 00000000..68ada7cc --- /dev/null +++ b/sources/plugins/pastetext/lang/pl.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'pl', { + button: 'Wklej jako czysty tekst', + title: 'Wklej jako czysty tekst' +} ); diff --git a/sources/plugins/pastetext/lang/pt-br.js b/sources/plugins/pastetext/lang/pt-br.js new file mode 100644 index 00000000..27234104 --- /dev/null +++ b/sources/plugins/pastetext/lang/pt-br.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'pt-br', { + button: 'Colar como Texto sem Formatação', + title: 'Colar como Texto sem Formatação' +} ); diff --git a/sources/plugins/pastetext/lang/pt.js b/sources/plugins/pastetext/lang/pt.js new file mode 100644 index 00000000..edcbd524 --- /dev/null +++ b/sources/plugins/pastetext/lang/pt.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'pt', { + button: 'Colar como Texto Simples', + title: 'Colar como Texto Simples' +} ); diff --git a/sources/plugins/pastetext/lang/ro.js b/sources/plugins/pastetext/lang/ro.js new file mode 100644 index 00000000..818838a6 --- /dev/null +++ b/sources/plugins/pastetext/lang/ro.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'ro', { + button: 'Adaugă ca text simplu (Plain Text)', + title: 'Adaugă ca text simplu (Plain Text)' +} ); diff --git a/sources/plugins/pastetext/lang/ru.js b/sources/plugins/pastetext/lang/ru.js new file mode 100644 index 00000000..ea9061f0 --- /dev/null +++ b/sources/plugins/pastetext/lang/ru.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'ru', { + button: 'Вставить только текст', + title: 'Вставить только текст' +} ); diff --git a/sources/plugins/pastetext/lang/si.js b/sources/plugins/pastetext/lang/si.js new file mode 100644 index 00000000..4a338f9a --- /dev/null +++ b/sources/plugins/pastetext/lang/si.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'si', { + button: 'සාමාන්‍ය අක්ෂර ලෙස අලවන්න', + title: 'සාමාන්‍ය අක්ෂර ලෙස අලවන්න' +} ); diff --git a/sources/plugins/pastetext/lang/sk.js b/sources/plugins/pastetext/lang/sk.js new file mode 100644 index 00000000..38912c79 --- /dev/null +++ b/sources/plugins/pastetext/lang/sk.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'sk', { + button: 'Vložiť ako čistý text', + title: 'Vložiť ako čistý text' +} ); diff --git a/sources/plugins/pastetext/lang/sl.js b/sources/plugins/pastetext/lang/sl.js new file mode 100644 index 00000000..0673e4ff --- /dev/null +++ b/sources/plugins/pastetext/lang/sl.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'sl', { + button: 'Prilepi kot golo besedilo', + title: 'Prilepi kot golo besedilo' +} ); diff --git a/sources/plugins/pastetext/lang/sq.js b/sources/plugins/pastetext/lang/sq.js new file mode 100644 index 00000000..93234684 --- /dev/null +++ b/sources/plugins/pastetext/lang/sq.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'sq', { + button: 'Hidhe si tekst të thjeshtë', + title: 'Hidhe si Tekst të Thjeshtë' +} ); diff --git a/sources/plugins/pastetext/lang/sr-latn.js b/sources/plugins/pastetext/lang/sr-latn.js new file mode 100644 index 00000000..7fb5f5e7 --- /dev/null +++ b/sources/plugins/pastetext/lang/sr-latn.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'sr-latn', { + button: 'Zalepi kao čist tekst', + title: 'Zalepi kao čist tekst' +} ); diff --git a/sources/plugins/pastetext/lang/sr.js b/sources/plugins/pastetext/lang/sr.js new file mode 100644 index 00000000..bc22aca3 --- /dev/null +++ b/sources/plugins/pastetext/lang/sr.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'sr', { + button: 'Залепи као чист текст', + title: 'Залепи као чист текст' +} ); diff --git a/sources/plugins/pastetext/lang/sv.js b/sources/plugins/pastetext/lang/sv.js new file mode 100644 index 00000000..28a0233c --- /dev/null +++ b/sources/plugins/pastetext/lang/sv.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'sv', { + button: 'Klistra in som vanlig text', + title: 'Klistra in som vanlig text' +} ); diff --git a/sources/plugins/pastetext/lang/th.js b/sources/plugins/pastetext/lang/th.js new file mode 100644 index 00000000..90d3389e --- /dev/null +++ b/sources/plugins/pastetext/lang/th.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'th', { + button: 'วางแบบตัวอักษรธรรมดา', + title: 'วางแบบตัวอักษรธรรมดา' +} ); diff --git a/sources/plugins/pastetext/lang/tr.js b/sources/plugins/pastetext/lang/tr.js new file mode 100644 index 00000000..ee134d81 --- /dev/null +++ b/sources/plugins/pastetext/lang/tr.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'tr', { + button: 'Düz Metin Olarak Yapıştır', + title: 'Düz Metin Olarak Yapıştır' +} ); diff --git a/sources/plugins/pastetext/lang/tt.js b/sources/plugins/pastetext/lang/tt.js new file mode 100644 index 00000000..cbd60c42 --- /dev/null +++ b/sources/plugins/pastetext/lang/tt.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'tt', { + button: 'Форматлаусыз текст өстәү', + title: 'Форматлаусыз текст өстәү' +} ); diff --git a/sources/plugins/pastetext/lang/ug.js b/sources/plugins/pastetext/lang/ug.js new file mode 100644 index 00000000..e774edd4 --- /dev/null +++ b/sources/plugins/pastetext/lang/ug.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'ug', { + button: 'پىچىمى يوق تېكىست سۈپىتىدە چاپلا', + title: 'پىچىمى يوق تېكىست سۈپىتىدە چاپلا' +} ); diff --git a/sources/plugins/pastetext/lang/uk.js b/sources/plugins/pastetext/lang/uk.js new file mode 100644 index 00000000..59653aac --- /dev/null +++ b/sources/plugins/pastetext/lang/uk.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'uk', { + button: 'Вставити тільки текст', + title: 'Вставити тільки текст' +} ); diff --git a/sources/plugins/pastetext/lang/vi.js b/sources/plugins/pastetext/lang/vi.js new file mode 100644 index 00000000..cd94e29e --- /dev/null +++ b/sources/plugins/pastetext/lang/vi.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'vi', { + button: 'Dán theo định dạng văn bản thuần', + title: 'Dán theo định dạng văn bản thuần' +} ); diff --git a/sources/plugins/pastetext/lang/zh-cn.js b/sources/plugins/pastetext/lang/zh-cn.js new file mode 100644 index 00000000..42f97ed7 --- /dev/null +++ b/sources/plugins/pastetext/lang/zh-cn.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'zh-cn', { + button: '粘贴为无格式文本', + title: '粘贴为无格式文本' +} ); diff --git a/sources/plugins/pastetext/lang/zh.js b/sources/plugins/pastetext/lang/zh.js new file mode 100644 index 00000000..8c524d6b --- /dev/null +++ b/sources/plugins/pastetext/lang/zh.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'pastetext', 'zh', { + button: '貼成純文字', + title: '貼成純文字' +} ); diff --git a/sources/plugins/pastetext/plugin.js b/sources/plugins/pastetext/plugin.js new file mode 100644 index 00000000..0c410e31 --- /dev/null +++ b/sources/plugins/pastetext/plugin.js @@ -0,0 +1,83 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview Paste as plain text plugin. + */ + +( function() { + // The pastetext command definition. + var pasteTextCmd = { + // Snapshots are done manually by editable.insertXXX methods. + canUndo: false, + async: true, + + exec: function( editor ) { + editor.getClipboardData( { title: editor.lang.pastetext.title }, function( data ) { + // Do not use editor#paste, because it would start from beforePaste event. + data && editor.fire( 'paste', { + type: 'text', + dataValue: data.dataValue, + method: 'paste', + dataTransfer: CKEDITOR.plugins.clipboard.initPasteDataTransfer() + } ); + + editor.fire( 'afterCommandExec', { + name: 'pastetext', + command: pasteTextCmd, + returnValue: !!data + } ); + } ); + } + }; + + // Register the plugin. + CKEDITOR.plugins.add( 'pastetext', { + requires: 'clipboard', + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'pastetext,pastetext-rtl', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + var commandName = 'pastetext'; + + editor.addCommand( commandName, pasteTextCmd ); + + editor.ui.addButton && editor.ui.addButton( 'PasteText', { + label: editor.lang.pastetext.button, + command: commandName, + toolbar: 'clipboard,40' + } ); + + if ( editor.config.forcePasteAsPlainText ) { + editor.on( 'beforePaste', function( evt ) { + // Do NOT overwrite if HTML format is explicitly requested. + // This allows pastefromword dominates over pastetext. + if ( evt.data.type != 'html' ) + evt.data.type = 'text'; + } ); + } + + editor.on( 'pasteState', function( evt ) { + editor.getCommand( commandName ).setState( evt.data ); + } ); + } + } ); +} )(); + + +/** + * Whether to force all pasting operations to insert on plain text into the + * editor, loosing any formatting information possibly available in the source + * text. + * + * **Note:** paste from word (dialog) is not affected by this configuration. + * + * config.forcePasteAsPlainText = true; + * + * @cfg {Boolean} [forcePasteAsPlainText=false] + * @member CKEDITOR.config + */ diff --git a/sources/plugins/popup/plugin.js b/sources/plugins/popup/plugin.js new file mode 100644 index 00000000..8cfe1848 --- /dev/null +++ b/sources/plugins/popup/plugin.js @@ -0,0 +1,65 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.add( 'popup' ); + +CKEDITOR.tools.extend( CKEDITOR.editor.prototype, { + /** + * Opens Browser in a popup. The `width` and `height` parameters accept + * numbers (pixels) or percent (of screen size) values. + * + * @member CKEDITOR.editor + * @param {String} url The url of the external file browser. + * @param {Number/String} [width='80%'] Popup window width. + * @param {Number/String} [height='70%'] Popup window height. + * @param {String} [options='location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes'] + * Popup window features. + */ + popup: function( url, width, height, options ) { + width = width || '80%'; + height = height || '70%'; + + if ( typeof width == 'string' && width.length > 1 && width.substr( width.length - 1, 1 ) == '%' ) + width = parseInt( window.screen.width * parseInt( width, 10 ) / 100, 10 ); + + if ( typeof height == 'string' && height.length > 1 && height.substr( height.length - 1, 1 ) == '%' ) + height = parseInt( window.screen.height * parseInt( height, 10 ) / 100, 10 ); + + if ( width < 640 ) + width = 640; + + if ( height < 420 ) + height = 420; + + var top = parseInt( ( window.screen.height - height ) / 2, 10 ), + left = parseInt( ( window.screen.width - width ) / 2, 10 ); + + options = ( options || 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes' ) + ',width=' + width + + ',height=' + height + + ',top=' + top + + ',left=' + left; + + var popupWindow = window.open( '', null, options, true ); + + // Blocked by a popup blocker. + if ( !popupWindow ) + return false; + + try { + // Chrome is problematic with moveTo/resizeTo, but it's not really needed here (#8855). + var ua = navigator.userAgent.toLowerCase(); + if ( ua.indexOf( ' chrome/' ) == -1 ) { + popupWindow.moveTo( left, top ); + popupWindow.resizeTo( width, height ); + } + popupWindow.focus(); + popupWindow.location.href = url; + } catch ( e ) { + popupWindow = window.open( url, null, options, true ); + } + + return true; + } +} ); diff --git a/sources/plugins/preview/icons/hidpi/preview-rtl.png b/sources/plugins/preview/icons/hidpi/preview-rtl.png new file mode 100644 index 00000000..cd64e19a Binary files /dev/null and b/sources/plugins/preview/icons/hidpi/preview-rtl.png differ diff --git a/sources/plugins/preview/icons/hidpi/preview.png b/sources/plugins/preview/icons/hidpi/preview.png new file mode 100644 index 00000000..402db20e Binary files /dev/null and b/sources/plugins/preview/icons/hidpi/preview.png differ diff --git a/sources/plugins/preview/icons/preview-rtl.png b/sources/plugins/preview/icons/preview-rtl.png new file mode 100644 index 00000000..1c9d9787 Binary files /dev/null and b/sources/plugins/preview/icons/preview-rtl.png differ diff --git a/sources/plugins/preview/icons/preview.png b/sources/plugins/preview/icons/preview.png new file mode 100644 index 00000000..162b44b8 Binary files /dev/null and b/sources/plugins/preview/icons/preview.png differ diff --git a/sources/plugins/preview/lang/af.js b/sources/plugins/preview/lang/af.js new file mode 100644 index 00000000..c3129122 --- /dev/null +++ b/sources/plugins/preview/lang/af.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'af', { + preview: 'Voorbeeld' +} ); diff --git a/sources/plugins/preview/lang/ar.js b/sources/plugins/preview/lang/ar.js new file mode 100644 index 00000000..ff24304b --- /dev/null +++ b/sources/plugins/preview/lang/ar.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'ar', { + preview: 'معاينة الصفحة' +} ); diff --git a/sources/plugins/preview/lang/bg.js b/sources/plugins/preview/lang/bg.js new file mode 100644 index 00000000..d74194d9 --- /dev/null +++ b/sources/plugins/preview/lang/bg.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'bg', { + preview: 'Преглед' +} ); diff --git a/sources/plugins/preview/lang/bn.js b/sources/plugins/preview/lang/bn.js new file mode 100644 index 00000000..6b6a7a38 --- /dev/null +++ b/sources/plugins/preview/lang/bn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'bn', { + preview: 'প্রিভিউ' +} ); diff --git a/sources/plugins/preview/lang/bs.js b/sources/plugins/preview/lang/bs.js new file mode 100644 index 00000000..40f674df --- /dev/null +++ b/sources/plugins/preview/lang/bs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'bs', { + preview: 'Prikaži' +} ); diff --git a/sources/plugins/preview/lang/ca.js b/sources/plugins/preview/lang/ca.js new file mode 100644 index 00000000..fe205416 --- /dev/null +++ b/sources/plugins/preview/lang/ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'ca', { + preview: 'Visualització prèvia' +} ); diff --git a/sources/plugins/preview/lang/cs.js b/sources/plugins/preview/lang/cs.js new file mode 100644 index 00000000..6552515a --- /dev/null +++ b/sources/plugins/preview/lang/cs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'cs', { + preview: 'Náhled' +} ); diff --git a/sources/plugins/preview/lang/cy.js b/sources/plugins/preview/lang/cy.js new file mode 100644 index 00000000..47db9de0 --- /dev/null +++ b/sources/plugins/preview/lang/cy.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'cy', { + preview: 'Rhagolwg' +} ); diff --git a/sources/plugins/preview/lang/da.js b/sources/plugins/preview/lang/da.js new file mode 100644 index 00000000..a88b1af3 --- /dev/null +++ b/sources/plugins/preview/lang/da.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'da', { + preview: 'Vis eksempel' +} ); diff --git a/sources/plugins/preview/lang/de.js b/sources/plugins/preview/lang/de.js new file mode 100644 index 00000000..be6e986c --- /dev/null +++ b/sources/plugins/preview/lang/de.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'de', { + preview: 'Vorschau' +} ); diff --git a/sources/plugins/preview/lang/el.js b/sources/plugins/preview/lang/el.js new file mode 100644 index 00000000..51dfff2f --- /dev/null +++ b/sources/plugins/preview/lang/el.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'el', { + preview: 'Προεπισκόπιση' +} ); diff --git a/sources/plugins/preview/lang/en-au.js b/sources/plugins/preview/lang/en-au.js new file mode 100644 index 00000000..ebaa47b2 --- /dev/null +++ b/sources/plugins/preview/lang/en-au.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'en-au', { + preview: 'Preview' +} ); diff --git a/sources/plugins/preview/lang/en-ca.js b/sources/plugins/preview/lang/en-ca.js new file mode 100644 index 00000000..a6a520db --- /dev/null +++ b/sources/plugins/preview/lang/en-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'en-ca', { + preview: 'Preview' +} ); diff --git a/sources/plugins/preview/lang/en-gb.js b/sources/plugins/preview/lang/en-gb.js new file mode 100644 index 00000000..21c416d4 --- /dev/null +++ b/sources/plugins/preview/lang/en-gb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'en-gb', { + preview: 'Preview' +} ); diff --git a/sources/plugins/preview/lang/en.js b/sources/plugins/preview/lang/en.js new file mode 100644 index 00000000..093335a9 --- /dev/null +++ b/sources/plugins/preview/lang/en.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'en', { + preview: 'Preview' +} ); diff --git a/sources/plugins/preview/lang/eo.js b/sources/plugins/preview/lang/eo.js new file mode 100644 index 00000000..8c29fb80 --- /dev/null +++ b/sources/plugins/preview/lang/eo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'eo', { + preview: 'Vidigi Aspekton' +} ); diff --git a/sources/plugins/preview/lang/es.js b/sources/plugins/preview/lang/es.js new file mode 100644 index 00000000..5562fb8f --- /dev/null +++ b/sources/plugins/preview/lang/es.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'es', { + preview: 'Vista Previa' +} ); diff --git a/sources/plugins/preview/lang/et.js b/sources/plugins/preview/lang/et.js new file mode 100644 index 00000000..88685f93 --- /dev/null +++ b/sources/plugins/preview/lang/et.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'et', { + preview: 'Eelvaade' +} ); diff --git a/sources/plugins/preview/lang/eu.js b/sources/plugins/preview/lang/eu.js new file mode 100644 index 00000000..683e157a --- /dev/null +++ b/sources/plugins/preview/lang/eu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'eu', { + preview: 'Aurrebista' +} ); diff --git a/sources/plugins/preview/lang/fa.js b/sources/plugins/preview/lang/fa.js new file mode 100644 index 00000000..f3e3ce3a --- /dev/null +++ b/sources/plugins/preview/lang/fa.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'fa', { + preview: 'پیشنمایش' +} ); diff --git a/sources/plugins/preview/lang/fi.js b/sources/plugins/preview/lang/fi.js new file mode 100644 index 00000000..f8322356 --- /dev/null +++ b/sources/plugins/preview/lang/fi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'fi', { + preview: 'Esikatsele' +} ); diff --git a/sources/plugins/preview/lang/fo.js b/sources/plugins/preview/lang/fo.js new file mode 100644 index 00000000..0a364971 --- /dev/null +++ b/sources/plugins/preview/lang/fo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'fo', { + preview: 'Frumsýning' +} ); diff --git a/sources/plugins/preview/lang/fr-ca.js b/sources/plugins/preview/lang/fr-ca.js new file mode 100644 index 00000000..6e67d06a --- /dev/null +++ b/sources/plugins/preview/lang/fr-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'fr-ca', { + preview: 'Prévisualiser' +} ); diff --git a/sources/plugins/preview/lang/fr.js b/sources/plugins/preview/lang/fr.js new file mode 100644 index 00000000..fc164303 --- /dev/null +++ b/sources/plugins/preview/lang/fr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'fr', { + preview: 'Aperçu' +} ); diff --git a/sources/plugins/preview/lang/gl.js b/sources/plugins/preview/lang/gl.js new file mode 100644 index 00000000..6a446582 --- /dev/null +++ b/sources/plugins/preview/lang/gl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'gl', { + preview: 'Vista previa' +} ); diff --git a/sources/plugins/preview/lang/gu.js b/sources/plugins/preview/lang/gu.js new file mode 100644 index 00000000..c9f8906f --- /dev/null +++ b/sources/plugins/preview/lang/gu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'gu', { + preview: 'પૂર્વદર્શન' +} ); diff --git a/sources/plugins/preview/lang/he.js b/sources/plugins/preview/lang/he.js new file mode 100644 index 00000000..792a1170 --- /dev/null +++ b/sources/plugins/preview/lang/he.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'he', { + preview: 'תצוגה מקדימה' +} ); diff --git a/sources/plugins/preview/lang/hi.js b/sources/plugins/preview/lang/hi.js new file mode 100644 index 00000000..92c7e40d --- /dev/null +++ b/sources/plugins/preview/lang/hi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'hi', { + preview: 'प्रीव्यू' +} ); diff --git a/sources/plugins/preview/lang/hr.js b/sources/plugins/preview/lang/hr.js new file mode 100644 index 00000000..a489a418 --- /dev/null +++ b/sources/plugins/preview/lang/hr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'hr', { + preview: 'Pregledaj' +} ); diff --git a/sources/plugins/preview/lang/hu.js b/sources/plugins/preview/lang/hu.js new file mode 100644 index 00000000..8ae9d9fd --- /dev/null +++ b/sources/plugins/preview/lang/hu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'hu', { + preview: 'Előnézet' +} ); diff --git a/sources/plugins/preview/lang/id.js b/sources/plugins/preview/lang/id.js new file mode 100644 index 00000000..88cf3620 --- /dev/null +++ b/sources/plugins/preview/lang/id.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'id', { + preview: 'Pratinjau' +} ); diff --git a/sources/plugins/preview/lang/is.js b/sources/plugins/preview/lang/is.js new file mode 100644 index 00000000..7f407390 --- /dev/null +++ b/sources/plugins/preview/lang/is.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'is', { + preview: 'Forskoða' +} ); diff --git a/sources/plugins/preview/lang/it.js b/sources/plugins/preview/lang/it.js new file mode 100644 index 00000000..f2767ba2 --- /dev/null +++ b/sources/plugins/preview/lang/it.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'it', { + preview: 'Anteprima' +} ); diff --git a/sources/plugins/preview/lang/ja.js b/sources/plugins/preview/lang/ja.js new file mode 100644 index 00000000..80eea689 --- /dev/null +++ b/sources/plugins/preview/lang/ja.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'ja', { + preview: 'プレビュー' +} ); diff --git a/sources/plugins/preview/lang/ka.js b/sources/plugins/preview/lang/ka.js new file mode 100644 index 00000000..d597a2c3 --- /dev/null +++ b/sources/plugins/preview/lang/ka.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'ka', { + preview: 'გადახედვა' +} ); diff --git a/sources/plugins/preview/lang/km.js b/sources/plugins/preview/lang/km.js new file mode 100644 index 00000000..d19f98e6 --- /dev/null +++ b/sources/plugins/preview/lang/km.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'km', { + preview: 'មើល​ជា​មុន' +} ); diff --git a/sources/plugins/preview/lang/ko.js b/sources/plugins/preview/lang/ko.js new file mode 100644 index 00000000..252a77fe --- /dev/null +++ b/sources/plugins/preview/lang/ko.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'ko', { + preview: '미리보기' +} ); diff --git a/sources/plugins/preview/lang/ku.js b/sources/plugins/preview/lang/ku.js new file mode 100644 index 00000000..cf83583c --- /dev/null +++ b/sources/plugins/preview/lang/ku.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'ku', { + preview: 'پێشبینین' +} ); diff --git a/sources/plugins/preview/lang/lt.js b/sources/plugins/preview/lang/lt.js new file mode 100644 index 00000000..3436bab4 --- /dev/null +++ b/sources/plugins/preview/lang/lt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'lt', { + preview: 'Peržiūra' +} ); diff --git a/sources/plugins/preview/lang/lv.js b/sources/plugins/preview/lang/lv.js new file mode 100644 index 00000000..3cdb26b0 --- /dev/null +++ b/sources/plugins/preview/lang/lv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'lv', { + preview: 'Priekšskatīt' +} ); diff --git a/sources/plugins/preview/lang/mk.js b/sources/plugins/preview/lang/mk.js new file mode 100644 index 00000000..e5478a84 --- /dev/null +++ b/sources/plugins/preview/lang/mk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'mk', { + preview: 'Preview' // MISSING +} ); diff --git a/sources/plugins/preview/lang/mn.js b/sources/plugins/preview/lang/mn.js new file mode 100644 index 00000000..2e578f1e --- /dev/null +++ b/sources/plugins/preview/lang/mn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'mn', { + preview: 'Уридчлан харах' +} ); diff --git a/sources/plugins/preview/lang/ms.js b/sources/plugins/preview/lang/ms.js new file mode 100644 index 00000000..64db268a --- /dev/null +++ b/sources/plugins/preview/lang/ms.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'ms', { + preview: 'Prebiu' +} ); diff --git a/sources/plugins/preview/lang/nb.js b/sources/plugins/preview/lang/nb.js new file mode 100644 index 00000000..ea92da7a --- /dev/null +++ b/sources/plugins/preview/lang/nb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'nb', { + preview: 'Forhåndsvis' +} ); diff --git a/sources/plugins/preview/lang/nl.js b/sources/plugins/preview/lang/nl.js new file mode 100644 index 00000000..5db2f755 --- /dev/null +++ b/sources/plugins/preview/lang/nl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'nl', { + preview: 'Voorbeeld' +} ); diff --git a/sources/plugins/preview/lang/no.js b/sources/plugins/preview/lang/no.js new file mode 100644 index 00000000..7c6c4ce2 --- /dev/null +++ b/sources/plugins/preview/lang/no.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'no', { + preview: 'Forhåndsvis' +} ); diff --git a/sources/plugins/preview/lang/pl.js b/sources/plugins/preview/lang/pl.js new file mode 100644 index 00000000..1534907a --- /dev/null +++ b/sources/plugins/preview/lang/pl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'pl', { + preview: 'Podgląd' +} ); diff --git a/sources/plugins/preview/lang/pt-br.js b/sources/plugins/preview/lang/pt-br.js new file mode 100644 index 00000000..0e24087d --- /dev/null +++ b/sources/plugins/preview/lang/pt-br.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'pt-br', { + preview: 'Visualizar' +} ); diff --git a/sources/plugins/preview/lang/pt.js b/sources/plugins/preview/lang/pt.js new file mode 100644 index 00000000..709fe77f --- /dev/null +++ b/sources/plugins/preview/lang/pt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'pt', { + preview: 'Pré-visualizar' +} ); diff --git a/sources/plugins/preview/lang/ro.js b/sources/plugins/preview/lang/ro.js new file mode 100644 index 00000000..5e23b41e --- /dev/null +++ b/sources/plugins/preview/lang/ro.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'ro', { + preview: 'Previzualizare' +} ); diff --git a/sources/plugins/preview/lang/ru.js b/sources/plugins/preview/lang/ru.js new file mode 100644 index 00000000..9e1556ef --- /dev/null +++ b/sources/plugins/preview/lang/ru.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'ru', { + preview: 'Предварительный просмотр' +} ); diff --git a/sources/plugins/preview/lang/si.js b/sources/plugins/preview/lang/si.js new file mode 100644 index 00000000..c03c538e --- /dev/null +++ b/sources/plugins/preview/lang/si.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'si', { + preview: 'නැවත ' +} ); diff --git a/sources/plugins/preview/lang/sk.js b/sources/plugins/preview/lang/sk.js new file mode 100644 index 00000000..380b2364 --- /dev/null +++ b/sources/plugins/preview/lang/sk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'sk', { + preview: 'Náhľad' +} ); diff --git a/sources/plugins/preview/lang/sl.js b/sources/plugins/preview/lang/sl.js new file mode 100644 index 00000000..aeec46db --- /dev/null +++ b/sources/plugins/preview/lang/sl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'sl', { + preview: 'Predogled' +} ); diff --git a/sources/plugins/preview/lang/sq.js b/sources/plugins/preview/lang/sq.js new file mode 100644 index 00000000..8e001b8a --- /dev/null +++ b/sources/plugins/preview/lang/sq.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'sq', { + preview: 'Parashiko' +} ); diff --git a/sources/plugins/preview/lang/sr-latn.js b/sources/plugins/preview/lang/sr-latn.js new file mode 100644 index 00000000..7338823b --- /dev/null +++ b/sources/plugins/preview/lang/sr-latn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'sr-latn', { + preview: 'Izgled stranice' +} ); diff --git a/sources/plugins/preview/lang/sr.js b/sources/plugins/preview/lang/sr.js new file mode 100644 index 00000000..273d4193 --- /dev/null +++ b/sources/plugins/preview/lang/sr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'sr', { + preview: 'Изглед странице' +} ); diff --git a/sources/plugins/preview/lang/sv.js b/sources/plugins/preview/lang/sv.js new file mode 100644 index 00000000..d1b34367 --- /dev/null +++ b/sources/plugins/preview/lang/sv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'sv', { + preview: 'Förhandsgranska' +} ); diff --git a/sources/plugins/preview/lang/th.js b/sources/plugins/preview/lang/th.js new file mode 100644 index 00000000..25b5b49e --- /dev/null +++ b/sources/plugins/preview/lang/th.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'th', { + preview: 'ดูหน้าเอกสารตัวอย่าง' +} ); diff --git a/sources/plugins/preview/lang/tr.js b/sources/plugins/preview/lang/tr.js new file mode 100644 index 00000000..5f034bb4 --- /dev/null +++ b/sources/plugins/preview/lang/tr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'tr', { + preview: 'Ön İzleme' +} ); diff --git a/sources/plugins/preview/lang/tt.js b/sources/plugins/preview/lang/tt.js new file mode 100644 index 00000000..9511dbaf --- /dev/null +++ b/sources/plugins/preview/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'tt', { + preview: 'Карап алу' +} ); diff --git a/sources/plugins/preview/lang/ug.js b/sources/plugins/preview/lang/ug.js new file mode 100644 index 00000000..0398cd94 --- /dev/null +++ b/sources/plugins/preview/lang/ug.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'ug', { + preview: 'ئالدىن كۆزەت' +} ); diff --git a/sources/plugins/preview/lang/uk.js b/sources/plugins/preview/lang/uk.js new file mode 100644 index 00000000..20b295dd --- /dev/null +++ b/sources/plugins/preview/lang/uk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'uk', { + preview: 'Попередній перегляд' +} ); diff --git a/sources/plugins/preview/lang/vi.js b/sources/plugins/preview/lang/vi.js new file mode 100644 index 00000000..e7f3c799 --- /dev/null +++ b/sources/plugins/preview/lang/vi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'vi', { + preview: 'Xem trước' +} ); diff --git a/sources/plugins/preview/lang/zh-cn.js b/sources/plugins/preview/lang/zh-cn.js new file mode 100644 index 00000000..7a34a0d5 --- /dev/null +++ b/sources/plugins/preview/lang/zh-cn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'zh-cn', { + preview: '预览' +} ); diff --git a/sources/plugins/preview/lang/zh.js b/sources/plugins/preview/lang/zh.js new file mode 100644 index 00000000..21f3aceb --- /dev/null +++ b/sources/plugins/preview/lang/zh.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'preview', 'zh', { + preview: '預覽' +} ); diff --git a/sources/plugins/preview/plugin.js b/sources/plugins/preview/plugin.js new file mode 100644 index 00000000..5f814995 --- /dev/null +++ b/sources/plugins/preview/plugin.js @@ -0,0 +1,145 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview Preview plugin. + */ + +( function() { + var pluginPath; + + var previewCmd = { modes: { wysiwyg: 1, source: 1 }, + canUndo: false, + readOnly: 1, + exec: function( editor ) { + var sHTML, + config = editor.config, + baseTag = config.baseHref ? '' : '', + eventData; + + if ( config.fullPage ) + sHTML = editor.getData().replace( //, '$&' + baseTag ).replace( /[^>]*(?=<\/title>)/, '$& — ' + editor.lang.preview.preview ); + else { + var bodyHtml = '' + + '' + + baseTag + + '' + editor.lang.preview.preview + '' + + CKEDITOR.tools.buildStyleHtml( editor.config.contentsCss ) + + '' + bodyHtml + + editor.getData() + + ''; + } + + var iWidth = 640, + // 800 * 0.8, + iHeight = 420, + // 600 * 0.7, + iLeft = 80; // (800 - 0.8 * 800) /2 = 800 * 0.1. + try { + var screen = window.screen; + iWidth = Math.round( screen.width * 0.8 ); + iHeight = Math.round( screen.height * 0.7 ); + iLeft = Math.round( screen.width * 0.1 ); + } catch ( e ) {} + + // (#9907) Allow data manipulation before preview is displayed. + // Also don't open the preview window when event cancelled. + if ( editor.fire( 'contentPreview', eventData = { dataValue: sHTML } ) === false ) + return false; + + var sOpenUrl = '', + ieLocation; + + if ( CKEDITOR.env.ie ) { + window._cke_htmlToLoad = eventData.dataValue; + ieLocation = 'javascript:void( (function(){' + // jshint ignore:line + 'document.open();' + + // Support for custom document.domain. + // Strip comments and replace parent with window.opener in the function body. + ( '(' + CKEDITOR.tools.fixDomain + ')();' ).replace( /\/\/.*?\n/g, '' ).replace( /parent\./g, 'window.opener.' ) + + 'document.write( window.opener._cke_htmlToLoad );' + + 'document.close();' + + 'window.opener._cke_htmlToLoad = null;' + + '})() )'; + // For IE we should use window.location rather than setting url in window.open. (#11146) + sOpenUrl = ''; + } + + // With Firefox only, we need to open a special preview page, so + // anchors will work properly on it. (#9047) + if ( CKEDITOR.env.gecko ) { + window._cke_htmlToLoad = eventData.dataValue; + sOpenUrl = CKEDITOR.getUrl( pluginPath + 'preview.html' ); + } + + var oWindow = window.open( sOpenUrl, null, 'toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=' + + iWidth + ',height=' + iHeight + ',left=' + iLeft ); + + // For IE we want to assign whole js stored in ieLocation, but in case of + // popup blocker activation oWindow variable will be null. (#11597) + if ( CKEDITOR.env.ie && oWindow ) + oWindow.location = ieLocation; + + if ( !CKEDITOR.env.ie && !CKEDITOR.env.gecko ) { + var doc = oWindow.document; + doc.open(); + doc.write( eventData.dataValue ); + doc.close(); + } + + return true; + } + }; + + var pluginName = 'preview'; + + // Register a plugin named "preview". + CKEDITOR.plugins.add( pluginName, { + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'preview,preview-rtl', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + + // Preview is not used for the inline creator. + if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ) + return; + + pluginPath = this.path; + + editor.addCommand( pluginName, previewCmd ); + editor.ui.addButton && editor.ui.addButton( 'Preview', { + label: editor.lang.preview.preview, + command: pluginName, + toolbar: 'document,40' + } ); + } + } ); +} )(); + +/** + * Event fired when executing `preview` command, which allows additional data manipulation. + * With this event, the raw HTML content of the preview window to be displayed can be altered + * or modified. + * + * @event contentPreview + * @member CKEDITOR + * @param {CKEDITOR.editor} editor This editor instance. + * @param data + * @param {String} data.dataValue The data that will go to the preview. + */ diff --git a/sources/plugins/preview/preview.html b/sources/plugins/preview/preview.html new file mode 100644 index 00000000..8c028262 --- /dev/null +++ b/sources/plugins/preview/preview.html @@ -0,0 +1,13 @@ + diff --git a/sources/plugins/print/icons/hidpi/print.png b/sources/plugins/print/icons/hidpi/print.png new file mode 100644 index 00000000..4b72460d Binary files /dev/null and b/sources/plugins/print/icons/hidpi/print.png differ diff --git a/sources/plugins/print/icons/print.png b/sources/plugins/print/icons/print.png new file mode 100644 index 00000000..06f797dc Binary files /dev/null and b/sources/plugins/print/icons/print.png differ diff --git a/sources/plugins/print/lang/af.js b/sources/plugins/print/lang/af.js new file mode 100644 index 00000000..b6148b4a --- /dev/null +++ b/sources/plugins/print/lang/af.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'af', { + toolbar: 'Druk' +} ); diff --git a/sources/plugins/print/lang/ar.js b/sources/plugins/print/lang/ar.js new file mode 100644 index 00000000..20a813c8 --- /dev/null +++ b/sources/plugins/print/lang/ar.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'ar', { + toolbar: 'طباعة' +} ); diff --git a/sources/plugins/print/lang/bg.js b/sources/plugins/print/lang/bg.js new file mode 100644 index 00000000..c6d14a58 --- /dev/null +++ b/sources/plugins/print/lang/bg.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'bg', { + toolbar: 'Печат' +} ); diff --git a/sources/plugins/print/lang/bn.js b/sources/plugins/print/lang/bn.js new file mode 100644 index 00000000..7bb9a02e --- /dev/null +++ b/sources/plugins/print/lang/bn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'bn', { + toolbar: 'প্রিন্ট' +} ); diff --git a/sources/plugins/print/lang/bs.js b/sources/plugins/print/lang/bs.js new file mode 100644 index 00000000..be3860dc --- /dev/null +++ b/sources/plugins/print/lang/bs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'bs', { + toolbar: 'Štampaj' +} ); diff --git a/sources/plugins/print/lang/ca.js b/sources/plugins/print/lang/ca.js new file mode 100644 index 00000000..a700f02d --- /dev/null +++ b/sources/plugins/print/lang/ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'ca', { + toolbar: 'Imprimeix' +} ); diff --git a/sources/plugins/print/lang/cs.js b/sources/plugins/print/lang/cs.js new file mode 100644 index 00000000..cf3c9772 --- /dev/null +++ b/sources/plugins/print/lang/cs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'cs', { + toolbar: 'Tisk' +} ); diff --git a/sources/plugins/print/lang/cy.js b/sources/plugins/print/lang/cy.js new file mode 100644 index 00000000..851fee9c --- /dev/null +++ b/sources/plugins/print/lang/cy.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'cy', { + toolbar: 'Argraffu' +} ); diff --git a/sources/plugins/print/lang/da.js b/sources/plugins/print/lang/da.js new file mode 100644 index 00000000..d2384c1f --- /dev/null +++ b/sources/plugins/print/lang/da.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'da', { + toolbar: 'Udskriv' +} ); diff --git a/sources/plugins/print/lang/de.js b/sources/plugins/print/lang/de.js new file mode 100644 index 00000000..e02c544c --- /dev/null +++ b/sources/plugins/print/lang/de.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'de', { + toolbar: 'Drucken' +} ); diff --git a/sources/plugins/print/lang/el.js b/sources/plugins/print/lang/el.js new file mode 100644 index 00000000..cb04ec2f --- /dev/null +++ b/sources/plugins/print/lang/el.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'el', { + toolbar: 'Εκτύπωση' +} ); diff --git a/sources/plugins/print/lang/en-au.js b/sources/plugins/print/lang/en-au.js new file mode 100644 index 00000000..dfef21a6 --- /dev/null +++ b/sources/plugins/print/lang/en-au.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'en-au', { + toolbar: 'Print' +} ); diff --git a/sources/plugins/print/lang/en-ca.js b/sources/plugins/print/lang/en-ca.js new file mode 100644 index 00000000..019ddd99 --- /dev/null +++ b/sources/plugins/print/lang/en-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'en-ca', { + toolbar: 'Print' +} ); diff --git a/sources/plugins/print/lang/en-gb.js b/sources/plugins/print/lang/en-gb.js new file mode 100644 index 00000000..88ffbfdd --- /dev/null +++ b/sources/plugins/print/lang/en-gb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'en-gb', { + toolbar: 'Print' +} ); diff --git a/sources/plugins/print/lang/en.js b/sources/plugins/print/lang/en.js new file mode 100644 index 00000000..7be9ec15 --- /dev/null +++ b/sources/plugins/print/lang/en.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'en', { + toolbar: 'Print' +} ); diff --git a/sources/plugins/print/lang/eo.js b/sources/plugins/print/lang/eo.js new file mode 100644 index 00000000..61c8be4e --- /dev/null +++ b/sources/plugins/print/lang/eo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'eo', { + toolbar: 'Presi' +} ); diff --git a/sources/plugins/print/lang/es.js b/sources/plugins/print/lang/es.js new file mode 100644 index 00000000..e1bdb6d2 --- /dev/null +++ b/sources/plugins/print/lang/es.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'es', { + toolbar: 'Imprimir' +} ); diff --git a/sources/plugins/print/lang/et.js b/sources/plugins/print/lang/et.js new file mode 100644 index 00000000..c7fd13c6 --- /dev/null +++ b/sources/plugins/print/lang/et.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'et', { + toolbar: 'Printimine' +} ); diff --git a/sources/plugins/print/lang/eu.js b/sources/plugins/print/lang/eu.js new file mode 100644 index 00000000..d4316628 --- /dev/null +++ b/sources/plugins/print/lang/eu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'eu', { + toolbar: 'Inprimatu' +} ); diff --git a/sources/plugins/print/lang/fa.js b/sources/plugins/print/lang/fa.js new file mode 100644 index 00000000..8ab4d6ba --- /dev/null +++ b/sources/plugins/print/lang/fa.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'fa', { + toolbar: 'چاپ' +} ); diff --git a/sources/plugins/print/lang/fi.js b/sources/plugins/print/lang/fi.js new file mode 100644 index 00000000..7b2d3778 --- /dev/null +++ b/sources/plugins/print/lang/fi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'fi', { + toolbar: 'Tulosta' +} ); diff --git a/sources/plugins/print/lang/fo.js b/sources/plugins/print/lang/fo.js new file mode 100644 index 00000000..cbdfc86e --- /dev/null +++ b/sources/plugins/print/lang/fo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'fo', { + toolbar: 'Prenta' +} ); diff --git a/sources/plugins/print/lang/fr-ca.js b/sources/plugins/print/lang/fr-ca.js new file mode 100644 index 00000000..84b3c349 --- /dev/null +++ b/sources/plugins/print/lang/fr-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'fr-ca', { + toolbar: 'Imprimer' +} ); diff --git a/sources/plugins/print/lang/fr.js b/sources/plugins/print/lang/fr.js new file mode 100644 index 00000000..01967d8d --- /dev/null +++ b/sources/plugins/print/lang/fr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'fr', { + toolbar: 'Imprimer' +} ); diff --git a/sources/plugins/print/lang/gl.js b/sources/plugins/print/lang/gl.js new file mode 100644 index 00000000..73711791 --- /dev/null +++ b/sources/plugins/print/lang/gl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'gl', { + toolbar: 'Imprimir' +} ); diff --git a/sources/plugins/print/lang/gu.js b/sources/plugins/print/lang/gu.js new file mode 100644 index 00000000..441619ec --- /dev/null +++ b/sources/plugins/print/lang/gu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'gu', { + toolbar: 'પ્રિન્ટ' +} ); diff --git a/sources/plugins/print/lang/he.js b/sources/plugins/print/lang/he.js new file mode 100644 index 00000000..eb29d376 --- /dev/null +++ b/sources/plugins/print/lang/he.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'he', { + toolbar: 'הדפסה' +} ); diff --git a/sources/plugins/print/lang/hi.js b/sources/plugins/print/lang/hi.js new file mode 100644 index 00000000..d983068b --- /dev/null +++ b/sources/plugins/print/lang/hi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'hi', { + toolbar: 'प्रिन्ट' +} ); diff --git a/sources/plugins/print/lang/hr.js b/sources/plugins/print/lang/hr.js new file mode 100644 index 00000000..e827346d --- /dev/null +++ b/sources/plugins/print/lang/hr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'hr', { + toolbar: 'Ispiši' +} ); diff --git a/sources/plugins/print/lang/hu.js b/sources/plugins/print/lang/hu.js new file mode 100644 index 00000000..d4640b8e --- /dev/null +++ b/sources/plugins/print/lang/hu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'hu', { + toolbar: 'Nyomtatás' +} ); diff --git a/sources/plugins/print/lang/id.js b/sources/plugins/print/lang/id.js new file mode 100644 index 00000000..a2136467 --- /dev/null +++ b/sources/plugins/print/lang/id.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'id', { + toolbar: 'Cetak' +} ); diff --git a/sources/plugins/print/lang/is.js b/sources/plugins/print/lang/is.js new file mode 100644 index 00000000..fd94420f --- /dev/null +++ b/sources/plugins/print/lang/is.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'is', { + toolbar: 'Prenta' +} ); diff --git a/sources/plugins/print/lang/it.js b/sources/plugins/print/lang/it.js new file mode 100644 index 00000000..e6cf48ae --- /dev/null +++ b/sources/plugins/print/lang/it.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'it', { + toolbar: 'Stampa' +} ); diff --git a/sources/plugins/print/lang/ja.js b/sources/plugins/print/lang/ja.js new file mode 100644 index 00000000..b0ddd826 --- /dev/null +++ b/sources/plugins/print/lang/ja.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'ja', { + toolbar: '印刷' +} ); diff --git a/sources/plugins/print/lang/ka.js b/sources/plugins/print/lang/ka.js new file mode 100644 index 00000000..a95653e9 --- /dev/null +++ b/sources/plugins/print/lang/ka.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'ka', { + toolbar: 'ბეჭდვა' +} ); diff --git a/sources/plugins/print/lang/km.js b/sources/plugins/print/lang/km.js new file mode 100644 index 00000000..7be82362 --- /dev/null +++ b/sources/plugins/print/lang/km.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'km', { + toolbar: 'បោះពុម្ព' +} ); diff --git a/sources/plugins/print/lang/ko.js b/sources/plugins/print/lang/ko.js new file mode 100644 index 00000000..ff0adf3a --- /dev/null +++ b/sources/plugins/print/lang/ko.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'ko', { + toolbar: '인쇄' +} ); diff --git a/sources/plugins/print/lang/ku.js b/sources/plugins/print/lang/ku.js new file mode 100644 index 00000000..1650f88b --- /dev/null +++ b/sources/plugins/print/lang/ku.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'ku', { + toolbar: 'چاپکردن' +} ); diff --git a/sources/plugins/print/lang/lt.js b/sources/plugins/print/lang/lt.js new file mode 100644 index 00000000..e31b1966 --- /dev/null +++ b/sources/plugins/print/lang/lt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'lt', { + toolbar: 'Spausdinti' +} ); diff --git a/sources/plugins/print/lang/lv.js b/sources/plugins/print/lang/lv.js new file mode 100644 index 00000000..f8ace80d --- /dev/null +++ b/sources/plugins/print/lang/lv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'lv', { + toolbar: 'Drukāt' +} ); diff --git a/sources/plugins/print/lang/mk.js b/sources/plugins/print/lang/mk.js new file mode 100644 index 00000000..cf76c295 --- /dev/null +++ b/sources/plugins/print/lang/mk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'mk', { + toolbar: 'Print' // MISSING +} ); diff --git a/sources/plugins/print/lang/mn.js b/sources/plugins/print/lang/mn.js new file mode 100644 index 00000000..5402896a --- /dev/null +++ b/sources/plugins/print/lang/mn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'mn', { + toolbar: 'Хэвлэх' +} ); diff --git a/sources/plugins/print/lang/ms.js b/sources/plugins/print/lang/ms.js new file mode 100644 index 00000000..a589b47f --- /dev/null +++ b/sources/plugins/print/lang/ms.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'ms', { + toolbar: 'Cetak' +} ); diff --git a/sources/plugins/print/lang/nb.js b/sources/plugins/print/lang/nb.js new file mode 100644 index 00000000..ad07c698 --- /dev/null +++ b/sources/plugins/print/lang/nb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'nb', { + toolbar: 'Skriv ut' +} ); diff --git a/sources/plugins/print/lang/nl.js b/sources/plugins/print/lang/nl.js new file mode 100644 index 00000000..78684df6 --- /dev/null +++ b/sources/plugins/print/lang/nl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'nl', { + toolbar: 'Afdrukken' +} ); diff --git a/sources/plugins/print/lang/no.js b/sources/plugins/print/lang/no.js new file mode 100644 index 00000000..d181c25b --- /dev/null +++ b/sources/plugins/print/lang/no.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'no', { + toolbar: 'Skriv ut' +} ); diff --git a/sources/plugins/print/lang/pl.js b/sources/plugins/print/lang/pl.js new file mode 100644 index 00000000..627f7722 --- /dev/null +++ b/sources/plugins/print/lang/pl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'pl', { + toolbar: 'Drukuj' +} ); diff --git a/sources/plugins/print/lang/pt-br.js b/sources/plugins/print/lang/pt-br.js new file mode 100644 index 00000000..68f540ce --- /dev/null +++ b/sources/plugins/print/lang/pt-br.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'pt-br', { + toolbar: 'Imprimir' +} ); diff --git a/sources/plugins/print/lang/pt.js b/sources/plugins/print/lang/pt.js new file mode 100644 index 00000000..79cfc1a3 --- /dev/null +++ b/sources/plugins/print/lang/pt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'pt', { + toolbar: 'Imprimir' +} ); diff --git a/sources/plugins/print/lang/ro.js b/sources/plugins/print/lang/ro.js new file mode 100644 index 00000000..1b734090 --- /dev/null +++ b/sources/plugins/print/lang/ro.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'ro', { + toolbar: 'Printează' +} ); diff --git a/sources/plugins/print/lang/ru.js b/sources/plugins/print/lang/ru.js new file mode 100644 index 00000000..5f060461 --- /dev/null +++ b/sources/plugins/print/lang/ru.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'ru', { + toolbar: 'Печать' +} ); diff --git a/sources/plugins/print/lang/si.js b/sources/plugins/print/lang/si.js new file mode 100644 index 00000000..84cf9b9b --- /dev/null +++ b/sources/plugins/print/lang/si.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'si', { + toolbar: 'මුද්‍රණය කරන්න' +} ); diff --git a/sources/plugins/print/lang/sk.js b/sources/plugins/print/lang/sk.js new file mode 100644 index 00000000..cf5baad0 --- /dev/null +++ b/sources/plugins/print/lang/sk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'sk', { + toolbar: 'Tlač' +} ); diff --git a/sources/plugins/print/lang/sl.js b/sources/plugins/print/lang/sl.js new file mode 100644 index 00000000..3336a970 --- /dev/null +++ b/sources/plugins/print/lang/sl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'sl', { + toolbar: 'Natisni' +} ); diff --git a/sources/plugins/print/lang/sq.js b/sources/plugins/print/lang/sq.js new file mode 100644 index 00000000..3e81de15 --- /dev/null +++ b/sources/plugins/print/lang/sq.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'sq', { + toolbar: 'Shtype' +} ); diff --git a/sources/plugins/print/lang/sr-latn.js b/sources/plugins/print/lang/sr-latn.js new file mode 100644 index 00000000..f313a96f --- /dev/null +++ b/sources/plugins/print/lang/sr-latn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'sr-latn', { + toolbar: 'Štampa' +} ); diff --git a/sources/plugins/print/lang/sr.js b/sources/plugins/print/lang/sr.js new file mode 100644 index 00000000..32eaf11e --- /dev/null +++ b/sources/plugins/print/lang/sr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'sr', { + toolbar: 'Штампа' +} ); diff --git a/sources/plugins/print/lang/sv.js b/sources/plugins/print/lang/sv.js new file mode 100644 index 00000000..5daade92 --- /dev/null +++ b/sources/plugins/print/lang/sv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'sv', { + toolbar: 'Skriv ut' +} ); diff --git a/sources/plugins/print/lang/th.js b/sources/plugins/print/lang/th.js new file mode 100644 index 00000000..0a331243 --- /dev/null +++ b/sources/plugins/print/lang/th.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'th', { + toolbar: 'สั่งพิมพ์' +} ); diff --git a/sources/plugins/print/lang/tr.js b/sources/plugins/print/lang/tr.js new file mode 100644 index 00000000..61cfb0c5 --- /dev/null +++ b/sources/plugins/print/lang/tr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'tr', { + toolbar: 'Yazdır' +} ); diff --git a/sources/plugins/print/lang/tt.js b/sources/plugins/print/lang/tt.js new file mode 100644 index 00000000..53371af8 --- /dev/null +++ b/sources/plugins/print/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'tt', { + toolbar: 'Бастыру' +} ); diff --git a/sources/plugins/print/lang/ug.js b/sources/plugins/print/lang/ug.js new file mode 100644 index 00000000..86cc4d6a --- /dev/null +++ b/sources/plugins/print/lang/ug.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'ug', { + toolbar: 'باس ' +} ); diff --git a/sources/plugins/print/lang/uk.js b/sources/plugins/print/lang/uk.js new file mode 100644 index 00000000..e7d07d8a --- /dev/null +++ b/sources/plugins/print/lang/uk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'uk', { + toolbar: 'Друк' +} ); diff --git a/sources/plugins/print/lang/vi.js b/sources/plugins/print/lang/vi.js new file mode 100644 index 00000000..1b965858 --- /dev/null +++ b/sources/plugins/print/lang/vi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'vi', { + toolbar: 'In' +} ); diff --git a/sources/plugins/print/lang/zh-cn.js b/sources/plugins/print/lang/zh-cn.js new file mode 100644 index 00000000..2f1ec326 --- /dev/null +++ b/sources/plugins/print/lang/zh-cn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'zh-cn', { + toolbar: '打印' +} ); diff --git a/sources/plugins/print/lang/zh.js b/sources/plugins/print/lang/zh.js new file mode 100644 index 00000000..e12f1e8b --- /dev/null +++ b/sources/plugins/print/lang/zh.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'print', 'zh', { + toolbar: '列印' +} ); diff --git a/sources/plugins/print/plugin.js b/sources/plugins/print/plugin.js new file mode 100644 index 00000000..faa567b6 --- /dev/null +++ b/sources/plugins/print/plugin.js @@ -0,0 +1,46 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview Print Plugin + */ + +CKEDITOR.plugins.add( 'print', { + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'print,', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + // Print plugin isn't available in inline mode yet. + if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ) + return; + + var pluginName = 'print'; + + // Register the command. + editor.addCommand( pluginName, CKEDITOR.plugins.print ); + + // Register the toolbar button. + editor.ui.addButton && editor.ui.addButton( 'Print', { + label: editor.lang.print.toolbar, + command: pluginName, + toolbar: 'document,50' + } ); + } +} ); + +CKEDITOR.plugins.print = { + exec: function( editor ) { + if ( CKEDITOR.env.gecko ) { + editor.window.$.print(); + } else { + editor.document.$.execCommand( 'Print' ); + } + }, + canUndo: false, + readOnly: 1, + modes: { wysiwyg: 1 } +}; diff --git a/sources/plugins/removeformat/icons/hidpi/removeformat.png b/sources/plugins/removeformat/icons/hidpi/removeformat.png new file mode 100644 index 00000000..910b0a3c Binary files /dev/null and b/sources/plugins/removeformat/icons/hidpi/removeformat.png differ diff --git a/sources/plugins/removeformat/icons/removeformat.png b/sources/plugins/removeformat/icons/removeformat.png new file mode 100644 index 00000000..1bc9b386 Binary files /dev/null and b/sources/plugins/removeformat/icons/removeformat.png differ diff --git a/sources/plugins/removeformat/lang/af.js b/sources/plugins/removeformat/lang/af.js new file mode 100644 index 00000000..a4aa5367 --- /dev/null +++ b/sources/plugins/removeformat/lang/af.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'af', { + toolbar: 'Verwyder opmaak' +} ); diff --git a/sources/plugins/removeformat/lang/ar.js b/sources/plugins/removeformat/lang/ar.js new file mode 100644 index 00000000..16217eb3 --- /dev/null +++ b/sources/plugins/removeformat/lang/ar.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'ar', { + toolbar: 'إزالة التنسيقات' +} ); diff --git a/sources/plugins/removeformat/lang/bg.js b/sources/plugins/removeformat/lang/bg.js new file mode 100644 index 00000000..01d1348f --- /dev/null +++ b/sources/plugins/removeformat/lang/bg.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'bg', { + toolbar: 'Премахване на форматирането' +} ); diff --git a/sources/plugins/removeformat/lang/bn.js b/sources/plugins/removeformat/lang/bn.js new file mode 100644 index 00000000..0e54f499 --- /dev/null +++ b/sources/plugins/removeformat/lang/bn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'bn', { + toolbar: 'ফরমেট সরাও' +} ); diff --git a/sources/plugins/removeformat/lang/bs.js b/sources/plugins/removeformat/lang/bs.js new file mode 100644 index 00000000..55e0b7e5 --- /dev/null +++ b/sources/plugins/removeformat/lang/bs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'bs', { + toolbar: 'Poništi format' +} ); diff --git a/sources/plugins/removeformat/lang/ca.js b/sources/plugins/removeformat/lang/ca.js new file mode 100644 index 00000000..d2507469 --- /dev/null +++ b/sources/plugins/removeformat/lang/ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'ca', { + toolbar: 'Elimina Format' +} ); diff --git a/sources/plugins/removeformat/lang/cs.js b/sources/plugins/removeformat/lang/cs.js new file mode 100644 index 00000000..3e16778e --- /dev/null +++ b/sources/plugins/removeformat/lang/cs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'cs', { + toolbar: 'Odstranit formátování' +} ); diff --git a/sources/plugins/removeformat/lang/cy.js b/sources/plugins/removeformat/lang/cy.js new file mode 100644 index 00000000..3c8606e6 --- /dev/null +++ b/sources/plugins/removeformat/lang/cy.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'cy', { + toolbar: 'Tynnu Fformat' +} ); diff --git a/sources/plugins/removeformat/lang/da.js b/sources/plugins/removeformat/lang/da.js new file mode 100644 index 00000000..5599b638 --- /dev/null +++ b/sources/plugins/removeformat/lang/da.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'da', { + toolbar: 'Fjern formatering' +} ); diff --git a/sources/plugins/removeformat/lang/de.js b/sources/plugins/removeformat/lang/de.js new file mode 100644 index 00000000..8361c14b --- /dev/null +++ b/sources/plugins/removeformat/lang/de.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'de', { + toolbar: 'Formatierung entfernen' +} ); diff --git a/sources/plugins/removeformat/lang/el.js b/sources/plugins/removeformat/lang/el.js new file mode 100644 index 00000000..6f69f98c --- /dev/null +++ b/sources/plugins/removeformat/lang/el.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'el', { + toolbar: 'Εκκαθάριση Μορφοποίησης' +} ); diff --git a/sources/plugins/removeformat/lang/en-au.js b/sources/plugins/removeformat/lang/en-au.js new file mode 100644 index 00000000..61bc04ee --- /dev/null +++ b/sources/plugins/removeformat/lang/en-au.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'en-au', { + toolbar: 'Remove Format' +} ); diff --git a/sources/plugins/removeformat/lang/en-ca.js b/sources/plugins/removeformat/lang/en-ca.js new file mode 100644 index 00000000..213048cc --- /dev/null +++ b/sources/plugins/removeformat/lang/en-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'en-ca', { + toolbar: 'Remove Format' +} ); diff --git a/sources/plugins/removeformat/lang/en-gb.js b/sources/plugins/removeformat/lang/en-gb.js new file mode 100644 index 00000000..020d1e46 --- /dev/null +++ b/sources/plugins/removeformat/lang/en-gb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'en-gb', { + toolbar: 'Remove Format' +} ); diff --git a/sources/plugins/removeformat/lang/en.js b/sources/plugins/removeformat/lang/en.js new file mode 100644 index 00000000..6a27bd00 --- /dev/null +++ b/sources/plugins/removeformat/lang/en.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'en', { + toolbar: 'Remove Format' +} ); diff --git a/sources/plugins/removeformat/lang/eo.js b/sources/plugins/removeformat/lang/eo.js new file mode 100644 index 00000000..c7e8057b --- /dev/null +++ b/sources/plugins/removeformat/lang/eo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'eo', { + toolbar: 'Forigi Formaton' +} ); diff --git a/sources/plugins/removeformat/lang/es.js b/sources/plugins/removeformat/lang/es.js new file mode 100644 index 00000000..fca22159 --- /dev/null +++ b/sources/plugins/removeformat/lang/es.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'es', { + toolbar: 'Eliminar Formato' +} ); diff --git a/sources/plugins/removeformat/lang/et.js b/sources/plugins/removeformat/lang/et.js new file mode 100644 index 00000000..5d2b3361 --- /dev/null +++ b/sources/plugins/removeformat/lang/et.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'et', { + toolbar: 'Vormingu eemaldamine' +} ); diff --git a/sources/plugins/removeformat/lang/eu.js b/sources/plugins/removeformat/lang/eu.js new file mode 100644 index 00000000..ba7a0e5d --- /dev/null +++ b/sources/plugins/removeformat/lang/eu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'eu', { + toolbar: 'Kendu formatua' +} ); diff --git a/sources/plugins/removeformat/lang/fa.js b/sources/plugins/removeformat/lang/fa.js new file mode 100644 index 00000000..c31b7b2c --- /dev/null +++ b/sources/plugins/removeformat/lang/fa.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'fa', { + toolbar: 'برداشتن فرمت' +} ); diff --git a/sources/plugins/removeformat/lang/fi.js b/sources/plugins/removeformat/lang/fi.js new file mode 100644 index 00000000..9f34c3bc --- /dev/null +++ b/sources/plugins/removeformat/lang/fi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'fi', { + toolbar: 'Poista muotoilu' +} ); diff --git a/sources/plugins/removeformat/lang/fo.js b/sources/plugins/removeformat/lang/fo.js new file mode 100644 index 00000000..b30ac5f9 --- /dev/null +++ b/sources/plugins/removeformat/lang/fo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'fo', { + toolbar: 'Strika sniðgeving' +} ); diff --git a/sources/plugins/removeformat/lang/fr-ca.js b/sources/plugins/removeformat/lang/fr-ca.js new file mode 100644 index 00000000..b266ef7e --- /dev/null +++ b/sources/plugins/removeformat/lang/fr-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'fr-ca', { + toolbar: 'Supprimer le formatage' +} ); diff --git a/sources/plugins/removeformat/lang/fr.js b/sources/plugins/removeformat/lang/fr.js new file mode 100644 index 00000000..8822f12d --- /dev/null +++ b/sources/plugins/removeformat/lang/fr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'fr', { + toolbar: 'Supprimer la mise en forme' +} ); diff --git a/sources/plugins/removeformat/lang/gl.js b/sources/plugins/removeformat/lang/gl.js new file mode 100644 index 00000000..7c8ad55b --- /dev/null +++ b/sources/plugins/removeformat/lang/gl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'gl', { + toolbar: 'Retirar o formato' +} ); diff --git a/sources/plugins/removeformat/lang/gu.js b/sources/plugins/removeformat/lang/gu.js new file mode 100644 index 00000000..4c92c3d6 --- /dev/null +++ b/sources/plugins/removeformat/lang/gu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'gu', { + toolbar: 'ફૉર્મટ કાઢવું' +} ); diff --git a/sources/plugins/removeformat/lang/he.js b/sources/plugins/removeformat/lang/he.js new file mode 100644 index 00000000..082c285e --- /dev/null +++ b/sources/plugins/removeformat/lang/he.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'he', { + toolbar: 'הסרת העיצוב' +} ); diff --git a/sources/plugins/removeformat/lang/hi.js b/sources/plugins/removeformat/lang/hi.js new file mode 100644 index 00000000..90202b4a --- /dev/null +++ b/sources/plugins/removeformat/lang/hi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'hi', { + toolbar: 'फ़ॉर्मैट हटायें' +} ); diff --git a/sources/plugins/removeformat/lang/hr.js b/sources/plugins/removeformat/lang/hr.js new file mode 100644 index 00000000..804bcfe9 --- /dev/null +++ b/sources/plugins/removeformat/lang/hr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'hr', { + toolbar: 'Ukloni formatiranje' +} ); diff --git a/sources/plugins/removeformat/lang/hu.js b/sources/plugins/removeformat/lang/hu.js new file mode 100644 index 00000000..b3190cbc --- /dev/null +++ b/sources/plugins/removeformat/lang/hu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'hu', { + toolbar: 'Formázás eltávolítása' +} ); diff --git a/sources/plugins/removeformat/lang/id.js b/sources/plugins/removeformat/lang/id.js new file mode 100644 index 00000000..c1449777 --- /dev/null +++ b/sources/plugins/removeformat/lang/id.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'id', { + toolbar: 'Hapus Format' +} ); diff --git a/sources/plugins/removeformat/lang/is.js b/sources/plugins/removeformat/lang/is.js new file mode 100644 index 00000000..2df2ecc0 --- /dev/null +++ b/sources/plugins/removeformat/lang/is.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'is', { + toolbar: 'Fjarlægja snið' +} ); diff --git a/sources/plugins/removeformat/lang/it.js b/sources/plugins/removeformat/lang/it.js new file mode 100644 index 00000000..97f531a4 --- /dev/null +++ b/sources/plugins/removeformat/lang/it.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'it', { + toolbar: 'Elimina formattazione' +} ); diff --git a/sources/plugins/removeformat/lang/ja.js b/sources/plugins/removeformat/lang/ja.js new file mode 100644 index 00000000..9b897f69 --- /dev/null +++ b/sources/plugins/removeformat/lang/ja.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'ja', { + toolbar: '書式を解除' +} ); diff --git a/sources/plugins/removeformat/lang/ka.js b/sources/plugins/removeformat/lang/ka.js new file mode 100644 index 00000000..aa1f91ae --- /dev/null +++ b/sources/plugins/removeformat/lang/ka.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'ka', { + toolbar: 'ფორმატირების მოხსნა' +} ); diff --git a/sources/plugins/removeformat/lang/km.js b/sources/plugins/removeformat/lang/km.js new file mode 100644 index 00000000..f7550dc1 --- /dev/null +++ b/sources/plugins/removeformat/lang/km.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'km', { + toolbar: 'ជម្រះ​ទ្រង់​ទ្រាយ' +} ); diff --git a/sources/plugins/removeformat/lang/ko.js b/sources/plugins/removeformat/lang/ko.js new file mode 100644 index 00000000..b19a77e9 --- /dev/null +++ b/sources/plugins/removeformat/lang/ko.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'ko', { + toolbar: '형식 지우기' +} ); diff --git a/sources/plugins/removeformat/lang/ku.js b/sources/plugins/removeformat/lang/ku.js new file mode 100644 index 00000000..7471b2f8 --- /dev/null +++ b/sources/plugins/removeformat/lang/ku.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'ku', { + toolbar: 'لابردنی داڕشتەکە' +} ); diff --git a/sources/plugins/removeformat/lang/lt.js b/sources/plugins/removeformat/lang/lt.js new file mode 100644 index 00000000..69666fcb --- /dev/null +++ b/sources/plugins/removeformat/lang/lt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'lt', { + toolbar: 'Panaikinti formatą' +} ); diff --git a/sources/plugins/removeformat/lang/lv.js b/sources/plugins/removeformat/lang/lv.js new file mode 100644 index 00000000..8421e6b2 --- /dev/null +++ b/sources/plugins/removeformat/lang/lv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'lv', { + toolbar: 'Noņemt stilus' +} ); diff --git a/sources/plugins/removeformat/lang/mk.js b/sources/plugins/removeformat/lang/mk.js new file mode 100644 index 00000000..70908a22 --- /dev/null +++ b/sources/plugins/removeformat/lang/mk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'mk', { + toolbar: 'Remove Format' // MISSING +} ); diff --git a/sources/plugins/removeformat/lang/mn.js b/sources/plugins/removeformat/lang/mn.js new file mode 100644 index 00000000..96a7fbe4 --- /dev/null +++ b/sources/plugins/removeformat/lang/mn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'mn', { + toolbar: 'Параргафын загварыг авч хаях' +} ); diff --git a/sources/plugins/removeformat/lang/ms.js b/sources/plugins/removeformat/lang/ms.js new file mode 100644 index 00000000..aec04ae7 --- /dev/null +++ b/sources/plugins/removeformat/lang/ms.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'ms', { + toolbar: 'Buang Format' +} ); diff --git a/sources/plugins/removeformat/lang/nb.js b/sources/plugins/removeformat/lang/nb.js new file mode 100644 index 00000000..63aca263 --- /dev/null +++ b/sources/plugins/removeformat/lang/nb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'nb', { + toolbar: 'Fjern formatering' +} ); diff --git a/sources/plugins/removeformat/lang/nl.js b/sources/plugins/removeformat/lang/nl.js new file mode 100644 index 00000000..a5775f68 --- /dev/null +++ b/sources/plugins/removeformat/lang/nl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'nl', { + toolbar: 'Opmaak verwijderen' +} ); diff --git a/sources/plugins/removeformat/lang/no.js b/sources/plugins/removeformat/lang/no.js new file mode 100644 index 00000000..6ae98eb2 --- /dev/null +++ b/sources/plugins/removeformat/lang/no.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'no', { + toolbar: 'Fjern formatering' +} ); diff --git a/sources/plugins/removeformat/lang/pl.js b/sources/plugins/removeformat/lang/pl.js new file mode 100644 index 00000000..81442e17 --- /dev/null +++ b/sources/plugins/removeformat/lang/pl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'pl', { + toolbar: 'Usuń formatowanie' +} ); diff --git a/sources/plugins/removeformat/lang/pt-br.js b/sources/plugins/removeformat/lang/pt-br.js new file mode 100644 index 00000000..56efddd1 --- /dev/null +++ b/sources/plugins/removeformat/lang/pt-br.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'pt-br', { + toolbar: 'Remover Formatação' +} ); diff --git a/sources/plugins/removeformat/lang/pt.js b/sources/plugins/removeformat/lang/pt.js new file mode 100644 index 00000000..4ec568b4 --- /dev/null +++ b/sources/plugins/removeformat/lang/pt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'pt', { + toolbar: 'Eliminar Formato' +} ); diff --git a/sources/plugins/removeformat/lang/ro.js b/sources/plugins/removeformat/lang/ro.js new file mode 100644 index 00000000..4b689bbf --- /dev/null +++ b/sources/plugins/removeformat/lang/ro.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'ro', { + toolbar: 'Înlătură formatarea' +} ); diff --git a/sources/plugins/removeformat/lang/ru.js b/sources/plugins/removeformat/lang/ru.js new file mode 100644 index 00000000..dcba65a8 --- /dev/null +++ b/sources/plugins/removeformat/lang/ru.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'ru', { + toolbar: 'Убрать форматирование' +} ); diff --git a/sources/plugins/removeformat/lang/si.js b/sources/plugins/removeformat/lang/si.js new file mode 100644 index 00000000..e1efff63 --- /dev/null +++ b/sources/plugins/removeformat/lang/si.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'si', { + toolbar: 'සැකසීම වෙනස් කරන්න' +} ); diff --git a/sources/plugins/removeformat/lang/sk.js b/sources/plugins/removeformat/lang/sk.js new file mode 100644 index 00000000..9ce3fc30 --- /dev/null +++ b/sources/plugins/removeformat/lang/sk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'sk', { + toolbar: 'Odstrániť formátovanie' +} ); diff --git a/sources/plugins/removeformat/lang/sl.js b/sources/plugins/removeformat/lang/sl.js new file mode 100644 index 00000000..6edc4abd --- /dev/null +++ b/sources/plugins/removeformat/lang/sl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'sl', { + toolbar: 'Odstrani oblikovanje' +} ); diff --git a/sources/plugins/removeformat/lang/sq.js b/sources/plugins/removeformat/lang/sq.js new file mode 100644 index 00000000..7bf36689 --- /dev/null +++ b/sources/plugins/removeformat/lang/sq.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'sq', { + toolbar: 'Largo Formatin' +} ); diff --git a/sources/plugins/removeformat/lang/sr-latn.js b/sources/plugins/removeformat/lang/sr-latn.js new file mode 100644 index 00000000..8c008213 --- /dev/null +++ b/sources/plugins/removeformat/lang/sr-latn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'sr-latn', { + toolbar: 'Ukloni formatiranje' +} ); diff --git a/sources/plugins/removeformat/lang/sr.js b/sources/plugins/removeformat/lang/sr.js new file mode 100644 index 00000000..42c78b19 --- /dev/null +++ b/sources/plugins/removeformat/lang/sr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'sr', { + toolbar: 'Уклони форматирање' +} ); diff --git a/sources/plugins/removeformat/lang/sv.js b/sources/plugins/removeformat/lang/sv.js new file mode 100644 index 00000000..4f32fad1 --- /dev/null +++ b/sources/plugins/removeformat/lang/sv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'sv', { + toolbar: 'Radera formatering' +} ); diff --git a/sources/plugins/removeformat/lang/th.js b/sources/plugins/removeformat/lang/th.js new file mode 100644 index 00000000..78d2d6ed --- /dev/null +++ b/sources/plugins/removeformat/lang/th.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'th', { + toolbar: 'ล้างรูปแบบ' +} ); diff --git a/sources/plugins/removeformat/lang/tr.js b/sources/plugins/removeformat/lang/tr.js new file mode 100644 index 00000000..6c63b545 --- /dev/null +++ b/sources/plugins/removeformat/lang/tr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'tr', { + toolbar: 'Biçimi Kaldır' +} ); diff --git a/sources/plugins/removeformat/lang/tt.js b/sources/plugins/removeformat/lang/tt.js new file mode 100644 index 00000000..95206995 --- /dev/null +++ b/sources/plugins/removeformat/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'tt', { + toolbar: 'Форматлауны бетерү' +} ); diff --git a/sources/plugins/removeformat/lang/ug.js b/sources/plugins/removeformat/lang/ug.js new file mode 100644 index 00000000..d4664f12 --- /dev/null +++ b/sources/plugins/removeformat/lang/ug.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'ug', { + toolbar: 'پىچىمنى چىقىرىۋەت' +} ); diff --git a/sources/plugins/removeformat/lang/uk.js b/sources/plugins/removeformat/lang/uk.js new file mode 100644 index 00000000..143f69af --- /dev/null +++ b/sources/plugins/removeformat/lang/uk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'uk', { + toolbar: 'Видалити форматування' +} ); diff --git a/sources/plugins/removeformat/lang/vi.js b/sources/plugins/removeformat/lang/vi.js new file mode 100644 index 00000000..d129e2a0 --- /dev/null +++ b/sources/plugins/removeformat/lang/vi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'vi', { + toolbar: 'Xoá định dạng' +} ); diff --git a/sources/plugins/removeformat/lang/zh-cn.js b/sources/plugins/removeformat/lang/zh-cn.js new file mode 100644 index 00000000..762a88d7 --- /dev/null +++ b/sources/plugins/removeformat/lang/zh-cn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'zh-cn', { + toolbar: '清除格式' +} ); diff --git a/sources/plugins/removeformat/lang/zh.js b/sources/plugins/removeformat/lang/zh.js new file mode 100644 index 00000000..d4be5286 --- /dev/null +++ b/sources/plugins/removeformat/lang/zh.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'zh', { + toolbar: '移除格式' +} ); diff --git a/sources/plugins/removeformat/plugin.js b/sources/plugins/removeformat/plugin.js new file mode 100644 index 00000000..9a808df1 --- /dev/null +++ b/sources/plugins/removeformat/plugin.js @@ -0,0 +1,193 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.add( 'removeformat', { + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'removeformat', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + editor.addCommand( 'removeFormat', CKEDITOR.plugins.removeformat.commands.removeformat ); + editor.ui.addButton && editor.ui.addButton( 'RemoveFormat', { + label: editor.lang.removeformat.toolbar, + command: 'removeFormat', + toolbar: 'cleanup,10' + } ); + } +} ); + +CKEDITOR.plugins.removeformat = { + commands: { + removeformat: { + exec: function( editor ) { + var tagsRegex = editor._.removeFormatRegex || ( editor._.removeFormatRegex = new RegExp( '^(?:' + editor.config.removeFormatTags.replace( /,/g, '|' ) + ')$', 'i' ) ); + + var removeAttributes = editor._.removeAttributes || ( editor._.removeAttributes = editor.config.removeFormatAttributes.split( ',' ) ), + filter = CKEDITOR.plugins.removeformat.filter, + ranges = editor.getSelection().getRanges(), + iterator = ranges.createIterator(), + isElement = function( element ) { + return element.type == CKEDITOR.NODE_ELEMENT; + }, + range; + + while ( ( range = iterator.getNextRange() ) ) { + if ( !range.collapsed ) + range.enlarge( CKEDITOR.ENLARGE_ELEMENT ); + + // Bookmark the range so we can re-select it after processing. + var bookmark = range.createBookmark(), + // The style will be applied within the bookmark boundaries. + startNode = bookmark.startNode, + endNode = bookmark.endNode, + currentNode; + + // We need to check the selection boundaries (bookmark spans) to break + // the code in a way that we can properly remove partially selected nodes. + // For example, removing a style from + // This is [some text to show the] problem + // ... where [ and ] represent the selection, must result: + // This is [some text to show the] problem + // The strategy is simple, we just break the partial nodes before the + // removal logic, having something that could be represented this way: + // This is [some text to show the] problem + + var breakParent = function( node ) { + // Let's start checking the start boundary. + var path = editor.elementPath( node ), + pathElements = path.elements; + + for ( var i = 1, pathElement; pathElement = pathElements[ i ]; i++ ) { + if ( pathElement.equals( path.block ) || pathElement.equals( path.blockLimit ) ) + break; + + // If this element can be removed (even partially). + if ( tagsRegex.test( pathElement.getName() ) && filter( editor, pathElement ) ) + node.breakParent( pathElement ); + } + }; + + breakParent( startNode ); + if ( endNode ) { + breakParent( endNode ); + + // Navigate through all nodes between the bookmarks. + currentNode = startNode.getNextSourceNode( true, CKEDITOR.NODE_ELEMENT ); + + while ( currentNode ) { + // If we have reached the end of the selection, stop looping. + if ( currentNode.equals( endNode ) ) + break; + + if ( currentNode.isReadOnly() ) { + // In case of non-editable we're skipping to the next sibling *elmenet*. + + // We need to be aware that endNode can be nested within current non-editable. + // This condition tests if currentNode (non-editable) contains endNode. If it does + // then we should break the filtering + if ( currentNode.getPosition( endNode ) & CKEDITOR.POSITION_CONTAINS ) { + break; + } + + currentNode = currentNode.getNext( isElement ); + continue; + } + + // Cache the next node to be processed. Do it now, because + // currentNode may be removed. + var nextNode = currentNode.getNextSourceNode( false, CKEDITOR.NODE_ELEMENT ), + isFakeElement = currentNode.getName() == 'img' && currentNode.data( 'cke-realelement' ); + + // This node must not be a fake element, and must not be read-only. + if ( !isFakeElement && filter( editor, currentNode ) ) { + // Remove elements nodes that match with this style rules. + if ( tagsRegex.test( currentNode.getName() ) ) + currentNode.remove( 1 ); + else { + currentNode.removeAttributes( removeAttributes ); + editor.fire( 'removeFormatCleanup', currentNode ); + } + } + + currentNode = nextNode; + } + } + + range.moveToBookmark( bookmark ); + } + + // The selection path may not changed, but we should force a selection + // change event to refresh command states, due to the above attribution change. (#9238) + editor.forceNextSelectionCheck(); + editor.getSelection().selectRanges( ranges ); + } + } + }, + + // Perform the remove format filters on the passed element. + // @param {CKEDITOR.editor} editor + // @param {CKEDITOR.dom.element} element + filter: function( editor, element ) { + // If editor#addRemoveFotmatFilter hasn't been executed yet value is not initialized. + var filters = editor._.removeFormatFilters || []; + for ( var i = 0; i < filters.length; i++ ) { + if ( filters[ i ]( element ) === false ) + return false; + } + return true; + } +}; + +/** + * Add to a collection of functions to decide whether a specific + * element should be considered as formatting element and thus + * could be removed during `removeFormat` command. + * + * **Note:** Only available with the existence of `removeformat` plugin. + * + * // Don't remove empty span. + * editor.addRemoveFormatFilter( function( element ) { + * return !( element.is( 'span' ) && CKEDITOR.tools.isEmpty( element.getAttributes() ) ); + * } ); + * + * @since 3.3 + * @member CKEDITOR.editor + * @param {Function} func The function to be called, which will be passed a {CKEDITOR.dom.element} element to test. + */ +CKEDITOR.editor.prototype.addRemoveFormatFilter = function( func ) { + if ( !this._.removeFormatFilters ) + this._.removeFormatFilters = []; + + this._.removeFormatFilters.push( func ); +}; + +/** + * A comma separated list of elements to be removed when executing the `remove + * format` command. Note that only inline elements are allowed. + * + * @cfg + * @member CKEDITOR.config + */ +CKEDITOR.config.removeFormatTags = 'b,big,cite,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var'; + +/** + * A comma separated list of elements attributes to be removed when executing + * the `remove format` command. + * + * @cfg + * @member CKEDITOR.config + */ +CKEDITOR.config.removeFormatAttributes = 'class,style,lang,width,height,align,hspace,valign'; + +/** + * Fired after an element was cleaned by the removeFormat plugin. + * + * @event removeFormatCleanup + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param data + * @param {CKEDITOR.dom.element} data.element The element that was cleaned up. + */ diff --git a/sources/plugins/resize/plugin.js b/sources/plugins/resize/plugin.js new file mode 100644 index 00000000..f57990c8 --- /dev/null +++ b/sources/plugins/resize/plugin.js @@ -0,0 +1,187 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.add( 'resize', { + init: function( editor ) { + function dragHandler( evt ) { + var dx = evt.data.$.screenX - origin.x, + dy = evt.data.$.screenY - origin.y, + width = startSize.width, + height = startSize.height, + internalWidth = width + dx * ( resizeDir == 'rtl' ? -1 : 1 ), + internalHeight = height + dy; + + if ( resizeHorizontal ) + width = Math.max( config.resize_minWidth, Math.min( internalWidth, config.resize_maxWidth ) ); + + if ( resizeVertical ) + height = Math.max( config.resize_minHeight, Math.min( internalHeight, config.resize_maxHeight ) ); + + // DO NOT impose fixed size with single direction resize. (#6308) + editor.resize( resizeHorizontal ? width : null, height ); + } + + function dragEndHandler() { + CKEDITOR.document.removeListener( 'mousemove', dragHandler ); + CKEDITOR.document.removeListener( 'mouseup', dragEndHandler ); + + if ( editor.document ) { + editor.document.removeListener( 'mousemove', dragHandler ); + editor.document.removeListener( 'mouseup', dragEndHandler ); + } + } + + var config = editor.config; + var spaceId = editor.ui.spaceId( 'resizer' ); + + // Resize in the same direction of chrome, + // which is identical to dir of editor element. (#6614) + var resizeDir = editor.element ? editor.element.getDirection( 1 ) : 'ltr'; + + !config.resize_dir && ( config.resize_dir = 'vertical' ); + ( config.resize_maxWidth === undefined ) && ( config.resize_maxWidth = 3000 ); + ( config.resize_maxHeight === undefined ) && ( config.resize_maxHeight = 3000 ); + ( config.resize_minWidth === undefined ) && ( config.resize_minWidth = 750 ); + ( config.resize_minHeight === undefined ) && ( config.resize_minHeight = 250 ); + + if ( config.resize_enabled !== false ) { + var container = null, + origin, startSize, + resizeHorizontal = ( config.resize_dir == 'both' || config.resize_dir == 'horizontal' ) && ( config.resize_minWidth != config.resize_maxWidth ), + resizeVertical = ( config.resize_dir == 'both' || config.resize_dir == 'vertical' ) && ( config.resize_minHeight != config.resize_maxHeight ); + + var mouseDownFn = CKEDITOR.tools.addFunction( function( $event ) { + if ( !container ) + container = editor.getResizable(); + + startSize = { width: container.$.offsetWidth || 0, height: container.$.offsetHeight || 0 }; + origin = { x: $event.screenX, y: $event.screenY }; + + config.resize_minWidth > startSize.width && ( config.resize_minWidth = startSize.width ); + config.resize_minHeight > startSize.height && ( config.resize_minHeight = startSize.height ); + + CKEDITOR.document.on( 'mousemove', dragHandler ); + CKEDITOR.document.on( 'mouseup', dragEndHandler ); + + if ( editor.document ) { + editor.document.on( 'mousemove', dragHandler ); + editor.document.on( 'mouseup', dragEndHandler ); + } + + $event.preventDefault && $event.preventDefault(); + } ); + + editor.on( 'destroy', function() { + CKEDITOR.tools.removeFunction( mouseDownFn ); + } ); + + editor.on( 'uiSpace', function( event ) { + if ( event.data.space == 'bottom' ) { + var direction = ''; + if ( resizeHorizontal && !resizeVertical ) + direction = ' cke_resizer_horizontal'; + if ( !resizeHorizontal && resizeVertical ) + direction = ' cke_resizer_vertical'; + + var resizerHtml = + '' + + // BLACK LOWER RIGHT TRIANGLE (ltr) + // BLACK LOWER LEFT TRIANGLE (rtl) + ( resizeDir == 'ltr' ? '\u25E2' : '\u25E3' ) + + ''; + + // Always sticks the corner of botttom space. + resizeDir == 'ltr' && direction == 'ltr' ? event.data.html += resizerHtml : event.data.html = resizerHtml + event.data.html; + } + }, editor, null, 100 ); + + // Toggle the visibility of the resizer when an editor is being maximized or minimized. + editor.on( 'maximize', function( event ) { + editor.ui.space( 'resizer' )[ event.data == CKEDITOR.TRISTATE_ON ? 'hide' : 'show' ](); + } ); + } + } +} ); + +/** + * The minimum editor width, in pixels, when resizing the editor interface by using the resize handle. + * Note: It falls back to editor's actual width if it is smaller than the default value. + * + * Read more in the [documentation](#!/guide/dev_resize) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/resize.html). + * + * config.resize_minWidth = 500; + * + * @cfg {Number} [resize_minWidth=750] + * @member CKEDITOR.config + */ + +/** + * The minimum editor height, in pixels, when resizing the editor interface by using the resize handle. + * Note: It falls back to editor's actual height if it is smaller than the default value. + * + * Read more in the [documentation](#!/guide/dev_resize) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/resize.html). + * + * config.resize_minHeight = 600; + * + * @cfg {Number} [resize_minHeight=250] + * @member CKEDITOR.config + */ + +/** + * The maximum editor width, in pixels, when resizing the editor interface by using the resize handle. + * + * Read more in the [documentation](#!/guide/dev_resize) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/resize.html). + * + * config.resize_maxWidth = 750; + * + * @cfg {Number} [resize_maxWidth=3000] + * @member CKEDITOR.config + */ + +/** + * The maximum editor height, in pixels, when resizing the editor interface by using the resize handle. + * + * Read more in the [documentation](#!/guide/dev_resize) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/resize.html). + * + * config.resize_maxHeight = 600; + * + * @cfg {Number} [resize_maxHeight=3000] + * @member CKEDITOR.config + */ + +/** + * Whether to enable the resizing feature. If this feature is disabled, the resize handle will not be visible. + * + * Read more in the [documentation](#!/guide/dev_resize) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/resize.html). + * + * config.resize_enabled = false; + * + * @cfg {Boolean} [resize_enabled=true] + * @member CKEDITOR.config + */ + +/** + * The dimensions for which the editor resizing is enabled. Possible values + * are `both`, `vertical`, and `horizontal`. + * + * Read more in the [documentation](#!/guide/dev_resize) + * and see the [SDK sample](http://sdk.ckeditor.com/samples/resize.html). + * + * config.resize_dir = 'both'; + * + * @since 3.3 + * @cfg {String} [resize_dir='vertical'] + * @member CKEDITOR.config + */ diff --git a/sources/plugins/richcombo/plugin.js b/sources/plugins/richcombo/plugin.js new file mode 100644 index 00000000..4395b2a4 --- /dev/null +++ b/sources/plugins/richcombo/plugin.js @@ -0,0 +1,434 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.add( 'richcombo', { + requires: 'floatpanel,listblock,button', + + beforeInit: function( editor ) { + editor.ui.addHandler( CKEDITOR.UI_RICHCOMBO, CKEDITOR.ui.richCombo.handler ); + } +} ); + +( function() { + var template = '' + + '{label}' + + '' + + '{label}' + + '' + + '' + + // BLACK DOWN-POINTING TRIANGLE + ( CKEDITOR.env.hc ? '▼' : CKEDITOR.env.air ? ' ' : '' ) + + '' + + '' + + '' + + ''; + + var rcomboTpl = CKEDITOR.addTemplate( 'combo', template ); + + /** + * Button UI element. + * + * @readonly + * @property {String} [='richcombo'] + * @member CKEDITOR + */ + CKEDITOR.UI_RICHCOMBO = 'richcombo'; + + /** + * @class + * @todo + */ + CKEDITOR.ui.richCombo = CKEDITOR.tools.createClass( { + $: function( definition ) { + // Copy all definition properties to this object. + CKEDITOR.tools.extend( this, definition, + // Set defaults. + { + // The combo won't participate in toolbar grouping. + canGroup: false, + title: definition.label, + modes: { wysiwyg: 1 }, + editorFocus: 1 + } ); + + // We don't want the panel definition in this object. + var panelDefinition = this.panel || {}; + delete this.panel; + + this.id = CKEDITOR.tools.getNextNumber(); + + this.document = ( panelDefinition.parent && panelDefinition.parent.getDocument() ) || CKEDITOR.document; + + panelDefinition.className = 'cke_combopanel'; + panelDefinition.block = { + multiSelect: panelDefinition.multiSelect, + attributes: panelDefinition.attributes + }; + panelDefinition.toolbarRelated = true; + + this._ = { + panelDefinition: panelDefinition, + items: {} + }; + }, + + proto: { + renderHtml: function( editor ) { + var output = []; + this.render( editor, output ); + return output.join( '' ); + }, + + /** + * Renders the combo. + * + * @param {CKEDITOR.editor} editor The editor instance which this button is + * to be used by. + * @param {Array} output The output array to which append the HTML relative + * to this button. + */ + render: function( editor, output ) { + var env = CKEDITOR.env; + + var id = 'cke_' + this.id; + var clickFn = CKEDITOR.tools.addFunction( function( el ) { + // Restore locked selection in Opera. + if ( selLocked ) { + editor.unlockSelection( 1 ); + selLocked = 0; + } + instance.execute( el ); + }, this ); + + var combo = this; + var instance = { + id: id, + combo: this, + focus: function() { + var element = CKEDITOR.document.getById( id ).getChild( 1 ); + element.focus(); + }, + execute: function( el ) { + var _ = combo._; + + if ( _.state == CKEDITOR.TRISTATE_DISABLED ) + return; + + combo.createPanel( editor ); + + if ( _.on ) { + _.panel.hide(); + return; + } + + combo.commit(); + var value = combo.getValue(); + if ( value ) + _.list.mark( value ); + else + _.list.unmarkAll(); + + _.panel.showBlock( combo.id, new CKEDITOR.dom.element( el ), 4 ); + }, + clickFn: clickFn + }; + + function updateState() { + // Don't change state while richcombo is active (#11793). + if ( this.getState() == CKEDITOR.TRISTATE_ON ) + return; + + var state = this.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED; + + if ( editor.readOnly && !this.readOnly ) + state = CKEDITOR.TRISTATE_DISABLED; + + this.setState( state ); + this.setValue( '' ); + + // Let plugin to disable button. + if ( state != CKEDITOR.TRISTATE_DISABLED && this.refresh ) + this.refresh(); + } + + // Update status when activeFilter, mode, selection or readOnly changes. + editor.on( 'activeFilterChange', updateState, this ); + editor.on( 'mode', updateState, this ); + editor.on( 'selectionChange', updateState, this ); + // If this combo is sensitive to readOnly state, update it accordingly. + !this.readOnly && editor.on( 'readOnly', updateState, this ); + + var keyDownFn = CKEDITOR.tools.addFunction( function( ev, element ) { + ev = new CKEDITOR.dom.event( ev ); + + var keystroke = ev.getKeystroke(); + + // ARROW-DOWN + // This call is duplicated in plugins/toolbar/plugin.js in itemKeystroke(). + // Move focus to the first element after drop down was opened by the arrow down key. + if ( keystroke == 40 ) { + editor.once( 'panelShow', function( evt ) { + evt.data._.panel._.currentBlock.onKeyDown( 40 ); + } ); + } + + switch ( keystroke ) { + case 13: // ENTER + case 32: // SPACE + case 40: // ARROW-DOWN + // Show panel + CKEDITOR.tools.callFunction( clickFn, element ); + break; + default: + // Delegate the default behavior to toolbar button key handling. + instance.onkey( instance, keystroke ); + } + + // Avoid subsequent focus grab on editor document. + ev.preventDefault(); + } ); + + var focusFn = CKEDITOR.tools.addFunction( function() { + instance.onfocus && instance.onfocus(); + } ); + + var selLocked = 0; + + // For clean up + instance.keyDownFn = keyDownFn; + + var params = { + id: id, + name: this.name || this.command, + label: this.label, + title: this.title, + cls: this.className || '', + titleJs: env.gecko && !env.hc ? '' : ( this.title || '' ).replace( "'", '' ), + keydownFn: keyDownFn, + focusFn: focusFn, + clickFn: clickFn + }; + + rcomboTpl.output( params, output ); + + if ( this.onRender ) + this.onRender(); + + return instance; + }, + + createPanel: function( editor ) { + if ( this._.panel ) + return; + + var panelDefinition = this._.panelDefinition, + panelBlockDefinition = this._.panelDefinition.block, + panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(), + namedPanelCls = 'cke_combopanel__' + this.name, + panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ), + list = panel.addListBlock( this.id, panelBlockDefinition ), + me = this; + + panel.onShow = function() { + this.element.addClass( namedPanelCls ); + + me.setState( CKEDITOR.TRISTATE_ON ); + + me._.on = 1; + + me.editorFocus && !editor.focusManager.hasFocus && editor.focus(); + + if ( me.onOpen ) + me.onOpen(); + + // The "panelShow" event is fired assinchronously, after the + // onShow method call. + editor.once( 'panelShow', function() { + list.focus( !list.multiSelect && me.getValue() ); + } ); + }; + + panel.onHide = function( preventOnClose ) { + this.element.removeClass( namedPanelCls ); + + me.setState( me.modes && me.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); + + me._.on = 0; + + if ( !preventOnClose && me.onClose ) + me.onClose(); + }; + + panel.onEscape = function() { + // Hide drop-down with focus returned. + panel.hide( 1 ); + }; + + list.onClick = function( value, marked ) { + + if ( me.onClick ) + me.onClick.call( me, value, marked ); + + panel.hide(); + }; + + this._.panel = panel; + this._.list = list; + + panel.getBlock( this.id ).onHide = function() { + me._.on = 0; + me.setState( CKEDITOR.TRISTATE_OFF ); + }; + + if ( this.init ) + this.init(); + }, + + setValue: function( value, text ) { + this._.value = value; + + var textElement = this.document.getById( 'cke_' + this.id + '_text' ); + if ( textElement ) { + if ( !( value || text ) ) { + text = this.label; + textElement.addClass( 'cke_combo_inlinelabel' ); + } else { + textElement.removeClass( 'cke_combo_inlinelabel' ); + } + + textElement.setText( typeof text != 'undefined' ? text : value ); + } + }, + + getValue: function() { + return this._.value || ''; + }, + + unmarkAll: function() { + this._.list.unmarkAll(); + }, + + mark: function( value ) { + this._.list.mark( value ); + }, + + hideItem: function( value ) { + this._.list.hideItem( value ); + }, + + hideGroup: function( groupTitle ) { + this._.list.hideGroup( groupTitle ); + }, + + showAll: function() { + this._.list.showAll(); + }, + + add: function( value, html, text ) { + this._.items[ value ] = text || value; + this._.list.add( value, html, text ); + }, + + startGroup: function( title ) { + this._.list.startGroup( title ); + }, + + commit: function() { + if ( !this._.committed ) { + this._.list.commit(); + this._.committed = 1; + CKEDITOR.ui.fire( 'ready', this ); + } + this._.committed = 1; + }, + + setState: function( state ) { + if ( this._.state == state ) + return; + + var el = this.document.getById( 'cke_' + this.id ); + el.setState( state, 'cke_combo' ); + + state == CKEDITOR.TRISTATE_DISABLED ? + el.setAttribute( 'aria-disabled', true ) : + el.removeAttribute( 'aria-disabled' ); + + this._.state = state; + }, + + getState: function() { + return this._.state; + }, + + enable: function() { + if ( this._.state == CKEDITOR.TRISTATE_DISABLED ) + this.setState( this._.lastState ); + }, + + disable: function() { + if ( this._.state != CKEDITOR.TRISTATE_DISABLED ) { + this._.lastState = this._.state; + this.setState( CKEDITOR.TRISTATE_DISABLED ); + } + } + }, + + /** + * Represents richCombo handler object. + * + * @class CKEDITOR.ui.richCombo.handler + * @singleton + * @extends CKEDITOR.ui.handlerDefinition + */ + statics: { + handler: { + /** + * Transforms a richCombo definition in a {@link CKEDITOR.ui.richCombo} instance. + * + * @param {Object} definition + * @returns {CKEDITOR.ui.richCombo} + */ + create: function( definition ) { + return new CKEDITOR.ui.richCombo( definition ); + } + } + } + } ); + + /** + * @param {String} name + * @param {Object} definition + * @member CKEDITOR.ui + * @todo + */ + CKEDITOR.ui.prototype.addRichCombo = function( name, definition ) { + this.add( name, CKEDITOR.UI_RICHCOMBO, definition ); + }; + +} )(); diff --git a/sources/plugins/save/icons/hidpi/save.png b/sources/plugins/save/icons/hidpi/save.png new file mode 100644 index 00000000..fc59f677 Binary files /dev/null and b/sources/plugins/save/icons/hidpi/save.png differ diff --git a/sources/plugins/save/icons/save.png b/sources/plugins/save/icons/save.png new file mode 100644 index 00000000..51b8f6ee Binary files /dev/null and b/sources/plugins/save/icons/save.png differ diff --git a/sources/plugins/save/lang/af.js b/sources/plugins/save/lang/af.js new file mode 100644 index 00000000..8f019845 --- /dev/null +++ b/sources/plugins/save/lang/af.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'af', { + toolbar: 'Bewaar' +} ); diff --git a/sources/plugins/save/lang/ar.js b/sources/plugins/save/lang/ar.js new file mode 100644 index 00000000..7b911a61 --- /dev/null +++ b/sources/plugins/save/lang/ar.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'ar', { + toolbar: 'حفظ' +} ); diff --git a/sources/plugins/save/lang/bg.js b/sources/plugins/save/lang/bg.js new file mode 100644 index 00000000..980170c1 --- /dev/null +++ b/sources/plugins/save/lang/bg.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'bg', { + toolbar: 'Запис' +} ); diff --git a/sources/plugins/save/lang/bn.js b/sources/plugins/save/lang/bn.js new file mode 100644 index 00000000..aeaf0616 --- /dev/null +++ b/sources/plugins/save/lang/bn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'bn', { + toolbar: 'সংরক্ষন কর' +} ); diff --git a/sources/plugins/save/lang/bs.js b/sources/plugins/save/lang/bs.js new file mode 100644 index 00000000..9823a2bd --- /dev/null +++ b/sources/plugins/save/lang/bs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'bs', { + toolbar: 'Snimi' +} ); diff --git a/sources/plugins/save/lang/ca.js b/sources/plugins/save/lang/ca.js new file mode 100644 index 00000000..9938a2e5 --- /dev/null +++ b/sources/plugins/save/lang/ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'ca', { + toolbar: 'Desa' +} ); diff --git a/sources/plugins/save/lang/cs.js b/sources/plugins/save/lang/cs.js new file mode 100644 index 00000000..597db8d7 --- /dev/null +++ b/sources/plugins/save/lang/cs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'cs', { + toolbar: 'Uložit' +} ); diff --git a/sources/plugins/save/lang/cy.js b/sources/plugins/save/lang/cy.js new file mode 100644 index 00000000..64be9138 --- /dev/null +++ b/sources/plugins/save/lang/cy.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'cy', { + toolbar: 'Cadw' +} ); diff --git a/sources/plugins/save/lang/da.js b/sources/plugins/save/lang/da.js new file mode 100644 index 00000000..6586d44d --- /dev/null +++ b/sources/plugins/save/lang/da.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'da', { + toolbar: 'Gem' +} ); diff --git a/sources/plugins/save/lang/de.js b/sources/plugins/save/lang/de.js new file mode 100644 index 00000000..14379b2c --- /dev/null +++ b/sources/plugins/save/lang/de.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'de', { + toolbar: 'Speichern' +} ); diff --git a/sources/plugins/save/lang/el.js b/sources/plugins/save/lang/el.js new file mode 100644 index 00000000..dea5622c --- /dev/null +++ b/sources/plugins/save/lang/el.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'el', { + toolbar: 'Αποθήκευση' +} ); diff --git a/sources/plugins/save/lang/en-au.js b/sources/plugins/save/lang/en-au.js new file mode 100644 index 00000000..f05aa6c2 --- /dev/null +++ b/sources/plugins/save/lang/en-au.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'en-au', { + toolbar: 'Save' +} ); diff --git a/sources/plugins/save/lang/en-ca.js b/sources/plugins/save/lang/en-ca.js new file mode 100644 index 00000000..ffa5e8e5 --- /dev/null +++ b/sources/plugins/save/lang/en-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'en-ca', { + toolbar: 'Save' +} ); diff --git a/sources/plugins/save/lang/en-gb.js b/sources/plugins/save/lang/en-gb.js new file mode 100644 index 00000000..bf17d87f --- /dev/null +++ b/sources/plugins/save/lang/en-gb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'en-gb', { + toolbar: 'Save' +} ); diff --git a/sources/plugins/save/lang/en.js b/sources/plugins/save/lang/en.js new file mode 100644 index 00000000..1da76ddc --- /dev/null +++ b/sources/plugins/save/lang/en.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'en', { + toolbar: 'Save' +} ); diff --git a/sources/plugins/save/lang/eo.js b/sources/plugins/save/lang/eo.js new file mode 100644 index 00000000..28ecc6ef --- /dev/null +++ b/sources/plugins/save/lang/eo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'eo', { + toolbar: 'Konservi' +} ); diff --git a/sources/plugins/save/lang/es.js b/sources/plugins/save/lang/es.js new file mode 100644 index 00000000..e71316ab --- /dev/null +++ b/sources/plugins/save/lang/es.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'es', { + toolbar: 'Guardar' +} ); diff --git a/sources/plugins/save/lang/et.js b/sources/plugins/save/lang/et.js new file mode 100644 index 00000000..a5464059 --- /dev/null +++ b/sources/plugins/save/lang/et.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'et', { + toolbar: 'Salvestamine' +} ); diff --git a/sources/plugins/save/lang/eu.js b/sources/plugins/save/lang/eu.js new file mode 100644 index 00000000..fe3a900d --- /dev/null +++ b/sources/plugins/save/lang/eu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'eu', { + toolbar: 'Gorde' +} ); diff --git a/sources/plugins/save/lang/fa.js b/sources/plugins/save/lang/fa.js new file mode 100644 index 00000000..fef1704f --- /dev/null +++ b/sources/plugins/save/lang/fa.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'fa', { + toolbar: 'ذخیره' +} ); diff --git a/sources/plugins/save/lang/fi.js b/sources/plugins/save/lang/fi.js new file mode 100644 index 00000000..288635b6 --- /dev/null +++ b/sources/plugins/save/lang/fi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'fi', { + toolbar: 'Tallenna' +} ); diff --git a/sources/plugins/save/lang/fo.js b/sources/plugins/save/lang/fo.js new file mode 100644 index 00000000..9f813786 --- /dev/null +++ b/sources/plugins/save/lang/fo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'fo', { + toolbar: 'Goym' +} ); diff --git a/sources/plugins/save/lang/fr-ca.js b/sources/plugins/save/lang/fr-ca.js new file mode 100644 index 00000000..2658de99 --- /dev/null +++ b/sources/plugins/save/lang/fr-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'fr-ca', { + toolbar: 'Sauvegarder' +} ); diff --git a/sources/plugins/save/lang/fr.js b/sources/plugins/save/lang/fr.js new file mode 100644 index 00000000..343eb2a3 --- /dev/null +++ b/sources/plugins/save/lang/fr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'fr', { + toolbar: 'Enregistrer' +} ); diff --git a/sources/plugins/save/lang/gl.js b/sources/plugins/save/lang/gl.js new file mode 100644 index 00000000..be320708 --- /dev/null +++ b/sources/plugins/save/lang/gl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'gl', { + toolbar: 'Gardar' +} ); diff --git a/sources/plugins/save/lang/gu.js b/sources/plugins/save/lang/gu.js new file mode 100644 index 00000000..44a2d6ba --- /dev/null +++ b/sources/plugins/save/lang/gu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'gu', { + toolbar: 'સેવ' +} ); diff --git a/sources/plugins/save/lang/he.js b/sources/plugins/save/lang/he.js new file mode 100644 index 00000000..44113764 --- /dev/null +++ b/sources/plugins/save/lang/he.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'he', { + toolbar: 'שמירה' +} ); diff --git a/sources/plugins/save/lang/hi.js b/sources/plugins/save/lang/hi.js new file mode 100644 index 00000000..d68a1e96 --- /dev/null +++ b/sources/plugins/save/lang/hi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'hi', { + toolbar: 'सेव' +} ); diff --git a/sources/plugins/save/lang/hr.js b/sources/plugins/save/lang/hr.js new file mode 100644 index 00000000..92486d6e --- /dev/null +++ b/sources/plugins/save/lang/hr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'hr', { + toolbar: 'Snimi' +} ); diff --git a/sources/plugins/save/lang/hu.js b/sources/plugins/save/lang/hu.js new file mode 100644 index 00000000..7c609f66 --- /dev/null +++ b/sources/plugins/save/lang/hu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'hu', { + toolbar: 'Mentés' +} ); diff --git a/sources/plugins/save/lang/id.js b/sources/plugins/save/lang/id.js new file mode 100644 index 00000000..8f5c6034 --- /dev/null +++ b/sources/plugins/save/lang/id.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'id', { + toolbar: 'Simpan' +} ); diff --git a/sources/plugins/save/lang/is.js b/sources/plugins/save/lang/is.js new file mode 100644 index 00000000..2a6b3dae --- /dev/null +++ b/sources/plugins/save/lang/is.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'is', { + toolbar: 'Vista' +} ); diff --git a/sources/plugins/save/lang/it.js b/sources/plugins/save/lang/it.js new file mode 100644 index 00000000..6181e482 --- /dev/null +++ b/sources/plugins/save/lang/it.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'it', { + toolbar: 'Salva' +} ); diff --git a/sources/plugins/save/lang/ja.js b/sources/plugins/save/lang/ja.js new file mode 100644 index 00000000..6fefc175 --- /dev/null +++ b/sources/plugins/save/lang/ja.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'ja', { + toolbar: '保存' +} ); diff --git a/sources/plugins/save/lang/ka.js b/sources/plugins/save/lang/ka.js new file mode 100644 index 00000000..556c4963 --- /dev/null +++ b/sources/plugins/save/lang/ka.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'ka', { + toolbar: 'ჩაწერა' +} ); diff --git a/sources/plugins/save/lang/km.js b/sources/plugins/save/lang/km.js new file mode 100644 index 00000000..7e43926b --- /dev/null +++ b/sources/plugins/save/lang/km.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'km', { + toolbar: 'រក្សាទុក' +} ); diff --git a/sources/plugins/save/lang/ko.js b/sources/plugins/save/lang/ko.js new file mode 100644 index 00000000..7d2155fd --- /dev/null +++ b/sources/plugins/save/lang/ko.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'ko', { + toolbar: '저장' +} ); diff --git a/sources/plugins/save/lang/ku.js b/sources/plugins/save/lang/ku.js new file mode 100644 index 00000000..428ebbc7 --- /dev/null +++ b/sources/plugins/save/lang/ku.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'ku', { + toolbar: 'پاشکەوتکردن' +} ); diff --git a/sources/plugins/save/lang/lt.js b/sources/plugins/save/lang/lt.js new file mode 100644 index 00000000..6f80d48c --- /dev/null +++ b/sources/plugins/save/lang/lt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'lt', { + toolbar: 'Išsaugoti' +} ); diff --git a/sources/plugins/save/lang/lv.js b/sources/plugins/save/lang/lv.js new file mode 100644 index 00000000..ed763045 --- /dev/null +++ b/sources/plugins/save/lang/lv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'lv', { + toolbar: 'Saglabāt' +} ); diff --git a/sources/plugins/save/lang/mk.js b/sources/plugins/save/lang/mk.js new file mode 100644 index 00000000..61819d31 --- /dev/null +++ b/sources/plugins/save/lang/mk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'mk', { + toolbar: 'Save' // MISSING +} ); diff --git a/sources/plugins/save/lang/mn.js b/sources/plugins/save/lang/mn.js new file mode 100644 index 00000000..ba625c4c --- /dev/null +++ b/sources/plugins/save/lang/mn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'mn', { + toolbar: 'Хадгалах' +} ); diff --git a/sources/plugins/save/lang/ms.js b/sources/plugins/save/lang/ms.js new file mode 100644 index 00000000..4818a8fd --- /dev/null +++ b/sources/plugins/save/lang/ms.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'ms', { + toolbar: 'Simpan' +} ); diff --git a/sources/plugins/save/lang/nb.js b/sources/plugins/save/lang/nb.js new file mode 100644 index 00000000..47158ee9 --- /dev/null +++ b/sources/plugins/save/lang/nb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'nb', { + toolbar: 'Lagre' +} ); diff --git a/sources/plugins/save/lang/nl.js b/sources/plugins/save/lang/nl.js new file mode 100644 index 00000000..9611b028 --- /dev/null +++ b/sources/plugins/save/lang/nl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'nl', { + toolbar: 'Opslaan' +} ); diff --git a/sources/plugins/save/lang/no.js b/sources/plugins/save/lang/no.js new file mode 100644 index 00000000..1a15d996 --- /dev/null +++ b/sources/plugins/save/lang/no.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'no', { + toolbar: 'Lagre' +} ); diff --git a/sources/plugins/save/lang/pl.js b/sources/plugins/save/lang/pl.js new file mode 100644 index 00000000..cb41e863 --- /dev/null +++ b/sources/plugins/save/lang/pl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'pl', { + toolbar: 'Zapisz' +} ); diff --git a/sources/plugins/save/lang/pt-br.js b/sources/plugins/save/lang/pt-br.js new file mode 100644 index 00000000..c78840b2 --- /dev/null +++ b/sources/plugins/save/lang/pt-br.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'pt-br', { + toolbar: 'Salvar' +} ); diff --git a/sources/plugins/save/lang/pt.js b/sources/plugins/save/lang/pt.js new file mode 100644 index 00000000..087b2603 --- /dev/null +++ b/sources/plugins/save/lang/pt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'pt', { + toolbar: 'Guardar' +} ); diff --git a/sources/plugins/save/lang/ro.js b/sources/plugins/save/lang/ro.js new file mode 100644 index 00000000..31cef218 --- /dev/null +++ b/sources/plugins/save/lang/ro.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'ro', { + toolbar: 'Salvează' +} ); diff --git a/sources/plugins/save/lang/ru.js b/sources/plugins/save/lang/ru.js new file mode 100644 index 00000000..19f85cde --- /dev/null +++ b/sources/plugins/save/lang/ru.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'ru', { + toolbar: 'Сохранить' +} ); diff --git a/sources/plugins/save/lang/si.js b/sources/plugins/save/lang/si.js new file mode 100644 index 00000000..ed66b7cd --- /dev/null +++ b/sources/plugins/save/lang/si.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'si', { + toolbar: 'ආරක්ෂා කරන්න' +} ); diff --git a/sources/plugins/save/lang/sk.js b/sources/plugins/save/lang/sk.js new file mode 100644 index 00000000..650be532 --- /dev/null +++ b/sources/plugins/save/lang/sk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'sk', { + toolbar: 'Uložiť' +} ); diff --git a/sources/plugins/save/lang/sl.js b/sources/plugins/save/lang/sl.js new file mode 100644 index 00000000..0ad06fdf --- /dev/null +++ b/sources/plugins/save/lang/sl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'sl', { + toolbar: 'Shrani' +} ); diff --git a/sources/plugins/save/lang/sq.js b/sources/plugins/save/lang/sq.js new file mode 100644 index 00000000..666e8cfa --- /dev/null +++ b/sources/plugins/save/lang/sq.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'sq', { + toolbar: 'Ruaje' +} ); diff --git a/sources/plugins/save/lang/sr-latn.js b/sources/plugins/save/lang/sr-latn.js new file mode 100644 index 00000000..0b6ad39f --- /dev/null +++ b/sources/plugins/save/lang/sr-latn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'sr-latn', { + toolbar: 'Sačuvaj' +} ); diff --git a/sources/plugins/save/lang/sr.js b/sources/plugins/save/lang/sr.js new file mode 100644 index 00000000..c0c4c5e2 --- /dev/null +++ b/sources/plugins/save/lang/sr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'sr', { + toolbar: 'Сачувај' +} ); diff --git a/sources/plugins/save/lang/sv.js b/sources/plugins/save/lang/sv.js new file mode 100644 index 00000000..cf0b9de1 --- /dev/null +++ b/sources/plugins/save/lang/sv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'sv', { + toolbar: 'Spara' +} ); diff --git a/sources/plugins/save/lang/th.js b/sources/plugins/save/lang/th.js new file mode 100644 index 00000000..4f09b831 --- /dev/null +++ b/sources/plugins/save/lang/th.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'th', { + toolbar: 'บันทึก' +} ); diff --git a/sources/plugins/save/lang/tr.js b/sources/plugins/save/lang/tr.js new file mode 100644 index 00000000..faae6d88 --- /dev/null +++ b/sources/plugins/save/lang/tr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'tr', { + toolbar: 'Kaydet' +} ); diff --git a/sources/plugins/save/lang/tt.js b/sources/plugins/save/lang/tt.js new file mode 100644 index 00000000..3a93eb34 --- /dev/null +++ b/sources/plugins/save/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'tt', { + toolbar: 'Саклау' +} ); diff --git a/sources/plugins/save/lang/ug.js b/sources/plugins/save/lang/ug.js new file mode 100644 index 00000000..7e919d56 --- /dev/null +++ b/sources/plugins/save/lang/ug.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'ug', { + toolbar: 'ساقلا' +} ); diff --git a/sources/plugins/save/lang/uk.js b/sources/plugins/save/lang/uk.js new file mode 100644 index 00000000..ea3922f7 --- /dev/null +++ b/sources/plugins/save/lang/uk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'uk', { + toolbar: 'Зберегти' +} ); diff --git a/sources/plugins/save/lang/vi.js b/sources/plugins/save/lang/vi.js new file mode 100644 index 00000000..f7c8734c --- /dev/null +++ b/sources/plugins/save/lang/vi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'vi', { + toolbar: 'Lưu' +} ); diff --git a/sources/plugins/save/lang/zh-cn.js b/sources/plugins/save/lang/zh-cn.js new file mode 100644 index 00000000..e2950e34 --- /dev/null +++ b/sources/plugins/save/lang/zh-cn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'zh-cn', { + toolbar: '保存' +} ); diff --git a/sources/plugins/save/lang/zh.js b/sources/plugins/save/lang/zh.js new file mode 100644 index 00000000..e9bf39c1 --- /dev/null +++ b/sources/plugins/save/lang/zh.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'save', 'zh', { + toolbar: '儲存' +} ); diff --git a/sources/plugins/save/plugin.js b/sources/plugins/save/plugin.js new file mode 100644 index 00000000..54ac3acd --- /dev/null +++ b/sources/plugins/save/plugin.js @@ -0,0 +1,67 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview The Save plugin. + */ + +( function() { + var saveCmd = { + readOnly: 1, + + exec: function( editor ) { + if ( editor.fire( 'save' ) ) { + var $form = editor.element.$.form; + + if ( $form ) { + try { + $form.submit(); + } catch ( e ) { + // If there's a button named "submit" then the form.submit + // function is masked and can't be called in IE/FF, so we + // call the click() method of that button. + if ( $form.submit.click ) + $form.submit.click(); + } + } + } + } + }; + + var pluginName = 'save'; + + // Register a plugin named "save". + CKEDITOR.plugins.add( pluginName, { + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'save', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + // Save plugin is for replace mode only. + if ( editor.elementMode != CKEDITOR.ELEMENT_MODE_REPLACE ) + return; + + var command = editor.addCommand( pluginName, saveCmd ); + command.modes = { wysiwyg: !!( editor.element.$.form ) }; + + editor.ui.addButton && editor.ui.addButton( 'Save', { + label: editor.lang.save.toolbar, + command: pluginName, + toolbar: 'document,10' + } ); + } + } ); +} )(); + +/** + * Fired when the user clicks the Save button on the editor toolbar. + * This event allows to overwrite the default Save button behavior. + * + * @since 4.2 + * @event save + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + */ diff --git a/sources/plugins/scayt/CHANGELOG.md b/sources/plugins/scayt/CHANGELOG.md new file mode 100644 index 00000000..ac33d966 --- /dev/null +++ b/sources/plugins/scayt/CHANGELOG.md @@ -0,0 +1,20 @@ +SCAYT plugin for CKEditor 4 Changelog +==================== +### CKEditor 4.5.6 + +New Features: +* CKEditor [language adddon](http://ckeditor.com/addon/language) support +* CKEditor [placeholder adddon](http://ckeditor.com/addon/placeholder) support +* Drag and Drop support +* *Experimental* GRAYT functionality http://www.webspellchecker.net/samples/scayt-ckeditor-plugin.html#25 + +Fixed issues: +* [#98](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/98) SCAYT Affects Dialog Double Click. Fixed in SCAYT Core. +* [#102](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/102) SCAYT Core performance enhancements +* [#104](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/104) SCAYT's spans leak into the clipboard and after pasting +* [#105](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/105) Javascript error fired in case of multiple instances of CKEditor in one page +* [#107](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/107) SCAYT should not check non-editable parts of content +* [#108](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/108) Latest SCAYT copies id of editor element to the iframe +* SCAYT stops working when CKEditor Undo plug-in not enabled +* Issue with pasting SCAYT markup in CKEditor +* SCAYT stops working after pressing Cancel button in WSC dialog diff --git a/sources/plugins/scayt/LICENSE.md b/sources/plugins/scayt/LICENSE.md new file mode 100644 index 00000000..844ab4de --- /dev/null +++ b/sources/plugins/scayt/LICENSE.md @@ -0,0 +1,28 @@ +Software License Agreement +========================== + +**CKEditor SCAYT Plugin** +Copyright © 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved. + +Licensed under the terms of any of the following licenses at your choice: + +* GNU General Public License Version 2 or later (the "GPL"): + http://www.gnu.org/licenses/gpl.html + +* GNU Lesser General Public License Version 2.1 or later (the "LGPL"): + http://www.gnu.org/licenses/lgpl.html + +* Mozilla Public License Version 1.1 or later (the "MPL"): + http://www.mozilla.org/MPL/MPL-1.1.html + +You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. + +Sources of Intellectual Property Included in this plugin +-------------------------------------------------------- + +Where not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission. + +Trademarks +---------- + +CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. diff --git a/sources/plugins/scayt/README.md b/sources/plugins/scayt/README.md new file mode 100644 index 00000000..1231d91e --- /dev/null +++ b/sources/plugins/scayt/README.md @@ -0,0 +1,25 @@ +CKEditor SCAYT Plugin +===================== + +This plugin brings Spell Check As You Type (SCAYT) into up to CKEditor 4+. + +SCAYT is a "installation-less", using the web-services of [WebSpellChecker.net](http://www.webspellchecker.net/). It's an out of the box solution. + +Installation +------------ + +1. Clone/copy this repository contents in a new "plugins/scayt" folder in your CKEditor installation. +2. Enable the "scayt" plugin in the CKEditor configuration file (config.js): + + config.extraPlugins = 'scayt'; + +That's all. SCAYT will appear on the editor toolbar and will be ready to use. + +License +------- + +Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). + +See LICENSE.md for more information. + +Developed in cooperation with [WebSpellChecker.net](http://www.webspellchecker.net/). diff --git a/sources/plugins/scayt/dialogs/options.js b/sources/plugins/scayt/dialogs/options.js new file mode 100644 index 00000000..c26b3506 --- /dev/null +++ b/sources/plugins/scayt/dialogs/options.js @@ -0,0 +1,573 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +CKEDITOR.dialog.add( 'scaytDialog', function( editor ) { + var scayt_instance = editor.scayt; + + var aboutTabDefinition = '

    ' + + '

    ' + scayt_instance.getLocal('version') + scayt_instance.getVersion() + '

    ' + + '

    ' + scayt_instance.getLocal('text_copyrights') + '

    '; + + var doc = CKEDITOR.document; + + var optionGenerator = function() { + var scayt_instance_ = editor.scayt, + applicationConfig = scayt_instance.getApplicationConfig(), + optionArrayUiCheckboxes = [], + optionLocalizationList = { + "ignore-all-caps-words" : "label_allCaps", + "ignore-domain-names" : "label_ignoreDomainNames", + "ignore-words-with-mixed-cases" : "label_mixedCase", + "ignore-words-with-numbers" : "label_mixedWithDigits" + }; + + for(var option in applicationConfig) { + + var checkboxConfig = { + type: "checkbox" + }; + + checkboxConfig.id = option; + checkboxConfig.label = scayt_instance.getLocal(optionLocalizationList[option]); + + optionArrayUiCheckboxes.push(checkboxConfig); + } + + return optionArrayUiCheckboxes; + }; + + var languageModelState = { + isChanged : function() { + return (this.newLang === null || this.currentLang === this.newLang) ? false : true; + }, + currentLang: scayt_instance.getLang(), + newLang: null, + reset: function() { + this.currentLang = scayt_instance.getLang(); + this.newLang = null; + }, + id: 'lang' + }; + + var generateDialogTabs = function(tabsList, editor) { + var tabs = [], + uiTabs = editor.config.scayt_uiTabs; + + if(!uiTabs) { + return tabsList; + } else { + for(var i in uiTabs) { + (uiTabs[i] == 1) && tabs.push(tabsList[i]); + } + + tabs.push(tabsList[tabsList.length - 1]); + } + + return tabs; + }; + + var dialogTabs = [{ + id : 'options', + label : scayt_instance.getLocal('tab_options'), + onShow: function() { + // console.log("tab show"); + }, + elements : [ + { + type: 'vbox', + id: 'scaytOptions', + children: optionGenerator(), + onShow: function() { + var optionsTab = this.getChild(), + scayt_instance = editor.scayt; + for(var i = 0; i < this.getChild().length; i++) { + this.getChild()[i].setValue(scayt_instance.getApplicationConfig()[this.getChild()[i].id]); + } + + } + } + + ] + }, + { + id : 'langs', + label : scayt_instance.getLocal('tab_languages'), + elements : [ + { + id: "leftLangColumn", + type: 'vbox', + align: 'left', + widths: ['100'], + children: [ + { + type: 'html', + id: 'langBox', + style: 'overflow: hidden; white-space: normal;margin-bottom:15px;', + html: '
    ', + onShow: function() { + var scayt_instance = editor.scayt; + var lang = scayt_instance.getLang(), + prefix_id = "scaytLang_", + radio = doc.getById(prefix_id + editor.name + '_' + lang); + + radio.$.checked = true; + } + }, + { + type: 'html', + id: 'graytLanguagesHint', + html: '
    - This languages are supported by Grammar As You Type(GRAYT).
    ', + onShow: function() { + var graytLanguagesHint = doc.getById(editor.name + 'graytLanguagesHint'); + + if (!editor.config.grayt_autoStartup) { + graytLanguagesHint.$.style.display = 'none'; + } + } + } + ] + } + ] + }, + { + id : 'dictionaries', + label : scayt_instance.getLocal('tab_dictionaries'), + elements : [ + { + type: 'vbox', + id: 'rightCol_col__left', + children: [ + { + type: 'html', + id: 'dictionaryNote', + html: '' + }, + { + type: 'text', + id: 'dictionaryName', + label: scayt_instance.getLocal('label_fieldNameDic') || 'Dictionary name', + onShow: function(data) { + var dialog = data.sender, + scayt_instance = editor.scayt; + + // IE7 specific fix + setTimeout(function() { + // clear dictionaryNote field + dialog.getContentElement("dictionaries", "dictionaryNote").getElement().setText(''); + + // restore/clear dictionaryName field + if(scayt_instance.getUserDictionaryName() != null && scayt_instance.getUserDictionaryName() != '') { + dialog.getContentElement("dictionaries", "dictionaryName").setValue(scayt_instance.getUserDictionaryName()); + } + }, 0); + } + }, + { + type: 'hbox', + id: 'notExistDic', + align: 'left', + style: 'width:auto;', + widths: [ '50%', '50%' ], + children: [ + { + type: 'button', + id: 'createDic', + label: scayt_instance.getLocal('btn_createDic'), + title: scayt_instance.getLocal('btn_createDic'), + onClick: function() { + var dialog = this.getDialog(), + self = dialogDefinition, + scayt_instance = editor.scayt, + name = dialog.getContentElement("dictionaries", "dictionaryName").getValue(); + + scayt_instance.createUserDictionary(name, function(response) { + if(!response.error) { + self.toggleDictionaryButtons.call(dialog, true); + } + response.dialog = dialog; + response.command = "create"; + response.name = name; + editor.fire("scaytUserDictionaryAction", response); + }, function(error) { + error.dialog = dialog; + error.command = "create"; + error.name = name; + editor.fire("scaytUserDictionaryActionError", error); + }); + } + }, + { + type: 'button', + id: 'restoreDic', + label: scayt_instance.getLocal('btn_restoreDic'), + title: scayt_instance.getLocal('btn_restoreDic'), + onClick: function() { + var dialog = this.getDialog(), + scayt_instance = editor.scayt, + self = dialogDefinition, + name = dialog.getContentElement("dictionaries", "dictionaryName").getValue(); + + scayt_instance.restoreUserDictionary(name, function(response) { + response.dialog = dialog; + if(!response.error) { + self.toggleDictionaryButtons.call(dialog, true); + } + response.command = "restore"; + response.name = name; + editor.fire("scaytUserDictionaryAction", response); + }, function(error) { + error.dialog = dialog; + error.command = "restore"; + error.name = name; + editor.fire("scaytUserDictionaryActionError", error); + }); + } + } + ] + }, + { + type: 'hbox', + id: 'existDic', + align: 'left', + style: 'width:auto;', + widths: [ '50%', '50%' ], + children: [ + { + type: 'button', + id: 'removeDic', + label: scayt_instance.getLocal('btn_deleteDic'), + title: scayt_instance.getLocal('btn_deleteDic'), + onClick: function() { + var dialog = this.getDialog(), + scayt_instance = editor.scayt, + self = dialogDefinition, + dictionaryNameField = dialog.getContentElement("dictionaries", "dictionaryName"), + name = dictionaryNameField.getValue(); + + scayt_instance.removeUserDictionary(name, function(response) { + dictionaryNameField.setValue(""); + if(!response.error) { + self.toggleDictionaryButtons.call(dialog, false); + } + response.dialog = dialog; + response.command = "remove"; + response.name = name; + editor.fire("scaytUserDictionaryAction", response); + }, function(error) { + error.dialog = dialog; + error.command = "remove"; + error.name = name; + editor.fire("scaytUserDictionaryActionError", error); + }); + } + }, + { + type: 'button', + id: 'renameDic', + label: scayt_instance.getLocal('btn_renameDic'), + title: scayt_instance.getLocal('btn_renameDic'), + onClick: function() { + var dialog = this.getDialog(), + scayt_instance = editor.scayt, + name = dialog.getContentElement("dictionaries", "dictionaryName").getValue(); + + scayt_instance.renameUserDictionary(name, function(response) { + response.dialog = dialog; + response.command = "rename"; + response.name = name; + editor.fire("scaytUserDictionaryAction", response); + }, function(error) { + error.dialog = dialog; + error.command = "rename"; + error.name = name; + editor.fire("scaytUserDictionaryActionError", error); + }); + } + } + ] + }, + { + type: 'html', + id: 'dicInfo', + html: '
    ' + scayt_instance.getLocal('text_descriptionDic') + '
    ' + } + ] + } + ] + }, + { + id : 'about', + label : scayt_instance.getLocal('tab_about'), + elements : [ + { + type : 'html', + id : 'about', + style : 'margin: 5px 5px;', + html : '
    ' + + aboutTabDefinition + + '
    ' + } + ] + }]; + + editor.on("scaytUserDictionaryAction", function(event) { + var UILib = SCAYT.prototype.UILib, + dialog = event.data.dialog, + dictionaryNote = dialog.getContentElement("dictionaries", "dictionaryNote").getElement(), + scayt_instance = event.editor.scayt, + messageTemplate; + + if(event.data.error === undefined) { + + // success message + messageTemplate = scayt_instance.getLocal("message_success_" + event.data.command + "Dic"); + messageTemplate = messageTemplate.replace('%s', event.data.name); + dictionaryNote.setText(messageTemplate); + UILib.css(dictionaryNote.$, {color: 'blue'}); + } else { + + // error message + if(event.data.name === '') { + + // empty dictionary name + dictionaryNote.setText(scayt_instance.getLocal('message_info_emptyDic')); + } else { + messageTemplate = scayt_instance.getLocal("message_error_" + event.data.command + "Dic"); + messageTemplate = messageTemplate.replace('%s', event.data.name); + dictionaryNote.setText(messageTemplate); + } + UILib.css(dictionaryNote.$, {color: 'red'}); + + if(scayt_instance.getUserDictionaryName() != null && scayt_instance.getUserDictionaryName() != '') { + dialog.getContentElement("dictionaries", "dictionaryName").setValue(scayt_instance.getUserDictionaryName()); + } else { + dialog.getContentElement("dictionaries", "dictionaryName").setValue(""); + } + } + }); + + editor.on("scaytUserDictionaryActionError", function(event) { + var UILib = SCAYT.prototype.UILib, + dialog = event.data.dialog, + dictionaryNote = dialog.getContentElement("dictionaries", "dictionaryNote").getElement(), + scayt_instance = event.editor.scayt, + messageTemplate; + + if(event.data.name === '') { + + // empty dictionary name + dictionaryNote.setText(scayt_instance.getLocal('message_info_emptyDic')); + } else { + messageTemplate = scayt_instance.getLocal("message_error_" + event.data.command + "Dic"); + messageTemplate = messageTemplate.replace('%s', event.data.name); + dictionaryNote.setText(messageTemplate); + } + UILib.css(dictionaryNote.$, {color: 'red'}); + + + if(scayt_instance.getUserDictionaryName() != null && scayt_instance.getUserDictionaryName() != '') { + dialog.getContentElement("dictionaries", "dictionaryName").setValue(scayt_instance.getUserDictionaryName()); + } else { + dialog.getContentElement("dictionaries", "dictionaryName").setValue(""); + } + + }); + + var plugin = CKEDITOR.plugins.scayt; + + var dialogDefinition = { + title: scayt_instance.getLocal('text_title'), + resizable: CKEDITOR.DIALOG_RESIZE_BOTH, + minWidth: 340, + minHeight: 260, + onLoad: function() { + if(editor.config.scayt_uiTabs[1] == 0) { + return; + } + + var dialog = this, + self = dialogDefinition, + langBoxes = self.getLangBoxes.call(dialog); + + langBoxes.getParent().setStyle("white-space", "normal"); + + //dialog.data = editor.fire( 'scaytDialog', {} ); + self.renderLangList(langBoxes); + + var scayt_instance = editor.scayt; + + this.definition.minWidth = this.getSize().width; + this.resize(this.definition.minWidth, this.definition.minHeight); + }, + onCancel: function() { + languageModelState.reset(); + }, + onHide: function() { + editor.unlockSelection(); + }, + onShow: function() { + editor.fire("scaytDialogShown", this); + + if(editor.config.scayt_uiTabs[2] == 0) { + return; + } + + var scayt_instance = editor.scayt, + self = dialogDefinition, + dialog = this, + dictionaryNameField = dialog.getContentElement("dictionaries", "dictionaryName"), + existance = dialog.getContentElement("dictionaries", "existDic").getElement().getParent(), + notExistance = dialog.getContentElement("dictionaries", "notExistDic").getElement().getParent(); + + existance.hide(); + notExistance.hide(); + + if(scayt_instance.getUserDictionaryName() != null && scayt_instance.getUserDictionaryName() != '') { + dialog.getContentElement("dictionaries", "dictionaryName").setValue(scayt_instance.getUserDictionaryName()); + existance.show(); + } else { + dictionaryNameField.setValue(""); + notExistance.show(); + } + }, + onOk: function() { + var dialog = this, + self = dialogDefinition, + scayt_instance = editor.scayt, + scaytOptions = dialog.getContentElement("options", "scaytOptions"), + changedOptions = self.getChangedOption.call(dialog); + + scayt_instance.commitOption({ changedOptions: changedOptions }); + }, + toggleDictionaryButtons: function(exist) { + var existance = this.getContentElement("dictionaries", "existDic").getElement().getParent(), + notExistance = this.getContentElement("dictionaries", "notExistDic").getElement().getParent(); + + if(exist) { + existance.show(); + notExistance.hide(); + } else { + existance.hide(); + notExistance.show(); + } + + }, + getChangedOption: function() { + var changedOption = {}; + + if(editor.config.scayt_uiTabs[0] == 1) { + var dialog = this, + scaytOptions = dialog.getContentElement("options", "scaytOptions").getChild(); + + for(var i = 0; i < scaytOptions.length; i++) { + if(scaytOptions[i].isChanged()) { + changedOption[scaytOptions[i].id] = scaytOptions[i].getValue(); + } + } + } + + if(languageModelState.isChanged()) { + changedOption[languageModelState.id] = editor.config.scayt_sLang = languageModelState.currentLang = languageModelState.newLang; + } + + return changedOption; + }, + buildRadioInputs: function(key, value, isSupportedByGrayt) { + var divContainer = new CKEDITOR.dom.element( 'div' ), + doc = CKEDITOR.document, + id = "scaytLang_" + editor.name + '_' + value, + radio = CKEDITOR.dom.element.createFromHtml( '' ), + + radioLabel = new CKEDITOR.dom.element( 'label' ), + scayt_instance = editor.scayt; + + divContainer.setStyles({ + "white-space": "normal", + 'position': 'relative', + 'padding-bottom': '2px' + }); + + radio.on( 'click', function(data) { + languageModelState.newLang = data.sender.getValue(); + }); + + radioLabel.appendText(key); + radioLabel.setAttribute("for", id); + + if(isSupportedByGrayt && editor.config.grayt_autoStartup) { + radioLabel.setStyles({ + 'color': '#02b620' + }); + } + + divContainer.append(radio); + divContainer.append(radioLabel); + + if(value === scayt_instance.getLang()) { + radio.setAttribute("checked", true); + radio.setAttribute('defaultChecked', 'defaultChecked'); + } + + return divContainer; + }, + renderLangList: function(langBoxes) { + var dialog = this, + leftCol = langBoxes.find('#left-col-' + editor.name).getItem(0), + rightCol = langBoxes.find('#right-col-' + editor.name).getItem(0), + scaytLangList = scayt_instance.getScaytLangList(), + graytLangList = scayt_instance.getGraytLangList(), + mergedLangList = {}, + sortable = [], + counter = 0, + isSupportedByGrayt = false, + half, lang; + + for(lang in scaytLangList.ltr) { + mergedLangList[lang] = scaytLangList.ltr[lang]; + } + + for(lang in scaytLangList.rtl) { + mergedLangList[lang] = scaytLangList.rtl[lang]; + } + + // sort alphabetically lang list + for(lang in mergedLangList) { + sortable.push([lang, mergedLangList[lang]]); + } + sortable.sort(function(a, b) { + var result = 0; + if(a[1] > b[1]) { + result = 1; + } else if(a[1] < b[1]) { + result = -1; + } + return result; + }); + mergedLangList = {}; + for(var i = 0; i < sortable.length; i++) { + mergedLangList[sortable[i][0]] = sortable[i][1]; + } + + half = Math.round(sortable.length / 2); + + for(lang in mergedLangList) { + counter++; + isSupportedByGrayt = (lang in graytLangList.ltr) || (lang in graytLangList.rtl); + dialog.buildRadioInputs(mergedLangList[lang], lang, isSupportedByGrayt).appendTo(counter <= half ? leftCol : rightCol); + } + }, + getLangBoxes: function() { + var dialog = this, + langboxes = dialog.getContentElement("langs", "langBox").getElement(); + + return langboxes; + }, + contents: generateDialogTabs(dialogTabs, editor) + }; + + return dialogDefinition; +}); diff --git a/sources/plugins/scayt/dialogs/toolbar.css b/sources/plugins/scayt/dialogs/toolbar.css new file mode 100644 index 00000000..ecabdac9 --- /dev/null +++ b/sources/plugins/scayt/dialogs/toolbar.css @@ -0,0 +1,71 @@ +a +{ + text-decoration:none; + padding: 2px 4px 4px 6px; + display : block; + border-width: 1px; + border-style: solid; + margin : 0px; +} + +a.cke_scayt_toogle:hover, +a.cke_scayt_toogle:focus, +a.cke_scayt_toogle:active +{ + border-color: #316ac5; + background-color: #dff1ff; + color : #000; + cursor: pointer; + margin : 0px; +} +a.cke_scayt_toogle { + color : #316ac5; + border-color: #fff; +} +.scayt_enabled a.cke_scayt_item { + color : #316ac5; + border-color: #fff; + margin : 0px; +} +.scayt_disabled a.cke_scayt_item { + color : gray; + border-color : #fff; +} +.scayt_enabled a.cke_scayt_item:hover, +.scayt_enabled a.cke_scayt_item:focus, +.scayt_enabled a.cke_scayt_item:active +{ + border-color: #316ac5; + background-color: #dff1ff; + color : #000; + cursor: pointer; +} +.scayt_disabled a.cke_scayt_item:hover, +.scayt_disabled a.cke_scayt_item:focus, +.scayt_disabled a.cke_scayt_item:active +{ + border-color: gray; + background-color: #dff1ff; + color : gray; + cursor: no-drop; +} +.cke_scayt_set_on, .cke_scayt_set_off +{ + display: none; +} +.scayt_enabled .cke_scayt_set_on +{ + display: none; +} +.scayt_disabled .cke_scayt_set_on +{ + display: inline; +} +.scayt_disabled .cke_scayt_set_off +{ + display: none; +} +.scayt_enabled .cke_scayt_set_off +{ + display: inline; +} diff --git a/sources/plugins/scayt/icons/hidpi/scayt.png b/sources/plugins/scayt/icons/hidpi/scayt.png new file mode 100644 index 00000000..58a9f4c1 Binary files /dev/null and b/sources/plugins/scayt/icons/hidpi/scayt.png differ diff --git a/sources/plugins/scayt/icons/scayt.png b/sources/plugins/scayt/icons/scayt.png new file mode 100644 index 00000000..701ceee6 Binary files /dev/null and b/sources/plugins/scayt/icons/scayt.png differ diff --git a/sources/plugins/scayt/lang/af.js b/sources/plugins/scayt/lang/af.js new file mode 100644 index 00000000..57e54237 --- /dev/null +++ b/sources/plugins/scayt/lang/af.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'af', { + btn_about: 'SCAYT info', + btn_dictionaries: 'Woordeboeke', + btn_disable: 'SCAYT af', + btn_enable: 'SCAYT aan', + btn_langs:'Tale', + btn_options: 'Opsies', + text_title: 'Speltoets terwyl u tik' +}); diff --git a/sources/plugins/scayt/lang/ar.js b/sources/plugins/scayt/lang/ar.js new file mode 100644 index 00000000..d7a5cace --- /dev/null +++ b/sources/plugins/scayt/lang/ar.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'ar', { + btn_about: 'عن SCAYT', + btn_dictionaries: 'قواميس', + btn_disable: 'تعطيل SCAYT', + btn_enable: 'تفعيل SCAYT', + btn_langs:'لغات', + btn_options: 'خيارات', + text_title: 'تدقيق إملائي أثناء الكتابة' +}); diff --git a/sources/plugins/scayt/lang/bg.js b/sources/plugins/scayt/lang/bg.js new file mode 100644 index 00000000..550e82f2 --- /dev/null +++ b/sources/plugins/scayt/lang/bg.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'bg', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Речници', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/bn.js b/sources/plugins/scayt/lang/bn.js new file mode 100644 index 00000000..f0398d8c --- /dev/null +++ b/sources/plugins/scayt/lang/bn.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'bn', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/bs.js b/sources/plugins/scayt/lang/bs.js new file mode 100644 index 00000000..268fab28 --- /dev/null +++ b/sources/plugins/scayt/lang/bs.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'bs', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/ca.js b/sources/plugins/scayt/lang/ca.js new file mode 100644 index 00000000..798cd0f3 --- /dev/null +++ b/sources/plugins/scayt/lang/ca.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'ca', { + btn_about: 'Quant a l\'SCAYT', + btn_dictionaries: 'Diccionaris', + btn_disable: 'Deshabilita SCAYT', + btn_enable: 'Habilitat l\'SCAYT', + btn_langs:'Idiomes', + btn_options: 'Opcions', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/cs.js b/sources/plugins/scayt/lang/cs.js new file mode 100644 index 00000000..a0ec6141 --- /dev/null +++ b/sources/plugins/scayt/lang/cs.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'cs', { + btn_about: 'O aplikaci SCAYT', + btn_dictionaries: 'Slovníky', + btn_disable: 'Vypnout SCAYT', + btn_enable: 'Zapnout SCAYT', + btn_langs:'Jazyky', + btn_options: 'Nastavení', + text_title: 'Kontrola pravopisu během psaní (SCAYT)' +}); diff --git a/sources/plugins/scayt/lang/cy.js b/sources/plugins/scayt/lang/cy.js new file mode 100644 index 00000000..b94d6c31 --- /dev/null +++ b/sources/plugins/scayt/lang/cy.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'cy', { + btn_about: 'Ynghylch SCAYT', + btn_dictionaries: 'Geiriaduron', + btn_disable: 'Analluogi SCAYT', + btn_enable: 'Galluogi SCAYT', + btn_langs:'Ieithoedd', + btn_options: 'Opsiynau', + text_title: 'Gwirio\'r Sillafu Wrth Deipio' +}); diff --git a/sources/plugins/scayt/lang/da.js b/sources/plugins/scayt/lang/da.js new file mode 100644 index 00000000..de05a38a --- /dev/null +++ b/sources/plugins/scayt/lang/da.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'da', { + btn_about: 'Om SCAYT', + btn_dictionaries: 'Ordbøger', + btn_disable: 'Deaktivér SCAYT', + btn_enable: 'Aktivér SCAYT', + btn_langs:'Sprog', + btn_options: 'Indstillinger', + text_title: 'Stavekontrol mens du skriver' +}); diff --git a/sources/plugins/scayt/lang/de.js b/sources/plugins/scayt/lang/de.js new file mode 100644 index 00000000..1b68c7b7 --- /dev/null +++ b/sources/plugins/scayt/lang/de.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'de', { + btn_about: 'Über SCAYT', + btn_dictionaries: 'Wörterbücher', + btn_disable: 'SCAYT ausschalten', + btn_enable: 'SCAYT einschalten', + btn_langs:'Sprachen', + btn_options: 'Optionen', + text_title: 'Rechtschreibprüfung während der Texteingabe (SCAYT)' +}); diff --git a/sources/plugins/scayt/lang/el.js b/sources/plugins/scayt/lang/el.js new file mode 100644 index 00000000..0bfe6209 --- /dev/null +++ b/sources/plugins/scayt/lang/el.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'el', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Λεξικά', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Γλώσσες', + btn_options: 'Επιλογές', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/en-au.js b/sources/plugins/scayt/lang/en-au.js new file mode 100644 index 00000000..f86d0db6 --- /dev/null +++ b/sources/plugins/scayt/lang/en-au.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'en-au', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/en-ca.js b/sources/plugins/scayt/lang/en-ca.js new file mode 100644 index 00000000..fa67a845 --- /dev/null +++ b/sources/plugins/scayt/lang/en-ca.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'en-ca', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/en-gb.js b/sources/plugins/scayt/lang/en-gb.js new file mode 100644 index 00000000..53923dfc --- /dev/null +++ b/sources/plugins/scayt/lang/en-gb.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'en-gb', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/en.js b/sources/plugins/scayt/lang/en.js new file mode 100644 index 00000000..a9fb9047 --- /dev/null +++ b/sources/plugins/scayt/lang/en.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'en', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/eo.js b/sources/plugins/scayt/lang/eo.js new file mode 100644 index 00000000..f539e031 --- /dev/null +++ b/sources/plugins/scayt/lang/eo.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'eo', { + btn_about: 'Pri OKDVT', + btn_dictionaries: 'Vortaroj', + btn_disable: 'Malebligi OKDVT', + btn_enable: 'Ebligi OKDVT', + btn_langs:'Lingvoj', + btn_options: 'Opcioj', + text_title: 'OrtografiKontrolado Dum Vi Tajpas (OKDVT)' +}); diff --git a/sources/plugins/scayt/lang/es.js b/sources/plugins/scayt/lang/es.js new file mode 100644 index 00000000..15c29d12 --- /dev/null +++ b/sources/plugins/scayt/lang/es.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'es', { + btn_about: 'Acerca de Corrector', + btn_dictionaries: 'Diccionarios', + btn_disable: 'Desactivar Corrector', + btn_enable: 'Activar Corrector', + btn_langs:'Idiomas', + btn_options: 'Opciones', + text_title: 'Comprobar Ortografía Mientras Escribe' +}); diff --git a/sources/plugins/scayt/lang/et.js b/sources/plugins/scayt/lang/et.js new file mode 100644 index 00000000..a107bd82 --- /dev/null +++ b/sources/plugins/scayt/lang/et.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'et', { + btn_about: 'SCAYT-ist lähemalt', + btn_dictionaries: 'Sõnaraamatud', + btn_disable: 'SCAYT keelatud', + btn_enable: 'SCAYT lubatud', + btn_langs:'Keeled', + btn_options: 'Valikud', + text_title: 'Õigekirjakontroll kirjutamise ajal' +}); diff --git a/sources/plugins/scayt/lang/eu.js b/sources/plugins/scayt/lang/eu.js new file mode 100644 index 00000000..deeeadaf --- /dev/null +++ b/sources/plugins/scayt/lang/eu.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'eu', { + btn_about: 'SCAYTi buruz', + btn_dictionaries: 'Hiztegiak', + btn_disable: 'Desgaitu SCAYT', + btn_enable: 'Gaitu SCAYT', + btn_langs:'Hizkuntzak', + btn_options: 'Aukerak', + text_title: 'Ortografia Zuzenketa Idatzi Ahala (SCAYT)' +}); diff --git a/sources/plugins/scayt/lang/fa.js b/sources/plugins/scayt/lang/fa.js new file mode 100644 index 00000000..0830f689 --- /dev/null +++ b/sources/plugins/scayt/lang/fa.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'fa', { + btn_about: 'درباره SCAYT', + btn_dictionaries: 'دیکشنریها', + btn_disable: 'غیرفعالسازی SCAYT', + btn_enable: 'فعالسازی SCAYT', + btn_langs:'زبانها', + btn_options: 'گزینهها', + text_title: 'بررسی املای تایپ شما' +}); diff --git a/sources/plugins/scayt/lang/fi.js b/sources/plugins/scayt/lang/fi.js new file mode 100644 index 00000000..3d2a1b17 --- /dev/null +++ b/sources/plugins/scayt/lang/fi.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'fi', { + btn_about: 'Tietoja oikoluvusta kirjoitetaessa', + btn_dictionaries: 'Sanakirjat', + btn_disable: 'Poista käytöstä oikoluku kirjoitetaessa', + btn_enable: 'Ota käyttöön oikoluku kirjoitettaessa', + btn_langs:'Kielet', + btn_options: 'Asetukset', + text_title: 'Oikolue kirjoitettaessa' +}); diff --git a/sources/plugins/scayt/lang/fo.js b/sources/plugins/scayt/lang/fo.js new file mode 100644 index 00000000..61f5c66c --- /dev/null +++ b/sources/plugins/scayt/lang/fo.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'fo', { + btn_about: 'Um SCAYT', + btn_dictionaries: 'Orðabøkur', + btn_disable: 'Nokta SCAYT', + btn_enable: 'Loyv SCAYT', + btn_langs:'Tungumál', + btn_options: 'Uppseting', + text_title: 'Kanna stavseting, meðan tú skrivar' +}); diff --git a/sources/plugins/scayt/lang/fr-ca.js b/sources/plugins/scayt/lang/fr-ca.js new file mode 100644 index 00000000..18a14f51 --- /dev/null +++ b/sources/plugins/scayt/lang/fr-ca.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'fr-ca', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/fr.js b/sources/plugins/scayt/lang/fr.js new file mode 100644 index 00000000..c2c0ffb9 --- /dev/null +++ b/sources/plugins/scayt/lang/fr.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'fr', { + btn_about: 'A propos de SCAYT', + btn_dictionaries: 'Dictionnaires', + btn_disable: 'Désactiver SCAYT', + btn_enable: 'Activer SCAYT', + btn_langs:'Langues', + btn_options: 'Options', + text_title: 'Vérification de l\'Orthographe en Cours de Frappe (SCAYT)' +}); diff --git a/sources/plugins/scayt/lang/gl.js b/sources/plugins/scayt/lang/gl.js new file mode 100644 index 00000000..665c10d9 --- /dev/null +++ b/sources/plugins/scayt/lang/gl.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'gl', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/gu.js b/sources/plugins/scayt/lang/gu.js new file mode 100644 index 00000000..5b7b5d0b --- /dev/null +++ b/sources/plugins/scayt/lang/gu.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'gu', { + btn_about: 'SCAYT વિષે', + btn_dictionaries: 'શબ્દકોશ', + btn_disable: 'SCAYT ડિસેબલ કરવું', + btn_enable: 'SCAYT એનેબલ કરવું', + btn_langs:'ભાષાઓ', + btn_options: 'વિકલ્પો', + text_title: 'ટાઈપ કરતા સ્પેલ તપાસો' +}); diff --git a/sources/plugins/scayt/lang/he.js b/sources/plugins/scayt/lang/he.js new file mode 100644 index 00000000..3f4301a9 --- /dev/null +++ b/sources/plugins/scayt/lang/he.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'he', { + btn_about: 'אודות SCAYT', + btn_dictionaries: 'מילון', + btn_disable: 'בטל SCAYT', + btn_enable: 'אפשר SCAYT', + btn_langs:'שפות', + btn_options: 'אפשרויות', + text_title: 'בדיקת איות בזמן כתיבה (SCAYT)' +}); diff --git a/sources/plugins/scayt/lang/hi.js b/sources/plugins/scayt/lang/hi.js new file mode 100644 index 00000000..d05d1976 --- /dev/null +++ b/sources/plugins/scayt/lang/hi.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'hi', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/hr.js b/sources/plugins/scayt/lang/hr.js new file mode 100644 index 00000000..94da1a4a --- /dev/null +++ b/sources/plugins/scayt/lang/hr.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'hr', { + btn_about: 'O SCAYT', + btn_dictionaries: 'Rječnici', + btn_disable: 'Onemogući SCAYT', + btn_enable: 'Omogući SCAYT', + btn_langs:'Jezici', + btn_options: 'Opcije', + text_title: 'Provjeri pravopis tijekom tipkanja (SCAYT)' +}); diff --git a/sources/plugins/scayt/lang/hu.js b/sources/plugins/scayt/lang/hu.js new file mode 100644 index 00000000..5c1fff35 --- /dev/null +++ b/sources/plugins/scayt/lang/hu.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'hu', { + btn_about: 'SCAYT névjegy', + btn_dictionaries: 'Szótár', + btn_disable: 'SCAYT letiltása', + btn_enable: 'SCAYT engedélyezése', + btn_langs:'Nyelvek', + btn_options: 'Beállítások', + text_title: 'Helyesírás ellenőrzés gépelés közben' +}); diff --git a/sources/plugins/scayt/lang/is.js b/sources/plugins/scayt/lang/is.js new file mode 100644 index 00000000..d3c488f0 --- /dev/null +++ b/sources/plugins/scayt/lang/is.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'is', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/it.js b/sources/plugins/scayt/lang/it.js new file mode 100644 index 00000000..05fe90f2 --- /dev/null +++ b/sources/plugins/scayt/lang/it.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'it', { + btn_about: 'About COMS', + btn_dictionaries: 'Dizionari', + btn_disable: 'Disabilita COMS', + btn_enable: 'Abilita COMS', + btn_langs:'Lingue', + btn_options: 'Opzioni', + text_title: 'Controllo Ortografico Mentre Scrivi' +}); diff --git a/sources/plugins/scayt/lang/ja.js b/sources/plugins/scayt/lang/ja.js new file mode 100644 index 00000000..bc66e6e9 --- /dev/null +++ b/sources/plugins/scayt/lang/ja.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'ja', { + btn_about: 'SCAYTバージョン', + btn_dictionaries: '辞書', + btn_disable: 'SCAYT無効', + btn_enable: 'SCAYT有効', + btn_langs:'言語', + btn_options: 'オプション', + text_title: 'スペルチェック設定(SCAYT)' +}); diff --git a/sources/plugins/scayt/lang/ka.js b/sources/plugins/scayt/lang/ka.js new file mode 100644 index 00000000..2504a998 --- /dev/null +++ b/sources/plugins/scayt/lang/ka.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'ka', { + btn_about: 'SCAYT-ის შესახებ', + btn_dictionaries: 'ლექსიკონები', + btn_disable: 'SCAYT-ის გამორთვა', + btn_enable: 'SCAYT-ის ჩართვა', + btn_langs:'ენები', + btn_options: 'პარამეტრები', + text_title: 'მართლწერის შემოწმება კრეფისას' +}); diff --git a/sources/plugins/scayt/lang/km.js b/sources/plugins/scayt/lang/km.js new file mode 100644 index 00000000..e0749431 --- /dev/null +++ b/sources/plugins/scayt/lang/km.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'km', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/ko.js b/sources/plugins/scayt/lang/ko.js new file mode 100644 index 00000000..26311081 --- /dev/null +++ b/sources/plugins/scayt/lang/ko.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'ko', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/ku.js b/sources/plugins/scayt/lang/ku.js new file mode 100644 index 00000000..b811be52 --- /dev/null +++ b/sources/plugins/scayt/lang/ku.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'ku', { + btn_about: 'دهربارهی SCAYT', + btn_dictionaries: 'فهرههنگهکان', + btn_disable: 'ناچالاککردنی SCAYT', + btn_enable: 'چالاککردنی SCAYT', + btn_langs:'زمانهکان', + btn_options: 'ههڵبژارده', + text_title: 'پشکنینی نووسه لهکاتی نووسین' +}); diff --git a/sources/plugins/scayt/lang/lt.js b/sources/plugins/scayt/lang/lt.js new file mode 100644 index 00000000..f9744ce8 --- /dev/null +++ b/sources/plugins/scayt/lang/lt.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'lt', { + btn_about: 'Apie SCAYT', + btn_dictionaries: 'Žodynai', + btn_disable: 'Išjungti SCAYT', + btn_enable: 'Įjungti SCAYT', + btn_langs:'Kalbos', + btn_options: 'Parametrai', + text_title: 'Tikrinti klaidas kai rašoma' +}); diff --git a/sources/plugins/scayt/lang/lv.js b/sources/plugins/scayt/lang/lv.js new file mode 100644 index 00000000..b839a5b5 --- /dev/null +++ b/sources/plugins/scayt/lang/lv.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'lv', { + btn_about: 'Par SCAYT', + btn_dictionaries: 'Vārdnīcas', + btn_disable: 'Atslēgt SCAYT', + btn_enable: 'Ieslēgt SCAYT', + btn_langs:'Valodas', + btn_options: 'Uzstādījumi', + text_title: 'Pārbaudīt gramatiku rakstot' +}); diff --git a/sources/plugins/scayt/lang/mk.js b/sources/plugins/scayt/lang/mk.js new file mode 100644 index 00000000..f740b8a3 --- /dev/null +++ b/sources/plugins/scayt/lang/mk.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'mk', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/mn.js b/sources/plugins/scayt/lang/mn.js new file mode 100644 index 00000000..5df4bf0b --- /dev/null +++ b/sources/plugins/scayt/lang/mn.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'mn', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Толь бичгүүд', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Хэлүүд', + btn_options: 'Сонголт', + text_title: 'Spell Check As You Type' +}); diff --git a/sources/plugins/scayt/lang/ms.js b/sources/plugins/scayt/lang/ms.js new file mode 100644 index 00000000..0c6b31c7 --- /dev/null +++ b/sources/plugins/scayt/lang/ms.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'ms', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' // MISSING +}); diff --git a/sources/plugins/scayt/lang/nb.js b/sources/plugins/scayt/lang/nb.js new file mode 100644 index 00000000..73cb009a --- /dev/null +++ b/sources/plugins/scayt/lang/nb.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'nb', { + btn_about: 'Om SCAYT', + btn_dictionaries: 'Ordbøker', + btn_disable: 'Slå av SCAYT', + btn_enable: 'Slå på SCAYT', + btn_langs:'Språk', + btn_options: 'Valg', + text_title: 'Stavekontroll mens du skriver' +}); diff --git a/sources/plugins/scayt/lang/nl.js b/sources/plugins/scayt/lang/nl.js new file mode 100644 index 00000000..4d6ed02b --- /dev/null +++ b/sources/plugins/scayt/lang/nl.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'nl', { + btn_about: 'Over SCAYT', + btn_dictionaries: 'Woordenboeken', + btn_disable: 'SCAYT uitschakelen', + btn_enable: 'SCAYT inschakelen', + btn_langs:'Talen', + btn_options: 'Opties', + text_title: 'Controleer de spelling tijdens het typen' +}); diff --git a/sources/plugins/scayt/lang/no.js b/sources/plugins/scayt/lang/no.js new file mode 100644 index 00000000..0d0006aa --- /dev/null +++ b/sources/plugins/scayt/lang/no.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'no', { + btn_about: 'Om SCAYT', + btn_dictionaries: 'Ordbøker', + btn_disable: 'Slå av SCAYT', + btn_enable: 'Slå på SCAYT', + btn_langs:'Språk', + btn_options: 'Valg', + text_title: 'Stavekontroll mens du skriver' +}); diff --git a/sources/plugins/scayt/lang/pl.js b/sources/plugins/scayt/lang/pl.js new file mode 100644 index 00000000..db3eb362 --- /dev/null +++ b/sources/plugins/scayt/lang/pl.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'pl', { + btn_about: 'Informacje o SCAYT', + btn_dictionaries: 'Słowniki', + btn_disable: 'Wyłącz SCAYT', + btn_enable: 'Włącz SCAYT', + btn_langs:'Języki', + btn_options: 'Opcje', + text_title: 'Sprawdź pisownię podczas pisania (SCAYT)' +}); diff --git a/sources/plugins/scayt/lang/pt-br.js b/sources/plugins/scayt/lang/pt-br.js new file mode 100644 index 00000000..ac37fc42 --- /dev/null +++ b/sources/plugins/scayt/lang/pt-br.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'pt-br', { + btn_about: 'Sobre a correção ortográfica durante a digitação', + btn_dictionaries: 'Dicionários', + btn_disable: 'Desabilitar correção ortográfica durante a digitação', + btn_enable: 'Habilitar correção ortográfica durante a digitação', + btn_langs:'Idiomas', + btn_options: 'Opções', + text_title: 'Correção ortográfica durante a digitação' +}); diff --git a/sources/plugins/scayt/lang/pt.js b/sources/plugins/scayt/lang/pt.js new file mode 100644 index 00000000..932b2df2 --- /dev/null +++ b/sources/plugins/scayt/lang/pt.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'pt', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' // MISSING +}); diff --git a/sources/plugins/scayt/lang/ro.js b/sources/plugins/scayt/lang/ro.js new file mode 100644 index 00000000..b2c84b2d --- /dev/null +++ b/sources/plugins/scayt/lang/ro.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'ro', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' // MISSING +}); diff --git a/sources/plugins/scayt/lang/ru.js b/sources/plugins/scayt/lang/ru.js new file mode 100644 index 00000000..0f142cd1 --- /dev/null +++ b/sources/plugins/scayt/lang/ru.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'ru', { + btn_about: 'О SCAYT', + btn_dictionaries: 'Словари', + btn_disable: 'Отключить SCAYT', + btn_enable: 'Включить SCAYT', + btn_langs:'Языки', + btn_options: 'Настройки', + text_title: 'Проверка орфографии по мере ввода (SCAYT)' +}); diff --git a/sources/plugins/scayt/lang/sk.js b/sources/plugins/scayt/lang/sk.js new file mode 100644 index 00000000..81ca5bcc --- /dev/null +++ b/sources/plugins/scayt/lang/sk.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'sk', { + btn_about: 'O KPPP (Kontrola pravopisu počas písania)', + btn_dictionaries: 'Slovníky', + btn_disable: 'Zakázať KPPP (Kontrola pravopisu počas písania)', + btn_enable: 'Povoliť KPPP (Kontrola pravopisu počas písania)', + btn_langs:'Jazyky', + btn_options: 'Možnosti', + text_title: 'Kontrola pravopisu počas písania' +}); diff --git a/sources/plugins/scayt/lang/sl.js b/sources/plugins/scayt/lang/sl.js new file mode 100644 index 00000000..44f1c122 --- /dev/null +++ b/sources/plugins/scayt/lang/sl.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'sl', { + btn_about: 'O storitvi SCAYT', + btn_dictionaries: 'Slovarji', + btn_disable: 'Onemogoči SCAYT', + btn_enable: 'Omogoči SCAYT', + btn_langs:'Jeziki', + btn_options: 'Možnosti', + text_title: 'Črkovanje med tipkanjem' +}); diff --git a/sources/plugins/scayt/lang/sr-latn.js b/sources/plugins/scayt/lang/sr-latn.js new file mode 100644 index 00000000..d2dbbd3d --- /dev/null +++ b/sources/plugins/scayt/lang/sr-latn.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'sr-latn', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' // MISSING +}); diff --git a/sources/plugins/scayt/lang/sr.js b/sources/plugins/scayt/lang/sr.js new file mode 100644 index 00000000..6fa35d2c --- /dev/null +++ b/sources/plugins/scayt/lang/sr.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'sr', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' // MISSING +}); diff --git a/sources/plugins/scayt/lang/sv.js b/sources/plugins/scayt/lang/sv.js new file mode 100644 index 00000000..738ac7e3 --- /dev/null +++ b/sources/plugins/scayt/lang/sv.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'sv', { + btn_about: 'Om SCAYT', + btn_dictionaries: 'Ordlistor', + btn_disable: 'Inaktivera SCAYT', + btn_enable: 'Aktivera SCAYT', + btn_langs:'Språk', + btn_options: 'Inställningar', + text_title: 'Stavningskontroll medan du skriver' +}); diff --git a/sources/plugins/scayt/lang/th.js b/sources/plugins/scayt/lang/th.js new file mode 100644 index 00000000..f129315b --- /dev/null +++ b/sources/plugins/scayt/lang/th.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'th', { + btn_about: 'About SCAYT', + btn_dictionaries: 'Dictionaries', + btn_disable: 'Disable SCAYT', + btn_enable: 'Enable SCAYT', + btn_langs:'Languages', + btn_options: 'Options', + text_title: 'Spell Check As You Type' // MISSING +}); diff --git a/sources/plugins/scayt/lang/tr.js b/sources/plugins/scayt/lang/tr.js new file mode 100644 index 00000000..0e315091 --- /dev/null +++ b/sources/plugins/scayt/lang/tr.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'tr', { + btn_about: 'SCAYT\'ı hakkında', + btn_dictionaries: 'Sözlükler', + btn_disable: 'SCAYT\'ı pasifleştir', + btn_enable: 'SCAYT\'ı etkinleştir', + btn_langs:'Diller', + btn_options: 'Seçenekler', + text_title: 'Girmiş olduğunuz kelime denetimi' +}); diff --git a/sources/plugins/scayt/lang/ug.js b/sources/plugins/scayt/lang/ug.js new file mode 100644 index 00000000..e453cc71 --- /dev/null +++ b/sources/plugins/scayt/lang/ug.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'ug', { + btn_about: 'شۇئان ئىملا تەكشۈرۈش ھەققىدە', + btn_dictionaries: 'لۇغەت', + btn_disable: 'شۇئان ئىملا تەكشۈرۈشنى چەكلە', + btn_enable: 'شۇئان ئىملا تەكشۈرۈشنى قوزغات', + btn_langs:'تىل', + btn_options: 'تاللانما', + text_title: 'شۇئان ئىملا تەكشۈر' +}); diff --git a/sources/plugins/scayt/lang/uk.js b/sources/plugins/scayt/lang/uk.js new file mode 100644 index 00000000..682a897b --- /dev/null +++ b/sources/plugins/scayt/lang/uk.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'uk', { + btn_about: 'Про SCAYT', + btn_dictionaries: 'Словники', + btn_disable: 'Вимкнути SCAYT', + btn_enable: 'Ввімкнути SCAYT', + btn_langs:'Мови', + btn_options: 'Опції', + text_title: 'Перефірка орфографії по мірі набору' +}); diff --git a/sources/plugins/scayt/lang/vi.js b/sources/plugins/scayt/lang/vi.js new file mode 100644 index 00000000..fcdfeabe --- /dev/null +++ b/sources/plugins/scayt/lang/vi.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'vi', { + btn_about: 'Thông tin về SCAYT', + btn_dictionaries: 'Từ điển', + btn_disable: 'Tắt SCAYT', + btn_enable: 'Bật SCAYT', + btn_langs:'Ngôn ngữ', + btn_options: 'Tùy chọn', + text_title: 'Kiểm tra chính tả ngay khi gõ chữ (SCAYT)' +}); diff --git a/sources/plugins/scayt/lang/zh-cn.js b/sources/plugins/scayt/lang/zh-cn.js new file mode 100644 index 00000000..a58502af --- /dev/null +++ b/sources/plugins/scayt/lang/zh-cn.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'zh-cn', { + btn_about: '关于即时拼写检查', + btn_dictionaries: '字典', + btn_disable: '禁用即时拼写检查', + btn_enable: '启用即时拼写检查', + btn_langs:'语言', + btn_options: '选项', + text_title: '即时拼写检查' +}); diff --git a/sources/plugins/scayt/lang/zh.js b/sources/plugins/scayt/lang/zh.js new file mode 100644 index 00000000..0bb259e1 --- /dev/null +++ b/sources/plugins/scayt/lang/zh.js @@ -0,0 +1,13 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'scayt', 'zh', { + btn_about: '關於即時拼寫檢查', + btn_dictionaries: '字典', + btn_disable: '關閉即時拼寫檢查', + btn_enable: '啟用即時拼寫檢查', + btn_langs: '語言', + btn_options: '選項', + text_title: '即時拼寫檢查' +}); diff --git a/sources/plugins/scayt/plugin.js b/sources/plugins/scayt/plugin.js new file mode 100644 index 00000000..ef315263 --- /dev/null +++ b/sources/plugins/scayt/plugin.js @@ -0,0 +1,1800 @@ +'use strict'; +CKEDITOR.plugins.add('scayt', { + + //requires : ['menubutton', 'dialog'], + requires: 'menubutton,dialog', + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en-au,en-ca,en-gb,en,eo,es,et,eu,fa,fi,fo,fr-ca,fr,gl,gu,he,hi,hr,hu,is,it,ja,ka,km,ko,lt,lv,mk,mn,ms,nb,nl,no,pl,pt-br,pt,ro,ru,sk,sl,sr-latn,sr,sv,th,tr,ug,uk,vi,zh-cn,zh', // %REMOVE_LINE_CORE% + icons: 'scayt', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + tabToOpen : null, + dialogName: 'scaytDialog', + init: function(editor) { + var self = this, + plugin = CKEDITOR.plugins.scayt; + + this.bindEvents(editor); + this.parseConfig(editor); + this.addRule(editor); + + // source mode + CKEDITOR.dialog.add(this.dialogName, CKEDITOR.getUrl(this.path + 'dialogs/options.js')); + // end source mode + + this.addMenuItems(editor); + var config = editor.config, + lang = editor.lang.scayt, + env = CKEDITOR.env; + + editor.ui.add('Scayt', CKEDITOR.UI_MENUBUTTON, { + label : lang.text_title, + title : ( editor.plugins.wsc ? editor.lang.wsc.title : lang.text_title ), + // SCAYT doesn't work in IE Compatibility Mode and IE (8 & 9) Quirks Mode + modes : {wysiwyg: !(env.ie && ( env.version < 8 || env.quirks ) ) }, + toolbar: 'spellchecker,20', + refresh: function() { + var buttonState = editor.ui.instances.Scayt.getState(); + + // check if scayt is created + if(editor.scayt) { + // check if scayt is enabled + if(plugin.state.scayt[editor.name]) { + buttonState = CKEDITOR.TRISTATE_ON; + } else { + buttonState = CKEDITOR.TRISTATE_OFF; + } + } + + editor.fire('scaytButtonState', buttonState); + }, + onRender: function() { + var that = this; + + editor.on('scaytButtonState', function(ev) { + if(typeof ev.data !== undefined) { + that.setState(ev.data); + } + }); + }, + onMenu : function() { + var scaytInstance = editor.scayt; + + editor.getMenuItem('scaytToggle').label = editor.lang.scayt[(scaytInstance ? plugin.state.scayt[editor.name] : false) ? 'btn_disable' : 'btn_enable']; + + // If UI tab is disabled we shouldn't show menu item + var menuDefinition = { + scaytToggle : CKEDITOR.TRISTATE_OFF, + scaytOptions : scaytInstance ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, + scaytLangs : scaytInstance ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, + scaytDict : scaytInstance ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, + scaytAbout : scaytInstance ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, + WSC : editor.plugins.wsc ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED + }; + + if(!editor.config.scayt_uiTabs[0]) { + delete menuDefinition.scaytOptions; + } + + if(!editor.config.scayt_uiTabs[1]) { + delete menuDefinition.scaytLangs; + } + + if(!editor.config.scayt_uiTabs[2]) { + delete menuDefinition.scaytDict; + } + + return menuDefinition; + } + }); + + // If the 'contextmenu' plugin is loaded, register the listeners. + if(editor.contextMenu && editor.addMenuItems) { + editor.contextMenu.addListener(function(element, selection) { + var scaytInstance = editor.scayt, + result, selectionNode; + + if(scaytInstance) { + selectionNode = scaytInstance.getSelectionNode(); + + // SCAYT shouldn't build context menu if instance isnot created or word is without misspelling or grammar problem + if(selectionNode) { + var items = self.menuGenerator(editor, selectionNode); + + scaytInstance.showBanner('.' + editor.contextMenu._.definition.panel.className.split(' ').join(' .')); + result = items; + } + } + + return result; + }); + + editor.contextMenu._.onHide = CKEDITOR.tools.override(editor.contextMenu._.onHide, function(org) { + return function() { + var scaytInstance = editor.scayt; + + if(scaytInstance) { + scaytInstance.hideBanner(); + } + + return org.apply(this); + }; + }); + } + }, + addMenuItems: function(editor) { + var self = this, + plugin = CKEDITOR.plugins.scayt, + graytGroups = ['grayt_description', 'grayt_suggest', 'grayt_control'], + menuGroup = 'scaytButton'; + + editor.addMenuGroup(menuGroup); + + var items_order = editor.config.scayt_contextMenuItemsOrder.split('|'); + + for(var pos = 0 ; pos < items_order.length ; pos++) { + items_order[pos] = 'scayt_' + items_order[pos]; + } + items_order = graytGroups.concat(items_order); + + if(items_order && items_order.length) { + for(var pos = 0 ; pos < items_order.length ; pos++) { + editor.addMenuGroup(items_order[pos], pos - 10); + } + } + + editor.addCommand( 'scaytToggle', { + exec: function(editor) { + var scaytInstance = editor.scayt; + + plugin.state.scayt[editor.name] = !plugin.state.scayt[editor.name]; + + if(plugin.state.scayt[editor.name] === true) { + if(!scaytInstance) { + plugin.createScayt(editor); + } + } else { + if(scaytInstance) { + plugin.destroy(editor); + } + } + } + } ); + + editor.addCommand( 'scaytAbout', { + exec: function(editor) { + var scaytInstance = editor.scayt; + + scaytInstance.tabToOpen = 'about'; + editor.lockSelection(); + editor.openDialog(self.dialogName); + } + } ); + + editor.addCommand( 'scaytOptions', { + exec: function(editor) { + var scaytInstance = editor.scayt; + + scaytInstance.tabToOpen = 'options'; + editor.lockSelection(); + editor.openDialog(self.dialogName); + } + } ); + + editor.addCommand( 'scaytLangs', { + exec: function(editor) { + var scaytInstance = editor.scayt; + + scaytInstance.tabToOpen = 'langs'; + editor.lockSelection(); + editor.openDialog(self.dialogName); + } + } ); + + editor.addCommand( 'scaytDict', { + exec: function(editor) { + var scaytInstance = editor.scayt; + + scaytInstance.tabToOpen = 'dictionaries'; + editor.lockSelection(); + editor.openDialog(self.dialogName); + } + } ); + + var uiMenuItems = { + scaytToggle: { + label : editor.lang.scayt.btn_enable, + group : menuGroup, + command: 'scaytToggle' + }, + scaytAbout: { + label : editor.lang.scayt.btn_about, + group : menuGroup, + command: 'scaytAbout' + }, + scaytOptions: { + label : editor.lang.scayt.btn_options, + group : menuGroup, + command: 'scaytOptions' + }, + scaytLangs: { + label : editor.lang.scayt.btn_langs, + group : menuGroup, + command: 'scaytLangs' + }, + scaytDict: { + label : editor.lang.scayt.btn_dictionaries, + group : menuGroup, + command: 'scaytDict' + } + }; + + if(editor.plugins.wsc) { + uiMenuItems.WSC = { + label : editor.lang.wsc.toolbar, + group : menuGroup, + onClick: function() { + var inlineMode = (editor.elementMode == CKEDITOR.ELEMENT_MODE_INLINE), + plugin = CKEDITOR.plugins.scayt, + scaytInstance = editor.scayt, + text = inlineMode ? editor.container.getText() : editor.document.getBody().getText(); + + text = text.replace(/\s/g, ''); + + if(text) { + if(scaytInstance && plugin.state.scayt[editor.name] && scaytInstance.setMarkupPaused) { + scaytInstance.setMarkupPaused(true); + } + + editor.lockSelection(); + editor.execCommand('checkspell'); + } else { + alert('Nothing to check!'); + } + } + } + } + + editor.addMenuItems(uiMenuItems); + }, + bindEvents: function(editor) { + var self = this, + plugin = CKEDITOR.plugins.scayt, + inline_mode = (editor.elementMode == CKEDITOR.ELEMENT_MODE_INLINE); + + var scaytDestroy = function() { + plugin.destroy(editor); + }; + + /** + * Dirty fix for placeholder drag&drop + * Should be fixed with next release + */ + /* + editor.on('drop', function(evt) { + var dropRange = evt.data.dropRange; + var b = dropRange.createBookmark(true); + editor.scayt.removeMarkupInSelectionNode({ selectionNode: evt.data.target.$, forceBookmark: false }); + dropRange.moveToBookmark(b); + + evt.data.dropRange = dropRange; + return evt; + }, this, null, 0); // We should be sure that we modify dropRange before CKEDITOR.plugins.clipboard calls + */ + + var contentDomReady = function() { + // The event is fired when editable iframe node was reinited so we should restart our service + if (plugin.state.scayt[editor.name] && !editor.readOnly && !editor.scayt) { + plugin.createScayt(editor); + } + }; + + var addMarkupStateHandlers = function() { + var editable = editor.editable(); + + editable.attachListener( editable, 'focus', function( evt ) { + if( CKEDITOR.plugins.scayt && !editor.scayt ) { + setTimeout(contentDomReady, 0); // we need small timeout in order to correctly set initial 'focused' option value in SCAYT core + } + + var pluginStatus = CKEDITOR.plugins.scayt && CKEDITOR.plugins.scayt.state.scayt[editor.name] && editor.scayt, + selectedElement, ranges, textLength, range; + + if((inline_mode ? true : pluginStatus) && editor._.savedSelection) { + selectedElement = editor._.savedSelection.getSelectedElement(); + ranges = !selectedElement && editor._.savedSelection.getRanges(); + + for(var i = 0; i < ranges.length; i++) { + range = ranges[i]; + // we need to check type of node value in order to avoid error in IE when accessing 'nodeValue' property + if(typeof range.startContainer.$.nodeValue === 'string') { + textLength = range.startContainer.getText().length; + if(textLength < range.startOffset || textLength < range.endOffset) { + editor.unlockSelection(false); + } + } + } + } + }, this, null, -10 ); // priority "-10" is set to call SCAYT CKEDITOR.editor#unlockSelection before CKEDITOR.editor#unlockSelection call + }; + + var contentDomHandler = function() { + if(inline_mode) { + + if (!editor.config.scayt_inlineModeImmediateMarkup) { + /** + * Give an opportunity to CKEditor to perform all needed updates + * and only after that call 'scaytDestroy' method (#72725) + */ + editor.on('blur', function () { setTimeout( scaytDestroy, 0 ); } ); + editor.on('focus', contentDomReady); + + // We need to check if editor has focus(created) right now. + // If editor is active - make attempt to create scayt + if(editor.focusManager.hasFocus) { + contentDomReady(); + } + + } else { + contentDomReady(); + } + + } else { + contentDomReady(); + } + + addMarkupStateHandlers(); + + /** + * 'mousedown' handler handle widget selection (click on widget). To + * fix the issue when widget#wrapper referenced to element which can + * be broken after markup. + */ + var editable = editor.editable(); + editable.attachListener(editable, 'mousedown', function( evt ) { + var target = evt.data.getTarget(); + var widget = editor.widgets && editor.widgets.getByElement( target ); + if ( widget ) { + widget.wrapper = target.getAscendant( function( el ) { + return el.hasAttribute( 'data-cke-widget-wrapper' ) + }, true ); + } + }, this, null, -10); // '-10': we need to be shure that widget#wrapper updated before any other calls + }; + + editor.on('contentDom', contentDomHandler); + + editor.on('beforeCommandExec', function(ev) { + var scaytInstance = editor.scayt, + selectedLangElement = null, + forceBookmark = false, + removeMarkupInsideSelection = true; + + // TODO: after switching in source mode not recreate SCAYT instance, try to just rerun markuping to don't make requests to server + if(ev.data.name in plugin.options.disablingCommandExec && editor.mode == 'wysiwyg') { + if(scaytInstance) { + plugin.destroy(editor); + editor.fire('scaytButtonState', CKEDITOR.TRISTATE_DISABLED); + } + } else if( ev.data.name === 'bold' || ev.data.name === 'italic' || ev.data.name === 'underline' || + ev.data.name === 'strike' || ev.data.name === 'subscript' || ev.data.name === 'superscript' || + ev.data.name === 'enter' || ev.data.name === 'cut' || ev.data.name === 'language') { + if(scaytInstance) { + if(ev.data.name === 'cut') { + removeMarkupInsideSelection = false; + // We need to force bookmark before we remove our markup. + // Otherwise we will get issues with cutting text via context menu. + forceBookmark = true; + } + + // We need to remove all SCAYT markup from 'lang' node before it will be deleted. + // We need to remove SCAYT markup from selected text before creating 'lang' node as well. + if(ev.data.name === 'language') { + selectedLangElement = editor.plugins.language.getCurrentLangElement(editor); + selectedLangElement = selectedLangElement && selectedLangElement.$; + // We need to force bookmark before we remove our markup. + // Otherwise we will get issues with cutting text via language plugin menu. + forceBookmark = true; + } + + editor.fire('reloadMarkupScayt', { + removeOptions: { + removeInside: removeMarkupInsideSelection, + forceBookmark: forceBookmark, + selectionNode: selectedLangElement + }, + timeout: 0 + }); + } + } + }); + + editor.on('beforeSetMode', function(ev) { + var scaytInstance; + // needed when we use: + // CKEDITOR.instances.editor_ID.setMode("source") + // CKEDITOR.instances.editor_ID.setMode("wysiwyg") + // can't be implemented in editor.on('mode', function(ev) {}); + if (ev.data == 'source') { + scaytInstance = editor.scayt; + if(scaytInstance) { + plugin.destroy(editor); + editor.fire('scaytButtonState', CKEDITOR.TRISTATE_DISABLED); + } + + // remove custom data from body, to prevent waste properties showing in IE8 + if(editor.document) { //GitHub #84 : make sure that document exists(e.g. when startup mode set to 'source') + editor.document.getBody().removeAttribute('_jquid'); + } + } + }); + + editor.on('afterCommandExec', function(ev) { + if(editor.mode == 'wysiwyg' && (ev.data.name == 'undo' || ev.data.name == 'redo')) { + setTimeout(function() { + var scaytInstance = editor.scayt, + scaytLangList = scaytInstance && scaytInstance.getScaytLangList(); + + /** + * Checks SCAYT initialization of LangList. To prevent immediate + * markup which is triggered by 'startSpellCheck' event. + * E.g.: Drop into inline CKEDITOR with scayt_autoStartup = true; + */ + if (!scaytLangList || !(scaytLangList.ltr && scaytLangList.rtl)) return; + + scaytInstance.fire('startSpellCheck, startGrammarCheck'); + }, 250); + } + }); + + // handle readonly changes + editor.on('readOnly', function(ev) { + var scaytInstance; + + if(ev) { + scaytInstance = editor.scayt; + + if(ev.editor.readOnly === true) { + if(scaytInstance) { + scaytInstance.fire('removeMarkupInDocument', {}); + } + } else { + if(scaytInstance) { + scaytInstance.fire('startSpellCheck, startGrammarCheck'); + } else if(ev.editor.mode == 'wysiwyg' && plugin.state.scayt[ev.editor.name] === true) { + plugin.createScayt(editor); + ev.editor.fire('scaytButtonState', CKEDITOR.TRISTATE_ON); + } + } + } + }); + + // we need to destroy SCAYT before CK editor will be completely destroyed + editor.on('beforeDestroy', scaytDestroy); + + //#9439 after SetData method fires contentDom event and SCAYT create additional instanse + // This way we should destroy SCAYT on setData event when contenteditable Iframe was re-created + editor.on('setData', function() { + scaytDestroy(); + + // in inline mode SetData does not fire contentDom event + if(editor.elementMode == CKEDITOR.ELEMENT_MODE_INLINE || editor.plugins.divarea) { + contentDomHandler(); + } + }, this, null, 50); + + /** + * Main entry point to react on changes in document + */ + editor.on('reloadMarkupScayt', function(ev) { + var removeOptions = ev.data && ev.data.removeOptions, + timeout = ev.data && ev.data.timeout; + + /** + * Perform removeMarkupInSelectionNode and 'startSpellCheck' fire + * asynchroniosly and keep CKEDITOR flow as expected + */ + setTimeout(function() { + var scaytInstance = editor.scayt, + scaytLangList = scaytInstance && scaytInstance.getScaytLangList(); + + /** + * Checks SCAYT initialization of LangList. To prevent immediate + * markup which is triggered by 'startSpellCheck' event. + * E.g.: Drop into inline CKEDITOR with scayt_autoStartup = true; + */ + if (!scaytLangList || !(scaytLangList.ltr && scaytLangList.rtl)) return; + + /** + * CKEditor can keep \u200B character in document (with selection#selectRanges) + * we need to take care about that. For this case we fire + * 'keydown' [left arrow], what will trigger 'removeFillingChar' on Webkit + * to cleanup the document + */ + editor.document.fire( 'keydown', new CKEDITOR.dom.event( { keyCode: 37 } ) ); + + /* trigger remove markup with 'startSpellCheck' */ + scaytInstance.removeMarkupInSelectionNode(removeOptions); + scaytInstance.fire('startSpellCheck, startGrammarCheck'); + }, timeout || 0 ); + }); + + // Reload spell-checking for current word after insertion completed. + editor.on('insertElement', function() { + // IE bug: we need wait here to make sure that focus is returned to editor, and we can store the selection before we proceed with markup + editor.fire('reloadMarkupScayt', {removeOptions: {forceBookmark: true}}); + }, this, null, 50); + + editor.on('insertHtml', function() { + editor.fire('reloadMarkupScayt'); + }, this, null, 50); + + editor.on('insertText', function() { + editor.fire('reloadMarkupScayt'); + }, this, null, 50); + + // The event is listening to open necessary dialog tab + editor.on('scaytDialogShown', function(ev) { + var dialog = ev.data, + scaytInstance = editor.scayt; + + dialog.selectPage(scaytInstance.tabToOpen); + }); + }, + parseConfig: function(editor) { + var plugin = CKEDITOR.plugins.scayt; + + // preprocess config for backward compatibility + plugin.replaceOldOptionsNames(editor.config); + + // Checking editor's config after initialization + if(typeof editor.config.scayt_autoStartup !== 'boolean') { + editor.config.scayt_autoStartup = false; + } + plugin.state.scayt[editor.name] = editor.config.scayt_autoStartup; + + if(typeof editor.config.grayt_autoStartup !== 'boolean') { + editor.config.grayt_autoStartup = false; + } + if(typeof editor.config.scayt_inlineModeImmediateMarkup !== 'boolean') { + editor.config.scayt_inlineModeImmediateMarkup = false; + } + plugin.state.grayt[editor.name] = editor.config.grayt_autoStartup; + + if(!editor.config.scayt_contextCommands) { + editor.config.scayt_contextCommands = 'ignore|ignoreall|add'; + } + + if(!editor.config.scayt_contextMenuItemsOrder) { + editor.config.scayt_contextMenuItemsOrder = 'suggest|moresuggest|control'; + } + + if(!editor.config.scayt_sLang) { + editor.config.scayt_sLang = 'en_US'; + } + + if(editor.config.scayt_maxSuggestions === undefined || typeof editor.config.scayt_maxSuggestions != 'number' || editor.config.scayt_maxSuggestions < 0) { + editor.config.scayt_maxSuggestions = 5; + } + + if(editor.config.scayt_minWordLength === undefined || typeof editor.config.scayt_minWordLength != 'number' || editor.config.scayt_minWordLength < 1) { + editor.config.scayt_minWordLength = 4; + } + + if(editor.config.scayt_customDictionaryIds === undefined || typeof editor.config.scayt_customDictionaryIds !== 'string') { + editor.config.scayt_customDictionaryIds = ''; + } + + if(editor.config.scayt_userDictionaryName === undefined || typeof editor.config.scayt_userDictionaryName !== 'string') { + editor.config.scayt_userDictionaryName = null; + } + + if(typeof editor.config.scayt_uiTabs === 'string' && editor.config.scayt_uiTabs.split(',').length === 3) { + var scayt_uiTabs = [], _tempUITabs = []; + editor.config.scayt_uiTabs = editor.config.scayt_uiTabs.split(','); + + CKEDITOR.tools.search(editor.config.scayt_uiTabs, function(value) { + if (Number(value) === 1 || Number(value) === 0) { + _tempUITabs.push(true); + scayt_uiTabs.push(Number(value)); + } else { + _tempUITabs.push(false); + } + }); + + if (CKEDITOR.tools.search(_tempUITabs, false) === null) { + editor.config.scayt_uiTabs = scayt_uiTabs; + } else { + editor.config.scayt_uiTabs = [1,1,1]; + } + + } else { + editor.config.scayt_uiTabs = [1,1,1]; + } + + if(typeof editor.config.scayt_serviceProtocol != 'string') { + editor.config.scayt_serviceProtocol = null; + } + + if(typeof editor.config.scayt_serviceHost != 'string') { + editor.config.scayt_serviceHost = null; + } + + if(typeof editor.config.scayt_servicePort != 'string') { + editor.config.scayt_servicePort = null; + } + + if(typeof editor.config.scayt_servicePath != 'string') { + editor.config.scayt_servicePath = null; + } + + if(!editor.config.scayt_moreSuggestions) { + editor.config.scayt_moreSuggestions = 'on'; + } + + if(typeof editor.config.scayt_customerId !== 'string') { + editor.config.scayt_customerId = '1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2'; + } + + if(typeof editor.config.scayt_srcUrl !== 'string') { + var protocol = document.location.protocol; + protocol = protocol.search(/https?:/) != -1 ? protocol : 'http:'; + + editor.config.scayt_srcUrl = protocol + '//svc.webspellchecker.net/spellcheck31/lf/scayt3/ckscayt/ckscayt.js'; + } + + if(typeof CKEDITOR.config.scayt_handleCheckDirty !== 'boolean') { + CKEDITOR.config.scayt_handleCheckDirty = true; + } + + if(typeof CKEDITOR.config.scayt_handleUndoRedo !== 'boolean') { + /* set default as 'true' */ + CKEDITOR.config.scayt_handleUndoRedo = true; + } + /* checking 'undo' plugin, if no disable SCAYT handler */ + CKEDITOR.config.scayt_handleUndoRedo = CKEDITOR.plugins.undo ? CKEDITOR.config.scayt_handleUndoRedo : false; + + if(typeof editor.config.scayt_multiLanguageMode !== 'boolean') { + editor.config.scayt_multiLanguageMode = false; + } + + if(typeof editor.config.scayt_multiLanguageStyles !== 'object') { + editor.config.scayt_multiLanguageStyles = {}; + } + + if(editor.config.scayt_ignoreAllCapsWords && typeof editor.config.scayt_ignoreAllCapsWords !== 'boolean') { + editor.config.scayt_ignoreAllCapsWords = false; + } + + if(editor.config.scayt_ignoreDomainNames && typeof editor.config.scayt_ignoreDomainNames !== 'boolean') { + editor.config.scayt_ignoreDomainNames = false; + } + + if(editor.config.scayt_ignoreWordsWithMixedCases && typeof editor.config.scayt_ignoreWordsWithMixedCases !== 'boolean') { + editor.config.scayt_ignoreWordsWithMixedCases = false; + } + + if(editor.config.scayt_ignoreWordsWithNumbers && typeof editor.config.scayt_ignoreWordsWithNumbers !== 'boolean') { + editor.config.scayt_ignoreWordsWithNumbers = false; + } + + if( editor.config.scayt_disableOptionsStorage ) { + var userOptions = CKEDITOR.tools.isArray( editor.config.scayt_disableOptionsStorage ) ? editor.config.scayt_disableOptionsStorage : ( typeof editor.config.scayt_disableOptionsStorage === 'string' ) ? [ editor.config.scayt_disableOptionsStorage ] : undefined, + availableValue = [ 'all', 'options', 'lang', 'ignore-all-caps-words', 'ignore-domain-names', 'ignore-words-with-mixed-cases', 'ignore-words-with-numbers'], + valuesOption = ['lang', 'ignore-all-caps-words', 'ignore-domain-names', 'ignore-words-with-mixed-cases', 'ignore-words-with-numbers'], + search = CKEDITOR.tools.search, + indexOf = CKEDITOR.tools.indexOf; + + var isValidOption = function( option ) { + return !!search( availableValue, option ); + }; + + var makeOptionsToStorage = function( options ) { + var retval = []; + + for (var i = 0; i < options.length; i++) { + var value = options[i], + isGroupOptionInUserOptions = !!search( options, 'options' ); + + if( !isValidOption( value ) || isGroupOptionInUserOptions && !!search( valuesOption, function( val ) { if( val === 'lang' ) { return false; } } ) ) { + return; + } + + if( !!search( valuesOption, value ) ) { + valuesOption.splice( indexOf( valuesOption, value ), 1 ); + } + + if( value === 'all' || isGroupOptionInUserOptions && !!search( options, 'lang' )) { + return []; + } + + if( value === 'options' ) { + valuesOption = [ 'lang' ]; + } + } + + retval = retval.concat( valuesOption ); + + return retval; + }; + + editor.config.scayt_disableOptionsStorage = makeOptionsToStorage( userOptions ); + } + }, + addRule: function(editor) { + var plugin = CKEDITOR.plugins.scayt, + dataProcessor = editor.dataProcessor, + htmlFilter = dataProcessor && dataProcessor.htmlFilter, + pathFilters = editor._.elementsPath && editor._.elementsPath.filters, + dataFilter = dataProcessor && dataProcessor.dataFilter, + removeFormatFilter = editor.addRemoveFormatFilter, + pathFilter = function(element) { + var scaytInstance = editor.scayt; + + if( scaytInstance && (element.hasAttribute(plugin.options.data_attribute_name) || element.hasAttribute(plugin.options.problem_grammar_data_attribute)) ) { + return false; + } + }, + removeFormatFilterTemplate = function(element) { + var scaytInstance = editor.scayt, + result = true; + + if( scaytInstance && (element.hasAttribute(plugin.options.data_attribute_name) || element.hasAttribute(plugin.options.problem_grammar_data_attribute)) ) { + result = false; + } + + return result; + }; + + if(pathFilters) { + pathFilters.push(pathFilter); + } + + if(dataFilter) { + var dataFilterRules = { + elements: { + span: function(element) { + + var scaytState = element.hasClass(plugin.options.misspelled_word_class) && element.attributes[plugin.options.data_attribute_name], + graytState = element.hasClass(plugin.options.problem_grammar_class) && element.attributes[plugin.options.problem_grammar_data_attribute]; + + if(plugin && (scaytState || graytState)) { + delete element.name; + } + + return element; + } + } + }; + + dataFilter.addRules(dataFilterRules); + } + + if (htmlFilter) { + var htmlFilterRules = { + elements: { + span: function(element) { + + var scaytState = element.hasClass(plugin.options.misspelled_word_class) && element.attributes[plugin.options.data_attribute_name], + graytState = element.hasClass(plugin.options.problem_grammar_class) && element.attributes[plugin.options.problem_grammar_data_attribute]; + + if(plugin && (scaytState || graytState)) { + delete element.name; + } + + return element; + } + } + }; + + htmlFilter.addRules(htmlFilterRules); + } + + if(removeFormatFilter) { + removeFormatFilter.call(editor, removeFormatFilterTemplate); + } + }, + scaytMenuDefinition: function(editor) { + var self = this, + plugin = CKEDITOR.plugins.scayt, + scayt_instance = editor.scayt; + + return { + scayt: { + scayt_ignore: { + label: scayt_instance.getLocal('btn_ignore'), + group : 'scayt_control', + order : 1, + exec: function(editor) { + var scaytInstance = editor.scayt; + scaytInstance.ignoreWord(); + } + }, + scayt_ignoreall: { + label : scayt_instance.getLocal('btn_ignoreAll'), + group : 'scayt_control', + order : 2, + exec: function(editor) { + var scaytInstance = editor.scayt; + scaytInstance.ignoreAllWords(); + } + }, + scayt_add: { + label : scayt_instance.getLocal('btn_addWord'), + group : 'scayt_control', + order : 3, + exec : function(editor) { + var scaytInstance = editor.scayt; + + // @TODO: We need to add set/restore bookmark logic to 'addWordToUserDictionary' method inside dictionarymanager. + // Timeout is used as tmp fix for IE9, when after hitting 'Add word' menu item, document container was blurred. + setTimeout(function() { + scaytInstance.addWordToUserDictionary(); + }, 10); + } + }, + scayt_option: { + label : scayt_instance.getLocal('btn_options'), + group : 'scayt_control', + order : 4, + exec: function(editor) { + var scaytInstance = editor.scayt; + + scaytInstance.tabToOpen = 'options'; + editor.lockSelection(); + editor.openDialog(self.dialogName); + }, + verification: function(editor) { + return (editor.config.scayt_uiTabs[0] == 1) ? true : false; + } + }, + scayt_language: { + label : scayt_instance.getLocal('btn_langs'), + group : 'scayt_control', + order : 5, + exec: function(editor) { + var scaytInstance = editor.scayt; + + scaytInstance.tabToOpen = 'langs'; + editor.lockSelection(); + editor.openDialog(self.dialogName); + }, + verification: function(editor) { + return (editor.config.scayt_uiTabs[1] == 1) ? true : false; + } + }, + scayt_dictionary: { + label : scayt_instance.getLocal('btn_dictionaries'), + group : 'scayt_control', + order : 6, + exec: function(editor) { + var scaytInstance = editor.scayt; + + scaytInstance.tabToOpen = 'dictionaries'; + editor.lockSelection(); + editor.openDialog(self.dialogName); + }, + verification: function(editor) { + return (editor.config.scayt_uiTabs[2] == 1) ? true : false; + } + }, + scayt_about: { + label : scayt_instance.getLocal('btn_about'), + group : 'scayt_control', + order : 7, + exec: function(editor) { + var scaytInstance = editor.scayt; + + scaytInstance.tabToOpen = 'about'; + editor.lockSelection(); + editor.openDialog(self.dialogName); + } + } + }, + grayt: { + grayt_problemdescription: { + label : 'Grammar problem description', + group : 'grayt_description', // look at addMenuItems method for further info + order : 1, + state : CKEDITOR.TRISTATE_DISABLED, + exec: function(editor) {} + }, + grayt_ignore: { + label : scayt_instance.getLocal('btn_ignore'), + group : 'grayt_control', + order : 2, + exec: function(editor) { + var scaytInstance = editor.scayt; + + scaytInstance.ignorePhrase(); + } + } + } + }; + }, + buildSuggestionMenuItems: function(editor, suggestions, isScaytNode) { + var self = this, + itemList = {}, + subItemList = {}, + replaceKeyName = isScaytNode ? 'word' : 'phrase', + updateEventName = isScaytNode ? 'startGrammarCheck' : 'startSpellCheck', + plugin = CKEDITOR.plugins.scayt, + scayt_instance = editor.scayt; + + if(suggestions.length > 0 && suggestions[0] !== 'no_any_suggestions') { + + if(isScaytNode) { + // build SCAYT suggestions + for(var i = 0; i < suggestions.length; i++) { + + var commandName = 'scayt_suggest_' + CKEDITOR.plugins.scayt.suggestions[i].replace(' ', '_'); + + editor.addCommand(commandName, self.createCommand(CKEDITOR.plugins.scayt.suggestions[i], replaceKeyName, updateEventName)); + + if(i < editor.config.scayt_maxSuggestions) { + + // mainSuggestions + editor.addMenuItem(commandName, { + label: suggestions[i], + command: commandName, + group: 'scayt_suggest', + order: i + 1 + }); + + itemList[commandName] = CKEDITOR.TRISTATE_OFF; + + } else { + + // moreSuggestions + editor.addMenuItem(commandName, { + label: suggestions[i], + command: commandName, + group: 'scayt_moresuggest', + order: i + 1 + }); + + subItemList[commandName] = CKEDITOR.TRISTATE_OFF; + + if(editor.config.scayt_moreSuggestions === 'on') { + + editor.addMenuItem('scayt_moresuggest', { + label : scayt_instance.getLocal('btn_moreSuggestions'), + group : 'scayt_moresuggest', + order : 10, + getItems : function() { + return subItemList; + } + }); + + itemList['scayt_moresuggest'] = CKEDITOR.TRISTATE_OFF; + } + } + } + } else { + // build GRAYT suggestions + for(var i = 0; i < suggestions.length; i++) { + var commandName = 'grayt_suggest_' + CKEDITOR.plugins.scayt.suggestions[i].replace(' ', '_'); + + editor.addCommand(commandName, self.createCommand(CKEDITOR.plugins.scayt.suggestions[i], replaceKeyName, updateEventName)); + + // mainSuggestions + editor.addMenuItem(commandName, { + label: suggestions[i], + command: commandName, + group: 'grayt_suggest', + order: i + 1 + }); + + itemList[commandName] = CKEDITOR.TRISTATE_OFF; + } + } + } else { + var noSuggestionsCommand = 'no_scayt_suggest'; + itemList[noSuggestionsCommand] = CKEDITOR.TRISTATE_DISABLED; + + editor.addCommand(noSuggestionsCommand, { + exec: function() { + + } + }); + + editor.addMenuItem(noSuggestionsCommand, { + label : scayt_instance.getLocal('btn_noSuggestions') || noSuggestionsCommand, + command: noSuggestionsCommand, + group : 'scayt_suggest', + order : 0 + }); + } + + return itemList; + }, + menuGenerator: function(editor, selectionNode) { + var self = this, + scaytInstance = editor.scayt, + menuItems = this.scaytMenuDefinition(editor), + itemList = {}, + allowedOption = editor.config.scayt_contextCommands.split('|'), + lang = selectionNode.getAttribute(scaytInstance.getLangAttribute()) || scaytInstance.getLang(), + word, grammarPhrase, isScaytNode, isGrammarNode, problemDescriptionText; + + + isScaytNode = scaytInstance.isScaytNode(selectionNode); + isGrammarNode = scaytInstance.isGraytNode(selectionNode); + + if(isScaytNode) { + // we clicked scayt misspelling + // get suggestions + menuItems = menuItems.scayt; + + word = selectionNode.getAttribute(scaytInstance.getScaytNodeAttributeName()); + + scaytInstance.fire('getSuggestionsList', { + lang: lang, + word: word + }); + + itemList = this.buildSuggestionMenuItems(editor, CKEDITOR.plugins.scayt.suggestions, isScaytNode); + } else if(isGrammarNode) { + // we clicked grammar problem + // get suggestions + menuItems = menuItems.grayt; + grammarPhrase = selectionNode.getAttribute(scaytInstance.getGraytNodeAttributeName()); + + // setup grammar problem description + problemDescriptionText = scaytInstance.getProblemDescriptionText(grammarPhrase, lang); + if(menuItems.grayt_problemdescription && problemDescriptionText) { + menuItems.grayt_problemdescription.label = problemDescriptionText; + } + + scaytInstance.fire('getGrammarSuggestionsList', { + lang: lang, + phrase: grammarPhrase + }); + + itemList = this.buildSuggestionMenuItems(editor, CKEDITOR.plugins.scayt.suggestions, isScaytNode); + } + + if(isScaytNode && editor.config.scayt_contextCommands == 'off') { + return itemList; + } + + for(var key in menuItems) { + if(isScaytNode && CKEDITOR.tools.indexOf(allowedOption, key.replace('scayt_', '')) == -1 && editor.config.scayt_contextCommands != 'all') { + continue; + } + + if(typeof menuItems[key].state != 'undefined') { + itemList[key] = menuItems[key].state; + } else { + itemList[key] = CKEDITOR.TRISTATE_OFF; + } + + // delete item from context menu if its state isn't verified as allowed + if(typeof menuItems[key].verification === 'function' && !menuItems[key].verification(editor)) { + // itemList[key] = (menuItems[key].verification(editor)) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED; + delete itemList[key]; + } + + editor.addCommand(key, { + exec: menuItems[key].exec + }); + + editor.addMenuItem(key, { + label : editor.lang.scayt[menuItems[key].label] || menuItems[key].label, + command: key, + group : menuItems[key].group, + order : menuItems[key].order + }); + } + + return itemList; + }, + createCommand: function(suggestion, replaceKeyName, updateEventName) { + return { + exec: function(editor) { + var scaytInstance = editor.scayt, + eventObject = {}; + + eventObject[replaceKeyName] = suggestion; + scaytInstance.replaceSelectionNode(eventObject); + + // we need to remove grammar markup from selection node if we just performed replace action for misspelling + if(updateEventName === 'startGrammarCheck') { + scaytInstance.removeMarkupInSelectionNode({grammarOnly: true}); + } + // for grayt problem replacement we need to fire 'startSpellCheck' + // for scayt misspelling replacement we need to fire 'startGrammarCheck' + scaytInstance.fire(updateEventName); + } + }; + } +}); + +CKEDITOR.plugins.scayt = { + state: { + scayt: {}, + grayt: {} + }, + suggestions: [], + loadingHelper: { + loadOrder: [] + }, + isLoading: false, + options: { + disablingCommandExec: { + source: true, + newpage: true, + templates: true + }, + data_attribute_name: 'data-scayt-word', + misspelled_word_class: 'scayt-misspell-word', + problem_grammar_data_attribute: 'data-grayt-phrase', + problem_grammar_class: 'gramm-problem' + }, + backCompatibilityMap: { + 'scayt_service_protocol': 'scayt_serviceProtocol', + 'scayt_service_host' : 'scayt_serviceHost', + 'scayt_service_port' : 'scayt_servicePort', + 'scayt_service_path' : 'scayt_servicePath', + 'scayt_customerid' : 'scayt_customerId' + }, + replaceOldOptionsNames: function(config) { + for(var key in config) { + if(key in this.backCompatibilityMap) { + config[this.backCompatibilityMap[key]] = config[key]; + delete config[key]; + } + } + }, + createScayt : function(editor) { + var self = this, + plugin = CKEDITOR.plugins.scayt; + + this.loadScaytLibrary(editor, function(_editor) { + var textContainer = _editor.window && _editor.window.getFrame() || _editor.editable(); + + // Do not create SCAYT if there is no text container for usage + if(!textContainer) { + plugin.state.scayt[_editor.name] = false; + return; + } + + var scaytInstanceOptions = { + lang : _editor.config.scayt_sLang, + container : textContainer.$, + customDictionary : _editor.config.scayt_customDictionaryIds, + userDictionaryName : _editor.config.scayt_userDictionaryName, + localization : _editor.langCode, + customer_id : _editor.config.scayt_customerId, + debug : _editor.config.scayt_debug, + data_attribute_name : self.options.data_attribute_name, + misspelled_word_class: self.options.misspelled_word_class, + problem_grammar_data_attribute: self.options.problem_grammar_data_attribute, + problem_grammar_class: self.options.problem_grammar_class, + 'options-to-restore': _editor.config.scayt_disableOptionsStorage, + focused : _editor.editable().hasFocus, // #30260 we need to set focused=true if CKEditor is focused before SCAYT initialization + ignoreElementsRegex : _editor.config.scayt_elementsToIgnore, + minWordLength : _editor.config.scayt_minWordLength, + multiLanguageMode : _editor.config.scayt_multiLanguageMode, + multiLanguageStyles : _editor.config.scayt_multiLanguageStyles, + graytAutoStartup : plugin.state.grayt[_editor.name] + }; + + if(_editor.config.scayt_serviceProtocol) { + scaytInstanceOptions['service_protocol'] = _editor.config.scayt_serviceProtocol; + } + + if(_editor.config.scayt_serviceHost) { + scaytInstanceOptions['service_host'] = _editor.config.scayt_serviceHost; + } + + if(_editor.config.scayt_servicePort) { + scaytInstanceOptions['service_port'] = _editor.config.scayt_servicePort; + } + + if(_editor.config.scayt_servicePath) { + scaytInstanceOptions['service_path'] = _editor.config.scayt_servicePath; + } + + //predefined options + if(typeof _editor.config.scayt_ignoreAllCapsWords === 'boolean') { + scaytInstanceOptions['ignore-all-caps-words'] = _editor.config.scayt_ignoreAllCapsWords; + } + + if(typeof _editor.config.scayt_ignoreDomainNames === 'boolean') { + scaytInstanceOptions['ignore-domain-names'] = _editor.config.scayt_ignoreDomainNames; + } + + if(typeof _editor.config.scayt_ignoreWordsWithMixedCases === 'boolean') { + scaytInstanceOptions['ignore-words-with-mixed-cases'] = _editor.config.scayt_ignoreWordsWithMixedCases; + } + + if(typeof _editor.config.scayt_ignoreWordsWithNumbers === 'boolean') { + scaytInstanceOptions['ignore-words-with-numbers'] = _editor.config.scayt_ignoreWordsWithNumbers; + } + + var scaytInstance = new SCAYT.CKSCAYT(scaytInstanceOptions, function() { + // success callback + }, function() { + // error callback + }), + wordsPrefix = 'word_'; + + scaytInstance.subscribe('suggestionListSend', function(data) { + // TODO: 1. Maybe store suggestions for specific editor + // TODO: 2. Fix issue with suggestion duplicates on on server + //CKEDITOR.plugins.scayt.suggestions = data.suggestionList; + var _wordsCollection = {}, + _suggestionList =[]; + + for (var i = 0; i < data.suggestionList.length; i++) { + if (!_wordsCollection[wordsPrefix + data.suggestionList[i]]) { + _wordsCollection[wordsPrefix + data.suggestionList[i]] = data.suggestionList[i]; + _suggestionList.push(data.suggestionList[i]); + } + } + + CKEDITOR.plugins.scayt.suggestions = _suggestionList; + }); + + // if selection has changed programmatically by SCAYT we need to react appropriately + scaytInstance.subscribe('selectionIsChanged', function(data) { + var selection = _editor.getSelection(); + + if(selection.isLocked) { + _editor.lockSelection(); + } + }); + + scaytInstance.subscribe('graytStateChanged', function(data) { + plugin.state.grayt[_editor.name] = data.state; + }); + + _editor.scayt = scaytInstance; + + _editor.fire('scaytButtonState', _editor.readOnly ? CKEDITOR.TRISTATE_DISABLED : CKEDITOR.TRISTATE_ON); + }); + }, + destroy: function(editor) { + if(editor.scayt) { + editor.scayt.destroy(); + } + + delete editor.scayt; + editor.fire('scaytButtonState', CKEDITOR.TRISTATE_OFF); + }, + loadScaytLibrary: function(editor, callback) { + var self = this, + date, + timestamp, + scaytUrl; + + // no need to process load requests from same editor as it can cause bugs with + // loading ckscayt app due to subsequent calls of some events + // need to be before 'if' statement, because of timing issue in CKEDITOR.scriptLoader + // when callback executing is delayed for a few milliseconds, and scayt can be created twise + // on one instance + if(this.loadingHelper[editor.name]) return; + + if(typeof window.SCAYT === 'undefined' || typeof window.SCAYT.CKSCAYT !== 'function') { + + // add onLoad callbacks for editors while SCAYT is loading + this.loadingHelper[editor.name] = callback; + this.loadingHelper.loadOrder.push(editor.name); + + //creating unique timestamp for SCAYT URL + date = new Date(); + timestamp = date.getTime(); + scaytUrl = editor.config.scayt_srcUrl; + + //if there already implemented timstamp for scayr_srcURL use it, if not use our timestamp + scaytUrl = scaytUrl + (scaytUrl.indexOf('?') >= 0 ? '' : '?' + timestamp); + + if (!this.loadingHelper.ckscaytLoading) { + CKEDITOR.scriptLoader.load(scaytUrl, function(success) { + var editorName; + + if ( success ) { + CKEDITOR.fireOnce('scaytReady'); + + for(var i = 0; i < self.loadingHelper.loadOrder.length; i++) { + editorName = self.loadingHelper.loadOrder[i]; + + if(typeof self.loadingHelper[editorName] === 'function') { + self.loadingHelper[editorName](CKEDITOR.instances[editorName]); + } + + delete self.loadingHelper[editorName]; + } + self.loadingHelper.loadOrder = []; + } + }); + this.loadingHelper.ckscaytLoading = true; + } + + + } else if(window.SCAYT && typeof window.SCAYT.CKSCAYT === 'function') { + CKEDITOR.fireOnce('scaytReady'); + + if(!editor.scayt) { + if(typeof callback === 'function') { + callback(editor); + } + } + } + } +}; + +CKEDITOR.on('dialogDefinition', function(dialogDefinitionEvent) { + var dialogName = dialogDefinitionEvent.data.name, + dialogDefinition = dialogDefinitionEvent.data.definition, + dialog = dialogDefinition.dialog; + + if (dialogName === 'scaytDialog') { + dialog.on('cancel', function(cancelEvent) { + return false; + }, this, null, -1); + } + + if ( dialogName === 'checkspell' ) { + dialog.on( 'cancel', function( cancelEvent ) { + var editor = cancelEvent.sender && cancelEvent.sender.getParentEditor(), + plugin = CKEDITOR.plugins.scayt, + scaytInstance = editor.scayt; + + if ( scaytInstance && plugin.state.scayt[ editor.name ] && scaytInstance.setMarkupPaused ) { + scaytInstance.setMarkupPaused( false ); + } + + editor.unlockSelection(); + }, this, null, -2 ); // we need to call cancel callback before WSC plugin + } + + if (dialogName === 'link') { + dialog.on('ok', function(okEvent) { + var editor = okEvent.sender && okEvent.sender.getParentEditor(); + + if(editor) { + setTimeout(function() { + editor.fire('reloadMarkupScayt', { + removeOptions: { + removeInside: true, + forceBookmark: true + }, + timeout: 0 + }); + }, 0); + } + }); + } +}); + +CKEDITOR.on('scaytReady', function() { + + // Override editor.checkDirty method avoid CK checkDirty functionality to fix SCAYT issues with incorrect checkDirty behavior. + if(CKEDITOR.config.scayt_handleCheckDirty === true) { + var editorCheckDirty = CKEDITOR.editor.prototype; + + editorCheckDirty.checkDirty = CKEDITOR.tools.override(editorCheckDirty.checkDirty, function(org) { + + return function() { + var retval = null, + pluginStatus = CKEDITOR.plugins.scayt && CKEDITOR.plugins.scayt.state.scayt[this.name] && this.scayt, + scaytInstance = this.scayt; + + if(!pluginStatus) { + retval = org.call(this); + } else { + retval = (this.status == 'ready'); + + if (retval) { + var currentData = scaytInstance.removeMarkupFromString(this.getSnapshot()), + prevData = scaytInstance.removeMarkupFromString(this._.previousValue); + + retval = (retval && (prevData !== currentData)) + } + } + + return retval; + }; + }); + + editorCheckDirty.resetDirty = CKEDITOR.tools.override(editorCheckDirty.resetDirty, function(org) { + return function() { + var pluginStatus = CKEDITOR.plugins.scayt && CKEDITOR.plugins.scayt.state.scayt[this.name] && this.scayt, + scaytInstance = this.scayt;//CKEDITOR.plugins.scayt.getScayt(this); + + if(!pluginStatus) { + org.call(this); + } else { + this._.previousValue = scaytInstance.removeMarkupFromString(this.getSnapshot()); + } + }; + }); + } + + if (CKEDITOR.config.scayt_handleUndoRedo === true) { + var undoImagePrototype = CKEDITOR.plugins.undo.Image.prototype; + + // add backword compatibility for CKEDITOR 4.2. method equals was repleced on other method + var equalsContentMethodName = (typeof undoImagePrototype.equalsContent == "function") ? 'equalsContent' : 'equals'; + + undoImagePrototype[equalsContentMethodName] = CKEDITOR.tools.override(undoImagePrototype[equalsContentMethodName], function(org) { + return function(otherImage) { + var pluginState = CKEDITOR.plugins.scayt && CKEDITOR.plugins.scayt.state.scayt[otherImage.editor.name] && otherImage.editor.scayt, + scaytInstance = otherImage.editor.scayt, + thisContents = this.contents, + otherContents = otherImage.contents, + retval = null; + + // Making the comparison based on content without SCAYT word markers. + if(pluginState) { + this.contents = scaytInstance.removeMarkupFromString(thisContents) || ''; + otherImage.contents = scaytInstance.removeMarkupFromString(otherContents) || ''; + } + + var retval = org.apply(this, arguments); + + this.contents = thisContents; + otherImage.contents = otherContents; + + return retval; + }; + }); + } +}); + +/** + * The parameter turns on/off SCAYT on the autostartup. If 'true', turns on SCAYT automatically after loading the editor. + * + * config.scayt_autoStartup = true; + * + * @cfg {Boolean} [scayt_autoStartup=false] + * @member CKEDITOR.config + */ + +/** + * The parameter turns on/off Grammar As You Type (GRAYT) on the SCAYT startup. If 'true', turns on GRAYT automatically after SCAYT started. + * + * config.grayt_autoStartup = true; + * + * @cfg {Boolean} [grayt_autoStartup=false] + * @member CKEDITOR.config + */ + +/** + * The parameter turns on/off SCAYT initiation when Inline CKEditor is not focused. SCAYT markup is taken place (SCAYT instance is not destroyed) + * in both Inline CKEditor's states, focused and unfocused. + * + * config.scayt_inlineModeImmediateMarkup = true; + * + * @cfg {Boolean} [scayt_inlineModeImmediateMarkup=false] + * @member CKEDITOR.config + */ + + +/** + * The parameter defines the number of SCAYT suggestions to show in the main context menu. + * Possible values are: + * + * * `0` (zero) – No suggestions are shown in the main context menu. All + * entries will be listed in the "More Suggestions" sub-menu. + * * Positive number – The maximum number of suggestions to show in the context + * menu. Other entries will be shown in the "More Suggestions" sub-menu. + * * Negative number – 5 suggestions are shown in the main context menu. All other + * entries will be listed in the "More Suggestions" sub-menu. + * + * Examples: + * + * // Display only three suggestions in the main context menu. + * config.scayt_maxSuggestions = 3; + * + * // Do not show the suggestions directly. + * config.scayt_maxSuggestions = 0; + * + * @cfg {Number} [scayt_maxSuggestions=5] + * @member CKEDITOR.config + */ + +/** + * The parameter defines minimum length of the words that will be collected from editor's text for spell checking. + * Possible value is any positive number. + * + * Examples: + * + * // Set minimum length of the words that will be collected from text. + * config.scayt_minWordLength = 5; + * + * @cfg {Number} [scayt_minWordLength=4] + * @member CKEDITOR.config + */ + +/** + * The parameter sets the customer ID for SCAYT. Used for hosted users only. Required for migration from free + * to trial or paid versions. + * + * // Load SCAYT using my customer ID. + * config.scayt_customerId = 'your-encrypted-customer-id'; + * + * @cfg {String} [scayt_customerId='1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2'] + * @member CKEDITOR.config + */ + +/** + * The parameter enables/disables the "More Suggestions" sub-menu in the context menu. + * Possible values are `'on'` and `'off'`. + * + * // Disables the "More Suggestions" sub-menu. + * config.scayt_moreSuggestions = 'off'; + * + * @cfg {String} [scayt_moreSuggestions='on'] + * @member CKEDITOR.config + */ + +/** + * The parameter customizes the display of SCAYT context menu commands ("Add Word", "Ignore", + * "Ignore All", "Options", "Languages", "Dictionaries" and "About"). + * This must be a string with one or more of the following + * words separated by a pipe character (`'|'`): + * + * * `off` – disables all options. + * * `all` – enables all options. + * * `ignore` – enables the "Ignore" option. + * * `ignoreall` – enables the "Ignore All" option. + * * `add` – enables the "Add Word" option. + * * `option` – enables "Options" menu item. + * * `language` – enables "Languages" menu item. + * * `dictionary` – enables "Dictionaries" menu item. + * * `about` – enables "About" menu item. + * + * Note, that availability of 'Options', 'Languages' and 'Dictionaries' items + * depends on scayt_uiTabs option also. + * Example: + * + * // Show only "Add Word" and "Ignore All" in the context menu. + * config.scayt_contextCommands = 'add|ignoreall'; + * + * @cfg {String} [scayt_contextCommands='ignore|ignoreall|add'] + * @member CKEDITOR.config + */ + +/** + * The parameter sets the default spell checking language for SCAYT. Possible values are: + * `'en_US'`, `'en_GB'`, `'pt_BR'`, `'da_DK'`, + * `'nl_NL'`, `'en_CA'`, `'fi_FI'`, `'fr_FR'`, + * `'fr_CA'`, `'de_DE'`, `'el_GR'`, `'it_IT'`, + * `'nb_NO'`, `'pt_PT'`, `'es_ES'`, `'sv_SE'`. + * + * // Sets SCAYT to German. + * config.scayt_sLang = 'de_DE'; + * + * @cfg {String} [scayt_sLang='en_US'] + * @member CKEDITOR.config + */ + +/** + * The parameter customizes the SCAYT dialog and SCAYT toolbar menu to show particular tabs/items. + * This setting must contain a `1` (enabled) or `0` + * (disabled) value for each of the following entries, in this precise order, + * separated by a comma (`','`): `'Options'`, `'Languages'`, and `'Dictionary'`. + * + * // Hides the "Languages" tab. + * config.scayt_uiTabs = '1,0,1'; + * + * @cfg {String} [scayt_uiTabs='1,1,1'] + * @member CKEDITOR.config + */ + +/** + * The parameter allows to specify protocol for WSC service (ssrv.cgi) full path. + * + * // Defines protocol for WSC service (ssrv.cgi) full path. + * config.scayt_serviceProtocol = 'https'; + * + * @cfg {String} [scayt_serviceProtocol='http'] + * @member CKEDITOR.config + */ + +/** + * The parameter allows to specify host for WSC service (ssrv.cgi) full path. + * + * // Defines host for WSC service (ssrv.cgi) full path. + * config.scayt_serviceHost = 'my-host'; + * + * @cfg {String} [scayt_serviceHost='svc.webspellchecker.net'] + * @member CKEDITOR.config + */ + +/** + * The parameter allows to specify port for WSC service (ssrv.cgi) full path. + * + * // Defines port for WSC service (ssrv.cgi) full path. + * config.scayt_servicePort = '2330'; + * + * @cfg {String} [scayt_servicePort='80'] + * @member CKEDITOR.config + */ + +/** + * The parameter allows to specify path for WSC service (ssrv.cgi) full path. + * + * // Defines host for WSC service (ssrv.cgi) full path. + * config.scayt_servicePath = 'my-path/ssrv.cgi'; + * + * @cfg {String} [scayt_servicePath='spellcheck31/script/ssrv.cgi'] + * @member CKEDITOR.config + */ + +/** + * The parameter sets the URL to SCAYT core. Required to switch to the licensed version of SCAYT application. + * + * Further details available at [http://wiki.webspellchecker.net/doku.php?id=migration:hosredfreetolicensedck](http://wiki.webspellchecker.net/doku.php?id=migration:hosredfreetolicensedck) + * + * config.scayt_srcUrl = "http://my-host/spellcheck/lf/scayt/scayt.js"; + * + * @cfg {String} [scayt_srcUrl='//svc.webspellchecker.net/spellcheck31/lf/scayt3/ckscayt/ckscayt.js'] + * @member CKEDITOR.config + */ + +/** + * The parameter links SCAYT to custom dictionaries. This is a string containing dictionary IDs + * separated by commas (`','`). Available only for the licensed version. + * + * Further details at [http://wiki.webspellchecker.net/doku.php?id=installationandconfiguration:customdictionaries:licensed](http://wiki.webspellchecker.net/doku.php?id=installationandconfiguration:customdictionaries:licensed) + * + * config.scayt_customDictionaryIds = '3021,3456,3478'; + * + * @cfg {String} [scayt_customDictionaryIds=''] + * @member CKEDITOR.config + */ + +/** + * The parameter activates a User Dictionary in SCAYT. The user + * dictionary name must be used. Available only for the licensed version. + * + * config.scayt_userDictionaryName = 'MyDictionary'; + * + * @cfg {String} [scayt_userDictionaryName=''] + * @member CKEDITOR.config + */ + +/** + * The parameter defines the order SCAYT context menu items by groups. + * This must be a string with one or more of the following + * words separated by a pipe character (`'|'`): + * + * * `suggest` – main suggestion word list, + * * `moresuggest` – more suggestions word list, + * * `control` – SCAYT commands, such as "Ignore" and "Add Word". + * + * Example: + * + * config.scayt_contextMenuItemsOrder = 'moresuggest|control|suggest'; + * + * @cfg {String} [scayt_contextMenuItemsOrder='suggest|moresuggest|control'] + * @member CKEDITOR.config + */ + +/** + * If set to `true` – overrides checkDirty functionality of CK + * to fix SCAYT issues with incorrect checkDirty behavior. If set to `false`, + * provides better performance on big preloaded text. + * + * config.scayt_handleCheckDirty = 'false'; + * + * @cfg {String} [scayt_handleCheckDirty='true'] + * @member CKEDITOR.config + */ + +/** + * If set to `true` – overrides undo\redo functionality of CK + * to fix SCAYT issues with incorrect undo\redo behavior. If set to `false`, + * provides better performance on undo\redo text. + * + * config.scayt_handleUndoRedo = 'false'; + * + * @cfg {String} [scayt_handleUndoRedo='true'] + * @member CKEDITOR.config + */ + +/** + * The parameter that turns off\on 'ignore-all-caps-words' option by default + * It may be needed to disableOptionStorage for this parameter, because optionStorage has higher priority. + * + * config.scayt_ignoreAllCapsWords = false; + * + * @cfg {Boolean} [scayt_ignoreAllCapsWords=false] + * @member CKEDITOR.config + */ + +/** + * The parameter that turns off\on 'ignore-domain-names' option by default + * It may be needed to disableOptionStorage for this parameter, because optionStorage has higher priority. + * + * config.scayt_ignoreDomainNames = false; + * + * @cfg {Boolean} [scayt_ignoreDomainNames=false] + * @member CKEDITOR.config + */ + +/** + * The parameter that turns off\on 'ignore-words-with-mixed-cases' option by default + * It may be needed to disableOptionStorage for this parameter, because optionStorage has higher priority. + * + * config.scayt_ignoreWordsWithMixedCases = false; + * + * @cfg {Boolean} [scayt_ignoreWordsWithMixedCases=false] + * @member CKEDITOR.config + */ + +/** + * The parameter that turns off\on 'ignore-words-with-numbers' option by default + * It may be needed to disableOptionStorage for this parameter, because optionStorage has higher priority. + * + * config.scayt_ignoreWordsWithNumbers = false; + * + * @cfg {Boolean} [scayt_ignoreWordsWithNumbers=false] + * @member CKEDITOR.config + */ + +/** + * Disabling of SCAYT Options storing during several sessions. Options storing will be turned off after page refresh. + * + * * `'options'` - disables all SCAYT Ignore options + * * `'ignore-all-caps-words'` - disables 'Ignore All-Caps Words' option + * * `'ignore-domain-names'` - disables 'Ignore Domain Names' option + * * `'ignore-words-with-mixed-cases'` - disables 'Ignore Words with Mixed Case' option + * * `'ignore-words-with-numbers'` - disables 'Ignore Words with Numbers' option + * * `'lang'` - disables SCAYT spell check language storing + * * `'all'` - disables all SCAYT options storing + * + * Example: + * + * // One options disabling. + * config.scayt_disableOptionsStorage = 'all'; + * + * // Several options disabling. + * config.scayt_disableOptionsStorage = ['lang', 'ignore-domain-names', 'ignore-words-with-numbers']; + * + * + * @cfg {String|Array} [scayt_disableOptionsStorage = ''] + * @member CKEDITOR.config + */ + + /** + * Specifies the names of tags that will be skipped while spell checking. This is a string containing tag names + * separated by commas (`','`). Please note that `'style'` tag would be added to specified tags list. + * + * config.scayt_elementsToIgnore = 'del,pre'; + * + * @cfg {String} [scayt_elementsToIgnore='style'] + * @member CKEDITOR.config + */ + + /** + * The parameter turns on/off multi language support in SCAYT. If 'true', turns on SCAYT multi language support after loading the editor. + * + * config.scayt_multiLanguageMode = true; + * + * @cfg {Boolean} [scayt_multiLanguageMode=false] + * @member CKEDITOR.config + */ + + /** + * Defines additional styles for misspellings for specified languages. Styles will be applied only if 'scayt_multiLanguageMode' parameter is set to 'true' + * and 'language' plugin included and loaded into editor. All misspellings still will be underlined with red waveline by default. + * + * Example: + * + * // Display misspellings in French language with green color and underlined with red waveline + * config.scayt_multiLanguageStyles = { + * 'fr': 'color: green' + * }; + * + * // Display misspellings in Italian language with green color and underlined with red waveline and German misspellings with red color only + * config.scayt_multiLanguageStyles = { + * 'it': 'color: green', + * 'de': 'background-image: none; color: red' + * }; + * + * @cfg {Object} [scayt_multiLanguageStyles = {}] + * @member CKEDITOR.config + */ diff --git a/sources/plugins/selectall/icons/hidpi/selectall.png b/sources/plugins/selectall/icons/hidpi/selectall.png new file mode 100644 index 00000000..c67f64dd Binary files /dev/null and b/sources/plugins/selectall/icons/hidpi/selectall.png differ diff --git a/sources/plugins/selectall/icons/selectall.png b/sources/plugins/selectall/icons/selectall.png new file mode 100644 index 00000000..0d1e8160 Binary files /dev/null and b/sources/plugins/selectall/icons/selectall.png differ diff --git a/sources/plugins/selectall/lang/af.js b/sources/plugins/selectall/lang/af.js new file mode 100644 index 00000000..0ca47415 --- /dev/null +++ b/sources/plugins/selectall/lang/af.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'af', { + toolbar: 'Selekteer alles' +} ); diff --git a/sources/plugins/selectall/lang/ar.js b/sources/plugins/selectall/lang/ar.js new file mode 100644 index 00000000..f28e4c83 --- /dev/null +++ b/sources/plugins/selectall/lang/ar.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'ar', { + toolbar: 'تحديد الكل' +} ); diff --git a/sources/plugins/selectall/lang/bg.js b/sources/plugins/selectall/lang/bg.js new file mode 100644 index 00000000..252ca9d2 --- /dev/null +++ b/sources/plugins/selectall/lang/bg.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'bg', { + toolbar: 'Избери всичко' +} ); diff --git a/sources/plugins/selectall/lang/bn.js b/sources/plugins/selectall/lang/bn.js new file mode 100644 index 00000000..af1540d8 --- /dev/null +++ b/sources/plugins/selectall/lang/bn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'bn', { + toolbar: 'সব সিলেক্ট কর' +} ); diff --git a/sources/plugins/selectall/lang/bs.js b/sources/plugins/selectall/lang/bs.js new file mode 100644 index 00000000..9146aee6 --- /dev/null +++ b/sources/plugins/selectall/lang/bs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'bs', { + toolbar: 'Selektuj sve' +} ); diff --git a/sources/plugins/selectall/lang/ca.js b/sources/plugins/selectall/lang/ca.js new file mode 100644 index 00000000..27ea7940 --- /dev/null +++ b/sources/plugins/selectall/lang/ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'ca', { + toolbar: 'Selecciona-ho tot' +} ); diff --git a/sources/plugins/selectall/lang/cs.js b/sources/plugins/selectall/lang/cs.js new file mode 100644 index 00000000..4a7c8804 --- /dev/null +++ b/sources/plugins/selectall/lang/cs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'cs', { + toolbar: 'Vybrat vše' +} ); diff --git a/sources/plugins/selectall/lang/cy.js b/sources/plugins/selectall/lang/cy.js new file mode 100644 index 00000000..d043acaa --- /dev/null +++ b/sources/plugins/selectall/lang/cy.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'cy', { + toolbar: 'Dewis Popeth' +} ); diff --git a/sources/plugins/selectall/lang/da.js b/sources/plugins/selectall/lang/da.js new file mode 100644 index 00000000..9b892392 --- /dev/null +++ b/sources/plugins/selectall/lang/da.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'da', { + toolbar: 'Vælg alt' +} ); diff --git a/sources/plugins/selectall/lang/de.js b/sources/plugins/selectall/lang/de.js new file mode 100644 index 00000000..9b79ae3a --- /dev/null +++ b/sources/plugins/selectall/lang/de.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'de', { + toolbar: 'Alles auswählen' +} ); diff --git a/sources/plugins/selectall/lang/el.js b/sources/plugins/selectall/lang/el.js new file mode 100644 index 00000000..faa1860b --- /dev/null +++ b/sources/plugins/selectall/lang/el.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'el', { + toolbar: 'Επιλογή όλων' +} ); diff --git a/sources/plugins/selectall/lang/en-au.js b/sources/plugins/selectall/lang/en-au.js new file mode 100644 index 00000000..93fcc5e3 --- /dev/null +++ b/sources/plugins/selectall/lang/en-au.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'en-au', { + toolbar: 'Select All' +} ); diff --git a/sources/plugins/selectall/lang/en-ca.js b/sources/plugins/selectall/lang/en-ca.js new file mode 100644 index 00000000..a47bffc1 --- /dev/null +++ b/sources/plugins/selectall/lang/en-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'en-ca', { + toolbar: 'Select All' +} ); diff --git a/sources/plugins/selectall/lang/en-gb.js b/sources/plugins/selectall/lang/en-gb.js new file mode 100644 index 00000000..a5c9e0f9 --- /dev/null +++ b/sources/plugins/selectall/lang/en-gb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'en-gb', { + toolbar: 'Select All' +} ); diff --git a/sources/plugins/selectall/lang/en.js b/sources/plugins/selectall/lang/en.js new file mode 100644 index 00000000..4b03171d --- /dev/null +++ b/sources/plugins/selectall/lang/en.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'en', { + toolbar: 'Select All' +} ); diff --git a/sources/plugins/selectall/lang/eo.js b/sources/plugins/selectall/lang/eo.js new file mode 100644 index 00000000..235ed123 --- /dev/null +++ b/sources/plugins/selectall/lang/eo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'eo', { + toolbar: 'Elekti ĉion' +} ); diff --git a/sources/plugins/selectall/lang/es.js b/sources/plugins/selectall/lang/es.js new file mode 100644 index 00000000..1db52d31 --- /dev/null +++ b/sources/plugins/selectall/lang/es.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'es', { + toolbar: 'Seleccionar Todo' +} ); diff --git a/sources/plugins/selectall/lang/et.js b/sources/plugins/selectall/lang/et.js new file mode 100644 index 00000000..b96f7614 --- /dev/null +++ b/sources/plugins/selectall/lang/et.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'et', { + toolbar: 'Kõige valimine' +} ); diff --git a/sources/plugins/selectall/lang/eu.js b/sources/plugins/selectall/lang/eu.js new file mode 100644 index 00000000..a1b4fe65 --- /dev/null +++ b/sources/plugins/selectall/lang/eu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'eu', { + toolbar: 'Hautatu dena' +} ); diff --git a/sources/plugins/selectall/lang/fa.js b/sources/plugins/selectall/lang/fa.js new file mode 100644 index 00000000..dd17300f --- /dev/null +++ b/sources/plugins/selectall/lang/fa.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'fa', { + toolbar: 'گزینش همه' +} ); diff --git a/sources/plugins/selectall/lang/fi.js b/sources/plugins/selectall/lang/fi.js new file mode 100644 index 00000000..88fff7ef --- /dev/null +++ b/sources/plugins/selectall/lang/fi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'fi', { + toolbar: 'Valitse kaikki' +} ); diff --git a/sources/plugins/selectall/lang/fo.js b/sources/plugins/selectall/lang/fo.js new file mode 100644 index 00000000..2db6d7bb --- /dev/null +++ b/sources/plugins/selectall/lang/fo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'fo', { + toolbar: 'Markera alt' +} ); diff --git a/sources/plugins/selectall/lang/fr-ca.js b/sources/plugins/selectall/lang/fr-ca.js new file mode 100644 index 00000000..8359154d --- /dev/null +++ b/sources/plugins/selectall/lang/fr-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'fr-ca', { + toolbar: 'Sélectionner tout' +} ); diff --git a/sources/plugins/selectall/lang/fr.js b/sources/plugins/selectall/lang/fr.js new file mode 100644 index 00000000..bb9285df --- /dev/null +++ b/sources/plugins/selectall/lang/fr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'fr', { + toolbar: 'Tout sélectionner' +} ); diff --git a/sources/plugins/selectall/lang/gl.js b/sources/plugins/selectall/lang/gl.js new file mode 100644 index 00000000..2ca99354 --- /dev/null +++ b/sources/plugins/selectall/lang/gl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'gl', { + toolbar: 'Seleccionar todo' +} ); diff --git a/sources/plugins/selectall/lang/gu.js b/sources/plugins/selectall/lang/gu.js new file mode 100644 index 00000000..c5a94845 --- /dev/null +++ b/sources/plugins/selectall/lang/gu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'gu', { + toolbar: 'બઘું પસંદ કરવું' +} ); diff --git a/sources/plugins/selectall/lang/he.js b/sources/plugins/selectall/lang/he.js new file mode 100644 index 00000000..732937f8 --- /dev/null +++ b/sources/plugins/selectall/lang/he.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'he', { + toolbar: 'בחירת הכל' +} ); diff --git a/sources/plugins/selectall/lang/hi.js b/sources/plugins/selectall/lang/hi.js new file mode 100644 index 00000000..8f7484fe --- /dev/null +++ b/sources/plugins/selectall/lang/hi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'hi', { + toolbar: 'सब सॅलॅक्ट करें' +} ); diff --git a/sources/plugins/selectall/lang/hr.js b/sources/plugins/selectall/lang/hr.js new file mode 100644 index 00000000..bcef89a8 --- /dev/null +++ b/sources/plugins/selectall/lang/hr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'hr', { + toolbar: 'Odaberi sve' +} ); diff --git a/sources/plugins/selectall/lang/hu.js b/sources/plugins/selectall/lang/hu.js new file mode 100644 index 00000000..18beda88 --- /dev/null +++ b/sources/plugins/selectall/lang/hu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'hu', { + toolbar: 'Mindent kijelöl' +} ); diff --git a/sources/plugins/selectall/lang/id.js b/sources/plugins/selectall/lang/id.js new file mode 100644 index 00000000..33770bb9 --- /dev/null +++ b/sources/plugins/selectall/lang/id.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'id', { + toolbar: 'Pilih Semua' +} ); diff --git a/sources/plugins/selectall/lang/is.js b/sources/plugins/selectall/lang/is.js new file mode 100644 index 00000000..9d608593 --- /dev/null +++ b/sources/plugins/selectall/lang/is.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'is', { + toolbar: 'Velja allt' +} ); diff --git a/sources/plugins/selectall/lang/it.js b/sources/plugins/selectall/lang/it.js new file mode 100644 index 00000000..f3c1e0ef --- /dev/null +++ b/sources/plugins/selectall/lang/it.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'it', { + toolbar: 'Seleziona tutto' +} ); diff --git a/sources/plugins/selectall/lang/ja.js b/sources/plugins/selectall/lang/ja.js new file mode 100644 index 00000000..75572f1d --- /dev/null +++ b/sources/plugins/selectall/lang/ja.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'ja', { + toolbar: 'すべて選択' +} ); diff --git a/sources/plugins/selectall/lang/ka.js b/sources/plugins/selectall/lang/ka.js new file mode 100644 index 00000000..7d1f2f13 --- /dev/null +++ b/sources/plugins/selectall/lang/ka.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'ka', { + toolbar: 'ყველაფრის მონიშნვა' +} ); diff --git a/sources/plugins/selectall/lang/km.js b/sources/plugins/selectall/lang/km.js new file mode 100644 index 00000000..bab71cd7 --- /dev/null +++ b/sources/plugins/selectall/lang/km.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'km', { + toolbar: 'រើស​ទាំង​អស់' +} ); diff --git a/sources/plugins/selectall/lang/ko.js b/sources/plugins/selectall/lang/ko.js new file mode 100644 index 00000000..7252ae4a --- /dev/null +++ b/sources/plugins/selectall/lang/ko.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'ko', { + toolbar: '모두 선택' +} ); diff --git a/sources/plugins/selectall/lang/ku.js b/sources/plugins/selectall/lang/ku.js new file mode 100644 index 00000000..091b8bd1 --- /dev/null +++ b/sources/plugins/selectall/lang/ku.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'ku', { + toolbar: 'دیاریکردنی هەمووی' +} ); diff --git a/sources/plugins/selectall/lang/lt.js b/sources/plugins/selectall/lang/lt.js new file mode 100644 index 00000000..d4b9911c --- /dev/null +++ b/sources/plugins/selectall/lang/lt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'lt', { + toolbar: 'Pažymėti viską' +} ); diff --git a/sources/plugins/selectall/lang/lv.js b/sources/plugins/selectall/lang/lv.js new file mode 100644 index 00000000..8c75d73c --- /dev/null +++ b/sources/plugins/selectall/lang/lv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'lv', { + toolbar: 'Iezīmēt visu' +} ); diff --git a/sources/plugins/selectall/lang/mk.js b/sources/plugins/selectall/lang/mk.js new file mode 100644 index 00000000..101a3409 --- /dev/null +++ b/sources/plugins/selectall/lang/mk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'mk', { + toolbar: 'Select All' // MISSING +} ); diff --git a/sources/plugins/selectall/lang/mn.js b/sources/plugins/selectall/lang/mn.js new file mode 100644 index 00000000..75ba9b08 --- /dev/null +++ b/sources/plugins/selectall/lang/mn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'mn', { + toolbar: 'Бүгдийг нь сонгох' +} ); diff --git a/sources/plugins/selectall/lang/ms.js b/sources/plugins/selectall/lang/ms.js new file mode 100644 index 00000000..2edd324e --- /dev/null +++ b/sources/plugins/selectall/lang/ms.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'ms', { + toolbar: 'Pilih Semua' +} ); diff --git a/sources/plugins/selectall/lang/nb.js b/sources/plugins/selectall/lang/nb.js new file mode 100644 index 00000000..d0e557d1 --- /dev/null +++ b/sources/plugins/selectall/lang/nb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'nb', { + toolbar: 'Merk alt' +} ); diff --git a/sources/plugins/selectall/lang/nl.js b/sources/plugins/selectall/lang/nl.js new file mode 100644 index 00000000..e772d488 --- /dev/null +++ b/sources/plugins/selectall/lang/nl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'nl', { + toolbar: 'Alles selecteren' +} ); diff --git a/sources/plugins/selectall/lang/no.js b/sources/plugins/selectall/lang/no.js new file mode 100644 index 00000000..eaeb8acc --- /dev/null +++ b/sources/plugins/selectall/lang/no.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'no', { + toolbar: 'Merk alt' +} ); diff --git a/sources/plugins/selectall/lang/pl.js b/sources/plugins/selectall/lang/pl.js new file mode 100644 index 00000000..3a86355b --- /dev/null +++ b/sources/plugins/selectall/lang/pl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'pl', { + toolbar: 'Zaznacz wszystko' +} ); diff --git a/sources/plugins/selectall/lang/pt-br.js b/sources/plugins/selectall/lang/pt-br.js new file mode 100644 index 00000000..1cfd07b1 --- /dev/null +++ b/sources/plugins/selectall/lang/pt-br.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'pt-br', { + toolbar: 'Selecionar Tudo' +} ); diff --git a/sources/plugins/selectall/lang/pt.js b/sources/plugins/selectall/lang/pt.js new file mode 100644 index 00000000..ce1e1147 --- /dev/null +++ b/sources/plugins/selectall/lang/pt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'pt', { + toolbar: 'Selecionar tudo' +} ); diff --git a/sources/plugins/selectall/lang/ro.js b/sources/plugins/selectall/lang/ro.js new file mode 100644 index 00000000..0bb81714 --- /dev/null +++ b/sources/plugins/selectall/lang/ro.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'ro', { + toolbar: 'Selectează tot' +} ); diff --git a/sources/plugins/selectall/lang/ru.js b/sources/plugins/selectall/lang/ru.js new file mode 100644 index 00000000..694157d4 --- /dev/null +++ b/sources/plugins/selectall/lang/ru.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'ru', { + toolbar: 'Выделить все' +} ); diff --git a/sources/plugins/selectall/lang/si.js b/sources/plugins/selectall/lang/si.js new file mode 100644 index 00000000..a25c2d36 --- /dev/null +++ b/sources/plugins/selectall/lang/si.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'si', { + toolbar: 'සියල්ලම ' +} ); diff --git a/sources/plugins/selectall/lang/sk.js b/sources/plugins/selectall/lang/sk.js new file mode 100644 index 00000000..85ec8a8e --- /dev/null +++ b/sources/plugins/selectall/lang/sk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'sk', { + toolbar: 'Vybrať všetko' +} ); diff --git a/sources/plugins/selectall/lang/sl.js b/sources/plugins/selectall/lang/sl.js new file mode 100644 index 00000000..35d93a20 --- /dev/null +++ b/sources/plugins/selectall/lang/sl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'sl', { + toolbar: 'Izberi vse' +} ); diff --git a/sources/plugins/selectall/lang/sq.js b/sources/plugins/selectall/lang/sq.js new file mode 100644 index 00000000..94b08f30 --- /dev/null +++ b/sources/plugins/selectall/lang/sq.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'sq', { + toolbar: 'Përzgjidh të Gjitha' +} ); diff --git a/sources/plugins/selectall/lang/sr-latn.js b/sources/plugins/selectall/lang/sr-latn.js new file mode 100644 index 00000000..e7eadb8b --- /dev/null +++ b/sources/plugins/selectall/lang/sr-latn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'sr-latn', { + toolbar: 'Označi sve' +} ); diff --git a/sources/plugins/selectall/lang/sr.js b/sources/plugins/selectall/lang/sr.js new file mode 100644 index 00000000..6ab510d2 --- /dev/null +++ b/sources/plugins/selectall/lang/sr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'sr', { + toolbar: 'Означи све' +} ); diff --git a/sources/plugins/selectall/lang/sv.js b/sources/plugins/selectall/lang/sv.js new file mode 100644 index 00000000..64af4c9b --- /dev/null +++ b/sources/plugins/selectall/lang/sv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'sv', { + toolbar: 'Markera allt' +} ); diff --git a/sources/plugins/selectall/lang/th.js b/sources/plugins/selectall/lang/th.js new file mode 100644 index 00000000..817b42b3 --- /dev/null +++ b/sources/plugins/selectall/lang/th.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'th', { + toolbar: 'เลือกทั้งหมด' +} ); diff --git a/sources/plugins/selectall/lang/tr.js b/sources/plugins/selectall/lang/tr.js new file mode 100644 index 00000000..aaf5913d --- /dev/null +++ b/sources/plugins/selectall/lang/tr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'tr', { + toolbar: 'Tümünü Seç' +} ); diff --git a/sources/plugins/selectall/lang/tt.js b/sources/plugins/selectall/lang/tt.js new file mode 100644 index 00000000..32fd1b0d --- /dev/null +++ b/sources/plugins/selectall/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'tt', { + toolbar: 'Барысын сайлау' +} ); diff --git a/sources/plugins/selectall/lang/ug.js b/sources/plugins/selectall/lang/ug.js new file mode 100644 index 00000000..f43df3e6 --- /dev/null +++ b/sources/plugins/selectall/lang/ug.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'ug', { + toolbar: 'ھەممىنى تاللا' +} ); diff --git a/sources/plugins/selectall/lang/uk.js b/sources/plugins/selectall/lang/uk.js new file mode 100644 index 00000000..e5a13f30 --- /dev/null +++ b/sources/plugins/selectall/lang/uk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'uk', { + toolbar: 'Виділити все' +} ); diff --git a/sources/plugins/selectall/lang/vi.js b/sources/plugins/selectall/lang/vi.js new file mode 100644 index 00000000..4872e944 --- /dev/null +++ b/sources/plugins/selectall/lang/vi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'vi', { + toolbar: 'Chọn tất cả' +} ); diff --git a/sources/plugins/selectall/lang/zh-cn.js b/sources/plugins/selectall/lang/zh-cn.js new file mode 100644 index 00000000..823d812f --- /dev/null +++ b/sources/plugins/selectall/lang/zh-cn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'zh-cn', { + toolbar: '全选' +} ); diff --git a/sources/plugins/selectall/lang/zh.js b/sources/plugins/selectall/lang/zh.js new file mode 100644 index 00000000..799d4932 --- /dev/null +++ b/sources/plugins/selectall/lang/zh.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'selectall', 'zh', { + toolbar: '全選' +} ); diff --git a/sources/plugins/selectall/plugin.js b/sources/plugins/selectall/plugin.js new file mode 100644 index 00000000..c8cc3182 --- /dev/null +++ b/sources/plugins/selectall/plugin.js @@ -0,0 +1,60 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview The "selectall" plugin provides an editor command that + * allows selecting the entire content of editable area. + * This plugin also enables a toolbar button for the feature. + */ + +( function() { + CKEDITOR.plugins.add( 'selectall', { + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'selectall', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + editor.addCommand( 'selectAll', { modes: { wysiwyg: 1, source: 1 }, + exec: function( editor ) { + var editable = editor.editable(); + + if ( editable.is( 'textarea' ) ) { + var textarea = editable.$; + + if ( CKEDITOR.env.ie ) + textarea.createTextRange().execCommand( 'SelectAll' ); + else { + textarea.selectionStart = 0; + textarea.selectionEnd = textarea.value.length; + } + + textarea.focus(); + } else { + if ( editable.is( 'body' ) ) + editor.document.$.execCommand( 'SelectAll', false, null ); + else { + var range = editor.createRange(); + range.selectNodeContents( editable ); + range.select(); + } + + // Force triggering selectionChange (#7008) + editor.forceNextSelectionCheck(); + editor.selectionChange(); + } + + }, + canUndo: false + } ); + + editor.ui.addButton && editor.ui.addButton( 'SelectAll', { + label: editor.lang.selectall.toolbar, + command: 'selectAll', + toolbar: 'selection,10' + } ); + } + } ); +} )(); diff --git a/sources/plugins/showblocks/icons/hidpi/showblocks-rtl.png b/sources/plugins/showblocks/icons/hidpi/showblocks-rtl.png new file mode 100644 index 00000000..c88abcb6 Binary files /dev/null and b/sources/plugins/showblocks/icons/hidpi/showblocks-rtl.png differ diff --git a/sources/plugins/showblocks/icons/hidpi/showblocks.png b/sources/plugins/showblocks/icons/hidpi/showblocks.png new file mode 100644 index 00000000..a776fcc1 Binary files /dev/null and b/sources/plugins/showblocks/icons/hidpi/showblocks.png differ diff --git a/sources/plugins/showblocks/icons/showblocks-rtl.png b/sources/plugins/showblocks/icons/showblocks-rtl.png new file mode 100644 index 00000000..cd87d3e2 Binary files /dev/null and b/sources/plugins/showblocks/icons/showblocks-rtl.png differ diff --git a/sources/plugins/showblocks/icons/showblocks.png b/sources/plugins/showblocks/icons/showblocks.png new file mode 100644 index 00000000..41b5f346 Binary files /dev/null and b/sources/plugins/showblocks/icons/showblocks.png differ diff --git a/sources/plugins/showblocks/images/block_address.png b/sources/plugins/showblocks/images/block_address.png new file mode 100644 index 00000000..5abdae12 Binary files /dev/null and b/sources/plugins/showblocks/images/block_address.png differ diff --git a/sources/plugins/showblocks/images/block_blockquote.png b/sources/plugins/showblocks/images/block_blockquote.png new file mode 100644 index 00000000..a8f49735 Binary files /dev/null and b/sources/plugins/showblocks/images/block_blockquote.png differ diff --git a/sources/plugins/showblocks/images/block_div.png b/sources/plugins/showblocks/images/block_div.png new file mode 100644 index 00000000..87b3c171 Binary files /dev/null and b/sources/plugins/showblocks/images/block_div.png differ diff --git a/sources/plugins/showblocks/images/block_h1.png b/sources/plugins/showblocks/images/block_h1.png new file mode 100644 index 00000000..3933325c Binary files /dev/null and b/sources/plugins/showblocks/images/block_h1.png differ diff --git a/sources/plugins/showblocks/images/block_h2.png b/sources/plugins/showblocks/images/block_h2.png new file mode 100644 index 00000000..c99894c2 Binary files /dev/null and b/sources/plugins/showblocks/images/block_h2.png differ diff --git a/sources/plugins/showblocks/images/block_h3.png b/sources/plugins/showblocks/images/block_h3.png new file mode 100644 index 00000000..cb73d679 Binary files /dev/null and b/sources/plugins/showblocks/images/block_h3.png differ diff --git a/sources/plugins/showblocks/images/block_h4.png b/sources/plugins/showblocks/images/block_h4.png new file mode 100644 index 00000000..7af6bb49 Binary files /dev/null and b/sources/plugins/showblocks/images/block_h4.png differ diff --git a/sources/plugins/showblocks/images/block_h5.png b/sources/plugins/showblocks/images/block_h5.png new file mode 100644 index 00000000..ce5bec16 Binary files /dev/null and b/sources/plugins/showblocks/images/block_h5.png differ diff --git a/sources/plugins/showblocks/images/block_h6.png b/sources/plugins/showblocks/images/block_h6.png new file mode 100644 index 00000000..e67b9829 Binary files /dev/null and b/sources/plugins/showblocks/images/block_h6.png differ diff --git a/sources/plugins/showblocks/images/block_p.png b/sources/plugins/showblocks/images/block_p.png new file mode 100644 index 00000000..63a58202 Binary files /dev/null and b/sources/plugins/showblocks/images/block_p.png differ diff --git a/sources/plugins/showblocks/images/block_pre.png b/sources/plugins/showblocks/images/block_pre.png new file mode 100644 index 00000000..955a8689 Binary files /dev/null and b/sources/plugins/showblocks/images/block_pre.png differ diff --git a/sources/plugins/showblocks/lang/af.js b/sources/plugins/showblocks/lang/af.js new file mode 100644 index 00000000..9d73dbd5 --- /dev/null +++ b/sources/plugins/showblocks/lang/af.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'af', { + toolbar: 'Toon blokke' +} ); diff --git a/sources/plugins/showblocks/lang/ar.js b/sources/plugins/showblocks/lang/ar.js new file mode 100644 index 00000000..36420bea --- /dev/null +++ b/sources/plugins/showblocks/lang/ar.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'ar', { + toolbar: 'مخطط تفصيلي' +} ); diff --git a/sources/plugins/showblocks/lang/bg.js b/sources/plugins/showblocks/lang/bg.js new file mode 100644 index 00000000..7ca8b684 --- /dev/null +++ b/sources/plugins/showblocks/lang/bg.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'bg', { + toolbar: 'Показва блокове' +} ); diff --git a/sources/plugins/showblocks/lang/bn.js b/sources/plugins/showblocks/lang/bn.js new file mode 100644 index 00000000..d4e8aa21 --- /dev/null +++ b/sources/plugins/showblocks/lang/bn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'bn', { + toolbar: 'Show Blocks' // MISSING +} ); diff --git a/sources/plugins/showblocks/lang/bs.js b/sources/plugins/showblocks/lang/bs.js new file mode 100644 index 00000000..e48e5a25 --- /dev/null +++ b/sources/plugins/showblocks/lang/bs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'bs', { + toolbar: 'Show Blocks' // MISSING +} ); diff --git a/sources/plugins/showblocks/lang/ca.js b/sources/plugins/showblocks/lang/ca.js new file mode 100644 index 00000000..dfab8a1d --- /dev/null +++ b/sources/plugins/showblocks/lang/ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'ca', { + toolbar: 'Mostra els blocs' +} ); diff --git a/sources/plugins/showblocks/lang/cs.js b/sources/plugins/showblocks/lang/cs.js new file mode 100644 index 00000000..3ca977b0 --- /dev/null +++ b/sources/plugins/showblocks/lang/cs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'cs', { + toolbar: 'Ukázat bloky' +} ); diff --git a/sources/plugins/showblocks/lang/cy.js b/sources/plugins/showblocks/lang/cy.js new file mode 100644 index 00000000..945b7958 --- /dev/null +++ b/sources/plugins/showblocks/lang/cy.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'cy', { + toolbar: 'Dangos Blociau' +} ); diff --git a/sources/plugins/showblocks/lang/da.js b/sources/plugins/showblocks/lang/da.js new file mode 100644 index 00000000..96bbc5b9 --- /dev/null +++ b/sources/plugins/showblocks/lang/da.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'da', { + toolbar: 'Vis afsnitsmærker' +} ); diff --git a/sources/plugins/showblocks/lang/de.js b/sources/plugins/showblocks/lang/de.js new file mode 100644 index 00000000..7fb53592 --- /dev/null +++ b/sources/plugins/showblocks/lang/de.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'de', { + toolbar: 'Blöcke anzeigen' +} ); diff --git a/sources/plugins/showblocks/lang/el.js b/sources/plugins/showblocks/lang/el.js new file mode 100644 index 00000000..fd89a796 --- /dev/null +++ b/sources/plugins/showblocks/lang/el.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'el', { + toolbar: 'Προβολή Τμημάτων' +} ); diff --git a/sources/plugins/showblocks/lang/en-au.js b/sources/plugins/showblocks/lang/en-au.js new file mode 100644 index 00000000..22299b30 --- /dev/null +++ b/sources/plugins/showblocks/lang/en-au.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'en-au', { + toolbar: 'Show Blocks' +} ); diff --git a/sources/plugins/showblocks/lang/en-ca.js b/sources/plugins/showblocks/lang/en-ca.js new file mode 100644 index 00000000..c5dfa3ce --- /dev/null +++ b/sources/plugins/showblocks/lang/en-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'en-ca', { + toolbar: 'Show Blocks' +} ); diff --git a/sources/plugins/showblocks/lang/en-gb.js b/sources/plugins/showblocks/lang/en-gb.js new file mode 100644 index 00000000..0491dbfb --- /dev/null +++ b/sources/plugins/showblocks/lang/en-gb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'en-gb', { + toolbar: 'Show Blocks' +} ); diff --git a/sources/plugins/showblocks/lang/en.js b/sources/plugins/showblocks/lang/en.js new file mode 100644 index 00000000..dd121a20 --- /dev/null +++ b/sources/plugins/showblocks/lang/en.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'en', { + toolbar: 'Show Blocks' +} ); diff --git a/sources/plugins/showblocks/lang/eo.js b/sources/plugins/showblocks/lang/eo.js new file mode 100644 index 00000000..a44662f6 --- /dev/null +++ b/sources/plugins/showblocks/lang/eo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'eo', { + toolbar: 'Montri la blokojn' +} ); diff --git a/sources/plugins/showblocks/lang/es.js b/sources/plugins/showblocks/lang/es.js new file mode 100644 index 00000000..f9ea1cdf --- /dev/null +++ b/sources/plugins/showblocks/lang/es.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'es', { + toolbar: 'Mostrar bloques' +} ); diff --git a/sources/plugins/showblocks/lang/et.js b/sources/plugins/showblocks/lang/et.js new file mode 100644 index 00000000..883d4862 --- /dev/null +++ b/sources/plugins/showblocks/lang/et.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'et', { + toolbar: 'Blokkide näitamine' +} ); diff --git a/sources/plugins/showblocks/lang/eu.js b/sources/plugins/showblocks/lang/eu.js new file mode 100644 index 00000000..c0a75439 --- /dev/null +++ b/sources/plugins/showblocks/lang/eu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'eu', { + toolbar: 'Erakutsi blokeak' +} ); diff --git a/sources/plugins/showblocks/lang/fa.js b/sources/plugins/showblocks/lang/fa.js new file mode 100644 index 00000000..d9bccd24 --- /dev/null +++ b/sources/plugins/showblocks/lang/fa.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'fa', { + toolbar: 'نمایش بلوک‌ها' +} ); diff --git a/sources/plugins/showblocks/lang/fi.js b/sources/plugins/showblocks/lang/fi.js new file mode 100644 index 00000000..053fa69f --- /dev/null +++ b/sources/plugins/showblocks/lang/fi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'fi', { + toolbar: 'Näytä elementit' +} ); diff --git a/sources/plugins/showblocks/lang/fo.js b/sources/plugins/showblocks/lang/fo.js new file mode 100644 index 00000000..2cc79a51 --- /dev/null +++ b/sources/plugins/showblocks/lang/fo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'fo', { + toolbar: 'Vís blokkar' +} ); diff --git a/sources/plugins/showblocks/lang/fr-ca.js b/sources/plugins/showblocks/lang/fr-ca.js new file mode 100644 index 00000000..7b77e25e --- /dev/null +++ b/sources/plugins/showblocks/lang/fr-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'fr-ca', { + toolbar: 'Afficher les blocs' +} ); diff --git a/sources/plugins/showblocks/lang/fr.js b/sources/plugins/showblocks/lang/fr.js new file mode 100644 index 00000000..3f771b06 --- /dev/null +++ b/sources/plugins/showblocks/lang/fr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'fr', { + toolbar: 'Afficher les blocs' +} ); diff --git a/sources/plugins/showblocks/lang/gl.js b/sources/plugins/showblocks/lang/gl.js new file mode 100644 index 00000000..f107a5af --- /dev/null +++ b/sources/plugins/showblocks/lang/gl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'gl', { + toolbar: 'Amosar os bloques' +} ); diff --git a/sources/plugins/showblocks/lang/gu.js b/sources/plugins/showblocks/lang/gu.js new file mode 100644 index 00000000..4641901d --- /dev/null +++ b/sources/plugins/showblocks/lang/gu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'gu', { + toolbar: 'બ્લૉક બતાવવું' +} ); diff --git a/sources/plugins/showblocks/lang/he.js b/sources/plugins/showblocks/lang/he.js new file mode 100644 index 00000000..528d04eb --- /dev/null +++ b/sources/plugins/showblocks/lang/he.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'he', { + toolbar: 'הצגת בלוקים' +} ); diff --git a/sources/plugins/showblocks/lang/hi.js b/sources/plugins/showblocks/lang/hi.js new file mode 100644 index 00000000..4a4869eb --- /dev/null +++ b/sources/plugins/showblocks/lang/hi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'hi', { + toolbar: 'ब्लॉक दिखायें' +} ); diff --git a/sources/plugins/showblocks/lang/hr.js b/sources/plugins/showblocks/lang/hr.js new file mode 100644 index 00000000..ad60d878 --- /dev/null +++ b/sources/plugins/showblocks/lang/hr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'hr', { + toolbar: 'Prikaži blokove' +} ); diff --git a/sources/plugins/showblocks/lang/hu.js b/sources/plugins/showblocks/lang/hu.js new file mode 100644 index 00000000..6abc3205 --- /dev/null +++ b/sources/plugins/showblocks/lang/hu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'hu', { + toolbar: 'Blokkok megjelenítése' +} ); diff --git a/sources/plugins/showblocks/lang/id.js b/sources/plugins/showblocks/lang/id.js new file mode 100644 index 00000000..b075fa5f --- /dev/null +++ b/sources/plugins/showblocks/lang/id.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'id', { + toolbar: 'Perlihatkan Blok' +} ); diff --git a/sources/plugins/showblocks/lang/is.js b/sources/plugins/showblocks/lang/is.js new file mode 100644 index 00000000..4ef80ece --- /dev/null +++ b/sources/plugins/showblocks/lang/is.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'is', { + toolbar: 'Sýna blokkir' +} ); diff --git a/sources/plugins/showblocks/lang/it.js b/sources/plugins/showblocks/lang/it.js new file mode 100644 index 00000000..def22aa7 --- /dev/null +++ b/sources/plugins/showblocks/lang/it.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'it', { + toolbar: 'Visualizza Blocchi' +} ); diff --git a/sources/plugins/showblocks/lang/ja.js b/sources/plugins/showblocks/lang/ja.js new file mode 100644 index 00000000..e1424a87 --- /dev/null +++ b/sources/plugins/showblocks/lang/ja.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'ja', { + toolbar: 'ブロック表示' +} ); diff --git a/sources/plugins/showblocks/lang/ka.js b/sources/plugins/showblocks/lang/ka.js new file mode 100644 index 00000000..e312c057 --- /dev/null +++ b/sources/plugins/showblocks/lang/ka.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'ka', { + toolbar: 'არეების ჩვენება' +} ); diff --git a/sources/plugins/showblocks/lang/km.js b/sources/plugins/showblocks/lang/km.js new file mode 100644 index 00000000..5a8a1416 --- /dev/null +++ b/sources/plugins/showblocks/lang/km.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'km', { + toolbar: 'បង្ហាញ​ប្លក់' +} ); diff --git a/sources/plugins/showblocks/lang/ko.js b/sources/plugins/showblocks/lang/ko.js new file mode 100644 index 00000000..9d41596d --- /dev/null +++ b/sources/plugins/showblocks/lang/ko.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'ko', { + toolbar: '블록 보기' +} ); diff --git a/sources/plugins/showblocks/lang/ku.js b/sources/plugins/showblocks/lang/ku.js new file mode 100644 index 00000000..27224820 --- /dev/null +++ b/sources/plugins/showblocks/lang/ku.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'ku', { + toolbar: 'نیشاندانی بەربەستەکان' +} ); diff --git a/sources/plugins/showblocks/lang/lt.js b/sources/plugins/showblocks/lang/lt.js new file mode 100644 index 00000000..f711598e --- /dev/null +++ b/sources/plugins/showblocks/lang/lt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'lt', { + toolbar: 'Rodyti blokus' +} ); diff --git a/sources/plugins/showblocks/lang/lv.js b/sources/plugins/showblocks/lang/lv.js new file mode 100644 index 00000000..b6ee9ee9 --- /dev/null +++ b/sources/plugins/showblocks/lang/lv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'lv', { + toolbar: 'Parādīt blokus' +} ); diff --git a/sources/plugins/showblocks/lang/mk.js b/sources/plugins/showblocks/lang/mk.js new file mode 100644 index 00000000..382be788 --- /dev/null +++ b/sources/plugins/showblocks/lang/mk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'mk', { + toolbar: 'Show Blocks' // MISSING +} ); diff --git a/sources/plugins/showblocks/lang/mn.js b/sources/plugins/showblocks/lang/mn.js new file mode 100644 index 00000000..42144677 --- /dev/null +++ b/sources/plugins/showblocks/lang/mn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'mn', { + toolbar: 'Хавтангуудыг харуулах' +} ); diff --git a/sources/plugins/showblocks/lang/ms.js b/sources/plugins/showblocks/lang/ms.js new file mode 100644 index 00000000..557e4950 --- /dev/null +++ b/sources/plugins/showblocks/lang/ms.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'ms', { + toolbar: 'Show Blocks' // MISSING +} ); diff --git a/sources/plugins/showblocks/lang/nb.js b/sources/plugins/showblocks/lang/nb.js new file mode 100644 index 00000000..3a5e146d --- /dev/null +++ b/sources/plugins/showblocks/lang/nb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'nb', { + toolbar: 'Vis blokker' +} ); diff --git a/sources/plugins/showblocks/lang/nl.js b/sources/plugins/showblocks/lang/nl.js new file mode 100644 index 00000000..2fbbef26 --- /dev/null +++ b/sources/plugins/showblocks/lang/nl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'nl', { + toolbar: 'Toon blokken' +} ); diff --git a/sources/plugins/showblocks/lang/no.js b/sources/plugins/showblocks/lang/no.js new file mode 100644 index 00000000..14d190fb --- /dev/null +++ b/sources/plugins/showblocks/lang/no.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'no', { + toolbar: 'Vis blokker' +} ); diff --git a/sources/plugins/showblocks/lang/pl.js b/sources/plugins/showblocks/lang/pl.js new file mode 100644 index 00000000..b33a3c0f --- /dev/null +++ b/sources/plugins/showblocks/lang/pl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'pl', { + toolbar: 'Pokaż bloki' +} ); diff --git a/sources/plugins/showblocks/lang/pt-br.js b/sources/plugins/showblocks/lang/pt-br.js new file mode 100644 index 00000000..4c7f172c --- /dev/null +++ b/sources/plugins/showblocks/lang/pt-br.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'pt-br', { + toolbar: 'Mostrar blocos de código' +} ); diff --git a/sources/plugins/showblocks/lang/pt.js b/sources/plugins/showblocks/lang/pt.js new file mode 100644 index 00000000..b27a7e72 --- /dev/null +++ b/sources/plugins/showblocks/lang/pt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'pt', { + toolbar: 'Exibir blocos' +} ); diff --git a/sources/plugins/showblocks/lang/ro.js b/sources/plugins/showblocks/lang/ro.js new file mode 100644 index 00000000..268c2fdb --- /dev/null +++ b/sources/plugins/showblocks/lang/ro.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'ro', { + toolbar: 'Arată blocurile' +} ); diff --git a/sources/plugins/showblocks/lang/ru.js b/sources/plugins/showblocks/lang/ru.js new file mode 100644 index 00000000..9b3f315d --- /dev/null +++ b/sources/plugins/showblocks/lang/ru.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'ru', { + toolbar: 'Отображать блоки' +} ); diff --git a/sources/plugins/showblocks/lang/si.js b/sources/plugins/showblocks/lang/si.js new file mode 100644 index 00000000..63722d12 --- /dev/null +++ b/sources/plugins/showblocks/lang/si.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'si', { + toolbar: 'කොටස පෙන්නන්න' +} ); diff --git a/sources/plugins/showblocks/lang/sk.js b/sources/plugins/showblocks/lang/sk.js new file mode 100644 index 00000000..bd4cdc38 --- /dev/null +++ b/sources/plugins/showblocks/lang/sk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'sk', { + toolbar: 'Ukázať bloky' +} ); diff --git a/sources/plugins/showblocks/lang/sl.js b/sources/plugins/showblocks/lang/sl.js new file mode 100644 index 00000000..14ace414 --- /dev/null +++ b/sources/plugins/showblocks/lang/sl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'sl', { + toolbar: 'Prikaži ograde' +} ); diff --git a/sources/plugins/showblocks/lang/sq.js b/sources/plugins/showblocks/lang/sq.js new file mode 100644 index 00000000..8371edab --- /dev/null +++ b/sources/plugins/showblocks/lang/sq.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'sq', { + toolbar: 'Shfaq Blloqet' +} ); diff --git a/sources/plugins/showblocks/lang/sr-latn.js b/sources/plugins/showblocks/lang/sr-latn.js new file mode 100644 index 00000000..8dd9e3b7 --- /dev/null +++ b/sources/plugins/showblocks/lang/sr-latn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'sr-latn', { + toolbar: 'Show Blocks' // MISSING +} ); diff --git a/sources/plugins/showblocks/lang/sr.js b/sources/plugins/showblocks/lang/sr.js new file mode 100644 index 00000000..fa6e4173 --- /dev/null +++ b/sources/plugins/showblocks/lang/sr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'sr', { + toolbar: 'Show Blocks' // MISSING +} ); diff --git a/sources/plugins/showblocks/lang/sv.js b/sources/plugins/showblocks/lang/sv.js new file mode 100644 index 00000000..ec935fcc --- /dev/null +++ b/sources/plugins/showblocks/lang/sv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'sv', { + toolbar: 'Visa block' +} ); diff --git a/sources/plugins/showblocks/lang/th.js b/sources/plugins/showblocks/lang/th.js new file mode 100644 index 00000000..6e8fbe95 --- /dev/null +++ b/sources/plugins/showblocks/lang/th.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'th', { + toolbar: 'แสดงบล็อคข้อมูล' +} ); diff --git a/sources/plugins/showblocks/lang/tr.js b/sources/plugins/showblocks/lang/tr.js new file mode 100644 index 00000000..b9b430c0 --- /dev/null +++ b/sources/plugins/showblocks/lang/tr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'tr', { + toolbar: 'Blokları Göster' +} ); diff --git a/sources/plugins/showblocks/lang/tt.js b/sources/plugins/showblocks/lang/tt.js new file mode 100644 index 00000000..8de9fb1f --- /dev/null +++ b/sources/plugins/showblocks/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'tt', { + toolbar: 'Блокларны күрсәтү' +} ); diff --git a/sources/plugins/showblocks/lang/ug.js b/sources/plugins/showblocks/lang/ug.js new file mode 100644 index 00000000..187102b9 --- /dev/null +++ b/sources/plugins/showblocks/lang/ug.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'ug', { + toolbar: 'بۆلەكنى كۆرسەت' +} ); diff --git a/sources/plugins/showblocks/lang/uk.js b/sources/plugins/showblocks/lang/uk.js new file mode 100644 index 00000000..3f9f0150 --- /dev/null +++ b/sources/plugins/showblocks/lang/uk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'uk', { + toolbar: 'Показувати блоки' +} ); diff --git a/sources/plugins/showblocks/lang/vi.js b/sources/plugins/showblocks/lang/vi.js new file mode 100644 index 00000000..af30a43c --- /dev/null +++ b/sources/plugins/showblocks/lang/vi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'vi', { + toolbar: 'Hiển thị các khối' +} ); diff --git a/sources/plugins/showblocks/lang/zh-cn.js b/sources/plugins/showblocks/lang/zh-cn.js new file mode 100644 index 00000000..104f8fb1 --- /dev/null +++ b/sources/plugins/showblocks/lang/zh-cn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'zh-cn', { + toolbar: '显示区块' +} ); diff --git a/sources/plugins/showblocks/lang/zh.js b/sources/plugins/showblocks/lang/zh.js new file mode 100644 index 00000000..5990ecfd --- /dev/null +++ b/sources/plugins/showblocks/lang/zh.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'showblocks', 'zh', { + toolbar: '顯示區塊' +} ); diff --git a/sources/plugins/showblocks/plugin.js b/sources/plugins/showblocks/plugin.js new file mode 100644 index 00000000..7bf11c23 --- /dev/null +++ b/sources/plugins/showblocks/plugin.js @@ -0,0 +1,153 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview The "showblocks" plugin. Enable it will make all block level + * elements being decorated with a border and the element name + * displayed on the left-right corner. + */ + +( function() { + 'use strict'; + + var commandDefinition = { + readOnly: 1, + preserveState: true, + editorFocus: false, + + exec: function( editor ) { + this.toggleState(); + this.refresh( editor ); + }, + + refresh: function( editor ) { + if ( editor.document ) { + // Show blocks turns inactive after editor loses focus when in inline. + var showBlocks = ( this.state == CKEDITOR.TRISTATE_ON && ( editor.elementMode != CKEDITOR.ELEMENT_MODE_INLINE || editor.focusManager.hasFocus ) ); + + var funcName = showBlocks ? 'attachClass' : 'removeClass'; + editor.editable()[ funcName ]( 'cke_show_blocks' ); + } + } + }; + + CKEDITOR.plugins.add( 'showblocks', { + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'showblocks,showblocks-rtl', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + onLoad: function() { + var tags = [ 'p', 'div', 'pre', 'address', 'blockquote', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' ], + cssStd, cssImg, cssLtr, cssRtl, + path = CKEDITOR.getUrl( this.path ), + // #10884 don't apply showblocks styles to non-editable elements and chosen ones. + // IE8 does not support :not() pseudoclass, so we need to reset showblocks rather + // than 'prevent' its application. We do that by additional rules. + supportsNotPseudoclass = !( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ), + notDisabled = supportsNotPseudoclass ? ':not([contenteditable=false]):not(.cke_show_blocks_off)' : '', + tag, trailing; + + cssStd = cssImg = cssLtr = cssRtl = ''; + + while ( ( tag = tags.pop() ) ) { + trailing = tags.length ? ',' : ''; + + cssStd += '.cke_show_blocks ' + tag + notDisabled + trailing; + cssLtr += '.cke_show_blocks.cke_contents_ltr ' + tag + notDisabled + trailing; + cssRtl += '.cke_show_blocks.cke_contents_rtl ' + tag + notDisabled + trailing; + cssImg += '.cke_show_blocks ' + tag + notDisabled + '{' + + 'background-image:url(' + CKEDITOR.getUrl( path + 'images/block_' + tag + '.png' ) + ')' + + '}'; + } + + // .cke_show_blocks p { ... } + cssStd += '{' + + 'background-repeat:no-repeat;' + + 'border:1px dotted gray;' + + 'padding-top:8px' + + '}'; + + // .cke_show_blocks.cke_contents_ltr p { ... } + cssLtr += '{' + + 'background-position:top left;' + + 'padding-left:8px' + + '}'; + + // .cke_show_blocks.cke_contents_rtl p { ... } + cssRtl += '{' + + 'background-position:top right;' + + 'padding-right:8px' + + '}'; + + CKEDITOR.addCss( cssStd.concat( cssImg, cssLtr, cssRtl ) ); + + // [IE8] Reset showblocks styles for non-editables and chosen elements, because + // it could not be done using :not() pseudoclass (#10884). + if ( !supportsNotPseudoclass ) { + CKEDITOR.addCss( + '.cke_show_blocks [contenteditable=false],.cke_show_blocks .cke_show_blocks_off{' + + 'border:none;' + + 'padding-top:0;' + + 'background-image:none' + + '}' + + '.cke_show_blocks.cke_contents_rtl [contenteditable=false],.cke_show_blocks.cke_contents_rtl .cke_show_blocks_off{' + + 'padding-right:0' + + '}' + + '.cke_show_blocks.cke_contents_ltr [contenteditable=false],.cke_show_blocks.cke_contents_ltr .cke_show_blocks_off{' + + 'padding-left:0' + + '}' + ); + } + }, + init: function( editor ) { + if ( editor.blockless ) + return; + + var command = editor.addCommand( 'showblocks', commandDefinition ); + command.canUndo = false; + + if ( editor.config.startupOutlineBlocks ) + command.setState( CKEDITOR.TRISTATE_ON ); + + editor.ui.addButton && editor.ui.addButton( 'ShowBlocks', { + label: editor.lang.showblocks.toolbar, + command: 'showblocks', + toolbar: 'tools,20' + } ); + + // Refresh the command on setData. + editor.on( 'mode', function() { + if ( command.state != CKEDITOR.TRISTATE_DISABLED ) + command.refresh( editor ); + } ); + + // Refresh the command on focus/blur in inline. + if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ) { + editor.on( 'focus', onFocusBlur ); + editor.on( 'blur', onFocusBlur ); + } + + // Refresh the command on setData. + editor.on( 'contentDom', function() { + if ( command.state != CKEDITOR.TRISTATE_DISABLED ) + command.refresh( editor ); + } ); + + function onFocusBlur() { + command.refresh( editor ); + } + } + } ); +} )(); + +/** + * Whether to automaticaly enable the show block" command when the editor loads. + * + * config.startupOutlineBlocks = true; + * + * @cfg {Boolean} [startupOutlineBlocks=false] + * @member CKEDITOR.config + */ diff --git a/sources/plugins/showborders/plugin.js b/sources/plugins/showborders/plugin.js new file mode 100644 index 00000000..0c569931 --- /dev/null +++ b/sources/plugins/showborders/plugin.js @@ -0,0 +1,174 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview The "show border" plugin. The command display visible outline + * border line around all table elements if table doesn't have a none-zero 'border' attribute specified. + */ + +( function() { + var commandDefinition = { + preserveState: true, + editorFocus: false, + readOnly: 1, + + exec: function( editor ) { + this.toggleState(); + this.refresh( editor ); + }, + + refresh: function( editor ) { + if ( editor.document ) { + var funcName = ( this.state == CKEDITOR.TRISTATE_ON ) ? 'attachClass' : 'removeClass'; + editor.editable()[ funcName ]( 'cke_show_borders' ); + } + } + }; + + var showBorderClassName = 'cke_show_border'; + + CKEDITOR.plugins.add( 'showborders', { + modes: { 'wysiwyg': 1 }, + + onLoad: function() { + var cssStyleText, + cssTemplate = + // TODO: For IE6, we don't have child selector support, + // where nested table cells could be incorrect. + ( CKEDITOR.env.ie6Compat ? [ + '.%1 table.%2,', + '.%1 table.%2 td, .%1 table.%2 th', + '{', + 'border : #d3d3d3 1px dotted', + '}' + ] : [ + '.%1 table.%2,', + '.%1 table.%2 > tr > td, .%1 table.%2 > tr > th,', + '.%1 table.%2 > tbody > tr > td, .%1 table.%2 > tbody > tr > th,', + '.%1 table.%2 > thead > tr > td, .%1 table.%2 > thead > tr > th,', + '.%1 table.%2 > tfoot > tr > td, .%1 table.%2 > tfoot > tr > th', + '{', + 'border : #d3d3d3 1px dotted', + '}' + ] ).join( '' ); + + cssStyleText = cssTemplate.replace( /%2/g, showBorderClassName ).replace( /%1/g, 'cke_show_borders ' ); + + CKEDITOR.addCss( cssStyleText ); + }, + + init: function( editor ) { + + var command = editor.addCommand( 'showborders', commandDefinition ); + command.canUndo = false; + + if ( editor.config.startupShowBorders !== false ) + command.setState( CKEDITOR.TRISTATE_ON ); + + // Refresh the command on setData. + editor.on( 'mode', function() { + if ( command.state != CKEDITOR.TRISTATE_DISABLED ) + command.refresh( editor ); + }, null, null, 100 ); + + // Refresh the command on wysiwyg frame reloads. + editor.on( 'contentDom', function() { + if ( command.state != CKEDITOR.TRISTATE_DISABLED ) + command.refresh( editor ); + } ); + + editor.on( 'removeFormatCleanup', function( evt ) { + var element = evt.data; + if ( editor.getCommand( 'showborders' ).state == CKEDITOR.TRISTATE_ON && element.is( 'table' ) && ( !element.hasAttribute( 'border' ) || parseInt( element.getAttribute( 'border' ), 10 ) <= 0 ) ) + element.addClass( showBorderClassName ); + } ); + }, + + afterInit: function( editor ) { + var dataProcessor = editor.dataProcessor, + dataFilter = dataProcessor && dataProcessor.dataFilter, + htmlFilter = dataProcessor && dataProcessor.htmlFilter; + + if ( dataFilter ) { + dataFilter.addRules( { + elements: { + 'table': function( element ) { + var attributes = element.attributes, + cssClass = attributes[ 'class' ], + border = parseInt( attributes.border, 10 ); + + if ( ( !border || border <= 0 ) && ( !cssClass || cssClass.indexOf( showBorderClassName ) == -1 ) ) + attributes[ 'class' ] = ( cssClass || '' ) + ' ' + showBorderClassName; + } + } + } ); + } + + if ( htmlFilter ) { + htmlFilter.addRules( { + elements: { + 'table': function( table ) { + var attributes = table.attributes, + cssClass = attributes[ 'class' ]; + + cssClass && ( attributes[ 'class' ] = cssClass.replace( showBorderClassName, '' ).replace( /\s{2}/, ' ' ).replace( /^\s+|\s+$/, '' ) ); + } + } + } ); + } + } + } ); + + // Table dialog must be aware of it. + CKEDITOR.on( 'dialogDefinition', function( ev ) { + var dialogName = ev.data.name; + + if ( dialogName == 'table' || dialogName == 'tableProperties' ) { + var dialogDefinition = ev.data.definition, + infoTab = dialogDefinition.getContents( 'info' ), + borderField = infoTab.get( 'txtBorder' ), + originalCommit = borderField.commit; + + borderField.commit = CKEDITOR.tools.override( originalCommit, function( org ) { + return function( data, selectedTable ) { + org.apply( this, arguments ); + var value = parseInt( this.getValue(), 10 ); + selectedTable[ ( !value || value <= 0 ) ? 'addClass' : 'removeClass' ]( showBorderClassName ); + }; + } ); + + var advTab = dialogDefinition.getContents( 'advanced' ), + classField = advTab && advTab.get( 'advCSSClasses' ); + + if ( classField ) { + classField.setup = CKEDITOR.tools.override( classField.setup, function( originalSetup ) { + return function() { + originalSetup.apply( this, arguments ); + this.setValue( this.getValue().replace( /cke_show_border/, '' ) ); + }; + } ); + + classField.commit = CKEDITOR.tools.override( classField.commit, function( originalCommit ) { + return function( data, element ) { + originalCommit.apply( this, arguments ); + + if ( !parseInt( element.getAttribute( 'border' ), 10 ) ) + element.addClass( 'cke_show_border' ); + }; + } ); + } + } + } ); + +} )(); + +/** + * Whether to automatically enable the "show borders" command when the editor loads. + * + * config.startupShowBorders = false; + * + * @cfg {Boolean} [startupShowBorders=true] + * @member CKEDITOR.config + */ diff --git a/sources/plugins/smiley/dialogs/smiley.js b/sources/plugins/smiley/dialogs/smiley.js new file mode 100644 index 00000000..4d9a2723 --- /dev/null +++ b/sources/plugins/smiley/dialogs/smiley.js @@ -0,0 +1,193 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.dialog.add( 'smiley', function( editor ) { + var config = editor.config, + lang = editor.lang.smiley, + images = config.smiley_images, + columns = config.smiley_columns || 8, + i; + + // Simulate "this" of a dialog for non-dialog events. + // @type {CKEDITOR.dialog} + var dialog; + var onClick = function( evt ) { + var target = evt.data.getTarget(), + targetName = target.getName(); + + if ( targetName == 'a' ) + target = target.getChild( 0 ); + else if ( targetName != 'img' ) + return; + + var src = target.getAttribute( 'cke_src' ), + title = target.getAttribute( 'title' ); + + var img = editor.document.createElement( 'img', { + attributes: { + src: src, + 'data-cke-saved-src': src, + title: title, + alt: title, + width: target.$.width, + height: target.$.height + } + } ); + + editor.insertElement( img ); + + dialog.hide(); + evt.data.preventDefault(); + }; + + var onKeydown = CKEDITOR.tools.addFunction( function( ev, element ) { + ev = new CKEDITOR.dom.event( ev ); + element = new CKEDITOR.dom.element( element ); + var relative, nodeToMove; + + var keystroke = ev.getKeystroke(), + rtl = editor.lang.dir == 'rtl'; + switch ( keystroke ) { + // UP-ARROW + case 38: + // relative is TR + if ( ( relative = element.getParent().getParent().getPrevious() ) ) { + nodeToMove = relative.getChild( [ element.getParent().getIndex(), 0 ] ); + nodeToMove.focus(); + } + ev.preventDefault(); + break; + // DOWN-ARROW + case 40: + // relative is TR + if ( ( relative = element.getParent().getParent().getNext() ) ) { + nodeToMove = relative.getChild( [ element.getParent().getIndex(), 0 ] ); + if ( nodeToMove ) + nodeToMove.focus(); + } + ev.preventDefault(); + break; + // ENTER + // SPACE + case 32: + onClick( { data: ev } ); + ev.preventDefault(); + break; + + // RIGHT-ARROW + case rtl ? 37 : 39: + // relative is TD + if ( ( relative = element.getParent().getNext() ) ) { + nodeToMove = relative.getChild( 0 ); + nodeToMove.focus(); + ev.preventDefault( true ); + } + // relative is TR + else if ( ( relative = element.getParent().getParent().getNext() ) ) { + nodeToMove = relative.getChild( [ 0, 0 ] ); + if ( nodeToMove ) + nodeToMove.focus(); + ev.preventDefault( true ); + } + break; + + // LEFT-ARROW + case rtl ? 39 : 37: + // relative is TD + if ( ( relative = element.getParent().getPrevious() ) ) { + nodeToMove = relative.getChild( 0 ); + nodeToMove.focus(); + ev.preventDefault( true ); + } + // relative is TR + else if ( ( relative = element.getParent().getParent().getPrevious() ) ) { + nodeToMove = relative.getLast().getChild( 0 ); + nodeToMove.focus(); + ev.preventDefault( true ); + } + break; + default: + // Do not stop not handled events. + return; + } + } ); + + // Build the HTML for the smiley images table. + var labelId = CKEDITOR.tools.getNextId() + '_smiley_emtions_label'; + var html = [ + '
    ' + + '' + lang.options + '', + '' + ]; + + var size = images.length; + for ( i = 0; i < size; i++ ) { + if ( i % columns === 0 ) + html.push( '' ); + + var smileyLabelId = 'cke_smile_label_' + i + '_' + CKEDITOR.tools.getNextNumber(); + html.push( + '' + ); + + if ( i % columns == columns - 1 ) + html.push( '' ); + } + + if ( i < columns - 1 ) { + for ( ; i < columns - 1; i++ ) + html.push( '' ); + html.push( '' ); + } + + html.push( '
    ' ); + + var smileySelector = { + type: 'html', + id: 'smileySelector', + html: html.join( '' ), + onLoad: function( event ) { + dialog = event.sender; + }, + focus: function() { + var self = this; + // IE need a while to move the focus (#6539). + setTimeout( function() { + var firstSmile = self.getElement().getElementsByTag( 'a' ).getItem( 0 ); + firstSmile.focus(); + }, 0 ); + }, + onClick: onClick, + style: 'width: 100%; border-collapse: separate;' + }; + + return { + title: editor.lang.smiley.title, + minWidth: 270, + minHeight: 120, + contents: [ { + id: 'tab1', + label: '', + title: '', + expand: true, + padding: 0, + elements: [ + smileySelector + ] + } ], + buttons: [ CKEDITOR.dialog.cancelButton ] + }; +} ); diff --git a/sources/plugins/smiley/icons/hidpi/smiley.png b/sources/plugins/smiley/icons/hidpi/smiley.png new file mode 100644 index 00000000..bad62eed Binary files /dev/null and b/sources/plugins/smiley/icons/hidpi/smiley.png differ diff --git a/sources/plugins/smiley/icons/smiley.png b/sources/plugins/smiley/icons/smiley.png new file mode 100644 index 00000000..9fafa28a Binary files /dev/null and b/sources/plugins/smiley/icons/smiley.png differ diff --git a/sources/plugins/smiley/images/angel_smile.gif b/sources/plugins/smiley/images/angel_smile.gif new file mode 100644 index 00000000..21f81a2f Binary files /dev/null and b/sources/plugins/smiley/images/angel_smile.gif differ diff --git a/sources/plugins/smiley/images/angel_smile.png b/sources/plugins/smiley/images/angel_smile.png new file mode 100644 index 00000000..559e5e71 Binary files /dev/null and b/sources/plugins/smiley/images/angel_smile.png differ diff --git a/sources/plugins/smiley/images/angry_smile.gif b/sources/plugins/smiley/images/angry_smile.gif new file mode 100644 index 00000000..c912d99b Binary files /dev/null and b/sources/plugins/smiley/images/angry_smile.gif differ diff --git a/sources/plugins/smiley/images/angry_smile.png b/sources/plugins/smiley/images/angry_smile.png new file mode 100644 index 00000000..c05d2be3 Binary files /dev/null and b/sources/plugins/smiley/images/angry_smile.png differ diff --git a/sources/plugins/smiley/images/broken_heart.gif b/sources/plugins/smiley/images/broken_heart.gif new file mode 100644 index 00000000..4162a7b2 Binary files /dev/null and b/sources/plugins/smiley/images/broken_heart.gif differ diff --git a/sources/plugins/smiley/images/broken_heart.png b/sources/plugins/smiley/images/broken_heart.png new file mode 100644 index 00000000..a711c0d8 Binary files /dev/null and b/sources/plugins/smiley/images/broken_heart.png differ diff --git a/sources/plugins/smiley/images/confused_smile.gif b/sources/plugins/smiley/images/confused_smile.gif new file mode 100644 index 00000000..0e420cba Binary files /dev/null and b/sources/plugins/smiley/images/confused_smile.gif differ diff --git a/sources/plugins/smiley/images/confused_smile.png b/sources/plugins/smiley/images/confused_smile.png new file mode 100644 index 00000000..e0b8e5c6 Binary files /dev/null and b/sources/plugins/smiley/images/confused_smile.png differ diff --git a/sources/plugins/smiley/images/cry_smile.gif b/sources/plugins/smiley/images/cry_smile.gif new file mode 100644 index 00000000..b5133427 Binary files /dev/null and b/sources/plugins/smiley/images/cry_smile.gif differ diff --git a/sources/plugins/smiley/images/cry_smile.png b/sources/plugins/smiley/images/cry_smile.png new file mode 100644 index 00000000..a1891a34 Binary files /dev/null and b/sources/plugins/smiley/images/cry_smile.png differ diff --git a/sources/plugins/smiley/images/devil_smile.gif b/sources/plugins/smiley/images/devil_smile.gif new file mode 100644 index 00000000..9b2a1005 Binary files /dev/null and b/sources/plugins/smiley/images/devil_smile.gif differ diff --git a/sources/plugins/smiley/images/devil_smile.png b/sources/plugins/smiley/images/devil_smile.png new file mode 100644 index 00000000..53247a88 Binary files /dev/null and b/sources/plugins/smiley/images/devil_smile.png differ diff --git a/sources/plugins/smiley/images/embaressed_smile.gif b/sources/plugins/smiley/images/embaressed_smile.gif new file mode 100644 index 00000000..8d39f252 Binary files /dev/null and b/sources/plugins/smiley/images/embaressed_smile.gif differ diff --git a/sources/plugins/smiley/images/embarrassed_smile.gif b/sources/plugins/smiley/images/embarrassed_smile.gif new file mode 100644 index 00000000..8d39f252 Binary files /dev/null and b/sources/plugins/smiley/images/embarrassed_smile.gif differ diff --git a/sources/plugins/smiley/images/embarrassed_smile.png b/sources/plugins/smiley/images/embarrassed_smile.png new file mode 100644 index 00000000..34904b66 Binary files /dev/null and b/sources/plugins/smiley/images/embarrassed_smile.png differ diff --git a/sources/plugins/smiley/images/envelope.gif b/sources/plugins/smiley/images/envelope.gif new file mode 100644 index 00000000..5294ec48 Binary files /dev/null and b/sources/plugins/smiley/images/envelope.gif differ diff --git a/sources/plugins/smiley/images/envelope.png b/sources/plugins/smiley/images/envelope.png new file mode 100644 index 00000000..44398ad1 Binary files /dev/null and b/sources/plugins/smiley/images/envelope.png differ diff --git a/sources/plugins/smiley/images/heart.gif b/sources/plugins/smiley/images/heart.gif new file mode 100644 index 00000000..160be8ef Binary files /dev/null and b/sources/plugins/smiley/images/heart.gif differ diff --git a/sources/plugins/smiley/images/heart.png b/sources/plugins/smiley/images/heart.png new file mode 100644 index 00000000..df409e62 Binary files /dev/null and b/sources/plugins/smiley/images/heart.png differ diff --git a/sources/plugins/smiley/images/kiss.gif b/sources/plugins/smiley/images/kiss.gif new file mode 100644 index 00000000..ffb23db0 Binary files /dev/null and b/sources/plugins/smiley/images/kiss.gif differ diff --git a/sources/plugins/smiley/images/kiss.png b/sources/plugins/smiley/images/kiss.png new file mode 100644 index 00000000..a4f2f363 Binary files /dev/null and b/sources/plugins/smiley/images/kiss.png differ diff --git a/sources/plugins/smiley/images/lightbulb.gif b/sources/plugins/smiley/images/lightbulb.gif new file mode 100644 index 00000000..ceb6e2d9 Binary files /dev/null and b/sources/plugins/smiley/images/lightbulb.gif differ diff --git a/sources/plugins/smiley/images/lightbulb.png b/sources/plugins/smiley/images/lightbulb.png new file mode 100644 index 00000000..0c4a9240 Binary files /dev/null and b/sources/plugins/smiley/images/lightbulb.png differ diff --git a/sources/plugins/smiley/images/omg_smile.gif b/sources/plugins/smiley/images/omg_smile.gif new file mode 100644 index 00000000..3177355f Binary files /dev/null and b/sources/plugins/smiley/images/omg_smile.gif differ diff --git a/sources/plugins/smiley/images/omg_smile.png b/sources/plugins/smiley/images/omg_smile.png new file mode 100644 index 00000000..abc4e2d0 Binary files /dev/null and b/sources/plugins/smiley/images/omg_smile.png differ diff --git a/sources/plugins/smiley/images/regular_smile.gif b/sources/plugins/smiley/images/regular_smile.gif new file mode 100644 index 00000000..fdcf5c33 Binary files /dev/null and b/sources/plugins/smiley/images/regular_smile.gif differ diff --git a/sources/plugins/smiley/images/regular_smile.png b/sources/plugins/smiley/images/regular_smile.png new file mode 100644 index 00000000..0f2649b7 Binary files /dev/null and b/sources/plugins/smiley/images/regular_smile.png differ diff --git a/sources/plugins/smiley/images/sad_smile.gif b/sources/plugins/smiley/images/sad_smile.gif new file mode 100644 index 00000000..cca0729d Binary files /dev/null and b/sources/plugins/smiley/images/sad_smile.gif differ diff --git a/sources/plugins/smiley/images/sad_smile.png b/sources/plugins/smiley/images/sad_smile.png new file mode 100644 index 00000000..f20f3bf3 Binary files /dev/null and b/sources/plugins/smiley/images/sad_smile.png differ diff --git a/sources/plugins/smiley/images/shades_smile.gif b/sources/plugins/smiley/images/shades_smile.gif new file mode 100644 index 00000000..7d93474c Binary files /dev/null and b/sources/plugins/smiley/images/shades_smile.gif differ diff --git a/sources/plugins/smiley/images/shades_smile.png b/sources/plugins/smiley/images/shades_smile.png new file mode 100644 index 00000000..fdaa28b7 Binary files /dev/null and b/sources/plugins/smiley/images/shades_smile.png differ diff --git a/sources/plugins/smiley/images/teeth_smile.gif b/sources/plugins/smiley/images/teeth_smile.gif new file mode 100644 index 00000000..44c37996 Binary files /dev/null and b/sources/plugins/smiley/images/teeth_smile.gif differ diff --git a/sources/plugins/smiley/images/teeth_smile.png b/sources/plugins/smiley/images/teeth_smile.png new file mode 100644 index 00000000..5e63785e Binary files /dev/null and b/sources/plugins/smiley/images/teeth_smile.png differ diff --git a/sources/plugins/smiley/images/thumbs_down.gif b/sources/plugins/smiley/images/thumbs_down.gif new file mode 100644 index 00000000..5c8bee30 Binary files /dev/null and b/sources/plugins/smiley/images/thumbs_down.gif differ diff --git a/sources/plugins/smiley/images/thumbs_down.png b/sources/plugins/smiley/images/thumbs_down.png new file mode 100644 index 00000000..1823481f Binary files /dev/null and b/sources/plugins/smiley/images/thumbs_down.png differ diff --git a/sources/plugins/smiley/images/thumbs_up.gif b/sources/plugins/smiley/images/thumbs_up.gif new file mode 100644 index 00000000..9cc37029 Binary files /dev/null and b/sources/plugins/smiley/images/thumbs_up.gif differ diff --git a/sources/plugins/smiley/images/thumbs_up.png b/sources/plugins/smiley/images/thumbs_up.png new file mode 100644 index 00000000..d4e8b22a Binary files /dev/null and b/sources/plugins/smiley/images/thumbs_up.png differ diff --git a/sources/plugins/smiley/images/tongue_smile.gif b/sources/plugins/smiley/images/tongue_smile.gif new file mode 100644 index 00000000..81e05b0f Binary files /dev/null and b/sources/plugins/smiley/images/tongue_smile.gif differ diff --git a/sources/plugins/smiley/images/tongue_smile.png b/sources/plugins/smiley/images/tongue_smile.png new file mode 100644 index 00000000..56553fbe Binary files /dev/null and b/sources/plugins/smiley/images/tongue_smile.png differ diff --git a/sources/plugins/smiley/images/tounge_smile.gif b/sources/plugins/smiley/images/tounge_smile.gif new file mode 100644 index 00000000..81e05b0f Binary files /dev/null and b/sources/plugins/smiley/images/tounge_smile.gif differ diff --git a/sources/plugins/smiley/images/whatchutalkingabout_smile.gif b/sources/plugins/smiley/images/whatchutalkingabout_smile.gif new file mode 100644 index 00000000..eef4fc00 Binary files /dev/null and b/sources/plugins/smiley/images/whatchutalkingabout_smile.gif differ diff --git a/sources/plugins/smiley/images/whatchutalkingabout_smile.png b/sources/plugins/smiley/images/whatchutalkingabout_smile.png new file mode 100644 index 00000000..f9714d1b Binary files /dev/null and b/sources/plugins/smiley/images/whatchutalkingabout_smile.png differ diff --git a/sources/plugins/smiley/images/wink_smile.gif b/sources/plugins/smiley/images/wink_smile.gif new file mode 100644 index 00000000..6d3d64bd Binary files /dev/null and b/sources/plugins/smiley/images/wink_smile.gif differ diff --git a/sources/plugins/smiley/images/wink_smile.png b/sources/plugins/smiley/images/wink_smile.png new file mode 100644 index 00000000..7c99c3fc Binary files /dev/null and b/sources/plugins/smiley/images/wink_smile.png differ diff --git a/sources/plugins/smiley/lang/af.js b/sources/plugins/smiley/lang/af.js new file mode 100644 index 00000000..65726fc9 --- /dev/null +++ b/sources/plugins/smiley/lang/af.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'af', { + options: 'Lagbekkie opsies', + title: 'Voeg lagbekkie by', + toolbar: 'Lagbekkie' +} ); diff --git a/sources/plugins/smiley/lang/ar.js b/sources/plugins/smiley/lang/ar.js new file mode 100644 index 00000000..9cc79641 --- /dev/null +++ b/sources/plugins/smiley/lang/ar.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'ar', { + options: 'خصائص الإبتسامات', + title: 'إدراج ابتسامات', + toolbar: 'ابتسامات' +} ); diff --git a/sources/plugins/smiley/lang/bg.js b/sources/plugins/smiley/lang/bg.js new file mode 100644 index 00000000..5362eff7 --- /dev/null +++ b/sources/plugins/smiley/lang/bg.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'bg', { + options: 'Опции за усмивката', + title: 'Вмъкване на усмивка', + toolbar: 'Усмивка' +} ); diff --git a/sources/plugins/smiley/lang/bn.js b/sources/plugins/smiley/lang/bn.js new file mode 100644 index 00000000..2ef2c3b8 --- /dev/null +++ b/sources/plugins/smiley/lang/bn.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'bn', { + options: 'Smiley Options', // MISSING + title: 'স্মাইলী যুক্ত কর', + toolbar: 'স্মাইলী' +} ); diff --git a/sources/plugins/smiley/lang/bs.js b/sources/plugins/smiley/lang/bs.js new file mode 100644 index 00000000..3c3d3a56 --- /dev/null +++ b/sources/plugins/smiley/lang/bs.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'bs', { + options: 'Smiley Options', // MISSING + title: 'Ubaci smješka', + toolbar: 'Smješko' +} ); diff --git a/sources/plugins/smiley/lang/ca.js b/sources/plugins/smiley/lang/ca.js new file mode 100644 index 00000000..de8dac03 --- /dev/null +++ b/sources/plugins/smiley/lang/ca.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'ca', { + options: 'Opcions d\'emoticones', + title: 'Insereix una icona', + toolbar: 'Icona' +} ); diff --git a/sources/plugins/smiley/lang/cs.js b/sources/plugins/smiley/lang/cs.js new file mode 100644 index 00000000..535e363c --- /dev/null +++ b/sources/plugins/smiley/lang/cs.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'cs', { + options: 'Nastavení smajlíků', + title: 'Vkládání smajlíků', + toolbar: 'Smajlíci' +} ); diff --git a/sources/plugins/smiley/lang/cy.js b/sources/plugins/smiley/lang/cy.js new file mode 100644 index 00000000..4c93cfa0 --- /dev/null +++ b/sources/plugins/smiley/lang/cy.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'cy', { + options: 'Opsiynau Gwenogluniau', + title: 'Mewnosod Gwenoglun', + toolbar: 'Gwenoglun' +} ); diff --git a/sources/plugins/smiley/lang/da.js b/sources/plugins/smiley/lang/da.js new file mode 100644 index 00000000..c9e6450f --- /dev/null +++ b/sources/plugins/smiley/lang/da.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'da', { + options: 'Smileymuligheder', + title: 'Vælg smiley', + toolbar: 'Smiley' +} ); diff --git a/sources/plugins/smiley/lang/de.js b/sources/plugins/smiley/lang/de.js new file mode 100644 index 00000000..af95a657 --- /dev/null +++ b/sources/plugins/smiley/lang/de.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'de', { + options: 'Smiley-Optionen', + title: 'Smiley auswählen', + toolbar: 'Smiley' +} ); diff --git a/sources/plugins/smiley/lang/el.js b/sources/plugins/smiley/lang/el.js new file mode 100644 index 00000000..0a90ba92 --- /dev/null +++ b/sources/plugins/smiley/lang/el.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'el', { + options: 'Επιλογές Φατσούλων', + title: 'Εισάγετε μια Φατσούλα', + toolbar: 'Φατσούλα' +} ); diff --git a/sources/plugins/smiley/lang/en-au.js b/sources/plugins/smiley/lang/en-au.js new file mode 100644 index 00000000..52ee1971 --- /dev/null +++ b/sources/plugins/smiley/lang/en-au.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'en-au', { + options: 'Smiley Options', // MISSING + title: 'Insert a Smiley', + toolbar: 'Smiley' +} ); diff --git a/sources/plugins/smiley/lang/en-ca.js b/sources/plugins/smiley/lang/en-ca.js new file mode 100644 index 00000000..fd5a73e5 --- /dev/null +++ b/sources/plugins/smiley/lang/en-ca.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'en-ca', { + options: 'Smiley Options', // MISSING + title: 'Insert a Smiley', + toolbar: 'Smiley' +} ); diff --git a/sources/plugins/smiley/lang/en-gb.js b/sources/plugins/smiley/lang/en-gb.js new file mode 100644 index 00000000..3c5c7b17 --- /dev/null +++ b/sources/plugins/smiley/lang/en-gb.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'en-gb', { + options: 'Smiley Options', + title: 'Insert a Smiley', + toolbar: 'Smiley' +} ); diff --git a/sources/plugins/smiley/lang/en.js b/sources/plugins/smiley/lang/en.js new file mode 100644 index 00000000..71f399e4 --- /dev/null +++ b/sources/plugins/smiley/lang/en.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'en', { + options: 'Smiley Options', + title: 'Insert a Smiley', + toolbar: 'Smiley' +} ); diff --git a/sources/plugins/smiley/lang/eo.js b/sources/plugins/smiley/lang/eo.js new file mode 100644 index 00000000..c6552b38 --- /dev/null +++ b/sources/plugins/smiley/lang/eo.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'eo', { + options: 'Opcioj pri mienvinjetoj', + title: 'Enmeti Mienvinjeton', + toolbar: 'Mienvinjeto' +} ); diff --git a/sources/plugins/smiley/lang/es.js b/sources/plugins/smiley/lang/es.js new file mode 100644 index 00000000..23bad5dd --- /dev/null +++ b/sources/plugins/smiley/lang/es.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'es', { + options: 'Opciones de emoticonos', + title: 'Insertar un Emoticon', + toolbar: 'Emoticonos' +} ); diff --git a/sources/plugins/smiley/lang/et.js b/sources/plugins/smiley/lang/et.js new file mode 100644 index 00000000..56701506 --- /dev/null +++ b/sources/plugins/smiley/lang/et.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'et', { + options: 'Emotikonide valikud', + title: 'Sisesta emotikon', + toolbar: 'Emotikon' +} ); diff --git a/sources/plugins/smiley/lang/eu.js b/sources/plugins/smiley/lang/eu.js new file mode 100644 index 00000000..a297f0a2 --- /dev/null +++ b/sources/plugins/smiley/lang/eu.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'eu', { + options: 'Aurpegiera Aukerak', + title: 'Aurpegiera Sartu', + toolbar: 'Aurpegierak' +} ); diff --git a/sources/plugins/smiley/lang/fa.js b/sources/plugins/smiley/lang/fa.js new file mode 100644 index 00000000..14bfa13f --- /dev/null +++ b/sources/plugins/smiley/lang/fa.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'fa', { + options: 'گزینه​های خندانک', + title: 'گنجاندن خندانک', + toolbar: 'خندانک' +} ); diff --git a/sources/plugins/smiley/lang/fi.js b/sources/plugins/smiley/lang/fi.js new file mode 100644 index 00000000..df4b1385 --- /dev/null +++ b/sources/plugins/smiley/lang/fi.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'fi', { + options: 'Hymiön ominaisuudet', + title: 'Lisää hymiö', + toolbar: 'Hymiö' +} ); diff --git a/sources/plugins/smiley/lang/fo.js b/sources/plugins/smiley/lang/fo.js new file mode 100644 index 00000000..5a833126 --- /dev/null +++ b/sources/plugins/smiley/lang/fo.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'fo', { + options: 'Møguleikar fyri Smiley', + title: 'Vel Smiley', + toolbar: 'Smiley' +} ); diff --git a/sources/plugins/smiley/lang/fr-ca.js b/sources/plugins/smiley/lang/fr-ca.js new file mode 100644 index 00000000..5686a1d4 --- /dev/null +++ b/sources/plugins/smiley/lang/fr-ca.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'fr-ca', { + options: 'Options d\'émoticônes', + title: 'Insérer un émoticône', + toolbar: 'Émoticône' +} ); diff --git a/sources/plugins/smiley/lang/fr.js b/sources/plugins/smiley/lang/fr.js new file mode 100644 index 00000000..9ee67ff8 --- /dev/null +++ b/sources/plugins/smiley/lang/fr.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'fr', { + options: 'Options des émoticones', + title: 'Insérer un émoticone', + toolbar: 'Émoticones' +} ); diff --git a/sources/plugins/smiley/lang/gl.js b/sources/plugins/smiley/lang/gl.js new file mode 100644 index 00000000..8f1c67d1 --- /dev/null +++ b/sources/plugins/smiley/lang/gl.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'gl', { + options: 'Opcións de emoticonas', + title: 'Inserir unha emoticona', + toolbar: 'Emoticona' +} ); diff --git a/sources/plugins/smiley/lang/gu.js b/sources/plugins/smiley/lang/gu.js new file mode 100644 index 00000000..255a138f --- /dev/null +++ b/sources/plugins/smiley/lang/gu.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'gu', { + options: 'સમ્ય્લી વિકલ્પો', + title: 'સ્માઇલી પસંદ કરો', + toolbar: 'સ્માઇલી' +} ); diff --git a/sources/plugins/smiley/lang/he.js b/sources/plugins/smiley/lang/he.js new file mode 100644 index 00000000..b69f4aa1 --- /dev/null +++ b/sources/plugins/smiley/lang/he.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'he', { + options: 'אפשרויות סמיילים', + title: 'הוספת סמיילי', + toolbar: 'סמיילי' +} ); diff --git a/sources/plugins/smiley/lang/hi.js b/sources/plugins/smiley/lang/hi.js new file mode 100644 index 00000000..f0168740 --- /dev/null +++ b/sources/plugins/smiley/lang/hi.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'hi', { + options: 'Smiley Options', // MISSING + title: 'स्माइली इन्सर्ट करें', + toolbar: 'स्माइली' +} ); diff --git a/sources/plugins/smiley/lang/hr.js b/sources/plugins/smiley/lang/hr.js new file mode 100644 index 00000000..77763eb5 --- /dev/null +++ b/sources/plugins/smiley/lang/hr.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'hr', { + options: 'Opcije smješka', + title: 'Ubaci smješka', + toolbar: 'Smješko' +} ); diff --git a/sources/plugins/smiley/lang/hu.js b/sources/plugins/smiley/lang/hu.js new file mode 100644 index 00000000..9b8a7513 --- /dev/null +++ b/sources/plugins/smiley/lang/hu.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'hu', { + options: 'Hangulatjel opciók', + title: 'Hangulatjel beszúrása', + toolbar: 'Hangulatjelek' +} ); diff --git a/sources/plugins/smiley/lang/id.js b/sources/plugins/smiley/lang/id.js new file mode 100644 index 00000000..3c805ef5 --- /dev/null +++ b/sources/plugins/smiley/lang/id.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'id', { + options: 'Opsi Smiley', + title: 'Sisip sebuah Smiley', + toolbar: 'Smiley' +} ); diff --git a/sources/plugins/smiley/lang/is.js b/sources/plugins/smiley/lang/is.js new file mode 100644 index 00000000..8bdeb247 --- /dev/null +++ b/sources/plugins/smiley/lang/is.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'is', { + options: 'Smiley Options', // MISSING + title: 'Velja svip', + toolbar: 'Svipur' +} ); diff --git a/sources/plugins/smiley/lang/it.js b/sources/plugins/smiley/lang/it.js new file mode 100644 index 00000000..29bb91f3 --- /dev/null +++ b/sources/plugins/smiley/lang/it.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'it', { + options: 'Opzioni Smiley', + title: 'Inserisci emoticon', + toolbar: 'Emoticon' +} ); diff --git a/sources/plugins/smiley/lang/ja.js b/sources/plugins/smiley/lang/ja.js new file mode 100644 index 00000000..856b49cc --- /dev/null +++ b/sources/plugins/smiley/lang/ja.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'ja', { + options: '絵文字オプション', + title: '顔文字挿入', + toolbar: '絵文字' +} ); diff --git a/sources/plugins/smiley/lang/ka.js b/sources/plugins/smiley/lang/ka.js new file mode 100644 index 00000000..b419f04e --- /dev/null +++ b/sources/plugins/smiley/lang/ka.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'ka', { + options: 'სიცილაკის პარამეტრები', + title: 'სიცილაკის ჩასმა', + toolbar: 'სიცილაკები' +} ); diff --git a/sources/plugins/smiley/lang/km.js b/sources/plugins/smiley/lang/km.js new file mode 100644 index 00000000..777c44c9 --- /dev/null +++ b/sources/plugins/smiley/lang/km.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'km', { + options: 'ជម្រើស​រូប​សញ្ញា​អារម្មណ៍', + title: 'បញ្ចូល​រូប​សញ្ញា​អារម្មណ៍', + toolbar: 'រូប​សញ្ញ​អារម្មណ៍' +} ); diff --git a/sources/plugins/smiley/lang/ko.js b/sources/plugins/smiley/lang/ko.js new file mode 100644 index 00000000..50969a67 --- /dev/null +++ b/sources/plugins/smiley/lang/ko.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'ko', { + options: '이모티콘 옵션', + title: '이모티콘 삽입', + toolbar: '이모티콘' +} ); diff --git a/sources/plugins/smiley/lang/ku.js b/sources/plugins/smiley/lang/ku.js new file mode 100644 index 00000000..95f1133f --- /dev/null +++ b/sources/plugins/smiley/lang/ku.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'ku', { + options: 'هەڵبژاردەی زەردەخەنه', + title: 'دانانی زەردەخەنەیەك', + toolbar: 'زەردەخەنه' +} ); diff --git a/sources/plugins/smiley/lang/lt.js b/sources/plugins/smiley/lang/lt.js new file mode 100644 index 00000000..518a8d36 --- /dev/null +++ b/sources/plugins/smiley/lang/lt.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'lt', { + options: 'Šypsenėlių nustatymai', + title: 'Įterpti veidelį', + toolbar: 'Veideliai' +} ); diff --git a/sources/plugins/smiley/lang/lv.js b/sources/plugins/smiley/lang/lv.js new file mode 100644 index 00000000..e55c3bc6 --- /dev/null +++ b/sources/plugins/smiley/lang/lv.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'lv', { + options: 'Smaidiņu uzstādījumi', + title: 'Ievietot smaidiņu', + toolbar: 'Smaidiņi' +} ); diff --git a/sources/plugins/smiley/lang/mk.js b/sources/plugins/smiley/lang/mk.js new file mode 100644 index 00000000..5e8d7035 --- /dev/null +++ b/sources/plugins/smiley/lang/mk.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'mk', { + options: 'Smiley Options', // MISSING + title: 'Insert a Smiley', // MISSING + toolbar: 'Smiley' // MISSING +} ); diff --git a/sources/plugins/smiley/lang/mn.js b/sources/plugins/smiley/lang/mn.js new file mode 100644 index 00000000..6dc3e1f4 --- /dev/null +++ b/sources/plugins/smiley/lang/mn.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'mn', { + options: 'Smiley Options', // MISSING + title: 'Тодорхойлолт оруулах', + toolbar: 'Тодорхойлолт' +} ); diff --git a/sources/plugins/smiley/lang/ms.js b/sources/plugins/smiley/lang/ms.js new file mode 100644 index 00000000..ae773110 --- /dev/null +++ b/sources/plugins/smiley/lang/ms.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'ms', { + options: 'Smiley Options', // MISSING + title: 'Masukkan Smiley', + toolbar: 'Smiley' +} ); diff --git a/sources/plugins/smiley/lang/nb.js b/sources/plugins/smiley/lang/nb.js new file mode 100644 index 00000000..be0f612c --- /dev/null +++ b/sources/plugins/smiley/lang/nb.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'nb', { + options: 'Alternativer for smil', + title: 'Sett inn smil', + toolbar: 'Smil' +} ); diff --git a/sources/plugins/smiley/lang/nl.js b/sources/plugins/smiley/lang/nl.js new file mode 100644 index 00000000..4db8d51f --- /dev/null +++ b/sources/plugins/smiley/lang/nl.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'nl', { + options: 'Smiley opties', + title: 'Smiley invoegen', + toolbar: 'Smiley' +} ); diff --git a/sources/plugins/smiley/lang/no.js b/sources/plugins/smiley/lang/no.js new file mode 100644 index 00000000..21da21c0 --- /dev/null +++ b/sources/plugins/smiley/lang/no.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'no', { + options: 'Alternativer for smil', + title: 'Sett inn smil', + toolbar: 'Smil' +} ); diff --git a/sources/plugins/smiley/lang/pl.js b/sources/plugins/smiley/lang/pl.js new file mode 100644 index 00000000..62d244c9 --- /dev/null +++ b/sources/plugins/smiley/lang/pl.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'pl', { + options: 'Opcje emotikonów', + title: 'Wstaw emotikona', + toolbar: 'Emotikony' +} ); diff --git a/sources/plugins/smiley/lang/pt-br.js b/sources/plugins/smiley/lang/pt-br.js new file mode 100644 index 00000000..96498a49 --- /dev/null +++ b/sources/plugins/smiley/lang/pt-br.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'pt-br', { + options: 'Opções de Emoticons', + title: 'Inserir Emoticon', + toolbar: 'Emoticon' +} ); diff --git a/sources/plugins/smiley/lang/pt.js b/sources/plugins/smiley/lang/pt.js new file mode 100644 index 00000000..945f171c --- /dev/null +++ b/sources/plugins/smiley/lang/pt.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'pt', { + options: 'Opções de Emoticons', + title: 'Inserir um Emoticon', + toolbar: 'Emoticons' +} ); diff --git a/sources/plugins/smiley/lang/ro.js b/sources/plugins/smiley/lang/ro.js new file mode 100644 index 00000000..9c4bc5e8 --- /dev/null +++ b/sources/plugins/smiley/lang/ro.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'ro', { + options: 'Opțiuni figuri expresive', + title: 'Inserează o figură expresivă (Emoticon)', + toolbar: 'Figură expresivă (Emoticon)' +} ); diff --git a/sources/plugins/smiley/lang/ru.js b/sources/plugins/smiley/lang/ru.js new file mode 100644 index 00000000..37cee41f --- /dev/null +++ b/sources/plugins/smiley/lang/ru.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'ru', { + options: 'Выбор смайла', + title: 'Вставить смайл', + toolbar: 'Смайлы' +} ); diff --git a/sources/plugins/smiley/lang/si.js b/sources/plugins/smiley/lang/si.js new file mode 100644 index 00000000..62e4b931 --- /dev/null +++ b/sources/plugins/smiley/lang/si.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'si', { + options: 'හාස්‍ය විකල්ප', + title: 'හාස්‍යන් ඇතුලත් කිරීම', + toolbar: 'හාස්‍යන්' +} ); diff --git a/sources/plugins/smiley/lang/sk.js b/sources/plugins/smiley/lang/sk.js new file mode 100644 index 00000000..cca096e5 --- /dev/null +++ b/sources/plugins/smiley/lang/sk.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'sk', { + options: 'Možnosti smajlíkov', + title: 'Vložiť smajlíka', + toolbar: 'Smajlíky' +} ); diff --git a/sources/plugins/smiley/lang/sl.js b/sources/plugins/smiley/lang/sl.js new file mode 100644 index 00000000..703c7481 --- /dev/null +++ b/sources/plugins/smiley/lang/sl.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'sl', { + options: 'Možnosti Smeška', + title: 'Vstavi smeška', + toolbar: 'Smeško' +} ); diff --git a/sources/plugins/smiley/lang/sq.js b/sources/plugins/smiley/lang/sq.js new file mode 100644 index 00000000..78dfa437 --- /dev/null +++ b/sources/plugins/smiley/lang/sq.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'sq', { + options: 'Opsionet e Ikonave', + title: 'Vendos Ikonë', + toolbar: 'Ikona' +} ); diff --git a/sources/plugins/smiley/lang/sr-latn.js b/sources/plugins/smiley/lang/sr-latn.js new file mode 100644 index 00000000..2b0b149b --- /dev/null +++ b/sources/plugins/smiley/lang/sr-latn.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'sr-latn', { + options: 'Smiley Options', // MISSING + title: 'Unesi smajlija', + toolbar: 'Smajli' +} ); diff --git a/sources/plugins/smiley/lang/sr.js b/sources/plugins/smiley/lang/sr.js new file mode 100644 index 00000000..d0c38c8b --- /dev/null +++ b/sources/plugins/smiley/lang/sr.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'sr', { + options: 'Smiley Options', // MISSING + title: 'Унеси смајлија', + toolbar: 'Смајли' +} ); diff --git a/sources/plugins/smiley/lang/sv.js b/sources/plugins/smiley/lang/sv.js new file mode 100644 index 00000000..7d54b6d3 --- /dev/null +++ b/sources/plugins/smiley/lang/sv.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'sv', { + options: 'Smileyinställningar', + title: 'Infoga smiley', + toolbar: 'Smiley' +} ); diff --git a/sources/plugins/smiley/lang/th.js b/sources/plugins/smiley/lang/th.js new file mode 100644 index 00000000..27db0098 --- /dev/null +++ b/sources/plugins/smiley/lang/th.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'th', { + options: 'ตัวเลือกไอคอนแสดงอารมณ์', + title: 'แทรกสัญลักษณ์สื่ออารมณ์', + toolbar: 'รูปสื่ออารมณ์' +} ); diff --git a/sources/plugins/smiley/lang/tr.js b/sources/plugins/smiley/lang/tr.js new file mode 100644 index 00000000..e7c46633 --- /dev/null +++ b/sources/plugins/smiley/lang/tr.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'tr', { + options: 'İfade Seçenekleri', + title: 'İfade Ekle', + toolbar: 'İfade' +} ); diff --git a/sources/plugins/smiley/lang/tt.js b/sources/plugins/smiley/lang/tt.js new file mode 100644 index 00000000..8fad9914 --- /dev/null +++ b/sources/plugins/smiley/lang/tt.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'tt', { + options: 'Смайл көйләүләре', + title: 'Смайл өстәү', + toolbar: 'Смайл' +} ); diff --git a/sources/plugins/smiley/lang/ug.js b/sources/plugins/smiley/lang/ug.js new file mode 100644 index 00000000..e3a922ba --- /dev/null +++ b/sources/plugins/smiley/lang/ug.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'ug', { + options: 'چىراي ئىپادە سىنبەلگە تاللانمىسى', + title: 'چىراي ئىپادە سىنبەلگە قىستۇر', + toolbar: 'چىراي ئىپادە' +} ); diff --git a/sources/plugins/smiley/lang/uk.js b/sources/plugins/smiley/lang/uk.js new file mode 100644 index 00000000..677bc913 --- /dev/null +++ b/sources/plugins/smiley/lang/uk.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'uk', { + options: 'Опції смайликів', + title: 'Вставити смайлик', + toolbar: 'Смайлик' +} ); diff --git a/sources/plugins/smiley/lang/vi.js b/sources/plugins/smiley/lang/vi.js new file mode 100644 index 00000000..921175fd --- /dev/null +++ b/sources/plugins/smiley/lang/vi.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'vi', { + options: 'Tùy chọn hình biểu lộ cảm xúc', + title: 'Chèn hình biểu lộ cảm xúc (mặt cười)', + toolbar: 'Hình biểu lộ cảm xúc (mặt cười)' +} ); diff --git a/sources/plugins/smiley/lang/zh-cn.js b/sources/plugins/smiley/lang/zh-cn.js new file mode 100644 index 00000000..98d09389 --- /dev/null +++ b/sources/plugins/smiley/lang/zh-cn.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'zh-cn', { + options: '表情图标选项', + title: '插入表情图标', + toolbar: '表情符' +} ); diff --git a/sources/plugins/smiley/lang/zh.js b/sources/plugins/smiley/lang/zh.js new file mode 100644 index 00000000..477d30e6 --- /dev/null +++ b/sources/plugins/smiley/lang/zh.js @@ -0,0 +1,9 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'smiley', 'zh', { + options: '表情符號選項', + title: '插入表情符號', + toolbar: '表情符號' +} ); diff --git a/sources/plugins/smiley/plugin.js b/sources/plugins/smiley/plugin.js new file mode 100644 index 00000000..be8b20db --- /dev/null +++ b/sources/plugins/smiley/plugin.js @@ -0,0 +1,98 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.add( 'smiley', { + requires: 'dialog', + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'smiley', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + editor.config.smiley_path = editor.config.smiley_path || ( this.path + 'images/' ); + editor.addCommand( 'smiley', new CKEDITOR.dialogCommand( 'smiley', { + allowedContent: 'img[alt,height,!src,title,width]', + requiredContent: 'img' + } ) ); + editor.ui.addButton && editor.ui.addButton( 'Smiley', { + label: editor.lang.smiley.toolbar, + command: 'smiley', + toolbar: 'insert,50' + } ); + CKEDITOR.dialog.add( 'smiley', this.path + 'dialogs/smiley.js' ); + } +} ); + +/** + * The base path used to build the URL for the smiley images. It must end with a slash. + * + * config.smiley_path = 'http://www.example.com/images/smileys/'; + * + * config.smiley_path = '/images/smileys/'; + * + * @cfg {String} [smiley_path=CKEDITOR.basePath + 'plugins/smiley/images/'] + * @member CKEDITOR.config + */ + +/** + * The file names for the smileys to be displayed. These files must be + * contained inside the URL path defined with the {@link #smiley_path} setting. + * + * // This is actually the default value. + * config.smiley_images = [ + * 'regular_smile.png','sad_smile.png','wink_smile.png','teeth_smile.png','confused_smile.png','tongue_smile.png', + * 'embarrassed_smile.png','omg_smile.png','whatchutalkingabout_smile.png','angry_smile.png','angel_smile.png','shades_smile.png', + * 'devil_smile.png','cry_smile.png','lightbulb.png','thumbs_down.png','thumbs_up.png','heart.png', + * 'broken_heart.png','kiss.png','envelope.png' + * ]; + * + * @cfg + * @member CKEDITOR.config + */ +CKEDITOR.config.smiley_images = [ + 'regular_smile.png', 'sad_smile.png', 'wink_smile.png', 'teeth_smile.png', 'confused_smile.png', 'tongue_smile.png', + 'embarrassed_smile.png', 'omg_smile.png', 'whatchutalkingabout_smile.png', 'angry_smile.png', 'angel_smile.png', 'shades_smile.png', + 'devil_smile.png', 'cry_smile.png', 'lightbulb.png', 'thumbs_down.png', 'thumbs_up.png', 'heart.png', + 'broken_heart.png', 'kiss.png', 'envelope.png' +]; + +/** + * The description to be used for each of the smileys defined in the + * {@link CKEDITOR.config#smiley_images} setting. Each entry in this array list + * must match its relative pair in the {@link CKEDITOR.config#smiley_images} + * setting. + * + * // Default settings. + * config.smiley_descriptions = [ + * 'smiley', 'sad', 'wink', 'laugh', 'frown', 'cheeky', 'blush', 'surprise', + * 'indecision', 'angry', 'angel', 'cool', 'devil', 'crying', 'enlightened', 'no', + * 'yes', 'heart', 'broken heart', 'kiss', 'mail' + * ]; + * + * // Use textual emoticons as description. + * config.smiley_descriptions = [ + * ':)', ':(', ';)', ':D', ':/', ':P', ':*)', ':-o', + * ':|', '>:(', 'o:)', '8-)', '>:-)', ';(', '', '', '', + * '', '', ':-*', '' + * ]; + * + * @cfg + * @member CKEDITOR.config + */ +CKEDITOR.config.smiley_descriptions = [ + 'smiley', 'sad', 'wink', 'laugh', 'frown', 'cheeky', 'blush', 'surprise', + 'indecision', 'angry', 'angel', 'cool', 'devil', 'crying', 'enlightened', 'no', + 'yes', 'heart', 'broken heart', 'kiss', 'mail' +]; + +/** + * The number of columns to be generated by the smilies matrix. + * + * config.smiley_columns = 6; + * + * @since 3.3.2 + * @cfg {Number} [smiley_columns=8] + * @member CKEDITOR.config + */ diff --git a/sources/plugins/sourcearea/icons/hidpi/source-rtl.png b/sources/plugins/sourcearea/icons/hidpi/source-rtl.png new file mode 100644 index 00000000..adf4af3c Binary files /dev/null and b/sources/plugins/sourcearea/icons/hidpi/source-rtl.png differ diff --git a/sources/plugins/sourcearea/icons/hidpi/source.png b/sources/plugins/sourcearea/icons/hidpi/source.png new file mode 100644 index 00000000..b4d0a15a Binary files /dev/null and b/sources/plugins/sourcearea/icons/hidpi/source.png differ diff --git a/sources/plugins/sourcearea/icons/source-rtl.png b/sources/plugins/sourcearea/icons/source-rtl.png new file mode 100644 index 00000000..27d1ba88 Binary files /dev/null and b/sources/plugins/sourcearea/icons/source-rtl.png differ diff --git a/sources/plugins/sourcearea/icons/source.png b/sources/plugins/sourcearea/icons/source.png new file mode 100644 index 00000000..e44db379 Binary files /dev/null and b/sources/plugins/sourcearea/icons/source.png differ diff --git a/sources/plugins/sourcearea/lang/af.js b/sources/plugins/sourcearea/lang/af.js new file mode 100644 index 00000000..b21d7e61 --- /dev/null +++ b/sources/plugins/sourcearea/lang/af.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'af', { + toolbar: 'Bron' +} ); diff --git a/sources/plugins/sourcearea/lang/ar.js b/sources/plugins/sourcearea/lang/ar.js new file mode 100644 index 00000000..71a3a6b1 --- /dev/null +++ b/sources/plugins/sourcearea/lang/ar.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'ar', { + toolbar: 'المصدر' +} ); diff --git a/sources/plugins/sourcearea/lang/bg.js b/sources/plugins/sourcearea/lang/bg.js new file mode 100644 index 00000000..0e9ff33d --- /dev/null +++ b/sources/plugins/sourcearea/lang/bg.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'bg', { + toolbar: 'Изходен код' +} ); diff --git a/sources/plugins/sourcearea/lang/bn.js b/sources/plugins/sourcearea/lang/bn.js new file mode 100644 index 00000000..266a5c0a --- /dev/null +++ b/sources/plugins/sourcearea/lang/bn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'bn', { + toolbar: 'সোর্স' +} ); diff --git a/sources/plugins/sourcearea/lang/bs.js b/sources/plugins/sourcearea/lang/bs.js new file mode 100644 index 00000000..2b0fa706 --- /dev/null +++ b/sources/plugins/sourcearea/lang/bs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'bs', { + toolbar: 'HTML kôd' +} ); diff --git a/sources/plugins/sourcearea/lang/ca.js b/sources/plugins/sourcearea/lang/ca.js new file mode 100644 index 00000000..137d2352 --- /dev/null +++ b/sources/plugins/sourcearea/lang/ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'ca', { + toolbar: 'Codi font' +} ); diff --git a/sources/plugins/sourcearea/lang/cs.js b/sources/plugins/sourcearea/lang/cs.js new file mode 100644 index 00000000..0612de26 --- /dev/null +++ b/sources/plugins/sourcearea/lang/cs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'cs', { + toolbar: 'Zdroj' +} ); diff --git a/sources/plugins/sourcearea/lang/cy.js b/sources/plugins/sourcearea/lang/cy.js new file mode 100644 index 00000000..fb59ec60 --- /dev/null +++ b/sources/plugins/sourcearea/lang/cy.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'cy', { + toolbar: 'HTML' +} ); diff --git a/sources/plugins/sourcearea/lang/da.js b/sources/plugins/sourcearea/lang/da.js new file mode 100644 index 00000000..775a23e4 --- /dev/null +++ b/sources/plugins/sourcearea/lang/da.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'da', { + toolbar: 'Kilde' +} ); diff --git a/sources/plugins/sourcearea/lang/de.js b/sources/plugins/sourcearea/lang/de.js new file mode 100644 index 00000000..09c496dd --- /dev/null +++ b/sources/plugins/sourcearea/lang/de.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'de', { + toolbar: 'Quellcode' +} ); diff --git a/sources/plugins/sourcearea/lang/el.js b/sources/plugins/sourcearea/lang/el.js new file mode 100644 index 00000000..b04b2569 --- /dev/null +++ b/sources/plugins/sourcearea/lang/el.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'el', { + toolbar: 'Κώδικας' +} ); diff --git a/sources/plugins/sourcearea/lang/en-au.js b/sources/plugins/sourcearea/lang/en-au.js new file mode 100644 index 00000000..cb327bbc --- /dev/null +++ b/sources/plugins/sourcearea/lang/en-au.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'en-au', { + toolbar: 'Source' +} ); diff --git a/sources/plugins/sourcearea/lang/en-ca.js b/sources/plugins/sourcearea/lang/en-ca.js new file mode 100644 index 00000000..0ded9408 --- /dev/null +++ b/sources/plugins/sourcearea/lang/en-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'en-ca', { + toolbar: 'Source' +} ); diff --git a/sources/plugins/sourcearea/lang/en-gb.js b/sources/plugins/sourcearea/lang/en-gb.js new file mode 100644 index 00000000..4351d839 --- /dev/null +++ b/sources/plugins/sourcearea/lang/en-gb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'en-gb', { + toolbar: 'Source' +} ); diff --git a/sources/plugins/sourcearea/lang/en.js b/sources/plugins/sourcearea/lang/en.js new file mode 100644 index 00000000..686ea0ce --- /dev/null +++ b/sources/plugins/sourcearea/lang/en.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'en', { + toolbar: 'Source' +} ); diff --git a/sources/plugins/sourcearea/lang/eo.js b/sources/plugins/sourcearea/lang/eo.js new file mode 100644 index 00000000..cc7a4a71 --- /dev/null +++ b/sources/plugins/sourcearea/lang/eo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'eo', { + toolbar: 'Fonto' +} ); diff --git a/sources/plugins/sourcearea/lang/es.js b/sources/plugins/sourcearea/lang/es.js new file mode 100644 index 00000000..df7c9940 --- /dev/null +++ b/sources/plugins/sourcearea/lang/es.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'es', { + toolbar: 'Fuente HTML' +} ); diff --git a/sources/plugins/sourcearea/lang/et.js b/sources/plugins/sourcearea/lang/et.js new file mode 100644 index 00000000..90e6400e --- /dev/null +++ b/sources/plugins/sourcearea/lang/et.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'et', { + toolbar: 'Lähtekood' +} ); diff --git a/sources/plugins/sourcearea/lang/eu.js b/sources/plugins/sourcearea/lang/eu.js new file mode 100644 index 00000000..1e375adb --- /dev/null +++ b/sources/plugins/sourcearea/lang/eu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'eu', { + toolbar: 'Iturburua' +} ); diff --git a/sources/plugins/sourcearea/lang/fa.js b/sources/plugins/sourcearea/lang/fa.js new file mode 100644 index 00000000..ed612ca9 --- /dev/null +++ b/sources/plugins/sourcearea/lang/fa.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'fa', { + toolbar: 'منبع' +} ); diff --git a/sources/plugins/sourcearea/lang/fi.js b/sources/plugins/sourcearea/lang/fi.js new file mode 100644 index 00000000..a62ae9a5 --- /dev/null +++ b/sources/plugins/sourcearea/lang/fi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'fi', { + toolbar: 'Koodi' +} ); diff --git a/sources/plugins/sourcearea/lang/fo.js b/sources/plugins/sourcearea/lang/fo.js new file mode 100644 index 00000000..69dbb4cf --- /dev/null +++ b/sources/plugins/sourcearea/lang/fo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'fo', { + toolbar: 'Kelda' +} ); diff --git a/sources/plugins/sourcearea/lang/fr-ca.js b/sources/plugins/sourcearea/lang/fr-ca.js new file mode 100644 index 00000000..7a522328 --- /dev/null +++ b/sources/plugins/sourcearea/lang/fr-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'fr-ca', { + toolbar: 'Source' +} ); diff --git a/sources/plugins/sourcearea/lang/fr.js b/sources/plugins/sourcearea/lang/fr.js new file mode 100644 index 00000000..0b530686 --- /dev/null +++ b/sources/plugins/sourcearea/lang/fr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'fr', { + toolbar: 'Source' +} ); diff --git a/sources/plugins/sourcearea/lang/gl.js b/sources/plugins/sourcearea/lang/gl.js new file mode 100644 index 00000000..ddcfbf9d --- /dev/null +++ b/sources/plugins/sourcearea/lang/gl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'gl', { + toolbar: 'Orixe' +} ); diff --git a/sources/plugins/sourcearea/lang/gu.js b/sources/plugins/sourcearea/lang/gu.js new file mode 100644 index 00000000..cb4f5f3c --- /dev/null +++ b/sources/plugins/sourcearea/lang/gu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'gu', { + toolbar: 'મૂળ કે પ્રાથમિક દસ્તાવેજ' +} ); diff --git a/sources/plugins/sourcearea/lang/he.js b/sources/plugins/sourcearea/lang/he.js new file mode 100644 index 00000000..ddf6d849 --- /dev/null +++ b/sources/plugins/sourcearea/lang/he.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'he', { + toolbar: 'מקור' +} ); diff --git a/sources/plugins/sourcearea/lang/hi.js b/sources/plugins/sourcearea/lang/hi.js new file mode 100644 index 00000000..e5d484c4 --- /dev/null +++ b/sources/plugins/sourcearea/lang/hi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'hi', { + toolbar: 'सोर्स' +} ); diff --git a/sources/plugins/sourcearea/lang/hr.js b/sources/plugins/sourcearea/lang/hr.js new file mode 100644 index 00000000..d20e6385 --- /dev/null +++ b/sources/plugins/sourcearea/lang/hr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'hr', { + toolbar: 'Kôd' +} ); diff --git a/sources/plugins/sourcearea/lang/hu.js b/sources/plugins/sourcearea/lang/hu.js new file mode 100644 index 00000000..bd2eec9e --- /dev/null +++ b/sources/plugins/sourcearea/lang/hu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'hu', { + toolbar: 'Forráskód' +} ); diff --git a/sources/plugins/sourcearea/lang/id.js b/sources/plugins/sourcearea/lang/id.js new file mode 100644 index 00000000..6e8a5ce4 --- /dev/null +++ b/sources/plugins/sourcearea/lang/id.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'id', { + toolbar: 'Sumber' +} ); diff --git a/sources/plugins/sourcearea/lang/is.js b/sources/plugins/sourcearea/lang/is.js new file mode 100644 index 00000000..9551c15c --- /dev/null +++ b/sources/plugins/sourcearea/lang/is.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'is', { + toolbar: 'Kóði' +} ); diff --git a/sources/plugins/sourcearea/lang/it.js b/sources/plugins/sourcearea/lang/it.js new file mode 100644 index 00000000..b4d23dd6 --- /dev/null +++ b/sources/plugins/sourcearea/lang/it.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'it', { + toolbar: 'Sorgente' +} ); diff --git a/sources/plugins/sourcearea/lang/ja.js b/sources/plugins/sourcearea/lang/ja.js new file mode 100644 index 00000000..bd767231 --- /dev/null +++ b/sources/plugins/sourcearea/lang/ja.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'ja', { + toolbar: 'ソース' +} ); diff --git a/sources/plugins/sourcearea/lang/ka.js b/sources/plugins/sourcearea/lang/ka.js new file mode 100644 index 00000000..e2d4834b --- /dev/null +++ b/sources/plugins/sourcearea/lang/ka.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'ka', { + toolbar: 'კოდები' +} ); diff --git a/sources/plugins/sourcearea/lang/km.js b/sources/plugins/sourcearea/lang/km.js new file mode 100644 index 00000000..f7bc88c3 --- /dev/null +++ b/sources/plugins/sourcearea/lang/km.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'km', { + toolbar: 'អក្សរ​កូដ' +} ); diff --git a/sources/plugins/sourcearea/lang/ko.js b/sources/plugins/sourcearea/lang/ko.js new file mode 100644 index 00000000..a3375e7e --- /dev/null +++ b/sources/plugins/sourcearea/lang/ko.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'ko', { + toolbar: '소스' +} ); diff --git a/sources/plugins/sourcearea/lang/ku.js b/sources/plugins/sourcearea/lang/ku.js new file mode 100644 index 00000000..346395df --- /dev/null +++ b/sources/plugins/sourcearea/lang/ku.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'ku', { + toolbar: 'سەرچاوە' +} ); diff --git a/sources/plugins/sourcearea/lang/lt.js b/sources/plugins/sourcearea/lang/lt.js new file mode 100644 index 00000000..13cdcb3a --- /dev/null +++ b/sources/plugins/sourcearea/lang/lt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'lt', { + toolbar: 'Šaltinis' +} ); diff --git a/sources/plugins/sourcearea/lang/lv.js b/sources/plugins/sourcearea/lang/lv.js new file mode 100644 index 00000000..4c5873ce --- /dev/null +++ b/sources/plugins/sourcearea/lang/lv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'lv', { + toolbar: 'HTML kods' +} ); diff --git a/sources/plugins/sourcearea/lang/mk.js b/sources/plugins/sourcearea/lang/mk.js new file mode 100644 index 00000000..5b6fda09 --- /dev/null +++ b/sources/plugins/sourcearea/lang/mk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'mk', { + toolbar: 'Source' // MISSING +} ); diff --git a/sources/plugins/sourcearea/lang/mn.js b/sources/plugins/sourcearea/lang/mn.js new file mode 100644 index 00000000..e6b822fd --- /dev/null +++ b/sources/plugins/sourcearea/lang/mn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'mn', { + toolbar: 'Код' +} ); diff --git a/sources/plugins/sourcearea/lang/ms.js b/sources/plugins/sourcearea/lang/ms.js new file mode 100644 index 00000000..ad5f9026 --- /dev/null +++ b/sources/plugins/sourcearea/lang/ms.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'ms', { + toolbar: 'Sumber' +} ); diff --git a/sources/plugins/sourcearea/lang/nb.js b/sources/plugins/sourcearea/lang/nb.js new file mode 100644 index 00000000..3a9ae66f --- /dev/null +++ b/sources/plugins/sourcearea/lang/nb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'nb', { + toolbar: 'Kilde' +} ); diff --git a/sources/plugins/sourcearea/lang/nl.js b/sources/plugins/sourcearea/lang/nl.js new file mode 100644 index 00000000..bb3628ec --- /dev/null +++ b/sources/plugins/sourcearea/lang/nl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'nl', { + toolbar: 'Broncode' +} ); diff --git a/sources/plugins/sourcearea/lang/no.js b/sources/plugins/sourcearea/lang/no.js new file mode 100644 index 00000000..d42d9c17 --- /dev/null +++ b/sources/plugins/sourcearea/lang/no.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'no', { + toolbar: 'Kilde' +} ); diff --git a/sources/plugins/sourcearea/lang/pl.js b/sources/plugins/sourcearea/lang/pl.js new file mode 100644 index 00000000..44dbb570 --- /dev/null +++ b/sources/plugins/sourcearea/lang/pl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'pl', { + toolbar: 'Źródło dokumentu' +} ); diff --git a/sources/plugins/sourcearea/lang/pt-br.js b/sources/plugins/sourcearea/lang/pt-br.js new file mode 100644 index 00000000..bb239b8c --- /dev/null +++ b/sources/plugins/sourcearea/lang/pt-br.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'pt-br', { + toolbar: 'Código-Fonte' +} ); diff --git a/sources/plugins/sourcearea/lang/pt.js b/sources/plugins/sourcearea/lang/pt.js new file mode 100644 index 00000000..5bd68059 --- /dev/null +++ b/sources/plugins/sourcearea/lang/pt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'pt', { + toolbar: 'Fonte' +} ); diff --git a/sources/plugins/sourcearea/lang/ro.js b/sources/plugins/sourcearea/lang/ro.js new file mode 100644 index 00000000..2b8e59bd --- /dev/null +++ b/sources/plugins/sourcearea/lang/ro.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'ro', { + toolbar: 'Sursa' +} ); diff --git a/sources/plugins/sourcearea/lang/ru.js b/sources/plugins/sourcearea/lang/ru.js new file mode 100644 index 00000000..02007aa4 --- /dev/null +++ b/sources/plugins/sourcearea/lang/ru.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'ru', { + toolbar: 'Источник' +} ); diff --git a/sources/plugins/sourcearea/lang/si.js b/sources/plugins/sourcearea/lang/si.js new file mode 100644 index 00000000..0ee21295 --- /dev/null +++ b/sources/plugins/sourcearea/lang/si.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'si', { + toolbar: 'මුලාශ්‍රය' +} ); diff --git a/sources/plugins/sourcearea/lang/sk.js b/sources/plugins/sourcearea/lang/sk.js new file mode 100644 index 00000000..17c3209e --- /dev/null +++ b/sources/plugins/sourcearea/lang/sk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'sk', { + toolbar: 'Zdroj' +} ); diff --git a/sources/plugins/sourcearea/lang/sl.js b/sources/plugins/sourcearea/lang/sl.js new file mode 100644 index 00000000..8b5c0445 --- /dev/null +++ b/sources/plugins/sourcearea/lang/sl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'sl', { + toolbar: 'Izvorna koda' +} ); diff --git a/sources/plugins/sourcearea/lang/sq.js b/sources/plugins/sourcearea/lang/sq.js new file mode 100644 index 00000000..918873a2 --- /dev/null +++ b/sources/plugins/sourcearea/lang/sq.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'sq', { + toolbar: 'Burimi' +} ); diff --git a/sources/plugins/sourcearea/lang/sr-latn.js b/sources/plugins/sourcearea/lang/sr-latn.js new file mode 100644 index 00000000..b1190c82 --- /dev/null +++ b/sources/plugins/sourcearea/lang/sr-latn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'sr-latn', { + toolbar: 'Kôd' +} ); diff --git a/sources/plugins/sourcearea/lang/sr.js b/sources/plugins/sourcearea/lang/sr.js new file mode 100644 index 00000000..738a8af4 --- /dev/null +++ b/sources/plugins/sourcearea/lang/sr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'sr', { + toolbar: 'Kôд' +} ); diff --git a/sources/plugins/sourcearea/lang/sv.js b/sources/plugins/sourcearea/lang/sv.js new file mode 100644 index 00000000..ea2c2adb --- /dev/null +++ b/sources/plugins/sourcearea/lang/sv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'sv', { + toolbar: 'Källa' +} ); diff --git a/sources/plugins/sourcearea/lang/th.js b/sources/plugins/sourcearea/lang/th.js new file mode 100644 index 00000000..41a2b74b --- /dev/null +++ b/sources/plugins/sourcearea/lang/th.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'th', { + toolbar: 'ดูรหัส HTML' +} ); diff --git a/sources/plugins/sourcearea/lang/tr.js b/sources/plugins/sourcearea/lang/tr.js new file mode 100644 index 00000000..ea86c3dc --- /dev/null +++ b/sources/plugins/sourcearea/lang/tr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'tr', { + toolbar: 'Kaynak' +} ); diff --git a/sources/plugins/sourcearea/lang/tt.js b/sources/plugins/sourcearea/lang/tt.js new file mode 100644 index 00000000..aa4fdfb5 --- /dev/null +++ b/sources/plugins/sourcearea/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'tt', { + toolbar: 'Чыганак' +} ); diff --git a/sources/plugins/sourcearea/lang/ug.js b/sources/plugins/sourcearea/lang/ug.js new file mode 100644 index 00000000..c087cf1f --- /dev/null +++ b/sources/plugins/sourcearea/lang/ug.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'ug', { + toolbar: 'مەنبە' +} ); diff --git a/sources/plugins/sourcearea/lang/uk.js b/sources/plugins/sourcearea/lang/uk.js new file mode 100644 index 00000000..0cc25f82 --- /dev/null +++ b/sources/plugins/sourcearea/lang/uk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'uk', { + toolbar: 'Джерело' +} ); diff --git a/sources/plugins/sourcearea/lang/vi.js b/sources/plugins/sourcearea/lang/vi.js new file mode 100644 index 00000000..70401f82 --- /dev/null +++ b/sources/plugins/sourcearea/lang/vi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'vi', { + toolbar: 'Mã HTML' +} ); diff --git a/sources/plugins/sourcearea/lang/zh-cn.js b/sources/plugins/sourcearea/lang/zh-cn.js new file mode 100644 index 00000000..d831a2ee --- /dev/null +++ b/sources/plugins/sourcearea/lang/zh-cn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'zh-cn', { + toolbar: '源码' +} ); diff --git a/sources/plugins/sourcearea/lang/zh.js b/sources/plugins/sourcearea/lang/zh.js new file mode 100644 index 00000000..1bc7caea --- /dev/null +++ b/sources/plugins/sourcearea/lang/zh.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'zh', { + toolbar: '原始碼' +} ); diff --git a/sources/plugins/sourcearea/plugin.js b/sources/plugins/sourcearea/plugin.js new file mode 100644 index 00000000..d8fb4620 --- /dev/null +++ b/sources/plugins/sourcearea/plugin.js @@ -0,0 +1,168 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview The Source Editing Area plugin. It registers the "source" editing + * mode, which displays raw HTML data being edited in the editor. + */ + +( function() { + CKEDITOR.plugins.add( 'sourcearea', { + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'source,source-rtl', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + // Source mode in inline editors is only available through the "sourcedialog" plugin. + if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ) + return; + + var sourcearea = CKEDITOR.plugins.sourcearea; + + editor.addMode( 'source', function( callback ) { + var contentsSpace = editor.ui.space( 'contents' ), + textarea = contentsSpace.getDocument().createElement( 'textarea' ); + + textarea.setStyles( + CKEDITOR.tools.extend( { + // IE7 has overflow the +
    
    +	
+ +
+

Full toolbar configuration

+

Below you can see editor with full toolbar, generated automatically by the editor.

+

+ Note: To create editor instance with full toolbar you don't have to set anything. + Just leave toolbar and toolbarGroups with the default, null values. +

+ +

+	
+ + + + + + diff --git a/sources/plugins/undo/dev/snapshot.html b/sources/plugins/undo/dev/snapshot.html new file mode 100644 index 00000000..c3a61c67 --- /dev/null +++ b/sources/plugins/undo/dev/snapshot.html @@ -0,0 +1,86 @@ + + + + + + Replace Textarea by Code — CKEditor Sample + + + + +

+ CKEditor Samples » Replace Textarea Elements Using JavaScript Code +

+
+
+

+ This editor is using an <iframe> element-based editing area, provided by the Wysiwygarea plugin. +

+
+CKEDITOR.replace( 'textarea_id' )
+
+
+ +

+ +

+
+ +
+
Snapshots: 0
+
Typing: false
+
+
+ < Undo + Redo > +
+ + + + diff --git a/sources/plugins/undo/icons/hidpi/redo-rtl.png b/sources/plugins/undo/icons/hidpi/redo-rtl.png new file mode 100644 index 00000000..206d38ab Binary files /dev/null and b/sources/plugins/undo/icons/hidpi/redo-rtl.png differ diff --git a/sources/plugins/undo/icons/hidpi/redo.png b/sources/plugins/undo/icons/hidpi/redo.png new file mode 100644 index 00000000..a7883643 Binary files /dev/null and b/sources/plugins/undo/icons/hidpi/redo.png differ diff --git a/sources/plugins/undo/icons/hidpi/undo-rtl.png b/sources/plugins/undo/icons/hidpi/undo-rtl.png new file mode 100644 index 00000000..a7883643 Binary files /dev/null and b/sources/plugins/undo/icons/hidpi/undo-rtl.png differ diff --git a/sources/plugins/undo/icons/hidpi/undo.png b/sources/plugins/undo/icons/hidpi/undo.png new file mode 100644 index 00000000..206d38ab Binary files /dev/null and b/sources/plugins/undo/icons/hidpi/undo.png differ diff --git a/sources/plugins/undo/icons/redo-rtl.png b/sources/plugins/undo/icons/redo-rtl.png new file mode 100644 index 00000000..dd12c682 Binary files /dev/null and b/sources/plugins/undo/icons/redo-rtl.png differ diff --git a/sources/plugins/undo/icons/redo.png b/sources/plugins/undo/icons/redo.png new file mode 100644 index 00000000..75a18720 Binary files /dev/null and b/sources/plugins/undo/icons/redo.png differ diff --git a/sources/plugins/undo/icons/undo-rtl.png b/sources/plugins/undo/icons/undo-rtl.png new file mode 100644 index 00000000..75a18720 Binary files /dev/null and b/sources/plugins/undo/icons/undo-rtl.png differ diff --git a/sources/plugins/undo/icons/undo.png b/sources/plugins/undo/icons/undo.png new file mode 100644 index 00000000..f81b3b39 Binary files /dev/null and b/sources/plugins/undo/icons/undo.png differ diff --git a/sources/plugins/undo/lang/af.js b/sources/plugins/undo/lang/af.js new file mode 100644 index 00000000..186256bc --- /dev/null +++ b/sources/plugins/undo/lang/af.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'af', { + redo: 'Oordoen', + undo: 'Ontdoen' +} ); diff --git a/sources/plugins/undo/lang/ar.js b/sources/plugins/undo/lang/ar.js new file mode 100644 index 00000000..c5ead34c --- /dev/null +++ b/sources/plugins/undo/lang/ar.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'ar', { + redo: 'إعادة', + undo: 'تراجع' +} ); diff --git a/sources/plugins/undo/lang/bg.js b/sources/plugins/undo/lang/bg.js new file mode 100644 index 00000000..61e1d2ae --- /dev/null +++ b/sources/plugins/undo/lang/bg.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'bg', { + redo: 'Връщане на предишен статус', + undo: 'Възтанови' +} ); diff --git a/sources/plugins/undo/lang/bn.js b/sources/plugins/undo/lang/bn.js new file mode 100644 index 00000000..edf4d93e --- /dev/null +++ b/sources/plugins/undo/lang/bn.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'bn', { + redo: 'রি-ডু', + undo: 'আনডু' +} ); diff --git a/sources/plugins/undo/lang/bs.js b/sources/plugins/undo/lang/bs.js new file mode 100644 index 00000000..88cd77db --- /dev/null +++ b/sources/plugins/undo/lang/bs.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'bs', { + redo: 'Ponovi', + undo: 'Vrati' +} ); diff --git a/sources/plugins/undo/lang/ca.js b/sources/plugins/undo/lang/ca.js new file mode 100644 index 00000000..0a44406a --- /dev/null +++ b/sources/plugins/undo/lang/ca.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'ca', { + redo: 'Refés', + undo: 'Desfés' +} ); diff --git a/sources/plugins/undo/lang/cs.js b/sources/plugins/undo/lang/cs.js new file mode 100644 index 00000000..51f8979a --- /dev/null +++ b/sources/plugins/undo/lang/cs.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'cs', { + redo: 'Znovu', + undo: 'Zpět' +} ); diff --git a/sources/plugins/undo/lang/cy.js b/sources/plugins/undo/lang/cy.js new file mode 100644 index 00000000..1e5a30d3 --- /dev/null +++ b/sources/plugins/undo/lang/cy.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'cy', { + redo: 'Ailwneud', + undo: 'Dadwneud' +} ); diff --git a/sources/plugins/undo/lang/da.js b/sources/plugins/undo/lang/da.js new file mode 100644 index 00000000..8c1563ed --- /dev/null +++ b/sources/plugins/undo/lang/da.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'da', { + redo: 'Annullér fortryd', + undo: 'Fortryd' +} ); diff --git a/sources/plugins/undo/lang/de.js b/sources/plugins/undo/lang/de.js new file mode 100644 index 00000000..93d55862 --- /dev/null +++ b/sources/plugins/undo/lang/de.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'de', { + redo: 'Wiederherstellen', + undo: 'Rückgängig' +} ); diff --git a/sources/plugins/undo/lang/el.js b/sources/plugins/undo/lang/el.js new file mode 100644 index 00000000..4961355f --- /dev/null +++ b/sources/plugins/undo/lang/el.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'el', { + redo: 'Επανάληψη', + undo: 'Αναίρεση' +} ); diff --git a/sources/plugins/undo/lang/en-au.js b/sources/plugins/undo/lang/en-au.js new file mode 100644 index 00000000..9d748e05 --- /dev/null +++ b/sources/plugins/undo/lang/en-au.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'en-au', { + redo: 'Redo', + undo: 'Undo' +} ); diff --git a/sources/plugins/undo/lang/en-ca.js b/sources/plugins/undo/lang/en-ca.js new file mode 100644 index 00000000..facd173e --- /dev/null +++ b/sources/plugins/undo/lang/en-ca.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'en-ca', { + redo: 'Redo', + undo: 'Undo' +} ); diff --git a/sources/plugins/undo/lang/en-gb.js b/sources/plugins/undo/lang/en-gb.js new file mode 100644 index 00000000..5b52e0d4 --- /dev/null +++ b/sources/plugins/undo/lang/en-gb.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'en-gb', { + redo: 'Redo', + undo: 'Undo' +} ); diff --git a/sources/plugins/undo/lang/en.js b/sources/plugins/undo/lang/en.js new file mode 100644 index 00000000..875bfe87 --- /dev/null +++ b/sources/plugins/undo/lang/en.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'en', { + redo: 'Redo', + undo: 'Undo' +} ); diff --git a/sources/plugins/undo/lang/eo.js b/sources/plugins/undo/lang/eo.js new file mode 100644 index 00000000..9298e2b3 --- /dev/null +++ b/sources/plugins/undo/lang/eo.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'eo', { + redo: 'Refari', + undo: 'Malfari' +} ); diff --git a/sources/plugins/undo/lang/es.js b/sources/plugins/undo/lang/es.js new file mode 100644 index 00000000..e518bce2 --- /dev/null +++ b/sources/plugins/undo/lang/es.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'es', { + redo: 'Rehacer', + undo: 'Deshacer' +} ); diff --git a/sources/plugins/undo/lang/et.js b/sources/plugins/undo/lang/et.js new file mode 100644 index 00000000..3ad8f16d --- /dev/null +++ b/sources/plugins/undo/lang/et.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'et', { + redo: 'Toimingu kordamine', + undo: 'Tagasivõtmine' +} ); diff --git a/sources/plugins/undo/lang/eu.js b/sources/plugins/undo/lang/eu.js new file mode 100644 index 00000000..a9d000ce --- /dev/null +++ b/sources/plugins/undo/lang/eu.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'eu', { + redo: 'Berregin', + undo: 'Desegin' +} ); diff --git a/sources/plugins/undo/lang/fa.js b/sources/plugins/undo/lang/fa.js new file mode 100644 index 00000000..a6fa2206 --- /dev/null +++ b/sources/plugins/undo/lang/fa.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'fa', { + redo: 'بازچیدن', + undo: 'واچیدن' +} ); diff --git a/sources/plugins/undo/lang/fi.js b/sources/plugins/undo/lang/fi.js new file mode 100644 index 00000000..2df2f2e1 --- /dev/null +++ b/sources/plugins/undo/lang/fi.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'fi', { + redo: 'Toista', + undo: 'Kumoa' +} ); diff --git a/sources/plugins/undo/lang/fo.js b/sources/plugins/undo/lang/fo.js new file mode 100644 index 00000000..bd64e096 --- /dev/null +++ b/sources/plugins/undo/lang/fo.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'fo', { + redo: 'Vend aftur', + undo: 'Angra' +} ); diff --git a/sources/plugins/undo/lang/fr-ca.js b/sources/plugins/undo/lang/fr-ca.js new file mode 100644 index 00000000..57c8e1f3 --- /dev/null +++ b/sources/plugins/undo/lang/fr-ca.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'fr-ca', { + redo: 'Refaire', + undo: 'Annuler' +} ); diff --git a/sources/plugins/undo/lang/fr.js b/sources/plugins/undo/lang/fr.js new file mode 100644 index 00000000..6e799791 --- /dev/null +++ b/sources/plugins/undo/lang/fr.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'fr', { + redo: 'Rétablir', + undo: 'Annuler' +} ); diff --git a/sources/plugins/undo/lang/gl.js b/sources/plugins/undo/lang/gl.js new file mode 100644 index 00000000..2569d825 --- /dev/null +++ b/sources/plugins/undo/lang/gl.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'gl', { + redo: 'Refacer', + undo: 'Desfacer' +} ); diff --git a/sources/plugins/undo/lang/gu.js b/sources/plugins/undo/lang/gu.js new file mode 100644 index 00000000..5fd239ba --- /dev/null +++ b/sources/plugins/undo/lang/gu.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'gu', { + redo: 'રિડૂ; પછી હતી એવી સ્થિતિ પાછી લાવવી', + undo: 'રદ કરવું; પહેલાં હતી એવી સ્થિતિ પાછી લાવવી' +} ); diff --git a/sources/plugins/undo/lang/he.js b/sources/plugins/undo/lang/he.js new file mode 100644 index 00000000..e03d5206 --- /dev/null +++ b/sources/plugins/undo/lang/he.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'he', { + redo: 'חזרה על צעד אחרון', + undo: 'ביטול צעד אחרון' +} ); diff --git a/sources/plugins/undo/lang/hi.js b/sources/plugins/undo/lang/hi.js new file mode 100644 index 00000000..6306757a --- /dev/null +++ b/sources/plugins/undo/lang/hi.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'hi', { + redo: 'रीडू', + undo: 'अन्डू' +} ); diff --git a/sources/plugins/undo/lang/hr.js b/sources/plugins/undo/lang/hr.js new file mode 100644 index 00000000..5fbf931f --- /dev/null +++ b/sources/plugins/undo/lang/hr.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'hr', { + redo: 'Ponovi', + undo: 'Poništi' +} ); diff --git a/sources/plugins/undo/lang/hu.js b/sources/plugins/undo/lang/hu.js new file mode 100644 index 00000000..fc1e4a7a --- /dev/null +++ b/sources/plugins/undo/lang/hu.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'hu', { + redo: 'Ismétlés', + undo: 'Visszavonás' +} ); diff --git a/sources/plugins/undo/lang/id.js b/sources/plugins/undo/lang/id.js new file mode 100644 index 00000000..828ad66d --- /dev/null +++ b/sources/plugins/undo/lang/id.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'id', { + redo: 'Kembali lakukan', + undo: 'Batalkan perlakuan' +} ); diff --git a/sources/plugins/undo/lang/is.js b/sources/plugins/undo/lang/is.js new file mode 100644 index 00000000..850178bc --- /dev/null +++ b/sources/plugins/undo/lang/is.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'is', { + redo: 'Hætta við afturköllun', + undo: 'Afturkalla' +} ); diff --git a/sources/plugins/undo/lang/it.js b/sources/plugins/undo/lang/it.js new file mode 100644 index 00000000..0dd1a1d9 --- /dev/null +++ b/sources/plugins/undo/lang/it.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'it', { + redo: 'Ripristina', + undo: 'Annulla' +} ); diff --git a/sources/plugins/undo/lang/ja.js b/sources/plugins/undo/lang/ja.js new file mode 100644 index 00000000..c2136f5c --- /dev/null +++ b/sources/plugins/undo/lang/ja.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'ja', { + redo: 'やり直す', + undo: '元に戻す' +} ); diff --git a/sources/plugins/undo/lang/ka.js b/sources/plugins/undo/lang/ka.js new file mode 100644 index 00000000..6a618af1 --- /dev/null +++ b/sources/plugins/undo/lang/ka.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'ka', { + redo: 'გამეორება', + undo: 'გაუქმება' +} ); diff --git a/sources/plugins/undo/lang/km.js b/sources/plugins/undo/lang/km.js new file mode 100644 index 00000000..51e443c8 --- /dev/null +++ b/sources/plugins/undo/lang/km.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'km', { + redo: 'ធ្វើ​ឡើង​វិញ', + undo: 'មិន​ធ្វើ​វិញ' +} ); diff --git a/sources/plugins/undo/lang/ko.js b/sources/plugins/undo/lang/ko.js new file mode 100644 index 00000000..a1c54b2a --- /dev/null +++ b/sources/plugins/undo/lang/ko.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'ko', { + redo: '다시 실행', + undo: '실행 취소' +} ); diff --git a/sources/plugins/undo/lang/ku.js b/sources/plugins/undo/lang/ku.js new file mode 100644 index 00000000..38ae12b1 --- /dev/null +++ b/sources/plugins/undo/lang/ku.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'ku', { + redo: 'هەڵگەڕاندنەوە', + undo: 'پووچکردنەوە' +} ); diff --git a/sources/plugins/undo/lang/lt.js b/sources/plugins/undo/lang/lt.js new file mode 100644 index 00000000..4712429a --- /dev/null +++ b/sources/plugins/undo/lang/lt.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'lt', { + redo: 'Atstatyti', + undo: 'Atšaukti' +} ); diff --git a/sources/plugins/undo/lang/lv.js b/sources/plugins/undo/lang/lv.js new file mode 100644 index 00000000..134f19c7 --- /dev/null +++ b/sources/plugins/undo/lang/lv.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'lv', { + redo: 'Atkārtot', + undo: 'Atcelt' +} ); diff --git a/sources/plugins/undo/lang/mk.js b/sources/plugins/undo/lang/mk.js new file mode 100644 index 00000000..56b5a85f --- /dev/null +++ b/sources/plugins/undo/lang/mk.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'mk', { + redo: 'Redo', // MISSING + undo: 'Undo' +} ); diff --git a/sources/plugins/undo/lang/mn.js b/sources/plugins/undo/lang/mn.js new file mode 100644 index 00000000..d1a919dd --- /dev/null +++ b/sources/plugins/undo/lang/mn.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'mn', { + redo: 'Өмнөх үйлдлээ сэргээх', + undo: 'Хүчингүй болгох' +} ); diff --git a/sources/plugins/undo/lang/ms.js b/sources/plugins/undo/lang/ms.js new file mode 100644 index 00000000..e9fc94d3 --- /dev/null +++ b/sources/plugins/undo/lang/ms.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'ms', { + redo: 'Ulangkan', + undo: 'Batalkan' +} ); diff --git a/sources/plugins/undo/lang/nb.js b/sources/plugins/undo/lang/nb.js new file mode 100644 index 00000000..ca295927 --- /dev/null +++ b/sources/plugins/undo/lang/nb.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'nb', { + redo: 'Gjør om', + undo: 'Angre' +} ); diff --git a/sources/plugins/undo/lang/nl.js b/sources/plugins/undo/lang/nl.js new file mode 100644 index 00000000..c5b48096 --- /dev/null +++ b/sources/plugins/undo/lang/nl.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'nl', { + redo: 'Opnieuw uitvoeren', + undo: 'Ongedaan maken' +} ); diff --git a/sources/plugins/undo/lang/no.js b/sources/plugins/undo/lang/no.js new file mode 100644 index 00000000..e56f3271 --- /dev/null +++ b/sources/plugins/undo/lang/no.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'no', { + redo: 'Gjør om', + undo: 'Angre' +} ); diff --git a/sources/plugins/undo/lang/pl.js b/sources/plugins/undo/lang/pl.js new file mode 100644 index 00000000..76ccd5f7 --- /dev/null +++ b/sources/plugins/undo/lang/pl.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'pl', { + redo: 'Ponów', + undo: 'Cofnij' +} ); diff --git a/sources/plugins/undo/lang/pt-br.js b/sources/plugins/undo/lang/pt-br.js new file mode 100644 index 00000000..72a5df9a --- /dev/null +++ b/sources/plugins/undo/lang/pt-br.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'pt-br', { + redo: 'Refazer', + undo: 'Desfazer' +} ); diff --git a/sources/plugins/undo/lang/pt.js b/sources/plugins/undo/lang/pt.js new file mode 100644 index 00000000..29ee5267 --- /dev/null +++ b/sources/plugins/undo/lang/pt.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'pt', { + redo: 'Refazer', + undo: 'Anular' +} ); diff --git a/sources/plugins/undo/lang/ro.js b/sources/plugins/undo/lang/ro.js new file mode 100644 index 00000000..bfc197c3 --- /dev/null +++ b/sources/plugins/undo/lang/ro.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'ro', { + redo: 'Starea ulterioară (redo)', + undo: 'Starea anterioară (undo)' +} ); diff --git a/sources/plugins/undo/lang/ru.js b/sources/plugins/undo/lang/ru.js new file mode 100644 index 00000000..acf8ce4d --- /dev/null +++ b/sources/plugins/undo/lang/ru.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'ru', { + redo: 'Повторить', + undo: 'Отменить' +} ); diff --git a/sources/plugins/undo/lang/si.js b/sources/plugins/undo/lang/si.js new file mode 100644 index 00000000..96c9bc90 --- /dev/null +++ b/sources/plugins/undo/lang/si.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'si', { + redo: 'නැවත කිරීම', + undo: 'වෙනස් කිරීම' +} ); diff --git a/sources/plugins/undo/lang/sk.js b/sources/plugins/undo/lang/sk.js new file mode 100644 index 00000000..28cf9375 --- /dev/null +++ b/sources/plugins/undo/lang/sk.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'sk', { + redo: 'Znovu', + undo: 'Späť' +} ); diff --git a/sources/plugins/undo/lang/sl.js b/sources/plugins/undo/lang/sl.js new file mode 100644 index 00000000..f649d441 --- /dev/null +++ b/sources/plugins/undo/lang/sl.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'sl', { + redo: 'Ponovi', + undo: 'Razveljavi' +} ); diff --git a/sources/plugins/undo/lang/sq.js b/sources/plugins/undo/lang/sq.js new file mode 100644 index 00000000..37e17f95 --- /dev/null +++ b/sources/plugins/undo/lang/sq.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'sq', { + redo: 'Ribëje', + undo: 'Rizhbëje' +} ); diff --git a/sources/plugins/undo/lang/sr-latn.js b/sources/plugins/undo/lang/sr-latn.js new file mode 100644 index 00000000..b2527a7f --- /dev/null +++ b/sources/plugins/undo/lang/sr-latn.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'sr-latn', { + redo: 'Ponovi akciju', + undo: 'Poni�ti akciju' +} ); diff --git a/sources/plugins/undo/lang/sr.js b/sources/plugins/undo/lang/sr.js new file mode 100644 index 00000000..0b7f9f23 --- /dev/null +++ b/sources/plugins/undo/lang/sr.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'sr', { + redo: 'Понови акцију', + undo: 'Поништи акцију' +} ); diff --git a/sources/plugins/undo/lang/sv.js b/sources/plugins/undo/lang/sv.js new file mode 100644 index 00000000..5537b5ad --- /dev/null +++ b/sources/plugins/undo/lang/sv.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'sv', { + redo: 'Gör om', + undo: 'Ångra' +} ); diff --git a/sources/plugins/undo/lang/th.js b/sources/plugins/undo/lang/th.js new file mode 100644 index 00000000..29671829 --- /dev/null +++ b/sources/plugins/undo/lang/th.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'th', { + redo: 'ทำซ้ำคำสั่ง', + undo: 'ยกเลิกคำสั่ง' +} ); diff --git a/sources/plugins/undo/lang/tr.js b/sources/plugins/undo/lang/tr.js new file mode 100644 index 00000000..3c757f77 --- /dev/null +++ b/sources/plugins/undo/lang/tr.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'tr', { + redo: 'Tekrarla', + undo: 'Geri Al' +} ); diff --git a/sources/plugins/undo/lang/tt.js b/sources/plugins/undo/lang/tt.js new file mode 100644 index 00000000..d4335572 --- /dev/null +++ b/sources/plugins/undo/lang/tt.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'tt', { + redo: 'Кабатлау', + undo: 'Кайтару' +} ); diff --git a/sources/plugins/undo/lang/ug.js b/sources/plugins/undo/lang/ug.js new file mode 100644 index 00000000..73348fc3 --- /dev/null +++ b/sources/plugins/undo/lang/ug.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'ug', { + redo: 'قايتىلا ', + undo: 'يېنىۋال' +} ); diff --git a/sources/plugins/undo/lang/uk.js b/sources/plugins/undo/lang/uk.js new file mode 100644 index 00000000..23e308a2 --- /dev/null +++ b/sources/plugins/undo/lang/uk.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'uk', { + redo: 'Повторити', + undo: 'Повернути' +} ); diff --git a/sources/plugins/undo/lang/vi.js b/sources/plugins/undo/lang/vi.js new file mode 100644 index 00000000..8b11bfd2 --- /dev/null +++ b/sources/plugins/undo/lang/vi.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'vi', { + redo: 'Làm lại thao tác', + undo: 'Khôi phục thao tác' +} ); diff --git a/sources/plugins/undo/lang/zh-cn.js b/sources/plugins/undo/lang/zh-cn.js new file mode 100644 index 00000000..48116a7e --- /dev/null +++ b/sources/plugins/undo/lang/zh-cn.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'zh-cn', { + redo: '重做', + undo: '撤消' +} ); diff --git a/sources/plugins/undo/lang/zh.js b/sources/plugins/undo/lang/zh.js new file mode 100644 index 00000000..b6a1c4dc --- /dev/null +++ b/sources/plugins/undo/lang/zh.js @@ -0,0 +1,8 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'undo', 'zh', { + redo: '取消復原', + undo: '復原' +} ); diff --git a/sources/plugins/undo/plugin.js b/sources/plugins/undo/plugin.js new file mode 100644 index 00000000..d5479936 --- /dev/null +++ b/sources/plugins/undo/plugin.js @@ -0,0 +1,1328 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview Undo/Redo system for saving a shapshot for document modification + * and other recordable changes. + */ + +'use strict'; + +( function() { + var keystrokes = [ + CKEDITOR.CTRL + 90 /*Z*/, + CKEDITOR.CTRL + 89 /*Y*/, + CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 /*Z*/ + ], + backspaceOrDelete = { 8: 1, 46: 1 }; + + CKEDITOR.plugins.add( 'undo', { + // jscs:disable maximumLineLength + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,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% + // jscs:enable maximumLineLength + icons: 'redo,redo-rtl,undo,undo-rtl', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + init: function( editor ) { + var undoManager = editor.undoManager = new UndoManager( editor ), + editingHandler = undoManager.editingHandler = new NativeEditingHandler( undoManager ); + + var undoCommand = editor.addCommand( 'undo', { + exec: function() { + if ( undoManager.undo() ) { + editor.selectionChange(); + this.fire( 'afterUndo' ); + } + }, + startDisabled: true, + canUndo: false + } ); + + var redoCommand = editor.addCommand( 'redo', { + exec: function() { + if ( undoManager.redo() ) { + editor.selectionChange(); + this.fire( 'afterRedo' ); + } + }, + startDisabled: true, + canUndo: false + } ); + + editor.setKeystroke( [ + [ keystrokes[ 0 ], 'undo' ], + [ keystrokes[ 1 ], 'redo' ], + [ keystrokes[ 2 ], 'redo' ] + ] ); + + undoManager.onChange = function() { + undoCommand.setState( undoManager.undoable() ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); + redoCommand.setState( undoManager.redoable() ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); + }; + + function recordCommand( event ) { + // If the command hasn't been marked to not support undo. + if ( undoManager.enabled && event.data.command.canUndo !== false ) + undoManager.save(); + } + + // We'll save snapshots before and after executing a command. + editor.on( 'beforeCommandExec', recordCommand ); + editor.on( 'afterCommandExec', recordCommand ); + + // Save snapshots before doing custom changes. + editor.on( 'saveSnapshot', function( evt ) { + undoManager.save( evt.data && evt.data.contentOnly ); + } ); + + // Event manager listeners should be attached on contentDom. + editor.on( 'contentDom', editingHandler.attachListeners, editingHandler ); + + editor.on( 'instanceReady', function() { + // Saves initial snapshot. + editor.fire( 'saveSnapshot' ); + } ); + + // Always save an undo snapshot - the previous mode might have + // changed editor contents. + editor.on( 'beforeModeUnload', function() { + editor.mode == 'wysiwyg' && undoManager.save( true ); + } ); + + function toggleUndoManager() { + undoManager.enabled = editor.readOnly ? false : editor.mode == 'wysiwyg'; + undoManager.onChange(); + } + + // Make the undo manager available only in wysiwyg mode. + editor.on( 'mode', toggleUndoManager ); + + // Disable undo manager when in read-only mode. + editor.on( 'readOnly', toggleUndoManager ); + + if ( editor.ui.addButton ) { + editor.ui.addButton( 'Undo', { + label: editor.lang.undo.undo, + command: 'undo', + toolbar: 'undo,10' + } ); + + editor.ui.addButton( 'Redo', { + label: editor.lang.undo.redo, + command: 'redo', + toolbar: 'undo,20' + } ); + } + + /** + * Resets the undo stack. + * + * @member CKEDITOR.editor + */ + editor.resetUndo = function() { + // Reset the undo stack. + undoManager.reset(); + + // Create the first image. + editor.fire( 'saveSnapshot' ); + }; + + /** + * Amends the top of the undo stack (last undo image) with the current DOM changes. + * + * function() { + * editor.fire( 'saveSnapshot' ); + * editor.document.body.append(...); + * // Makes new changes following the last undo snapshot a part of it. + * editor.fire( 'updateSnapshot' ); + * .. + * } + * + * @event updateSnapshot + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + */ + editor.on( 'updateSnapshot', function() { + if ( undoManager.currentImage ) + undoManager.update(); + } ); + + /** + * Locks the undo manager to prevent any save/update operations. + * + * It is convenient to lock the undo manager before performing DOM operations + * that should not be recored (e.g. auto paragraphing). + * + * See {@link CKEDITOR.plugins.undo.UndoManager#lock} for more details. + * + * **Note:** In order to unlock the undo manager, {@link #unlockSnapshot} has to be fired + * the same number of times that `lockSnapshot` has been fired. + * + * @since 4.0 + * @event lockSnapshot + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param data + * @param {Boolean} [data.dontUpdate] When set to `true`, the last snapshot will not be updated + * with the current content and selection. Read more in the {@link CKEDITOR.plugins.undo.UndoManager#lock} method. + * @param {Boolean} [data.forceUpdate] When set to `true`, the last snapshot will always be updated + * with the current content and selection. Read more in the {@link CKEDITOR.plugins.undo.UndoManager#lock} method. + */ + editor.on( 'lockSnapshot', function( evt ) { + var data = evt.data; + undoManager.lock( data && data.dontUpdate, data && data.forceUpdate ); + } ); + + /** + * Unlocks the undo manager and updates the latest snapshot. + * + * @since 4.0 + * @event unlockSnapshot + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + */ + editor.on( 'unlockSnapshot', undoManager.unlock, undoManager ); + } + } ); + + CKEDITOR.plugins.undo = {}; + + /** + * Main logic for the Redo/Undo feature. + * + * @private + * @class CKEDITOR.plugins.undo.UndoManager + * @constructor Creates an UndoManager class instance. + * @param {CKEDITOR.editor} editor + */ + var UndoManager = CKEDITOR.plugins.undo.UndoManager = function( editor ) { + /** + * An array storing the number of key presses, count in a row. Use {@link #keyGroups} members as index. + * + * **Note:** The keystroke count will be reset after reaching the limit of characters per snapshot. + * + * @since 4.4.4 + */ + this.strokesRecorded = [ 0, 0 ]; + + /** + * When the `locked` property is not `null`, the undo manager is locked, so + * operations like `save` or `update` are forbidden. + * + * The manager can be locked and unlocked by the {@link #lock} and {@link #unlock} + * methods, respectively. + * + * @readonly + * @property {Object} [locked=null] + */ + this.locked = null; + + /** + * Contains the previously processed key group, based on {@link #keyGroups}. + * `-1` means an unknown group. + * + * @since 4.4.4 + * @readonly + * @property {Number} [previousKeyGroup=-1] + */ + this.previousKeyGroup = -1; + + /** + * The maximum number of snapshots in the stack. Configurable via {@link CKEDITOR.config#undoStackSize}. + * + * @readonly + * @property {Number} [limit] + */ + this.limit = editor.config.undoStackSize || 20; + + /** + * The maximum number of characters typed/deleted in one undo step. + * + * @since 4.4.5 + * @readonly + */ + this.strokesLimit = 25; + + this.editor = editor; + + // Reset the undo stack. + this.reset(); + }; + + UndoManager.prototype = { + /** + * Handles keystroke support for the undo manager. It is called on `keyup` event for + * keystrokes that can change the editor content. + * + * @param {Number} keyCode The key code. + * @param {Boolean} [strokesPerSnapshotExceeded] When set to `true`, the method will + * behave as if the strokes limit was exceeded regardless of the {@link #strokesRecorded} value. + */ + type: function( keyCode, strokesPerSnapshotExceeded ) { + var keyGroup = UndoManager.getKeyGroup( keyCode ), + // Count of keystrokes in current a row. + // Note if strokesPerSnapshotExceeded will be exceeded, it'll be restarted. + strokesRecorded = this.strokesRecorded[ keyGroup ] + 1; + + strokesPerSnapshotExceeded = + ( strokesPerSnapshotExceeded || strokesRecorded >= this.strokesLimit ); + + if ( !this.typing ) + onTypingStart( this ); + + if ( strokesPerSnapshotExceeded ) { + // Reset the count of strokes, so it'll be later assigned to this.strokesRecorded. + strokesRecorded = 0; + + this.editor.fire( 'saveSnapshot' ); + } else { + // Fire change event. + this.editor.fire( 'change' ); + } + + // Store recorded strokes count. + this.strokesRecorded[ keyGroup ] = strokesRecorded; + // This prop will tell in next itaration what kind of group was processed previously. + this.previousKeyGroup = keyGroup; + }, + + /** + * Whether the new `keyCode` belongs to a different group than the previous one ({@link #previousKeyGroup}). + * + * @since 4.4.5 + * @param {Number} keyCode + * @returns {Boolean} + */ + keyGroupChanged: function( keyCode ) { + return UndoManager.getKeyGroup( keyCode ) != this.previousKeyGroup; + }, + + /** + * Resets the undo stack. + */ + reset: function() { + // Stack for all the undo and redo snapshots, they're always created/removed + // in consistency. + this.snapshots = []; + + // Current snapshot history index. + this.index = -1; + + this.currentImage = null; + + this.hasUndo = false; + this.hasRedo = false; + this.locked = null; + + this.resetType(); + }, + + /** + * Resets all typing variables. + * + * @see #type + */ + resetType: function() { + this.strokesRecorded = [ 0, 0 ]; + this.typing = false; + this.previousKeyGroup = -1; + }, + + /** + * Refreshes the state of the {@link CKEDITOR.plugins.undo.UndoManager undo manager} + * as well as the state of the `undo` and `redo` commands. + */ + refreshState: function() { + // These lines can be handled within onChange() too. + this.hasUndo = !!this.getNextImage( true ); + this.hasRedo = !!this.getNextImage( false ); + // Reset typing + this.resetType(); + this.onChange(); + }, + + /** + * Saves a snapshot of the document image for later retrieval. + * + * @param {Boolean} onContentOnly If set to `true`, the snapshot will be saved only if the content has changed. + * @param {CKEDITOR.plugins.undo.Image} image An optional image to save. If skipped, current editor will be used. + * @param {Boolean} [autoFireChange=true] If set to `false`, will not trigger the {@link CKEDITOR.editor#change} event to editor. + */ + save: function( onContentOnly, image, autoFireChange ) { + var editor = this.editor; + // Do not change snapshots stack when locked, editor is not ready, + // editable is not ready or when editor is in mode difference than 'wysiwyg'. + if ( this.locked || editor.status != 'ready' || editor.mode != 'wysiwyg' ) + return false; + + var editable = editor.editable(); + if ( !editable || editable.status != 'ready' ) + return false; + + var snapshots = this.snapshots; + + // Get a content image. + if ( !image ) + image = new Image( editor ); + + // Do nothing if it was not possible to retrieve an image. + if ( image.contents === false ) + return false; + + // Check if this is a duplicate. In such case, do nothing. + if ( this.currentImage ) { + if ( image.equalsContent( this.currentImage ) ) { + if ( onContentOnly ) + return false; + + if ( image.equalsSelection( this.currentImage ) ) + return false; + } else if ( autoFireChange !== false ) { + editor.fire( 'change' ); + } + } + + // Drop future snapshots. + snapshots.splice( this.index + 1, snapshots.length - this.index - 1 ); + + // If we have reached the limit, remove the oldest one. + if ( snapshots.length == this.limit ) + snapshots.shift(); + + // Add the new image, updating the current index. + this.index = snapshots.push( image ) - 1; + + this.currentImage = image; + + if ( autoFireChange !== false ) + this.refreshState(); + return true; + }, + + /** + * Sets editor content/selection to the one stored in `image`. + * + * @param {CKEDITOR.plugins.undo.Image} image + */ + restoreImage: function( image ) { + // Bring editor focused to restore selection. + var editor = this.editor, + sel; + + if ( image.bookmarks ) { + editor.focus(); + // Retrieve the selection beforehand. (#8324) + sel = editor.getSelection(); + } + + // Start transaction - do not allow any mutations to the + // snapshots stack done when selecting bookmarks (much probably + // by selectionChange listener). + this.locked = { level: 999 }; + + this.editor.loadSnapshot( image.contents ); + + if ( image.bookmarks ) + sel.selectBookmarks( image.bookmarks ); + else if ( CKEDITOR.env.ie ) { + // IE BUG: If I don't set the selection to *somewhere* after setting + // document contents, then IE would create an empty paragraph at the bottom + // the next time the document is modified. + var $range = this.editor.document.getBody().$.createTextRange(); + $range.collapse( true ); + $range.select(); + } + + this.locked = null; + + this.index = image.index; + this.currentImage = this.snapshots[ this.index ]; + + // Update current image with the actual editor + // content, since actualy content may differ from + // the original snapshot due to dom change. (#4622) + this.update(); + this.refreshState(); + + editor.fire( 'change' ); + }, + + /** + * Gets the closest available image. + * + * @param {Boolean} isUndo If `true`, it will return the previous image. + * @returns {CKEDITOR.plugins.undo.Image} Next image or `null`. + */ + getNextImage: function( isUndo ) { + var snapshots = this.snapshots, + currentImage = this.currentImage, + image, i; + + if ( currentImage ) { + if ( isUndo ) { + for ( i = this.index - 1; i >= 0; i-- ) { + image = snapshots[ i ]; + if ( !currentImage.equalsContent( image ) ) { + image.index = i; + return image; + } + } + } else { + for ( i = this.index + 1; i < snapshots.length; i++ ) { + image = snapshots[ i ]; + if ( !currentImage.equalsContent( image ) ) { + image.index = i; + return image; + } + } + } + } + + return null; + }, + + /** + * Checks the current redo state. + * + * @returns {Boolean} Whether the document has a previous state to retrieve. + */ + redoable: function() { + return this.enabled && this.hasRedo; + }, + + /** + * Checks the current undo state. + * + * @returns {Boolean} Whether the document has a future state to restore. + */ + undoable: function() { + return this.enabled && this.hasUndo; + }, + + /** + * Performs an undo operation on current index. + */ + undo: function() { + if ( this.undoable() ) { + this.save( true ); + + var image = this.getNextImage( true ); + if ( image ) + return this.restoreImage( image ), true; + } + + return false; + }, + + /** + * Performs a redo operation on current index. + */ + redo: function() { + if ( this.redoable() ) { + // Try to save. If no changes have been made, the redo stack + // will not change, so it will still be redoable. + this.save( true ); + + // If instead we had changes, we can't redo anymore. + if ( this.redoable() ) { + var image = this.getNextImage( false ); + if ( image ) + return this.restoreImage( image ), true; + } + } + + return false; + }, + + /** + * Updates the last snapshot of the undo stack with the current editor content. + * + * @param {CKEDITOR.plugins.undo.Image} [newImage] The image which will replace the current one. + * If it is not set, it defaults to the image taken from the editor. + */ + update: function( newImage ) { + // Do not change snapshots stack is locked. + if ( this.locked ) + return; + + if ( !newImage ) + newImage = new Image( this.editor ); + + var i = this.index, + snapshots = this.snapshots; + + // Find all previous snapshots made for the same content (which differ + // only by selection) and replace all of them with the current image. + while ( i > 0 && this.currentImage.equalsContent( snapshots[ i - 1 ] ) ) + i -= 1; + + snapshots.splice( i, this.index - i + 1, newImage ); + this.index = i; + this.currentImage = newImage; + }, + + /** + * Amends the last snapshot and changes its selection (only in case when content + * is equal between these two). + * + * @since 4.4.4 + * @param {CKEDITOR.plugins.undo.Image} newSnapshot New snapshot with new selection. + * @returns {Boolean} Returns `true` if selection was amended. + */ + updateSelection: function( newSnapshot ) { + if ( !this.snapshots.length ) + return false; + + var snapshots = this.snapshots, + lastImage = snapshots[ snapshots.length - 1 ]; + + if ( lastImage.equalsContent( newSnapshot ) ) { + if ( !lastImage.equalsSelection( newSnapshot ) ) { + snapshots[ snapshots.length - 1 ] = newSnapshot; + this.currentImage = newSnapshot; + return true; + } + } + + return false; + }, + + /** + * Locks the snapshot stack to prevent any save/update operations and when necessary, + * updates the tip of the snapshot stack with the DOM changes introduced during the + * locked period, after the {@link #unlock} method is called. + * + * It is mainly used to ensure any DOM operations that should not be recorded + * (e.g. auto paragraphing) are not added to the stack. + * + * **Note:** For every `lock` call you must call {@link #unlock} once to unlock the undo manager. + * + * @since 4.0 + * @param {Boolean} [dontUpdate] When set to `true`, the last snapshot will not be updated + * with current content and selection. By default, if undo manager was up to date when the lock started, + * the last snapshot will be updated to the current state when unlocking. This means that all changes + * done during the lock will be merged into the previous snapshot or the next one. Use this option to gain + * more control over this behavior. For example, it is possible to group changes done during the lock into + * a separate snapshot. + * @param {Boolean} [forceUpdate] When set to `true`, the last snapshot will always be updated with the + * current content and selection regardless of the current state of the undo manager. + * When not set, the last snapshot will be updated only if the undo manager was up to date when locking. + * Additionally, this option makes it possible to lock the snapshot when the editor is not in the `wysiwyg` mode, + * because when it is passed, the snapshots will not need to be compared. + */ + lock: function( dontUpdate, forceUpdate ) { + if ( !this.locked ) { + if ( dontUpdate ) + this.locked = { level: 1 }; + else { + var update = null; + + if ( forceUpdate ) + update = true; + else { + // Make a contents image. Don't include bookmarks, because: + // * we don't compare them, + // * there's a chance that DOM has been changed since + // locked (e.g. fake) selection was made, so createBookmark2 could fail. + // http://dev.ckeditor.com/ticket/11027#comment:3 + var imageBefore = new Image( this.editor, true ); + + // If current editor content matches the tip of snapshot stack, + // the stack tip must be updated by unlock, to include any changes made + // during this period. + if ( this.currentImage && this.currentImage.equalsContent( imageBefore ) ) + update = imageBefore; + } + + this.locked = { update: update, level: 1 }; + } + + // Increase the level of lock. + } else { + this.locked.level++; + } + }, + + /** + * Unlocks the snapshot stack and checks to amend the last snapshot. + * + * See {@link #lock} for more details. + * + * @since 4.0 + */ + unlock: function() { + if ( this.locked ) { + // Decrease level of lock and check if equals 0, what means that undoM is completely unlocked. + if ( !--this.locked.level ) { + var update = this.locked.update; + + this.locked = null; + + // forceUpdate was passed to lock(). + if ( update === true ) + this.update(); + // update is instance of Image. + else if ( update ) { + var newImage = new Image( this.editor, true ); + + if ( !update.equalsContent( newImage ) ) + this.update(); + } + } + } + } + }; + + /** + * Codes for navigation keys like *Arrows*, *Page Up/Down*, etc. + * Used by the {@link #isNavigationKey} method. + * + * @since 4.4.5 + * @readonly + * @static + */ + UndoManager.navigationKeyCodes = { + 37: 1, 38: 1, 39: 1, 40: 1, // Arrows. + 36: 1, 35: 1, // Home, End. + 33: 1, 34: 1 // PgUp, PgDn. + }; + + /** + * Key groups identifier mapping. Used for accessing members in + * {@link #strokesRecorded}. + * + * * `FUNCTIONAL` – identifier for the *Backspace* / *Delete* key. + * * `PRINTABLE` – identifier for printable keys. + * + * Example usage: + * + * undoManager.strokesRecorded[ undoManager.keyGroups.FUNCTIONAL ]; + * + * @since 4.4.5 + * @readonly + * @static + */ + UndoManager.keyGroups = { + PRINTABLE: 0, + FUNCTIONAL: 1 + }; + + /** + * Checks whether a key is one of navigation keys (*Arrows*, *Page Up/Down*, etc.). + * See also the {@link #navigationKeyCodes} property. + * + * @since 4.4.5 + * @static + * @param {Number} keyCode + * @returns {Boolean} + */ + UndoManager.isNavigationKey = function( keyCode ) { + return !!UndoManager.navigationKeyCodes[ keyCode ]; + }; + + /** + * Returns the group to which the passed `keyCode` belongs. + * + * @since 4.4.5 + * @static + * @param {Number} keyCode + * @returns {Number} + */ + UndoManager.getKeyGroup = function( keyCode ) { + var keyGroups = UndoManager.keyGroups; + + return backspaceOrDelete[ keyCode ] ? keyGroups.FUNCTIONAL : keyGroups.PRINTABLE; + }; + + /** + * @since 4.4.5 + * @static + * @param {Number} keyGroup + * @returns {Number} + */ + UndoManager.getOppositeKeyGroup = function( keyGroup ) { + var keyGroups = UndoManager.keyGroups; + return ( keyGroup == keyGroups.FUNCTIONAL ? keyGroups.PRINTABLE : keyGroups.FUNCTIONAL ); + }; + + /** + * Whether we need to use a workaround for functional (*Backspace*, *Delete*) keys not firing + * the `keypress` event in Internet Explorer in this environment and for the specified `keyCode`. + * + * @since 4.4.5 + * @static + * @param {Number} keyCode + * @returns {Boolean} + */ + UndoManager.ieFunctionalKeysBug = function( keyCode ) { + return CKEDITOR.env.ie && UndoManager.getKeyGroup( keyCode ) == UndoManager.keyGroups.FUNCTIONAL; + }; + + // Helper method called when undoManager.typing val was changed to true. + function onTypingStart( undoManager ) { + // It's safe to now indicate typing state. + undoManager.typing = true; + + // Manually mark snapshot as available. + undoManager.hasUndo = true; + undoManager.hasRedo = false; + + undoManager.onChange(); + } + + /** + * Contains a snapshot of the editor content and selection at a given point in time. + * + * @private + * @class CKEDITOR.plugins.undo.Image + * @constructor Creates an Image class instance. + * @param {CKEDITOR.editor} editor The editor instance on which the image is created. + * @param {Boolean} [contentsOnly] If set to `true`, the image will only contain content without the selection. + */ + var Image = CKEDITOR.plugins.undo.Image = function( editor, contentsOnly ) { + this.editor = editor; + + editor.fire( 'beforeUndoImage' ); + + var contents = editor.getSnapshot(); + + // In IE, we need to remove the expando attributes. + if ( CKEDITOR.env.ie && contents ) + contents = contents.replace( /\s+data-cke-expando=".*?"/g, '' ); + + this.contents = contents; + + if ( !contentsOnly ) { + var selection = contents && editor.getSelection(); + this.bookmarks = selection && selection.createBookmarks2( true ); + } + + editor.fire( 'afterUndoImage' ); + }; + + // Attributes that browser may changing them when setting via innerHTML. + var protectedAttrs = /\b(?:href|src|name)="[^"]*?"/gi; + + Image.prototype = { + /** + * @param {CKEDITOR.plugins.undo.Image} otherImage Image to compare to. + * @returns {Boolean} Returns `true` if content in `otherImage` is the same. + */ + equalsContent: function( otherImage ) { + var thisContents = this.contents, + otherContents = otherImage.contents; + + // For IE7 and IE QM: Comparing only the protected attribute values but not the original ones.(#4522) + if ( CKEDITOR.env.ie && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks ) ) { + thisContents = thisContents.replace( protectedAttrs, '' ); + otherContents = otherContents.replace( protectedAttrs, '' ); + } + + if ( thisContents != otherContents ) + return false; + + return true; + }, + + /** + * @param {CKEDITOR.plugins.undo.Image} otherImage Image to compare to. + * @returns {Boolean} Returns `true` if selection in `otherImage` is the same. + */ + equalsSelection: function( otherImage ) { + var bookmarksA = this.bookmarks, + bookmarksB = otherImage.bookmarks; + + if ( bookmarksA || bookmarksB ) { + if ( !bookmarksA || !bookmarksB || bookmarksA.length != bookmarksB.length ) + return false; + + for ( var i = 0; i < bookmarksA.length; i++ ) { + var bookmarkA = bookmarksA[ i ], + bookmarkB = bookmarksB[ i ]; + + if ( bookmarkA.startOffset != bookmarkB.startOffset || bookmarkA.endOffset != bookmarkB.endOffset || + !CKEDITOR.tools.arrayCompare( bookmarkA.start, bookmarkB.start ) || + !CKEDITOR.tools.arrayCompare( bookmarkA.end, bookmarkB.end ) ) { + return false; + } + } + } + + return true; + } + + /** + * Editor content. + * + * @readonly + * @property {String} contents + */ + + /** + * Bookmarks representing the selection in an image. + * + * @readonly + * @property {Object[]} bookmarks Array of bookmark2 objects, see {@link CKEDITOR.dom.range#createBookmark2} for definition. + */ + }; + + /** + * A class encapsulating all native event listeners which have to be used in + * order to handle undo manager integration for native editing actions (excluding drag and drop and paste support + * handled by the Clipboard plugin). + * + * @since 4.4.4 + * @private + * @class CKEDITOR.plugins.undo.NativeEditingHandler + * @member CKEDITOR.plugins.undo Undo manager owning the handler. + * @constructor + * @param {CKEDITOR.plugins.undo.UndoManager} undoManager + */ + var NativeEditingHandler = CKEDITOR.plugins.undo.NativeEditingHandler = function( undoManager ) { + // We'll use keyboard + input events to determine if snapshot should be created. + // Since `input` event is fired before `keyup`. We can tell in `keyup` event if input occured. + // That will tell us if any printable data was inserted. + // On `input` event we'll increase input fired counter for proper key code. + // Eventually it might be canceled by paste/drop using `ignoreInputEvent` flag. + // Order of events can be found in http://www.w3.org/TR/DOM-Level-3-Events/ + + /** + * An undo manager instance owning the editing handler. + * + * @property {CKEDITOR.plugins.undo.UndoManager} undoManager + */ + this.undoManager = undoManager; + + /** + * See {@link #ignoreInputEventListener}. + * + * @since 4.4.5 + * @private + */ + this.ignoreInputEvent = false; + + /** + * A stack of pressed keys. + * + * @since 4.4.5 + * @property {CKEDITOR.plugins.undo.KeyEventsStack} keyEventsStack + */ + this.keyEventsStack = new KeyEventsStack(); + + /** + * An image of the editor during the `keydown` event (therefore without DOM modification). + * + * @property {CKEDITOR.plugins.undo.Image} lastKeydownImage + */ + this.lastKeydownImage = null; + }; + + NativeEditingHandler.prototype = { + /** + * The `keydown` event listener. + * + * @param {CKEDITOR.dom.event} evt + */ + onKeydown: function( evt ) { + var keyCode = evt.data.getKey(); + + // The composition is in progress - ignore the key. (#12597) + if ( keyCode === 229 ) { + return; + } + + // Block undo/redo keystrokes when at the bottom/top of the undo stack (#11126 and #11677). + if ( CKEDITOR.tools.indexOf( keystrokes, evt.data.getKeystroke() ) > -1 ) { + evt.data.preventDefault(); + return; + } + + // Cleaning tab functional keys. + this.keyEventsStack.cleanUp( evt ); + + var undoManager = this.undoManager; + + // Gets last record for provided keyCode. If not found will create one. + var last = this.keyEventsStack.getLast( keyCode ); + if ( !last ) { + this.keyEventsStack.push( keyCode ); + } + + // We need to store an image which will be used in case of key group + // change. + this.lastKeydownImage = new Image( undoManager.editor ); + + if ( UndoManager.isNavigationKey( keyCode ) || this.undoManager.keyGroupChanged( keyCode ) ) { + if ( undoManager.strokesRecorded[ 0 ] || undoManager.strokesRecorded[ 1 ] ) { + // We already have image, so we'd like to reuse it. + + // #12300 + undoManager.save( false, this.lastKeydownImage, false ); + undoManager.resetType(); + } + } + }, + + /** + * The `input` event listener. + */ + onInput: function() { + // Input event is ignored if paste/drop event were fired before. + if ( this.ignoreInputEvent ) { + // Reset flag - ignore only once. + this.ignoreInputEvent = false; + return; + } + + var lastInput = this.keyEventsStack.getLast(); + // Nothing in key events stack, but input event called. Interesting... + // That's because on Android order of events is buggy and also keyCode is set to 0. + if ( !lastInput ) { + lastInput = this.keyEventsStack.push( 0 ); + } + + // Increment inputs counter for provided key code. + this.keyEventsStack.increment( lastInput.keyCode ); + + // Exceeded limit. + if ( this.keyEventsStack.getTotalInputs() >= this.undoManager.strokesLimit ) { + this.undoManager.type( lastInput.keyCode, true ); + this.keyEventsStack.resetInputs(); + } + }, + + /** + * The `keyup` event listener. + * + * @param {CKEDITOR.dom.event} evt + */ + onKeyup: function( evt ) { + var undoManager = this.undoManager, + keyCode = evt.data.getKey(), + totalInputs = this.keyEventsStack.getTotalInputs(); + + // Remove record from stack for provided key code. + this.keyEventsStack.remove( keyCode ); + + // Second part of the workaround for IEs functional keys bug. We need to check whether something has really + // changed because we blindly mocked the keypress event. + // Also we need to be aware that lastKeydownImage might not be available (#12327). + if ( UndoManager.ieFunctionalKeysBug( keyCode ) && this.lastKeydownImage && + this.lastKeydownImage.equalsContent( new Image( undoManager.editor, true ) ) ) { + return; + } + + if ( totalInputs > 0 ) { + undoManager.type( keyCode ); + } else if ( UndoManager.isNavigationKey( keyCode ) ) { + // Note content snapshot has been checked in keydown. + this.onNavigationKey( true ); + } + }, + + /** + * Method called for navigation change. At first it will check if current content does not differ + * from the last saved snapshot. + * + * * If the content is different, the method creates a standard, extra snapshot. + * * If the content is not different, the method will compare the selection, and will + * amend the last snapshot selection if it changed. + * + * @param {Boolean} skipContentCompare If set to `true`, it will not compare content, and only do a selection check. + */ + onNavigationKey: function( skipContentCompare ) { + var undoManager = this.undoManager; + + // We attempt to save content snapshot, if content didn't change, we'll + // only amend selection. + if ( skipContentCompare || !undoManager.save( true, null, false ) ) + undoManager.updateSelection( new Image( undoManager.editor ) ); + + undoManager.resetType(); + }, + + /** + * Makes the next `input` event to be ignored. + */ + ignoreInputEventListener: function() { + this.ignoreInputEvent = true; + }, + + /** + * Attaches editable listeners required to provide the undo functionality. + */ + attachListeners: function() { + var editor = this.undoManager.editor, + editable = editor.editable(), + that = this; + + // We'll create a snapshot here (before DOM modification), because we'll + // need unmodified content when we got keygroup toggled in keyup. + editable.attachListener( editable, 'keydown', function( evt ) { + that.onKeydown( evt ); + + // On IE keypress isn't fired for functional (backspace/delete) keys. + // Let's pretend that something's changed. + if ( UndoManager.ieFunctionalKeysBug( evt.data.getKey() ) ) { + that.onInput(); + } + }, null, null, 999 ); + + // Only IE can't use input event, because it's not fired in contenteditable. + editable.attachListener( editable, ( CKEDITOR.env.ie ? 'keypress' : 'input' ), that.onInput, that, null, 999 ); + + // Keyup executes main snapshot logic. + editable.attachListener( editable, 'keyup', that.onKeyup, that, null, 999 ); + + // On paste and drop we need to ignore input event. + // It would result with calling undoManager.type() on any following key. + editable.attachListener( editable, 'paste', that.ignoreInputEventListener, that, null, 999 ); + editable.attachListener( editable, 'drop', that.ignoreInputEventListener, that, null, 999 ); + + // Click should create a snapshot if needed, but shouldn't cause change event. + // Don't pass onNavigationKey directly as a listener because it accepts one argument which + // will conflict with evt passed to listener. + // #12324 comment:4 + editable.attachListener( editable.isInline() ? editable : editor.document.getDocumentElement(), 'click', function() { + that.onNavigationKey(); + }, null, null, 999 ); + + // When pressing `Tab` key while editable is focused, `keyup` event is not fired. + // Which means that record for `tab` key stays in key events stack. + // We assume that when editor is blurred `tab` key is already up. + editable.attachListener( this.undoManager.editor, 'blur', function() { + that.keyEventsStack.remove( 9 /*Tab*/ ); + }, null, null, 999 ); + } + }; + + /** + * This class represents a stack of pressed keys and stores information + * about how many `input` events each key press has caused. + * + * @since 4.4.5 + * @private + * @class CKEDITOR.plugins.undo.KeyEventsStack + * @constructor + */ + var KeyEventsStack = CKEDITOR.plugins.undo.KeyEventsStack = function() { + /** + * @readonly + */ + this.stack = []; + }; + + KeyEventsStack.prototype = { + /** + * Pushes a literal object with two keys: `keyCode` and `inputs` (whose initial value is set to `0`) to stack. + * It is intended to be called on the `keydown` event. + * + * @param {Number} keyCode + */ + push: function( keyCode ) { + var length = this.stack.push( { keyCode: keyCode, inputs: 0 } ); + return this.stack[ length - 1 ]; + }, + + /** + * Returns the index of the last registered `keyCode` in the stack. + * If no `keyCode` is provided, then the function will return the index of the last item. + * If an item is not found, it will return `-1`. + * + * @param {Number} [keyCode] + * @returns {Number} + */ + getLastIndex: function( keyCode ) { + if ( typeof keyCode != 'number' ) { + return this.stack.length - 1; // Last index or -1. + } else { + var i = this.stack.length; + while ( i-- ) { + if ( this.stack[ i ].keyCode == keyCode ) { + return i; + } + } + return -1; + } + }, + + /** + * Returns the last key recorded in the stack. If `keyCode` is provided, then it will return + * the last record for this `keyCode`. + * + * @param {Number} [keyCode] + * @returns {Object} Last matching record or `null`. + */ + getLast: function( keyCode ) { + var index = this.getLastIndex( keyCode ); + if ( index != -1 ) { + return this.stack[ index ]; + } else { + return null; + } + }, + + /** + * Increments registered input events for stack record for a given `keyCode`. + * + * @param {Number} keyCode + */ + increment: function( keyCode ) { + var found = this.getLast( keyCode ); + if ( !found ) { // %REMOVE_LINE% + throw new Error( 'Trying to increment, but could not found by keyCode: ' + keyCode + '.' ); // %REMOVE_LINE% + } // %REMOVE_LINE% + + found.inputs++; + }, + + /** + * Removes the last record from the stack for the provided `keyCode`. + * + * @param {Number} keyCode + */ + remove: function( keyCode ) { + var index = this.getLastIndex( keyCode ); + + if ( index != -1 ) { + this.stack.splice( index, 1 ); + } + }, + + /** + * Resets the `inputs` value to `0` for a given `keyCode` or in entire stack if a + * `keyCode` is not specified. + * + * @param {Number} [keyCode] + */ + resetInputs: function( keyCode ) { + if ( typeof keyCode == 'number' ) { + var last = this.getLast( keyCode ); + + if ( !last ) { // %REMOVE_LINE% + throw new Error( 'Trying to reset inputs count, but could not found by keyCode: ' + keyCode + '.' ); // %REMOVE_LINE% + } // %REMOVE_LINE% + + last.inputs = 0; + } else { + var i = this.stack.length; + while ( i-- ) { + this.stack[ i ].inputs = 0; + } + } + }, + + /** + * Sums up inputs number for each key code and returns it. + * + * @returns {Number} + */ + getTotalInputs: function() { + var i = this.stack.length, + total = 0; + + while ( i-- ) { + total += this.stack[ i ].inputs; + } + return total; + }, + + /** + * Cleans the stack based on a provided `keydown` event object. The rationale behind this method + * is that some keystrokes cause the `keydown` event to be fired in the editor, but not the `keyup` event. + * For instance, *Alt+Tab* will fire `keydown`, but since the editor is blurred by it, then there is + * no `keyup`, so the keystroke is not removed from the stack. + * + * @param {CKEDITOR.dom.event} event + */ + cleanUp: function( event ) { + var nativeEvent = event.data.$; + + if ( !( nativeEvent.ctrlKey || nativeEvent.metaKey ) ) { + this.remove( 17 ); + } + if ( !nativeEvent.shiftKey ) { + this.remove( 16 ); + } + if ( !nativeEvent.altKey ) { + this.remove( 18 ); + } + } + }; +} )(); + +/** + * The number of undo steps to be saved. The higher value is set, the more + * memory is used for it. + * + * config.undoStackSize = 50; + * + * @cfg {Number} [undoStackSize=20] + * @member CKEDITOR.config + */ + +/** + * Fired when the editor is about to save an undo snapshot. This event can be + * fired by plugins and customizations to make the editor save undo snapshots. + * + * @event saveSnapshot + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + */ + +/** + * Fired before an undo image is to be created. An *undo image* represents the + * editor state at some point. It is saved into the undo store, so the editor is + * able to recover the editor state on undo and redo operations. + * + * @since 3.5.3 + * @event beforeUndoImage + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @see CKEDITOR.editor#afterUndoImage + */ + +/** + * Fired after an undo image is created. An *undo image* represents the + * editor state at some point. It is saved into the undo store, so the editor is + * able to recover the editor state on undo and redo operations. + * + * @since 3.5.3 + * @event afterUndoImage + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @see CKEDITOR.editor#beforeUndoImage + */ + +/** + * Fired when the content of the editor is changed. + * + * Due to performance reasons, it is not verified if the content really changed. + * The editor instead watches several editing actions that usually result in + * changes. This event may thus in some cases be fired when no changes happen + * or may even get fired twice. + * + * If it is important not to get the `change` event fired too often, you should compare the + * previous and the current editor content inside the event listener. It is + * not recommended to do that on every `change` event. + * + * Please note that the `change` event is only fired in the {@link #property-mode wysiwyg mode}. + * In order to implement similar functionality in the source mode, you can listen for example to the {@link #key} + * event or the native [`input`](https://developer.mozilla.org/en-US/docs/Web/Reference/Events/input) + * event (not supported by Internet Explorer 8). + * + * editor.on( 'mode', function() { + * if ( this.mode == 'source' ) { + * var editable = editor.editable(); + * editable.attachListener( editable, 'input', function() { + * // Handle changes made in the source mode. + * } ); + * } + * } ); + * + * @since 4.2 + * @event change + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + */ diff --git a/sources/plugins/wsc/LICENSE.md b/sources/plugins/wsc/LICENSE.md new file mode 100644 index 00000000..6096de23 --- /dev/null +++ b/sources/plugins/wsc/LICENSE.md @@ -0,0 +1,28 @@ +Software License Agreement +========================== + +**CKEditor WSC Plugin** +Copyright © 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved. + +Licensed under the terms of any of the following licenses at your choice: + +* GNU General Public License Version 2 or later (the "GPL"): + http://www.gnu.org/licenses/gpl.html + +* GNU Lesser General Public License Version 2.1 or later (the "LGPL"): + http://www.gnu.org/licenses/lgpl.html + +* Mozilla Public License Version 1.1 or later (the "MPL"): + http://www.mozilla.org/MPL/MPL-1.1.html + +You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. + +Sources of Intellectual Property Included in this plugin +-------------------------------------------------------- + +Where not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission. + +Trademarks +---------- + +CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. diff --git a/sources/plugins/wsc/README.md b/sources/plugins/wsc/README.md new file mode 100644 index 00000000..346e2ab1 --- /dev/null +++ b/sources/plugins/wsc/README.md @@ -0,0 +1,25 @@ +CKEditor WebSpellChecker Plugin +=============================== + +This plugin brings Web Spell Checker (WSC) into CKEditor. + +WSC is "installation-less", using the web-services of [WebSpellChecker.net](http://www.webspellchecker.net/). It's an out of the box solution. + +Installation +------------ + +1. Clone/copy this repository contents in a new "plugins/wsc" folder in your CKEditor installation. +2. Enable the "wsc" plugin in the CKEditor configuration file (config.js): + + config.extraPlugins = 'wsc'; + +That's all. WSC will appear on the editor toolbar and will be ready to use. + +License +------- + +Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). + +See LICENSE.md for more information. + +Developed in cooperation with [WebSpellChecker.net](http://www.webspellchecker.net/). diff --git a/sources/plugins/wsc/dialogs/ciframe.html b/sources/plugins/wsc/dialogs/ciframe.html new file mode 100644 index 00000000..8e4e6bc9 --- /dev/null +++ b/sources/plugins/wsc/dialogs/ciframe.html @@ -0,0 +1,66 @@ + + + + + + + + +

+ diff --git a/sources/plugins/wsc/dialogs/tmpFrameset.html b/sources/plugins/wsc/dialogs/tmpFrameset.html new file mode 100644 index 00000000..19c7c9cc --- /dev/null +++ b/sources/plugins/wsc/dialogs/tmpFrameset.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + diff --git a/sources/plugins/wsc/dialogs/wsc.css b/sources/plugins/wsc/dialogs/wsc.css new file mode 100644 index 00000000..2a622f22 --- /dev/null +++ b/sources/plugins/wsc/dialogs/wsc.css @@ -0,0 +1,82 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +html, body +{ + background-color: transparent; + margin: 0px; + padding: 0px; +} + +body +{ + padding: 10px; +} + +body, td, input, select, textarea +{ + font-size: 11px; + font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; +} + +.midtext +{ + padding:0px; + margin:10px; +} + +.midtext p +{ + padding:0px; + margin:10px; +} + +.Button +{ + border: #737357 1px solid; + color: #3b3b1f; + background-color: #c7c78f; +} + +.PopupTabArea +{ + color: #737357; + background-color: #e3e3c7; +} + +.PopupTitleBorder +{ + border-bottom: #d5d59d 1px solid; +} +.PopupTabEmptyArea +{ + padding-left: 10px; + border-bottom: #d5d59d 1px solid; +} + +.PopupTab, .PopupTabSelected +{ + border-right: #d5d59d 1px solid; + border-top: #d5d59d 1px solid; + border-left: #d5d59d 1px solid; + padding: 3px 5px 3px 5px; + color: #737357; +} + +.PopupTab +{ + margin-top: 1px; + border-bottom: #d5d59d 1px solid; + cursor: pointer; +} + +.PopupTabSelected +{ + font-weight: bold; + cursor: default; + padding-top: 4px; + border-bottom: #f1f1e3 1px solid; + background-color: #f1f1e3; +} diff --git a/sources/plugins/wsc/dialogs/wsc.js b/sources/plugins/wsc/dialogs/wsc.js new file mode 100644 index 00000000..eb96af8a --- /dev/null +++ b/sources/plugins/wsc/dialogs/wsc.js @@ -0,0 +1,3152 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.html or http://ckeditor.com/license + */ + (function() { + // Create support tools + var appTools = (function(){ + var inited = {}; + + var _init = function(handler) { + if (window.addEventListener) { + window.addEventListener('message', handler, false); + } else { + window.attachEvent("onmessage", handler); + } + }; + + var unbindHandler = function(handler) { + if (window.removeEventListener) { + window.removeEventListener('message', handler, false); + } else { + window.detachEvent('onmessage', handler); + } + }; + + var _sendCmd = function(o) { + var str, + type = Object.prototype.toString, + objObject = "[object Object]", + fn = o.fn || null, + id = o.id || '', + target = o.target || window, + message = o.message || { + 'id': id + }; + + if (o.message && type.call(o.message) == objObject) { + (o.message.id) ? o.message.id : o.message.id = id; + message = o.message; + } + + str = window.JSON.stringify(message, fn); + target.postMessage(str, '*'); + }; + + var _hashCreate = function(o, fn) { + fn = fn || null; + var str = window.JSON.stringify(o, fn); + return str; + }; + + var _hashParse = function(str, fn) { + fn = fn || null; + return window.JSON.parse(str, fn); + }; + + var setCookie = function(name, value, options) { + options = options || {}; + + var expires = options.expires; + + if (typeof expires == "number" && expires) { + var d = new Date(); + d.setTime(d.getTime() + expires*1000); + expires = options.expires = d; + } + if (expires && expires.toUTCString) { + options.expires = expires.toUTCString(); + } + + value = encodeURIComponent(value); + var updatedCookie = name + "=" + value; + + for(var propName in options) { + var propValue = options[propName]; + updatedCookie += "; " + propName; + if (propValue !== true) { + updatedCookie += "=" + propValue; + } + } + document.cookie = updatedCookie; + }; + + var getCookie = function(name) { + var matches = document.cookie.match(new RegExp( + "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" + )); + return matches ? decodeURIComponent(matches[1]) : undefined; + }; + + var deleteCookie = function(name) { + setCookie(name, "", { expires: -1 }); + }; + + var findFocusable = function(ckEl) { + var result = null, + focusableSelectors = 'a[href], area[href], input, select, textarea, button, *[tabindex], *[contenteditable]'; + + if(ckEl) { + result = ckEl.find(focusableSelectors); + } + + return result; + }; + + var getStyle = function(el, prop) { + if(document.defaultView && document.defaultView.getComputedStyle) { + return document.defaultView.getComputedStyle(el, null)[prop]; + } else if(el.currentStyle) { + return el.currentStyle[prop]; + } else { + return el.style[prop]; + } + }; + + var isHidden = function(el) { + return el.offsetWidth === 0 || el.offsetHeight == 0 || getStyle(el, 'display') === 'none'; + }; + + var isVisible = function(el) { + return !isHidden(el); + }; + + var hasClass = function (obj, cname) { + return !!(obj.className ? obj.className.match(new RegExp('(\\s|^)'+cname+'(\\s|$)')) : false); + }; + + return { + postMessage: { + init: _init, + send: _sendCmd, + unbindHandler: unbindHandler + }, + hash: { + create: function() { + + }, + + parse: function() { + + } + }, + cookie: { + set: setCookie, + get: getCookie, + remove: deleteCookie + }, + misc: { + findFocusable: findFocusable, + isVisible: isVisible, + hasClass: hasClass + } + }; + })(); + + var NS = NS || {}; + NS.TextAreaNumber = null; + NS.load = true; + NS.cmd = { + "SpellTab": 'spell', + "Thesaurus": 'thes', + "GrammTab": 'grammar' + }; + NS.dialog = null; + NS.optionNode = null; + NS.selectNode = null; + NS.grammerSuggest = null; + NS.textNode = {}; + NS.iframeMain = null; + NS.dataTemp = ''; + NS.div_overlay = null; + NS.textNodeInfo = {}; + NS.selectNode = {}; + NS.selectNodeResponce = {}; + NS.langList = null; + NS.langSelectbox = null; + NS.banner = ''; + NS.show_grammar = null; + NS.div_overlay_no_check = null; + NS.targetFromFrame = {}; + NS.onLoadOverlay = null; + NS.LocalizationComing = {}; + NS.OverlayPlace = null; + NS.sessionid = ''; + NS.LocalizationButton = { + 'ChangeTo_button': { + 'instance' : null, + 'text' : 'Change to', + 'localizationID': 'ChangeTo' + }, + + 'ChangeAll': { + 'instance' : null, + 'text' : 'Change All' + }, + + 'IgnoreWord': { + 'instance' : null, + 'text' : 'Ignore word' + }, + + 'IgnoreAllWords': { + 'instance' : null, + 'text' : 'Ignore all words' + }, + + 'Options': { + 'instance' : null, + 'text' : 'Options', + 'optionsDialog': { + 'instance' : null + } + }, + + 'AddWord': { + 'instance' : null, + 'text' : 'Add word' + }, + + 'FinishChecking_button': { + 'instance' : null, + 'text' : 'Finish Checking', + 'localizationID': 'FinishChecking' + }, + + 'FinishChecking_button_block': { + 'instance' : null, + 'text' : 'Finish Checking', + 'localizationID': 'FinishChecking' + } + }; + + NS.LocalizationLabel = { + 'ChangeTo_label': { + 'instance' : null, + 'text' : 'Change to', + 'localizationID': 'ChangeTo' + }, + + 'Suggestions': { + 'instance' : null, + 'text' : 'Suggestions' + }, + + 'Categories': { + 'instance' : null, + 'text' : 'Categories' + }, + + 'Synonyms': { + 'instance' : null, + 'text' : 'Synonyms' + } + }; + + var SetLocalizationButton = function(obj) { + var el, localizationID; + + for(var i in obj) { + el = NS.dialog.getContentElement(NS.dialog._.currentTabId, i); + + if(el) { + el = el.getElement(); + } else { + el = obj[i].instance.getElement().getFirst() || obj[i].instance.getElement(); + } + + localizationID = obj[i].localizationID || i; + el.setText(NS.LocalizationComing[localizationID]); + } + }; + + var SetLocalizationLabel = function(obj) { + var el, localizationID; + + for(var i in obj) { + el = NS.dialog.getContentElement(NS.dialog._.currentTabId, i); + + if(!el) { + el = obj[i].instance; + } + + if(el.setLabel) { + localizationID = obj[i].localizationID || i; + el.setLabel(NS.LocalizationComing[localizationID] + ':'); + } + } + }; + var OptionsConfirm = function(state) { + if (state) { + nameNode.setValue(''); + } + }; + + var iframeOnload = false; + var nameNode, selectNode, frameId; + + NS.framesetHtml = function(tab) { + var str = ''; + return str; + }; + + NS.setIframe = function(that, nameTab) { + var iframe, + str = NS.framesetHtml(nameTab), + iframeId = NS.iframeNumber + '_' + nameTab, + // tmp.html from wsc/dialogs + iframeInnerHtml = + '' + + '' + + '' + + '' + + 'iframe' + + + '' + + '' + + '' + + '
' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; + + that.getElement().setHtml(str); + iframe = document.getElementById(iframeId); + iframe = (iframe.contentWindow) ? iframe.contentWindow : (iframe.contentDocument.document) ? iframe.contentDocument.document : iframe.contentDocument; + iframe.document.open(); + iframe.document.write(iframeInnerHtml); + iframe.document.close(); + }; + + NS.setCurrentIframe = function(currentTab) { + var that = NS.dialog._.contents[currentTab].Content, + tabID, iframe; + + NS.setIframe(that, currentTab); + + }; + + NS.setHeightBannerFrame = function() { + var height = "90px", + bannerPlaceSpellTab = NS.dialog.getContentElement('SpellTab', 'banner').getElement(), + bannerPlaceGrammTab = NS.dialog.getContentElement('GrammTab', 'banner').getElement(), + bannerPlaceThesaurus = NS.dialog.getContentElement('Thesaurus', 'banner').getElement(); + + bannerPlaceSpellTab.setStyle('height', height); + bannerPlaceGrammTab.setStyle('height', height); + bannerPlaceThesaurus.setStyle('height', height); + }; + + NS.setHeightFrame = function() { + var currentTab = NS.dialog._.currentTabId, + tabID = NS.iframeNumber + '_' + currentTab, + iframe = document.getElementById(tabID); + + iframe.style.height = '240px'; + }; + + NS.sendData = function(scope) { + var currentTab = scope._.currentTabId, + that = scope._.contents[currentTab].Content, + tabID, iframe; + + NS.previousTab = currentTab; + NS.setIframe(that, currentTab); + + var loadNewTab = function(event) { + currentTab = scope._.currentTabId; + event = event || window.event; + + if (!event.data.getTarget().is('a')) { + return; + } + + if(currentTab === NS.previousTab) return; + NS.previousTab = currentTab; + + that = scope._.contents[currentTab].Content; + tabID = NS.iframeNumber + '_' + currentTab; + NS.div_overlay.setEnable(); + + if (!that.getElement().getChildCount()) { + NS.setIframe(that, currentTab); + iframe = document.getElementById(tabID); + NS.targetFromFrame[tabID] = iframe.contentWindow; + } else { + sendData(NS.targetFromFrame[tabID], NS.cmd[currentTab]); + } + }; + + scope.parts.tabs.removeListener('click', loadNewTab); + scope.parts.tabs.on('click', loadNewTab); + }; + + NS.buildSelectLang = function(aId) { + var divContainer = new CKEDITOR.dom.element('div'), + selectContainer = new CKEDITOR.dom.element('select'), + id = "wscLang" + aId; + + divContainer.addClass("cke_dialog_ui_input_select"); + divContainer.setAttribute("role", "presentation"); + divContainer.setStyles({ + 'height': 'auto', + 'position': 'absolute', + 'right': '0', + 'top': '-1px', + 'width': '160px', + 'white-space': 'normal' + }); + + selectContainer.setAttribute('id', id); + selectContainer.addClass("cke_dialog_ui_input_select"); + selectContainer.setStyles({ + 'width': '160px' + }); + var currentTabId = NS.dialog._.currentTabId, + frameId = NS.iframeNumber + '_' + currentTabId; + + divContainer.append(selectContainer); + + return divContainer; + + }; + + NS.buildOptionLang = function(key, aId) { + var id = "wscLang" + aId; + var select = document.getElementById(id), + fragment = document.createDocumentFragment(), + create_option, txt_option, + sort = []; + + if(select.options.length === 0) { + for (var lang in key) { + sort.push([lang, key[lang]]); + } + sort.sort(); + + for (var i = 0; i < sort.length; i++) { + create_option=document.createElement("option"); + create_option.setAttribute("value", sort[i][1]); + txt_option = document.createTextNode(sort[i][0]); + create_option.appendChild(txt_option); + + fragment.appendChild(create_option); + } + select.appendChild(fragment); + } + + // make appropriate option selected according to current selected language + for (var j = 0; j < select.options.length; j++) { + if (select.options[j].value == NS.selectingLang) { + select.options[j].selected = "selected"; + } + } + }; + + NS.buildOptionSynonyms = function(key) { + var syn = NS.selectNodeResponce[key]; + + var select = getSelect( NS.selectNode['Synonyms'] ); + + NS.selectNode['Synonyms'].clear(); + + for (var i = 0; i < syn.length; i++) { + var option = document.createElement('option'); + option.text = syn[i]; + option.value = syn[i]; + + select.$.add(option, i); + } + + NS.selectNode['Synonyms'].getInputElement().$.firstChild.selected = true; + NS.textNode['Thesaurus'].setValue(NS.selectNode['Synonyms'].getInputElement().getValue()); + }; + + var setBannerInPlace = function(htmlBanner) { + var findBannerPlace = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'banner').getElement(); + findBannerPlace.setHtml(htmlBanner); + + }; + + var overlayBlock = function overlayBlock(opt) { + var progress = opt.progress || "", + doc = document, + target = opt.target || doc.body, + overlayId = opt.id || "overlayBlock", + opacity = opt.opacity || "0.9", + background = opt.background || "#f1f1f1", + getOverlay = doc.getElementById(overlayId), + thisOverlay = getOverlay || doc.createElement("div"); + + thisOverlay.style.cssText = "position: absolute;" + + "top:30px;" + + "bottom:41px;" + + "left:1px;" + + "right:1px;" + + "z-index: 10020;" + + "padding:0;" + + "margin:0;" + + "background:" + background + ";" + + "opacity: " + opacity + ";" + + "filter: alpha(opacity=" + opacity * 100 + ");" + + "display: none;"; + thisOverlay.id = overlayId; + + if (!getOverlay) { + target.appendChild(thisOverlay); + } + + return { + setDisable: function() { + thisOverlay.style.display = "none"; + }, + setEnable: function() { + thisOverlay.style.display = "block"; + } + }; + }; + + var buildRadioInputs = function(key, value, check) { + var divContainer = new CKEDITOR.dom.element('div'), + radioButton = new CKEDITOR.dom.element('input'), + radioLabel = new CKEDITOR.dom.element('label'), + id = "wscGrammerSuggest" + key + "_" + value; + + divContainer.addClass("cke_dialog_ui_input_radio"); + divContainer.setAttribute("role", "presentation"); + divContainer.setStyles({ + width: "97%", + padding: "5px", + 'white-space': 'normal' + }); + + radioButton.setAttributes({ + type: "radio", + value: value, + name: 'wscGrammerSuggest', + id: id + }); + radioButton.setStyles({ + "float":"left" + }); + + radioButton.on("click", function(data) { + NS.textNode['GrammTab'].setValue(data.sender.getValue()); + }); + + (check) ? radioButton.setAttribute("checked", true) : false; + + radioButton.addClass("cke_dialog_ui_radio_input"); + + radioLabel.appendText(key); + radioLabel.setAttribute("for", id); + radioLabel.setStyles({ + 'display': "block", + 'line-height': '16px', + 'margin-left': '18px', + 'white-space': 'normal' + }); + + divContainer.append(radioButton); + divContainer.append(radioLabel); + + return divContainer; + }; + + var statusGrammarTab = function(aState) { //#19221 + aState = aState || 'true'; + if(aState !== null && aState == 'false'){ + hideGrammTab(); + } + }; + + var langConstructor = function(lang) { + var langSelectBox = new __constructLangSelectbox(lang), + selectId = "wscLang" + NS.dialog.getParentEditor().name, + selectContainer = document.getElementById(selectId), + currentTabId = NS.dialog._.currentTabId, + frameId = NS.iframeNumber + '_' + currentTabId; + + NS.buildOptionLang(langSelectBox.setLangList, NS.dialog.getParentEditor().name); + tabView[langSelectBox.getCurrentLangGroup(NS.selectingLang)].onShow(); + statusGrammarTab(NS.show_grammar); + + selectContainer.onchange = function(e) { + var langGroup = langSelectBox.getCurrentLangGroup(this.value), + currentTabId = NS.dialog._.currentTabId, + cmd; + + e = e || window.event; + + tabView[langGroup].onShow(); + statusGrammarTab(NS.show_grammar); + NS.div_overlay.setEnable(); + NS.selectingLang = this.value; + + // get command for current opened tan + cmd = NS.cmd[currentTabId]; + // check whether current tab can be opened after language switching + if(!langGroup || !tabView[langGroup] || !tabView[langGroup].allowedTabCommands[cmd]) { + // if not so - set default tab to open after reload + cmd = tabView[langGroup].defaultTabCommand; + } + + for(var key in NS.cmd) { + if(NS.cmd[key] == cmd) { + NS.previousTab = key; + break; + } + } + + appTools.postMessage.send({ + 'message': { + 'changeLang': NS.selectingLang, + 'text': NS.dataTemp, + 'cmd': cmd + }, + 'target': NS.targetFromFrame[frameId], + 'id': 'selectionLang_outer__page' + }); + }; + + }; + + var disableButtonSuggest = function(word) { + var changeToButton, changeAllButton, + styleDisable = function(instanceButton) { + var button = NS.dialog.getContentElement(NS.dialog._.currentTabId, instanceButton) || NS.LocalizationButton[instanceButton].instance; + button.getElement().hasClass('cke_disabled') ? button.getElement().setStyle('color', '#a0a0a0') : button.disable(); + }, + styleEnable = function(instanceButton) { + var button = NS.dialog.getContentElement(NS.dialog._.currentTabId, instanceButton) || NS.LocalizationButton[instanceButton].instance; + button.enable(); + button.getElement().setStyle('color', '#333'); + }; + + if (word == 'no_any_suggestions') { + word = 'No suggestions'; + + changeToButton = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'ChangeTo_button') || NS.LocalizationButton['ChangeTo_button'].instance; + changeToButton.disable(); + changeAllButton = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'ChangeAll') || NS.LocalizationButton['ChangeAll'].instance; + changeAllButton.disable(); + + styleDisable('ChangeTo_button'); + styleDisable('ChangeAll'); + + return word; + } else { + styleEnable('ChangeTo_button'); + styleEnable('ChangeAll'); + + return word; + } + }; + + function getSelect( obj ) { + if ( obj && obj.domId && obj.getInputElement().$ ) + return obj.getInputElement(); + else if ( obj && obj.$ ) + return obj; + return false; + } + + var handlerId = { + iframeOnload: function(response) { + NS.div_overlay.setEnable(); + iframeOnload = true; + var currentTab = NS.dialog._.currentTabId, + tabId = NS.iframeNumber + '_' + currentTab; + sendData(NS.targetFromFrame[tabId], NS.cmd[currentTab]); + }, + + suggestlist: function(response) { + delete response.id; + NS.div_overlay_no_check.setDisable(); + hideCurrentFinishChecking(); + langConstructor(NS.langList); + + var word = disableButtonSuggest(response.word), + suggestionsList = ''; + + if (word instanceof Array) { + word = response.word[0]; + } + + word = word.split(','); + suggestionsList = word; + + NS.textNode['SpellTab'].setValue(suggestionsList[0]); + + var select = getSelect( selectNode ); + + selectNode.clear(); + + for (var i = 0; i < suggestionsList.length; i++) { + var option = document.createElement('option'); + option.text = suggestionsList[i]; + option.value = suggestionsList[i]; + + select.$.add(option, i); + } + + showCurrentTabs(); + NS.div_overlay.setDisable(); + + }, + + grammerSuggest: function(response) { + delete response.id; + delete response.mocklangs; + + hideCurrentFinishChecking(); + langConstructor(NS.langList); // Show select language for this command CKEDITOR.config.wsc_cmd + var firstSuggestValue = response.grammSuggest[0];// ? firstSuggestValue = response.grammSuggest[0] : firstSuggestValue = 'No suggestion for this words'; + NS.grammerSuggest.getElement().setHtml(''); + + NS.textNode['GrammTab'].reset(); + NS.textNode['GrammTab'].setValue(firstSuggestValue); + + NS.textNodeInfo['GrammTab'].getElement().setHtml(''); + NS.textNodeInfo['GrammTab'].getElement().setText(response.info); + + var arr = response.grammSuggest, + len = arr.length, + check = true; + + for (var i = 0; i < len; i++) { + NS.grammerSuggest.getElement().append(buildRadioInputs(arr[i], arr[i], check)); + check = false; + } + + showCurrentTabs(); + NS.div_overlay.setDisable(); + }, + + thesaurusSuggest: function(response) { + delete response.id; + delete response.mocklangs; + + hideCurrentFinishChecking(); + langConstructor(NS.langList); // Show select language for this command CKEDITOR.config.wsc_cmd + NS.selectNodeResponce = response; + + NS.textNode['Thesaurus'].reset(); + + var select = getSelect( NS.selectNode['Categories'] ), + count = 0; + + NS.selectNode['Categories'].clear(); + + for (var i in response) { + + var option = document.createElement('option'); + option.text = i; + option.value = i; + + select.$.add(option, count); + count++ + } + + var synKey = NS.selectNode['Categories'].getInputElement().getChildren().$[0].value; + NS.selectNode['Categories'].getInputElement().getChildren().$[0].selected = true; + NS.buildOptionSynonyms(synKey); + + showCurrentTabs(); + NS.div_overlay.setDisable(); + count = 0; + }, + finish: function(response) { + delete response.id; + + hideCurrentTabs(); + showCurrentFinishChecking(); + NS.div_overlay.setDisable(); + }, + settext: function(response) { + delete response.id; + + var command = NS.dialog.getParentEditor().getCommand( 'checkspell' ), + editor = NS.dialog.getParentEditor(); + + //set local storage for synchronization before scayt reinit + if (editor.scayt && editor.wsc.isSsrvSame) { + var wscUDN = editor.wsc.udn; + + if (!wscUDN) { + editor.wsc.DataStorage.setData('scayt_user_dictionary_name', ''); + } else { + editor.wsc.DataStorage.setData('scayt_user_dictionary_name', wscUDN); + } + } + + + try { + editor.focus(); + } catch(e) {} + + editor.setData(response.text, function(){ + NS.dataTemp = ''; + editor.unlockSelection(); + editor.fire('saveSnapshot'); + NS.dialog.hide(); + }); + + }, + ReplaceText: function(response) { + + delete response.id; + NS.div_overlay.setEnable(); + + NS.dataTemp = response.text; + NS.selectingLang = response.currentLang; + + if (response.cmd = 'spell' && response.len !== '0' && response.len) { + NS.div_overlay.setDisable(); + } else { + window.setTimeout(function() { + try { + NS.div_overlay.setDisable(); + } catch(e) {} + }, 500); + } + + SetLocalizationButton(NS.LocalizationButton); + SetLocalizationLabel(NS.LocalizationLabel); + + }, + options_checkbox_send: function(response) { + delete response.id; + + var obj = { + 'osp': appTools.cookie.get('osp'), + 'udn': appTools.cookie.get('udn'), + 'cust_dic_ids': NS.cust_dic_ids + }; + + var currentTabId = NS.dialog._.currentTabId, + frameId = NS.iframeNumber + '_' + currentTabId; + + appTools.postMessage.send({ + 'message': obj, + 'target': NS.targetFromFrame[frameId], + 'id': 'options_outer__page' + }); + }, + + getOptions: function(response) { + var udn = response.DefOptions.udn; + NS.LocalizationComing = response.DefOptions.localizationButtonsAndText; + NS.show_grammar = response.show_grammar; + NS.langList = response.lang; + NS.bnr = response.bannerId; + NS.sessionid = response.sessionid; + if (response.bannerId) { + NS.setHeightBannerFrame(); + setBannerInPlace(response.banner); + } else { + NS.setHeightFrame(); + } + + if (udn == 'undefined') { + if (NS.userDictionaryName) { + udn = NS.userDictionaryName; + + var obj = { + 'osp': appTools.cookie.get('osp'), + 'udn': NS.userDictionaryName, + 'cust_dic_ids': NS.cust_dic_ids, + 'id': 'options_dic_send', + 'udnCmd': 'create' + }; + + appTools.postMessage.send({ + 'message': obj, + 'target': NS.targetFromFrame[frameId] + }); + + } else{ + udn = ''; + } + } + + appTools.cookie.set('osp', response.DefOptions.osp); + appTools.cookie.set('udn', udn); + appTools.cookie.set('cust_dic_ids', response.DefOptions.cust_dic_ids); + + appTools.postMessage.send({ + 'id': 'giveOptions' + }); + }, + + options_dic_send: function(response) { + + var obj = { + 'osp': appTools.cookie.get('osp'), + 'udn': appTools.cookie.get('udn'), + 'cust_dic_ids': NS.cust_dic_ids, + 'id': 'options_dic_send', + 'udnCmd': appTools.cookie.get('udnCmd') + }; + + var currentTabId = NS.dialog._.currentTabId, + frameId = NS.iframeNumber + '_' + currentTabId; + + appTools.postMessage.send({ + 'message': obj, + 'target': NS.targetFromFrame[frameId] + }); + }, + data: function(response) { + delete response.id; + }, + + giveOptions: function() { + + }, + + setOptionsConfirmF:function() { + OptionsConfirm(false); + }, + + setOptionsConfirmT:function() { + OptionsConfirm(true); + }, + + clickBusy: function() { + NS.div_overlay.setEnable(); + }, + + suggestAllCame: function() { + NS.div_overlay.setDisable(); + NS.div_overlay_no_check.setDisable(); + }, + + TextCorrect: function() { + langConstructor(NS.langList); + } + + }; + + var handlerIncomingData = function(event) { + event = event || window.event; + var response = window.JSON.parse(event.data); + + if(response && response.id) { + handlerId[response.id](response); + } + }; + + var handlerButtonOptions = function(event) { + event = event || window.event; + + var currentTabId = NS.dialog._.currentTabId, + frameId = NS.iframeNumber + '_' + currentTabId; + + appTools.postMessage.send({ + 'message': { + 'cmd': 'Options' + }, + 'target': NS.targetFromFrame[frameId], + 'id': 'cmd' + }); + + }; + + var sendData = function(frameTarget, cmd, sendText, reset_suggest) { + cmd = cmd || CKEDITOR.config.wsc_cmd; + reset_suggest = reset_suggest || false; + sendText = sendText || NS.dataTemp; + + appTools.postMessage.send({ + 'message': { + 'customerId': NS.wsc_customerId, + 'text': sendText, + 'txt_ctrl': NS.TextAreaNumber, + 'cmd': cmd, + 'cust_dic_ids': NS.cust_dic_ids, + 'udn': NS.userDictionaryName, + 'slang': NS.selectingLang, + 'reset_suggest': reset_suggest, + 'sessionid': NS.sessionid + }, + 'target': frameTarget, + 'id': 'data_outer__page' + }); + + NS.div_overlay.setEnable(); + }; + + var tabView = { + "superset": { + onShow: function() { + showThesaurusTab(); + showGrammTab(); + showSpellTab(); + }, + allowedTabCommands: { + "spell": true, + "grammar": true, + "thes": true + }, + defaultTabCommand: "spell" + }, + "usual": { + onShow: function() { + hideThesaurusTab(); + hideGrammTab(); + showSpellTab(); + }, + allowedTabCommands: { + "spell": true + }, + defaultTabCommand: "spell" + }, + "rtl": { + onShow: function() { + hideThesaurusTab(); + hideGrammTab(); + showSpellTab(); + }, + allowedTabCommands: { + "spell": true + }, + defaultTabCommand: "spell" + }, + "spellgrammar": { + onShow: function() { + hideThesaurusTab(); + showGrammTab(); + showSpellTab(); + }, + allowedTabCommands: { + "spell": true, + "grammar": true + }, + defaultTabCommand: "spell" + }, + "spellthes": { + onShow: function() { + showThesaurusTab(); + hideGrammTab(); + showSpellTab(); + }, + allowedTabCommands: { + "spell": true, + "thes": true + }, + defaultTabCommand: "spell" + } + }; + + var showFirstTab = function(scope) { + var cmdManger = function(cmdView) { + var obj = {}; + var _getCmd = function(cmd) { + for (var tabId in cmdView) { + obj[cmdView[tabId]] = tabId; + } + return obj[cmd]; + }; + return { + getCmdByTab: _getCmd + }; + }; + + var cmdM = new cmdManger(NS.cmd), + tabToOpen = cmdM.getCmdByTab(CKEDITOR.config.wsc_cmd); + + scope.selectPage(tabToOpen); + NS.sendData(scope); + }; + + var showThesaurusTab = function() { + NS.dialog.showPage('Thesaurus'); + }; + + var hideThesaurusTab = function() { + NS.dialog.hidePage('Thesaurus'); + }; + + var showGrammTab = function() { + NS.dialog.showPage('GrammTab'); + }; + + var hideGrammTab = function() { + NS.dialog.hidePage('GrammTab'); + }; + + var showSpellTab = function() { + NS.dialog.showPage('SpellTab'); + }; + + var hideSpellTab = function() { + NS.dialog.hidePage('SpellTab'); + }; + + var showCurrentTabs = function() { + var target = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'bottomGroup').getElement(); + + target.removeStyle('display'); + target.removeStyle('position'); + target.removeStyle('left'); + + target.show(); + }; + + var hideCurrentTabs = function() { + var target = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'bottomGroup').getElement(), + activeElement = document.activeElement, + focusableElements; + + target.setStyles({ + display: 'block', + position: 'absolute', + left: '-9999px' + }); + + setTimeout(function() { + target.removeStyle('display'); + target.removeStyle('position'); + target.removeStyle('left'); + + target.hide(); + + NS.dialog._.editor.focusManager.currentActive.focusNext(); + + focusableElements = appTools.misc.findFocusable(NS.dialog.parts.contents); + if(!appTools.misc.hasClass(activeElement, 'cke_dialog_tab') && !appTools.misc.hasClass(activeElement, 'cke_dialog_contents_body') && appTools.misc.isVisible(activeElement)) { + try { + activeElement.focus(); + } catch(e) {} + } else { + for(var i = 0, tmpCkEl; i < focusableElements.count(); i++) { + tmpCkEl = focusableElements.getItem(i); + if(appTools.misc.isVisible(tmpCkEl.$)) { + try { + tmpCkEl.$.focus(); + } catch(e) {} + + break; + } + } + } + }, 0); + }; + + var showCurrentFinishChecking = function() { + var target = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'BlockFinishChecking').getElement(); + + target.removeStyle('display'); + target.removeStyle('position'); + target.removeStyle('left'); + + target.show(); + }; + + var hideCurrentFinishChecking = function() { + var target = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'BlockFinishChecking').getElement(), + activeElement = document.activeElement, + focusableElements; + + target.setStyles({ + display: 'block', + position: 'absolute', + left: '-9999px' + }); + + setTimeout(function() { + target.removeStyle('display'); + target.removeStyle('position'); + target.removeStyle('left'); + + target.hide(); + + NS.dialog._.editor.focusManager.currentActive.focusNext(); + + focusableElements = appTools.misc.findFocusable(NS.dialog.parts.contents); + if(!appTools.misc.hasClass(activeElement, 'cke_dialog_tab') && !appTools.misc.hasClass(activeElement, 'cke_dialog_contents_body') && appTools.misc.isVisible(activeElement)) { + try { + activeElement.focus(); + } catch(e) {} + } else { + for(var i = 0, tmpCkEl; i < focusableElements.count(); i++) { + tmpCkEl = focusableElements.getItem(i); + if(appTools.misc.isVisible(tmpCkEl.$)) { + try { + tmpCkEl.$.focus(); + } catch(e) {} + + break; + } + } + } + }, 0); + }; + + + +function __constructLangSelectbox(languageGroup) { + if( !languageGroup ) { throw "Languages-by-groups list are required for construct selectbox"; } + + var that = this, + o_arr = [], + priorLang ="en_US", + priorLangTitle = "", + currLang = NS.selectingLang; + + for ( var group in languageGroup){ + for ( var langCode in languageGroup[group]){ + var langName = languageGroup[group][langCode]; + if ( langName == priorLang ) { + priorLangTitle = langName; + } else { + o_arr.push( langName ); + } + } + } + + o_arr.sort(); + if(priorLangTitle) { + o_arr.unshift( priorLangTitle ); + } + + var searchGroup = function ( code ){ + for ( var group in languageGroup){ + for ( var langCode in languageGroup[group]){ + if ( langCode.toUpperCase() === code.toUpperCase() ) { + return group; + } + } + } + return ""; + }; + + var _setLangList = function() { + var langList = {}, + langArray = []; + for (var group in languageGroup) { + for ( var langCode in languageGroup[group]){ + langList[languageGroup[group][langCode]] = langCode; + } + } + return langList; + }; + + var _return = { + getCurrentLangGroup: function(code) { + return searchGroup(code); + }, + setLangList: _setLangList() + }; + + return _return; +} + +CKEDITOR.dialog.add('checkspell', function(editor) { + var handlerButtons = function(event) { + event = event || window.event; + + // because in chrome and safary document.activeElement returns tag. We need to signal that clicked element is active + this.getElement().focus(); + + NS.div_overlay.setEnable(); + var currentTabId = NS.dialog._.currentTabId, + frameId = NS.iframeNumber + '_' + currentTabId, + new_word = NS.textNode[currentTabId].getValue(), + cmd = this.getElement().getAttribute("title-cmd"); + + appTools.postMessage.send({ + 'message': { + 'cmd': cmd, + 'tabId': currentTabId, + 'new_word': new_word + }, + 'target': NS.targetFromFrame[frameId], + 'id': 'cmd_outer__page' + }); + + if (cmd == 'ChangeTo' || cmd == 'ChangeAll') { + editor.fire('saveSnapshot'); + } + + if (cmd == 'FinishChecking') { + editor.config.wsc_onFinish.call(CKEDITOR.document.getWindow().getFrame()); + } + + }, + constraints = { + minWidth: 560, + minHeight: 444 + }; + + function initView(dialog) { + var newViewSettings = { + left: parseInt(editor.config.wsc_left, 10), + top: parseInt(editor.config.wsc_top, 10), + width: parseInt(editor.config.wsc_width, 10), + height: parseInt(editor.config.wsc_height, 10) + }, + viewSize = CKEDITOR.document.getWindow().getViewPaneSize(), + currentPosition = dialog.getPosition(), + currentSize = dialog.getSize(), + savePosition = 0; + + if(!dialog._.resized) { + var wrapperHeight = currentSize.height - dialog.parts.contents.getSize('height', !(CKEDITOR.env.gecko || CKEDITOR.env.opera || CKEDITOR.env.ie && CKEDITOR.env.quirks)), + wrapperWidth = currentSize.width - dialog.parts.contents.getSize('width', 1); + + if(newViewSettings.width < constraints.minWidth || isNaN(newViewSettings.width)) { + newViewSettings.width = constraints.minWidth; + } + if(newViewSettings.width > viewSize.width - wrapperWidth) { + newViewSettings.width = viewSize.width - wrapperWidth; + } + + if(newViewSettings.height < constraints.minHeight || isNaN(newViewSettings.height)) { + newViewSettings.height = constraints.minHeight; + } + if(newViewSettings.height > viewSize.height - wrapperHeight) { + newViewSettings.height = viewSize.height - wrapperHeight; + } + + currentSize.width = newViewSettings.width + wrapperWidth; + currentSize.height = newViewSettings.height + wrapperHeight; + + dialog._.fromResizeEvent = false; + dialog.resize(newViewSettings.width, newViewSettings.height); + setTimeout(function() { + dialog._.fromResizeEvent = false; + CKEDITOR.dialog.fire('resize', { + dialog: dialog, + width: newViewSettings.width, + height: newViewSettings.height + }, editor); + }, 300); + } + + if(!dialog._.moved) { + savePosition = isNaN(newViewSettings.left) && isNaN(newViewSettings.top) ? 0 : 1; + + if(isNaN(newViewSettings.left)) { + newViewSettings.left = (viewSize.width - currentSize.width) / 2; + } + if(newViewSettings.left < 0) { + newViewSettings.left = 0; + } + if(newViewSettings.left > viewSize.width - currentSize.width) { + newViewSettings.left = viewSize.width - currentSize.width; + } + + if(isNaN(newViewSettings.top)) { + newViewSettings.top = (viewSize.height - currentSize.height) / 2; + } + if(newViewSettings.top < 0) { + newViewSettings.top = 0; + } + if(newViewSettings.top > viewSize.height - currentSize.height) { + newViewSettings.top = viewSize.height - currentSize.height; + } + + dialog.move(newViewSettings.left, newViewSettings.top, savePosition); + } + } + + function createWscObjectForUdAndUdnSyncrhonization() { + editor.wsc = {}; + + //DataStorage object for cookies and localStorage manipulation + (function( object ) { + 'use strict'; + + var DataTypeManager = { + separator: '<$>', + getDataType: function(value) { + var type; + + if(typeof value === 'undefined') { + type = 'undefined'; + } else if(value === null) { + type = 'null'; + } else { + type = Object.prototype.toString.call(value).slice(8, -1); + } + return type; + }, + convertDataToString: function(value) { + var str, + type = this.getDataType(value).toLowerCase(); + + str = type + this.separator + value; + return str; + }, + // get value type and convert value due to type, since all stored values are String + restoreDataFromString: function(str) { + var value = str, + type, + separatorStartIndex; + + // @TODO: remove this line much later. Support of old format for options + str = this.backCompatibility(str); + + if(typeof str === 'string') { + separatorStartIndex = str.indexOf(this.separator); + type = str.substring(0, separatorStartIndex); + value = str.substring(separatorStartIndex + this.separator.length); + + switch(type) { + case 'boolean': + value = value === 'true'; + break; + case 'number': + value = parseFloat(value); + break; + // we assume that we will store string values only, due to performance + case 'array': + value = value === '' ? [] : value.split(','); + break; + case 'null': + value = null; + break; + case 'undefined': + value = undefined; + break; + } + } + return value; + }, + // old data type support + // here we trying to convert data from old format into new + // @TODO: remove this function much later + backCompatibility: function(str) { + var convertedStr = str, + value, + separatorStartIndex; + + if(typeof str === 'string') { + separatorStartIndex = str.indexOf(this.separator); + // is it old format? + if(separatorStartIndex < 0) { + // try to get number from string + value = parseFloat(str); + // is it not a number? + if(isNaN(value)) { + // yes, this is not a number. Lets check is this is an array "[comma,separated,values]" + if((str[0] === '[') && (str[str.length - 1] === ']')) { + // this is an array. Lets remove brackets symbols and extract the words + str = str.replace('[', ''); + str = str.replace(']', ''); + if(str === '') { + value = []; + } else { + value = str.split(','); + } + // value = str === '[]' ? [] : str.split(','); + } else if(str === 'true' || str === 'false') { + // this is boolean value + value = str === 'true'; + } else { + // this is string + value = str; + } + } + + convertedStr = this.convertDataToString(value); + } + } + + return convertedStr; + } + }; + + var LocalStorage = { + + get: function( key ) { + var value = DataTypeManager.restoreDataFromString( window.localStorage.getItem(key) ); + return value; + }, + + set: function( key, value ) { + var _value = DataTypeManager.convertDataToString( value ); + window.localStorage.setItem( key, _value ); + }, + + del: function( key ) { + window.localStorage.removeItem( key ); + }, + + clear: function() { + window.localStorage.clear(); + } + }; + + var CookiesStorage = { + + expiration: (function() { + return 60 * 60 * 24 * 366; + }()), + + get: function(key) { + var value = DataTypeManager.restoreDataFromString(this.getCookie(key)); + return value; + }, + + set: function(key, value) { + var _value = DataTypeManager.convertDataToString(value); + this.setCookie(key, _value, {expires: this.expiration}); + }, + + del: function(key) { + this.deleteCookie(key); + }, + + getCookie: function(name) { + var matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)")); + return matches ? decodeURIComponent(matches[1]) : undefined; + }, + + setCookie: function(name, value, props) { + props = props || {}; + var exp = props.expires; + + if (typeof exp === "number" && exp) { + var d = new Date(); + + d.setTime(d.getTime() + exp * 1000); + exp = props.expires = d; + } + + if(exp && exp.toUTCString) { + props.expires = exp.toUTCString(); + } + + value = encodeURIComponent(value); + var updatedCookie = name + "=" + value; + + for(var propName in props) { + var propValue = props[propName]; + + updatedCookie += "; " + propName; + + if(propValue !== true) { + updatedCookie += "=" + propValue; + } + } + + document.cookie = updatedCookie; + }, + + deleteCookie: function(name) { + this.setCookie(name, null, {expires: -1}); + }, + + // delete all cookies + clear: function() { + var cookies = document.cookie.split(";"); + + for (var i = 0; i < cookies.length; i++) { + var cookie = cookies[i]; + var eqPos = cookie.indexOf("="); + var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie; + + this.deleteCookie(name); + } + } + }; + + var strategy = window.localStorage ? LocalStorage : CookiesStorage; + + var DataStorage = { + // Get data within storage for key + getData: function( key ) { + return strategy.get( key ); + }, + + // Set data within storage + setData: function( key, value ) { + strategy.set( key, value ); + }, + + // Delete data within storage for key + deleteData: function( key ) { + strategy.del( key ); + }, + + // Clear storage + clear: function() { + strategy.clear(); + } + }; + + // Static Module of Storage Data in the localStorage. + object.DataStorage = DataStorage; + }( editor.wsc )); + + editor.wsc.operationWithUDN = function(command, UDName) { + var obj = { + 'udn': UDName, + 'id': 'operationWithUDN', + 'udnCmd': command + }; + var currentTabId = NS.dialog._.currentTabId, + frameId = NS.iframeNumber + '_' + currentTabId; + + appTools.postMessage.send({ + 'message': obj, + 'target': NS.targetFromFrame[frameId] + }); + }; + editor.wsc.getLocalStorageUDN = function() { + var udn = editor.wsc.DataStorage.getData('scayt_user_dictionary_name'); + + if (!udn) { + return; + } + + return udn; + }; + editor.wsc.getLocalStorageUD = function() { + var ud = editor.wsc.DataStorage.getData('scayt_user_dictionary'); + + if (!ud) { + return; + } + + return ud; + }; + editor.wsc.addWords = function(words, callback) { + var url = editor.config.wsc.DefaultParams.serviceHost + editor.config.wsc.DefaultParams.ssrvHost + + '?cmd=dictionary&format=json&' + + 'customerid=1%3AncttD3-fIoSf2-huzwE4-Y5muI2-mD0Tt-kG9Wz-UEDFC-tYu243-1Uq474-d9Z2l3&' + + 'action=addword&word='+ words + '&callback=toString&synchronization=true', + script = document.createElement('script'); + + script['type'] = 'text/javascript'; + script['src'] = url; + document.getElementsByTagName("head")[0].appendChild(script); + + //chrome, firefox, safari + script.onload = callback; + + //IE + script.onreadystatechange = function() { + if (this.readyState === 'loaded') { + callback(); + } + }; + }; + editor.wsc.cgiOrigin = function() { + var wscServiceHostString = editor.config.wsc.DefaultParams.serviceHost, + wscServiceHostArray = wscServiceHostString.split('/'), + cgiOrigin = wscServiceHostArray[0] + '//' + wscServiceHostArray[2]; + + return cgiOrigin; + }; + editor.wsc.isSsrvSame = false; + } + + return { + title: editor.config.wsc_dialogTitle || editor.lang.wsc.title, + minWidth: constraints.minWidth, + minHeight: constraints.minHeight, + buttons: [CKEDITOR.dialog.cancelButton], + onLoad: function() { + NS.dialog = this; + hideThesaurusTab(); + hideGrammTab(); + showSpellTab(); + + //creating wsc object for UD synchronization between wsc and scayt + if (editor.plugins.scayt) { + createWscObjectForUdAndUdnSyncrhonization(); + } + }, + onShow: function() { + NS.dialog = this; + + editor.lockSelection(editor.getSelection()); + + NS.TextAreaNumber = 'cke_textarea_' + editor.name; + appTools.postMessage.init(handlerIncomingData); + NS.dataTemp = editor.getData(); + //NS.div_overlay.setDisable(); + NS.OverlayPlace = NS.dialog.parts.tabs.getParent().$; + if(CKEDITOR && CKEDITOR.config){ + NS.wsc_customerId = editor.config.wsc_customerId; + NS.cust_dic_ids = editor.config.wsc_customDictionaryIds; + NS.userDictionaryName = editor.config.wsc_userDictionaryName; + NS.defaultLanguage = CKEDITOR.config.defaultLanguage; + var protocol = document.location.protocol == "file:" ? "http:" : document.location.protocol; + var wscCoreUrl = editor.config.wsc_customLoaderScript || ( protocol + '//loader.webspellchecker.net/sproxy_fck/sproxy.php?plugin=fck2&customerid=' + NS.wsc_customerId + '&cmd=script&doc=wsc&schema=22'); + } else { + NS.dialog.hide(); + return; + } + + initView(this); + + CKEDITOR.scriptLoader.load(wscCoreUrl, function(success) { + if(CKEDITOR.config && CKEDITOR.config.wsc && CKEDITOR.config.wsc.DefaultParams){ + NS.serverLocationHash = CKEDITOR.config.wsc.DefaultParams.serviceHost; + NS.logotype = CKEDITOR.config.wsc.DefaultParams.logoPath; + NS.loadIcon = CKEDITOR.config.wsc.DefaultParams.iconPath; + NS.loadIconEmptyEditor = CKEDITOR.config.wsc.DefaultParams.iconPathEmptyEditor; + NS.LangComparer = new CKEDITOR.config.wsc.DefaultParams._SP_FCK_LangCompare(); + }else{ + NS.serverLocationHash = DefaultParams.serviceHost; + NS.logotype = DefaultParams.logoPath; + NS.loadIcon = DefaultParams.iconPath; + NS.loadIconEmptyEditor = DefaultParams.iconPathEmptyEditor; + NS.LangComparer = new _SP_FCK_LangCompare(); + } + + NS.pluginPath = CKEDITOR.getUrl(editor.plugins.wsc.path); + NS.iframeNumber = NS.TextAreaNumber; + NS.templatePath = NS.pluginPath + 'dialogs/tmp.html'; + NS.LangComparer.setDefaulLangCode( NS.defaultLanguage ); + NS.currentLang = editor.config.wsc_lang || NS.LangComparer.getSPLangCode( editor.langCode ) || 'en_US'; + NS.selectingLang = NS.currentLang; + NS.div_overlay = new overlayBlock({ + opacity: "1", + background: "#fff url(" + NS.loadIcon + ") no-repeat 50% 50%", + target: NS.OverlayPlace + + }); + + var number_ck = NS.dialog.parts.tabs.getId(), + dialogPartsTab = CKEDITOR.document.getById(number_ck); + + dialogPartsTab.setStyle('width', '97%'); + if (!dialogPartsTab.getElementsByTag('DIV').count()){ + dialogPartsTab.append(NS.buildSelectLang(NS.dialog.getParentEditor().name)); + } + + NS.div_overlay_no_check = new overlayBlock({ + opacity: "1", + id: 'no_check_over', + background: "#fff url(" + NS.loadIconEmptyEditor + ") no-repeat 50% 50%", + target: NS.OverlayPlace + }); + + if (success) { + showFirstTab(NS.dialog); + NS.dialog.setupContent(NS.dialog); + } + + if (editor.plugins.scayt) { + //is ssrv.cgi path for WSC and scayt same + editor.wsc.isSsrvSame = (function() { + var wscSsrvWholePath, + wscServiceHost = CKEDITOR.config.wsc.DefaultParams.serviceHost.replace('lf/22/js/../../../', '').split('//')[1], + wscSsrvHost = CKEDITOR.config.wsc.DefaultParams.ssrvHost, + scaytSsrvWholePath, + scaytSsrvProtocol, + scaytSsrvHost, + scaytSsrvPath, + + scaytSrcUrl = editor.config.scayt_srcUrl, + scaytSsrvSrcUrlSsrvProtocol, + scaytSsrvSrcUrlSsrvHost, + scaytSsrvSrcUrlSsrvPath, + + scaytBasePath, + scaytBasePathSsrvProtocol, + scaytBasePathSsrvHost, + scaytBasePathSsrvPath; + + if (window.SCAYT && window.SCAYT.CKSCAYT) { + scaytBasePath = SCAYT.CKSCAYT.prototype.basePath; + scaytBasePathSsrvProtocol = scaytBasePath.split('//')[0]; + scaytBasePathSsrvHost = scaytBasePath.split('//')[1].split('/')[0]; + scaytBasePathSsrvPath = scaytBasePath.split(scaytBasePathSsrvHost + '/')[1].replace('/lf/scayt3/ckscayt/', '') + '/script/ssrv.cgi'; + } + + if (scaytSrcUrl && !scaytBasePath && !editor.config.scayt_servicePath) { + scaytSsrvSrcUrlSsrvProtocol = scaytSrcUrl.split('//')[0]; + scaytSsrvSrcUrlSsrvHost = scaytSrcUrl.split('//')[1].split('/')[0]; + scaytSsrvSrcUrlSsrvPath = scaytSrcUrl.split(scaytSsrvSrcUrlSsrvHost + '/')[1].replace('/lf/scayt3/ckscayt/ckscayt.js', '') + '/script/ssrv.cgi'; + } + + scaytSsrvProtocol = editor.config.scayt_serviceProtocol || scaytBasePathSsrvProtocol || scaytSsrvSrcUrlSsrvProtocol; + scaytSsrvHost = editor.config.scayt_serviceHost || scaytBasePathSsrvHost || scaytSsrvSrcUrlSsrvHost; + scaytSsrvPath = editor.config.scayt_servicePath || scaytBasePathSsrvPath || scaytSsrvSrcUrlSsrvPath; + + wscSsrvWholePath = '//' + wscServiceHost + wscSsrvHost; + scaytSsrvWholePath = '//' + scaytSsrvHost + '/' + scaytSsrvPath; + + return wscSsrvWholePath === scaytSsrvWholePath; + })(); + } + + //wsc on scayt UserDictionary and UserDictionaryName synchronization + if (window.SCAYT && editor.wsc && editor.wsc.isSsrvSame) { + var cgiOrigin = editor.wsc.cgiOrigin(); + editor.wsc.syncIsDone = false; + + var getUdOrUdn = function (e) { + if (e.origin === cgiOrigin) { + var data = JSON.parse(e.data); + + if (data.ud && data.ud !== 'undefined') { + editor.wsc.ud = data.ud; + } else if (data.ud === 'undefined') { + editor.wsc.ud = undefined; + } + + if (data.udn && data.udn !== 'undefined') { + editor.wsc.udn = data.udn; + } else if (data.udn === 'undefined') { + editor.wsc.udn = undefined; + } + + if (!editor.wsc.syncIsDone) { + udSynchronization(editor.wsc.ud); + editor.wsc.syncIsDone = true; + } + } + }; + + var udSynchronization = function(cookieUd) { + var localStorageUdArray = editor.wsc.getLocalStorageUD(), + newUd; + + if (localStorageUdArray instanceof Array) { + newUd = localStorageUdArray.toString(); + } + + if (newUd !== undefined && newUd !== '') { + setTimeout(function() { + editor.wsc.addWords(newUd, function() { + showFirstTab(NS.dialog); + NS.dialog.setupContent(NS.dialog); + }); + }, 400); + } + }; + + if (window.addEventListener){ + addEventListener("message", getUdOrUdn, false); + } else { + window.attachEvent("onmessage", getUdOrUdn); + } + + //wsc on scayt UserDictionaryName synchronization + setTimeout( + function() { + var udn = editor.wsc.getLocalStorageUDN(); + + if (udn !== undefined) { + editor.wsc.operationWithUDN('restore', udn); + } + + }, + 500); //need to wait spell.js file to load + + } + }); + + }, + onHide: function() { + var scaytPlugin = CKEDITOR.plugins.scayt, + scaytInstance = editor.scayt; + + editor.unlockSelection(); + + if(scaytPlugin && scaytInstance && scaytPlugin.state[editor.name]) { + scaytInstance.setMarkupPaused(false); + } + + NS.dataTemp = ''; + NS.sessionid = ''; + appTools.postMessage.unbindHandler(handlerIncomingData); + + //scayt on wsc UserDictionary and UserDictionaryName synchronization + if (editor.plugins.scayt && editor.wsc && editor.wsc.isSsrvSame) { + var wscUDN = editor.wsc.udn, + wscUD = editor.wsc.ud, + wscUDarray, + i; + + if (editor.scayt) { // if SCAYT active + if (!wscUDN) { + editor.wsc.DataStorage.setData('scayt_user_dictionary_name', ''); + editor.scayt.removeUserDictionary(); + } else { + editor.wsc.DataStorage.setData('scayt_user_dictionary_name', wscUDN); + editor.scayt.restoreUserDictionary(wscUDN); + } + + if (wscUD) { + setTimeout(function() { + wscUDarray = wscUD.split(','); + for (i = 0; i < wscUDarray.length; i += 1) { + editor.scayt.addWordToUserDictionary(wscUDarray[i]); + } + }, 200); //wait for 'removeUserDictionary' command response + } + + if (!wscUD) { + editor.wsc.DataStorage.setData('scayt_user_dictionary', []); + } + + } else { //if SCAYT not active + + if (!wscUDN) { + editor.wsc.DataStorage.setData('scayt_user_dictionary_name', ''); + } else { + editor.wsc.DataStorage.setData('scayt_user_dictionary_name', wscUDN); + } + + if (wscUD) { + wscUDarray = wscUD.split(','); + editor.wsc.DataStorage.setData('scayt_user_dictionary', wscUDarray); + } + } + } + }, + contents: [ + { + id: 'SpellTab', + label: 'SpellChecker', + accessKey: 'S', + elements: [ + { + type: 'html', + id: 'banner', + label: 'banner', + style: '', //TODO + html: '
' + }, + { + type: 'html', + id: 'Content', + label: 'spellContent', + html: '', + setup: function(dialog) { + var tabId = NS.iframeNumber + '_' + dialog._.currentTabId; + var iframe = document.getElementById(tabId); + NS.targetFromFrame[tabId] = iframe.contentWindow; + } + }, + { + type: 'hbox', + id: 'bottomGroup', + style: 'width:560px; margin: 0 auto;', + widths: ['50%', '50%'], + children: [ + { + type: 'hbox', + id: 'leftCol', + align: 'left', + width: '50%', + children: [ + { + type: 'vbox', + id: 'rightCol1', + widths: ['50%', '50%'], + children: [ + { + type: 'text', + id: 'ChangeTo_label', + label: NS.LocalizationLabel['ChangeTo_label'].text + ':', + labelLayout: 'horizontal', + labelStyle: 'font: 12px/25px arial, sans-serif;', + width: '140px', + 'default': '', + onShow: function() { + NS.textNode['SpellTab'] = this; + NS.LocalizationLabel['ChangeTo_label'].instance = this; + }, + onHide: function() { + this.reset(); + } + }, + { + type: 'hbox', + id: 'rightCol', + align: 'right', + width: '30%', + children: [ + { + type: 'vbox', + id: 'rightCol_col__left', + children: [ + { + type: 'text', + id: 'labelSuggestions', + label: NS.LocalizationLabel['Suggestions'].text + ':', + onShow: function() { + NS.LocalizationLabel['Suggestions'].instance = this; + this.getInputElement().setStyles({ + display: 'none' + }); + } + }, + { + type: 'html', + id: 'logo', + html: 'WebSpellChecker.net', + setup: function(dialog) { + this.getElement().$.src = NS.logotype; + this.getElement().getParent().setStyles({ + "text-align": "left" + }); + } + } + ] + }, + { + type: 'select', + id: 'list_of_suggestions', + labelStyle: 'font: 12px/25px arial, sans-serif;', + size: '6', + inputStyle: 'width: 140px; height: auto;', + items: [['loading...']], + onShow: function() { + selectNode = this; + }, + onChange: function() { + NS.textNode['SpellTab'].setValue(this.getValue()); + } + } + ] + } + ] + } + ] + }, + { + type: 'hbox', + id: 'rightCol', + align: 'right', + width: '50%', + children: [ + { + type: 'vbox', + id: 'rightCol_col__left', + widths: ['50%', '50%', '50%', '50%'], + children: [ + { + type: 'button', + id: 'ChangeTo_button', + label: NS.LocalizationButton['ChangeTo_button'].text, + title: 'Change to', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", 'ChangeTo'); + NS.LocalizationButton['ChangeTo_button'].instance = this; + }, + onClick: handlerButtons + }, + { + type: 'button', + id: 'ChangeAll', + label: NS.LocalizationButton['ChangeAll'].text, + title: 'Change All', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", this.id); + NS.LocalizationButton['ChangeAll'].instance = this; + }, + onClick: handlerButtons + }, + { + type: 'button', + id: 'AddWord', + label: NS.LocalizationButton['AddWord'].text, + title: 'Add word', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", this.id); + NS.LocalizationButton['AddWord'].instance = this; + }, + onClick: handlerButtons + }, + { + type: 'button', + id: 'FinishChecking_button', + label: NS.LocalizationButton['FinishChecking_button'].text, + title: 'Finish Checking', + style: 'width: 100%;margin-top: 9px;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", 'FinishChecking'); + NS.LocalizationButton['FinishChecking_button'].instance = this; + }, + onClick: handlerButtons + } + ] + }, + { + type: 'vbox', + id: 'rightCol_col__right', + widths: ['50%', '50%', '50%'], + children: [ + { + type: 'button', + id: 'IgnoreWord', + label: NS.LocalizationButton['IgnoreWord'].text, + title: 'Ignore word', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", this.id); + NS.LocalizationButton['IgnoreWord'].instance = this; + }, + onClick: handlerButtons + }, + { + type: 'button', + id: 'IgnoreAllWords', + label: NS.LocalizationButton['IgnoreAllWords'].text, + title: 'Ignore all words', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", this.id); + NS.LocalizationButton['IgnoreAllWords'].instance = this; + }, + onClick: handlerButtons + }, + { + type: 'button', + id: 'Options', + label: NS.LocalizationButton['Options'].text, + title: 'Option', + style: 'width: 100%;', + onLoad: function() { + NS.LocalizationButton['Options'].instance = this; + if (document.location.protocol == "file:") { + this.disable(); + } + }, + onClick: function() { + // because in chrome and safary document.activeElement returns tag. We need to signal that clicked element is active + this.getElement().focus(); + + if (document.location.protocol == "file:") { + alert('WSC: Options functionality is disabled when runing from file system'); + } else { + activeElement = document.activeElement; + editor.openDialog('options'); + } + } + } + ] + } + ] + } + ] + }, + { + type: 'hbox', + id: 'BlockFinishChecking', + style: 'width:560px; margin: 0 auto;', + widths: ['70%', '30%'], + onShow: function() { + this.getElement().setStyles({ + display: 'block', + position: 'absolute', + left: '-9999px' + }); + }, + onHide: showCurrentTabs, + children: [ + { + type: 'hbox', + id: 'leftCol', + align: 'left', + width: '70%', + children: [ + { + type: 'vbox', + id: 'rightCol1', + setup: function() { + this.getChild()[0].getElement().$.src = NS.logotype; + this.getChild()[0].getElement().getParent().setStyles({ + "text-align": "center" + }); + }, + children: [ + { + type: 'html', + id: 'logo', + html: 'WebSpellChecker.net' + } + ] + } + ] + }, + { + type: 'hbox', + id: 'rightCol', + align: 'right', + width: '30%', + children: [ + { + type: 'vbox', + id: 'rightCol_col__left', + children: [ + { + type: 'button', + id: 'Option_button', + label: NS.LocalizationButton['Options'].text, + title: 'Option', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", this.id); + if (document.location.protocol == "file:") { + this.disable(); + } + }, + onClick: function() { + // because in chrome and safary document.activeElement returns tag. We need to signal that clicked element is active + this.getElement().focus(); + + if (document.location.protocol == "file:") { + alert('WSC: Options functionality is disabled when runing from file system'); + } else { + activeElement = document.activeElement; + editor.openDialog('options'); + } + } + }, + { + type: 'button', + id: 'FinishChecking_button_block', + label: NS.LocalizationButton['FinishChecking_button_block'].text, + title: 'Finish Checking', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", 'FinishChecking'); + }, + onClick: handlerButtons + } + ] + } + ] + } + ] + } + ] + }, + { + id: 'GrammTab', + label: 'Grammar', + accessKey: 'G', + elements: [ + { + type: 'html', + id: 'banner', + label: 'banner', + style: '', //TODO + html: '
' + }, + { + type: 'html', + id: 'Content', + label: 'GrammarContent', + html: '', + setup: function() { + var tabId = NS.iframeNumber + '_' + NS.dialog._.currentTabId; + var iframe = document.getElementById(tabId); + NS.targetFromFrame[tabId] = iframe.contentWindow; + } + }, + { + type: 'vbox', + id: 'bottomGroup', + style: 'width:560px; margin: 0 auto;', + children: [ + { + type: 'hbox', + id: 'leftCol', + widths: ['66%', '34%'], + children: [ + { + type: 'vbox', + children: [ + { + type: 'text', + id: 'text', + label: "Change to:", + labelLayout: 'horizontal', + labelStyle: 'font: 12px/25px arial, sans-serif;', + inputStyle: 'float: right; width: 200px;', + 'default': '', + onShow: function() { + NS.textNode['GrammTab'] = this; + }, + onHide: function() { + this.reset(); + } + }, + { + type: 'html', + id: 'html_text', + html: "
", + onShow: function(e) { + NS.textNodeInfo['GrammTab'] = this; + } + }, + { + type: 'html', + id: 'radio', + html: "", + onShow: function() { + NS.grammerSuggest = this; + } + } + ] + }, + { + type: 'vbox', + children: [ + { + type: 'button', + id: 'ChangeTo_button', + label: 'Change to', + title: 'Change to', + style: 'width: 133px; float: right;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", 'ChangeTo'); + }, + onClick: handlerButtons + }, + { + type: 'button', + id: 'IgnoreWord', + label: 'Ignore word', + title: 'Ignore word', + style: 'width: 133px; float: right;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", this.id); + }, + onClick: handlerButtons + }, + { + type: 'button', + id: 'IgnoreAllWords', + label: 'Ignore Problem', + title: 'Ignore Problem', + style: 'width: 133px; float: right;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", this.id); + }, + onClick: handlerButtons + }, + { + type: 'button', + id: 'FinishChecking_button', + label: NS.LocalizationButton['FinishChecking_button'].text, + title: 'Finish Checking', + style: 'width: 133px; float: right; margin-top: 9px;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", 'FinishChecking'); + }, + onClick: handlerButtons + } + ] + } + ] + } + ] + }, + { + type: 'hbox', + id: 'BlockFinishChecking', + style: 'width:560px; margin: 0 auto;', + widths: ['70%', '30%'], + onShow: function() { + this.getElement().setStyles({ + display: 'block', + position: 'absolute', + left: '-9999px' + }); + }, + onHide: showCurrentTabs, + children: [ + { + type: 'hbox', + id: 'leftCol', + align: 'left', + width: '70%', + children: [ + { + type: 'vbox', + id: 'rightCol1', + children: [ + { + type: 'html', + id: 'logo', + html: 'WebSpellChecker.net', + setup: function() { + this.getElement().$.src = NS.logotype; + this.getElement().getParent().setStyles({ + "text-align": "center" + }); + } + } + ] + } + ] + }, + { + type: 'hbox', + id: 'rightCol', + align: 'right', + width: '30%', + children: [ + { + type: 'vbox', + id: 'rightCol_col__left', + children: [ + { + type: 'button', + id: 'FinishChecking_button_block', + label: NS.LocalizationButton['FinishChecking_button_block'].text, + title: 'Finish Checking', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", 'FinishChecking'); + }, + onClick: handlerButtons + } + ] + } + ] + } + ] + } + ] + }, + { + id: 'Thesaurus', + label: 'Thesaurus', + accessKey: 'T', + elements: [ + { + type: 'html', + id: 'banner', + label: 'banner', + style: '', //TODO + html: '
' + }, + { + type: 'html', + id: 'Content', + label: 'spellContent', + html: '', + setup: function() { + var tabId = NS.iframeNumber + '_' + NS.dialog._.currentTabId; + var iframe = document.getElementById(tabId); + NS.targetFromFrame[tabId] = iframe.contentWindow; + } + }, + { + type: 'vbox', + id: 'bottomGroup', + style: 'width:560px; margin: -10px auto; overflow: hidden;', + children: [ + { + type: 'hbox', + widths: ['75%', '25%'], + children: [ + { + type: 'vbox', + children: [ + { + type: 'hbox', + widths: ['65%', '35%'], + children: [ + { + type: 'text', + id: 'ChangeTo_label', + label: NS.LocalizationLabel['ChangeTo_label'].text + ':', + labelLayout: 'horizontal', + inputStyle: 'width: 160px;', + labelStyle: 'font: 12px/25px arial, sans-serif;', + 'default': '', + onShow: function(e) { + NS.textNode['Thesaurus'] = this; + NS.LocalizationLabel['ChangeTo_label'].instance = this; + }, + onHide: function() { + this.reset(); + } + }, + { + type: 'button', + id: 'ChangeTo_button', + label: NS.LocalizationButton['ChangeTo_button'].text, + title: 'Change to', + style: 'width: 121px; margin-top: 1px;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", 'ChangeTo'); + NS.LocalizationButton['ChangeTo_button'].instance = this; + }, + onClick: handlerButtons + } + ] + }, + { + type: 'hbox', + children: [ + { + type: 'select', + id: 'Categories', + label: NS.LocalizationLabel['Categories'].text + ':', + labelStyle: 'font: 12px/25px arial, sans-serif;', + size: '5', + inputStyle: 'width: 180px; height: auto;', + items: [], + onShow: function() { + NS.selectNode['Categories'] = this; + NS.LocalizationLabel['Categories'].instance = this; + }, + onChange: function() { + NS.buildOptionSynonyms(this.getValue()); + } + }, + { + type: 'select', + id: 'Synonyms', + label: NS.LocalizationLabel['Synonyms'].text + ':', + labelStyle: 'font: 12px/25px arial, sans-serif;', + size: '5', + inputStyle: 'width: 180px; height: auto;', + items: [], + onShow: function() { + NS.selectNode['Synonyms'] = this; + NS.textNode['Thesaurus'].setValue(this.getValue()); + NS.LocalizationLabel['Synonyms'].instance = this; + }, + onChange: function(e) { + NS.textNode['Thesaurus'].setValue(this.getValue()); + } + } + ] + } + ] + }, + { + type: 'vbox', + width: '120px', + style: "margin-top:46px;", + children: [ + { + type: 'html', + id: 'logotype', + label: 'WebSpellChecker.net', + html: 'WebSpellChecker.net', + setup: function() { + this.getElement().$.src = NS.logotype; + this.getElement().getParent().setStyles({ + "text-align": "center" + }); + } + }, + { + type: 'button', + id: 'FinishChecking_button', + label: NS.LocalizationButton['FinishChecking_button'].text, + title: 'Finish Checking', + style: 'width: 100%; float: right; margin-top: 9px;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", 'FinishChecking'); + }, + onClick: handlerButtons + } + ] + } + ] + } + ] + }, + { + type: 'hbox', + id: 'BlockFinishChecking', + style: 'width:560px; margin: 0 auto;', + widths: ['70%', '30%'], + onShow: function() { + this.getElement().setStyles({ + display: 'block', + position: 'absolute', + left: '-9999px' + }); + }, + children: [ + { + type: 'hbox', + id: 'leftCol', + align: 'left', + width: '70%', + children: [ + { + type: 'vbox', + id: 'rightCol1', + children: [ + { + type: 'html', + id: 'logo', + html: 'WebSpellChecker.net', + setup: function() { + this.getElement().$.src = NS.logotype; + this.getElement().getParent().setStyles({ + "text-align": "center" + }); + } + } + ] + } + ] + }, + { + type: 'hbox', + id: 'rightCol', + align: 'right', + width: '30%', + children: [ + { + type: 'vbox', + id: 'rightCol_col__left', + children: [ + { + type: 'button', + id: 'FinishChecking_button_block', + label: NS.LocalizationButton['FinishChecking_button_block'].text, + title: 'Finish Checking', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", 'FinishChecking'); + }, + onClick: handlerButtons + } + ] + } + ] + } + ] + } + ] + } + ] + }; +}); + +var activeElement = null; + +// Options dialog +CKEDITOR.dialog.add('options', function(editor) { + var dialog = null; + var linkOnCheckbox = {}; + var checkboxState = {}; + var ospString = null; + var OptionsTextError = null; + var cmd = null; + + var set_osp = []; + var dictionaryState = { + 'udn': appTools.cookie.get('udn'), + 'osp': appTools.cookie.get('osp') + }; + + var setHandlerOptions = function() { + var osp = appTools.cookie.get('osp'), + strToArr = osp.split(""); + + checkboxState['IgnoreAllCapsWords'] = strToArr[0]; + checkboxState['IgnoreWordsNumbers'] = strToArr[1]; + checkboxState['IgnoreMixedCaseWords'] = strToArr[2]; + checkboxState['IgnoreDomainNames'] = strToArr[3]; + }; + + var sendDicOptions = function(event) { + event = event || window.event; + cmd = this.getElement().getAttribute("title-cmd"); + var osp = []; + + osp[0] = checkboxState['IgnoreAllCapsWords']; + osp[1] = checkboxState['IgnoreWordsNumbers']; + osp[2] = checkboxState['IgnoreMixedCaseWords']; + osp[3] = checkboxState['IgnoreDomainNames']; + + osp = osp.toString().replace(/,/g, ""); + + + appTools.cookie.set('osp', osp); + appTools.cookie.set('udnCmd', cmd ? cmd : 'ignore'); + if (cmd == "delete") { + + appTools.postMessage.send({ + 'id': 'options_dic_send' + }); + } else { + var udn = ''; + if(nameNode.getValue() !== ''){ + udn = nameNode.getValue(); + } + appTools.cookie.set('udn', udn); + appTools.postMessage.send({ + 'id': 'options_dic_send' + }); + } + + }; + + + var sendAllOptions = function() { + var osp = []; + + osp[0] = checkboxState['IgnoreAllCapsWords']; + osp[1] = checkboxState['IgnoreWordsNumbers']; + osp[2] = checkboxState['IgnoreMixedCaseWords']; + osp[3] = checkboxState['IgnoreDomainNames']; + + osp = osp.toString().replace(/,/g, ""); + + appTools.cookie.set('osp', osp); + + appTools.postMessage.send({ + 'id': 'options_checkbox_send' + }); + + + }; + + var cameOptions = function() { + OptionsTextError.getElement().setHtml(NS.LocalizationComing['error']); + OptionsTextError.getElement().show(); + }; + + return { + title: NS.LocalizationComing['Options'], + minWidth: 430, + minHeight: 130, + resizable: CKEDITOR.DIALOG_RESIZE_NONE, + contents: [ + { + id: 'OptionsTab', + label: 'Options', + accessKey: 'O', + elements: [ + { + type: 'hbox', + id: 'options_error', + children: [ + { + type: 'html', + style: "display: block;text-align: center;white-space: normal!important; font-size: 12px;color:red", + html: '
', + onShow: function() { + OptionsTextError = this; + } + } + ] + }, + { + type: 'vbox', + id: 'Options_content', + children: [ + { + type: 'hbox', + id: 'Options_manager', + widths: ['52%', '48%'], + children: [ + { + type: 'fieldset', + label: 'Spell Checking Options', + style: 'border: none;margin-top: 13px;padding: 10px 0 10px 10px', + onShow: function() { + this.getInputElement().$.children[0].innerHTML = NS.LocalizationComing['SpellCheckingOptions']; + }, + children: [ + { + type: 'vbox', + id: 'Options_checkbox', + children: [ + { + type: 'checkbox', + id: 'IgnoreAllCapsWords', + label: 'Ignore All-Caps Words', + labelStyle: 'margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;', + style: "float:left; min-height: 16px;", + 'default': '', + onClick: function() { + checkboxState[this.id] = (!this.getValue()) ? 0 : 1; + } + }, + { + type: 'checkbox', + id: 'IgnoreWordsNumbers', + label: 'Ignore Words with Numbers', + labelStyle: 'margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;', + style: "float:left; min-height: 16px;", + 'default': '', + onClick: function() { + checkboxState[this.id] = (!this.getValue()) ? 0 : 1; + } + }, + { + type: 'checkbox', + id: 'IgnoreMixedCaseWords', + label: 'Ignore Mixed-Case Words', + labelStyle: 'margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;', + style: "float:left; min-height: 16px;", + 'default': '', + onClick: function() { + checkboxState[this.id] = (!this.getValue()) ? 0 : 1; + } + }, + { + type: 'checkbox', + id: 'IgnoreDomainNames', + label: 'Ignore Domain Names', + labelStyle: 'margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;', + style: "float:left; min-height: 16px;", + 'default': '', + onClick: function() { + checkboxState[this.id] = (!this.getValue()) ? 0 : 1; + } + } + ] + } + ] + }, + { + type: 'vbox', + id: 'Options_DictionaryName', + children: [ + { + type: 'text', + id: 'DictionaryName', + style: 'margin-bottom: 10px', + label: 'Dictionary Name:', + labelLayout: 'vertical', + labelStyle: 'font: 12px/25px arial, sans-serif;', + 'default': '', + onLoad: function() { + nameNode = this; + var udn = NS.userDictionaryName ? NS.userDictionaryName : appTools.cookie.get('udn') && undefined ? ' ' : this.getValue(); + this.setValue(udn); + }, + onShow: function() { + nameNode = this; + var udn = !appTools.cookie.get('udn') ? this.getValue() : appTools.cookie.get('udn'); + this.setValue(udn); + this.setLabel(NS.LocalizationComing['DictionaryName']); + }, + onHide: function() { + this.reset(); + } + }, + { + type: 'hbox', + id: 'Options_buttons', + children: [ + { + type: 'vbox', + id: 'Options_leftCol_col', + widths: ['50%', '50%'], + children: [ + { + type: 'button', + id: 'create', + label: 'Create', + title: 'Create', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", this.id); + }, + onShow: function() { + var el = this.getElement().getFirst() || this.getElement(); + + el.setText(NS.LocalizationComing['Create']); + }, + onClick: sendDicOptions + }, + { + type: 'button', + id: 'restore', + label: 'Restore', + title: 'Restore', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", this.id); + }, + onShow: function() { + var el = this.getElement().getFirst() || this.getElement(); + + el.setText(NS.LocalizationComing['Restore']); + }, + onClick: sendDicOptions + } + ] + }, + { + type: 'vbox', + id: 'Options_rightCol_col', + widths: ['50%', '50%'], + children: [ + { + type: 'button', + id: 'rename', + label: 'Rename', + title: 'Rename', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", this.id); + }, + onShow: function() { + var el = this.getElement().getFirst() || this.getElement(); + + el.setText(NS.LocalizationComing['Rename']); + }, + onClick: sendDicOptions + }, + { + type: 'button', + id: 'delete', + label: 'Remove', + title: 'Remove', + style: 'width: 100%;', + onLoad: function() { + this.getElement().setAttribute("title-cmd", this.id); + }, + onShow: function() { + var el = this.getElement().getFirst() || this.getElement(); + + el.setText(NS.LocalizationComing['Remove']); + }, + onClick: sendDicOptions + } + ] + } + ] + } + ] + } + ] + }, + { + type: 'hbox', + id: 'Options_text', + children: [ + { + type: 'html', + style: "text-align: justify;margin-top: 15px;white-space: normal!important; font-size: 12px;color:#777;", + html: "
" + NS.LocalizationComing['OptionsTextIntro'] + "
", + onShow: function() { + this.getElement().setText(NS.LocalizationComing['OptionsTextIntro']); + } + } + ] + } + ] + } + ] +} +], + buttons: [CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton], + onOk: function() { + sendAllOptions(); + OptionsTextError.getElement().hide(); + OptionsTextError.getElement().setHtml(' '); + }, + onLoad: function() { + dialog = this; + // appTools.postMessage.init(cameOptions); + + linkOnCheckbox['IgnoreAllCapsWords'] = dialog.getContentElement('OptionsTab', 'IgnoreAllCapsWords'); + linkOnCheckbox['IgnoreWordsNumbers'] = dialog.getContentElement('OptionsTab', 'IgnoreWordsNumbers'); + linkOnCheckbox['IgnoreMixedCaseWords'] = dialog.getContentElement('OptionsTab', 'IgnoreMixedCaseWords'); + linkOnCheckbox['IgnoreDomainNames'] = dialog.getContentElement('OptionsTab', 'IgnoreDomainNames'); + + }, + onShow: function() { + appTools.postMessage.init(cameOptions); + setHandlerOptions(); + + (!parseInt(checkboxState['IgnoreAllCapsWords'], 10)) ? linkOnCheckbox['IgnoreAllCapsWords'].setValue('', false) : linkOnCheckbox['IgnoreAllCapsWords'].setValue('checked', false); + (!parseInt(checkboxState['IgnoreWordsNumbers'], 10)) ? linkOnCheckbox['IgnoreWordsNumbers'].setValue('', false) : linkOnCheckbox['IgnoreWordsNumbers'].setValue('checked', false); + (!parseInt(checkboxState['IgnoreMixedCaseWords'], 10)) ? linkOnCheckbox['IgnoreMixedCaseWords'].setValue('', false) : linkOnCheckbox['IgnoreMixedCaseWords'].setValue('checked', false); + (!parseInt(checkboxState['IgnoreDomainNames'], 10)) ? linkOnCheckbox['IgnoreDomainNames'].setValue('', false) : linkOnCheckbox['IgnoreDomainNames'].setValue('checked', false); + + checkboxState['IgnoreAllCapsWords'] = (!linkOnCheckbox['IgnoreAllCapsWords'].getValue()) ? 0 : 1; + checkboxState['IgnoreWordsNumbers'] = (!linkOnCheckbox['IgnoreWordsNumbers'].getValue()) ? 0 : 1; + checkboxState['IgnoreMixedCaseWords'] = (!linkOnCheckbox['IgnoreMixedCaseWords'].getValue()) ? 0 : 1; + checkboxState['IgnoreDomainNames'] = (!linkOnCheckbox['IgnoreDomainNames'].getValue()) ? 0 : 1; + + linkOnCheckbox['IgnoreAllCapsWords'].getElement().$.lastChild.innerHTML = NS.LocalizationComing['IgnoreAllCapsWords']; + linkOnCheckbox['IgnoreWordsNumbers'].getElement().$.lastChild.innerHTML = NS.LocalizationComing['IgnoreWordsWithNumbers']; + linkOnCheckbox['IgnoreMixedCaseWords'].getElement().$.lastChild.innerHTML = NS.LocalizationComing['IgnoreMixedCaseWords']; + linkOnCheckbox['IgnoreDomainNames'].getElement().$.lastChild.innerHTML = NS.LocalizationComing['IgnoreDomainNames']; + }, + onHide: function() { + appTools.postMessage.unbindHandler(cameOptions); + if(activeElement) { + try { + activeElement.focus(); + } catch(e) {} + } + } + }; +}); + +// Expand the spell-check frame when dialog resized. (#6829) +CKEDITOR.dialog.on( 'resize', function( evt ) { + var data = evt.data, + dialog = data.dialog, + currentTabId = dialog._.currentTabId, + tabID = NS.iframeNumber + '_' + currentTabId, + iframe = CKEDITOR.document.getById(tabID); + + if ( dialog._.name == 'checkspell' ) { + if (NS.bnr) { + iframe && iframe.setSize( 'height', data.height - '310' ); + } else { + iframe && iframe.setSize( 'height', data.height - '220' ); + } + + // add flag that indicate whether dialog has been resized by user + if(dialog._.fromResizeEvent && !dialog._.resized) { + dialog._.resized = true; + } + dialog._.fromResizeEvent = true; + } +}); + +CKEDITOR.on('dialogDefinition', function(dialogDefinitionEvent) { + + if(dialogDefinitionEvent.data.name === 'checkspell') { + var dialogDefinition = dialogDefinitionEvent.data.definition; + + NS.onLoadOverlay = new overlayBlock({ + opacity: "1", + background: "#fff", + target: dialogDefinition.dialog.parts.tabs.getParent().$ + }); + + NS.onLoadOverlay.setEnable(); + + dialogDefinition.dialog.on('cancel', function(cancelEvent) { + dialogDefinition.dialog.getParentEditor().config.wsc_onClose.call(this.document.getWindow().getFrame()); + NS.div_overlay.setDisable(); + NS.onLoadOverlay.setDisable(); + return false; + }, this, null, -1); + } +}); +})(); diff --git a/sources/plugins/wsc/dialogs/wsc_ie.js b/sources/plugins/wsc/dialogs/wsc_ie.js new file mode 100644 index 00000000..f47e507f --- /dev/null +++ b/sources/plugins/wsc/dialogs/wsc_ie.js @@ -0,0 +1,176 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.html or http://ckeditor.com/license + */ + +CKEDITOR.dialog.add( 'checkspell', function( editor ) { + var number = CKEDITOR.tools.getNextNumber(), + iframeId = 'cke_frame_' + number, + textareaId = 'cke_data_' + number, + errorBoxId = 'cke_error_' + number, + interval, + protocol = document.location.protocol || 'http:', + errorMsg = editor.lang.wsc.notAvailable; + + var pasteArea = + '
' + + ''; + + var wscCoreUrl = editor.config.wsc_customLoaderScript || ( protocol + '//loader.webspellchecker.net/sproxy_fck/sproxy.php' + '?plugin=fck2' + + '&customerid=' + editor.config.wsc_customerId + + '&cmd=script&doc=wsc&schema=22' + ); + + if ( editor.config.wsc_customLoaderScript ) { + errorMsg += '

' + + editor.lang.wsc.errorLoading.replace( /%s/g, editor.config.wsc_customLoaderScript ) + '

'; + } + + function burnSpelling( dialog, errorMsg ) { + var i = 0; + return function() { + if ( typeof( window.doSpell ) == 'function' ) { + //Call from window.setInteval expected at once. + if ( typeof( interval ) != 'undefined' ) + window.clearInterval( interval ); + + initAndSpell( dialog ); + } else if ( i++ == 180 ) // Timeout: 180 * 250ms = 45s. + window._cancelOnError( errorMsg ); + }; + } + + window._cancelOnError = function( m ) { + if ( typeof( window.WSC_Error ) == 'undefined' ) { + CKEDITOR.document.getById( iframeId ).setStyle( 'display', 'none' ); + var errorBox = CKEDITOR.document.getById( errorBoxId ); + errorBox.setStyle( 'display', 'block' ); + errorBox.setHtml( m || editor.lang.wsc.notAvailable ); + } + }; + + function initAndSpell( dialog ) { + var LangComparer = new window._SP_FCK_LangCompare(), + // Language abbr standarts comparer. + pluginPath = CKEDITOR.getUrl( editor.plugins.wsc.path + 'dialogs/' ), + // Service paths corecting/preparing. + framesetPath = pluginPath + 'tmpFrameset.html'; + + // global var is used in FCK specific core + // change on equal var used in fckplugin.js + window.gFCKPluginName = 'wsc'; + + LangComparer.setDefaulLangCode( editor.config.defaultLanguage ); + + window.doSpell({ + ctrl: textareaId, + + lang: editor.config.wsc_lang || LangComparer.getSPLangCode( editor.langCode ), + intLang: editor.config.wsc_uiLang || LangComparer.getSPLangCode( editor.langCode ), + winType: iframeId, // If not defined app will run on winpopup. + + // Callback binding section. + onCancel: function() { + dialog.hide(); + }, + onFinish: function( dT ) { + editor.focus(); + dialog.getParentEditor().setData( dT.value ); + dialog.hide(); + }, + + // Some manipulations with client static pages. + staticFrame: framesetPath, + framesetPath: framesetPath, + iframePath: pluginPath + 'ciframe.html', + + // Styles defining. + schemaURI: pluginPath + 'wsc.css', + + userDictionaryName: editor.config.wsc_userDictionaryName, + customDictionaryName: editor.config.wsc_customDictionaryIds && editor.config.wsc_customDictionaryIds.split( "," ), + domainName: editor.config.wsc_domainName + + }); + + // Hide user message console (if application was loaded more then after timeout). + CKEDITOR.document.getById( errorBoxId ).setStyle( 'display', 'none' ); + CKEDITOR.document.getById( iframeId ).setStyle( 'display', 'block' ); + } + + return { + title: editor.config.wsc_dialogTitle || editor.lang.wsc.title, + minWidth: 485, + minHeight: 380, + buttons: [ CKEDITOR.dialog.cancelButton ], + onShow: function() { + var contentArea = this.getContentElement( 'general', 'content' ).getElement(); + contentArea.setHtml( pasteArea ); + contentArea.getChild( 2 ).setStyle( 'height', this._.contentSize.height + 'px' ); + + if ( typeof( window.doSpell ) != 'function' ) { + // Load script. + CKEDITOR.document.getHead().append( CKEDITOR.document.createElement( 'script', { + attributes: { + type: 'text/javascript', + src: wscCoreUrl + } + })); + } + + var sData = editor.getData(); // Get the data to be checked. + + CKEDITOR.document.getById( textareaId ).setValue( sData ); + + interval = window.setInterval( burnSpelling( this, errorMsg ), 250 ); + }, + onHide: function() { + window.ooo = undefined; + window.int_framsetLoaded = undefined; + window.framesetLoaded = undefined; + window.is_window_opened = false; + }, + contents: [ + { + id: 'general', + label: editor.config.wsc_dialogTitle || editor.lang.wsc.title, + padding: 0, + elements: [ + { + type: 'html', + id: 'content', + html: '' + } + ] + } + ] + }; +}); + +// Expand the spell-check frame when dialog resized. (#6829) +CKEDITOR.dialog.on( 'resize', function( evt ) { + var data = evt.data, + dialog = data.dialog; + + if ( dialog._.name == 'checkspell' ) { + var content = dialog.getContentElement( 'general', 'content' ).getElement(), + iframe = content && content.getChild( 2 ); + + iframe && iframe.setSize( 'height', data.height ); + iframe && iframe.setSize( 'width', data.width ); + } +}); diff --git a/sources/plugins/wsc/icons/hidpi/spellchecker.png b/sources/plugins/wsc/icons/hidpi/spellchecker.png new file mode 100644 index 00000000..58a9f4c1 Binary files /dev/null and b/sources/plugins/wsc/icons/hidpi/spellchecker.png differ diff --git a/sources/plugins/wsc/icons/spellchecker.png b/sources/plugins/wsc/icons/spellchecker.png new file mode 100644 index 00000000..2b50c5c6 Binary files /dev/null and b/sources/plugins/wsc/icons/spellchecker.png differ diff --git a/sources/plugins/wsc/lang/af.js b/sources/plugins/wsc/lang/af.js new file mode 100644 index 00000000..9caf6f7e --- /dev/null +++ b/sources/plugins/wsc/lang/af.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'af', { + btnIgnore: 'Ignoreer', + btnIgnoreAll: 'Ignoreer alles', + btnReplace: 'Vervang', + btnReplaceAll: 'vervang alles', + btnUndo: 'Ontdoen', + changeTo: 'Verander na', + errorLoading: 'Fout by inlaai van diens: %s.', + ieSpellDownload: 'Speltoetser is nie geïnstalleer nie. Wil u dit nou aflaai?', + manyChanges: 'Klaar met speltoets: %1 woorde verander', + noChanges: 'Klaar met speltoets: Geen woorde verander nie', + noMispell: 'Klaar met speltoets: Geen foute nie', + noSuggestions: '- Geen voorstel -', + notAvailable: 'Jammer, hierdie diens is nie nou beskikbaar nie.', + notInDic: 'Nie in woordeboek nie', + oneChange: 'Klaar met speltoets: Een woord verander', + progress: 'Spelling word getoets...', + title: 'Speltoetser', + toolbar: 'Speltoets' +}); diff --git a/sources/plugins/wsc/lang/ar.js b/sources/plugins/wsc/lang/ar.js new file mode 100644 index 00000000..f152dc15 --- /dev/null +++ b/sources/plugins/wsc/lang/ar.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'ar', { + btnIgnore: 'تجاهل', + btnIgnoreAll: 'تجاهل الكل', + btnReplace: 'تغيير', + btnReplaceAll: 'تغيير الكل', + btnUndo: 'تراجع', + changeTo: 'التغيير إلى', + errorLoading: 'خطأ في تحميل تطبيق خدمة الاستضافة: %s.', + ieSpellDownload: 'المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟', + manyChanges: 'تم إكمال التدقيق الإملائي: تم تغيير %1 من كلمات', + noChanges: 'تم التدقيق الإملائي: لم يتم تغيير أي كلمة', + noMispell: 'تم التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية', + noSuggestions: '- لا توجد إقتراحات -', + notAvailable: 'عفواً، ولكن هذه الخدمة غير متاحة الان', + notInDic: 'ليست في القاموس', + oneChange: 'تم التدقيق الإملائي: تم تغيير كلمة واحدة فقط', + progress: 'جاري التدقيق الاملائى', + title: 'التدقيق الإملائي', + toolbar: 'تدقيق إملائي' +}); diff --git a/sources/plugins/wsc/lang/bg.js b/sources/plugins/wsc/lang/bg.js new file mode 100644 index 00000000..e814a9f2 --- /dev/null +++ b/sources/plugins/wsc/lang/bg.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'bg', { + btnIgnore: 'Игнорирай', + btnIgnoreAll: 'Игнорирай всичко', + btnReplace: 'Препокриване', + btnReplaceAll: 'Препокрий всичко', + btnUndo: 'Възтанови', + changeTo: 'Промени на', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', + manyChanges: 'Spell check complete: %1 words changed', + noChanges: 'Spell check complete: No words changed', + noMispell: 'Spell check complete: No misspellings found', + noSuggestions: '- Няма препоръчани -', + notAvailable: 'Съжаляваме, но услугата не е достъпна за момента', + notInDic: 'Не е в речника', + oneChange: 'Spell check complete: One word changed', + progress: 'Проверява се правописа...', + title: 'Проверка на правопис', + toolbar: 'Проверка на правопис' +}); diff --git a/sources/plugins/wsc/lang/bn.js b/sources/plugins/wsc/lang/bn.js new file mode 100644 index 00000000..03a38130 --- /dev/null +++ b/sources/plugins/wsc/lang/bn.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'bn', { + btnIgnore: 'ইগনোর কর', + btnIgnoreAll: 'সব ইগনোর কর', + btnReplace: 'বদলে দাও', + btnReplaceAll: 'সব বদলে দাও', + btnUndo: 'আন্ডু', + changeTo: 'এতে বদলাও', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'বানান পরীক্ষক ইনস্টল করা নেই। আপনি কি এখনই এটা ডাউনলোড করতে চান?', + manyChanges: 'বানান পরীক্ষা শেষ: %1 গুলো শব্দ বদলে গ্যাছে', + noChanges: 'বানান পরীক্ষা শেষ: কোন শব্দ পরিবর্তন করা হয়নি', + noMispell: 'বানান পরীক্ষা শেষ: কোন ভুল বানান পাওয়া যায়নি', + noSuggestions: '- কোন সাজেশন নেই -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'শব্দকোষে নেই', + oneChange: 'বানান পরীক্ষা শেষ: একটি মাত্র শব্দ পরিবর্তন করা হয়েছে', + progress: 'বানান পরীক্ষা চলছে...', + title: 'Spell Checker', + toolbar: 'বানান চেক' +}); diff --git a/sources/plugins/wsc/lang/bs.js b/sources/plugins/wsc/lang/bs.js new file mode 100644 index 00000000..b40859c8 --- /dev/null +++ b/sources/plugins/wsc/lang/bs.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'bs', { + btnIgnore: 'Ignore', + btnIgnoreAll: 'Ignore All', + btnReplace: 'Replace', + btnReplaceAll: 'Replace All', + btnUndo: 'Undo', + changeTo: 'Change to', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', + manyChanges: 'Spell check complete: %1 words changed', + noChanges: 'Spell check complete: No words changed', + noMispell: 'Spell check complete: No misspellings found', + noSuggestions: '- No suggestions -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Not in dictionary', + oneChange: 'Spell check complete: One word changed', + progress: 'Spell check in progress...', + title: 'Spell Checker', + toolbar: 'Check Spelling' +}); diff --git a/sources/plugins/wsc/lang/ca.js b/sources/plugins/wsc/lang/ca.js new file mode 100644 index 00000000..857cfaa0 --- /dev/null +++ b/sources/plugins/wsc/lang/ca.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'ca', { + btnIgnore: 'Ignora', + btnIgnoreAll: 'Ignora-les totes', + btnReplace: 'Canvia', + btnReplaceAll: 'Canvia-les totes', + btnUndo: 'Desfés', + changeTo: 'Reemplaça amb', + errorLoading: 'Error carregant el servidor: %s.', + ieSpellDownload: 'Verificació ortogràfica no instal·lada. Voleu descarregar-ho ara?', + manyChanges: 'Verificació ortogràfica: s\'han canviat %1 paraules', + noChanges: 'Verificació ortogràfica: no s\'ha canviat cap paraula', + noMispell: 'Verificació ortogràfica acabada: no hi ha cap paraula mal escrita', + noSuggestions: 'Cap suggeriment', + notAvailable: 'El servei no es troba disponible ara.', + notInDic: 'No és al diccionari', + oneChange: 'Verificació ortogràfica: s\'ha canviat una paraula', + progress: 'Verificació ortogràfica en curs...', + title: 'Comprova l\'ortografia', + toolbar: 'Revisa l\'ortografia' +}); diff --git a/sources/plugins/wsc/lang/cs.js b/sources/plugins/wsc/lang/cs.js new file mode 100644 index 00000000..fcda7f01 --- /dev/null +++ b/sources/plugins/wsc/lang/cs.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'cs', { + btnIgnore: 'Přeskočit', + btnIgnoreAll: 'Přeskakovat vše', + btnReplace: 'Zaměnit', + btnReplaceAll: 'Zaměňovat vše', + btnUndo: 'Zpět', + changeTo: 'Změnit na', + errorLoading: 'Chyba nahrávání služby aplikace z: %s.', + ieSpellDownload: 'Kontrola pravopisu není nainstalována. Chcete ji nyní stáhnout?', + manyChanges: 'Kontrola pravopisu dokončena: %1 slov změněno', + noChanges: 'Kontrola pravopisu dokončena: Beze změn', + noMispell: 'Kontrola pravopisu dokončena: Žádné pravopisné chyby nenalezeny', + noSuggestions: '- žádné návrhy -', + notAvailable: 'Omlouváme se, ale služba nyní není dostupná.', + notInDic: 'Není ve slovníku', + oneChange: 'Kontrola pravopisu dokončena: Jedno slovo změněno', + progress: 'Probíhá kontrola pravopisu...', + title: 'Kontrola pravopisu', + toolbar: 'Zkontrolovat pravopis' +}); diff --git a/sources/plugins/wsc/lang/cy.js b/sources/plugins/wsc/lang/cy.js new file mode 100644 index 00000000..308de25c --- /dev/null +++ b/sources/plugins/wsc/lang/cy.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'cy', { + btnIgnore: 'Anwybyddu Un', + btnIgnoreAll: 'Anwybyddu Pob', + btnReplace: 'Amnewid Un', + btnReplaceAll: 'Amnewid Pob', + btnUndo: 'Dadwneud', + changeTo: 'Newid i', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Gwirydd sillafu heb ei arsefydlu. A ydych am ei lawrlwytho nawr?', + manyChanges: 'Gwirio sillafu wedi gorffen: Newidiwyd %1 gair', + noChanges: 'Gwirio sillafu wedi gorffen: Dim newidiadau', + noMispell: 'Gwirio sillafu wedi gorffen: Dim camsillaf.', + noSuggestions: '- Dim awgrymiadau -', + notAvailable: 'Nid yw\'r gwasanaeth hwn ar gael yn bresennol.', + notInDic: 'Nid i\'w gael yn y geiriadur', + oneChange: 'Gwirio sillafu wedi gorffen: Newidiwyd 1 gair', + progress: 'Gwirio sillafu yn ar y gweill...', + title: 'Gwirio Sillafu', + toolbar: 'Gwirio Sillafu' +}); diff --git a/sources/plugins/wsc/lang/da.js b/sources/plugins/wsc/lang/da.js new file mode 100644 index 00000000..018984e6 --- /dev/null +++ b/sources/plugins/wsc/lang/da.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'da', { + btnIgnore: 'Ignorér', + btnIgnoreAll: 'Ignorér alle', + btnReplace: 'Erstat', + btnReplaceAll: 'Erstat alle', + btnUndo: 'Tilbage', + changeTo: 'Forslag', + errorLoading: 'Fejl ved indlæsning af host: %s.', + ieSpellDownload: 'Stavekontrol ikke installeret. Vil du installere den nu?', + manyChanges: 'Stavekontrol færdig: %1 ord ændret', + noChanges: 'Stavekontrol færdig: Ingen ord ændret', + noMispell: 'Stavekontrol færdig: Ingen fejl fundet', + noSuggestions: '(ingen forslag)', + notAvailable: 'Stavekontrol er desværre ikke tilgængelig.', + notInDic: 'Ikke i ordbogen', + oneChange: 'Stavekontrol færdig: Et ord ændret', + progress: 'Stavekontrollen arbejder...', + title: 'Stavekontrol', + toolbar: 'Stavekontrol' +}); diff --git a/sources/plugins/wsc/lang/de.js b/sources/plugins/wsc/lang/de.js new file mode 100644 index 00000000..d8e541c5 --- /dev/null +++ b/sources/plugins/wsc/lang/de.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'de', { + btnIgnore: 'Ignorieren', + btnIgnoreAll: 'Alle Ignorieren', + btnReplace: 'Ersetzen', + btnReplaceAll: 'Alle Ersetzen', + btnUndo: 'Rückgängig', + changeTo: 'Ändern in', + errorLoading: 'Fehler beim laden des Dienstanbieters: %s.', + ieSpellDownload: 'Rechtschreibprüfung nicht installiert. Möchten Sie sie jetzt herunterladen?', + manyChanges: 'Rechtschreibprüfung abgeschlossen - %1 Wörter geändert', + noChanges: 'Rechtschreibprüfung abgeschlossen - keine Worte geändert', + noMispell: 'Rechtschreibprüfung abgeschlossen - keine Fehler gefunden', + noSuggestions: ' - keine Vorschläge - ', + notAvailable: 'Entschuldigung, aber dieser Dienst steht im Moment nicht zur Verfügung.', + notInDic: 'Nicht im Wörterbuch', + oneChange: 'Rechtschreibprüfung abgeschlossen - ein Wort geändert', + progress: 'Rechtschreibprüfung läuft...', + title: 'Rechtschreibprüfung', + toolbar: 'Rechtschreibprüfung' +}); diff --git a/sources/plugins/wsc/lang/el.js b/sources/plugins/wsc/lang/el.js new file mode 100644 index 00000000..8bd15cb1 --- /dev/null +++ b/sources/plugins/wsc/lang/el.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'el', { + btnIgnore: 'Αγνόηση', + btnIgnoreAll: 'Αγνόηση όλων', + btnReplace: 'Αντικατάσταση', + btnReplaceAll: 'Αντικατάσταση όλων', + btnUndo: 'Αναίρεση', + changeTo: 'Αλλαγή σε', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Δεν υπάρχει εγκατεστημένος ορθογράφος. Θέλετε να τον κατεβάσετε τώρα;', + manyChanges: 'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Άλλαξαν %1 λέξεις', + noChanges: 'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν άλλαξαν λέξεις', + noMispell: 'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν βρέθηκαν λάθη', + noSuggestions: '- Δεν υπάρχουν προτάσεις -', + notAvailable: 'Η υπηρεσία δεν είναι διαθέσιμη αυτήν την στιγμή.', + notInDic: 'Δεν υπάρχει στο λεξικό', + oneChange: 'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Άλλαξε μια λέξη', + progress: 'Γίνεται ορθογραφικός έλεγχος...', + title: 'Ορθογραφικός Έλεγχος', + toolbar: 'Ορθογραφικός Έλεγχος' +}); diff --git a/sources/plugins/wsc/lang/en-au.js b/sources/plugins/wsc/lang/en-au.js new file mode 100644 index 00000000..e03a9848 --- /dev/null +++ b/sources/plugins/wsc/lang/en-au.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'en-au', { + btnIgnore: 'Ignore', + btnIgnoreAll: 'Ignore All', + btnReplace: 'Replace', + btnReplaceAll: 'Replace All', + btnUndo: 'Undo', + changeTo: 'Change to', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', + manyChanges: 'Spell check complete: %1 words changed', + noChanges: 'Spell check complete: No words changed', + noMispell: 'Spell check complete: No misspellings found', + noSuggestions: '- No suggestions -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Not in dictionary', + oneChange: 'Spell check complete: One word changed', + progress: 'Spell check in progress...', + title: 'Spell Checker', + toolbar: 'Check Spelling' +}); diff --git a/sources/plugins/wsc/lang/en-ca.js b/sources/plugins/wsc/lang/en-ca.js new file mode 100644 index 00000000..312d285c --- /dev/null +++ b/sources/plugins/wsc/lang/en-ca.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'en-ca', { + btnIgnore: 'Ignore', + btnIgnoreAll: 'Ignore All', + btnReplace: 'Replace', + btnReplaceAll: 'Replace All', + btnUndo: 'Undo', + changeTo: 'Change to', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', + manyChanges: 'Spell check complete: %1 words changed', + noChanges: 'Spell check complete: No words changed', + noMispell: 'Spell check complete: No misspellings found', + noSuggestions: '- No suggestions -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Not in dictionary', + oneChange: 'Spell check complete: One word changed', + progress: 'Spell check in progress...', + title: 'Spell Checker', + toolbar: 'Check Spelling' +}); diff --git a/sources/plugins/wsc/lang/en-gb.js b/sources/plugins/wsc/lang/en-gb.js new file mode 100644 index 00000000..0f33b994 --- /dev/null +++ b/sources/plugins/wsc/lang/en-gb.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'en-gb', { + btnIgnore: 'Ignore', + btnIgnoreAll: 'Ignore All', + btnReplace: 'Replace', + btnReplaceAll: 'Replace All', + btnUndo: 'Undo', + changeTo: 'Change to', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', + manyChanges: 'Spell check complete: %1 words changed', + noChanges: 'Spell check complete: No words changed', + noMispell: 'Spell check complete: No misspellings found', + noSuggestions: '- No suggestions -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Not in dictionary', + oneChange: 'Spell check complete: One word changed', + progress: 'Spell check in progress...', + title: 'Spell Checker', + toolbar: 'Check Spelling' +}); diff --git a/sources/plugins/wsc/lang/en.js b/sources/plugins/wsc/lang/en.js new file mode 100644 index 00000000..99b4bebf --- /dev/null +++ b/sources/plugins/wsc/lang/en.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'en', { + btnIgnore: 'Ignore', + btnIgnoreAll: 'Ignore All', + btnReplace: 'Replace', + btnReplaceAll: 'Replace All', + btnUndo: 'Undo', + changeTo: 'Change to', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', + manyChanges: 'Spell check complete: %1 words changed', + noChanges: 'Spell check complete: No words changed', + noMispell: 'Spell check complete: No misspellings found', + noSuggestions: '- No suggestions -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Not in dictionary', + oneChange: 'Spell check complete: One word changed', + progress: 'Spell check in progress...', + title: 'Spell Checker', + toolbar: 'Check Spelling' +}); diff --git a/sources/plugins/wsc/lang/eo.js b/sources/plugins/wsc/lang/eo.js new file mode 100644 index 00000000..399e59ac --- /dev/null +++ b/sources/plugins/wsc/lang/eo.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'eo', { + btnIgnore: 'Ignori', + btnIgnoreAll: 'Ignori Ĉion', + btnReplace: 'Anstataŭigi', + btnReplaceAll: 'Anstataŭigi Ĉion', + btnUndo: 'Malfari', + changeTo: 'Ŝanĝi al', + errorLoading: 'Eraro en la servoelŝuto el la gastiga komputiko: %s.', + ieSpellDownload: 'Ortografikontrolilo ne instalita. Ĉu vi volas elŝuti ĝin nun?', + manyChanges: 'Ortografikontrolado finita: %1 vortoj korektitaj', + noChanges: 'Ortografikontrolado finita: neniu vorto korektita', + noMispell: 'Ortografikontrolado finita: neniu eraro trovita', + noSuggestions: '- Neniu propono -', + notAvailable: 'Bedaŭrinde la servo ne funkcias nuntempe.', + notInDic: 'Ne trovita en la vortaro', + oneChange: 'Ortografikontrolado finita: unu vorto korektita', + progress: 'La ortografio estas kontrolata...', + title: 'Kontroli la ortografion', + toolbar: 'Kontroli la ortografion' +}); diff --git a/sources/plugins/wsc/lang/es.js b/sources/plugins/wsc/lang/es.js new file mode 100644 index 00000000..0284150d --- /dev/null +++ b/sources/plugins/wsc/lang/es.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'es', { + btnIgnore: 'Ignorar', + btnIgnoreAll: 'Ignorar Todo', + btnReplace: 'Reemplazar', + btnReplaceAll: 'Reemplazar Todo', + btnUndo: 'Deshacer', + changeTo: 'Cambiar a', + errorLoading: 'Error cargando la aplicación del servidor: %s.', + ieSpellDownload: 'Módulo de Control de Ortografía no instalado.\r\n¿Desea descargarlo ahora?', + manyChanges: 'Control finalizado: se ha cambiado %1 palabras', + noChanges: 'Control finalizado: no se ha cambiado ninguna palabra', + noMispell: 'Control finalizado: no se encontraron errores', + noSuggestions: '- No hay sugerencias -', + notAvailable: 'Lo sentimos pero el servicio no está disponible.', + notInDic: 'No se encuentra en el Diccionario', + oneChange: 'Control finalizado: se ha cambiado una palabra', + progress: 'Control de Ortografía en progreso...', + title: 'Comprobar ortografía', + toolbar: 'Ortografía' +}); diff --git a/sources/plugins/wsc/lang/et.js b/sources/plugins/wsc/lang/et.js new file mode 100644 index 00000000..7e198459 --- /dev/null +++ b/sources/plugins/wsc/lang/et.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'et', { + btnIgnore: 'Ignoreeri', + btnIgnoreAll: 'Ignoreeri kõiki', + btnReplace: 'Asenda', + btnReplaceAll: 'Asenda kõik', + btnUndo: 'Võta tagasi', + changeTo: 'Muuda', + errorLoading: 'Viga rakenduse teenushosti laadimisel: %s.', + ieSpellDownload: 'Õigekirja kontrollija ei ole paigaldatud. Soovid sa selle alla laadida?', + manyChanges: 'Õigekirja kontroll sooritatud: %1 sõna muudetud', + noChanges: 'Õigekirja kontroll sooritatud: ühtegi sõna ei muudetud', + noMispell: 'Õigekirja kontroll sooritatud: õigekirjuvigu ei leitud', + noSuggestions: '- Soovitused puuduvad -', + notAvailable: 'Kahjuks ei ole teenus praegu saadaval.', + notInDic: 'Puudub sõnastikust', + oneChange: 'Õigekirja kontroll sooritatud: üks sõna muudeti', + progress: 'Toimub õigekirja kontroll...', + title: 'Õigekirjakontroll', + toolbar: 'Õigekirjakontroll' +}); diff --git a/sources/plugins/wsc/lang/eu.js b/sources/plugins/wsc/lang/eu.js new file mode 100644 index 00000000..b079af03 --- /dev/null +++ b/sources/plugins/wsc/lang/eu.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'eu', { + btnIgnore: 'Ezikusi', + btnIgnoreAll: 'Denak Ezikusi', + btnReplace: 'Ordezkatu', + btnReplaceAll: 'Denak Ordezkatu', + btnUndo: 'Desegin', + changeTo: 'Honekin ordezkatu', + errorLoading: 'Errorea gertatu da aplikazioa zerbitzaritik kargatzean: %s.', + ieSpellDownload: 'Zuzentzaile ortografikoa ez dago instalatuta. Deskargatu nahi duzu?', + manyChanges: 'Zuzenketa ortografikoa bukatuta: %1 hitz aldatu dira', + noChanges: 'Zuzenketa ortografikoa bukatuta: Ez da ezer aldatu', + noMispell: 'Zuzenketa ortografikoa bukatuta: Akatsik ez', + noSuggestions: '- Iradokizunik ez -', + notAvailable: 'Barkatu baina momentu honetan zerbitzua ez dago erabilgarri.', + notInDic: 'Ez dago hiztegian', + oneChange: 'Zuzenketa ortografikoa bukatuta: Hitz bat aldatu da', + progress: 'Zuzenketa ortografikoa martxan...', + title: 'Ortografia zuzenketa', + toolbar: 'Ortografia' +}); diff --git a/sources/plugins/wsc/lang/fa.js b/sources/plugins/wsc/lang/fa.js new file mode 100644 index 00000000..de7041bd --- /dev/null +++ b/sources/plugins/wsc/lang/fa.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'fa', { + btnIgnore: 'چشمپوشی', + btnIgnoreAll: 'چشمپوشی همه', + btnReplace: 'جایگزینی', + btnReplaceAll: 'جایگزینی همه', + btnUndo: 'واچینش', + changeTo: 'تغییر به', + errorLoading: 'خطا در بارگیری برنامه خدمات میزبان: %s.', + ieSpellDownload: 'بررسی کنندهٴ املا نصب نشده است. آیا میخواهید آن را هماکنون دریافت کنید؟', + manyChanges: 'بررسی املا انجام شد. %1 واژه تغییر یافت', + noChanges: 'بررسی املا انجام شد. هیچ واژهای تغییر نیافت', + noMispell: 'بررسی املا انجام شد. هیچ غلط املائی یافت نشد', + noSuggestions: '- پیشنهادی نیست -', + notAvailable: 'با عرض پوزش خدمات الان در دسترس نیستند.', + notInDic: 'در واژه~نامه یافت نشد', + oneChange: 'بررسی املا انجام شد. یک واژه تغییر یافت', + progress: 'بررسی املا در حال انجام...', + title: 'بررسی املا', + toolbar: 'بررسی املا' +}); diff --git a/sources/plugins/wsc/lang/fi.js b/sources/plugins/wsc/lang/fi.js new file mode 100644 index 00000000..786404b9 --- /dev/null +++ b/sources/plugins/wsc/lang/fi.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'fi', { + btnIgnore: 'Jätä huomioimatta', + btnIgnoreAll: 'Jätä kaikki huomioimatta', + btnReplace: 'Korvaa', + btnReplaceAll: 'Korvaa kaikki', + btnUndo: 'Kumoa', + changeTo: 'Vaihda', + errorLoading: 'Virhe ladattaessa oikolukupalvelua isännältä: %s.', + ieSpellDownload: 'Oikeinkirjoituksen tarkistusta ei ole asennettu. Haluatko ladata sen nyt?', + manyChanges: 'Tarkistus valmis: %1 sanaa muutettiin', + noChanges: 'Tarkistus valmis: Yhtään sanaa ei muutettu', + noMispell: 'Tarkistus valmis: Ei virheitä', + noSuggestions: 'Ei ehdotuksia', + notAvailable: 'Valitettavasti oikoluku ei ole käytössä tällä hetkellä.', + notInDic: 'Ei sanakirjassa', + oneChange: 'Tarkistus valmis: Yksi sana muutettiin', + progress: 'Tarkistus käynnissä...', + title: 'Oikoluku', + toolbar: 'Tarkista oikeinkirjoitus' +}); diff --git a/sources/plugins/wsc/lang/fo.js b/sources/plugins/wsc/lang/fo.js new file mode 100644 index 00000000..0cf829a8 --- /dev/null +++ b/sources/plugins/wsc/lang/fo.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'fo', { + btnIgnore: 'Forfjóna', + btnIgnoreAll: 'Forfjóna alt', + btnReplace: 'Yvirskriva', + btnReplaceAll: 'Yvirskriva alt', + btnUndo: 'Angra', + changeTo: 'Broyt til', + errorLoading: 'Feilur við innlesing av application service host: %s.', + ieSpellDownload: 'Rættstavarin er ikki tøkur í tekstviðgeranum. Vilt tú heinta hann nú?', + manyChanges: 'Rættstavarin liðugur: %1 orð broytt', + noChanges: 'Rættstavarin liðugur: Einki orð varð broytt', + noMispell: 'Rættstavarin liðugur: Eingin feilur funnin', + noSuggestions: '- Einki uppskot -', + notAvailable: 'Tíverri, ikki tøkt í løtuni.', + notInDic: 'Finst ikki í orðabókini', + oneChange: 'Rættstavarin liðugur: Eitt orð er broytt', + progress: 'Rættstavarin arbeiðir...', + title: 'Kanna stavseting', + toolbar: 'Kanna stavseting' +}); diff --git a/sources/plugins/wsc/lang/fr-ca.js b/sources/plugins/wsc/lang/fr-ca.js new file mode 100644 index 00000000..37f84c8a --- /dev/null +++ b/sources/plugins/wsc/lang/fr-ca.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'fr-ca', { + btnIgnore: 'Ignorer', + btnIgnoreAll: 'Ignorer tout', + btnReplace: 'Remplacer', + btnReplaceAll: 'Remplacer tout', + btnUndo: 'Annuler', + changeTo: 'Changer en', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Le Correcteur d\'orthographe n\'est pas installé. Souhaitez-vous le télécharger maintenant?', + manyChanges: 'Vérification d\'orthographe terminée: %1 mots modifiés', + noChanges: 'Vérification d\'orthographe terminée: Pas de modifications', + noMispell: 'Vérification d\'orthographe terminée: pas d\'erreur trouvée', + noSuggestions: '- Pas de suggestion -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Pas dans le dictionnaire', + oneChange: 'Vérification d\'orthographe terminée: Un mot modifié', + progress: 'Vérification d\'orthographe en cours...', + title: 'Spell Checker', + toolbar: 'Orthographe' +}); diff --git a/sources/plugins/wsc/lang/fr.js b/sources/plugins/wsc/lang/fr.js new file mode 100644 index 00000000..f442bd9d --- /dev/null +++ b/sources/plugins/wsc/lang/fr.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'fr', { + btnIgnore: 'Ignorer', + btnIgnoreAll: 'Ignorer tout', + btnReplace: 'Remplacer', + btnReplaceAll: 'Remplacer tout', + btnUndo: 'Annuler', + changeTo: 'Modifier pour', + errorLoading: 'Erreur du chargement du service depuis l\'hôte : %s.', + ieSpellDownload: 'La vérification d\'orthographe n\'est pas installée. Voulez-vous la télécharger maintenant?', + manyChanges: 'Vérification de l\'orthographe terminée : %1 mots corrigés.', + noChanges: 'Vérification de l\'orthographe terminée : Aucun mot corrigé.', + noMispell: 'Vérification de l\'orthographe terminée : aucune erreur trouvée.', + noSuggestions: '- Aucune suggestion -', + notAvailable: 'Désolé, le service est indisponible actuellement.', + notInDic: 'N\'existe pas dans le dictionnaire.', + oneChange: 'Vérification de l\'orthographe terminée : Un seul mot corrigé.', + progress: 'Vérification de l\'orthographe en cours...', + title: 'Vérifier l\'orthographe', + toolbar: 'Vérifier l\'orthographe' +}); diff --git a/sources/plugins/wsc/lang/gl.js b/sources/plugins/wsc/lang/gl.js new file mode 100644 index 00000000..5da1ff7c --- /dev/null +++ b/sources/plugins/wsc/lang/gl.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'gl', { + btnIgnore: 'Ignorar', + btnIgnoreAll: 'Ignorar Todas', + btnReplace: 'Substituir', + btnReplaceAll: 'Substituir Todas', + btnUndo: 'Desfacer', + changeTo: 'Cambiar a', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'O corrector ortográfico non está instalado. ¿Quere descargalo agora?', + manyChanges: 'Corrección ortográfica rematada: %1 verbas substituidas', + noChanges: 'Corrección ortográfica rematada: Non se substituiu nengunha verba', + noMispell: 'Corrección ortográfica rematada: Non se atoparon erros', + noSuggestions: '- Sen candidatos -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Non está no diccionario', + oneChange: 'Corrección ortográfica rematada: Unha verba substituida', + progress: 'Corrección ortográfica en progreso...', + title: 'Spell Checker', + toolbar: 'Corrección Ortográfica' +}); diff --git a/sources/plugins/wsc/lang/gu.js b/sources/plugins/wsc/lang/gu.js new file mode 100644 index 00000000..385d9f5b --- /dev/null +++ b/sources/plugins/wsc/lang/gu.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'gu', { + btnIgnore: 'ઇગ્નોર/અવગણના કરવી', + btnIgnoreAll: 'બધાની ઇગ્નોર/અવગણના કરવી', + btnReplace: 'બદલવું', + btnReplaceAll: 'બધા બદલી કરો', + btnUndo: 'અન્ડૂ', + changeTo: 'આનાથી બદલવું', + errorLoading: 'સર્વિસ એપ્લીકેશન લોડ નથી થ: %s.', + ieSpellDownload: 'સ્પેલ-ચેકર ઇન્સ્ટોલ નથી. શું તમે ડાઉનલોડ કરવા માંગો છો?', + manyChanges: 'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: %1 શબ્દ બદલયા છે', + noChanges: 'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એકપણ શબ્દ બદલયો નથી', + noMispell: 'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: ખોટી જોડણી મળી નથી', + noSuggestions: '- કઇ સજેશન નથી -', + notAvailable: 'માફ કરશો, આ સુવિધા ઉપલબ્ધ નથી', + notInDic: 'શબ્દકોશમાં નથી', + oneChange: 'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એક શબ્દ બદલયો છે', + progress: 'શબ્દની જોડણી/સ્પેલ ચેક ચાલુ છે...', + title: 'સ્પેલ ', + toolbar: 'જોડણી (સ્પેલિંગ) તપાસવી' +}); diff --git a/sources/plugins/wsc/lang/he.js b/sources/plugins/wsc/lang/he.js new file mode 100644 index 00000000..4b78bde6 --- /dev/null +++ b/sources/plugins/wsc/lang/he.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'he', { + btnIgnore: 'התעלמות', + btnIgnoreAll: 'התעלמות מהכל', + btnReplace: 'החלפה', + btnReplaceAll: 'החלפת הכל', + btnUndo: 'החזרה', + changeTo: 'שינוי ל', + errorLoading: 'שגיאה בהעלאת השירות: %s.', + ieSpellDownload: 'בודק האיות לא מותקן, האם להורידו?', + manyChanges: 'בדיקות איות הסתיימה: %1 מילים שונו', + noChanges: 'בדיקות איות הסתיימה: לא שונתה אף מילה', + noMispell: 'בדיקות איות הסתיימה: לא נמצאו שגיאות כתיב', + noSuggestions: '- אין הצעות -', + notAvailable: 'לא נמצא שירות זמין.', + notInDic: 'לא נמצא במילון', + oneChange: 'בדיקות איות הסתיימה: שונתה מילה אחת', + progress: 'בודק האיות בתהליך בדיקה....', + title: 'בדיקת איות', + toolbar: 'בדיקת איות' +}); diff --git a/sources/plugins/wsc/lang/hi.js b/sources/plugins/wsc/lang/hi.js new file mode 100644 index 00000000..bb1a4dbb --- /dev/null +++ b/sources/plugins/wsc/lang/hi.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'hi', { + btnIgnore: 'इग्नोर', + btnIgnoreAll: 'सभी इग्नोर करें', + btnReplace: 'रिप्लेस', + btnReplaceAll: 'सभी रिप्लेस करें', + btnUndo: 'अन्डू', + changeTo: 'इसमें बदलें', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'स्पॅल-चॅकर इन्स्टाल नहीं किया गया है। क्या आप इसे डाउनलोड करना चाहेंगे?', + manyChanges: 'वर्तनी की जाँच : %1 शब्द बदले गये', + noChanges: 'वर्तनी की जाँच :कोई शब्द नहीं बदला गया', + noMispell: 'वर्तनी की जाँच : कोई गलत वर्तनी (स्पॅलिंग) नहीं पाई गई', + noSuggestions: '- कोई सुझाव नहीं -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'शब्दकोश में नहीं', + oneChange: 'वर्तनी की जाँच : एक शब्द बदला गया', + progress: 'वर्तनी की जाँच (स्पॅल-चॅक) जारी है...', + title: 'Spell Checker', + toolbar: 'वर्तनी (स्पेलिंग) जाँच' +}); diff --git a/sources/plugins/wsc/lang/hr.js b/sources/plugins/wsc/lang/hr.js new file mode 100644 index 00000000..1094e079 --- /dev/null +++ b/sources/plugins/wsc/lang/hr.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'hr', { + btnIgnore: 'Zanemari', + btnIgnoreAll: 'Zanemari sve', + btnReplace: 'Zamijeni', + btnReplaceAll: 'Zamijeni sve', + btnUndo: 'Vrati', + changeTo: 'Promijeni u', + errorLoading: 'Greška učitavanja aplikacije: %s.', + ieSpellDownload: 'Provjera pravopisa nije instalirana. Želite li skinuti provjeru pravopisa?', + manyChanges: 'Provjera završena: Promijenjeno %1 riječi', + noChanges: 'Provjera završena: Nije napravljena promjena', + noMispell: 'Provjera završena: Nema grešaka', + noSuggestions: '-Nema preporuke-', + notAvailable: 'Žao nam je, ali usluga trenutno nije dostupna.', + notInDic: 'Nije u rječniku', + oneChange: 'Provjera završena: Jedna riječ promjenjena', + progress: 'Provjera u tijeku...', + title: 'Provjera pravopisa', + toolbar: 'Provjeri pravopis' +}); diff --git a/sources/plugins/wsc/lang/hu.js b/sources/plugins/wsc/lang/hu.js new file mode 100644 index 00000000..9e442e75 --- /dev/null +++ b/sources/plugins/wsc/lang/hu.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'hu', { + btnIgnore: 'Kihagyja', + btnIgnoreAll: 'Mindet kihagyja', + btnReplace: 'Csere', + btnReplaceAll: 'Összes cseréje', + btnUndo: 'Visszavonás', + changeTo: 'Módosítás', + errorLoading: 'Hiba a szolgáltatás host betöltése közben: %s.', + ieSpellDownload: 'A helyesírás-ellenőrző nincs telepítve. Szeretné letölteni most?', + manyChanges: 'Helyesírás-ellenőrzés kész: %1 szó cserélve', + noChanges: 'Helyesírás-ellenőrzés kész: Nincs változtatott szó', + noMispell: 'Helyesírás-ellenőrzés kész: Nem találtam hibát', + noSuggestions: 'Nincs javaslat', + notAvailable: 'Sajnálom, de a szolgáltatás jelenleg nem elérhető.', + notInDic: 'Nincs a szótárban', + oneChange: 'Helyesírás-ellenőrzés kész: Egy szó cserélve', + progress: 'Helyesírás-ellenőrzés folyamatban...', + title: 'Helyesírás ellenörző', + toolbar: 'Helyesírás-ellenőrzés' +}); diff --git a/sources/plugins/wsc/lang/is.js b/sources/plugins/wsc/lang/is.js new file mode 100644 index 00000000..96931692 --- /dev/null +++ b/sources/plugins/wsc/lang/is.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'is', { + btnIgnore: 'Hunsa', + btnIgnoreAll: 'Hunsa allt', + btnReplace: 'Skipta', + btnReplaceAll: 'Skipta öllu', + btnUndo: 'Til baka', + changeTo: 'Tillaga', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Villuleit ekki sett upp.
Viltu setja hana upp?', + manyChanges: 'Villuleit lokið: %1 orðum breytt', + noChanges: 'Villuleit lokið: Engu orði breytt', + noMispell: 'Villuleit lokið: Engin villa fannst', + noSuggestions: '- engar tillögur -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Ekki í orðabókinni', + oneChange: 'Villuleit lokið: Einu orði breytt', + progress: 'Villuleit í gangi...', + title: 'Spell Checker', + toolbar: 'Villuleit' +}); diff --git a/sources/plugins/wsc/lang/it.js b/sources/plugins/wsc/lang/it.js new file mode 100644 index 00000000..6e28785e --- /dev/null +++ b/sources/plugins/wsc/lang/it.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'it', { + btnIgnore: 'Ignora', + btnIgnoreAll: 'Ignora tutto', + btnReplace: 'Cambia', + btnReplaceAll: 'Cambia tutto', + btnUndo: 'Annulla', + changeTo: 'Cambia in', + errorLoading: 'Errore nel caricamento dell\'host col servizio applicativo: %s.', + ieSpellDownload: 'Contollo ortografico non installato. Lo vuoi scaricare ora?', + manyChanges: 'Controllo ortografico completato: %1 parole cambiate', + noChanges: 'Controllo ortografico completato: nessuna parola cambiata', + noMispell: 'Controllo ortografico completato: nessun errore trovato', + noSuggestions: '- Nessun suggerimento -', + notAvailable: 'Il servizio non è momentaneamente disponibile.', + notInDic: 'Non nel dizionario', + oneChange: 'Controllo ortografico completato: 1 parola cambiata', + progress: 'Controllo ortografico in corso', + title: 'Controllo ortografico', + toolbar: 'Correttore ortografico' +}); diff --git a/sources/plugins/wsc/lang/ja.js b/sources/plugins/wsc/lang/ja.js new file mode 100644 index 00000000..fe90d5e9 --- /dev/null +++ b/sources/plugins/wsc/lang/ja.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'ja', { + btnIgnore: '無視', + btnIgnoreAll: 'すべて無視', + btnReplace: '置換', + btnReplaceAll: 'すべて置換', + btnUndo: 'やり直し', + changeTo: '変更', + errorLoading: 'アプリケーションサービスホスト読込みエラー: %s.', + ieSpellDownload: 'スペルチェッカーがインストールされていません。今すぐダウンロードしますか?', + manyChanges: 'スペルチェック完了: %1 語句変更されました', + noChanges: 'スペルチェック完了: 語句は変更されませんでした', + noMispell: 'スペルチェック完了: スペルの誤りはありませんでした', + noSuggestions: '- 該当なし -', + notAvailable: '申し訳ありません、現在サービスを利用することができません', + notInDic: '辞書にありません', + oneChange: 'スペルチェック完了: 1語句変更されました', + progress: 'スペルチェック処理中...', + title: 'スペルチェック', + toolbar: 'スペルチェック' +}); diff --git a/sources/plugins/wsc/lang/ka.js b/sources/plugins/wsc/lang/ka.js new file mode 100644 index 00000000..70cc4bed --- /dev/null +++ b/sources/plugins/wsc/lang/ka.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'ka', { + btnIgnore: 'უგულებელყოფა', + btnIgnoreAll: 'ყველას უგულებელყოფა', + btnReplace: 'შეცვლა', + btnReplaceAll: 'ყველას შეცვლა', + btnUndo: 'გაუქმება', + changeTo: 'შეცვლელი', + errorLoading: 'სერვისის გამოძახების შეცდომა: %s.', + ieSpellDownload: 'მართლწერის შემოწმება არაა დაინსტალირებული. ჩამოვქაჩოთ ინტერნეტიდან?', + manyChanges: 'მართლწერის შემოწმება: %1 სიტყვა შეიცვალა', + noChanges: 'მართლწერის შემოწმება: არაფერი შეცვლილა', + noMispell: 'მართლწერის შემოწმება: შეცდომა არ მოიძებნა', + noSuggestions: '- არაა შემოთავაზება -', + notAvailable: 'უკაცრავად, ეს სერვისი ამჟამად მიუწვდომელია.', + notInDic: 'არაა ლექსიკონში', + oneChange: 'მართლწერის შემოწმება: ერთი სიტყვა შეიცვალა', + progress: 'მიმდინარეობს მართლწერის შემოწმება...', + title: 'მართლწერა', + toolbar: 'მართლწერა' +}); diff --git a/sources/plugins/wsc/lang/km.js b/sources/plugins/wsc/lang/km.js new file mode 100644 index 00000000..26693a6d --- /dev/null +++ b/sources/plugins/wsc/lang/km.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'km', { + btnIgnore: 'មិនផ្លាស់ប្តូរ', + btnIgnoreAll: 'មិនផ្លាស់ប្តូរ ទាំងអស់', + btnReplace: 'ជំនួស', + btnReplaceAll: 'ជំនួសទាំងអស់', + btnUndo: 'សារឡើងវិញ', + changeTo: 'ផ្លាស់ប្តូរទៅ', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'ពុំមានកម្មវិធីពិនិត្យអក្ខរាវិរុទ្ធ ។ តើចង់ទាញយកពីណា?', + manyChanges: 'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: %1 ពាក្យបានផ្លាស់ប្តូរ', + noChanges: 'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពុំមានផ្លាស់ប្តូរ', + noMispell: 'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: គ្មានកំហុស', + noSuggestions: '- គ្មានសំណើរ -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'គ្មានក្នុងវចនានុក្រម', + oneChange: 'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពាក្យមួយត្រូចបានផ្លាស់ប្តូរ', + progress: 'កំពុងពិនិត្យអក្ខរាវិរុទ្ធ...', + title: 'Spell Checker', + toolbar: 'ពិនិត្យអក្ខរាវិរុទ្ធ' +}); diff --git a/sources/plugins/wsc/lang/ko.js b/sources/plugins/wsc/lang/ko.js new file mode 100644 index 00000000..e71340d5 --- /dev/null +++ b/sources/plugins/wsc/lang/ko.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'ko', { + btnIgnore: '건너뜀', + btnIgnoreAll: '모두 건너뜀', + btnReplace: '변경', + btnReplaceAll: '모두 변경', + btnUndo: '취소', + changeTo: '변경할 단어', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: '철자 검사기가 철치되지 않았습니다. 지금 다운로드하시겠습니까?', + manyChanges: '철자검사 완료: %1 단어가 변경되었습니다.', + noChanges: '철자검사 완료: 변경된 단어가 없습니다.', + noMispell: '철자검사 완료: 잘못된 철자가 없습니다.', + noSuggestions: '- 추천단어 없음 -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: '사전에 없는 단어', + oneChange: '철자검사 완료: 단어가 변경되었습니다.', + progress: '철자검사를 진행중입니다...', + title: 'Spell Check', + toolbar: '철자검사' +}); diff --git a/sources/plugins/wsc/lang/ku.js b/sources/plugins/wsc/lang/ku.js new file mode 100644 index 00000000..a69cdc01 --- /dev/null +++ b/sources/plugins/wsc/lang/ku.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'ku', { + btnIgnore: 'پشتگوێ کردن', + btnIgnoreAll: 'پشتگوێکردنی ههمووی', + btnReplace: 'لهبریدانن', + btnReplaceAll: 'لهبریدانانی ههمووی', + btnUndo: 'پووچکردنهوه', + changeTo: 'گۆڕینی بۆ', + errorLoading: 'ههڵه لههێنانی داخوازینامهی خانهخۆێی ڕاژه: %s.', + ieSpellDownload: 'پشکنینی ڕێنووس دانهمزراوه. دهتهوێت ئێستا دایبگریت?', + manyChanges: 'پشکنینی ڕێنووس کۆتای هات: لهسهدا %1 ی وشهکان گۆڕدرا', + noChanges: 'پشکنینی ڕێنووس کۆتای هات: هیچ وشهیهك نۆگۆڕدرا', + noMispell: 'پشکنینی ڕێنووس کۆتای هات: هیچ ههڵهیهکی ڕێنووس نهدۆزراوه', + noSuggestions: '- هیچ پێشنیارێك -', + notAvailable: 'ببووره، لهمکاتهدا ڕاژهکه لهبهردهستا نیه.', + notInDic: 'لهفهرههنگ دانیه', + oneChange: 'پشکنینی ڕێنووس کۆتای هات: یهك وشه گۆڕدرا', + progress: 'پشکنینی ڕێنووس لهبهردهوامبوون دایه...', + title: 'پشکنینی ڕێنووس', + toolbar: 'پشکنینی ڕێنووس' +}); diff --git a/sources/plugins/wsc/lang/lt.js b/sources/plugins/wsc/lang/lt.js new file mode 100644 index 00000000..ce87d11e --- /dev/null +++ b/sources/plugins/wsc/lang/lt.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'lt', { + btnIgnore: 'Ignoruoti', + btnIgnoreAll: 'Ignoruoti visus', + btnReplace: 'Pakeisti', + btnReplaceAll: 'Pakeisti visus', + btnUndo: 'Atšaukti', + changeTo: 'Pakeisti į', + errorLoading: 'Klaida įkraunant servisą: %s.', + ieSpellDownload: 'Rašybos tikrinimas neinstaliuotas. Ar Jūs norite jį dabar atsisiųsti?', + manyChanges: 'Rašybos tikrinimas baigtas: Pakeista %1 žodžių', + noChanges: 'Rašybos tikrinimas baigtas: Nėra pakeistų žodžių', + noMispell: 'Rašybos tikrinimas baigtas: Nerasta rašybos klaidų', + noSuggestions: '- Nėra pasiūlymų -', + notAvailable: 'Atleiskite, šiuo metu servisas neprieinamas.', + notInDic: 'Žodyne nerastas', + oneChange: 'Rašybos tikrinimas baigtas: Vienas žodis pakeistas', + progress: 'Vyksta rašybos tikrinimas...', + title: 'Tikrinti klaidas', + toolbar: 'Rašybos tikrinimas' +}); diff --git a/sources/plugins/wsc/lang/lv.js b/sources/plugins/wsc/lang/lv.js new file mode 100644 index 00000000..4084468b --- /dev/null +++ b/sources/plugins/wsc/lang/lv.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'lv', { + btnIgnore: 'Ignorēt', + btnIgnoreAll: 'Ignorēt visu', + btnReplace: 'Aizvietot', + btnReplaceAll: 'Aizvietot visu', + btnUndo: 'Atcelt', + changeTo: 'Nomainīt uz', + errorLoading: 'Kļūda ielādējot aplikācijas servisa adresi: %s.', + ieSpellDownload: 'Pareizrakstības pārbaudītājs nav pievienots. Vai vēlaties to lejupielādēt tagad?', + manyChanges: 'Pareizrakstības pārbaude pabeigta: %1 vārdi tika mainīti', + noChanges: 'Pareizrakstības pārbaude pabeigta: nekas netika labots', + noMispell: 'Pareizrakstības pārbaude pabeigta: kļūdas netika atrastas', + noSuggestions: '- Nav ieteikumu -', + notAvailable: 'Atvainojiet, bet serviss šobrīd nav pieejams.', + notInDic: 'Netika atrasts vārdnīcā', + oneChange: 'Pareizrakstības pārbaude pabeigta: 1 vārds izmainīts', + progress: 'Notiek pareizrakstības pārbaude...', + title: 'Pārbaudīt gramatiku', + toolbar: 'Pareizrakstības pārbaude' +}); diff --git a/sources/plugins/wsc/lang/mk.js b/sources/plugins/wsc/lang/mk.js new file mode 100644 index 00000000..f2145814 --- /dev/null +++ b/sources/plugins/wsc/lang/mk.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'mk', { + btnIgnore: 'Ignore', + btnIgnoreAll: 'Ignore All', + btnReplace: 'Replace', + btnReplaceAll: 'Replace All', + btnUndo: 'Undo', + changeTo: 'Change to', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', + manyChanges: 'Spell check complete: %1 words changed', + noChanges: 'Spell check complete: No words changed', + noMispell: 'Spell check complete: No misspellings found', + noSuggestions: '- No suggestions -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Not in dictionary', + oneChange: 'Spell check complete: One word changed', + progress: 'Spell check in progress...', + title: 'Spell Checker', + toolbar: 'Check Spelling' +}); diff --git a/sources/plugins/wsc/lang/mn.js b/sources/plugins/wsc/lang/mn.js new file mode 100644 index 00000000..f61f9e15 --- /dev/null +++ b/sources/plugins/wsc/lang/mn.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'mn', { + btnIgnore: 'Зөвшөөрөх', + btnIgnoreAll: 'Бүгдийг зөвшөөрөх', + btnReplace: 'Солих', + btnReplaceAll: 'Бүгдийг Дарж бичих', + btnUndo: 'Буцаах', + changeTo: 'Өөрчлөх', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Дүрэм шалгагч суугаагүй байна. Татаж авахыг хүсч байна уу?', + manyChanges: 'Дүрэм шалгаад дууссан: %1 үг өөрчлөгдсөн', + noChanges: 'Дүрэм шалгаад дууссан: үг өөрчлөгдөөгүй', + noMispell: 'Дүрэм шалгаад дууссан: Алдаа олдсонгүй', + noSuggestions: '- Тайлбаргүй -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Толь бичиггүй', + oneChange: 'Дүрэм шалгаад дууссан: 1 үг өөрчлөгдсөн', + progress: 'Дүрэм шалгаж байгаа үйл явц...', + title: 'Spell Checker', + toolbar: 'Үгийн дүрэх шалгах' +}); diff --git a/sources/plugins/wsc/lang/ms.js b/sources/plugins/wsc/lang/ms.js new file mode 100644 index 00000000..a45a0346 --- /dev/null +++ b/sources/plugins/wsc/lang/ms.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'ms', { + btnIgnore: 'Biar', + btnIgnoreAll: 'Biarkan semua', + btnReplace: 'Ganti', + btnReplaceAll: 'Gantikan Semua', + btnUndo: 'Batalkan', + changeTo: 'Tukarkan kepada', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Pemeriksa ejaan tidak dipasang. Adakah anda mahu muat turun sekarang?', + manyChanges: 'Pemeriksaan ejaan siap: %1 perkataan diubah', + noChanges: 'Pemeriksaan ejaan siap: Tiada perkataan diubah', + noMispell: 'Pemeriksaan ejaan siap: Tiada salah ejaan', + noSuggestions: '- Tiada cadangan -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Tidak terdapat didalam kamus', + oneChange: 'Pemeriksaan ejaan siap: Satu perkataan telah diubah', + progress: 'Pemeriksaan ejaan sedang diproses...', + title: 'Spell Checker', + toolbar: 'Semak Ejaan' +}); diff --git a/sources/plugins/wsc/lang/nb.js b/sources/plugins/wsc/lang/nb.js new file mode 100644 index 00000000..02a070a2 --- /dev/null +++ b/sources/plugins/wsc/lang/nb.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'nb', { + btnIgnore: 'Ignorer', + btnIgnoreAll: 'Ignorer alle', + btnReplace: 'Erstatt', + btnReplaceAll: 'Erstatt alle', + btnUndo: 'Angre', + changeTo: 'Endre til', + errorLoading: 'Feil under lasting av applikasjonstjenestetjener: %s.', + ieSpellDownload: 'Stavekontroll er ikke installert. Vil du laste den ned nå?', + manyChanges: 'Stavekontroll fullført: %1 ord endret', + noChanges: 'Stavekontroll fullført: ingen ord endret', + noMispell: 'Stavekontroll fullført: ingen feilstavinger funnet', + noSuggestions: '- Ingen forslag -', + notAvailable: 'Beklager, tjenesten er utilgjenglig nå.', + notInDic: 'Ikke i ordboken', + oneChange: 'Stavekontroll fullført: Ett ord endret', + progress: 'Stavekontroll pågår...', + title: 'Stavekontroll', + toolbar: 'Stavekontroll' +}); diff --git a/sources/plugins/wsc/lang/nl.js b/sources/plugins/wsc/lang/nl.js new file mode 100644 index 00000000..742027dc --- /dev/null +++ b/sources/plugins/wsc/lang/nl.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'nl', { + btnIgnore: 'Negeren', + btnIgnoreAll: 'Alles negeren', + btnReplace: 'Vervangen', + btnReplaceAll: 'Alles vervangen', + btnUndo: 'Ongedaan maken', + changeTo: 'Wijzig in', + errorLoading: 'Er is een fout opgetreden bij het laden van de dienst: %s.', + ieSpellDownload: 'De spellingscontrole is niet geïnstalleerd. Wilt u deze nu downloaden?', + manyChanges: 'Klaar met spellingscontrole: %1 woorden aangepast', + noChanges: 'Klaar met spellingscontrole: geen woorden aangepast', + noMispell: 'Klaar met spellingscontrole: geen fouten gevonden', + noSuggestions: '- Geen suggesties -', + notAvailable: 'Excuses, deze dienst is momenteel niet beschikbaar.', + notInDic: 'Niet in het woordenboek', + oneChange: 'Klaar met spellingscontrole: één woord aangepast', + progress: 'Bezig met spellingscontrole...', + title: 'Spellingscontrole', + toolbar: 'Spellingscontrole' +}); diff --git a/sources/plugins/wsc/lang/no.js b/sources/plugins/wsc/lang/no.js new file mode 100644 index 00000000..416f67a3 --- /dev/null +++ b/sources/plugins/wsc/lang/no.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'no', { + btnIgnore: 'Ignorer', + btnIgnoreAll: 'Ignorer alle', + btnReplace: 'Erstatt', + btnReplaceAll: 'Erstatt alle', + btnUndo: 'Angre', + changeTo: 'Endre til', + errorLoading: 'Feil under lasting av applikasjonstjenestetjener: %s.', + ieSpellDownload: 'Stavekontroll er ikke installert. Vil du laste den ned nå?', + manyChanges: 'Stavekontroll fullført: %1 ord endret', + noChanges: 'Stavekontroll fullført: ingen ord endret', + noMispell: 'Stavekontroll fullført: ingen feilstavinger funnet', + noSuggestions: '- Ingen forslag -', + notAvailable: 'Beklager, tjenesten er utilgjenglig nå.', + notInDic: 'Ikke i ordboken', + oneChange: 'Stavekontroll fullført: Ett ord endret', + progress: 'Stavekontroll pågår...', + title: 'Stavekontroll', + toolbar: 'Stavekontroll' +}); diff --git a/sources/plugins/wsc/lang/pl.js b/sources/plugins/wsc/lang/pl.js new file mode 100644 index 00000000..0f40934e --- /dev/null +++ b/sources/plugins/wsc/lang/pl.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'pl', { + btnIgnore: 'Ignoruj', + btnIgnoreAll: 'Ignoruj wszystkie', + btnReplace: 'Zmień', + btnReplaceAll: 'Zmień wszystkie', + btnUndo: 'Cofnij', + changeTo: 'Zmień na', + errorLoading: 'Błąd wczytywania hosta aplikacji usługi: %s.', + ieSpellDownload: 'Słownik nie jest zainstalowany. Czy chcesz go pobrać?', + manyChanges: 'Sprawdzanie zakończone: zmieniono %l słów', + noChanges: 'Sprawdzanie zakończone: nie zmieniono żadnego słowa', + noMispell: 'Sprawdzanie zakończone: nie znaleziono błędów', + noSuggestions: '- Brak sugestii -', + notAvailable: 'Przepraszamy, ale usługa jest obecnie niedostępna.', + notInDic: 'Słowa nie ma w słowniku', + oneChange: 'Sprawdzanie zakończone: zmieniono jedno słowo', + progress: 'Trwa sprawdzanie...', + title: 'Sprawdź pisownię', + toolbar: 'Sprawdź pisownię' +}); diff --git a/sources/plugins/wsc/lang/pt-br.js b/sources/plugins/wsc/lang/pt-br.js new file mode 100644 index 00000000..d0469357 --- /dev/null +++ b/sources/plugins/wsc/lang/pt-br.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'pt-br', { + btnIgnore: 'Ignorar uma vez', + btnIgnoreAll: 'Ignorar Todas', + btnReplace: 'Alterar', + btnReplaceAll: 'Alterar Todas', + btnUndo: 'Desfazer', + changeTo: 'Alterar para', + errorLoading: 'Erro carregando servidor de aplicação: %s.', + ieSpellDownload: 'A verificação ortográfica não foi instalada. Você gostaria de realizar o download agora?', + manyChanges: 'Verificação ortográfica encerrada: %1 palavras foram alteradas', + noChanges: 'Verificação ortográfica encerrada: Não houve alterações', + noMispell: 'Verificação encerrada: Não foram encontrados erros de ortografia', + noSuggestions: '-sem sugestões de ortografia-', + notAvailable: 'Desculpe, o serviço não está disponível no momento.', + notInDic: 'Não encontrada', + oneChange: 'Verificação ortográfica encerrada: Uma palavra foi alterada', + progress: 'Verificação ortográfica em andamento...', + title: 'Corretor Ortográfico', + toolbar: 'Verificar Ortografia' +}); diff --git a/sources/plugins/wsc/lang/pt.js b/sources/plugins/wsc/lang/pt.js new file mode 100644 index 00000000..744fd28c --- /dev/null +++ b/sources/plugins/wsc/lang/pt.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'pt', { + btnIgnore: 'Ignorar', + btnIgnoreAll: 'Ignorar Tudo', + btnReplace: 'Substituir', + btnReplaceAll: 'Substituir Tudo', + btnUndo: 'Anular', + changeTo: 'Mudar para', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: ' Verificação ortográfica não instalada. Quer descarregar agora?', + manyChanges: 'Verificação ortográfica completa: %1 palavras alteradas', + noChanges: 'Verificação ortográfica completa: não houve alteração de palavras', + noMispell: 'Verificação ortográfica completa: não foram encontrados erros', + noSuggestions: '- Sem sugestões -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Não está num directório', + oneChange: 'Verificação ortográfica completa: uma palavra alterada', + progress: 'Verificação ortográfica em progresso…', + title: 'Spell Checker', + toolbar: 'Verificação Ortográfica' +}); diff --git a/sources/plugins/wsc/lang/ro.js b/sources/plugins/wsc/lang/ro.js new file mode 100644 index 00000000..c4b40e04 --- /dev/null +++ b/sources/plugins/wsc/lang/ro.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'ro', { + btnIgnore: 'Ignoră', + btnIgnoreAll: 'Ignoră toate', + btnReplace: 'Înlocuieşte', + btnReplaceAll: 'Înlocuieşte tot', + btnUndo: 'Starea anterioară (undo)', + changeTo: 'Schimbă în', + errorLoading: 'Eroare în lansarea aplicației service host %s.', + ieSpellDownload: 'Unealta pentru verificat textul (Spell checker) neinstalată. Doriţi să o descărcaţi acum?', + manyChanges: 'Verificarea textului terminată: 1% cuvinte modificate', + noChanges: 'Verificarea textului terminată: Niciun cuvânt modificat', + noMispell: 'Verificarea textului terminată: Nicio greşeală găsită', + noSuggestions: '- Fără sugestii -', + notAvailable: 'Scuzați, dar serviciul nu este disponibil momentan.', + notInDic: 'Nu e în dicţionar', + oneChange: 'Verificarea textului terminată: Un cuvânt modificat', + progress: 'Verificarea textului în desfăşurare...', + title: 'Spell Checker', + toolbar: 'Verifică scrierea textului' +}); diff --git a/sources/plugins/wsc/lang/ru.js b/sources/plugins/wsc/lang/ru.js new file mode 100644 index 00000000..d73f3018 --- /dev/null +++ b/sources/plugins/wsc/lang/ru.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'ru', { + btnIgnore: 'Пропустить', + btnIgnoreAll: 'Пропустить всё', + btnReplace: 'Заменить', + btnReplaceAll: 'Заменить всё', + btnUndo: 'Отменить', + changeTo: 'Изменить на', + errorLoading: 'Произошла ошибка при подключении к серверу проверки орфографии: %s.', + ieSpellDownload: 'Модуль проверки орфографии не установлен. Хотите скачать его?', + manyChanges: 'Проверка орфографии завершена. Изменено слов: %1', + noChanges: 'Проверка орфографии завершена. Не изменено ни одного слова', + noMispell: 'Проверка орфографии завершена. Ошибок не найдено', + noSuggestions: '- Варианты отсутствуют -', + notAvailable: 'Извините, но в данный момент сервис недоступен.', + notInDic: 'Отсутствует в словаре', + oneChange: 'Проверка орфографии завершена. Изменено одно слово', + progress: 'Орфография проверяется...', + title: 'Проверка орфографии', + toolbar: 'Проверить орфографию' +}); diff --git a/sources/plugins/wsc/lang/sk.js b/sources/plugins/wsc/lang/sk.js new file mode 100644 index 00000000..9c2ce037 --- /dev/null +++ b/sources/plugins/wsc/lang/sk.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'sk', { + btnIgnore: 'Ignorovať', + btnIgnoreAll: 'Ignorovať všetko', + btnReplace: 'Prepísat', + btnReplaceAll: 'Prepísat všetko', + btnUndo: 'Späť', + changeTo: 'Zmeniť na', + errorLoading: 'Chyba pri načítaní slovníka z adresy: %s.', + ieSpellDownload: 'Kontrola pravopisu nie je naištalovaná. Chcete ju teraz stiahnuť?', + manyChanges: 'Kontrola pravopisu dokončená: Bolo zmenených %1 slov', + noChanges: 'Kontrola pravopisu dokončená: Neboli zmenené žiadne slová', + noMispell: 'Kontrola pravopisu dokončená: Neboli nájdené žiadne chyby pravopisu', + noSuggestions: '- Žiadny návrh -', + notAvailable: 'Prepáčte, ale služba je momentálne nedostupná.', + notInDic: 'Nie je v slovníku', + oneChange: 'Kontrola pravopisu dokončená: Bolo zmenené jedno slovo', + progress: 'Prebieha kontrola pravopisu...', + title: 'Skontrolovať pravopis', + toolbar: 'Kontrola pravopisu' +}); diff --git a/sources/plugins/wsc/lang/sl.js b/sources/plugins/wsc/lang/sl.js new file mode 100644 index 00000000..ba871234 --- /dev/null +++ b/sources/plugins/wsc/lang/sl.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'sl', { + btnIgnore: 'Prezri', + btnIgnoreAll: 'Prezri vse', + btnReplace: 'Zamenjaj', + btnReplaceAll: 'Zamenjaj vse', + btnUndo: 'Razveljavi', + changeTo: 'Spremeni v', + errorLoading: 'Napaka pri nalaganju storitve programa na naslovu %s.', + ieSpellDownload: 'Črkovalnik ni nameščen. Ali ga želite prenesti sedaj?', + manyChanges: 'Črkovanje je končano: Spremenjenih je bilo %1 besed', + noChanges: 'Črkovanje je končano: Nobena beseda ni bila spremenjena', + noMispell: 'Črkovanje je končano: Brez napak', + noSuggestions: '- Ni predlogov -', + notAvailable: 'Oprostite, storitev trenutno ni dosegljiva.', + notInDic: 'Ni v slovarju', + oneChange: 'Črkovanje je končano: Spremenjena je bila ena beseda', + progress: 'Preverjanje črkovanja se izvaja...', + title: 'Črkovalnik', + toolbar: 'Preveri črkovanje' +}); diff --git a/sources/plugins/wsc/lang/sr-latn.js b/sources/plugins/wsc/lang/sr-latn.js new file mode 100644 index 00000000..f9585cc7 --- /dev/null +++ b/sources/plugins/wsc/lang/sr-latn.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'sr-latn', { + btnIgnore: 'Ignoriši', + btnIgnoreAll: 'Ignoriši sve', + btnReplace: 'Zameni', + btnReplaceAll: 'Zameni sve', + btnUndo: 'Vrati akciju', + changeTo: 'Izmeni', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Provera spelovanja nije instalirana. Da li želite da je skinete sa Interneta?', + manyChanges: 'Provera spelovanja završena: %1 reč(i) je izmenjeno', + noChanges: 'Provera spelovanja završena: Nije izmenjena nijedna rec', + noMispell: 'Provera spelovanja završena: greške nisu pronadene', + noSuggestions: '- Bez sugestija -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Nije u rečniku', + oneChange: 'Provera spelovanja završena: Izmenjena je jedna reč', + progress: 'Provera spelovanja u toku...', + title: 'Spell Checker', + toolbar: 'Proveri spelovanje' +}); diff --git a/sources/plugins/wsc/lang/sr.js b/sources/plugins/wsc/lang/sr.js new file mode 100644 index 00000000..9c4cb7f2 --- /dev/null +++ b/sources/plugins/wsc/lang/sr.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'sr', { + btnIgnore: 'Игнориши', + btnIgnoreAll: 'Игнориши све', + btnReplace: 'Замени', + btnReplaceAll: 'Замени све', + btnUndo: 'Врати акцију', + changeTo: 'Измени', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'Провера спеловања није инсталирана. Да ли желите да је скинете са Интернета?', + manyChanges: 'Провера спеловања завршена: %1 реч(и) је измењено', + noChanges: 'Провера спеловања завршена: Није измењена ниједна реч', + noMispell: 'Провера спеловања завршена: грешке нису пронађене', + noSuggestions: '- Без сугестија -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'Није у речнику', + oneChange: 'Провера спеловања завршена: Измењена је једна реч', + progress: 'Провера спеловања у току...', + title: 'Spell Checker', + toolbar: 'Провери спеловање' +}); diff --git a/sources/plugins/wsc/lang/sv.js b/sources/plugins/wsc/lang/sv.js new file mode 100644 index 00000000..32e11e80 --- /dev/null +++ b/sources/plugins/wsc/lang/sv.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'sv', { + btnIgnore: 'Ignorera', + btnIgnoreAll: 'Ignorera alla', + btnReplace: 'Ersätt', + btnReplaceAll: 'Ersätt alla', + btnUndo: 'Ångra', + changeTo: 'Ändra till', + errorLoading: 'Tjänsten är ej tillgänglig: %s.', + ieSpellDownload: 'Stavningskontrollen är ej installerad. Vill du göra det nu?', + manyChanges: 'Stavningskontroll slutförd: %1 ord rättades.', + noChanges: 'Stavningskontroll slutförd: Inga ord rättades.', + noMispell: 'Stavningskontroll slutförd: Inga stavfel påträffades.', + noSuggestions: '- Förslag saknas -', + notAvailable: 'Tyvärr är tjänsten ej tillgänglig nu', + notInDic: 'Saknas i ordlistan', + oneChange: 'Stavningskontroll slutförd: Ett ord rättades.', + progress: 'Stavningskontroll pågår...', + title: 'Kontrollera stavning', + toolbar: 'Stavningskontroll' +}); diff --git a/sources/plugins/wsc/lang/th.js b/sources/plugins/wsc/lang/th.js new file mode 100644 index 00000000..6e09e6cc --- /dev/null +++ b/sources/plugins/wsc/lang/th.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'th', { + btnIgnore: 'ยกเว้น', + btnIgnoreAll: 'ยกเว้นทั้งหมด', + btnReplace: 'แทนที่', + btnReplaceAll: 'แทนที่ทั้งหมด', + btnUndo: 'ยกเลิก', + changeTo: 'แก้ไขเป็น', + errorLoading: 'Error loading application service host: %s.', + ieSpellDownload: 'ไม่ได้ติดตั้งระบบตรวจสอบคำสะกด. ต้องการติดตั้งไหมครับ?', + manyChanges: 'ตรวจสอบคำสะกดเสร็จสิ้น:: แก้ไข %1 คำ', + noChanges: 'ตรวจสอบคำสะกดเสร็จสิ้น: ไม่มีการแก้คำใดๆ', + noMispell: 'ตรวจสอบคำสะกดเสร็จสิ้น: ไม่พบคำสะกดผิด', + noSuggestions: '- ไม่มีคำแนะนำใดๆ -', + notAvailable: 'Sorry, but service is unavailable now.', + notInDic: 'ไม่พบในดิกชันนารี', + oneChange: 'ตรวจสอบคำสะกดเสร็จสิ้น: แก้ไข1คำ', + progress: 'กำลังตรวจสอบคำสะกด...', + title: 'Spell Checker', + toolbar: 'ตรวจการสะกดคำ' +}); diff --git a/sources/plugins/wsc/lang/tr.js b/sources/plugins/wsc/lang/tr.js new file mode 100644 index 00000000..f400035c --- /dev/null +++ b/sources/plugins/wsc/lang/tr.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'tr', { + btnIgnore: 'Yoksay', + btnIgnoreAll: 'Tümünü Yoksay', + btnReplace: 'Değiştir', + btnReplaceAll: 'Tümünü Değiştir', + btnUndo: 'Geri Al', + changeTo: 'Şuna değiştir:', + errorLoading: 'Uygulamada yüklerken hata oluştu: %s.', + ieSpellDownload: 'Yazım denetimi yüklenmemiş. Şimdi yüklemek ister misiniz?', + manyChanges: 'Yazım denetimi tamamlandı: %1 kelime değiştirildi', + noChanges: 'Yazım denetimi tamamlandı: Hiçbir kelime değiştirilmedi', + noMispell: 'Yazım denetimi tamamlandı: Yanlış yazıma rastlanmadı', + noSuggestions: '- Öneri Yok -', + notAvailable: 'Üzügünüz, bu servis şuanda hizmet dışıdır.', + notInDic: 'Sözlükte Yok', + oneChange: 'Yazım denetimi tamamlandı: Bir kelime değiştirildi', + progress: 'Yazım denetimi işlemde...', + title: 'Yazımı Denetle', + toolbar: 'Yazım Denetimi' +}); diff --git a/sources/plugins/wsc/lang/ug.js b/sources/plugins/wsc/lang/ug.js new file mode 100644 index 00000000..273621e1 --- /dev/null +++ b/sources/plugins/wsc/lang/ug.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'ug', { + btnIgnore: 'پەرۋا قىلما', + btnIgnoreAll: 'ھەممىگە پەرۋا قىلما', + btnReplace: 'ئالماشتۇر', + btnReplaceAll: 'ھەممىنى ئالماشتۇر', + btnUndo: 'يېنىۋال', + changeTo: 'ئۆزگەرت', + errorLoading: 'لازىملىق مۇلازىمېتىرنى يۈكلىگەندە خاتالىق كۆرۈلدى: %s.', + ieSpellDownload: 'ئىملا تەكشۈرۈش قىستۇرمىسى تېخى ئورنىتىلمىغان، ھازىرلا چۈشۈرەمسىز؟', + manyChanges: 'ئىملا تەكشۈرۈش تامام: %1 سۆزنى ئۆزگەرتتى', + noChanges: 'ئىملا تەكشۈرۈش تامام: ھېچقانداق سۆزنى ئۆزگەرتمىدى', + noMispell: 'ئىملا تەكشۈرۈش تامام: ئىملا خاتالىقى بايقالمىدى', + noSuggestions: '-تەكلىپ يوق-', + notAvailable: 'كەچۈرۈڭ، مۇلازىمېتىرنى ۋاقتىنچە ئىشلەتكىلى بولمايدۇ', + notInDic: 'لۇغەتتە يوق', + oneChange: 'ئىملا تەكشۈرۈش تامام: بىر سۆزنى ئۆزگەرتتى', + progress: 'ئىملا تەكشۈرۈۋاتىدۇ…', + title: 'ئىملا تەكشۈر', + toolbar: 'ئىملا تەكشۈر' +}); diff --git a/sources/plugins/wsc/lang/uk.js b/sources/plugins/wsc/lang/uk.js new file mode 100644 index 00000000..a813bff1 --- /dev/null +++ b/sources/plugins/wsc/lang/uk.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'uk', { + btnIgnore: 'Пропустити', + btnIgnoreAll: 'Пропустити все', + btnReplace: 'Замінити', + btnReplaceAll: 'Замінити все', + btnUndo: 'Назад', + changeTo: 'Замінити на', + errorLoading: 'Помилка завантаження : %s.', + ieSpellDownload: 'Модуль перевірки орфографії не встановлено. Бажаєте завантажити його зараз?', + manyChanges: 'Перевірку орфографії завершено: 1% слів(ова) змінено', + noChanges: 'Перевірку орфографії завершено: жодне слово не змінено', + noMispell: 'Перевірку орфографії завершено: помилок не знайдено', + noSuggestions: '- немає варіантів -', + notAvailable: 'Вибачте, але сервіс наразі недоступний.', + notInDic: 'Немає в словнику', + oneChange: 'Перевірку орфографії завершено: змінено одне слово', + progress: 'Виконується перевірка орфографії...', + title: 'Перевірка орфографії', + toolbar: 'Перевірити орфографію' +}); diff --git a/sources/plugins/wsc/lang/vi.js b/sources/plugins/wsc/lang/vi.js new file mode 100644 index 00000000..bba8969c --- /dev/null +++ b/sources/plugins/wsc/lang/vi.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'vi', { + btnIgnore: 'Bỏ qua', + btnIgnoreAll: 'Bỏ qua tất cả', + btnReplace: 'Thay thế', + btnReplaceAll: 'Thay thế tất cả', + btnUndo: 'Phục hồi lại', + changeTo: 'Chuyển thành', + errorLoading: 'Lỗi khi đang nạp dịch vụ ứng dụng: %s.', + ieSpellDownload: 'Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có muốn tải về ngay bây giờ?', + manyChanges: 'Hoàn tất kiểm tra chính tả: %1 từ đã được thay đổi', + noChanges: 'Hoàn tất kiểm tra chính tả: Không có từ nào được thay đổi', + noMispell: 'Hoàn tất kiểm tra chính tả: Không có lỗi chính tả', + noSuggestions: '- Không đưa ra gợi ý về từ -', + notAvailable: 'Xin lỗi, dịch vụ này hiện tại không có.', + notInDic: 'Không có trong từ điển', + oneChange: 'Hoàn tất kiểm tra chính tả: Một từ đã được thay đổi', + progress: 'Đang tiến hành kiểm tra chính tả...', + title: 'Kiểm tra chính tả', + toolbar: 'Kiểm tra chính tả' +}); diff --git a/sources/plugins/wsc/lang/zh-cn.js b/sources/plugins/wsc/lang/zh-cn.js new file mode 100644 index 00000000..a2987b84 --- /dev/null +++ b/sources/plugins/wsc/lang/zh-cn.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'zh-cn', { + btnIgnore: '忽略', + btnIgnoreAll: '全部忽略', + btnReplace: '替换', + btnReplaceAll: '全部替换', + btnUndo: '撤消', + changeTo: '更改为', + errorLoading: '加载应该服务主机时出错: %s.', + ieSpellDownload: '拼写检查插件还没安装, 您是否想现在就下载?', + manyChanges: '拼写检查完成: 更改了 %1 个单词', + noChanges: '拼写检查完成: 没有更改任何单词', + noMispell: '拼写检查完成: 没有发现拼写错误', + noSuggestions: '- 没有建议 -', + notAvailable: '抱歉, 服务目前暂不可用', + notInDic: '没有在字典里', + oneChange: '拼写检查完成: 更改了一个单词', + progress: '正在进行拼写检查...', + title: '拼写检查', + toolbar: '拼写检查' +}); diff --git a/sources/plugins/wsc/lang/zh.js b/sources/plugins/wsc/lang/zh.js new file mode 100644 index 00000000..a3aa83d7 --- /dev/null +++ b/sources/plugins/wsc/lang/zh.js @@ -0,0 +1,24 @@ +/* +Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'wsc', 'zh', { + btnIgnore: '忽略', + btnIgnoreAll: '全部忽略', + btnReplace: '取代', + btnReplaceAll: '全部取代', + btnUndo: '復原', + changeTo: '更改為', + errorLoading: '無法聯系侍服器: %s.', + ieSpellDownload: '尚未安裝拼字檢查元件。您是否想要現在下載?', + manyChanges: '拼字檢查完成:更改了 %1 個單字', + noChanges: '拼字檢查完成:未更改任何單字', + noMispell: '拼字檢查完成:未發現拼字錯誤', + noSuggestions: '- 無建議值 -', + notAvailable: '抱歉,服務目前暫不可用', + notInDic: '不在字典中', + oneChange: '拼字檢查完成:更改了 1 個單字', + progress: '進行拼字檢查中…', + title: '拼字檢查', + toolbar: '拼字檢查' +}); diff --git a/sources/plugins/wsc/plugin.js b/sources/plugins/wsc/plugin.js new file mode 100644 index 00000000..ba443706 --- /dev/null +++ b/sources/plugins/wsc/plugin.js @@ -0,0 +1,142 @@ +// Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. +// For licensing, see LICENSE.md or http://ckeditor.com/license + +CKEDITOR.plugins.add( 'wsc', { + requires: 'dialog', + lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en-au,en-ca,en-gb,en,eo,es,et,eu,fa,fi,fo,fr-ca,fr,gl,gu,he,hi,hr,hu,is,it,ja,ka,km,ko,lt,lv,mk,mn,ms,nb,nl,no,pl,pt-br,pt,ro,ru,sk,sl,sr-latn,sr,sv,th,tr,ug,uk,vi,zh-cn,zh', // %REMOVE_LINE_CORE% + icons: 'spellchecker', // %REMOVE_LINE_CORE% + hidpi: true, // %REMOVE_LINE_CORE% + parseApi: function(editor) { + editor.config.wsc_onFinish = (typeof editor.config.wsc_onFinish === 'function') ? editor.config.wsc_onFinish : function() {}; + editor.config.wsc_onClose = (typeof editor.config.wsc_onClose === 'function') ? editor.config.wsc_onClose : function() {}; + }, + parseConfig: function(editor) { + editor.config.wsc_customerId = editor.config.wsc_customerId || CKEDITOR.config.wsc_customerId || '1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk'; + editor.config.wsc_customDictionaryIds = editor.config.wsc_customDictionaryIds || CKEDITOR.config.wsc_customDictionaryIds || ''; + editor.config.wsc_userDictionaryName = editor.config.wsc_userDictionaryName || CKEDITOR.config.wsc_userDictionaryName || ''; + editor.config.wsc_customLoaderScript = editor.config.wsc_customLoaderScript || CKEDITOR.config.wsc_customLoaderScript; + + CKEDITOR.config.wsc_cmd = editor.config.wsc_cmd || CKEDITOR.config.wsc_cmd || 'spell'; // spell, thes or grammar. default tab + CKEDITOR.config.wsc_version="v4.3.0-master-d769233"; + CKEDITOR.config.wsc_removeGlobalVariable = true; + }, + init: function( editor ) { + var commandName = 'checkspell'; + + var strNormalDialog = 'dialogs/wsc.js', + strIeDialog = 'dialogs/wsc_ie.js', + strDialog, + self = this, + env = CKEDITOR.env; + + self.parseConfig(editor); + self.parseApi(editor); + var command = editor.addCommand( commandName, new CKEDITOR.dialogCommand( commandName ) ); + + // SpellChecker doesn't work in Opera, with custom domain, IE Compatibility Mode and IE (8 & 9) Quirks Mode + command.modes = { wysiwyg: ( !CKEDITOR.env.opera && !CKEDITOR.env.air && document.domain == window.location.hostname && + !( env.ie && ( env.version < 8 || env.quirks ) ) ) }; + + if(typeof editor.plugins.scayt == 'undefined'){ + editor.ui.addButton && editor.ui.addButton( 'SpellChecker', { + label: editor.lang.wsc.toolbar, + click: function(editor) { + var inlineMode = (editor.elementMode == CKEDITOR.ELEMENT_MODE_INLINE), + text = inlineMode ? editor.container.getText() : editor.document.getBody().getText(); + + text = text.replace(/\s/g, ''); + + if(text) { + editor.execCommand('checkspell'); + } else { + alert('Nothing to check!'); + } + }, + toolbar: 'spellchecker,10' + }); + } + + + if ( CKEDITOR.env.ie && CKEDITOR.env.version <= 7 ){ + strDialog = strIeDialog; + } else { + if (!window.postMessage) { + strDialog = strIeDialog; + } else { + strDialog = strNormalDialog; + } + } + CKEDITOR.dialog.add( commandName, this.path + strDialog ); + } + +}); + +/** + * The parameter sets the customer ID for WSC. It is used for hosted users only. It is required for migration from free + * to trial or paid versions. + * + * config.wsc_customerId = 'encrypted-customer-id'; + * + * @cfg {String} [wsc_customerId='1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk'] + * @member CKEDITOR.config + */ + +/** + * It links WSC to custom dictionaries. It should be a string with dictionary IDs + * separated by commas (`','`). Available only for the licensed version. + * + * Further details at [http://wiki.webspellchecker.net/doku.php?id=installationandconfiguration:customdictionaries:licensed](http://wiki.webspellchecker.net/doku.php?id=installationandconfiguration:customdictionaries:licensed) + * + * config.wsc_customDictionaryIds = '1,3001'; + * + * @cfg {String} [wsc_customDictionaryIds=''] + * @member CKEDITOR.config + */ + +/** + * It activates a user dictionary for WSC. The user dictionary name should be used. Available only for the licensed version. + * + * config.wsc_userDictionaryName = 'MyUserDictionaryName'; + * + * @cfg {String} [wsc_userDictionaryName=''] + * @member CKEDITOR.config + */ + +/** + * The parameter sets the URL to WSC file. It is required to the licensed version of WSC application. + * + * Further details available at [http://wiki.webspellchecker.net/doku.php?id=migration:hosredfreetolicensedck](http://wiki.webspellchecker.net/doku.php?id=migration:hosredfreetolicensedck) + * + * config.wsc_customLoaderScript = "http://my-host/spellcheck/lf/22/js/wsc_fck2plugin.js"; + * + * @cfg {String} [wsc_customLoaderScript=''] + * @member CKEDITOR.config + */ + +/** + * The parameter sets the default spellchecking language for WSC. + * Possible values are: + * `'en_US'`, `'en_GB'`, `'pt_BR'`, `'da_DK'`, + * `'nl_NL'`, `'en_CA'`, `'fi_FI'`, `'fr_FR'`, + * `'fr_CA'`, `'de_DE'`, `'el_GR'`, `'it_IT'`, + * `'nb_NO'`, `'pt_PT'`, `'es_ES'`, `'sv_SE'`. + * + * Further details available at [http://wiki.webspellchecker.net/doku.php?id=installationandconfiguration:supportedlanguages](http://wiki.webspellchecker.net/doku.php?id=installationandconfiguration:supportedlanguages) + * + * config.wsc_lang = 'de_DE'; + * + * @cfg {String} [wsc_lang='en_US'] + * @member CKEDITOR.config + */ + +/** + * The parameter sets the active tab, when the WSC dialog is opened. + * Possible values are: + * `'spell'`, `'thes'`, `'grammar'`. + * + * // Sets active tab thesaurus. + * config.wsc_cmd = 'thes'; + * + * @cfg {String} [wsc_cmd='spell'] + * @member CKEDITOR.config + */ diff --git a/sources/plugins/wysiwygarea/plugin.js b/sources/plugins/wysiwygarea/plugin.js new file mode 100644 index 00000000..9b24257b --- /dev/null +++ b/sources/plugins/wysiwygarea/plugin.js @@ -0,0 +1,708 @@ +/** + * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +/** + * @fileOverview The WYSIWYG Area plugin. It registers the "wysiwyg" editing + * mode, which handles the main editing area space. + */ + +( function() { + CKEDITOR.plugins.add( 'wysiwygarea', { + init: function( editor ) { + if ( editor.config.fullPage ) { + editor.addFeature( { + allowedContent: 'html head title; style [media,type]; body (*)[id]; meta link [*]', + requiredContent: 'body' + } ); + } + + editor.addMode( 'wysiwyg', function( callback ) { + var src = 'document.open();' + + // In IE, the document domain must be set any time we call document.open(). + ( CKEDITOR.env.ie ? '(' + CKEDITOR.tools.fixDomain + ')();' : '' ) + + 'document.close();'; + + // With IE, the custom domain has to be taken care at first, + // for other browers, the 'src' attribute should be left empty to + // trigger iframe's 'load' event. + // Microsoft Edge throws "Permission Denied" if treated like an IE (#13441). + if ( CKEDITOR.env.air ) { + src = 'javascript:void(0)'; // jshint ignore:line + } else if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) { + src = 'javascript:void(function(){' + encodeURIComponent( src ) + '}())'; // jshint ignore:line + } else { + src = ''; + } + + var iframe = CKEDITOR.dom.element.createFromHtml( '' ); + iframe.setStyles( { width: '100%', height: '100%' } ); + iframe.addClass( 'cke_wysiwyg_frame' ).addClass( 'cke_reset' ); + + var contentSpace = editor.ui.space( 'contents' ); + contentSpace.append( iframe ); + + + // Asynchronous iframe loading is only required in IE>8 and Gecko (other reasons probably). + // Do not use it on WebKit as it'll break the browser-back navigation. + var useOnloadEvent = ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) || CKEDITOR.env.gecko; + if ( useOnloadEvent ) + iframe.on( 'load', onLoad ); + + var frameLabel = editor.title, + helpLabel = editor.fire( 'ariaEditorHelpLabel', {} ).label; + + if ( frameLabel ) { + if ( CKEDITOR.env.ie && helpLabel ) + frameLabel += ', ' + helpLabel; + + iframe.setAttribute( 'title', frameLabel ); + } + + if ( helpLabel ) { + var labelId = CKEDITOR.tools.getNextId(), + desc = CKEDITOR.dom.element.createFromHtml( '' + helpLabel + '' ); + + contentSpace.append( desc, 1 ); + iframe.setAttribute( 'aria-describedby', labelId ); + } + + // Remove the ARIA description. + editor.on( 'beforeModeUnload', function( evt ) { + evt.removeListener(); + if ( desc ) + desc.remove(); + } ); + + iframe.setAttributes( { + tabIndex: editor.tabIndex, + allowTransparency: 'true' + } ); + + // Execute onLoad manually for all non IE||Gecko browsers. + !useOnloadEvent && onLoad(); + + editor.fire( 'ariaWidget', iframe ); + + function onLoad( evt ) { + evt && evt.removeListener(); + editor.editable( new framedWysiwyg( editor, iframe.$.contentWindow.document.body ) ); + editor.setData( editor.getData( 1 ), callback ); + } + } ); + } + } ); + + /** + * Adds the path to a stylesheet file to the exisiting {@link CKEDITOR.config#contentsCss} value. + * + * **Note:** This method is available only with the `wysiwygarea` plugin and only affects + * classic editors based on it (so it does not affect inline editors). + * + * editor.addContentsCss( 'assets/contents.css' ); + * + * @since 4.4 + * @param {String} cssPath The path to the stylesheet file which should be added. + * @member CKEDITOR.editor + */ + CKEDITOR.editor.prototype.addContentsCss = function( cssPath ) { + var cfg = this.config, + curContentsCss = cfg.contentsCss; + + // Convert current value into array. + if ( !CKEDITOR.tools.isArray( curContentsCss ) ) + cfg.contentsCss = curContentsCss ? [ curContentsCss ] : []; + + cfg.contentsCss.push( cssPath ); + }; + + function onDomReady( win ) { + var editor = this.editor, + doc = win.document, + body = doc.body; + + // Remove helper scripts from the DOM. + var script = doc.getElementById( 'cke_actscrpt' ); + script && script.parentNode.removeChild( script ); + script = doc.getElementById( 'cke_shimscrpt' ); + script && script.parentNode.removeChild( script ); + script = doc.getElementById( 'cke_basetagscrpt' ); + script && script.parentNode.removeChild( script ); + + body.contentEditable = true; + + if ( CKEDITOR.env.ie ) { + // Don't display the focus border. + body.hideFocus = true; + + // Disable and re-enable the body to avoid IE from + // taking the editing focus at startup. (#141 / #523) + body.disabled = true; + body.removeAttribute( 'disabled' ); + } + + delete this._.isLoadingData; + + // Play the magic to alter element reference to the reloaded one. + this.$ = body; + + doc = new CKEDITOR.dom.document( doc ); + + this.setup(); + this.fixInitialSelection(); + + var editable = this; + + // Without it IE8 has problem with removing selection in nested editable. (#13785) + if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) { + doc.getDocumentElement().addClass( doc.$.compatMode ); + } + + // Prevent IE/Edge from leaving a new paragraph/div after deleting all contents in body. (#6966, #13142) + if ( CKEDITOR.env.ie && !CKEDITOR.env.edge && editor.enterMode != CKEDITOR.ENTER_P ) { + removeSuperfluousElement( 'p' ); + } else if ( CKEDITOR.env.edge && editor.enterMode != CKEDITOR.ENTER_DIV ) { + removeSuperfluousElement( 'div' ); + } + + // Fix problem with cursor not appearing in Webkit and IE11+ when clicking below the body (#10945, #10906). + // Fix for older IEs (8-10 and QM) is placed inside selection.js. + if ( CKEDITOR.env.webkit || ( CKEDITOR.env.ie && CKEDITOR.env.version > 10 ) ) { + doc.getDocumentElement().on( 'mousedown', function( evt ) { + if ( evt.data.getTarget().is( 'html' ) ) { + // IE needs this timeout. Webkit does not, but it does not cause problems too. + setTimeout( function() { + editor.editable().focus(); + } ); + } + } ); + } + + // Config props: disableObjectResizing and disableNativeTableHandles handler. + objectResizeDisabler( editor ); + + // Enable dragging of position:absolute elements in IE. + try { + editor.document.$.execCommand( '2D-position', false, true ); + } catch ( e ) {} + + if ( CKEDITOR.env.gecko || CKEDITOR.env.ie && editor.document.$.compatMode == 'CSS1Compat' ) { + this.attachListener( this, 'keydown', function( evt ) { + var keyCode = evt.data.getKeystroke(); + + // PageUp OR PageDown + if ( keyCode == 33 || keyCode == 34 ) { + // PageUp/PageDown scrolling is broken in document + // with standard doctype, manually fix it. (#4736) + if ( CKEDITOR.env.ie ) { + setTimeout( function() { + editor.getSelection().scrollIntoView(); + }, 0 ); + } + // Page up/down cause editor selection to leak + // outside of editable thus we try to intercept + // the behavior, while it affects only happen + // when editor contents are not overflowed. (#7955) + else if ( editor.window.$.innerHeight > this.$.offsetHeight ) { + var range = editor.createRange(); + range[ keyCode == 33 ? 'moveToElementEditStart' : 'moveToElementEditEnd' ]( this ); + range.select(); + evt.data.preventDefault(); + } + } + } ); + } + + if ( CKEDITOR.env.ie ) { + // [IE] Iframe will still keep the selection when blurred, if + // focus is moved onto a non-editing host, e.g. link or button, but + // it becomes a problem for the object type selection, since the resizer + // handler attached on it will mark other part of the UI, especially + // for the dialog. (#8157) + // [IE<8 & Opera] Even worse For old IEs, the cursor will not vanish even if + // the selection has been moved to another text input in some cases. (#4716) + // + // Now the range restore is disabled, so we simply force IE to clean + // up the selection before blur. + this.attachListener( doc, 'blur', function() { + // Error proof when the editor is not visible. (#6375) + try { + doc.$.selection.empty(); + } catch ( er ) {} + } ); + } + + if ( CKEDITOR.env.iOS ) { + // [iOS] If touch is bound to any parent of the iframe blur happens on any touch + // event and body becomes the focused element (#10714). + this.attachListener( doc, 'touchend', function() { + win.focus(); + } ); + } + + var title = editor.document.getElementsByTag( 'title' ).getItem( 0 ); + // document.title is malfunctioning on Chrome, so get value from the element (#12402). + title.data( 'cke-title', title.getText() ); + + // [IE] JAWS will not recognize the aria label we used on the iframe + // unless the frame window title string is used as the voice label, + // backup the original one and restore it on output. + if ( CKEDITOR.env.ie ) + editor.document.$.title = this._.docTitle; + + CKEDITOR.tools.setTimeout( function() { + // Editable is ready after first setData. + if ( this.status == 'unloaded' ) + this.status = 'ready'; + + editor.fire( 'contentDom' ); + + if ( this._.isPendingFocus ) { + editor.focus(); + this._.isPendingFocus = false; + } + + setTimeout( function() { + editor.fire( 'dataReady' ); + }, 0 ); + }, 0, this ); + + function removeSuperfluousElement( tagName ) { + var lockRetain = false; + + // Superfluous elements appear after keydown + // and before keyup, so the procedure is as follows: + // 1. On first keydown mark all elements with + // a specified tag name as non-superfluous. + editable.attachListener( editable, 'keydown', function() { + var body = doc.getBody(), + retained = body.getElementsByTag( tagName ); + + if ( !lockRetain ) { + for ( var i = 0; i < retained.count(); i++ ) { + retained.getItem( i ).setCustomData( 'retain', true ); + } + lockRetain = true; + } + }, null, null, 1 ); + + // 2. On keyup remove all elements that were not marked + // as non-superfluous (which means they must have had appeared in the meantime). + editable.attachListener( editable, 'keyup', function() { + var elements = doc.getElementsByTag( tagName ); + if ( lockRetain ) { + if ( elements.count() == 1 && !elements.getItem( 0 ).getCustomData( 'retain' ) ) { + elements.getItem( 0 ).remove( 1 ); + } + lockRetain = false; + } + } ); + } + } + + var framedWysiwyg = CKEDITOR.tools.createClass( { + $: function() { + this.base.apply( this, arguments ); + + this._.frameLoadedHandler = CKEDITOR.tools.addFunction( function( win ) { + // Avoid opening design mode in a frame window thread, + // which will cause host page scrolling.(#4397) + CKEDITOR.tools.setTimeout( onDomReady, 0, this, win ); + }, this ); + + this._.docTitle = this.getWindow().getFrame().getAttribute( 'title' ); + }, + + base: CKEDITOR.editable, + + proto: { + setData: function( data, isSnapshot ) { + var editor = this.editor; + + if ( isSnapshot ) { + this.setHtml( data ); + this.fixInitialSelection(); + + // Fire dataReady for the consistency with inline editors + // and because it makes sense. (#10370) + editor.fire( 'dataReady' ); + } + else { + this._.isLoadingData = true; + editor._.dataStore = { id: 1 }; + + var config = editor.config, + fullPage = config.fullPage, + docType = config.docType; + + // Build the additional stuff to be included into . + var headExtra = CKEDITOR.tools.buildStyleHtml( iframeCssFixes() ).replace( /