esp-ckeditor 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +32 -0
  3. data/Rakefile +28 -0
  4. data/app/assets/javascripts/esp-ckeditor/_source/core/_bootstrap.js +87 -0
  5. data/app/assets/javascripts/esp-ckeditor/_source/core/ckeditor.js +141 -0
  6. data/app/assets/javascripts/esp-ckeditor/_source/core/ckeditor_base.js +227 -0
  7. data/app/assets/javascripts/esp-ckeditor/_source/core/ckeditor_basic.js +238 -0
  8. data/app/assets/javascripts/esp-ckeditor/_source/core/command.js +209 -0
  9. data/app/assets/javascripts/esp-ckeditor/_source/core/commanddefinition.js +129 -0
  10. data/app/assets/javascripts/esp-ckeditor/_source/core/config.js +423 -0
  11. data/app/assets/javascripts/esp-ckeditor/_source/core/dataprocessor.js +65 -0
  12. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/comment.js +32 -0
  13. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/document.js +251 -0
  14. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/documentfragment.js +49 -0
  15. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/domobject.js +258 -0
  16. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/element.js +1691 -0
  17. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/elementpath.js +119 -0
  18. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/event.js +145 -0
  19. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/node.js +696 -0
  20. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/nodelist.js +26 -0
  21. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/range.js +2054 -0
  22. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/rangelist.js +213 -0
  23. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/text.js +128 -0
  24. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/walker.js +462 -0
  25. data/app/assets/javascripts/esp-ckeditor/_source/core/dom/window.js +96 -0
  26. data/app/assets/javascripts/esp-ckeditor/_source/core/dom.js +20 -0
  27. data/app/assets/javascripts/esp-ckeditor/_source/core/dtd.js +266 -0
  28. data/app/assets/javascripts/esp-ckeditor/_source/core/editor.js +1060 -0
  29. data/app/assets/javascripts/esp-ckeditor/_source/core/editor_basic.js +186 -0
  30. data/app/assets/javascripts/esp-ckeditor/_source/core/env.js +305 -0
  31. data/app/assets/javascripts/esp-ckeditor/_source/core/event.js +342 -0
  32. data/app/assets/javascripts/esp-ckeditor/_source/core/eventInfo.js +120 -0
  33. data/app/assets/javascripts/esp-ckeditor/_source/core/focusmanager.js +152 -0
  34. data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/basicwriter.js +145 -0
  35. data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/cdata.js +43 -0
  36. data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/comment.js +60 -0
  37. data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/element.js +308 -0
  38. data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/filter.js +288 -0
  39. data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/fragment.js +518 -0
  40. data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/text.js +53 -0
  41. data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser.js +224 -0
  42. data/app/assets/javascripts/esp-ckeditor/_source/core/lang.js +157 -0
  43. data/app/assets/javascripts/esp-ckeditor/_source/core/loader.js +240 -0
  44. data/app/assets/javascripts/esp-ckeditor/_source/core/plugindefinition.js +83 -0
  45. data/app/assets/javascripts/esp-ckeditor/_source/core/plugins.js +103 -0
  46. data/app/assets/javascripts/esp-ckeditor/_source/core/resourcemanager.js +238 -0
  47. data/app/assets/javascripts/esp-ckeditor/_source/core/scriptloader.js +180 -0
  48. data/app/assets/javascripts/esp-ckeditor/_source/core/skins.js +184 -0
  49. data/app/assets/javascripts/esp-ckeditor/_source/core/themes.js +19 -0
  50. data/app/assets/javascripts/esp-ckeditor/_source/core/tools.js +763 -0
  51. data/app/assets/javascripts/esp-ckeditor/_source/core/ui.js +128 -0
  52. data/app/assets/javascripts/esp-ckeditor/_source/lang/_languages.js +27 -0
  53. data/app/assets/javascripts/esp-ckeditor/_source/lang/en.js +815 -0
  54. data/app/assets/javascripts/esp-ckeditor/_source/lang/ru.js +815 -0
  55. data/app/assets/javascripts/esp-ckeditor/_source/plugins/a11yhelp/dialogs/a11yhelp.js +222 -0
  56. data/app/assets/javascripts/esp-ckeditor/_source/plugins/a11yhelp/lang/en.js +108 -0
  57. data/app/assets/javascripts/esp-ckeditor/_source/plugins/a11yhelp/lang/he.js +216 -0
  58. data/app/assets/javascripts/esp-ckeditor/_source/plugins/a11yhelp/plugin.js +47 -0
  59. data/app/assets/javascripts/esp-ckeditor/_source/plugins/basicstyles/plugin.js +129 -0
  60. data/app/assets/javascripts/esp-ckeditor/_source/plugins/button/plugin.js +290 -0
  61. data/app/assets/javascripts/esp-ckeditor/_source/plugins/clipboard/dialogs/paste.js +223 -0
  62. data/app/assets/javascripts/esp-ckeditor/_source/plugins/clipboard/plugin.js +453 -0
  63. data/app/assets/javascripts/esp-ckeditor/_source/plugins/contextmenu/plugin.js +179 -0
  64. data/app/assets/javascripts/esp-ckeditor/_source/plugins/dialog/dialogDefinition.js +1166 -0
  65. data/app/assets/javascripts/esp-ckeditor/_source/plugins/dialog/plugin.js +3308 -0
  66. data/app/assets/javascripts/esp-ckeditor/_source/plugins/dialogadvtab/plugin.js +208 -0
  67. data/app/assets/javascripts/esp-ckeditor/_source/plugins/dialogui/plugin.js +1541 -0
  68. data/app/assets/javascripts/esp-ckeditor/_source/plugins/domiterator/plugin.js +361 -0
  69. data/app/assets/javascripts/esp-ckeditor/_source/plugins/editingblock/plugin.js +278 -0
  70. data/app/assets/javascripts/esp-ckeditor/_source/plugins/elementspath/plugin.js +218 -0
  71. data/app/assets/javascripts/esp-ckeditor/_source/plugins/enterkey/plugin.js +433 -0
  72. data/app/assets/javascripts/esp-ckeditor/_source/plugins/entities/plugin.js +250 -0
  73. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_attachment/dialogs/esp_attachment.js +234 -0
  74. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_attachment/images/esp_attachment.png +0 -0
  75. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_attachment/lang/en.js +22 -0
  76. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_attachment/lang/ru.js +22 -0
  77. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_attachment/lang/uk.js +22 -0
  78. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_attachment/plugin.js +23 -0
  79. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/dialogs/esp_audio.js +207 -0
  80. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/images/esp_audio.png +0 -0
  81. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/images/placeholder.png +0 -0
  82. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/lang/en.js +18 -0
  83. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/lang/ru.js +18 -0
  84. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/lang/uk.js +18 -0
  85. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/plugin.js +182 -0
  86. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_blockquote/dialogs/esp_blockquote.js +132 -0
  87. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_blockquote/plugin.js +235 -0
  88. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_image/dialogs/esp_image.js +1414 -0
  89. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_image/images/esp_image.png +0 -0
  90. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_image/lang/en.js +9 -0
  91. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_image/lang/ru.js +9 -0
  92. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_image/lang/uk.js +9 -0
  93. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_image/plugin.js +80 -0
  94. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/dialogs/esp_anchor.js +145 -0
  95. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/dialogs/esp_link.js +1396 -0
  96. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/images/anchor.png +0 -0
  97. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/images/esp_anchor.png +0 -0
  98. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/images/esp_link.png +0 -0
  99. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/images/esp_unlink.png +0 -0
  100. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/lang/en.js +8 -0
  101. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/lang/ru.js +8 -0
  102. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/lang/uk.js +8 -0
  103. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/plugin.js +379 -0
  104. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_address.png +0 -0
  105. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_blockquote.png +0 -0
  106. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_div.png +0 -0
  107. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_h1.png +0 -0
  108. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_h2.png +0 -0
  109. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_h3.png +0 -0
  110. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_h4.png +0 -0
  111. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_h5.png +0 -0
  112. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_h6.png +0 -0
  113. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_p.png +0 -0
  114. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_pre.png +0 -0
  115. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/esp_showblocks.png +0 -0
  116. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/plugin.js +163 -0
  117. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/dialogs/esp_video.js +277 -0
  118. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/images/esp_video.png +0 -0
  119. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/images/placeholder.png +0 -0
  120. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/lang/en.js +19 -0
  121. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/lang/ru.js +19 -0
  122. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/lang/uk.js +19 -0
  123. data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/plugin.js +182 -0
  124. data/app/assets/javascripts/esp-ckeditor/_source/plugins/fakeobjects/plugin.js +175 -0
  125. data/app/assets/javascripts/esp-ckeditor/_source/plugins/filebrowser/plugin.js +534 -0
  126. data/app/assets/javascripts/esp-ckeditor/_source/plugins/find/dialogs/find.js +915 -0
  127. data/app/assets/javascripts/esp-ckeditor/_source/plugins/find/plugin.js +47 -0
  128. data/app/assets/javascripts/esp-ckeditor/_source/plugins/floatpanel/plugin.js +428 -0
  129. data/app/assets/javascripts/esp-ckeditor/_source/plugins/format/plugin.js +197 -0
  130. data/app/assets/javascripts/esp-ckeditor/_source/plugins/htmldataprocessor/plugin.js +596 -0
  131. data/app/assets/javascripts/esp-ckeditor/_source/plugins/htmlwriter/plugin.js +319 -0
  132. data/app/assets/javascripts/esp-ckeditor/_source/plugins/image/dialogs/image.js +1407 -0
  133. data/app/assets/javascripts/esp-ckeditor/_source/plugins/image/plugin.js +81 -0
  134. data/app/assets/javascripts/esp-ckeditor/_source/plugins/indent/plugin.js +461 -0
  135. data/app/assets/javascripts/esp-ckeditor/_source/plugins/justify/plugin.js +253 -0
  136. data/app/assets/javascripts/esp-ckeditor/_source/plugins/keystrokes/plugin.js +225 -0
  137. data/app/assets/javascripts/esp-ckeditor/_source/plugins/list/plugin.js +774 -0
  138. data/app/assets/javascripts/esp-ckeditor/_source/plugins/listblock/plugin.js +266 -0
  139. data/app/assets/javascripts/esp-ckeditor/_source/plugins/liststyle/dialogs/liststyle.js +225 -0
  140. data/app/assets/javascripts/esp-ckeditor/_source/plugins/liststyle/plugin.js +66 -0
  141. data/app/assets/javascripts/esp-ckeditor/_source/plugins/maximize/plugin.js +353 -0
  142. data/app/assets/javascripts/esp-ckeditor/_source/plugins/menu/plugin.js +541 -0
  143. data/app/assets/javascripts/esp-ckeditor/_source/plugins/panel/plugin.js +400 -0
  144. data/app/assets/javascripts/esp-ckeditor/_source/plugins/pastefromword/filter/default.js +1367 -0
  145. data/app/assets/javascripts/esp-ckeditor/_source/plugins/pastefromword/plugin.js +141 -0
  146. data/app/assets/javascripts/esp-ckeditor/_source/plugins/pastetext/dialogs/pastetext.js +67 -0
  147. data/app/assets/javascripts/esp-ckeditor/_source/plugins/pastetext/plugin.js +98 -0
  148. data/app/assets/javascripts/esp-ckeditor/_source/plugins/popup/plugin.js +64 -0
  149. data/app/assets/javascripts/esp-ckeditor/_source/plugins/removeformat/plugin.js +185 -0
  150. data/app/assets/javascripts/esp-ckeditor/_source/plugins/resize/plugin.js +168 -0
  151. data/app/assets/javascripts/esp-ckeditor/_source/plugins/richcombo/plugin.js +381 -0
  152. data/app/assets/javascripts/esp-ckeditor/_source/plugins/selection/plugin.js +1729 -0
  153. data/app/assets/javascripts/esp-ckeditor/_source/plugins/showborders/plugin.js +207 -0
  154. data/app/assets/javascripts/esp-ckeditor/_source/plugins/sourcearea/plugin.js +209 -0
  155. data/app/assets/javascripts/esp-ckeditor/_source/plugins/styles/plugin.js +1700 -0
  156. data/app/assets/javascripts/esp-ckeditor/_source/plugins/styles/styles/default.js +88 -0
  157. data/app/assets/javascripts/esp-ckeditor/_source/plugins/stylescombo/plugin.js +218 -0
  158. data/app/assets/javascripts/esp-ckeditor/_source/plugins/tab/plugin.js +367 -0
  159. data/app/assets/javascripts/esp-ckeditor/_source/plugins/table/dialogs/table.js +623 -0
  160. data/app/assets/javascripts/esp-ckeditor/_source/plugins/table/plugin.js +78 -0
  161. data/app/assets/javascripts/esp-ckeditor/_source/plugins/tabletools/dialogs/tableCell.js +525 -0
  162. data/app/assets/javascripts/esp-ckeditor/_source/plugins/tabletools/plugin.js +1194 -0
  163. data/app/assets/javascripts/esp-ckeditor/_source/plugins/toolbar/plugin.js +545 -0
  164. data/app/assets/javascripts/esp-ckeditor/_source/plugins/undo/plugin.js +578 -0
  165. data/app/assets/javascripts/esp-ckeditor/_source/plugins/wysiwygarea/plugin.js +1347 -0
  166. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/dialog.css +988 -0
  167. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/editor.css +25 -0
  168. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/elementspath.css +73 -0
  169. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/icons.css +367 -0
  170. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/icons.png +0 -0
  171. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/icons_rtl.png +0 -0
  172. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/dialog_sides.gif +0 -0
  173. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/dialog_sides.png +0 -0
  174. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/dialog_sides_rtl.png +0 -0
  175. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/mini.gif +0 -0
  176. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/noimage.png +0 -0
  177. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/sprites.png +0 -0
  178. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/sprites_ie6.png +0 -0
  179. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/toolbar_start.gif +0 -0
  180. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/mainui.css +209 -0
  181. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/menu.css +232 -0
  182. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/panel.css +227 -0
  183. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/presets.css +49 -0
  184. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/reset.css +85 -0
  185. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/richcombo.css +287 -0
  186. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/skin.js +236 -0
  187. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/templates.css +88 -0
  188. data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/toolbar.css +412 -0
  189. data/app/assets/javascripts/esp-ckeditor/_source/themes/default/theme.js +407 -0
  190. data/app/assets/javascripts/esp-ckeditor/application.js +8 -0
  191. data/app/assets/javascripts/esp-ckeditor/ckeditor.js +137 -0
  192. data/app/assets/javascripts/esp-ckeditor/ckeditor.pack +194 -0
  193. data/app/assets/javascripts/esp-ckeditor/ckeditor_source.js +35 -0
  194. data/app/assets/javascripts/esp-ckeditor/ckpackager.jar +0 -0
  195. data/app/assets/javascripts/esp-ckeditor/ckpackager.txt +2 -0
  196. data/app/assets/javascripts/esp-ckeditor/config.js +147 -0
  197. data/app/assets/javascripts/esp-ckeditor/contents.css +38 -0
  198. data/app/assets/javascripts/esp-ckeditor/images/spacer.gif +0 -0
  199. data/app/assets/javascripts/esp-ckeditor/init_ckeditor.js +1 -0
  200. data/app/assets/javascripts/esp-ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +1 -0
  201. data/app/assets/javascripts/esp-ckeditor/plugins/a11yhelp/lang/en.js +1 -0
  202. data/app/assets/javascripts/esp-ckeditor/plugins/a11yhelp/lang/he.js +1 -0
  203. data/app/assets/javascripts/esp-ckeditor/plugins/a11yhelp/plugin.js +1 -0
  204. data/app/assets/javascripts/esp-ckeditor/plugins/basicstyles/plugin.js +1 -0
  205. data/app/assets/javascripts/esp-ckeditor/plugins/button/plugin.js +1 -0
  206. data/app/assets/javascripts/esp-ckeditor/plugins/clipboard/dialogs/paste.js +1 -0
  207. data/app/assets/javascripts/esp-ckeditor/plugins/clipboard/plugin.js +1 -0
  208. data/app/assets/javascripts/esp-ckeditor/plugins/contextmenu/plugin.js +1 -0
  209. data/app/assets/javascripts/esp-ckeditor/plugins/dialog/dialogDefinition.js +0 -0
  210. data/app/assets/javascripts/esp-ckeditor/plugins/dialog/plugin.js +1 -0
  211. data/app/assets/javascripts/esp-ckeditor/plugins/dialogadvtab/plugin.js +1 -0
  212. data/app/assets/javascripts/esp-ckeditor/plugins/dialogui/plugin.js +1 -0
  213. data/app/assets/javascripts/esp-ckeditor/plugins/domiterator/plugin.js +1 -0
  214. data/app/assets/javascripts/esp-ckeditor/plugins/editingblock/plugin.js +1 -0
  215. data/app/assets/javascripts/esp-ckeditor/plugins/elementspath/plugin.js +1 -0
  216. data/app/assets/javascripts/esp-ckeditor/plugins/enterkey/plugin.js +1 -0
  217. data/app/assets/javascripts/esp-ckeditor/plugins/entities/plugin.js +1 -0
  218. data/app/assets/javascripts/esp-ckeditor/plugins/esp_attachment/dialogs/esp_attachment.js +1 -0
  219. data/app/assets/javascripts/esp-ckeditor/plugins/esp_attachment/images/esp_attachment.png +0 -0
  220. data/app/assets/javascripts/esp-ckeditor/plugins/esp_attachment/lang/en.js +1 -0
  221. data/app/assets/javascripts/esp-ckeditor/plugins/esp_attachment/lang/ru.js +1 -0
  222. data/app/assets/javascripts/esp-ckeditor/plugins/esp_attachment/lang/uk.js +1 -0
  223. data/app/assets/javascripts/esp-ckeditor/plugins/esp_attachment/plugin.js +1 -0
  224. data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/dialogs/esp_audio.js +1 -0
  225. data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/images/esp_audio.png +0 -0
  226. data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/images/placeholder.png +0 -0
  227. data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/lang/en.js +1 -0
  228. data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/lang/ru.js +1 -0
  229. data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/lang/uk.js +1 -0
  230. data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/plugin.js +1 -0
  231. data/app/assets/javascripts/esp-ckeditor/plugins/esp_blockquote/dialogs/esp_blockquote.js +1 -0
  232. data/app/assets/javascripts/esp-ckeditor/plugins/esp_blockquote/plugin.js +1 -0
  233. data/app/assets/javascripts/esp-ckeditor/plugins/esp_image/dialogs/esp_image.js +1 -0
  234. data/app/assets/javascripts/esp-ckeditor/plugins/esp_image/images/esp_image.png +0 -0
  235. data/app/assets/javascripts/esp-ckeditor/plugins/esp_image/lang/en.js +1 -0
  236. data/app/assets/javascripts/esp-ckeditor/plugins/esp_image/lang/ru.js +1 -0
  237. data/app/assets/javascripts/esp-ckeditor/plugins/esp_image/lang/uk.js +1 -0
  238. data/app/assets/javascripts/esp-ckeditor/plugins/esp_image/plugin.js +1 -0
  239. data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/dialogs/esp_anchor.js +1 -0
  240. data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/dialogs/esp_link.js +1 -0
  241. data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/images/anchor.png +0 -0
  242. data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/images/esp_anchor.png +0 -0
  243. data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/images/esp_link.png +0 -0
  244. data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/images/esp_unlink.png +0 -0
  245. data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/lang/en.js +1 -0
  246. data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/lang/ru.js +1 -0
  247. data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/lang/uk.js +1 -0
  248. data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/plugin.js +1 -0
  249. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_address.png +0 -0
  250. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_blockquote.png +0 -0
  251. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_div.png +0 -0
  252. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_h1.png +0 -0
  253. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_h2.png +0 -0
  254. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_h3.png +0 -0
  255. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_h4.png +0 -0
  256. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_h5.png +0 -0
  257. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_h6.png +0 -0
  258. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_p.png +0 -0
  259. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_pre.png +0 -0
  260. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/esp_showblocks.png +0 -0
  261. data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/plugin.js +1 -0
  262. data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/dialogs/esp_video.js +1 -0
  263. data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/images/esp_video.png +0 -0
  264. data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/images/placeholder.png +0 -0
  265. data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/lang/en.js +1 -0
  266. data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/lang/ru.js +1 -0
  267. data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/lang/uk.js +1 -0
  268. data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/plugin.js +1 -0
  269. data/app/assets/javascripts/esp-ckeditor/plugins/fakeobjects/plugin.js +1 -0
  270. data/app/assets/javascripts/esp-ckeditor/plugins/filebrowser/plugin.js +1 -0
  271. data/app/assets/javascripts/esp-ckeditor/plugins/find/dialogs/find.js +1 -0
  272. data/app/assets/javascripts/esp-ckeditor/plugins/find/plugin.js +1 -0
  273. data/app/assets/javascripts/esp-ckeditor/plugins/floatpanel/plugin.js +1 -0
  274. data/app/assets/javascripts/esp-ckeditor/plugins/format/plugin.js +1 -0
  275. data/app/assets/javascripts/esp-ckeditor/plugins/htmldataprocessor/plugin.js +1 -0
  276. data/app/assets/javascripts/esp-ckeditor/plugins/htmlwriter/plugin.js +1 -0
  277. data/app/assets/javascripts/esp-ckeditor/plugins/image/dialogs/image.js +1 -0
  278. data/app/assets/javascripts/esp-ckeditor/plugins/image/plugin.js +1 -0
  279. data/app/assets/javascripts/esp-ckeditor/plugins/indent/plugin.js +1 -0
  280. data/app/assets/javascripts/esp-ckeditor/plugins/justify/plugin.js +1 -0
  281. data/app/assets/javascripts/esp-ckeditor/plugins/keystrokes/plugin.js +1 -0
  282. data/app/assets/javascripts/esp-ckeditor/plugins/list/plugin.js +1 -0
  283. data/app/assets/javascripts/esp-ckeditor/plugins/listblock/plugin.js +1 -0
  284. data/app/assets/javascripts/esp-ckeditor/plugins/liststyle/dialogs/liststyle.js +1 -0
  285. data/app/assets/javascripts/esp-ckeditor/plugins/liststyle/plugin.js +1 -0
  286. data/app/assets/javascripts/esp-ckeditor/plugins/maximize/plugin.js +1 -0
  287. data/app/assets/javascripts/esp-ckeditor/plugins/menu/plugin.js +1 -0
  288. data/app/assets/javascripts/esp-ckeditor/plugins/panel/plugin.js +1 -0
  289. data/app/assets/javascripts/esp-ckeditor/plugins/pastefromword/filter/default.js +1 -0
  290. data/app/assets/javascripts/esp-ckeditor/plugins/pastefromword/plugin.js +1 -0
  291. data/app/assets/javascripts/esp-ckeditor/plugins/pastetext/dialogs/pastetext.js +1 -0
  292. data/app/assets/javascripts/esp-ckeditor/plugins/pastetext/plugin.js +1 -0
  293. data/app/assets/javascripts/esp-ckeditor/plugins/popup/plugin.js +1 -0
  294. data/app/assets/javascripts/esp-ckeditor/plugins/removeformat/plugin.js +1 -0
  295. data/app/assets/javascripts/esp-ckeditor/plugins/resize/plugin.js +1 -0
  296. data/app/assets/javascripts/esp-ckeditor/plugins/richcombo/plugin.js +1 -0
  297. data/app/assets/javascripts/esp-ckeditor/plugins/selection/plugin.js +1 -0
  298. data/app/assets/javascripts/esp-ckeditor/plugins/showborders/plugin.js +1 -0
  299. data/app/assets/javascripts/esp-ckeditor/plugins/sourcearea/plugin.js +1 -0
  300. data/app/assets/javascripts/esp-ckeditor/plugins/styles/plugin.js +1 -0
  301. data/app/assets/javascripts/esp-ckeditor/plugins/styles/styles/default.js +1 -0
  302. data/app/assets/javascripts/esp-ckeditor/plugins/stylescombo/plugin.js +1 -0
  303. data/app/assets/javascripts/esp-ckeditor/plugins/tab/plugin.js +1 -0
  304. data/app/assets/javascripts/esp-ckeditor/plugins/table/dialogs/table.js +1 -0
  305. data/app/assets/javascripts/esp-ckeditor/plugins/table/plugin.js +1 -0
  306. data/app/assets/javascripts/esp-ckeditor/plugins/tabletools/dialogs/tableCell.js +1 -0
  307. data/app/assets/javascripts/esp-ckeditor/plugins/tabletools/plugin.js +1 -0
  308. data/app/assets/javascripts/esp-ckeditor/plugins/toolbar/plugin.js +1 -0
  309. data/app/assets/javascripts/esp-ckeditor/plugins/undo/plugin.js +1 -0
  310. data/app/assets/javascripts/esp-ckeditor/plugins/wysiwygarea/plugin.js +1 -0
  311. data/app/assets/javascripts/esp-ckeditor/skins/kama/dialog.css +988 -0
  312. data/app/assets/javascripts/esp-ckeditor/skins/kama/editor.css +25 -0
  313. data/app/assets/javascripts/esp-ckeditor/skins/kama/elementspath.css +73 -0
  314. data/app/assets/javascripts/esp-ckeditor/skins/kama/icons.css +367 -0
  315. data/app/assets/javascripts/esp-ckeditor/skins/kama/icons.png +0 -0
  316. data/app/assets/javascripts/esp-ckeditor/skins/kama/icons_rtl.png +0 -0
  317. data/app/assets/javascripts/esp-ckeditor/skins/kama/images/dialog_sides.gif +0 -0
  318. data/app/assets/javascripts/esp-ckeditor/skins/kama/images/dialog_sides.png +0 -0
  319. data/app/assets/javascripts/esp-ckeditor/skins/kama/images/dialog_sides_rtl.png +0 -0
  320. data/app/assets/javascripts/esp-ckeditor/skins/kama/images/mini.gif +0 -0
  321. data/app/assets/javascripts/esp-ckeditor/skins/kama/images/noimage.png +0 -0
  322. data/app/assets/javascripts/esp-ckeditor/skins/kama/images/sprites.png +0 -0
  323. data/app/assets/javascripts/esp-ckeditor/skins/kama/images/sprites_ie6.png +0 -0
  324. data/app/assets/javascripts/esp-ckeditor/skins/kama/images/toolbar_start.gif +0 -0
  325. data/app/assets/javascripts/esp-ckeditor/skins/kama/mainui.css +209 -0
  326. data/app/assets/javascripts/esp-ckeditor/skins/kama/menu.css +232 -0
  327. data/app/assets/javascripts/esp-ckeditor/skins/kama/panel.css +227 -0
  328. data/app/assets/javascripts/esp-ckeditor/skins/kama/presets.css +49 -0
  329. data/app/assets/javascripts/esp-ckeditor/skins/kama/reset.css +85 -0
  330. data/app/assets/javascripts/esp-ckeditor/skins/kama/richcombo.css +287 -0
  331. data/app/assets/javascripts/esp-ckeditor/skins/kama/skin.js +236 -0
  332. data/app/assets/javascripts/esp-ckeditor/skins/kama/templates.css +88 -0
  333. data/app/assets/javascripts/esp-ckeditor/skins/kama/toolbar.css +412 -0
  334. data/app/inputs/ckeditor_input.rb +42 -0
  335. data/config/routes.rb +2 -0
  336. data/lib/esp-ckeditor/engine.rb +9 -0
  337. data/lib/esp-ckeditor/version.rb +3 -0
  338. data/lib/esp-ckeditor.rb +17 -0
  339. data/lib/tasks/esp-ckeditor_tasks.rake +4 -0
  340. metadata +434 -0
@@ -0,0 +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
+ })();
@@ -0,0 +1,534 @@
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 that adds support for file uploads and
8
+ * browsing.
9
+ *
10
+ * When a file is uploaded or selected inside the file browser, its URL is
11
+ * inserted automatically into a field defined in the <code>filebrowser</code>
12
+ * attribute. In order to specify a field that should be updated, pass the tab ID and
13
+ * the element ID, separated with a colon.<br /><br />
14
+ *
15
+ * <strong>Example 1: (Browse)</strong>
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 <code>filebrowser</code> attribute for an element other than
27
+ * the <code>fileButton</code>, the <code>Browse</code> action will be triggered.<br /><br />
28
+ *
29
+ * <strong>Example 2: (Quick Upload)</strong>
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 <code>filebrowser</code> attribute for a <code>fileButton</code>
42
+ * element, the <code>QuickUpload</code> action will be executed.<br /><br />
43
+ *
44
+ * The filebrowser plugin also supports more advanced configuration performed through
45
+ * a JavaScript object.
46
+ *
47
+ * The following settings are supported:
48
+ *
49
+ * <ul>
50
+ * <li><code>action</code> &ndash; <code>Browse</code> or <code>QuickUpload</code>.</li>
51
+ * <li><code>target</code> &ndash; the field to update in the <code><em>tabId:elementId</em></code> format.</li>
52
+ * <li><code>params</code> &ndash; additional arguments to be passed to the server connector (optional).</li>
53
+ * <li><code>onSelect</code> &ndash; a function to execute when the file is selected/uploaded (optional).</li>
54
+ * <li><code>url</code> &ndash; the URL to be called (optional).</li>
55
+ * </ul>
56
+ *
57
+ * <strong>Example 3: (Quick Upload)</strong>
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 you have a file element with an ID of <code>myFile</code>, a text
84
+ * field with an ID of <code>elementId</code> and a <code>fileButton</code>.
85
+ * If the <code>filebowser.url</code> attribute is not specified explicitly,
86
+ * the form action will be set to <code>filebrowser[<em>DialogWindowName</em>]UploadUrl</code>
87
+ * or, if not specified, to <code>filebrowserUploadUrl</code>. Additional parameters
88
+ * from the <code>params</code> object will be added to the query string. It is
89
+ * possible to create your own <code>uploadHandler</code> and cancel the built-in
90
+ * <code>updateTargetElement</code> command.<br /><br />
91
+ *
92
+ * <strong>Example 4: (Browse)</strong>
93
+ *
94
+ * <pre>
95
+ * {
96
+ * type : 'button',
97
+ * id : 'buttonId',
98
+ * label : editor.lang.common.browseServer,
99
+ * filebrowser :
100
+ * {
101
+ * action : 'Browse',
102
+ * url : '/ckfinder/ckfinder.html&amp;type=Images',
103
+ * target : 'tab1:elementId'
104
+ * }
105
+ * }
106
+ * </pre>
107
+ *
108
+ * In this example, when the button is pressed, the file browser will be opened in a
109
+ * popup window. If you do not specify the <code>filebrowser.url</code> attribute,
110
+ * <code>filebrowser[<em>DialogName</em>]BrowseUrl</code> or
111
+ * <code>filebrowserBrowseUrl</code> will be used. After selecting a file in the file
112
+ * browser, an element with an ID of <code>elementId</code> will be updated. Just
113
+ * like in the third example, a custom <code>onSelect</code> function may be defined.
114
+ */
115
+ ( function()
116
+ {
117
+ /*
118
+ * Adds (additional) arguments to given url.
119
+ *
120
+ * @param {String}
121
+ * url The url.
122
+ * @param {Object}
123
+ * params Additional parameters.
124
+ */
125
+ function addQueryString( url, params )
126
+ {
127
+ var queryString = [];
128
+
129
+ if ( !params )
130
+ return url;
131
+ else
132
+ {
133
+ for ( var i in params )
134
+ queryString.push( i + "=" + encodeURIComponent( params[ i ] ) );
135
+ }
136
+
137
+ return url + ( ( url.indexOf( "?" ) != -1 ) ? "&" : "?" ) + queryString.join( "&" );
138
+ }
139
+
140
+ /*
141
+ * Make a string's first character uppercase.
142
+ *
143
+ * @param {String}
144
+ * str String.
145
+ */
146
+ function ucFirst( str )
147
+ {
148
+ str += '';
149
+ var f = str.charAt( 0 ).toUpperCase();
150
+ return f + str.substr( 1 );
151
+ }
152
+
153
+ /*
154
+ * The onlick function assigned to the 'Browse Server' button. Opens the
155
+ * file browser and updates target field when file is selected.
156
+ *
157
+ * @param {CKEDITOR.event}
158
+ * evt The event object.
159
+ */
160
+ function browseServer( evt )
161
+ {
162
+ var dialog = this.getDialog();
163
+ var editor = dialog.getParentEditor();
164
+
165
+ editor._.filebrowserSe = this;
166
+
167
+ var width = editor.config[ 'filebrowser' + ucFirst( dialog.getName() ) + 'WindowWidth' ]
168
+ || editor.config.filebrowserWindowWidth || '80%';
169
+ var height = editor.config[ 'filebrowser' + ucFirst( dialog.getName() ) + 'WindowHeight' ]
170
+ || editor.config.filebrowserWindowHeight || '70%';
171
+
172
+ var params = this.filebrowser.params || {};
173
+ params.CKEditor = editor.name;
174
+ params.CKEditorFuncNum = editor._.filebrowserFn;
175
+ if ( !params.langCode )
176
+ params.langCode = editor.langCode;
177
+
178
+ var url = addQueryString( this.filebrowser.url, params );
179
+ // TODO: V4: Remove backward compatibility (#8163).
180
+ editor.popup( url, width, height, editor.config.filebrowserWindowFeatures || editor.config.fileBrowserWindowFeatures );
181
+ }
182
+
183
+ /*
184
+ * The onlick function assigned to the 'Upload' button. Makes the final
185
+ * decision whether form is really submitted and updates target field when
186
+ * file is uploaded.
187
+ *
188
+ * @param {CKEDITOR.event}
189
+ * evt The event object.
190
+ */
191
+ function uploadFile( evt )
192
+ {
193
+ var dialog = this.getDialog();
194
+ var editor = dialog.getParentEditor();
195
+
196
+ editor._.filebrowserSe = this;
197
+
198
+ // If user didn't select the file, stop the upload.
199
+ if ( !dialog.getContentElement( this[ 'for' ][ 0 ], this[ 'for' ][ 1 ] ).getInputElement().$.value )
200
+ return false;
201
+
202
+ if ( !dialog.getContentElement( this[ 'for' ][ 0 ], this[ 'for' ][ 1 ] ).getAction() )
203
+ return false;
204
+
205
+ return true;
206
+ }
207
+
208
+ /*
209
+ * Setups the file element.
210
+ *
211
+ * @param {CKEDITOR.ui.dialog.file}
212
+ * fileInput The file element used during file upload.
213
+ * @param {Object}
214
+ * filebrowser Object containing filebrowser settings assigned to
215
+ * the fileButton associated with this file element.
216
+ */
217
+ function setupFileElement( editor, fileInput, filebrowser )
218
+ {
219
+ var params = filebrowser.params || {};
220
+ params.CKEditor = editor.name;
221
+ params.CKEditorFuncNum = editor._.filebrowserFn;
222
+ if ( !params.langCode )
223
+ params.langCode = editor.langCode;
224
+
225
+ fileInput.action = addQueryString( filebrowser.url, params );
226
+ fileInput.filebrowser = filebrowser;
227
+ }
228
+
229
+ /*
230
+ * Traverse through the content definition and attach filebrowser to
231
+ * elements with 'filebrowser' attribute.
232
+ *
233
+ * @param String
234
+ * dialogName Dialog name.
235
+ * @param {CKEDITOR.dialog.definitionObject}
236
+ * definition Dialog definition.
237
+ * @param {Array}
238
+ * elements Array of {@link CKEDITOR.dialog.definition.content}
239
+ * objects.
240
+ */
241
+ function attachFileBrowser( editor, dialogName, definition, elements )
242
+ {
243
+ var element, fileInput;
244
+
245
+ for ( var i in elements )
246
+ {
247
+ element = elements[ i ];
248
+
249
+ if ( element.type == 'hbox' || element.type == 'vbox' )
250
+ attachFileBrowser( editor, dialogName, definition, element.children );
251
+
252
+ if ( !element.filebrowser )
253
+ continue;
254
+
255
+ if ( typeof element.filebrowser == 'string' )
256
+ {
257
+ var fb =
258
+ {
259
+ action : ( element.type == 'fileButton' ) ? 'QuickUpload' : 'Browse',
260
+ target : element.filebrowser
261
+ };
262
+ element.filebrowser = fb;
263
+ }
264
+
265
+ if ( element.filebrowser.action == 'Browse' )
266
+ {
267
+ var url = element.filebrowser.url;
268
+ if ( url === undefined )
269
+ {
270
+ url = editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'BrowseUrl' ];
271
+ if ( url === undefined )
272
+ url = editor.config.filebrowserBrowseUrl;
273
+ }
274
+
275
+ if ( url )
276
+ {
277
+ element.onClick = browseServer;
278
+ element.filebrowser.url = url;
279
+ element.hidden = false;
280
+ }
281
+ }
282
+ else if ( element.filebrowser.action == 'QuickUpload' && element[ 'for' ] )
283
+ {
284
+ url = element.filebrowser.url;
285
+ if ( url === undefined )
286
+ {
287
+ url = editor.config[ 'filebrowser' + ucFirst( dialogName ) + 'UploadUrl' ];
288
+ if ( url === undefined )
289
+ url = editor.config.filebrowserUploadUrl;
290
+ }
291
+
292
+ if ( url )
293
+ {
294
+ var onClick = element.onClick;
295
+ element.onClick = function( evt )
296
+ {
297
+ // "element" here means the definition object, so we need to find the correct
298
+ // button to scope the event call
299
+ var sender = evt.sender;
300
+ if ( onClick && onClick.call( sender, evt ) === false )
301
+ return false;
302
+
303
+ return uploadFile.call( sender, evt );
304
+ };
305
+
306
+ element.filebrowser.url = url;
307
+ element.hidden = false;
308
+ setupFileElement( editor, definition.getContents( element[ 'for' ][ 0 ] ).get( element[ 'for' ][ 1 ] ), element.filebrowser );
309
+ }
310
+ }
311
+ }
312
+ }
313
+
314
+ /*
315
+ * Updates the target element with the url of uploaded/selected file.
316
+ *
317
+ * @param {String}
318
+ * url The url of a file.
319
+ */
320
+ function updateTargetElement( url, sourceElement )
321
+ {
322
+ var dialog = sourceElement.getDialog();
323
+ var targetElement = sourceElement.filebrowser.target || null;
324
+ url = url.replace( /#/g, '%23' );
325
+
326
+ // If there is a reference to targetElement, update it.
327
+ if ( targetElement )
328
+ {
329
+ var target = targetElement.split( ':' );
330
+ var element = dialog.getContentElement( target[ 0 ], target[ 1 ] );
331
+ if ( element )
332
+ {
333
+ element.setValue( url );
334
+ dialog.selectPage( target[ 0 ] );
335
+ }
336
+ }
337
+ }
338
+
339
+ /*
340
+ * Returns true if filebrowser is configured in one of the elements.
341
+ *
342
+ * @param {CKEDITOR.dialog.definitionObject}
343
+ * definition Dialog definition.
344
+ * @param String
345
+ * tabId The tab id where element(s) can be found.
346
+ * @param String
347
+ * elementId The element id (or ids, separated with a semicolon) to check.
348
+ */
349
+ function isConfigured( definition, tabId, elementId )
350
+ {
351
+ if ( elementId.indexOf( ";" ) !== -1 )
352
+ {
353
+ var ids = elementId.split( ";" );
354
+ for ( var i = 0 ; i < ids.length ; i++ )
355
+ {
356
+ if ( isConfigured( definition, tabId, ids[i] ) )
357
+ return true;
358
+ }
359
+ return false;
360
+ }
361
+
362
+ var elementFileBrowser = definition.getContents( tabId ).get( elementId ).filebrowser;
363
+ return ( elementFileBrowser && elementFileBrowser.url );
364
+ }
365
+
366
+ function setUrl( fileUrl, data )
367
+ {
368
+ var dialog = this._.filebrowserSe.getDialog(),
369
+ targetInput = this._.filebrowserSe[ 'for' ],
370
+ onSelect = this._.filebrowserSe.filebrowser.onSelect;
371
+
372
+ if ( targetInput )
373
+ dialog.getContentElement( targetInput[ 0 ], targetInput[ 1 ] ).reset();
374
+
375
+ if ( typeof data == 'function' && data.call( this._.filebrowserSe ) === false )
376
+ return;
377
+
378
+ if ( onSelect && onSelect.call( this._.filebrowserSe, fileUrl, data ) === false )
379
+ return;
380
+
381
+ // The "data" argument may be used to pass the error message to the editor.
382
+ if ( typeof data == 'string' && data )
383
+ alert( data );
384
+
385
+ if ( fileUrl )
386
+ updateTargetElement( fileUrl, this._.filebrowserSe );
387
+ }
388
+
389
+ CKEDITOR.plugins.add( 'filebrowser',
390
+ {
391
+ init : function( editor, pluginPath )
392
+ {
393
+ editor._.filebrowserFn = CKEDITOR.tools.addFunction( setUrl, editor );
394
+ editor.on( 'destroy', function () { CKEDITOR.tools.removeFunction( this._.filebrowserFn ); } );
395
+ }
396
+ } );
397
+
398
+ CKEDITOR.on( 'dialogDefinition', function( evt )
399
+ {
400
+ var definition = evt.data.definition,
401
+ element;
402
+ // Associate filebrowser to elements with 'filebrowser' attribute.
403
+ for ( var i in definition.contents )
404
+ {
405
+ if ( ( element = definition.contents[ i ] ) )
406
+ {
407
+ attachFileBrowser( evt.editor, evt.data.name, definition, element.elements );
408
+ if ( element.hidden && element.filebrowser )
409
+ {
410
+ element.hidden = !isConfigured( definition, element[ 'id' ], element.filebrowser );
411
+ }
412
+ }
413
+ }
414
+ } );
415
+
416
+ } )();
417
+
418
+ /**
419
+ * The location of an external file browser that should be launched when the <strong>Browse Server</strong>
420
+ * button is pressed. If configured, the <strong>Browse Server</strong> button will appear in the
421
+ * <strong>Link</strong>, <strong>Image</strong>, and <strong>Flash</strong> dialog windows.
422
+ * @see The <a href="http://docs.cksource.com/CKEditor_3.x/Developers_Guide/File_Browser_(Uploader)">File Browser/Uploader</a> documentation.
423
+ * @name CKEDITOR.config.filebrowserBrowseUrl
424
+ * @since 3.0
425
+ * @type String
426
+ * @default <code>''</code> (empty string = disabled)
427
+ * @example
428
+ * config.filebrowserBrowseUrl = '/browser/browse.php';
429
+ */
430
+
431
+ /**
432
+ * The location of the script that handles file uploads.
433
+ * If set, the <strong>Upload</strong> tab will appear in the <strong>Link</strong>, <strong>Image</strong>,
434
+ * and <strong>Flash</strong> dialog windows.
435
+ * @name CKEDITOR.config.filebrowserUploadUrl
436
+ * @see The <a href="http://docs.cksource.com/CKEditor_3.x/Developers_Guide/File_Browser_(Uploader)">File Browser/Uploader</a> documentation.
437
+ * @since 3.0
438
+ * @type String
439
+ * @default <code>''</code> (empty string = disabled)
440
+ * @example
441
+ * config.filebrowserUploadUrl = '/uploader/upload.php';
442
+ */
443
+
444
+ /**
445
+ * The location of an external file browser that should be launched when the <strong>Browse Server</strong>
446
+ * button is pressed in the <strong>Image</strong> dialog window.
447
+ * If not set, CKEditor will use <code>{@link CKEDITOR.config.filebrowserBrowseUrl}</code>.
448
+ * @name CKEDITOR.config.filebrowserImageBrowseUrl
449
+ * @since 3.0
450
+ * @type String
451
+ * @default <code>''</code> (empty string = disabled)
452
+ * @example
453
+ * config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images';
454
+ */
455
+
456
+ /**
457
+ * The location of an external file browser that should be launched when the <strong>Browse Server</strong>
458
+ * button is pressed in the <strong>Flash</strong> dialog window.
459
+ * If not set, CKEditor will use <code>{@link CKEDITOR.config.filebrowserBrowseUrl}</code>.
460
+ * @name CKEDITOR.config.filebrowserFlashBrowseUrl
461
+ * @since 3.0
462
+ * @type String
463
+ * @default <code>''</code> (empty string = disabled)
464
+ * @example
465
+ * config.filebrowserFlashBrowseUrl = '/browser/browse.php?type=Flash';
466
+ */
467
+
468
+ /**
469
+ * The location of the script that handles file uploads in the <strong>Image</strong> dialog window.
470
+ * If not set, CKEditor will use <code>{@link CKEDITOR.config.filebrowserUploadUrl}</code>.
471
+ * @name CKEDITOR.config.filebrowserImageUploadUrl
472
+ * @since 3.0
473
+ * @type String
474
+ * @default <code>''</code> (empty string = disabled)
475
+ * @example
476
+ * config.filebrowserImageUploadUrl = '/uploader/upload.php?type=Images';
477
+ */
478
+
479
+ /**
480
+ * The location of the script that handles file uploads in the <strong>Flash</strong> dialog window.
481
+ * If not set, CKEditor will use <code>{@link CKEDITOR.config.filebrowserUploadUrl}</code>.
482
+ * @name CKEDITOR.config.filebrowserFlashUploadUrl
483
+ * @since 3.0
484
+ * @type String
485
+ * @default <code>''</code> (empty string = disabled)
486
+ * @example
487
+ * config.filebrowserFlashUploadUrl = '/uploader/upload.php?type=Flash';
488
+ */
489
+
490
+ /**
491
+ * The location of an external file browser that should be launched when the <strong>Browse Server</strong>
492
+ * button is pressed in the <strong>Link</strong> tab of the <strong>Image</strong> dialog window.
493
+ * If not set, CKEditor will use <code>{@link CKEDITOR.config.filebrowserBrowseUrl}</code>.
494
+ * @name CKEDITOR.config.filebrowserImageBrowseLinkUrl
495
+ * @since 3.2
496
+ * @type String
497
+ * @default <code>''</code> (empty string = disabled)
498
+ * @example
499
+ * config.filebrowserImageBrowseLinkUrl = '/browser/browse.php';
500
+ */
501
+
502
+ /**
503
+ * The features to use in the file browser popup window.
504
+ * @name CKEDITOR.config.filebrowserWindowFeatures
505
+ * @since 3.4.1
506
+ * @type String
507
+ * @default <code>'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes'</code>
508
+ * @example
509
+ * config.filebrowserWindowFeatures = 'resizable=yes,scrollbars=no';
510
+ */
511
+
512
+ /**
513
+ * The width of the file browser popup window. It can be a number denoting a value in
514
+ * pixels or a percent string.
515
+ * @name CKEDITOR.config.filebrowserWindowWidth
516
+ * @type Number|String
517
+ * @default <code>'80%'</code>
518
+ * @example
519
+ * config.filebrowserWindowWidth = 750;
520
+ * @example
521
+ * config.filebrowserWindowWidth = '50%';
522
+ */
523
+
524
+ /**
525
+ * The height of the file browser popup window. It can be a number denoting a value in
526
+ * pixels or a percent string.
527
+ * @name CKEDITOR.config.filebrowserWindowHeight
528
+ * @type Number|String
529
+ * @default <code>'70%'</code>
530
+ * @example
531
+ * config.filebrowserWindowHeight = 580;
532
+ * @example
533
+ * config.filebrowserWindowHeight = '50%';
534
+ */