site_logic 1.9.4 → 1.9.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (658) hide show
  1. data/VERSION +1 -1
  2. data/app/controllers/pages_controller.rb +1 -1
  3. data/app/models/page.rb +19 -2
  4. data/app/models/site.rb +5 -0
  5. data/config/environments/test.rb +2 -27
  6. data/features/support/env.rb +38 -20
  7. data/lib/tasks/cucumber.rake +12 -0
  8. data/site_logic.gemspec +2 -649
  9. data/spec/controllers/pages_controller_spec.rb +1 -1
  10. data/spec/models/page_spec.rb +63 -22
  11. metadata +5 -651
  12. data/config/environments/development.rb +0 -27
  13. data/config/environments/production.rb +0 -49
  14. data/public/favicon.ico +0 -0
  15. data/public/javascripts/ckeditor/.htaccess +0 -24
  16. data/public/javascripts/ckeditor/CHANGES.html +0 -993
  17. data/public/javascripts/ckeditor/INSTALL.html +0 -92
  18. data/public/javascripts/ckeditor/LICENSE.html +0 -1334
  19. data/public/javascripts/ckeditor/_samples/ajax.html +0 -87
  20. data/public/javascripts/ckeditor/_samples/api.html +0 -152
  21. data/public/javascripts/ckeditor/_samples/api_dialog/my_dialog.js +0 -28
  22. data/public/javascripts/ckeditor/_samples/api_dialog.html +0 -188
  23. data/public/javascripts/ckeditor/_samples/asp/advanced.asp +0 -105
  24. data/public/javascripts/ckeditor/_samples/asp/events.asp +0 -136
  25. data/public/javascripts/ckeditor/_samples/asp/index.html +0 -103
  26. data/public/javascripts/ckeditor/_samples/asp/replace.asp +0 -72
  27. data/public/javascripts/ckeditor/_samples/asp/replaceall.asp +0 -77
  28. data/public/javascripts/ckeditor/_samples/asp/sample_posteddata.asp +0 -46
  29. data/public/javascripts/ckeditor/_samples/asp/standalone.asp +0 -72
  30. data/public/javascripts/ckeditor/_samples/assets/output_for_flash.fla +0 -0
  31. data/public/javascripts/ckeditor/_samples/assets/output_for_flash.swf +0 -0
  32. data/public/javascripts/ckeditor/_samples/assets/output_xhtml.css +0 -204
  33. data/public/javascripts/ckeditor/_samples/assets/swfobject.js +0 -18
  34. data/public/javascripts/ckeditor/_samples/autogrow.html +0 -75
  35. data/public/javascripts/ckeditor/_samples/divreplace.html +0 -137
  36. data/public/javascripts/ckeditor/_samples/enterkey.html +0 -88
  37. data/public/javascripts/ckeditor/_samples/fullpage.html +0 -62
  38. data/public/javascripts/ckeditor/_samples/index.html +0 -57
  39. data/public/javascripts/ckeditor/_samples/jqueryadapter.html +0 -73
  40. data/public/javascripts/ckeditor/_samples/output_for_flash.html +0 -257
  41. data/public/javascripts/ckeditor/_samples/output_html.html +0 -259
  42. data/public/javascripts/ckeditor/_samples/output_xhtml.html +0 -159
  43. data/public/javascripts/ckeditor/_samples/php/advanced.php +0 -93
  44. data/public/javascripts/ckeditor/_samples/php/events.php +0 -130
  45. data/public/javascripts/ckeditor/_samples/php/replace.php +0 -63
  46. data/public/javascripts/ckeditor/_samples/php/replaceall.php +0 -68
  47. data/public/javascripts/ckeditor/_samples/php/standalone.php +0 -64
  48. data/public/javascripts/ckeditor/_samples/replacebyclass.html +0 -49
  49. data/public/javascripts/ckeditor/_samples/replacebycode.html +0 -80
  50. data/public/javascripts/ckeditor/_samples/sample.css +0 -81
  51. data/public/javascripts/ckeditor/_samples/sample.js +0 -65
  52. data/public/javascripts/ckeditor/_samples/sample_posteddata.php +0 -59
  53. data/public/javascripts/ckeditor/_samples/sharedspaces.html +0 -131
  54. data/public/javascripts/ckeditor/_samples/skins.html +0 -83
  55. data/public/javascripts/ckeditor/_samples/ui_color.html +0 -87
  56. data/public/javascripts/ckeditor/_samples/ui_languages.html +0 -103
  57. data/public/javascripts/ckeditor/_source/adapters/jquery.js +0 -297
  58. data/public/javascripts/ckeditor/_source/core/_bootstrap.js +0 -96
  59. data/public/javascripts/ckeditor/_source/core/ajax.js +0 -142
  60. data/public/javascripts/ckeditor/_source/core/ckeditor.js +0 -133
  61. data/public/javascripts/ckeditor/_source/core/ckeditor_base.js +0 -196
  62. data/public/javascripts/ckeditor/_source/core/ckeditor_basic.js +0 -239
  63. data/public/javascripts/ckeditor/_source/core/command.js +0 -209
  64. data/public/javascripts/ckeditor/_source/core/commanddefinition.js +0 -129
  65. data/public/javascripts/ckeditor/_source/core/config.js +0 -430
  66. data/public/javascripts/ckeditor/_source/core/dataprocessor.js +0 -65
  67. data/public/javascripts/ckeditor/_source/core/dom/comment.js +0 -32
  68. data/public/javascripts/ckeditor/_source/core/dom/document.js +0 -224
  69. data/public/javascripts/ckeditor/_source/core/dom/documentfragment.js +0 -49
  70. data/public/javascripts/ckeditor/_source/core/dom/domobject.js +0 -255
  71. data/public/javascripts/ckeditor/_source/core/dom/element.js +0 -1564
  72. data/public/javascripts/ckeditor/_source/core/dom/elementpath.js +0 -119
  73. data/public/javascripts/ckeditor/_source/core/dom/event.js +0 -142
  74. data/public/javascripts/ckeditor/_source/core/dom/node.js +0 -683
  75. data/public/javascripts/ckeditor/_source/core/dom/nodelist.js +0 -26
  76. data/public/javascripts/ckeditor/_source/core/dom/range.js +0 -1883
  77. data/public/javascripts/ckeditor/_source/core/dom/rangelist.js +0 -214
  78. data/public/javascripts/ckeditor/_source/core/dom/text.js +0 -123
  79. data/public/javascripts/ckeditor/_source/core/dom/walker.js +0 -445
  80. data/public/javascripts/ckeditor/_source/core/dom/window.js +0 -96
  81. data/public/javascripts/ckeditor/_source/core/dom.js +0 -20
  82. data/public/javascripts/ckeditor/_source/core/dtd.js +0 -238
  83. data/public/javascripts/ckeditor/_source/core/editor.js +0 -924
  84. data/public/javascripts/ckeditor/_source/core/editor_basic.js +0 -182
  85. data/public/javascripts/ckeditor/_source/core/env.js +0 -270
  86. data/public/javascripts/ckeditor/_source/core/event.js +0 -342
  87. data/public/javascripts/ckeditor/_source/core/eventInfo.js +0 -120
  88. data/public/javascripts/ckeditor/_source/core/focusmanager.js +0 -152
  89. data/public/javascripts/ckeditor/_source/core/htmlparser/basicwriter.js +0 -145
  90. data/public/javascripts/ckeditor/_source/core/htmlparser/cdata.js +0 -43
  91. data/public/javascripts/ckeditor/_source/core/htmlparser/comment.js +0 -60
  92. data/public/javascripts/ckeditor/_source/core/htmlparser/element.js +0 -240
  93. data/public/javascripts/ckeditor/_source/core/htmlparser/filter.js +0 -288
  94. data/public/javascripts/ckeditor/_source/core/htmlparser/fragment.js +0 -504
  95. data/public/javascripts/ckeditor/_source/core/htmlparser/text.js +0 -55
  96. data/public/javascripts/ckeditor/_source/core/htmlparser.js +0 -224
  97. data/public/javascripts/ckeditor/_source/core/imagecacher.js +0 -80
  98. data/public/javascripts/ckeditor/_source/core/lang.js +0 -156
  99. data/public/javascripts/ckeditor/_source/core/loader.js +0 -243
  100. data/public/javascripts/ckeditor/_source/core/plugindefinition.js +0 -66
  101. data/public/javascripts/ckeditor/_source/core/plugins.js +0 -85
  102. data/public/javascripts/ckeditor/_source/core/resourcemanager.js +0 -238
  103. data/public/javascripts/ckeditor/_source/core/scriptloader.js +0 -200
  104. data/public/javascripts/ckeditor/_source/core/skins.js +0 -212
  105. data/public/javascripts/ckeditor/_source/core/themes.js +0 -19
  106. data/public/javascripts/ckeditor/_source/core/tools.js +0 -734
  107. data/public/javascripts/ckeditor/_source/core/ui.js +0 -116
  108. data/public/javascripts/ckeditor/_source/core/xml.js +0 -165
  109. data/public/javascripts/ckeditor/_source/lang/_languages.js +0 -83
  110. data/public/javascripts/ckeditor/_source/lang/_translationstatus.txt +0 -60
  111. data/public/javascripts/ckeditor/_source/lang/af.js +0 -758
  112. data/public/javascripts/ckeditor/_source/lang/ar.js +0 -758
  113. data/public/javascripts/ckeditor/_source/lang/bg.js +0 -758
  114. data/public/javascripts/ckeditor/_source/lang/bn.js +0 -758
  115. data/public/javascripts/ckeditor/_source/lang/bs.js +0 -758
  116. data/public/javascripts/ckeditor/_source/lang/ca.js +0 -758
  117. data/public/javascripts/ckeditor/_source/lang/cs.js +0 -758
  118. data/public/javascripts/ckeditor/_source/lang/cy.js +0 -758
  119. data/public/javascripts/ckeditor/_source/lang/da.js +0 -758
  120. data/public/javascripts/ckeditor/_source/lang/de.js +0 -758
  121. data/public/javascripts/ckeditor/_source/lang/el.js +0 -758
  122. data/public/javascripts/ckeditor/_source/lang/en-au.js +0 -758
  123. data/public/javascripts/ckeditor/_source/lang/en-ca.js +0 -758
  124. data/public/javascripts/ckeditor/_source/lang/en-gb.js +0 -758
  125. data/public/javascripts/ckeditor/_source/lang/en.js +0 -758
  126. data/public/javascripts/ckeditor/_source/lang/eo.js +0 -758
  127. data/public/javascripts/ckeditor/_source/lang/es.js +0 -758
  128. data/public/javascripts/ckeditor/_source/lang/et.js +0 -758
  129. data/public/javascripts/ckeditor/_source/lang/eu.js +0 -758
  130. data/public/javascripts/ckeditor/_source/lang/fa.js +0 -758
  131. data/public/javascripts/ckeditor/_source/lang/fi.js +0 -758
  132. data/public/javascripts/ckeditor/_source/lang/fo.js +0 -758
  133. data/public/javascripts/ckeditor/_source/lang/fr-ca.js +0 -758
  134. data/public/javascripts/ckeditor/_source/lang/fr.js +0 -758
  135. data/public/javascripts/ckeditor/_source/lang/gl.js +0 -758
  136. data/public/javascripts/ckeditor/_source/lang/gu.js +0 -758
  137. data/public/javascripts/ckeditor/_source/lang/he.js +0 -758
  138. data/public/javascripts/ckeditor/_source/lang/hi.js +0 -758
  139. data/public/javascripts/ckeditor/_source/lang/hr.js +0 -758
  140. data/public/javascripts/ckeditor/_source/lang/hu.js +0 -758
  141. data/public/javascripts/ckeditor/_source/lang/is.js +0 -758
  142. data/public/javascripts/ckeditor/_source/lang/it.js +0 -758
  143. data/public/javascripts/ckeditor/_source/lang/ja.js +0 -758
  144. data/public/javascripts/ckeditor/_source/lang/km.js +0 -758
  145. data/public/javascripts/ckeditor/_source/lang/ko.js +0 -758
  146. data/public/javascripts/ckeditor/_source/lang/lt.js +0 -758
  147. data/public/javascripts/ckeditor/_source/lang/lv.js +0 -758
  148. data/public/javascripts/ckeditor/_source/lang/mn.js +0 -758
  149. data/public/javascripts/ckeditor/_source/lang/ms.js +0 -758
  150. data/public/javascripts/ckeditor/_source/lang/nb.js +0 -758
  151. data/public/javascripts/ckeditor/_source/lang/nl.js +0 -758
  152. data/public/javascripts/ckeditor/_source/lang/no.js +0 -758
  153. data/public/javascripts/ckeditor/_source/lang/pl.js +0 -758
  154. data/public/javascripts/ckeditor/_source/lang/pt-br.js +0 -757
  155. data/public/javascripts/ckeditor/_source/lang/pt.js +0 -758
  156. data/public/javascripts/ckeditor/_source/lang/ro.js +0 -758
  157. data/public/javascripts/ckeditor/_source/lang/ru.js +0 -758
  158. data/public/javascripts/ckeditor/_source/lang/sk.js +0 -758
  159. data/public/javascripts/ckeditor/_source/lang/sl.js +0 -758
  160. data/public/javascripts/ckeditor/_source/lang/sr-latn.js +0 -758
  161. data/public/javascripts/ckeditor/_source/lang/sr.js +0 -758
  162. data/public/javascripts/ckeditor/_source/lang/sv.js +0 -758
  163. data/public/javascripts/ckeditor/_source/lang/th.js +0 -758
  164. data/public/javascripts/ckeditor/_source/lang/tr.js +0 -757
  165. data/public/javascripts/ckeditor/_source/lang/uk.js +0 -758
  166. data/public/javascripts/ckeditor/_source/lang/vi.js +0 -758
  167. data/public/javascripts/ckeditor/_source/lang/zh-cn.js +0 -758
  168. data/public/javascripts/ckeditor/_source/lang/zh.js +0 -758
  169. data/public/javascripts/ckeditor/_source/plugins/a11yhelp/dialogs/a11yhelp.js +0 -211
  170. data/public/javascripts/ckeditor/_source/plugins/a11yhelp/lang/en.js +0 -108
  171. data/public/javascripts/ckeditor/_source/plugins/a11yhelp/lang/he.js +0 -216
  172. data/public/javascripts/ckeditor/_source/plugins/a11yhelp/plugin.js +0 -46
  173. data/public/javascripts/ckeditor/_source/plugins/about/dialogs/about.js +0 -73
  174. data/public/javascripts/ckeditor/_source/plugins/about/dialogs/logo_ckeditor.png +0 -0
  175. data/public/javascripts/ckeditor/_source/plugins/about/plugin.js +0 -23
  176. data/public/javascripts/ckeditor/_source/plugins/ajax_save/plugin.js +0 -44
  177. data/public/javascripts/ckeditor/_source/plugins/attachment/dialogs/attachment.js +0 -384
  178. data/public/javascripts/ckeditor/_source/plugins/attachment/images/attachment.png +0 -0
  179. data/public/javascripts/ckeditor/_source/plugins/attachment/lang/en.js +0 -10
  180. data/public/javascripts/ckeditor/_source/plugins/attachment/lang/ru.js +0 -10
  181. data/public/javascripts/ckeditor/_source/plugins/attachment/lang/uk.js +0 -10
  182. data/public/javascripts/ckeditor/_source/plugins/attachment/plugin.js +0 -44
  183. data/public/javascripts/ckeditor/_source/plugins/autogrow/plugin.js +0 -86
  184. data/public/javascripts/ckeditor/_source/plugins/basicstyles/plugin.js +0 -101
  185. data/public/javascripts/ckeditor/_source/plugins/bidi/plugin.js +0 -259
  186. data/public/javascripts/ckeditor/_source/plugins/blockquote/plugin.js +0 -301
  187. data/public/javascripts/ckeditor/_source/plugins/button/plugin.js +0 -277
  188. data/public/javascripts/ckeditor/_source/plugins/clipboard/dialogs/paste.js +0 -205
  189. data/public/javascripts/ckeditor/_source/plugins/clipboard/plugin.js +0 -412
  190. data/public/javascripts/ckeditor/_source/plugins/colorbutton/plugin.js +0 -250
  191. data/public/javascripts/ckeditor/_source/plugins/colordialog/dialogs/colordialog.js +0 -336
  192. data/public/javascripts/ckeditor/_source/plugins/colordialog/plugin.js +0 -13
  193. data/public/javascripts/ckeditor/_source/plugins/contextmenu/plugin.js +0 -290
  194. data/public/javascripts/ckeditor/_source/plugins/dialog/dialogDefinition.js +0 -315
  195. data/public/javascripts/ckeditor/_source/plugins/dialog/plugin.js +0 -3015
  196. data/public/javascripts/ckeditor/_source/plugins/dialogadvtab/plugin.js +0 -213
  197. data/public/javascripts/ckeditor/_source/plugins/dialogui/plugin.js +0 -1523
  198. data/public/javascripts/ckeditor/_source/plugins/div/dialogs/div.js +0 -535
  199. data/public/javascripts/ckeditor/_source/plugins/div/plugin.js +0 -121
  200. data/public/javascripts/ckeditor/_source/plugins/domiterator/plugin.js +0 -356
  201. data/public/javascripts/ckeditor/_source/plugins/editingblock/plugin.js +0 -229
  202. data/public/javascripts/ckeditor/_source/plugins/elementspath/plugin.js +0 -206
  203. data/public/javascripts/ckeditor/_source/plugins/embed/dialogs/embed.js +0 -65
  204. data/public/javascripts/ckeditor/_source/plugins/embed/images/embed.png +0 -0
  205. data/public/javascripts/ckeditor/_source/plugins/embed/lang/en.js +0 -9
  206. data/public/javascripts/ckeditor/_source/plugins/embed/lang/ru.js +0 -9
  207. data/public/javascripts/ckeditor/_source/plugins/embed/lang/uk.js +0 -9
  208. data/public/javascripts/ckeditor/_source/plugins/embed/plugin.js +0 -44
  209. data/public/javascripts/ckeditor/_source/plugins/enterkey/plugin.js +0 -363
  210. data/public/javascripts/ckeditor/_source/plugins/entities/plugin.js +0 -226
  211. data/public/javascripts/ckeditor/_source/plugins/fakeobjects/plugin.js +0 -122
  212. data/public/javascripts/ckeditor/_source/plugins/filebrowser/plugin.js +0 -501
  213. data/public/javascripts/ckeditor/_source/plugins/find/dialogs/find.js +0 -890
  214. data/public/javascripts/ckeditor/_source/plugins/find/plugin.js +0 -46
  215. data/public/javascripts/ckeditor/_source/plugins/flash/dialogs/flash.js +0 -698
  216. data/public/javascripts/ckeditor/_source/plugins/flash/images/placeholder.png +0 -0
  217. data/public/javascripts/ckeditor/_source/plugins/flash/plugin.js +0 -168
  218. data/public/javascripts/ckeditor/_source/plugins/floatpanel/plugin.js +0 -402
  219. data/public/javascripts/ckeditor/_source/plugins/font/plugin.js +0 -234
  220. data/public/javascripts/ckeditor/_source/plugins/format/plugin.js +0 -194
  221. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/button.js +0 -135
  222. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/checkbox.js +0 -153
  223. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/form.js +0 -177
  224. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/hiddenfield.js +0 -98
  225. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/radio.js +0 -135
  226. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/select.js +0 -556
  227. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/textarea.js +0 -114
  228. data/public/javascripts/ckeditor/_source/plugins/forms/dialogs/textfield.js +0 -199
  229. data/public/javascripts/ckeditor/_source/plugins/forms/images/hiddenfield.gif +0 -0
  230. data/public/javascripts/ckeditor/_source/plugins/forms/plugin.js +0 -284
  231. data/public/javascripts/ckeditor/_source/plugins/horizontalrule/plugin.js +0 -36
  232. data/public/javascripts/ckeditor/_source/plugins/htmldataprocessor/plugin.js +0 -502
  233. data/public/javascripts/ckeditor/_source/plugins/htmlwriter/plugin.js +0 -319
  234. data/public/javascripts/ckeditor/_source/plugins/iframedialog/plugin.js +0 -136
  235. data/public/javascripts/ckeditor/_source/plugins/image/dialogs/image.js +0 -1396
  236. data/public/javascripts/ckeditor/_source/plugins/image/plugin.js +0 -81
  237. data/public/javascripts/ckeditor/_source/plugins/indent/plugin.js +0 -455
  238. data/public/javascripts/ckeditor/_source/plugins/justify/plugin.js +0 -221
  239. data/public/javascripts/ckeditor/_source/plugins/keystrokes/plugin.js +0 -225
  240. data/public/javascripts/ckeditor/_source/plugins/link/dialogs/anchor.js +0 -99
  241. data/public/javascripts/ckeditor/_source/plugins/link/dialogs/link.js +0 -1424
  242. data/public/javascripts/ckeditor/_source/plugins/link/images/anchor.gif +0 -0
  243. data/public/javascripts/ckeditor/_source/plugins/link/plugin.js +0 -238
  244. data/public/javascripts/ckeditor/_source/plugins/list/plugin.js +0 -710
  245. data/public/javascripts/ckeditor/_source/plugins/listblock/plugin.js +0 -257
  246. data/public/javascripts/ckeditor/_source/plugins/liststyle/dialogs/liststyle.js +0 -204
  247. data/public/javascripts/ckeditor/_source/plugins/liststyle/plugin.js +0 -66
  248. data/public/javascripts/ckeditor/_source/plugins/maximize/plugin.js +0 -350
  249. data/public/javascripts/ckeditor/_source/plugins/menu/plugin.js +0 -408
  250. data/public/javascripts/ckeditor/_source/plugins/menubutton/plugin.js +0 -94
  251. data/public/javascripts/ckeditor/_source/plugins/newpage/plugin.js +0 -53
  252. data/public/javascripts/ckeditor/_source/plugins/pagebreak/images/pagebreak.gif +0 -0
  253. data/public/javascripts/ckeditor/_source/plugins/pagebreak/plugin.js +0 -121
  254. data/public/javascripts/ckeditor/_source/plugins/panel/plugin.js +0 -399
  255. data/public/javascripts/ckeditor/_source/plugins/panelbutton/plugin.js +0 -147
  256. data/public/javascripts/ckeditor/_source/plugins/pastefromword/filter/default.js +0 -1170
  257. data/public/javascripts/ckeditor/_source/plugins/pastefromword/plugin.js +0 -122
  258. data/public/javascripts/ckeditor/_source/plugins/pastetext/dialogs/pastetext.js +0 -70
  259. data/public/javascripts/ckeditor/_source/plugins/pastetext/plugin.js +0 -145
  260. data/public/javascripts/ckeditor/_source/plugins/popup/plugin.js +0 -64
  261. data/public/javascripts/ckeditor/_source/plugins/preview/plugin.js +0 -108
  262. data/public/javascripts/ckeditor/_source/plugins/print/plugin.js +0 -41
  263. data/public/javascripts/ckeditor/_source/plugins/removeformat/plugin.js +0 -184
  264. data/public/javascripts/ckeditor/_source/plugins/resize/plugin.js +0 -157
  265. data/public/javascripts/ckeditor/_source/plugins/richcombo/plugin.js +0 -370
  266. data/public/javascripts/ckeditor/_source/plugins/save/plugin.js +0 -55
  267. data/public/javascripts/ckeditor/_source/plugins/scayt/dialogs/options.js +0 -534
  268. data/public/javascripts/ckeditor/_source/plugins/scayt/dialogs/toolbar.css +0 -71
  269. data/public/javascripts/ckeditor/_source/plugins/scayt/plugin.js +0 -945
  270. data/public/javascripts/ckeditor/_source/plugins/selection/plugin.js +0 -1375
  271. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_address.png +0 -0
  272. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_blockquote.png +0 -0
  273. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_div.png +0 -0
  274. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_h1.png +0 -0
  275. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_h2.png +0 -0
  276. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_h3.png +0 -0
  277. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_h4.png +0 -0
  278. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_h5.png +0 -0
  279. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_h6.png +0 -0
  280. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_p.png +0 -0
  281. data/public/javascripts/ckeditor/_source/plugins/showblocks/images/block_pre.png +0 -0
  282. data/public/javascripts/ckeditor/_source/plugins/showblocks/plugin.js +0 -155
  283. data/public/javascripts/ckeditor/_source/plugins/showborders/plugin.js +0 -201
  284. data/public/javascripts/ckeditor/_source/plugins/smiley/dialogs/smiley.js +0 -218
  285. data/public/javascripts/ckeditor/_source/plugins/smiley/images/angel_smile.gif +0 -0
  286. data/public/javascripts/ckeditor/_source/plugins/smiley/images/angry_smile.gif +0 -0
  287. data/public/javascripts/ckeditor/_source/plugins/smiley/images/broken_heart.gif +0 -0
  288. data/public/javascripts/ckeditor/_source/plugins/smiley/images/confused_smile.gif +0 -0
  289. data/public/javascripts/ckeditor/_source/plugins/smiley/images/cry_smile.gif +0 -0
  290. data/public/javascripts/ckeditor/_source/plugins/smiley/images/devil_smile.gif +0 -0
  291. data/public/javascripts/ckeditor/_source/plugins/smiley/images/embaressed_smile.gif +0 -0
  292. data/public/javascripts/ckeditor/_source/plugins/smiley/images/envelope.gif +0 -0
  293. data/public/javascripts/ckeditor/_source/plugins/smiley/images/heart.gif +0 -0
  294. data/public/javascripts/ckeditor/_source/plugins/smiley/images/kiss.gif +0 -0
  295. data/public/javascripts/ckeditor/_source/plugins/smiley/images/lightbulb.gif +0 -0
  296. data/public/javascripts/ckeditor/_source/plugins/smiley/images/omg_smile.gif +0 -0
  297. data/public/javascripts/ckeditor/_source/plugins/smiley/images/regular_smile.gif +0 -0
  298. data/public/javascripts/ckeditor/_source/plugins/smiley/images/sad_smile.gif +0 -0
  299. data/public/javascripts/ckeditor/_source/plugins/smiley/images/shades_smile.gif +0 -0
  300. data/public/javascripts/ckeditor/_source/plugins/smiley/images/teeth_smile.gif +0 -0
  301. data/public/javascripts/ckeditor/_source/plugins/smiley/images/thumbs_down.gif +0 -0
  302. data/public/javascripts/ckeditor/_source/plugins/smiley/images/thumbs_up.gif +0 -0
  303. data/public/javascripts/ckeditor/_source/plugins/smiley/images/tounge_smile.gif +0 -0
  304. data/public/javascripts/ckeditor/_source/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  305. data/public/javascripts/ckeditor/_source/plugins/smiley/images/wink_smile.gif +0 -0
  306. data/public/javascripts/ckeditor/_source/plugins/smiley/plugin.js +0 -94
  307. data/public/javascripts/ckeditor/_source/plugins/sourcearea/plugin.js +0 -207
  308. data/public/javascripts/ckeditor/_source/plugins/specialchar/dialogs/specialchar.js +0 -409
  309. data/public/javascripts/ckeditor/_source/plugins/specialchar/plugin.js +0 -29
  310. data/public/javascripts/ckeditor/_source/plugins/styles/plugin.js +0 -1479
  311. data/public/javascripts/ckeditor/_source/plugins/styles/styles/default.js +0 -88
  312. data/public/javascripts/ckeditor/_source/plugins/stylescombo/plugin.js +0 -206
  313. data/public/javascripts/ckeditor/_source/plugins/tab/plugin.js +0 -367
  314. data/public/javascripts/ckeditor/_source/plugins/table/dialogs/table.js +0 -672
  315. data/public/javascripts/ckeditor/_source/plugins/table/plugin.js +0 -78
  316. data/public/javascripts/ckeditor/_source/plugins/tableresize/plugin.js +0 -450
  317. data/public/javascripts/ckeditor/_source/plugins/tabletools/dialogs/tableCell.js +0 -533
  318. data/public/javascripts/ckeditor/_source/plugins/tabletools/plugin.js +0 -1120
  319. data/public/javascripts/ckeditor/_source/plugins/templates/dialogs/templates.js +0 -233
  320. data/public/javascripts/ckeditor/_source/plugins/templates/plugin.js +0 -99
  321. data/public/javascripts/ckeditor/_source/plugins/templates/templates/default.js +0 -94
  322. data/public/javascripts/ckeditor/_source/plugins/templates/templates/images/template1.gif +0 -0
  323. data/public/javascripts/ckeditor/_source/plugins/templates/templates/images/template2.gif +0 -0
  324. data/public/javascripts/ckeditor/_source/plugins/templates/templates/images/template3.gif +0 -0
  325. data/public/javascripts/ckeditor/_source/plugins/toolbar/plugin.js +0 -481
  326. data/public/javascripts/ckeditor/_source/plugins/uicolor/dialogs/uicolor.js +0 -205
  327. data/public/javascripts/ckeditor/_source/plugins/uicolor/lang/en.js +0 -15
  328. data/public/javascripts/ckeditor/_source/plugins/uicolor/lang/he.js +0 -15
  329. data/public/javascripts/ckeditor/_source/plugins/uicolor/plugin.js +0 -37
  330. data/public/javascripts/ckeditor/_source/plugins/uicolor/uicolor.gif +0 -0
  331. data/public/javascripts/ckeditor/_source/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  332. data/public/javascripts/ckeditor/_source/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  333. data/public/javascripts/ckeditor/_source/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  334. data/public/javascripts/ckeditor/_source/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  335. data/public/javascripts/ckeditor/_source/plugins/uicolor/yui/assets/yui.css +0 -15
  336. data/public/javascripts/ckeditor/_source/plugins/uicolor/yui/yui.js +0 -71
  337. data/public/javascripts/ckeditor/_source/plugins/undo/plugin.js +0 -554
  338. data/public/javascripts/ckeditor/_source/plugins/wsc/dialogs/ciframe.html +0 -49
  339. data/public/javascripts/ckeditor/_source/plugins/wsc/dialogs/tmpFrameset.html +0 -52
  340. data/public/javascripts/ckeditor/_source/plugins/wsc/dialogs/wsc.css +0 -82
  341. data/public/javascripts/ckeditor/_source/plugins/wsc/dialogs/wsc.js +0 -176
  342. data/public/javascripts/ckeditor/_source/plugins/wsc/plugin.js +0 -33
  343. data/public/javascripts/ckeditor/_source/plugins/wysiwygarea/plugin.js +0 -1146
  344. data/public/javascripts/ckeditor/_source/skins/kama/dialog.css +0 -882
  345. data/public/javascripts/ckeditor/_source/skins/kama/editor.css +0 -25
  346. data/public/javascripts/ckeditor/_source/skins/kama/elementspath.css +0 -73
  347. data/public/javascripts/ckeditor/_source/skins/kama/icons.css +0 -357
  348. data/public/javascripts/ckeditor/_source/skins/kama/icons.png +0 -0
  349. data/public/javascripts/ckeditor/_source/skins/kama/icons_rtl.png +0 -0
  350. data/public/javascripts/ckeditor/_source/skins/kama/images/dialog_sides.gif +0 -0
  351. data/public/javascripts/ckeditor/_source/skins/kama/images/dialog_sides.png +0 -0
  352. data/public/javascripts/ckeditor/_source/skins/kama/images/dialog_sides_rtl.png +0 -0
  353. data/public/javascripts/ckeditor/_source/skins/kama/images/mini.gif +0 -0
  354. data/public/javascripts/ckeditor/_source/skins/kama/images/noimage.png +0 -0
  355. data/public/javascripts/ckeditor/_source/skins/kama/images/sprites.png +0 -0
  356. data/public/javascripts/ckeditor/_source/skins/kama/images/sprites_ie6.png +0 -0
  357. data/public/javascripts/ckeditor/_source/skins/kama/images/toolbar_start.gif +0 -0
  358. data/public/javascripts/ckeditor/_source/skins/kama/mainui.css +0 -195
  359. data/public/javascripts/ckeditor/_source/skins/kama/menu.css +0 -216
  360. data/public/javascripts/ckeditor/_source/skins/kama/panel.css +0 -217
  361. data/public/javascripts/ckeditor/_source/skins/kama/presets.css +0 -49
  362. data/public/javascripts/ckeditor/_source/skins/kama/reset.css +0 -84
  363. data/public/javascripts/ckeditor/_source/skins/kama/richcombo.css +0 -277
  364. data/public/javascripts/ckeditor/_source/skins/kama/skin.js +0 -268
  365. data/public/javascripts/ckeditor/_source/skins/kama/templates.css +0 -88
  366. data/public/javascripts/ckeditor/_source/skins/kama/toolbar.css +0 -409
  367. data/public/javascripts/ckeditor/_source/skins/office2003/dialog.css +0 -785
  368. data/public/javascripts/ckeditor/_source/skins/office2003/editor.css +0 -25
  369. data/public/javascripts/ckeditor/_source/skins/office2003/elementspath.css +0 -74
  370. data/public/javascripts/ckeditor/_source/skins/office2003/icons.css +0 -354
  371. data/public/javascripts/ckeditor/_source/skins/office2003/icons.png +0 -0
  372. data/public/javascripts/ckeditor/_source/skins/office2003/icons_rtl.png +0 -0
  373. data/public/javascripts/ckeditor/_source/skins/office2003/images/dialog_sides.gif +0 -0
  374. data/public/javascripts/ckeditor/_source/skins/office2003/images/dialog_sides.png +0 -0
  375. data/public/javascripts/ckeditor/_source/skins/office2003/images/dialog_sides_rtl.png +0 -0
  376. data/public/javascripts/ckeditor/_source/skins/office2003/images/mini.gif +0 -0
  377. data/public/javascripts/ckeditor/_source/skins/office2003/images/noimage.png +0 -0
  378. data/public/javascripts/ckeditor/_source/skins/office2003/images/sprites.png +0 -0
  379. data/public/javascripts/ckeditor/_source/skins/office2003/images/sprites_ie6.png +0 -0
  380. data/public/javascripts/ckeditor/_source/skins/office2003/mainui.css +0 -145
  381. data/public/javascripts/ckeditor/_source/skins/office2003/menu.css +0 -213
  382. data/public/javascripts/ckeditor/_source/skins/office2003/panel.css +0 -212
  383. data/public/javascripts/ckeditor/_source/skins/office2003/presets.css +0 -49
  384. data/public/javascripts/ckeditor/_source/skins/office2003/reset.css +0 -84
  385. data/public/javascripts/ckeditor/_source/skins/office2003/richcombo.css +0 -297
  386. data/public/javascripts/ckeditor/_source/skins/office2003/skin.js +0 -81
  387. data/public/javascripts/ckeditor/_source/skins/office2003/templates.css +0 -87
  388. data/public/javascripts/ckeditor/_source/skins/office2003/toolbar.css +0 -470
  389. data/public/javascripts/ckeditor/_source/skins/v2/dialog.css +0 -800
  390. data/public/javascripts/ckeditor/_source/skins/v2/editor.css +0 -25
  391. data/public/javascripts/ckeditor/_source/skins/v2/elementspath.css +0 -74
  392. data/public/javascripts/ckeditor/_source/skins/v2/icons.css +0 -354
  393. data/public/javascripts/ckeditor/_source/skins/v2/icons.png +0 -0
  394. data/public/javascripts/ckeditor/_source/skins/v2/icons_rtl.png +0 -0
  395. data/public/javascripts/ckeditor/_source/skins/v2/images/dialog_sides.gif +0 -0
  396. data/public/javascripts/ckeditor/_source/skins/v2/images/dialog_sides.png +0 -0
  397. data/public/javascripts/ckeditor/_source/skins/v2/images/dialog_sides_rtl.png +0 -0
  398. data/public/javascripts/ckeditor/_source/skins/v2/images/mini.gif +0 -0
  399. data/public/javascripts/ckeditor/_source/skins/v2/images/noimage.png +0 -0
  400. data/public/javascripts/ckeditor/_source/skins/v2/images/sprites.png +0 -0
  401. data/public/javascripts/ckeditor/_source/skins/v2/images/sprites_ie6.png +0 -0
  402. data/public/javascripts/ckeditor/_source/skins/v2/images/toolbar_start.gif +0 -0
  403. data/public/javascripts/ckeditor/_source/skins/v2/mainui.css +0 -154
  404. data/public/javascripts/ckeditor/_source/skins/v2/menu.css +0 -215
  405. data/public/javascripts/ckeditor/_source/skins/v2/panel.css +0 -212
  406. data/public/javascripts/ckeditor/_source/skins/v2/presets.css +0 -50
  407. data/public/javascripts/ckeditor/_source/skins/v2/reset.css +0 -84
  408. data/public/javascripts/ckeditor/_source/skins/v2/richcombo.css +0 -297
  409. data/public/javascripts/ckeditor/_source/skins/v2/skin.js +0 -77
  410. data/public/javascripts/ckeditor/_source/skins/v2/templates.css +0 -87
  411. data/public/javascripts/ckeditor/_source/skins/v2/toolbar.css +0 -423
  412. data/public/javascripts/ckeditor/_source/themes/default/theme.js +0 -361
  413. data/public/javascripts/ckeditor/adapters/jquery.js +0 -6
  414. data/public/javascripts/ckeditor/ckeditor.js +0 -137
  415. data/public/javascripts/ckeditor/ckeditor.pack +0 -211
  416. data/public/javascripts/ckeditor/ckeditor_basic.js +0 -8
  417. data/public/javascripts/ckeditor/ckeditor_basic_source.js +0 -20
  418. data/public/javascripts/ckeditor/ckeditor_source.js +0 -25
  419. data/public/javascripts/ckeditor/config.js +0 -43
  420. data/public/javascripts/ckeditor/contents.css +0 -39
  421. data/public/javascripts/ckeditor/css/ckfinder.css +0 -299
  422. data/public/javascripts/ckeditor/css/fck_dialog.css +0 -119
  423. data/public/javascripts/ckeditor/css/fck_editor.css +0 -448
  424. data/public/javascripts/ckeditor/css/swfupload.css +0 -94
  425. data/public/javascripts/ckeditor/images/add.gif +0 -0
  426. data/public/javascripts/ckeditor/images/cancelbutton.gif +0 -0
  427. data/public/javascripts/ckeditor/images/ckfnothumb.gif +0 -0
  428. data/public/javascripts/ckeditor/images/doc.gif +0 -0
  429. data/public/javascripts/ckeditor/images/mp3.gif +0 -0
  430. data/public/javascripts/ckeditor/images/pdf.gif +0 -0
  431. data/public/javascripts/ckeditor/images/rar.gif +0 -0
  432. data/public/javascripts/ckeditor/images/refresh.gif +0 -0
  433. data/public/javascripts/ckeditor/images/select_files.png +0 -0
  434. data/public/javascripts/ckeditor/images/spacer.gif +0 -0
  435. data/public/javascripts/ckeditor/images/swf.gif +0 -0
  436. data/public/javascripts/ckeditor/images/toolbar.start.gif +0 -0
  437. data/public/javascripts/ckeditor/images/xls.gif +0 -0
  438. data/public/javascripts/ckeditor/lang/_languages.js +0 -6
  439. data/public/javascripts/ckeditor/lang/_translationstatus.txt +0 -60
  440. data/public/javascripts/ckeditor/lang/af.js +0 -6
  441. data/public/javascripts/ckeditor/lang/ar.js +0 -6
  442. data/public/javascripts/ckeditor/lang/bg.js +0 -6
  443. data/public/javascripts/ckeditor/lang/bn.js +0 -6
  444. data/public/javascripts/ckeditor/lang/bs.js +0 -6
  445. data/public/javascripts/ckeditor/lang/ca.js +0 -6
  446. data/public/javascripts/ckeditor/lang/cs.js +0 -6
  447. data/public/javascripts/ckeditor/lang/cy.js +0 -6
  448. data/public/javascripts/ckeditor/lang/da.js +0 -6
  449. data/public/javascripts/ckeditor/lang/de.js +0 -6
  450. data/public/javascripts/ckeditor/lang/el.js +0 -6
  451. data/public/javascripts/ckeditor/lang/en-au.js +0 -6
  452. data/public/javascripts/ckeditor/lang/en-ca.js +0 -6
  453. data/public/javascripts/ckeditor/lang/en-gb.js +0 -6
  454. data/public/javascripts/ckeditor/lang/en.js +0 -6
  455. data/public/javascripts/ckeditor/lang/eo.js +0 -6
  456. data/public/javascripts/ckeditor/lang/es.js +0 -6
  457. data/public/javascripts/ckeditor/lang/et.js +0 -6
  458. data/public/javascripts/ckeditor/lang/eu.js +0 -6
  459. data/public/javascripts/ckeditor/lang/fa.js +0 -6
  460. data/public/javascripts/ckeditor/lang/fi.js +0 -6
  461. data/public/javascripts/ckeditor/lang/fo.js +0 -6
  462. data/public/javascripts/ckeditor/lang/fr-ca.js +0 -6
  463. data/public/javascripts/ckeditor/lang/fr.js +0 -6
  464. data/public/javascripts/ckeditor/lang/gl.js +0 -6
  465. data/public/javascripts/ckeditor/lang/gu.js +0 -6
  466. data/public/javascripts/ckeditor/lang/he.js +0 -6
  467. data/public/javascripts/ckeditor/lang/hi.js +0 -6
  468. data/public/javascripts/ckeditor/lang/hr.js +0 -6
  469. data/public/javascripts/ckeditor/lang/hu.js +0 -6
  470. data/public/javascripts/ckeditor/lang/is.js +0 -6
  471. data/public/javascripts/ckeditor/lang/it.js +0 -6
  472. data/public/javascripts/ckeditor/lang/ja.js +0 -6
  473. data/public/javascripts/ckeditor/lang/km.js +0 -6
  474. data/public/javascripts/ckeditor/lang/ko.js +0 -6
  475. data/public/javascripts/ckeditor/lang/lt.js +0 -6
  476. data/public/javascripts/ckeditor/lang/lv.js +0 -6
  477. data/public/javascripts/ckeditor/lang/mn.js +0 -6
  478. data/public/javascripts/ckeditor/lang/ms.js +0 -6
  479. data/public/javascripts/ckeditor/lang/nb.js +0 -6
  480. data/public/javascripts/ckeditor/lang/nl.js +0 -6
  481. data/public/javascripts/ckeditor/lang/no.js +0 -6
  482. data/public/javascripts/ckeditor/lang/pl.js +0 -6
  483. data/public/javascripts/ckeditor/lang/pt-br.js +0 -6
  484. data/public/javascripts/ckeditor/lang/pt.js +0 -6
  485. data/public/javascripts/ckeditor/lang/ro.js +0 -6
  486. data/public/javascripts/ckeditor/lang/ru.js +0 -6
  487. data/public/javascripts/ckeditor/lang/sk.js +0 -6
  488. data/public/javascripts/ckeditor/lang/sl.js +0 -6
  489. data/public/javascripts/ckeditor/lang/sr-latn.js +0 -6
  490. data/public/javascripts/ckeditor/lang/sr.js +0 -6
  491. data/public/javascripts/ckeditor/lang/sv.js +0 -6
  492. data/public/javascripts/ckeditor/lang/th.js +0 -6
  493. data/public/javascripts/ckeditor/lang/tr.js +0 -6
  494. data/public/javascripts/ckeditor/lang/uk.js +0 -6
  495. data/public/javascripts/ckeditor/lang/vi.js +0 -6
  496. data/public/javascripts/ckeditor/lang/zh-cn.js +0 -6
  497. data/public/javascripts/ckeditor/lang/zh.js +0 -6
  498. data/public/javascripts/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +0 -7
  499. data/public/javascripts/ckeditor/plugins/a11yhelp/lang/en.js +0 -6
  500. data/public/javascripts/ckeditor/plugins/a11yhelp/lang/he.js +0 -6
  501. data/public/javascripts/ckeditor/plugins/about/dialogs/about.js +0 -6
  502. data/public/javascripts/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  503. data/public/javascripts/ckeditor/plugins/ajax_save/plugin.js +0 -1
  504. data/public/javascripts/ckeditor/plugins/attachment/dialogs/attachment.js +0 -1
  505. data/public/javascripts/ckeditor/plugins/attachment/images/attachment.png +0 -0
  506. data/public/javascripts/ckeditor/plugins/attachment/lang/en.js +0 -10
  507. data/public/javascripts/ckeditor/plugins/attachment/lang/ru.js +0 -10
  508. data/public/javascripts/ckeditor/plugins/attachment/lang/uk.js +0 -10
  509. data/public/javascripts/ckeditor/plugins/attachment/plugin.js +0 -1
  510. data/public/javascripts/ckeditor/plugins/autogrow/plugin.js +0 -6
  511. data/public/javascripts/ckeditor/plugins/clipboard/dialogs/paste.js +0 -7
  512. data/public/javascripts/ckeditor/plugins/colordialog/dialogs/colordialog.js +0 -7
  513. data/public/javascripts/ckeditor/plugins/dialog/dialogDefinition.js +0 -4
  514. data/public/javascripts/ckeditor/plugins/div/dialogs/div.js +0 -8
  515. data/public/javascripts/ckeditor/plugins/embed/dialogs/embed.js +0 -1
  516. data/public/javascripts/ckeditor/plugins/embed/images/embed.png +0 -0
  517. data/public/javascripts/ckeditor/plugins/embed/lang/en.js +0 -9
  518. data/public/javascripts/ckeditor/plugins/embed/lang/ru.js +0 -9
  519. data/public/javascripts/ckeditor/plugins/embed/lang/uk.js +0 -9
  520. data/public/javascripts/ckeditor/plugins/embed/plugin.js +0 -1
  521. data/public/javascripts/ckeditor/plugins/find/dialogs/find.js +0 -9
  522. data/public/javascripts/ckeditor/plugins/flash/dialogs/flash.js +0 -9
  523. data/public/javascripts/ckeditor/plugins/flash/images/placeholder.png +0 -0
  524. data/public/javascripts/ckeditor/plugins/forms/dialogs/button.js +0 -6
  525. data/public/javascripts/ckeditor/plugins/forms/dialogs/checkbox.js +0 -6
  526. data/public/javascripts/ckeditor/plugins/forms/dialogs/form.js +0 -6
  527. data/public/javascripts/ckeditor/plugins/forms/dialogs/hiddenfield.js +0 -6
  528. data/public/javascripts/ckeditor/plugins/forms/dialogs/radio.js +0 -6
  529. data/public/javascripts/ckeditor/plugins/forms/dialogs/select.js +0 -9
  530. data/public/javascripts/ckeditor/plugins/forms/dialogs/textarea.js +0 -6
  531. data/public/javascripts/ckeditor/plugins/forms/dialogs/textfield.js +0 -7
  532. data/public/javascripts/ckeditor/plugins/forms/images/hiddenfield.gif +0 -0
  533. data/public/javascripts/ckeditor/plugins/iframedialog/plugin.js +0 -6
  534. data/public/javascripts/ckeditor/plugins/image/dialogs/image.js +0 -13
  535. data/public/javascripts/ckeditor/plugins/link/dialogs/anchor.js +0 -6
  536. data/public/javascripts/ckeditor/plugins/link/dialogs/link.js +0 -11
  537. data/public/javascripts/ckeditor/plugins/link/images/anchor.gif +0 -0
  538. data/public/javascripts/ckeditor/plugins/liststyle/dialogs/liststyle.js +0 -6
  539. data/public/javascripts/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
  540. data/public/javascripts/ckeditor/plugins/pastefromword/filter/default.js +0 -10
  541. data/public/javascripts/ckeditor/plugins/pastetext/dialogs/pastetext.js +0 -6
  542. data/public/javascripts/ckeditor/plugins/scayt/dialogs/options.js +0 -8
  543. data/public/javascripts/ckeditor/plugins/scayt/dialogs/toolbar.css +0 -6
  544. data/public/javascripts/ckeditor/plugins/showblocks/images/block_address.png +0 -0
  545. data/public/javascripts/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
  546. data/public/javascripts/ckeditor/plugins/showblocks/images/block_div.png +0 -0
  547. data/public/javascripts/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
  548. data/public/javascripts/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
  549. data/public/javascripts/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
  550. data/public/javascripts/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
  551. data/public/javascripts/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
  552. data/public/javascripts/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
  553. data/public/javascripts/ckeditor/plugins/showblocks/images/block_p.png +0 -0
  554. data/public/javascripts/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
  555. data/public/javascripts/ckeditor/plugins/smiley/dialogs/smiley.js +0 -7
  556. data/public/javascripts/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
  557. data/public/javascripts/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
  558. data/public/javascripts/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
  559. data/public/javascripts/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
  560. data/public/javascripts/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
  561. data/public/javascripts/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
  562. data/public/javascripts/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
  563. data/public/javascripts/ckeditor/plugins/smiley/images/envelope.gif +0 -0
  564. data/public/javascripts/ckeditor/plugins/smiley/images/heart.gif +0 -0
  565. data/public/javascripts/ckeditor/plugins/smiley/images/kiss.gif +0 -0
  566. data/public/javascripts/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
  567. data/public/javascripts/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
  568. data/public/javascripts/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
  569. data/public/javascripts/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
  570. data/public/javascripts/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
  571. data/public/javascripts/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
  572. data/public/javascripts/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
  573. data/public/javascripts/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
  574. data/public/javascripts/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
  575. data/public/javascripts/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  576. data/public/javascripts/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
  577. data/public/javascripts/ckeditor/plugins/specialchar/dialogs/specialchar.js +0 -7
  578. data/public/javascripts/ckeditor/plugins/styles/styles/default.js +0 -6
  579. data/public/javascripts/ckeditor/plugins/table/dialogs/table.js +0 -9
  580. data/public/javascripts/ckeditor/plugins/tableresize/plugin.js +0 -7
  581. data/public/javascripts/ckeditor/plugins/tabletools/dialogs/tableCell.js +0 -8
  582. data/public/javascripts/ckeditor/plugins/templates/dialogs/templates.js +0 -7
  583. data/public/javascripts/ckeditor/plugins/templates/templates/default.js +0 -6
  584. data/public/javascripts/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
  585. data/public/javascripts/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
  586. data/public/javascripts/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
  587. data/public/javascripts/ckeditor/plugins/uicolor/dialogs/uicolor.js +0 -7
  588. data/public/javascripts/ckeditor/plugins/uicolor/lang/en.js +0 -6
  589. data/public/javascripts/ckeditor/plugins/uicolor/lang/he.js +0 -6
  590. data/public/javascripts/ckeditor/plugins/uicolor/plugin.js +0 -6
  591. data/public/javascripts/ckeditor/plugins/uicolor/uicolor.gif +0 -0
  592. data/public/javascripts/ckeditor/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  593. data/public/javascripts/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  594. data/public/javascripts/ckeditor/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  595. data/public/javascripts/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  596. data/public/javascripts/ckeditor/plugins/uicolor/yui/assets/yui.css +0 -6
  597. data/public/javascripts/ckeditor/plugins/uicolor/yui/yui.js +0 -76
  598. data/public/javascripts/ckeditor/plugins/wsc/dialogs/ciframe.html +0 -49
  599. data/public/javascripts/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +0 -52
  600. data/public/javascripts/ckeditor/plugins/wsc/dialogs/wsc.css +0 -6
  601. data/public/javascripts/ckeditor/plugins/wsc/dialogs/wsc.js +0 -7
  602. data/public/javascripts/ckeditor/skins/kama/dialog.css +0 -9
  603. data/public/javascripts/ckeditor/skins/kama/editor.css +0 -12
  604. data/public/javascripts/ckeditor/skins/kama/icons.png +0 -0
  605. data/public/javascripts/ckeditor/skins/kama/icons_rtl.png +0 -0
  606. data/public/javascripts/ckeditor/skins/kama/images/dialog_sides.gif +0 -0
  607. data/public/javascripts/ckeditor/skins/kama/images/dialog_sides.png +0 -0
  608. data/public/javascripts/ckeditor/skins/kama/images/dialog_sides_rtl.png +0 -0
  609. data/public/javascripts/ckeditor/skins/kama/images/mini.gif +0 -0
  610. data/public/javascripts/ckeditor/skins/kama/images/noimage.png +0 -0
  611. data/public/javascripts/ckeditor/skins/kama/images/sprites.png +0 -0
  612. data/public/javascripts/ckeditor/skins/kama/images/sprites_ie6.png +0 -0
  613. data/public/javascripts/ckeditor/skins/kama/images/toolbar_start.gif +0 -0
  614. data/public/javascripts/ckeditor/skins/kama/skin.js +0 -7
  615. data/public/javascripts/ckeditor/skins/kama/templates.css +0 -6
  616. data/public/javascripts/ckeditor/skins/office2003/dialog.css +0 -9
  617. data/public/javascripts/ckeditor/skins/office2003/editor.css +0 -13
  618. data/public/javascripts/ckeditor/skins/office2003/icons.png +0 -0
  619. data/public/javascripts/ckeditor/skins/office2003/icons_rtl.png +0 -0
  620. data/public/javascripts/ckeditor/skins/office2003/images/dialog_sides.gif +0 -0
  621. data/public/javascripts/ckeditor/skins/office2003/images/dialog_sides.png +0 -0
  622. data/public/javascripts/ckeditor/skins/office2003/images/dialog_sides_rtl.png +0 -0
  623. data/public/javascripts/ckeditor/skins/office2003/images/mini.gif +0 -0
  624. data/public/javascripts/ckeditor/skins/office2003/images/noimage.png +0 -0
  625. data/public/javascripts/ckeditor/skins/office2003/images/sprites.png +0 -0
  626. data/public/javascripts/ckeditor/skins/office2003/images/sprites_ie6.png +0 -0
  627. data/public/javascripts/ckeditor/skins/office2003/skin.js +0 -6
  628. data/public/javascripts/ckeditor/skins/office2003/templates.css +0 -6
  629. data/public/javascripts/ckeditor/skins/v2/dialog.css +0 -9
  630. data/public/javascripts/ckeditor/skins/v2/editor.css +0 -12
  631. data/public/javascripts/ckeditor/skins/v2/icons.png +0 -0
  632. data/public/javascripts/ckeditor/skins/v2/icons_rtl.png +0 -0
  633. data/public/javascripts/ckeditor/skins/v2/images/dialog_sides.gif +0 -0
  634. data/public/javascripts/ckeditor/skins/v2/images/dialog_sides.png +0 -0
  635. data/public/javascripts/ckeditor/skins/v2/images/dialog_sides_rtl.png +0 -0
  636. data/public/javascripts/ckeditor/skins/v2/images/mini.gif +0 -0
  637. data/public/javascripts/ckeditor/skins/v2/images/noimage.png +0 -0
  638. data/public/javascripts/ckeditor/skins/v2/images/sprites.png +0 -0
  639. data/public/javascripts/ckeditor/skins/v2/images/sprites_ie6.png +0 -0
  640. data/public/javascripts/ckeditor/skins/v2/images/toolbar_start.gif +0 -0
  641. data/public/javascripts/ckeditor/skins/v2/skin.js +0 -6
  642. data/public/javascripts/ckeditor/skins/v2/templates.css +0 -6
  643. data/public/javascripts/ckeditor/swfupload/fileprogress.js +0 -275
  644. data/public/javascripts/ckeditor/swfupload/handlers.js +0 -170
  645. data/public/javascripts/ckeditor/swfupload/mootools-1.2.3-core-yc.js +0 -356
  646. data/public/javascripts/ckeditor/swfupload/querystring.js +0 -40
  647. data/public/javascripts/ckeditor/swfupload/swfupload.js +0 -1
  648. data/public/javascripts/ckeditor/swfupload/swfupload.queue.js +0 -1
  649. data/public/javascripts/ckeditor/swfupload/swfupload.swf +0 -0
  650. data/public/javascripts/ckeditor/swfupload/swfupload.swfobject.js +0 -111
  651. data/public/javascripts/ckeditor/themes/default/theme.js +0 -8
  652. data/public/javascripts/controls.js +0 -62
  653. data/public/javascripts/dragdrop.js +0 -66
  654. data/public/javascripts/effects.js +0 -38
  655. data/public/javascripts/prototype.js +0 -541
  656. data/public/javascripts/rails.js +0 -22
  657. data/public/stylesheets/core_ie.css +0 -52
  658. data/public/stylesheets/csshover3.htc +0 -14
@@ -1,1479 +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
- CKEDITOR.plugins.add( 'styles',
7
- {
8
- requires : [ 'selection' ]
9
- });
10
-
11
- /**
12
- * Registers a function to be called whenever a style changes its state in the
13
- * editing area. The current state is passed to the function. The possible
14
- * states are {@link CKEDITOR.TRISTATE_ON} and {@link CKEDITOR.TRISTATE_OFF}.
15
- * @param {CKEDITOR.style} The style to be watched.
16
- * @param {Function} The function to be called when the style state changes.
17
- * @example
18
- * // Create a style object for the <b> element.
19
- * var style = new CKEDITOR.style( { element : 'b' } );
20
- * var editor = CKEDITOR.instances.editor1;
21
- * editor.attachStyleStateChange( style, function( state )
22
- * {
23
- * if ( state == CKEDITOR.TRISTATE_ON )
24
- * alert( 'The current state for the B element is ON' );
25
- * else
26
- * alert( 'The current state for the B element is OFF' );
27
- * });
28
- */
29
- CKEDITOR.editor.prototype.attachStyleStateChange = function( style, callback )
30
- {
31
- // Try to get the list of attached callbacks.
32
- var styleStateChangeCallbacks = this._.styleStateChangeCallbacks;
33
-
34
- // If it doesn't exist, it means this is the first call. So, let's create
35
- // all the structure to manage the style checks and the callback calls.
36
- if ( !styleStateChangeCallbacks )
37
- {
38
- // Create the callbacks array.
39
- styleStateChangeCallbacks = this._.styleStateChangeCallbacks = [];
40
-
41
- // Attach to the selectionChange event, so we can check the styles at
42
- // that point.
43
- this.on( 'selectionChange', function( ev )
44
- {
45
- // Loop throw all registered callbacks.
46
- for ( var i = 0 ; i < styleStateChangeCallbacks.length ; i++ )
47
- {
48
- var callback = styleStateChangeCallbacks[ i ];
49
-
50
- // Check the current state for the style defined for that
51
- // callback.
52
- var currentState = callback.style.checkActive( ev.data.path ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF;
53
-
54
- // If the state changed since the last check.
55
- if ( callback.state !== currentState )
56
- {
57
- // Call the callback function, passing the current
58
- // state to it.
59
- callback.fn.call( this, currentState );
60
-
61
- // Save the current state, so it can be compared next
62
- // time.
63
- callback.state = currentState;
64
- }
65
- }
66
- });
67
- }
68
-
69
- // Save the callback info, so it can be checked on the next occurrence of
70
- // selectionChange.
71
- styleStateChangeCallbacks.push( { style : style, fn : callback } );
72
- };
73
-
74
- CKEDITOR.STYLE_BLOCK = 1;
75
- CKEDITOR.STYLE_INLINE = 2;
76
- CKEDITOR.STYLE_OBJECT = 3;
77
-
78
- (function()
79
- {
80
- var blockElements = { address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 };
81
- var objectElements = { a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1};
82
-
83
- var semicolonFixRegex = /\s*(?:;\s*|$)/;
84
-
85
- CKEDITOR.style = function( styleDefinition, variablesValues )
86
- {
87
- if ( variablesValues )
88
- {
89
- styleDefinition = CKEDITOR.tools.clone( styleDefinition );
90
-
91
- replaceVariables( styleDefinition.attributes, variablesValues );
92
- replaceVariables( styleDefinition.styles, variablesValues );
93
- }
94
-
95
- var element = this.element = ( styleDefinition.element || '*' ).toLowerCase();
96
-
97
- this.type =
98
- ( element == '#' || blockElements[ element ] ) ?
99
- CKEDITOR.STYLE_BLOCK
100
- : objectElements[ element ] ?
101
- CKEDITOR.STYLE_OBJECT
102
- :
103
- CKEDITOR.STYLE_INLINE;
104
-
105
- this._ =
106
- {
107
- definition : styleDefinition
108
- };
109
- };
110
-
111
- CKEDITOR.style.prototype =
112
- {
113
- apply : function( document )
114
- {
115
- applyStyle.call( this, document, false );
116
- },
117
-
118
- remove : function( document )
119
- {
120
- applyStyle.call( this, document, true );
121
- },
122
-
123
- applyToRange : function( range )
124
- {
125
- return ( this.applyToRange =
126
- this.type == CKEDITOR.STYLE_INLINE ?
127
- applyInlineStyle
128
- : this.type == CKEDITOR.STYLE_BLOCK ?
129
- applyBlockStyle
130
- : this.type == CKEDITOR.STYLE_OBJECT ?
131
- applyObjectStyle
132
- : null ).call( this, range );
133
- },
134
-
135
- removeFromRange : function( range )
136
- {
137
- return ( this.removeFromRange =
138
- this.type == CKEDITOR.STYLE_INLINE ?
139
- removeInlineStyle
140
- : this.type == CKEDITOR.STYLE_OBJECT ?
141
- removeObjectStyle
142
- : null ).call( this, range );
143
- },
144
-
145
- applyToObject : function( element )
146
- {
147
- setupElement( element, this );
148
- },
149
-
150
- /**
151
- * Get the style state inside an element path. Returns "true" if the
152
- * element is active in the path.
153
- */
154
- checkActive : function( elementPath )
155
- {
156
- switch ( this.type )
157
- {
158
- case CKEDITOR.STYLE_BLOCK :
159
- return this.checkElementRemovable( elementPath.block || elementPath.blockLimit, true );
160
-
161
- case CKEDITOR.STYLE_OBJECT :
162
- case CKEDITOR.STYLE_INLINE :
163
-
164
- var elements = elementPath.elements;
165
-
166
- for ( var i = 0, element ; i < elements.length ; i++ )
167
- {
168
- element = elements[ i ];
169
-
170
- if ( this.type == CKEDITOR.STYLE_INLINE
171
- && ( element == elementPath.block || element == elementPath.blockLimit ) )
172
- continue;
173
-
174
- if( this.type == CKEDITOR.STYLE_OBJECT
175
- && !( element.getName() in objectElements ) )
176
- continue;
177
-
178
- if ( this.checkElementRemovable( element, true ) )
179
- return true;
180
- }
181
- }
182
- return false;
183
- },
184
-
185
- /**
186
- * Whether this style can be applied at the element path.
187
- * @param elementPath
188
- */
189
- checkApplicable : function( elementPath )
190
- {
191
- switch ( this.type )
192
- {
193
- case CKEDITOR.STYLE_INLINE :
194
- case CKEDITOR.STYLE_BLOCK :
195
- break;
196
-
197
- case CKEDITOR.STYLE_OBJECT :
198
- return elementPath.lastElement.getAscendant( this.element, true );
199
- }
200
-
201
- return true;
202
- },
203
-
204
- // Checks if an element, or any of its attributes, is removable by the
205
- // current style definition.
206
- checkElementRemovable : function( element, fullMatch )
207
- {
208
- if ( !element )
209
- return false;
210
-
211
- var def = this._.definition,
212
- attribs;
213
-
214
- // If the element name is the same as the style name.
215
- if ( element.getName() == this.element )
216
- {
217
- // If no attributes are defined in the element.
218
- if ( !fullMatch && !element.hasAttributes() )
219
- return true;
220
-
221
- attribs = getAttributesForComparison( def );
222
-
223
- if ( attribs._length )
224
- {
225
- for ( var attName in attribs )
226
- {
227
- if ( attName == '_length' )
228
- continue;
229
-
230
- var elementAttr = element.getAttribute( attName ) || '';
231
-
232
- // Special treatment for 'style' attribute is required.
233
- if ( attName == 'style' ?
234
- compareCssText( attribs[ attName ], normalizeCssText( elementAttr, false ) )
235
- : attribs[ attName ] == elementAttr )
236
- {
237
- if ( !fullMatch )
238
- return true;
239
- }
240
- else if ( fullMatch )
241
- return false;
242
- }
243
- if ( fullMatch )
244
- return true;
245
- }
246
- else
247
- return true;
248
- }
249
-
250
- // Check if the element can be somehow overriden.
251
- var override = getOverrides( this )[ element.getName() ] ;
252
- if ( override )
253
- {
254
- // If no attributes have been defined, remove the element.
255
- if ( !( attribs = override.attributes ) )
256
- return true;
257
-
258
- for ( var i = 0 ; i < attribs.length ; i++ )
259
- {
260
- attName = attribs[i][0];
261
- var actualAttrValue = element.getAttribute( attName );
262
- if ( actualAttrValue )
263
- {
264
- var attValue = attribs[i][1];
265
-
266
- // Remove the attribute if:
267
- // - The override definition value is null;
268
- // - The override definition value is a string that
269
- // matches the attribute value exactly.
270
- // - The override definition value is a regex that
271
- // has matches in the attribute value.
272
- if ( attValue === null ||
273
- ( typeof attValue == 'string' && actualAttrValue == attValue ) ||
274
- attValue.test( actualAttrValue ) )
275
- return true;
276
- }
277
- }
278
- }
279
- return false;
280
- },
281
-
282
- // Builds the preview HTML based on the styles definition.
283
- buildPreview : function()
284
- {
285
- var styleDefinition = this._.definition,
286
- html = [],
287
- elementName = styleDefinition.element;
288
-
289
- // Avoid <bdo> in the preview.
290
- if ( elementName == 'bdo' )
291
- elementName = 'span';
292
-
293
- html = [ '<', elementName ];
294
-
295
- // Assign all defined attributes.
296
- var attribs = styleDefinition.attributes;
297
- if ( attribs )
298
- {
299
- for ( var att in attribs )
300
- {
301
- html.push( ' ', att, '="', attribs[ att ], '"' );
302
- }
303
- }
304
-
305
- // Assign the style attribute.
306
- var cssStyle = CKEDITOR.style.getStyleText( styleDefinition );
307
- if ( cssStyle )
308
- html.push( ' style="', cssStyle, '"' );
309
-
310
- html.push( '>', styleDefinition.name, '</', elementName, '>' );
311
-
312
- return html.join( '' );
313
- }
314
- };
315
-
316
- // Build the cssText based on the styles definition.
317
- CKEDITOR.style.getStyleText = function( styleDefinition )
318
- {
319
- // If we have already computed it, just return it.
320
- var stylesDef = styleDefinition._ST;
321
- if ( stylesDef )
322
- return stylesDef;
323
-
324
- stylesDef = styleDefinition.styles;
325
-
326
- // Builds the StyleText.
327
- var stylesText = ( styleDefinition.attributes && styleDefinition.attributes[ 'style' ] ) || '',
328
- specialStylesText = '';
329
-
330
- if ( stylesText.length )
331
- stylesText = stylesText.replace( semicolonFixRegex, ';' );
332
-
333
- for ( var style in stylesDef )
334
- {
335
- var styleVal = stylesDef[ style ],
336
- text = ( style + ':' + styleVal ).replace( semicolonFixRegex, ';' );
337
-
338
- // Some browsers don't support 'inherit' property value, leave them intact. (#5242)
339
- if ( styleVal == 'inherit' )
340
- specialStylesText += text;
341
- else
342
- stylesText += text;
343
- }
344
-
345
- // Browsers make some changes to the style when applying them. So, here
346
- // we normalize it to the browser format.
347
- if ( stylesText.length )
348
- stylesText = normalizeCssText( stylesText );
349
-
350
- stylesText += specialStylesText;
351
-
352
- // Return it, saving it to the next request.
353
- return ( styleDefinition._ST = stylesText );
354
- };
355
-
356
- function applyInlineStyle( range )
357
- {
358
- var document = range.document;
359
-
360
- if ( range.collapsed )
361
- {
362
- // Create the element to be inserted in the DOM.
363
- var collapsedElement = getElement( this, document );
364
-
365
- // Insert the empty element into the DOM at the range position.
366
- range.insertNode( collapsedElement );
367
-
368
- // Place the selection right inside the empty element.
369
- range.moveToPosition( collapsedElement, CKEDITOR.POSITION_BEFORE_END );
370
-
371
- return;
372
- }
373
-
374
- var elementName = this.element;
375
- var def = this._.definition;
376
- var isUnknownElement;
377
-
378
- // Get the DTD definition for the element. Defaults to "span".
379
- var dtd = CKEDITOR.dtd[ elementName ] || ( isUnknownElement = true, CKEDITOR.dtd.span );
380
-
381
- // Expand the range.
382
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );
383
- range.trim();
384
-
385
- // Get the first node to be processed and the last, which concludes the
386
- // processing.
387
- var boundaryNodes = range.createBookmark(),
388
- firstNode = boundaryNodes.startNode,
389
- lastNode = boundaryNodes.endNode;
390
-
391
- var currentNode = firstNode;
392
-
393
- var styleRange;
394
-
395
- while ( currentNode )
396
- {
397
- var applyStyle = false;
398
-
399
- if ( currentNode.equals( lastNode ) )
400
- {
401
- currentNode = null;
402
- applyStyle = true;
403
- }
404
- else
405
- {
406
- var nodeType = currentNode.type;
407
- var nodeName = nodeType == CKEDITOR.NODE_ELEMENT ? currentNode.getName() : null;
408
-
409
- if ( nodeName && currentNode.getAttribute( '_cke_bookmark' ) )
410
- {
411
- currentNode = currentNode.getNextSourceNode( true );
412
- continue;
413
- }
414
-
415
- // Check if the current node can be a child of the style element.
416
- if ( !nodeName || ( dtd[ nodeName ]
417
- && ( currentNode.getPosition( lastNode ) | CKEDITOR.POSITION_PRECEDING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED ) == ( CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_IDENTICAL + CKEDITOR.POSITION_IS_CONTAINED )
418
- && ( !def.childRule || def.childRule( currentNode ) ) ) )
419
- {
420
- var currentParent = currentNode.getParent();
421
-
422
- // Check if the style element can be a child of the current
423
- // node parent or if the element is not defined in the DTD.
424
- if ( currentParent
425
- && ( ( currentParent.getDtd() || CKEDITOR.dtd.span )[ elementName ] || isUnknownElement )
426
- && ( !def.parentRule || def.parentRule( currentParent ) ) )
427
- {
428
- // This node will be part of our range, so if it has not
429
- // been started, place its start right before the node.
430
- // In the case of an element node, it will be included
431
- // only if it is entirely inside the range.
432
- if ( !styleRange && ( !nodeName || !CKEDITOR.dtd.$removeEmpty[ nodeName ] || ( currentNode.getPosition( lastNode ) | CKEDITOR.POSITION_PRECEDING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED ) == ( CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_IDENTICAL + CKEDITOR.POSITION_IS_CONTAINED ) ) )
433
- {
434
- styleRange = new CKEDITOR.dom.range( document );
435
- styleRange.setStartBefore( currentNode );
436
- }
437
-
438
- // Non element nodes, or empty elements can be added
439
- // completely to the range.
440
- if ( nodeType == CKEDITOR.NODE_TEXT || ( nodeType == CKEDITOR.NODE_ELEMENT && !currentNode.getChildCount() ) )
441
- {
442
- var includedNode = currentNode;
443
- var parentNode;
444
-
445
- // This node is about to be included completelly, but,
446
- // if this is the last node in its parent, we must also
447
- // check if the parent itself can be added completelly
448
- // to the range.
449
- while ( !includedNode.$.nextSibling
450
- && ( parentNode = includedNode.getParent(), dtd[ parentNode.getName() ] )
451
- && ( parentNode.getPosition( firstNode ) | CKEDITOR.POSITION_FOLLOWING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED ) == ( CKEDITOR.POSITION_FOLLOWING + CKEDITOR.POSITION_IDENTICAL + CKEDITOR.POSITION_IS_CONTAINED )
452
- && ( !def.childRule || def.childRule( parentNode ) ) )
453
- {
454
- includedNode = parentNode;
455
- }
456
-
457
- styleRange.setEndAfter( includedNode );
458
-
459
- // If the included node still is the last node in its
460
- // parent, it means that the parent can't be included
461
- // in this style DTD, so apply the style immediately.
462
- if ( !includedNode.$.nextSibling )
463
- applyStyle = true;
464
-
465
- }
466
- }
467
- else
468
- applyStyle = true;
469
- }
470
- else
471
- applyStyle = true;
472
-
473
- // Get the next node to be processed.
474
- currentNode = currentNode.getNextSourceNode();
475
- }
476
-
477
- // Apply the style if we have something to which apply it.
478
- if ( applyStyle && styleRange && !styleRange.collapsed )
479
- {
480
- // Build the style element, based on the style object definition.
481
- var styleNode = getElement( this, document ),
482
- styleHasAttrs = styleNode.hasAttributes();
483
-
484
- // Get the element that holds the entire range.
485
- var parent = styleRange.getCommonAncestor();
486
-
487
- var removeList = {
488
- styles : {},
489
- attrs : {},
490
- // Styles cannot be removed.
491
- blockedStyles : {},
492
- // Attrs cannot be removed.
493
- blockedAttrs : {}
494
- };
495
-
496
- var attName, styleName, value;
497
-
498
- // Loop through the parents, removing the redundant attributes
499
- // from the element to be applied.
500
- while ( styleNode && parent )
501
- {
502
- if ( parent.getName() == elementName )
503
- {
504
- for ( attName in def.attributes )
505
- {
506
- if ( removeList.blockedAttrs[ attName ] || !( value = parent.getAttribute( styleName ) ) )
507
- continue;
508
-
509
- if ( styleNode.getAttribute( attName ) == value )
510
- removeList.attrs[ attName ] = 1;
511
- else
512
- removeList.blockedAttrs[ attName ] = 1;
513
- }
514
-
515
- for ( styleName in def.styles )
516
- {
517
- if ( removeList.blockedStyles[ styleName ] || !( value = parent.getStyle( styleName ) ) )
518
- continue;
519
-
520
- if ( styleNode.getStyle( styleName ) == value )
521
- removeList.styles[ styleName ] = 1;
522
- else
523
- removeList.blockedStyles[ styleName ] = 1;
524
- }
525
- }
526
-
527
- parent = parent.getParent();
528
- }
529
-
530
- for ( attName in removeList.attrs )
531
- styleNode.removeAttribute( attName );
532
-
533
- for ( styleName in removeList.styles )
534
- styleNode.removeStyle( styleName );
535
-
536
- if ( styleHasAttrs && !styleNode.hasAttributes() )
537
- styleNode = null;
538
-
539
- if ( styleNode )
540
- {
541
- // Move the contents of the range to the style element.
542
- styleRange.extractContents().appendTo( styleNode );
543
-
544
- // Here we do some cleanup, removing all duplicated
545
- // elements from the style element.
546
- removeFromInsideElement( this, styleNode );
547
-
548
- // Insert it into the range position (it is collapsed after
549
- // extractContents.
550
- styleRange.insertNode( styleNode );
551
-
552
- // Let's merge our new style with its neighbors, if possible.
553
- styleNode.mergeSiblings();
554
-
555
- // As the style system breaks text nodes constantly, let's normalize
556
- // things for performance.
557
- // With IE, some paragraphs get broken when calling normalize()
558
- // repeatedly. Also, for IE, we must normalize body, not documentElement.
559
- // IE is also known for having a "crash effect" with normalize().
560
- // We should try to normalize with IE too in some way, somewhere.
561
- if ( !CKEDITOR.env.ie )
562
- styleNode.$.normalize();
563
- }
564
- // Style already inherit from parents, left just to clear up any internal overrides. (#5931)
565
- else
566
- {
567
- styleNode = new CKEDITOR.dom.element( 'span' );
568
- styleRange.extractContents().appendTo( styleNode );
569
- styleRange.insertNode( styleNode );
570
- removeFromInsideElement( this, styleNode );
571
- styleNode.remove( true );
572
- }
573
-
574
- // Style applied, let's release the range, so it gets
575
- // re-initialization in the next loop.
576
- styleRange = null;
577
- }
578
- }
579
-
580
- // Remove the bookmark nodes.
581
- range.moveToBookmark( boundaryNodes );
582
-
583
- // Minimize the result range to exclude empty text nodes. (#5374)
584
- range.shrink( CKEDITOR.SHRINK_TEXT );
585
- }
586
-
587
- function removeInlineStyle( range )
588
- {
589
- /*
590
- * Make sure our range has included all "collpased" parent inline nodes so
591
- * that our operation logic can be simpler.
592
- */
593
- range.enlarge( CKEDITOR.ENLARGE_ELEMENT );
594
-
595
- var bookmark = range.createBookmark(),
596
- startNode = bookmark.startNode;
597
-
598
- if ( range.collapsed )
599
- {
600
-
601
- var startPath = new CKEDITOR.dom.elementPath( startNode.getParent() ),
602
- // The topmost element in elementspatch which we should jump out of.
603
- boundaryElement;
604
-
605
-
606
- for ( var i = 0, element ; i < startPath.elements.length
607
- && ( element = startPath.elements[i] ) ; i++ )
608
- {
609
- /*
610
- * 1. If it's collaped inside text nodes, try to remove the style from the whole element.
611
- *
612
- * 2. Otherwise if it's collapsed on element boundaries, moving the selection
613
- * outside the styles instead of removing the whole tag,
614
- * also make sure other inner styles were well preserverd.(#3309)
615
- */
616
- if ( element == startPath.block || element == startPath.blockLimit )
617
- break;
618
-
619
- if ( this.checkElementRemovable( element ) )
620
- {
621
- var isStart;
622
-
623
- if ( range.collapsed && (
624
- range.checkBoundaryOfElement( element, CKEDITOR.END ) ||
625
- ( isStart = range.checkBoundaryOfElement( element, CKEDITOR.START ) ) ) )
626
- {
627
- boundaryElement = element;
628
- boundaryElement.match = isStart ? 'start' : 'end';
629
- }
630
- else
631
- {
632
- /*
633
- * Before removing the style node, there may be a sibling to the style node
634
- * that's exactly the same to the one to be removed. To the user, it makes
635
- * no difference that they're separate entities in the DOM tree. So, merge
636
- * them before removal.
637
- */
638
- element.mergeSiblings();
639
- removeFromElement( this, element );
640
-
641
- }
642
- }
643
- }
644
-
645
- // Re-create the style tree after/before the boundary element,
646
- // the replication start from bookmark start node to define the
647
- // new range.
648
- if ( boundaryElement )
649
- {
650
- var clonedElement = startNode;
651
- for ( i = 0 ;; i++ )
652
- {
653
- var newElement = startPath.elements[ i ];
654
- if ( newElement.equals( boundaryElement ) )
655
- break;
656
- // Avoid copying any matched element.
657
- else if ( newElement.match )
658
- continue;
659
- else
660
- newElement = newElement.clone();
661
- newElement.append( clonedElement );
662
- clonedElement = newElement;
663
- }
664
- clonedElement[ boundaryElement.match == 'start' ?
665
- 'insertBefore' : 'insertAfter' ]( boundaryElement );
666
- }
667
- }
668
- else
669
- {
670
- /*
671
- * Now our range isn't collapsed. Lets walk from the start node to the end
672
- * node via DFS and remove the styles one-by-one.
673
- */
674
- var endNode = bookmark.endNode,
675
- me = this;
676
-
677
- /*
678
- * Find out the style ancestor that needs to be broken down at startNode
679
- * and endNode.
680
- */
681
- function breakNodes()
682
- {
683
- var startPath = new CKEDITOR.dom.elementPath( startNode.getParent() ),
684
- endPath = new CKEDITOR.dom.elementPath( endNode.getParent() ),
685
- breakStart = null,
686
- breakEnd = null;
687
- for ( var i = 0 ; i < startPath.elements.length ; i++ )
688
- {
689
- var element = startPath.elements[ i ];
690
-
691
- if ( element == startPath.block || element == startPath.blockLimit )
692
- break;
693
-
694
- if ( me.checkElementRemovable( element ) )
695
- breakStart = element;
696
- }
697
- for ( i = 0 ; i < endPath.elements.length ; i++ )
698
- {
699
- element = endPath.elements[ i ];
700
-
701
- if ( element == endPath.block || element == endPath.blockLimit )
702
- break;
703
-
704
- if ( me.checkElementRemovable( element ) )
705
- breakEnd = element;
706
- }
707
-
708
- if ( breakEnd )
709
- endNode.breakParent( breakEnd );
710
- if ( breakStart )
711
- startNode.breakParent( breakStart );
712
- }
713
- breakNodes();
714
-
715
- // Now, do the DFS walk.
716
- var currentNode = startNode.getNext();
717
- while ( !currentNode.equals( endNode ) )
718
- {
719
- /*
720
- * Need to get the next node first because removeFromElement() can remove
721
- * the current node from DOM tree.
722
- */
723
- var nextNode = currentNode.getNextSourceNode();
724
- if ( currentNode.type == CKEDITOR.NODE_ELEMENT && this.checkElementRemovable( currentNode ) )
725
- {
726
- // Remove style from element or overriding element.
727
- if ( currentNode.getName() == this.element )
728
- removeFromElement( this, currentNode );
729
- else
730
- removeOverrides( currentNode, getOverrides( this )[ currentNode.getName() ] );
731
-
732
- /*
733
- * removeFromElement() may have merged the next node with something before
734
- * the startNode via mergeSiblings(). In that case, the nextNode would
735
- * contain startNode and we'll have to call breakNodes() again and also
736
- * reassign the nextNode to something after startNode.
737
- */
738
- if ( nextNode.type == CKEDITOR.NODE_ELEMENT && nextNode.contains( startNode ) )
739
- {
740
- breakNodes();
741
- nextNode = startNode.getNext();
742
- }
743
- }
744
- currentNode = nextNode;
745
- }
746
- }
747
-
748
- range.moveToBookmark( bookmark );
749
- }
750
-
751
- function applyObjectStyle( range )
752
- {
753
- var root = range.getCommonAncestor( true, true ),
754
- element = root.getAscendant( this.element, true );
755
- element && setupElement( element, this );
756
- }
757
-
758
- function removeObjectStyle( range )
759
- {
760
- var root = range.getCommonAncestor( true, true ),
761
- element = root.getAscendant( this.element, true );
762
-
763
- if ( !element )
764
- return;
765
-
766
- var style = this;
767
- var def = style._.definition;
768
- var attributes = def.attributes;
769
- var styles = CKEDITOR.style.getStyleText( def );
770
-
771
- // Remove all defined attributes.
772
- if ( attributes )
773
- {
774
- for ( var att in attributes )
775
- {
776
- element.removeAttribute( att, attributes[ att ] );
777
- }
778
- }
779
-
780
- // Assign all defined styles.
781
- if ( def.styles )
782
- {
783
- for ( var i in def.styles )
784
- {
785
- if ( !def.styles.hasOwnProperty( i ) )
786
- continue;
787
-
788
- element.removeStyle( i );
789
- }
790
- }
791
- }
792
-
793
- function applyBlockStyle( range )
794
- {
795
- // Serializible bookmarks is needed here since
796
- // elements may be merged.
797
- var bookmark = range.createBookmark( true );
798
-
799
- var iterator = range.createIterator();
800
- iterator.enforceRealBlocks = true;
801
-
802
- // make recognize <br /> tag as a separator in ENTER_BR mode (#5121)
803
- if ( this._.enterMode )
804
- iterator.enlargeBr = ( this._.enterMode != CKEDITOR.ENTER_BR );
805
-
806
- var block;
807
- var doc = range.document;
808
- var previousPreBlock;
809
-
810
- while ( ( block = iterator.getNextParagraph() ) ) // Only one =
811
- {
812
- var newBlock = getElement( this, doc, block );
813
- replaceBlock( block, newBlock );
814
- }
815
-
816
- range.moveToBookmark( bookmark );
817
- }
818
-
819
- // Replace the original block with new one, with special treatment
820
- // for <pre> blocks to make sure content format is well preserved, and merging/splitting adjacent
821
- // when necessary.(#3188)
822
- function replaceBlock( block, newBlock )
823
- {
824
- var newBlockIsPre = newBlock.is( 'pre' );
825
- var blockIsPre = block.is( 'pre' );
826
-
827
- var isToPre = newBlockIsPre && !blockIsPre;
828
- var isFromPre = !newBlockIsPre && blockIsPre;
829
-
830
- if ( isToPre )
831
- newBlock = toPre( block, newBlock );
832
- else if ( isFromPre )
833
- // Split big <pre> into pieces before start to convert.
834
- newBlock = fromPres( splitIntoPres( block ), newBlock );
835
- else
836
- block.moveChildren( newBlock );
837
-
838
- newBlock.replace( block );
839
-
840
- if ( newBlockIsPre )
841
- {
842
- // Merge previous <pre> blocks.
843
- mergePre( newBlock );
844
- }
845
- }
846
-
847
- var nonWhitespaces = CKEDITOR.dom.walker.whitespaces( true );
848
- /**
849
- * Merge a <pre> block with a previous sibling if available.
850
- */
851
- function mergePre( preBlock )
852
- {
853
- var previousBlock;
854
- if ( !( ( previousBlock = preBlock.getPrevious( nonWhitespaces ) )
855
- && previousBlock.is
856
- && previousBlock.is( 'pre') ) )
857
- return;
858
-
859
- // Merge the previous <pre> block contents into the current <pre>
860
- // block.
861
- //
862
- // Another thing to be careful here is that currentBlock might contain
863
- // a '\n' at the beginning, and previousBlock might contain a '\n'
864
- // towards the end. These new lines are not normally displayed but they
865
- // become visible after merging.
866
- var mergedHtml = replace( previousBlock.getHtml(), /\n$/, '' ) + '\n\n' +
867
- replace( preBlock.getHtml(), /^\n/, '' ) ;
868
-
869
- // Krugle: IE normalizes innerHTML from <pre>, breaking whitespaces.
870
- if ( CKEDITOR.env.ie )
871
- preBlock.$.outerHTML = '<pre>' + mergedHtml + '</pre>';
872
- else
873
- preBlock.setHtml( mergedHtml );
874
-
875
- previousBlock.remove();
876
- }
877
-
878
- /**
879
- * Split into multiple <pre> blocks separated by double line-break.
880
- * @param preBlock
881
- */
882
- function splitIntoPres( preBlock )
883
- {
884
- // Exclude the ones at header OR at tail,
885
- // and ignore bookmark content between them.
886
- var duoBrRegex = /(\S\s*)\n(?:\s|(<span[^>]+_cke_bookmark.*?\/span>))*\n(?!$)/gi,
887
- blockName = preBlock.getName(),
888
- splitedHtml = replace( preBlock.getOuterHtml(),
889
- duoBrRegex,
890
- function( match, charBefore, bookmark )
891
- {
892
- return charBefore + '</pre>' + bookmark + '<pre>';
893
- } );
894
-
895
- var pres = [];
896
- splitedHtml.replace( /<pre\b.*?>([\s\S]*?)<\/pre>/gi, function( match, preContent ){
897
- pres.push( preContent );
898
- } );
899
- return pres;
900
- }
901
-
902
- // Wrapper function of String::replace without considering of head/tail bookmarks nodes.
903
- function replace( str, regexp, replacement )
904
- {
905
- var headBookmark = '',
906
- tailBookmark = '';
907
-
908
- str = str.replace( /(^<span[^>]+_cke_bookmark.*?\/span>)|(<span[^>]+_cke_bookmark.*?\/span>$)/gi,
909
- function( str, m1, m2 ){
910
- m1 && ( headBookmark = m1 );
911
- m2 && ( tailBookmark = m2 );
912
- return '';
913
- } );
914
- return headBookmark + str.replace( regexp, replacement ) + tailBookmark;
915
- }
916
- /**
917
- * Converting a list of <pre> into blocks with format well preserved.
918
- */
919
- function fromPres( preHtmls, newBlock )
920
- {
921
- var docFrag = new CKEDITOR.dom.documentFragment( newBlock.getDocument() );
922
- for ( var i = 0 ; i < preHtmls.length ; i++ )
923
- {
924
- var blockHtml = preHtmls[ i ];
925
-
926
- // 1. Trim the first and last line-breaks immediately after and before <pre>,
927
- // they're not visible.
928
- blockHtml = blockHtml.replace( /(\r\n|\r)/g, '\n' ) ;
929
- blockHtml = replace( blockHtml, /^[ \t]*\n/, '' ) ;
930
- blockHtml = replace( blockHtml, /\n$/, '' ) ;
931
- // 2. Convert spaces or tabs at the beginning or at the end to &nbsp;
932
- blockHtml = replace( blockHtml, /^[ \t]+|[ \t]+$/g, function( match, offset, s )
933
- {
934
- if ( match.length == 1 ) // one space, preserve it
935
- return '&nbsp;' ;
936
- else if ( !offset ) // beginning of block
937
- return CKEDITOR.tools.repeat( '&nbsp;', match.length - 1 ) + ' ';
938
- else // end of block
939
- return ' ' + CKEDITOR.tools.repeat( '&nbsp;', match.length - 1 );
940
- } ) ;
941
-
942
- // 3. Convert \n to <BR>.
943
- // 4. Convert contiguous (i.e. non-singular) spaces or tabs to &nbsp;
944
- blockHtml = blockHtml.replace( /\n/g, '<br>' ) ;
945
- blockHtml = blockHtml.replace( /[ \t]{2,}/g,
946
- function ( match )
947
- {
948
- return CKEDITOR.tools.repeat( '&nbsp;', match.length - 1 ) + ' ' ;
949
- } ) ;
950
-
951
- var newBlockClone = newBlock.clone();
952
- newBlockClone.setHtml( blockHtml );
953
- docFrag.append( newBlockClone );
954
- }
955
- return docFrag;
956
- }
957
-
958
- /**
959
- * Converting from a non-PRE block to a PRE block in formatting operations.
960
- */
961
- function toPre( block, newBlock )
962
- {
963
- // First trim the block content.
964
- var preHtml = block.getHtml();
965
-
966
- // 1. Trim head/tail spaces, they're not visible.
967
- preHtml = replace( preHtml, /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, '' );
968
- // 2. Delete ANSI whitespaces immediately before and after <BR> because
969
- // they are not visible.
970
- preHtml = preHtml.replace( /[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi, '$1' );
971
- // 3. Compress other ANSI whitespaces since they're only visible as one
972
- // single space previously.
973
- // 4. Convert &nbsp; to spaces since &nbsp; is no longer needed in <PRE>.
974
- preHtml = preHtml.replace( /([ \t\n\r]+|&nbsp;)/g, ' ' );
975
- // 5. Convert any <BR /> to \n. This must not be done earlier because
976
- // the \n would then get compressed.
977
- preHtml = preHtml.replace( /<br\b[^>]*>/gi, '\n' );
978
-
979
- // Krugle: IE normalizes innerHTML to <pre>, breaking whitespaces.
980
- if ( CKEDITOR.env.ie )
981
- {
982
- var temp = block.getDocument().createElement( 'div' );
983
- temp.append( newBlock );
984
- newBlock.$.outerHTML = '<pre>' + preHtml + '</pre>';
985
- newBlock = temp.getFirst().remove();
986
- }
987
- else
988
- newBlock.setHtml( preHtml );
989
-
990
- return newBlock;
991
- }
992
-
993
- // Removes a style from an element itself, don't care about its subtree.
994
- function removeFromElement( style, element )
995
- {
996
- var def = style._.definition,
997
- attributes = CKEDITOR.tools.extend( {}, def.attributes, getOverrides( style )[ element.getName() ] ),
998
- styles = def.styles,
999
- // If the style is only about the element itself, we have to remove the element.
1000
- removeEmpty = CKEDITOR.tools.isEmpty( attributes ) && CKEDITOR.tools.isEmpty( styles );
1001
-
1002
- // Remove definition attributes/style from the elemnt.
1003
- for ( var attName in attributes )
1004
- {
1005
- // The 'class' element value must match (#1318).
1006
- if ( ( attName == 'class' || style._.definition.fullMatch )
1007
- && element.getAttribute( attName ) != normalizeProperty( attName, attributes[ attName ] ) )
1008
- continue;
1009
- removeEmpty = element.hasAttribute( attName );
1010
- element.removeAttribute( attName );
1011
- }
1012
-
1013
- for ( var styleName in styles )
1014
- {
1015
- // Full match style insist on having fully equivalence. (#5018)
1016
- if ( style._.definition.fullMatch
1017
- && element.getStyle( styleName ) != normalizeProperty( styleName, styles[ styleName ], true ) )
1018
- continue;
1019
-
1020
- removeEmpty = removeEmpty || !!element.getStyle( styleName );
1021
- element.removeStyle( styleName );
1022
- }
1023
-
1024
- removeEmpty && removeNoAttribsElement( element );
1025
- }
1026
-
1027
- // Removes a style from inside an element.
1028
- function removeFromInsideElement( style, element )
1029
- {
1030
- var def = style._.definition,
1031
- attribs = def.attributes,
1032
- styles = def.styles,
1033
- overrides = getOverrides( style );
1034
-
1035
- var innerElements = element.getElementsByTag( style.element );
1036
-
1037
- for ( var i = innerElements.count(); --i >= 0 ; )
1038
- removeFromElement( style, innerElements.getItem( i ) );
1039
-
1040
- // Now remove any other element with different name that is
1041
- // defined to be overriden.
1042
- for ( var overrideElement in overrides )
1043
- {
1044
- if ( overrideElement != style.element )
1045
- {
1046
- innerElements = element.getElementsByTag( overrideElement ) ;
1047
- for ( i = innerElements.count() - 1 ; i >= 0 ; i-- )
1048
- {
1049
- var innerElement = innerElements.getItem( i );
1050
- removeOverrides( innerElement, overrides[ overrideElement ] ) ;
1051
- }
1052
- }
1053
- }
1054
-
1055
- }
1056
-
1057
- /**
1058
- * Remove overriding styles/attributes from the specific element.
1059
- * Note: Remove the element if no attributes remain.
1060
- * @param {Object} element
1061
- * @param {Object} overrides
1062
- */
1063
- function removeOverrides( element, overrides )
1064
- {
1065
- var attributes = overrides && overrides.attributes ;
1066
-
1067
- if ( attributes )
1068
- {
1069
- for ( var i = 0 ; i < attributes.length ; i++ )
1070
- {
1071
- var attName = attributes[i][0], actualAttrValue ;
1072
-
1073
- if ( ( actualAttrValue = element.getAttribute( attName ) ) )
1074
- {
1075
- var attValue = attributes[i][1] ;
1076
-
1077
- // Remove the attribute if:
1078
- // - The override definition value is null ;
1079
- // - The override definition valie is a string that
1080
- // matches the attribute value exactly.
1081
- // - The override definition value is a regex that
1082
- // has matches in the attribute value.
1083
- if ( attValue === null ||
1084
- ( attValue.test && attValue.test( actualAttrValue ) ) ||
1085
- ( typeof attValue == 'string' && actualAttrValue == attValue ) )
1086
- element.removeAttribute( attName ) ;
1087
- }
1088
- }
1089
- }
1090
-
1091
- removeNoAttribsElement( element );
1092
- }
1093
-
1094
- // If the element has no more attributes, remove it.
1095
- function removeNoAttribsElement( element )
1096
- {
1097
- // If no more attributes remained in the element, remove it,
1098
- // leaving its children.
1099
- if ( !element.hasAttributes() )
1100
- {
1101
- // Removing elements may open points where merging is possible,
1102
- // so let's cache the first and last nodes for later checking.
1103
- var firstChild = element.getFirst();
1104
- var lastChild = element.getLast();
1105
-
1106
- element.remove( true );
1107
-
1108
- if ( firstChild )
1109
- {
1110
- // Check the cached nodes for merging.
1111
- firstChild.type == CKEDITOR.NODE_ELEMENT && firstChild.mergeSiblings();
1112
-
1113
- if ( lastChild && !firstChild.equals( lastChild )
1114
- && lastChild.type == CKEDITOR.NODE_ELEMENT )
1115
- lastChild.mergeSiblings();
1116
- }
1117
- }
1118
- }
1119
-
1120
- function getElement( style, targetDocument, element )
1121
- {
1122
- var el;
1123
-
1124
- var def = style._.definition;
1125
-
1126
- var elementName = style.element;
1127
-
1128
- // The "*" element name will always be a span for this function.
1129
- if ( elementName == '*' )
1130
- elementName = 'span';
1131
-
1132
- // Create the element.
1133
- el = new CKEDITOR.dom.element( elementName, targetDocument );
1134
-
1135
- // #6226: attributes should be copied before the new ones are applied
1136
- if ( element )
1137
- element.copyAttributes( el );
1138
-
1139
- return setupElement( el, style );
1140
- }
1141
-
1142
- function setupElement( el, style )
1143
- {
1144
- var def = style._.definition;
1145
- var attributes = def.attributes;
1146
- var styles = CKEDITOR.style.getStyleText( def );
1147
-
1148
- // Assign all defined attributes.
1149
- if ( attributes )
1150
- {
1151
- for ( var att in attributes )
1152
- {
1153
- el.setAttribute( att, attributes[ att ] );
1154
- }
1155
- }
1156
-
1157
- // Assign all defined styles.
1158
- if( styles )
1159
- el.setAttribute( 'style', styles );
1160
-
1161
- return el;
1162
- }
1163
-
1164
- var varRegex = /#\((.+?)\)/g;
1165
- function replaceVariables( list, variablesValues )
1166
- {
1167
- for ( var item in list )
1168
- {
1169
- list[ item ] = list[ item ].replace( varRegex, function( match, varName )
1170
- {
1171
- return variablesValues[ varName ];
1172
- });
1173
- }
1174
- }
1175
-
1176
-
1177
- // Returns an object that can be used for style matching comparison.
1178
- // Attributes names and values are all lowercased, and the styles get
1179
- // merged with the style attribute.
1180
- function getAttributesForComparison( styleDefinition )
1181
- {
1182
- // If we have already computed it, just return it.
1183
- var attribs = styleDefinition._AC;
1184
- if ( attribs )
1185
- return attribs;
1186
-
1187
- attribs = {};
1188
-
1189
- var length = 0;
1190
-
1191
- // Loop through all defined attributes.
1192
- var styleAttribs = styleDefinition.attributes;
1193
- if ( styleAttribs )
1194
- {
1195
- for ( var styleAtt in styleAttribs )
1196
- {
1197
- length++;
1198
- attribs[ styleAtt ] = styleAttribs[ styleAtt ];
1199
- }
1200
- }
1201
-
1202
- // Includes the style definitions.
1203
- var styleText = CKEDITOR.style.getStyleText( styleDefinition );
1204
- if ( styleText )
1205
- {
1206
- if ( !attribs[ 'style' ] )
1207
- length++;
1208
- attribs[ 'style' ] = styleText;
1209
- }
1210
-
1211
- // Appends the "length" information to the object.
1212
- attribs._length = length;
1213
-
1214
- // Return it, saving it to the next request.
1215
- return ( styleDefinition._AC = attribs );
1216
- }
1217
-
1218
- /**
1219
- * Get the the collection used to compare the elements and attributes,
1220
- * defined in this style overrides, with other element. All information in
1221
- * it is lowercased.
1222
- * @param {CKEDITOR.style} style
1223
- */
1224
- function getOverrides( style )
1225
- {
1226
- if ( style._.overrides )
1227
- return style._.overrides;
1228
-
1229
- var overrides = ( style._.overrides = {} ),
1230
- definition = style._.definition.overrides;
1231
-
1232
- if ( definition )
1233
- {
1234
- // The override description can be a string, object or array.
1235
- // Internally, well handle arrays only, so transform it if needed.
1236
- if ( !CKEDITOR.tools.isArray( definition ) )
1237
- definition = [ definition ];
1238
-
1239
- // Loop through all override definitions.
1240
- for ( var i = 0 ; i < definition.length ; i++ )
1241
- {
1242
- var override = definition[i];
1243
- var elementName;
1244
- var overrideEl;
1245
- var attrs;
1246
-
1247
- // If can be a string with the element name.
1248
- if ( typeof override == 'string' )
1249
- elementName = override.toLowerCase();
1250
- // Or an object.
1251
- else
1252
- {
1253
- elementName = override.element ? override.element.toLowerCase() : style.element;
1254
- attrs = override.attributes;
1255
- }
1256
-
1257
- // We can have more than one override definition for the same
1258
- // element name, so we attempt to simply append information to
1259
- // it if it already exists.
1260
- overrideEl = overrides[ elementName ] || ( overrides[ elementName ] = {} );
1261
-
1262
- if ( attrs )
1263
- {
1264
- // The returning attributes list is an array, because we
1265
- // could have different override definitions for the same
1266
- // attribute name.
1267
- var overrideAttrs = ( overrideEl.attributes = overrideEl.attributes || new Array() );
1268
- for ( var attName in attrs )
1269
- {
1270
- // Each item in the attributes array is also an array,
1271
- // where [0] is the attribute name and [1] is the
1272
- // override value.
1273
- overrideAttrs.push( [ attName.toLowerCase(), attrs[ attName ] ] );
1274
- }
1275
- }
1276
- }
1277
- }
1278
-
1279
- return overrides;
1280
- }
1281
-
1282
- // Make the comparison of attribute value easier by standardizing it.
1283
- function normalizeProperty( name, value, isStyle )
1284
- {
1285
- var temp = new CKEDITOR.dom.element( 'span' );
1286
- temp [ isStyle ? 'setStyle' : 'setAttribute' ]( name, value );
1287
- return temp[ isStyle ? 'getStyle' : 'getAttribute' ]( name );
1288
- }
1289
-
1290
- // Make the comparison of style text easier by standardizing it.
1291
- function normalizeCssText( unparsedCssText, nativeNormalize )
1292
- {
1293
- var styleText;
1294
- if ( nativeNormalize !== false )
1295
- {
1296
- // Injects the style in a temporary span object, so the browser parses it,
1297
- // retrieving its final format.
1298
- var temp = new CKEDITOR.dom.element( 'span' );
1299
- temp.setAttribute( 'style', unparsedCssText );
1300
- styleText = temp.getAttribute( 'style' ) || '';
1301
- }
1302
- else
1303
- styleText = unparsedCssText;
1304
-
1305
- // Shrinking white-spaces around colon and semi-colon (#4147).
1306
- // Compensate tail semi-colon.
1307
- return styleText.replace( /\s*([;:])\s*/, '$1' )
1308
- .replace( /([^\s;])$/, '$1;')
1309
- // Trimming spaces after comma(#4107),
1310
- // remove quotations(#6403),
1311
- // mostly for differences on "font-family".
1312
- .replace( /,\s+/g, ',' )
1313
- .replace( /\"/g,'' )
1314
- .toLowerCase();
1315
- }
1316
-
1317
- // Turn inline style text properties into one hash.
1318
- function parseStyleText( styleText )
1319
- {
1320
- var retval = {};
1321
- styleText
1322
- .replace( /&quot;/g, '"' )
1323
- .replace( /\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function( match, name, value )
1324
- {
1325
- retval[ name ] = value;
1326
- } );
1327
- return retval;
1328
- }
1329
-
1330
- /**
1331
- * Compare two bunch of styles, with the speciality that value 'inherit'
1332
- * is treated as a wildcard which will match any value.
1333
- * @param {Object|String} source
1334
- * @param {Object|String} target
1335
- */
1336
- function compareCssText( source, target )
1337
- {
1338
- typeof source == 'string' && ( source = parseStyleText( source ) );
1339
- typeof target == 'string' && ( target = parseStyleText( target ) );
1340
- for( var name in source )
1341
- {
1342
- if ( !( name in target &&
1343
- ( target[ name ] == source[ name ]
1344
- || source[ name ] == 'inherit'
1345
- || target[ name ] == 'inherit' ) ) )
1346
- {
1347
- return false;
1348
- }
1349
- }
1350
- return true;
1351
- }
1352
-
1353
- function applyStyle( document, remove )
1354
- {
1355
- var selection = document.getSelection(),
1356
- // Bookmark the range so we can re-select it after processing.
1357
- bookmarks = selection.createBookmarks( 1 ),
1358
- ranges = selection.getRanges( 1 ),
1359
- func = remove ? this.removeFromRange : this.applyToRange,
1360
- range;
1361
-
1362
- var iterator = ranges.createIterator();
1363
- while ( ( range = iterator.getNextRange() ) )
1364
- func.call( this, range );
1365
-
1366
- if ( bookmarks.length == 1 && bookmarks[0].collapsed )
1367
- {
1368
- selection.selectRanges( ranges );
1369
- document.getById( bookmarks[ 0 ].startNode ).remove();
1370
- }
1371
- else
1372
- selection.selectBookmarks( bookmarks );
1373
- }
1374
- })();
1375
-
1376
- CKEDITOR.styleCommand = function( style )
1377
- {
1378
- this.style = style;
1379
- };
1380
-
1381
- CKEDITOR.styleCommand.prototype.exec = function( editor )
1382
- {
1383
- editor.focus();
1384
-
1385
- var doc = editor.document;
1386
-
1387
- if ( doc )
1388
- {
1389
- if ( this.state == CKEDITOR.TRISTATE_OFF )
1390
- this.style.apply( doc );
1391
- else if ( this.state == CKEDITOR.TRISTATE_ON )
1392
- this.style.remove( doc );
1393
- }
1394
-
1395
- return !!doc;
1396
- };
1397
-
1398
- CKEDITOR.stylesSet = new CKEDITOR.resourceManager( '', 'stylesSet' );
1399
-
1400
- // Backward compatibility (#5025).
1401
- CKEDITOR.addStylesSet = CKEDITOR.tools.bind( CKEDITOR.stylesSet.add, CKEDITOR.stylesSet );
1402
- CKEDITOR.loadStylesSet = function( name, url, callback )
1403
- {
1404
- CKEDITOR.stylesSet.addExternal( name, url, '' );
1405
- CKEDITOR.stylesSet.load( name, callback );
1406
- };
1407
-
1408
-
1409
- /**
1410
- * Gets the current styleSet for this instance
1411
- * @param {Function} The function to be called with the styles data.
1412
- * @example
1413
- * editor.getStylesSet( function( stylesDefinitions ) {} );
1414
- */
1415
- CKEDITOR.editor.prototype.getStylesSet = function( callback )
1416
- {
1417
- if ( !this._.stylesDefinitions )
1418
- {
1419
- var editor = this,
1420
- // Respect the backwards compatible definition entry
1421
- configStyleSet = editor.config.stylesCombo_stylesSet || editor.config.stylesSet || 'default';
1422
-
1423
- // #5352 Allow to define the styles directly in the config object
1424
- if ( configStyleSet instanceof Array )
1425
- {
1426
- editor._.stylesDefinitions = configStyleSet;
1427
- callback( configStyleSet );
1428
- return;
1429
- }
1430
-
1431
- var partsStylesSet = configStyleSet.split( ':' ),
1432
- styleSetName = partsStylesSet[ 0 ],
1433
- externalPath = partsStylesSet[ 1 ],
1434
- pluginPath = CKEDITOR.plugins.registered.styles.path;
1435
-
1436
- CKEDITOR.stylesSet.addExternal( styleSetName,
1437
- externalPath ?
1438
- partsStylesSet.slice( 1 ).join( ':' ) :
1439
- pluginPath + 'styles/' + styleSetName + '.js', '' );
1440
-
1441
- CKEDITOR.stylesSet.load( styleSetName, function( stylesSet )
1442
- {
1443
- editor._.stylesDefinitions = stylesSet[ styleSetName ];
1444
- callback( editor._.stylesDefinitions );
1445
- } ) ;
1446
- }
1447
- else
1448
- callback( this._.stylesDefinitions );
1449
- };
1450
-
1451
- /**
1452
- * The "styles definition set" to use in the editor. They will be used in the
1453
- * styles combo and the Style selector of the div container. <br>
1454
- * The styles may be defined in the page containing the editor, or can be
1455
- * loaded on demand from an external file. In the second case, if this setting
1456
- * contains only a name, the styles definition file will be loaded from the
1457
- * "styles" folder inside the styles plugin folder.
1458
- * Otherwise, this setting has the "name:url" syntax, making it
1459
- * possible to set the URL from which loading the styles file.<br>
1460
- * Previously this setting was available as config.stylesCombo_stylesSet<br>
1461
- * @name CKEDITOR.config.stylesSet
1462
- * @type String|Array
1463
- * @default 'default'
1464
- * @since 3.3
1465
- * @example
1466
- * // Load from the styles' styles folder (mystyles.js file).
1467
- * config.stylesSet = 'mystyles';
1468
- * @example
1469
- * // Load from a relative URL.
1470
- * config.stylesSet = 'mystyles:/editorstyles/styles.js';
1471
- * @example
1472
- * // Load from a full URL.
1473
- * config.stylesSet = 'mystyles:http://www.example.com/editorstyles/styles.js';
1474
- * @example
1475
- * // Load from a list of definitions.
1476
- * config.stylesSet = [
1477
- * { name : 'Strong Emphasis', element : 'strong' },
1478
- * { name : 'Emphasis', element : 'em' }, ... ];
1479
- */