ckeditor-rails 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (708) hide show
  1. data/README.md +17 -14
  2. data/lib/ckeditor-rails/version.rb +1 -1
  3. data/vendor/assets/ckeditor/ckeditor/.htaccess +1 -1
  4. data/vendor/assets/ckeditor/ckeditor/CHANGES.html +139 -3
  5. data/vendor/assets/ckeditor/ckeditor/INSTALL.html +92 -92
  6. data/vendor/assets/ckeditor/ckeditor/LICENSE.html +2 -2
  7. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/application.xml +32 -32
  8. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/run.bat +9 -9
  9. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/run.sh +1 -1
  10. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/sample.html +45 -45
  11. data/vendor/assets/ckeditor/ckeditor/_samples/ajax.html +98 -98
  12. data/vendor/assets/ckeditor/ckeditor/_samples/api.html +192 -192
  13. data/vendor/assets/ckeditor/ckeditor/_samples/api_dialog.html +198 -198
  14. data/vendor/assets/ckeditor/ckeditor/_samples/api_dialog/my_dialog.js +28 -28
  15. data/vendor/assets/ckeditor/ckeditor/_samples/asp/advanced.asp +105 -105
  16. data/vendor/assets/ckeditor/ckeditor/_samples/asp/events.asp +136 -136
  17. data/vendor/assets/ckeditor/ckeditor/_samples/asp/index.html +103 -103
  18. data/vendor/assets/ckeditor/ckeditor/_samples/asp/replace.asp +72 -72
  19. data/vendor/assets/ckeditor/ckeditor/_samples/asp/replaceall.asp +77 -77
  20. data/vendor/assets/ckeditor/ckeditor/_samples/asp/sample_posteddata.asp +46 -46
  21. data/vendor/assets/ckeditor/ckeditor/_samples/asp/standalone.asp +72 -72
  22. data/vendor/assets/ckeditor/ckeditor/_samples/assets/_posteddata.php +59 -59
  23. data/vendor/assets/ckeditor/ckeditor/_samples/assets/output_xhtml.css +204 -204
  24. data/vendor/assets/ckeditor/ckeditor/_samples/assets/parsesample.css +70 -70
  25. data/vendor/assets/ckeditor/ckeditor/_samples/assets/swfobject.js +18 -18
  26. data/vendor/assets/ckeditor/ckeditor/_samples/autogrow.html +108 -107
  27. data/vendor/assets/ckeditor/ckeditor/_samples/bbcode.html +125 -125
  28. data/vendor/assets/ckeditor/ckeditor/_samples/devtools.html +94 -94
  29. data/vendor/assets/ckeditor/ckeditor/_samples/divreplace.html +154 -154
  30. data/vendor/assets/ckeditor/ckeditor/_samples/enterkey.html +115 -115
  31. data/vendor/assets/ckeditor/ckeditor/_samples/fullpage.html +82 -82
  32. data/vendor/assets/ckeditor/ckeditor/_samples/index.html +116 -116
  33. data/vendor/assets/ckeditor/ckeditor/_samples/jqueryadapter.html +99 -99
  34. data/vendor/assets/ckeditor/ckeditor/_samples/output_for_flash.html +275 -275
  35. data/vendor/assets/ckeditor/ckeditor/_samples/output_html.html +285 -285
  36. data/vendor/assets/ckeditor/ckeditor/_samples/output_xhtml.html +181 -177
  37. data/vendor/assets/ckeditor/ckeditor/_samples/php/advanced.php +120 -120
  38. data/vendor/assets/ckeditor/ckeditor/_samples/php/events.php +153 -153
  39. data/vendor/assets/ckeditor/ckeditor/_samples/php/index.html +47 -47
  40. data/vendor/assets/ckeditor/ckeditor/_samples/php/replace.php +87 -87
  41. data/vendor/assets/ckeditor/ckeditor/_samples/php/replaceall.php +88 -88
  42. data/vendor/assets/ckeditor/ckeditor/_samples/php/standalone.php +83 -83
  43. data/vendor/assets/ckeditor/ckeditor/_samples/placeholder.html +81 -81
  44. data/vendor/assets/ckeditor/ckeditor/_samples/readonly.html +91 -91
  45. data/vendor/assets/ckeditor/ckeditor/_samples/replacebyclass.html +64 -64
  46. data/vendor/assets/ckeditor/ckeditor/_samples/replacebycode.html +97 -97
  47. data/vendor/assets/ckeditor/ckeditor/_samples/sample.css +163 -163
  48. data/vendor/assets/ckeditor/ckeditor/_samples/sample.js +65 -65
  49. data/vendor/assets/ckeditor/ckeditor/_samples/sample_posteddata.php +21 -21
  50. data/vendor/assets/ckeditor/ckeditor/_samples/sharedspaces.html +153 -153
  51. data/vendor/assets/ckeditor/ckeditor/_samples/skins.html +110 -110
  52. data/vendor/assets/ckeditor/ckeditor/_samples/stylesheetparser.html +93 -93
  53. data/vendor/assets/ckeditor/ckeditor/_samples/tableresize.html +115 -115
  54. data/vendor/assets/ckeditor/ckeditor/_samples/ui_color.html +129 -129
  55. data/vendor/assets/ckeditor/ckeditor/_samples/ui_languages.html +134 -134
  56. data/vendor/assets/ckeditor/ckeditor/_source/adapters/jquery.js +306 -306
  57. data/vendor/assets/ckeditor/ckeditor/_source/core/_bootstrap.js +87 -87
  58. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor.js +141 -141
  59. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor_base.js +235 -227
  60. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor_basic.js +238 -238
  61. data/vendor/assets/ckeditor/ckeditor/_source/core/command.js +225 -209
  62. data/vendor/assets/ckeditor/ckeditor/_source/core/commanddefinition.js +129 -129
  63. data/vendor/assets/ckeditor/ckeditor/_source/core/config.js +447 -431
  64. data/vendor/assets/ckeditor/ckeditor/_source/core/dataprocessor.js +65 -65
  65. data/vendor/assets/ckeditor/ckeditor/_source/core/dom.js +20 -20
  66. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/comment.js +44 -32
  67. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/document.js +251 -251
  68. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/documentfragment.js +49 -49
  69. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/domobject.js +258 -258
  70. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/element.js +1796 -1681
  71. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/elementpath.js +117 -119
  72. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/event.js +145 -145
  73. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/node.js +691 -695
  74. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/nodelist.js +26 -26
  75. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/range.js +2068 -2032
  76. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/rangelist.js +213 -213
  77. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/text.js +128 -128
  78. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/walker.js +496 -462
  79. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/window.js +96 -96
  80. data/vendor/assets/ckeditor/ckeditor/_source/core/dtd.js +266 -266
  81. data/vendor/assets/ckeditor/ckeditor/_source/core/editor.js +1059 -1059
  82. data/vendor/assets/ckeditor/ckeditor/_source/core/editor_basic.js +186 -186
  83. data/vendor/assets/ckeditor/ckeditor/_source/core/env.js +305 -291
  84. data/vendor/assets/ckeditor/ckeditor/_source/core/event.js +342 -342
  85. data/vendor/assets/ckeditor/ckeditor/_source/core/eventInfo.js +120 -120
  86. data/vendor/assets/ckeditor/ckeditor/_source/core/focusmanager.js +152 -152
  87. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser.js +224 -224
  88. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/basicwriter.js +145 -145
  89. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/cdata.js +43 -43
  90. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/comment.js +60 -60
  91. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/element.js +308 -308
  92. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/filter.js +288 -288
  93. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/fragment.js +537 -497
  94. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/text.js +53 -55
  95. data/vendor/assets/ckeditor/ckeditor/_source/core/lang.js +157 -157
  96. data/vendor/assets/ckeditor/ckeditor/_source/core/loader.js +240 -240
  97. data/vendor/assets/ckeditor/ckeditor/_source/core/plugindefinition.js +83 -83
  98. data/vendor/assets/ckeditor/ckeditor/_source/core/plugins.js +103 -103
  99. data/vendor/assets/ckeditor/ckeditor/_source/core/resourcemanager.js +238 -238
  100. data/vendor/assets/ckeditor/ckeditor/_source/core/scriptloader.js +180 -180
  101. data/vendor/assets/ckeditor/ckeditor/_source/core/skins.js +184 -184
  102. data/vendor/assets/ckeditor/ckeditor/_source/core/themes.js +19 -19
  103. data/vendor/assets/ckeditor/ckeditor/_source/core/tools.js +763 -763
  104. data/vendor/assets/ckeditor/ckeditor/_source/core/ui.js +128 -128
  105. data/vendor/assets/ckeditor/ckeditor/_source/lang/_languages.js +84 -84
  106. data/vendor/assets/ckeditor/ckeditor/_source/lang/_translationstatus.txt +63 -61
  107. data/vendor/assets/ckeditor/ckeditor/_source/lang/af.js +815 -812
  108. data/vendor/assets/ckeditor/ckeditor/_source/lang/ar.js +815 -812
  109. data/vendor/assets/ckeditor/ckeditor/_source/lang/bg.js +815 -812
  110. data/vendor/assets/ckeditor/ckeditor/_source/lang/bn.js +815 -812
  111. data/vendor/assets/ckeditor/ckeditor/_source/lang/bs.js +815 -812
  112. data/vendor/assets/ckeditor/ckeditor/_source/lang/ca.js +815 -812
  113. data/vendor/assets/ckeditor/ckeditor/_source/lang/cs.js +815 -812
  114. data/vendor/assets/ckeditor/ckeditor/_source/lang/cy.js +815 -812
  115. data/vendor/assets/ckeditor/ckeditor/_source/lang/da.js +815 -812
  116. data/vendor/assets/ckeditor/ckeditor/_source/lang/de.js +815 -812
  117. data/vendor/assets/ckeditor/ckeditor/_source/lang/el.js +815 -812
  118. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-au.js +815 -812
  119. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-ca.js +815 -812
  120. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-gb.js +815 -812
  121. data/vendor/assets/ckeditor/ckeditor/_source/lang/en.js +815 -812
  122. data/vendor/assets/ckeditor/ckeditor/_source/lang/eo.js +815 -812
  123. data/vendor/assets/ckeditor/ckeditor/_source/lang/es.js +815 -812
  124. data/vendor/assets/ckeditor/ckeditor/_source/lang/et.js +815 -812
  125. data/vendor/assets/ckeditor/ckeditor/_source/lang/eu.js +815 -812
  126. data/vendor/assets/ckeditor/ckeditor/_source/lang/fa.js +815 -812
  127. data/vendor/assets/ckeditor/ckeditor/_source/lang/fi.js +815 -812
  128. data/vendor/assets/ckeditor/ckeditor/_source/lang/fo.js +815 -812
  129. data/vendor/assets/ckeditor/ckeditor/_source/lang/fr-ca.js +815 -812
  130. data/vendor/assets/ckeditor/ckeditor/_source/lang/fr.js +815 -812
  131. data/vendor/assets/ckeditor/ckeditor/_source/lang/gl.js +815 -812
  132. data/vendor/assets/ckeditor/ckeditor/_source/lang/gu.js +815 -812
  133. data/vendor/assets/ckeditor/ckeditor/_source/lang/he.js +815 -812
  134. data/vendor/assets/ckeditor/ckeditor/_source/lang/hi.js +815 -812
  135. data/vendor/assets/ckeditor/ckeditor/_source/lang/hr.js +815 -812
  136. data/vendor/assets/ckeditor/ckeditor/_source/lang/hu.js +815 -812
  137. data/vendor/assets/ckeditor/ckeditor/_source/lang/is.js +815 -812
  138. data/vendor/assets/ckeditor/ckeditor/_source/lang/it.js +815 -812
  139. data/vendor/assets/ckeditor/ckeditor/_source/lang/ja.js +815 -812
  140. data/vendor/assets/ckeditor/ckeditor/_source/lang/ka.js +815 -812
  141. data/vendor/assets/ckeditor/ckeditor/_source/lang/km.js +815 -812
  142. data/vendor/assets/ckeditor/ckeditor/_source/lang/ko.js +815 -812
  143. data/vendor/assets/ckeditor/ckeditor/_source/lang/lt.js +815 -812
  144. data/vendor/assets/ckeditor/ckeditor/_source/lang/lv.js +815 -812
  145. data/vendor/assets/ckeditor/ckeditor/_source/lang/mk.js +814 -0
  146. data/vendor/assets/ckeditor/ckeditor/_source/lang/mn.js +815 -812
  147. data/vendor/assets/ckeditor/ckeditor/_source/lang/ms.js +815 -812
  148. data/vendor/assets/ckeditor/ckeditor/_source/lang/nb.js +815 -812
  149. data/vendor/assets/ckeditor/ckeditor/_source/lang/nl.js +815 -812
  150. data/vendor/assets/ckeditor/ckeditor/_source/lang/no.js +815 -812
  151. data/vendor/assets/ckeditor/ckeditor/_source/lang/pl.js +815 -812
  152. data/vendor/assets/ckeditor/ckeditor/_source/lang/pt-br.js +814 -811
  153. data/vendor/assets/ckeditor/ckeditor/_source/lang/pt.js +815 -812
  154. data/vendor/assets/ckeditor/ckeditor/_source/lang/ro.js +815 -812
  155. data/vendor/assets/ckeditor/ckeditor/_source/lang/ru.js +815 -812
  156. data/vendor/assets/ckeditor/ckeditor/_source/lang/sk.js +815 -812
  157. data/vendor/assets/ckeditor/ckeditor/_source/lang/sl.js +815 -812
  158. data/vendor/assets/ckeditor/ckeditor/_source/lang/sr-latn.js +815 -812
  159. data/vendor/assets/ckeditor/ckeditor/_source/lang/sr.js +815 -812
  160. data/vendor/assets/ckeditor/ckeditor/_source/lang/sv.js +814 -811
  161. data/vendor/assets/ckeditor/ckeditor/_source/lang/th.js +815 -812
  162. data/vendor/assets/ckeditor/ckeditor/_source/lang/tr.js +814 -811
  163. data/vendor/assets/ckeditor/ckeditor/_source/lang/ug.js +814 -0
  164. data/vendor/assets/ckeditor/ckeditor/_source/lang/uk.js +815 -812
  165. data/vendor/assets/ckeditor/ckeditor/_source/lang/vi.js +815 -812
  166. data/vendor/assets/ckeditor/ckeditor/_source/lang/zh-cn.js +815 -812
  167. data/vendor/assets/ckeditor/ckeditor/_source/lang/zh.js +815 -812
  168. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/dialogs/a11yhelp.js +222 -222
  169. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/_translationstatus.txt +23 -0
  170. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/cs.js +89 -0
  171. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/cy.js +89 -0
  172. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/da.js +89 -0
  173. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/de.js +89 -0
  174. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/el.js +89 -0
  175. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/en.js +108 -108
  176. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/eo.js +89 -0
  177. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/fa.js +89 -0
  178. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/fi.js +89 -0
  179. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/fr.js +89 -0
  180. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/gu.js +89 -0
  181. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/he.js +89 -216
  182. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/it.js +89 -0
  183. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/mk.js +89 -0
  184. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/nb.js +89 -0
  185. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/nl.js +89 -0
  186. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/no.js +89 -0
  187. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/tr.js +89 -0
  188. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/ug.js +89 -0
  189. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/vi.js +89 -0
  190. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/zh-cn.js +89 -0
  191. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/plugin.js +47 -47
  192. data/vendor/assets/ckeditor/ckeditor/_source/plugins/about/dialogs/about.js +76 -76
  193. data/vendor/assets/ckeditor/ckeditor/_source/plugins/about/plugin.js +24 -24
  194. data/vendor/assets/ckeditor/ckeditor/_source/plugins/adobeair/plugin.js +228 -228
  195. data/vendor/assets/ckeditor/ckeditor/_source/plugins/ajax/plugin.js +152 -152
  196. data/vendor/assets/ckeditor/ckeditor/_source/plugins/autogrow/plugin.js +141 -88
  197. data/vendor/assets/ckeditor/ckeditor/_source/plugins/basicstyles/plugin.js +129 -101
  198. data/vendor/assets/ckeditor/ckeditor/_source/plugins/bbcode/plugin.js +931 -931
  199. data/vendor/assets/ckeditor/ckeditor/_source/plugins/bidi/plugin.js +334 -334
  200. data/vendor/assets/ckeditor/ckeditor/_source/plugins/blockquote/plugin.js +305 -305
  201. data/vendor/assets/ckeditor/ckeditor/_source/plugins/button/plugin.js +290 -290
  202. data/vendor/assets/ckeditor/ckeditor/_source/plugins/clipboard/dialogs/paste.js +223 -223
  203. data/vendor/assets/ckeditor/ckeditor/_source/plugins/clipboard/plugin.js +479 -453
  204. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colorbutton/plugin.js +300 -294
  205. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colordialog/dialogs/colordialog.js +387 -340
  206. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colordialog/plugin.js +15 -15
  207. data/vendor/assets/ckeditor/ckeditor/_source/plugins/contextmenu/plugin.js +179 -177
  208. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/_translationstatus.txt +27 -0
  209. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/bg.js +16 -0
  210. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/cs.js +16 -0
  211. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/cy.js +16 -0
  212. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/da.js +16 -0
  213. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/de.js +16 -0
  214. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/el.js +16 -0
  215. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/en.js +16 -16
  216. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/eo.js +16 -0
  217. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/et.js +16 -0
  218. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/fa.js +16 -0
  219. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/fi.js +16 -0
  220. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/fr.js +16 -0
  221. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/gu.js +16 -0
  222. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/he.js +16 -0
  223. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/hr.js +16 -0
  224. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/it.js +16 -0
  225. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/nb.js +16 -0
  226. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/nl.js +16 -0
  227. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/no.js +16 -0
  228. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/pl.js +16 -0
  229. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/tr.js +16 -0
  230. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/ug.js +16 -0
  231. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/uk.js +16 -0
  232. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/vi.js +16 -0
  233. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/zh-cn.js +16 -0
  234. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/plugin.js +173 -173
  235. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialog/dialogDefinition.js +1166 -1166
  236. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialog/plugin.js +3319 -3289
  237. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialogadvtab/plugin.js +208 -207
  238. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialogui/plugin.js +1549 -1541
  239. data/vendor/assets/ckeditor/ckeditor/_source/plugins/div/dialogs/div.js +535 -535
  240. data/vendor/assets/ckeditor/ckeditor/_source/plugins/div/plugin.js +121 -121
  241. data/vendor/assets/ckeditor/ckeditor/_source/plugins/docprops/dialogs/docprops.js +674 -686
  242. data/vendor/assets/ckeditor/ckeditor/_source/plugins/docprops/plugin.js +22 -22
  243. data/vendor/assets/ckeditor/ckeditor/_source/plugins/domiterator/plugin.js +366 -361
  244. data/vendor/assets/ckeditor/ckeditor/_source/plugins/editingblock/plugin.js +278 -275
  245. data/vendor/assets/ckeditor/ckeditor/_source/plugins/elementspath/plugin.js +218 -218
  246. data/vendor/assets/ckeditor/ckeditor/_source/plugins/enterkey/plugin.js +433 -413
  247. data/vendor/assets/ckeditor/ckeditor/_source/plugins/entities/plugin.js +254 -250
  248. data/vendor/assets/ckeditor/ckeditor/_source/plugins/fakeobjects/plugin.js +175 -175
  249. data/vendor/assets/ckeditor/ckeditor/_source/plugins/filebrowser/plugin.js +533 -524
  250. data/vendor/assets/ckeditor/ckeditor/_source/plugins/find/dialogs/find.js +915 -903
  251. data/vendor/assets/ckeditor/ckeditor/_source/plugins/find/plugin.js +47 -47
  252. data/vendor/assets/ckeditor/ckeditor/_source/plugins/flash/dialogs/flash.js +674 -673
  253. data/vendor/assets/ckeditor/ckeditor/_source/plugins/flash/plugin.js +154 -154
  254. data/vendor/assets/ckeditor/ckeditor/_source/plugins/floatpanel/plugin.js +476 -428
  255. data/vendor/assets/ckeditor/ckeditor/_source/plugins/font/plugin.js +234 -234
  256. data/vendor/assets/ckeditor/ckeditor/_source/plugins/format/plugin.js +197 -197
  257. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/button.js +118 -118
  258. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/checkbox.js +153 -153
  259. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/form.js +177 -177
  260. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/hiddenfield.js +100 -100
  261. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/radio.js +135 -135
  262. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/select.js +558 -558
  263. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/textarea.js +135 -114
  264. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/textfield.js +199 -199
  265. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/plugin.js +288 -288
  266. data/vendor/assets/ckeditor/ckeditor/_source/plugins/horizontalrule/plugin.js +48 -48
  267. data/vendor/assets/ckeditor/ckeditor/_source/plugins/htmldataprocessor/plugin.js +600 -595
  268. data/vendor/assets/ckeditor/ckeditor/_source/plugins/htmlwriter/plugin.js +319 -319
  269. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframe/dialogs/iframe.js +229 -229
  270. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframe/plugin.js +87 -87
  271. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframedialog/plugin.js +188 -188
  272. data/vendor/assets/ckeditor/ckeditor/_source/plugins/image/dialogs/image.js +1406 -1406
  273. data/vendor/assets/ckeditor/ckeditor/_source/plugins/image/plugin.js +164 -81
  274. data/vendor/assets/ckeditor/ckeditor/_source/plugins/indent/plugin.js +480 -461
  275. data/vendor/assets/ckeditor/ckeditor/_source/plugins/justify/plugin.js +251 -253
  276. data/vendor/assets/ckeditor/ckeditor/_source/plugins/keystrokes/plugin.js +225 -225
  277. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/dialogs/anchor.js +144 -144
  278. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/dialogs/link.js +1427 -1424
  279. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/plugin.js +374 -374
  280. data/vendor/assets/ckeditor/ckeditor/_source/plugins/list/plugin.js +967 -734
  281. data/vendor/assets/ckeditor/ckeditor/_source/plugins/listblock/plugin.js +260 -268
  282. data/vendor/assets/ckeditor/ckeditor/_source/plugins/liststyle/dialogs/liststyle.js +225 -225
  283. data/vendor/assets/ckeditor/ckeditor/_source/plugins/liststyle/plugin.js +66 -66
  284. data/vendor/assets/ckeditor/ckeditor/_source/plugins/maximize/plugin.js +353 -352
  285. data/vendor/assets/ckeditor/ckeditor/_source/plugins/menu/plugin.js +542 -541
  286. data/vendor/assets/ckeditor/ckeditor/_source/plugins/menubutton/plugin.js +98 -98
  287. data/vendor/assets/ckeditor/ckeditor/_source/plugins/newpage/plugin.js +55 -54
  288. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pagebreak/plugin.js +164 -164
  289. data/vendor/assets/ckeditor/ckeditor/_source/plugins/panel/plugin.js +396 -403
  290. data/vendor/assets/ckeditor/ckeditor/_source/plugins/panelbutton/plugin.js +144 -144
  291. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastefromword/filter/default.js +1367 -1367
  292. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastefromword/plugin.js +141 -141
  293. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastetext/dialogs/pastetext.js +67 -67
  294. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastetext/plugin.js +98 -98
  295. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/dialogs/placeholder.js +71 -71
  296. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/_translationstatus.txt +26 -0
  297. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/bg.js +16 -0
  298. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/cs.js +16 -0
  299. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/cy.js +16 -0
  300. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/da.js +16 -0
  301. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/de.js +16 -0
  302. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/el.js +16 -0
  303. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/en.js +16 -16
  304. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/eo.js +16 -0
  305. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/et.js +16 -0
  306. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/fa.js +16 -0
  307. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/fi.js +16 -0
  308. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/fr.js +16 -0
  309. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/he.js +16 -16
  310. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/hr.js +16 -0
  311. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/it.js +16 -0
  312. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/nb.js +16 -0
  313. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/nl.js +16 -0
  314. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/no.js +16 -0
  315. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/pl.js +16 -0
  316. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/tr.js +16 -0
  317. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/ug.js +16 -0
  318. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/uk.js +16 -0
  319. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/vi.js +16 -0
  320. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/zh-cn.js +16 -0
  321. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/plugin.js +171 -171
  322. data/vendor/assets/ckeditor/ckeditor/_source/plugins/popup/plugin.js +69 -64
  323. data/vendor/assets/ckeditor/ckeditor/_source/plugins/preview/plugin.js +113 -109
  324. data/vendor/assets/ckeditor/ckeditor/_source/plugins/print/plugin.js +42 -42
  325. data/vendor/assets/ckeditor/ckeditor/_source/plugins/removeformat/plugin.js +185 -185
  326. data/vendor/assets/ckeditor/ckeditor/_source/plugins/resize/plugin.js +169 -168
  327. data/vendor/assets/ckeditor/ckeditor/_source/plugins/richcombo/plugin.js +381 -381
  328. data/vendor/assets/ckeditor/ckeditor/_source/plugins/save/plugin.js +56 -56
  329. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/dialogs/options.js +537 -537
  330. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/dialogs/toolbar.css +71 -71
  331. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/plugin.js +973 -964
  332. data/vendor/assets/ckeditor/ckeditor/_source/plugins/selection/plugin.js +1855 -1601
  333. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/plugin.js +160 -160
  334. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showborders/plugin.js +207 -207
  335. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/dialogs/smiley.js +224 -224
  336. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/plugin.js +94 -94
  337. data/vendor/assets/ckeditor/ckeditor/_source/plugins/sourcearea/plugin.js +209 -209
  338. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/dialogs/specialchar.js +350 -350
  339. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/_translationstatus.txt +19 -0
  340. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/cs.js +126 -0
  341. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/cy.js +126 -0
  342. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/de.js +126 -0
  343. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/en.js +126 -89
  344. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/eo.js +126 -0
  345. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/et.js +126 -0
  346. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/fa.js +126 -0
  347. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/fi.js +126 -0
  348. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/fr.js +126 -0
  349. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/hr.js +126 -0
  350. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/it.js +126 -0
  351. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/nb.js +126 -0
  352. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/nl.js +126 -0
  353. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/no.js +126 -0
  354. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/tr.js +126 -0
  355. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/ug.js +126 -0
  356. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/zh-cn.js +126 -0
  357. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/plugin.js +70 -70
  358. data/vendor/assets/ckeditor/ckeditor/_source/plugins/styles/plugin.js +1706 -1696
  359. data/vendor/assets/ckeditor/ckeditor/_source/plugins/styles/styles/default.js +88 -88
  360. data/vendor/assets/ckeditor/ckeditor/_source/plugins/stylescombo/plugin.js +218 -218
  361. data/vendor/assets/ckeditor/ckeditor/_source/plugins/stylesheetparser/plugin.js +148 -148
  362. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tab/plugin.js +367 -367
  363. data/vendor/assets/ckeditor/ckeditor/_source/plugins/table/dialogs/table.js +618 -602
  364. data/vendor/assets/ckeditor/ckeditor/_source/plugins/table/plugin.js +78 -78
  365. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tableresize/plugin.js +443 -443
  366. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tabletools/dialogs/tableCell.js +520 -525
  367. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tabletools/plugin.js +1185 -1194
  368. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/dialogs/templates.js +234 -234
  369. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/plugin.js +100 -99
  370. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/templates/default.js +94 -94
  371. data/vendor/assets/ckeditor/ckeditor/_source/plugins/toolbar/plugin.js +545 -545
  372. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/dialogs/uicolor.js +205 -205
  373. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/_translationstatus.txt +27 -0
  374. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/bg.js +15 -0
  375. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/cs.js +15 -0
  376. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/cy.js +15 -0
  377. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/da.js +15 -0
  378. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/de.js +15 -0
  379. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/el.js +15 -0
  380. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/en.js +15 -15
  381. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/eo.js +15 -0
  382. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/et.js +15 -0
  383. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/fa.js +15 -0
  384. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/fi.js +15 -0
  385. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/fr.js +15 -0
  386. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/he.js +15 -15
  387. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/hr.js +15 -0
  388. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/it.js +15 -0
  389. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/mk.js +15 -0
  390. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/nb.js +15 -0
  391. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/nl.js +15 -0
  392. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/no.js +15 -0
  393. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/pl.js +15 -0
  394. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/tr.js +15 -0
  395. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/ug.js +15 -0
  396. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/uk.js +15 -0
  397. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/vi.js +15 -0
  398. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/zh-cn.js +15 -0
  399. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/plugin.js +37 -37
  400. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/assets/yui.css +15 -15
  401. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/yui.js +71 -71
  402. data/vendor/assets/ckeditor/ckeditor/_source/plugins/undo/plugin.js +593 -580
  403. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/ciframe.html +49 -49
  404. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/tmpFrameset.html +52 -52
  405. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/wsc.css +82 -82
  406. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/wsc.js +192 -192
  407. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/plugin.js +33 -33
  408. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wysiwygarea/plugin.js +1346 -1351
  409. data/vendor/assets/ckeditor/ckeditor/_source/plugins/xml/plugin.js +170 -170
  410. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/dialog.css +989 -943
  411. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/editor.css +25 -25
  412. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/elementspath.css +73 -73
  413. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/icons.css +366 -366
  414. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/mainui.css +206 -203
  415. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/menu.css +232 -232
  416. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/panel.css +217 -217
  417. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/presets.css +49 -49
  418. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/reset.css +85 -84
  419. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/richcombo.css +287 -287
  420. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/skin.js +236 -236
  421. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/templates.css +88 -88
  422. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/toolbar.css +408 -407
  423. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/dialog.css +891 -844
  424. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/editor.css +25 -25
  425. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/elementspath.css +74 -74
  426. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/icons.css +363 -363
  427. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/mainui.css +153 -153
  428. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/menu.css +229 -229
  429. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/panel.css +212 -212
  430. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/presets.css +49 -49
  431. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/reset.css +85 -84
  432. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/richcombo.css +309 -309
  433. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/skin.js +74 -74
  434. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/templates.css +87 -87
  435. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/toolbar.css +522 -522
  436. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/dialog.css +907 -861
  437. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/editor.css +25 -25
  438. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/elementspath.css +74 -74
  439. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/icons.css +363 -363
  440. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/mainui.css +162 -162
  441. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/menu.css +232 -232
  442. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/panel.css +212 -212
  443. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/presets.css +50 -50
  444. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/reset.css +85 -84
  445. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/richcombo.css +302 -302
  446. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/skin.js +70 -70
  447. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/templates.css +87 -87
  448. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/toolbar.css +465 -465
  449. data/vendor/assets/ckeditor/ckeditor/_source/themes/default/theme.js +407 -395
  450. data/vendor/assets/ckeditor/ckeditor/adapters/jquery.js +6 -6
  451. data/vendor/assets/ckeditor/ckeditor/ckeditor.asp +955 -955
  452. data/vendor/assets/ckeditor/ckeditor/ckeditor.js +134 -130
  453. data/vendor/assets/ckeditor/ckeditor/ckeditor.pack +211 -211
  454. data/vendor/assets/ckeditor/ckeditor/ckeditor.php +29 -29
  455. data/vendor/assets/ckeditor/ckeditor/ckeditor_basic.js +8 -8
  456. data/vendor/assets/ckeditor/ckeditor/ckeditor_basic_source.js +20 -20
  457. data/vendor/assets/ckeditor/ckeditor/ckeditor_php4.php +566 -566
  458. data/vendor/assets/ckeditor/ckeditor/ckeditor_php5.php +556 -556
  459. data/vendor/assets/ckeditor/ckeditor/ckeditor_source.js +14 -4
  460. data/vendor/assets/ckeditor/ckeditor/config.js +11 -11
  461. data/vendor/assets/ckeditor/ckeditor/contents.css +25 -25
  462. data/vendor/assets/ckeditor/ckeditor/lang/_languages.js +1 -1
  463. data/vendor/assets/ckeditor/ckeditor/lang/_translationstatus.txt +61 -59
  464. data/vendor/assets/ckeditor/ckeditor/lang/af.js +2 -2
  465. data/vendor/assets/ckeditor/ckeditor/lang/ar.js +2 -2
  466. data/vendor/assets/ckeditor/ckeditor/lang/bg.js +2 -2
  467. data/vendor/assets/ckeditor/ckeditor/lang/bn.js +2 -2
  468. data/vendor/assets/ckeditor/ckeditor/lang/bs.js +2 -2
  469. data/vendor/assets/ckeditor/ckeditor/lang/ca.js +2 -2
  470. data/vendor/assets/ckeditor/ckeditor/lang/cs.js +2 -2
  471. data/vendor/assets/ckeditor/ckeditor/lang/cy.js +2 -2
  472. data/vendor/assets/ckeditor/ckeditor/lang/da.js +2 -2
  473. data/vendor/assets/ckeditor/ckeditor/lang/de.js +2 -2
  474. data/vendor/assets/ckeditor/ckeditor/lang/el.js +2 -2
  475. data/vendor/assets/ckeditor/ckeditor/lang/en-au.js +2 -2
  476. data/vendor/assets/ckeditor/ckeditor/lang/en-ca.js +2 -2
  477. data/vendor/assets/ckeditor/ckeditor/lang/en-gb.js +2 -2
  478. data/vendor/assets/ckeditor/ckeditor/lang/en.js +2 -2
  479. data/vendor/assets/ckeditor/ckeditor/lang/eo.js +2 -2
  480. data/vendor/assets/ckeditor/ckeditor/lang/es.js +2 -2
  481. data/vendor/assets/ckeditor/ckeditor/lang/et.js +2 -2
  482. data/vendor/assets/ckeditor/ckeditor/lang/eu.js +2 -2
  483. data/vendor/assets/ckeditor/ckeditor/lang/fa.js +2 -2
  484. data/vendor/assets/ckeditor/ckeditor/lang/fi.js +2 -2
  485. data/vendor/assets/ckeditor/ckeditor/lang/fo.js +2 -2
  486. data/vendor/assets/ckeditor/ckeditor/lang/fr-ca.js +2 -2
  487. data/vendor/assets/ckeditor/ckeditor/lang/fr.js +2 -2
  488. data/vendor/assets/ckeditor/ckeditor/lang/gl.js +2 -2
  489. data/vendor/assets/ckeditor/ckeditor/lang/gu.js +2 -2
  490. data/vendor/assets/ckeditor/ckeditor/lang/he.js +2 -2
  491. data/vendor/assets/ckeditor/ckeditor/lang/hi.js +2 -2
  492. data/vendor/assets/ckeditor/ckeditor/lang/hr.js +2 -2
  493. data/vendor/assets/ckeditor/ckeditor/lang/hu.js +2 -2
  494. data/vendor/assets/ckeditor/ckeditor/lang/is.js +2 -2
  495. data/vendor/assets/ckeditor/ckeditor/lang/it.js +2 -2
  496. data/vendor/assets/ckeditor/ckeditor/lang/ja.js +2 -2
  497. data/vendor/assets/ckeditor/ckeditor/lang/ka.js +2 -2
  498. data/vendor/assets/ckeditor/ckeditor/lang/km.js +2 -2
  499. data/vendor/assets/ckeditor/ckeditor/lang/ko.js +2 -2
  500. data/vendor/assets/ckeditor/ckeditor/lang/lt.js +2 -2
  501. data/vendor/assets/ckeditor/ckeditor/lang/lv.js +2 -2
  502. data/vendor/assets/ckeditor/ckeditor/lang/mk.js +6 -0
  503. data/vendor/assets/ckeditor/ckeditor/lang/mn.js +2 -2
  504. data/vendor/assets/ckeditor/ckeditor/lang/ms.js +2 -2
  505. data/vendor/assets/ckeditor/ckeditor/lang/nb.js +2 -2
  506. data/vendor/assets/ckeditor/ckeditor/lang/nl.js +2 -2
  507. data/vendor/assets/ckeditor/ckeditor/lang/no.js +2 -2
  508. data/vendor/assets/ckeditor/ckeditor/lang/pl.js +2 -2
  509. data/vendor/assets/ckeditor/ckeditor/lang/pt-br.js +2 -2
  510. data/vendor/assets/ckeditor/ckeditor/lang/pt.js +2 -2
  511. data/vendor/assets/ckeditor/ckeditor/lang/ro.js +2 -2
  512. data/vendor/assets/ckeditor/ckeditor/lang/ru.js +2 -2
  513. data/vendor/assets/ckeditor/ckeditor/lang/sk.js +2 -2
  514. data/vendor/assets/ckeditor/ckeditor/lang/sl.js +2 -2
  515. data/vendor/assets/ckeditor/ckeditor/lang/sr-latn.js +2 -2
  516. data/vendor/assets/ckeditor/ckeditor/lang/sr.js +2 -2
  517. data/vendor/assets/ckeditor/ckeditor/lang/sv.js +2 -2
  518. data/vendor/assets/ckeditor/ckeditor/lang/th.js +2 -2
  519. data/vendor/assets/ckeditor/ckeditor/lang/tr.js +2 -2
  520. data/vendor/assets/ckeditor/ckeditor/lang/ug.js +6 -0
  521. data/vendor/assets/ckeditor/ckeditor/lang/uk.js +2 -2
  522. data/vendor/assets/ckeditor/ckeditor/lang/vi.js +2 -2
  523. data/vendor/assets/ckeditor/ckeditor/lang/zh-cn.js +2 -2
  524. data/vendor/assets/ckeditor/ckeditor/lang/zh.js +2 -2
  525. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +1 -1
  526. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/_translationstatus.txt +23 -0
  527. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/cs.js +6 -0
  528. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/cy.js +6 -0
  529. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/da.js +6 -0
  530. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/de.js +6 -0
  531. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/el.js +6 -0
  532. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/en.js +2 -2
  533. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/eo.js +6 -0
  534. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/fa.js +6 -0
  535. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/fi.js +6 -0
  536. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/fr.js +6 -0
  537. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/gu.js +6 -0
  538. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/he.js +2 -2
  539. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/it.js +6 -0
  540. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/mk.js +6 -0
  541. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/nb.js +6 -0
  542. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/nl.js +6 -0
  543. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/no.js +6 -0
  544. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/tr.js +6 -0
  545. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/ug.js +6 -0
  546. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/vi.js +6 -0
  547. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/zh-cn.js +6 -0
  548. data/vendor/assets/ckeditor/ckeditor/plugins/about/dialogs/about.js +1 -1
  549. data/vendor/assets/ckeditor/ckeditor/plugins/adobeair/plugin.js +1 -1
  550. data/vendor/assets/ckeditor/ckeditor/plugins/ajax/plugin.js +1 -1
  551. data/vendor/assets/ckeditor/ckeditor/plugins/autogrow/plugin.js +2 -2
  552. data/vendor/assets/ckeditor/ckeditor/plugins/bbcode/plugin.js +1 -1
  553. data/vendor/assets/ckeditor/ckeditor/plugins/clipboard/dialogs/paste.js +2 -2
  554. data/vendor/assets/ckeditor/ckeditor/plugins/colordialog/dialogs/colordialog.js +3 -3
  555. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/_translationstatus.txt +27 -0
  556. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/bg.js +6 -0
  557. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/cs.js +6 -0
  558. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/cy.js +6 -0
  559. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/da.js +6 -0
  560. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/de.js +6 -0
  561. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/el.js +6 -0
  562. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/en.js +1 -1
  563. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/eo.js +6 -0
  564. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/et.js +6 -0
  565. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/fa.js +6 -0
  566. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/fi.js +6 -0
  567. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/fr.js +6 -0
  568. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/gu.js +6 -0
  569. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/he.js +6 -0
  570. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/hr.js +6 -0
  571. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/it.js +6 -0
  572. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/nb.js +6 -0
  573. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/nl.js +6 -0
  574. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/no.js +6 -0
  575. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/pl.js +6 -0
  576. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/tr.js +6 -0
  577. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/ug.js +6 -0
  578. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/uk.js +6 -0
  579. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/vi.js +6 -0
  580. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/zh-cn.js +6 -0
  581. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/plugin.js +2 -2
  582. data/vendor/assets/ckeditor/ckeditor/plugins/dialog/dialogDefinition.js +1 -1
  583. data/vendor/assets/ckeditor/ckeditor/plugins/div/dialogs/div.js +1 -1
  584. data/vendor/assets/ckeditor/ckeditor/plugins/docprops/dialogs/docprops.js +3 -3
  585. data/vendor/assets/ckeditor/ckeditor/plugins/docprops/plugin.js +1 -1
  586. data/vendor/assets/ckeditor/ckeditor/plugins/find/dialogs/find.js +6 -6
  587. data/vendor/assets/ckeditor/ckeditor/plugins/flash/dialogs/flash.js +2 -2
  588. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/button.js +1 -1
  589. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/checkbox.js +1 -1
  590. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/form.js +1 -1
  591. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/hiddenfield.js +1 -1
  592. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/radio.js +1 -1
  593. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/select.js +1 -1
  594. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/textarea.js +2 -2
  595. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/textfield.js +1 -1
  596. data/vendor/assets/ckeditor/ckeditor/plugins/iframe/dialogs/iframe.js +1 -1
  597. data/vendor/assets/ckeditor/ckeditor/plugins/iframedialog/plugin.js +1 -1
  598. data/vendor/assets/ckeditor/ckeditor/plugins/image/dialogs/image.js +9 -9
  599. data/vendor/assets/ckeditor/ckeditor/plugins/link/dialogs/anchor.js +1 -1
  600. data/vendor/assets/ckeditor/ckeditor/plugins/link/dialogs/link.js +6 -6
  601. data/vendor/assets/ckeditor/ckeditor/plugins/liststyle/dialogs/liststyle.js +1 -1
  602. data/vendor/assets/ckeditor/ckeditor/plugins/pastefromword/filter/default.js +1 -1
  603. data/vendor/assets/ckeditor/ckeditor/plugins/pastetext/dialogs/pastetext.js +1 -1
  604. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/dialogs/placeholder.js +1 -1
  605. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/_translationstatus.txt +26 -0
  606. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/bg.js +6 -0
  607. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/cs.js +6 -0
  608. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/cy.js +6 -0
  609. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/da.js +6 -0
  610. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/de.js +6 -0
  611. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/el.js +6 -0
  612. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/en.js +1 -1
  613. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/eo.js +6 -0
  614. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/et.js +6 -0
  615. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/fa.js +6 -0
  616. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/fi.js +6 -0
  617. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/fr.js +6 -0
  618. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/he.js +1 -1
  619. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/hr.js +6 -0
  620. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/it.js +6 -0
  621. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/nb.js +6 -0
  622. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/nl.js +6 -0
  623. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/no.js +6 -0
  624. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/pl.js +6 -0
  625. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/tr.js +6 -0
  626. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/ug.js +6 -0
  627. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/uk.js +6 -0
  628. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/vi.js +6 -0
  629. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/zh-cn.js +6 -0
  630. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/plugin.js +2 -2
  631. data/vendor/assets/ckeditor/ckeditor/plugins/scayt/dialogs/options.js +1 -1
  632. data/vendor/assets/ckeditor/ckeditor/plugins/scayt/dialogs/toolbar.css +1 -1
  633. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/dialogs/smiley.js +1 -1
  634. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/specialchar.js +2 -2
  635. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/_translationstatus.txt +19 -0
  636. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/cs.js +6 -0
  637. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/cy.js +6 -0
  638. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/de.js +6 -0
  639. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/en.js +2 -2
  640. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/eo.js +6 -0
  641. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/et.js +6 -0
  642. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/fa.js +6 -0
  643. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/fi.js +6 -0
  644. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/fr.js +6 -0
  645. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/hr.js +6 -0
  646. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/it.js +6 -0
  647. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/nb.js +6 -0
  648. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/nl.js +6 -0
  649. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/no.js +6 -0
  650. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/tr.js +6 -0
  651. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/ug.js +6 -0
  652. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/zh-cn.js +6 -0
  653. data/vendor/assets/ckeditor/ckeditor/plugins/styles/styles/default.js +1 -1
  654. data/vendor/assets/ckeditor/ckeditor/plugins/stylesheetparser/plugin.js +1 -1
  655. data/vendor/assets/ckeditor/ckeditor/plugins/table/dialogs/table.js +5 -5
  656. data/vendor/assets/ckeditor/ckeditor/plugins/tableresize/plugin.js +1 -1
  657. data/vendor/assets/ckeditor/ckeditor/plugins/tabletools/dialogs/tableCell.js +3 -3
  658. data/vendor/assets/ckeditor/ckeditor/plugins/templates/dialogs/templates.js +1 -1
  659. data/vendor/assets/ckeditor/ckeditor/plugins/templates/templates/default.js +1 -1
  660. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/dialogs/uicolor.js +1 -1
  661. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/_translationstatus.txt +27 -0
  662. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/bg.js +6 -0
  663. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/cs.js +6 -0
  664. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/cy.js +6 -0
  665. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/da.js +6 -0
  666. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/de.js +6 -0
  667. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/el.js +6 -0
  668. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/en.js +1 -1
  669. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/eo.js +6 -0
  670. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/et.js +6 -0
  671. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/fa.js +6 -0
  672. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/fi.js +6 -0
  673. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/fr.js +6 -0
  674. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/he.js +1 -1
  675. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/hr.js +6 -0
  676. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/it.js +6 -0
  677. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/mk.js +6 -0
  678. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/nb.js +6 -0
  679. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/nl.js +6 -0
  680. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/no.js +6 -0
  681. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/pl.js +6 -0
  682. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/tr.js +6 -0
  683. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/ug.js +6 -0
  684. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/uk.js +6 -0
  685. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/vi.js +6 -0
  686. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/zh-cn.js +6 -0
  687. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/plugin.js +2 -2
  688. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/yui/assets/yui.css +1 -1
  689. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/yui/yui.js +1 -1
  690. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/dialogs/ciframe.html +1 -1
  691. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +1 -1
  692. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/dialogs/wsc.css +1 -1
  693. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/dialogs/wsc.js +2 -2
  694. data/vendor/assets/ckeditor/ckeditor/plugins/xml/plugin.js +1 -1
  695. data/vendor/assets/ckeditor/ckeditor/skins/kama/dialog.css +2 -2
  696. data/vendor/assets/ckeditor/ckeditor/skins/kama/editor.css +4 -4
  697. data/vendor/assets/ckeditor/ckeditor/skins/kama/skin.js +1 -1
  698. data/vendor/assets/ckeditor/ckeditor/skins/kama/templates.css +1 -1
  699. data/vendor/assets/ckeditor/ckeditor/skins/office2003/dialog.css +2 -2
  700. data/vendor/assets/ckeditor/ckeditor/skins/office2003/editor.css +2 -2
  701. data/vendor/assets/ckeditor/ckeditor/skins/office2003/skin.js +1 -1
  702. data/vendor/assets/ckeditor/ckeditor/skins/office2003/templates.css +1 -1
  703. data/vendor/assets/ckeditor/ckeditor/skins/v2/dialog.css +2 -2
  704. data/vendor/assets/ckeditor/ckeditor/skins/v2/editor.css +2 -2
  705. data/vendor/assets/ckeditor/ckeditor/skins/v2/skin.js +1 -1
  706. data/vendor/assets/ckeditor/ckeditor/skins/v2/templates.css +1 -1
  707. data/vendor/assets/ckeditor/ckeditor/themes/default/theme.js +8 -8
  708. metadata +225 -3
@@ -1,1406 +1,1406 @@
1
- /*
2
- Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3
- For licensing, see LICENSE.html or http://ckeditor.com/license
4
- */
5
-
6
- (function()
7
- {
8
- var imageDialog = function( editor, dialogType )
9
- {
10
- // Load image preview.
11
- var IMAGE = 1,
12
- LINK = 2,
13
- PREVIEW = 4,
14
- CLEANUP = 8,
15
- regexGetSize = /^\s*(\d+)((px)|\%)?\s*$/i,
16
- regexGetSizeOrEmpty = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i,
17
- pxLengthRegex = /^\d+px$/;
18
-
19
- var onSizeChange = function()
20
- {
21
- var value = this.getValue(), // This = input element.
22
- dialog = this.getDialog(),
23
- aMatch = value.match( regexGetSize ); // Check value
24
- if ( aMatch )
25
- {
26
- if ( aMatch[2] == '%' ) // % is allowed - > unlock ratio.
27
- switchLockRatio( dialog, false ); // Unlock.
28
- value = aMatch[1];
29
- }
30
-
31
- // Only if ratio is locked
32
- if ( dialog.lockRatio )
33
- {
34
- var oImageOriginal = dialog.originalElement;
35
- if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
36
- {
37
- if ( this.id == 'txtHeight' )
38
- {
39
- if ( value && value != '0' )
40
- value = Math.round( oImageOriginal.$.width * ( value / oImageOriginal.$.height ) );
41
- if ( !isNaN( value ) )
42
- dialog.setValueOf( 'info', 'txtWidth', value );
43
- }
44
- else //this.id = txtWidth.
45
- {
46
- if ( value && value != '0' )
47
- value = Math.round( oImageOriginal.$.height * ( value / oImageOriginal.$.width ) );
48
- if ( !isNaN( value ) )
49
- dialog.setValueOf( 'info', 'txtHeight', value );
50
- }
51
- }
52
- }
53
- updatePreview( dialog );
54
- };
55
-
56
- var updatePreview = function( dialog )
57
- {
58
- //Don't load before onShow.
59
- if ( !dialog.originalElement || !dialog.preview )
60
- return 1;
61
-
62
- // Read attributes and update imagePreview;
63
- dialog.commitContent( PREVIEW, dialog.preview );
64
- return 0;
65
- };
66
-
67
- // Custom commit dialog logic, where we're intended to give inline style
68
- // field (txtdlgGenStyle) higher priority to avoid overwriting styles contribute
69
- // by other fields.
70
- function commitContent()
71
- {
72
- var args = arguments;
73
- var inlineStyleField = this.getContentElement( 'advanced', 'txtdlgGenStyle' );
74
- inlineStyleField && inlineStyleField.commit.apply( inlineStyleField, args );
75
-
76
- this.foreach( function( widget )
77
- {
78
- if ( widget.commit && widget.id != 'txtdlgGenStyle' )
79
- widget.commit.apply( widget, args );
80
- });
81
- }
82
-
83
- // Avoid recursions.
84
- var incommit;
85
-
86
- // Synchronous field values to other impacted fields is required, e.g. border
87
- // size change should alter inline-style text as well.
88
- function commitInternally( targetFields )
89
- {
90
- if ( incommit )
91
- return;
92
-
93
- incommit = 1;
94
-
95
- var dialog = this.getDialog(),
96
- element = dialog.imageElement;
97
- if ( element )
98
- {
99
- // Commit this field and broadcast to target fields.
100
- this.commit( IMAGE, element );
101
-
102
- targetFields = [].concat( targetFields );
103
- var length = targetFields.length,
104
- field;
105
- for ( var i = 0; i < length; i++ )
106
- {
107
- field = dialog.getContentElement.apply( dialog, targetFields[ i ].split( ':' ) );
108
- // May cause recursion.
109
- field && field.setup( IMAGE, element );
110
- }
111
- }
112
-
113
- incommit = 0;
114
- }
115
-
116
- var switchLockRatio = function( dialog, value )
117
- {
118
- if ( !dialog.getContentElement( 'info', 'ratioLock' ) )
119
- return null;
120
-
121
- var oImageOriginal = dialog.originalElement;
122
-
123
- // Dialog may already closed. (#5505)
124
- if( !oImageOriginal )
125
- return null;
126
-
127
- // Check image ratio and original image ratio, but respecting user's preference.
128
- if ( value == 'check' )
129
- {
130
- if ( !dialog.userlockRatio && oImageOriginal.getCustomData( 'isReady' ) == 'true' )
131
- {
132
- var width = dialog.getValueOf( 'info', 'txtWidth' ),
133
- height = dialog.getValueOf( 'info', 'txtHeight' ),
134
- originalRatio = oImageOriginal.$.width * 1000 / oImageOriginal.$.height,
135
- thisRatio = width * 1000 / height;
136
- dialog.lockRatio = false; // Default: unlock ratio
137
-
138
- if ( !width && !height )
139
- dialog.lockRatio = true;
140
- else if ( !isNaN( originalRatio ) && !isNaN( thisRatio ) )
141
- {
142
- if ( Math.round( originalRatio ) == Math.round( thisRatio ) )
143
- dialog.lockRatio = true;
144
- }
145
- }
146
- }
147
- else if ( value != undefined )
148
- dialog.lockRatio = value;
149
- else
150
- {
151
- dialog.userlockRatio = 1;
152
- dialog.lockRatio = !dialog.lockRatio;
153
- }
154
-
155
- var ratioButton = CKEDITOR.document.getById( btnLockSizesId );
156
- if ( dialog.lockRatio )
157
- ratioButton.removeClass( 'cke_btn_unlocked' );
158
- else
159
- ratioButton.addClass( 'cke_btn_unlocked' );
160
-
161
- ratioButton.setAttribute( 'aria-checked', dialog.lockRatio );
162
-
163
- // Ratio button hc presentation - WHITE SQUARE / BLACK SQUARE
164
- if ( CKEDITOR.env.hc )
165
- {
166
- var icon = ratioButton.getChild( 0 );
167
- icon.setHtml( dialog.lockRatio ? CKEDITOR.env.ie ? '\u25A0': '\u25A3' : CKEDITOR.env.ie ? '\u25A1' : '\u25A2' );
168
- }
169
-
170
- return dialog.lockRatio;
171
- };
172
-
173
- var resetSize = function( dialog )
174
- {
175
- var oImageOriginal = dialog.originalElement;
176
- if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
177
- {
178
- var widthField = dialog.getContentElement( 'info', 'txtWidth' ),
179
- heightField = dialog.getContentElement( 'info', 'txtHeight' );
180
- widthField && widthField.setValue( oImageOriginal.$.width );
181
- heightField && heightField.setValue( oImageOriginal.$.height );
182
- }
183
- updatePreview( dialog );
184
- };
185
-
186
- var setupDimension = function( type, element )
187
- {
188
- if ( type != IMAGE )
189
- return;
190
-
191
- function checkDimension( size, defaultValue )
192
- {
193
- var aMatch = size.match( regexGetSize );
194
- if ( aMatch )
195
- {
196
- if ( aMatch[2] == '%' ) // % is allowed.
197
- {
198
- aMatch[1] += '%';
199
- switchLockRatio( dialog, false ); // Unlock ratio
200
- }
201
- return aMatch[1];
202
- }
203
- return defaultValue;
204
- }
205
-
206
- var dialog = this.getDialog(),
207
- value = '',
208
- dimension = this.id == 'txtWidth' ? 'width' : 'height',
209
- size = element.getAttribute( dimension );
210
-
211
- if ( size )
212
- value = checkDimension( size, value );
213
- value = checkDimension( element.getStyle( dimension ), value );
214
-
215
- this.setValue( value );
216
- };
217
-
218
- var previewPreloader;
219
-
220
- var onImgLoadEvent = function()
221
- {
222
- // Image is ready.
223
- var original = this.originalElement;
224
- original.setCustomData( 'isReady', 'true' );
225
- original.removeListener( 'load', onImgLoadEvent );
226
- original.removeListener( 'error', onImgLoadErrorEvent );
227
- original.removeListener( 'abort', onImgLoadErrorEvent );
228
-
229
- // Hide loader
230
- CKEDITOR.document.getById( imagePreviewLoaderId ).setStyle( 'display', 'none' );
231
-
232
- // New image -> new domensions
233
- if ( !this.dontResetSize )
234
- resetSize( this );
235
-
236
- if ( this.firstLoad )
237
- CKEDITOR.tools.setTimeout( function(){ switchLockRatio( this, 'check' ); }, 0, this );
238
-
239
- this.firstLoad = false;
240
- this.dontResetSize = false;
241
- };
242
-
243
- var onImgLoadErrorEvent = function()
244
- {
245
- // Error. Image is not loaded.
246
- var original = this.originalElement;
247
- original.removeListener( 'load', onImgLoadEvent );
248
- original.removeListener( 'error', onImgLoadErrorEvent );
249
- original.removeListener( 'abort', onImgLoadErrorEvent );
250
-
251
- // Set Error image.
252
- var noimage = CKEDITOR.getUrl( editor.skinPath + 'images/noimage.png' );
253
-
254
- if ( this.preview )
255
- this.preview.setAttribute( 'src', noimage );
256
-
257
- // Hide loader
258
- CKEDITOR.document.getById( imagePreviewLoaderId ).setStyle( 'display', 'none' );
259
- switchLockRatio( this, false ); // Unlock.
260
- };
261
-
262
- var numbering = function( id )
263
- {
264
- return CKEDITOR.tools.getNextId() + '_' + id;
265
- },
266
- btnLockSizesId = numbering( 'btnLockSizes' ),
267
- btnResetSizeId = numbering( 'btnResetSize' ),
268
- imagePreviewLoaderId = numbering( 'ImagePreviewLoader' ),
269
- imagePreviewBoxId = numbering( 'ImagePreviewBox' ),
270
- previewLinkId = numbering( 'previewLink' ),
271
- previewImageId = numbering( 'previewImage' );
272
-
273
- return {
274
- title : editor.lang.image[ dialogType == 'image' ? 'title' : 'titleButton' ],
275
- minWidth : 420,
276
- minHeight : 360,
277
- onShow : function()
278
- {
279
- this.imageElement = false;
280
- this.linkElement = false;
281
-
282
- // Default: create a new element.
283
- this.imageEditMode = false;
284
- this.linkEditMode = false;
285
-
286
- this.lockRatio = true;
287
- this.userlockRatio = 0;
288
- this.dontResetSize = false;
289
- this.firstLoad = true;
290
- this.addLink = false;
291
-
292
- var editor = this.getParentEditor(),
293
- sel = this.getParentEditor().getSelection(),
294
- element = sel.getSelectedElement(),
295
- link = element && element.getAscendant( 'a' );
296
-
297
- //Hide loader.
298
- CKEDITOR.document.getById( imagePreviewLoaderId ).setStyle( 'display', 'none' );
299
- // Create the preview before setup the dialog contents.
300
- previewPreloader = new CKEDITOR.dom.element( 'img', editor.document );
301
- this.preview = CKEDITOR.document.getById( previewImageId );
302
-
303
- // Copy of the image
304
- this.originalElement = editor.document.createElement( 'img' );
305
- this.originalElement.setAttribute( 'alt', '' );
306
- this.originalElement.setCustomData( 'isReady', 'false' );
307
-
308
- if ( link )
309
- {
310
- this.linkElement = link;
311
- this.linkEditMode = true;
312
-
313
- // Look for Image element.
314
- var linkChildren = link.getChildren();
315
- if ( linkChildren.count() == 1 ) // 1 child.
316
- {
317
- var childTagName = linkChildren.getItem( 0 ).getName();
318
- if ( childTagName == 'img' || childTagName == 'input' )
319
- {
320
- this.imageElement = linkChildren.getItem( 0 );
321
- if ( this.imageElement.getName() == 'img' )
322
- this.imageEditMode = 'img';
323
- else if ( this.imageElement.getName() == 'input' )
324
- this.imageEditMode = 'input';
325
- }
326
- }
327
- // Fill out all fields.
328
- if ( dialogType == 'image' )
329
- this.setupContent( LINK, link );
330
- }
331
-
332
- if ( element && element.getName() == 'img' && !element.data( 'cke-realelement' )
333
- || element && element.getName() == 'input' && element.getAttribute( 'type' ) == 'image' )
334
- {
335
- this.imageEditMode = element.getName();
336
- this.imageElement = element;
337
- }
338
-
339
- if ( this.imageEditMode )
340
- {
341
- // Use the original element as a buffer from since we don't want
342
- // temporary changes to be committed, e.g. if the dialog is canceled.
343
- this.cleanImageElement = this.imageElement;
344
- this.imageElement = this.cleanImageElement.clone( true, true );
345
-
346
- // Fill out all fields.
347
- this.setupContent( IMAGE, this.imageElement );
348
- }
349
- else
350
- this.imageElement = editor.document.createElement( 'img' );
351
-
352
- // Refresh LockRatio button
353
- switchLockRatio ( this, true );
354
-
355
- // Dont show preview if no URL given.
356
- if ( !CKEDITOR.tools.trim( this.getValueOf( 'info', 'txtUrl' ) ) )
357
- {
358
- this.preview.removeAttribute( 'src' );
359
- this.preview.setStyle( 'display', 'none' );
360
- }
361
- },
362
- onOk : function()
363
- {
364
- // Edit existing Image.
365
- if ( this.imageEditMode )
366
- {
367
- var imgTagName = this.imageEditMode;
368
-
369
- // Image dialog and Input element.
370
- if ( dialogType == 'image' && imgTagName == 'input' && confirm( editor.lang.image.button2Img ) )
371
- {
372
- // Replace INPUT-> IMG
373
- imgTagName = 'img';
374
- this.imageElement = editor.document.createElement( 'img' );
375
- this.imageElement.setAttribute( 'alt', '' );
376
- editor.insertElement( this.imageElement );
377
- }
378
- // ImageButton dialog and Image element.
379
- else if ( dialogType != 'image' && imgTagName == 'img' && confirm( editor.lang.image.img2Button ))
380
- {
381
- // Replace IMG -> INPUT
382
- imgTagName = 'input';
383
- this.imageElement = editor.document.createElement( 'input' );
384
- this.imageElement.setAttributes(
385
- {
386
- type : 'image',
387
- alt : ''
388
- }
389
- );
390
- editor.insertElement( this.imageElement );
391
- }
392
- else
393
- {
394
- // Restore the original element before all commits.
395
- this.imageElement = this.cleanImageElement;
396
- delete this.cleanImageElement;
397
- }
398
- }
399
- else // Create a new image.
400
- {
401
- // Image dialog -> create IMG element.
402
- if ( dialogType == 'image' )
403
- this.imageElement = editor.document.createElement( 'img' );
404
- else
405
- {
406
- this.imageElement = editor.document.createElement( 'input' );
407
- this.imageElement.setAttribute ( 'type' ,'image' );
408
- }
409
- this.imageElement.setAttribute( 'alt', '' );
410
- }
411
-
412
- // Create a new link.
413
- if ( !this.linkEditMode )
414
- this.linkElement = editor.document.createElement( 'a' );
415
-
416
- // Set attributes.
417
- this.commitContent( IMAGE, this.imageElement );
418
- this.commitContent( LINK, this.linkElement );
419
-
420
- // Remove empty style attribute.
421
- if ( !this.imageElement.getAttribute( 'style' ) )
422
- this.imageElement.removeAttribute( 'style' );
423
-
424
- // Insert a new Image.
425
- if ( !this.imageEditMode )
426
- {
427
- if ( this.addLink )
428
- {
429
- //Insert a new Link.
430
- if ( !this.linkEditMode )
431
- {
432
- editor.insertElement( this.linkElement );
433
- this.linkElement.append( this.imageElement, false );
434
- }
435
- else //Link already exists, image not.
436
- editor.insertElement( this.imageElement );
437
- }
438
- else
439
- editor.insertElement( this.imageElement );
440
- }
441
- else // Image already exists.
442
- {
443
- //Add a new link element.
444
- if ( !this.linkEditMode && this.addLink )
445
- {
446
- editor.insertElement( this.linkElement );
447
- this.imageElement.appendTo( this.linkElement );
448
- }
449
- //Remove Link, Image exists.
450
- else if ( this.linkEditMode && !this.addLink )
451
- {
452
- editor.getSelection().selectElement( this.linkElement );
453
- editor.insertElement( this.imageElement );
454
- }
455
- }
456
- },
457
- onLoad : function()
458
- {
459
- if ( dialogType != 'image' )
460
- this.hidePage( 'Link' ); //Hide Link tab.
461
- var doc = this._.element.getDocument();
462
-
463
- if ( this.getContentElement( 'info', 'ratioLock' ) )
464
- {
465
- this.addFocusable( doc.getById( btnResetSizeId ), 5 );
466
- this.addFocusable( doc.getById( btnLockSizesId ), 5 );
467
- }
468
-
469
- this.commitContent = commitContent;
470
- },
471
- onHide : function()
472
- {
473
- if ( this.preview )
474
- this.commitContent( CLEANUP, this.preview );
475
-
476
- if ( this.originalElement )
477
- {
478
- this.originalElement.removeListener( 'load', onImgLoadEvent );
479
- this.originalElement.removeListener( 'error', onImgLoadErrorEvent );
480
- this.originalElement.removeListener( 'abort', onImgLoadErrorEvent );
481
- this.originalElement.remove();
482
- this.originalElement = false; // Dialog is closed.
483
- }
484
-
485
- delete this.imageElement;
486
- },
487
- contents : [
488
- {
489
- id : 'info',
490
- label : editor.lang.image.infoTab,
491
- accessKey : 'I',
492
- elements :
493
- [
494
- {
495
- type : 'vbox',
496
- padding : 0,
497
- children :
498
- [
499
- {
500
- type : 'hbox',
501
- widths : [ '280px', '110px' ],
502
- align : 'right',
503
- children :
504
- [
505
- {
506
- id : 'txtUrl',
507
- type : 'text',
508
- label : editor.lang.common.url,
509
- required: true,
510
- onChange : function()
511
- {
512
- var dialog = this.getDialog(),
513
- newUrl = this.getValue();
514
-
515
- //Update original image
516
- if ( newUrl.length > 0 ) //Prevent from load before onShow
517
- {
518
- dialog = this.getDialog();
519
- var original = dialog.originalElement;
520
-
521
- dialog.preview.removeStyle( 'display' );
522
-
523
- original.setCustomData( 'isReady', 'false' );
524
- // Show loader
525
- var loader = CKEDITOR.document.getById( imagePreviewLoaderId );
526
- if ( loader )
527
- loader.setStyle( 'display', '' );
528
-
529
- original.on( 'load', onImgLoadEvent, dialog );
530
- original.on( 'error', onImgLoadErrorEvent, dialog );
531
- original.on( 'abort', onImgLoadErrorEvent, dialog );
532
- original.setAttribute( 'src', newUrl );
533
-
534
- // Query the preloader to figure out the url impacted by based href.
535
- previewPreloader.setAttribute( 'src', newUrl );
536
- dialog.preview.setAttribute( 'src', previewPreloader.$.src );
537
- updatePreview( dialog );
538
- }
539
- // Dont show preview if no URL given.
540
- else if ( dialog.preview )
541
- {
542
- dialog.preview.removeAttribute( 'src' );
543
- dialog.preview.setStyle( 'display', 'none' );
544
- }
545
- },
546
- setup : function( type, element )
547
- {
548
- if ( type == IMAGE )
549
- {
550
- var url = element.data( 'cke-saved-src' ) || element.getAttribute( 'src' );
551
- var field = this;
552
-
553
- this.getDialog().dontResetSize = true;
554
-
555
- field.setValue( url ); // And call this.onChange()
556
- // Manually set the initial value.(#4191)
557
- field.setInitValue();
558
- }
559
- },
560
- commit : function( type, element )
561
- {
562
- if ( type == IMAGE && ( this.getValue() || this.isChanged() ) )
563
- {
564
- element.data( 'cke-saved-src', this.getValue() );
565
- element.setAttribute( 'src', this.getValue() );
566
- }
567
- else if ( type == CLEANUP )
568
- {
569
- element.setAttribute( 'src', '' ); // If removeAttribute doesn't work.
570
- element.removeAttribute( 'src' );
571
- }
572
- },
573
- validate : CKEDITOR.dialog.validate.notEmpty( editor.lang.image.urlMissing )
574
- },
575
- {
576
- type : 'button',
577
- id : 'browse',
578
- // v-align with the 'txtUrl' field.
579
- // TODO: We need something better than a fixed size here.
580
- style : 'display:inline-block;margin-top:10px;',
581
- align : 'center',
582
- label : editor.lang.common.browseServer,
583
- hidden : true,
584
- filebrowser : 'info:txtUrl'
585
- }
586
- ]
587
- }
588
- ]
589
- },
590
- {
591
- id : 'txtAlt',
592
- type : 'text',
593
- label : editor.lang.image.alt,
594
- accessKey : 'T',
595
- 'default' : '',
596
- onChange : function()
597
- {
598
- updatePreview( this.getDialog() );
599
- },
600
- setup : function( type, element )
601
- {
602
- if ( type == IMAGE )
603
- this.setValue( element.getAttribute( 'alt' ) );
604
- },
605
- commit : function( type, element )
606
- {
607
- if ( type == IMAGE )
608
- {
609
- if ( this.getValue() || this.isChanged() )
610
- element.setAttribute( 'alt', this.getValue() );
611
- }
612
- else if ( type == PREVIEW )
613
- {
614
- element.setAttribute( 'alt', this.getValue() );
615
- }
616
- else if ( type == CLEANUP )
617
- {
618
- element.removeAttribute( 'alt' );
619
- }
620
- }
621
- },
622
- {
623
- type : 'hbox',
624
- children :
625
- [
626
- {
627
- id : 'basic',
628
- type : 'vbox',
629
- children :
630
- [
631
- {
632
- type : 'hbox',
633
- widths : [ '50%', '50%' ],
634
- children :
635
- [
636
- {
637
- type : 'vbox',
638
- padding : 1,
639
- children :
640
- [
641
- {
642
- type : 'text',
643
- width: '40px',
644
- id : 'txtWidth',
645
- label : editor.lang.common.width,
646
- onKeyUp : onSizeChange,
647
- onChange : function()
648
- {
649
- commitInternally.call( this, 'advanced:txtdlgGenStyle' );
650
- },
651
- validate : function()
652
- {
653
- var aMatch = this.getValue().match( regexGetSizeOrEmpty ),
654
- isValid = !!( aMatch && parseInt( aMatch[1], 10 ) !== 0 );
655
- if ( !isValid )
656
- alert( editor.lang.common.invalidWidth );
657
- return isValid;
658
- },
659
- setup : setupDimension,
660
- commit : function( type, element, internalCommit )
661
- {
662
- var value = this.getValue();
663
- if ( type == IMAGE )
664
- {
665
- if ( value )
666
- element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) );
667
- else
668
- element.removeStyle( 'width' );
669
-
670
- !internalCommit && element.removeAttribute( 'width' );
671
- }
672
- else if ( type == PREVIEW )
673
- {
674
- var aMatch = value.match( regexGetSize );
675
- if ( !aMatch )
676
- {
677
- var oImageOriginal = this.getDialog().originalElement;
678
- if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
679
- element.setStyle( 'width', oImageOriginal.$.width + 'px');
680
- }
681
- else
682
- element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) );
683
- }
684
- else if ( type == CLEANUP )
685
- {
686
- element.removeAttribute( 'width' );
687
- element.removeStyle( 'width' );
688
- }
689
- }
690
- },
691
- {
692
- type : 'text',
693
- id : 'txtHeight',
694
- width: '40px',
695
- label : editor.lang.common.height,
696
- onKeyUp : onSizeChange,
697
- onChange : function()
698
- {
699
- commitInternally.call( this, 'advanced:txtdlgGenStyle' );
700
- },
701
- validate : function()
702
- {
703
- var aMatch = this.getValue().match( regexGetSizeOrEmpty ),
704
- isValid = !!( aMatch && parseInt( aMatch[1], 10 ) !== 0 );
705
- if ( !isValid )
706
- alert( editor.lang.common.invalidHeight );
707
- return isValid;
708
- },
709
- setup : setupDimension,
710
- commit : function( type, element, internalCommit )
711
- {
712
- var value = this.getValue();
713
- if ( type == IMAGE )
714
- {
715
- if ( value )
716
- element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) );
717
- else
718
- element.removeStyle( 'height' );
719
-
720
- !internalCommit && element.removeAttribute( 'height' );
721
- }
722
- else if ( type == PREVIEW )
723
- {
724
- var aMatch = value.match( regexGetSize );
725
- if ( !aMatch )
726
- {
727
- var oImageOriginal = this.getDialog().originalElement;
728
- if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
729
- element.setStyle( 'height', oImageOriginal.$.height + 'px' );
730
- }
731
- else
732
- element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) );
733
- }
734
- else if ( type == CLEANUP )
735
- {
736
- element.removeAttribute( 'height' );
737
- element.removeStyle( 'height' );
738
- }
739
- }
740
- }
741
- ]
742
- },
743
- {
744
- id : 'ratioLock',
745
- type : 'html',
746
- style : 'margin-top:30px;width:40px;height:40px;',
747
- onLoad : function()
748
- {
749
- // Activate Reset button
750
- var resetButton = CKEDITOR.document.getById( btnResetSizeId ),
751
- ratioButton = CKEDITOR.document.getById( btnLockSizesId );
752
- if ( resetButton )
753
- {
754
- resetButton.on( 'click', function( evt )
755
- {
756
- resetSize( this );
757
- evt.data && evt.data.preventDefault();
758
- }, this.getDialog() );
759
- resetButton.on( 'mouseover', function()
760
- {
761
- this.addClass( 'cke_btn_over' );
762
- }, resetButton );
763
- resetButton.on( 'mouseout', function()
764
- {
765
- this.removeClass( 'cke_btn_over' );
766
- }, resetButton );
767
- }
768
- // Activate (Un)LockRatio button
769
- if ( ratioButton )
770
- {
771
- ratioButton.on( 'click', function(evt)
772
- {
773
- var locked = switchLockRatio( this ),
774
- oImageOriginal = this.originalElement,
775
- width = this.getValueOf( 'info', 'txtWidth' );
776
-
777
- if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' && width )
778
- {
779
- var height = oImageOriginal.$.height / oImageOriginal.$.width * width;
780
- if ( !isNaN( height ) )
781
- {
782
- this.setValueOf( 'info', 'txtHeight', Math.round( height ) );
783
- updatePreview( this );
784
- }
785
- }
786
- evt.data && evt.data.preventDefault();
787
- }, this.getDialog() );
788
- ratioButton.on( 'mouseover', function()
789
- {
790
- this.addClass( 'cke_btn_over' );
791
- }, ratioButton );
792
- ratioButton.on( 'mouseout', function()
793
- {
794
- this.removeClass( 'cke_btn_over' );
795
- }, ratioButton );
796
- }
797
- },
798
- html : '<div>'+
799
- '<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.lockRatio +
800
- '" class="cke_btn_locked" id="' + btnLockSizesId + '" role="checkbox"><span class="cke_icon"></span><span class="cke_label">' + editor.lang.image.lockRatio + '</span></a>' +
801
- '<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.resetSize +
802
- '" class="cke_btn_reset" id="' + btnResetSizeId + '" role="button"><span class="cke_label">' + editor.lang.image.resetSize + '</span></a>'+
803
- '</div>'
804
- }
805
- ]
806
- },
807
- {
808
- type : 'vbox',
809
- padding : 1,
810
- children :
811
- [
812
- {
813
- type : 'text',
814
- id : 'txtBorder',
815
- width: '60px',
816
- label : editor.lang.image.border,
817
- 'default' : '',
818
- onKeyUp : function()
819
- {
820
- updatePreview( this.getDialog() );
821
- },
822
- onChange : function()
823
- {
824
- commitInternally.call( this, 'advanced:txtdlgGenStyle' );
825
- },
826
- validate : CKEDITOR.dialog.validate.integer( editor.lang.image.validateBorder ),
827
- setup : function( type, element )
828
- {
829
- if ( type == IMAGE )
830
- {
831
- var value,
832
- borderStyle = element.getStyle( 'border-width' );
833
- borderStyle = borderStyle && borderStyle.match( /^(\d+px)(?: \1 \1 \1)?$/ );
834
- value = borderStyle && parseInt( borderStyle[ 1 ], 10 );
835
- isNaN ( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'border' ) );
836
- this.setValue( value );
837
- }
838
- },
839
- commit : function( type, element, internalCommit )
840
- {
841
- var value = parseInt( this.getValue(), 10 );
842
- if ( type == IMAGE || type == PREVIEW )
843
- {
844
- if ( !isNaN( value ) )
845
- {
846
- element.setStyle( 'border-width', CKEDITOR.tools.cssLength( value ) );
847
- element.setStyle( 'border-style', 'solid' );
848
- }
849
- else if ( !value && this.isChanged() )
850
- {
851
- element.removeStyle( 'border-width' );
852
- element.removeStyle( 'border-style' );
853
- element.removeStyle( 'border-color' );
854
- }
855
-
856
- if ( !internalCommit && type == IMAGE )
857
- element.removeAttribute( 'border' );
858
- }
859
- else if ( type == CLEANUP )
860
- {
861
- element.removeAttribute( 'border' );
862
- element.removeStyle( 'border-width' );
863
- element.removeStyle( 'border-style' );
864
- element.removeStyle( 'border-color' );
865
- }
866
- }
867
- },
868
- {
869
- type : 'text',
870
- id : 'txtHSpace',
871
- width: '60px',
872
- label : editor.lang.image.hSpace,
873
- 'default' : '',
874
- onKeyUp : function()
875
- {
876
- updatePreview( this.getDialog() );
877
- },
878
- onChange : function()
879
- {
880
- commitInternally.call( this, 'advanced:txtdlgGenStyle' );
881
- },
882
- validate : CKEDITOR.dialog.validate.integer( editor.lang.image.validateHSpace ),
883
- setup : function( type, element )
884
- {
885
- if ( type == IMAGE )
886
- {
887
- var value,
888
- marginLeftPx,
889
- marginRightPx,
890
- marginLeftStyle = element.getStyle( 'margin-left' ),
891
- marginRightStyle = element.getStyle( 'margin-right' );
892
-
893
- marginLeftStyle = marginLeftStyle && marginLeftStyle.match( pxLengthRegex );
894
- marginRightStyle = marginRightStyle && marginRightStyle.match( pxLengthRegex );
895
- marginLeftPx = parseInt( marginLeftStyle, 10 );
896
- marginRightPx = parseInt( marginRightStyle, 10 );
897
-
898
- value = ( marginLeftPx == marginRightPx ) && marginLeftPx;
899
- isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'hspace' ) );
900
-
901
- this.setValue( value );
902
- }
903
- },
904
- commit : function( type, element, internalCommit )
905
- {
906
- var value = parseInt( this.getValue(), 10 );
907
- if ( type == IMAGE || type == PREVIEW )
908
- {
909
- if ( !isNaN( value ) )
910
- {
911
- element.setStyle( 'margin-left', CKEDITOR.tools.cssLength( value ) );
912
- element.setStyle( 'margin-right', CKEDITOR.tools.cssLength( value ) );
913
- }
914
- else if ( !value && this.isChanged( ) )
915
- {
916
- element.removeStyle( 'margin-left' );
917
- element.removeStyle( 'margin-right' );
918
- }
919
-
920
- if ( !internalCommit && type == IMAGE )
921
- element.removeAttribute( 'hspace' );
922
- }
923
- else if ( type == CLEANUP )
924
- {
925
- element.removeAttribute( 'hspace' );
926
- element.removeStyle( 'margin-left' );
927
- element.removeStyle( 'margin-right' );
928
- }
929
- }
930
- },
931
- {
932
- type : 'text',
933
- id : 'txtVSpace',
934
- width : '60px',
935
- label : editor.lang.image.vSpace,
936
- 'default' : '',
937
- onKeyUp : function()
938
- {
939
- updatePreview( this.getDialog() );
940
- },
941
- onChange : function()
942
- {
943
- commitInternally.call( this, 'advanced:txtdlgGenStyle' );
944
- },
945
- validate : CKEDITOR.dialog.validate.integer( editor.lang.image.validateVSpace ),
946
- setup : function( type, element )
947
- {
948
- if ( type == IMAGE )
949
- {
950
- var value,
951
- marginTopPx,
952
- marginBottomPx,
953
- marginTopStyle = element.getStyle( 'margin-top' ),
954
- marginBottomStyle = element.getStyle( 'margin-bottom' );
955
-
956
- marginTopStyle = marginTopStyle && marginTopStyle.match( pxLengthRegex );
957
- marginBottomStyle = marginBottomStyle && marginBottomStyle.match( pxLengthRegex );
958
- marginTopPx = parseInt( marginTopStyle, 10 );
959
- marginBottomPx = parseInt( marginBottomStyle, 10 );
960
-
961
- value = ( marginTopPx == marginBottomPx ) && marginTopPx;
962
- isNaN ( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'vspace' ) );
963
- this.setValue( value );
964
- }
965
- },
966
- commit : function( type, element, internalCommit )
967
- {
968
- var value = parseInt( this.getValue(), 10 );
969
- if ( type == IMAGE || type == PREVIEW )
970
- {
971
- if ( !isNaN( value ) )
972
- {
973
- element.setStyle( 'margin-top', CKEDITOR.tools.cssLength( value ) );
974
- element.setStyle( 'margin-bottom', CKEDITOR.tools.cssLength( value ) );
975
- }
976
- else if ( !value && this.isChanged( ) )
977
- {
978
- element.removeStyle( 'margin-top' );
979
- element.removeStyle( 'margin-bottom' );
980
- }
981
-
982
- if ( !internalCommit && type == IMAGE )
983
- element.removeAttribute( 'vspace' );
984
- }
985
- else if ( type == CLEANUP )
986
- {
987
- element.removeAttribute( 'vspace' );
988
- element.removeStyle( 'margin-top' );
989
- element.removeStyle( 'margin-bottom' );
990
- }
991
- }
992
- },
993
- {
994
- id : 'cmbAlign',
995
- type : 'select',
996
- widths : [ '35%','65%' ],
997
- style : 'width:90px',
998
- label : editor.lang.common.align,
999
- 'default' : '',
1000
- items :
1001
- [
1002
- [ editor.lang.common.notSet , ''],
1003
- [ editor.lang.common.alignLeft , 'left'],
1004
- [ editor.lang.common.alignRight , 'right']
1005
- // Backward compatible with v2 on setup when specified as attribute value,
1006
- // while these values are no more available as select options.
1007
- // [ editor.lang.image.alignAbsBottom , 'absBottom'],
1008
- // [ editor.lang.image.alignAbsMiddle , 'absMiddle'],
1009
- // [ editor.lang.image.alignBaseline , 'baseline'],
1010
- // [ editor.lang.image.alignTextTop , 'text-top'],
1011
- // [ editor.lang.image.alignBottom , 'bottom'],
1012
- // [ editor.lang.image.alignMiddle , 'middle'],
1013
- // [ editor.lang.image.alignTop , 'top']
1014
- ],
1015
- onChange : function()
1016
- {
1017
- updatePreview( this.getDialog() );
1018
- commitInternally.call( this, 'advanced:txtdlgGenStyle' );
1019
- },
1020
- setup : function( type, element )
1021
- {
1022
- if ( type == IMAGE )
1023
- {
1024
- var value = element.getStyle( 'float' );
1025
- switch( value )
1026
- {
1027
- // Ignore those unrelated values.
1028
- case 'inherit':
1029
- case 'none':
1030
- value = '';
1031
- }
1032
-
1033
- !value && ( value = ( element.getAttribute( 'align' ) || '' ).toLowerCase() );
1034
- this.setValue( value );
1035
- }
1036
- },
1037
- commit : function( type, element, internalCommit )
1038
- {
1039
- var value = this.getValue();
1040
- if ( type == IMAGE || type == PREVIEW )
1041
- {
1042
- if ( value )
1043
- element.setStyle( 'float', value );
1044
- else
1045
- element.removeStyle( 'float' );
1046
-
1047
- if ( !internalCommit && type == IMAGE )
1048
- {
1049
- value = ( element.getAttribute( 'align' ) || '' ).toLowerCase();
1050
- switch( value )
1051
- {
1052
- // we should remove it only if it matches "left" or "right",
1053
- // otherwise leave it intact.
1054
- case 'left':
1055
- case 'right':
1056
- element.removeAttribute( 'align' );
1057
- }
1058
- }
1059
- }
1060
- else if ( type == CLEANUP )
1061
- element.removeStyle( 'float' );
1062
-
1063
- }
1064
- }
1065
- ]
1066
- }
1067
- ]
1068
- },
1069
- {
1070
- type : 'vbox',
1071
- height : '250px',
1072
- children :
1073
- [
1074
- {
1075
- type : 'html',
1076
- id : 'htmlPreview',
1077
- style : 'width:95%;',
1078
- html : '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.common.preview ) +'<br>'+
1079
- '<div id="' + imagePreviewLoaderId + '" class="ImagePreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div>'+
1080
- '<div id="' + imagePreviewBoxId + '" class="ImagePreviewBox"><table><tr><td>'+
1081
- '<a href="javascript:void(0)" target="_blank" onclick="return false;" id="' + previewLinkId + '">'+
1082
- '<img id="' + previewImageId + '" alt="" /></a>' +
1083
- ( editor.config.image_previewText ||
1084
- 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '+
1085
- 'Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, '+
1086
- 'nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.' ) +
1087
- '</td></tr></table></div></div>'
1088
- }
1089
- ]
1090
- }
1091
- ]
1092
- }
1093
- ]
1094
- },
1095
- {
1096
- id : 'Link',
1097
- label : editor.lang.link.title,
1098
- padding : 0,
1099
- elements :
1100
- [
1101
- {
1102
- id : 'txtUrl',
1103
- type : 'text',
1104
- label : editor.lang.common.url,
1105
- style : 'width: 100%',
1106
- 'default' : '',
1107
- setup : function( type, element )
1108
- {
1109
- if ( type == LINK )
1110
- {
1111
- var href = element.data( 'cke-saved-href' );
1112
- if ( !href )
1113
- href = element.getAttribute( 'href' );
1114
- this.setValue( href );
1115
- }
1116
- },
1117
- commit : function( type, element )
1118
- {
1119
- if ( type == LINK )
1120
- {
1121
- if ( this.getValue() || this.isChanged() )
1122
- {
1123
- var url = decodeURI( this.getValue() );
1124
- element.data( 'cke-saved-href', url );
1125
- element.setAttribute( 'href', url );
1126
-
1127
- if ( this.getValue() || !editor.config.image_removeLinkByEmptyURL )
1128
- this.getDialog().addLink = true;
1129
- }
1130
- }
1131
- }
1132
- },
1133
- {
1134
- type : 'button',
1135
- id : 'browse',
1136
- filebrowser :
1137
- {
1138
- action : 'Browse',
1139
- target: 'Link:txtUrl',
1140
- url: editor.config.filebrowserImageBrowseLinkUrl
1141
- },
1142
- style : 'float:right',
1143
- hidden : true,
1144
- label : editor.lang.common.browseServer
1145
- },
1146
- {
1147
- id : 'cmbTarget',
1148
- type : 'select',
1149
- label : editor.lang.common.target,
1150
- 'default' : '',
1151
- items :
1152
- [
1153
- [ editor.lang.common.notSet , ''],
1154
- [ editor.lang.common.targetNew , '_blank'],
1155
- [ editor.lang.common.targetTop , '_top'],
1156
- [ editor.lang.common.targetSelf , '_self'],
1157
- [ editor.lang.common.targetParent , '_parent']
1158
- ],
1159
- setup : function( type, element )
1160
- {
1161
- if ( type == LINK )
1162
- this.setValue( element.getAttribute( 'target' ) || '' );
1163
- },
1164
- commit : function( type, element )
1165
- {
1166
- if ( type == LINK )
1167
- {
1168
- if ( this.getValue() || this.isChanged() )
1169
- element.setAttribute( 'target', this.getValue() );
1170
- }
1171
- }
1172
- }
1173
- ]
1174
- },
1175
- {
1176
- id : 'Upload',
1177
- hidden : true,
1178
- filebrowser : 'uploadButton',
1179
- label : editor.lang.image.upload,
1180
- elements :
1181
- [
1182
- {
1183
- type : 'file',
1184
- id : 'upload',
1185
- label : editor.lang.image.btnUpload,
1186
- style: 'height:40px',
1187
- size : 38
1188
- },
1189
- {
1190
- type : 'fileButton',
1191
- id : 'uploadButton',
1192
- filebrowser : 'info:txtUrl',
1193
- label : editor.lang.image.btnUpload,
1194
- 'for' : [ 'Upload', 'upload' ]
1195
- }
1196
- ]
1197
- },
1198
- {
1199
- id : 'advanced',
1200
- label : editor.lang.common.advancedTab,
1201
- elements :
1202
- [
1203
- {
1204
- type : 'hbox',
1205
- widths : [ '50%', '25%', '25%' ],
1206
- children :
1207
- [
1208
- {
1209
- type : 'text',
1210
- id : 'linkId',
1211
- label : editor.lang.common.id,
1212
- setup : function( type, element )
1213
- {
1214
- if ( type == IMAGE )
1215
- this.setValue( element.getAttribute( 'id' ) );
1216
- },
1217
- commit : function( type, element )
1218
- {
1219
- if ( type == IMAGE )
1220
- {
1221
- if ( this.getValue() || this.isChanged() )
1222
- element.setAttribute( 'id', this.getValue() );
1223
- }
1224
- }
1225
- },
1226
- {
1227
- id : 'cmbLangDir',
1228
- type : 'select',
1229
- style : 'width : 100px;',
1230
- label : editor.lang.common.langDir,
1231
- 'default' : '',
1232
- items :
1233
- [
1234
- [ editor.lang.common.notSet, '' ],
1235
- [ editor.lang.common.langDirLtr, 'ltr' ],
1236
- [ editor.lang.common.langDirRtl, 'rtl' ]
1237
- ],
1238
- setup : function( type, element )
1239
- {
1240
- if ( type == IMAGE )
1241
- this.setValue( element.getAttribute( 'dir' ) );
1242
- },
1243
- commit : function( type, element )
1244
- {
1245
- if ( type == IMAGE )
1246
- {
1247
- if ( this.getValue() || this.isChanged() )
1248
- element.setAttribute( 'dir', this.getValue() );
1249
- }
1250
- }
1251
- },
1252
- {
1253
- type : 'text',
1254
- id : 'txtLangCode',
1255
- label : editor.lang.common.langCode,
1256
- 'default' : '',
1257
- setup : function( type, element )
1258
- {
1259
- if ( type == IMAGE )
1260
- this.setValue( element.getAttribute( 'lang' ) );
1261
- },
1262
- commit : function( type, element )
1263
- {
1264
- if ( type == IMAGE )
1265
- {
1266
- if ( this.getValue() || this.isChanged() )
1267
- element.setAttribute( 'lang', this.getValue() );
1268
- }
1269
- }
1270
- }
1271
- ]
1272
- },
1273
- {
1274
- type : 'text',
1275
- id : 'txtGenLongDescr',
1276
- label : editor.lang.common.longDescr,
1277
- setup : function( type, element )
1278
- {
1279
- if ( type == IMAGE )
1280
- this.setValue( element.getAttribute( 'longDesc' ) );
1281
- },
1282
- commit : function( type, element )
1283
- {
1284
- if ( type == IMAGE )
1285
- {
1286
- if ( this.getValue() || this.isChanged() )
1287
- element.setAttribute( 'longDesc', this.getValue() );
1288
- }
1289
- }
1290
- },
1291
- {
1292
- type : 'hbox',
1293
- widths : [ '50%', '50%' ],
1294
- children :
1295
- [
1296
- {
1297
- type : 'text',
1298
- id : 'txtGenClass',
1299
- label : editor.lang.common.cssClass,
1300
- 'default' : '',
1301
- setup : function( type, element )
1302
- {
1303
- if ( type == IMAGE )
1304
- this.setValue( element.getAttribute( 'class' ) );
1305
- },
1306
- commit : function( type, element )
1307
- {
1308
- if ( type == IMAGE )
1309
- {
1310
- if ( this.getValue() || this.isChanged() )
1311
- element.setAttribute( 'class', this.getValue() );
1312
- }
1313
- }
1314
- },
1315
- {
1316
- type : 'text',
1317
- id : 'txtGenTitle',
1318
- label : editor.lang.common.advisoryTitle,
1319
- 'default' : '',
1320
- onChange : function()
1321
- {
1322
- updatePreview( this.getDialog() );
1323
- },
1324
- setup : function( type, element )
1325
- {
1326
- if ( type == IMAGE )
1327
- this.setValue( element.getAttribute( 'title' ) );
1328
- },
1329
- commit : function( type, element )
1330
- {
1331
- if ( type == IMAGE )
1332
- {
1333
- if ( this.getValue() || this.isChanged() )
1334
- element.setAttribute( 'title', this.getValue() );
1335
- }
1336
- else if ( type == PREVIEW )
1337
- {
1338
- element.setAttribute( 'title', this.getValue() );
1339
- }
1340
- else if ( type == CLEANUP )
1341
- {
1342
- element.removeAttribute( 'title' );
1343
- }
1344
- }
1345
- }
1346
- ]
1347
- },
1348
- {
1349
- type : 'text',
1350
- id : 'txtdlgGenStyle',
1351
- label : editor.lang.common.cssStyle,
1352
- 'default' : '',
1353
- setup : function( type, element )
1354
- {
1355
- if ( type == IMAGE )
1356
- {
1357
- var genStyle = element.getAttribute( 'style' );
1358
- if ( !genStyle && element.$.style.cssText )
1359
- genStyle = element.$.style.cssText;
1360
- this.setValue( genStyle );
1361
-
1362
- var height = element.$.style.height,
1363
- width = element.$.style.width,
1364
- aMatchH = ( height ? height : '' ).match( regexGetSize ),
1365
- aMatchW = ( width ? width : '').match( regexGetSize );
1366
-
1367
- this.attributesInStyle =
1368
- {
1369
- height : !!aMatchH,
1370
- width : !!aMatchW
1371
- };
1372
- }
1373
- },
1374
- onChange : function ()
1375
- {
1376
- commitInternally.call( this,
1377
- [ 'info:cmbFloat', 'info:cmbAlign',
1378
- 'info:txtVSpace', 'info:txtHSpace',
1379
- 'info:txtBorder',
1380
- 'info:txtWidth', 'info:txtHeight' ] );
1381
- updatePreview( this );
1382
- },
1383
- commit : function( type, element )
1384
- {
1385
- if ( type == IMAGE && ( this.getValue() || this.isChanged() ) )
1386
- {
1387
- element.setAttribute( 'style', this.getValue() );
1388
- }
1389
- }
1390
- }
1391
- ]
1392
- }
1393
- ]
1394
- };
1395
- };
1396
-
1397
- CKEDITOR.dialog.add( 'image', function( editor )
1398
- {
1399
- return imageDialog( editor, 'image' );
1400
- });
1401
-
1402
- CKEDITOR.dialog.add( 'imagebutton', function( editor )
1403
- {
1404
- return imageDialog( editor, 'imagebutton' );
1405
- });
1406
- })();
1
+ /*
2
+ Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
3
+ For licensing, see LICENSE.html or http://ckeditor.com/license
4
+ */
5
+
6
+ (function()
7
+ {
8
+ var imageDialog = function( editor, dialogType )
9
+ {
10
+ // Load image preview.
11
+ var IMAGE = 1,
12
+ LINK = 2,
13
+ PREVIEW = 4,
14
+ CLEANUP = 8,
15
+ regexGetSize = /^\s*(\d+)((px)|\%)?\s*$/i,
16
+ regexGetSizeOrEmpty = /(^\s*(\d+)((px)|\%)?\s*$)|^$/i,
17
+ pxLengthRegex = /^\d+px$/;
18
+
19
+ var onSizeChange = function()
20
+ {
21
+ var value = this.getValue(), // This = input element.
22
+ dialog = this.getDialog(),
23
+ aMatch = value.match( regexGetSize ); // Check value
24
+ if ( aMatch )
25
+ {
26
+ if ( aMatch[2] == '%' ) // % is allowed - > unlock ratio.
27
+ switchLockRatio( dialog, false ); // Unlock.
28
+ value = aMatch[1];
29
+ }
30
+
31
+ // Only if ratio is locked
32
+ if ( dialog.lockRatio )
33
+ {
34
+ var oImageOriginal = dialog.originalElement;
35
+ if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
36
+ {
37
+ if ( this.id == 'txtHeight' )
38
+ {
39
+ if ( value && value != '0' )
40
+ value = Math.round( oImageOriginal.$.width * ( value / oImageOriginal.$.height ) );
41
+ if ( !isNaN( value ) )
42
+ dialog.setValueOf( 'info', 'txtWidth', value );
43
+ }
44
+ else //this.id = txtWidth.
45
+ {
46
+ if ( value && value != '0' )
47
+ value = Math.round( oImageOriginal.$.height * ( value / oImageOriginal.$.width ) );
48
+ if ( !isNaN( value ) )
49
+ dialog.setValueOf( 'info', 'txtHeight', value );
50
+ }
51
+ }
52
+ }
53
+ updatePreview( dialog );
54
+ };
55
+
56
+ var updatePreview = function( dialog )
57
+ {
58
+ //Don't load before onShow.
59
+ if ( !dialog.originalElement || !dialog.preview )
60
+ return 1;
61
+
62
+ // Read attributes and update imagePreview;
63
+ dialog.commitContent( PREVIEW, dialog.preview );
64
+ return 0;
65
+ };
66
+
67
+ // Custom commit dialog logic, where we're intended to give inline style
68
+ // field (txtdlgGenStyle) higher priority to avoid overwriting styles contribute
69
+ // by other fields.
70
+ function commitContent()
71
+ {
72
+ var args = arguments;
73
+ var inlineStyleField = this.getContentElement( 'advanced', 'txtdlgGenStyle' );
74
+ inlineStyleField && inlineStyleField.commit.apply( inlineStyleField, args );
75
+
76
+ this.foreach( function( widget )
77
+ {
78
+ if ( widget.commit && widget.id != 'txtdlgGenStyle' )
79
+ widget.commit.apply( widget, args );
80
+ });
81
+ }
82
+
83
+ // Avoid recursions.
84
+ var incommit;
85
+
86
+ // Synchronous field values to other impacted fields is required, e.g. border
87
+ // size change should alter inline-style text as well.
88
+ function commitInternally( targetFields )
89
+ {
90
+ if ( incommit )
91
+ return;
92
+
93
+ incommit = 1;
94
+
95
+ var dialog = this.getDialog(),
96
+ element = dialog.imageElement;
97
+ if ( element )
98
+ {
99
+ // Commit this field and broadcast to target fields.
100
+ this.commit( IMAGE, element );
101
+
102
+ targetFields = [].concat( targetFields );
103
+ var length = targetFields.length,
104
+ field;
105
+ for ( var i = 0; i < length; i++ )
106
+ {
107
+ field = dialog.getContentElement.apply( dialog, targetFields[ i ].split( ':' ) );
108
+ // May cause recursion.
109
+ field && field.setup( IMAGE, element );
110
+ }
111
+ }
112
+
113
+ incommit = 0;
114
+ }
115
+
116
+ var switchLockRatio = function( dialog, value )
117
+ {
118
+ if ( !dialog.getContentElement( 'info', 'ratioLock' ) )
119
+ return null;
120
+
121
+ var oImageOriginal = dialog.originalElement;
122
+
123
+ // Dialog may already closed. (#5505)
124
+ if( !oImageOriginal )
125
+ return null;
126
+
127
+ // Check image ratio and original image ratio, but respecting user's preference.
128
+ if ( value == 'check' )
129
+ {
130
+ if ( !dialog.userlockRatio && oImageOriginal.getCustomData( 'isReady' ) == 'true' )
131
+ {
132
+ var width = dialog.getValueOf( 'info', 'txtWidth' ),
133
+ height = dialog.getValueOf( 'info', 'txtHeight' ),
134
+ originalRatio = oImageOriginal.$.width * 1000 / oImageOriginal.$.height,
135
+ thisRatio = width * 1000 / height;
136
+ dialog.lockRatio = false; // Default: unlock ratio
137
+
138
+ if ( !width && !height )
139
+ dialog.lockRatio = true;
140
+ else if ( !isNaN( originalRatio ) && !isNaN( thisRatio ) )
141
+ {
142
+ if ( Math.round( originalRatio ) == Math.round( thisRatio ) )
143
+ dialog.lockRatio = true;
144
+ }
145
+ }
146
+ }
147
+ else if ( value != undefined )
148
+ dialog.lockRatio = value;
149
+ else
150
+ {
151
+ dialog.userlockRatio = 1;
152
+ dialog.lockRatio = !dialog.lockRatio;
153
+ }
154
+
155
+ var ratioButton = CKEDITOR.document.getById( btnLockSizesId );
156
+ if ( dialog.lockRatio )
157
+ ratioButton.removeClass( 'cke_btn_unlocked' );
158
+ else
159
+ ratioButton.addClass( 'cke_btn_unlocked' );
160
+
161
+ ratioButton.setAttribute( 'aria-checked', dialog.lockRatio );
162
+
163
+ // Ratio button hc presentation - WHITE SQUARE / BLACK SQUARE
164
+ if ( CKEDITOR.env.hc )
165
+ {
166
+ var icon = ratioButton.getChild( 0 );
167
+ icon.setHtml( dialog.lockRatio ? CKEDITOR.env.ie ? '\u25A0': '\u25A3' : CKEDITOR.env.ie ? '\u25A1' : '\u25A2' );
168
+ }
169
+
170
+ return dialog.lockRatio;
171
+ };
172
+
173
+ var resetSize = function( dialog )
174
+ {
175
+ var oImageOriginal = dialog.originalElement;
176
+ if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
177
+ {
178
+ var widthField = dialog.getContentElement( 'info', 'txtWidth' ),
179
+ heightField = dialog.getContentElement( 'info', 'txtHeight' );
180
+ widthField && widthField.setValue( oImageOriginal.$.width );
181
+ heightField && heightField.setValue( oImageOriginal.$.height );
182
+ }
183
+ updatePreview( dialog );
184
+ };
185
+
186
+ var setupDimension = function( type, element )
187
+ {
188
+ if ( type != IMAGE )
189
+ return;
190
+
191
+ function checkDimension( size, defaultValue )
192
+ {
193
+ var aMatch = size.match( regexGetSize );
194
+ if ( aMatch )
195
+ {
196
+ if ( aMatch[2] == '%' ) // % is allowed.
197
+ {
198
+ aMatch[1] += '%';
199
+ switchLockRatio( dialog, false ); // Unlock ratio
200
+ }
201
+ return aMatch[1];
202
+ }
203
+ return defaultValue;
204
+ }
205
+
206
+ var dialog = this.getDialog(),
207
+ value = '',
208
+ dimension = this.id == 'txtWidth' ? 'width' : 'height',
209
+ size = element.getAttribute( dimension );
210
+
211
+ if ( size )
212
+ value = checkDimension( size, value );
213
+ value = checkDimension( element.getStyle( dimension ), value );
214
+
215
+ this.setValue( value );
216
+ };
217
+
218
+ var previewPreloader;
219
+
220
+ var onImgLoadEvent = function()
221
+ {
222
+ // Image is ready.
223
+ var original = this.originalElement;
224
+ original.setCustomData( 'isReady', 'true' );
225
+ original.removeListener( 'load', onImgLoadEvent );
226
+ original.removeListener( 'error', onImgLoadErrorEvent );
227
+ original.removeListener( 'abort', onImgLoadErrorEvent );
228
+
229
+ // Hide loader
230
+ CKEDITOR.document.getById( imagePreviewLoaderId ).setStyle( 'display', 'none' );
231
+
232
+ // New image -> new domensions
233
+ if ( !this.dontResetSize )
234
+ resetSize( this );
235
+
236
+ if ( this.firstLoad )
237
+ CKEDITOR.tools.setTimeout( function(){ switchLockRatio( this, 'check' ); }, 0, this );
238
+
239
+ this.firstLoad = false;
240
+ this.dontResetSize = false;
241
+ };
242
+
243
+ var onImgLoadErrorEvent = function()
244
+ {
245
+ // Error. Image is not loaded.
246
+ var original = this.originalElement;
247
+ original.removeListener( 'load', onImgLoadEvent );
248
+ original.removeListener( 'error', onImgLoadErrorEvent );
249
+ original.removeListener( 'abort', onImgLoadErrorEvent );
250
+
251
+ // Set Error image.
252
+ var noimage = CKEDITOR.getUrl( editor.skinPath + 'images/noimage.png' );
253
+
254
+ if ( this.preview )
255
+ this.preview.setAttribute( 'src', noimage );
256
+
257
+ // Hide loader
258
+ CKEDITOR.document.getById( imagePreviewLoaderId ).setStyle( 'display', 'none' );
259
+ switchLockRatio( this, false ); // Unlock.
260
+ };
261
+
262
+ var numbering = function( id )
263
+ {
264
+ return CKEDITOR.tools.getNextId() + '_' + id;
265
+ },
266
+ btnLockSizesId = numbering( 'btnLockSizes' ),
267
+ btnResetSizeId = numbering( 'btnResetSize' ),
268
+ imagePreviewLoaderId = numbering( 'ImagePreviewLoader' ),
269
+ previewLinkId = numbering( 'previewLink' ),
270
+ previewImageId = numbering( 'previewImage' );
271
+
272
+ return {
273
+ title : editor.lang.image[ dialogType == 'image' ? 'title' : 'titleButton' ],
274
+ minWidth : 420,
275
+ minHeight : 360,
276
+ onShow : function()
277
+ {
278
+ this.imageElement = false;
279
+ this.linkElement = false;
280
+
281
+ // Default: create a new element.
282
+ this.imageEditMode = false;
283
+ this.linkEditMode = false;
284
+
285
+ this.lockRatio = true;
286
+ this.userlockRatio = 0;
287
+ this.dontResetSize = false;
288
+ this.firstLoad = true;
289
+ this.addLink = false;
290
+
291
+ var editor = this.getParentEditor(),
292
+ sel = editor.getSelection(),
293
+ element = sel && sel.getSelectedElement(),
294
+ link = element && element.getAscendant( 'a' );
295
+
296
+ //Hide loader.
297
+ CKEDITOR.document.getById( imagePreviewLoaderId ).setStyle( 'display', 'none' );
298
+ // Create the preview before setup the dialog contents.
299
+ previewPreloader = new CKEDITOR.dom.element( 'img', editor.document );
300
+ this.preview = CKEDITOR.document.getById( previewImageId );
301
+
302
+ // Copy of the image
303
+ this.originalElement = editor.document.createElement( 'img' );
304
+ this.originalElement.setAttribute( 'alt', '' );
305
+ this.originalElement.setCustomData( 'isReady', 'false' );
306
+
307
+ if ( link )
308
+ {
309
+ this.linkElement = link;
310
+ this.linkEditMode = true;
311
+
312
+ // Look for Image element.
313
+ var linkChildren = link.getChildren();
314
+ if ( linkChildren.count() == 1 ) // 1 child.
315
+ {
316
+ var childTagName = linkChildren.getItem( 0 ).getName();
317
+ if ( childTagName == 'img' || childTagName == 'input' )
318
+ {
319
+ this.imageElement = linkChildren.getItem( 0 );
320
+ if ( this.imageElement.getName() == 'img' )
321
+ this.imageEditMode = 'img';
322
+ else if ( this.imageElement.getName() == 'input' )
323
+ this.imageEditMode = 'input';
324
+ }
325
+ }
326
+ // Fill out all fields.
327
+ if ( dialogType == 'image' )
328
+ this.setupContent( LINK, link );
329
+ }
330
+
331
+ if ( element && element.getName() == 'img' && !element.data( 'cke-realelement' )
332
+ || element && element.getName() == 'input' && element.getAttribute( 'type' ) == 'image' )
333
+ {
334
+ this.imageEditMode = element.getName();
335
+ this.imageElement = element;
336
+ }
337
+
338
+ if ( this.imageEditMode )
339
+ {
340
+ // Use the original element as a buffer from since we don't want
341
+ // temporary changes to be committed, e.g. if the dialog is canceled.
342
+ this.cleanImageElement = this.imageElement;
343
+ this.imageElement = this.cleanImageElement.clone( true, true );
344
+
345
+ // Fill out all fields.
346
+ this.setupContent( IMAGE, this.imageElement );
347
+ }
348
+ else
349
+ this.imageElement = editor.document.createElement( 'img' );
350
+
351
+ // Refresh LockRatio button
352
+ switchLockRatio ( this, true );
353
+
354
+ // Dont show preview if no URL given.
355
+ if ( !CKEDITOR.tools.trim( this.getValueOf( 'info', 'txtUrl' ) ) )
356
+ {
357
+ this.preview.removeAttribute( 'src' );
358
+ this.preview.setStyle( 'display', 'none' );
359
+ }
360
+ },
361
+ onOk : function()
362
+ {
363
+ // Edit existing Image.
364
+ if ( this.imageEditMode )
365
+ {
366
+ var imgTagName = this.imageEditMode;
367
+
368
+ // Image dialog and Input element.
369
+ if ( dialogType == 'image' && imgTagName == 'input' && confirm( editor.lang.image.button2Img ) )
370
+ {
371
+ // Replace INPUT-> IMG
372
+ imgTagName = 'img';
373
+ this.imageElement = editor.document.createElement( 'img' );
374
+ this.imageElement.setAttribute( 'alt', '' );
375
+ editor.insertElement( this.imageElement );
376
+ }
377
+ // ImageButton dialog and Image element.
378
+ else if ( dialogType != 'image' && imgTagName == 'img' && confirm( editor.lang.image.img2Button ))
379
+ {
380
+ // Replace IMG -> INPUT
381
+ imgTagName = 'input';
382
+ this.imageElement = editor.document.createElement( 'input' );
383
+ this.imageElement.setAttributes(
384
+ {
385
+ type : 'image',
386
+ alt : ''
387
+ }
388
+ );
389
+ editor.insertElement( this.imageElement );
390
+ }
391
+ else
392
+ {
393
+ // Restore the original element before all commits.
394
+ this.imageElement = this.cleanImageElement;
395
+ delete this.cleanImageElement;
396
+ }
397
+ }
398
+ else // Create a new image.
399
+ {
400
+ // Image dialog -> create IMG element.
401
+ if ( dialogType == 'image' )
402
+ this.imageElement = editor.document.createElement( 'img' );
403
+ else
404
+ {
405
+ this.imageElement = editor.document.createElement( 'input' );
406
+ this.imageElement.setAttribute ( 'type' ,'image' );
407
+ }
408
+ this.imageElement.setAttribute( 'alt', '' );
409
+ }
410
+
411
+ // Create a new link.
412
+ if ( !this.linkEditMode )
413
+ this.linkElement = editor.document.createElement( 'a' );
414
+
415
+ // Set attributes.
416
+ this.commitContent( IMAGE, this.imageElement );
417
+ this.commitContent( LINK, this.linkElement );
418
+
419
+ // Remove empty style attribute.
420
+ if ( !this.imageElement.getAttribute( 'style' ) )
421
+ this.imageElement.removeAttribute( 'style' );
422
+
423
+ // Insert a new Image.
424
+ if ( !this.imageEditMode )
425
+ {
426
+ if ( this.addLink )
427
+ {
428
+ //Insert a new Link.
429
+ if ( !this.linkEditMode )
430
+ {
431
+ editor.insertElement( this.linkElement );
432
+ this.linkElement.append( this.imageElement, false );
433
+ }
434
+ else //Link already exists, image not.
435
+ editor.insertElement( this.imageElement );
436
+ }
437
+ else
438
+ editor.insertElement( this.imageElement );
439
+ }
440
+ else // Image already exists.
441
+ {
442
+ //Add a new link element.
443
+ if ( !this.linkEditMode && this.addLink )
444
+ {
445
+ editor.insertElement( this.linkElement );
446
+ this.imageElement.appendTo( this.linkElement );
447
+ }
448
+ //Remove Link, Image exists.
449
+ else if ( this.linkEditMode && !this.addLink )
450
+ {
451
+ editor.getSelection().selectElement( this.linkElement );
452
+ editor.insertElement( this.imageElement );
453
+ }
454
+ }
455
+ },
456
+ onLoad : function()
457
+ {
458
+ if ( dialogType != 'image' )
459
+ this.hidePage( 'Link' ); //Hide Link tab.
460
+ var doc = this._.element.getDocument();
461
+
462
+ if ( this.getContentElement( 'info', 'ratioLock' ) )
463
+ {
464
+ this.addFocusable( doc.getById( btnResetSizeId ), 5 );
465
+ this.addFocusable( doc.getById( btnLockSizesId ), 5 );
466
+ }
467
+
468
+ this.commitContent = commitContent;
469
+ },
470
+ onHide : function()
471
+ {
472
+ if ( this.preview )
473
+ this.commitContent( CLEANUP, this.preview );
474
+
475
+ if ( this.originalElement )
476
+ {
477
+ this.originalElement.removeListener( 'load', onImgLoadEvent );
478
+ this.originalElement.removeListener( 'error', onImgLoadErrorEvent );
479
+ this.originalElement.removeListener( 'abort', onImgLoadErrorEvent );
480
+ this.originalElement.remove();
481
+ this.originalElement = false; // Dialog is closed.
482
+ }
483
+
484
+ delete this.imageElement;
485
+ },
486
+ contents : [
487
+ {
488
+ id : 'info',
489
+ label : editor.lang.image.infoTab,
490
+ accessKey : 'I',
491
+ elements :
492
+ [
493
+ {
494
+ type : 'vbox',
495
+ padding : 0,
496
+ children :
497
+ [
498
+ {
499
+ type : 'hbox',
500
+ widths : [ '280px', '110px' ],
501
+ align : 'right',
502
+ children :
503
+ [
504
+ {
505
+ id : 'txtUrl',
506
+ type : 'text',
507
+ label : editor.lang.common.url,
508
+ required: true,
509
+ onChange : function()
510
+ {
511
+ var dialog = this.getDialog(),
512
+ newUrl = this.getValue();
513
+
514
+ //Update original image
515
+ if ( newUrl.length > 0 ) //Prevent from load before onShow
516
+ {
517
+ dialog = this.getDialog();
518
+ var original = dialog.originalElement;
519
+
520
+ dialog.preview.removeStyle( 'display' );
521
+
522
+ original.setCustomData( 'isReady', 'false' );
523
+ // Show loader
524
+ var loader = CKEDITOR.document.getById( imagePreviewLoaderId );
525
+ if ( loader )
526
+ loader.setStyle( 'display', '' );
527
+
528
+ original.on( 'load', onImgLoadEvent, dialog );
529
+ original.on( 'error', onImgLoadErrorEvent, dialog );
530
+ original.on( 'abort', onImgLoadErrorEvent, dialog );
531
+ original.setAttribute( 'src', newUrl );
532
+
533
+ // Query the preloader to figure out the url impacted by based href.
534
+ previewPreloader.setAttribute( 'src', newUrl );
535
+ dialog.preview.setAttribute( 'src', previewPreloader.$.src );
536
+ updatePreview( dialog );
537
+ }
538
+ // Dont show preview if no URL given.
539
+ else if ( dialog.preview )
540
+ {
541
+ dialog.preview.removeAttribute( 'src' );
542
+ dialog.preview.setStyle( 'display', 'none' );
543
+ }
544
+ },
545
+ setup : function( type, element )
546
+ {
547
+ if ( type == IMAGE )
548
+ {
549
+ var url = element.data( 'cke-saved-src' ) || element.getAttribute( 'src' );
550
+ var field = this;
551
+
552
+ this.getDialog().dontResetSize = true;
553
+
554
+ field.setValue( url ); // And call this.onChange()
555
+ // Manually set the initial value.(#4191)
556
+ field.setInitValue();
557
+ }
558
+ },
559
+ commit : function( type, element )
560
+ {
561
+ if ( type == IMAGE && ( this.getValue() || this.isChanged() ) )
562
+ {
563
+ element.data( 'cke-saved-src', this.getValue() );
564
+ element.setAttribute( 'src', this.getValue() );
565
+ }
566
+ else if ( type == CLEANUP )
567
+ {
568
+ element.setAttribute( 'src', '' ); // If removeAttribute doesn't work.
569
+ element.removeAttribute( 'src' );
570
+ }
571
+ },
572
+ validate : CKEDITOR.dialog.validate.notEmpty( editor.lang.image.urlMissing )
573
+ },
574
+ {
575
+ type : 'button',
576
+ id : 'browse',
577
+ // v-align with the 'txtUrl' field.
578
+ // TODO: We need something better than a fixed size here.
579
+ style : 'display:inline-block;margin-top:10px;',
580
+ align : 'center',
581
+ label : editor.lang.common.browseServer,
582
+ hidden : true,
583
+ filebrowser : 'info:txtUrl'
584
+ }
585
+ ]
586
+ }
587
+ ]
588
+ },
589
+ {
590
+ id : 'txtAlt',
591
+ type : 'text',
592
+ label : editor.lang.image.alt,
593
+ accessKey : 'T',
594
+ 'default' : '',
595
+ onChange : function()
596
+ {
597
+ updatePreview( this.getDialog() );
598
+ },
599
+ setup : function( type, element )
600
+ {
601
+ if ( type == IMAGE )
602
+ this.setValue( element.getAttribute( 'alt' ) );
603
+ },
604
+ commit : function( type, element )
605
+ {
606
+ if ( type == IMAGE )
607
+ {
608
+ if ( this.getValue() || this.isChanged() )
609
+ element.setAttribute( 'alt', this.getValue() );
610
+ }
611
+ else if ( type == PREVIEW )
612
+ {
613
+ element.setAttribute( 'alt', this.getValue() );
614
+ }
615
+ else if ( type == CLEANUP )
616
+ {
617
+ element.removeAttribute( 'alt' );
618
+ }
619
+ }
620
+ },
621
+ {
622
+ type : 'hbox',
623
+ children :
624
+ [
625
+ {
626
+ id : 'basic',
627
+ type : 'vbox',
628
+ children :
629
+ [
630
+ {
631
+ type : 'hbox',
632
+ widths : [ '50%', '50%' ],
633
+ children :
634
+ [
635
+ {
636
+ type : 'vbox',
637
+ padding : 1,
638
+ children :
639
+ [
640
+ {
641
+ type : 'text',
642
+ width: '40px',
643
+ id : 'txtWidth',
644
+ label : editor.lang.common.width,
645
+ onKeyUp : onSizeChange,
646
+ onChange : function()
647
+ {
648
+ commitInternally.call( this, 'advanced:txtdlgGenStyle' );
649
+ },
650
+ validate : function()
651
+ {
652
+ var aMatch = this.getValue().match( regexGetSizeOrEmpty ),
653
+ isValid = !!( aMatch && parseInt( aMatch[1], 10 ) !== 0 );
654
+ if ( !isValid )
655
+ alert( editor.lang.common.invalidWidth );
656
+ return isValid;
657
+ },
658
+ setup : setupDimension,
659
+ commit : function( type, element, internalCommit )
660
+ {
661
+ var value = this.getValue();
662
+ if ( type == IMAGE )
663
+ {
664
+ if ( value )
665
+ element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) );
666
+ else
667
+ element.removeStyle( 'width' );
668
+
669
+ !internalCommit && element.removeAttribute( 'width' );
670
+ }
671
+ else if ( type == PREVIEW )
672
+ {
673
+ var aMatch = value.match( regexGetSize );
674
+ if ( !aMatch )
675
+ {
676
+ var oImageOriginal = this.getDialog().originalElement;
677
+ if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
678
+ element.setStyle( 'width', oImageOriginal.$.width + 'px');
679
+ }
680
+ else
681
+ element.setStyle( 'width', CKEDITOR.tools.cssLength( value ) );
682
+ }
683
+ else if ( type == CLEANUP )
684
+ {
685
+ element.removeAttribute( 'width' );
686
+ element.removeStyle( 'width' );
687
+ }
688
+ }
689
+ },
690
+ {
691
+ type : 'text',
692
+ id : 'txtHeight',
693
+ width: '40px',
694
+ label : editor.lang.common.height,
695
+ onKeyUp : onSizeChange,
696
+ onChange : function()
697
+ {
698
+ commitInternally.call( this, 'advanced:txtdlgGenStyle' );
699
+ },
700
+ validate : function()
701
+ {
702
+ var aMatch = this.getValue().match( regexGetSizeOrEmpty ),
703
+ isValid = !!( aMatch && parseInt( aMatch[1], 10 ) !== 0 );
704
+ if ( !isValid )
705
+ alert( editor.lang.common.invalidHeight );
706
+ return isValid;
707
+ },
708
+ setup : setupDimension,
709
+ commit : function( type, element, internalCommit )
710
+ {
711
+ var value = this.getValue();
712
+ if ( type == IMAGE )
713
+ {
714
+ if ( value )
715
+ element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) );
716
+ else
717
+ element.removeStyle( 'height' );
718
+
719
+ !internalCommit && element.removeAttribute( 'height' );
720
+ }
721
+ else if ( type == PREVIEW )
722
+ {
723
+ var aMatch = value.match( regexGetSize );
724
+ if ( !aMatch )
725
+ {
726
+ var oImageOriginal = this.getDialog().originalElement;
727
+ if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' )
728
+ element.setStyle( 'height', oImageOriginal.$.height + 'px' );
729
+ }
730
+ else
731
+ element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) );
732
+ }
733
+ else if ( type == CLEANUP )
734
+ {
735
+ element.removeAttribute( 'height' );
736
+ element.removeStyle( 'height' );
737
+ }
738
+ }
739
+ }
740
+ ]
741
+ },
742
+ {
743
+ id : 'ratioLock',
744
+ type : 'html',
745
+ style : 'margin-top:30px;width:40px;height:40px;',
746
+ onLoad : function()
747
+ {
748
+ // Activate Reset button
749
+ var resetButton = CKEDITOR.document.getById( btnResetSizeId ),
750
+ ratioButton = CKEDITOR.document.getById( btnLockSizesId );
751
+ if ( resetButton )
752
+ {
753
+ resetButton.on( 'click', function( evt )
754
+ {
755
+ resetSize( this );
756
+ evt.data && evt.data.preventDefault();
757
+ }, this.getDialog() );
758
+ resetButton.on( 'mouseover', function()
759
+ {
760
+ this.addClass( 'cke_btn_over' );
761
+ }, resetButton );
762
+ resetButton.on( 'mouseout', function()
763
+ {
764
+ this.removeClass( 'cke_btn_over' );
765
+ }, resetButton );
766
+ }
767
+ // Activate (Un)LockRatio button
768
+ if ( ratioButton )
769
+ {
770
+ ratioButton.on( 'click', function(evt)
771
+ {
772
+ var locked = switchLockRatio( this ),
773
+ oImageOriginal = this.originalElement,
774
+ width = this.getValueOf( 'info', 'txtWidth' );
775
+
776
+ if ( oImageOriginal.getCustomData( 'isReady' ) == 'true' && width )
777
+ {
778
+ var height = oImageOriginal.$.height / oImageOriginal.$.width * width;
779
+ if ( !isNaN( height ) )
780
+ {
781
+ this.setValueOf( 'info', 'txtHeight', Math.round( height ) );
782
+ updatePreview( this );
783
+ }
784
+ }
785
+ evt.data && evt.data.preventDefault();
786
+ }, this.getDialog() );
787
+ ratioButton.on( 'mouseover', function()
788
+ {
789
+ this.addClass( 'cke_btn_over' );
790
+ }, ratioButton );
791
+ ratioButton.on( 'mouseout', function()
792
+ {
793
+ this.removeClass( 'cke_btn_over' );
794
+ }, ratioButton );
795
+ }
796
+ },
797
+ html : '<div>'+
798
+ '<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.lockRatio +
799
+ '" class="cke_btn_locked" id="' + btnLockSizesId + '" role="checkbox"><span class="cke_icon"></span><span class="cke_label">' + editor.lang.image.lockRatio + '</span></a>' +
800
+ '<a href="javascript:void(0)" tabindex="-1" title="' + editor.lang.image.resetSize +
801
+ '" class="cke_btn_reset" id="' + btnResetSizeId + '" role="button"><span class="cke_label">' + editor.lang.image.resetSize + '</span></a>'+
802
+ '</div>'
803
+ }
804
+ ]
805
+ },
806
+ {
807
+ type : 'vbox',
808
+ padding : 1,
809
+ children :
810
+ [
811
+ {
812
+ type : 'text',
813
+ id : 'txtBorder',
814
+ width: '60px',
815
+ label : editor.lang.image.border,
816
+ 'default' : '',
817
+ onKeyUp : function()
818
+ {
819
+ updatePreview( this.getDialog() );
820
+ },
821
+ onChange : function()
822
+ {
823
+ commitInternally.call( this, 'advanced:txtdlgGenStyle' );
824
+ },
825
+ validate : CKEDITOR.dialog.validate.integer( editor.lang.image.validateBorder ),
826
+ setup : function( type, element )
827
+ {
828
+ if ( type == IMAGE )
829
+ {
830
+ var value,
831
+ borderStyle = element.getStyle( 'border-width' );
832
+ borderStyle = borderStyle && borderStyle.match( /^(\d+px)(?: \1 \1 \1)?$/ );
833
+ value = borderStyle && parseInt( borderStyle[ 1 ], 10 );
834
+ isNaN ( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'border' ) );
835
+ this.setValue( value );
836
+ }
837
+ },
838
+ commit : function( type, element, internalCommit )
839
+ {
840
+ var value = parseInt( this.getValue(), 10 );
841
+ if ( type == IMAGE || type == PREVIEW )
842
+ {
843
+ if ( !isNaN( value ) )
844
+ {
845
+ element.setStyle( 'border-width', CKEDITOR.tools.cssLength( value ) );
846
+ element.setStyle( 'border-style', 'solid' );
847
+ }
848
+ else if ( !value && this.isChanged() )
849
+ {
850
+ element.removeStyle( 'border-width' );
851
+ element.removeStyle( 'border-style' );
852
+ element.removeStyle( 'border-color' );
853
+ }
854
+
855
+ if ( !internalCommit && type == IMAGE )
856
+ element.removeAttribute( 'border' );
857
+ }
858
+ else if ( type == CLEANUP )
859
+ {
860
+ element.removeAttribute( 'border' );
861
+ element.removeStyle( 'border-width' );
862
+ element.removeStyle( 'border-style' );
863
+ element.removeStyle( 'border-color' );
864
+ }
865
+ }
866
+ },
867
+ {
868
+ type : 'text',
869
+ id : 'txtHSpace',
870
+ width: '60px',
871
+ label : editor.lang.image.hSpace,
872
+ 'default' : '',
873
+ onKeyUp : function()
874
+ {
875
+ updatePreview( this.getDialog() );
876
+ },
877
+ onChange : function()
878
+ {
879
+ commitInternally.call( this, 'advanced:txtdlgGenStyle' );
880
+ },
881
+ validate : CKEDITOR.dialog.validate.integer( editor.lang.image.validateHSpace ),
882
+ setup : function( type, element )
883
+ {
884
+ if ( type == IMAGE )
885
+ {
886
+ var value,
887
+ marginLeftPx,
888
+ marginRightPx,
889
+ marginLeftStyle = element.getStyle( 'margin-left' ),
890
+ marginRightStyle = element.getStyle( 'margin-right' );
891
+
892
+ marginLeftStyle = marginLeftStyle && marginLeftStyle.match( pxLengthRegex );
893
+ marginRightStyle = marginRightStyle && marginRightStyle.match( pxLengthRegex );
894
+ marginLeftPx = parseInt( marginLeftStyle, 10 );
895
+ marginRightPx = parseInt( marginRightStyle, 10 );
896
+
897
+ value = ( marginLeftPx == marginRightPx ) && marginLeftPx;
898
+ isNaN( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'hspace' ) );
899
+
900
+ this.setValue( value );
901
+ }
902
+ },
903
+ commit : function( type, element, internalCommit )
904
+ {
905
+ var value = parseInt( this.getValue(), 10 );
906
+ if ( type == IMAGE || type == PREVIEW )
907
+ {
908
+ if ( !isNaN( value ) )
909
+ {
910
+ element.setStyle( 'margin-left', CKEDITOR.tools.cssLength( value ) );
911
+ element.setStyle( 'margin-right', CKEDITOR.tools.cssLength( value ) );
912
+ }
913
+ else if ( !value && this.isChanged( ) )
914
+ {
915
+ element.removeStyle( 'margin-left' );
916
+ element.removeStyle( 'margin-right' );
917
+ }
918
+
919
+ if ( !internalCommit && type == IMAGE )
920
+ element.removeAttribute( 'hspace' );
921
+ }
922
+ else if ( type == CLEANUP )
923
+ {
924
+ element.removeAttribute( 'hspace' );
925
+ element.removeStyle( 'margin-left' );
926
+ element.removeStyle( 'margin-right' );
927
+ }
928
+ }
929
+ },
930
+ {
931
+ type : 'text',
932
+ id : 'txtVSpace',
933
+ width : '60px',
934
+ label : editor.lang.image.vSpace,
935
+ 'default' : '',
936
+ onKeyUp : function()
937
+ {
938
+ updatePreview( this.getDialog() );
939
+ },
940
+ onChange : function()
941
+ {
942
+ commitInternally.call( this, 'advanced:txtdlgGenStyle' );
943
+ },
944
+ validate : CKEDITOR.dialog.validate.integer( editor.lang.image.validateVSpace ),
945
+ setup : function( type, element )
946
+ {
947
+ if ( type == IMAGE )
948
+ {
949
+ var value,
950
+ marginTopPx,
951
+ marginBottomPx,
952
+ marginTopStyle = element.getStyle( 'margin-top' ),
953
+ marginBottomStyle = element.getStyle( 'margin-bottom' );
954
+
955
+ marginTopStyle = marginTopStyle && marginTopStyle.match( pxLengthRegex );
956
+ marginBottomStyle = marginBottomStyle && marginBottomStyle.match( pxLengthRegex );
957
+ marginTopPx = parseInt( marginTopStyle, 10 );
958
+ marginBottomPx = parseInt( marginBottomStyle, 10 );
959
+
960
+ value = ( marginTopPx == marginBottomPx ) && marginTopPx;
961
+ isNaN ( parseInt( value, 10 ) ) && ( value = element.getAttribute( 'vspace' ) );
962
+ this.setValue( value );
963
+ }
964
+ },
965
+ commit : function( type, element, internalCommit )
966
+ {
967
+ var value = parseInt( this.getValue(), 10 );
968
+ if ( type == IMAGE || type == PREVIEW )
969
+ {
970
+ if ( !isNaN( value ) )
971
+ {
972
+ element.setStyle( 'margin-top', CKEDITOR.tools.cssLength( value ) );
973
+ element.setStyle( 'margin-bottom', CKEDITOR.tools.cssLength( value ) );
974
+ }
975
+ else if ( !value && this.isChanged( ) )
976
+ {
977
+ element.removeStyle( 'margin-top' );
978
+ element.removeStyle( 'margin-bottom' );
979
+ }
980
+
981
+ if ( !internalCommit && type == IMAGE )
982
+ element.removeAttribute( 'vspace' );
983
+ }
984
+ else if ( type == CLEANUP )
985
+ {
986
+ element.removeAttribute( 'vspace' );
987
+ element.removeStyle( 'margin-top' );
988
+ element.removeStyle( 'margin-bottom' );
989
+ }
990
+ }
991
+ },
992
+ {
993
+ id : 'cmbAlign',
994
+ type : 'select',
995
+ widths : [ '35%','65%' ],
996
+ style : 'width:90px',
997
+ label : editor.lang.common.align,
998
+ 'default' : '',
999
+ items :
1000
+ [
1001
+ [ editor.lang.common.notSet , ''],
1002
+ [ editor.lang.common.alignLeft , 'left'],
1003
+ [ editor.lang.common.alignRight , 'right']
1004
+ // Backward compatible with v2 on setup when specified as attribute value,
1005
+ // while these values are no more available as select options.
1006
+ // [ editor.lang.image.alignAbsBottom , 'absBottom'],
1007
+ // [ editor.lang.image.alignAbsMiddle , 'absMiddle'],
1008
+ // [ editor.lang.image.alignBaseline , 'baseline'],
1009
+ // [ editor.lang.image.alignTextTop , 'text-top'],
1010
+ // [ editor.lang.image.alignBottom , 'bottom'],
1011
+ // [ editor.lang.image.alignMiddle , 'middle'],
1012
+ // [ editor.lang.image.alignTop , 'top']
1013
+ ],
1014
+ onChange : function()
1015
+ {
1016
+ updatePreview( this.getDialog() );
1017
+ commitInternally.call( this, 'advanced:txtdlgGenStyle' );
1018
+ },
1019
+ setup : function( type, element )
1020
+ {
1021
+ if ( type == IMAGE )
1022
+ {
1023
+ var value = element.getStyle( 'float' );
1024
+ switch( value )
1025
+ {
1026
+ // Ignore those unrelated values.
1027
+ case 'inherit':
1028
+ case 'none':
1029
+ value = '';
1030
+ }
1031
+
1032
+ !value && ( value = ( element.getAttribute( 'align' ) || '' ).toLowerCase() );
1033
+ this.setValue( value );
1034
+ }
1035
+ },
1036
+ commit : function( type, element, internalCommit )
1037
+ {
1038
+ var value = this.getValue();
1039
+ if ( type == IMAGE || type == PREVIEW )
1040
+ {
1041
+ if ( value )
1042
+ element.setStyle( 'float', value );
1043
+ else
1044
+ element.removeStyle( 'float' );
1045
+
1046
+ if ( !internalCommit && type == IMAGE )
1047
+ {
1048
+ value = ( element.getAttribute( 'align' ) || '' ).toLowerCase();
1049
+ switch( value )
1050
+ {
1051
+ // we should remove it only if it matches "left" or "right",
1052
+ // otherwise leave it intact.
1053
+ case 'left':
1054
+ case 'right':
1055
+ element.removeAttribute( 'align' );
1056
+ }
1057
+ }
1058
+ }
1059
+ else if ( type == CLEANUP )
1060
+ element.removeStyle( 'float' );
1061
+
1062
+ }
1063
+ }
1064
+ ]
1065
+ }
1066
+ ]
1067
+ },
1068
+ {
1069
+ type : 'vbox',
1070
+ height : '250px',
1071
+ children :
1072
+ [
1073
+ {
1074
+ type : 'html',
1075
+ id : 'htmlPreview',
1076
+ style : 'width:95%;',
1077
+ html : '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.common.preview ) +'<br>'+
1078
+ '<div id="' + imagePreviewLoaderId + '" class="ImagePreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div>'+
1079
+ '<div class="ImagePreviewBox"><table><tr><td>'+
1080
+ '<a href="javascript:void(0)" target="_blank" onclick="return false;" id="' + previewLinkId + '">'+
1081
+ '<img id="' + previewImageId + '" alt="" /></a>' +
1082
+ ( editor.config.image_previewText ||
1083
+ 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '+
1084
+ 'Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, '+
1085
+ 'nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.' ) +
1086
+ '</td></tr></table></div></div>'
1087
+ }
1088
+ ]
1089
+ }
1090
+ ]
1091
+ }
1092
+ ]
1093
+ },
1094
+ {
1095
+ id : 'Link',
1096
+ label : editor.lang.link.title,
1097
+ padding : 0,
1098
+ elements :
1099
+ [
1100
+ {
1101
+ id : 'txtUrl',
1102
+ type : 'text',
1103
+ label : editor.lang.common.url,
1104
+ style : 'width: 100%',
1105
+ 'default' : '',
1106
+ setup : function( type, element )
1107
+ {
1108
+ if ( type == LINK )
1109
+ {
1110
+ var href = element.data( 'cke-saved-href' );
1111
+ if ( !href )
1112
+ href = element.getAttribute( 'href' );
1113
+ this.setValue( href );
1114
+ }
1115
+ },
1116
+ commit : function( type, element )
1117
+ {
1118
+ if ( type == LINK )
1119
+ {
1120
+ if ( this.getValue() || this.isChanged() )
1121
+ {
1122
+ var url = decodeURI( this.getValue() );
1123
+ element.data( 'cke-saved-href', url );
1124
+ element.setAttribute( 'href', url );
1125
+
1126
+ if ( this.getValue() || !editor.config.image_removeLinkByEmptyURL )
1127
+ this.getDialog().addLink = true;
1128
+ }
1129
+ }
1130
+ }
1131
+ },
1132
+ {
1133
+ type : 'button',
1134
+ id : 'browse',
1135
+ filebrowser :
1136
+ {
1137
+ action : 'Browse',
1138
+ target: 'Link:txtUrl',
1139
+ url: editor.config.filebrowserImageBrowseLinkUrl
1140
+ },
1141
+ style : 'float:right',
1142
+ hidden : true,
1143
+ label : editor.lang.common.browseServer
1144
+ },
1145
+ {
1146
+ id : 'cmbTarget',
1147
+ type : 'select',
1148
+ label : editor.lang.common.target,
1149
+ 'default' : '',
1150
+ items :
1151
+ [
1152
+ [ editor.lang.common.notSet , ''],
1153
+ [ editor.lang.common.targetNew , '_blank'],
1154
+ [ editor.lang.common.targetTop , '_top'],
1155
+ [ editor.lang.common.targetSelf , '_self'],
1156
+ [ editor.lang.common.targetParent , '_parent']
1157
+ ],
1158
+ setup : function( type, element )
1159
+ {
1160
+ if ( type == LINK )
1161
+ this.setValue( element.getAttribute( 'target' ) || '' );
1162
+ },
1163
+ commit : function( type, element )
1164
+ {
1165
+ if ( type == LINK )
1166
+ {
1167
+ if ( this.getValue() || this.isChanged() )
1168
+ element.setAttribute( 'target', this.getValue() );
1169
+ }
1170
+ }
1171
+ }
1172
+ ]
1173
+ },
1174
+ {
1175
+ id : 'Upload',
1176
+ hidden : true,
1177
+ filebrowser : 'uploadButton',
1178
+ label : editor.lang.image.upload,
1179
+ elements :
1180
+ [
1181
+ {
1182
+ type : 'file',
1183
+ id : 'upload',
1184
+ label : editor.lang.image.btnUpload,
1185
+ style: 'height:40px',
1186
+ size : 38
1187
+ },
1188
+ {
1189
+ type : 'fileButton',
1190
+ id : 'uploadButton',
1191
+ filebrowser : 'info:txtUrl',
1192
+ label : editor.lang.image.btnUpload,
1193
+ 'for' : [ 'Upload', 'upload' ]
1194
+ }
1195
+ ]
1196
+ },
1197
+ {
1198
+ id : 'advanced',
1199
+ label : editor.lang.common.advancedTab,
1200
+ elements :
1201
+ [
1202
+ {
1203
+ type : 'hbox',
1204
+ widths : [ '50%', '25%', '25%' ],
1205
+ children :
1206
+ [
1207
+ {
1208
+ type : 'text',
1209
+ id : 'linkId',
1210
+ label : editor.lang.common.id,
1211
+ setup : function( type, element )
1212
+ {
1213
+ if ( type == IMAGE )
1214
+ this.setValue( element.getAttribute( 'id' ) );
1215
+ },
1216
+ commit : function( type, element )
1217
+ {
1218
+ if ( type == IMAGE )
1219
+ {
1220
+ if ( this.getValue() || this.isChanged() )
1221
+ element.setAttribute( 'id', this.getValue() );
1222
+ }
1223
+ }
1224
+ },
1225
+ {
1226
+ id : 'cmbLangDir',
1227
+ type : 'select',
1228
+ style : 'width : 100px;',
1229
+ label : editor.lang.common.langDir,
1230
+ 'default' : '',
1231
+ items :
1232
+ [
1233
+ [ editor.lang.common.notSet, '' ],
1234
+ [ editor.lang.common.langDirLtr, 'ltr' ],
1235
+ [ editor.lang.common.langDirRtl, 'rtl' ]
1236
+ ],
1237
+ setup : function( type, element )
1238
+ {
1239
+ if ( type == IMAGE )
1240
+ this.setValue( element.getAttribute( 'dir' ) );
1241
+ },
1242
+ commit : function( type, element )
1243
+ {
1244
+ if ( type == IMAGE )
1245
+ {
1246
+ if ( this.getValue() || this.isChanged() )
1247
+ element.setAttribute( 'dir', this.getValue() );
1248
+ }
1249
+ }
1250
+ },
1251
+ {
1252
+ type : 'text',
1253
+ id : 'txtLangCode',
1254
+ label : editor.lang.common.langCode,
1255
+ 'default' : '',
1256
+ setup : function( type, element )
1257
+ {
1258
+ if ( type == IMAGE )
1259
+ this.setValue( element.getAttribute( 'lang' ) );
1260
+ },
1261
+ commit : function( type, element )
1262
+ {
1263
+ if ( type == IMAGE )
1264
+ {
1265
+ if ( this.getValue() || this.isChanged() )
1266
+ element.setAttribute( 'lang', this.getValue() );
1267
+ }
1268
+ }
1269
+ }
1270
+ ]
1271
+ },
1272
+ {
1273
+ type : 'text',
1274
+ id : 'txtGenLongDescr',
1275
+ label : editor.lang.common.longDescr,
1276
+ setup : function( type, element )
1277
+ {
1278
+ if ( type == IMAGE )
1279
+ this.setValue( element.getAttribute( 'longDesc' ) );
1280
+ },
1281
+ commit : function( type, element )
1282
+ {
1283
+ if ( type == IMAGE )
1284
+ {
1285
+ if ( this.getValue() || this.isChanged() )
1286
+ element.setAttribute( 'longDesc', this.getValue() );
1287
+ }
1288
+ }
1289
+ },
1290
+ {
1291
+ type : 'hbox',
1292
+ widths : [ '50%', '50%' ],
1293
+ children :
1294
+ [
1295
+ {
1296
+ type : 'text',
1297
+ id : 'txtGenClass',
1298
+ label : editor.lang.common.cssClass,
1299
+ 'default' : '',
1300
+ setup : function( type, element )
1301
+ {
1302
+ if ( type == IMAGE )
1303
+ this.setValue( element.getAttribute( 'class' ) );
1304
+ },
1305
+ commit : function( type, element )
1306
+ {
1307
+ if ( type == IMAGE )
1308
+ {
1309
+ if ( this.getValue() || this.isChanged() )
1310
+ element.setAttribute( 'class', this.getValue() );
1311
+ }
1312
+ }
1313
+ },
1314
+ {
1315
+ type : 'text',
1316
+ id : 'txtGenTitle',
1317
+ label : editor.lang.common.advisoryTitle,
1318
+ 'default' : '',
1319
+ onChange : function()
1320
+ {
1321
+ updatePreview( this.getDialog() );
1322
+ },
1323
+ setup : function( type, element )
1324
+ {
1325
+ if ( type == IMAGE )
1326
+ this.setValue( element.getAttribute( 'title' ) );
1327
+ },
1328
+ commit : function( type, element )
1329
+ {
1330
+ if ( type == IMAGE )
1331
+ {
1332
+ if ( this.getValue() || this.isChanged() )
1333
+ element.setAttribute( 'title', this.getValue() );
1334
+ }
1335
+ else if ( type == PREVIEW )
1336
+ {
1337
+ element.setAttribute( 'title', this.getValue() );
1338
+ }
1339
+ else if ( type == CLEANUP )
1340
+ {
1341
+ element.removeAttribute( 'title' );
1342
+ }
1343
+ }
1344
+ }
1345
+ ]
1346
+ },
1347
+ {
1348
+ type : 'text',
1349
+ id : 'txtdlgGenStyle',
1350
+ label : editor.lang.common.cssStyle,
1351
+ validate : CKEDITOR.dialog.validate.inlineStyle( editor.lang.common.invalidInlineStyle ),
1352
+ 'default' : '',
1353
+ setup : function( type, element )
1354
+ {
1355
+ if ( type == IMAGE )
1356
+ {
1357
+ var genStyle = element.getAttribute( 'style' );
1358
+ if ( !genStyle && element.$.style.cssText )
1359
+ genStyle = element.$.style.cssText;
1360
+ this.setValue( genStyle );
1361
+
1362
+ var height = element.$.style.height,
1363
+ width = element.$.style.width,
1364
+ aMatchH = ( height ? height : '' ).match( regexGetSize ),
1365
+ aMatchW = ( width ? width : '').match( regexGetSize );
1366
+
1367
+ this.attributesInStyle =
1368
+ {
1369
+ height : !!aMatchH,
1370
+ width : !!aMatchW
1371
+ };
1372
+ }
1373
+ },
1374
+ onChange : function ()
1375
+ {
1376
+ commitInternally.call( this,
1377
+ [ 'info:cmbFloat', 'info:cmbAlign',
1378
+ 'info:txtVSpace', 'info:txtHSpace',
1379
+ 'info:txtBorder',
1380
+ 'info:txtWidth', 'info:txtHeight' ] );
1381
+ updatePreview( this );
1382
+ },
1383
+ commit : function( type, element )
1384
+ {
1385
+ if ( type == IMAGE && ( this.getValue() || this.isChanged() ) )
1386
+ {
1387
+ element.setAttribute( 'style', this.getValue() );
1388
+ }
1389
+ }
1390
+ }
1391
+ ]
1392
+ }
1393
+ ]
1394
+ };
1395
+ };
1396
+
1397
+ CKEDITOR.dialog.add( 'image', function( editor )
1398
+ {
1399
+ return imageDialog( editor, 'image' );
1400
+ });
1401
+
1402
+ CKEDITOR.dialog.add( 'imagebutton', function( editor )
1403
+ {
1404
+ return imageDialog( editor, 'imagebutton' );
1405
+ });
1406
+ })();