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,96 @@
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 Defines the {@link CKEDITOR.dom.document} class, which
8
+ * represents a DOM document.
9
+ */
10
+
11
+ /**
12
+ * Represents a DOM window.
13
+ * @constructor
14
+ * @augments CKEDITOR.dom.domObject
15
+ * @param {Object} domWindow A native DOM window.
16
+ * @example
17
+ * var document = new CKEDITOR.dom.window( window );
18
+ */
19
+ CKEDITOR.dom.window = function( domWindow )
20
+ {
21
+ CKEDITOR.dom.domObject.call( this, domWindow );
22
+ };
23
+
24
+ CKEDITOR.dom.window.prototype = new CKEDITOR.dom.domObject();
25
+
26
+ CKEDITOR.tools.extend( CKEDITOR.dom.window.prototype,
27
+ /** @lends CKEDITOR.dom.window.prototype */
28
+ {
29
+ /**
30
+ * Moves the selection focus to this window.
31
+ * @function
32
+ * @example
33
+ * var win = new CKEDITOR.dom.window( window );
34
+ * <b>win.focus()</b>;
35
+ */
36
+ focus : function()
37
+ {
38
+ // Webkit is sometimes failed to focus iframe, blur it first(#3835).
39
+ if ( CKEDITOR.env.webkit && this.$.parent )
40
+ this.$.parent.focus();
41
+ this.$.focus();
42
+ },
43
+
44
+ /**
45
+ * Gets the width and height of this window's viewable area.
46
+ * @function
47
+ * @returns {Object} An object with the "width" and "height"
48
+ * properties containing the size.
49
+ * @example
50
+ * var win = new CKEDITOR.dom.window( window );
51
+ * var size = <b>win.getViewPaneSize()</b>;
52
+ * alert( size.width );
53
+ * alert( size.height );
54
+ */
55
+ getViewPaneSize : function()
56
+ {
57
+ var doc = this.$.document,
58
+ stdMode = doc.compatMode == 'CSS1Compat';
59
+ return {
60
+ width : ( stdMode ? doc.documentElement.clientWidth : doc.body.clientWidth ) || 0,
61
+ height : ( stdMode ? doc.documentElement.clientHeight : doc.body.clientHeight ) || 0
62
+ };
63
+ },
64
+
65
+ /**
66
+ * Gets the current position of the window's scroll.
67
+ * @function
68
+ * @returns {Object} An object with the "x" and "y" properties
69
+ * containing the scroll position.
70
+ * @example
71
+ * var win = new CKEDITOR.dom.window( window );
72
+ * var pos = <b>win.getScrollPosition()</b>;
73
+ * alert( pos.x );
74
+ * alert( pos.y );
75
+ */
76
+ getScrollPosition : function()
77
+ {
78
+ var $ = this.$;
79
+
80
+ if ( 'pageXOffset' in $ )
81
+ {
82
+ return {
83
+ x : $.pageXOffset || 0,
84
+ y : $.pageYOffset || 0
85
+ };
86
+ }
87
+ else
88
+ {
89
+ var doc = $.document;
90
+ return {
91
+ x : doc.documentElement.scrollLeft || doc.body.scrollLeft || 0,
92
+ y : doc.documentElement.scrollTop || doc.body.scrollTop || 0
93
+ };
94
+ }
95
+ }
96
+ });
@@ -0,0 +1,20 @@
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 Defines the {@link CKEDITOR.dom} object, which contains DOM
8
+ * manipulation objects and function.
9
+ */
10
+
11
+ /**
12
+ * @namespace DOM manipulation objects, classes and functions.
13
+ * @see CKEDITOR.dom.element
14
+ * @see CKEDITOR.dom.node
15
+ * @example
16
+ */
17
+ CKEDITOR.dom =
18
+ {};
19
+
20
+ // PACKAGER_RENAME( CKEDITOR.dom )
@@ -0,0 +1,266 @@
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 Defines the {@link CKEDITOR.dtd} object, which holds the DTD
8
+ * mapping for XHTML 1.0 Transitional. This file was automatically
9
+ * generated from the file: xhtml1-transitional.dtd.
10
+ */
11
+
12
+ /**
13
+ * @namespace Holds and object representation of the HTML DTD to be used by the
14
+ * editor in its internal operations.<br />
15
+ * <br />
16
+ * Each element in the DTD is represented by a property in this object. Each
17
+ * property contains the list of elements that can be contained by the element.
18
+ * Text is represented by the "#" property.<br />
19
+ * <br />
20
+ * Several special grouping properties are also available. Their names start
21
+ * with the "$" character.
22
+ * @example
23
+ * // Check if "div" can be contained in a "p" element.
24
+ * alert( !!CKEDITOR.dtd[ 'p' ][ 'div' ] ); "false"
25
+ * @example
26
+ * // Check if "p" can be contained in a "div" element.
27
+ * alert( !!CKEDITOR.dtd[ 'div' ][ 'p' ] ); "true"
28
+ * @example
29
+ * // Check if "p" is a block element.
30
+ * alert( !!CKEDITOR.dtd.$block[ 'p' ] ); "true"
31
+ */
32
+ CKEDITOR.dtd = (function()
33
+ {
34
+ var X = CKEDITOR.tools.extend,
35
+
36
+ A = {isindex:1,fieldset:1},
37
+ B = {input:1,button:1,select:1,textarea:1,label:1},
38
+ C = X({a:1},B),
39
+ D = X({iframe:1},C),
40
+ E = {hr:1,ul:1,menu:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,mark:1,time:1,meter:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1},
41
+ F = {ins:1,del:1,script:1,style:1},
42
+ G = X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1,wbr:1},F),
43
+ H = X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1,mark:1,audio:1,video:1},G),
44
+ I = X({p:1},H),
45
+ J = X({iframe:1},H,B),
46
+ K = {img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,mark:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1,audio:1,video:1},
47
+
48
+ L = X({a:1},J),
49
+ M = {tr:1},
50
+ N = {'#':1},
51
+ O = X({param:1},K),
52
+ P = X({form:1},A,D,E,I),
53
+ Q = {li:1},
54
+ R = {style:1,script:1},
55
+ S = {base:1,link:1,meta:1,title:1},
56
+ T = X(S,R),
57
+ U = {head:1,body:1},
58
+ V = {html:1};
59
+
60
+ var block = {address:1,blockquote:1,center:1,dir:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,isindex:1,noframes:1,ol:1,p:1,pre:1,table:1,ul:1};
61
+
62
+ return /** @lends CKEDITOR.dtd */ {
63
+
64
+ // The "$" items have been added manually.
65
+
66
+ // List of elements living outside body.
67
+ $nonBodyContent: X(V,U,S),
68
+
69
+ /**
70
+ * List of block elements, like "p" or "div".
71
+ * @type Object
72
+ * @example
73
+ */
74
+ $block : block,
75
+
76
+ /**
77
+ * List of block limit elements.
78
+ * @type Object
79
+ * @example
80
+ */
81
+ $blockLimit : { body:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,td:1,th:1,caption:1,form:1 },
82
+
83
+ /**
84
+ * List of inline (&lt;span&gt; like) elements.
85
+ */
86
+ $inline : L, // Just like span.
87
+
88
+ /**
89
+ * list of elements that can be children at &lt;body&gt;.
90
+ */
91
+ $body : X({script:1,style:1}, block),
92
+
93
+ $cdata : {script:1,style:1},
94
+
95
+ /**
96
+ * List of empty (self-closing) elements, like "br" or "img".
97
+ * @type Object
98
+ * @example
99
+ */
100
+ $empty : {area:1,base:1,br:1,col:1,hr:1,img:1,input:1,link:1,meta:1,param:1,wbr:1},
101
+
102
+ /**
103
+ * List of list item elements, like "li" or "dd".
104
+ * @type Object
105
+ * @example
106
+ */
107
+ $listItem : {dd:1,dt:1,li:1},
108
+
109
+ /**
110
+ * List of list root elements.
111
+ * @type Object
112
+ * @example
113
+ */
114
+ $list: {ul:1,ol:1,dl:1},
115
+
116
+ /**
117
+ * Elements that accept text nodes, but are not possible to edit into
118
+ * the browser.
119
+ * @type Object
120
+ * @example
121
+ */
122
+ $nonEditable : {applet:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,script:1,textarea:1,param:1,audio:1,video:1},
123
+
124
+ /**
125
+ * List of block tags with each one a singleton element lives in the corresponding structure for description.
126
+ */
127
+ $captionBlock : { caption:1, legend:1 },
128
+
129
+ /**
130
+ * List of elements that can be ignored if empty, like "b" or "span".
131
+ * @type Object
132
+ * @example
133
+ */
134
+ $removeEmpty : {abbr:1,acronym:1,address:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1,mark:1},
135
+
136
+ /**
137
+ * List of elements that have tabindex set to zero by default.
138
+ * @type Object
139
+ * @example
140
+ */
141
+ $tabIndex : {a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},
142
+
143
+ /**
144
+ * List of elements used inside the "table" element, like "tbody" or "td".
145
+ * @type Object
146
+ * @example
147
+ */
148
+ $tableContent : {caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},
149
+
150
+ html: U,
151
+ head: T,
152
+ style: N,
153
+ script: N,
154
+ body: P,
155
+ base: {},
156
+ link: {},
157
+ meta: {},
158
+ title: N,
159
+ col : {},
160
+ tr : {td:1,th:1},
161
+ img : {},
162
+ colgroup : {col:1},
163
+ noscript : P,
164
+ td : P,
165
+ br : {},
166
+ wbr : {},
167
+ th : P,
168
+ center : P,
169
+ kbd : L,
170
+ button : X(I,E),
171
+ basefont : {},
172
+ h5 : L,
173
+ h4 : L,
174
+ samp : L,
175
+ h6 : L,
176
+ ol : Q,
177
+ h1 : L,
178
+ h3 : L,
179
+ option : N,
180
+ h2 : L,
181
+ form : X(A,D,E,I),
182
+ select : {optgroup:1,option:1},
183
+ font : L,
184
+ ins : L,
185
+ menu : Q,
186
+ abbr : L,
187
+ label : L,
188
+ table : {thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1},
189
+ code : L,
190
+ tfoot : M,
191
+ cite : L,
192
+ li : P,
193
+ input : {},
194
+ iframe : P,
195
+ strong : L,
196
+ textarea : N,
197
+ noframes : P,
198
+ big : L,
199
+ small : L,
200
+ span : L,
201
+ hr : {},
202
+ dt : L,
203
+ sub : L,
204
+ optgroup : {option:1},
205
+ param : {},
206
+ bdo : L,
207
+ 'var' : L,
208
+ div : P,
209
+ object : O,
210
+ sup : L,
211
+ dd : P,
212
+ strike : L,
213
+ area : {},
214
+ dir : Q,
215
+ map : X({area:1,form:1,p:1},A,F,E),
216
+ applet : O,
217
+ dl : {dt:1,dd:1},
218
+ del : L,
219
+ isindex : {},
220
+ fieldset : X({legend:1},K),
221
+ thead : M,
222
+ ul : Q,
223
+ acronym : L,
224
+ b : L,
225
+ a : J,
226
+ blockquote : P,
227
+ caption : L,
228
+ i : L,
229
+ u : L,
230
+ tbody : M,
231
+ s : L,
232
+ address : X(D,I),
233
+ tt : L,
234
+ legend : L,
235
+ q : L,
236
+ pre : X(G,C),
237
+ p : L,
238
+ em : L,
239
+ dfn : L,
240
+ //HTML5
241
+ section : P,
242
+ header : P,
243
+ footer : P,
244
+ nav : P,
245
+ article : P,
246
+ aside : P,
247
+ figure: P,
248
+ dialog : P,
249
+ hgroup : P,
250
+ mark : L,
251
+ time : L,
252
+ meter : L,
253
+ menu : L,
254
+ command : L,
255
+ keygen : L,
256
+ output : L,
257
+ progress : O,
258
+ audio : O,
259
+ video : O,
260
+ details : O,
261
+ datagrid : O,
262
+ datalist : O
263
+ };
264
+ })();
265
+
266
+ // PACKAGER_RENAME( CKEDITOR.dtd )
@@ -0,0 +1,1060 @@
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 Defines the {@link CKEDITOR.editor} class, which represents an
8
+ * editor instance.
9
+ */
10
+
11
+ (function()
12
+ {
13
+ // The counter for automatic instance names.
14
+ var nameCounter = 0;
15
+
16
+ var getNewName = function()
17
+ {
18
+ var name = 'editor' + ( ++nameCounter );
19
+ return ( CKEDITOR.instances && CKEDITOR.instances[ name ] ) ? getNewName() : name;
20
+ };
21
+
22
+ // ##### START: Config Privates
23
+
24
+ // These function loads custom configuration files and cache the
25
+ // CKEDITOR.editorConfig functions defined on them, so there is no need to
26
+ // download them more than once for several instances.
27
+ var loadConfigLoaded = {};
28
+ var loadConfig = function( editor )
29
+ {
30
+ var customConfig = editor.config.customConfig;
31
+
32
+ // Check if there is a custom config to load.
33
+ if ( !customConfig )
34
+ return false;
35
+
36
+ customConfig = CKEDITOR.getUrl( customConfig );
37
+
38
+ var loadedConfig = loadConfigLoaded[ customConfig ] || ( loadConfigLoaded[ customConfig ] = {} );
39
+
40
+ // If the custom config has already been downloaded, reuse it.
41
+ if ( loadedConfig.fn )
42
+ {
43
+ // Call the cached CKEDITOR.editorConfig defined in the custom
44
+ // config file for the editor instance depending on it.
45
+ loadedConfig.fn.call( editor, editor.config );
46
+
47
+ // If there is no other customConfig in the chain, fire the
48
+ // "configLoaded" event.
49
+ if ( CKEDITOR.getUrl( editor.config.customConfig ) == customConfig || !loadConfig( editor ) )
50
+ editor.fireOnce( 'customConfigLoaded' );
51
+ }
52
+ else
53
+ {
54
+ // Load the custom configuration file.
55
+ CKEDITOR.scriptLoader.load( customConfig, function()
56
+ {
57
+ // If the CKEDITOR.editorConfig function has been properly
58
+ // defined in the custom configuration file, cache it.
59
+ if ( CKEDITOR.editorConfig )
60
+ loadedConfig.fn = CKEDITOR.editorConfig;
61
+ else
62
+ loadedConfig.fn = function(){};
63
+
64
+ // Call the load config again. This time the custom
65
+ // config is already cached and so it will get loaded.
66
+ loadConfig( editor );
67
+ });
68
+ }
69
+
70
+ return true;
71
+ };
72
+
73
+ var initConfig = function( editor, instanceConfig )
74
+ {
75
+ // Setup the lister for the "customConfigLoaded" event.
76
+ editor.on( 'customConfigLoaded', function()
77
+ {
78
+ if ( instanceConfig )
79
+ {
80
+ // Register the events that may have been set at the instance
81
+ // configuration object.
82
+ if ( instanceConfig.on )
83
+ {
84
+ for ( var eventName in instanceConfig.on )
85
+ {
86
+ editor.on( eventName, instanceConfig.on[ eventName ] );
87
+ }
88
+ }
89
+
90
+ // Overwrite the settings from the in-page config.
91
+ CKEDITOR.tools.extend( editor.config, instanceConfig, true );
92
+
93
+ delete editor.config.on;
94
+ }
95
+
96
+ onConfigLoaded( editor );
97
+ });
98
+
99
+ // The instance config may override the customConfig setting to avoid
100
+ // loading the default ~/config.js file.
101
+ if ( instanceConfig && instanceConfig.customConfig != undefined )
102
+ editor.config.customConfig = instanceConfig.customConfig;
103
+
104
+ // Load configs from the custom configuration files.
105
+ if ( !loadConfig( editor ) )
106
+ editor.fireOnce( 'customConfigLoaded' );
107
+ };
108
+
109
+ // ##### END: Config Privates
110
+
111
+ var onConfigLoaded = function( editor )
112
+ {
113
+ // Set config related properties.
114
+
115
+ var skin = editor.config.skin.split( ',' ),
116
+ skinName = skin[ 0 ],
117
+ skinPath = CKEDITOR.getUrl( skin[ 1 ] || (
118
+ '_source/' + // @Packager.RemoveLine
119
+ 'skins/' + skinName + '/' ) );
120
+
121
+ /**
122
+ * The name of the skin used by this editor instance. The skin name can
123
+ * be set through the <code>{@link CKEDITOR.config.skin}</code> setting.
124
+ * @name CKEDITOR.editor.prototype.skinName
125
+ * @type String
126
+ * @example
127
+ * alert( editor.skinName ); // E.g. "kama"
128
+ */
129
+ editor.skinName = skinName;
130
+
131
+ /**
132
+ * The full URL of the skin directory.
133
+ * @name CKEDITOR.editor.prototype.skinPath
134
+ * @type String
135
+ * @example
136
+ * alert( editor.skinPath ); // E.g. "http://example.com/ckeditor/skins/kama/"
137
+ */
138
+ editor.skinPath = skinPath;
139
+
140
+ /**
141
+ * The CSS class name used for skin identification purposes.
142
+ * @name CKEDITOR.editor.prototype.skinClass
143
+ * @type String
144
+ * @example
145
+ * alert( editor.skinClass ); // E.g. "cke_skin_kama"
146
+ */
147
+ editor.skinClass = 'cke_skin_' + skinName;
148
+
149
+ /**
150
+ * The <a href="http://en.wikipedia.org/wiki/Tabbing_navigation">tabbing
151
+ * navigation</a> order that has been calculated for this editor
152
+ * instance. This can be set by the <code>{@link CKEDITOR.config.tabIndex}</code>
153
+ * setting or taken from the <code>tabindex</code> attribute of the
154
+ * <code>{@link #element}</code> associated with the editor.
155
+ * @name CKEDITOR.editor.prototype.tabIndex
156
+ * @type Number
157
+ * @default 0 (zero)
158
+ * @example
159
+ * alert( editor.tabIndex ); // E.g. "0"
160
+ */
161
+ editor.tabIndex = editor.config.tabIndex || editor.element.getAttribute( 'tabindex' ) || 0;
162
+
163
+ /**
164
+ * Indicates the read-only state of this editor. This is a read-only property.
165
+ * @name CKEDITOR.editor.prototype.readOnly
166
+ * @type Boolean
167
+ * @since 3.6
168
+ * @see CKEDITOR.editor#setReadOnly
169
+ */
170
+ editor.readOnly = !!( editor.config.readOnly || editor.element.getAttribute( 'disabled' ) );
171
+
172
+ // Fire the "configLoaded" event.
173
+ editor.fireOnce( 'configLoaded' );
174
+
175
+ // Load language file.
176
+ loadSkin( editor );
177
+ };
178
+
179
+ var loadLang = function( editor )
180
+ {
181
+ CKEDITOR.lang.load( editor.config.language, editor.config.defaultLanguage, function( languageCode, lang )
182
+ {
183
+ /**
184
+ * The code for the language resources that have been loaded
185
+ * for the user interface elements of this editor instance.
186
+ * @name CKEDITOR.editor.prototype.langCode
187
+ * @type String
188
+ * @example
189
+ * alert( editor.langCode ); // E.g. "en"
190
+ */
191
+ editor.langCode = languageCode;
192
+
193
+ /**
194
+ * An object that contains all language strings used by the editor
195
+ * interface.
196
+ * @name CKEDITOR.editor.prototype.lang
197
+ * @type CKEDITOR.lang
198
+ * @example
199
+ * alert( editor.lang.bold ); // E.g. "Negrito" (if the language is set to Portuguese)
200
+ */
201
+ // As we'll be adding plugin specific entries that could come
202
+ // from different language code files, we need a copy of lang,
203
+ // not a direct reference to it.
204
+ editor.lang = CKEDITOR.tools.prototypedCopy( lang );
205
+
206
+ // We're not able to support RTL in Firefox 2 at this time.
207
+ if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 && editor.lang.dir == 'rtl' )
208
+ editor.lang.dir = 'ltr';
209
+
210
+ editor.fire( 'langLoaded' );
211
+
212
+ var config = editor.config;
213
+ config.contentsLangDirection == 'ui' && ( config.contentsLangDirection = editor.lang.dir );
214
+
215
+ loadPlugins( editor );
216
+ });
217
+ };
218
+
219
+ var loadPlugins = function( editor )
220
+ {
221
+ var config = editor.config,
222
+ plugins = config.plugins,
223
+ extraPlugins = config.extraPlugins,
224
+ removePlugins = config.removePlugins;
225
+
226
+ if ( extraPlugins )
227
+ {
228
+ // Remove them first to avoid duplications.
229
+ var removeRegex = new RegExp( '(?:^|,)(?:' + extraPlugins.replace( /\s*,\s*/g, '|' ) + ')(?=,|$)' , 'g' );
230
+ plugins = plugins.replace( removeRegex, '' );
231
+
232
+ plugins += ',' + extraPlugins;
233
+ }
234
+
235
+ if ( removePlugins )
236
+ {
237
+ removeRegex = new RegExp( '(?:^|,)(?:' + removePlugins.replace( /\s*,\s*/g, '|' ) + ')(?=,|$)' , 'g' );
238
+ plugins = plugins.replace( removeRegex, '' );
239
+ }
240
+
241
+ // Load the Adobe AIR plugin conditionally.
242
+ CKEDITOR.env.air && ( plugins += ',adobeair' );
243
+
244
+ // Load all plugins defined in the "plugins" setting.
245
+ CKEDITOR.plugins.load( plugins.split( ',' ), function( plugins )
246
+ {
247
+ // The list of plugins.
248
+ var pluginsArray = [];
249
+
250
+ // The language code to get loaded for each plugin. Null
251
+ // entries will be appended for plugins with no language files.
252
+ var languageCodes = [];
253
+
254
+ // The list of URLs to language files.
255
+ var languageFiles = [];
256
+
257
+ /**
258
+ * An object that contains references to all plugins used by this
259
+ * editor instance.
260
+ * @name CKEDITOR.editor.prototype.plugins
261
+ * @type Object
262
+ * @example
263
+ * alert( editor.plugins.dialog.path ); // E.g. "http://example.com/ckeditor/plugins/dialog/"
264
+ */
265
+ editor.plugins = plugins;
266
+
267
+ // Loop through all plugins, to build the list of language
268
+ // files to get loaded.
269
+ for ( var pluginName in plugins )
270
+ {
271
+ var plugin = plugins[ pluginName ],
272
+ pluginLangs = plugin.lang,
273
+ pluginPath = CKEDITOR.plugins.getPath( pluginName ),
274
+ lang = null;
275
+
276
+ // Set the plugin path in the plugin.
277
+ plugin.path = pluginPath;
278
+
279
+ // If the plugin has "lang".
280
+ if ( pluginLangs )
281
+ {
282
+ // Resolve the plugin language. If the current language
283
+ // is not available, get the first one (default one).
284
+ lang = ( CKEDITOR.tools.indexOf( pluginLangs, editor.langCode ) >= 0 ? editor.langCode : pluginLangs[ 0 ] );
285
+
286
+ if ( !plugin.langEntries || !plugin.langEntries[ lang ] )
287
+ {
288
+ // Put the language file URL into the list of files to
289
+ // get downloaded.
290
+ languageFiles.push( CKEDITOR.getUrl( pluginPath + 'lang/' + lang + '.js' ) );
291
+ }
292
+ else
293
+ {
294
+ CKEDITOR.tools.extend( editor.lang, plugin.langEntries[ lang ] );
295
+ lang = null;
296
+ }
297
+ }
298
+
299
+ // Save the language code, so we know later which
300
+ // language has been resolved to this plugin.
301
+ languageCodes.push( lang );
302
+
303
+ pluginsArray.push( plugin );
304
+ }
305
+
306
+ // Load all plugin specific language files in a row.
307
+ CKEDITOR.scriptLoader.load( languageFiles, function()
308
+ {
309
+ // Initialize all plugins that have the "beforeInit" and "init" methods defined.
310
+ var methods = [ 'beforeInit', 'init', 'afterInit' ];
311
+ for ( var m = 0 ; m < methods.length ; m++ )
312
+ {
313
+ for ( var i = 0 ; i < pluginsArray.length ; i++ )
314
+ {
315
+ var plugin = pluginsArray[ i ];
316
+
317
+ // Uses the first loop to update the language entries also.
318
+ if ( m === 0 && languageCodes[ i ] && plugin.lang )
319
+ CKEDITOR.tools.extend( editor.lang, plugin.langEntries[ languageCodes[ i ] ] );
320
+
321
+ // Call the plugin method (beforeInit and init).
322
+ if ( plugin[ methods[ m ] ] )
323
+ plugin[ methods[ m ] ]( editor );
324
+ }
325
+ }
326
+
327
+ // Load the editor skin.
328
+ editor.fire( 'pluginsLoaded' );
329
+ loadTheme( editor );
330
+ });
331
+ });
332
+ };
333
+
334
+ var loadSkin = function( editor )
335
+ {
336
+ CKEDITOR.skins.load( editor, 'editor', function()
337
+ {
338
+ loadLang( editor );
339
+ });
340
+ };
341
+
342
+ var loadTheme = function( editor )
343
+ {
344
+ var theme = editor.config.theme;
345
+ CKEDITOR.themes.load( theme, function()
346
+ {
347
+ /**
348
+ * The theme used by this editor instance.
349
+ * @name CKEDITOR.editor.prototype.theme
350
+ * @type CKEDITOR.theme
351
+ * @example
352
+ * alert( editor.theme ); // E.g. "http://example.com/ckeditor/themes/default/"
353
+ */
354
+ var editorTheme = editor.theme = CKEDITOR.themes.get( theme );
355
+ editorTheme.path = CKEDITOR.themes.getPath( theme );
356
+ editorTheme.build( editor );
357
+
358
+ if ( editor.config.autoUpdateElement )
359
+ attachToForm( editor );
360
+ });
361
+ };
362
+
363
+ var attachToForm = function( editor )
364
+ {
365
+ var element = editor.element;
366
+
367
+ // If are replacing a textarea, we must
368
+ if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE && element.is( 'textarea' ) )
369
+ {
370
+ var form = element.$.form && new CKEDITOR.dom.element( element.$.form );
371
+ if ( form )
372
+ {
373
+ function onSubmit()
374
+ {
375
+ editor.updateElement();
376
+ }
377
+ form.on( 'submit',onSubmit );
378
+
379
+ // Setup the submit function because it doesn't fire the
380
+ // "submit" event.
381
+ if ( !form.$.submit.nodeName && !form.$.submit.length )
382
+ {
383
+ form.$.submit = CKEDITOR.tools.override( form.$.submit, function( originalSubmit )
384
+ {
385
+ return function()
386
+ {
387
+ editor.updateElement();
388
+
389
+ // For IE, the DOM submit function is not a
390
+ // function, so we need thid check.
391
+ if ( originalSubmit.apply )
392
+ originalSubmit.apply( this, arguments );
393
+ else
394
+ originalSubmit();
395
+ };
396
+ });
397
+ }
398
+
399
+ // Remove 'submit' events registered on form element before destroying.(#3988)
400
+ editor.on( 'destroy', function()
401
+ {
402
+ form.removeListener( 'submit', onSubmit );
403
+ } );
404
+ }
405
+ }
406
+ };
407
+
408
+ function updateCommands()
409
+ {
410
+ var command,
411
+ commands = this._.commands,
412
+ mode = this.mode;
413
+
414
+ if ( !mode )
415
+ return;
416
+
417
+ for ( var name in commands )
418
+ {
419
+ command = commands[ name ];
420
+ command[ command.startDisabled ? 'disable' :
421
+ this.readOnly && !command.readOnly ? 'disable' : command.modes[ mode ] ? 'enable' : 'disable' ]();
422
+ }
423
+ }
424
+
425
+ /**
426
+ * Initializes the editor instance. This function is called by the editor
427
+ * contructor (<code>editor_basic.js</code>).
428
+ * @private
429
+ */
430
+ CKEDITOR.editor.prototype._init = function()
431
+ {
432
+ // Get the properties that have been saved in the editor_base
433
+ // implementation.
434
+ var element = CKEDITOR.dom.element.get( this._.element ),
435
+ instanceConfig = this._.instanceConfig;
436
+ delete this._.element;
437
+ delete this._.instanceConfig;
438
+
439
+ this._.commands = {};
440
+ this._.styles = [];
441
+
442
+ /**
443
+ * The DOM element that was replaced by this editor instance. This
444
+ * element stores the editor data on load and post.
445
+ * @name CKEDITOR.editor.prototype.element
446
+ * @type CKEDITOR.dom.element
447
+ * @example
448
+ * var editor = CKEDITOR.instances.editor1;
449
+ * alert( <strong>editor.element</strong>.getName() ); // E.g. "textarea"
450
+ */
451
+ this.element = element;
452
+
453
+ /**
454
+ * The editor instance name. It may be the replaced element ID, name, or
455
+ * a default name using the progressive counter (<code>editor1</code>,
456
+ * <code>editor2</code>, ...).
457
+ * @name CKEDITOR.editor.prototype.name
458
+ * @type String
459
+ * @example
460
+ * var editor = CKEDITOR.instances.editor1;
461
+ * alert( <strong>editor.name</strong> ); // "editor1"
462
+ */
463
+ this.name = ( element && ( this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
464
+ && ( element.getId() || element.getNameAtt() ) )
465
+ || getNewName();
466
+
467
+ if ( this.name in CKEDITOR.instances )
468
+ throw '[CKEDITOR.editor] The instance "' + this.name + '" already exists.';
469
+
470
+ /**
471
+ * A unique random string assigned to each editor instance on the page.
472
+ * @name CKEDITOR.editor.prototype.id
473
+ * @type String
474
+ */
475
+ this.id = CKEDITOR.tools.getNextId();
476
+
477
+ /**
478
+ * The configurations for this editor instance. It inherits all
479
+ * settings defined in <code>(@link CKEDITOR.config}</code>, combined with settings
480
+ * loaded from custom configuration files and those defined inline in
481
+ * the page when creating the editor.
482
+ * @name CKEDITOR.editor.prototype.config
483
+ * @type Object
484
+ * @example
485
+ * var editor = CKEDITOR.instances.editor1;
486
+ * alert( <strong>editor.config.theme</strong> ); // E.g. "default"
487
+ */
488
+ this.config = CKEDITOR.tools.prototypedCopy( CKEDITOR.config );
489
+
490
+ /**
491
+ * The namespace containing UI features related to this editor instance.
492
+ * @name CKEDITOR.editor.prototype.ui
493
+ * @type CKEDITOR.ui
494
+ * @example
495
+ */
496
+ this.ui = new CKEDITOR.ui( this );
497
+
498
+ /**
499
+ * Controls the focus state of this editor instance. This property
500
+ * is rarely used for normal API operations. It is mainly
501
+ * intended for developers adding UI elements to the editor interface.
502
+ * @name CKEDITOR.editor.prototype.focusManager
503
+ * @type CKEDITOR.focusManager
504
+ * @example
505
+ */
506
+ this.focusManager = new CKEDITOR.focusManager( this );
507
+
508
+ CKEDITOR.fire( 'instanceCreated', null, this );
509
+
510
+ this.on( 'mode', updateCommands, null, null, 1 );
511
+ this.on( 'readOnly', updateCommands, null, null, 1 );
512
+
513
+ initConfig( this, instanceConfig );
514
+ };
515
+ })();
516
+
517
+ CKEDITOR.tools.extend( CKEDITOR.editor.prototype,
518
+ /** @lends CKEDITOR.editor.prototype */
519
+ {
520
+ /**
521
+ * Adds a command definition to the editor instance. Commands added with
522
+ * this function can be executed later with the <code>{@link #execCommand}</code> method.
523
+ * @param {String} commandName The indentifier name of the command.
524
+ * @param {CKEDITOR.commandDefinition} commandDefinition The command definition.
525
+ * @example
526
+ * editorInstance.addCommand( 'sample',
527
+ * {
528
+ * exec : function( editor )
529
+ * {
530
+ * alert( 'Executing a command for the editor name "' + editor.name + '"!' );
531
+ * }
532
+ * });
533
+ */
534
+ addCommand : function( commandName, commandDefinition )
535
+ {
536
+ return this._.commands[ commandName ] = new CKEDITOR.command( this, commandDefinition );
537
+ },
538
+
539
+ /**
540
+ * Adds a piece of CSS code to the editor which will be applied to the WYSIWYG editing document.
541
+ * This CSS would not be added to the output, and is there mainly for editor-specific editing requirements.
542
+ * Note: This function should be called before the editor is loaded to take effect.
543
+ * @param css {String} CSS text.
544
+ * @example
545
+ * editorInstance.addCss( 'body { background-color: grey; }' );
546
+ */
547
+ addCss : function( css )
548
+ {
549
+ this._.styles.push( css );
550
+ },
551
+
552
+ /**
553
+ * Destroys the editor instance, releasing all resources used by it.
554
+ * If the editor replaced an element, the element will be recovered.
555
+ * @param {Boolean} [noUpdate] If the instance is replacing a DOM
556
+ * element, this parameter indicates whether or not to update the
557
+ * element with the instance contents.
558
+ * @example
559
+ * alert( CKEDITOR.instances.editor1 ); // E.g "object"
560
+ * <strong>CKEDITOR.instances.editor1.destroy()</strong>;
561
+ * alert( CKEDITOR.instances.editor1 ); // "undefined"
562
+ */
563
+ destroy : function( noUpdate )
564
+ {
565
+ if ( !noUpdate )
566
+ this.updateElement();
567
+
568
+ this.fire( 'destroy' );
569
+ this.theme && this.theme.destroy( this );
570
+
571
+ CKEDITOR.remove( this );
572
+ CKEDITOR.fire( 'instanceDestroyed', null, this );
573
+ },
574
+
575
+ /**
576
+ * Executes a command associated with the editor.
577
+ * @param {String} commandName The indentifier name of the command.
578
+ * @param {Object} [data] Data to be passed to the command.
579
+ * @returns {Boolean} <code>true</code> if the command was executed
580
+ * successfully, otherwise <code>false</code>.
581
+ * @see CKEDITOR.editor.addCommand
582
+ * @example
583
+ * editorInstance.execCommand( 'bold' );
584
+ */
585
+ execCommand : function( commandName, data )
586
+ {
587
+ var command = this.getCommand( commandName );
588
+
589
+ var eventData =
590
+ {
591
+ name: commandName,
592
+ commandData: data,
593
+ command: command
594
+ };
595
+
596
+ if ( command && command.state != CKEDITOR.TRISTATE_DISABLED )
597
+ {
598
+ if ( this.fire( 'beforeCommandExec', eventData ) !== true )
599
+ {
600
+ eventData.returnValue = command.exec( eventData.commandData );
601
+
602
+ // Fire the 'afterCommandExec' immediately if command is synchronous.
603
+ if ( !command.async && this.fire( 'afterCommandExec', eventData ) !== true )
604
+ return eventData.returnValue;
605
+ }
606
+ }
607
+
608
+ // throw 'Unknown command name "' + commandName + '"';
609
+ return false;
610
+ },
611
+
612
+ /**
613
+ * Gets one of the registered commands. Note that after registering a
614
+ * command definition with <code>{@link #addCommand}</code>, it is
615
+ * transformed internally into an instance of
616
+ * <code>{@link CKEDITOR.command}</code>, which will then be returned
617
+ * by this function.
618
+ * @param {String} commandName The name of the command to be returned.
619
+ * This is the same name that is used to register the command with
620
+ * <code>addCommand</code>.
621
+ * @returns {CKEDITOR.command} The command object identified by the
622
+ * provided name.
623
+ */
624
+ getCommand : function( commandName )
625
+ {
626
+ return this._.commands[ commandName ];
627
+ },
628
+
629
+ /**
630
+ * Gets the editor data. The data will be in raw format. It is the same
631
+ * data that is posted by the editor.
632
+ * @type String
633
+ * @returns (String) The editor data.
634
+ * @example
635
+ * if ( CKEDITOR.instances.editor1.<strong>getData()</strong> == '' )
636
+ * alert( 'There is no data available' );
637
+ */
638
+ getData : function()
639
+ {
640
+ this.fire( 'beforeGetData' );
641
+
642
+ var eventData = this._.data;
643
+
644
+ if ( typeof eventData != 'string' )
645
+ {
646
+ var element = this.element;
647
+ if ( element && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
648
+ eventData = element.is( 'textarea' ) ? element.getValue() : element.getHtml();
649
+ else
650
+ eventData = '';
651
+ }
652
+
653
+ eventData = { dataValue : eventData };
654
+
655
+ // Fire "getData" so data manipulation may happen.
656
+ this.fire( 'getData', eventData );
657
+
658
+ return eventData.dataValue;
659
+ },
660
+
661
+ /**
662
+ * Gets the "raw data" currently available in the editor. This is a
663
+ * fast method which returns the data as is, without processing, so it is
664
+ * not recommended to use it on resulting pages. Instead it can be used
665
+ * combined with the <code>{@link #loadSnapshot}</code> method in order
666
+ * to be able to automatically save the editor data from time to time
667
+ * while the user is using the editor, to avoid data loss, without risking
668
+ * performance issues.
669
+ * @see CKEDITOR.editor.getData
670
+ * @example
671
+ * alert( editor.getSnapshot() );
672
+ */
673
+ getSnapshot : function()
674
+ {
675
+ var data = this.fire( 'getSnapshot' );
676
+
677
+ if ( typeof data != 'string' )
678
+ {
679
+ var element = this.element;
680
+ if ( element && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
681
+ data = element.is( 'textarea' ) ? element.getValue() : element.getHtml();
682
+ }
683
+
684
+ return data;
685
+ },
686
+
687
+ /**
688
+ * Loads "raw data" into the editor. The data is loaded with processing
689
+ * straight to the editing area. It should not be used as a way to load
690
+ * any kind of data, but instead in combination with
691
+ * <code>{@link #getSnapshot}</code> produced data.
692
+ * @see CKEDITOR.editor.setData
693
+ * @example
694
+ * var data = editor.getSnapshot();
695
+ * editor.<strong>loadSnapshot( data )</strong>;
696
+ */
697
+ loadSnapshot : function( snapshot )
698
+ {
699
+ this.fire( 'loadSnapshot', snapshot );
700
+ },
701
+
702
+ /**
703
+ * Sets the editor data. The data must be provided in the raw format (HTML).<br />
704
+ * <br />
705
+ * Note that this method is asynchronous. The <code>callback</code> parameter must
706
+ * be used if interaction with the editor is needed after setting the data.
707
+ * @param {String} data HTML code to replace the curent content in the
708
+ * editor.
709
+ * @param {Function} callback Function to be called after the <code>setData</code>
710
+ * is completed.
711
+ *@param {Boolean} internal Whether to suppress any event firing when copying data
712
+ * internally inside the editor.
713
+ * @example
714
+ * CKEDITOR.instances.editor1.<strong>setData</strong>( '&lt;p&gt;This is the editor data.&lt;/p&gt;' );
715
+ * @example
716
+ * CKEDITOR.instances.editor1.<strong>setData</strong>( '&lt;p&gt;Some other editor data.&lt;/p&gt;', function()
717
+ * {
718
+ * this.checkDirty(); // true
719
+ * });
720
+ */
721
+ setData : function( data , callback, internal )
722
+ {
723
+ if( callback )
724
+ {
725
+ this.on( 'dataReady', function( evt )
726
+ {
727
+ evt.removeListener();
728
+ callback.call( evt.editor );
729
+ } );
730
+ }
731
+
732
+ // Fire "setData" so data manipulation may happen.
733
+ var eventData = { dataValue : data };
734
+ !internal && this.fire( 'setData', eventData );
735
+
736
+ this._.data = eventData.dataValue;
737
+
738
+ !internal && this.fire( 'afterSetData', eventData );
739
+ },
740
+
741
+ /**
742
+ * Puts or restores the editor into read-only state. When in read-only,
743
+ * the user is not able to change the editor contents, but can still use
744
+ * some editor features. This function sets the <code>{@link CKEDITOR.config.readOnly}</code>
745
+ * property of the editor, firing the <code>{@link CKEDITOR.editor#readOnly}</code> event.<br><br>
746
+ * <strong>Note:</strong> the current editing area will be reloaded.
747
+ * @param {Boolean} [isReadOnly] Indicates that the editor must go
748
+ * read-only (<code>true</code>, default) or be restored and made editable
749
+ * (<code>false</code>).
750
+ * @since 3.6
751
+ */
752
+ setReadOnly : function( isReadOnly )
753
+ {
754
+ isReadOnly = ( isReadOnly == undefined ) || isReadOnly;
755
+
756
+ if ( this.readOnly != isReadOnly )
757
+ {
758
+ this.readOnly = isReadOnly;
759
+
760
+ // Fire the readOnly event so the editor features can update
761
+ // their state accordingly.
762
+ this.fire( 'readOnly' );
763
+ }
764
+ },
765
+
766
+ /**
767
+ * Inserts HTML code into the currently selected position in the editor in WYSIWYG mode.
768
+ * @param {String} data HTML code to be inserted into the editor.
769
+ * @example
770
+ * CKEDITOR.instances.editor1.<strong>insertHtml( '&lt;p&gt;This is a new paragraph.&lt;/p&gt;' )</strong>;
771
+ */
772
+ insertHtml : function( data )
773
+ {
774
+ this.fire( 'insertHtml', data );
775
+ },
776
+
777
+ /**
778
+ * Insert text content into the currently selected position in the
779
+ * editor in WYSIWYG mode. The styles of the selected element will be applied to the inserted text.
780
+ * Spaces around the text will be leaving untouched.
781
+ * <strong>Note:</strong> two subsequent line-breaks will introduce one paragraph. This depends on <code>{@link CKEDITOR.config.enterMode}</code>;
782
+ * A single line-break will be instead translated into one &lt;br /&gt;.
783
+ * @since 3.5
784
+ * @param {String} text Text to be inserted into the editor.
785
+ * @example
786
+ * CKEDITOR.instances.editor1.<strong>insertText( ' line1 \n\n line2' )</strong>;
787
+ */
788
+ insertText : function( text )
789
+ {
790
+ text = text.replace(/\n\s*/g, '\n\n');
791
+ this.fire( 'insertText', text );
792
+ },
793
+
794
+ /**
795
+ * Inserts an element into the currently selected position in the
796
+ * editor in WYSIWYG mode.
797
+ * @param {CKEDITOR.dom.element} element The element to be inserted
798
+ * into the editor.
799
+ * @example
800
+ * var element = CKEDITOR.dom.element.createFromHtml( '&lt;img src="hello.png" border="0" title="Hello" /&gt;' );
801
+ * CKEDITOR.instances.editor1.<strong>insertElement( element )</strong>;
802
+ */
803
+ insertElement : function( element )
804
+ {
805
+ this.fire( 'insertElement', element );
806
+ },
807
+
808
+ /**
809
+ * Checks whether the current editor contents contain changes when
810
+ * compared to the contents loaded into the editor at startup, or to
811
+ * the contents available in the editor when <code>{@link #resetDirty}</code>
812
+ * was called.
813
+ * @returns {Boolean} "true" is the contents contain changes.
814
+ * @example
815
+ * function beforeUnload( e )
816
+ * {
817
+ * if ( CKEDITOR.instances.editor1.<strong>checkDirty()</strong> )
818
+ * return e.returnValue = "You will lose the changes made in the editor.";
819
+ * }
820
+ *
821
+ * if ( window.addEventListener )
822
+ * window.addEventListener( 'beforeunload', beforeUnload, false );
823
+ * else
824
+ * window.attachEvent( 'onbeforeunload', beforeUnload );
825
+ */
826
+ checkDirty : function()
827
+ {
828
+ return ( this.mayBeDirty && this._.previousValue !== this.getSnapshot() );
829
+ },
830
+
831
+ /**
832
+ * Resets the "dirty state" of the editor so subsequent calls to
833
+ * <code>{@link #checkDirty}</code> will return <code>false</code> if the user will not
834
+ * have made further changes to the contents.
835
+ * @example
836
+ * alert( editor.checkDirty() ); // E.g. "true"
837
+ * editor.<strong>resetDirty()</strong>;
838
+ * alert( editor.checkDirty() ); // "false"
839
+ */
840
+ resetDirty : function()
841
+ {
842
+ if ( this.mayBeDirty )
843
+ this._.previousValue = this.getSnapshot();
844
+ },
845
+
846
+ /**
847
+ * Updates the <code>&lt;textarea&gt;</code> element that was replaced by the editor with
848
+ * the current data available in the editor.
849
+ * @see CKEDITOR.editor.element
850
+ * @example
851
+ * CKEDITOR.instances.editor1.updateElement();
852
+ * alert( document.getElementById( 'editor1' ).value ); // The current editor data.
853
+ */
854
+ updateElement : function()
855
+ {
856
+ var element = this.element;
857
+ if ( element && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
858
+ {
859
+ var data = this.getData();
860
+
861
+ if ( this.config.htmlEncodeOutput )
862
+ data = CKEDITOR.tools.htmlEncode( data );
863
+
864
+ if ( element.is( 'textarea' ) )
865
+ element.setValue( data );
866
+ else
867
+ element.setHtml( data );
868
+ }
869
+ }
870
+ });
871
+
872
+ CKEDITOR.on( 'loaded', function()
873
+ {
874
+ // Run the full initialization for pending editors.
875
+ var pending = CKEDITOR.editor._pending;
876
+ if ( pending )
877
+ {
878
+ delete CKEDITOR.editor._pending;
879
+
880
+ for ( var i = 0 ; i < pending.length ; i++ )
881
+ pending[ i ]._init();
882
+ }
883
+ });
884
+
885
+ /**
886
+ * Whether to escape HTML when the editor updates the original input element.
887
+ * @name CKEDITOR.config.htmlEncodeOutput
888
+ * @since 3.1
889
+ * @type Boolean
890
+ * @default false
891
+ * @example
892
+ * config.htmlEncodeOutput = true;
893
+ */
894
+
895
+ /**
896
+ * If <code>true</code>, makes the editor start in read-only state. Otherwise, it will check
897
+ * if the linked <code>&lt;textarea&gt;</code> element has the <code>disabled</code> attribute.
898
+ * @name CKEDITOR.config.readOnly
899
+ * @see CKEDITOR.editor#setReadOnly
900
+ * @type Boolean
901
+ * @default false
902
+ * @since 3.6
903
+ * @example
904
+ * config.readOnly = true;
905
+ */
906
+
907
+ /**
908
+ * Fired when a CKEDITOR instance is created, but still before initializing it.
909
+ * To interact with a fully initialized instance, use the
910
+ * <code>{@link CKEDITOR#instanceReady}</code> event instead.
911
+ * @name CKEDITOR#instanceCreated
912
+ * @event
913
+ * @param {CKEDITOR.editor} editor The editor instance that has been created.
914
+ */
915
+
916
+ /**
917
+ * Fired when a CKEDITOR instance is destroyed.
918
+ * @name CKEDITOR#instanceDestroyed
919
+ * @event
920
+ * @param {CKEDITOR.editor} editor The editor instance that has been destroyed.
921
+ */
922
+
923
+ /**
924
+ * Fired when the language is loaded into the editor instance.
925
+ * @name CKEDITOR.editor#langLoaded
926
+ * @event
927
+ * @since 3.6.1
928
+ * @param {CKEDITOR.editor} editor This editor instance.
929
+ */
930
+
931
+ /**
932
+ * Fired when all plugins are loaded and initialized into the editor instance.
933
+ * @name CKEDITOR.editor#pluginsLoaded
934
+ * @event
935
+ * @param {CKEDITOR.editor} editor This editor instance.
936
+ */
937
+
938
+ /**
939
+ * Fired before the command execution when <code>{@link #execCommand}</code> is called.
940
+ * @name CKEDITOR.editor#beforeCommandExec
941
+ * @event
942
+ * @param {CKEDITOR.editor} editor This editor instance.
943
+ * @param {String} data.name The command name.
944
+ * @param {Object} data.commandData The data to be sent to the command. This
945
+ * can be manipulated by the event listener.
946
+ * @param {CKEDITOR.command} data.command The command itself.
947
+ */
948
+
949
+ /**
950
+ * Fired after the command execution when <code>{@link #execCommand}</code> is called.
951
+ * @name CKEDITOR.editor#afterCommandExec
952
+ * @event
953
+ * @param {CKEDITOR.editor} editor This editor instance.
954
+ * @param {String} data.name The command name.
955
+ * @param {Object} data.commandData The data sent to the command.
956
+ * @param {CKEDITOR.command} data.command The command itself.
957
+ * @param {Object} data.returnValue The value returned by the command execution.
958
+ */
959
+
960
+ /**
961
+ * Fired when the custom configuration file is loaded, before the final
962
+ * configurations initialization.<br />
963
+ * <br />
964
+ * Custom configuration files can be loaded thorugh the
965
+ * <code>{@link CKEDITOR.config.customConfig}</code> setting. Several files can be loaded
966
+ * by changing this setting.
967
+ * @name CKEDITOR.editor#customConfigLoaded
968
+ * @event
969
+ * @param {CKEDITOR.editor} editor This editor instance.
970
+ */
971
+
972
+ /**
973
+ * Fired once the editor configuration is ready (loaded and processed).
974
+ * @name CKEDITOR.editor#configLoaded
975
+ * @event
976
+ * @param {CKEDITOR.editor} editor This editor instance.
977
+ */
978
+
979
+ /**
980
+ * Fired when this editor instance is destroyed. The editor at this
981
+ * point is not usable and this event should be used to perform the clean-up
982
+ * in any plugin.
983
+ * @name CKEDITOR.editor#destroy
984
+ * @event
985
+ */
986
+
987
+ /**
988
+ * Internal event to get the current data.
989
+ * @name CKEDITOR.editor#beforeGetData
990
+ * @event
991
+ */
992
+
993
+ /**
994
+ * Internal event to perform the <code>#getSnapshot</code> call.
995
+ * @name CKEDITOR.editor#getSnapshot
996
+ * @event
997
+ */
998
+
999
+ /**
1000
+ * Internal event to perform the <code>#loadSnapshot</code> call.
1001
+ * @name CKEDITOR.editor#loadSnapshot
1002
+ * @event
1003
+ */
1004
+
1005
+ /**
1006
+ * Event fired before the <code>#getData</code> call returns allowing additional manipulation.
1007
+ * @name CKEDITOR.editor#getData
1008
+ * @event
1009
+ * @param {CKEDITOR.editor} editor This editor instance.
1010
+ * @param {String} data.dataValue The data that will be returned.
1011
+ */
1012
+
1013
+ /**
1014
+ * Event fired before the <code>#setData</code> call is executed allowing additional manipulation.
1015
+ * @name CKEDITOR.editor#setData
1016
+ * @event
1017
+ * @param {CKEDITOR.editor} editor This editor instance.
1018
+ * @param {String} data.dataValue The data that will be used.
1019
+ */
1020
+
1021
+ /**
1022
+ * Event fired at the end of the <code>#setData</code> call execution. Usually it is better to use the
1023
+ * <code>{@link CKEDITOR.editor.prototype.dataReady}</code> event.
1024
+ * @name CKEDITOR.editor#afterSetData
1025
+ * @event
1026
+ * @param {CKEDITOR.editor} editor This editor instance.
1027
+ * @param {String} data.dataValue The data that has been set.
1028
+ */
1029
+
1030
+ /**
1031
+ * Internal event to perform the <code>#insertHtml</code> call
1032
+ * @name CKEDITOR.editor#insertHtml
1033
+ * @event
1034
+ * @param {CKEDITOR.editor} editor This editor instance.
1035
+ * @param {String} data The HTML to insert.
1036
+ */
1037
+
1038
+ /**
1039
+ * Internal event to perform the <code>#insertText</code> call
1040
+ * @name CKEDITOR.editor#insertText
1041
+ * @event
1042
+ * @param {CKEDITOR.editor} editor This editor instance.
1043
+ * @param {String} text The text to insert.
1044
+ */
1045
+
1046
+ /**
1047
+ * Internal event to perform the <code>#insertElement</code> call
1048
+ * @name CKEDITOR.editor#insertElement
1049
+ * @event
1050
+ * @param {CKEDITOR.editor} editor This editor instance.
1051
+ * @param {Object} element The element to insert.
1052
+ */
1053
+
1054
+ /**
1055
+ * Event fired after the <code>{@link CKEDITOR.editor#readOnly}</code> property changes.
1056
+ * @name CKEDITOR.editor#readOnly
1057
+ * @event
1058
+ * @since 3.6
1059
+ * @param {CKEDITOR.editor} editor This editor instance.
1060
+ */