ckeditor-rails 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (347) hide show
  1. data/README.md +10 -4
  2. data/ckeditor-rails.gemspec +1 -1
  3. data/lib/ckeditor-rails/version.rb +1 -1
  4. data/vendor/assets/ckeditor/ckeditor/INSTALL.html +92 -92
  5. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/application.xml +32 -32
  6. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/run.bat +9 -9
  7. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/sample.html +45 -45
  8. data/vendor/assets/ckeditor/ckeditor/_samples/ajax.html +98 -98
  9. data/vendor/assets/ckeditor/ckeditor/_samples/api.html +192 -192
  10. data/vendor/assets/ckeditor/ckeditor/_samples/api_dialog.html +198 -198
  11. data/vendor/assets/ckeditor/ckeditor/_samples/api_dialog/my_dialog.js +28 -28
  12. data/vendor/assets/ckeditor/ckeditor/_samples/asp/advanced.asp +105 -105
  13. data/vendor/assets/ckeditor/ckeditor/_samples/asp/events.asp +136 -136
  14. data/vendor/assets/ckeditor/ckeditor/_samples/asp/index.html +103 -103
  15. data/vendor/assets/ckeditor/ckeditor/_samples/asp/replace.asp +72 -72
  16. data/vendor/assets/ckeditor/ckeditor/_samples/asp/replaceall.asp +77 -77
  17. data/vendor/assets/ckeditor/ckeditor/_samples/asp/sample_posteddata.asp +46 -46
  18. data/vendor/assets/ckeditor/ckeditor/_samples/asp/standalone.asp +72 -72
  19. data/vendor/assets/ckeditor/ckeditor/_samples/assets/_posteddata.php +59 -59
  20. data/vendor/assets/ckeditor/ckeditor/_samples/assets/output_xhtml.css +204 -204
  21. data/vendor/assets/ckeditor/ckeditor/_samples/assets/parsesample.css +70 -70
  22. data/vendor/assets/ckeditor/ckeditor/_samples/assets/swfobject.js +18 -18
  23. data/vendor/assets/ckeditor/ckeditor/_samples/autogrow.html +107 -107
  24. data/vendor/assets/ckeditor/ckeditor/_samples/bbcode.html +125 -125
  25. data/vendor/assets/ckeditor/ckeditor/_samples/devtools.html +94 -94
  26. data/vendor/assets/ckeditor/ckeditor/_samples/divreplace.html +154 -154
  27. data/vendor/assets/ckeditor/ckeditor/_samples/enterkey.html +115 -115
  28. data/vendor/assets/ckeditor/ckeditor/_samples/fullpage.html +82 -82
  29. data/vendor/assets/ckeditor/ckeditor/_samples/index.html +116 -116
  30. data/vendor/assets/ckeditor/ckeditor/_samples/jqueryadapter.html +99 -99
  31. data/vendor/assets/ckeditor/ckeditor/_samples/output_for_flash.html +275 -275
  32. data/vendor/assets/ckeditor/ckeditor/_samples/output_html.html +285 -285
  33. data/vendor/assets/ckeditor/ckeditor/_samples/output_xhtml.html +177 -177
  34. data/vendor/assets/ckeditor/ckeditor/_samples/php/advanced.php +120 -120
  35. data/vendor/assets/ckeditor/ckeditor/_samples/php/events.php +153 -153
  36. data/vendor/assets/ckeditor/ckeditor/_samples/php/index.html +47 -47
  37. data/vendor/assets/ckeditor/ckeditor/_samples/php/replace.php +87 -87
  38. data/vendor/assets/ckeditor/ckeditor/_samples/php/replaceall.php +88 -88
  39. data/vendor/assets/ckeditor/ckeditor/_samples/php/standalone.php +83 -83
  40. data/vendor/assets/ckeditor/ckeditor/_samples/placeholder.html +81 -81
  41. data/vendor/assets/ckeditor/ckeditor/_samples/readonly.html +91 -91
  42. data/vendor/assets/ckeditor/ckeditor/_samples/replacebyclass.html +64 -64
  43. data/vendor/assets/ckeditor/ckeditor/_samples/replacebycode.html +97 -97
  44. data/vendor/assets/ckeditor/ckeditor/_samples/sample.css +163 -163
  45. data/vendor/assets/ckeditor/ckeditor/_samples/sample.js +65 -65
  46. data/vendor/assets/ckeditor/ckeditor/_samples/sample_posteddata.php +21 -21
  47. data/vendor/assets/ckeditor/ckeditor/_samples/sharedspaces.html +153 -153
  48. data/vendor/assets/ckeditor/ckeditor/_samples/skins.html +110 -110
  49. data/vendor/assets/ckeditor/ckeditor/_samples/stylesheetparser.html +93 -93
  50. data/vendor/assets/ckeditor/ckeditor/_samples/tableresize.html +115 -115
  51. data/vendor/assets/ckeditor/ckeditor/_samples/ui_color.html +129 -129
  52. data/vendor/assets/ckeditor/ckeditor/_samples/ui_languages.html +134 -134
  53. data/vendor/assets/ckeditor/ckeditor/_source/adapters/jquery.js +306 -306
  54. data/vendor/assets/ckeditor/ckeditor/_source/core/_bootstrap.js +87 -87
  55. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor.js +141 -141
  56. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor_base.js +227 -227
  57. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor_basic.js +238 -238
  58. data/vendor/assets/ckeditor/ckeditor/_source/core/command.js +209 -209
  59. data/vendor/assets/ckeditor/ckeditor/_source/core/commanddefinition.js +129 -129
  60. data/vendor/assets/ckeditor/ckeditor/_source/core/config.js +431 -431
  61. data/vendor/assets/ckeditor/ckeditor/_source/core/dataprocessor.js +65 -65
  62. data/vendor/assets/ckeditor/ckeditor/_source/core/dom.js +20 -20
  63. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/comment.js +32 -32
  64. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/document.js +251 -251
  65. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/documentfragment.js +49 -49
  66. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/domobject.js +258 -258
  67. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/element.js +1681 -1681
  68. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/elementpath.js +119 -119
  69. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/event.js +145 -145
  70. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/node.js +695 -695
  71. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/nodelist.js +26 -26
  72. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/range.js +2032 -2032
  73. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/rangelist.js +213 -213
  74. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/text.js +128 -128
  75. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/walker.js +462 -462
  76. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/window.js +96 -96
  77. data/vendor/assets/ckeditor/ckeditor/_source/core/dtd.js +266 -266
  78. data/vendor/assets/ckeditor/ckeditor/_source/core/editor.js +1059 -1059
  79. data/vendor/assets/ckeditor/ckeditor/_source/core/editor_basic.js +186 -186
  80. data/vendor/assets/ckeditor/ckeditor/_source/core/env.js +291 -291
  81. data/vendor/assets/ckeditor/ckeditor/_source/core/event.js +342 -342
  82. data/vendor/assets/ckeditor/ckeditor/_source/core/eventInfo.js +120 -120
  83. data/vendor/assets/ckeditor/ckeditor/_source/core/focusmanager.js +152 -152
  84. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser.js +224 -224
  85. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/basicwriter.js +145 -145
  86. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/cdata.js +43 -43
  87. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/comment.js +60 -60
  88. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/element.js +308 -308
  89. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/filter.js +288 -288
  90. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/fragment.js +497 -497
  91. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/text.js +55 -55
  92. data/vendor/assets/ckeditor/ckeditor/_source/core/lang.js +157 -157
  93. data/vendor/assets/ckeditor/ckeditor/_source/core/loader.js +240 -240
  94. data/vendor/assets/ckeditor/ckeditor/_source/core/plugindefinition.js +83 -83
  95. data/vendor/assets/ckeditor/ckeditor/_source/core/plugins.js +103 -103
  96. data/vendor/assets/ckeditor/ckeditor/_source/core/resourcemanager.js +238 -238
  97. data/vendor/assets/ckeditor/ckeditor/_source/core/scriptloader.js +180 -180
  98. data/vendor/assets/ckeditor/ckeditor/_source/core/skins.js +184 -184
  99. data/vendor/assets/ckeditor/ckeditor/_source/core/themes.js +19 -19
  100. data/vendor/assets/ckeditor/ckeditor/_source/core/tools.js +763 -763
  101. data/vendor/assets/ckeditor/ckeditor/_source/core/ui.js +128 -128
  102. data/vendor/assets/ckeditor/ckeditor/_source/lang/_languages.js +84 -84
  103. data/vendor/assets/ckeditor/ckeditor/_source/lang/_translationstatus.txt +61 -61
  104. data/vendor/assets/ckeditor/ckeditor/_source/lang/af.js +812 -812
  105. data/vendor/assets/ckeditor/ckeditor/_source/lang/ar.js +812 -812
  106. data/vendor/assets/ckeditor/ckeditor/_source/lang/bg.js +812 -812
  107. data/vendor/assets/ckeditor/ckeditor/_source/lang/bn.js +812 -812
  108. data/vendor/assets/ckeditor/ckeditor/_source/lang/bs.js +812 -812
  109. data/vendor/assets/ckeditor/ckeditor/_source/lang/ca.js +812 -812
  110. data/vendor/assets/ckeditor/ckeditor/_source/lang/cs.js +812 -812
  111. data/vendor/assets/ckeditor/ckeditor/_source/lang/cy.js +812 -812
  112. data/vendor/assets/ckeditor/ckeditor/_source/lang/da.js +812 -812
  113. data/vendor/assets/ckeditor/ckeditor/_source/lang/de.js +812 -812
  114. data/vendor/assets/ckeditor/ckeditor/_source/lang/el.js +812 -812
  115. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-au.js +812 -812
  116. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-ca.js +812 -812
  117. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-gb.js +812 -812
  118. data/vendor/assets/ckeditor/ckeditor/_source/lang/en.js +812 -812
  119. data/vendor/assets/ckeditor/ckeditor/_source/lang/eo.js +812 -812
  120. data/vendor/assets/ckeditor/ckeditor/_source/lang/es.js +812 -812
  121. data/vendor/assets/ckeditor/ckeditor/_source/lang/et.js +812 -812
  122. data/vendor/assets/ckeditor/ckeditor/_source/lang/eu.js +812 -812
  123. data/vendor/assets/ckeditor/ckeditor/_source/lang/fa.js +812 -812
  124. data/vendor/assets/ckeditor/ckeditor/_source/lang/fi.js +812 -812
  125. data/vendor/assets/ckeditor/ckeditor/_source/lang/fo.js +812 -812
  126. data/vendor/assets/ckeditor/ckeditor/_source/lang/fr-ca.js +812 -812
  127. data/vendor/assets/ckeditor/ckeditor/_source/lang/fr.js +812 -812
  128. data/vendor/assets/ckeditor/ckeditor/_source/lang/gl.js +812 -812
  129. data/vendor/assets/ckeditor/ckeditor/_source/lang/gu.js +812 -812
  130. data/vendor/assets/ckeditor/ckeditor/_source/lang/he.js +812 -812
  131. data/vendor/assets/ckeditor/ckeditor/_source/lang/hi.js +812 -812
  132. data/vendor/assets/ckeditor/ckeditor/_source/lang/hr.js +812 -812
  133. data/vendor/assets/ckeditor/ckeditor/_source/lang/hu.js +812 -812
  134. data/vendor/assets/ckeditor/ckeditor/_source/lang/is.js +812 -812
  135. data/vendor/assets/ckeditor/ckeditor/_source/lang/it.js +812 -812
  136. data/vendor/assets/ckeditor/ckeditor/_source/lang/ja.js +812 -812
  137. data/vendor/assets/ckeditor/ckeditor/_source/lang/ka.js +812 -812
  138. data/vendor/assets/ckeditor/ckeditor/_source/lang/km.js +812 -812
  139. data/vendor/assets/ckeditor/ckeditor/_source/lang/ko.js +812 -812
  140. data/vendor/assets/ckeditor/ckeditor/_source/lang/lt.js +812 -812
  141. data/vendor/assets/ckeditor/ckeditor/_source/lang/lv.js +812 -812
  142. data/vendor/assets/ckeditor/ckeditor/_source/lang/mn.js +812 -812
  143. data/vendor/assets/ckeditor/ckeditor/_source/lang/ms.js +812 -812
  144. data/vendor/assets/ckeditor/ckeditor/_source/lang/nb.js +812 -812
  145. data/vendor/assets/ckeditor/ckeditor/_source/lang/nl.js +812 -812
  146. data/vendor/assets/ckeditor/ckeditor/_source/lang/no.js +812 -812
  147. data/vendor/assets/ckeditor/ckeditor/_source/lang/pl.js +812 -812
  148. data/vendor/assets/ckeditor/ckeditor/_source/lang/pt-br.js +811 -811
  149. data/vendor/assets/ckeditor/ckeditor/_source/lang/pt.js +812 -812
  150. data/vendor/assets/ckeditor/ckeditor/_source/lang/ro.js +812 -812
  151. data/vendor/assets/ckeditor/ckeditor/_source/lang/ru.js +812 -812
  152. data/vendor/assets/ckeditor/ckeditor/_source/lang/sk.js +812 -812
  153. data/vendor/assets/ckeditor/ckeditor/_source/lang/sl.js +812 -812
  154. data/vendor/assets/ckeditor/ckeditor/_source/lang/sr-latn.js +812 -812
  155. data/vendor/assets/ckeditor/ckeditor/_source/lang/sr.js +812 -812
  156. data/vendor/assets/ckeditor/ckeditor/_source/lang/sv.js +811 -811
  157. data/vendor/assets/ckeditor/ckeditor/_source/lang/th.js +812 -812
  158. data/vendor/assets/ckeditor/ckeditor/_source/lang/tr.js +811 -811
  159. data/vendor/assets/ckeditor/ckeditor/_source/lang/uk.js +812 -812
  160. data/vendor/assets/ckeditor/ckeditor/_source/lang/vi.js +812 -812
  161. data/vendor/assets/ckeditor/ckeditor/_source/lang/zh-cn.js +812 -812
  162. data/vendor/assets/ckeditor/ckeditor/_source/lang/zh.js +812 -812
  163. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/dialogs/a11yhelp.js +222 -222
  164. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/en.js +108 -108
  165. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/he.js +216 -216
  166. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/plugin.js +47 -47
  167. data/vendor/assets/ckeditor/ckeditor/_source/plugins/about/dialogs/about.js +76 -76
  168. data/vendor/assets/ckeditor/ckeditor/_source/plugins/about/plugin.js +24 -24
  169. data/vendor/assets/ckeditor/ckeditor/_source/plugins/adobeair/plugin.js +228 -228
  170. data/vendor/assets/ckeditor/ckeditor/_source/plugins/ajax/plugin.js +152 -152
  171. data/vendor/assets/ckeditor/ckeditor/_source/plugins/autogrow/plugin.js +88 -88
  172. data/vendor/assets/ckeditor/ckeditor/_source/plugins/basicstyles/plugin.js +101 -101
  173. data/vendor/assets/ckeditor/ckeditor/_source/plugins/bbcode/plugin.js +931 -931
  174. data/vendor/assets/ckeditor/ckeditor/_source/plugins/bidi/plugin.js +334 -334
  175. data/vendor/assets/ckeditor/ckeditor/_source/plugins/blockquote/plugin.js +305 -305
  176. data/vendor/assets/ckeditor/ckeditor/_source/plugins/button/plugin.js +290 -290
  177. data/vendor/assets/ckeditor/ckeditor/_source/plugins/clipboard/dialogs/paste.js +223 -223
  178. data/vendor/assets/ckeditor/ckeditor/_source/plugins/clipboard/plugin.js +453 -453
  179. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colorbutton/plugin.js +294 -294
  180. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colordialog/dialogs/colordialog.js +340 -340
  181. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colordialog/plugin.js +15 -15
  182. data/vendor/assets/ckeditor/ckeditor/_source/plugins/contextmenu/plugin.js +177 -177
  183. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/en.js +16 -16
  184. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/plugin.js +173 -173
  185. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialog/dialogDefinition.js +1166 -1166
  186. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialog/plugin.js +3289 -3289
  187. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialogadvtab/plugin.js +207 -207
  188. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialogui/plugin.js +1541 -1541
  189. data/vendor/assets/ckeditor/ckeditor/_source/plugins/div/dialogs/div.js +535 -535
  190. data/vendor/assets/ckeditor/ckeditor/_source/plugins/div/plugin.js +121 -121
  191. data/vendor/assets/ckeditor/ckeditor/_source/plugins/docprops/dialogs/docprops.js +686 -686
  192. data/vendor/assets/ckeditor/ckeditor/_source/plugins/docprops/plugin.js +22 -22
  193. data/vendor/assets/ckeditor/ckeditor/_source/plugins/domiterator/plugin.js +361 -361
  194. data/vendor/assets/ckeditor/ckeditor/_source/plugins/editingblock/plugin.js +275 -275
  195. data/vendor/assets/ckeditor/ckeditor/_source/plugins/elementspath/plugin.js +218 -218
  196. data/vendor/assets/ckeditor/ckeditor/_source/plugins/enterkey/plugin.js +413 -413
  197. data/vendor/assets/ckeditor/ckeditor/_source/plugins/entities/plugin.js +250 -250
  198. data/vendor/assets/ckeditor/ckeditor/_source/plugins/fakeobjects/plugin.js +175 -175
  199. data/vendor/assets/ckeditor/ckeditor/_source/plugins/filebrowser/plugin.js +524 -524
  200. data/vendor/assets/ckeditor/ckeditor/_source/plugins/find/dialogs/find.js +903 -903
  201. data/vendor/assets/ckeditor/ckeditor/_source/plugins/find/plugin.js +47 -47
  202. data/vendor/assets/ckeditor/ckeditor/_source/plugins/flash/dialogs/flash.js +673 -673
  203. data/vendor/assets/ckeditor/ckeditor/_source/plugins/flash/plugin.js +154 -154
  204. data/vendor/assets/ckeditor/ckeditor/_source/plugins/floatpanel/plugin.js +428 -428
  205. data/vendor/assets/ckeditor/ckeditor/_source/plugins/font/plugin.js +234 -234
  206. data/vendor/assets/ckeditor/ckeditor/_source/plugins/format/plugin.js +197 -197
  207. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/button.js +118 -118
  208. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/checkbox.js +153 -153
  209. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/form.js +177 -177
  210. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/hiddenfield.js +100 -100
  211. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/radio.js +135 -135
  212. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/select.js +558 -558
  213. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/textarea.js +114 -114
  214. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/textfield.js +199 -199
  215. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/plugin.js +288 -288
  216. data/vendor/assets/ckeditor/ckeditor/_source/plugins/horizontalrule/plugin.js +48 -48
  217. data/vendor/assets/ckeditor/ckeditor/_source/plugins/htmldataprocessor/plugin.js +595 -595
  218. data/vendor/assets/ckeditor/ckeditor/_source/plugins/htmlwriter/plugin.js +319 -319
  219. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframe/dialogs/iframe.js +229 -229
  220. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframe/plugin.js +87 -87
  221. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframedialog/plugin.js +188 -188
  222. data/vendor/assets/ckeditor/ckeditor/_source/plugins/image/dialogs/image.js +1406 -1406
  223. data/vendor/assets/ckeditor/ckeditor/_source/plugins/image/plugin.js +81 -81
  224. data/vendor/assets/ckeditor/ckeditor/_source/plugins/indent/plugin.js +461 -461
  225. data/vendor/assets/ckeditor/ckeditor/_source/plugins/justify/plugin.js +253 -253
  226. data/vendor/assets/ckeditor/ckeditor/_source/plugins/keystrokes/plugin.js +225 -225
  227. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/dialogs/anchor.js +144 -144
  228. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/dialogs/link.js +1424 -1424
  229. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/plugin.js +374 -374
  230. data/vendor/assets/ckeditor/ckeditor/_source/plugins/list/plugin.js +734 -734
  231. data/vendor/assets/ckeditor/ckeditor/_source/plugins/listblock/plugin.js +268 -268
  232. data/vendor/assets/ckeditor/ckeditor/_source/plugins/liststyle/dialogs/liststyle.js +225 -225
  233. data/vendor/assets/ckeditor/ckeditor/_source/plugins/liststyle/plugin.js +66 -66
  234. data/vendor/assets/ckeditor/ckeditor/_source/plugins/maximize/plugin.js +352 -352
  235. data/vendor/assets/ckeditor/ckeditor/_source/plugins/menu/plugin.js +541 -541
  236. data/vendor/assets/ckeditor/ckeditor/_source/plugins/menubutton/plugin.js +98 -98
  237. data/vendor/assets/ckeditor/ckeditor/_source/plugins/newpage/plugin.js +54 -54
  238. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pagebreak/plugin.js +164 -164
  239. data/vendor/assets/ckeditor/ckeditor/_source/plugins/panel/plugin.js +403 -403
  240. data/vendor/assets/ckeditor/ckeditor/_source/plugins/panelbutton/plugin.js +144 -144
  241. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastefromword/filter/default.js +1367 -1367
  242. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastefromword/plugin.js +141 -141
  243. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastetext/dialogs/pastetext.js +67 -67
  244. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastetext/plugin.js +98 -98
  245. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/dialogs/placeholder.js +71 -71
  246. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/en.js +16 -16
  247. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/he.js +16 -16
  248. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/plugin.js +171 -171
  249. data/vendor/assets/ckeditor/ckeditor/_source/plugins/popup/plugin.js +64 -64
  250. data/vendor/assets/ckeditor/ckeditor/_source/plugins/preview/plugin.js +109 -109
  251. data/vendor/assets/ckeditor/ckeditor/_source/plugins/print/plugin.js +42 -42
  252. data/vendor/assets/ckeditor/ckeditor/_source/plugins/removeformat/plugin.js +185 -185
  253. data/vendor/assets/ckeditor/ckeditor/_source/plugins/resize/plugin.js +168 -168
  254. data/vendor/assets/ckeditor/ckeditor/_source/plugins/richcombo/plugin.js +381 -381
  255. data/vendor/assets/ckeditor/ckeditor/_source/plugins/save/plugin.js +56 -56
  256. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/dialogs/options.js +537 -537
  257. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/dialogs/toolbar.css +71 -71
  258. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/plugin.js +964 -964
  259. data/vendor/assets/ckeditor/ckeditor/_source/plugins/selection/plugin.js +1601 -1601
  260. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/plugin.js +160 -160
  261. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showborders/plugin.js +207 -207
  262. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/dialogs/smiley.js +224 -224
  263. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/plugin.js +94 -94
  264. data/vendor/assets/ckeditor/ckeditor/_source/plugins/sourcearea/plugin.js +209 -209
  265. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/dialogs/specialchar.js +350 -350
  266. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/en.js +89 -89
  267. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/plugin.js +70 -70
  268. data/vendor/assets/ckeditor/ckeditor/_source/plugins/styles/plugin.js +1696 -1696
  269. data/vendor/assets/ckeditor/ckeditor/_source/plugins/styles/styles/default.js +88 -88
  270. data/vendor/assets/ckeditor/ckeditor/_source/plugins/stylescombo/plugin.js +218 -218
  271. data/vendor/assets/ckeditor/ckeditor/_source/plugins/stylesheetparser/plugin.js +148 -148
  272. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tab/plugin.js +367 -367
  273. data/vendor/assets/ckeditor/ckeditor/_source/plugins/table/dialogs/table.js +602 -602
  274. data/vendor/assets/ckeditor/ckeditor/_source/plugins/table/plugin.js +78 -78
  275. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tableresize/plugin.js +443 -443
  276. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tabletools/dialogs/tableCell.js +525 -525
  277. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tabletools/plugin.js +1194 -1194
  278. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/dialogs/templates.js +234 -234
  279. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/plugin.js +99 -99
  280. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/templates/default.js +94 -94
  281. data/vendor/assets/ckeditor/ckeditor/_source/plugins/toolbar/plugin.js +545 -545
  282. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/dialogs/uicolor.js +205 -205
  283. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/en.js +15 -15
  284. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/he.js +15 -15
  285. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/plugin.js +37 -37
  286. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/assets/yui.css +15 -15
  287. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/yui.js +71 -71
  288. data/vendor/assets/ckeditor/ckeditor/_source/plugins/undo/plugin.js +580 -580
  289. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/ciframe.html +49 -49
  290. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/tmpFrameset.html +52 -52
  291. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/wsc.css +82 -82
  292. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/wsc.js +192 -192
  293. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/plugin.js +33 -33
  294. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wysiwygarea/plugin.js +1351 -1351
  295. data/vendor/assets/ckeditor/ckeditor/_source/plugins/xml/plugin.js +170 -170
  296. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/dialog.css +943 -943
  297. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/editor.css +25 -25
  298. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/elementspath.css +73 -73
  299. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/icons.css +366 -366
  300. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/mainui.css +203 -203
  301. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/menu.css +232 -232
  302. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/panel.css +217 -217
  303. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/presets.css +49 -49
  304. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/reset.css +84 -84
  305. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/richcombo.css +287 -287
  306. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/skin.js +236 -236
  307. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/templates.css +88 -88
  308. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/toolbar.css +407 -407
  309. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/dialog.css +844 -844
  310. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/editor.css +25 -25
  311. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/elementspath.css +74 -74
  312. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/icons.css +363 -363
  313. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/mainui.css +153 -153
  314. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/menu.css +229 -229
  315. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/panel.css +212 -212
  316. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/presets.css +49 -49
  317. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/reset.css +84 -84
  318. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/richcombo.css +309 -309
  319. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/skin.js +74 -74
  320. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/templates.css +87 -87
  321. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/toolbar.css +522 -522
  322. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/dialog.css +861 -861
  323. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/editor.css +25 -25
  324. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/elementspath.css +74 -74
  325. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/icons.css +363 -363
  326. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/mainui.css +162 -162
  327. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/menu.css +232 -232
  328. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/panel.css +212 -212
  329. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/presets.css +50 -50
  330. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/reset.css +84 -84
  331. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/richcombo.css +302 -302
  332. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/skin.js +70 -70
  333. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/templates.css +87 -87
  334. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/toolbar.css +465 -465
  335. data/vendor/assets/ckeditor/ckeditor/_source/themes/default/theme.js +395 -395
  336. data/vendor/assets/ckeditor/ckeditor/adapters/jquery.js +6 -6
  337. data/vendor/assets/ckeditor/ckeditor/ckeditor.asp +955 -955
  338. data/vendor/assets/ckeditor/ckeditor/ckeditor.pack +211 -211
  339. data/vendor/assets/ckeditor/ckeditor/ckeditor.php +29 -29
  340. data/vendor/assets/ckeditor/ckeditor/ckeditor_basic.js +8 -8
  341. data/vendor/assets/ckeditor/ckeditor/ckeditor_basic_source.js +20 -20
  342. data/vendor/assets/ckeditor/ckeditor/ckeditor_php4.php +566 -566
  343. data/vendor/assets/ckeditor/ckeditor/ckeditor_php5.php +556 -556
  344. data/vendor/assets/ckeditor/ckeditor/config.js +11 -11
  345. data/vendor/assets/ckeditor/ckeditor/contents.css +25 -25
  346. data/vendor/assets/ckeditor/ckeditor/themes/default/theme.js +8 -8
  347. metadata +7 -9
@@ -1,154 +1,154 @@
1
- /*
2
- Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3
- For licensing, see LICENSE.html or http://ckeditor.com/license
4
- */
5
-
6
- (function()
7
- {
8
- var flashFilenameRegex = /\.swf(?:$|\?)/i;
9
-
10
- function isFlashEmbed( element )
11
- {
12
- var attributes = element.attributes;
13
-
14
- return ( attributes.type == 'application/x-shockwave-flash' || flashFilenameRegex.test( attributes.src || '' ) );
15
- }
16
-
17
- function createFakeElement( editor, realElement )
18
- {
19
- return editor.createFakeParserElement( realElement, 'cke_flash', 'flash', true );
20
- }
21
-
22
- CKEDITOR.plugins.add( 'flash',
23
- {
24
- init : function( editor )
25
- {
26
- editor.addCommand( 'flash', new CKEDITOR.dialogCommand( 'flash' ) );
27
- editor.ui.addButton( 'Flash',
28
- {
29
- label : editor.lang.common.flash,
30
- command : 'flash'
31
- });
32
- CKEDITOR.dialog.add( 'flash', this.path + 'dialogs/flash.js' );
33
-
34
- editor.addCss(
35
- 'img.cke_flash' +
36
- '{' +
37
- 'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/placeholder.png' ) + ');' +
38
- 'background-position: center center;' +
39
- 'background-repeat: no-repeat;' +
40
- 'border: 1px solid #a9a9a9;' +
41
- 'width: 80px;' +
42
- 'height: 80px;' +
43
- '}'
44
- );
45
-
46
- // If the "menu" plugin is loaded, register the menu items.
47
- if ( editor.addMenuItems )
48
- {
49
- editor.addMenuItems(
50
- {
51
- flash :
52
- {
53
- label : editor.lang.flash.properties,
54
- command : 'flash',
55
- group : 'flash'
56
- }
57
- });
58
- }
59
-
60
- editor.on( 'doubleclick', function( evt )
61
- {
62
- var element = evt.data.element;
63
-
64
- if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'flash' )
65
- evt.data.dialog = 'flash';
66
- });
67
-
68
- // If the "contextmenu" plugin is loaded, register the listeners.
69
- if ( editor.contextMenu )
70
- {
71
- editor.contextMenu.addListener( function( element, selection )
72
- {
73
- if ( element && element.is( 'img' ) && !element.isReadOnly()
74
- && element.data( 'cke-real-element-type' ) == 'flash' )
75
- return { flash : CKEDITOR.TRISTATE_OFF };
76
- });
77
- }
78
- },
79
-
80
- afterInit : function( editor )
81
- {
82
- var dataProcessor = editor.dataProcessor,
83
- dataFilter = dataProcessor && dataProcessor.dataFilter;
84
-
85
- if ( dataFilter )
86
- {
87
- dataFilter.addRules(
88
- {
89
- elements :
90
- {
91
- 'cke:object' : function( element )
92
- {
93
- var attributes = element.attributes,
94
- classId = attributes.classid && String( attributes.classid ).toLowerCase();
95
-
96
- if ( !classId && !isFlashEmbed( element ) )
97
- {
98
- // Look for the inner <embed>
99
- for ( var i = 0 ; i < element.children.length ; i++ )
100
- {
101
- if ( element.children[ i ].name == 'cke:embed' )
102
- {
103
- if ( !isFlashEmbed( element.children[ i ] ) )
104
- return null;
105
-
106
- return createFakeElement( editor, element );
107
- }
108
- }
109
- return null;
110
- }
111
-
112
- return createFakeElement( editor, element );
113
- },
114
-
115
- 'cke:embed' : function( element )
116
- {
117
- if ( !isFlashEmbed( element ) )
118
- return null;
119
-
120
- return createFakeElement( editor, element );
121
- }
122
- }
123
- },
124
- 5);
125
- }
126
- },
127
-
128
- requires : [ 'fakeobjects' ]
129
- });
130
- })();
131
-
132
- CKEDITOR.tools.extend( CKEDITOR.config,
133
- {
134
- /**
135
- * Save as EMBED tag only. This tag is unrecommended.
136
- * @type Boolean
137
- * @default false
138
- */
139
- flashEmbedTagOnly : false,
140
-
141
- /**
142
- * Add EMBED tag as alternative: &lt;object&gt&lt;embed&gt&lt;/embed&gt&lt;/object&gt
143
- * @type Boolean
144
- * @default false
145
- */
146
- flashAddEmbedTag : true,
147
-
148
- /**
149
- * Use embedTagOnly and addEmbedTag values on edit.
150
- * @type Boolean
151
- * @default false
152
- */
153
- flashConvertOnEdit : false
154
- } );
1
+ /*
2
+ Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3
+ For licensing, see LICENSE.html or http://ckeditor.com/license
4
+ */
5
+
6
+ (function()
7
+ {
8
+ var flashFilenameRegex = /\.swf(?:$|\?)/i;
9
+
10
+ function isFlashEmbed( element )
11
+ {
12
+ var attributes = element.attributes;
13
+
14
+ return ( attributes.type == 'application/x-shockwave-flash' || flashFilenameRegex.test( attributes.src || '' ) );
15
+ }
16
+
17
+ function createFakeElement( editor, realElement )
18
+ {
19
+ return editor.createFakeParserElement( realElement, 'cke_flash', 'flash', true );
20
+ }
21
+
22
+ CKEDITOR.plugins.add( 'flash',
23
+ {
24
+ init : function( editor )
25
+ {
26
+ editor.addCommand( 'flash', new CKEDITOR.dialogCommand( 'flash' ) );
27
+ editor.ui.addButton( 'Flash',
28
+ {
29
+ label : editor.lang.common.flash,
30
+ command : 'flash'
31
+ });
32
+ CKEDITOR.dialog.add( 'flash', this.path + 'dialogs/flash.js' );
33
+
34
+ editor.addCss(
35
+ 'img.cke_flash' +
36
+ '{' +
37
+ 'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/placeholder.png' ) + ');' +
38
+ 'background-position: center center;' +
39
+ 'background-repeat: no-repeat;' +
40
+ 'border: 1px solid #a9a9a9;' +
41
+ 'width: 80px;' +
42
+ 'height: 80px;' +
43
+ '}'
44
+ );
45
+
46
+ // If the "menu" plugin is loaded, register the menu items.
47
+ if ( editor.addMenuItems )
48
+ {
49
+ editor.addMenuItems(
50
+ {
51
+ flash :
52
+ {
53
+ label : editor.lang.flash.properties,
54
+ command : 'flash',
55
+ group : 'flash'
56
+ }
57
+ });
58
+ }
59
+
60
+ editor.on( 'doubleclick', function( evt )
61
+ {
62
+ var element = evt.data.element;
63
+
64
+ if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'flash' )
65
+ evt.data.dialog = 'flash';
66
+ });
67
+
68
+ // If the "contextmenu" plugin is loaded, register the listeners.
69
+ if ( editor.contextMenu )
70
+ {
71
+ editor.contextMenu.addListener( function( element, selection )
72
+ {
73
+ if ( element && element.is( 'img' ) && !element.isReadOnly()
74
+ && element.data( 'cke-real-element-type' ) == 'flash' )
75
+ return { flash : CKEDITOR.TRISTATE_OFF };
76
+ });
77
+ }
78
+ },
79
+
80
+ afterInit : function( editor )
81
+ {
82
+ var dataProcessor = editor.dataProcessor,
83
+ dataFilter = dataProcessor && dataProcessor.dataFilter;
84
+
85
+ if ( dataFilter )
86
+ {
87
+ dataFilter.addRules(
88
+ {
89
+ elements :
90
+ {
91
+ 'cke:object' : function( element )
92
+ {
93
+ var attributes = element.attributes,
94
+ classId = attributes.classid && String( attributes.classid ).toLowerCase();
95
+
96
+ if ( !classId && !isFlashEmbed( element ) )
97
+ {
98
+ // Look for the inner <embed>
99
+ for ( var i = 0 ; i < element.children.length ; i++ )
100
+ {
101
+ if ( element.children[ i ].name == 'cke:embed' )
102
+ {
103
+ if ( !isFlashEmbed( element.children[ i ] ) )
104
+ return null;
105
+
106
+ return createFakeElement( editor, element );
107
+ }
108
+ }
109
+ return null;
110
+ }
111
+
112
+ return createFakeElement( editor, element );
113
+ },
114
+
115
+ 'cke:embed' : function( element )
116
+ {
117
+ if ( !isFlashEmbed( element ) )
118
+ return null;
119
+
120
+ return createFakeElement( editor, element );
121
+ }
122
+ }
123
+ },
124
+ 5);
125
+ }
126
+ },
127
+
128
+ requires : [ 'fakeobjects' ]
129
+ });
130
+ })();
131
+
132
+ CKEDITOR.tools.extend( CKEDITOR.config,
133
+ {
134
+ /**
135
+ * Save as EMBED tag only. This tag is unrecommended.
136
+ * @type Boolean
137
+ * @default false
138
+ */
139
+ flashEmbedTagOnly : false,
140
+
141
+ /**
142
+ * Add EMBED tag as alternative: &lt;object&gt&lt;embed&gt&lt;/embed&gt&lt;/object&gt
143
+ * @type Boolean
144
+ * @default false
145
+ */
146
+ flashAddEmbedTag : true,
147
+
148
+ /**
149
+ * Use embedTagOnly and addEmbedTag values on edit.
150
+ * @type Boolean
151
+ * @default false
152
+ */
153
+ flashConvertOnEdit : false
154
+ } );
@@ -1,428 +1,428 @@
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.add( 'floatpanel',
7
- {
8
- requires : [ 'panel' ]
9
- });
10
-
11
- (function()
12
- {
13
- var panels = {};
14
- var isShowing = false;
15
-
16
- function getPanel( editor, doc, parentElement, definition, level )
17
- {
18
- // Generates the panel key: docId-eleId-skinName-langDir[-uiColor][-CSSs][-level]
19
- var key = CKEDITOR.tools.genKey( doc.getUniqueId(), parentElement.getUniqueId(), editor.skinName, editor.lang.dir,
20
- editor.uiColor || '', definition.css || '', level || '' );
21
-
22
- var panel = panels[ key ];
23
-
24
- if ( !panel )
25
- {
26
- panel = panels[ key ] = new CKEDITOR.ui.panel( doc, definition );
27
- panel.element = parentElement.append( CKEDITOR.dom.element.createFromHtml( panel.renderHtml( editor ), doc ) );
28
-
29
- panel.element.setStyles(
30
- {
31
- display : 'none',
32
- position : 'absolute'
33
- });
34
- }
35
-
36
- return panel;
37
- }
38
-
39
- CKEDITOR.ui.floatPanel = CKEDITOR.tools.createClass(
40
- {
41
- $ : function( editor, parentElement, definition, level )
42
- {
43
- definition.forceIFrame = 1;
44
-
45
- var doc = parentElement.getDocument(),
46
- panel = getPanel( editor, doc, parentElement, definition, level || 0 ),
47
- element = panel.element,
48
- iframe = element.getFirst().getFirst();
49
-
50
- this.element = element;
51
-
52
- this._ =
53
- {
54
- editor : editor,
55
- // The panel that will be floating.
56
- panel : panel,
57
- parentElement : parentElement,
58
- definition : definition,
59
- document : doc,
60
- iframe : iframe,
61
- children : [],
62
- dir : editor.lang.dir
63
- };
64
-
65
- editor.on( 'mode', function(){ this.hide(); }, this );
66
- },
67
-
68
- proto :
69
- {
70
- addBlock : function( name, block )
71
- {
72
- return this._.panel.addBlock( name, block );
73
- },
74
-
75
- addListBlock : function( name, multiSelect )
76
- {
77
- return this._.panel.addListBlock( name, multiSelect );
78
- },
79
-
80
- getBlock : function( name )
81
- {
82
- return this._.panel.getBlock( name );
83
- },
84
-
85
- /*
86
- corner (LTR):
87
- 1 = top-left
88
- 2 = top-right
89
- 3 = bottom-right
90
- 4 = bottom-left
91
-
92
- corner (RTL):
93
- 1 = top-right
94
- 2 = top-left
95
- 3 = bottom-left
96
- 4 = bottom-right
97
- */
98
- showBlock : function( name, offsetParent, corner, offsetX, offsetY )
99
- {
100
- var panel = this._.panel,
101
- block = panel.showBlock( name );
102
-
103
- this.allowBlur( false );
104
- isShowing = 1;
105
-
106
- // Record from where the focus is when open panel.
107
- this._.returnFocus = this._.editor.focusManager.hasFocus ? this._.editor : new CKEDITOR.dom.element( CKEDITOR.document.$.activeElement );
108
-
109
-
110
- var element = this.element,
111
- iframe = this._.iframe,
112
- definition = this._.definition,
113
- position = offsetParent.getDocumentPosition( element.getDocument() ),
114
- rtl = this._.dir == 'rtl';
115
-
116
- var left = position.x + ( offsetX || 0 ),
117
- top = position.y + ( offsetY || 0 );
118
-
119
- // Floating panels are off by (-1px, 0px) in RTL mode. (#3438)
120
- if ( rtl && ( corner == 1 || corner == 4 ) )
121
- left += offsetParent.$.offsetWidth;
122
- else if ( !rtl && ( corner == 2 || corner == 3 ) )
123
- left += offsetParent.$.offsetWidth - 1;
124
-
125
- if ( corner == 3 || corner == 4 )
126
- top += offsetParent.$.offsetHeight - 1;
127
-
128
- // Memorize offsetParent by it's ID.
129
- this._.panel._.offsetParentId = offsetParent.getId();
130
-
131
- element.setStyles(
132
- {
133
- top : top + 'px',
134
- left: 0,
135
- display : ''
136
- });
137
-
138
- // Don't use display or visibility style because we need to
139
- // calculate the rendering layout later and focus the element.
140
- element.setOpacity( 0 );
141
-
142
- // To allow the context menu to decrease back their width
143
- element.getFirst().removeStyle( 'width' );
144
-
145
- // Configure the IFrame blur event. Do that only once.
146
- if ( !this._.blurSet )
147
- {
148
- // Non IE prefer the event into a window object.
149
- var focused = CKEDITOR.env.ie ? iframe : new CKEDITOR.dom.window( iframe.$.contentWindow );
150
-
151
- // With addEventListener compatible browsers, we must
152
- // useCapture when registering the focus/blur events to
153
- // guarantee they will be firing in all situations. (#3068, #3222 )
154
- CKEDITOR.event.useCapture = true;
155
-
156
- focused.on( 'blur', function( ev )
157
- {
158
- if ( !this.allowBlur() )
159
- return;
160
-
161
- // As we are using capture to register the listener,
162
- // the blur event may get fired even when focusing
163
- // inside the window itself, so we must ensure the
164
- // target is out of it.
165
- var target = ev.data.getTarget() ;
166
- if ( target.getName && target.getName() != 'iframe' )
167
- return;
168
-
169
- if ( this.visible && !this._.activeChild && !isShowing )
170
- {
171
- // Panel close is caused by user's navigating away the focus, e.g. click outside the panel.
172
- // DO NOT restore focus in this case.
173
- delete this._.returnFocus;
174
- this.hide();
175
- }
176
- },
177
- this );
178
-
179
- focused.on( 'focus', function()
180
- {
181
- this._.focused = true;
182
- this.hideChild();
183
- this.allowBlur( true );
184
- },
185
- this );
186
-
187
- CKEDITOR.event.useCapture = false;
188
-
189
- this._.blurSet = 1;
190
- }
191
-
192
- panel.onEscape = CKEDITOR.tools.bind( function( keystroke )
193
- {
194
- if ( this.onEscape && this.onEscape( keystroke ) === false )
195
- return false;
196
- },
197
- this );
198
-
199
- CKEDITOR.tools.setTimeout( function()
200
- {
201
- if ( rtl )
202
- left -= element.$.offsetWidth;
203
-
204
- var panelLoad = CKEDITOR.tools.bind( function ()
205
- {
206
- var target = element.getFirst();
207
-
208
- if ( block.autoSize )
209
- {
210
- // We must adjust first the width or IE6 could include extra lines in the height computation
211
- var widthNode = block.element.$;
212
-
213
- if ( CKEDITOR.env.gecko || CKEDITOR.env.opera )
214
- widthNode = widthNode.parentNode;
215
-
216
- if ( CKEDITOR.env.ie )
217
- widthNode = widthNode.document.body;
218
-
219
- var width = widthNode.scrollWidth;
220
- // Account for extra height needed due to IE quirks box model bug:
221
- // http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug
222
- // (#3426)
223
- if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && width > 0 )
224
- width += ( target.$.offsetWidth || 0 ) - ( target.$.clientWidth || 0 ) + 3;
225
- // A little extra at the end.
226
- // If not present, IE6 might break into the next line, but also it looks better this way
227
- width += 4 ;
228
-
229
- target.setStyle( 'width', width + 'px' );
230
-
231
- // IE doesn't compute the scrollWidth if a filter is applied previously
232
- block.element.addClass( 'cke_frameLoaded' );
233
-
234
- var height = block.element.$.scrollHeight;
235
-
236
- // Account for extra height needed due to IE quirks box model bug:
237
- // http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug
238
- // (#3426)
239
- if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && height > 0 )
240
- height += ( target.$.offsetHeight || 0 ) - ( target.$.clientHeight || 0 ) + 3;
241
-
242
- target.setStyle( 'height', height + 'px' );
243
-
244
- // Fix IE < 8 visibility.
245
- panel._.currentBlock.element.setStyle( 'display', 'none' ).removeStyle( 'display' );
246
- }
247
- else
248
- target.removeStyle( 'height' );
249
-
250
- var panelElement = panel.element,
251
- panelWindow = panelElement.getWindow(),
252
- windowScroll = panelWindow.getScrollPosition(),
253
- viewportSize = panelWindow.getViewPaneSize(),
254
- panelSize =
255
- {
256
- 'height' : panelElement.$.offsetHeight,
257
- 'width' : panelElement.$.offsetWidth
258
- };
259
-
260
- // If the menu is horizontal off, shift it toward
261
- // the opposite language direction.
262
- if ( rtl ? left < 0 : left + panelSize.width > viewportSize.width + windowScroll.x )
263
- left += ( panelSize.width * ( rtl ? 1 : -1 ) );
264
-
265
- // Vertical off screen is simpler.
266
- if ( top + panelSize.height > viewportSize.height + windowScroll.y )
267
- top -= panelSize.height;
268
-
269
- // If IE is in RTL, we have troubles with absolute
270
- // position and horizontal scrolls. Here we have a
271
- // series of hacks to workaround it. (#6146)
272
- if ( CKEDITOR.env.ie )
273
- {
274
- var offsetParent = new CKEDITOR.dom.element( element.$.offsetParent ),
275
- scrollParent = offsetParent;
276
-
277
- // Quirks returns <body>, but standards returns <html>.
278
- if ( scrollParent.getName() == 'html' )
279
- scrollParent = scrollParent.getDocument().getBody();
280
-
281
- if ( scrollParent.getComputedStyle( 'direction' ) == 'rtl' )
282
- {
283
- // For IE8, there is not much logic on this, but it works.
284
- if ( CKEDITOR.env.ie8Compat )
285
- left -= element.getDocument().getDocumentElement().$.scrollLeft * 2;
286
- else
287
- left -= ( offsetParent.$.scrollWidth - offsetParent.$.clientWidth );
288
- }
289
- }
290
-
291
- // Trigger the onHide event of the previously active panel to prevent
292
- // incorrect styles from being applied (#6170)
293
- var innerElement = element.getFirst(),
294
- activePanel;
295
- if ( ( activePanel = innerElement.getCustomData( 'activePanel' ) ) )
296
- activePanel.onHide && activePanel.onHide.call( this, 1 );
297
- innerElement.setCustomData( 'activePanel', this );
298
-
299
- element.setStyles(
300
- {
301
- top : top + 'px',
302
- left : left + 'px'
303
- } );
304
- element.setOpacity( 1 );
305
- } , this );
306
-
307
- panel.isLoaded ? panelLoad() : panel.onLoad = panelLoad;
308
-
309
- // Set the panel frame focus, so the blur event gets fired.
310
- CKEDITOR.tools.setTimeout( function()
311
- {
312
- iframe.$.contentWindow.focus();
313
- // We need this get fired manually because of unfired focus() function.
314
- this.allowBlur( true );
315
- }, 0, this);
316
- }, CKEDITOR.env.air ? 200 : 0, this);
317
- this.visible = 1;
318
-
319
- if ( this.onShow )
320
- this.onShow.call( this );
321
-
322
- isShowing = 0;
323
- },
324
-
325
- hide : function( returnFocus )
326
- {
327
- if ( this.visible && ( !this.onHide || this.onHide.call( this ) !== true ) )
328
- {
329
- this.hideChild();
330
- // Blur previously focused element. (#6671)
331
- CKEDITOR.env.gecko && this._.iframe.getFrameDocument().$.activeElement.blur();
332
- this.element.setStyle( 'display', 'none' );
333
- this.visible = 0;
334
- this.element.getFirst().removeCustomData( 'activePanel' );
335
-
336
- // Return focus properly. (#6247)
337
- var focusReturn = returnFocus !== false && this._.returnFocus;
338
- if ( focusReturn )
339
- {
340
- // Webkit requires focus moved out panel iframe first.
341
- if ( CKEDITOR.env.webkit && focusReturn.type )
342
- focusReturn.getWindow().$.focus();
343
-
344
- focusReturn.focus();
345
- }
346
- }
347
- },
348
-
349
- allowBlur : function( allow ) // Prevent editor from hiding the panel. #3222.
350
- {
351
- var panel = this._.panel;
352
- if ( allow != undefined )
353
- panel.allowBlur = allow;
354
-
355
- return panel.allowBlur;
356
- },
357
-
358
- showAsChild : function( panel, blockName, offsetParent, corner, offsetX, offsetY )
359
- {
360
- // Skip reshowing of child which is already visible.
361
- if ( this._.activeChild == panel && panel._.panel._.offsetParentId == offsetParent.getId() )
362
- return;
363
-
364
- this.hideChild();
365
-
366
- panel.onHide = CKEDITOR.tools.bind( function()
367
- {
368
- // Use a timeout, so we give time for this menu to get
369
- // potentially focused.
370
- CKEDITOR.tools.setTimeout( function()
371
- {
372
- if ( !this._.focused )
373
- this.hide();
374
- },
375
- 0, this );
376
- },
377
- this );
378
-
379
- this._.activeChild = panel;
380
- this._.focused = false;
381
-
382
- panel.showBlock( blockName, offsetParent, corner, offsetX, offsetY );
383
-
384
- /* #3767 IE: Second level menu may not have borders */
385
- if ( CKEDITOR.env.ie7Compat || ( CKEDITOR.env.ie8 && CKEDITOR.env.ie6Compat ) )
386
- {
387
- setTimeout(function()
388
- {
389
- panel.element.getChild( 0 ).$.style.cssText += '';
390
- }, 100);
391
- }
392
- },
393
-
394
- hideChild : function()
395
- {
396
- var activeChild = this._.activeChild;
397
-
398
- if ( activeChild )
399
- {
400
- delete activeChild.onHide;
401
- // Sub panels don't manage focus. (#7881)
402
- delete activeChild._.returnFocus;
403
- delete this._.activeChild;
404
- activeChild.hide();
405
- }
406
- }
407
- }
408
- });
409
-
410
- CKEDITOR.on( 'instanceDestroyed', function()
411
- {
412
- var isLastInstance = CKEDITOR.tools.isEmpty( CKEDITOR.instances );
413
-
414
- for ( var i in panels )
415
- {
416
- var panel = panels[ i ];
417
- // Safe to destroy it since there're no more instances.(#4241)
418
- if ( isLastInstance )
419
- panel.destroy();
420
- // Panel might be used by other instances, just hide them.(#4552)
421
- else
422
- panel.element.hide();
423
- }
424
- // Remove the registration.
425
- isLastInstance && ( panels = {} );
426
-
427
- } );
428
- })();
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.add( 'floatpanel',
7
+ {
8
+ requires : [ 'panel' ]
9
+ });
10
+
11
+ (function()
12
+ {
13
+ var panels = {};
14
+ var isShowing = false;
15
+
16
+ function getPanel( editor, doc, parentElement, definition, level )
17
+ {
18
+ // Generates the panel key: docId-eleId-skinName-langDir[-uiColor][-CSSs][-level]
19
+ var key = CKEDITOR.tools.genKey( doc.getUniqueId(), parentElement.getUniqueId(), editor.skinName, editor.lang.dir,
20
+ editor.uiColor || '', definition.css || '', level || '' );
21
+
22
+ var panel = panels[ key ];
23
+
24
+ if ( !panel )
25
+ {
26
+ panel = panels[ key ] = new CKEDITOR.ui.panel( doc, definition );
27
+ panel.element = parentElement.append( CKEDITOR.dom.element.createFromHtml( panel.renderHtml( editor ), doc ) );
28
+
29
+ panel.element.setStyles(
30
+ {
31
+ display : 'none',
32
+ position : 'absolute'
33
+ });
34
+ }
35
+
36
+ return panel;
37
+ }
38
+
39
+ CKEDITOR.ui.floatPanel = CKEDITOR.tools.createClass(
40
+ {
41
+ $ : function( editor, parentElement, definition, level )
42
+ {
43
+ definition.forceIFrame = 1;
44
+
45
+ var doc = parentElement.getDocument(),
46
+ panel = getPanel( editor, doc, parentElement, definition, level || 0 ),
47
+ element = panel.element,
48
+ iframe = element.getFirst().getFirst();
49
+
50
+ this.element = element;
51
+
52
+ this._ =
53
+ {
54
+ editor : editor,
55
+ // The panel that will be floating.
56
+ panel : panel,
57
+ parentElement : parentElement,
58
+ definition : definition,
59
+ document : doc,
60
+ iframe : iframe,
61
+ children : [],
62
+ dir : editor.lang.dir
63
+ };
64
+
65
+ editor.on( 'mode', function(){ this.hide(); }, this );
66
+ },
67
+
68
+ proto :
69
+ {
70
+ addBlock : function( name, block )
71
+ {
72
+ return this._.panel.addBlock( name, block );
73
+ },
74
+
75
+ addListBlock : function( name, multiSelect )
76
+ {
77
+ return this._.panel.addListBlock( name, multiSelect );
78
+ },
79
+
80
+ getBlock : function( name )
81
+ {
82
+ return this._.panel.getBlock( name );
83
+ },
84
+
85
+ /*
86
+ corner (LTR):
87
+ 1 = top-left
88
+ 2 = top-right
89
+ 3 = bottom-right
90
+ 4 = bottom-left
91
+
92
+ corner (RTL):
93
+ 1 = top-right
94
+ 2 = top-left
95
+ 3 = bottom-left
96
+ 4 = bottom-right
97
+ */
98
+ showBlock : function( name, offsetParent, corner, offsetX, offsetY )
99
+ {
100
+ var panel = this._.panel,
101
+ block = panel.showBlock( name );
102
+
103
+ this.allowBlur( false );
104
+ isShowing = 1;
105
+
106
+ // Record from where the focus is when open panel.
107
+ this._.returnFocus = this._.editor.focusManager.hasFocus ? this._.editor : new CKEDITOR.dom.element( CKEDITOR.document.$.activeElement );
108
+
109
+
110
+ var element = this.element,
111
+ iframe = this._.iframe,
112
+ definition = this._.definition,
113
+ position = offsetParent.getDocumentPosition( element.getDocument() ),
114
+ rtl = this._.dir == 'rtl';
115
+
116
+ var left = position.x + ( offsetX || 0 ),
117
+ top = position.y + ( offsetY || 0 );
118
+
119
+ // Floating panels are off by (-1px, 0px) in RTL mode. (#3438)
120
+ if ( rtl && ( corner == 1 || corner == 4 ) )
121
+ left += offsetParent.$.offsetWidth;
122
+ else if ( !rtl && ( corner == 2 || corner == 3 ) )
123
+ left += offsetParent.$.offsetWidth - 1;
124
+
125
+ if ( corner == 3 || corner == 4 )
126
+ top += offsetParent.$.offsetHeight - 1;
127
+
128
+ // Memorize offsetParent by it's ID.
129
+ this._.panel._.offsetParentId = offsetParent.getId();
130
+
131
+ element.setStyles(
132
+ {
133
+ top : top + 'px',
134
+ left: 0,
135
+ display : ''
136
+ });
137
+
138
+ // Don't use display or visibility style because we need to
139
+ // calculate the rendering layout later and focus the element.
140
+ element.setOpacity( 0 );
141
+
142
+ // To allow the context menu to decrease back their width
143
+ element.getFirst().removeStyle( 'width' );
144
+
145
+ // Configure the IFrame blur event. Do that only once.
146
+ if ( !this._.blurSet )
147
+ {
148
+ // Non IE prefer the event into a window object.
149
+ var focused = CKEDITOR.env.ie ? iframe : new CKEDITOR.dom.window( iframe.$.contentWindow );
150
+
151
+ // With addEventListener compatible browsers, we must
152
+ // useCapture when registering the focus/blur events to
153
+ // guarantee they will be firing in all situations. (#3068, #3222 )
154
+ CKEDITOR.event.useCapture = true;
155
+
156
+ focused.on( 'blur', function( ev )
157
+ {
158
+ if ( !this.allowBlur() )
159
+ return;
160
+
161
+ // As we are using capture to register the listener,
162
+ // the blur event may get fired even when focusing
163
+ // inside the window itself, so we must ensure the
164
+ // target is out of it.
165
+ var target = ev.data.getTarget() ;
166
+ if ( target.getName && target.getName() != 'iframe' )
167
+ return;
168
+
169
+ if ( this.visible && !this._.activeChild && !isShowing )
170
+ {
171
+ // Panel close is caused by user's navigating away the focus, e.g. click outside the panel.
172
+ // DO NOT restore focus in this case.
173
+ delete this._.returnFocus;
174
+ this.hide();
175
+ }
176
+ },
177
+ this );
178
+
179
+ focused.on( 'focus', function()
180
+ {
181
+ this._.focused = true;
182
+ this.hideChild();
183
+ this.allowBlur( true );
184
+ },
185
+ this );
186
+
187
+ CKEDITOR.event.useCapture = false;
188
+
189
+ this._.blurSet = 1;
190
+ }
191
+
192
+ panel.onEscape = CKEDITOR.tools.bind( function( keystroke )
193
+ {
194
+ if ( this.onEscape && this.onEscape( keystroke ) === false )
195
+ return false;
196
+ },
197
+ this );
198
+
199
+ CKEDITOR.tools.setTimeout( function()
200
+ {
201
+ if ( rtl )
202
+ left -= element.$.offsetWidth;
203
+
204
+ var panelLoad = CKEDITOR.tools.bind( function ()
205
+ {
206
+ var target = element.getFirst();
207
+
208
+ if ( block.autoSize )
209
+ {
210
+ // We must adjust first the width or IE6 could include extra lines in the height computation
211
+ var widthNode = block.element.$;
212
+
213
+ if ( CKEDITOR.env.gecko || CKEDITOR.env.opera )
214
+ widthNode = widthNode.parentNode;
215
+
216
+ if ( CKEDITOR.env.ie )
217
+ widthNode = widthNode.document.body;
218
+
219
+ var width = widthNode.scrollWidth;
220
+ // Account for extra height needed due to IE quirks box model bug:
221
+ // http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug
222
+ // (#3426)
223
+ if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && width > 0 )
224
+ width += ( target.$.offsetWidth || 0 ) - ( target.$.clientWidth || 0 ) + 3;
225
+ // A little extra at the end.
226
+ // If not present, IE6 might break into the next line, but also it looks better this way
227
+ width += 4 ;
228
+
229
+ target.setStyle( 'width', width + 'px' );
230
+
231
+ // IE doesn't compute the scrollWidth if a filter is applied previously
232
+ block.element.addClass( 'cke_frameLoaded' );
233
+
234
+ var height = block.element.$.scrollHeight;
235
+
236
+ // Account for extra height needed due to IE quirks box model bug:
237
+ // http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug
238
+ // (#3426)
239
+ if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && height > 0 )
240
+ height += ( target.$.offsetHeight || 0 ) - ( target.$.clientHeight || 0 ) + 3;
241
+
242
+ target.setStyle( 'height', height + 'px' );
243
+
244
+ // Fix IE < 8 visibility.
245
+ panel._.currentBlock.element.setStyle( 'display', 'none' ).removeStyle( 'display' );
246
+ }
247
+ else
248
+ target.removeStyle( 'height' );
249
+
250
+ var panelElement = panel.element,
251
+ panelWindow = panelElement.getWindow(),
252
+ windowScroll = panelWindow.getScrollPosition(),
253
+ viewportSize = panelWindow.getViewPaneSize(),
254
+ panelSize =
255
+ {
256
+ 'height' : panelElement.$.offsetHeight,
257
+ 'width' : panelElement.$.offsetWidth
258
+ };
259
+
260
+ // If the menu is horizontal off, shift it toward
261
+ // the opposite language direction.
262
+ if ( rtl ? left < 0 : left + panelSize.width > viewportSize.width + windowScroll.x )
263
+ left += ( panelSize.width * ( rtl ? 1 : -1 ) );
264
+
265
+ // Vertical off screen is simpler.
266
+ if ( top + panelSize.height > viewportSize.height + windowScroll.y )
267
+ top -= panelSize.height;
268
+
269
+ // If IE is in RTL, we have troubles with absolute
270
+ // position and horizontal scrolls. Here we have a
271
+ // series of hacks to workaround it. (#6146)
272
+ if ( CKEDITOR.env.ie )
273
+ {
274
+ var offsetParent = new CKEDITOR.dom.element( element.$.offsetParent ),
275
+ scrollParent = offsetParent;
276
+
277
+ // Quirks returns <body>, but standards returns <html>.
278
+ if ( scrollParent.getName() == 'html' )
279
+ scrollParent = scrollParent.getDocument().getBody();
280
+
281
+ if ( scrollParent.getComputedStyle( 'direction' ) == 'rtl' )
282
+ {
283
+ // For IE8, there is not much logic on this, but it works.
284
+ if ( CKEDITOR.env.ie8Compat )
285
+ left -= element.getDocument().getDocumentElement().$.scrollLeft * 2;
286
+ else
287
+ left -= ( offsetParent.$.scrollWidth - offsetParent.$.clientWidth );
288
+ }
289
+ }
290
+
291
+ // Trigger the onHide event of the previously active panel to prevent
292
+ // incorrect styles from being applied (#6170)
293
+ var innerElement = element.getFirst(),
294
+ activePanel;
295
+ if ( ( activePanel = innerElement.getCustomData( 'activePanel' ) ) )
296
+ activePanel.onHide && activePanel.onHide.call( this, 1 );
297
+ innerElement.setCustomData( 'activePanel', this );
298
+
299
+ element.setStyles(
300
+ {
301
+ top : top + 'px',
302
+ left : left + 'px'
303
+ } );
304
+ element.setOpacity( 1 );
305
+ } , this );
306
+
307
+ panel.isLoaded ? panelLoad() : panel.onLoad = panelLoad;
308
+
309
+ // Set the panel frame focus, so the blur event gets fired.
310
+ CKEDITOR.tools.setTimeout( function()
311
+ {
312
+ iframe.$.contentWindow.focus();
313
+ // We need this get fired manually because of unfired focus() function.
314
+ this.allowBlur( true );
315
+ }, 0, this);
316
+ }, CKEDITOR.env.air ? 200 : 0, this);
317
+ this.visible = 1;
318
+
319
+ if ( this.onShow )
320
+ this.onShow.call( this );
321
+
322
+ isShowing = 0;
323
+ },
324
+
325
+ hide : function( returnFocus )
326
+ {
327
+ if ( this.visible && ( !this.onHide || this.onHide.call( this ) !== true ) )
328
+ {
329
+ this.hideChild();
330
+ // Blur previously focused element. (#6671)
331
+ CKEDITOR.env.gecko && this._.iframe.getFrameDocument().$.activeElement.blur();
332
+ this.element.setStyle( 'display', 'none' );
333
+ this.visible = 0;
334
+ this.element.getFirst().removeCustomData( 'activePanel' );
335
+
336
+ // Return focus properly. (#6247)
337
+ var focusReturn = returnFocus !== false && this._.returnFocus;
338
+ if ( focusReturn )
339
+ {
340
+ // Webkit requires focus moved out panel iframe first.
341
+ if ( CKEDITOR.env.webkit && focusReturn.type )
342
+ focusReturn.getWindow().$.focus();
343
+
344
+ focusReturn.focus();
345
+ }
346
+ }
347
+ },
348
+
349
+ allowBlur : function( allow ) // Prevent editor from hiding the panel. #3222.
350
+ {
351
+ var panel = this._.panel;
352
+ if ( allow != undefined )
353
+ panel.allowBlur = allow;
354
+
355
+ return panel.allowBlur;
356
+ },
357
+
358
+ showAsChild : function( panel, blockName, offsetParent, corner, offsetX, offsetY )
359
+ {
360
+ // Skip reshowing of child which is already visible.
361
+ if ( this._.activeChild == panel && panel._.panel._.offsetParentId == offsetParent.getId() )
362
+ return;
363
+
364
+ this.hideChild();
365
+
366
+ panel.onHide = CKEDITOR.tools.bind( function()
367
+ {
368
+ // Use a timeout, so we give time for this menu to get
369
+ // potentially focused.
370
+ CKEDITOR.tools.setTimeout( function()
371
+ {
372
+ if ( !this._.focused )
373
+ this.hide();
374
+ },
375
+ 0, this );
376
+ },
377
+ this );
378
+
379
+ this._.activeChild = panel;
380
+ this._.focused = false;
381
+
382
+ panel.showBlock( blockName, offsetParent, corner, offsetX, offsetY );
383
+
384
+ /* #3767 IE: Second level menu may not have borders */
385
+ if ( CKEDITOR.env.ie7Compat || ( CKEDITOR.env.ie8 && CKEDITOR.env.ie6Compat ) )
386
+ {
387
+ setTimeout(function()
388
+ {
389
+ panel.element.getChild( 0 ).$.style.cssText += '';
390
+ }, 100);
391
+ }
392
+ },
393
+
394
+ hideChild : function()
395
+ {
396
+ var activeChild = this._.activeChild;
397
+
398
+ if ( activeChild )
399
+ {
400
+ delete activeChild.onHide;
401
+ // Sub panels don't manage focus. (#7881)
402
+ delete activeChild._.returnFocus;
403
+ delete this._.activeChild;
404
+ activeChild.hide();
405
+ }
406
+ }
407
+ }
408
+ });
409
+
410
+ CKEDITOR.on( 'instanceDestroyed', function()
411
+ {
412
+ var isLastInstance = CKEDITOR.tools.isEmpty( CKEDITOR.instances );
413
+
414
+ for ( var i in panels )
415
+ {
416
+ var panel = panels[ i ];
417
+ // Safe to destroy it since there're no more instances.(#4241)
418
+ if ( isLastInstance )
419
+ panel.destroy();
420
+ // Panel might be used by other instances, just hide them.(#4552)
421
+ else
422
+ panel.element.hide();
423
+ }
424
+ // Remove the registration.
425
+ isLastInstance && ( panels = {} );
426
+
427
+ } );
428
+ })();