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,361 @@
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
+ * @file DOM iterator, which iterates over list items, lines and paragraphs.
8
+ */
9
+
10
+ CKEDITOR.plugins.add( 'domiterator' );
11
+
12
+ (function()
13
+ {
14
+ /**
15
+ * @name CKEDITOR.dom.iterator
16
+ */
17
+ function iterator( range )
18
+ {
19
+ if ( arguments.length < 1 )
20
+ return;
21
+
22
+ this.range = range;
23
+ this.forceBrBreak = 0;
24
+
25
+ // Whether include <br>s into the enlarged range.(#3730).
26
+ this.enlargeBr = 1;
27
+ this.enforceRealBlocks = 0;
28
+
29
+ this._ || ( this._ = {} );
30
+ }
31
+
32
+ var beginWhitespaceRegex = /^[\r\n\t ]+$/,
33
+ // Ignore bookmark nodes.(#3783)
34
+ bookmarkGuard = CKEDITOR.dom.walker.bookmark( false, true ),
35
+ whitespacesGuard = CKEDITOR.dom.walker.whitespaces( true ),
36
+ skipGuard = function( node ) { return bookmarkGuard( node ) && whitespacesGuard( node ); };
37
+
38
+ // Get a reference for the next element, bookmark nodes are skipped.
39
+ function getNextSourceNode( node, startFromSibling, lastNode )
40
+ {
41
+ var next = node.getNextSourceNode( startFromSibling, null, lastNode );
42
+ while ( !bookmarkGuard( next ) )
43
+ next = next.getNextSourceNode( startFromSibling, null, lastNode );
44
+ return next;
45
+ }
46
+
47
+ iterator.prototype = {
48
+ getNextParagraph : function( blockTag )
49
+ {
50
+ // The block element to be returned.
51
+ var block;
52
+
53
+ // The range object used to identify the paragraph contents.
54
+ var range;
55
+
56
+ // Indicats that the current element in the loop is the last one.
57
+ var isLast;
58
+
59
+ // Indicate at least one of the range boundaries is inside a preformat block.
60
+ var touchPre;
61
+
62
+ // Instructs to cleanup remaining BRs.
63
+ var removePreviousBr, removeLastBr;
64
+
65
+ // This is the first iteration. Let's initialize it.
66
+ if ( !this._.lastNode )
67
+ {
68
+ range = this.range.clone();
69
+
70
+ // Shrink the range to exclude harmful "noises" (#4087, #4450, #5435).
71
+ range.shrink( CKEDITOR.NODE_ELEMENT, true );
72
+
73
+ touchPre = range.endContainer.hasAscendant( 'pre', true )
74
+ || range.startContainer.hasAscendant( 'pre', true );
75
+
76
+ range.enlarge( this.forceBrBreak && !touchPre || !this.enlargeBr ?
77
+ CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS : CKEDITOR.ENLARGE_BLOCK_CONTENTS );
78
+
79
+ var walker = new CKEDITOR.dom.walker( range ),
80
+ ignoreBookmarkTextEvaluator = CKEDITOR.dom.walker.bookmark( true, true );
81
+ // Avoid anchor inside bookmark inner text.
82
+ walker.evaluator = ignoreBookmarkTextEvaluator;
83
+ this._.nextNode = walker.next();
84
+ // TODO: It's better to have walker.reset() used here.
85
+ walker = new CKEDITOR.dom.walker( range );
86
+ walker.evaluator = ignoreBookmarkTextEvaluator;
87
+ var lastNode = walker.previous();
88
+ this._.lastNode = lastNode.getNextSourceNode( true );
89
+
90
+ // We may have an empty text node at the end of block due to [3770].
91
+ // If that node is the lastNode, it would cause our logic to leak to the
92
+ // next block.(#3887)
93
+ if ( this._.lastNode &&
94
+ this._.lastNode.type == CKEDITOR.NODE_TEXT &&
95
+ !CKEDITOR.tools.trim( this._.lastNode.getText() ) &&
96
+ this._.lastNode.getParent().isBlockBoundary() )
97
+ {
98
+ var testRange = new CKEDITOR.dom.range( range.document );
99
+ testRange.moveToPosition( this._.lastNode, CKEDITOR.POSITION_AFTER_END );
100
+ if ( testRange.checkEndOfBlock() )
101
+ {
102
+ var path = new CKEDITOR.dom.elementPath( testRange.endContainer );
103
+ var lastBlock = path.block || path.blockLimit;
104
+ this._.lastNode = lastBlock.getNextSourceNode( true );
105
+ }
106
+ }
107
+
108
+ // Probably the document end is reached, we need a marker node.
109
+ if ( !this._.lastNode )
110
+ {
111
+ this._.lastNode = this._.docEndMarker = range.document.createText( '' );
112
+ this._.lastNode.insertAfter( lastNode );
113
+ }
114
+
115
+ // Let's reuse this variable.
116
+ range = null;
117
+ }
118
+
119
+ var currentNode = this._.nextNode;
120
+ lastNode = this._.lastNode;
121
+
122
+ this._.nextNode = null;
123
+ while ( currentNode )
124
+ {
125
+ // closeRange indicates that a paragraph boundary has been found,
126
+ // so the range can be closed.
127
+ var closeRange = 0,
128
+ parentPre = currentNode.hasAscendant( 'pre' );
129
+
130
+ // includeNode indicates that the current node is good to be part
131
+ // of the range. By default, any non-element node is ok for it.
132
+ var includeNode = ( currentNode.type != CKEDITOR.NODE_ELEMENT ),
133
+ continueFromSibling = 0;
134
+
135
+ // If it is an element node, let's check if it can be part of the
136
+ // range.
137
+ if ( !includeNode )
138
+ {
139
+ var nodeName = currentNode.getName();
140
+
141
+ if ( currentNode.isBlockBoundary( this.forceBrBreak &&
142
+ !parentPre && { br : 1 } ) )
143
+ {
144
+ // <br> boundaries must be part of the range. It will
145
+ // happen only if ForceBrBreak.
146
+ if ( nodeName == 'br' )
147
+ includeNode = 1;
148
+ else if ( !range && !currentNode.getChildCount() && nodeName != 'hr' )
149
+ {
150
+ // If we have found an empty block, and haven't started
151
+ // the range yet, it means we must return this block.
152
+ block = currentNode;
153
+ isLast = currentNode.equals( lastNode );
154
+ break;
155
+ }
156
+
157
+ // The range must finish right before the boundary,
158
+ // including possibly skipped empty spaces. (#1603)
159
+ if ( range )
160
+ {
161
+ range.setEndAt( currentNode, CKEDITOR.POSITION_BEFORE_START );
162
+
163
+ // The found boundary must be set as the next one at this
164
+ // point. (#1717)
165
+ if ( nodeName != 'br' )
166
+ this._.nextNode = currentNode;
167
+ }
168
+
169
+ closeRange = 1;
170
+ }
171
+ else
172
+ {
173
+ // If we have child nodes, let's check them.
174
+ if ( currentNode.getFirst() )
175
+ {
176
+ // If we don't have a range yet, let's start it.
177
+ if ( !range )
178
+ {
179
+ range = new CKEDITOR.dom.range( this.range.document );
180
+ range.setStartAt( currentNode, CKEDITOR.POSITION_BEFORE_START );
181
+ }
182
+
183
+ currentNode = currentNode.getFirst();
184
+ continue;
185
+ }
186
+ includeNode = 1;
187
+ }
188
+ }
189
+ else if ( currentNode.type == CKEDITOR.NODE_TEXT )
190
+ {
191
+ // Ignore normal whitespaces (i.e. not including &nbsp; or
192
+ // other unicode whitespaces) before/after a block node.
193
+ if ( beginWhitespaceRegex.test( currentNode.getText() ) )
194
+ includeNode = 0;
195
+ }
196
+
197
+ // The current node is good to be part of the range and we are
198
+ // starting a new range, initialize it first.
199
+ if ( includeNode && !range )
200
+ {
201
+ range = new CKEDITOR.dom.range( this.range.document );
202
+ range.setStartAt( currentNode, CKEDITOR.POSITION_BEFORE_START );
203
+ }
204
+
205
+ // The last node has been found.
206
+ isLast = ( ( !closeRange || includeNode ) && currentNode.equals( lastNode ) );
207
+
208
+ // If we are in an element boundary, let's check if it is time
209
+ // to close the range, otherwise we include the parent within it.
210
+ if ( range && !closeRange )
211
+ {
212
+ while ( !currentNode.getNext( skipGuard ) && !isLast )
213
+ {
214
+ var parentNode = currentNode.getParent();
215
+
216
+ if ( parentNode.isBlockBoundary( this.forceBrBreak
217
+ && !parentPre && { br : 1 } ) )
218
+ {
219
+ closeRange = 1;
220
+ includeNode = 0;
221
+ isLast = isLast || ( parentNode.equals( lastNode) );
222
+ // Make sure range includes bookmarks at the end of the block. (#7359)
223
+ range.setEndAt( parentNode, CKEDITOR.POSITION_BEFORE_END );
224
+ break;
225
+ }
226
+
227
+ currentNode = parentNode;
228
+ includeNode = 1;
229
+ isLast = ( currentNode.equals( lastNode ) );
230
+ continueFromSibling = 1;
231
+ }
232
+ }
233
+
234
+ // Now finally include the node.
235
+ if ( includeNode )
236
+ range.setEndAt( currentNode, CKEDITOR.POSITION_AFTER_END );
237
+
238
+ currentNode = getNextSourceNode ( currentNode, continueFromSibling, lastNode );
239
+ isLast = !currentNode;
240
+
241
+ // We have found a block boundary. Let's close the range and move out of the
242
+ // loop.
243
+ if ( isLast || ( closeRange && range ) )
244
+ break;
245
+ }
246
+
247
+ // Now, based on the processed range, look for (or create) the block to be returned.
248
+ if ( !block )
249
+ {
250
+ // If no range has been found, this is the end.
251
+ if ( !range )
252
+ {
253
+ this._.docEndMarker && this._.docEndMarker.remove();
254
+ this._.nextNode = null;
255
+ return null;
256
+ }
257
+
258
+ var startPath = new CKEDITOR.dom.elementPath( range.startContainer );
259
+ var startBlockLimit = startPath.blockLimit,
260
+ checkLimits = { div : 1, th : 1, td : 1 };
261
+ block = startPath.block;
262
+
263
+ if ( !block
264
+ && !this.enforceRealBlocks
265
+ && checkLimits[ startBlockLimit.getName() ]
266
+ && range.checkStartOfBlock()
267
+ && range.checkEndOfBlock() )
268
+ block = startBlockLimit;
269
+ else if ( !block || ( this.enforceRealBlocks && block.getName() == 'li' ) )
270
+ {
271
+ // Create the fixed block.
272
+ block = this.range.document.createElement( blockTag || 'p' );
273
+
274
+ // Move the contents of the temporary range to the fixed block.
275
+ range.extractContents().appendTo( block );
276
+ block.trim();
277
+
278
+ // Insert the fixed block into the DOM.
279
+ range.insertNode( block );
280
+
281
+ removePreviousBr = removeLastBr = true;
282
+ }
283
+ else if ( block.getName() != 'li' )
284
+ {
285
+ // If the range doesn't includes the entire contents of the
286
+ // block, we must split it, isolating the range in a dedicated
287
+ // block.
288
+ if ( !range.checkStartOfBlock() || !range.checkEndOfBlock() )
289
+ {
290
+ // The resulting block will be a clone of the current one.
291
+ block = block.clone( false );
292
+
293
+ // Extract the range contents, moving it to the new block.
294
+ range.extractContents().appendTo( block );
295
+ block.trim();
296
+
297
+ // Split the block. At this point, the range will be in the
298
+ // right position for our intents.
299
+ var splitInfo = range.splitBlock();
300
+
301
+ removePreviousBr = !splitInfo.wasStartOfBlock;
302
+ removeLastBr = !splitInfo.wasEndOfBlock;
303
+
304
+ // Insert the new block into the DOM.
305
+ range.insertNode( block );
306
+ }
307
+ }
308
+ else if ( !isLast )
309
+ {
310
+ // LIs are returned as is, with all their children (due to the
311
+ // nested lists). But, the next node is the node right after
312
+ // the current range, which could be an <li> child (nested
313
+ // lists) or the next sibling <li>.
314
+
315
+ this._.nextNode = ( block.equals( lastNode ) ? null : getNextSourceNode( range.getBoundaryNodes().endNode, 1, lastNode ) );
316
+ }
317
+ }
318
+
319
+ if ( removePreviousBr )
320
+ {
321
+ var previousSibling = block.getPrevious();
322
+ if ( previousSibling && previousSibling.type == CKEDITOR.NODE_ELEMENT )
323
+ {
324
+ if ( previousSibling.getName() == 'br' )
325
+ previousSibling.remove();
326
+ else if ( previousSibling.getLast() && previousSibling.getLast().$.nodeName.toLowerCase() == 'br' )
327
+ previousSibling.getLast().remove();
328
+ }
329
+ }
330
+
331
+ if ( removeLastBr )
332
+ {
333
+ var lastChild = block.getLast();
334
+ if ( lastChild && lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.getName() == 'br' )
335
+ {
336
+ // Take care not to remove the block expanding <br> in non-IE browsers.
337
+ if ( CKEDITOR.env.ie
338
+ || lastChild.getPrevious( bookmarkGuard )
339
+ || lastChild.getNext( bookmarkGuard ) )
340
+ lastChild.remove();
341
+ }
342
+ }
343
+
344
+ // Get a reference for the next element. This is important because the
345
+ // above block can be removed or changed, so we can rely on it for the
346
+ // next interation.
347
+ if ( !this._.nextNode )
348
+ {
349
+ this._.nextNode = ( isLast || block.equals( lastNode ) ) ? null :
350
+ getNextSourceNode( block, 1, lastNode );
351
+ }
352
+
353
+ return block;
354
+ }
355
+ };
356
+
357
+ CKEDITOR.dom.range.prototype.createIterator = function()
358
+ {
359
+ return new iterator( this );
360
+ };
361
+ })();
@@ -0,0 +1,278 @@
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 default editing block plugin, which holds the editing area
8
+ * and source view.
9
+ */
10
+
11
+ (function()
12
+ {
13
+ // This is a semaphore used to avoid recursive calls between
14
+ // the following data handling functions.
15
+ var isHandlingData;
16
+
17
+ CKEDITOR.plugins.add( 'editingblock',
18
+ {
19
+ init : function( editor )
20
+ {
21
+ if ( !editor.config.editingBlock )
22
+ return;
23
+
24
+ editor.on( 'themeSpace', function( event )
25
+ {
26
+ if ( event.data.space == 'contents' )
27
+ event.data.html += '<br>';
28
+ });
29
+
30
+ editor.on( 'themeLoaded', function()
31
+ {
32
+ editor.fireOnce( 'editingBlockReady' );
33
+ });
34
+
35
+ editor.on( 'uiReady', function()
36
+ {
37
+ editor.setMode( editor.config.startupMode );
38
+ });
39
+
40
+ editor.on( 'afterSetData', function()
41
+ {
42
+ if ( !isHandlingData )
43
+ {
44
+ function setData()
45
+ {
46
+ isHandlingData = true;
47
+ editor.getMode().loadData( editor.getData() );
48
+ isHandlingData = false;
49
+ }
50
+
51
+ if ( editor.mode )
52
+ setData();
53
+ else
54
+ {
55
+ editor.on( 'mode', function()
56
+ {
57
+ if ( editor.mode )
58
+ {
59
+ setData();
60
+ editor.removeListener( 'mode', arguments.callee );
61
+ }
62
+ });
63
+ }
64
+ }
65
+ });
66
+
67
+ editor.on( 'beforeGetData', function()
68
+ {
69
+ if ( !isHandlingData && editor.mode )
70
+ {
71
+ isHandlingData = true;
72
+ editor.setData( editor.getMode().getData(), null, 1 );
73
+ isHandlingData = false;
74
+ }
75
+ });
76
+
77
+ editor.on( 'getSnapshot', function( event )
78
+ {
79
+ if ( editor.mode )
80
+ event.data = editor.getMode().getSnapshotData();
81
+ });
82
+
83
+ editor.on( 'loadSnapshot', function( event )
84
+ {
85
+ if ( editor.mode )
86
+ editor.getMode().loadSnapshotData( event.data );
87
+ });
88
+
89
+ // For the first "mode" call, we'll also fire the "instanceReady"
90
+ // event.
91
+ editor.on( 'mode', function( event )
92
+ {
93
+ // Do that once only.
94
+ event.removeListener();
95
+
96
+ // Redirect the focus into editor for webkit. (#5713)
97
+ CKEDITOR.env.webkit && editor.container.on( 'focus', function()
98
+ {
99
+ editor.focus();
100
+ });
101
+
102
+ if ( editor.config.startupFocus )
103
+ editor.focus();
104
+
105
+ // Fire instanceReady for both the editor and CKEDITOR, but
106
+ // defer this until the whole execution has completed
107
+ // to guarantee the editor is fully responsible.
108
+ setTimeout( function(){
109
+ editor.fireOnce( 'instanceReady' );
110
+ CKEDITOR.fire( 'instanceReady', null, editor );
111
+ }, 0 );
112
+ });
113
+
114
+ editor.on( 'destroy', function ()
115
+ {
116
+ // -> currentMode.unload( holderElement );
117
+ if ( this.mode )
118
+ this._.modes[ this.mode ].unload( this.getThemeSpace( 'contents' ) );
119
+ });
120
+ }
121
+ });
122
+
123
+ /**
124
+ * The current editing mode. An editing mode is basically a viewport for
125
+ * editing or content viewing. By default the possible values for this
126
+ * property are "wysiwyg" and "source".
127
+ * @type String
128
+ * @example
129
+ * alert( CKEDITOR.instances.editor1.mode ); // "wysiwyg" (e.g.)
130
+ */
131
+ CKEDITOR.editor.prototype.mode = '';
132
+
133
+ /**
134
+ * Registers an editing mode. This function is to be used mainly by plugins.
135
+ * @param {String} mode The mode name.
136
+ * @param {Object} modeEditor The mode editor definition.
137
+ * @example
138
+ */
139
+ CKEDITOR.editor.prototype.addMode = function( mode, modeEditor )
140
+ {
141
+ modeEditor.name = mode;
142
+ ( this._.modes || ( this._.modes = {} ) )[ mode ] = modeEditor;
143
+ };
144
+
145
+ /**
146
+ * Sets the current editing mode in this editor instance.
147
+ * @param {String} mode A registered mode name.
148
+ * @example
149
+ * // Switch to "source" view.
150
+ * CKEDITOR.instances.editor1.setMode( 'source' );
151
+ */
152
+ CKEDITOR.editor.prototype.setMode = function( mode )
153
+ {
154
+ this.fire( 'beforeSetMode', { newMode : mode } );
155
+
156
+ var data,
157
+ holderElement = this.getThemeSpace( 'contents' ),
158
+ isDirty = this.checkDirty();
159
+
160
+ // Unload the previous mode.
161
+ if ( this.mode )
162
+ {
163
+ if ( mode == this.mode )
164
+ return;
165
+
166
+ this._.previousMode = this.mode;
167
+
168
+ this.fire( 'beforeModeUnload' );
169
+
170
+ var currentMode = this.getMode();
171
+ data = currentMode.getData();
172
+ currentMode.unload( holderElement );
173
+ this.mode = '';
174
+ }
175
+
176
+ holderElement.setHtml( '' );
177
+
178
+ // Load required mode.
179
+ var modeEditor = this.getMode( mode );
180
+ if ( !modeEditor )
181
+ throw '[CKEDITOR.editor.setMode] Unknown mode "' + mode + '".';
182
+
183
+ if ( !isDirty )
184
+ {
185
+ this.on( 'mode', function()
186
+ {
187
+ this.resetDirty();
188
+ this.removeListener( 'mode', arguments.callee );
189
+ });
190
+ }
191
+
192
+ modeEditor.load( holderElement, ( typeof data ) != 'string' ? this.getData() : data );
193
+ };
194
+
195
+ /**
196
+ * Gets the current or any of the objects that represent the editing
197
+ * area modes. The two most common editing modes are "wysiwyg" and "source".
198
+ * @param {String} [mode] The mode to be retrieved. If not specified, the
199
+ * current one is returned.
200
+ */
201
+ CKEDITOR.editor.prototype.getMode = function( mode )
202
+ {
203
+ return this._.modes && this._.modes[ mode || this.mode ];
204
+ };
205
+
206
+ /**
207
+ * Moves the selection focus to the editing are space in the editor.
208
+ */
209
+ CKEDITOR.editor.prototype.focus = function()
210
+ {
211
+ this.forceNextSelectionCheck();
212
+ var mode = this.getMode();
213
+ if ( mode )
214
+ mode.focus();
215
+ };
216
+ })();
217
+
218
+ /**
219
+ * The mode to load at the editor startup. It depends on the plugins
220
+ * loaded. By default, the "wysiwyg" and "source" modes are available.
221
+ * @type String
222
+ * @default 'wysiwyg'
223
+ * @example
224
+ * config.startupMode = 'source';
225
+ */
226
+ CKEDITOR.config.startupMode = 'wysiwyg';
227
+
228
+ /**
229
+ * Sets whether the editor should have the focus when the page loads.
230
+ * @name CKEDITOR.config.startupFocus
231
+ * @type Boolean
232
+ * @default false
233
+ * @example
234
+ * config.startupFocus = true;
235
+ */
236
+
237
+ /**
238
+ * Whether to render or not the editing block area in the editor interface.
239
+ * @type Boolean
240
+ * @default true
241
+ * @example
242
+ * config.editingBlock = false;
243
+ */
244
+ CKEDITOR.config.editingBlock = true;
245
+
246
+ /**
247
+ * Fired when a CKEDITOR instance is created, fully initialized and ready for interaction.
248
+ * @name CKEDITOR#instanceReady
249
+ * @event
250
+ * @param {CKEDITOR.editor} editor The editor instance that has been created.
251
+ */
252
+
253
+ /**
254
+ * Fired when the CKEDITOR instance is created, fully initialized and ready for interaction.
255
+ * @name CKEDITOR.editor#instanceReady
256
+ * @event
257
+ */
258
+
259
+ /**
260
+ * Fired before changing the editing mode. See also CKEDITOR.editor#beforeSetMode and CKEDITOR.editor#mode
261
+ * @name CKEDITOR.editor#beforeModeUnload
262
+ * @event
263
+ */
264
+
265
+ /**
266
+ * Fired before the editor mode is set. See also CKEDITOR.editor#mode and CKEDITOR.editor#beforeModeUnload
267
+ * @name CKEDITOR.editor#beforeSetMode
268
+ * @event
269
+ * @since 3.5.3
270
+ * @param {String} newMode The name of the mode which is about to be set.
271
+ */
272
+
273
+ /**
274
+ * Fired after setting the editing mode. See also CKEDITOR.editor#beforeSetMode and CKEDITOR.editor#beforeModeUnload
275
+ * @name CKEDITOR.editor#mode
276
+ * @event
277
+ * @param {String} previousMode The previous mode of the editor.
278
+ */