ppc_logic 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (665) hide show
  1. data/Gemfile +1 -4
  2. data/VERSION +1 -1
  3. data/app/models/landing_page.rb +13 -50
  4. data/app/views/admin/landing_pages/_form.html.erb +1 -1
  5. data/app/views/layouts/application.html.erb +2 -8
  6. data/config/environments/development.rb +1 -0
  7. data/config/environments/production.rb +2 -0
  8. data/config/environments/test.rb +2 -3
  9. data/features/manage_landing_pages.feature +1 -1
  10. data/features/manage_local_offers.feature +1 -1
  11. data/features/support/env.rb +38 -20
  12. data/lib/tasks/cucumber.rake +12 -0
  13. data/ppc_logic.gemspec +5 -659
  14. metadata +22 -686
  15. data/public/404.html +0 -26
  16. data/public/422.html +0 -26
  17. data/public/500.html +0 -26
  18. data/public/favicon.ico +0 -0
  19. data/public/javascripts/application.js +0 -2
  20. data/public/javascripts/ckeditor/.htaccess +0 -24
  21. data/public/javascripts/ckeditor/CHANGES.html +0 -993
  22. data/public/javascripts/ckeditor/INSTALL.html +0 -92
  23. data/public/javascripts/ckeditor/LICENSE.html +0 -1334
  24. data/public/javascripts/ckeditor/_samples/ajax.html +0 -87
  25. data/public/javascripts/ckeditor/_samples/api.html +0 -152
  26. data/public/javascripts/ckeditor/_samples/api_dialog.html +0 -188
  27. data/public/javascripts/ckeditor/_samples/api_dialog/my_dialog.js +0 -28
  28. data/public/javascripts/ckeditor/_samples/asp/advanced.asp +0 -105
  29. data/public/javascripts/ckeditor/_samples/asp/events.asp +0 -136
  30. data/public/javascripts/ckeditor/_samples/asp/index.html +0 -103
  31. data/public/javascripts/ckeditor/_samples/asp/replace.asp +0 -72
  32. data/public/javascripts/ckeditor/_samples/asp/replaceall.asp +0 -77
  33. data/public/javascripts/ckeditor/_samples/asp/sample_posteddata.asp +0 -46
  34. data/public/javascripts/ckeditor/_samples/asp/standalone.asp +0 -72
  35. data/public/javascripts/ckeditor/_samples/assets/output_for_flash.fla +0 -0
  36. data/public/javascripts/ckeditor/_samples/assets/output_for_flash.swf +0 -0
  37. data/public/javascripts/ckeditor/_samples/assets/output_xhtml.css +0 -204
  38. data/public/javascripts/ckeditor/_samples/assets/swfobject.js +0 -18
  39. data/public/javascripts/ckeditor/_samples/autogrow.html +0 -75
  40. data/public/javascripts/ckeditor/_samples/divreplace.html +0 -137
  41. data/public/javascripts/ckeditor/_samples/enterkey.html +0 -88
  42. data/public/javascripts/ckeditor/_samples/fullpage.html +0 -62
  43. data/public/javascripts/ckeditor/_samples/index.html +0 -57
  44. data/public/javascripts/ckeditor/_samples/jqueryadapter.html +0 -73
  45. data/public/javascripts/ckeditor/_samples/output_for_flash.html +0 -257
  46. data/public/javascripts/ckeditor/_samples/output_html.html +0 -259
  47. data/public/javascripts/ckeditor/_samples/output_xhtml.html +0 -159
  48. data/public/javascripts/ckeditor/_samples/php/advanced.php +0 -93
  49. data/public/javascripts/ckeditor/_samples/php/events.php +0 -130
  50. data/public/javascripts/ckeditor/_samples/php/replace.php +0 -63
  51. data/public/javascripts/ckeditor/_samples/php/replaceall.php +0 -68
  52. data/public/javascripts/ckeditor/_samples/php/standalone.php +0 -64
  53. data/public/javascripts/ckeditor/_samples/replacebyclass.html +0 -49
  54. data/public/javascripts/ckeditor/_samples/replacebycode.html +0 -80
  55. data/public/javascripts/ckeditor/_samples/sample.css +0 -81
  56. data/public/javascripts/ckeditor/_samples/sample.js +0 -65
  57. data/public/javascripts/ckeditor/_samples/sample_posteddata.php +0 -59
  58. data/public/javascripts/ckeditor/_samples/sharedspaces.html +0 -131
  59. data/public/javascripts/ckeditor/_samples/skins.html +0 -83
  60. data/public/javascripts/ckeditor/_samples/ui_color.html +0 -87
  61. data/public/javascripts/ckeditor/_samples/ui_languages.html +0 -103
  62. data/public/javascripts/ckeditor/_source/adapters/jquery.js +0 -297
  63. data/public/javascripts/ckeditor/_source/core/_bootstrap.js +0 -96
  64. data/public/javascripts/ckeditor/_source/core/ajax.js +0 -142
  65. data/public/javascripts/ckeditor/_source/core/ckeditor.js +0 -133
  66. data/public/javascripts/ckeditor/_source/core/ckeditor_base.js +0 -196
  67. data/public/javascripts/ckeditor/_source/core/ckeditor_basic.js +0 -239
  68. data/public/javascripts/ckeditor/_source/core/command.js +0 -209
  69. data/public/javascripts/ckeditor/_source/core/commanddefinition.js +0 -129
  70. data/public/javascripts/ckeditor/_source/core/config.js +0 -430
  71. data/public/javascripts/ckeditor/_source/core/dataprocessor.js +0 -65
  72. data/public/javascripts/ckeditor/_source/core/dom.js +0 -20
  73. data/public/javascripts/ckeditor/_source/core/dom/comment.js +0 -32
  74. data/public/javascripts/ckeditor/_source/core/dom/document.js +0 -224
  75. data/public/javascripts/ckeditor/_source/core/dom/documentfragment.js +0 -49
  76. data/public/javascripts/ckeditor/_source/core/dom/domobject.js +0 -255
  77. data/public/javascripts/ckeditor/_source/core/dom/element.js +0 -1564
  78. data/public/javascripts/ckeditor/_source/core/dom/elementpath.js +0 -119
  79. data/public/javascripts/ckeditor/_source/core/dom/event.js +0 -142
  80. data/public/javascripts/ckeditor/_source/core/dom/node.js +0 -683
  81. data/public/javascripts/ckeditor/_source/core/dom/nodelist.js +0 -26
  82. data/public/javascripts/ckeditor/_source/core/dom/range.js +0 -1883
  83. data/public/javascripts/ckeditor/_source/core/dom/rangelist.js +0 -214
  84. data/public/javascripts/ckeditor/_source/core/dom/text.js +0 -123
  85. data/public/javascripts/ckeditor/_source/core/dom/walker.js +0 -445
  86. data/public/javascripts/ckeditor/_source/core/dom/window.js +0 -96
  87. data/public/javascripts/ckeditor/_source/core/dtd.js +0 -238
  88. data/public/javascripts/ckeditor/_source/core/editor.js +0 -924
  89. data/public/javascripts/ckeditor/_source/core/editor_basic.js +0 -182
  90. data/public/javascripts/ckeditor/_source/core/env.js +0 -270
  91. data/public/javascripts/ckeditor/_source/core/event.js +0 -342
  92. data/public/javascripts/ckeditor/_source/core/eventInfo.js +0 -120
  93. data/public/javascripts/ckeditor/_source/core/focusmanager.js +0 -152
  94. data/public/javascripts/ckeditor/_source/core/htmlparser.js +0 -224
  95. data/public/javascripts/ckeditor/_source/core/htmlparser/basicwriter.js +0 -145
  96. data/public/javascripts/ckeditor/_source/core/htmlparser/cdata.js +0 -43
  97. data/public/javascripts/ckeditor/_source/core/htmlparser/comment.js +0 -60
  98. data/public/javascripts/ckeditor/_source/core/htmlparser/element.js +0 -240
  99. data/public/javascripts/ckeditor/_source/core/htmlparser/filter.js +0 -288
  100. data/public/javascripts/ckeditor/_source/core/htmlparser/fragment.js +0 -504
  101. data/public/javascripts/ckeditor/_source/core/htmlparser/text.js +0 -55
  102. data/public/javascripts/ckeditor/_source/core/imagecacher.js +0 -80
  103. data/public/javascripts/ckeditor/_source/core/lang.js +0 -156
  104. data/public/javascripts/ckeditor/_source/core/loader.js +0 -243
  105. data/public/javascripts/ckeditor/_source/core/plugindefinition.js +0 -66
  106. data/public/javascripts/ckeditor/_source/core/plugins.js +0 -85
  107. data/public/javascripts/ckeditor/_source/core/resourcemanager.js +0 -238
  108. data/public/javascripts/ckeditor/_source/core/scriptloader.js +0 -200
  109. data/public/javascripts/ckeditor/_source/core/skins.js +0 -212
  110. data/public/javascripts/ckeditor/_source/core/themes.js +0 -19
  111. data/public/javascripts/ckeditor/_source/core/tools.js +0 -734
  112. data/public/javascripts/ckeditor/_source/core/ui.js +0 -116
  113. data/public/javascripts/ckeditor/_source/core/xml.js +0 -165
  114. data/public/javascripts/ckeditor/_source/lang/_languages.js +0 -83
  115. data/public/javascripts/ckeditor/_source/lang/_translationstatus.txt +0 -60
  116. data/public/javascripts/ckeditor/_source/lang/af.js +0 -758
  117. data/public/javascripts/ckeditor/_source/lang/ar.js +0 -758
  118. data/public/javascripts/ckeditor/_source/lang/bg.js +0 -758
  119. data/public/javascripts/ckeditor/_source/lang/bn.js +0 -758
  120. data/public/javascripts/ckeditor/_source/lang/bs.js +0 -758
  121. data/public/javascripts/ckeditor/_source/lang/ca.js +0 -758
  122. data/public/javascripts/ckeditor/_source/lang/cs.js +0 -758
  123. data/public/javascripts/ckeditor/_source/lang/cy.js +0 -758
  124. data/public/javascripts/ckeditor/_source/lang/da.js +0 -758
  125. data/public/javascripts/ckeditor/_source/lang/de.js +0 -758
  126. data/public/javascripts/ckeditor/_source/lang/el.js +0 -758
  127. data/public/javascripts/ckeditor/_source/lang/en-au.js +0 -758
  128. data/public/javascripts/ckeditor/_source/lang/en-ca.js +0 -758
  129. data/public/javascripts/ckeditor/_source/lang/en-gb.js +0 -758
  130. data/public/javascripts/ckeditor/_source/lang/en.js +0 -758
  131. data/public/javascripts/ckeditor/_source/lang/eo.js +0 -758
  132. data/public/javascripts/ckeditor/_source/lang/es.js +0 -758
  133. data/public/javascripts/ckeditor/_source/lang/et.js +0 -758
  134. data/public/javascripts/ckeditor/_source/lang/eu.js +0 -758
  135. data/public/javascripts/ckeditor/_source/lang/fa.js +0 -758
  136. data/public/javascripts/ckeditor/_source/lang/fi.js +0 -758
  137. data/public/javascripts/ckeditor/_source/lang/fo.js +0 -758
  138. data/public/javascripts/ckeditor/_source/lang/fr-ca.js +0 -758
  139. data/public/javascripts/ckeditor/_source/lang/fr.js +0 -758
  140. data/public/javascripts/ckeditor/_source/lang/gl.js +0 -758
  141. data/public/javascripts/ckeditor/_source/lang/gu.js +0 -758
  142. data/public/javascripts/ckeditor/_source/lang/he.js +0 -758
  143. data/public/javascripts/ckeditor/_source/lang/hi.js +0 -758
  144. data/public/javascripts/ckeditor/_source/lang/hr.js +0 -758
  145. data/public/javascripts/ckeditor/_source/lang/hu.js +0 -758
  146. data/public/javascripts/ckeditor/_source/lang/is.js +0 -758
  147. data/public/javascripts/ckeditor/_source/lang/it.js +0 -758
  148. data/public/javascripts/ckeditor/_source/lang/ja.js +0 -758
  149. data/public/javascripts/ckeditor/_source/lang/km.js +0 -758
  150. data/public/javascripts/ckeditor/_source/lang/ko.js +0 -758
  151. data/public/javascripts/ckeditor/_source/lang/lt.js +0 -758
  152. data/public/javascripts/ckeditor/_source/lang/lv.js +0 -758
  153. data/public/javascripts/ckeditor/_source/lang/mn.js +0 -758
  154. data/public/javascripts/ckeditor/_source/lang/ms.js +0 -758
  155. data/public/javascripts/ckeditor/_source/lang/nb.js +0 -758
  156. data/public/javascripts/ckeditor/_source/lang/nl.js +0 -758
  157. data/public/javascripts/ckeditor/_source/lang/no.js +0 -758
  158. data/public/javascripts/ckeditor/_source/lang/pl.js +0 -758
  159. data/public/javascripts/ckeditor/_source/lang/pt-br.js +0 -757
  160. data/public/javascripts/ckeditor/_source/lang/pt.js +0 -758
  161. data/public/javascripts/ckeditor/_source/lang/ro.js +0 -758
  162. data/public/javascripts/ckeditor/_source/lang/ru.js +0 -758
  163. data/public/javascripts/ckeditor/_source/lang/sk.js +0 -758
  164. data/public/javascripts/ckeditor/_source/lang/sl.js +0 -758
  165. data/public/javascripts/ckeditor/_source/lang/sr-latn.js +0 -758
  166. data/public/javascripts/ckeditor/_source/lang/sr.js +0 -758
  167. data/public/javascripts/ckeditor/_source/lang/sv.js +0 -758
  168. data/public/javascripts/ckeditor/_source/lang/th.js +0 -758
  169. data/public/javascripts/ckeditor/_source/lang/tr.js +0 -757
  170. data/public/javascripts/ckeditor/_source/lang/uk.js +0 -758
  171. data/public/javascripts/ckeditor/_source/lang/vi.js +0 -758
  172. data/public/javascripts/ckeditor/_source/lang/zh-cn.js +0 -758
  173. data/public/javascripts/ckeditor/_source/lang/zh.js +0 -758
  174. data/public/javascripts/ckeditor/_source/plugins/a11yhelp/dialogs/a11yhelp.js +0 -211
  175. data/public/javascripts/ckeditor/_source/plugins/a11yhelp/lang/en.js +0 -108
  176. data/public/javascripts/ckeditor/_source/plugins/a11yhelp/lang/he.js +0 -216
  177. data/public/javascripts/ckeditor/_source/plugins/a11yhelp/plugin.js +0 -46
  178. data/public/javascripts/ckeditor/_source/plugins/about/dialogs/about.js +0 -73
  179. data/public/javascripts/ckeditor/_source/plugins/about/dialogs/logo_ckeditor.png +0 -0
  180. data/public/javascripts/ckeditor/_source/plugins/about/plugin.js +0 -23
  181. data/public/javascripts/ckeditor/_source/plugins/ajax_save/plugin.js +0 -44
  182. data/public/javascripts/ckeditor/_source/plugins/attachment/dialogs/attachment.js +0 -384
  183. data/public/javascripts/ckeditor/_source/plugins/attachment/images/attachment.png +0 -0
  184. data/public/javascripts/ckeditor/_source/plugins/attachment/lang/en.js +0 -10
  185. data/public/javascripts/ckeditor/_source/plugins/attachment/lang/ru.js +0 -10
  186. data/public/javascripts/ckeditor/_source/plugins/attachment/lang/uk.js +0 -10
  187. data/public/javascripts/ckeditor/_source/plugins/attachment/plugin.js +0 -44
  188. data/public/javascripts/ckeditor/_source/plugins/autogrow/plugin.js +0 -86
  189. data/public/javascripts/ckeditor/_source/plugins/basicstyles/plugin.js +0 -101
  190. data/public/javascripts/ckeditor/_source/plugins/bidi/plugin.js +0 -259
  191. data/public/javascripts/ckeditor/_source/plugins/blockquote/plugin.js +0 -301
  192. data/public/javascripts/ckeditor/_source/plugins/button/plugin.js +0 -277
  193. data/public/javascripts/ckeditor/_source/plugins/clipboard/dialogs/paste.js +0 -205
  194. data/public/javascripts/ckeditor/_source/plugins/clipboard/plugin.js +0 -412
  195. data/public/javascripts/ckeditor/_source/plugins/colorbutton/plugin.js +0 -250
  196. data/public/javascripts/ckeditor/_source/plugins/colordialog/dialogs/colordialog.js +0 -336
  197. data/public/javascripts/ckeditor/_source/plugins/colordialog/plugin.js +0 -13
  198. data/public/javascripts/ckeditor/_source/plugins/contextmenu/plugin.js +0 -290
  199. data/public/javascripts/ckeditor/_source/plugins/dialog/dialogDefinition.js +0 -315
  200. data/public/javascripts/ckeditor/_source/plugins/dialog/plugin.js +0 -3015
  201. data/public/javascripts/ckeditor/_source/plugins/dialogadvtab/plugin.js +0 -213
  202. data/public/javascripts/ckeditor/_source/plugins/dialogui/plugin.js +0 -1523
  203. data/public/javascripts/ckeditor/_source/plugins/div/dialogs/div.js +0 -535
  204. data/public/javascripts/ckeditor/_source/plugins/div/plugin.js +0 -121
  205. data/public/javascripts/ckeditor/_source/plugins/domiterator/plugin.js +0 -356
  206. data/public/javascripts/ckeditor/_source/plugins/editingblock/plugin.js +0 -229
  207. data/public/javascripts/ckeditor/_source/plugins/elementspath/plugin.js +0 -206
  208. data/public/javascripts/ckeditor/_source/plugins/embed/dialogs/embed.js +0 -65
  209. data/public/javascripts/ckeditor/_source/plugins/embed/images/embed.png +0 -0
  210. data/public/javascripts/ckeditor/_source/plugins/embed/lang/en.js +0 -9
  211. data/public/javascripts/ckeditor/_source/plugins/embed/lang/ru.js +0 -9
  212. data/public/javascripts/ckeditor/_source/plugins/embed/lang/uk.js +0 -9
  213. data/public/javascripts/ckeditor/_source/plugins/embed/plugin.js +0 -44
  214. data/public/javascripts/ckeditor/_source/plugins/enterkey/plugin.js +0 -363
  215. data/public/javascripts/ckeditor/_source/plugins/entities/plugin.js +0 -226
  216. data/public/javascripts/ckeditor/_source/plugins/fakeobjects/plugin.js +0 -122
  217. data/public/javascripts/ckeditor/_source/plugins/filebrowser/plugin.js +0 -501
  218. data/public/javascripts/ckeditor/_source/plugins/find/dialogs/find.js +0 -890
  219. data/public/javascripts/ckeditor/_source/plugins/find/plugin.js +0 -46
  220. data/public/javascripts/ckeditor/_source/plugins/flash/dialogs/flash.js +0 -698
  221. data/public/javascripts/ckeditor/_source/plugins/flash/images/placeholder.png +0 -0
  222. data/public/javascripts/ckeditor/_source/plugins/flash/plugin.js +0 -168
  223. data/public/javascripts/ckeditor/_source/plugins/floatpanel/plugin.js +0 -402
  224. data/public/javascripts/ckeditor/_source/plugins/font/plugin.js +0 -234
  225. data/public/javascripts/ckeditor/_source/plugins/format/plugin.js +0 -194
  226. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/button.js +0 -135
  227. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/checkbox.js +0 -153
  228. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/form.js +0 -177
  229. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/hiddenfield.js +0 -98
  230. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/radio.js +0 -135
  231. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/select.js +0 -556
  232. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/textarea.js +0 -114
  233. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/textfield.js +0 -199
  234. data/public/javascripts/ckeditor/_source/plugins/forms/images/hiddenfield.gif +0 -0
  235. data/public/javascripts/ckeditor/_source/plugins/forms/plugin.js +0 -284
  236. data/public/javascripts/ckeditor/_source/plugins/horizontalrule/plugin.js +0 -36
  237. data/public/javascripts/ckeditor/_source/plugins/htmldataprocessor/plugin.js +0 -502
  238. data/public/javascripts/ckeditor/_source/plugins/htmlwriter/plugin.js +0 -319
  239. data/public/javascripts/ckeditor/_source/plugins/iframedialog/plugin.js +0 -136
  240. data/public/javascripts/ckeditor/_source/plugins/image/dialogs/image.js +0 -1396
  241. data/public/javascripts/ckeditor/_source/plugins/image/plugin.js +0 -81
  242. data/public/javascripts/ckeditor/_source/plugins/indent/plugin.js +0 -455
  243. data/public/javascripts/ckeditor/_source/plugins/justify/plugin.js +0 -221
  244. data/public/javascripts/ckeditor/_source/plugins/keystrokes/plugin.js +0 -225
  245. data/public/javascripts/ckeditor/_source/plugins/link/dialogs/anchor.js +0 -99
  246. data/public/javascripts/ckeditor/_source/plugins/link/dialogs/link.js +0 -1424
  247. data/public/javascripts/ckeditor/_source/plugins/link/images/anchor.gif +0 -0
  248. data/public/javascripts/ckeditor/_source/plugins/link/plugin.js +0 -238
  249. data/public/javascripts/ckeditor/_source/plugins/list/plugin.js +0 -710
  250. data/public/javascripts/ckeditor/_source/plugins/listblock/plugin.js +0 -257
  251. data/public/javascripts/ckeditor/_source/plugins/liststyle/dialogs/liststyle.js +0 -204
  252. data/public/javascripts/ckeditor/_source/plugins/liststyle/plugin.js +0 -66
  253. data/public/javascripts/ckeditor/_source/plugins/maximize/plugin.js +0 -350
  254. data/public/javascripts/ckeditor/_source/plugins/menu/plugin.js +0 -408
  255. data/public/javascripts/ckeditor/_source/plugins/menubutton/plugin.js +0 -94
  256. data/public/javascripts/ckeditor/_source/plugins/newpage/plugin.js +0 -53
  257. data/public/javascripts/ckeditor/_source/plugins/pagebreak/images/pagebreak.gif +0 -0
  258. data/public/javascripts/ckeditor/_source/plugins/pagebreak/plugin.js +0 -121
  259. data/public/javascripts/ckeditor/_source/plugins/panel/plugin.js +0 -399
  260. data/public/javascripts/ckeditor/_source/plugins/panelbutton/plugin.js +0 -147
  261. data/public/javascripts/ckeditor/_source/plugins/pastefromword/filter/default.js +0 -1170
  262. data/public/javascripts/ckeditor/_source/plugins/pastefromword/plugin.js +0 -122
  263. data/public/javascripts/ckeditor/_source/plugins/pastetext/dialogs/pastetext.js +0 -70
  264. data/public/javascripts/ckeditor/_source/plugins/pastetext/plugin.js +0 -145
  265. data/public/javascripts/ckeditor/_source/plugins/popup/plugin.js +0 -64
  266. data/public/javascripts/ckeditor/_source/plugins/preview/plugin.js +0 -108
  267. data/public/javascripts/ckeditor/_source/plugins/print/plugin.js +0 -41
  268. data/public/javascripts/ckeditor/_source/plugins/removeformat/plugin.js +0 -184
  269. data/public/javascripts/ckeditor/_source/plugins/resize/plugin.js +0 -157
  270. data/public/javascripts/ckeditor/_source/plugins/richcombo/plugin.js +0 -370
  271. data/public/javascripts/ckeditor/_source/plugins/save/plugin.js +0 -55
  272. data/public/javascripts/ckeditor/_source/plugins/scayt/dialogs/options.js +0 -534
  273. data/public/javascripts/ckeditor/_source/plugins/scayt/dialogs/toolbar.css +0 -71
  274. data/public/javascripts/ckeditor/_source/plugins/scayt/plugin.js +0 -945
  275. data/public/javascripts/ckeditor/_source/plugins/selection/plugin.js +0 -1375
  276. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_address.png +0 -0
  277. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_blockquote.png +0 -0
  278. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_div.png +0 -0
  279. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_h1.png +0 -0
  280. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_h2.png +0 -0
  281. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_h3.png +0 -0
  282. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_h4.png +0 -0
  283. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_h5.png +0 -0
  284. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_h6.png +0 -0
  285. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_p.png +0 -0
  286. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_pre.png +0 -0
  287. data/public/javascripts/ckeditor/_source/plugins/showblocks/plugin.js +0 -155
  288. data/public/javascripts/ckeditor/_source/plugins/showborders/plugin.js +0 -201
  289. data/public/javascripts/ckeditor/_source/plugins/smiley/dialogs/smiley.js +0 -218
  290. data/public/javascripts/ckeditor/_source/plugins/smiley/images/angel_smile.gif +0 -0
  291. data/public/javascripts/ckeditor/_source/plugins/smiley/images/angry_smile.gif +0 -0
  292. data/public/javascripts/ckeditor/_source/plugins/smiley/images/broken_heart.gif +0 -0
  293. data/public/javascripts/ckeditor/_source/plugins/smiley/images/confused_smile.gif +0 -0
  294. data/public/javascripts/ckeditor/_source/plugins/smiley/images/cry_smile.gif +0 -0
  295. data/public/javascripts/ckeditor/_source/plugins/smiley/images/devil_smile.gif +0 -0
  296. data/public/javascripts/ckeditor/_source/plugins/smiley/images/embaressed_smile.gif +0 -0
  297. data/public/javascripts/ckeditor/_source/plugins/smiley/images/envelope.gif +0 -0
  298. data/public/javascripts/ckeditor/_source/plugins/smiley/images/heart.gif +0 -0
  299. data/public/javascripts/ckeditor/_source/plugins/smiley/images/kiss.gif +0 -0
  300. data/public/javascripts/ckeditor/_source/plugins/smiley/images/lightbulb.gif +0 -0
  301. data/public/javascripts/ckeditor/_source/plugins/smiley/images/omg_smile.gif +0 -0
  302. data/public/javascripts/ckeditor/_source/plugins/smiley/images/regular_smile.gif +0 -0
  303. data/public/javascripts/ckeditor/_source/plugins/smiley/images/sad_smile.gif +0 -0
  304. data/public/javascripts/ckeditor/_source/plugins/smiley/images/shades_smile.gif +0 -0
  305. data/public/javascripts/ckeditor/_source/plugins/smiley/images/teeth_smile.gif +0 -0
  306. data/public/javascripts/ckeditor/_source/plugins/smiley/images/thumbs_down.gif +0 -0
  307. data/public/javascripts/ckeditor/_source/plugins/smiley/images/thumbs_up.gif +0 -0
  308. data/public/javascripts/ckeditor/_source/plugins/smiley/images/tounge_smile.gif +0 -0
  309. data/public/javascripts/ckeditor/_source/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  310. data/public/javascripts/ckeditor/_source/plugins/smiley/images/wink_smile.gif +0 -0
  311. data/public/javascripts/ckeditor/_source/plugins/smiley/plugin.js +0 -94
  312. data/public/javascripts/ckeditor/_source/plugins/sourcearea/plugin.js +0 -207
  313. data/public/javascripts/ckeditor/_source/plugins/specialchar/dialogs/specialchar.js +0 -409
  314. data/public/javascripts/ckeditor/_source/plugins/specialchar/plugin.js +0 -29
  315. data/public/javascripts/ckeditor/_source/plugins/styles/plugin.js +0 -1479
  316. data/public/javascripts/ckeditor/_source/plugins/styles/styles/default.js +0 -88
  317. data/public/javascripts/ckeditor/_source/plugins/stylescombo/plugin.js +0 -206
  318. data/public/javascripts/ckeditor/_source/plugins/tab/plugin.js +0 -367
  319. data/public/javascripts/ckeditor/_source/plugins/table/dialogs/table.js +0 -672
  320. data/public/javascripts/ckeditor/_source/plugins/table/plugin.js +0 -78
  321. data/public/javascripts/ckeditor/_source/plugins/tableresize/plugin.js +0 -450
  322. data/public/javascripts/ckeditor/_source/plugins/tabletools/dialogs/tableCell.js +0 -533
  323. data/public/javascripts/ckeditor/_source/plugins/tabletools/plugin.js +0 -1120
  324. data/public/javascripts/ckeditor/_source/plugins/templates/dialogs/templates.js +0 -233
  325. data/public/javascripts/ckeditor/_source/plugins/templates/plugin.js +0 -99
  326. data/public/javascripts/ckeditor/_source/plugins/templates/templates/default.js +0 -94
  327. data/public/javascripts/ckeditor/_source/plugins/templates/templates/images/template1.gif +0 -0
  328. data/public/javascripts/ckeditor/_source/plugins/templates/templates/images/template2.gif +0 -0
  329. data/public/javascripts/ckeditor/_source/plugins/templates/templates/images/template3.gif +0 -0
  330. data/public/javascripts/ckeditor/_source/plugins/toolbar/plugin.js +0 -481
  331. data/public/javascripts/ckeditor/_source/plugins/uicolor/dialogs/uicolor.js +0 -205
  332. data/public/javascripts/ckeditor/_source/plugins/uicolor/lang/en.js +0 -15
  333. data/public/javascripts/ckeditor/_source/plugins/uicolor/lang/he.js +0 -15
  334. data/public/javascripts/ckeditor/_source/plugins/uicolor/plugin.js +0 -37
  335. data/public/javascripts/ckeditor/_source/plugins/uicolor/uicolor.gif +0 -0
  336. data/public/javascripts/ckeditor/_source/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  337. data/public/javascripts/ckeditor/_source/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  338. data/public/javascripts/ckeditor/_source/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  339. data/public/javascripts/ckeditor/_source/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  340. data/public/javascripts/ckeditor/_source/plugins/uicolor/yui/assets/yui.css +0 -15
  341. data/public/javascripts/ckeditor/_source/plugins/uicolor/yui/yui.js +0 -71
  342. data/public/javascripts/ckeditor/_source/plugins/undo/plugin.js +0 -554
  343. data/public/javascripts/ckeditor/_source/plugins/wsc/dialogs/ciframe.html +0 -49
  344. data/public/javascripts/ckeditor/_source/plugins/wsc/dialogs/tmpFrameset.html +0 -52
  345. data/public/javascripts/ckeditor/_source/plugins/wsc/dialogs/wsc.css +0 -82
  346. data/public/javascripts/ckeditor/_source/plugins/wsc/dialogs/wsc.js +0 -176
  347. data/public/javascripts/ckeditor/_source/plugins/wsc/plugin.js +0 -33
  348. data/public/javascripts/ckeditor/_source/plugins/wysiwygarea/plugin.js +0 -1146
  349. data/public/javascripts/ckeditor/_source/skins/kama/dialog.css +0 -882
  350. data/public/javascripts/ckeditor/_source/skins/kama/editor.css +0 -25
  351. data/public/javascripts/ckeditor/_source/skins/kama/elementspath.css +0 -73
  352. data/public/javascripts/ckeditor/_source/skins/kama/icons.css +0 -357
  353. data/public/javascripts/ckeditor/_source/skins/kama/icons.png +0 -0
  354. data/public/javascripts/ckeditor/_source/skins/kama/icons_rtl.png +0 -0
  355. data/public/javascripts/ckeditor/_source/skins/kama/images/dialog_sides.gif +0 -0
  356. data/public/javascripts/ckeditor/_source/skins/kama/images/dialog_sides.png +0 -0
  357. data/public/javascripts/ckeditor/_source/skins/kama/images/dialog_sides_rtl.png +0 -0
  358. data/public/javascripts/ckeditor/_source/skins/kama/images/mini.gif +0 -0
  359. data/public/javascripts/ckeditor/_source/skins/kama/images/noimage.png +0 -0
  360. data/public/javascripts/ckeditor/_source/skins/kama/images/sprites.png +0 -0
  361. data/public/javascripts/ckeditor/_source/skins/kama/images/sprites_ie6.png +0 -0
  362. data/public/javascripts/ckeditor/_source/skins/kama/images/toolbar_start.gif +0 -0
  363. data/public/javascripts/ckeditor/_source/skins/kama/mainui.css +0 -195
  364. data/public/javascripts/ckeditor/_source/skins/kama/menu.css +0 -216
  365. data/public/javascripts/ckeditor/_source/skins/kama/panel.css +0 -217
  366. data/public/javascripts/ckeditor/_source/skins/kama/presets.css +0 -49
  367. data/public/javascripts/ckeditor/_source/skins/kama/reset.css +0 -84
  368. data/public/javascripts/ckeditor/_source/skins/kama/richcombo.css +0 -277
  369. data/public/javascripts/ckeditor/_source/skins/kama/skin.js +0 -268
  370. data/public/javascripts/ckeditor/_source/skins/kama/templates.css +0 -88
  371. data/public/javascripts/ckeditor/_source/skins/kama/toolbar.css +0 -409
  372. data/public/javascripts/ckeditor/_source/skins/office2003/dialog.css +0 -785
  373. data/public/javascripts/ckeditor/_source/skins/office2003/editor.css +0 -25
  374. data/public/javascripts/ckeditor/_source/skins/office2003/elementspath.css +0 -74
  375. data/public/javascripts/ckeditor/_source/skins/office2003/icons.css +0 -354
  376. data/public/javascripts/ckeditor/_source/skins/office2003/icons.png +0 -0
  377. data/public/javascripts/ckeditor/_source/skins/office2003/icons_rtl.png +0 -0
  378. data/public/javascripts/ckeditor/_source/skins/office2003/images/dialog_sides.gif +0 -0
  379. data/public/javascripts/ckeditor/_source/skins/office2003/images/dialog_sides.png +0 -0
  380. data/public/javascripts/ckeditor/_source/skins/office2003/images/dialog_sides_rtl.png +0 -0
  381. data/public/javascripts/ckeditor/_source/skins/office2003/images/mini.gif +0 -0
  382. data/public/javascripts/ckeditor/_source/skins/office2003/images/noimage.png +0 -0
  383. data/public/javascripts/ckeditor/_source/skins/office2003/images/sprites.png +0 -0
  384. data/public/javascripts/ckeditor/_source/skins/office2003/images/sprites_ie6.png +0 -0
  385. data/public/javascripts/ckeditor/_source/skins/office2003/mainui.css +0 -145
  386. data/public/javascripts/ckeditor/_source/skins/office2003/menu.css +0 -213
  387. data/public/javascripts/ckeditor/_source/skins/office2003/panel.css +0 -212
  388. data/public/javascripts/ckeditor/_source/skins/office2003/presets.css +0 -49
  389. data/public/javascripts/ckeditor/_source/skins/office2003/reset.css +0 -84
  390. data/public/javascripts/ckeditor/_source/skins/office2003/richcombo.css +0 -297
  391. data/public/javascripts/ckeditor/_source/skins/office2003/skin.js +0 -81
  392. data/public/javascripts/ckeditor/_source/skins/office2003/templates.css +0 -87
  393. data/public/javascripts/ckeditor/_source/skins/office2003/toolbar.css +0 -470
  394. data/public/javascripts/ckeditor/_source/skins/v2/dialog.css +0 -800
  395. data/public/javascripts/ckeditor/_source/skins/v2/editor.css +0 -25
  396. data/public/javascripts/ckeditor/_source/skins/v2/elementspath.css +0 -74
  397. data/public/javascripts/ckeditor/_source/skins/v2/icons.css +0 -354
  398. data/public/javascripts/ckeditor/_source/skins/v2/icons.png +0 -0
  399. data/public/javascripts/ckeditor/_source/skins/v2/icons_rtl.png +0 -0
  400. data/public/javascripts/ckeditor/_source/skins/v2/images/dialog_sides.gif +0 -0
  401. data/public/javascripts/ckeditor/_source/skins/v2/images/dialog_sides.png +0 -0
  402. data/public/javascripts/ckeditor/_source/skins/v2/images/dialog_sides_rtl.png +0 -0
  403. data/public/javascripts/ckeditor/_source/skins/v2/images/mini.gif +0 -0
  404. data/public/javascripts/ckeditor/_source/skins/v2/images/noimage.png +0 -0
  405. data/public/javascripts/ckeditor/_source/skins/v2/images/sprites.png +0 -0
  406. data/public/javascripts/ckeditor/_source/skins/v2/images/sprites_ie6.png +0 -0
  407. data/public/javascripts/ckeditor/_source/skins/v2/images/toolbar_start.gif +0 -0
  408. data/public/javascripts/ckeditor/_source/skins/v2/mainui.css +0 -154
  409. data/public/javascripts/ckeditor/_source/skins/v2/menu.css +0 -215
  410. data/public/javascripts/ckeditor/_source/skins/v2/panel.css +0 -212
  411. data/public/javascripts/ckeditor/_source/skins/v2/presets.css +0 -50
  412. data/public/javascripts/ckeditor/_source/skins/v2/reset.css +0 -84
  413. data/public/javascripts/ckeditor/_source/skins/v2/richcombo.css +0 -297
  414. data/public/javascripts/ckeditor/_source/skins/v2/skin.js +0 -77
  415. data/public/javascripts/ckeditor/_source/skins/v2/templates.css +0 -87
  416. data/public/javascripts/ckeditor/_source/skins/v2/toolbar.css +0 -423
  417. data/public/javascripts/ckeditor/_source/themes/default/theme.js +0 -361
  418. data/public/javascripts/ckeditor/adapters/jquery.js +0 -6
  419. data/public/javascripts/ckeditor/ckeditor.js +0 -137
  420. data/public/javascripts/ckeditor/ckeditor.pack +0 -211
  421. data/public/javascripts/ckeditor/ckeditor_basic.js +0 -8
  422. data/public/javascripts/ckeditor/ckeditor_basic_source.js +0 -20
  423. data/public/javascripts/ckeditor/ckeditor_source.js +0 -25
  424. data/public/javascripts/ckeditor/config.js +0 -43
  425. data/public/javascripts/ckeditor/contents.css +0 -39
  426. data/public/javascripts/ckeditor/css/ckfinder.css +0 -299
  427. data/public/javascripts/ckeditor/css/fck_dialog.css +0 -119
  428. data/public/javascripts/ckeditor/css/fck_editor.css +0 -448
  429. data/public/javascripts/ckeditor/css/swfupload.css +0 -94
  430. data/public/javascripts/ckeditor/images/add.gif +0 -0
  431. data/public/javascripts/ckeditor/images/cancelbutton.gif +0 -0
  432. data/public/javascripts/ckeditor/images/ckfnothumb.gif +0 -0
  433. data/public/javascripts/ckeditor/images/doc.gif +0 -0
  434. data/public/javascripts/ckeditor/images/mp3.gif +0 -0
  435. data/public/javascripts/ckeditor/images/pdf.gif +0 -0
  436. data/public/javascripts/ckeditor/images/rar.gif +0 -0
  437. data/public/javascripts/ckeditor/images/refresh.gif +0 -0
  438. data/public/javascripts/ckeditor/images/select_files.png +0 -0
  439. data/public/javascripts/ckeditor/images/spacer.gif +0 -0
  440. data/public/javascripts/ckeditor/images/swf.gif +0 -0
  441. data/public/javascripts/ckeditor/images/toolbar.start.gif +0 -0
  442. data/public/javascripts/ckeditor/images/xls.gif +0 -0
  443. data/public/javascripts/ckeditor/lang/_languages.js +0 -6
  444. data/public/javascripts/ckeditor/lang/_translationstatus.txt +0 -60
  445. data/public/javascripts/ckeditor/lang/af.js +0 -6
  446. data/public/javascripts/ckeditor/lang/ar.js +0 -6
  447. data/public/javascripts/ckeditor/lang/bg.js +0 -6
  448. data/public/javascripts/ckeditor/lang/bn.js +0 -6
  449. data/public/javascripts/ckeditor/lang/bs.js +0 -6
  450. data/public/javascripts/ckeditor/lang/ca.js +0 -6
  451. data/public/javascripts/ckeditor/lang/cs.js +0 -6
  452. data/public/javascripts/ckeditor/lang/cy.js +0 -6
  453. data/public/javascripts/ckeditor/lang/da.js +0 -6
  454. data/public/javascripts/ckeditor/lang/de.js +0 -6
  455. data/public/javascripts/ckeditor/lang/el.js +0 -6
  456. data/public/javascripts/ckeditor/lang/en-au.js +0 -6
  457. data/public/javascripts/ckeditor/lang/en-ca.js +0 -6
  458. data/public/javascripts/ckeditor/lang/en-gb.js +0 -6
  459. data/public/javascripts/ckeditor/lang/en.js +0 -6
  460. data/public/javascripts/ckeditor/lang/eo.js +0 -6
  461. data/public/javascripts/ckeditor/lang/es.js +0 -6
  462. data/public/javascripts/ckeditor/lang/et.js +0 -6
  463. data/public/javascripts/ckeditor/lang/eu.js +0 -6
  464. data/public/javascripts/ckeditor/lang/fa.js +0 -6
  465. data/public/javascripts/ckeditor/lang/fi.js +0 -6
  466. data/public/javascripts/ckeditor/lang/fo.js +0 -6
  467. data/public/javascripts/ckeditor/lang/fr-ca.js +0 -6
  468. data/public/javascripts/ckeditor/lang/fr.js +0 -6
  469. data/public/javascripts/ckeditor/lang/gl.js +0 -6
  470. data/public/javascripts/ckeditor/lang/gu.js +0 -6
  471. data/public/javascripts/ckeditor/lang/he.js +0 -6
  472. data/public/javascripts/ckeditor/lang/hi.js +0 -6
  473. data/public/javascripts/ckeditor/lang/hr.js +0 -6
  474. data/public/javascripts/ckeditor/lang/hu.js +0 -6
  475. data/public/javascripts/ckeditor/lang/is.js +0 -6
  476. data/public/javascripts/ckeditor/lang/it.js +0 -6
  477. data/public/javascripts/ckeditor/lang/ja.js +0 -6
  478. data/public/javascripts/ckeditor/lang/km.js +0 -6
  479. data/public/javascripts/ckeditor/lang/ko.js +0 -6
  480. data/public/javascripts/ckeditor/lang/lt.js +0 -6
  481. data/public/javascripts/ckeditor/lang/lv.js +0 -6
  482. data/public/javascripts/ckeditor/lang/mn.js +0 -6
  483. data/public/javascripts/ckeditor/lang/ms.js +0 -6
  484. data/public/javascripts/ckeditor/lang/nb.js +0 -6
  485. data/public/javascripts/ckeditor/lang/nl.js +0 -6
  486. data/public/javascripts/ckeditor/lang/no.js +0 -6
  487. data/public/javascripts/ckeditor/lang/pl.js +0 -6
  488. data/public/javascripts/ckeditor/lang/pt-br.js +0 -6
  489. data/public/javascripts/ckeditor/lang/pt.js +0 -6
  490. data/public/javascripts/ckeditor/lang/ro.js +0 -6
  491. data/public/javascripts/ckeditor/lang/ru.js +0 -6
  492. data/public/javascripts/ckeditor/lang/sk.js +0 -6
  493. data/public/javascripts/ckeditor/lang/sl.js +0 -6
  494. data/public/javascripts/ckeditor/lang/sr-latn.js +0 -6
  495. data/public/javascripts/ckeditor/lang/sr.js +0 -6
  496. data/public/javascripts/ckeditor/lang/sv.js +0 -6
  497. data/public/javascripts/ckeditor/lang/th.js +0 -6
  498. data/public/javascripts/ckeditor/lang/tr.js +0 -6
  499. data/public/javascripts/ckeditor/lang/uk.js +0 -6
  500. data/public/javascripts/ckeditor/lang/vi.js +0 -6
  501. data/public/javascripts/ckeditor/lang/zh-cn.js +0 -6
  502. data/public/javascripts/ckeditor/lang/zh.js +0 -6
  503. data/public/javascripts/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +0 -7
  504. data/public/javascripts/ckeditor/plugins/a11yhelp/lang/en.js +0 -6
  505. data/public/javascripts/ckeditor/plugins/a11yhelp/lang/he.js +0 -6
  506. data/public/javascripts/ckeditor/plugins/about/dialogs/about.js +0 -6
  507. data/public/javascripts/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  508. data/public/javascripts/ckeditor/plugins/ajax_save/plugin.js +0 -1
  509. data/public/javascripts/ckeditor/plugins/attachment/dialogs/attachment.js +0 -1
  510. data/public/javascripts/ckeditor/plugins/attachment/images/attachment.png +0 -0
  511. data/public/javascripts/ckeditor/plugins/attachment/lang/en.js +0 -10
  512. data/public/javascripts/ckeditor/plugins/attachment/lang/ru.js +0 -10
  513. data/public/javascripts/ckeditor/plugins/attachment/lang/uk.js +0 -10
  514. data/public/javascripts/ckeditor/plugins/attachment/plugin.js +0 -1
  515. data/public/javascripts/ckeditor/plugins/autogrow/plugin.js +0 -6
  516. data/public/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +0 -7
  517. data/public/javascripts/ckeditor/plugins/colordialog/dialogs/colordialog.js +0 -7
  518. data/public/javascripts/ckeditor/plugins/dialog/dialogDefinition.js +0 -4
  519. data/public/javascripts/ckeditor/plugins/div/dialogs/div.js +0 -8
  520. data/public/javascripts/ckeditor/plugins/embed/dialogs/embed.js +0 -1
  521. data/public/javascripts/ckeditor/plugins/embed/images/embed.png +0 -0
  522. data/public/javascripts/ckeditor/plugins/embed/lang/en.js +0 -9
  523. data/public/javascripts/ckeditor/plugins/embed/lang/ru.js +0 -9
  524. data/public/javascripts/ckeditor/plugins/embed/lang/uk.js +0 -9
  525. data/public/javascripts/ckeditor/plugins/embed/plugin.js +0 -1
  526. data/public/javascripts/ckeditor/plugins/find/dialogs/find.js +0 -9
  527. data/public/javascripts/ckeditor/plugins/flash/dialogs/flash.js +0 -9
  528. data/public/javascripts/ckeditor/plugins/flash/images/placeholder.png +0 -0
  529. data/public/javascripts/ckeditor/plugins/forms/dialogs/button.js +0 -6
  530. data/public/javascripts/ckeditor/plugins/forms/dialogs/checkbox.js +0 -6
  531. data/public/javascripts/ckeditor/plugins/forms/dialogs/form.js +0 -6
  532. data/public/javascripts/ckeditor/plugins/forms/dialogs/hiddenfield.js +0 -6
  533. data/public/javascripts/ckeditor/plugins/forms/dialogs/radio.js +0 -6
  534. data/public/javascripts/ckeditor/plugins/forms/dialogs/select.js +0 -9
  535. data/public/javascripts/ckeditor/plugins/forms/dialogs/textarea.js +0 -6
  536. data/public/javascripts/ckeditor/plugins/forms/dialogs/textfield.js +0 -7
  537. data/public/javascripts/ckeditor/plugins/forms/images/hiddenfield.gif +0 -0
  538. data/public/javascripts/ckeditor/plugins/iframedialog/plugin.js +0 -6
  539. data/public/javascripts/ckeditor/plugins/image/dialogs/image.js +0 -13
  540. data/public/javascripts/ckeditor/plugins/link/dialogs/anchor.js +0 -6
  541. data/public/javascripts/ckeditor/plugins/link/dialogs/link.js +0 -11
  542. data/public/javascripts/ckeditor/plugins/link/images/anchor.gif +0 -0
  543. data/public/javascripts/ckeditor/plugins/liststyle/dialogs/liststyle.js +0 -6
  544. data/public/javascripts/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
  545. data/public/javascripts/ckeditor/plugins/pastefromword/filter/default.js +0 -10
  546. data/public/javascripts/ckeditor/plugins/pastetext/dialogs/pastetext.js +0 -6
  547. data/public/javascripts/ckeditor/plugins/scayt/dialogs/options.js +0 -8
  548. data/public/javascripts/ckeditor/plugins/scayt/dialogs/toolbar.css +0 -6
  549. data/public/javascripts/ckeditor/plugins/showblocks/images/block_address.png +0 -0
  550. data/public/javascripts/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
  551. data/public/javascripts/ckeditor/plugins/showblocks/images/block_div.png +0 -0
  552. data/public/javascripts/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
  553. data/public/javascripts/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
  554. data/public/javascripts/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
  555. data/public/javascripts/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
  556. data/public/javascripts/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
  557. data/public/javascripts/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
  558. data/public/javascripts/ckeditor/plugins/showblocks/images/block_p.png +0 -0
  559. data/public/javascripts/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
  560. data/public/javascripts/ckeditor/plugins/smiley/dialogs/smiley.js +0 -7
  561. data/public/javascripts/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
  562. data/public/javascripts/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
  563. data/public/javascripts/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
  564. data/public/javascripts/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
  565. data/public/javascripts/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
  566. data/public/javascripts/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
  567. data/public/javascripts/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
  568. data/public/javascripts/ckeditor/plugins/smiley/images/envelope.gif +0 -0
  569. data/public/javascripts/ckeditor/plugins/smiley/images/heart.gif +0 -0
  570. data/public/javascripts/ckeditor/plugins/smiley/images/kiss.gif +0 -0
  571. data/public/javascripts/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
  572. data/public/javascripts/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
  573. data/public/javascripts/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
  574. data/public/javascripts/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
  575. data/public/javascripts/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
  576. data/public/javascripts/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
  577. data/public/javascripts/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
  578. data/public/javascripts/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
  579. data/public/javascripts/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
  580. data/public/javascripts/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  581. data/public/javascripts/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
  582. data/public/javascripts/ckeditor/plugins/specialchar/dialogs/specialchar.js +0 -7
  583. data/public/javascripts/ckeditor/plugins/styles/styles/default.js +0 -6
  584. data/public/javascripts/ckeditor/plugins/table/dialogs/table.js +0 -9
  585. data/public/javascripts/ckeditor/plugins/tableresize/plugin.js +0 -7
  586. data/public/javascripts/ckeditor/plugins/tabletools/dialogs/tableCell.js +0 -8
  587. data/public/javascripts/ckeditor/plugins/templates/dialogs/templates.js +0 -7
  588. data/public/javascripts/ckeditor/plugins/templates/templates/default.js +0 -6
  589. data/public/javascripts/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
  590. data/public/javascripts/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
  591. data/public/javascripts/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
  592. data/public/javascripts/ckeditor/plugins/uicolor/dialogs/uicolor.js +0 -7
  593. data/public/javascripts/ckeditor/plugins/uicolor/lang/en.js +0 -6
  594. data/public/javascripts/ckeditor/plugins/uicolor/lang/he.js +0 -6
  595. data/public/javascripts/ckeditor/plugins/uicolor/plugin.js +0 -6
  596. data/public/javascripts/ckeditor/plugins/uicolor/uicolor.gif +0 -0
  597. data/public/javascripts/ckeditor/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  598. data/public/javascripts/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  599. data/public/javascripts/ckeditor/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  600. data/public/javascripts/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  601. data/public/javascripts/ckeditor/plugins/uicolor/yui/assets/yui.css +0 -6
  602. data/public/javascripts/ckeditor/plugins/uicolor/yui/yui.js +0 -76
  603. data/public/javascripts/ckeditor/plugins/wsc/dialogs/ciframe.html +0 -49
  604. data/public/javascripts/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +0 -52
  605. data/public/javascripts/ckeditor/plugins/wsc/dialogs/wsc.css +0 -6
  606. data/public/javascripts/ckeditor/plugins/wsc/dialogs/wsc.js +0 -7
  607. data/public/javascripts/ckeditor/skins/kama/dialog.css +0 -9
  608. data/public/javascripts/ckeditor/skins/kama/editor.css +0 -12
  609. data/public/javascripts/ckeditor/skins/kama/icons.png +0 -0
  610. data/public/javascripts/ckeditor/skins/kama/icons_rtl.png +0 -0
  611. data/public/javascripts/ckeditor/skins/kama/images/dialog_sides.gif +0 -0
  612. data/public/javascripts/ckeditor/skins/kama/images/dialog_sides.png +0 -0
  613. data/public/javascripts/ckeditor/skins/kama/images/dialog_sides_rtl.png +0 -0
  614. data/public/javascripts/ckeditor/skins/kama/images/mini.gif +0 -0
  615. data/public/javascripts/ckeditor/skins/kama/images/noimage.png +0 -0
  616. data/public/javascripts/ckeditor/skins/kama/images/sprites.png +0 -0
  617. data/public/javascripts/ckeditor/skins/kama/images/sprites_ie6.png +0 -0
  618. data/public/javascripts/ckeditor/skins/kama/images/toolbar_start.gif +0 -0
  619. data/public/javascripts/ckeditor/skins/kama/skin.js +0 -7
  620. data/public/javascripts/ckeditor/skins/kama/templates.css +0 -6
  621. data/public/javascripts/ckeditor/skins/office2003/dialog.css +0 -9
  622. data/public/javascripts/ckeditor/skins/office2003/editor.css +0 -13
  623. data/public/javascripts/ckeditor/skins/office2003/icons.png +0 -0
  624. data/public/javascripts/ckeditor/skins/office2003/icons_rtl.png +0 -0
  625. data/public/javascripts/ckeditor/skins/office2003/images/dialog_sides.gif +0 -0
  626. data/public/javascripts/ckeditor/skins/office2003/images/dialog_sides.png +0 -0
  627. data/public/javascripts/ckeditor/skins/office2003/images/dialog_sides_rtl.png +0 -0
  628. data/public/javascripts/ckeditor/skins/office2003/images/mini.gif +0 -0
  629. data/public/javascripts/ckeditor/skins/office2003/images/noimage.png +0 -0
  630. data/public/javascripts/ckeditor/skins/office2003/images/sprites.png +0 -0
  631. data/public/javascripts/ckeditor/skins/office2003/images/sprites_ie6.png +0 -0
  632. data/public/javascripts/ckeditor/skins/office2003/skin.js +0 -6
  633. data/public/javascripts/ckeditor/skins/office2003/templates.css +0 -6
  634. data/public/javascripts/ckeditor/skins/v2/dialog.css +0 -9
  635. data/public/javascripts/ckeditor/skins/v2/editor.css +0 -12
  636. data/public/javascripts/ckeditor/skins/v2/icons.png +0 -0
  637. data/public/javascripts/ckeditor/skins/v2/icons_rtl.png +0 -0
  638. data/public/javascripts/ckeditor/skins/v2/images/dialog_sides.gif +0 -0
  639. data/public/javascripts/ckeditor/skins/v2/images/dialog_sides.png +0 -0
  640. data/public/javascripts/ckeditor/skins/v2/images/dialog_sides_rtl.png +0 -0
  641. data/public/javascripts/ckeditor/skins/v2/images/mini.gif +0 -0
  642. data/public/javascripts/ckeditor/skins/v2/images/noimage.png +0 -0
  643. data/public/javascripts/ckeditor/skins/v2/images/sprites.png +0 -0
  644. data/public/javascripts/ckeditor/skins/v2/images/sprites_ie6.png +0 -0
  645. data/public/javascripts/ckeditor/skins/v2/images/toolbar_start.gif +0 -0
  646. data/public/javascripts/ckeditor/skins/v2/skin.js +0 -6
  647. data/public/javascripts/ckeditor/skins/v2/templates.css +0 -6
  648. data/public/javascripts/ckeditor/swfupload/fileprogress.js +0 -275
  649. data/public/javascripts/ckeditor/swfupload/handlers.js +0 -170
  650. data/public/javascripts/ckeditor/swfupload/mootools-1.2.3-core-yc.js +0 -356
  651. data/public/javascripts/ckeditor/swfupload/querystring.js +0 -40
  652. data/public/javascripts/ckeditor/swfupload/swfupload.js +0 -1
  653. data/public/javascripts/ckeditor/swfupload/swfupload.queue.js +0 -1
  654. data/public/javascripts/ckeditor/swfupload/swfupload.swf +0 -0
  655. data/public/javascripts/ckeditor/swfupload/swfupload.swfobject.js +0 -111
  656. data/public/javascripts/ckeditor/themes/default/theme.js +0 -8
  657. data/public/javascripts/controls.js +0 -965
  658. data/public/javascripts/dragdrop.js +0 -974
  659. data/public/javascripts/effects.js +0 -1123
  660. data/public/javascripts/link_obfuscator.js +0 -31
  661. data/public/javascripts/prototype.js +0 -6001
  662. data/public/javascripts/rails.js +0 -175
  663. data/public/robots.txt +0 -5
  664. data/public/stylesheets/core_ie.css +0 -52
  665. data/public/stylesheets/csshover3.htc +0 -14
@@ -1,1375 +0,0 @@
1
- /*
2
- Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
3
- For licensing, see LICENSE.html or http://ckeditor.com/license
4
- */
5
-
6
- (function()
7
- {
8
- // #### checkSelectionChange : START
9
-
10
- // The selection change check basically saves the element parent tree of
11
- // the current node and check it on successive requests. If there is any
12
- // change on the tree, then the selectionChange event gets fired.
13
- function checkSelectionChange()
14
- {
15
- try
16
- {
17
- // In IE, the "selectionchange" event may still get thrown when
18
- // releasing the WYSIWYG mode, so we need to check it first.
19
- var sel = this.getSelection();
20
- if ( !sel || !sel.document.getWindow().$ )
21
- return;
22
-
23
- var firstElement = sel.getStartElement();
24
- var currentPath = new CKEDITOR.dom.elementPath( firstElement );
25
-
26
- if ( !currentPath.compare( this._.selectionPreviousPath ) )
27
- {
28
- this._.selectionPreviousPath = currentPath;
29
- this.fire( 'selectionChange', { selection : sel, path : currentPath, element : firstElement } );
30
- }
31
- }
32
- catch (e)
33
- {}
34
- }
35
-
36
- var checkSelectionChangeTimer,
37
- checkSelectionChangeTimeoutPending;
38
-
39
- function checkSelectionChangeTimeout()
40
- {
41
- // Firing the "OnSelectionChange" event on every key press started to
42
- // be too slow. This function guarantees that there will be at least
43
- // 200ms delay between selection checks.
44
-
45
- checkSelectionChangeTimeoutPending = true;
46
-
47
- if ( checkSelectionChangeTimer )
48
- return;
49
-
50
- checkSelectionChangeTimeoutExec.call( this );
51
-
52
- checkSelectionChangeTimer = CKEDITOR.tools.setTimeout( checkSelectionChangeTimeoutExec, 200, this );
53
- }
54
-
55
- function checkSelectionChangeTimeoutExec()
56
- {
57
- checkSelectionChangeTimer = null;
58
-
59
- if ( checkSelectionChangeTimeoutPending )
60
- {
61
- // Call this with a timeout so the browser properly moves the
62
- // selection after the mouseup. It happened that the selection was
63
- // being moved after the mouseup when clicking inside selected text
64
- // with Firefox.
65
- CKEDITOR.tools.setTimeout( checkSelectionChange, 0, this );
66
-
67
- checkSelectionChangeTimeoutPending = false;
68
- }
69
- }
70
-
71
- // #### checkSelectionChange : END
72
-
73
- var selectAllCmd =
74
- {
75
- modes : { wysiwyg : 1, source : 1 },
76
- exec : function( editor )
77
- {
78
- switch ( editor.mode )
79
- {
80
- case 'wysiwyg' :
81
- editor.document.$.execCommand( 'SelectAll', false, null );
82
- break;
83
- case 'source' :
84
- // Select the contents of the textarea
85
- var textarea = editor.textarea.$ ;
86
- if ( CKEDITOR.env.ie )
87
- {
88
- textarea.createTextRange().execCommand( 'SelectAll' ) ;
89
- }
90
- else
91
- {
92
- textarea.selectionStart = 0 ;
93
- textarea.selectionEnd = textarea.value.length ;
94
- }
95
- textarea.focus() ;
96
- }
97
- },
98
- canUndo : false
99
- };
100
-
101
- CKEDITOR.plugins.add( 'selection',
102
- {
103
- init : function( editor )
104
- {
105
- editor.on( 'contentDom', function()
106
- {
107
- var doc = editor.document,
108
- body = doc.getBody(),
109
- html = doc.getDocumentElement();
110
-
111
- if ( CKEDITOR.env.ie )
112
- {
113
- // Other browsers don't loose the selection if the
114
- // editor document loose the focus. In IE, we don't
115
- // have support for it, so we reproduce it here, other
116
- // than firing the selection change event.
117
-
118
- var savedRange,
119
- saveEnabled,
120
- restoreEnabled = 1;
121
-
122
- // "onfocusin" is fired before "onfocus". It makes it
123
- // possible to restore the selection before click
124
- // events get executed.
125
- body.on( 'focusin', function( evt )
126
- {
127
- // If there are elements with layout they fire this event but
128
- // it must be ignored to allow edit its contents #4682
129
- if ( evt.data.$.srcElement.nodeName != 'BODY' )
130
- return;
131
-
132
- // If we have saved a range, restore it at this
133
- // point.
134
- if ( savedRange )
135
- {
136
- // Range restored here might invalidate the DOM structure thus break up
137
- // the locked selection, give it up. (#6083)
138
- var lockedSelection = doc.getCustomData( 'cke_locked_selection' );
139
- if ( restoreEnabled && !lockedSelection )
140
- {
141
- // Well not break because of this.
142
- try
143
- {
144
- savedRange.select();
145
- }
146
- catch (e)
147
- {}
148
- }
149
-
150
- savedRange = null;
151
- }
152
- });
153
-
154
- body.on( 'focus', function()
155
- {
156
- // Enable selections to be saved.
157
- saveEnabled = 1;
158
-
159
- saveSelection();
160
- });
161
-
162
- body.on( 'beforedeactivate', function( evt )
163
- {
164
- // Ignore this event if it's caused by focus switch between
165
- // internal editable control type elements, e.g. layouted paragraph. (#4682)
166
- if ( evt.data.$.toElement )
167
- return;
168
-
169
- // Disable selections from being saved.
170
- saveEnabled = 0;
171
- restoreEnabled = 1;
172
- });
173
-
174
- // IE before version 8 will leave cursor blinking inside the document after
175
- // editor blurred unless we clean up the selection. (#4716)
176
- if ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 )
177
- {
178
- editor.on( 'blur', function( evt )
179
- {
180
- // Try/Catch to avoid errors if the editor is hidden. (#6375)
181
- try
182
- {
183
- editor.document && editor.document.$.selection.empty();
184
- }
185
- catch (e) {}
186
- });
187
- }
188
-
189
- // Listening on document element ensures that
190
- // scrollbar is included. (#5280)
191
- html.on( 'mousedown', function()
192
- {
193
- // Lock restore selection now, as we have
194
- // a followed 'click' event which introduce
195
- // new selection. (#5735)
196
- restoreEnabled = 0;
197
- });
198
-
199
- html.on( 'mouseup', function()
200
- {
201
- restoreEnabled = 1;
202
- });
203
-
204
- // In IE6/7 the blinking cursor appears, but contents are
205
- // not editable. (#5634)
206
- if ( CKEDITOR.env.ie && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.version < 8 || CKEDITOR.env.quirks ) )
207
- {
208
- // The 'click' event is not fired when clicking the
209
- // scrollbars, so we can use it to check whether
210
- // the empty space following <body> has been clicked.
211
- html.on( 'click', function( evt )
212
- {
213
- if ( evt.data.getTarget().getName() == 'html' )
214
- editor.getSelection().getRanges()[ 0 ].select();
215
- });
216
- }
217
-
218
- var scroll;
219
- // IE fires the "selectionchange" event when clicking
220
- // inside a selection. We don't want to capture that.
221
- body.on( 'mousedown', function( evt )
222
- {
223
- // IE scrolls document to top on right mousedown
224
- // when editor has no focus, remember this scroll
225
- // position and revert it before context menu opens. (#5778)
226
- if ( evt.data.$.button == 2 )
227
- {
228
- var sel = editor.document.$.selection;
229
- if ( sel.type == 'None' )
230
- scroll = editor.window.getScrollPosition();
231
- }
232
- disableSave();
233
- });
234
-
235
- body.on( 'mouseup',
236
- function( evt )
237
- {
238
- // Restore recorded scroll position when needed on right mouseup.
239
- if ( evt.data.$.button == 2 && scroll )
240
- {
241
- editor.document.$.documentElement.scrollLeft = scroll.x;
242
- editor.document.$.documentElement.scrollTop = scroll.y;
243
- }
244
- scroll = null;
245
-
246
- saveEnabled = 1;
247
- setTimeout( function()
248
- {
249
- saveSelection( true );
250
- },
251
- 0 );
252
- });
253
-
254
- body.on( 'keydown', disableSave );
255
- body.on( 'keyup',
256
- function()
257
- {
258
- saveEnabled = 1;
259
- saveSelection();
260
- });
261
-
262
-
263
- // IE is the only to provide the "selectionchange"
264
- // event.
265
- doc.on( 'selectionchange', saveSelection );
266
-
267
- function disableSave()
268
- {
269
- saveEnabled = 0;
270
- }
271
-
272
- function saveSelection( testIt )
273
- {
274
- if ( saveEnabled )
275
- {
276
- var doc = editor.document,
277
- sel = editor.getSelection(),
278
- nativeSel = sel && sel.getNative();
279
-
280
- // There is a very specific case, when clicking
281
- // inside a text selection. In that case, the
282
- // selection collapses at the clicking point,
283
- // but the selection object remains in an
284
- // unknown state, making createRange return a
285
- // range at the very start of the document. In
286
- // such situation we have to test the range, to
287
- // be sure it's valid.
288
- if ( testIt && nativeSel && nativeSel.type == 'None' )
289
- {
290
- // The "InsertImage" command can be used to
291
- // test whether the selection is good or not.
292
- // If not, it's enough to give some time to
293
- // IE to put things in order for us.
294
- if ( !doc.$.queryCommandEnabled( 'InsertImage' ) )
295
- {
296
- CKEDITOR.tools.setTimeout( saveSelection, 50, this, true );
297
- return;
298
- }
299
- }
300
-
301
- // Avoid saving selection from within text input. (#5747)
302
- var parentTag;
303
- if ( nativeSel && nativeSel.type && nativeSel.type != 'Control'
304
- && ( parentTag = nativeSel.createRange() )
305
- && ( parentTag = parentTag.parentElement() )
306
- && ( parentTag = parentTag.nodeName )
307
- && parentTag.toLowerCase() in { input: 1, textarea : 1 } )
308
- {
309
- return;
310
- }
311
-
312
- savedRange = nativeSel && sel.getRanges()[ 0 ];
313
-
314
- checkSelectionChangeTimeout.call( editor );
315
- }
316
- }
317
- }
318
- else
319
- {
320
- // In other browsers, we make the selection change
321
- // check based on other events, like clicks or keys
322
- // press.
323
-
324
- doc.on( 'mouseup', checkSelectionChangeTimeout, editor );
325
- doc.on( 'keyup', checkSelectionChangeTimeout, editor );
326
- }
327
- });
328
-
329
- editor.addCommand( 'selectAll', selectAllCmd );
330
- editor.ui.addButton( 'SelectAll',
331
- {
332
- label : editor.lang.selectAll,
333
- command : 'selectAll'
334
- });
335
-
336
- editor.selectionChange = checkSelectionChangeTimeout;
337
- }
338
- });
339
-
340
- /**
341
- * Gets the current selection from the editing area when in WYSIWYG mode.
342
- * @returns {CKEDITOR.dom.selection} A selection object or null if not on
343
- * WYSIWYG mode or no selection is available.
344
- * @example
345
- * var selection = CKEDITOR.instances.editor1.<b>getSelection()</b>;
346
- * alert( selection.getType() );
347
- */
348
- CKEDITOR.editor.prototype.getSelection = function()
349
- {
350
- return this.document && this.document.getSelection();
351
- };
352
-
353
- CKEDITOR.editor.prototype.forceNextSelectionCheck = function()
354
- {
355
- delete this._.selectionPreviousPath;
356
- };
357
-
358
- /**
359
- * Gets the current selection from the document.
360
- * @returns {CKEDITOR.dom.selection} A selection object.
361
- * @example
362
- * var selection = CKEDITOR.instances.editor1.document.<b>getSelection()</b>;
363
- * alert( selection.getType() );
364
- */
365
- CKEDITOR.dom.document.prototype.getSelection = function()
366
- {
367
- var sel = new CKEDITOR.dom.selection( this );
368
- return ( !sel || sel.isInvalid ) ? null : sel;
369
- };
370
-
371
- /**
372
- * No selection.
373
- * @constant
374
- * @example
375
- * if ( editor.getSelection().getType() == CKEDITOR.SELECTION_NONE )
376
- * alert( 'Nothing is selected' );
377
- */
378
- CKEDITOR.SELECTION_NONE = 1;
379
-
380
- /**
381
- * Text or collapsed selection.
382
- * @constant
383
- * @example
384
- * if ( editor.getSelection().getType() == CKEDITOR.SELECTION_TEXT )
385
- * alert( 'Text is selected' );
386
- */
387
- CKEDITOR.SELECTION_TEXT = 2;
388
-
389
- /**
390
- * Element selection.
391
- * @constant
392
- * @example
393
- * if ( editor.getSelection().getType() == CKEDITOR.SELECTION_ELEMENT )
394
- * alert( 'An element is selected' );
395
- */
396
- CKEDITOR.SELECTION_ELEMENT = 3;
397
-
398
- /**
399
- * Manipulates the selection in a DOM document.
400
- * @constructor
401
- * @example
402
- */
403
- CKEDITOR.dom.selection = function( document )
404
- {
405
- var lockedSelection = document.getCustomData( 'cke_locked_selection' );
406
-
407
- if ( lockedSelection )
408
- return lockedSelection;
409
-
410
- this.document = document;
411
- this.isLocked = 0;
412
- this._ =
413
- {
414
- cache : {}
415
- };
416
-
417
- /**
418
- * IE BUG: The selection's document may be a different document than the
419
- * editor document. Return null if that's the case.
420
- */
421
- if ( CKEDITOR.env.ie )
422
- {
423
- var range = this.getNative().createRange();
424
- if ( !range
425
- || ( range.item && range.item(0).ownerDocument != this.document.$ )
426
- || ( range.parentElement && range.parentElement().ownerDocument != this.document.$ ) )
427
- {
428
- this.isInvalid = true;
429
- }
430
- }
431
-
432
- return this;
433
- };
434
-
435
- var styleObjectElements =
436
- {
437
- img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,
438
- a:1, input:1, form:1, select:1, textarea:1, button:1, fieldset:1, th:1, thead:1, tfoot:1
439
- };
440
-
441
- CKEDITOR.dom.selection.prototype =
442
- {
443
- /**
444
- * Gets the native selection object from the browser.
445
- * @function
446
- * @returns {Object} The native selection object.
447
- * @example
448
- * var selection = editor.getSelection().<b>getNative()</b>;
449
- */
450
- getNative :
451
- CKEDITOR.env.ie ?
452
- function()
453
- {
454
- return this._.cache.nativeSel || ( this._.cache.nativeSel = this.document.$.selection );
455
- }
456
- :
457
- function()
458
- {
459
- return this._.cache.nativeSel || ( this._.cache.nativeSel = this.document.getWindow().$.getSelection() );
460
- },
461
-
462
- /**
463
- * Gets the type of the current selection. The following values are
464
- * available:
465
- * <ul>
466
- * <li>{@link CKEDITOR.SELECTION_NONE} (1): No selection.</li>
467
- * <li>{@link CKEDITOR.SELECTION_TEXT} (2): Text is selected or
468
- * collapsed selection.</li>
469
- * <li>{@link CKEDITOR.SELECTION_ELEMENT} (3): A element
470
- * selection.</li>
471
- * </ul>
472
- * @function
473
- * @returns {Number} One of the following constant values:
474
- * {@link CKEDITOR.SELECTION_NONE}, {@link CKEDITOR.SELECTION_TEXT} or
475
- * {@link CKEDITOR.SELECTION_ELEMENT}.
476
- * @example
477
- * if ( editor.getSelection().<b>getType()</b> == CKEDITOR.SELECTION_TEXT )
478
- * alert( 'Text is selected' );
479
- */
480
- getType :
481
- CKEDITOR.env.ie ?
482
- function()
483
- {
484
- var cache = this._.cache;
485
- if ( cache.type )
486
- return cache.type;
487
-
488
- var type = CKEDITOR.SELECTION_NONE;
489
-
490
- try
491
- {
492
- var sel = this.getNative(),
493
- ieType = sel.type;
494
-
495
- if ( ieType == 'Text' )
496
- type = CKEDITOR.SELECTION_TEXT;
497
-
498
- if ( ieType == 'Control' )
499
- type = CKEDITOR.SELECTION_ELEMENT;
500
-
501
- // It is possible that we can still get a text range
502
- // object even when type == 'None' is returned by IE.
503
- // So we'd better check the object returned by
504
- // createRange() rather than by looking at the type.
505
- if ( sel.createRange().parentElement )
506
- type = CKEDITOR.SELECTION_TEXT;
507
- }
508
- catch(e) {}
509
-
510
- return ( cache.type = type );
511
- }
512
- :
513
- function()
514
- {
515
- var cache = this._.cache;
516
- if ( cache.type )
517
- return cache.type;
518
-
519
- var type = CKEDITOR.SELECTION_TEXT;
520
-
521
- var sel = this.getNative();
522
-
523
- if ( !sel )
524
- type = CKEDITOR.SELECTION_NONE;
525
- else if ( sel.rangeCount == 1 )
526
- {
527
- // Check if the actual selection is a control (IMG,
528
- // TABLE, HR, etc...).
529
-
530
- var range = sel.getRangeAt(0),
531
- startContainer = range.startContainer;
532
-
533
- if ( startContainer == range.endContainer
534
- && startContainer.nodeType == 1
535
- && ( range.endOffset - range.startOffset ) == 1
536
- && styleObjectElements[ startContainer.childNodes[ range.startOffset ].nodeName.toLowerCase() ] )
537
- {
538
- type = CKEDITOR.SELECTION_ELEMENT;
539
- }
540
- }
541
-
542
- return ( cache.type = type );
543
- },
544
-
545
- /**
546
- * Retrieve the {@link CKEDITOR.dom.range} instances that represent the current selection.
547
- * Note: Some browsers returns multiple ranges even on a sequent selection, e.g. Firefox returns
548
- * one range for each table cell when one or more table row is selected.
549
- * @return {Array}
550
- * @example
551
- * var ranges = selection.getRanges();
552
- * alert(ranges.length);
553
- */
554
- getRanges : (function()
555
- {
556
- var func = CKEDITOR.env.ie ?
557
- ( function()
558
- {
559
- // Finds the container and offset for a specific boundary
560
- // of an IE range.
561
- var getBoundaryInformation = function( range, start )
562
- {
563
- // Creates a collapsed range at the requested boundary.
564
- range = range.duplicate();
565
- range.collapse( start );
566
-
567
- // Gets the element that encloses the range entirely.
568
- var parent = range.parentElement();
569
- var siblings = parent.childNodes;
570
-
571
- var testRange;
572
-
573
- for ( var i = 0 ; i < siblings.length ; i++ )
574
- {
575
- var child = siblings[ i ];
576
- if ( child.nodeType == 1 )
577
- {
578
- testRange = range.duplicate();
579
-
580
- testRange.moveToElementText( child );
581
-
582
- var comparisonStart = testRange.compareEndPoints( 'StartToStart', range ),
583
- comparisonEnd = testRange.compareEndPoints( 'EndToStart', range );
584
-
585
- testRange.collapse();
586
-
587
- if ( comparisonStart > 0 )
588
- break;
589
- // When selection stay at the side of certain self-closing elements, e.g. BR,
590
- // our comparison will never shows an equality. (#4824)
591
- else if ( !comparisonStart
592
- || comparisonEnd == 1 && comparisonStart == -1 )
593
- return { container : parent, offset : i };
594
- else if ( !comparisonEnd )
595
- return { container : parent, offset : i + 1 };
596
-
597
- testRange = null;
598
- }
599
- }
600
-
601
- if ( !testRange )
602
- {
603
- testRange = range.duplicate();
604
- testRange.moveToElementText( parent );
605
- testRange.collapse( false );
606
- }
607
-
608
- testRange.setEndPoint( 'StartToStart', range );
609
- // IE report line break as CRLF with range.text but
610
- // only LF with textnode.nodeValue, normalize them to avoid
611
- // breaking character counting logic below. (#3949)
612
- var distance = testRange.text.replace( /(\r\n|\r)/g, '\n' ).length;
613
-
614
- try
615
- {
616
- while ( distance > 0 )
617
- distance -= siblings[ --i ].nodeValue.length;
618
- }
619
- // Measurement in IE could be somtimes wrong because of <select> element. (#4611)
620
- catch( e )
621
- {
622
- distance = 0;
623
- }
624
-
625
-
626
- if ( distance === 0 )
627
- {
628
- return {
629
- container : parent,
630
- offset : i
631
- };
632
- }
633
- else
634
- {
635
- return {
636
- container : siblings[ i ],
637
- offset : -distance
638
- };
639
- }
640
- };
641
-
642
- return function()
643
- {
644
- // IE doesn't have range support (in the W3C way), so we
645
- // need to do some magic to transform selections into
646
- // CKEDITOR.dom.range instances.
647
-
648
- var sel = this.getNative(),
649
- nativeRange = sel && sel.createRange(),
650
- type = this.getType(),
651
- range;
652
-
653
- if ( !sel )
654
- return [];
655
-
656
- if ( type == CKEDITOR.SELECTION_TEXT )
657
- {
658
- range = new CKEDITOR.dom.range( this.document );
659
-
660
- var boundaryInfo = getBoundaryInformation( nativeRange, true );
661
- range.setStart( new CKEDITOR.dom.node( boundaryInfo.container ), boundaryInfo.offset );
662
-
663
- boundaryInfo = getBoundaryInformation( nativeRange );
664
- range.setEnd( new CKEDITOR.dom.node( boundaryInfo.container ), boundaryInfo.offset );
665
-
666
- // Correct an invalid IE range case on empty list item. (#5850)
667
- if ( range.endContainer.getPosition( range.startContainer ) & CKEDITOR.POSITION_PRECEDING
668
- && range.endOffset <= range.startContainer.getIndex() )
669
- {
670
- range.collapse();
671
- }
672
-
673
- return [ range ];
674
- }
675
- else if ( type == CKEDITOR.SELECTION_ELEMENT )
676
- {
677
- var retval = [];
678
-
679
- for ( var i = 0 ; i < nativeRange.length ; i++ )
680
- {
681
- var element = nativeRange.item( i ),
682
- parentElement = element.parentNode,
683
- j = 0;
684
-
685
- range = new CKEDITOR.dom.range( this.document );
686
-
687
- for (; j < parentElement.childNodes.length && parentElement.childNodes[j] != element ; j++ )
688
- { /*jsl:pass*/ }
689
-
690
- range.setStart( new CKEDITOR.dom.node( parentElement ), j );
691
- range.setEnd( new CKEDITOR.dom.node( parentElement ), j + 1 );
692
- retval.push( range );
693
- }
694
-
695
- return retval;
696
- }
697
-
698
- return [];
699
- };
700
- })()
701
- :
702
- function()
703
- {
704
-
705
- // On browsers implementing the W3C range, we simply
706
- // tranform the native ranges in CKEDITOR.dom.range
707
- // instances.
708
-
709
- var ranges = [],
710
- range,
711
- doc = this.document,
712
- sel = this.getNative();
713
-
714
- if ( !sel )
715
- return ranges;
716
-
717
- // On WebKit, it may happen that we'll have no selection
718
- // available. We normalize it here by replicating the
719
- // behavior of other browsers.
720
- if ( !sel.rangeCount )
721
- {
722
- range = new CKEDITOR.dom.range( doc );
723
- range.moveToElementEditStart( doc.getBody() );
724
- ranges.push( range );
725
- }
726
-
727
- for ( var i = 0 ; i < sel.rangeCount ; i++ )
728
- {
729
- var nativeRange = sel.getRangeAt( i );
730
-
731
- range = new CKEDITOR.dom.range( doc );
732
-
733
- range.setStart( new CKEDITOR.dom.node( nativeRange.startContainer ), nativeRange.startOffset );
734
- range.setEnd( new CKEDITOR.dom.node( nativeRange.endContainer ), nativeRange.endOffset );
735
- ranges.push( range );
736
- }
737
- return ranges;
738
- };
739
-
740
- return function( onlyEditables )
741
- {
742
- var cache = this._.cache;
743
- if ( cache.ranges && !onlyEditables )
744
- return cache.ranges;
745
- else if ( !cache.ranges )
746
- cache.ranges = new CKEDITOR.dom.rangeList( func.call( this ) );
747
-
748
- // Split range into multiple by read-only nodes.
749
- if ( onlyEditables )
750
- {
751
- var ranges = cache.ranges;
752
- for ( var i = 0; i < ranges.length; i++ )
753
- {
754
- var range = ranges[ i ];
755
-
756
- // Drop range spans inside one ready-only node.
757
- var parent = range.getCommonAncestor();
758
- if ( parent.isReadOnly() )
759
- ranges.splice( i, 1 );
760
-
761
- if ( range.collapsed )
762
- continue;
763
-
764
- var startContainer = range.startContainer,
765
- endContainer = range.endContainer,
766
- startOffset = range.startOffset,
767
- endOffset = range.endOffset,
768
- walkerRange = range.clone();
769
-
770
- // Range may start inside a non-editable element, restart range
771
- // by the end of it.
772
- var readOnly;
773
- if ( ( readOnly = startContainer.isReadOnly() ) )
774
- range.setStartAfter( readOnly );
775
-
776
- // Enlarge range start/end with text node to avoid walker
777
- // being DOM destructive, it doesn't interfere our checking
778
- // of elements below as well.
779
- if ( startContainer && startContainer.type == CKEDITOR.NODE_TEXT )
780
- {
781
- if ( startOffset >= startContainer.getLength() )
782
- walkerRange.setStartAfter( startContainer );
783
- else
784
- walkerRange.setStartBefore( startContainer );
785
- }
786
-
787
- if ( endContainer && endContainer.type == CKEDITOR.NODE_TEXT )
788
- {
789
- if ( !endOffset )
790
- walkerRange.setEndBefore( endContainer );
791
- else
792
- walkerRange.setEndAfter( endContainer );
793
- }
794
-
795
- // Looking for non-editable element inside the range.
796
- var walker = new CKEDITOR.dom.walker( walkerRange );
797
- walker.evaluator = function( node )
798
- {
799
- if ( node.type == CKEDITOR.NODE_ELEMENT
800
- && node.getAttribute( 'contenteditable' ) == 'false' )
801
- {
802
- var newRange = range.clone();
803
- range.setEndBefore( node );
804
-
805
- // Drop collapsed range around read-only elements,
806
- // it make sure the range list empty when selecting
807
- // only non-editable elements.
808
- if ( range.collapsed )
809
- ranges.splice( i--, 1 );
810
-
811
- // Avoid creating invalid range.
812
- if ( !( node.getPosition( walkerRange.endContainer ) & CKEDITOR.POSITION_CONTAINS ) )
813
- {
814
- newRange.setStartAfter( node );
815
- if ( !newRange.collapsed )
816
- ranges.splice( i + 1, 0, newRange );
817
- }
818
-
819
- return true;
820
- }
821
-
822
- return false;
823
- };
824
-
825
- walker.next();
826
- }
827
- }
828
-
829
- return cache.ranges;
830
- };
831
- })(),
832
-
833
- /**
834
- * Gets the DOM element in which the selection starts.
835
- * @returns {CKEDITOR.dom.element} The element at the beginning of the
836
- * selection.
837
- * @example
838
- * var element = editor.getSelection().<b>getStartElement()</b>;
839
- * alert( element.getName() );
840
- */
841
- getStartElement : function()
842
- {
843
- var cache = this._.cache;
844
- if ( cache.startElement !== undefined )
845
- return cache.startElement;
846
-
847
- var node,
848
- sel = this.getNative();
849
-
850
- switch ( this.getType() )
851
- {
852
- case CKEDITOR.SELECTION_ELEMENT :
853
- return this.getSelectedElement();
854
-
855
- case CKEDITOR.SELECTION_TEXT :
856
-
857
- var range = this.getRanges()[0];
858
-
859
- if ( range )
860
- {
861
- if ( !range.collapsed )
862
- {
863
- range.optimize();
864
-
865
- // Decrease the range content to exclude particial
866
- // selected node on the start which doesn't have
867
- // visual impact. ( #3231 )
868
- while ( 1 )
869
- {
870
- var startContainer = range.startContainer,
871
- startOffset = range.startOffset;
872
- // Limit the fix only to non-block elements.(#3950)
873
- if ( startOffset == ( startContainer.getChildCount ?
874
- startContainer.getChildCount() : startContainer.getLength() )
875
- && !startContainer.isBlockBoundary() )
876
- range.setStartAfter( startContainer );
877
- else break;
878
- }
879
-
880
- node = range.startContainer;
881
-
882
- if ( node.type != CKEDITOR.NODE_ELEMENT )
883
- return node.getParent();
884
-
885
- node = node.getChild( range.startOffset );
886
-
887
- if ( !node || node.type != CKEDITOR.NODE_ELEMENT )
888
- node = range.startContainer;
889
- else
890
- {
891
- var child = node.getFirst();
892
- while ( child && child.type == CKEDITOR.NODE_ELEMENT )
893
- {
894
- node = child;
895
- child = child.getFirst();
896
- }
897
- }
898
- }
899
- else
900
- {
901
- node = range.startContainer;
902
- if ( node.type != CKEDITOR.NODE_ELEMENT )
903
- node = node.getParent();
904
- }
905
-
906
- node = node.$;
907
- }
908
- }
909
-
910
- return cache.startElement = ( node ? new CKEDITOR.dom.element( node ) : null );
911
- },
912
-
913
- /**
914
- * Gets the current selected element.
915
- * @returns {CKEDITOR.dom.element} The selected element. Null if no
916
- * selection is available or the selection type is not
917
- * {@link CKEDITOR.SELECTION_ELEMENT}.
918
- * @example
919
- * var element = editor.getSelection().<b>getSelectedElement()</b>;
920
- * alert( element.getName() );
921
- */
922
- getSelectedElement : function()
923
- {
924
- var cache = this._.cache;
925
- if ( cache.selectedElement !== undefined )
926
- return cache.selectedElement;
927
-
928
- var self = this;
929
-
930
- var node = CKEDITOR.tools.tryThese(
931
- // Is it native IE control type selection?
932
- function()
933
- {
934
- return self.getNative().createRange().item( 0 );
935
- },
936
- // Figure it out by checking if there's a single enclosed
937
- // node of the range.
938
- function()
939
- {
940
- var range = self.getRanges()[ 0 ],
941
- enclosed,
942
- selected;
943
-
944
- // Check first any enclosed element, e.g. <ul>[<li><a href="#">item</a></li>]</ul>
945
- for ( var i = 2; i && !( ( enclosed = range.getEnclosedNode() )
946
- && ( enclosed.type == CKEDITOR.NODE_ELEMENT )
947
- && styleObjectElements[ enclosed.getName() ]
948
- && ( selected = enclosed ) ); i-- )
949
- {
950
- // Then check any deep wrapped element, e.g. [<b><i><img /></i></b>]
951
- range.shrink( CKEDITOR.SHRINK_ELEMENT );
952
- }
953
-
954
- return selected.$;
955
- });
956
-
957
- return cache.selectedElement = ( node ? new CKEDITOR.dom.element( node ) : null );
958
- },
959
-
960
- lock : function()
961
- {
962
- // Call all cacheable function.
963
- this.getRanges();
964
- this.getStartElement();
965
- this.getSelectedElement();
966
-
967
- // The native selection is not available when locked.
968
- this._.cache.nativeSel = {};
969
-
970
- this.isLocked = 1;
971
-
972
- // Save this selection inside the DOM document.
973
- this.document.setCustomData( 'cke_locked_selection', this );
974
- },
975
-
976
- unlock : function( restore )
977
- {
978
- var doc = this.document,
979
- lockedSelection = doc.getCustomData( 'cke_locked_selection' );
980
-
981
- if ( lockedSelection )
982
- {
983
- doc.setCustomData( 'cke_locked_selection', null );
984
-
985
- if ( restore )
986
- {
987
- var selectedElement = lockedSelection.getSelectedElement(),
988
- ranges = !selectedElement && lockedSelection.getRanges();
989
-
990
- this.isLocked = 0;
991
- this.reset();
992
-
993
- doc.getBody().focus();
994
-
995
- if ( selectedElement )
996
- this.selectElement( selectedElement );
997
- else
998
- this.selectRanges( ranges );
999
- }
1000
- }
1001
-
1002
- if ( !lockedSelection || !restore )
1003
- {
1004
- this.isLocked = 0;
1005
- this.reset();
1006
- }
1007
- },
1008
-
1009
- reset : function()
1010
- {
1011
- this._.cache = {};
1012
- },
1013
-
1014
- /**
1015
- * Make the current selection of type {@link CKEDITOR.SELECTION_ELEMENT} by enclosing the specified element.
1016
- * @param element
1017
- */
1018
- selectElement : function( element )
1019
- {
1020
- if ( this.isLocked )
1021
- {
1022
- var range = new CKEDITOR.dom.range( this.document );
1023
- range.setStartBefore( element );
1024
- range.setEndAfter( element );
1025
-
1026
- this._.cache.selectedElement = element;
1027
- this._.cache.startElement = element;
1028
- this._.cache.ranges = new CKEDITOR.dom.rangeList( range );
1029
- this._.cache.type = CKEDITOR.SELECTION_ELEMENT;
1030
-
1031
- return;
1032
- }
1033
-
1034
- if ( CKEDITOR.env.ie )
1035
- {
1036
- this.getNative().empty();
1037
-
1038
- try
1039
- {
1040
- // Try to select the node as a control.
1041
- range = this.document.$.body.createControlRange();
1042
- range.addElement( element.$ );
1043
- range.select();
1044
- }
1045
- catch( e )
1046
- {
1047
- // If failed, select it as a text range.
1048
- range = this.document.$.body.createTextRange();
1049
- range.moveToElementText( element.$ );
1050
- range.select();
1051
- }
1052
- finally
1053
- {
1054
- this.document.fire( 'selectionchange' );
1055
- }
1056
-
1057
- this.reset();
1058
- }
1059
- else
1060
- {
1061
- // Create the range for the element.
1062
- range = this.document.$.createRange();
1063
- range.selectNode( element.$ );
1064
-
1065
- // Select the range.
1066
- var sel = this.getNative();
1067
- sel.removeAllRanges();
1068
- sel.addRange( range );
1069
-
1070
- this.reset();
1071
- }
1072
- },
1073
-
1074
- /**
1075
- * Adding the specified ranges to document selection preceding
1076
- * by clearing up the original selection.
1077
- * @param {CKEDITOR.dom.range} ranges
1078
- */
1079
- selectRanges : function( ranges )
1080
- {
1081
- if ( this.isLocked )
1082
- {
1083
- this._.cache.selectedElement = null;
1084
- this._.cache.startElement = ranges[ 0 ] && ranges[ 0 ].getTouchedStartNode();
1085
- this._.cache.ranges = new CKEDITOR.dom.rangeList( ranges );
1086
- this._.cache.type = CKEDITOR.SELECTION_TEXT;
1087
-
1088
- return;
1089
- }
1090
-
1091
- if ( CKEDITOR.env.ie )
1092
- {
1093
- if ( ranges.length > 1 )
1094
- {
1095
- // IE doesn't accept multiple ranges selection, so we join all into one.
1096
- var last = ranges[ ranges.length -1 ] ;
1097
- ranges[ 0 ].setEnd( last.endContainer, last.endOffset );
1098
- ranges.length = 1;
1099
- }
1100
-
1101
- if ( ranges[ 0 ] )
1102
- ranges[ 0 ].select();
1103
-
1104
- this.reset();
1105
- }
1106
- else
1107
- {
1108
- var sel = this.getNative();
1109
-
1110
- if ( ranges.length )
1111
- sel.removeAllRanges();
1112
-
1113
- for ( var i = 0 ; i < ranges.length ; i++ )
1114
- {
1115
- // Joining sequential ranges introduced by
1116
- // readonly elements protection.
1117
- if ( i < ranges.length -1 )
1118
- {
1119
- var left = ranges[ i ], right = ranges[ i +1 ],
1120
- between = left.clone();
1121
- between.setStart( left.endContainer, left.endOffset );
1122
- between.setEnd( right.startContainer, right.startOffset );
1123
-
1124
- // Don't confused by Firefox adjancent multi-ranges
1125
- // introduced by table cells selection.
1126
- if ( !between.collapsed )
1127
- {
1128
- between.shrink( CKEDITOR.NODE_ELEMENT, true );
1129
- if ( between.getCommonAncestor().isReadOnly())
1130
- {
1131
- right.setStart( left.startContainer, left.startOffset );
1132
- ranges.splice( i--, 1 );
1133
- continue;
1134
- }
1135
- }
1136
- }
1137
-
1138
- var range = ranges[ i ];
1139
- var nativeRange = this.document.$.createRange();
1140
- var startContainer = range.startContainer;
1141
-
1142
- // In FF2, if we have a collapsed range, inside an empty
1143
- // element, we must add something to it otherwise the caret
1144
- // will not be visible.
1145
- // In Opera instead, the selection will be moved out of the
1146
- // element. (#4657)
1147
- if ( range.collapsed &&
1148
- ( CKEDITOR.env.opera || ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) ) &&
1149
- startContainer.type == CKEDITOR.NODE_ELEMENT &&
1150
- !startContainer.getChildCount() )
1151
- {
1152
- startContainer.appendText( '' );
1153
- }
1154
-
1155
- nativeRange.setStart( startContainer.$, range.startOffset );
1156
- nativeRange.setEnd( range.endContainer.$, range.endOffset );
1157
-
1158
- // Select the range.
1159
- sel.addRange( nativeRange );
1160
- }
1161
-
1162
- this.reset();
1163
- }
1164
- },
1165
-
1166
- /**
1167
- * Create bookmark for every single of this selection range (from #getRanges)
1168
- * by calling the {@link CKEDITOR.dom.range.prototype.createBookmark} method,
1169
- * with extra cares to avoid interferon among those ranges. Same arguments are
1170
- * received as with the underlay range method.
1171
- */
1172
- createBookmarks : function( serializable )
1173
- {
1174
- return this.getRanges().createBookmarks( serializable );
1175
- },
1176
-
1177
- /**
1178
- * Create bookmark for every single of this selection range (from #getRanges)
1179
- * by calling the {@link CKEDITOR.dom.range.prototype.createBookmark2} method,
1180
- * with extra cares to avoid interferon among those ranges. Same arguments are
1181
- * received as with the underlay range method.
1182
- */
1183
- createBookmarks2 : function( normalized )
1184
- {
1185
- return this.getRanges().createBookmarks2( normalized );
1186
- },
1187
-
1188
- /**
1189
- * Select the virtual ranges denote by the bookmarks by calling #selectRanges.
1190
- * @param bookmarks
1191
- */
1192
- selectBookmarks : function( bookmarks )
1193
- {
1194
- var ranges = [];
1195
- for ( var i = 0 ; i < bookmarks.length ; i++ )
1196
- {
1197
- var range = new CKEDITOR.dom.range( this.document );
1198
- range.moveToBookmark( bookmarks[i] );
1199
- ranges.push( range );
1200
- }
1201
- this.selectRanges( ranges );
1202
- return this;
1203
- },
1204
-
1205
- /**
1206
- * Retrieve the common ancestor node of the first range and the last range.
1207
- */
1208
- getCommonAncestor : function()
1209
- {
1210
- var ranges = this.getRanges(),
1211
- startNode = ranges[ 0 ].startContainer,
1212
- endNode = ranges[ ranges.length - 1 ].endContainer;
1213
- return startNode.getCommonAncestor( endNode );
1214
- },
1215
-
1216
- /**
1217
- * Moving scroll bar to the current selection's start position.
1218
- */
1219
- scrollIntoView : function()
1220
- {
1221
- // If we have split the block, adds a temporary span at the
1222
- // range position and scroll relatively to it.
1223
- var start = this.getStartElement();
1224
- start.scrollIntoView();
1225
- }
1226
- };
1227
- })();
1228
-
1229
- ( function()
1230
- {
1231
- var notWhitespaces = CKEDITOR.dom.walker.whitespaces( true ),
1232
- fillerTextRegex = /\ufeff|\u00a0/,
1233
- nonCells = { table:1,tbody:1,tr:1 };
1234
-
1235
- CKEDITOR.dom.range.prototype.select =
1236
- CKEDITOR.env.ie ?
1237
- // V2
1238
- function( forceExpand )
1239
- {
1240
- var collapsed = this.collapsed;
1241
- var isStartMarkerAlone;
1242
- var dummySpan;
1243
-
1244
- // IE doesn't support selecting the entire table row/cell, move the selection into cells, e.g.
1245
- // <table><tbody><tr>[<td>cell</b></td>... => <table><tbody><tr><td>[cell</td>...
1246
- if ( this.startContainer.type == CKEDITOR.NODE_ELEMENT && this.startContainer.getName() in nonCells
1247
- || this.endContainer.type == CKEDITOR.NODE_ELEMENT && this.endContainer.getName() in nonCells )
1248
- {
1249
- this.shrink( CKEDITOR.NODE_ELEMENT, true );
1250
- }
1251
-
1252
- var bookmark = this.createBookmark();
1253
-
1254
- // Create marker tags for the start and end boundaries.
1255
- var startNode = bookmark.startNode;
1256
-
1257
- var endNode;
1258
- if ( !collapsed )
1259
- endNode = bookmark.endNode;
1260
-
1261
- // Create the main range which will be used for the selection.
1262
- var ieRange = this.document.$.body.createTextRange();
1263
-
1264
- // Position the range at the start boundary.
1265
- ieRange.moveToElementText( startNode.$ );
1266
- ieRange.moveStart( 'character', 1 );
1267
-
1268
- if ( endNode )
1269
- {
1270
- // Create a tool range for the end.
1271
- var ieRangeEnd = this.document.$.body.createTextRange();
1272
-
1273
- // Position the tool range at the end.
1274
- ieRangeEnd.moveToElementText( endNode.$ );
1275
-
1276
- // Move the end boundary of the main range to match the tool range.
1277
- ieRange.setEndPoint( 'EndToEnd', ieRangeEnd );
1278
- ieRange.moveEnd( 'character', -1 );
1279
- }
1280
- else
1281
- {
1282
- // The isStartMarkerAlone logic comes from V2. It guarantees that the lines
1283
- // will expand and that the cursor will be blinking on the right place.
1284
- // Actually, we are using this flag just to avoid using this hack in all
1285
- // situations, but just on those needed.
1286
- var next = startNode.getNext( notWhitespaces );
1287
- isStartMarkerAlone = ( !( next && next.getText && next.getText().match( fillerTextRegex ) ) // already a filler there?
1288
- && ( forceExpand || !startNode.hasPrevious() || ( startNode.getPrevious().is && startNode.getPrevious().is( 'br' ) ) ) );
1289
-
1290
- // Append a temporary <span>&#65279;</span> before the selection.
1291
- // This is needed to avoid IE destroying selections inside empty
1292
- // inline elements, like <b></b> (#253).
1293
- // It is also needed when placing the selection right after an inline
1294
- // element to avoid the selection moving inside of it.
1295
- dummySpan = this.document.createElement( 'span' );
1296
- dummySpan.setHtml( '&#65279;' ); // Zero Width No-Break Space (U+FEFF). See #1359.
1297
- dummySpan.insertBefore( startNode );
1298
-
1299
- if ( isStartMarkerAlone )
1300
- {
1301
- // To expand empty blocks or line spaces after <br>, we need
1302
- // instead to have any char, which will be later deleted using the
1303
- // selection.
1304
- // \ufeff = Zero Width No-Break Space (U+FEFF). (#1359)
1305
- this.document.createText( '\ufeff' ).insertBefore( startNode );
1306
- }
1307
- }
1308
-
1309
- // Remove the markers (reset the position, because of the changes in the DOM tree).
1310
- this.setStartBefore( startNode );
1311
- startNode.remove();
1312
-
1313
- if ( collapsed )
1314
- {
1315
- if ( isStartMarkerAlone )
1316
- {
1317
- // Move the selection start to include the temporary \ufeff.
1318
- ieRange.moveStart( 'character', -1 );
1319
-
1320
- ieRange.select();
1321
-
1322
- // Remove our temporary stuff.
1323
- this.document.$.selection.clear();
1324
- }
1325
- else
1326
- ieRange.select();
1327
-
1328
- this.moveToPosition( dummySpan, CKEDITOR.POSITION_BEFORE_START );
1329
- dummySpan.remove();
1330
- }
1331
- else
1332
- {
1333
- this.setEndBefore( endNode );
1334
- endNode.remove();
1335
- ieRange.select();
1336
- }
1337
-
1338
- this.document.fire( 'selectionchange' );
1339
- }
1340
- :
1341
- function()
1342
- {
1343
- var startContainer = this.startContainer;
1344
-
1345
- // If we have a collapsed range, inside an empty element, we must add
1346
- // something to it, otherwise the caret will not be visible.
1347
- if ( this.collapsed && startContainer.type == CKEDITOR.NODE_ELEMENT && !startContainer.getChildCount() )
1348
- startContainer.append( new CKEDITOR.dom.text( '' ) );
1349
-
1350
- var nativeRange = this.document.$.createRange();
1351
- nativeRange.setStart( startContainer.$, this.startOffset );
1352
-
1353
- try
1354
- {
1355
- nativeRange.setEnd( this.endContainer.$, this.endOffset );
1356
- }
1357
- catch ( e )
1358
- {
1359
- // There is a bug in Firefox implementation (it would be too easy
1360
- // otherwise). The new start can't be after the end (W3C says it can).
1361
- // So, let's create a new range and collapse it to the desired point.
1362
- if ( e.toString().indexOf( 'NS_ERROR_ILLEGAL_VALUE' ) >= 0 )
1363
- {
1364
- this.collapse( true );
1365
- nativeRange.setEnd( this.endContainer.$, this.endOffset );
1366
- }
1367
- else
1368
- throw( e );
1369
- }
1370
-
1371
- var selection = this.document.getSelection().getNative();
1372
- selection.removeAllRanges();
1373
- selection.addRange( nativeRange );
1374
- };
1375
- } )();