From 3332bebe4da6dfa0fe3e4b2abddc84b1cc62f8f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isma=C3=ABl=20Bouya?= Date: Fri, 19 Feb 2016 23:38:52 +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-ch.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/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-ch.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/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-ch.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/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-ch.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/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-ch.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-ch.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/floatingspace/plugin.js | 406 +++ sources/plugins/floatpanel/plugin.js | 598 ++++ 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-ch.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 ++ .../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-ch.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-ch.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-ch.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/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-ch.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-ch.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-ch.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-ch.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-ch.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-ch.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-ch.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/panel/plugin.js | 403 +++ sources/plugins/popup/plugin.js | 65 + .../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-ch.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/showborders/plugin.js | 174 + .../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-ch.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 + sources/plugins/tab/plugin.js | 302 ++ 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-ch.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/wysiwygarea/plugin.js | 708 ++++ sources/plugins/wysiwygarea/samples/fullpage.html | 80 + 1420 files changed, 52561 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-ch.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/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-ch.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/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-ch.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/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-ch.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/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-ch.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-ch.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/floatingspace/plugin.js create mode 100644 sources/plugins/floatpanel/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-ch.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/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-ch.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-ch.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-ch.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/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-ch.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-ch.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-ch.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-ch.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-ch.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-ch.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-ch.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/panel/plugin.js create mode 100644 sources/plugins/popup/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-ch.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/showborders/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-ch.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/tab/plugin.js 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-ch.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/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 0000000..3936e43 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/a11yhelp.js @@ -0,0 +1,216 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..4c59097 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/_translationstatus.txt @@ -0,0 +1,25 @@ +Copyright (c) 2003-2016, 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 0000000..600dec5 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/af.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..edb58df --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ar.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..4ebdaad --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/bg.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..b739c4e --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ca.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..6386a35 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/cs.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..f47ff93 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/cy.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..8ec3f61 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/da.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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-ch.js b/sources/plugins/a11yhelp/dialogs/lang/de-ch.js new file mode 100644 index 0000000..afa4021 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/de-ch.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'a11yhelp', 'de-ch', { + title: 'Barrierefreiheitinformationen', + contents: 'Hilfeinhalt. Um den Dialog zu schliessen die Taste ESC drücken.', + legend: [ + { + name: 'Allgemein', + items: [ + { + name: 'Editorwerkzeugleiste', + legend: 'Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT+TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren.' + }, + + { + 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: 'Schliessende eckige Klammer', + singleQuote: 'Einfaches Anführungszeichen' +} ); diff --git a/sources/plugins/a11yhelp/dialogs/lang/de.js b/sources/plugins/a11yhelp/dialogs/lang/de.js new file mode 100644 index 0000000..5d3fd04 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/de.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..ec61ce5 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/el.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..27dbff8 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/en-gb.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..47823d7 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/en.js @@ -0,0 +1,167 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..104cdc4 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/eo.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..8a1e130 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/es.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..394f0c6 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/et.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..097ad14 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/eu.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..7391490 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/fa.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..4f4775b --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/fi.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..21bc261 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/fo.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..b43eeab --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/fr-ca.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..ee41566 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/fr.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..f6e6b1c --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/gl.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..d8d4957 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/gu.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..025cf88 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/he.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..19fda78 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/hi.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..f4568a2 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/hr.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..7342cee --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/hu.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..2b1675f --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/id.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..bc06683 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/it.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..95f4e4d --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ja.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..723a316 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/km.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..9191e13 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ko.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..93f77dc --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ku.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..d1a21ac --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/lt.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..ccd13b8 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/lv.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..3dca6f7 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/mk.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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: 'Контекст-мени на уредувачот', + 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: ' 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', + tab: 'Tab', + enter: 'Enter', + shift: 'Shift', + ctrl: 'Ctrl', + alt: 'Alt', + pause: 'Пауза', + capslock: 'Caps Lock', + escape: 'Escape', + pageUp: 'Page Up', + pageDown: 'Page Up', + end: 'End', + home: 'Home', + leftArrow: 'Стрелка лево', + 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: '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/mn.js b/sources/plugins/a11yhelp/dialogs/lang/mn.js new file mode 100644 index 0000000..35ae7a7 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/mn.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..f8a8774 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/nb.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..a123ba4 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/nl.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..4fb1163 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/no.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..1e270f5 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/pl.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..c499a57 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/pt-br.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..2566f5b --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/pt.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..c787177 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ro.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..23bb13d --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ru.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..e855192 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/si.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..ee91403 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/sk.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..7cb12f6 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/sl.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..c308122 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/sq.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..b70e635 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/sr-latn.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..fb07f86 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/sr.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..4200c9f --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/sv.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..00c96d1 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/th.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..425f21d --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/tr.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..1ce78fa --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/tt.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..0dd4d25 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/ug.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..ce5ff60 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/uk.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..c985471 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/vi.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..553f56c --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/zh-cn.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..69b61d9 --- /dev/null +++ b/sources/plugins/a11yhelp/dialogs/lang/zh.js @@ -0,0 +1,148 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..86b19fe --- /dev/null +++ b/sources/plugins/a11yhelp/plugin.js @@ -0,0 +1,51 @@ +/** + * @license Copyright (c) 2003-2016, 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,'de-ch':1,el:1,en:1,'en-gb':1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,fr:1,'fr-ca':1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,pl:1,pt:1,'pt-br':1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,'sr-latn':1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,'zh-cn':1 }, + // 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/basicstyles/icons/bold.png b/sources/plugins/basicstyles/icons/bold.png new file mode 100644 index 0000000..5ff84fe 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 0000000..65acb29 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 0000000..2b0f44e 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 0000000..ef045c8 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 0000000..f12f4be 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 0000000..4f7b762 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 0000000..79702f6 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 0000000..64d1332 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 0000000..31ea47a 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 0000000..bfe5420 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 0000000..a1eb2f1 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 0000000..1dd0c59 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 0000000..3fbcb9c --- /dev/null +++ b/sources/plugins/basicstyles/lang/af.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..8ed2b07 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ar.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..e410766 --- /dev/null +++ b/sources/plugins/basicstyles/lang/bg.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..007520b --- /dev/null +++ b/sources/plugins/basicstyles/lang/bn.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..9484a8d --- /dev/null +++ b/sources/plugins/basicstyles/lang/bs.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7d3cc03 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ca.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..5322b5a --- /dev/null +++ b/sources/plugins/basicstyles/lang/cs.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..4a207e8 --- /dev/null +++ b/sources/plugins/basicstyles/lang/cy.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..d1b1050 --- /dev/null +++ b/sources/plugins/basicstyles/lang/da.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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-ch.js b/sources/plugins/basicstyles/lang/de-ch.js new file mode 100644 index 0000000..21ade9f --- /dev/null +++ b/sources/plugins/basicstyles/lang/de-ch.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'de-ch', { + bold: 'Fett', + italic: 'Kursiv', + strike: 'Durchgestrichen', + subscript: 'Tiefgestellt', + superscript: 'Hochgestellt', + underline: 'Unterstrichen' +} ); diff --git a/sources/plugins/basicstyles/lang/de.js b/sources/plugins/basicstyles/lang/de.js new file mode 100644 index 0000000..5c67cd9 --- /dev/null +++ b/sources/plugins/basicstyles/lang/de.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..899b794 --- /dev/null +++ b/sources/plugins/basicstyles/lang/el.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..4c80293 --- /dev/null +++ b/sources/plugins/basicstyles/lang/en-au.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..e85611a --- /dev/null +++ b/sources/plugins/basicstyles/lang/en-ca.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..b2cd62c --- /dev/null +++ b/sources/plugins/basicstyles/lang/en-gb.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7284189 --- /dev/null +++ b/sources/plugins/basicstyles/lang/en.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..0fef072 --- /dev/null +++ b/sources/plugins/basicstyles/lang/eo.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..b44dbf7 --- /dev/null +++ b/sources/plugins/basicstyles/lang/es.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..18d1a04 --- /dev/null +++ b/sources/plugins/basicstyles/lang/et.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..97f4075 --- /dev/null +++ b/sources/plugins/basicstyles/lang/eu.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..21cea30 --- /dev/null +++ b/sources/plugins/basicstyles/lang/fa.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..83b2fca --- /dev/null +++ b/sources/plugins/basicstyles/lang/fi.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..4af4e21 --- /dev/null +++ b/sources/plugins/basicstyles/lang/fo.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..1a1f013 --- /dev/null +++ b/sources/plugins/basicstyles/lang/fr-ca.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..65d8877 --- /dev/null +++ b/sources/plugins/basicstyles/lang/fr.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..597f06b --- /dev/null +++ b/sources/plugins/basicstyles/lang/gl.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..3ca4b60 --- /dev/null +++ b/sources/plugins/basicstyles/lang/gu.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..5d73395 --- /dev/null +++ b/sources/plugins/basicstyles/lang/he.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..0beaa59 --- /dev/null +++ b/sources/plugins/basicstyles/lang/hi.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..ef1c439 --- /dev/null +++ b/sources/plugins/basicstyles/lang/hr.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..36081b3 --- /dev/null +++ b/sources/plugins/basicstyles/lang/hu.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..8bad46e --- /dev/null +++ b/sources/plugins/basicstyles/lang/id.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..67a4cff --- /dev/null +++ b/sources/plugins/basicstyles/lang/is.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..bbd38a7 --- /dev/null +++ b/sources/plugins/basicstyles/lang/it.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..a28beba --- /dev/null +++ b/sources/plugins/basicstyles/lang/ja.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..10be39d --- /dev/null +++ b/sources/plugins/basicstyles/lang/ka.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..256559c --- /dev/null +++ b/sources/plugins/basicstyles/lang/km.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..0a988f4 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ko.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..99100cb --- /dev/null +++ b/sources/plugins/basicstyles/lang/ku.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..8ea74dd --- /dev/null +++ b/sources/plugins/basicstyles/lang/lt.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..38bbe70 --- /dev/null +++ b/sources/plugins/basicstyles/lang/lv.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..478ce87 --- /dev/null +++ b/sources/plugins/basicstyles/lang/mk.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'basicstyles', 'mk', { + bold: 'Здебелено', + italic: 'Накривено', + strike: 'Прецртано', + subscript: 'Долен индекс', + superscript: 'Горен индекс', + underline: 'Подвлечено' +} ); diff --git a/sources/plugins/basicstyles/lang/mn.js b/sources/plugins/basicstyles/lang/mn.js new file mode 100644 index 0000000..7edec37 --- /dev/null +++ b/sources/plugins/basicstyles/lang/mn.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..0fc9f9b --- /dev/null +++ b/sources/plugins/basicstyles/lang/ms.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..b5f922a --- /dev/null +++ b/sources/plugins/basicstyles/lang/nb.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..92cad81 --- /dev/null +++ b/sources/plugins/basicstyles/lang/nl.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..300659a --- /dev/null +++ b/sources/plugins/basicstyles/lang/no.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..321f895 --- /dev/null +++ b/sources/plugins/basicstyles/lang/pl.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..fad08d4 --- /dev/null +++ b/sources/plugins/basicstyles/lang/pt-br.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..85de020 --- /dev/null +++ b/sources/plugins/basicstyles/lang/pt.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..c274ded --- /dev/null +++ b/sources/plugins/basicstyles/lang/ro.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..25cdf88 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ru.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..fbd052e --- /dev/null +++ b/sources/plugins/basicstyles/lang/si.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..3a19d9b --- /dev/null +++ b/sources/plugins/basicstyles/lang/sk.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..d6a0dbc --- /dev/null +++ b/sources/plugins/basicstyles/lang/sl.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7604a7a --- /dev/null +++ b/sources/plugins/basicstyles/lang/sq.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..6c87984 --- /dev/null +++ b/sources/plugins/basicstyles/lang/sr-latn.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..f0cc6eb --- /dev/null +++ b/sources/plugins/basicstyles/lang/sr.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..d11c18c --- /dev/null +++ b/sources/plugins/basicstyles/lang/sv.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..91c0cea --- /dev/null +++ b/sources/plugins/basicstyles/lang/th.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..62f6d09 --- /dev/null +++ b/sources/plugins/basicstyles/lang/tr.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..13e0217 --- /dev/null +++ b/sources/plugins/basicstyles/lang/tt.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..780e7b7 --- /dev/null +++ b/sources/plugins/basicstyles/lang/ug.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..66e9f6a --- /dev/null +++ b/sources/plugins/basicstyles/lang/uk.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..510ec58 --- /dev/null +++ b/sources/plugins/basicstyles/lang/vi.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..1b7e89f --- /dev/null +++ b/sources/plugins/basicstyles/lang/zh-cn.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..6e75580 --- /dev/null +++ b/sources/plugins/basicstyles/lang/zh.js @@ -0,0 +1,12 @@ +/* +Copyright (c) 2003-2016, 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 0000000..6960e2e --- /dev/null +++ b/sources/plugins/basicstyles/plugin.js @@ -0,0 +1,209 @@ +/** + * @license Copyright (c) 2003-2016, 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,de-ch,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% + // 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/button/lang/af.js b/sources/plugins/button/lang/af.js new file mode 100644 index 0000000..af03793 --- /dev/null +++ b/sources/plugins/button/lang/af.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..28f4346 --- /dev/null +++ b/sources/plugins/button/lang/ar.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..dfe5be1 --- /dev/null +++ b/sources/plugins/button/lang/bg.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..2feb710 --- /dev/null +++ b/sources/plugins/button/lang/ca.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..01f4a86 --- /dev/null +++ b/sources/plugins/button/lang/cs.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..021201f --- /dev/null +++ b/sources/plugins/button/lang/da.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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-ch.js b/sources/plugins/button/lang/de-ch.js new file mode 100644 index 0000000..680cc20 --- /dev/null +++ b/sources/plugins/button/lang/de-ch.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.plugins.setLang( 'button', 'de-ch', { + selectedLabel: '%1 (Ausgewählt)' +} ); diff --git a/sources/plugins/button/lang/de.js b/sources/plugins/button/lang/de.js new file mode 100644 index 0000000..d31afaa --- /dev/null +++ b/sources/plugins/button/lang/de.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..84e630c --- /dev/null +++ b/sources/plugins/button/lang/el.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..b4060d3 --- /dev/null +++ b/sources/plugins/button/lang/en-gb.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..b0b4807 --- /dev/null +++ b/sources/plugins/button/lang/en.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..733c960 --- /dev/null +++ b/sources/plugins/button/lang/eo.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..8b4695b --- /dev/null +++ b/sources/plugins/button/lang/es.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..fd60b16 --- /dev/null +++ b/sources/plugins/button/lang/eu.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..8e923b0 --- /dev/null +++ b/sources/plugins/button/lang/fa.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..2668a8d --- /dev/null +++ b/sources/plugins/button/lang/fi.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..1039c90 --- /dev/null +++ b/sources/plugins/button/lang/fr.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..e73ea65 --- /dev/null +++ b/sources/plugins/button/lang/gl.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..8890cf9 --- /dev/null +++ b/sources/plugins/button/lang/he.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..9dc42a5 --- /dev/null +++ b/sources/plugins/button/lang/hu.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..52726a8 --- /dev/null +++ b/sources/plugins/button/lang/id.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..0b28b8c --- /dev/null +++ b/sources/plugins/button/lang/it.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..559d08c --- /dev/null +++ b/sources/plugins/button/lang/ja.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..ecfc774 --- /dev/null +++ b/sources/plugins/button/lang/km.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..2e2cc61 --- /dev/null +++ b/sources/plugins/button/lang/ko.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..b794e23 --- /dev/null +++ b/sources/plugins/button/lang/ku.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..e17e9e5 --- /dev/null +++ b/sources/plugins/button/lang/lt.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..b91a823 --- /dev/null +++ b/sources/plugins/button/lang/nb.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..0654cec --- /dev/null +++ b/sources/plugins/button/lang/nl.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..bc980d0 --- /dev/null +++ b/sources/plugins/button/lang/pl.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..f1cd7c4 --- /dev/null +++ b/sources/plugins/button/lang/pt-br.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..adc8251 --- /dev/null +++ b/sources/plugins/button/lang/pt.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..c70153c --- /dev/null +++ b/sources/plugins/button/lang/ro.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..06ee190 --- /dev/null +++ b/sources/plugins/button/lang/ru.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..adbadf2 --- /dev/null +++ b/sources/plugins/button/lang/sk.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..85e5cc2 --- /dev/null +++ b/sources/plugins/button/lang/sl.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..1690634 --- /dev/null +++ b/sources/plugins/button/lang/sq.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..db15526 --- /dev/null +++ b/sources/plugins/button/lang/sv.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..a87bb12 --- /dev/null +++ b/sources/plugins/button/lang/tr.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..79044c6 --- /dev/null +++ b/sources/plugins/button/lang/tt.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..fe30252 --- /dev/null +++ b/sources/plugins/button/lang/ug.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..a40cf8f --- /dev/null +++ b/sources/plugins/button/lang/uk.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..a3ea973 --- /dev/null +++ b/sources/plugins/button/lang/vi.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..1271943 --- /dev/null +++ b/sources/plugins/button/lang/zh-cn.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..5fee74f --- /dev/null +++ b/sources/plugins/button/lang/zh.js @@ -0,0 +1,8 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..0ce75c6 --- /dev/null +++ b/sources/plugins/button/plugin.js @@ -0,0 +1,377 @@ +/** + * @license Copyright (c) 2003-2016, 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,de-ch,el,en,en-gb,eo,es,eu,fa,fi,fr,gl,he,hu,id,it,ja,km,ko,ku,lt,nb,nl,pl,pt,pt-br,ro,ru,sk,sl,sq,sv,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% + 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/contextmenu/lang/af.js b/sources/plugins/contextmenu/lang/af.js new file mode 100644 index 0000000..bf849cc --- /dev/null +++ b/sources/plugins/contextmenu/lang/af.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..6f4b9cd --- /dev/null +++ b/sources/plugins/contextmenu/lang/ar.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7e37b2e --- /dev/null +++ b/sources/plugins/contextmenu/lang/bg.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..e18bb70 --- /dev/null +++ b/sources/plugins/contextmenu/lang/bn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..22cade1 --- /dev/null +++ b/sources/plugins/contextmenu/lang/bs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..d9c157a --- /dev/null +++ b/sources/plugins/contextmenu/lang/ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..49ba461 --- /dev/null +++ b/sources/plugins/contextmenu/lang/cs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..2bb01d9 --- /dev/null +++ b/sources/plugins/contextmenu/lang/cy.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..3e73bd8 --- /dev/null +++ b/sources/plugins/contextmenu/lang/da.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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-ch.js b/sources/plugins/contextmenu/lang/de-ch.js new file mode 100644 index 0000000..606c5e5 --- /dev/null +++ b/sources/plugins/contextmenu/lang/de-ch.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'de-ch', { + options: 'Kontextmenüoptionen' +} ); diff --git a/sources/plugins/contextmenu/lang/de.js b/sources/plugins/contextmenu/lang/de.js new file mode 100644 index 0000000..af3d94f --- /dev/null +++ b/sources/plugins/contextmenu/lang/de.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..5641cc2 --- /dev/null +++ b/sources/plugins/contextmenu/lang/el.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..2cfb13e --- /dev/null +++ b/sources/plugins/contextmenu/lang/en-au.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..f5fff30 --- /dev/null +++ b/sources/plugins/contextmenu/lang/en-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..25b6dfa --- /dev/null +++ b/sources/plugins/contextmenu/lang/en-gb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..59343e3 --- /dev/null +++ b/sources/plugins/contextmenu/lang/en.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..8782e56 --- /dev/null +++ b/sources/plugins/contextmenu/lang/eo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7eed8ab --- /dev/null +++ b/sources/plugins/contextmenu/lang/es.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7e34fbb --- /dev/null +++ b/sources/plugins/contextmenu/lang/et.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..f04ae72 --- /dev/null +++ b/sources/plugins/contextmenu/lang/eu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..6ba8b7c --- /dev/null +++ b/sources/plugins/contextmenu/lang/fa.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..920c494 --- /dev/null +++ b/sources/plugins/contextmenu/lang/fi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..6e71076 --- /dev/null +++ b/sources/plugins/contextmenu/lang/fo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..c9ffdc1 --- /dev/null +++ b/sources/plugins/contextmenu/lang/fr-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..9205c52 --- /dev/null +++ b/sources/plugins/contextmenu/lang/fr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..92561cc --- /dev/null +++ b/sources/plugins/contextmenu/lang/gl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..f2065ee --- /dev/null +++ b/sources/plugins/contextmenu/lang/gu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..71d3bd9 --- /dev/null +++ b/sources/plugins/contextmenu/lang/he.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..9181aca --- /dev/null +++ b/sources/plugins/contextmenu/lang/hi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..335215d --- /dev/null +++ b/sources/plugins/contextmenu/lang/hr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..f80d0ae --- /dev/null +++ b/sources/plugins/contextmenu/lang/hu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..0278f79 --- /dev/null +++ b/sources/plugins/contextmenu/lang/id.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..6d208f1 --- /dev/null +++ b/sources/plugins/contextmenu/lang/is.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..dc206c9 --- /dev/null +++ b/sources/plugins/contextmenu/lang/it.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..939486f --- /dev/null +++ b/sources/plugins/contextmenu/lang/ja.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..b7c553b --- /dev/null +++ b/sources/plugins/contextmenu/lang/ka.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..967e4fe --- /dev/null +++ b/sources/plugins/contextmenu/lang/km.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..8f873fe --- /dev/null +++ b/sources/plugins/contextmenu/lang/ko.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..f49b18b --- /dev/null +++ b/sources/plugins/contextmenu/lang/ku.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..e50e8a4 --- /dev/null +++ b/sources/plugins/contextmenu/lang/lt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..fad495a --- /dev/null +++ b/sources/plugins/contextmenu/lang/lv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..c00cebb --- /dev/null +++ b/sources/plugins/contextmenu/lang/mk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'mk', { + options: 'Контекст-мени опции' +} ); diff --git a/sources/plugins/contextmenu/lang/mn.js b/sources/plugins/contextmenu/lang/mn.js new file mode 100644 index 0000000..0745938 --- /dev/null +++ b/sources/plugins/contextmenu/lang/mn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..870cbac --- /dev/null +++ b/sources/plugins/contextmenu/lang/ms.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..cc31945 --- /dev/null +++ b/sources/plugins/contextmenu/lang/nb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..baa8eb2 --- /dev/null +++ b/sources/plugins/contextmenu/lang/nl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..8885d40 --- /dev/null +++ b/sources/plugins/contextmenu/lang/no.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..47de98d --- /dev/null +++ b/sources/plugins/contextmenu/lang/pl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..8cf3255 --- /dev/null +++ b/sources/plugins/contextmenu/lang/pt-br.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..31c027f --- /dev/null +++ b/sources/plugins/contextmenu/lang/pt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..b9c0077 --- /dev/null +++ b/sources/plugins/contextmenu/lang/ro.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..330afbe --- /dev/null +++ b/sources/plugins/contextmenu/lang/ru.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..8b3eda0 --- /dev/null +++ b/sources/plugins/contextmenu/lang/si.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..34d64ac --- /dev/null +++ b/sources/plugins/contextmenu/lang/sk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..e823bb6 --- /dev/null +++ b/sources/plugins/contextmenu/lang/sl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..e1d40dc --- /dev/null +++ b/sources/plugins/contextmenu/lang/sq.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..a63e783 --- /dev/null +++ b/sources/plugins/contextmenu/lang/sr-latn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..ec79a0c --- /dev/null +++ b/sources/plugins/contextmenu/lang/sr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..69fa7b9 --- /dev/null +++ b/sources/plugins/contextmenu/lang/sv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..c17f20f --- /dev/null +++ b/sources/plugins/contextmenu/lang/th.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..c31e6f3 --- /dev/null +++ b/sources/plugins/contextmenu/lang/tr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..514a35f --- /dev/null +++ b/sources/plugins/contextmenu/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..b52e259 --- /dev/null +++ b/sources/plugins/contextmenu/lang/ug.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..97b514a --- /dev/null +++ b/sources/plugins/contextmenu/lang/uk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..91fc97c --- /dev/null +++ b/sources/plugins/contextmenu/lang/vi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..9ee2213 --- /dev/null +++ b/sources/plugins/contextmenu/lang/zh-cn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..b451c7f --- /dev/null +++ b/sources/plugins/contextmenu/lang/zh.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..09d7f25 --- /dev/null +++ b/sources/plugins/contextmenu/plugin.js @@ -0,0 +1,159 @@ +/** + * @license Copyright (c) 2003-2016, 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,de-ch,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% + // 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 0000000..df5870c --- /dev/null +++ b/sources/plugins/dialog/dialogDefinition.js @@ -0,0 +1,1032 @@ +// jscs:disable disallowMixedSpacesAndTabs +/** + * @license Copyright (c) 2003-2016, 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 0000000..3afe887 --- /dev/null +++ b/sources/plugins/dialog/plugin.js @@ -0,0 +1,3398 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..cf9185e --- /dev/null +++ b/sources/plugins/dialog/samples/assets/my_dialog.js @@ -0,0 +1,49 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..7fda2bb --- /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 0000000..2d4bcab --- /dev/null +++ b/sources/plugins/dialogadvtab/plugin.js @@ -0,0 +1,196 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..03fe753 --- /dev/null +++ b/sources/plugins/dialogui/plugin.js @@ -0,0 +1,1530 @@ +/** + * @license Copyright (c) 2003-2016, 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/popup/plugin.js b/sources/plugins/popup/plugin.js new file mode 100644 index 0000000..8f6bd5f --- /dev/null +++ b/sources/plugins/popup/plugin.js @@ -0,0 +1,65 @@ +/** + * @license Copyright (c) 2003-2016, 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/removeformat/icons/hidpi/removeformat.png b/sources/plugins/removeformat/icons/hidpi/removeformat.png new file mode 100644 index 0000000..910b0a3 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 0000000..1bc9b38 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 0000000..f4aad8d --- /dev/null +++ b/sources/plugins/removeformat/lang/af.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..fc43002 --- /dev/null +++ b/sources/plugins/removeformat/lang/ar.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..bc24b70 --- /dev/null +++ b/sources/plugins/removeformat/lang/bg.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..40bf380 --- /dev/null +++ b/sources/plugins/removeformat/lang/bn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..ee03684 --- /dev/null +++ b/sources/plugins/removeformat/lang/bs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..0b94ce4 --- /dev/null +++ b/sources/plugins/removeformat/lang/ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..ce05801 --- /dev/null +++ b/sources/plugins/removeformat/lang/cs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..14372a1 --- /dev/null +++ b/sources/plugins/removeformat/lang/cy.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..d170584 --- /dev/null +++ b/sources/plugins/removeformat/lang/da.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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-ch.js b/sources/plugins/removeformat/lang/de-ch.js new file mode 100644 index 0000000..48daf26 --- /dev/null +++ b/sources/plugins/removeformat/lang/de-ch.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'removeformat', 'de-ch', { + toolbar: 'Formatierung entfernen' +} ); diff --git a/sources/plugins/removeformat/lang/de.js b/sources/plugins/removeformat/lang/de.js new file mode 100644 index 0000000..08ad55c --- /dev/null +++ b/sources/plugins/removeformat/lang/de.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..d48c8ab --- /dev/null +++ b/sources/plugins/removeformat/lang/el.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..426d6d1 --- /dev/null +++ b/sources/plugins/removeformat/lang/en-au.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..1cc2963 --- /dev/null +++ b/sources/plugins/removeformat/lang/en-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..65af616 --- /dev/null +++ b/sources/plugins/removeformat/lang/en-gb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..55600fc --- /dev/null +++ b/sources/plugins/removeformat/lang/en.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..c4f04e3 --- /dev/null +++ b/sources/plugins/removeformat/lang/eo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..dc48200 --- /dev/null +++ b/sources/plugins/removeformat/lang/es.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..2938e78 --- /dev/null +++ b/sources/plugins/removeformat/lang/et.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..ff16de3 --- /dev/null +++ b/sources/plugins/removeformat/lang/eu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..40e8a1d --- /dev/null +++ b/sources/plugins/removeformat/lang/fa.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..90f2f54 --- /dev/null +++ b/sources/plugins/removeformat/lang/fi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..68fbb29 --- /dev/null +++ b/sources/plugins/removeformat/lang/fo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..67709de --- /dev/null +++ b/sources/plugins/removeformat/lang/fr-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..0ccb8ed --- /dev/null +++ b/sources/plugins/removeformat/lang/fr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..8ed13d3 --- /dev/null +++ b/sources/plugins/removeformat/lang/gl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7d31531 --- /dev/null +++ b/sources/plugins/removeformat/lang/gu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..1073e39 --- /dev/null +++ b/sources/plugins/removeformat/lang/he.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..952feac --- /dev/null +++ b/sources/plugins/removeformat/lang/hi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..9332057 --- /dev/null +++ b/sources/plugins/removeformat/lang/hr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..a7cabfc --- /dev/null +++ b/sources/plugins/removeformat/lang/hu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..f677a05 --- /dev/null +++ b/sources/plugins/removeformat/lang/id.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..5f7c53f --- /dev/null +++ b/sources/plugins/removeformat/lang/is.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..840d043 --- /dev/null +++ b/sources/plugins/removeformat/lang/it.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..acc7451 --- /dev/null +++ b/sources/plugins/removeformat/lang/ja.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..a455c35 --- /dev/null +++ b/sources/plugins/removeformat/lang/ka.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..b20d6ac --- /dev/null +++ b/sources/plugins/removeformat/lang/km.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..60df7aa --- /dev/null +++ b/sources/plugins/removeformat/lang/ko.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..5b84310 --- /dev/null +++ b/sources/plugins/removeformat/lang/ku.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..88be97e --- /dev/null +++ b/sources/plugins/removeformat/lang/lt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..946e6d9 --- /dev/null +++ b/sources/plugins/removeformat/lang/lv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..4fcbf8d --- /dev/null +++ b/sources/plugins/removeformat/lang/mk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..e504411 --- /dev/null +++ b/sources/plugins/removeformat/lang/mn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..bb6951b --- /dev/null +++ b/sources/plugins/removeformat/lang/ms.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..461d140 --- /dev/null +++ b/sources/plugins/removeformat/lang/nb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..cbbe0b1 --- /dev/null +++ b/sources/plugins/removeformat/lang/nl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..d067249 --- /dev/null +++ b/sources/plugins/removeformat/lang/no.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..5b1bddb --- /dev/null +++ b/sources/plugins/removeformat/lang/pl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..fb05dce --- /dev/null +++ b/sources/plugins/removeformat/lang/pt-br.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..c3e5d97 --- /dev/null +++ b/sources/plugins/removeformat/lang/pt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..1c045c7 --- /dev/null +++ b/sources/plugins/removeformat/lang/ro.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..baaa2fb --- /dev/null +++ b/sources/plugins/removeformat/lang/ru.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7a86747 --- /dev/null +++ b/sources/plugins/removeformat/lang/si.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..77651f2 --- /dev/null +++ b/sources/plugins/removeformat/lang/sk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..a717049 --- /dev/null +++ b/sources/plugins/removeformat/lang/sl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..73c8419 --- /dev/null +++ b/sources/plugins/removeformat/lang/sq.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..9e91105 --- /dev/null +++ b/sources/plugins/removeformat/lang/sr-latn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..fd720a9 --- /dev/null +++ b/sources/plugins/removeformat/lang/sr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..ebb4aed --- /dev/null +++ b/sources/plugins/removeformat/lang/sv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..d521c58 --- /dev/null +++ b/sources/plugins/removeformat/lang/th.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..2d4097c --- /dev/null +++ b/sources/plugins/removeformat/lang/tr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..4fa5570 --- /dev/null +++ b/sources/plugins/removeformat/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7d9ec29 --- /dev/null +++ b/sources/plugins/removeformat/lang/ug.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..1dea866 --- /dev/null +++ b/sources/plugins/removeformat/lang/uk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..2aaadc2 --- /dev/null +++ b/sources/plugins/removeformat/lang/vi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..6efbf35 --- /dev/null +++ b/sources/plugins/removeformat/lang/zh-cn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..6ce2ef0 --- /dev/null +++ b/sources/plugins/removeformat/lang/zh.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..044f54a --- /dev/null +++ b/sources/plugins/removeformat/plugin.js @@ -0,0 +1,193 @@ +/** + * @license Copyright (c) 2003-2016, 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,de-ch,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% + // 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 0000000..be9673d --- /dev/null +++ b/sources/plugins/resize/plugin.js @@ -0,0 +1,187 @@ +/** + * @license Copyright (c) 2003-2016, 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 0000000..67ccc8e --- /dev/null +++ b/sources/plugins/richcombo/plugin.js @@ -0,0 +1,434 @@ +/** + * @license Copyright (c) 2003-2016, 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/showborders/plugin.js b/sources/plugins/showborders/plugin.js new file mode 100644 index 0000000..e9140f9 --- /dev/null +++ b/sources/plugins/showborders/plugin.js @@ -0,0 +1,174 @@ +/** + * @license Copyright (c) 2003-2016, 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/sourcearea/icons/hidpi/source-rtl.png b/sources/plugins/sourcearea/icons/hidpi/source-rtl.png new file mode 100644 index 0000000..adf4af3 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 0000000..b4d0a15 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 0000000..27d1ba8 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 0000000..e44db37 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 0000000..18cd8fd --- /dev/null +++ b/sources/plugins/sourcearea/lang/af.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..75a8912 --- /dev/null +++ b/sources/plugins/sourcearea/lang/ar.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7c87fc8 --- /dev/null +++ b/sources/plugins/sourcearea/lang/bg.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..d09d00f --- /dev/null +++ b/sources/plugins/sourcearea/lang/bn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..a422d37 --- /dev/null +++ b/sources/plugins/sourcearea/lang/bs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..791ca16 --- /dev/null +++ b/sources/plugins/sourcearea/lang/ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..acbd886 --- /dev/null +++ b/sources/plugins/sourcearea/lang/cs.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..4d2cd74 --- /dev/null +++ b/sources/plugins/sourcearea/lang/cy.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..e0a2dfd --- /dev/null +++ b/sources/plugins/sourcearea/lang/da.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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-ch.js b/sources/plugins/sourcearea/lang/de-ch.js new file mode 100644 index 0000000..37a859d --- /dev/null +++ b/sources/plugins/sourcearea/lang/de-ch.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.plugins.setLang( 'sourcearea', 'de-ch', { + toolbar: 'Quellcode' +} ); diff --git a/sources/plugins/sourcearea/lang/de.js b/sources/plugins/sourcearea/lang/de.js new file mode 100644 index 0000000..102461e --- /dev/null +++ b/sources/plugins/sourcearea/lang/de.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..e830f32 --- /dev/null +++ b/sources/plugins/sourcearea/lang/el.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..ce7ac13 --- /dev/null +++ b/sources/plugins/sourcearea/lang/en-au.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..302baa0 --- /dev/null +++ b/sources/plugins/sourcearea/lang/en-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..a42e762 --- /dev/null +++ b/sources/plugins/sourcearea/lang/en-gb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..fdf25a1 --- /dev/null +++ b/sources/plugins/sourcearea/lang/en.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..704bf6a --- /dev/null +++ b/sources/plugins/sourcearea/lang/eo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..ccca6ac --- /dev/null +++ b/sources/plugins/sourcearea/lang/es.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..c892cc3 --- /dev/null +++ b/sources/plugins/sourcearea/lang/et.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..95f2de6 --- /dev/null +++ b/sources/plugins/sourcearea/lang/eu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..c5e7838 --- /dev/null +++ b/sources/plugins/sourcearea/lang/fa.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..6d0ef2f --- /dev/null +++ b/sources/plugins/sourcearea/lang/fi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7dc96c9 --- /dev/null +++ b/sources/plugins/sourcearea/lang/fo.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7e1f916 --- /dev/null +++ b/sources/plugins/sourcearea/lang/fr-ca.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..4aafadd --- /dev/null +++ b/sources/plugins/sourcearea/lang/fr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..bebc380 --- /dev/null +++ b/sources/plugins/sourcearea/lang/gl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..890c949 --- /dev/null +++ b/sources/plugins/sourcearea/lang/gu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..6012fa2 --- /dev/null +++ b/sources/plugins/sourcearea/lang/he.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..a60ec4f --- /dev/null +++ b/sources/plugins/sourcearea/lang/hi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..a33e9e7 --- /dev/null +++ b/sources/plugins/sourcearea/lang/hr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..9177268 --- /dev/null +++ b/sources/plugins/sourcearea/lang/hu.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..ba31a81 --- /dev/null +++ b/sources/plugins/sourcearea/lang/id.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..66b58bb --- /dev/null +++ b/sources/plugins/sourcearea/lang/is.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..b6815da --- /dev/null +++ b/sources/plugins/sourcearea/lang/it.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..195730a --- /dev/null +++ b/sources/plugins/sourcearea/lang/ja.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..255951b --- /dev/null +++ b/sources/plugins/sourcearea/lang/ka.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..05630c0 --- /dev/null +++ b/sources/plugins/sourcearea/lang/km.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..535f6a1 --- /dev/null +++ b/sources/plugins/sourcearea/lang/ko.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..21c6ace --- /dev/null +++ b/sources/plugins/sourcearea/lang/ku.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..99f4ef6 --- /dev/null +++ b/sources/plugins/sourcearea/lang/lt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..fb155cd --- /dev/null +++ b/sources/plugins/sourcearea/lang/lv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..37135a1 --- /dev/null +++ b/sources/plugins/sourcearea/lang/mk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..72c0b38 --- /dev/null +++ b/sources/plugins/sourcearea/lang/mn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..1ef521b --- /dev/null +++ b/sources/plugins/sourcearea/lang/ms.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..66182bf --- /dev/null +++ b/sources/plugins/sourcearea/lang/nb.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..89d2d3c --- /dev/null +++ b/sources/plugins/sourcearea/lang/nl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..81db8ce --- /dev/null +++ b/sources/plugins/sourcearea/lang/no.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..05bebe8 --- /dev/null +++ b/sources/plugins/sourcearea/lang/pl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..663f25b --- /dev/null +++ b/sources/plugins/sourcearea/lang/pt-br.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..9d97358 --- /dev/null +++ b/sources/plugins/sourcearea/lang/pt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..f8e3479 --- /dev/null +++ b/sources/plugins/sourcearea/lang/ro.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..2f4299f --- /dev/null +++ b/sources/plugins/sourcearea/lang/ru.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..30dc6aa --- /dev/null +++ b/sources/plugins/sourcearea/lang/si.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7b487a3 --- /dev/null +++ b/sources/plugins/sourcearea/lang/sk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..05a9539 --- /dev/null +++ b/sources/plugins/sourcearea/lang/sl.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..989267d --- /dev/null +++ b/sources/plugins/sourcearea/lang/sq.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..6084786 --- /dev/null +++ b/sources/plugins/sourcearea/lang/sr-latn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..78599cb --- /dev/null +++ b/sources/plugins/sourcearea/lang/sr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..571cf07 --- /dev/null +++ b/sources/plugins/sourcearea/lang/sv.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..aa6427d --- /dev/null +++ b/sources/plugins/sourcearea/lang/th.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..54cc744 --- /dev/null +++ b/sources/plugins/sourcearea/lang/tr.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..964102f --- /dev/null +++ b/sources/plugins/sourcearea/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..de30435 --- /dev/null +++ b/sources/plugins/sourcearea/lang/ug.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..f9eea57 --- /dev/null +++ b/sources/plugins/sourcearea/lang/uk.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..23f8bef --- /dev/null +++ b/sources/plugins/sourcearea/lang/vi.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..1bff533 --- /dev/null +++ b/sources/plugins/sourcearea/lang/zh-cn.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..2268151 --- /dev/null +++ b/sources/plugins/sourcearea/lang/zh.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2016, 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 0000000..7c9ac88 --- /dev/null +++ b/sources/plugins/sourcearea/plugin.js @@ -0,0 +1,168 @@ +/** + * @license Copyright (c) 2003-2016, 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,de-ch,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% + // 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/wysiwygarea/plugin.js b/sources/plugins/wysiwygarea/plugin.js new file mode 100644 index 0000000..a1ec9e6 --- /dev/null +++ b/sources/plugins/wysiwygarea/plugin.js @@ -0,0 +1,708 @@ +/** + * @license Copyright (c) 2003-2016, 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( /