radiant-ck_editor_filter-extension 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (531) hide show
  1. data/README.markdown +7 -1
  2. data/VERSION +1 -1
  3. data/ck_editor_filter_extension.rb +1 -1
  4. data/public/javascripts/extensions/ck_editor_filter/ckeditor/CHANGES.html +1130 -373
  5. data/public/javascripts/extensions/ck_editor_filter/ckeditor/INSTALL.html +2 -2
  6. data/public/javascripts/extensions/ck_editor_filter/ckeditor/LICENSE.html +2 -2
  7. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/adobeair/application.xml +32 -0
  8. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/adobeair/run.bat +9 -0
  9. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/adobeair/run.sh +8 -0
  10. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/adobeair/sample.html +45 -0
  11. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/ajax.html +23 -25
  12. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/api.html +64 -24
  13. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/api_dialog.html +36 -19
  14. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/api_dialog/my_dialog.js +1 -1
  15. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/asp/advanced.asp +105 -0
  16. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/asp/events.asp +136 -0
  17. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/asp/index.html +103 -0
  18. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/asp/replace.asp +72 -0
  19. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/asp/replaceall.asp +77 -0
  20. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/asp/sample_posteddata.asp +46 -0
  21. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/asp/standalone.asp +72 -0
  22. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/assets/_posteddata.php +59 -0
  23. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/assets/output_for_flash.fla +0 -0
  24. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/assets/output_for_flash.swf +0 -0
  25. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/assets/output_xhtml.css +204 -0
  26. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/assets/parsesample.css +70 -0
  27. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/assets/swfobject.js +18 -0
  28. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/autogrow.html +103 -0
  29. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/bbcode.html +136 -0
  30. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/devtools.html +94 -0
  31. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/divreplace.html +27 -10
  32. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/enterkey.html +39 -12
  33. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/fullpage.html +33 -13
  34. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/index.html +88 -25
  35. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/jqueryadapter.html +34 -8
  36. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/output_for_flash.html +275 -0
  37. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/output_html.html +285 -0
  38. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/output_xhtml.html +181 -0
  39. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/php/advanced.php +56 -29
  40. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/php/events.php +58 -35
  41. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/php/index.html +47 -0
  42. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/php/replace.php +48 -24
  43. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/php/replaceall.php +50 -30
  44. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/php/standalone.php +52 -33
  45. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/placeholder.html +81 -0
  46. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/readonly.html +91 -0
  47. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/replacebyclass.html +22 -7
  48. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/replacebycode.html +25 -8
  49. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/sample.css +85 -3
  50. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/sample.js +1 -1
  51. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/sample_posteddata.php +21 -59
  52. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/sharedspaces.html +32 -10
  53. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/skins.html +38 -11
  54. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/stylesheetparser.html +93 -0
  55. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/tableresize.html +115 -0
  56. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/ui_color.html +49 -7
  57. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_samples/ui_languages.html +53 -23
  58. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/adapters/jquery.js +17 -8
  59. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/_bootstrap.js +21 -18
  60. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/ckeditor.js +42 -4
  61. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/ckeditor_base.js +66 -29
  62. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/ckeditor_basic.js +12 -15
  63. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/command.js +138 -2
  64. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/commanddefinition.js +59 -16
  65. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/config.js +142 -18
  66. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dataprocessor.js +6 -7
  67. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom.js +2 -3
  68. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/comment.js +1 -1
  69. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/document.js +29 -2
  70. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/documentfragment.js +3 -3
  71. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/domobject.js +59 -11
  72. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/element.js +249 -27
  73. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/elementpath.js +18 -3
  74. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/event.js +1 -1
  75. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/node.js +84 -56
  76. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/nodelist.js +4 -1
  77. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/range.js +345 -48
  78. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/rangelist.js +213 -0
  79. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/text.js +6 -1
  80. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/walker.js +40 -29
  81. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dom/window.js +1 -1
  82. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/dtd.js +15 -11
  83. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/editor.js +336 -15
  84. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/editor_basic.js +19 -12
  85. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/env.js +80 -17
  86. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/event.js +12 -6
  87. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/eventInfo.js +5 -5
  88. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/focusmanager.js +27 -12
  89. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/htmlparser.js +17 -5
  90. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/htmlparser/basicwriter.js +3 -3
  91. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/htmlparser/cdata.js +1 -1
  92. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/htmlparser/comment.js +1 -1
  93. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/htmlparser/element.js +14 -5
  94. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/htmlparser/filter.js +34 -8
  95. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/htmlparser/fragment.js +105 -108
  96. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/htmlparser/text.js +1 -1
  97. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/lang.js +12 -7
  98. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/loader.js +7 -9
  99. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/plugindefinition.js +18 -1
  100. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/plugins.js +21 -3
  101. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/resourcemanager.js +1 -1
  102. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/scriptloader.js +7 -25
  103. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/skins.js +5 -25
  104. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/themes.js +1 -1
  105. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/tools.js +61 -12
  106. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/ui.js +13 -1
  107. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/_languages.js +2 -1
  108. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/_translationstatus.txt +58 -57
  109. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/af.js +521 -410
  110. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/ar.js +160 -49
  111. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/bg.js +162 -51
  112. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/bn.js +162 -51
  113. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/bs.js +162 -51
  114. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/ca.js +260 -149
  115. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/cs.js +233 -122
  116. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/cy.js +159 -48
  117. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/da.js +162 -51
  118. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/de.js +217 -106
  119. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/el.js +162 -51
  120. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/en-au.js +166 -55
  121. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/en-ca.js +166 -55
  122. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/en-gb.js +277 -166
  123. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/en.js +166 -55
  124. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/eo.js +162 -51
  125. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/es.js +182 -71
  126. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/et.js +162 -51
  127. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/eu.js +162 -51
  128. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/fa.js +162 -51
  129. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/fi.js +178 -67
  130. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/fo.js +339 -228
  131. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/fr-ca.js +162 -51
  132. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/fr.js +261 -150
  133. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/gl.js +162 -51
  134. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/gu.js +162 -51
  135. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/he.js +179 -68
  136. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/hi.js +162 -51
  137. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/hr.js +162 -51
  138. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/hu.js +341 -230
  139. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/is.js +162 -51
  140. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/it.js +162 -51
  141. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/ja.js +195 -84
  142. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/ka.js +810 -0
  143. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/km.js +162 -51
  144. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/ko.js +162 -51
  145. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/lt.js +162 -51
  146. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/lv.js +162 -51
  147. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/mn.js +162 -51
  148. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/ms.js +162 -51
  149. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/nb.js +286 -175
  150. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/nl.js +178 -67
  151. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/no.js +286 -175
  152. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/pl.js +279 -168
  153. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/pt-br.js +318 -208
  154. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/pt.js +162 -51
  155. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/ro.js +162 -51
  156. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/ru.js +159 -48
  157. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/sk.js +192 -81
  158. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/sl.js +161 -50
  159. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/sr-latn.js +162 -51
  160. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/sr.js +162 -51
  161. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/sv.js +357 -247
  162. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/th.js +162 -51
  163. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/tr.js +345 -235
  164. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/uk.js +387 -276
  165. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/vi.js +336 -225
  166. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/zh-cn.js +271 -160
  167. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/lang/zh.js +162 -51
  168. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/a11yhelp/dialogs/a11yhelp.js +16 -5
  169. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/a11yhelp/lang/en.js +3 -3
  170. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/a11yhelp/lang/he.js +216 -0
  171. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/a11yhelp/plugin.js +4 -3
  172. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/about/dialogs/about.js +4 -1
  173. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/about/plugin.js +2 -1
  174. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/adobeair/plugin.js +228 -0
  175. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/ajax/plugin.js +152 -0
  176. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/autogrow/plugin.js +88 -0
  177. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/basicstyles/plugin.js +27 -19
  178. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/bbcode/plugin.js +924 -0
  179. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/bidi/plugin.js +331 -0
  180. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/blockquote/plugin.js +8 -4
  181. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/button/plugin.js +70 -55
  182. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/clipboard/dialogs/paste.js +115 -78
  183. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/clipboard/plugin.js +133 -69
  184. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/colorbutton/plugin.js +91 -23
  185. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/colordialog/dialogs/colordialog.js +192 -43
  186. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/colordialog/plugin.js +12 -10
  187. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/contextmenu/plugin.js +124 -221
  188. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/devtools/lang/en.js +16 -0
  189. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/devtools/plugin.js +173 -0
  190. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/dialog/dialogDefinition.js +840 -56
  191. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/dialog/plugin.js +652 -301
  192. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/dialogadvtab/plugin.js +205 -0
  193. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/dialogui/plugin.js +179 -50
  194. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/div/dialogs/div.js +40 -40
  195. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/div/plugin.js +4 -4
  196. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/docprops/dialogs/docprops.js +686 -0
  197. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/docprops/plugin.js +22 -0
  198. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/domiterator/plugin.js +59 -53
  199. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/editingblock/plugin.js +62 -17
  200. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/elementspath/plugin.js +137 -108
  201. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/enterkey/plugin.js +117 -47
  202. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/entities/plugin.js +95 -45
  203. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/fakeobjects/plugin.js +22 -16
  204. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/filebrowser/plugin.js +75 -30
  205. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/find/dialogs/find.js +111 -69
  206. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/find/plugin.js +2 -1
  207. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/flash/dialogs/flash.js +28 -20
  208. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/flash/plugin.js +14 -11
  209. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/floatpanel/plugin.js +50 -21
  210. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/font/plugin.js +3 -2
  211. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/format/plugin.js +17 -13
  212. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/forms/dialogs/button.js +38 -55
  213. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/forms/dialogs/checkbox.js +21 -11
  214. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/forms/dialogs/form.js +6 -6
  215. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/forms/dialogs/hiddenfield.js +26 -17
  216. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/forms/dialogs/radio.js +6 -6
  217. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/forms/dialogs/select.js +13 -7
  218. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/forms/dialogs/textarea.js +4 -4
  219. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/forms/dialogs/textfield.js +11 -5
  220. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/forms/images/hiddenfield.gif +0 -0
  221. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/forms/plugin.js +112 -41
  222. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/horizontalrule/plugin.js +1 -1
  223. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/htmldataprocessor/plugin.js +200 -63
  224. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/htmlwriter/plugin.js +26 -21
  225. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/iframe/dialogs/iframe.js +257 -0
  226. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/iframe/images/placeholder.png +0 -0
  227. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/iframe/plugin.js +106 -0
  228. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/iframedialog/plugin.js +59 -7
  229. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/image/dialogs/image.js +243 -218
  230. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/image/plugin.js +19 -2
  231. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/indent/plugin.js +335 -223
  232. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/justify/plugin.js +115 -30
  233. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/keystrokes/plugin.js +3 -7
  234. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/link/dialogs/anchor.js +85 -40
  235. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/link/dialogs/link.js +163 -184
  236. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/link/plugin.js +180 -32
  237. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/list/plugin.js +165 -81
  238. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/listblock/plugin.js +11 -6
  239. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/liststyle/dialogs/liststyle.js +204 -0
  240. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/liststyle/plugin.js +66 -0
  241. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/maximize/plugin.js +109 -40
  242. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/menu/plugin.js +166 -67
  243. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/menubutton/plugin.js +12 -7
  244. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/newpage/plugin.js +3 -3
  245. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/pagebreak/plugin.js +95 -29
  246. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/panel/plugin.js +43 -20
  247. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/panelbutton/plugin.js +10 -11
  248. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/pastefromword/filter/default.js +316 -119
  249. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/pastefromword/plugin.js +32 -11
  250. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/pastetext/dialogs/pastetext.js +19 -29
  251. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/pastetext/plugin.js +15 -79
  252. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/placeholder/dialogs/placeholder.js +71 -0
  253. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/placeholder/lang/en.js +16 -0
  254. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/placeholder/lang/he.js +16 -0
  255. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/placeholder/placeholder.gif +0 -0
  256. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/placeholder/plugin.js +171 -0
  257. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/popup/plugin.js +9 -7
  258. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/preview/plugin.js +3 -2
  259. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/print/plugin.js +2 -1
  260. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/removeformat/plugin.js +89 -36
  261. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/resize/plugin.js +71 -18
  262. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/richcombo/plugin.js +40 -29
  263. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/save/plugin.js +2 -1
  264. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/scayt/dialogs/options.js +114 -110
  265. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/scayt/plugin.js +531 -170
  266. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/selection/plugin.js +791 -331
  267. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showblocks/images/block_address.png +0 -0
  268. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showblocks/images/block_blockquote.png +0 -0
  269. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showblocks/images/block_div.png +0 -0
  270. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showblocks/images/block_h1.png +0 -0
  271. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showblocks/images/block_h2.png +0 -0
  272. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showblocks/images/block_h3.png +0 -0
  273. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showblocks/images/block_h4.png +0 -0
  274. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showblocks/images/block_h5.png +0 -0
  275. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showblocks/images/block_h6.png +0 -0
  276. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showblocks/images/block_p.png +0 -0
  277. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showblocks/images/block_pre.png +0 -0
  278. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showblocks/plugin.js +14 -8
  279. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/showborders/plugin.js +63 -26
  280. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/smiley/dialogs/smiley.js +31 -22
  281. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/smiley/plugin.js +15 -6
  282. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/sourcearea/plugin.js +18 -14
  283. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/specialchar/dialogs/specialchar.js +36 -59
  284. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/specialchar/lang/en.js +89 -0
  285. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/specialchar/plugin.js +45 -4
  286. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/styles/plugin.js +632 -212
  287. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/{stylescombo → styles}/styles/default.js +5 -2
  288. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/stylescombo/plugin.js +77 -140
  289. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/stylesheetparser/plugin.js +143 -0
  290. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/tab/plugin.js +109 -3
  291. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/table/dialogs/table.js +106 -23
  292. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/table/plugin.js +11 -3
  293. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/tableresize/plugin.js +450 -0
  294. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/tabletools/dialogs/tableCell.js +66 -64
  295. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/tabletools/plugin.js +348 -179
  296. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/templates/dialogs/templates.js +41 -36
  297. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/templates/plugin.js +3 -4
  298. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/templates/templates/default.js +2 -2
  299. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/toolbar/plugin.js +193 -122
  300. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/uicolor/dialogs/uicolor.js +6 -5
  301. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/uicolor/lang/en.js +1 -1
  302. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/uicolor/lang/he.js +15 -0
  303. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/uicolor/plugin.js +2 -2
  304. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/uicolor/yui/assets/yui.css +1 -1
  305. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/undo/plugin.js +73 -12
  306. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/wsc/dialogs/ciframe.html +1 -1
  307. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/wsc/dialogs/tmpFrameset.html +1 -1
  308. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/wsc/dialogs/wsc.css +1 -2
  309. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/wsc/dialogs/wsc.js +20 -4
  310. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/wsc/plugin.js +2 -2
  311. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/wysiwygarea/plugin.js +751 -251
  312. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/plugins/xml/plugin.js +170 -0
  313. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/dialog.css +116 -18
  314. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/editor.css +1 -1
  315. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/elementspath.css +2 -1
  316. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/icons.css +42 -2
  317. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/icons.png +0 -0
  318. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/icons_rtl.png +0 -0
  319. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/mainui.css +25 -5
  320. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/menu.css +36 -15
  321. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/panel.css +18 -17
  322. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/presets.css +1 -1
  323. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/reset.css +7 -1
  324. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/richcombo.css +27 -10
  325. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/skin.js +4 -36
  326. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/templates.css +16 -12
  327. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/kama/toolbar.css +69 -83
  328. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/dialog.css +111 -13
  329. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/editor.css +1 -1
  330. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/elementspath.css +2 -1
  331. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/icons.css +40 -1
  332. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/icons.png +0 -0
  333. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/icons_rtl.png +0 -0
  334. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/mainui.css +33 -7
  335. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/menu.css +37 -15
  336. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/panel.css +23 -22
  337. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/presets.css +1 -1
  338. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/reset.css +7 -1
  339. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/richcombo.css +40 -20
  340. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/skin.js +10 -17
  341. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/templates.css +16 -10
  342. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/office2003/toolbar.css +79 -32
  343. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/dialog.css +112 -13
  344. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/editor.css +1 -1
  345. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/elementspath.css +2 -1
  346. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/icons.css +40 -1
  347. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/icons.png +0 -0
  348. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/icons_rtl.png +0 -0
  349. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/mainui.css +25 -5
  350. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/menu.css +38 -16
  351. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/panel.css +22 -21
  352. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/presets.css +1 -1
  353. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/reset.css +7 -1
  354. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/richcombo.css +36 -23
  355. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/skin.js +10 -17
  356. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/templates.css +16 -10
  357. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/skins/v2/toolbar.css +67 -27
  358. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/themes/default/theme.js +106 -46
  359. data/public/javascripts/extensions/ck_editor_filter/ckeditor/adapters/jquery.js +2 -2
  360. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor.asp +955 -0
  361. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor.js +141 -117
  362. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor.pack +13 -7
  363. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor.php +1 -1
  364. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor_basic.js +4 -4
  365. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor_basic_source.js +2 -2
  366. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor_php4.php +27 -54
  367. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor_php5.php +26 -53
  368. data/public/javascripts/extensions/ck_editor_filter/ckeditor/ckeditor_source.js +2 -2
  369. data/public/javascripts/extensions/ck_editor_filter/ckeditor/config.js +1 -1
  370. data/public/javascripts/extensions/ck_editor_filter/ckeditor/contents.css +4 -16
  371. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/_languages.js +2 -2
  372. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/_translationstatus.txt +58 -57
  373. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/af.js +2 -2
  374. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ar.js +2 -2
  375. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/bg.js +2 -2
  376. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/bn.js +2 -2
  377. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/bs.js +2 -2
  378. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ca.js +2 -2
  379. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/cs.js +2 -2
  380. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/cy.js +2 -2
  381. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/da.js +2 -2
  382. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/de.js +2 -2
  383. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/el.js +2 -2
  384. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/en-au.js +2 -2
  385. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/en-ca.js +2 -2
  386. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/en-gb.js +2 -2
  387. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/en.js +2 -2
  388. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/eo.js +2 -2
  389. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/es.js +2 -2
  390. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/et.js +2 -2
  391. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/eu.js +2 -2
  392. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/fa.js +2 -2
  393. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/fi.js +2 -2
  394. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/fo.js +2 -2
  395. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/fr-ca.js +2 -2
  396. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/fr.js +2 -2
  397. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/gl.js +2 -2
  398. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/gu.js +2 -2
  399. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/he.js +2 -2
  400. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/hi.js +2 -2
  401. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/hr.js +2 -2
  402. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/hu.js +2 -2
  403. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/is.js +2 -2
  404. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/it.js +2 -2
  405. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ja.js +2 -2
  406. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ka.js +6 -0
  407. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/km.js +2 -2
  408. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ko.js +2 -2
  409. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/lt.js +2 -2
  410. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/lv.js +2 -2
  411. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/mn.js +2 -2
  412. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ms.js +2 -2
  413. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/nb.js +2 -2
  414. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/nl.js +2 -2
  415. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/no.js +2 -2
  416. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/pl.js +2 -2
  417. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/pt-br.js +2 -2
  418. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/pt.js +2 -2
  419. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ro.js +2 -2
  420. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/ru.js +2 -2
  421. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/sk.js +2 -2
  422. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/sl.js +2 -2
  423. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/sr-latn.js +2 -2
  424. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/sr.js +2 -2
  425. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/sv.js +2 -2
  426. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/th.js +2 -2
  427. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/tr.js +2 -2
  428. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/uk.js +2 -2
  429. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/vi.js +2 -2
  430. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/zh-cn.js +2 -2
  431. data/public/javascripts/extensions/ck_editor_filter/ckeditor/lang/zh.js +2 -2
  432. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +2 -2
  433. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/lang/en.js +2 -2
  434. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/a11yhelp/lang/he.js +6 -0
  435. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/about/dialogs/about.js +2 -2
  436. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/adobeair/plugin.js +6 -0
  437. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/ajax/plugin.js +6 -0
  438. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/autogrow/plugin.js +6 -0
  439. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/bbcode/plugin.js +9 -0
  440. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/clipboard/dialogs/paste.js +3 -3
  441. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/colordialog/dialogs/colordialog.js +3 -2
  442. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/devtools/lang/en.js +6 -0
  443. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/devtools/plugin.js +6 -0
  444. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/dialog/dialogDefinition.js +1 -1
  445. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/div/dialogs/div.js +3 -2
  446. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/docprops/dialogs/docprops.js +10 -0
  447. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/docprops/plugin.js +6 -0
  448. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/find/dialogs/find.js +5 -5
  449. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/flash/dialogs/flash.js +5 -5
  450. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/button.js +2 -2
  451. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/checkbox.js +2 -2
  452. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/form.js +2 -2
  453. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/hiddenfield.js +2 -2
  454. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/radio.js +2 -2
  455. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/select.js +4 -4
  456. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/textarea.js +2 -2
  457. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/dialogs/textfield.js +2 -2
  458. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/forms/images/hiddenfield.gif +0 -0
  459. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/iframe/dialogs/iframe.js +7 -0
  460. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/iframe/images/placeholder.png +0 -0
  461. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/iframedialog/plugin.js +2 -2
  462. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/image/dialogs/image.js +9 -9
  463. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/link/dialogs/anchor.js +2 -2
  464. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/link/dialogs/link.js +7 -7
  465. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/liststyle/dialogs/liststyle.js +6 -0
  466. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/pastefromword/filter/default.js +7 -6
  467. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/pastetext/dialogs/pastetext.js +2 -2
  468. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/placeholder/dialogs/placeholder.js +6 -0
  469. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/placeholder/lang/en.js +6 -0
  470. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/placeholder/lang/he.js +6 -0
  471. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/placeholder/placeholder.gif +0 -0
  472. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/placeholder/plugin.js +6 -0
  473. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/radiantpreview/images/radiant-preview.png +0 -0
  474. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/scayt/dialogs/options.js +4 -4
  475. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/scayt/dialogs/toolbar.css +1 -1
  476. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_address.png +0 -0
  477. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
  478. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_div.png +0 -0
  479. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
  480. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
  481. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
  482. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
  483. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
  484. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
  485. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_p.png +0 -0
  486. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
  487. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/smiley/dialogs/smiley.js +3 -3
  488. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/dialogs/specialchar.js +3 -3
  489. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/specialchar/lang/en.js +6 -0
  490. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/{stylescombo → styles}/styles/default.js +2 -2
  491. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/stylesheetparser/plugin.js +6 -0
  492. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/table/dialogs/table.js +5 -5
  493. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/tableresize/plugin.js +7 -0
  494. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/tabletools/dialogs/tableCell.js +4 -4
  495. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/templates/dialogs/templates.js +3 -3
  496. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/templates/templates/default.js +2 -2
  497. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/dialogs/uicolor.js +3 -3
  498. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/lang/en.js +1 -1
  499. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/lang/he.js +6 -0
  500. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/plugin.js +2 -2
  501. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/yui/assets/yui.css +2 -2
  502. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/uicolor/yui/yui.js +1 -1
  503. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/wsc/dialogs/ciframe.html +1 -1
  504. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +1 -1
  505. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/wsc/dialogs/wsc.css +2 -2
  506. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/wsc/dialogs/wsc.js +3 -3
  507. data/public/javascripts/extensions/ck_editor_filter/ckeditor/plugins/xml/plugin.js +6 -0
  508. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/dialog.css +5 -5
  509. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/editor.css +9 -8
  510. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/icons.png +0 -0
  511. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/icons_rtl.png +0 -0
  512. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/skin.js +3 -3
  513. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/kama/templates.css +2 -2
  514. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/dialog.css +5 -5
  515. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/editor.css +10 -9
  516. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/icons.png +0 -0
  517. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/icons_rtl.png +0 -0
  518. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/skin.js +2 -2
  519. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/office2003/templates.css +2 -2
  520. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/dialog.css +5 -4
  521. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/editor.css +9 -8
  522. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/icons.png +0 -0
  523. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/icons_rtl.png +0 -0
  524. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/skin.js +2 -2
  525. data/public/javascripts/extensions/ck_editor_filter/ckeditor/skins/v2/templates.css +2 -2
  526. data/public/javascripts/extensions/ck_editor_filter/ckeditor/themes/default/theme.js +4 -4
  527. data/public/javascripts/extensions/ck_editor_filter/radiant.ckeditor.js +21 -12
  528. metadata +94 -9
  529. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/ajax.js +0 -143
  530. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/imagecacher.js +0 -58
  531. data/public/javascripts/extensions/ck_editor_filter/ckeditor/_source/core/xml.js +0 -165
@@ -1,5 +1,5 @@
1
1
  /*
2
- Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
2
+ Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3
3
  For licensing, see LICENSE.html or http://ckeditor.com/license
4
4
  */
5
5
 
@@ -7,7 +7,8 @@ CKEDITOR.dialog.add( 'uicolor', function( editor )
7
7
  {
8
8
  var dialog, picker, pickerContents,
9
9
  // Actual UI color value.
10
- uiColor = editor.getUiColor();
10
+ uiColor = editor.getUiColor(),
11
+ pickerId = 'cke_uicolor_picker' + CKEDITOR.tools.getNextNumber();
11
12
 
12
13
  function setNewPickerColor( color )
13
14
  {
@@ -16,7 +17,7 @@ CKEDITOR.dialog.add( 'uicolor', function( editor )
16
17
  color = window.YAHOO.util.Color.hex2rgb( color.substr( 1 ) );
17
18
  picker.setValue( color, true );
18
19
  // Refresh picker UI.
19
- picker.refresh( 'cke_uicolor_picker' );
20
+ picker.refresh( pickerId );
20
21
  }
21
22
 
22
23
  function setNewUiColor( color, force )
@@ -33,7 +34,7 @@ CKEDITOR.dialog.add( 'uicolor', function( editor )
33
34
  {
34
35
  id : 'yuiColorPicker',
35
36
  type : 'html',
36
- html : "<div id='cke_uicolor_picker' style='width: 360px; height: 200px; position: relative;'></div>",
37
+ html : "<div id='" + pickerId + "' class='cke_uicolor_picker' style='width: 360px; height: 200px; position: relative;'></div>",
37
38
  onLoad : function( event )
38
39
  {
39
40
  var url = CKEDITOR.getUrl(
@@ -42,7 +43,7 @@ CKEDITOR.dialog.add( 'uicolor', function( editor )
42
43
  );
43
44
 
44
45
  // Create new color picker widget.
45
- picker = new window.YAHOO.widget.ColorPicker( "cke_uicolor_picker",
46
+ picker = new window.YAHOO.widget.ColorPicker( pickerId,
46
47
  {
47
48
  showhsvcontrols : true,
48
49
  showhexcontrols : true,
@@ -1,5 +1,5 @@
1
1
  /*
2
- Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
2
+ Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3
3
  For licensing, see LICENSE.html or http://ckeditor.com/license
4
4
  */
5
5
 
@@ -0,0 +1,15 @@
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
+ CKEDITOR.plugins.setLang( 'uicolor', 'he',
7
+ {
8
+ uicolor :
9
+ {
10
+ title : 'בחירת צבע ממשק משתמש',
11
+ preview : 'תצוגה מקדימה',
12
+ config : 'הדבק את הטקסט הבא לתוך הקובץ config.js',
13
+ predefined : 'קבוצות צבעים מוגדרות מראש'
14
+ }
15
+ });
@@ -1,12 +1,12 @@
1
1
  /*
2
- Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
2
+ Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3
3
  For licensing, see LICENSE.html or http://ckeditor.com/license
4
4
  */
5
5
 
6
6
  CKEDITOR.plugins.add( 'uicolor',
7
7
  {
8
8
  requires : [ 'dialog' ],
9
- lang : [ 'en' ],
9
+ lang : [ 'en', 'he' ],
10
10
 
11
11
  init : function( editor )
12
12
  {
@@ -12,4 +12,4 @@ Code licensed under the BSD License:
12
12
  http://developer.yahoo.net/yui/license.txt
13
13
  version: 2.7.0
14
14
  */
15
- #cke_uicolor_picker .yui-picker-panel{background:#e3e3e3;border-color:#888;}#cke_uicolor_picker .yui-picker-panel .hd{background-color:#ccc;font-size:100%;line-height:100%;border:1px solid #e3e3e3;font-weight:bold;overflow:hidden;padding:6px;color:#000;}#cke_uicolor_picker .yui-picker-panel .bd{background:#e8e8e8;margin:1px;height:200px;}#cke_uicolor_picker .yui-picker-panel .ft{background:#e8e8e8;margin:1px;padding:1px;}#cke_uicolor_picker .yui-picker{position:relative;}#cke_uicolor_picker .yui-picker-hue-thumb{cursor:default;width:18px;height:18px;top:-8px;left:-2px;z-index:9;position:absolute;}#cke_uicolor_picker .yui-picker-hue-bg{-moz-outline:none;outline:0 none;position:absolute;left:200px;height:183px;width:14px;background:url(hue_bg.png) no-repeat;top:4px;}#cke_uicolor_picker .yui-picker-bg{-moz-outline:none;outline:0 none;position:absolute;top:4px;left:4px;height:182px;width:182px;background-color:#F00;background-image:url(picker_mask.png);}*html #cke_uicolor_picker .yui-picker-bg{background-image:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='picker_mask.png',sizingMethod='scale');}#cke_uicolor_picker .yui-picker-mask{position:absolute;z-index:1;top:0;left:0;}#cke_uicolor_picker .yui-picker-thumb{cursor:default;width:11px;height:11px;z-index:9;position:absolute;top:-4px;left:-4px;}#cke_uicolor_picker .yui-picker-swatch{position:absolute;left:240px;top:4px;height:60px;width:55px;border:1px solid #888;}#cke_uicolor_picker .yui-picker-websafe-swatch{position:absolute;left:304px;top:4px;height:24px;width:24px;border:1px solid #888;}#cke_uicolor_picker .yui-picker-controls{position:absolute;top:72px;left:226px;font:1em monospace;}#cke_uicolor_picker .yui-picker-controls .hd{background:transparent;border-width:0!important;}#cke_uicolor_picker .yui-picker-controls .bd{height:100px;border-width:0!important;}#cke_uicolor_picker .yui-picker-controls ul{float:left;padding:0 2px 0 0;margin:0;}#cke_uicolor_picker .yui-picker-controls li{padding:2px;list-style:none;margin:0;}#cke_uicolor_picker .yui-picker-controls input{font-size:.85em;width:2.4em;}#cke_uicolor_picker .yui-picker-hex-controls{clear:both;padding:2px;}#cke_uicolor_picker .yui-picker-hex-controls input{width:4.6em;}#cke_uicolor_picker .yui-picker-controls a{font:1em arial,helvetica,clean,sans-serif;display:block;*display:inline-block;padding:0;color:#000;}
15
+ .cke_uicolor_picker .yui-picker-panel{background:#e3e3e3;border-color:#888;}.cke_uicolor_picker .yui-picker-panel .hd{background-color:#ccc;font-size:100%;line-height:100%;border:1px solid #e3e3e3;font-weight:bold;overflow:hidden;padding:6px;color:#000;}.cke_uicolor_picker .yui-picker-panel .bd{background:#e8e8e8;margin:1px;height:200px;}.cke_uicolor_picker .yui-picker-panel .ft{background:#e8e8e8;margin:1px;padding:1px;}.cke_uicolor_picker .yui-picker{position:relative;}.cke_uicolor_picker .yui-picker-hue-thumb{cursor:default;width:18px;height:18px;top:-8px;left:-2px;z-index:9;position:absolute;}.cke_uicolor_picker .yui-picker-hue-bg{-moz-outline:none;outline:0 none;position:absolute;left:200px;height:183px;width:14px;background:url(hue_bg.png) no-repeat;top:4px;}.cke_uicolor_picker .yui-picker-bg{-moz-outline:none;outline:0 none;position:absolute;top:4px;left:4px;height:182px;width:182px;background-color:#F00;background-image:url(picker_mask.png);}*html .cke_uicolor_picker .yui-picker-bg{background-image:none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='picker_mask.png',sizingMethod='scale');}.cke_uicolor_picker .yui-picker-mask{position:absolute;z-index:1;top:0;left:0;}.cke_uicolor_picker .yui-picker-thumb{cursor:default;width:11px;height:11px;z-index:9;position:absolute;top:-4px;left:-4px;}.cke_uicolor_picker .yui-picker-swatch{position:absolute;left:240px;top:4px;height:60px;width:55px;border:1px solid #888;}.cke_uicolor_picker .yui-picker-websafe-swatch{position:absolute;left:304px;top:4px;height:24px;width:24px;border:1px solid #888;}.cke_uicolor_picker .yui-picker-controls{position:absolute;top:72px;left:226px;font:1em monospace;}.cke_uicolor_picker .yui-picker-controls .hd{background:transparent;border-width:0!important;}.cke_uicolor_picker .yui-picker-controls .bd{height:100px;border-width:0!important;}.cke_uicolor_picker .yui-picker-controls ul{float:left;padding:0 2px 0 0;margin:0;}.cke_uicolor_picker .yui-picker-controls li{padding:2px;list-style:none;margin:0;}.cke_uicolor_picker .yui-picker-controls input{font-size:.85em;width:2.4em;}.cke_uicolor_picker .yui-picker-hex-controls{clear:both;padding:2px;}.cke_uicolor_picker .yui-picker-hex-controls input{width:4.6em;}.cke_uicolor_picker .yui-picker-controls a{font:1em arial,helvetica,clean,sans-serif;display:block;*display:inline-block;padding:0;color:#000;}
@@ -1,5 +1,5 @@
1
1
  /*
2
- Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
2
+ Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3
3
  For licensing, see LICENSE.html or http://ckeditor.com/license
4
4
  */
5
5
 
@@ -90,7 +90,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
90
90
  // Make the undo manager available only in wysiwyg mode.
91
91
  editor.on( 'mode', function()
92
92
  {
93
- undoManager.enabled = editor.mode == 'wysiwyg';
93
+ undoManager.enabled = editor.readOnly ? false : editor.mode == 'wysiwyg';
94
94
  undoManager.onChange();
95
95
  });
96
96
 
@@ -114,21 +114,54 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
114
114
  // Create the first image.
115
115
  editor.fire( 'saveSnapshot' );
116
116
  };
117
+
118
+ /**
119
+ * Update the undo stacks with any subsequent DOM changes after this call.
120
+ * @name CKEDITOR.editor#updateUndo
121
+ * @example
122
+ * function()
123
+ * {
124
+ * editor.fire( 'updateSnapshot' );
125
+ * ...
126
+ * // Ask to include subsequent (in this call stack) DOM changes to be
127
+ * // considered as part of the first snapshot.
128
+ * editor.fire( 'updateSnapshot' );
129
+ * editor.document.body.append(...);
130
+ * ...
131
+ * }
132
+ */
133
+ editor.on( 'updateSnapshot', function()
134
+ {
135
+ if ( undoManager.currentImage && new Image( editor ).equals( undoManager.currentImage ) )
136
+ setTimeout( function() { undoManager.update(); }, 0 );
137
+ });
117
138
  }
118
139
  });
119
140
 
120
- // Gets a snapshot image which represent the current document status.
121
- function Image( editor )
141
+ CKEDITOR.plugins.undo = {};
142
+
143
+ /**
144
+ * Undo snapshot which represents the current document status.
145
+ * @name CKEDITOR.plugins.undo.Image
146
+ * @param editor The editor instance on which the image is created.
147
+ */
148
+ var Image = CKEDITOR.plugins.undo.Image = function( editor )
122
149
  {
123
- var contents = editor.getSnapshot(),
150
+ this.editor = editor;
151
+
152
+ editor.fire( 'beforeUndoImage' );
153
+
154
+ var contents = editor.getSnapshot(),
124
155
  selection = contents && editor.getSelection();
125
156
 
126
157
  // In IE, we need to remove the expando attributes.
127
- CKEDITOR.env.ie && contents && ( contents = contents.replace( /\s+_cke_expando=".*?"/g, '' ) );
158
+ CKEDITOR.env.ie && contents && ( contents = contents.replace( /\s+data-cke-expando=".*?"/g, '' ) );
128
159
 
129
160
  this.contents = contents;
130
161
  this.bookmarks = selection && selection.createBookmarks2( true );
131
- }
162
+
163
+ editor.fire( 'afterUndoImage' );
164
+ };
132
165
 
133
166
  // Attributes that browser may changing them when setting via innerHTML.
134
167
  var protectedAttrs = /\b(?:href|src|name)="[^"]*?"/gi;
@@ -137,6 +170,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
137
170
  {
138
171
  equals : function( otherImage, contentOnly )
139
172
  {
173
+
140
174
  var thisContents = this.contents,
141
175
  otherContents = otherImage.contents;
142
176
 
@@ -238,7 +272,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
238
272
 
239
273
  // In IE, we need to remove the expando attributes.
240
274
  if ( CKEDITOR.env.ie )
241
- currentSnapshot = currentSnapshot.replace( /\s+_cke_expando=".*?"/g, '' );
275
+ currentSnapshot = currentSnapshot.replace( /\s+data-cke-expando=".*?"/g, '' );
242
276
 
243
277
  if ( beforeTypeImage.contents != currentSnapshot )
244
278
  {
@@ -310,7 +344,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
310
344
  */
311
345
  this.index = -1;
312
346
 
313
- this.limit = this.editor.config.undoStackSize;
347
+ this.limit = this.editor.config.undoStackSize || 20;
314
348
 
315
349
  this.currentImage = null;
316
350
 
@@ -397,8 +431,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
397
431
  // Update current image with the actual editor
398
432
  // content, since actualy content may differ from
399
433
  // the original snapshot due to dom change. (#4622)
400
- this.snapshots.splice( this.index, 1, ( this.currentImage = new Image( this.editor ) ) );
401
-
434
+ this.update();
402
435
  this.fireChange();
403
436
  },
404
437
 
@@ -497,6 +530,14 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
497
530
  }
498
531
 
499
532
  return false;
533
+ },
534
+
535
+ /**
536
+ * Update the last snapshot of the undo stack with the current editor content.
537
+ */
538
+ update : function()
539
+ {
540
+ this.snapshots.splice( this.index, 1, ( this.currentImage = new Image( this.editor ) ) );
500
541
  }
501
542
  };
502
543
  })();
@@ -504,12 +545,12 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
504
545
  /**
505
546
  * The number of undo steps to be saved. The higher this setting value the more
506
547
  * memory is used for it.
548
+ * @name CKEDITOR.config.undoStackSize
507
549
  * @type Number
508
550
  * @default 20
509
551
  * @example
510
552
  * config.undoStackSize = 50;
511
553
  */
512
- CKEDITOR.config.undoStackSize = 20;
513
554
 
514
555
  /**
515
556
  * Fired when the editor is about to save an undo snapshot. This event can be
@@ -517,3 +558,23 @@ CKEDITOR.config.undoStackSize = 20;
517
558
  * @name CKEDITOR.editor#saveSnapshot
518
559
  * @event
519
560
  */
561
+
562
+ /**
563
+ * Fired before an undo image is to be taken. An undo image represents the
564
+ * editor state at some point. It's saved into an undo store, so the editor is
565
+ * able to recover the editor state on undo and redo operations.
566
+ * @name CKEDITOR.editor#beforeUndoImage
567
+ * @since 3.5.3
568
+ * @see CKEDITOR.editor#afterUndoImage
569
+ * @event
570
+ */
571
+
572
+ /**
573
+ * Fired after an undo image is taken. An undo image represents the
574
+ * editor state at some point. It's saved into an undo store, so the editor is
575
+ * able to recover the editor state on undo and redo operations.
576
+ * @name CKEDITOR.editor#afterUndoImage
577
+ * @since 3.5.3
578
+ * @see CKEDITOR.editor#beforeUndoImage
579
+ * @event
580
+ */
@@ -1,6 +1,6 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2
2
  <!--
3
- Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
3
+ Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
4
4
  For licensing, see LICENSE.html or http://ckeditor.com/license
5
5
  -->
6
6
  <html>
@@ -1,6 +1,6 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
2
2
  <!--
3
- Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
3
+ Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
4
4
  For licensing, see LICENSE.html or http://ckeditor.com/license
5
5
  -->
6
6
  <html>
@@ -1,5 +1,5 @@
1
1
  /*
2
- Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
2
+ Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3
3
  For licensing, see LICENSE.html or http://ckeditor.com/license
4
4
  */
5
5
 
@@ -70,7 +70,6 @@ body, td, input, select, textarea
70
70
  margin-top: 1px;
71
71
  border-bottom: #d5d59d 1px solid;
72
72
  cursor: pointer;
73
- cursor: hand;
74
73
  }
75
74
 
76
75
  .PopupTabSelected
@@ -1,5 +1,5 @@
1
1
  /*
2
- Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
2
+ Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3
3
  For licensing, see LICENSE.html or http://ckeditor.com/license
4
4
  */
5
5
 
@@ -23,7 +23,7 @@ CKEDITOR.dialog.add( 'checkspell', function( editor )
23
23
  ' style="display:none;color:red;font-size:16px;font-weight:bold;padding-top:160px;text-align:center;z-index:11;">' +
24
24
  '</div><iframe' +
25
25
  ' src=""' +
26
- ' style="width:485px;background-color:#f1f1e3;height:380px"' +
26
+ ' style="width:100%;background-color:#f1f1e3;"' +
27
27
  ' frameborder="0"' +
28
28
  ' name="' + iframeId + '"' +
29
29
  ' id="' + iframeId + '"' +
@@ -129,6 +129,7 @@ CKEDITOR.dialog.add( 'checkspell', function( editor )
129
129
  {
130
130
  var contentArea = this.getContentElement( 'general', 'content' ).getElement();
131
131
  contentArea.setHtml( pasteArea );
132
+ contentArea.getChild( 2 ).setStyle( 'height', this._.contentSize.height + 'px' );
132
133
 
133
134
  if ( typeof( window.doSpell ) != 'function' )
134
135
  {
@@ -166,11 +167,26 @@ CKEDITOR.dialog.add( 'checkspell', function( editor )
166
167
  {
167
168
  type : 'html',
168
169
  id : 'content',
169
- style : 'width:485;height:380px',
170
- html : '<div></div>'
170
+ html : ''
171
171
  }
172
172
  ]
173
173
  }
174
174
  ]
175
175
  };
176
176
  });
177
+
178
+ // Expand the spell-check frame when dialog resized. (#6829)
179
+ CKEDITOR.dialog.on( 'resize', function( evt )
180
+ {
181
+ var data = evt.data,
182
+ dialog = data.dialog;
183
+
184
+ if ( dialog._.name == 'checkspell' )
185
+ {
186
+ var content = dialog.getContentElement( 'general', 'content' ).getElement(),
187
+ iframe = content && content.getChild( 2 );
188
+
189
+ iframe && iframe.setSize( 'height', data.height );
190
+ iframe && iframe.setSize( 'width', data.width );
191
+ }
192
+ });
@@ -1,5 +1,5 @@
1
1
  /*
2
- Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
2
+ Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3
3
  For licensing, see LICENSE.html or http://ckeditor.com/license
4
4
  */
5
5
 
@@ -18,7 +18,7 @@ CKEDITOR.plugins.add( 'wsc',
18
18
  var command = editor.addCommand( commandName, new CKEDITOR.dialogCommand( commandName ) );
19
19
 
20
20
  // SpellChecker doesn't work in Opera and with custom domain
21
- command.modes = { wysiwyg : ( !CKEDITOR.env.opera && document.domain == window.location.hostname ) };
21
+ command.modes = { wysiwyg : ( !CKEDITOR.env.opera && !CKEDITOR.env.air && document.domain == window.location.hostname ) };
22
22
 
23
23
  editor.ui.addButton( 'SpellChecker',
24
24
  {
@@ -1,5 +1,5 @@
1
1
  /*
2
- Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
2
+ Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3
3
  For licensing, see LICENSE.html or http://ckeditor.com/license
4
4
  */
5
5
 
@@ -10,141 +10,266 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
10
10
 
11
11
  (function()
12
12
  {
13
- // List of elements in which has no way to move editing focus outside.
14
- var nonExitableElementNames = { table:1,pre:1 };
15
-
16
13
  // Matching an empty paragraph at the end of document.
17
- var emptyParagraphRegexp = /\s*<(p|div|address|h\d|center)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\1>)?\s*(?=$|<\/body>)/gi;
14
+ var emptyParagraphRegexp = /(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi;
15
+
16
+ var notWhitespaceEval = CKEDITOR.dom.walker.whitespaces( true );
18
17
 
19
- function onInsertHtml( evt )
18
+ // Elements that could blink the cursor anchoring beside it, like hr, page-break. (#6554)
19
+ function nonEditable( element )
20
20
  {
21
- if ( this.mode == 'wysiwyg' )
21
+ return element.isBlockBoundary() && CKEDITOR.dtd.$empty[ element.getName() ];
22
+ }
23
+
24
+
25
+ function onInsert( insertFunc )
26
+ {
27
+ return function( evt )
22
28
  {
23
- this.focus();
24
- this.fire( 'saveSnapshot' );
29
+ if ( this.mode == 'wysiwyg' )
30
+ {
31
+ this.focus();
25
32
 
26
- var selection = this.getSelection(),
27
- data = evt.data;
33
+ this.fire( 'saveSnapshot' );
28
34
 
29
- if ( this.dataProcessor )
30
- data = this.dataProcessor.toHtml( data );
35
+ insertFunc.call( this, evt.data );
31
36
 
32
- if ( CKEDITOR.env.ie )
37
+ // Save snaps after the whole execution completed.
38
+ // This's a workaround for make DOM modification's happened after
39
+ // 'insertElement' to be included either, e.g. Form-based dialogs' 'commitContents'
40
+ // call.
41
+ CKEDITOR.tools.setTimeout( function()
42
+ {
43
+ this.fire( 'saveSnapshot' );
44
+ }, 0, this );
45
+ }
46
+ };
47
+ }
48
+
49
+ function doInsertHtml( data )
50
+ {
51
+ if ( this.dataProcessor )
52
+ data = this.dataProcessor.toHtml( data );
53
+
54
+ // HTML insertion only considers the first range.
55
+ var selection = this.getSelection(),
56
+ range = selection.getRanges()[ 0 ];
57
+
58
+ if ( range.checkReadOnly() )
59
+ return;
60
+
61
+ if ( CKEDITOR.env.ie )
62
+ {
63
+ var selIsLocked = selection.isLocked;
64
+
65
+ if ( selIsLocked )
66
+ selection.unlock();
67
+
68
+ var $sel = selection.getNative();
69
+
70
+ // Delete control selections to avoid IE bugs on pasteHTML.
71
+ if ( $sel.type == 'Control' )
72
+ $sel.clear();
73
+ else if ( selection.getType() == CKEDITOR.SELECTION_TEXT )
33
74
  {
34
- var selIsLocked = selection.isLocked;
75
+ // Due to IE bugs on handling contenteditable=false blocks
76
+ // (#6005), we need to make some checks and eventually
77
+ // delete the selection first.
35
78
 
36
- if ( selIsLocked )
37
- selection.unlock();
79
+ range = selection.getRanges()[ 0 ];
80
+ var endContainer = range && range.endContainer;
38
81
 
39
- var $sel = selection.getNative();
40
- if ( $sel.type == 'Control' )
41
- $sel.clear();
42
- $sel.createRange().pasteHTML( data );
82
+ if ( endContainer &&
83
+ endContainer.type == CKEDITOR.NODE_ELEMENT &&
84
+ endContainer.getAttribute( 'contenteditable' ) == 'false' &&
85
+ range.checkBoundaryOfElement( endContainer, CKEDITOR.END ) )
86
+ {
87
+ range.setEndAfter( range.endContainer );
88
+ range.deleteContents();
89
+ }
90
+ }
43
91
 
44
- if ( selIsLocked )
45
- this.getSelection().lock();
92
+ try
93
+ {
94
+ $sel.createRange().pasteHTML( data );
46
95
  }
47
- else
48
- this.document.$.execCommand( 'inserthtml', false, data );
96
+ catch (e) {}
49
97
 
50
- CKEDITOR.tools.setTimeout( function()
51
- {
52
- this.fire( 'saveSnapshot' );
53
- }, 0, this );
98
+ if ( selIsLocked )
99
+ this.getSelection().lock();
100
+ }
101
+ else
102
+ this.document.$.execCommand( 'inserthtml', false, data );
103
+
104
+ // Webkit does not scroll to the cursor position after pasting (#5558)
105
+ if ( CKEDITOR.env.webkit )
106
+ {
107
+ selection = this.getSelection();
108
+ selection.scrollIntoView();
54
109
  }
55
110
  }
56
111
 
57
- function onInsertElement( evt )
112
+ function doInsertText( text )
58
113
  {
59
- if ( this.mode == 'wysiwyg' )
60
- {
61
- this.focus();
62
- this.fire( 'saveSnapshot' );
114
+ var selection = this.getSelection(),
115
+ mode = selection.getStartElement().hasAscendant( 'pre', true ) ?
116
+ CKEDITOR.ENTER_BR : this.config.enterMode,
117
+ isEnterBrMode = mode == CKEDITOR.ENTER_BR;
63
118
 
64
- var element = evt.data,
65
- elementName = element.getName(),
66
- isBlock = CKEDITOR.dtd.$block[ elementName ];
119
+ var html = CKEDITOR.tools.htmlEncode( text.replace( /\r\n|\r/g, '\n' ) );
67
120
 
68
- var selection = this.getSelection(),
69
- ranges = selection.getRanges();
121
+ // Convert leading and trailing whitespaces into &nbsp;
122
+ html = html.replace( /^[ \t]+|[ \t]+$/g, function( match, offset, s )
123
+ {
124
+ if ( match.length == 1 ) // one space, preserve it
125
+ return '&nbsp;';
126
+ else if ( !offset ) // beginning of block
127
+ return CKEDITOR.tools.repeat( '&nbsp;', match.length - 1 ) + ' ';
128
+ else // end of block
129
+ return ' ' + CKEDITOR.tools.repeat( '&nbsp;', match.length - 1 );
130
+ } );
131
+
132
+ // Convert subsequent whitespaces into &nbsp;
133
+ html = html.replace( /[ \t]{2,}/g, function ( match )
134
+ {
135
+ return CKEDITOR.tools.repeat( '&nbsp;', match.length - 1 ) + ' ';
136
+ } );
137
+
138
+ var paragraphTag = mode == CKEDITOR.ENTER_P ? 'p' : 'div';
139
+
140
+ // Two line-breaks create one paragraph.
141
+ if ( !isEnterBrMode )
142
+ {
143
+ html = html.replace( /(\n{2})([\s\S]*?)(?:$|\1)/g,
144
+ function( match, group1, text )
145
+ {
146
+ return '<'+paragraphTag + '>' + text + '</' + paragraphTag + '>';
147
+ });
148
+ }
70
149
 
71
- var selIsLocked = selection.isLocked;
150
+ // One <br> per line-break.
151
+ html = html.replace( /\n/g, '<br>' );
72
152
 
73
- if ( selIsLocked )
74
- selection.unlock();
153
+ // Compensate padding <br> for non-IE.
154
+ if ( !( isEnterBrMode || CKEDITOR.env.ie ) )
155
+ {
156
+ html = html.replace( new RegExp( '<br>(?=</' + paragraphTag + '>)' ), function( match )
157
+ {
158
+ return CKEDITOR.tools.repeat( match, 2 );
159
+ } );
160
+ }
75
161
 
76
- var range, clone, lastElement, bookmark;
162
+ // Inline styles have to be inherited in Firefox.
163
+ if ( CKEDITOR.env.gecko || CKEDITOR.env.webkit )
164
+ {
165
+ var path = new CKEDITOR.dom.elementPath( selection.getStartElement() ),
166
+ context = [];
77
167
 
78
- for ( var i = ranges.length - 1 ; i >= 0 ; i-- )
168
+ for ( var i = 0; i < path.elements.length; i++ )
79
169
  {
80
- range = ranges[ i ];
170
+ var tag = path.elements[ i ].getName();
171
+ if ( tag in CKEDITOR.dtd.$inline )
172
+ context.unshift( path.elements[ i ].getOuterHtml().match( /^<.*?>/) );
173
+ else if ( tag in CKEDITOR.dtd.$block )
174
+ break;
175
+ }
81
176
 
82
- // Remove the original contents.
83
- range.deleteContents();
177
+ // Reproduce the context by preceding the pasted HTML with opening inline tags.
178
+ html = context.join( '' ) + html;
179
+ }
84
180
 
85
- clone = !i && element || element.clone( true );
181
+ doInsertHtml.call( this, html );
182
+ }
86
183
 
87
- // If we're inserting a block at dtd-violated position, split
88
- // the parent blocks until we reach blockLimit.
89
- var current, dtd;
90
- if ( isBlock )
184
+ function doInsertElement( element )
185
+ {
186
+ var selection = this.getSelection(),
187
+ ranges = selection.getRanges(),
188
+ elementName = element.getName(),
189
+ isBlock = CKEDITOR.dtd.$block[ elementName ];
190
+
191
+ var selIsLocked = selection.isLocked;
192
+
193
+ if ( selIsLocked )
194
+ selection.unlock();
195
+
196
+ var range, clone, lastElement, bookmark;
197
+
198
+ for ( var i = ranges.length - 1 ; i >= 0 ; i-- )
199
+ {
200
+ range = ranges[ i ];
201
+
202
+ if ( !range.checkReadOnly() )
91
203
  {
92
- while ( ( current = range.getCommonAncestor( false, true ) )
93
- && ( dtd = CKEDITOR.dtd[ current.getName() ] )
94
- && !( dtd && dtd [ elementName ] ) )
204
+ // Remove the original contents, merge splitted nodes.
205
+ range.deleteContents( 1 );
206
+
207
+ clone = !i && element || element.clone( 1 );
208
+
209
+ // If we're inserting a block at dtd-violated position, split
210
+ // the parent blocks until we reach blockLimit.
211
+ var current, dtd;
212
+ if ( isBlock )
95
213
  {
96
- // Split up inline elements.
97
- if ( current.getName() in CKEDITOR.dtd.span )
98
- range.splitElement( current );
99
- // If we're in an empty block which indicate a new paragraph,
100
- // simply replace it with the inserting block.(#3664)
101
- else if ( range.checkStartOfBlock()
102
- && range.checkEndOfBlock() )
214
+ while ( ( current = range.getCommonAncestor( 0, 1 ) )
215
+ && ( dtd = CKEDITOR.dtd[ current.getName() ] )
216
+ && !( dtd && dtd [ elementName ] ) )
103
217
  {
104
- range.setStartBefore( current );
105
- range.collapse( true );
106
- current.remove();
218
+ // Split up inline elements.
219
+ if ( current.getName() in CKEDITOR.dtd.span )
220
+ range.splitElement( current );
221
+ // If we're in an empty block which indicate a new paragraph,
222
+ // simply replace it with the inserting block.(#3664)
223
+ else if ( range.checkStartOfBlock()
224
+ && range.checkEndOfBlock() )
225
+ {
226
+ range.setStartBefore( current );
227
+ range.collapse( true );
228
+ current.remove();
229
+ }
230
+ else
231
+ range.splitBlock();
107
232
  }
108
- else
109
- range.splitBlock();
110
233
  }
111
- }
112
234
 
113
- // Insert the new node.
114
- range.insertNode( clone );
235
+ // Insert the new node.
236
+ range.insertNode( clone );
115
237
 
116
- // Save the last element reference so we can make the
117
- // selection later.
118
- if ( !lastElement )
119
- lastElement = clone;
238
+ // Save the last element reference so we can make the
239
+ // selection later.
240
+ if ( !lastElement )
241
+ lastElement = clone;
242
+ }
120
243
  }
121
244
 
122
- range.moveToPosition( lastElement, CKEDITOR.POSITION_AFTER_END );
245
+ if ( lastElement )
246
+ {
247
+ range.moveToPosition( lastElement, CKEDITOR.POSITION_AFTER_END );
123
248
 
124
- var next = lastElement.getNextSourceNode( true );
125
- if ( next && next.type == CKEDITOR.NODE_ELEMENT )
126
- range.moveToElementEditStart( next );
249
+ // If we're inserting a block element immediatelly followed by
250
+ // another block element, the selection must move there. (#3100,#5436)
251
+ if ( isBlock )
252
+ {
253
+ var next = lastElement.getNext( notWhitespaceEval ),
254
+ nextName = next && next.type == CKEDITOR.NODE_ELEMENT && next.getName();
127
255
 
128
- selection.selectRanges( [ range ] );
256
+ // Check if it's a block element that accepts text.
257
+ if ( nextName && CKEDITOR.dtd.$block[ nextName ] && CKEDITOR.dtd[ nextName ]['#'] )
258
+ range.moveToElementEditStart( next );
259
+ }
260
+ }
129
261
 
130
- if ( selIsLocked )
131
- this.getSelection().lock();
262
+ selection.selectRanges( [ range ] );
132
263
 
133
- // Save snaps after the whole execution completed.
134
- // This's a workaround for make DOM modification's happened after
135
- // 'insertElement' to be included either, e.g. Form-based dialogs' 'commitContents'
136
- // call.
137
- CKEDITOR.tools.setTimeout( function(){
138
- this.fire( 'saveSnapshot' );
139
- }, 0, this );
140
- }
264
+ if ( selIsLocked )
265
+ this.getSelection().lock();
141
266
  }
142
267
 
143
268
  // DOM modification here should not bother dirty flag.(#4385)
144
269
  function restoreDirty( editor )
145
270
  {
146
271
  if ( !editor.checkDirty() )
147
- setTimeout( function(){ editor.resetDirty(); } );
272
+ setTimeout( function(){ editor.resetDirty(); }, 0 );
148
273
  }
149
274
 
150
275
  var isNotWhitespace = CKEDITOR.dom.walker.whitespaces( true ),
@@ -161,6 +286,63 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
161
286
  && CKEDITOR.tools.trim( node.getText() ).match( /^(?:&nbsp;|\xa0)$/ );
162
287
  }
163
288
 
289
+ function restoreSelection( selection )
290
+ {
291
+ if ( selection.isLocked )
292
+ {
293
+ selection.unlock();
294
+ setTimeout( function() { selection.lock(); }, 0 );
295
+ }
296
+ }
297
+
298
+ function isBlankParagraph( block )
299
+ {
300
+ return block.getOuterHtml().match( emptyParagraphRegexp );
301
+ }
302
+
303
+ isNotWhitespace = CKEDITOR.dom.walker.whitespaces( true );
304
+
305
+ // Gecko need a key event to 'wake up' the editing
306
+ // ability when document is empty.(#3864, #5781)
307
+ function activateEditing( editor )
308
+ {
309
+ var win = editor.window,
310
+ doc = editor.document,
311
+ body = editor.document.getBody(),
312
+ bodyFirstChild = body.getFirst(),
313
+ bodyChildsNum = body.getChildren().count();
314
+
315
+ if ( !bodyChildsNum
316
+ || bodyChildsNum == 1
317
+ && bodyFirstChild.type == CKEDITOR.NODE_ELEMENT
318
+ && bodyFirstChild.hasAttribute( '_moz_editor_bogus_node' ) )
319
+ {
320
+ restoreDirty( editor );
321
+
322
+ // Memorize scroll position to restore it later (#4472).
323
+ var hostDocument = editor.element.getDocument();
324
+ var hostDocumentElement = hostDocument.getDocumentElement();
325
+ var scrollTop = hostDocumentElement.$.scrollTop;
326
+ var scrollLeft = hostDocumentElement.$.scrollLeft;
327
+
328
+ // Simulating keyboard character input by dispatching a keydown of white-space text.
329
+ var keyEventSimulate = doc.$.createEvent( "KeyEvents" );
330
+ keyEventSimulate.initKeyEvent( 'keypress', true, true, win.$, false,
331
+ false, false, false, 0, 32 );
332
+ doc.$.dispatchEvent( keyEventSimulate );
333
+
334
+ if ( scrollTop != hostDocumentElement.$.scrollTop || scrollLeft != hostDocumentElement.$.scrollLeft )
335
+ hostDocument.getWindow().$.scrollTo( scrollLeft, scrollTop );
336
+
337
+ // Restore the original document status by placing the cursor before a bogus br created (#5021).
338
+ bodyChildsNum && body.getFirst().remove();
339
+ doc.getBody().appendBogus();
340
+ var nativeRange = new CKEDITOR.dom.range( doc );
341
+ nativeRange.setStartAt( body , CKEDITOR.POSITION_AFTER_START );
342
+ nativeRange.select();
343
+ }
344
+ }
345
+
164
346
  /**
165
347
  * Auto-fixing block-less content by wrapping paragraph (#3190), prevent
166
348
  * non-exitable-block by padding extra br.(#3189)
@@ -175,14 +357,42 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
175
357
  body = editor.document.getBody(),
176
358
  enterMode = editor.config.enterMode;
177
359
 
178
- // When enterMode set to block, we'll establing new paragraph only if we're
179
- // selecting inline contents right under body. (#3657)
180
- if ( enterMode != CKEDITOR.ENTER_BR
181
- && range.collapsed
182
- && blockLimit.getName() == 'body'
183
- && !path.block )
360
+ if ( CKEDITOR.env.gecko )
361
+ {
362
+ activateEditing( editor );
363
+
364
+ // Ensure bogus br could help to move cursor (out of styles) to the end of block. (#7041)
365
+ var pathBlock = path.block || path.blockLimit,
366
+ lastNode = pathBlock && pathBlock.getLast( isNotEmpty );
367
+
368
+ // Check some specialities of the current path block:
369
+ // 1. It is really displayed as block; (#7221)
370
+ // 2. It doesn't end with one inner block; (#7467)
371
+ // 3. It doesn't have bogus br yet.
372
+ if ( pathBlock
373
+ && pathBlock.isBlockBoundary()
374
+ && !( lastNode && lastNode.type == CKEDITOR.NODE_ELEMENT && lastNode.isBlockBoundary() )
375
+ && !pathBlock.is( 'pre' )
376
+ && !pathBlock.getBogus() )
377
+ {
378
+ editor.fire( 'updateSnapshot' );
379
+ restoreDirty( editor );
380
+ pathBlock.appendBogus();
381
+ }
382
+ }
383
+
384
+ // When we're in block enter mode, a new paragraph will be established
385
+ // to encapsulate inline contents right under body. (#3657)
386
+ if ( editor.config.autoParagraph !== false
387
+ && enterMode != CKEDITOR.ENTER_BR
388
+ && range.collapsed
389
+ && blockLimit.getName() == 'body'
390
+ && !path.block )
184
391
  {
392
+ editor.fire( 'updateSnapshot' );
185
393
  restoreDirty( editor );
394
+ CKEDITOR.env.ie && restoreSelection( selection );
395
+
186
396
  var fixedBlock = range.fixBlock( true,
187
397
  editor.config.enterMode == CKEDITOR.ENTER_DIV ? 'div' : 'p' );
188
398
 
@@ -193,42 +403,56 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
193
403
  first && isNbsp( first ) && first.remove();
194
404
  }
195
405
 
196
- // If the fixed block is blank and already followed by a exitable
197
- // block, we should revert the fix. (#3684)
198
- if ( fixedBlock.getOuterHtml().match( emptyParagraphRegexp ) )
406
+ // If the fixed block is actually blank and is already followed by an exitable blank
407
+ // block, we should revert the fix and move into the existed one. (#3684)
408
+ if ( isBlankParagraph( fixedBlock ) )
199
409
  {
200
- var previousElement = fixedBlock.getPrevious( isNotWhitespace ),
201
- nextElement = fixedBlock.getNext( isNotWhitespace );
202
-
203
-
204
- if ( previousElement && previousElement.getName
205
- && !( previousElement.getName() in nonExitableElementNames )
206
- && range.moveToElementEditStart( previousElement )
207
- || nextElement && nextElement.getName
208
- && !( nextElement.getName() in nonExitableElementNames )
209
- && range.moveToElementEditStart( nextElement ) )
410
+ var element = fixedBlock.getNext( isNotWhitespace );
411
+ if ( element &&
412
+ element.type == CKEDITOR.NODE_ELEMENT &&
413
+ !nonEditable( element ) )
210
414
  {
415
+ range.moveToElementEditStart( element );
211
416
  fixedBlock.remove();
212
417
  }
418
+ else
419
+ {
420
+ element = fixedBlock.getPrevious( isNotWhitespace );
421
+ if ( element &&
422
+ element.type == CKEDITOR.NODE_ELEMENT &&
423
+ !nonEditable( element ) )
424
+ {
425
+ range.moveToElementEditEnd( element );
426
+ fixedBlock.remove();
427
+ }
428
+ }
213
429
  }
214
430
 
215
431
  range.select();
216
- // Notify non-IE that selection has changed.
217
- if ( !CKEDITOR.env.ie )
218
- editor.selectionChange();
432
+ // Cancel this selection change in favor of the next (correct). (#6811)
433
+ evt.cancel();
219
434
  }
220
435
 
221
- // All browsers are incapable to moving cursor out of certain non-exitable
222
- // blocks (e.g. table, list, pre) at the end of document, make this happen by
223
- // place a bogus node there, which would be later removed by dataprocessor.
224
- var lastNode = body.getLast( CKEDITOR.dom.walker.whitespaces( true ) );
225
- if ( lastNode && lastNode.getName && ( lastNode.getName() in nonExitableElementNames ) )
436
+ // Browsers are incapable of moving cursor out of certain block elements (e.g. table, div, pre)
437
+ // at the end of document, makes it unable to continue adding content, we have to make this
438
+ // easier by opening an new empty paragraph.
439
+ var testRange = new CKEDITOR.dom.range( editor.document );
440
+ testRange.moveToElementEditEnd( editor.document.getBody() );
441
+ var testPath = new CKEDITOR.dom.elementPath( testRange.startContainer );
442
+ if ( !testPath.blockLimit.is( 'body') )
226
443
  {
444
+ editor.fire( 'updateSnapshot' );
227
445
  restoreDirty( editor );
228
- if ( !CKEDITOR.env.ie )
229
- body.appendBogus();
446
+ CKEDITOR.env.ie && restoreSelection( selection );
447
+
448
+ var paddingBlock;
449
+ if ( enterMode != CKEDITOR.ENTER_BR )
450
+ paddingBlock = body.append( editor.document.createElement( enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ) );
230
451
  else
231
- body.append( editor.document.createText( '\xa0' ) );
452
+ paddingBlock = body;
453
+
454
+ if ( !CKEDITOR.env.ie )
455
+ paddingBlock.appendBogus();
232
456
  }
233
457
  }
234
458
 
@@ -238,11 +462,12 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
238
462
 
239
463
  init : function( editor )
240
464
  {
241
- var fixForBody = ( editor.config.enterMode != CKEDITOR.ENTER_BR )
465
+ var fixForBody = ( editor.config.enterMode != CKEDITOR.ENTER_BR && editor.config.autoParagraph !== false )
242
466
  ? editor.config.enterMode == CKEDITOR.ENTER_DIV ? 'div' : 'p' : false;
243
467
 
244
468
  var frameLabel = editor.lang.editorTitle.replace( '%1', editor.name );
245
469
 
470
+ var contentDomReadyHandler;
246
471
  editor.on( 'editingBlockReady', function()
247
472
  {
248
473
  var mainElement,
@@ -262,66 +487,96 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
262
487
  if ( iframe )
263
488
  iframe.remove();
264
489
 
265
- frameLoaded = 0;
266
-
267
- var setDataFn = !CKEDITOR.env.gecko && CKEDITOR.tools.addFunction( function( doc )
268
- {
269
- CKEDITOR.tools.removeFunction( setDataFn );
270
- doc.write( data );
271
- });
272
-
273
- var srcScript =
490
+ var src =
274
491
  'document.open();' +
275
492
 
276
493
  // The document domain must be set any time we
277
494
  // call document.open().
278
495
  ( isCustomDomain ? ( 'document.domain="' + document.domain + '";' ) : '' ) +
279
496
 
280
- // With FF, it's better to load the data on
281
- // iframe.load. (#3894,#4058)
282
- // But in FF, we still need the open()-close() call
283
- // to avoid HTTPS warnings.
284
- ( CKEDITOR.env.gecko ? '' : ( 'parent.CKEDITOR.tools.callFunction(' + setDataFn + ',document);' ) ) +
285
-
286
497
  'document.close();';
287
498
 
499
+ // With IE, the custom domain has to be taken care at first,
500
+ // for other browers, the 'src' attribute should be left empty to
501
+ // trigger iframe's 'load' event.
502
+ src =
503
+ CKEDITOR.env.air ?
504
+ 'javascript:void(0)' :
505
+ CKEDITOR.env.ie ?
506
+ 'javascript:void(function(){' + encodeURIComponent( src ) + '}())'
507
+ :
508
+ '';
509
+
288
510
  iframe = CKEDITOR.dom.element.createFromHtml( '<iframe' +
289
511
  ' style="width:100%;height:100%"' +
290
512
  ' frameBorder="0"' +
291
- ' src="javascript:void(function(){' + encodeURIComponent( srcScript ) + '}())"' +
292
- ' tabIndex="' + editor.tabIndex + '"' +
513
+ ' title="' + frameLabel + '"' +
514
+ ' src="' + src + '"' +
515
+ ' tabIndex="' + ( CKEDITOR.env.webkit? -1 : editor.tabIndex ) + '"' +
293
516
  ' allowTransparency="true"' +
294
517
  '></iframe>' );
295
518
 
519
+ // Running inside of Firefox chrome the load event doesn't bubble like in a normal page (#5689)
520
+ if ( document.location.protocol == 'chrome:' )
521
+ CKEDITOR.event.useCapture = true;
522
+
296
523
  // With FF, it's better to load the data on iframe.load. (#3894,#4058)
297
- CKEDITOR.env.gecko && iframe.on( 'load', function( ev )
524
+ iframe.on( 'load', function( ev )
298
525
  {
526
+ frameLoaded = 1;
299
527
  ev.removeListener();
300
528
 
301
- var doc = iframe.getFrameDocument().$;
302
-
303
- doc.open();
529
+ var doc = iframe.getFrameDocument();
304
530
  doc.write( data );
305
- doc.close();
531
+
532
+ CKEDITOR.env.air && contentDomReady( doc.getWindow().$ );
306
533
  });
307
534
 
535
+ // Reset adjustment back to default (#5689)
536
+ if ( document.location.protocol == 'chrome:' )
537
+ CKEDITOR.event.useCapture = false;
538
+
539
+ // The container must be visible when creating the iframe in FF (#5956)
540
+ var element = editor.element,
541
+ isHidden = CKEDITOR.env.gecko && !element.isVisible(),
542
+ previousStyles = {};
543
+ if ( isHidden )
544
+ {
545
+ element.show();
546
+ previousStyles = {
547
+ position : element.getStyle( 'position' ),
548
+ top : element.getStyle( 'top' )
549
+ };
550
+ element.setStyles( { position : 'absolute', top : '-3000px' } );
551
+ }
552
+
308
553
  mainElement.append( iframe );
554
+
555
+ if ( isHidden )
556
+ {
557
+ setTimeout( function()
558
+ {
559
+ element.hide();
560
+ element.setStyles( previousStyles );
561
+ }, 1000 );
562
+ }
309
563
  };
310
564
 
311
565
  // The script that launches the bootstrap logic on 'domReady', so the document
312
566
  // is fully editable even before the editing iframe is fully loaded (#4455).
567
+ contentDomReadyHandler = CKEDITOR.tools.addFunction( contentDomReady );
313
568
  var activationScript =
314
- '<script id="cke_actscrpt" type="text/javascript" cke_temp="1">' +
569
+ '<script id="cke_actscrpt" type="text/javascript" data-cke-temp="1">' +
315
570
  ( isCustomDomain ? ( 'document.domain="' + document.domain + '";' ) : '' ) +
316
- 'parent.CKEDITOR._["contentDomReady' + editor.name + '"]( window );' +
571
+ 'window.parent.CKEDITOR.tools.callFunction( ' + contentDomReadyHandler + ', window );' +
317
572
  '</script>';
318
573
 
319
574
  // Editing area bootstrap code.
320
- var contentDomReady = function( domWindow )
575
+ function contentDomReady( domWindow )
321
576
  {
322
- if ( frameLoaded )
577
+ if ( !frameLoaded )
323
578
  return;
324
- frameLoaded = 1;
579
+ frameLoaded = 0;
325
580
 
326
581
  editor.fire( 'ariaWidget', iframe );
327
582
 
@@ -330,12 +585,12 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
330
585
 
331
586
  // Remove this script from the DOM.
332
587
  var script = domDocument.getElementById( "cke_actscrpt" );
333
- script.parentNode.removeChild( script );
334
-
335
- delete CKEDITOR._[ 'contentDomReady' + editor.name ];
588
+ script && script.parentNode.removeChild( script );
336
589
 
337
590
  body.spellcheck = !editor.config.disableNativeSpellChecker;
338
591
 
592
+ var editable = !editor.readOnly;
593
+
339
594
  if ( CKEDITOR.env.ie )
340
595
  {
341
596
  // Don't display the focus border.
@@ -344,22 +599,53 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
344
599
  // Disable and re-enable the body to avoid IE from
345
600
  // taking the editing focus at startup. (#141 / #523)
346
601
  body.disabled = true;
347
- body.contentEditable = true;
602
+ body.contentEditable = editable;
348
603
  body.removeAttribute( 'disabled' );
349
604
  }
350
605
  else
351
- domDocument.designMode = 'on';
606
+ {
607
+ // Avoid opening design mode in a frame window thread,
608
+ // which will cause host page scrolling.(#4397)
609
+ setTimeout( function()
610
+ {
611
+ // Prefer 'contentEditable' instead of 'designMode'. (#3593)
612
+ if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900
613
+ || CKEDITOR.env.opera )
614
+ domDocument.$.body.contentEditable = editable;
615
+ else if ( CKEDITOR.env.webkit )
616
+ domDocument.$.body.parentNode.contentEditable = editable;
617
+ else
618
+ domDocument.$.designMode = editable? 'off' : 'on';
619
+ }, 0 );
620
+ }
352
621
 
353
- // IE, Opera and Safari may not support it and throw
354
- // errors.
355
- try { domDocument.execCommand( 'enableObjectResizing', false, !editor.config.disableObjectResizing ) ; } catch(e) {}
356
- try { domDocument.execCommand( 'enableInlineTableEditing', false, !editor.config.disableNativeTableHandles ) ; } catch(e) {}
622
+ editable && CKEDITOR.env.gecko && CKEDITOR.tools.setTimeout( activateEditing, 0, null, editor );
357
623
 
358
- domWindow = editor.window = new CKEDITOR.dom.window( domWindow );
624
+ domWindow = editor.window = new CKEDITOR.dom.window( domWindow );
359
625
  domDocument = editor.document = new CKEDITOR.dom.document( domDocument );
360
626
 
627
+ editable && domDocument.on( 'dblclick', function( evt )
628
+ {
629
+ var element = evt.data.getTarget(),
630
+ data = { element : element, dialog : '' };
631
+ editor.fire( 'doubleclick', data );
632
+ data.dialog && editor.openDialog( data.dialog );
633
+ });
634
+
635
+ // Prevent automatic submission in IE #6336
636
+ CKEDITOR.env.ie && domDocument.on( 'click', function( evt )
637
+ {
638
+ var element = evt.data.getTarget();
639
+ if ( element.is( 'input' ) )
640
+ {
641
+ var type = element.getAttribute( 'type' );
642
+ if ( type == 'submit' || type == 'reset' )
643
+ evt.data.preventDefault();
644
+ }
645
+ });
646
+
361
647
  // Gecko/Webkit need some help when selecting control type elements. (#3448)
362
- if ( !( CKEDITOR.env.ie || CKEDITOR.env.opera) )
648
+ if ( !( CKEDITOR.env.ie || CKEDITOR.env.opera ) )
363
649
  {
364
650
  domDocument.on( 'mousedown', function( ev )
365
651
  {
@@ -369,9 +655,39 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
369
655
  } );
370
656
  }
371
657
 
658
+ if ( CKEDITOR.env.gecko )
659
+ {
660
+ domDocument.on( 'mouseup', function( ev )
661
+ {
662
+ if ( ev.data.$.button == 2 )
663
+ {
664
+ var target = ev.data.getTarget();
665
+
666
+ // Prevent right click from selecting an empty block even
667
+ // when selection is anchored inside it. (#5845)
668
+ if ( !target.getOuterHtml().replace( emptyParagraphRegexp, '' ) )
669
+ {
670
+ var range = new CKEDITOR.dom.range( domDocument );
671
+ range.moveToElementEditStart( target );
672
+ range.select( true );
673
+ }
674
+ }
675
+ } );
676
+ }
677
+
678
+ // Prevent the browser opening links in read-only blocks. (#6032)
679
+ domDocument.on( 'click', function( ev )
680
+ {
681
+ ev = ev.data;
682
+ if ( ev.getTarget().is( 'a' ) && ev.$.button != 2 )
683
+ ev.preventDefault();
684
+ });
685
+
372
686
  // Webkit: avoid from editing form control elements content.
373
687
  if ( CKEDITOR.env.webkit )
374
688
  {
689
+ // Mark that cursor will right blinking (#7113).
690
+ domDocument.on( 'mousedown', function() { wasFocused = 1; } );
375
691
  // Prevent from tick checkbox/radiobox/select
376
692
  domDocument.on( 'click', function( ev )
377
693
  {
@@ -389,8 +705,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
389
705
 
390
706
  // IE standard compliant in editing frame doesn't focus the editor when
391
707
  // clicking outside actual content, manually apply the focus. (#1659)
392
- if ( CKEDITOR.env.ie
393
- && domDocument.$.compatMode == 'CSS1Compat' )
708
+ if ( editable &&
709
+ CKEDITOR.env.ie && domDocument.$.compatMode == 'CSS1Compat'
710
+ || CKEDITOR.env.gecko
711
+ || CKEDITOR.env.opera )
394
712
  {
395
713
  var htmlElement = domDocument.getDocumentElement();
396
714
  htmlElement.on( 'mousedown', function( evt )
@@ -399,43 +717,37 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
399
717
  // have to use here a temporary element to 'redirect'
400
718
  // the focus.
401
719
  if ( evt.data.getTarget().equals( htmlElement ) )
402
- ieFocusGrabber.focus();
720
+ {
721
+ if ( CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900 )
722
+ blinkCursor();
723
+ focusGrabber.focus();
724
+ }
403
725
  } );
404
726
  }
405
727
 
406
- var focusTarget = ( CKEDITOR.env.ie || CKEDITOR.env.webkit ) ?
407
- domWindow : domDocument;
408
-
728
+ var focusTarget = CKEDITOR.env.ie ? iframe : domWindow;
409
729
  focusTarget.on( 'blur', function()
410
730
  {
411
731
  editor.focusManager.blur();
412
732
  });
413
733
 
734
+ var wasFocused;
735
+
414
736
  focusTarget.on( 'focus', function()
415
737
  {
416
- // Gecko need a key event to 'wake up' the editing
417
- // ability when document is empty.(#3864)
418
- if ( CKEDITOR.env.gecko )
738
+ var doc = editor.document;
739
+
740
+ if ( editable && CKEDITOR.env.gecko && CKEDITOR.env.version >= 10900 )
741
+ blinkCursor();
742
+ else if ( CKEDITOR.env.opera )
743
+ doc.getBody().focus();
744
+ // Webkit needs focus for the first time on the HTML element. (#6153)
745
+ else if ( CKEDITOR.env.webkit )
419
746
  {
420
- var first = body;
421
- while ( first.firstChild )
422
- first = first.firstChild;
423
-
424
- if ( !first.nextSibling
425
- && ( 'BR' == first.tagName )
426
- && first.hasAttribute( '_moz_editor_bogus_node' ) )
747
+ if ( !wasFocused )
427
748
  {
428
- var keyEventSimulate = domDocument.$.createEvent( "KeyEvents" );
429
- keyEventSimulate.initKeyEvent( 'keypress', true, true, domWindow.$, false,
430
- false, false, false, 0, 32 );
431
- domDocument.$.dispatchEvent( keyEventSimulate );
432
- var bogusText = domDocument.getBody().getFirst() ;
433
- // Compensate the line maintaining <br> if enterMode is not block.
434
- if ( editor.config.enterMode == CKEDITOR.ENTER_BR )
435
- domDocument.createElement( 'br', { attributes: { '_moz_dirty' : "" } } )
436
- .replace( bogusText );
437
- else
438
- bogusText.remove();
749
+ editor.document.getDocumentElement().focus();
750
+ wasFocused = 1;
439
751
  }
440
752
  }
441
753
 
@@ -443,14 +755,16 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
443
755
  });
444
756
 
445
757
  var keystrokeHandler = editor.keystrokeHandler;
446
- if ( keystrokeHandler )
447
- keystrokeHandler.attach( domDocument );
758
+ // Prevent backspace from navigating off the page.
759
+ keystrokeHandler.blockedKeystrokes[ 8 ] = !editable;
760
+ keystrokeHandler.attach( domDocument );
448
761
 
449
762
  if ( CKEDITOR.env.ie )
450
763
  {
764
+ domDocument.getDocumentElement().addClass( domDocument.$.compatMode );
451
765
  // Override keystrokes which should have deletion behavior
452
766
  // on control types in IE . (#4047)
453
- domDocument.on( 'keydown', function( evt )
767
+ editable && domDocument.on( 'keydown', function( evt )
454
768
  {
455
769
  var keyCode = evt.data.getKeystroke();
456
770
 
@@ -495,6 +809,30 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
495
809
  }
496
810
  } );
497
811
  }
812
+
813
+ // Prevent IE from leaving new paragraph after deleting all contents in body. (#6966)
814
+ editor.config.enterMode != CKEDITOR.ENTER_P
815
+ && domDocument.on( 'selectionchange', function()
816
+ {
817
+ var body = domDocument.getBody(),
818
+ range = editor.getSelection().getRanges()[ 0 ];
819
+
820
+ if ( body.getHtml().match( /^<p>&nbsp;<\/p>$/i )
821
+ && range.startContainer.equals( body ) )
822
+ {
823
+ // Avoid the ambiguity from a real user cursor position.
824
+ setTimeout( function ()
825
+ {
826
+ range = editor.getSelection().getRanges()[ 0 ];
827
+ if ( !range.startContainer.equals ( 'body' ) )
828
+ {
829
+ body.getFirst().remove( 1 );
830
+ range.moveToElementEditEnd( body );
831
+ range.select( 1 );
832
+ }
833
+ }, 0 );
834
+ }
835
+ });
498
836
  }
499
837
 
500
838
  // Adds the document body as a context menu target.
@@ -524,6 +862,24 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
524
862
  editor.fire( 'dataReady' );
525
863
  }, 0 );
526
864
 
865
+ // IE, Opera and Safari may not support it and throw errors.
866
+ try { editor.document.$.execCommand( 'enableInlineTableEditing', false, !editor.config.disableNativeTableHandles ); } catch(e) {}
867
+ if ( editor.config.disableObjectResizing )
868
+ {
869
+ try
870
+ {
871
+ editor.document.$.execCommand( 'enableObjectResizing', false, false );
872
+ }
873
+ catch(e)
874
+ {
875
+ // For browsers in which the above method failed, we can cancel the resizing on the fly (#4208)
876
+ editor.document.getBody().on( CKEDITOR.env.ie ? 'resizestart' : 'resize', function( evt )
877
+ {
878
+ evt.data.preventDefault();
879
+ });
880
+ }
881
+ }
882
+
527
883
  /*
528
884
  * IE BUG: IE might have rendered the iframe with invisible contents.
529
885
  * (#3623). Push some inconsequential CSS style changes to force IE to
@@ -546,7 +902,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
546
902
  }
547
903
  },
548
904
  0 );
549
- };
905
+ }
550
906
 
551
907
  editor.addMode( 'wysiwyg',
552
908
  {
@@ -572,6 +928,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
572
928
  loadData : function( data )
573
929
  {
574
930
  isLoadingData = true;
931
+ editor._.dataStore = { id : 1 };
575
932
 
576
933
  var config = editor.config,
577
934
  fullPage = config.fullPage,
@@ -579,7 +936,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
579
936
 
580
937
  // Build the additional stuff to be included into <head>.
581
938
  var headExtra =
582
- '<style type="text/css" cke_temp="1">' +
939
+ '<style type="text/css" data-cke-temp="1">' +
583
940
  editor._.styles.join( '\n' ) +
584
941
  '</style>';
585
942
 
@@ -587,7 +944,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
587
944
  CKEDITOR.tools.buildStyleHtml( editor.config.contentsCss ) +
588
945
  headExtra );
589
946
 
590
- var baseTag = config.baseHref ? '<base href="' + config.baseHref + '" cke_temp="1" />' : '';
947
+ var baseTag = config.baseHref ? '<base href="' + config.baseHref + '" data-cke-temp="1" />' : '';
591
948
 
592
949
  if ( fullPage )
593
950
  {
@@ -596,6 +953,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
596
953
  {
597
954
  editor.docType = docType = match;
598
955
  return '';
956
+ }).replace( /<\?xml\s[^\?]*\?>/i, function( match )
957
+ {
958
+ editor.xmlDeclaration = match;
959
+ return '';
599
960
  });
600
961
  }
601
962
 
@@ -616,6 +977,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
616
977
  // Check if the <head> tag is available.
617
978
  if ( !(/<head[\s|>]/).test( data ) )
618
979
  data = data.replace( /<html[^>]*>/, '$&<head><title></title></head>' ) ;
980
+ else if ( !(/<title[\s|>]/).test( data ) )
981
+ data = data.replace( /<head[^>]*>/, '$&<title></title>' ) ;
619
982
 
620
983
  // The base must be the first tag in the HEAD, e.g. to get relative
621
984
  // links on styles.
@@ -635,9 +998,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
635
998
  {
636
999
  data =
637
1000
  config.docType +
638
- '<html dir="' + config.contentsLangDirection + '">' +
639
- '<title>' + frameLabel + '</title>' +
1001
+ '<html dir="' + config.contentsLangDirection + '"' +
1002
+ ' lang="' + ( config.contentsLanguage || editor.langCode ) + '">' +
640
1003
  '<head>' +
1004
+ '<title>' + frameLabel + '</title>' +
641
1005
  baseTag +
642
1006
  headExtra +
643
1007
  '</head>' +
@@ -648,9 +1012,15 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
648
1012
  '</html>';
649
1013
  }
650
1014
 
1015
+ // Distinguish bogus to normal BR at the end of document for Mozilla. (#5293).
1016
+ if ( CKEDITOR.env.gecko )
1017
+ data = data.replace( /<br \/>(?=\s*<\/(:?html|body)>)/, '$&<br type="_moz" />' );
1018
+
651
1019
  data += activationScript;
652
1020
 
653
- CKEDITOR._[ 'contentDomReady' + editor.name ] = contentDomReady;
1021
+
1022
+ // The iframe is recreated on each call of setData, so we need to clear DOM objects
1023
+ this.onDispose();
654
1024
  createIFrame( data );
655
1025
  },
656
1026
 
@@ -659,19 +1029,26 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
659
1029
  var config = editor.config,
660
1030
  fullPage = config.fullPage,
661
1031
  docType = fullPage && editor.docType,
1032
+ xmlDeclaration = fullPage && editor.xmlDeclaration,
662
1033
  doc = iframe.getFrameDocument();
663
1034
 
664
1035
  var data = fullPage
665
1036
  ? doc.getDocumentElement().getOuterHtml()
666
1037
  : doc.getBody().getHtml();
667
1038
 
1039
+ // BR at the end of document is bogus node for Mozilla. (#5293).
1040
+ if ( CKEDITOR.env.gecko )
1041
+ data = data.replace( /<br>(?=\s*(:?$|<\/body>))/, '' );
1042
+
668
1043
  if ( editor.dataProcessor )
669
1044
  data = editor.dataProcessor.toDataFormat( data, fixForBody );
670
1045
 
671
- // Strip the last blank paragraph within document.
1046
+ // Reset empty if the document contains only one empty paragraph.
672
1047
  if ( config.ignoreEmptyParagraph )
673
- data = data.replace( emptyParagraphRegexp, '' );
1048
+ data = data.replace( emptyParagraphRegexp, function( match, lookback ) { return lookback; } );
674
1049
 
1050
+ if ( xmlDeclaration )
1051
+ data = xmlDeclaration + '\n' + data;
675
1052
  if ( docType )
676
1053
  data = docType + '\n' + data;
677
1054
 
@@ -688,8 +1065,31 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
688
1065
  iframe.getFrameDocument().getBody().setHtml( data );
689
1066
  },
690
1067
 
1068
+ onDispose : function()
1069
+ {
1070
+ if ( !editor.document )
1071
+ return;
1072
+
1073
+ editor.document.getDocumentElement().clearCustomData();
1074
+ editor.document.getBody().clearCustomData();
1075
+
1076
+ editor.window.clearCustomData();
1077
+ editor.document.clearCustomData();
1078
+
1079
+ iframe.clearCustomData();
1080
+
1081
+ /*
1082
+ * IE BUG: When destroying editor DOM with the selection remains inside
1083
+ * editing area would break IE7/8's selection system, we have to put the editing
1084
+ * iframe offline first. (#3812 and #5441)
1085
+ */
1086
+ iframe.remove();
1087
+ },
1088
+
691
1089
  unload : function( holderElement )
692
1090
  {
1091
+ this.onDispose();
1092
+
693
1093
  editor.window = editor.document = iframe = mainElement = isPendingFocus = null;
694
1094
 
695
1095
  editor.fire( 'contentDomUnload' );
@@ -697,37 +1097,33 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
697
1097
 
698
1098
  focus : function()
699
1099
  {
1100
+ var win = editor.window;
1101
+
700
1102
  if ( isLoadingData )
701
1103
  isPendingFocus = true;
702
- else if ( editor.window )
1104
+ // Temporary solution caused by #6025, supposed be unified by #6154.
1105
+ else if ( CKEDITOR.env.opera && editor.document )
703
1106
  {
704
- editor.window.focus();
705
-
706
- // Force the selection to happen, in this way
707
- // we guarantee the focus will be there. (#4848)
708
- if ( CKEDITOR.env.ie )
709
- {
710
- try
711
- {
712
- var sel = editor.getSelection();
713
- sel = sel && sel.getNative();
714
- var range = sel && sel.type && sel.createRange();
715
- if ( range )
716
- {
717
- sel.empty();
718
- range.select();
719
- }
720
- }
721
- catch (e) {}
722
- }
1107
+ // Required for Opera when switching focus
1108
+ // from another iframe, e.g. panels. (#6444)
1109
+ var iframe = editor.window.$.frameElement;
1110
+ iframe.blur(), iframe.focus();
1111
+ editor.document.getBody().focus();
723
1112
 
724
1113
  editor.selectionChange();
725
1114
  }
1115
+ else if ( !CKEDITOR.env.opera && win )
1116
+ {
1117
+ // AIR needs a while to focus when moving from a link.
1118
+ CKEDITOR.env.air ? setTimeout( function () { win.focus(); }, 0 ) : win.focus();
1119
+ editor.selectionChange();
1120
+ }
726
1121
  }
727
1122
  });
728
1123
 
729
- editor.on( 'insertHtml', onInsertHtml, null, null, 20 );
730
- editor.on( 'insertElement', onInsertElement, null, null, 20 );
1124
+ editor.on( 'insertHtml', onInsert( doInsertHtml ) , null, null, 20 );
1125
+ editor.on( 'insertElement', onInsert( doInsertElement ), null, null, 20 );
1126
+ editor.on( 'insertText', onInsert( doInsertText ), null, null, 20 );
731
1127
  // Auto fixing on some document structure weakness to enhance usabilities. (#3190 and #3189)
732
1128
  editor.on( 'selectionChange', onSelectionChangeFixBody, null, null, 1 );
733
1129
  });
@@ -735,37 +1131,127 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
735
1131
  var titleBackup;
736
1132
  // Setting voice label as window title, backup the original one
737
1133
  // and restore it before running into use.
738
- editor.on( 'contentDom', function ()
1134
+ editor.on( 'contentDom', function()
739
1135
  {
740
1136
  var title = editor.document.getElementsByTag( 'title' ).getItem( 0 );
741
- title.setAttribute( '_cke_title', editor.document.$.title );
1137
+ title.data( 'cke-title', editor.document.$.title );
742
1138
  editor.document.$.title = frameLabel;
743
1139
  });
744
1140
 
1141
+ editor.on( 'readOnly', function()
1142
+ {
1143
+ if ( editor.mode == 'wysiwyg' )
1144
+ {
1145
+ // Symply reload the wysiwyg area. It'll take care of read-only.
1146
+ var wysiwyg = editor.getMode();
1147
+ wysiwyg.loadData( wysiwyg.getData() );
1148
+ }
1149
+ });
1150
+
1151
+ // IE>=8 stricts mode doesn't have 'contentEditable' in effect
1152
+ // on element unless it has layout. (#5562)
1153
+ if ( CKEDITOR.document.$.documentMode >= 8 )
1154
+ {
1155
+ editor.addCss( 'html.CSS1Compat [contenteditable=false]{ min-height:0 !important;}' );
1156
+
1157
+ var selectors = [];
1158
+ for ( var tag in CKEDITOR.dtd.$removeEmpty )
1159
+ selectors.push( 'html.CSS1Compat ' + tag + '[contenteditable=false]' );
1160
+ editor.addCss( selectors.join( ',' ) + '{ display:inline-block;}' );
1161
+ }
1162
+ // Set the HTML style to 100% to have the text cursor in affect (#6341)
1163
+ else if ( CKEDITOR.env.gecko )
1164
+ {
1165
+ editor.addCss( 'html { height: 100% !important; }' );
1166
+ editor.addCss( 'img:-moz-broken { -moz-force-broken-image-icon : 1; width : 24px; height : 24px; }' );
1167
+ }
1168
+
1169
+ /* #3658: [IE6] Editor document has horizontal scrollbar on long lines
1170
+ To prevent this misbehavior, we show the scrollbar always */
1171
+ /* #6341: The text cursor must be set on the editor area. */
1172
+ /* #6632: Avoid having "text" shape of cursor in IE7 scrollbars.*/
1173
+ editor.addCss( 'html { _overflow-y: scroll; cursor: text; *cursor:auto;}' );
1174
+ // Use correct cursor for these elements
1175
+ editor.addCss( 'img, input, textarea { cursor: default;}' );
1176
+
1177
+ // Switch on design mode for a short while and close it after then.
1178
+ function blinkCursor( retry )
1179
+ {
1180
+ if ( editor.readOnly )
1181
+ return;
1182
+
1183
+ CKEDITOR.tools.tryThese(
1184
+ function()
1185
+ {
1186
+ editor.document.$.designMode = 'on';
1187
+ setTimeout( function()
1188
+ {
1189
+ editor.document.$.designMode = 'off';
1190
+ if ( CKEDITOR.currentInstance == editor )
1191
+ editor.document.getBody().focus();
1192
+ }, 50 );
1193
+ },
1194
+ function()
1195
+ {
1196
+ // The above call is known to fail when parent DOM
1197
+ // tree layout changes may break design mode. (#5782)
1198
+ // Refresh the 'contentEditable' is a cue to this.
1199
+ editor.document.$.designMode = 'off';
1200
+ var body = editor.document.getBody();
1201
+ body.setAttribute( 'contentEditable', false );
1202
+ body.setAttribute( 'contentEditable', true );
1203
+ // Try it again once..
1204
+ !retry && blinkCursor( 1 );
1205
+ });
1206
+ }
745
1207
 
746
1208
  // Create an invisible element to grab focus.
747
- if ( CKEDITOR.env.ie )
1209
+ if ( CKEDITOR.env.gecko || CKEDITOR.env.ie || CKEDITOR.env.opera )
748
1210
  {
749
- var ieFocusGrabber;
1211
+ var focusGrabber;
750
1212
  editor.on( 'uiReady', function()
751
1213
  {
752
- ieFocusGrabber = editor.container.append( CKEDITOR.dom.element.createFromHtml(
1214
+ focusGrabber = editor.container.append( CKEDITOR.dom.element.createFromHtml(
753
1215
  // Use 'span' instead of anything else to fly under the screen-reader radar. (#5049)
754
- '<span tabindex="-1" style="position:absolute; left:-10000" role="presentation"></span>' ) );
1216
+ '<span tabindex="-1" style="position:absolute;" role="presentation"></span>' ) );
755
1217
 
756
- ieFocusGrabber.on( 'focus', function()
1218
+ focusGrabber.on( 'focus', function()
757
1219
  {
758
1220
  editor.focus();
759
1221
  } );
1222
+
1223
+ editor.focusGrabber = focusGrabber;
1224
+ } );
1225
+ editor.on( 'destroy', function()
1226
+ {
1227
+ CKEDITOR.tools.removeFunction( contentDomReadyHandler );
1228
+ focusGrabber.clearCustomData();
1229
+ delete editor.focusGrabber;
760
1230
  } );
761
1231
  }
1232
+
1233
+ // Disable form elements editing mode provided by some browers. (#5746)
1234
+ editor.on( 'insertElement', function ( evt )
1235
+ {
1236
+ var element = evt.data;
1237
+ if ( element.type == CKEDITOR.NODE_ELEMENT
1238
+ && ( element.is( 'input' ) || element.is( 'textarea' ) ) )
1239
+ {
1240
+ // We should flag that the element was locked by our code so
1241
+ // it'll be editable by the editor functions (#6046).
1242
+ if ( !element.isReadOnly() )
1243
+ element.data( 'cke-editable', element.hasAttribute( 'contenteditable' ) ? 'true' : '1' );
1244
+ element.setAttribute( 'contentEditable', false );
1245
+ }
1246
+ });
1247
+
762
1248
  }
763
1249
  });
764
1250
 
765
1251
  // Fixing Firefox 'Back-Forward Cache' break design mode. (#4514)
766
1252
  if ( CKEDITOR.env.gecko )
767
1253
  {
768
- ( function ()
1254
+ (function()
769
1255
  {
770
1256
  var body = document.body;
771
1257
 
@@ -773,24 +1259,21 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
773
1259
  window.addEventListener( 'load', arguments.callee, false );
774
1260
  else
775
1261
  {
776
- body.setAttribute( 'onpageshow', body.getAttribute( 'onpageshow' )
777
- + ';event.persisted && CKEDITOR.tools.callFunction(' +
778
- CKEDITOR.tools.addFunction( function()
779
- {
780
- var allInstances = CKEDITOR.instances,
781
- editor,
782
- doc;
783
- for ( var i in allInstances )
784
- {
785
- editor = allInstances[ i ];
786
- doc = editor.document;
787
- if ( doc )
788
- {
789
- doc.$.designMode = 'off';
790
- doc.$.designMode = 'on';
791
- }
792
- }
793
- } ) + ')' );
1262
+ var currentHandler = body.getAttribute( 'onpageshow' );
1263
+ body.setAttribute( 'onpageshow', ( currentHandler ? currentHandler + ';' : '') +
1264
+ 'event.persisted && (function(){' +
1265
+ 'var allInstances = CKEDITOR.instances, editor, doc;' +
1266
+ 'for ( var i in allInstances )' +
1267
+ '{' +
1268
+ ' editor = allInstances[ i ];' +
1269
+ ' doc = editor.document;' +
1270
+ ' if ( doc )' +
1271
+ ' {' +
1272
+ ' doc.$.designMode = "off";' +
1273
+ ' doc.$.designMode = "on";' +
1274
+ ' }' +
1275
+ '}' +
1276
+ '})();' );
794
1277
  }
795
1278
  } )();
796
1279
 
@@ -819,14 +1302,12 @@ CKEDITOR.config.disableObjectResizing = false;
819
1302
  CKEDITOR.config.disableNativeTableHandles = true;
820
1303
 
821
1304
  /**
822
- * Disables the built-in spell checker while typing natively available in the
823
- * browser (currently Firefox and Safari only).<br /><br />
1305
+ * Disables the built-in words spell checker if browser provides one.<br /><br />
824
1306
  *
825
- * Even if word suggestions will not appear in the CKEditor context menu, this
826
- * feature is useful to help quickly identifying misspelled words.<br /><br />
1307
+ * <strong>Note:</strong> Although word suggestions provided by browsers (natively) will not appear in CKEditor's default context menu,
1308
+ * users can always reach the native context menu by holding the <em>Ctrl</em> key when right-clicking if {@link CKEDITOR.config.browserContextMenuOnCtrl}
1309
+ * is enabled or you're simply not using the context menu plugin.
827
1310
  *
828
- * This setting is currently compatible with Firefox only due to limitations in
829
- * other browsers.
830
1311
  * @type Boolean
831
1312
  * @default true
832
1313
  * @example
@@ -849,3 +1330,22 @@ CKEDITOR.config.ignoreEmptyParagraph = true;
849
1330
  * @name CKEDITOR.editor#dataReady
850
1331
  * @event
851
1332
  */
1333
+
1334
+ /**
1335
+ * Whether automatically create wrapping blocks around inline contents inside document body,
1336
+ * this helps to ensure the integrality of the block enter mode.
1337
+ * <strong>Note:</strong> Changing the default value might introduce unpredictable usability issues.
1338
+ * @name CKEDITOR.config.autoParagraph
1339
+ * @since 3.6
1340
+ * @type Boolean
1341
+ * @default true
1342
+ * @example
1343
+ * config.autoParagraph = false;
1344
+ */
1345
+
1346
+ /**
1347
+ * Fired when some elements are added to the document
1348
+ * @name CKEDITOR.editor#ariaWidget
1349
+ * @event
1350
+ * @param {Object} element The element being added
1351
+ */