esp-ckeditor 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ */