ckeditor 3.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (634) hide show
  1. data/CHANGELOG +15 -0
  2. data/README.textile +225 -0
  3. data/Rakefile +44 -0
  4. data/TODO +3 -0
  5. data/app/controllers/ckeditor_controller.rb +87 -0
  6. data/app/helpers/ckeditor_helper.rb +37 -0
  7. data/app/views/ckeditor/_file.html.erb +15 -0
  8. data/app/views/ckeditor/_image.html.erb +15 -0
  9. data/app/views/ckeditor/_swfupload.html.erb +51 -0
  10. data/app/views/ckeditor/files.html.erb +91 -0
  11. data/app/views/ckeditor/images.html.erb +91 -0
  12. data/app/views/layouts/ckeditor.html.erb +30 -0
  13. data/config/routes.rb +5 -0
  14. data/examples/migrations/attachment_fu/create_assets.rb +30 -0
  15. data/examples/migrations/paperclip/create_assets.rb +25 -0
  16. data/examples/models/attachment_fu/asset.rb +45 -0
  17. data/examples/models/attachment_fu/attachment_file.rb +46 -0
  18. data/examples/models/attachment_fu/picture.rb +46 -0
  19. data/examples/models/paperclip/asset.rb +65 -0
  20. data/examples/models/paperclip/attachment_file.rb +22 -0
  21. data/examples/models/paperclip/picture.rb +39 -0
  22. data/examples/s3/attachment_file.rb +23 -0
  23. data/examples/s3/picture.rb +41 -0
  24. data/lib/ckeditor.rb +57 -0
  25. data/lib/ckeditor/engine.rb +10 -0
  26. data/lib/ckeditor/file_storage.rb +178 -0
  27. data/lib/ckeditor/form_builder.rb +22 -0
  28. data/lib/ckeditor/utils.rb +15 -0
  29. data/lib/ckeditor/version.rb +11 -0
  30. data/lib/ckeditor/view_helper.rb +119 -0
  31. data/lib/generators/ckeditor_generator.rb +23 -0
  32. data/lib/generators/templates/ckeditor.rb +51 -0
  33. data/lib/generators/templates/ckeditor.yml +28 -0
  34. data/lib/generators/templates/ckeditor/CHANGES.html +642 -0
  35. data/lib/generators/templates/ckeditor/INSTALL.html +92 -0
  36. data/lib/generators/templates/ckeditor/LICENSE.html +1334 -0
  37. data/lib/generators/templates/ckeditor/_samples/ajax.html +87 -0
  38. data/lib/generators/templates/ckeditor/_samples/api.html +152 -0
  39. data/lib/generators/templates/ckeditor/_samples/api_dialog.html +181 -0
  40. data/lib/generators/templates/ckeditor/_samples/api_dialog/my_dialog.js +28 -0
  41. data/lib/generators/templates/ckeditor/_samples/assets/output_xhtml.css +204 -0
  42. data/lib/generators/templates/ckeditor/_samples/divreplace.html +137 -0
  43. data/lib/generators/templates/ckeditor/_samples/enterkey.html +88 -0
  44. data/lib/generators/templates/ckeditor/_samples/fullpage.html +62 -0
  45. data/lib/generators/templates/ckeditor/_samples/index.html +54 -0
  46. data/lib/generators/templates/ckeditor/_samples/jqueryadapter.html +73 -0
  47. data/lib/generators/templates/ckeditor/_samples/output_xhtml.html +159 -0
  48. data/lib/generators/templates/ckeditor/_samples/php/advanced.php +93 -0
  49. data/lib/generators/templates/ckeditor/_samples/php/events.php +130 -0
  50. data/lib/generators/templates/ckeditor/_samples/php/replace.php +63 -0
  51. data/lib/generators/templates/ckeditor/_samples/php/replaceall.php +68 -0
  52. data/lib/generators/templates/ckeditor/_samples/php/standalone.php +64 -0
  53. data/lib/generators/templates/ckeditor/_samples/replacebyclass.html +49 -0
  54. data/lib/generators/templates/ckeditor/_samples/replacebycode.html +80 -0
  55. data/lib/generators/templates/ckeditor/_samples/sample.css +81 -0
  56. data/lib/generators/templates/ckeditor/_samples/sample.js +65 -0
  57. data/lib/generators/templates/ckeditor/_samples/sample_posteddata.php +59 -0
  58. data/lib/generators/templates/ckeditor/_samples/sharedspaces.html +131 -0
  59. data/lib/generators/templates/ckeditor/_samples/skins.html +83 -0
  60. data/lib/generators/templates/ckeditor/_samples/ui_color.html +87 -0
  61. data/lib/generators/templates/ckeditor/_samples/ui_languages.html +103 -0
  62. data/lib/generators/templates/ckeditor/_source/adapters/jquery.js +297 -0
  63. data/lib/generators/templates/ckeditor/_source/core/_bootstrap.js +91 -0
  64. data/lib/generators/templates/ckeditor/_source/core/ajax.js +143 -0
  65. data/lib/generators/templates/ckeditor/_source/core/ckeditor.js +103 -0
  66. data/lib/generators/templates/ckeditor/_source/core/ckeditor_base.js +193 -0
  67. data/lib/generators/templates/ckeditor/_source/core/ckeditor_basic.js +242 -0
  68. data/lib/generators/templates/ckeditor/_source/core/command.js +73 -0
  69. data/lib/generators/templates/ckeditor/_source/core/commanddefinition.js +102 -0
  70. data/lib/generators/templates/ckeditor/_source/core/config.js +319 -0
  71. data/lib/generators/templates/ckeditor/_source/core/dataprocessor.js +66 -0
  72. data/lib/generators/templates/ckeditor/_source/core/dom.js +21 -0
  73. data/lib/generators/templates/ckeditor/_source/core/dom/comment.js +32 -0
  74. data/lib/generators/templates/ckeditor/_source/core/dom/document.js +224 -0
  75. data/lib/generators/templates/ckeditor/_source/core/dom/documentfragment.js +49 -0
  76. data/lib/generators/templates/ckeditor/_source/core/dom/domobject.js +246 -0
  77. data/lib/generators/templates/ckeditor/_source/core/dom/element.js +1441 -0
  78. data/lib/generators/templates/ckeditor/_source/core/dom/elementpath.js +104 -0
  79. data/lib/generators/templates/ckeditor/_source/core/dom/event.js +142 -0
  80. data/lib/generators/templates/ckeditor/_source/core/dom/node.js +662 -0
  81. data/lib/generators/templates/ckeditor/_source/core/dom/nodelist.js +23 -0
  82. data/lib/generators/templates/ckeditor/_source/core/dom/range.js +1836 -0
  83. data/lib/generators/templates/ckeditor/_source/core/dom/text.js +123 -0
  84. data/lib/generators/templates/ckeditor/_source/core/dom/walker.js +451 -0
  85. data/lib/generators/templates/ckeditor/_source/core/dom/window.js +96 -0
  86. data/lib/generators/templates/ckeditor/_source/core/dtd.js +233 -0
  87. data/lib/generators/templates/ckeditor/_source/core/editor.js +756 -0
  88. data/lib/generators/templates/ckeditor/_source/core/editor_basic.js +182 -0
  89. data/lib/generators/templates/ckeditor/_source/core/env.js +222 -0
  90. data/lib/generators/templates/ckeditor/_source/core/event.js +336 -0
  91. data/lib/generators/templates/ckeditor/_source/core/eventInfo.js +120 -0
  92. data/lib/generators/templates/ckeditor/_source/core/focusmanager.js +137 -0
  93. data/lib/generators/templates/ckeditor/_source/core/htmlparser.js +212 -0
  94. data/lib/generators/templates/ckeditor/_source/core/htmlparser/basicwriter.js +145 -0
  95. data/lib/generators/templates/ckeditor/_source/core/htmlparser/cdata.js +43 -0
  96. data/lib/generators/templates/ckeditor/_source/core/htmlparser/comment.js +60 -0
  97. data/lib/generators/templates/ckeditor/_source/core/htmlparser/element.js +240 -0
  98. data/lib/generators/templates/ckeditor/_source/core/htmlparser/filter.js +262 -0
  99. data/lib/generators/templates/ckeditor/_source/core/htmlparser/fragment.js +496 -0
  100. data/lib/generators/templates/ckeditor/_source/core/htmlparser/text.js +55 -0
  101. data/lib/generators/templates/ckeditor/_source/core/imagecacher.js +59 -0
  102. data/lib/generators/templates/ckeditor/_source/core/lang.js +152 -0
  103. data/lib/generators/templates/ckeditor/_source/core/loader.js +242 -0
  104. data/lib/generators/templates/ckeditor/_source/core/plugindefinition.js +66 -0
  105. data/lib/generators/templates/ckeditor/_source/core/plugins.js +85 -0
  106. data/lib/generators/templates/ckeditor/_source/core/resourcemanager.js +238 -0
  107. data/lib/generators/templates/ckeditor/_source/core/scriptloader.js +198 -0
  108. data/lib/generators/templates/ckeditor/_source/core/skins.js +204 -0
  109. data/lib/generators/templates/ckeditor/_source/core/themes.js +19 -0
  110. data/lib/generators/templates/ckeditor/_source/core/tools.js +698 -0
  111. data/lib/generators/templates/ckeditor/_source/core/ui.js +116 -0
  112. data/lib/generators/templates/ckeditor/_source/core/xml.js +165 -0
  113. data/lib/generators/templates/ckeditor/_source/lang/_languages.js +83 -0
  114. data/lib/generators/templates/ckeditor/_source/lang/_translationstatus.txt +60 -0
  115. data/lib/generators/templates/ckeditor/_source/lang/af.js +708 -0
  116. data/lib/generators/templates/ckeditor/_source/lang/ar.js +708 -0
  117. data/lib/generators/templates/ckeditor/_source/lang/bg.js +708 -0
  118. data/lib/generators/templates/ckeditor/_source/lang/bn.js +708 -0
  119. data/lib/generators/templates/ckeditor/_source/lang/bs.js +708 -0
  120. data/lib/generators/templates/ckeditor/_source/lang/ca.js +708 -0
  121. data/lib/generators/templates/ckeditor/_source/lang/cs.js +708 -0
  122. data/lib/generators/templates/ckeditor/_source/lang/cy.js +708 -0
  123. data/lib/generators/templates/ckeditor/_source/lang/da.js +708 -0
  124. data/lib/generators/templates/ckeditor/_source/lang/de.js +708 -0
  125. data/lib/generators/templates/ckeditor/_source/lang/el.js +708 -0
  126. data/lib/generators/templates/ckeditor/_source/lang/en-au.js +708 -0
  127. data/lib/generators/templates/ckeditor/_source/lang/en-ca.js +708 -0
  128. data/lib/generators/templates/ckeditor/_source/lang/en-gb.js +708 -0
  129. data/lib/generators/templates/ckeditor/_source/lang/en.js +708 -0
  130. data/lib/generators/templates/ckeditor/_source/lang/eo.js +708 -0
  131. data/lib/generators/templates/ckeditor/_source/lang/es.js +708 -0
  132. data/lib/generators/templates/ckeditor/_source/lang/et.js +708 -0
  133. data/lib/generators/templates/ckeditor/_source/lang/eu.js +708 -0
  134. data/lib/generators/templates/ckeditor/_source/lang/fa.js +708 -0
  135. data/lib/generators/templates/ckeditor/_source/lang/fi.js +708 -0
  136. data/lib/generators/templates/ckeditor/_source/lang/fo.js +708 -0
  137. data/lib/generators/templates/ckeditor/_source/lang/fr-ca.js +708 -0
  138. data/lib/generators/templates/ckeditor/_source/lang/fr.js +708 -0
  139. data/lib/generators/templates/ckeditor/_source/lang/gl.js +708 -0
  140. data/lib/generators/templates/ckeditor/_source/lang/gu.js +708 -0
  141. data/lib/generators/templates/ckeditor/_source/lang/he.js +708 -0
  142. data/lib/generators/templates/ckeditor/_source/lang/hi.js +708 -0
  143. data/lib/generators/templates/ckeditor/_source/lang/hr.js +708 -0
  144. data/lib/generators/templates/ckeditor/_source/lang/hu.js +708 -0
  145. data/lib/generators/templates/ckeditor/_source/lang/is.js +708 -0
  146. data/lib/generators/templates/ckeditor/_source/lang/it.js +708 -0
  147. data/lib/generators/templates/ckeditor/_source/lang/ja.js +708 -0
  148. data/lib/generators/templates/ckeditor/_source/lang/km.js +708 -0
  149. data/lib/generators/templates/ckeditor/_source/lang/ko.js +708 -0
  150. data/lib/generators/templates/ckeditor/_source/lang/lt.js +708 -0
  151. data/lib/generators/templates/ckeditor/_source/lang/lv.js +708 -0
  152. data/lib/generators/templates/ckeditor/_source/lang/mn.js +708 -0
  153. data/lib/generators/templates/ckeditor/_source/lang/ms.js +708 -0
  154. data/lib/generators/templates/ckeditor/_source/lang/nb.js +708 -0
  155. data/lib/generators/templates/ckeditor/_source/lang/nl.js +708 -0
  156. data/lib/generators/templates/ckeditor/_source/lang/no.js +708 -0
  157. data/lib/generators/templates/ckeditor/_source/lang/pl.js +708 -0
  158. data/lib/generators/templates/ckeditor/_source/lang/pt-br.js +708 -0
  159. data/lib/generators/templates/ckeditor/_source/lang/pt.js +708 -0
  160. data/lib/generators/templates/ckeditor/_source/lang/ro.js +708 -0
  161. data/lib/generators/templates/ckeditor/_source/lang/ru.js +708 -0
  162. data/lib/generators/templates/ckeditor/_source/lang/sk.js +708 -0
  163. data/lib/generators/templates/ckeditor/_source/lang/sl.js +708 -0
  164. data/lib/generators/templates/ckeditor/_source/lang/sr-latn.js +708 -0
  165. data/lib/generators/templates/ckeditor/_source/lang/sr.js +708 -0
  166. data/lib/generators/templates/ckeditor/_source/lang/sv.js +708 -0
  167. data/lib/generators/templates/ckeditor/_source/lang/th.js +708 -0
  168. data/lib/generators/templates/ckeditor/_source/lang/tr.js +708 -0
  169. data/lib/generators/templates/ckeditor/_source/lang/uk.js +708 -0
  170. data/lib/generators/templates/ckeditor/_source/lang/vi.js +708 -0
  171. data/lib/generators/templates/ckeditor/_source/lang/zh-cn.js +708 -0
  172. data/lib/generators/templates/ckeditor/_source/lang/zh.js +708 -0
  173. data/lib/generators/templates/ckeditor/_source/plugins/a11yhelp/dialogs/a11yhelp.js +211 -0
  174. data/lib/generators/templates/ckeditor/_source/plugins/a11yhelp/lang/en.js +108 -0
  175. data/lib/generators/templates/ckeditor/_source/plugins/a11yhelp/plugin.js +46 -0
  176. data/lib/generators/templates/ckeditor/_source/plugins/about/dialogs/about.js +73 -0
  177. data/lib/generators/templates/ckeditor/_source/plugins/about/dialogs/logo_ckeditor.png +0 -0
  178. data/lib/generators/templates/ckeditor/_source/plugins/about/plugin.js +23 -0
  179. data/lib/generators/templates/ckeditor/_source/plugins/attachment/dialogs/attachment.js +384 -0
  180. data/lib/generators/templates/ckeditor/_source/plugins/attachment/images/attachment.png +0 -0
  181. data/lib/generators/templates/ckeditor/_source/plugins/attachment/lang/en.js +10 -0
  182. data/lib/generators/templates/ckeditor/_source/plugins/attachment/lang/ru.js +10 -0
  183. data/lib/generators/templates/ckeditor/_source/plugins/attachment/lang/uk.js +10 -0
  184. data/lib/generators/templates/ckeditor/_source/plugins/attachment/plugin.js +44 -0
  185. data/lib/generators/templates/ckeditor/_source/plugins/basicstyles/plugin.js +101 -0
  186. data/lib/generators/templates/ckeditor/_source/plugins/blockquote/plugin.js +301 -0
  187. data/lib/generators/templates/ckeditor/_source/plugins/button/plugin.js +272 -0
  188. data/lib/generators/templates/ckeditor/_source/plugins/clipboard/dialogs/paste.js +186 -0
  189. data/lib/generators/templates/ckeditor/_source/plugins/clipboard/plugin.js +379 -0
  190. data/lib/generators/templates/ckeditor/_source/plugins/colorbutton/plugin.js +247 -0
  191. data/lib/generators/templates/ckeditor/_source/plugins/colordialog/dialogs/colordialog.js +191 -0
  192. data/lib/generators/templates/ckeditor/_source/plugins/colordialog/plugin.js +13 -0
  193. data/lib/generators/templates/ckeditor/_source/plugins/contextmenu/plugin.js +274 -0
  194. data/lib/generators/templates/ckeditor/_source/plugins/dialog/dialogDefinition.js +315 -0
  195. data/lib/generators/templates/ckeditor/_source/plugins/dialog/plugin.js +2913 -0
  196. data/lib/generators/templates/ckeditor/_source/plugins/dialogui/plugin.js +1408 -0
  197. data/lib/generators/templates/ckeditor/_source/plugins/div/dialogs/div.js +529 -0
  198. data/lib/generators/templates/ckeditor/_source/plugins/div/plugin.js +121 -0
  199. data/lib/generators/templates/ckeditor/_source/plugins/domiterator/plugin.js +355 -0
  200. data/lib/generators/templates/ckeditor/_source/plugins/editingblock/plugin.js +224 -0
  201. data/lib/generators/templates/ckeditor/_source/plugins/elementspath/plugin.js +203 -0
  202. data/lib/generators/templates/ckeditor/_source/plugins/embed/dialogs/embed.js +65 -0
  203. data/lib/generators/templates/ckeditor/_source/plugins/embed/images/embed.png +0 -0
  204. data/lib/generators/templates/ckeditor/_source/plugins/embed/lang/en.js +9 -0
  205. data/lib/generators/templates/ckeditor/_source/plugins/embed/lang/ru.js +9 -0
  206. data/lib/generators/templates/ckeditor/_source/plugins/embed/lang/uk.js +9 -0
  207. data/lib/generators/templates/ckeditor/_source/plugins/embed/plugin.js +43 -0
  208. data/lib/generators/templates/ckeditor/_source/plugins/enterkey/plugin.js +339 -0
  209. data/lib/generators/templates/ckeditor/_source/plugins/entities/plugin.js +200 -0
  210. data/lib/generators/templates/ckeditor/_source/plugins/fakeobjects/plugin.js +120 -0
  211. data/lib/generators/templates/ckeditor/_source/plugins/filebrowser/plugin.js +479 -0
  212. data/lib/generators/templates/ckeditor/_source/plugins/find/dialogs/find.js +867 -0
  213. data/lib/generators/templates/ckeditor/_source/plugins/find/plugin.js +46 -0
  214. data/lib/generators/templates/ckeditor/_source/plugins/flash/dialogs/flash.js +698 -0
  215. data/lib/generators/templates/ckeditor/_source/plugins/flash/images/placeholder.png +0 -0
  216. data/lib/generators/templates/ckeditor/_source/plugins/flash/plugin.js +165 -0
  217. data/lib/generators/templates/ckeditor/_source/plugins/floatpanel/plugin.js +376 -0
  218. data/lib/generators/templates/ckeditor/_source/plugins/font/plugin.js +234 -0
  219. data/lib/generators/templates/ckeditor/_source/plugins/format/plugin.js +193 -0
  220. data/lib/generators/templates/ckeditor/_source/plugins/forms/dialogs/button.js +135 -0
  221. data/lib/generators/templates/ckeditor/_source/plugins/forms/dialogs/checkbox.js +155 -0
  222. data/lib/generators/templates/ckeditor/_source/plugins/forms/dialogs/form.js +177 -0
  223. data/lib/generators/templates/ckeditor/_source/plugins/forms/dialogs/hiddenfield.js +91 -0
  224. data/lib/generators/templates/ckeditor/_source/plugins/forms/dialogs/radio.js +135 -0
  225. data/lib/generators/templates/ckeditor/_source/plugins/forms/dialogs/select.js +556 -0
  226. data/lib/generators/templates/ckeditor/_source/plugins/forms/dialogs/textarea.js +114 -0
  227. data/lib/generators/templates/ckeditor/_source/plugins/forms/dialogs/textfield.js +193 -0
  228. data/lib/generators/templates/ckeditor/_source/plugins/forms/plugin.js +217 -0
  229. data/lib/generators/templates/ckeditor/_source/plugins/horizontalrule/plugin.js +36 -0
  230. data/lib/generators/templates/ckeditor/_source/plugins/htmldataprocessor/plugin.js +463 -0
  231. data/lib/generators/templates/ckeditor/_source/plugins/htmlwriter/plugin.js +314 -0
  232. data/lib/generators/templates/ckeditor/_source/plugins/iframedialog/plugin.js +136 -0
  233. data/lib/generators/templates/ckeditor/_source/plugins/image/dialogs/image.js +1380 -0
  234. data/lib/generators/templates/ckeditor/_source/plugins/image/plugin.js +73 -0
  235. data/lib/generators/templates/ckeditor/_source/plugins/indent/plugin.js +381 -0
  236. data/lib/generators/templates/ckeditor/_source/plugins/justify/plugin.js +168 -0
  237. data/lib/generators/templates/ckeditor/_source/plugins/keystrokes/plugin.js +229 -0
  238. data/lib/generators/templates/ckeditor/_source/plugins/link/dialogs/anchor.js +99 -0
  239. data/lib/generators/templates/ckeditor/_source/plugins/link/dialogs/link.js +1413 -0
  240. data/lib/generators/templates/ckeditor/_source/plugins/link/images/anchor.gif +0 -0
  241. data/lib/generators/templates/ckeditor/_source/plugins/link/plugin.js +219 -0
  242. data/lib/generators/templates/ckeditor/_source/plugins/list/plugin.js +645 -0
  243. data/lib/generators/templates/ckeditor/_source/plugins/listblock/plugin.js +257 -0
  244. data/lib/generators/templates/ckeditor/_source/plugins/maximize/plugin.js +305 -0
  245. data/lib/generators/templates/ckeditor/_source/plugins/menu/plugin.js +406 -0
  246. data/lib/generators/templates/ckeditor/_source/plugins/menubutton/plugin.js +94 -0
  247. data/lib/generators/templates/ckeditor/_source/plugins/newpage/plugin.js +54 -0
  248. data/lib/generators/templates/ckeditor/_source/plugins/pagebreak/images/pagebreak.gif +0 -0
  249. data/lib/generators/templates/ckeditor/_source/plugins/pagebreak/plugin.js +103 -0
  250. data/lib/generators/templates/ckeditor/_source/plugins/panel/plugin.js +397 -0
  251. data/lib/generators/templates/ckeditor/_source/plugins/panelbutton/plugin.js +147 -0
  252. data/lib/generators/templates/ckeditor/_source/plugins/pastefromword/filter/default.js +1179 -0
  253. data/lib/generators/templates/ckeditor/_source/plugins/pastefromword/plugin.js +120 -0
  254. data/lib/generators/templates/ckeditor/_source/plugins/pastetext/dialogs/pastetext.js +77 -0
  255. data/lib/generators/templates/ckeditor/_source/plugins/pastetext/plugin.js +162 -0
  256. data/lib/generators/templates/ckeditor/_source/plugins/popup/plugin.js +62 -0
  257. data/lib/generators/templates/ckeditor/_source/plugins/preview/plugin.js +108 -0
  258. data/lib/generators/templates/ckeditor/_source/plugins/print/plugin.js +41 -0
  259. data/lib/generators/templates/ckeditor/_source/plugins/removeformat/plugin.js +132 -0
  260. data/lib/generators/templates/ckeditor/_source/plugins/resize/plugin.js +117 -0
  261. data/lib/generators/templates/ckeditor/_source/plugins/richcombo/plugin.js +370 -0
  262. data/lib/generators/templates/ckeditor/_source/plugins/save/plugin.js +55 -0
  263. data/lib/generators/templates/ckeditor/_source/plugins/scayt/dialogs/options.js +533 -0
  264. data/lib/generators/templates/ckeditor/_source/plugins/scayt/dialogs/toolbar.css +71 -0
  265. data/lib/generators/templates/ckeditor/_source/plugins/scayt/plugin.js +767 -0
  266. data/lib/generators/templates/ckeditor/_source/plugins/selection/plugin.js +1145 -0
  267. data/lib/generators/templates/ckeditor/_source/plugins/showblocks/images/block_address.png +0 -0
  268. data/lib/generators/templates/ckeditor/_source/plugins/showblocks/images/block_blockquote.png +0 -0
  269. data/lib/generators/templates/ckeditor/_source/plugins/showblocks/images/block_div.png +0 -0
  270. data/lib/generators/templates/ckeditor/_source/plugins/showblocks/images/block_h1.png +0 -0
  271. data/lib/generators/templates/ckeditor/_source/plugins/showblocks/images/block_h2.png +0 -0
  272. data/lib/generators/templates/ckeditor/_source/plugins/showblocks/images/block_h3.png +0 -0
  273. data/lib/generators/templates/ckeditor/_source/plugins/showblocks/images/block_h4.png +0 -0
  274. data/lib/generators/templates/ckeditor/_source/plugins/showblocks/images/block_h5.png +0 -0
  275. data/lib/generators/templates/ckeditor/_source/plugins/showblocks/images/block_h6.png +0 -0
  276. data/lib/generators/templates/ckeditor/_source/plugins/showblocks/images/block_p.png +0 -0
  277. data/lib/generators/templates/ckeditor/_source/plugins/showblocks/images/block_pre.png +0 -0
  278. data/lib/generators/templates/ckeditor/_source/plugins/showblocks/plugin.js +154 -0
  279. data/lib/generators/templates/ckeditor/_source/plugins/showborders/plugin.js +167 -0
  280. data/lib/generators/templates/ckeditor/_source/plugins/smiley/dialogs/smiley.js +216 -0
  281. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/angel_smile.gif +0 -0
  282. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/angry_smile.gif +0 -0
  283. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/broken_heart.gif +0 -0
  284. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/confused_smile.gif +0 -0
  285. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/cry_smile.gif +0 -0
  286. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/devil_smile.gif +0 -0
  287. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/embaressed_smile.gif +0 -0
  288. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/envelope.gif +0 -0
  289. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/heart.gif +0 -0
  290. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/kiss.gif +0 -0
  291. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/lightbulb.gif +0 -0
  292. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/omg_smile.gif +0 -0
  293. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/regular_smile.gif +0 -0
  294. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/sad_smile.gif +0 -0
  295. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/shades_smile.gif +0 -0
  296. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/teeth_smile.gif +0 -0
  297. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/thumbs_down.gif +0 -0
  298. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/thumbs_up.gif +0 -0
  299. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/tounge_smile.gif +0 -0
  300. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  301. data/lib/generators/templates/ckeditor/_source/plugins/smiley/images/wink_smile.gif +0 -0
  302. data/lib/generators/templates/ckeditor/_source/plugins/smiley/plugin.js +84 -0
  303. data/lib/generators/templates/ckeditor/_source/plugins/sourcearea/plugin.js +206 -0
  304. data/lib/generators/templates/ckeditor/_source/plugins/specialchar/dialogs/specialchar.js +403 -0
  305. data/lib/generators/templates/ckeditor/_source/plugins/specialchar/plugin.js +29 -0
  306. data/lib/generators/templates/ckeditor/_source/plugins/styles/plugin.js +1442 -0
  307. data/lib/generators/templates/ckeditor/_source/plugins/styles/styles/default.js +88 -0
  308. data/lib/generators/templates/ckeditor/_source/plugins/stylescombo/plugin.js +204 -0
  309. data/lib/generators/templates/ckeditor/_source/plugins/tab/plugin.js +261 -0
  310. data/lib/generators/templates/ckeditor/_source/plugins/table/dialogs/table.js +591 -0
  311. data/lib/generators/templates/ckeditor/_source/plugins/table/plugin.js +70 -0
  312. data/lib/generators/templates/ckeditor/_source/plugins/tabletools/dialogs/tableCell.js +528 -0
  313. data/lib/generators/templates/ckeditor/_source/plugins/tabletools/plugin.js +1068 -0
  314. data/lib/generators/templates/ckeditor/_source/plugins/templates/dialogs/templates.js +230 -0
  315. data/lib/generators/templates/ckeditor/_source/plugins/templates/plugin.js +100 -0
  316. data/lib/generators/templates/ckeditor/_source/plugins/templates/templates/default.js +94 -0
  317. data/lib/generators/templates/ckeditor/_source/plugins/templates/templates/images/template1.gif +0 -0
  318. data/lib/generators/templates/ckeditor/_source/plugins/templates/templates/images/template2.gif +0 -0
  319. data/lib/generators/templates/ckeditor/_source/plugins/templates/templates/images/template3.gif +0 -0
  320. data/lib/generators/templates/ckeditor/_source/plugins/toolbar/plugin.js +479 -0
  321. data/lib/generators/templates/ckeditor/_source/plugins/uicolor/dialogs/uicolor.js +204 -0
  322. data/lib/generators/templates/ckeditor/_source/plugins/uicolor/lang/en.js +15 -0
  323. data/lib/generators/templates/ckeditor/_source/plugins/uicolor/plugin.js +37 -0
  324. data/lib/generators/templates/ckeditor/_source/plugins/uicolor/uicolor.gif +0 -0
  325. data/lib/generators/templates/ckeditor/_source/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  326. data/lib/generators/templates/ckeditor/_source/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  327. data/lib/generators/templates/ckeditor/_source/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  328. data/lib/generators/templates/ckeditor/_source/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  329. data/lib/generators/templates/ckeditor/_source/plugins/uicolor/yui/assets/yui.css +15 -0
  330. data/lib/generators/templates/ckeditor/_source/plugins/uicolor/yui/yui.js +71 -0
  331. data/lib/generators/templates/ckeditor/_source/plugins/undo/plugin.js +519 -0
  332. data/lib/generators/templates/ckeditor/_source/plugins/wsc/dialogs/ciframe.html +49 -0
  333. data/lib/generators/templates/ckeditor/_source/plugins/wsc/dialogs/tmpFrameset.html +52 -0
  334. data/lib/generators/templates/ckeditor/_source/plugins/wsc/dialogs/wsc.css +83 -0
  335. data/lib/generators/templates/ckeditor/_source/plugins/wsc/dialogs/wsc.js +176 -0
  336. data/lib/generators/templates/ckeditor/_source/plugins/wsc/plugin.js +33 -0
  337. data/lib/generators/templates/ckeditor/_source/plugins/wysiwygarea/plugin.js +882 -0
  338. data/lib/generators/templates/ckeditor/_source/skins/kama/dialog.css +835 -0
  339. data/lib/generators/templates/ckeditor/_source/skins/kama/editor.css +25 -0
  340. data/lib/generators/templates/ckeditor/_source/skins/kama/elementspath.css +72 -0
  341. data/lib/generators/templates/ckeditor/_source/skins/kama/icons.css +326 -0
  342. data/lib/generators/templates/ckeditor/_source/skins/kama/icons.png +0 -0
  343. data/lib/generators/templates/ckeditor/_source/skins/kama/images/dialog_sides.gif +0 -0
  344. data/lib/generators/templates/ckeditor/_source/skins/kama/images/dialog_sides.png +0 -0
  345. data/lib/generators/templates/ckeditor/_source/skins/kama/images/dialog_sides_rtl.png +0 -0
  346. data/lib/generators/templates/ckeditor/_source/skins/kama/images/mini.gif +0 -0
  347. data/lib/generators/templates/ckeditor/_source/skins/kama/images/noimage.png +0 -0
  348. data/lib/generators/templates/ckeditor/_source/skins/kama/images/sprites.png +0 -0
  349. data/lib/generators/templates/ckeditor/_source/skins/kama/images/sprites_ie6.png +0 -0
  350. data/lib/generators/templates/ckeditor/_source/skins/kama/images/toolbar_start.gif +0 -0
  351. data/lib/generators/templates/ckeditor/_source/skins/kama/mainui.css +183 -0
  352. data/lib/generators/templates/ckeditor/_source/skins/kama/menu.css +197 -0
  353. data/lib/generators/templates/ckeditor/_source/skins/kama/panel.css +216 -0
  354. data/lib/generators/templates/ckeditor/_source/skins/kama/presets.css +49 -0
  355. data/lib/generators/templates/ckeditor/_source/skins/kama/reset.css +78 -0
  356. data/lib/generators/templates/ckeditor/_source/skins/kama/richcombo.css +270 -0
  357. data/lib/generators/templates/ckeditor/_source/skins/kama/skin.js +268 -0
  358. data/lib/generators/templates/ckeditor/_source/skins/kama/templates.css +84 -0
  359. data/lib/generators/templates/ckeditor/_source/skins/kama/toolbar.css +409 -0
  360. data/lib/generators/templates/ckeditor/_source/skins/office2003/dialog.css +738 -0
  361. data/lib/generators/templates/ckeditor/_source/skins/office2003/editor.css +25 -0
  362. data/lib/generators/templates/ckeditor/_source/skins/office2003/elementspath.css +73 -0
  363. data/lib/generators/templates/ckeditor/_source/skins/office2003/icons.css +324 -0
  364. data/lib/generators/templates/ckeditor/_source/skins/office2003/icons.png +0 -0
  365. data/lib/generators/templates/ckeditor/_source/skins/office2003/images/dialog_sides.gif +0 -0
  366. data/lib/generators/templates/ckeditor/_source/skins/office2003/images/dialog_sides.png +0 -0
  367. data/lib/generators/templates/ckeditor/_source/skins/office2003/images/dialog_sides_rtl.png +0 -0
  368. data/lib/generators/templates/ckeditor/_source/skins/office2003/images/mini.gif +0 -0
  369. data/lib/generators/templates/ckeditor/_source/skins/office2003/images/noimage.png +0 -0
  370. data/lib/generators/templates/ckeditor/_source/skins/office2003/images/sprites.png +0 -0
  371. data/lib/generators/templates/ckeditor/_source/skins/office2003/images/sprites_ie6.png +0 -0
  372. data/lib/generators/templates/ckeditor/_source/skins/office2003/mainui.css +133 -0
  373. data/lib/generators/templates/ckeditor/_source/skins/office2003/menu.css +194 -0
  374. data/lib/generators/templates/ckeditor/_source/skins/office2003/panel.css +211 -0
  375. data/lib/generators/templates/ckeditor/_source/skins/office2003/presets.css +49 -0
  376. data/lib/generators/templates/ckeditor/_source/skins/office2003/reset.css +78 -0
  377. data/lib/generators/templates/ckeditor/_source/skins/office2003/richcombo.css +289 -0
  378. data/lib/generators/templates/ckeditor/_source/skins/office2003/skin.js +81 -0
  379. data/lib/generators/templates/ckeditor/_source/skins/office2003/templates.css +81 -0
  380. data/lib/generators/templates/ckeditor/_source/skins/office2003/toolbar.css +463 -0
  381. data/lib/generators/templates/ckeditor/_source/skins/v2/dialog.css +753 -0
  382. data/lib/generators/templates/ckeditor/_source/skins/v2/editor.css +25 -0
  383. data/lib/generators/templates/ckeditor/_source/skins/v2/elementspath.css +73 -0
  384. data/lib/generators/templates/ckeditor/_source/skins/v2/icons.css +324 -0
  385. data/lib/generators/templates/ckeditor/_source/skins/v2/icons.png +0 -0
  386. data/lib/generators/templates/ckeditor/_source/skins/v2/images/dialog_sides.gif +0 -0
  387. data/lib/generators/templates/ckeditor/_source/skins/v2/images/dialog_sides.png +0 -0
  388. data/lib/generators/templates/ckeditor/_source/skins/v2/images/dialog_sides_rtl.png +0 -0
  389. data/lib/generators/templates/ckeditor/_source/skins/v2/images/mini.gif +0 -0
  390. data/lib/generators/templates/ckeditor/_source/skins/v2/images/noimage.png +0 -0
  391. data/lib/generators/templates/ckeditor/_source/skins/v2/images/sprites.png +0 -0
  392. data/lib/generators/templates/ckeditor/_source/skins/v2/images/sprites_ie6.png +0 -0
  393. data/lib/generators/templates/ckeditor/_source/skins/v2/images/toolbar_start.gif +0 -0
  394. data/lib/generators/templates/ckeditor/_source/skins/v2/mainui.css +142 -0
  395. data/lib/generators/templates/ckeditor/_source/skins/v2/menu.css +196 -0
  396. data/lib/generators/templates/ckeditor/_source/skins/v2/panel.css +211 -0
  397. data/lib/generators/templates/ckeditor/_source/skins/v2/presets.css +50 -0
  398. data/lib/generators/templates/ckeditor/_source/skins/v2/reset.css +78 -0
  399. data/lib/generators/templates/ckeditor/_source/skins/v2/richcombo.css +289 -0
  400. data/lib/generators/templates/ckeditor/_source/skins/v2/skin.js +77 -0
  401. data/lib/generators/templates/ckeditor/_source/skins/v2/templates.css +81 -0
  402. data/lib/generators/templates/ckeditor/_source/skins/v2/toolbar.css +415 -0
  403. data/lib/generators/templates/ckeditor/_source/themes/default/theme.js +335 -0
  404. data/lib/generators/templates/ckeditor/adapters/jquery.js +6 -0
  405. data/lib/generators/templates/ckeditor/ckeditor.js +124 -0
  406. data/lib/generators/templates/ckeditor/ckeditor.pack +205 -0
  407. data/lib/generators/templates/ckeditor/ckeditor_basic.js +8 -0
  408. data/lib/generators/templates/ckeditor/ckeditor_basic_source.js +20 -0
  409. data/lib/generators/templates/ckeditor/ckeditor_source.js +25 -0
  410. data/lib/generators/templates/ckeditor/config.js +42 -0
  411. data/lib/generators/templates/ckeditor/contents.css +35 -0
  412. data/lib/generators/templates/ckeditor/css/ckfinder.css +299 -0
  413. data/lib/generators/templates/ckeditor/css/fck_dialog.css +119 -0
  414. data/lib/generators/templates/ckeditor/css/fck_editor.css +448 -0
  415. data/lib/generators/templates/ckeditor/css/swfupload.css +94 -0
  416. data/lib/generators/templates/ckeditor/images/add.gif +0 -0
  417. data/lib/generators/templates/ckeditor/images/cancelbutton.gif +0 -0
  418. data/lib/generators/templates/ckeditor/images/ckfnothumb.gif +0 -0
  419. data/lib/generators/templates/ckeditor/images/doc.gif +0 -0
  420. data/lib/generators/templates/ckeditor/images/mp3.gif +0 -0
  421. data/lib/generators/templates/ckeditor/images/pdf.gif +0 -0
  422. data/lib/generators/templates/ckeditor/images/rar.gif +0 -0
  423. data/lib/generators/templates/ckeditor/images/refresh.gif +0 -0
  424. data/lib/generators/templates/ckeditor/images/select_files.png +0 -0
  425. data/lib/generators/templates/ckeditor/images/spacer.gif +0 -0
  426. data/lib/generators/templates/ckeditor/images/swf.gif +0 -0
  427. data/lib/generators/templates/ckeditor/images/toolbar.start.gif +0 -0
  428. data/lib/generators/templates/ckeditor/images/xls.gif +0 -0
  429. data/lib/generators/templates/ckeditor/lang/_languages.js +6 -0
  430. data/lib/generators/templates/ckeditor/lang/_translationstatus.txt +60 -0
  431. data/lib/generators/templates/ckeditor/lang/af.js +6 -0
  432. data/lib/generators/templates/ckeditor/lang/ar.js +6 -0
  433. data/lib/generators/templates/ckeditor/lang/bg.js +6 -0
  434. data/lib/generators/templates/ckeditor/lang/bn.js +6 -0
  435. data/lib/generators/templates/ckeditor/lang/bs.js +6 -0
  436. data/lib/generators/templates/ckeditor/lang/ca.js +6 -0
  437. data/lib/generators/templates/ckeditor/lang/cs.js +6 -0
  438. data/lib/generators/templates/ckeditor/lang/cy.js +6 -0
  439. data/lib/generators/templates/ckeditor/lang/da.js +6 -0
  440. data/lib/generators/templates/ckeditor/lang/de.js +6 -0
  441. data/lib/generators/templates/ckeditor/lang/el.js +6 -0
  442. data/lib/generators/templates/ckeditor/lang/en-au.js +6 -0
  443. data/lib/generators/templates/ckeditor/lang/en-ca.js +6 -0
  444. data/lib/generators/templates/ckeditor/lang/en-gb.js +6 -0
  445. data/lib/generators/templates/ckeditor/lang/en.js +6 -0
  446. data/lib/generators/templates/ckeditor/lang/eo.js +6 -0
  447. data/lib/generators/templates/ckeditor/lang/es.js +6 -0
  448. data/lib/generators/templates/ckeditor/lang/et.js +6 -0
  449. data/lib/generators/templates/ckeditor/lang/eu.js +6 -0
  450. data/lib/generators/templates/ckeditor/lang/fa.js +6 -0
  451. data/lib/generators/templates/ckeditor/lang/fi.js +6 -0
  452. data/lib/generators/templates/ckeditor/lang/fo.js +6 -0
  453. data/lib/generators/templates/ckeditor/lang/fr-ca.js +6 -0
  454. data/lib/generators/templates/ckeditor/lang/fr.js +6 -0
  455. data/lib/generators/templates/ckeditor/lang/gl.js +6 -0
  456. data/lib/generators/templates/ckeditor/lang/gu.js +6 -0
  457. data/lib/generators/templates/ckeditor/lang/he.js +6 -0
  458. data/lib/generators/templates/ckeditor/lang/hi.js +6 -0
  459. data/lib/generators/templates/ckeditor/lang/hr.js +6 -0
  460. data/lib/generators/templates/ckeditor/lang/hu.js +6 -0
  461. data/lib/generators/templates/ckeditor/lang/is.js +6 -0
  462. data/lib/generators/templates/ckeditor/lang/it.js +6 -0
  463. data/lib/generators/templates/ckeditor/lang/ja.js +6 -0
  464. data/lib/generators/templates/ckeditor/lang/km.js +6 -0
  465. data/lib/generators/templates/ckeditor/lang/ko.js +6 -0
  466. data/lib/generators/templates/ckeditor/lang/lt.js +6 -0
  467. data/lib/generators/templates/ckeditor/lang/lv.js +6 -0
  468. data/lib/generators/templates/ckeditor/lang/mn.js +6 -0
  469. data/lib/generators/templates/ckeditor/lang/ms.js +6 -0
  470. data/lib/generators/templates/ckeditor/lang/nb.js +6 -0
  471. data/lib/generators/templates/ckeditor/lang/nl.js +6 -0
  472. data/lib/generators/templates/ckeditor/lang/no.js +6 -0
  473. data/lib/generators/templates/ckeditor/lang/pl.js +6 -0
  474. data/lib/generators/templates/ckeditor/lang/pt-br.js +6 -0
  475. data/lib/generators/templates/ckeditor/lang/pt.js +6 -0
  476. data/lib/generators/templates/ckeditor/lang/ro.js +6 -0
  477. data/lib/generators/templates/ckeditor/lang/ru.js +6 -0
  478. data/lib/generators/templates/ckeditor/lang/sk.js +6 -0
  479. data/lib/generators/templates/ckeditor/lang/sl.js +6 -0
  480. data/lib/generators/templates/ckeditor/lang/sr-latn.js +6 -0
  481. data/lib/generators/templates/ckeditor/lang/sr.js +6 -0
  482. data/lib/generators/templates/ckeditor/lang/sv.js +6 -0
  483. data/lib/generators/templates/ckeditor/lang/th.js +6 -0
  484. data/lib/generators/templates/ckeditor/lang/tr.js +6 -0
  485. data/lib/generators/templates/ckeditor/lang/uk.js +6 -0
  486. data/lib/generators/templates/ckeditor/lang/vi.js +6 -0
  487. data/lib/generators/templates/ckeditor/lang/zh-cn.js +6 -0
  488. data/lib/generators/templates/ckeditor/lang/zh.js +6 -0
  489. data/lib/generators/templates/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +7 -0
  490. data/lib/generators/templates/ckeditor/plugins/a11yhelp/lang/en.js +6 -0
  491. data/lib/generators/templates/ckeditor/plugins/about/dialogs/about.js +6 -0
  492. data/lib/generators/templates/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  493. data/lib/generators/templates/ckeditor/plugins/attachment/dialogs/attachment.js +1 -0
  494. data/lib/generators/templates/ckeditor/plugins/attachment/images/attachment.png +0 -0
  495. data/lib/generators/templates/ckeditor/plugins/attachment/lang/en.js +1 -0
  496. data/lib/generators/templates/ckeditor/plugins/attachment/lang/ru.js +1 -0
  497. data/lib/generators/templates/ckeditor/plugins/attachment/lang/uk.js +1 -0
  498. data/lib/generators/templates/ckeditor/plugins/attachment/plugin.js +1 -0
  499. data/lib/generators/templates/ckeditor/plugins/clipboard/dialogs/paste.js +7 -0
  500. data/lib/generators/templates/ckeditor/plugins/colordialog/dialogs/colordialog.js +6 -0
  501. data/lib/generators/templates/ckeditor/plugins/dialog/dialogDefinition.js +4 -0
  502. data/lib/generators/templates/ckeditor/plugins/div/dialogs/div.js +7 -0
  503. data/lib/generators/templates/ckeditor/plugins/embed/dialogs/embed.js +1 -0
  504. data/lib/generators/templates/ckeditor/plugins/embed/images/embed.png +0 -0
  505. data/lib/generators/templates/ckeditor/plugins/embed/lang/en.js +1 -0
  506. data/lib/generators/templates/ckeditor/plugins/embed/lang/ru.js +1 -0
  507. data/lib/generators/templates/ckeditor/plugins/embed/lang/uk.js +1 -0
  508. data/lib/generators/templates/ckeditor/plugins/embed/plugin.js +1 -0
  509. data/lib/generators/templates/ckeditor/plugins/find/dialogs/find.js +9 -0
  510. data/lib/generators/templates/ckeditor/plugins/flash/dialogs/flash.js +9 -0
  511. data/lib/generators/templates/ckeditor/plugins/flash/images/placeholder.png +0 -0
  512. data/lib/generators/templates/ckeditor/plugins/forms/dialogs/button.js +6 -0
  513. data/lib/generators/templates/ckeditor/plugins/forms/dialogs/checkbox.js +6 -0
  514. data/lib/generators/templates/ckeditor/plugins/forms/dialogs/form.js +6 -0
  515. data/lib/generators/templates/ckeditor/plugins/forms/dialogs/hiddenfield.js +6 -0
  516. data/lib/generators/templates/ckeditor/plugins/forms/dialogs/radio.js +6 -0
  517. data/lib/generators/templates/ckeditor/plugins/forms/dialogs/select.js +9 -0
  518. data/lib/generators/templates/ckeditor/plugins/forms/dialogs/textarea.js +6 -0
  519. data/lib/generators/templates/ckeditor/plugins/forms/dialogs/textfield.js +6 -0
  520. data/lib/generators/templates/ckeditor/plugins/iframedialog/plugin.js +6 -0
  521. data/lib/generators/templates/ckeditor/plugins/image/dialogs/image.js +13 -0
  522. data/lib/generators/templates/ckeditor/plugins/link/dialogs/anchor.js +6 -0
  523. data/lib/generators/templates/ckeditor/plugins/link/dialogs/link.js +11 -0
  524. data/lib/generators/templates/ckeditor/plugins/link/images/anchor.gif +0 -0
  525. data/lib/generators/templates/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
  526. data/lib/generators/templates/ckeditor/plugins/pastefromword/filter/default.js +10 -0
  527. data/lib/generators/templates/ckeditor/plugins/pastetext/dialogs/pastetext.js +6 -0
  528. data/lib/generators/templates/ckeditor/plugins/scayt/dialogs/options.js +8 -0
  529. data/lib/generators/templates/ckeditor/plugins/scayt/dialogs/toolbar.css +6 -0
  530. data/lib/generators/templates/ckeditor/plugins/showblocks/images/block_address.png +0 -0
  531. data/lib/generators/templates/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
  532. data/lib/generators/templates/ckeditor/plugins/showblocks/images/block_div.png +0 -0
  533. data/lib/generators/templates/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
  534. data/lib/generators/templates/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
  535. data/lib/generators/templates/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
  536. data/lib/generators/templates/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
  537. data/lib/generators/templates/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
  538. data/lib/generators/templates/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
  539. data/lib/generators/templates/ckeditor/plugins/showblocks/images/block_p.png +0 -0
  540. data/lib/generators/templates/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
  541. data/lib/generators/templates/ckeditor/plugins/smiley/dialogs/smiley.js +7 -0
  542. data/lib/generators/templates/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
  543. data/lib/generators/templates/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
  544. data/lib/generators/templates/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
  545. data/lib/generators/templates/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
  546. data/lib/generators/templates/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
  547. data/lib/generators/templates/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
  548. data/lib/generators/templates/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
  549. data/lib/generators/templates/ckeditor/plugins/smiley/images/envelope.gif +0 -0
  550. data/lib/generators/templates/ckeditor/plugins/smiley/images/heart.gif +0 -0
  551. data/lib/generators/templates/ckeditor/plugins/smiley/images/kiss.gif +0 -0
  552. data/lib/generators/templates/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
  553. data/lib/generators/templates/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
  554. data/lib/generators/templates/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
  555. data/lib/generators/templates/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
  556. data/lib/generators/templates/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
  557. data/lib/generators/templates/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
  558. data/lib/generators/templates/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
  559. data/lib/generators/templates/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
  560. data/lib/generators/templates/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
  561. data/lib/generators/templates/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  562. data/lib/generators/templates/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
  563. data/lib/generators/templates/ckeditor/plugins/specialchar/dialogs/specialchar.js +7 -0
  564. data/lib/generators/templates/ckeditor/plugins/styles/styles/default.js +6 -0
  565. data/lib/generators/templates/ckeditor/plugins/table/dialogs/table.js +9 -0
  566. data/lib/generators/templates/ckeditor/plugins/tabletools/dialogs/tableCell.js +8 -0
  567. data/lib/generators/templates/ckeditor/plugins/templates/dialogs/templates.js +7 -0
  568. data/lib/generators/templates/ckeditor/plugins/templates/templates/default.js +6 -0
  569. data/lib/generators/templates/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
  570. data/lib/generators/templates/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
  571. data/lib/generators/templates/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
  572. data/lib/generators/templates/ckeditor/plugins/uicolor/dialogs/uicolor.js +7 -0
  573. data/lib/generators/templates/ckeditor/plugins/uicolor/lang/en.js +6 -0
  574. data/lib/generators/templates/ckeditor/plugins/uicolor/plugin.js +6 -0
  575. data/lib/generators/templates/ckeditor/plugins/uicolor/uicolor.gif +0 -0
  576. data/lib/generators/templates/ckeditor/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  577. data/lib/generators/templates/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  578. data/lib/generators/templates/ckeditor/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  579. data/lib/generators/templates/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  580. data/lib/generators/templates/ckeditor/plugins/uicolor/yui/assets/yui.css +6 -0
  581. data/lib/generators/templates/ckeditor/plugins/uicolor/yui/yui.js +76 -0
  582. data/lib/generators/templates/ckeditor/plugins/wsc/dialogs/ciframe.html +49 -0
  583. data/lib/generators/templates/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +52 -0
  584. data/lib/generators/templates/ckeditor/plugins/wsc/dialogs/wsc.css +6 -0
  585. data/lib/generators/templates/ckeditor/plugins/wsc/dialogs/wsc.js +7 -0
  586. data/lib/generators/templates/ckeditor/skins/kama/dialog.css +9 -0
  587. data/lib/generators/templates/ckeditor/skins/kama/editor.css +12 -0
  588. data/lib/generators/templates/ckeditor/skins/kama/icons.png +0 -0
  589. data/lib/generators/templates/ckeditor/skins/kama/images/dialog_sides.gif +0 -0
  590. data/lib/generators/templates/ckeditor/skins/kama/images/dialog_sides.png +0 -0
  591. data/lib/generators/templates/ckeditor/skins/kama/images/dialog_sides_rtl.png +0 -0
  592. data/lib/generators/templates/ckeditor/skins/kama/images/mini.gif +0 -0
  593. data/lib/generators/templates/ckeditor/skins/kama/images/noimage.png +0 -0
  594. data/lib/generators/templates/ckeditor/skins/kama/images/sprites.png +0 -0
  595. data/lib/generators/templates/ckeditor/skins/kama/images/sprites_ie6.png +0 -0
  596. data/lib/generators/templates/ckeditor/skins/kama/images/toolbar_start.gif +0 -0
  597. data/lib/generators/templates/ckeditor/skins/kama/skin.js +7 -0
  598. data/lib/generators/templates/ckeditor/skins/kama/templates.css +6 -0
  599. data/lib/generators/templates/ckeditor/skins/office2003/dialog.css +9 -0
  600. data/lib/generators/templates/ckeditor/skins/office2003/editor.css +13 -0
  601. data/lib/generators/templates/ckeditor/skins/office2003/icons.png +0 -0
  602. data/lib/generators/templates/ckeditor/skins/office2003/images/dialog_sides.gif +0 -0
  603. data/lib/generators/templates/ckeditor/skins/office2003/images/dialog_sides.png +0 -0
  604. data/lib/generators/templates/ckeditor/skins/office2003/images/dialog_sides_rtl.png +0 -0
  605. data/lib/generators/templates/ckeditor/skins/office2003/images/mini.gif +0 -0
  606. data/lib/generators/templates/ckeditor/skins/office2003/images/noimage.png +0 -0
  607. data/lib/generators/templates/ckeditor/skins/office2003/images/sprites.png +0 -0
  608. data/lib/generators/templates/ckeditor/skins/office2003/images/sprites_ie6.png +0 -0
  609. data/lib/generators/templates/ckeditor/skins/office2003/skin.js +6 -0
  610. data/lib/generators/templates/ckeditor/skins/office2003/templates.css +6 -0
  611. data/lib/generators/templates/ckeditor/skins/v2/dialog.css +8 -0
  612. data/lib/generators/templates/ckeditor/skins/v2/editor.css +12 -0
  613. data/lib/generators/templates/ckeditor/skins/v2/icons.png +0 -0
  614. data/lib/generators/templates/ckeditor/skins/v2/images/dialog_sides.gif +0 -0
  615. data/lib/generators/templates/ckeditor/skins/v2/images/dialog_sides.png +0 -0
  616. data/lib/generators/templates/ckeditor/skins/v2/images/dialog_sides_rtl.png +0 -0
  617. data/lib/generators/templates/ckeditor/skins/v2/images/mini.gif +0 -0
  618. data/lib/generators/templates/ckeditor/skins/v2/images/noimage.png +0 -0
  619. data/lib/generators/templates/ckeditor/skins/v2/images/sprites.png +0 -0
  620. data/lib/generators/templates/ckeditor/skins/v2/images/sprites_ie6.png +0 -0
  621. data/lib/generators/templates/ckeditor/skins/v2/images/toolbar_start.gif +0 -0
  622. data/lib/generators/templates/ckeditor/skins/v2/skin.js +6 -0
  623. data/lib/generators/templates/ckeditor/skins/v2/templates.css +6 -0
  624. data/lib/generators/templates/ckeditor/swfupload/fileprogress.js +290 -0
  625. data/lib/generators/templates/ckeditor/swfupload/handlers.js +170 -0
  626. data/lib/generators/templates/ckeditor/swfupload/mootools-1.2.3-core-yc.js +356 -0
  627. data/lib/generators/templates/ckeditor/swfupload/querystring.js +40 -0
  628. data/lib/generators/templates/ckeditor/swfupload/swfupload.js +980 -0
  629. data/lib/generators/templates/ckeditor/swfupload/swfupload.queue.js +98 -0
  630. data/lib/generators/templates/ckeditor/swfupload/swfupload.swf +0 -0
  631. data/lib/generators/templates/ckeditor/swfupload/swfupload.swfobject.js +111 -0
  632. data/lib/generators/templates/ckeditor/themes/default/theme.js +8 -0
  633. data/lib/tasks/ckeditor_tasks.rake +3 -0
  634. metadata +694 -0
@@ -0,0 +1,1068 @@
1
+ /*
2
+ Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
3
+ For licensing, see LICENSE.html or http://ckeditor.com/license
4
+ */
5
+
6
+ (function()
7
+ {
8
+ function removeRawAttribute( $node, attr )
9
+ {
10
+ if ( CKEDITOR.env.ie )
11
+ $node.removeAttribute( attr );
12
+ else
13
+ delete $node[ attr ];
14
+ }
15
+
16
+ var cellNodeRegex = /^(?:td|th)$/;
17
+
18
+ function getSelectedCells( selection )
19
+ {
20
+ // Walker will try to split text nodes, which will make the current selection
21
+ // invalid. So save bookmarks before doing anything.
22
+ var bookmarks = selection.createBookmarks();
23
+
24
+ var ranges = selection.getRanges();
25
+ var retval = [];
26
+ var database = {};
27
+
28
+ function moveOutOfCellGuard( node )
29
+ {
30
+ // Apply to the first cell only.
31
+ if ( retval.length > 0 )
32
+ return;
33
+
34
+ // If we are exiting from the first </td>, then the td should definitely be
35
+ // included.
36
+ if ( node.type == CKEDITOR.NODE_ELEMENT && cellNodeRegex.test( node.getName() )
37
+ && !node.getCustomData( 'selected_cell' ) )
38
+ {
39
+ CKEDITOR.dom.element.setMarker( database, node, 'selected_cell', true );
40
+ retval.push( node );
41
+ }
42
+ }
43
+
44
+ for ( var i = 0 ; i < ranges.length ; i++ )
45
+ {
46
+ var range = ranges[ i ];
47
+
48
+ if ( range.collapsed )
49
+ {
50
+ // Walker does not handle collapsed ranges yet - fall back to old API.
51
+ var startNode = range.getCommonAncestor();
52
+ var nearestCell = startNode.getAscendant( 'td', true ) || startNode.getAscendant( 'th', true );
53
+ if ( nearestCell )
54
+ retval.push( nearestCell );
55
+ }
56
+ else
57
+ {
58
+ var walker = new CKEDITOR.dom.walker( range );
59
+ var node;
60
+ walker.guard = moveOutOfCellGuard;
61
+
62
+ while ( ( node = walker.next() ) )
63
+ {
64
+ // If may be possible for us to have a range like this:
65
+ // <td>^1</td><td>^2</td>
66
+ // The 2nd td shouldn't be included.
67
+ //
68
+ // So we have to take care to include a td we've entered only when we've
69
+ // walked into its children.
70
+
71
+ var parent = node.getParent();
72
+ if ( parent && cellNodeRegex.test( parent.getName() ) && !parent.getCustomData( 'selected_cell' ) )
73
+ {
74
+ CKEDITOR.dom.element.setMarker( database, parent, 'selected_cell', true );
75
+ retval.push( parent );
76
+ }
77
+ }
78
+ }
79
+ }
80
+
81
+ CKEDITOR.dom.element.clearAllMarkers( database );
82
+
83
+ // Restore selection position.
84
+ selection.selectBookmarks( bookmarks );
85
+
86
+ return retval;
87
+ }
88
+
89
+ function getFocusedCell( cellsToDelete ) {
90
+ var i = 0,
91
+ last = cellsToDelete.length - 1,
92
+ database = {},
93
+ cell,focusedCell,
94
+ tr;
95
+
96
+ while ( ( cell = cellsToDelete[ i++ ] ) )
97
+ CKEDITOR.dom.element.setMarker( database, cell, 'delete_cell', true );
98
+
99
+ // 1.first we check left or right side focusable cell row by row;
100
+ i = 0;
101
+ while ( ( cell = cellsToDelete[ i++ ] ) )
102
+ {
103
+ if ( ( focusedCell = cell.getPrevious() ) && !focusedCell.getCustomData( 'delete_cell' )
104
+ || ( focusedCell = cell.getNext() ) && !focusedCell.getCustomData( 'delete_cell' ) )
105
+ {
106
+ CKEDITOR.dom.element.clearAllMarkers( database );
107
+ return focusedCell;
108
+ }
109
+ }
110
+
111
+ CKEDITOR.dom.element.clearAllMarkers( database );
112
+
113
+ // 2. then we check the toppest row (outside the selection area square) focusable cell
114
+ tr = cellsToDelete[ 0 ].getParent();
115
+ if ( ( tr = tr.getPrevious() ) )
116
+ return tr.getLast();
117
+
118
+ // 3. last we check the lowerest row focusable cell
119
+ tr = cellsToDelete[ last ].getParent();
120
+ if ( ( tr = tr.getNext() ) )
121
+ return tr.getChild( 0 );
122
+
123
+ return null;
124
+ }
125
+
126
+ function clearRow( $tr )
127
+ {
128
+ // Get the array of row's cells.
129
+ var $cells = $tr.cells;
130
+
131
+ // Empty all cells.
132
+ for ( var i = 0 ; i < $cells.length ; i++ )
133
+ {
134
+ $cells[ i ].innerHTML = '';
135
+
136
+ if ( !CKEDITOR.env.ie )
137
+ ( new CKEDITOR.dom.element( $cells[ i ] ) ).appendBogus();
138
+ }
139
+ }
140
+
141
+ function insertRow( selection, insertBefore )
142
+ {
143
+ // Get the row where the selection is placed in.
144
+ var row = selection.getStartElement().getAscendant( 'tr' );
145
+ if ( !row )
146
+ return;
147
+
148
+ // Create a clone of the row.
149
+ var newRow = row.clone( true );
150
+
151
+ // Insert the new row before of it.
152
+ newRow.insertBefore( row );
153
+
154
+ // Clean one of the rows to produce the illusion of inserting an empty row
155
+ // before or after.
156
+ clearRow( insertBefore ? newRow.$ : row.$ );
157
+ }
158
+
159
+ function deleteRows( selectionOrRow )
160
+ {
161
+ if ( selectionOrRow instanceof CKEDITOR.dom.selection )
162
+ {
163
+ var cells = getSelectedCells( selectionOrRow ),
164
+ cellsCount = cells.length,
165
+ rowsToDelete = [],
166
+ cursorPosition,
167
+ previousRowIndex,
168
+ nextRowIndex;
169
+
170
+ // Queue up the rows - it's possible and likely that we have duplicates.
171
+ for ( var i = 0 ; i < cellsCount ; i++ )
172
+ {
173
+ var row = cells[ i ].getParent(),
174
+ rowIndex = row.$.rowIndex;
175
+
176
+ !i && ( previousRowIndex = rowIndex - 1 );
177
+ rowsToDelete[ rowIndex ] = row;
178
+ i == cellsCount - 1 && ( nextRowIndex = rowIndex + 1 );
179
+ }
180
+
181
+ var table = row.getAscendant( 'table' ),
182
+ rows = table.$.rows,
183
+ rowCount = rows.length;
184
+
185
+ // Where to put the cursor after rows been deleted?
186
+ // 1. Into next sibling row if any;
187
+ // 2. Into previous sibling row if any;
188
+ // 3. Into table's parent element if it's the very last row.
189
+ cursorPosition = new CKEDITOR.dom.element(
190
+ nextRowIndex < rowCount && table.$.rows[ nextRowIndex ] ||
191
+ previousRowIndex > 0 && table.$.rows[ previousRowIndex ] ||
192
+ table.$.parentNode );
193
+
194
+ for ( i = rowsToDelete.length ; i >= 0 ; i-- )
195
+ {
196
+ if ( rowsToDelete[ i ] )
197
+ deleteRows( rowsToDelete[ i ] );
198
+ }
199
+
200
+ return cursorPosition;
201
+ }
202
+ else if ( selectionOrRow instanceof CKEDITOR.dom.element )
203
+ {
204
+ table = selectionOrRow.getAscendant( 'table' );
205
+
206
+ if ( table.$.rows.length == 1 )
207
+ table.remove();
208
+ else
209
+ selectionOrRow.remove();
210
+ }
211
+
212
+ return 0;
213
+ }
214
+
215
+ function insertColumn( selection, insertBefore )
216
+ {
217
+ // Get the cell where the selection is placed in.
218
+ var startElement = selection.getStartElement();
219
+ var cell = startElement.getAscendant( 'td', true ) || startElement.getAscendant( 'th', true );
220
+
221
+ if ( !cell )
222
+ return;
223
+
224
+ // Get the cell's table.
225
+ var table = cell.getAscendant( 'table' );
226
+ var cellIndex = cell.$.cellIndex;
227
+
228
+ // Loop through all rows available in the table.
229
+ for ( var i = 0 ; i < table.$.rows.length ; i++ )
230
+ {
231
+ var $row = table.$.rows[ i ];
232
+
233
+ // If the row doesn't have enough cells, ignore it.
234
+ if ( $row.cells.length < ( cellIndex + 1 ) )
235
+ continue;
236
+
237
+ cell = new CKEDITOR.dom.element( $row.cells[ cellIndex ].cloneNode( false ) );
238
+
239
+ if ( !CKEDITOR.env.ie )
240
+ cell.appendBogus();
241
+
242
+ // Get back the currently selected cell.
243
+ var baseCell = new CKEDITOR.dom.element( $row.cells[ cellIndex ] );
244
+ if ( insertBefore )
245
+ cell.insertBefore( baseCell );
246
+ else
247
+ cell.insertAfter( baseCell );
248
+ }
249
+ }
250
+
251
+ function deleteColumns( selectionOrCell )
252
+ {
253
+ if ( selectionOrCell instanceof CKEDITOR.dom.selection )
254
+ {
255
+ var colsToDelete = getSelectedCells( selectionOrCell );
256
+ for ( var i = colsToDelete.length ; i >= 0 ; i-- )
257
+ {
258
+ if ( colsToDelete[ i ] )
259
+ deleteColumns( colsToDelete[ i ] );
260
+ }
261
+ }
262
+ else if ( selectionOrCell instanceof CKEDITOR.dom.element )
263
+ {
264
+ // Get the cell's table.
265
+ var table = selectionOrCell.getAscendant( 'table' );
266
+
267
+ // Get the cell index.
268
+ var cellIndex = selectionOrCell.$.cellIndex;
269
+
270
+ /*
271
+ * Loop through all rows from down to up, coz it's possible that some rows
272
+ * will be deleted.
273
+ */
274
+ for ( i = table.$.rows.length - 1 ; i >= 0 ; i-- )
275
+ {
276
+ // Get the row.
277
+ var row = new CKEDITOR.dom.element( table.$.rows[ i ] );
278
+
279
+ // If the cell to be removed is the first one and the row has just one cell.
280
+ if ( !cellIndex && row.$.cells.length == 1 )
281
+ {
282
+ deleteRows( row );
283
+ continue;
284
+ }
285
+
286
+ // Else, just delete the cell.
287
+ if ( row.$.cells[ cellIndex ] )
288
+ row.$.removeChild( row.$.cells[ cellIndex ] );
289
+ }
290
+ }
291
+ }
292
+
293
+ function insertCell( selection, insertBefore )
294
+ {
295
+ var startElement = selection.getStartElement();
296
+ var cell = startElement.getAscendant( 'td', true ) || startElement.getAscendant( 'th', true );
297
+
298
+ if ( !cell )
299
+ return;
300
+
301
+ // Create the new cell element to be added.
302
+ var newCell = cell.clone();
303
+ if ( !CKEDITOR.env.ie )
304
+ newCell.appendBogus();
305
+
306
+ if ( insertBefore )
307
+ newCell.insertBefore( cell );
308
+ else
309
+ newCell.insertAfter( cell );
310
+ }
311
+
312
+ function deleteCells( selectionOrCell )
313
+ {
314
+ if ( selectionOrCell instanceof CKEDITOR.dom.selection )
315
+ {
316
+ var cellsToDelete = getSelectedCells( selectionOrCell );
317
+ var table = cellsToDelete[ 0 ] && cellsToDelete[ 0 ].getAscendant( 'table' );
318
+ var cellToFocus = getFocusedCell( cellsToDelete );
319
+
320
+ for ( var i = cellsToDelete.length - 1 ; i >= 0 ; i-- )
321
+ deleteCells( cellsToDelete[ i ] );
322
+
323
+ if ( cellToFocus )
324
+ placeCursorInCell( cellToFocus, true );
325
+ else if ( table )
326
+ table.remove();
327
+ }
328
+ else if ( selectionOrCell instanceof CKEDITOR.dom.element )
329
+ {
330
+ var tr = selectionOrCell.getParent();
331
+ if ( tr.getChildCount() == 1 )
332
+ tr.remove();
333
+ else
334
+ selectionOrCell.remove();
335
+ }
336
+ }
337
+
338
+ // Remove filler at end and empty spaces around the cell content.
339
+ function trimCell( cell )
340
+ {
341
+ var bogus = cell.getBogus();
342
+ bogus && bogus.remove();
343
+ cell.trim();
344
+ }
345
+
346
+ function placeCursorInCell( cell, placeAtEnd )
347
+ {
348
+ var range = new CKEDITOR.dom.range( cell.getDocument() );
349
+ if ( !range[ 'moveToElementEdit' + ( placeAtEnd ? 'End' : 'Start' ) ]( cell ) )
350
+ {
351
+ range.selectNodeContents( cell );
352
+ range.collapse( placeAtEnd ? false : true );
353
+ }
354
+ range.select( true );
355
+ }
356
+
357
+ function buildTableMap( table )
358
+ {
359
+
360
+ var aRows = table.$.rows ;
361
+
362
+ // Row and Column counters.
363
+ var r = -1 ;
364
+
365
+ var aMap = [];
366
+
367
+ for ( var i = 0 ; i < aRows.length ; i++ )
368
+ {
369
+ r++ ;
370
+ !aMap[r] && ( aMap[r] = [] );
371
+
372
+ var c = -1 ;
373
+
374
+ for ( var j = 0 ; j < aRows[i].cells.length ; j++ )
375
+ {
376
+ var oCell = aRows[i].cells[j] ;
377
+
378
+ c++ ;
379
+ while ( aMap[r][c] )
380
+ c++ ;
381
+
382
+ var iColSpan = isNaN( oCell.colSpan ) ? 1 : oCell.colSpan ;
383
+ var iRowSpan = isNaN( oCell.rowSpan ) ? 1 : oCell.rowSpan ;
384
+
385
+ for ( var rs = 0 ; rs < iRowSpan ; rs++ )
386
+ {
387
+ if ( !aMap[r + rs] )
388
+ aMap[r + rs] = new Array() ;
389
+
390
+ for ( var cs = 0 ; cs < iColSpan ; cs++ )
391
+ {
392
+ aMap[r + rs][c + cs] = aRows[i].cells[j] ;
393
+ }
394
+ }
395
+
396
+ c += iColSpan - 1 ;
397
+ }
398
+ }
399
+ return aMap ;
400
+ }
401
+
402
+ function cellInRow( tableMap, rowIndex, cell )
403
+ {
404
+ var oRow = tableMap[ rowIndex ];
405
+ if ( typeof cell == 'undefined' )
406
+ return oRow;
407
+
408
+ for ( var c = 0 ; oRow && c < oRow.length ; c++ )
409
+ {
410
+ if ( cell.is && oRow[c] == cell.$ )
411
+ return c;
412
+ else if ( c == cell )
413
+ return new CKEDITOR.dom.element( oRow[ c ] );
414
+ }
415
+ return cell.is ? -1 : null;
416
+ }
417
+
418
+ function cellInCol( tableMap, colIndex, cell )
419
+ {
420
+ var oCol = [];
421
+ for ( var r = 0; r < tableMap.length; r++ )
422
+ {
423
+ var row = tableMap[ r ];
424
+ if ( typeof cell == 'undefined' )
425
+ oCol.push( row[ colIndex ] );
426
+ else if ( cell.is && row[ colIndex ] == cell.$ )
427
+ return r;
428
+ else if ( r == cell )
429
+ return new CKEDITOR.dom.element( row[ colIndex ] );
430
+ }
431
+
432
+ return ( typeof cell == 'undefined' )? oCol : cell.is ? -1 : null;
433
+ }
434
+
435
+ function mergeCells( selection, mergeDirection, isDetect )
436
+ {
437
+ var cells = getSelectedCells( selection );
438
+
439
+ // Invalid merge request if:
440
+ // 1. In batch mode despite that less than two selected.
441
+ // 2. In solo mode while not exactly only one selected.
442
+ // 3. Cells distributed in different table groups (e.g. from both thead and tbody).
443
+ var commonAncestor;
444
+ if ( ( mergeDirection ? cells.length != 1 : cells.length < 2 )
445
+ || ( commonAncestor = selection.getCommonAncestor() )
446
+ && commonAncestor.type == CKEDITOR.NODE_ELEMENT
447
+ && commonAncestor.is( 'table' ) )
448
+ {
449
+ return false;
450
+ }
451
+
452
+ var cell,
453
+ firstCell = cells[ 0 ],
454
+ table = firstCell.getAscendant( 'table' ),
455
+ map = buildTableMap( table ),
456
+ mapHeight = map.length,
457
+ mapWidth = map[ 0 ].length,
458
+ startRow = firstCell.getParent().$.rowIndex,
459
+ startColumn = cellInRow( map, startRow, firstCell );
460
+
461
+ if ( mergeDirection )
462
+ {
463
+ var targetCell;
464
+ try
465
+ {
466
+ targetCell =
467
+ map[ mergeDirection == 'up' ?
468
+ ( startRow - 1 ):
469
+ mergeDirection == 'down' ? ( startRow + 1 ) : startRow ] [
470
+ mergeDirection == 'left' ?
471
+ ( startColumn - 1 ):
472
+ mergeDirection == 'right' ? ( startColumn + 1 ) : startColumn ];
473
+
474
+ }
475
+ catch( er )
476
+ {
477
+ return false;
478
+ }
479
+
480
+ // 1. No cell could be merged.
481
+ // 2. Same cell actually.
482
+ if ( !targetCell || firstCell.$ == targetCell )
483
+ return false;
484
+
485
+ // Sort in map order regardless of the DOM sequence.
486
+ cells[ ( mergeDirection == 'up' || mergeDirection == 'left' ) ?
487
+ 'unshift' : 'push' ]( new CKEDITOR.dom.element( targetCell ) );
488
+ }
489
+
490
+ // Start from here are merging way ignorance (merge up/right, batch merge).
491
+ var doc = firstCell.getDocument(),
492
+ lastRowIndex = startRow,
493
+ totalRowSpan = 0,
494
+ totalColSpan = 0,
495
+ // Use a documentFragment as buffer when appending cell contents.
496
+ frag = !isDetect && new CKEDITOR.dom.documentFragment( doc ),
497
+ dimension = 0;
498
+
499
+ for ( var i = 0; i < cells.length; i++ )
500
+ {
501
+ cell = cells[ i ];
502
+
503
+ var tr = cell.getParent(),
504
+ cellFirstChild = cell.getFirst(),
505
+ colSpan = cell.$.colSpan,
506
+ rowSpan = cell.$.rowSpan,
507
+ rowIndex = tr.$.rowIndex,
508
+ colIndex = cellInRow( map, rowIndex, cell );
509
+
510
+ // Accumulated the actual places taken by all selected cells.
511
+ dimension += colSpan * rowSpan;
512
+ // Accumulated the maximum virtual spans from column and row.
513
+ totalColSpan = Math.max( totalColSpan, colIndex - startColumn + colSpan ) ;
514
+ totalRowSpan = Math.max( totalRowSpan, rowIndex - startRow + rowSpan );
515
+
516
+ if ( !isDetect )
517
+ {
518
+ // Trim all cell fillers and check to remove empty cells.
519
+ if ( trimCell( cell ), cell.getChildren().count() )
520
+ {
521
+ // Merge vertically cells as two separated paragraphs.
522
+ if ( rowIndex != lastRowIndex
523
+ && cellFirstChild
524
+ && !( cellFirstChild.isBlockBoundary
525
+ && cellFirstChild.isBlockBoundary( { br : 1 } ) ) )
526
+ {
527
+ var last = frag.getLast( CKEDITOR.dom.walker.whitespaces( true ) );
528
+ if ( last && !( last.is && last.is( 'br' ) ) )
529
+ frag.append( new CKEDITOR.dom.element( 'br' ) );
530
+ }
531
+
532
+ cell.moveChildren( frag );
533
+ }
534
+ i ? cell.remove() : cell.setHtml( '' );
535
+ }
536
+ lastRowIndex = rowIndex;
537
+ }
538
+
539
+ if ( !isDetect )
540
+ {
541
+ frag.moveChildren( firstCell );
542
+
543
+ if ( !CKEDITOR.env.ie )
544
+ firstCell.appendBogus();
545
+
546
+ if ( totalColSpan >= mapWidth )
547
+ firstCell.removeAttribute( 'rowSpan' );
548
+ else
549
+ firstCell.$.rowSpan = totalRowSpan;
550
+
551
+ if ( totalRowSpan >= mapHeight )
552
+ firstCell.removeAttribute( 'colSpan' );
553
+ else
554
+ firstCell.$.colSpan = totalColSpan;
555
+
556
+ // Swip empty <tr> left at the end of table due to the merging.
557
+ var trs = new CKEDITOR.dom.nodeList( table.$.rows ),
558
+ count = trs.count();
559
+
560
+ for ( i = count - 1; i >= 0; i-- )
561
+ {
562
+ var tailTr = trs.getItem( i );
563
+ if ( !tailTr.$.cells.length )
564
+ {
565
+ tailTr.remove();
566
+ count++;
567
+ continue;
568
+ }
569
+ }
570
+
571
+ return firstCell;
572
+ }
573
+ // Be able to merge cells only if actual dimension of selected
574
+ // cells equals to the caculated rectangle.
575
+ else
576
+ return ( totalRowSpan * totalColSpan ) == dimension;
577
+ }
578
+
579
+ function verticalSplitCell ( selection, isDetect )
580
+ {
581
+ var cells = getSelectedCells( selection );
582
+ if ( cells.length > 1 )
583
+ return false;
584
+ else if ( isDetect )
585
+ return true;
586
+
587
+ var cell = cells[ 0 ],
588
+ tr = cell.getParent(),
589
+ table = tr.getAscendant( 'table' ),
590
+ map = buildTableMap( table ),
591
+ rowIndex = tr.$.rowIndex,
592
+ colIndex = cellInRow( map, rowIndex, cell ),
593
+ rowSpan = cell.$.rowSpan,
594
+ newCell,
595
+ newRowSpan,
596
+ newCellRowSpan,
597
+ newRowIndex;
598
+
599
+ if ( rowSpan > 1 )
600
+ {
601
+ newRowSpan = Math.ceil( rowSpan / 2 );
602
+ newCellRowSpan = Math.floor( rowSpan / 2 );
603
+ newRowIndex = rowIndex + newRowSpan;
604
+ var newCellTr = new CKEDITOR.dom.element( table.$.rows[ newRowIndex ] ),
605
+ newCellRow = cellInRow( map, newRowIndex ),
606
+ candidateCell;
607
+
608
+ newCell = cell.clone();
609
+
610
+ // Figure out where to insert the new cell by checking the vitual row.
611
+ for ( var c = 0; c < newCellRow.length; c++ )
612
+ {
613
+ candidateCell = newCellRow[ c ];
614
+ // Catch first cell actually following the column.
615
+ if ( candidateCell.parentNode == newCellTr.$
616
+ && c > colIndex )
617
+ {
618
+ newCell.insertBefore( new CKEDITOR.dom.element( candidateCell ) );
619
+ break;
620
+ }
621
+ else
622
+ candidateCell = null;
623
+ }
624
+
625
+ // The destination row is empty, append at will.
626
+ if ( !candidateCell )
627
+ newCellTr.append( newCell, true );
628
+ }
629
+ else
630
+ {
631
+ newCellRowSpan = newRowSpan = 1;
632
+
633
+ newCellTr = tr.clone();
634
+ newCellTr.insertAfter( tr );
635
+ newCellTr.append( newCell = cell.clone() );
636
+
637
+ var cellsInSameRow = cellInRow( map, rowIndex );
638
+ for ( var i = 0; i < cellsInSameRow.length; i++ )
639
+ cellsInSameRow[ i ].rowSpan++;
640
+ }
641
+
642
+ if ( !CKEDITOR.env.ie )
643
+ newCell.appendBogus();
644
+
645
+ cell.$.rowSpan = newRowSpan;
646
+ newCell.$.rowSpan = newCellRowSpan;
647
+ if ( newRowSpan == 1 )
648
+ cell.removeAttribute( 'rowSpan' );
649
+ if ( newCellRowSpan == 1 )
650
+ newCell.removeAttribute( 'rowSpan' );
651
+
652
+ return newCell;
653
+ }
654
+
655
+ function horizontalSplitCell( selection, isDetect )
656
+ {
657
+ var cells = getSelectedCells( selection );
658
+ if ( cells.length > 1 )
659
+ return false;
660
+ else if ( isDetect )
661
+ return true;
662
+
663
+ var cell = cells[ 0 ],
664
+ tr = cell.getParent(),
665
+ table = tr.getAscendant( 'table' ),
666
+ map = buildTableMap( table ),
667
+ rowIndex = tr.$.rowIndex,
668
+ colIndex = cellInRow( map, rowIndex, cell ),
669
+ colSpan = cell.$.colSpan,
670
+ newCell,
671
+ newColSpan,
672
+ newCellColSpan;
673
+
674
+ if ( colSpan > 1 )
675
+ {
676
+ newColSpan = Math.ceil( colSpan / 2 );
677
+ newCellColSpan = Math.floor( colSpan / 2 );
678
+ }
679
+ else
680
+ {
681
+ newCellColSpan = newColSpan = 1;
682
+ var cellsInSameCol = cellInCol( map, colIndex );
683
+ for ( var i = 0; i < cellsInSameCol.length; i++ )
684
+ cellsInSameCol[ i ].colSpan++;
685
+ }
686
+ newCell = cell.clone();
687
+ newCell.insertAfter( cell );
688
+ if ( !CKEDITOR.env.ie )
689
+ newCell.appendBogus();
690
+
691
+ cell.$.colSpan = newColSpan;
692
+ newCell.$.colSpan = newCellColSpan;
693
+ if ( newColSpan == 1 )
694
+ cell.removeAttribute( 'colSpan' );
695
+ if ( newCellColSpan == 1 )
696
+ newCell.removeAttribute( 'colSpan' );
697
+
698
+ return newCell;
699
+ }
700
+ // Context menu on table caption incorrect (#3834)
701
+ var contextMenuTags = { thead : 1, tbody : 1, tfoot : 1, td : 1, tr : 1, th : 1 };
702
+
703
+ CKEDITOR.plugins.tabletools =
704
+ {
705
+ init : function( editor )
706
+ {
707
+ var lang = editor.lang.table;
708
+
709
+ editor.addCommand( 'cellProperties', new CKEDITOR.dialogCommand( 'cellProperties' ) );
710
+ CKEDITOR.dialog.add( 'cellProperties', this.path + 'dialogs/tableCell.js' );
711
+
712
+ editor.addCommand( 'tableDelete',
713
+ {
714
+ exec : function( editor )
715
+ {
716
+ var selection = editor.getSelection();
717
+ var startElement = selection && selection.getStartElement();
718
+ var table = startElement && startElement.getAscendant( 'table', true );
719
+
720
+ if ( !table )
721
+ return;
722
+
723
+ // Maintain the selection point at where the table was deleted.
724
+ selection.selectElement( table );
725
+ var range = selection.getRanges()[0];
726
+ range.collapse();
727
+ selection.selectRanges( [ range ] );
728
+
729
+ // If the table's parent has only one child, remove it as well.
730
+ if ( table.getParent().getChildCount() == 1 )
731
+ table.getParent().remove();
732
+ else
733
+ table.remove();
734
+ }
735
+ } );
736
+
737
+ editor.addCommand( 'rowDelete',
738
+ {
739
+ exec : function( editor )
740
+ {
741
+ var selection = editor.getSelection();
742
+ placeCursorInCell( deleteRows( selection ) );
743
+ }
744
+ } );
745
+
746
+ editor.addCommand( 'rowInsertBefore',
747
+ {
748
+ exec : function( editor )
749
+ {
750
+ var selection = editor.getSelection();
751
+ insertRow( selection, true );
752
+ }
753
+ } );
754
+
755
+ editor.addCommand( 'rowInsertAfter',
756
+ {
757
+ exec : function( editor )
758
+ {
759
+ var selection = editor.getSelection();
760
+ insertRow( selection );
761
+ }
762
+ } );
763
+
764
+ editor.addCommand( 'columnDelete',
765
+ {
766
+ exec : function( editor )
767
+ {
768
+ var selection = editor.getSelection();
769
+ deleteColumns( selection );
770
+ }
771
+ } );
772
+
773
+ editor.addCommand( 'columnInsertBefore',
774
+ {
775
+ exec : function( editor )
776
+ {
777
+ var selection = editor.getSelection();
778
+ insertColumn( selection, true );
779
+ }
780
+ } );
781
+
782
+ editor.addCommand( 'columnInsertAfter',
783
+ {
784
+ exec : function( editor )
785
+ {
786
+ var selection = editor.getSelection();
787
+ insertColumn( selection );
788
+ }
789
+ } );
790
+
791
+ editor.addCommand( 'cellDelete',
792
+ {
793
+ exec : function( editor )
794
+ {
795
+ var selection = editor.getSelection();
796
+ deleteCells( selection );
797
+ }
798
+ } );
799
+
800
+ editor.addCommand( 'cellMerge',
801
+ {
802
+ exec : function( editor )
803
+ {
804
+ placeCursorInCell( mergeCells( editor.getSelection() ), true );
805
+ }
806
+ } );
807
+
808
+ editor.addCommand( 'cellMergeRight',
809
+ {
810
+ exec : function( editor )
811
+ {
812
+ placeCursorInCell( mergeCells( editor.getSelection(), 'right' ), true );
813
+ }
814
+ } );
815
+
816
+ editor.addCommand( 'cellMergeDown',
817
+ {
818
+ exec : function( editor )
819
+ {
820
+ placeCursorInCell( mergeCells( editor.getSelection(), 'down' ), true );
821
+ }
822
+ } );
823
+
824
+ editor.addCommand( 'cellVerticalSplit',
825
+ {
826
+ exec : function( editor )
827
+ {
828
+ placeCursorInCell( verticalSplitCell( editor.getSelection() ) );
829
+ }
830
+ } );
831
+
832
+ editor.addCommand( 'cellHorizontalSplit',
833
+ {
834
+ exec : function( editor )
835
+ {
836
+ placeCursorInCell( horizontalSplitCell( editor.getSelection() ) );
837
+ }
838
+ } );
839
+
840
+ editor.addCommand( 'cellInsertBefore',
841
+ {
842
+ exec : function( editor )
843
+ {
844
+ var selection = editor.getSelection();
845
+ insertCell( selection, true );
846
+ }
847
+ } );
848
+
849
+ editor.addCommand( 'cellInsertAfter',
850
+ {
851
+ exec : function( editor )
852
+ {
853
+ var selection = editor.getSelection();
854
+ insertCell( selection );
855
+ }
856
+ } );
857
+
858
+ // If the "menu" plugin is loaded, register the menu items.
859
+ if ( editor.addMenuItems )
860
+ {
861
+ editor.addMenuItems(
862
+ {
863
+ tablecell :
864
+ {
865
+ label : lang.cell.menu,
866
+ group : 'tablecell',
867
+ order : 1,
868
+ getItems : function()
869
+ {
870
+ var selection = editor.getSelection(),
871
+ cells = getSelectedCells( selection );
872
+ return {
873
+ tablecell_insertBefore : CKEDITOR.TRISTATE_OFF,
874
+ tablecell_insertAfter : CKEDITOR.TRISTATE_OFF,
875
+ tablecell_delete : CKEDITOR.TRISTATE_OFF,
876
+ tablecell_merge : mergeCells( selection, null, true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
877
+ tablecell_merge_right : mergeCells( selection, 'right', true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
878
+ tablecell_merge_down : mergeCells( selection, 'down', true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
879
+ tablecell_split_vertical : verticalSplitCell( selection, true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
880
+ tablecell_split_horizontal : horizontalSplitCell( selection, true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED,
881
+ tablecell_properties : cells.length > 0 ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED
882
+ };
883
+ }
884
+ },
885
+
886
+ tablecell_insertBefore :
887
+ {
888
+ label : lang.cell.insertBefore,
889
+ group : 'tablecell',
890
+ command : 'cellInsertBefore',
891
+ order : 5
892
+ },
893
+
894
+ tablecell_insertAfter :
895
+ {
896
+ label : lang.cell.insertAfter,
897
+ group : 'tablecell',
898
+ command : 'cellInsertAfter',
899
+ order : 10
900
+ },
901
+
902
+ tablecell_delete :
903
+ {
904
+ label : lang.cell.deleteCell,
905
+ group : 'tablecell',
906
+ command : 'cellDelete',
907
+ order : 15
908
+ },
909
+
910
+ tablecell_merge :
911
+ {
912
+ label : lang.cell.merge,
913
+ group : 'tablecell',
914
+ command : 'cellMerge',
915
+ order : 16
916
+ },
917
+
918
+ tablecell_merge_right :
919
+ {
920
+ label : lang.cell.mergeRight,
921
+ group : 'tablecell',
922
+ command : 'cellMergeRight',
923
+ order : 17
924
+ },
925
+
926
+ tablecell_merge_down :
927
+ {
928
+ label : lang.cell.mergeDown,
929
+ group : 'tablecell',
930
+ command : 'cellMergeDown',
931
+ order : 18
932
+ },
933
+
934
+ tablecell_split_horizontal :
935
+ {
936
+ label : lang.cell.splitHorizontal,
937
+ group : 'tablecell',
938
+ command : 'cellHorizontalSplit',
939
+ order : 19
940
+ },
941
+
942
+ tablecell_split_vertical :
943
+ {
944
+ label : lang.cell.splitVertical,
945
+ group : 'tablecell',
946
+ command : 'cellVerticalSplit',
947
+ order : 20
948
+ },
949
+
950
+ tablecell_properties :
951
+ {
952
+ label : lang.cell.title,
953
+ group : 'tablecellproperties',
954
+ command : 'cellProperties',
955
+ order : 21
956
+ },
957
+
958
+ tablerow :
959
+ {
960
+ label : lang.row.menu,
961
+ group : 'tablerow',
962
+ order : 1,
963
+ getItems : function()
964
+ {
965
+ return {
966
+ tablerow_insertBefore : CKEDITOR.TRISTATE_OFF,
967
+ tablerow_insertAfter : CKEDITOR.TRISTATE_OFF,
968
+ tablerow_delete : CKEDITOR.TRISTATE_OFF
969
+ };
970
+ }
971
+ },
972
+
973
+ tablerow_insertBefore :
974
+ {
975
+ label : lang.row.insertBefore,
976
+ group : 'tablerow',
977
+ command : 'rowInsertBefore',
978
+ order : 5
979
+ },
980
+
981
+ tablerow_insertAfter :
982
+ {
983
+ label : lang.row.insertAfter,
984
+ group : 'tablerow',
985
+ command : 'rowInsertAfter',
986
+ order : 10
987
+ },
988
+
989
+ tablerow_delete :
990
+ {
991
+ label : lang.row.deleteRow,
992
+ group : 'tablerow',
993
+ command : 'rowDelete',
994
+ order : 15
995
+ },
996
+
997
+ tablecolumn :
998
+ {
999
+ label : lang.column.menu,
1000
+ group : 'tablecolumn',
1001
+ order : 1,
1002
+ getItems : function()
1003
+ {
1004
+ return {
1005
+ tablecolumn_insertBefore : CKEDITOR.TRISTATE_OFF,
1006
+ tablecolumn_insertAfter : CKEDITOR.TRISTATE_OFF,
1007
+ tablecolumn_delete : CKEDITOR.TRISTATE_OFF
1008
+ };
1009
+ }
1010
+ },
1011
+
1012
+ tablecolumn_insertBefore :
1013
+ {
1014
+ label : lang.column.insertBefore,
1015
+ group : 'tablecolumn',
1016
+ command : 'columnInsertBefore',
1017
+ order : 5
1018
+ },
1019
+
1020
+ tablecolumn_insertAfter :
1021
+ {
1022
+ label : lang.column.insertAfter,
1023
+ group : 'tablecolumn',
1024
+ command : 'columnInsertAfter',
1025
+ order : 10
1026
+ },
1027
+
1028
+ tablecolumn_delete :
1029
+ {
1030
+ label : lang.column.deleteColumn,
1031
+ group : 'tablecolumn',
1032
+ command : 'columnDelete',
1033
+ order : 15
1034
+ }
1035
+ });
1036
+ }
1037
+
1038
+ // If the "contextmenu" plugin is laoded, register the listeners.
1039
+ if ( editor.contextMenu )
1040
+ {
1041
+ editor.contextMenu.addListener( function( element, selection )
1042
+ {
1043
+ if ( !element )
1044
+ return null;
1045
+
1046
+ while ( element )
1047
+ {
1048
+ if ( element.getName() in contextMenuTags )
1049
+ {
1050
+ return {
1051
+ tablecell : CKEDITOR.TRISTATE_OFF,
1052
+ tablerow : CKEDITOR.TRISTATE_OFF,
1053
+ tablecolumn : CKEDITOR.TRISTATE_OFF
1054
+ };
1055
+ }
1056
+ element = element.getParent();
1057
+ }
1058
+
1059
+ return null;
1060
+ } );
1061
+ }
1062
+ },
1063
+
1064
+ getSelectedCells : getSelectedCells
1065
+
1066
+ };
1067
+ CKEDITOR.plugins.add( 'tabletools', CKEDITOR.plugins.tabletools );
1068
+ })();