ckeditor-rails 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (347) hide show
  1. data/README.md +10 -4
  2. data/ckeditor-rails.gemspec +1 -1
  3. data/lib/ckeditor-rails/version.rb +1 -1
  4. data/vendor/assets/ckeditor/ckeditor/INSTALL.html +92 -92
  5. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/application.xml +32 -32
  6. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/run.bat +9 -9
  7. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/sample.html +45 -45
  8. data/vendor/assets/ckeditor/ckeditor/_samples/ajax.html +98 -98
  9. data/vendor/assets/ckeditor/ckeditor/_samples/api.html +192 -192
  10. data/vendor/assets/ckeditor/ckeditor/_samples/api_dialog.html +198 -198
  11. data/vendor/assets/ckeditor/ckeditor/_samples/api_dialog/my_dialog.js +28 -28
  12. data/vendor/assets/ckeditor/ckeditor/_samples/asp/advanced.asp +105 -105
  13. data/vendor/assets/ckeditor/ckeditor/_samples/asp/events.asp +136 -136
  14. data/vendor/assets/ckeditor/ckeditor/_samples/asp/index.html +103 -103
  15. data/vendor/assets/ckeditor/ckeditor/_samples/asp/replace.asp +72 -72
  16. data/vendor/assets/ckeditor/ckeditor/_samples/asp/replaceall.asp +77 -77
  17. data/vendor/assets/ckeditor/ckeditor/_samples/asp/sample_posteddata.asp +46 -46
  18. data/vendor/assets/ckeditor/ckeditor/_samples/asp/standalone.asp +72 -72
  19. data/vendor/assets/ckeditor/ckeditor/_samples/assets/_posteddata.php +59 -59
  20. data/vendor/assets/ckeditor/ckeditor/_samples/assets/output_xhtml.css +204 -204
  21. data/vendor/assets/ckeditor/ckeditor/_samples/assets/parsesample.css +70 -70
  22. data/vendor/assets/ckeditor/ckeditor/_samples/assets/swfobject.js +18 -18
  23. data/vendor/assets/ckeditor/ckeditor/_samples/autogrow.html +107 -107
  24. data/vendor/assets/ckeditor/ckeditor/_samples/bbcode.html +125 -125
  25. data/vendor/assets/ckeditor/ckeditor/_samples/devtools.html +94 -94
  26. data/vendor/assets/ckeditor/ckeditor/_samples/divreplace.html +154 -154
  27. data/vendor/assets/ckeditor/ckeditor/_samples/enterkey.html +115 -115
  28. data/vendor/assets/ckeditor/ckeditor/_samples/fullpage.html +82 -82
  29. data/vendor/assets/ckeditor/ckeditor/_samples/index.html +116 -116
  30. data/vendor/assets/ckeditor/ckeditor/_samples/jqueryadapter.html +99 -99
  31. data/vendor/assets/ckeditor/ckeditor/_samples/output_for_flash.html +275 -275
  32. data/vendor/assets/ckeditor/ckeditor/_samples/output_html.html +285 -285
  33. data/vendor/assets/ckeditor/ckeditor/_samples/output_xhtml.html +177 -177
  34. data/vendor/assets/ckeditor/ckeditor/_samples/php/advanced.php +120 -120
  35. data/vendor/assets/ckeditor/ckeditor/_samples/php/events.php +153 -153
  36. data/vendor/assets/ckeditor/ckeditor/_samples/php/index.html +47 -47
  37. data/vendor/assets/ckeditor/ckeditor/_samples/php/replace.php +87 -87
  38. data/vendor/assets/ckeditor/ckeditor/_samples/php/replaceall.php +88 -88
  39. data/vendor/assets/ckeditor/ckeditor/_samples/php/standalone.php +83 -83
  40. data/vendor/assets/ckeditor/ckeditor/_samples/placeholder.html +81 -81
  41. data/vendor/assets/ckeditor/ckeditor/_samples/readonly.html +91 -91
  42. data/vendor/assets/ckeditor/ckeditor/_samples/replacebyclass.html +64 -64
  43. data/vendor/assets/ckeditor/ckeditor/_samples/replacebycode.html +97 -97
  44. data/vendor/assets/ckeditor/ckeditor/_samples/sample.css +163 -163
  45. data/vendor/assets/ckeditor/ckeditor/_samples/sample.js +65 -65
  46. data/vendor/assets/ckeditor/ckeditor/_samples/sample_posteddata.php +21 -21
  47. data/vendor/assets/ckeditor/ckeditor/_samples/sharedspaces.html +153 -153
  48. data/vendor/assets/ckeditor/ckeditor/_samples/skins.html +110 -110
  49. data/vendor/assets/ckeditor/ckeditor/_samples/stylesheetparser.html +93 -93
  50. data/vendor/assets/ckeditor/ckeditor/_samples/tableresize.html +115 -115
  51. data/vendor/assets/ckeditor/ckeditor/_samples/ui_color.html +129 -129
  52. data/vendor/assets/ckeditor/ckeditor/_samples/ui_languages.html +134 -134
  53. data/vendor/assets/ckeditor/ckeditor/_source/adapters/jquery.js +306 -306
  54. data/vendor/assets/ckeditor/ckeditor/_source/core/_bootstrap.js +87 -87
  55. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor.js +141 -141
  56. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor_base.js +227 -227
  57. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor_basic.js +238 -238
  58. data/vendor/assets/ckeditor/ckeditor/_source/core/command.js +209 -209
  59. data/vendor/assets/ckeditor/ckeditor/_source/core/commanddefinition.js +129 -129
  60. data/vendor/assets/ckeditor/ckeditor/_source/core/config.js +431 -431
  61. data/vendor/assets/ckeditor/ckeditor/_source/core/dataprocessor.js +65 -65
  62. data/vendor/assets/ckeditor/ckeditor/_source/core/dom.js +20 -20
  63. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/comment.js +32 -32
  64. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/document.js +251 -251
  65. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/documentfragment.js +49 -49
  66. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/domobject.js +258 -258
  67. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/element.js +1681 -1681
  68. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/elementpath.js +119 -119
  69. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/event.js +145 -145
  70. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/node.js +695 -695
  71. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/nodelist.js +26 -26
  72. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/range.js +2032 -2032
  73. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/rangelist.js +213 -213
  74. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/text.js +128 -128
  75. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/walker.js +462 -462
  76. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/window.js +96 -96
  77. data/vendor/assets/ckeditor/ckeditor/_source/core/dtd.js +266 -266
  78. data/vendor/assets/ckeditor/ckeditor/_source/core/editor.js +1059 -1059
  79. data/vendor/assets/ckeditor/ckeditor/_source/core/editor_basic.js +186 -186
  80. data/vendor/assets/ckeditor/ckeditor/_source/core/env.js +291 -291
  81. data/vendor/assets/ckeditor/ckeditor/_source/core/event.js +342 -342
  82. data/vendor/assets/ckeditor/ckeditor/_source/core/eventInfo.js +120 -120
  83. data/vendor/assets/ckeditor/ckeditor/_source/core/focusmanager.js +152 -152
  84. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser.js +224 -224
  85. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/basicwriter.js +145 -145
  86. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/cdata.js +43 -43
  87. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/comment.js +60 -60
  88. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/element.js +308 -308
  89. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/filter.js +288 -288
  90. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/fragment.js +497 -497
  91. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/text.js +55 -55
  92. data/vendor/assets/ckeditor/ckeditor/_source/core/lang.js +157 -157
  93. data/vendor/assets/ckeditor/ckeditor/_source/core/loader.js +240 -240
  94. data/vendor/assets/ckeditor/ckeditor/_source/core/plugindefinition.js +83 -83
  95. data/vendor/assets/ckeditor/ckeditor/_source/core/plugins.js +103 -103
  96. data/vendor/assets/ckeditor/ckeditor/_source/core/resourcemanager.js +238 -238
  97. data/vendor/assets/ckeditor/ckeditor/_source/core/scriptloader.js +180 -180
  98. data/vendor/assets/ckeditor/ckeditor/_source/core/skins.js +184 -184
  99. data/vendor/assets/ckeditor/ckeditor/_source/core/themes.js +19 -19
  100. data/vendor/assets/ckeditor/ckeditor/_source/core/tools.js +763 -763
  101. data/vendor/assets/ckeditor/ckeditor/_source/core/ui.js +128 -128
  102. data/vendor/assets/ckeditor/ckeditor/_source/lang/_languages.js +84 -84
  103. data/vendor/assets/ckeditor/ckeditor/_source/lang/_translationstatus.txt +61 -61
  104. data/vendor/assets/ckeditor/ckeditor/_source/lang/af.js +812 -812
  105. data/vendor/assets/ckeditor/ckeditor/_source/lang/ar.js +812 -812
  106. data/vendor/assets/ckeditor/ckeditor/_source/lang/bg.js +812 -812
  107. data/vendor/assets/ckeditor/ckeditor/_source/lang/bn.js +812 -812
  108. data/vendor/assets/ckeditor/ckeditor/_source/lang/bs.js +812 -812
  109. data/vendor/assets/ckeditor/ckeditor/_source/lang/ca.js +812 -812
  110. data/vendor/assets/ckeditor/ckeditor/_source/lang/cs.js +812 -812
  111. data/vendor/assets/ckeditor/ckeditor/_source/lang/cy.js +812 -812
  112. data/vendor/assets/ckeditor/ckeditor/_source/lang/da.js +812 -812
  113. data/vendor/assets/ckeditor/ckeditor/_source/lang/de.js +812 -812
  114. data/vendor/assets/ckeditor/ckeditor/_source/lang/el.js +812 -812
  115. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-au.js +812 -812
  116. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-ca.js +812 -812
  117. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-gb.js +812 -812
  118. data/vendor/assets/ckeditor/ckeditor/_source/lang/en.js +812 -812
  119. data/vendor/assets/ckeditor/ckeditor/_source/lang/eo.js +812 -812
  120. data/vendor/assets/ckeditor/ckeditor/_source/lang/es.js +812 -812
  121. data/vendor/assets/ckeditor/ckeditor/_source/lang/et.js +812 -812
  122. data/vendor/assets/ckeditor/ckeditor/_source/lang/eu.js +812 -812
  123. data/vendor/assets/ckeditor/ckeditor/_source/lang/fa.js +812 -812
  124. data/vendor/assets/ckeditor/ckeditor/_source/lang/fi.js +812 -812
  125. data/vendor/assets/ckeditor/ckeditor/_source/lang/fo.js +812 -812
  126. data/vendor/assets/ckeditor/ckeditor/_source/lang/fr-ca.js +812 -812
  127. data/vendor/assets/ckeditor/ckeditor/_source/lang/fr.js +812 -812
  128. data/vendor/assets/ckeditor/ckeditor/_source/lang/gl.js +812 -812
  129. data/vendor/assets/ckeditor/ckeditor/_source/lang/gu.js +812 -812
  130. data/vendor/assets/ckeditor/ckeditor/_source/lang/he.js +812 -812
  131. data/vendor/assets/ckeditor/ckeditor/_source/lang/hi.js +812 -812
  132. data/vendor/assets/ckeditor/ckeditor/_source/lang/hr.js +812 -812
  133. data/vendor/assets/ckeditor/ckeditor/_source/lang/hu.js +812 -812
  134. data/vendor/assets/ckeditor/ckeditor/_source/lang/is.js +812 -812
  135. data/vendor/assets/ckeditor/ckeditor/_source/lang/it.js +812 -812
  136. data/vendor/assets/ckeditor/ckeditor/_source/lang/ja.js +812 -812
  137. data/vendor/assets/ckeditor/ckeditor/_source/lang/ka.js +812 -812
  138. data/vendor/assets/ckeditor/ckeditor/_source/lang/km.js +812 -812
  139. data/vendor/assets/ckeditor/ckeditor/_source/lang/ko.js +812 -812
  140. data/vendor/assets/ckeditor/ckeditor/_source/lang/lt.js +812 -812
  141. data/vendor/assets/ckeditor/ckeditor/_source/lang/lv.js +812 -812
  142. data/vendor/assets/ckeditor/ckeditor/_source/lang/mn.js +812 -812
  143. data/vendor/assets/ckeditor/ckeditor/_source/lang/ms.js +812 -812
  144. data/vendor/assets/ckeditor/ckeditor/_source/lang/nb.js +812 -812
  145. data/vendor/assets/ckeditor/ckeditor/_source/lang/nl.js +812 -812
  146. data/vendor/assets/ckeditor/ckeditor/_source/lang/no.js +812 -812
  147. data/vendor/assets/ckeditor/ckeditor/_source/lang/pl.js +812 -812
  148. data/vendor/assets/ckeditor/ckeditor/_source/lang/pt-br.js +811 -811
  149. data/vendor/assets/ckeditor/ckeditor/_source/lang/pt.js +812 -812
  150. data/vendor/assets/ckeditor/ckeditor/_source/lang/ro.js +812 -812
  151. data/vendor/assets/ckeditor/ckeditor/_source/lang/ru.js +812 -812
  152. data/vendor/assets/ckeditor/ckeditor/_source/lang/sk.js +812 -812
  153. data/vendor/assets/ckeditor/ckeditor/_source/lang/sl.js +812 -812
  154. data/vendor/assets/ckeditor/ckeditor/_source/lang/sr-latn.js +812 -812
  155. data/vendor/assets/ckeditor/ckeditor/_source/lang/sr.js +812 -812
  156. data/vendor/assets/ckeditor/ckeditor/_source/lang/sv.js +811 -811
  157. data/vendor/assets/ckeditor/ckeditor/_source/lang/th.js +812 -812
  158. data/vendor/assets/ckeditor/ckeditor/_source/lang/tr.js +811 -811
  159. data/vendor/assets/ckeditor/ckeditor/_source/lang/uk.js +812 -812
  160. data/vendor/assets/ckeditor/ckeditor/_source/lang/vi.js +812 -812
  161. data/vendor/assets/ckeditor/ckeditor/_source/lang/zh-cn.js +812 -812
  162. data/vendor/assets/ckeditor/ckeditor/_source/lang/zh.js +812 -812
  163. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/dialogs/a11yhelp.js +222 -222
  164. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/en.js +108 -108
  165. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/he.js +216 -216
  166. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/plugin.js +47 -47
  167. data/vendor/assets/ckeditor/ckeditor/_source/plugins/about/dialogs/about.js +76 -76
  168. data/vendor/assets/ckeditor/ckeditor/_source/plugins/about/plugin.js +24 -24
  169. data/vendor/assets/ckeditor/ckeditor/_source/plugins/adobeair/plugin.js +228 -228
  170. data/vendor/assets/ckeditor/ckeditor/_source/plugins/ajax/plugin.js +152 -152
  171. data/vendor/assets/ckeditor/ckeditor/_source/plugins/autogrow/plugin.js +88 -88
  172. data/vendor/assets/ckeditor/ckeditor/_source/plugins/basicstyles/plugin.js +101 -101
  173. data/vendor/assets/ckeditor/ckeditor/_source/plugins/bbcode/plugin.js +931 -931
  174. data/vendor/assets/ckeditor/ckeditor/_source/plugins/bidi/plugin.js +334 -334
  175. data/vendor/assets/ckeditor/ckeditor/_source/plugins/blockquote/plugin.js +305 -305
  176. data/vendor/assets/ckeditor/ckeditor/_source/plugins/button/plugin.js +290 -290
  177. data/vendor/assets/ckeditor/ckeditor/_source/plugins/clipboard/dialogs/paste.js +223 -223
  178. data/vendor/assets/ckeditor/ckeditor/_source/plugins/clipboard/plugin.js +453 -453
  179. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colorbutton/plugin.js +294 -294
  180. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colordialog/dialogs/colordialog.js +340 -340
  181. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colordialog/plugin.js +15 -15
  182. data/vendor/assets/ckeditor/ckeditor/_source/plugins/contextmenu/plugin.js +177 -177
  183. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/en.js +16 -16
  184. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/plugin.js +173 -173
  185. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialog/dialogDefinition.js +1166 -1166
  186. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialog/plugin.js +3289 -3289
  187. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialogadvtab/plugin.js +207 -207
  188. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialogui/plugin.js +1541 -1541
  189. data/vendor/assets/ckeditor/ckeditor/_source/plugins/div/dialogs/div.js +535 -535
  190. data/vendor/assets/ckeditor/ckeditor/_source/plugins/div/plugin.js +121 -121
  191. data/vendor/assets/ckeditor/ckeditor/_source/plugins/docprops/dialogs/docprops.js +686 -686
  192. data/vendor/assets/ckeditor/ckeditor/_source/plugins/docprops/plugin.js +22 -22
  193. data/vendor/assets/ckeditor/ckeditor/_source/plugins/domiterator/plugin.js +361 -361
  194. data/vendor/assets/ckeditor/ckeditor/_source/plugins/editingblock/plugin.js +275 -275
  195. data/vendor/assets/ckeditor/ckeditor/_source/plugins/elementspath/plugin.js +218 -218
  196. data/vendor/assets/ckeditor/ckeditor/_source/plugins/enterkey/plugin.js +413 -413
  197. data/vendor/assets/ckeditor/ckeditor/_source/plugins/entities/plugin.js +250 -250
  198. data/vendor/assets/ckeditor/ckeditor/_source/plugins/fakeobjects/plugin.js +175 -175
  199. data/vendor/assets/ckeditor/ckeditor/_source/plugins/filebrowser/plugin.js +524 -524
  200. data/vendor/assets/ckeditor/ckeditor/_source/plugins/find/dialogs/find.js +903 -903
  201. data/vendor/assets/ckeditor/ckeditor/_source/plugins/find/plugin.js +47 -47
  202. data/vendor/assets/ckeditor/ckeditor/_source/plugins/flash/dialogs/flash.js +673 -673
  203. data/vendor/assets/ckeditor/ckeditor/_source/plugins/flash/plugin.js +154 -154
  204. data/vendor/assets/ckeditor/ckeditor/_source/plugins/floatpanel/plugin.js +428 -428
  205. data/vendor/assets/ckeditor/ckeditor/_source/plugins/font/plugin.js +234 -234
  206. data/vendor/assets/ckeditor/ckeditor/_source/plugins/format/plugin.js +197 -197
  207. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/button.js +118 -118
  208. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/checkbox.js +153 -153
  209. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/form.js +177 -177
  210. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/hiddenfield.js +100 -100
  211. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/radio.js +135 -135
  212. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/select.js +558 -558
  213. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/textarea.js +114 -114
  214. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/textfield.js +199 -199
  215. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/plugin.js +288 -288
  216. data/vendor/assets/ckeditor/ckeditor/_source/plugins/horizontalrule/plugin.js +48 -48
  217. data/vendor/assets/ckeditor/ckeditor/_source/plugins/htmldataprocessor/plugin.js +595 -595
  218. data/vendor/assets/ckeditor/ckeditor/_source/plugins/htmlwriter/plugin.js +319 -319
  219. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframe/dialogs/iframe.js +229 -229
  220. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframe/plugin.js +87 -87
  221. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframedialog/plugin.js +188 -188
  222. data/vendor/assets/ckeditor/ckeditor/_source/plugins/image/dialogs/image.js +1406 -1406
  223. data/vendor/assets/ckeditor/ckeditor/_source/plugins/image/plugin.js +81 -81
  224. data/vendor/assets/ckeditor/ckeditor/_source/plugins/indent/plugin.js +461 -461
  225. data/vendor/assets/ckeditor/ckeditor/_source/plugins/justify/plugin.js +253 -253
  226. data/vendor/assets/ckeditor/ckeditor/_source/plugins/keystrokes/plugin.js +225 -225
  227. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/dialogs/anchor.js +144 -144
  228. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/dialogs/link.js +1424 -1424
  229. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/plugin.js +374 -374
  230. data/vendor/assets/ckeditor/ckeditor/_source/plugins/list/plugin.js +734 -734
  231. data/vendor/assets/ckeditor/ckeditor/_source/plugins/listblock/plugin.js +268 -268
  232. data/vendor/assets/ckeditor/ckeditor/_source/plugins/liststyle/dialogs/liststyle.js +225 -225
  233. data/vendor/assets/ckeditor/ckeditor/_source/plugins/liststyle/plugin.js +66 -66
  234. data/vendor/assets/ckeditor/ckeditor/_source/plugins/maximize/plugin.js +352 -352
  235. data/vendor/assets/ckeditor/ckeditor/_source/plugins/menu/plugin.js +541 -541
  236. data/vendor/assets/ckeditor/ckeditor/_source/plugins/menubutton/plugin.js +98 -98
  237. data/vendor/assets/ckeditor/ckeditor/_source/plugins/newpage/plugin.js +54 -54
  238. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pagebreak/plugin.js +164 -164
  239. data/vendor/assets/ckeditor/ckeditor/_source/plugins/panel/plugin.js +403 -403
  240. data/vendor/assets/ckeditor/ckeditor/_source/plugins/panelbutton/plugin.js +144 -144
  241. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastefromword/filter/default.js +1367 -1367
  242. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastefromword/plugin.js +141 -141
  243. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastetext/dialogs/pastetext.js +67 -67
  244. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastetext/plugin.js +98 -98
  245. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/dialogs/placeholder.js +71 -71
  246. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/en.js +16 -16
  247. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/he.js +16 -16
  248. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/plugin.js +171 -171
  249. data/vendor/assets/ckeditor/ckeditor/_source/plugins/popup/plugin.js +64 -64
  250. data/vendor/assets/ckeditor/ckeditor/_source/plugins/preview/plugin.js +109 -109
  251. data/vendor/assets/ckeditor/ckeditor/_source/plugins/print/plugin.js +42 -42
  252. data/vendor/assets/ckeditor/ckeditor/_source/plugins/removeformat/plugin.js +185 -185
  253. data/vendor/assets/ckeditor/ckeditor/_source/plugins/resize/plugin.js +168 -168
  254. data/vendor/assets/ckeditor/ckeditor/_source/plugins/richcombo/plugin.js +381 -381
  255. data/vendor/assets/ckeditor/ckeditor/_source/plugins/save/plugin.js +56 -56
  256. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/dialogs/options.js +537 -537
  257. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/dialogs/toolbar.css +71 -71
  258. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/plugin.js +964 -964
  259. data/vendor/assets/ckeditor/ckeditor/_source/plugins/selection/plugin.js +1601 -1601
  260. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/plugin.js +160 -160
  261. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showborders/plugin.js +207 -207
  262. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/dialogs/smiley.js +224 -224
  263. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/plugin.js +94 -94
  264. data/vendor/assets/ckeditor/ckeditor/_source/plugins/sourcearea/plugin.js +209 -209
  265. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/dialogs/specialchar.js +350 -350
  266. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/en.js +89 -89
  267. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/plugin.js +70 -70
  268. data/vendor/assets/ckeditor/ckeditor/_source/plugins/styles/plugin.js +1696 -1696
  269. data/vendor/assets/ckeditor/ckeditor/_source/plugins/styles/styles/default.js +88 -88
  270. data/vendor/assets/ckeditor/ckeditor/_source/plugins/stylescombo/plugin.js +218 -218
  271. data/vendor/assets/ckeditor/ckeditor/_source/plugins/stylesheetparser/plugin.js +148 -148
  272. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tab/plugin.js +367 -367
  273. data/vendor/assets/ckeditor/ckeditor/_source/plugins/table/dialogs/table.js +602 -602
  274. data/vendor/assets/ckeditor/ckeditor/_source/plugins/table/plugin.js +78 -78
  275. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tableresize/plugin.js +443 -443
  276. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tabletools/dialogs/tableCell.js +525 -525
  277. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tabletools/plugin.js +1194 -1194
  278. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/dialogs/templates.js +234 -234
  279. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/plugin.js +99 -99
  280. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/templates/default.js +94 -94
  281. data/vendor/assets/ckeditor/ckeditor/_source/plugins/toolbar/plugin.js +545 -545
  282. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/dialogs/uicolor.js +205 -205
  283. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/en.js +15 -15
  284. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/he.js +15 -15
  285. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/plugin.js +37 -37
  286. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/assets/yui.css +15 -15
  287. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/yui.js +71 -71
  288. data/vendor/assets/ckeditor/ckeditor/_source/plugins/undo/plugin.js +580 -580
  289. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/ciframe.html +49 -49
  290. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/tmpFrameset.html +52 -52
  291. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/wsc.css +82 -82
  292. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/wsc.js +192 -192
  293. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/plugin.js +33 -33
  294. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wysiwygarea/plugin.js +1351 -1351
  295. data/vendor/assets/ckeditor/ckeditor/_source/plugins/xml/plugin.js +170 -170
  296. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/dialog.css +943 -943
  297. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/editor.css +25 -25
  298. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/elementspath.css +73 -73
  299. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/icons.css +366 -366
  300. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/mainui.css +203 -203
  301. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/menu.css +232 -232
  302. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/panel.css +217 -217
  303. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/presets.css +49 -49
  304. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/reset.css +84 -84
  305. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/richcombo.css +287 -287
  306. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/skin.js +236 -236
  307. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/templates.css +88 -88
  308. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/toolbar.css +407 -407
  309. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/dialog.css +844 -844
  310. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/editor.css +25 -25
  311. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/elementspath.css +74 -74
  312. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/icons.css +363 -363
  313. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/mainui.css +153 -153
  314. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/menu.css +229 -229
  315. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/panel.css +212 -212
  316. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/presets.css +49 -49
  317. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/reset.css +84 -84
  318. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/richcombo.css +309 -309
  319. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/skin.js +74 -74
  320. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/templates.css +87 -87
  321. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/toolbar.css +522 -522
  322. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/dialog.css +861 -861
  323. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/editor.css +25 -25
  324. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/elementspath.css +74 -74
  325. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/icons.css +363 -363
  326. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/mainui.css +162 -162
  327. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/menu.css +232 -232
  328. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/panel.css +212 -212
  329. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/presets.css +50 -50
  330. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/reset.css +84 -84
  331. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/richcombo.css +302 -302
  332. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/skin.js +70 -70
  333. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/templates.css +87 -87
  334. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/toolbar.css +465 -465
  335. data/vendor/assets/ckeditor/ckeditor/_source/themes/default/theme.js +395 -395
  336. data/vendor/assets/ckeditor/ckeditor/adapters/jquery.js +6 -6
  337. data/vendor/assets/ckeditor/ckeditor/ckeditor.asp +955 -955
  338. data/vendor/assets/ckeditor/ckeditor/ckeditor.pack +211 -211
  339. data/vendor/assets/ckeditor/ckeditor/ckeditor.php +29 -29
  340. data/vendor/assets/ckeditor/ckeditor/ckeditor_basic.js +8 -8
  341. data/vendor/assets/ckeditor/ckeditor/ckeditor_basic_source.js +20 -20
  342. data/vendor/assets/ckeditor/ckeditor/ckeditor_php4.php +566 -566
  343. data/vendor/assets/ckeditor/ckeditor/ckeditor_php5.php +556 -556
  344. data/vendor/assets/ckeditor/ckeditor/config.js +11 -11
  345. data/vendor/assets/ckeditor/ckeditor/contents.css +25 -25
  346. data/vendor/assets/ckeditor/ckeditor/themes/default/theme.js +8 -8
  347. metadata +7 -9
@@ -1,175 +1,175 @@
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 cssStyle = CKEDITOR.htmlParser.cssStyle,
9
- cssLength = CKEDITOR.tools.cssLength;
10
-
11
- var cssLengthRegex = /^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i;
12
-
13
- /*
14
- * Replacing the former CSS length value with the later one, with
15
- * adjustment to the length unit.
16
- */
17
- function replaceCssLength( length1, length2 )
18
- {
19
- var parts1 = cssLengthRegex.exec( length1 ),
20
- parts2 = cssLengthRegex.exec( length2 );
21
-
22
- // Omit pixel length unit when necessary,
23
- // e.g. replaceCssLength( 10, '20px' ) -> 20
24
- if ( parts1 )
25
- {
26
- if ( !parts1[ 2 ] && parts2[ 2 ] == 'px' )
27
- return parts2[ 1 ];
28
- if ( parts1[ 2 ] == 'px' && !parts2[ 2 ] )
29
- return parts2[ 1 ] + 'px';
30
- }
31
-
32
- return length2;
33
- }
34
-
35
- var htmlFilterRules =
36
- {
37
- elements :
38
- {
39
- $ : function( element )
40
- {
41
- var attributes = element.attributes,
42
- realHtml = attributes && attributes[ 'data-cke-realelement' ],
43
- realFragment = realHtml && new CKEDITOR.htmlParser.fragment.fromHtml( decodeURIComponent( realHtml ) ),
44
- realElement = realFragment && realFragment.children[ 0 ];
45
-
46
- // Width/height in the fake object are subjected to clone into the real element.
47
- if ( realElement && element.attributes[ 'data-cke-resizable' ] )
48
- {
49
- var styles = new cssStyle( element ).rules,
50
- realAttrs = realElement.attributes,
51
- width = styles.width,
52
- height = styles.height;
53
-
54
- width && ( realAttrs.width = replaceCssLength( realAttrs.width, width ) );
55
- height && ( realAttrs.height = replaceCssLength( realAttrs.height, height ) );
56
- }
57
-
58
- return realElement;
59
- }
60
- }
61
- };
62
-
63
- CKEDITOR.plugins.add( 'fakeobjects',
64
- {
65
- requires : [ 'htmlwriter' ],
66
-
67
- afterInit : function( editor )
68
- {
69
- var dataProcessor = editor.dataProcessor,
70
- htmlFilter = dataProcessor && dataProcessor.htmlFilter;
71
-
72
- if ( htmlFilter )
73
- htmlFilter.addRules( htmlFilterRules );
74
- }
75
- });
76
-
77
- CKEDITOR.editor.prototype.createFakeElement = function( realElement, className, realElementType, isResizable )
78
- {
79
- var lang = this.lang.fakeobjects,
80
- label = lang[ realElementType ] || lang.unknown;
81
-
82
- var attributes =
83
- {
84
- 'class' : className,
85
- src : CKEDITOR.getUrl( 'images/spacer.gif' ),
86
- 'data-cke-realelement' : encodeURIComponent( realElement.getOuterHtml() ),
87
- 'data-cke-real-node-type' : realElement.type,
88
- alt : label,
89
- title : label,
90
- align : realElement.getAttribute( 'align' ) || ''
91
- };
92
-
93
- if ( realElementType )
94
- attributes[ 'data-cke-real-element-type' ] = realElementType;
95
-
96
- if ( isResizable )
97
- {
98
- attributes[ 'data-cke-resizable' ] = isResizable;
99
-
100
- var fakeStyle = new cssStyle();
101
-
102
- var width = realElement.getAttribute( 'width' ),
103
- height = realElement.getAttribute( 'height' );
104
-
105
- width && ( fakeStyle.rules.width = cssLength( width ) );
106
- height && ( fakeStyle.rules.height = cssLength( height ) );
107
- fakeStyle.populate( attributes );
108
- }
109
-
110
- return this.document.createElement( 'img', { attributes : attributes } );
111
- };
112
-
113
- CKEDITOR.editor.prototype.createFakeParserElement = function( realElement, className, realElementType, isResizable )
114
- {
115
- var lang = this.lang.fakeobjects,
116
- label = lang[ realElementType ] || lang.unknown,
117
- html;
118
-
119
- var writer = new CKEDITOR.htmlParser.basicWriter();
120
- realElement.writeHtml( writer );
121
- html = writer.getHtml();
122
-
123
- var attributes =
124
- {
125
- 'class' : className,
126
- src : CKEDITOR.getUrl( 'images/spacer.gif' ),
127
- 'data-cke-realelement' : encodeURIComponent( html ),
128
- 'data-cke-real-node-type' : realElement.type,
129
- alt : label,
130
- title : label,
131
- align : realElement.attributes.align || ''
132
- };
133
-
134
- if ( realElementType )
135
- attributes[ 'data-cke-real-element-type' ] = realElementType;
136
-
137
- if ( isResizable )
138
- {
139
- attributes[ 'data-cke-resizable' ] = isResizable;
140
- var realAttrs = realElement.attributes,
141
- fakeStyle = new cssStyle();
142
-
143
- var width = realAttrs.width,
144
- height = realAttrs.height;
145
-
146
- width != undefined && ( fakeStyle.rules.width = cssLength( width ) );
147
- height != undefined && ( fakeStyle.rules.height = cssLength ( height ) );
148
- fakeStyle.populate( attributes );
149
- }
150
-
151
- return new CKEDITOR.htmlParser.element( 'img', attributes );
152
- };
153
-
154
- CKEDITOR.editor.prototype.restoreRealElement = function( fakeElement )
155
- {
156
- if ( fakeElement.data( 'cke-real-node-type' ) != CKEDITOR.NODE_ELEMENT )
157
- return null;
158
-
159
- var element = CKEDITOR.dom.element.createFromHtml(
160
- decodeURIComponent( fakeElement.data( 'cke-realelement' ) ),
161
- this.document );
162
-
163
- if ( fakeElement.data( 'cke-resizable') )
164
- {
165
- var width = fakeElement.getStyle( 'width' ),
166
- height = fakeElement.getStyle( 'height' );
167
-
168
- width && element.setAttribute( 'width', replaceCssLength( element.getAttribute( 'width' ), width ) );
169
- height && element.setAttribute( 'height', replaceCssLength( element.getAttribute( 'height' ), height ) );
170
- }
171
-
172
- return element;
173
- };
174
-
175
- })();
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 cssStyle = CKEDITOR.htmlParser.cssStyle,
9
+ cssLength = CKEDITOR.tools.cssLength;
10
+
11
+ var cssLengthRegex = /^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i;
12
+
13
+ /*
14
+ * Replacing the former CSS length value with the later one, with
15
+ * adjustment to the length unit.
16
+ */
17
+ function replaceCssLength( length1, length2 )
18
+ {
19
+ var parts1 = cssLengthRegex.exec( length1 ),
20
+ parts2 = cssLengthRegex.exec( length2 );
21
+
22
+ // Omit pixel length unit when necessary,
23
+ // e.g. replaceCssLength( 10, '20px' ) -> 20
24
+ if ( parts1 )
25
+ {
26
+ if ( !parts1[ 2 ] && parts2[ 2 ] == 'px' )
27
+ return parts2[ 1 ];
28
+ if ( parts1[ 2 ] == 'px' && !parts2[ 2 ] )
29
+ return parts2[ 1 ] + 'px';
30
+ }
31
+
32
+ return length2;
33
+ }
34
+
35
+ var htmlFilterRules =
36
+ {
37
+ elements :
38
+ {
39
+ $ : function( element )
40
+ {
41
+ var attributes = element.attributes,
42
+ realHtml = attributes && attributes[ 'data-cke-realelement' ],
43
+ realFragment = realHtml && new CKEDITOR.htmlParser.fragment.fromHtml( decodeURIComponent( realHtml ) ),
44
+ realElement = realFragment && realFragment.children[ 0 ];
45
+
46
+ // Width/height in the fake object are subjected to clone into the real element.
47
+ if ( realElement && element.attributes[ 'data-cke-resizable' ] )
48
+ {
49
+ var styles = new cssStyle( element ).rules,
50
+ realAttrs = realElement.attributes,
51
+ width = styles.width,
52
+ height = styles.height;
53
+
54
+ width && ( realAttrs.width = replaceCssLength( realAttrs.width, width ) );
55
+ height && ( realAttrs.height = replaceCssLength( realAttrs.height, height ) );
56
+ }
57
+
58
+ return realElement;
59
+ }
60
+ }
61
+ };
62
+
63
+ CKEDITOR.plugins.add( 'fakeobjects',
64
+ {
65
+ requires : [ 'htmlwriter' ],
66
+
67
+ afterInit : function( editor )
68
+ {
69
+ var dataProcessor = editor.dataProcessor,
70
+ htmlFilter = dataProcessor && dataProcessor.htmlFilter;
71
+
72
+ if ( htmlFilter )
73
+ htmlFilter.addRules( htmlFilterRules );
74
+ }
75
+ });
76
+
77
+ CKEDITOR.editor.prototype.createFakeElement = function( realElement, className, realElementType, isResizable )
78
+ {
79
+ var lang = this.lang.fakeobjects,
80
+ label = lang[ realElementType ] || lang.unknown;
81
+
82
+ var attributes =
83
+ {
84
+ 'class' : className,
85
+ src : CKEDITOR.getUrl( 'images/spacer.gif' ),
86
+ 'data-cke-realelement' : encodeURIComponent( realElement.getOuterHtml() ),
87
+ 'data-cke-real-node-type' : realElement.type,
88
+ alt : label,
89
+ title : label,
90
+ align : realElement.getAttribute( 'align' ) || ''
91
+ };
92
+
93
+ if ( realElementType )
94
+ attributes[ 'data-cke-real-element-type' ] = realElementType;
95
+
96
+ if ( isResizable )
97
+ {
98
+ attributes[ 'data-cke-resizable' ] = isResizable;
99
+
100
+ var fakeStyle = new cssStyle();
101
+
102
+ var width = realElement.getAttribute( 'width' ),
103
+ height = realElement.getAttribute( 'height' );
104
+
105
+ width && ( fakeStyle.rules.width = cssLength( width ) );
106
+ height && ( fakeStyle.rules.height = cssLength( height ) );
107
+ fakeStyle.populate( attributes );
108
+ }
109
+
110
+ return this.document.createElement( 'img', { attributes : attributes } );
111
+ };
112
+
113
+ CKEDITOR.editor.prototype.createFakeParserElement = function( realElement, className, realElementType, isResizable )
114
+ {
115
+ var lang = this.lang.fakeobjects,
116
+ label = lang[ realElementType ] || lang.unknown,
117
+ html;
118
+
119
+ var writer = new CKEDITOR.htmlParser.basicWriter();
120
+ realElement.writeHtml( writer );
121
+ html = writer.getHtml();
122
+
123
+ var attributes =
124
+ {
125
+ 'class' : className,
126
+ src : CKEDITOR.getUrl( 'images/spacer.gif' ),
127
+ 'data-cke-realelement' : encodeURIComponent( html ),
128
+ 'data-cke-real-node-type' : realElement.type,
129
+ alt : label,
130
+ title : label,
131
+ align : realElement.attributes.align || ''
132
+ };
133
+
134
+ if ( realElementType )
135
+ attributes[ 'data-cke-real-element-type' ] = realElementType;
136
+
137
+ if ( isResizable )
138
+ {
139
+ attributes[ 'data-cke-resizable' ] = isResizable;
140
+ var realAttrs = realElement.attributes,
141
+ fakeStyle = new cssStyle();
142
+
143
+ var width = realAttrs.width,
144
+ height = realAttrs.height;
145
+
146
+ width != undefined && ( fakeStyle.rules.width = cssLength( width ) );
147
+ height != undefined && ( fakeStyle.rules.height = cssLength ( height ) );
148
+ fakeStyle.populate( attributes );
149
+ }
150
+
151
+ return new CKEDITOR.htmlParser.element( 'img', attributes );
152
+ };
153
+
154
+ CKEDITOR.editor.prototype.restoreRealElement = function( fakeElement )
155
+ {
156
+ if ( fakeElement.data( 'cke-real-node-type' ) != CKEDITOR.NODE_ELEMENT )
157
+ return null;
158
+
159
+ var element = CKEDITOR.dom.element.createFromHtml(
160
+ decodeURIComponent( fakeElement.data( 'cke-realelement' ) ),
161
+ this.document );
162
+
163
+ if ( fakeElement.data( 'cke-resizable') )
164
+ {
165
+ var width = fakeElement.getStyle( 'width' ),
166
+ height = fakeElement.getStyle( 'height' );
167
+
168
+ width && element.setAttribute( 'width', replaceCssLength( element.getAttribute( 'width' ), width ) );
169
+ height && element.setAttribute( 'height', replaceCssLength( element.getAttribute( 'height' ), height ) );
170
+ }
171
+
172
+ return element;
173
+ };
174
+
175
+ })();
@@ -1,524 +1,524 @@
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
- /**
7
- * @fileOverview The "filebrowser" plugin, it adds support for file uploads and
8
- * browsing.
9
- *
10
- * When file is selected inside of the file browser or uploaded, its url is
11
- * inserted automatically to a field, which is described in the 'filebrowser'
12
- * attribute. To specify field that should be updated, pass the tab id and
13
- * element id, separated with a colon.
14
- *
15
- * Example 1: (Browse)
16
- *
17
- * <pre>
18
- * {
19
- * type : 'button',
20
- * id : 'browse',
21
- * filebrowser : 'tabId:elementId',
22
- * label : editor.lang.common.browseServer
23
- * }
24
- * </pre>
25
- *
26
- * If you set the 'filebrowser' attribute on any element other than
27
- * 'fileButton', the 'Browse' action will be triggered.
28
- *
29
- * Example 2: (Quick Upload)
30
- *
31
- * <pre>
32
- * {
33
- * type : 'fileButton',
34
- * id : 'uploadButton',
35
- * filebrowser : 'tabId:elementId',
36
- * label : editor.lang.common.uploadSubmit,
37
- * 'for' : [ 'upload', 'upload' ]
38
- * }
39
- * </pre>
40
- *
41
- * If you set the 'filebrowser' attribute on a fileButton element, the
42
- * 'QuickUpload' action will be executed.
43
- *
44
- * Filebrowser plugin also supports more advanced configuration (through
45
- * javascript object).
46
- *
47
- * The following settings are supported:
48
- *
49
- * <pre>
50
- * [action] - Browse or QuickUpload
51
- * [target] - field to update, tabId:elementId
52
- * [params] - additional arguments to be passed to the server connector (optional)
53
- * [onSelect] - function to execute when file is selected/uploaded (optional)
54
- * [url] - the URL to be called (optional)
55
- * </pre>
56
- *
57
- * Example 3: (Quick Upload)
58
- *
59
- * <pre>
60
- * {
61
- * type : 'fileButton',
62
- * label : editor.lang.common.uploadSubmit,
63
- * id : 'buttonId',
64
- * filebrowser :
65
- * {
66
- * action : 'QuickUpload', //required
67
- * target : 'tab1:elementId', //required
68
- * params : //optional
69
- * {
70
- * type : 'Files',
71
- * currentFolder : '/folder/'
72
- * },
73
- * onSelect : function( fileUrl, errorMessage ) //optional
74
- * {
75
- * // Do not call the built-in selectFuntion
76
- * // return false;
77
- * }
78
- * },
79
- * 'for' : [ 'tab1', 'myFile' ]
80
- * }
81
- * </pre>
82
- *
83
- * Suppose we have a file element with id 'myFile', text field with id
84
- * 'elementId' and a fileButton. If filebowser.url is not specified explicitly,
85
- * form action will be set to 'filebrowser[DialogName]UploadUrl' or, if not
86
- * specified, to 'filebrowserUploadUrl'. Additional parameters from 'params'
87
- * object will be added to the query string. It is possible to create your own
88
- * uploadHandler and cancel the built-in updateTargetElement command.
89
- *
90
- * Example 4: (Browse)
91
- *
92
- * <pre>
93
- * {
94
- * type : 'button',
95
- * id : 'buttonId',
96
- * label : editor.lang.common.browseServer,
97
- * filebrowser :
98
- * {
99
- * action : 'Browse',
100
- * url : '/ckfinder/ckfinder.html&amp;type=Images',
101
- * target : 'tab1:elementId'
102
- * }
103
- * }
104
- * </pre>
105
- *
106
- * In this example, after pressing a button, file browser will be opened in a
107
- * popup. If we don't specify filebrowser.url attribute,
108
- * 'filebrowser[DialogName]BrowseUrl' or 'filebrowserBrowseUrl' will be used.
109
- * After selecting a file in a file browser, an element with id 'elementId' will
110
- * be updated. Just like in the third example, a custom 'onSelect' function may be
111
- * defined.
112
- */
113
- ( function()
114
- {
115
- /*
116
- * Adds (additional) arguments to given url.
117
- *
118
- * @param {String}
119
- * url The url.
120
- * @param {Object}
121
- * params Additional parameters.
122
- */
123
- function addQueryString( url, params )
124
- {
125
- var queryString = [];
126
-
127
- if ( !params )
128
- return url;
129
- else
130
- {
131
- for ( var i in params )
132
- queryString.push( i + "=" + encodeURIComponent( params[ i ] ) );
133
- }
134
-
135
- return url + ( ( url.indexOf( "?" ) != -1 ) ? "&" : "?" ) + queryString.join( "&" );
136
- }
137
-
138
- /*
139
- * Make a string's first character uppercase.
140
- *
141
- * @param {String}
142
- * str String.
143
- */
144
- function ucFirst( str )
145
- {
146
- str += '';
147
- var f = str.charAt( 0 ).toUpperCase();
148
- return f + str.substr( 1 );
149
- }
150
-
151
- /*
152
- * The onlick function assigned to the 'Browse Server' button. Opens the
153
- * file browser and updates target field when file is selected.
154
- *
155
- * @param {CKEDITOR.event}
156
- * evt The event object.
157
- */
158
- function browseServer( evt )
159
- {
160
- var dialog = this.getDialog();
161
- var editor = dialog.getParentEditor();
162
-
163
- editor._.filebrowserSe = this;
164
-
165
- var width = editor.config[ 'filebrowser' + ucFirst( dialog.getName() ) + 'WindowWidth' ]
166
- || editor.config.filebrowserWindowWidth || '80%';
167
- var height = editor.config[ 'filebrowser' + ucFirst( dialog.getName() ) + 'WindowHeight' ]
168
- || editor.config.filebrowserWindowHeight || '70%';
169
-
170
- var params = this.filebrowser.params || {};
171
- params.CKEditor = editor.name;
172
- params.CKEditorFuncNum = editor._.filebrowserFn;
173
- if ( !params.langCode )
174
- params.langCode = editor.langCode;
175
-
176
- var url = addQueryString( this.filebrowser.url, params );
177
- editor.popup( url, width, height, editor.config.fileBrowserWindowFeatures );
178
- }
179
-
180
- /*
181
- * The onlick function assigned to the 'Upload' button. Makes the final
182
- * decision whether form is really submitted and updates target field when
183
- * file is uploaded.
184
- *
185
- * @param {CKEDITOR.event}
186
- * evt The event object.
187
- */
188
- function uploadFile( evt )
189
- {
190
- var dialog = this.getDialog();
191
- var editor = dialog.getParentEditor();
192
-
193
- editor._.filebrowserSe = this;
194
-
195
- // If user didn't select the file, stop the upload.
196
- if ( !dialog.getContentElement( this[ 'for' ][ 0 ], this[ 'for' ][ 1 ] ).getInputElement().$.value )
197
- return false;
198
-
199
- if ( !dialog.getContentElement( this[ 'for' ][ 0 ], this[ 'for' ][ 1 ] ).getAction() )
200
- return false;
201
-
202
- return true;
203
- }
204
-
205
- /*
206
- * Setups the file element.
207
- *
208
- * @param {CKEDITOR.ui.dialog.file}
209
- * fileInput The file element used during file upload.
210
- * @param {Object}
211
- * filebrowser Object containing filebrowser settings assigned to
212
- * the fileButton associated with this file element.
213
- */
214
- function setupFileElement( editor, fileInput, filebrowser )
215
- {
216
- var params = filebrowser.params || {};
217
- params.CKEditor = editor.name;
218
- params.CKEditorFuncNum = editor._.filebrowserFn;
219
- if ( !params.langCode )
220
- params.langCode = editor.langCode;
221
-
222
- fileInput.action = addQueryString( filebrowser.url, params );
223
- fileInput.filebrowser = filebrowser;
224
- }
225
-
226
- /*
227
- * Traverse through the content definition and attach filebrowser to
228
- * elements with 'filebrowser' attribute.
229
- *
230
- * @param String
231
- * dialogName Dialog name.
232
- * @param {CKEDITOR.dialog.definitionObject}
233
- * definition Dialog definition.
234
- * @param {Array}
235
- * elements Array of {@link CKEDITOR.dialog.definition.content}
236
- * objects.
237
- */
238
- function attachFileBrowser( editor, dialogName, definition, elements )
239
- {
240
- var element, fileInput;
241
-
242
- for ( var i in elements )
243
- {
244
- element = elements[ i ];
245
-
246
- if ( element.type == 'hbox' || element.type == 'vbox' )
247
- attachFileBrowser( editor, dialogName, definition, element.children );
248
-
249
- if ( !element.filebrowser )
250
- continue;
251
-
252
- if ( typeof element.filebrowser == 'string' )
253
- {
254
- var fb =
255
- {
256
- action : ( element.type == 'fileButton' ) ? 'QuickUpload' : 'Browse',
257
- target : element.filebrowser
258
- };
259
- element.filebrowser = fb;
260
- }
261
-
262
- if ( element.filebrowser.action == 'Browse' )
263
- {
264
- var url = element.filebrowser.url;
265
- if ( url === undefined )
266
- {
267
- url = editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'BrowseUrl' ];
268
- if ( url === undefined )
269
- url = editor.config.filebrowserBrowseUrl;
270
- }
271
-
272
- if ( url )
273
- {
274
- element.onClick = browseServer;
275
- element.filebrowser.url = url;
276
- element.hidden = false;
277
- }
278
- }
279
- else if ( element.filebrowser.action == 'QuickUpload' && element[ 'for' ] )
280
- {
281
- url = element.filebrowser.url;
282
- if ( url === undefined )
283
- {
284
- url = editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'UploadUrl' ];
285
- if ( url === undefined )
286
- url = editor.config.filebrowserUploadUrl;
287
- }
288
-
289
- if ( url )
290
- {
291
- var onClick = element.onClick;
292
- element.onClick = function( evt )
293
- {
294
- // "element" here means the definition object, so we need to find the correct
295
- // button to scope the event call
296
- var sender = evt.sender;
297
- if ( onClick && onClick.call( sender, evt ) === false )
298
- return false;
299
-
300
- return uploadFile.call( sender, evt );
301
- };
302
-
303
- element.filebrowser.url = url;
304
- element.hidden = false;
305
- setupFileElement( editor, definition.getContents( element[ 'for' ][ 0 ] ).get( element[ 'for' ][ 1 ] ), element.filebrowser );
306
- }
307
- }
308
- }
309
- }
310
-
311
- /*
312
- * Updates the target element with the url of uploaded/selected file.
313
- *
314
- * @param {String}
315
- * url The url of a file.
316
- */
317
- function updateTargetElement( url, sourceElement )
318
- {
319
- var dialog = sourceElement.getDialog();
320
- var targetElement = sourceElement.filebrowser.target || null;
321
- url = url.replace( /#/g, '%23' );
322
-
323
- // If there is a reference to targetElement, update it.
324
- if ( targetElement )
325
- {
326
- var target = targetElement.split( ':' );
327
- var element = dialog.getContentElement( target[ 0 ], target[ 1 ] );
328
- if ( element )
329
- {
330
- element.setValue( url );
331
- dialog.selectPage( target[ 0 ] );
332
- }
333
- }
334
- }
335
-
336
- /*
337
- * Returns true if filebrowser is configured in one of the elements.
338
- *
339
- * @param {CKEDITOR.dialog.definitionObject}
340
- * definition Dialog definition.
341
- * @param String
342
- * tabId The tab id where element(s) can be found.
343
- * @param String
344
- * elementId The element id (or ids, separated with a semicolon) to check.
345
- */
346
- function isConfigured( definition, tabId, elementId )
347
- {
348
- if ( elementId.indexOf( ";" ) !== -1 )
349
- {
350
- var ids = elementId.split( ";" );
351
- for ( var i = 0 ; i < ids.length ; i++ )
352
- {
353
- if ( isConfigured( definition, tabId, ids[i] ) )
354
- return true;
355
- }
356
- return false;
357
- }
358
-
359
- var elementFileBrowser = definition.getContents( tabId ).get( elementId ).filebrowser;
360
- return ( elementFileBrowser && elementFileBrowser.url );
361
- }
362
-
363
- function setUrl( fileUrl, data )
364
- {
365
- var dialog = this._.filebrowserSe.getDialog(),
366
- targetInput = this._.filebrowserSe[ 'for' ],
367
- onSelect = this._.filebrowserSe.filebrowser.onSelect;
368
-
369
- if ( targetInput )
370
- dialog.getContentElement( targetInput[ 0 ], targetInput[ 1 ] ).reset();
371
-
372
- if ( typeof data == 'function' && data.call( this._.filebrowserSe ) === false )
373
- return;
374
-
375
- if ( onSelect && onSelect.call( this._.filebrowserSe, fileUrl, data ) === false )
376
- return;
377
-
378
- // The "data" argument may be used to pass the error message to the editor.
379
- if ( typeof data == 'string' && data )
380
- alert( data );
381
-
382
- if ( fileUrl )
383
- updateTargetElement( fileUrl, this._.filebrowserSe );
384
- }
385
-
386
- CKEDITOR.plugins.add( 'filebrowser',
387
- {
388
- init : function( editor, pluginPath )
389
- {
390
- editor._.filebrowserFn = CKEDITOR.tools.addFunction( setUrl, editor );
391
- editor.on( 'destroy', function () { CKEDITOR.tools.removeFunction( this._.filebrowserFn ); } );
392
- }
393
- } );
394
-
395
- CKEDITOR.on( 'dialogDefinition', function( evt )
396
- {
397
- var definition = evt.data.definition,
398
- element;
399
- // Associate filebrowser to elements with 'filebrowser' attribute.
400
- for ( var i in definition.contents )
401
- {
402
- if ( ( element = definition.contents[ i ] ) )
403
- {
404
- attachFileBrowser( evt.editor, evt.data.name, definition, element.elements );
405
- if ( element.hidden && element.filebrowser )
406
- {
407
- element.hidden = !isConfigured( definition, element[ 'id' ], element.filebrowser );
408
- }
409
- }
410
- }
411
- } );
412
-
413
- } )();
414
-
415
- /**
416
- * The location of an external file browser, that should be launched when "Browse Server" button is pressed.
417
- * If configured, the "Browse Server" button will appear in Link, Image and Flash dialogs.
418
- * @see The <a href="http://docs.cksource.com/CKEditor_3.x/Developers_Guide/File_Browser_(Uploader)">File Browser/Uploader</a> documentation.
419
- * @name CKEDITOR.config.filebrowserBrowseUrl
420
- * @since 3.0
421
- * @type String
422
- * @default '' (empty string = disabled)
423
- * @example
424
- * config.filebrowserBrowseUrl = '/browser/browse.php';
425
- */
426
-
427
- /**
428
- * The location of a script that handles file uploads.
429
- * If set, the "Upload" tab will appear in "Link", "Image" and "Flash" dialogs.
430
- * @name CKEDITOR.config.filebrowserUploadUrl
431
- * @see The <a href="http://docs.cksource.com/CKEditor_3.x/Developers_Guide/File_Browser_(Uploader)">File Browser/Uploader</a> documentation.
432
- * @since 3.0
433
- * @type String
434
- * @default '' (empty string = disabled)
435
- * @example
436
- * config.filebrowserUploadUrl = '/uploader/upload.php';
437
- */
438
-
439
- /**
440
- * The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Image dialog.
441
- * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserBrowseUrl}.
442
- * @name CKEDITOR.config.filebrowserImageBrowseUrl
443
- * @since 3.0
444
- * @type String
445
- * @default '' (empty string = disabled)
446
- * @example
447
- * config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images';
448
- */
449
-
450
- /**
451
- * The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Flash dialog.
452
- * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserBrowseUrl}.
453
- * @name CKEDITOR.config.filebrowserFlashBrowseUrl
454
- * @since 3.0
455
- * @type String
456
- * @default '' (empty string = disabled)
457
- * @example
458
- * config.filebrowserFlashBrowseUrl = '/browser/browse.php?type=Flash';
459
- */
460
-
461
- /**
462
- * The location of a script that handles file uploads in the Image dialog.
463
- * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserUploadUrl}.
464
- * @name CKEDITOR.config.filebrowserImageUploadUrl
465
- * @since 3.0
466
- * @type String
467
- * @default '' (empty string = disabled)
468
- * @example
469
- * config.filebrowserImageUploadUrl = '/uploader/upload.php?type=Images';
470
- */
471
-
472
- /**
473
- * The location of a script that handles file uploads in the Flash dialog.
474
- * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserUploadUrl}.
475
- * @name CKEDITOR.config.filebrowserFlashUploadUrl
476
- * @since 3.0
477
- * @type String
478
- * @default '' (empty string = disabled)
479
- * @example
480
- * config.filebrowserFlashUploadUrl = '/uploader/upload.php?type=Flash';
481
- */
482
-
483
- /**
484
- * The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Link tab of Image dialog.
485
- * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserBrowseUrl}.
486
- * @name CKEDITOR.config.filebrowserImageBrowseLinkUrl
487
- * @since 3.2
488
- * @type String
489
- * @default '' (empty string = disabled)
490
- * @example
491
- * config.filebrowserImageBrowseLinkUrl = '/browser/browse.php';
492
- */
493
-
494
- /**
495
- * The "features" to use in the file browser popup window.
496
- * @name CKEDITOR.config.filebrowserWindowFeatures
497
- * @since 3.4.1
498
- * @type String
499
- * @default 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes'
500
- * @example
501
- * config.filebrowserWindowFeatures = 'resizable=yes,scrollbars=no';
502
- */
503
-
504
- /**
505
- * The width of the file browser popup window. It can be a number or a percent string.
506
- * @name CKEDITOR.config.filebrowserWindowWidth
507
- * @type Number|String
508
- * @default '80%'
509
- * @example
510
- * config.filebrowserWindowWidth = 750;
511
- * @example
512
- * config.filebrowserWindowWidth = '50%';
513
- */
514
-
515
- /**
516
- * The height of the file browser popup window. It can be a number or a percent string.
517
- * @name CKEDITOR.config.filebrowserWindowHeight
518
- * @type Number|String
519
- * @default '70%'
520
- * @example
521
- * config.filebrowserWindowHeight = 580;
522
- * @example
523
- * config.filebrowserWindowHeight = '50%';
524
- */
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
+ /**
7
+ * @fileOverview The "filebrowser" plugin, it adds support for file uploads and
8
+ * browsing.
9
+ *
10
+ * When file is selected inside of the file browser or uploaded, its url is
11
+ * inserted automatically to a field, which is described in the 'filebrowser'
12
+ * attribute. To specify field that should be updated, pass the tab id and
13
+ * element id, separated with a colon.
14
+ *
15
+ * Example 1: (Browse)
16
+ *
17
+ * <pre>
18
+ * {
19
+ * type : 'button',
20
+ * id : 'browse',
21
+ * filebrowser : 'tabId:elementId',
22
+ * label : editor.lang.common.browseServer
23
+ * }
24
+ * </pre>
25
+ *
26
+ * If you set the 'filebrowser' attribute on any element other than
27
+ * 'fileButton', the 'Browse' action will be triggered.
28
+ *
29
+ * Example 2: (Quick Upload)
30
+ *
31
+ * <pre>
32
+ * {
33
+ * type : 'fileButton',
34
+ * id : 'uploadButton',
35
+ * filebrowser : 'tabId:elementId',
36
+ * label : editor.lang.common.uploadSubmit,
37
+ * 'for' : [ 'upload', 'upload' ]
38
+ * }
39
+ * </pre>
40
+ *
41
+ * If you set the 'filebrowser' attribute on a fileButton element, the
42
+ * 'QuickUpload' action will be executed.
43
+ *
44
+ * Filebrowser plugin also supports more advanced configuration (through
45
+ * javascript object).
46
+ *
47
+ * The following settings are supported:
48
+ *
49
+ * <pre>
50
+ * [action] - Browse or QuickUpload
51
+ * [target] - field to update, tabId:elementId
52
+ * [params] - additional arguments to be passed to the server connector (optional)
53
+ * [onSelect] - function to execute when file is selected/uploaded (optional)
54
+ * [url] - the URL to be called (optional)
55
+ * </pre>
56
+ *
57
+ * Example 3: (Quick Upload)
58
+ *
59
+ * <pre>
60
+ * {
61
+ * type : 'fileButton',
62
+ * label : editor.lang.common.uploadSubmit,
63
+ * id : 'buttonId',
64
+ * filebrowser :
65
+ * {
66
+ * action : 'QuickUpload', //required
67
+ * target : 'tab1:elementId', //required
68
+ * params : //optional
69
+ * {
70
+ * type : 'Files',
71
+ * currentFolder : '/folder/'
72
+ * },
73
+ * onSelect : function( fileUrl, errorMessage ) //optional
74
+ * {
75
+ * // Do not call the built-in selectFuntion
76
+ * // return false;
77
+ * }
78
+ * },
79
+ * 'for' : [ 'tab1', 'myFile' ]
80
+ * }
81
+ * </pre>
82
+ *
83
+ * Suppose we have a file element with id 'myFile', text field with id
84
+ * 'elementId' and a fileButton. If filebowser.url is not specified explicitly,
85
+ * form action will be set to 'filebrowser[DialogName]UploadUrl' or, if not
86
+ * specified, to 'filebrowserUploadUrl'. Additional parameters from 'params'
87
+ * object will be added to the query string. It is possible to create your own
88
+ * uploadHandler and cancel the built-in updateTargetElement command.
89
+ *
90
+ * Example 4: (Browse)
91
+ *
92
+ * <pre>
93
+ * {
94
+ * type : 'button',
95
+ * id : 'buttonId',
96
+ * label : editor.lang.common.browseServer,
97
+ * filebrowser :
98
+ * {
99
+ * action : 'Browse',
100
+ * url : '/ckfinder/ckfinder.html&amp;type=Images',
101
+ * target : 'tab1:elementId'
102
+ * }
103
+ * }
104
+ * </pre>
105
+ *
106
+ * In this example, after pressing a button, file browser will be opened in a
107
+ * popup. If we don't specify filebrowser.url attribute,
108
+ * 'filebrowser[DialogName]BrowseUrl' or 'filebrowserBrowseUrl' will be used.
109
+ * After selecting a file in a file browser, an element with id 'elementId' will
110
+ * be updated. Just like in the third example, a custom 'onSelect' function may be
111
+ * defined.
112
+ */
113
+ ( function()
114
+ {
115
+ /*
116
+ * Adds (additional) arguments to given url.
117
+ *
118
+ * @param {String}
119
+ * url The url.
120
+ * @param {Object}
121
+ * params Additional parameters.
122
+ */
123
+ function addQueryString( url, params )
124
+ {
125
+ var queryString = [];
126
+
127
+ if ( !params )
128
+ return url;
129
+ else
130
+ {
131
+ for ( var i in params )
132
+ queryString.push( i + "=" + encodeURIComponent( params[ i ] ) );
133
+ }
134
+
135
+ return url + ( ( url.indexOf( "?" ) != -1 ) ? "&" : "?" ) + queryString.join( "&" );
136
+ }
137
+
138
+ /*
139
+ * Make a string's first character uppercase.
140
+ *
141
+ * @param {String}
142
+ * str String.
143
+ */
144
+ function ucFirst( str )
145
+ {
146
+ str += '';
147
+ var f = str.charAt( 0 ).toUpperCase();
148
+ return f + str.substr( 1 );
149
+ }
150
+
151
+ /*
152
+ * The onlick function assigned to the 'Browse Server' button. Opens the
153
+ * file browser and updates target field when file is selected.
154
+ *
155
+ * @param {CKEDITOR.event}
156
+ * evt The event object.
157
+ */
158
+ function browseServer( evt )
159
+ {
160
+ var dialog = this.getDialog();
161
+ var editor = dialog.getParentEditor();
162
+
163
+ editor._.filebrowserSe = this;
164
+
165
+ var width = editor.config[ 'filebrowser' + ucFirst( dialog.getName() ) + 'WindowWidth' ]
166
+ || editor.config.filebrowserWindowWidth || '80%';
167
+ var height = editor.config[ 'filebrowser' + ucFirst( dialog.getName() ) + 'WindowHeight' ]
168
+ || editor.config.filebrowserWindowHeight || '70%';
169
+
170
+ var params = this.filebrowser.params || {};
171
+ params.CKEditor = editor.name;
172
+ params.CKEditorFuncNum = editor._.filebrowserFn;
173
+ if ( !params.langCode )
174
+ params.langCode = editor.langCode;
175
+
176
+ var url = addQueryString( this.filebrowser.url, params );
177
+ editor.popup( url, width, height, editor.config.fileBrowserWindowFeatures );
178
+ }
179
+
180
+ /*
181
+ * The onlick function assigned to the 'Upload' button. Makes the final
182
+ * decision whether form is really submitted and updates target field when
183
+ * file is uploaded.
184
+ *
185
+ * @param {CKEDITOR.event}
186
+ * evt The event object.
187
+ */
188
+ function uploadFile( evt )
189
+ {
190
+ var dialog = this.getDialog();
191
+ var editor = dialog.getParentEditor();
192
+
193
+ editor._.filebrowserSe = this;
194
+
195
+ // If user didn't select the file, stop the upload.
196
+ if ( !dialog.getContentElement( this[ 'for' ][ 0 ], this[ 'for' ][ 1 ] ).getInputElement().$.value )
197
+ return false;
198
+
199
+ if ( !dialog.getContentElement( this[ 'for' ][ 0 ], this[ 'for' ][ 1 ] ).getAction() )
200
+ return false;
201
+
202
+ return true;
203
+ }
204
+
205
+ /*
206
+ * Setups the file element.
207
+ *
208
+ * @param {CKEDITOR.ui.dialog.file}
209
+ * fileInput The file element used during file upload.
210
+ * @param {Object}
211
+ * filebrowser Object containing filebrowser settings assigned to
212
+ * the fileButton associated with this file element.
213
+ */
214
+ function setupFileElement( editor, fileInput, filebrowser )
215
+ {
216
+ var params = filebrowser.params || {};
217
+ params.CKEditor = editor.name;
218
+ params.CKEditorFuncNum = editor._.filebrowserFn;
219
+ if ( !params.langCode )
220
+ params.langCode = editor.langCode;
221
+
222
+ fileInput.action = addQueryString( filebrowser.url, params );
223
+ fileInput.filebrowser = filebrowser;
224
+ }
225
+
226
+ /*
227
+ * Traverse through the content definition and attach filebrowser to
228
+ * elements with 'filebrowser' attribute.
229
+ *
230
+ * @param String
231
+ * dialogName Dialog name.
232
+ * @param {CKEDITOR.dialog.definitionObject}
233
+ * definition Dialog definition.
234
+ * @param {Array}
235
+ * elements Array of {@link CKEDITOR.dialog.definition.content}
236
+ * objects.
237
+ */
238
+ function attachFileBrowser( editor, dialogName, definition, elements )
239
+ {
240
+ var element, fileInput;
241
+
242
+ for ( var i in elements )
243
+ {
244
+ element = elements[ i ];
245
+
246
+ if ( element.type == 'hbox' || element.type == 'vbox' )
247
+ attachFileBrowser( editor, dialogName, definition, element.children );
248
+
249
+ if ( !element.filebrowser )
250
+ continue;
251
+
252
+ if ( typeof element.filebrowser == 'string' )
253
+ {
254
+ var fb =
255
+ {
256
+ action : ( element.type == 'fileButton' ) ? 'QuickUpload' : 'Browse',
257
+ target : element.filebrowser
258
+ };
259
+ element.filebrowser = fb;
260
+ }
261
+
262
+ if ( element.filebrowser.action == 'Browse' )
263
+ {
264
+ var url = element.filebrowser.url;
265
+ if ( url === undefined )
266
+ {
267
+ url = editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'BrowseUrl' ];
268
+ if ( url === undefined )
269
+ url = editor.config.filebrowserBrowseUrl;
270
+ }
271
+
272
+ if ( url )
273
+ {
274
+ element.onClick = browseServer;
275
+ element.filebrowser.url = url;
276
+ element.hidden = false;
277
+ }
278
+ }
279
+ else if ( element.filebrowser.action == 'QuickUpload' && element[ 'for' ] )
280
+ {
281
+ url = element.filebrowser.url;
282
+ if ( url === undefined )
283
+ {
284
+ url = editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'UploadUrl' ];
285
+ if ( url === undefined )
286
+ url = editor.config.filebrowserUploadUrl;
287
+ }
288
+
289
+ if ( url )
290
+ {
291
+ var onClick = element.onClick;
292
+ element.onClick = function( evt )
293
+ {
294
+ // "element" here means the definition object, so we need to find the correct
295
+ // button to scope the event call
296
+ var sender = evt.sender;
297
+ if ( onClick && onClick.call( sender, evt ) === false )
298
+ return false;
299
+
300
+ return uploadFile.call( sender, evt );
301
+ };
302
+
303
+ element.filebrowser.url = url;
304
+ element.hidden = false;
305
+ setupFileElement( editor, definition.getContents( element[ 'for' ][ 0 ] ).get( element[ 'for' ][ 1 ] ), element.filebrowser );
306
+ }
307
+ }
308
+ }
309
+ }
310
+
311
+ /*
312
+ * Updates the target element with the url of uploaded/selected file.
313
+ *
314
+ * @param {String}
315
+ * url The url of a file.
316
+ */
317
+ function updateTargetElement( url, sourceElement )
318
+ {
319
+ var dialog = sourceElement.getDialog();
320
+ var targetElement = sourceElement.filebrowser.target || null;
321
+ url = url.replace( /#/g, '%23' );
322
+
323
+ // If there is a reference to targetElement, update it.
324
+ if ( targetElement )
325
+ {
326
+ var target = targetElement.split( ':' );
327
+ var element = dialog.getContentElement( target[ 0 ], target[ 1 ] );
328
+ if ( element )
329
+ {
330
+ element.setValue( url );
331
+ dialog.selectPage( target[ 0 ] );
332
+ }
333
+ }
334
+ }
335
+
336
+ /*
337
+ * Returns true if filebrowser is configured in one of the elements.
338
+ *
339
+ * @param {CKEDITOR.dialog.definitionObject}
340
+ * definition Dialog definition.
341
+ * @param String
342
+ * tabId The tab id where element(s) can be found.
343
+ * @param String
344
+ * elementId The element id (or ids, separated with a semicolon) to check.
345
+ */
346
+ function isConfigured( definition, tabId, elementId )
347
+ {
348
+ if ( elementId.indexOf( ";" ) !== -1 )
349
+ {
350
+ var ids = elementId.split( ";" );
351
+ for ( var i = 0 ; i < ids.length ; i++ )
352
+ {
353
+ if ( isConfigured( definition, tabId, ids[i] ) )
354
+ return true;
355
+ }
356
+ return false;
357
+ }
358
+
359
+ var elementFileBrowser = definition.getContents( tabId ).get( elementId ).filebrowser;
360
+ return ( elementFileBrowser && elementFileBrowser.url );
361
+ }
362
+
363
+ function setUrl( fileUrl, data )
364
+ {
365
+ var dialog = this._.filebrowserSe.getDialog(),
366
+ targetInput = this._.filebrowserSe[ 'for' ],
367
+ onSelect = this._.filebrowserSe.filebrowser.onSelect;
368
+
369
+ if ( targetInput )
370
+ dialog.getContentElement( targetInput[ 0 ], targetInput[ 1 ] ).reset();
371
+
372
+ if ( typeof data == 'function' && data.call( this._.filebrowserSe ) === false )
373
+ return;
374
+
375
+ if ( onSelect && onSelect.call( this._.filebrowserSe, fileUrl, data ) === false )
376
+ return;
377
+
378
+ // The "data" argument may be used to pass the error message to the editor.
379
+ if ( typeof data == 'string' && data )
380
+ alert( data );
381
+
382
+ if ( fileUrl )
383
+ updateTargetElement( fileUrl, this._.filebrowserSe );
384
+ }
385
+
386
+ CKEDITOR.plugins.add( 'filebrowser',
387
+ {
388
+ init : function( editor, pluginPath )
389
+ {
390
+ editor._.filebrowserFn = CKEDITOR.tools.addFunction( setUrl, editor );
391
+ editor.on( 'destroy', function () { CKEDITOR.tools.removeFunction( this._.filebrowserFn ); } );
392
+ }
393
+ } );
394
+
395
+ CKEDITOR.on( 'dialogDefinition', function( evt )
396
+ {
397
+ var definition = evt.data.definition,
398
+ element;
399
+ // Associate filebrowser to elements with 'filebrowser' attribute.
400
+ for ( var i in definition.contents )
401
+ {
402
+ if ( ( element = definition.contents[ i ] ) )
403
+ {
404
+ attachFileBrowser( evt.editor, evt.data.name, definition, element.elements );
405
+ if ( element.hidden && element.filebrowser )
406
+ {
407
+ element.hidden = !isConfigured( definition, element[ 'id' ], element.filebrowser );
408
+ }
409
+ }
410
+ }
411
+ } );
412
+
413
+ } )();
414
+
415
+ /**
416
+ * The location of an external file browser, that should be launched when "Browse Server" button is pressed.
417
+ * If configured, the "Browse Server" button will appear in Link, Image and Flash dialogs.
418
+ * @see The <a href="http://docs.cksource.com/CKEditor_3.x/Developers_Guide/File_Browser_(Uploader)">File Browser/Uploader</a> documentation.
419
+ * @name CKEDITOR.config.filebrowserBrowseUrl
420
+ * @since 3.0
421
+ * @type String
422
+ * @default '' (empty string = disabled)
423
+ * @example
424
+ * config.filebrowserBrowseUrl = '/browser/browse.php';
425
+ */
426
+
427
+ /**
428
+ * The location of a script that handles file uploads.
429
+ * If set, the "Upload" tab will appear in "Link", "Image" and "Flash" dialogs.
430
+ * @name CKEDITOR.config.filebrowserUploadUrl
431
+ * @see The <a href="http://docs.cksource.com/CKEditor_3.x/Developers_Guide/File_Browser_(Uploader)">File Browser/Uploader</a> documentation.
432
+ * @since 3.0
433
+ * @type String
434
+ * @default '' (empty string = disabled)
435
+ * @example
436
+ * config.filebrowserUploadUrl = '/uploader/upload.php';
437
+ */
438
+
439
+ /**
440
+ * The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Image dialog.
441
+ * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserBrowseUrl}.
442
+ * @name CKEDITOR.config.filebrowserImageBrowseUrl
443
+ * @since 3.0
444
+ * @type String
445
+ * @default '' (empty string = disabled)
446
+ * @example
447
+ * config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images';
448
+ */
449
+
450
+ /**
451
+ * The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Flash dialog.
452
+ * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserBrowseUrl}.
453
+ * @name CKEDITOR.config.filebrowserFlashBrowseUrl
454
+ * @since 3.0
455
+ * @type String
456
+ * @default '' (empty string = disabled)
457
+ * @example
458
+ * config.filebrowserFlashBrowseUrl = '/browser/browse.php?type=Flash';
459
+ */
460
+
461
+ /**
462
+ * The location of a script that handles file uploads in the Image dialog.
463
+ * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserUploadUrl}.
464
+ * @name CKEDITOR.config.filebrowserImageUploadUrl
465
+ * @since 3.0
466
+ * @type String
467
+ * @default '' (empty string = disabled)
468
+ * @example
469
+ * config.filebrowserImageUploadUrl = '/uploader/upload.php?type=Images';
470
+ */
471
+
472
+ /**
473
+ * The location of a script that handles file uploads in the Flash dialog.
474
+ * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserUploadUrl}.
475
+ * @name CKEDITOR.config.filebrowserFlashUploadUrl
476
+ * @since 3.0
477
+ * @type String
478
+ * @default '' (empty string = disabled)
479
+ * @example
480
+ * config.filebrowserFlashUploadUrl = '/uploader/upload.php?type=Flash';
481
+ */
482
+
483
+ /**
484
+ * The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Link tab of Image dialog.
485
+ * If not set, CKEditor will use {@link CKEDITOR.config.filebrowserBrowseUrl}.
486
+ * @name CKEDITOR.config.filebrowserImageBrowseLinkUrl
487
+ * @since 3.2
488
+ * @type String
489
+ * @default '' (empty string = disabled)
490
+ * @example
491
+ * config.filebrowserImageBrowseLinkUrl = '/browser/browse.php';
492
+ */
493
+
494
+ /**
495
+ * The "features" to use in the file browser popup window.
496
+ * @name CKEDITOR.config.filebrowserWindowFeatures
497
+ * @since 3.4.1
498
+ * @type String
499
+ * @default 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes'
500
+ * @example
501
+ * config.filebrowserWindowFeatures = 'resizable=yes,scrollbars=no';
502
+ */
503
+
504
+ /**
505
+ * The width of the file browser popup window. It can be a number or a percent string.
506
+ * @name CKEDITOR.config.filebrowserWindowWidth
507
+ * @type Number|String
508
+ * @default '80%'
509
+ * @example
510
+ * config.filebrowserWindowWidth = 750;
511
+ * @example
512
+ * config.filebrowserWindowWidth = '50%';
513
+ */
514
+
515
+ /**
516
+ * The height of the file browser popup window. It can be a number or a percent string.
517
+ * @name CKEDITOR.config.filebrowserWindowHeight
518
+ * @type Number|String
519
+ * @default '70%'
520
+ * @example
521
+ * config.filebrowserWindowHeight = 580;
522
+ * @example
523
+ * config.filebrowserWindowHeight = '50%';
524
+ */