rich 1.3.1 → 1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1048) hide show
  1. data/README.rdoc +9 -6
  2. data/app/assets/javascripts/rich/base.js.erb +0 -1
  3. data/app/assets/javascripts/rich/editor/rich_editor.js.erb +1 -3
  4. data/lib/rich.rb +2 -2
  5. data/lib/rich/version.rb +1 -1
  6. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/mediaembed/images/icon.png +0 -0
  7. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/mediaembed/plugin.js +64 -0
  8. data/vendor/assets/ckeditor/ckeditor/CHANGES.md +56 -0
  9. data/vendor/assets/ckeditor/ckeditor/{LICENSE.html → LICENSE.md} +27 -90
  10. data/vendor/assets/ckeditor/ckeditor/README.md +39 -0
  11. data/vendor/assets/ckeditor/ckeditor/build-config.js +103 -0
  12. data/vendor/assets/ckeditor/ckeditor/ckeditor.js +884 -151
  13. data/vendor/assets/ckeditor/ckeditor/config.js +10 -11
  14. data/vendor/assets/ckeditor/ckeditor/contents.css +79 -5
  15. data/vendor/assets/ckeditor/ckeditor/lang/en.js +3 -4
  16. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +10 -7
  17. data/vendor/assets/ckeditor/ckeditor/{_source/plugins/a11yhelp → plugins/a11yhelp/dialogs}/lang/_translationstatus.txt +5 -3
  18. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js +9 -0
  19. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js +9 -0
  20. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js +9 -0
  21. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js +10 -0
  22. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js +9 -0
  23. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/da.js +9 -0
  24. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/de.js +10 -0
  25. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/el.js +10 -0
  26. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/en.js +9 -0
  27. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js +10 -0
  28. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/es.js +10 -0
  29. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/et.js +9 -0
  30. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js +9 -0
  31. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js +10 -0
  32. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js +10 -0
  33. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js +9 -0
  34. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/he.js +9 -0
  35. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js +9 -0
  36. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js +9 -0
  37. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js +9 -0
  38. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/it.js +10 -0
  39. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js +9 -0
  40. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js +10 -0
  41. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js +9 -0
  42. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js +10 -0
  43. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js +9 -0
  44. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js +9 -0
  45. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js +9 -0
  46. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js +10 -0
  47. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/no.js +9 -0
  48. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js +9 -0
  49. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js +9 -0
  50. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js +9 -0
  51. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js +9 -0
  52. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js +9 -0
  53. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js +10 -0
  54. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js +9 -0
  55. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js +10 -0
  56. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js +10 -0
  57. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js +9 -0
  58. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js +9 -0
  59. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js +9 -0
  60. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js +7 -0
  61. data/vendor/assets/ckeditor/ckeditor/plugins/about/dialogs/about.js +6 -6
  62. data/vendor/assets/ckeditor/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  63. data/vendor/assets/ckeditor/ckeditor/plugins/clipboard/dialogs/paste.js +11 -7
  64. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/css/codemirror.css +239 -0
  65. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/codemirror.js +160 -0
  66. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/css.js +10 -0
  67. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/htmlmixed.js +4 -0
  68. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/javascript.js +13 -0
  69. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/closetag.js +3 -0
  70. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/colorize.js +1 -0
  71. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/continuecomment.js +2 -0
  72. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/continuelist.js +1 -0
  73. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/dialog.css +32 -0
  74. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/dialog.js +3 -0
  75. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/foldcode.js +7 -0
  76. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/formatting.js +4 -0
  77. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/javascript-hint.js +5 -0
  78. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/loadmode.js +3 -0
  79. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/match-highlighter.js +2 -0
  80. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/matchbrackets.js +4 -0
  81. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/multiplex.js +4 -0
  82. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/overlay.js +2 -0
  83. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/pig-hint.js +6 -0
  84. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/runmode-standalone.js +5 -0
  85. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/runmode.js +2 -0
  86. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/search.js +5 -0
  87. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/searchcursor.js +5 -0
  88. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/simple-hint.css +16 -0
  89. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/simple-hint.js +4 -0
  90. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/util/xml-hint.js +3 -0
  91. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/js/xml.js +10 -0
  92. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/ambiance-mobile.css +6 -0
  93. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/ambiance.css +76 -0
  94. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/blackboard.css +25 -0
  95. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/cobalt.css +18 -0
  96. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/eclipse.css +25 -0
  97. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/elegant.css +10 -0
  98. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/erlang-dark.css +21 -0
  99. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/lesser-dark.css +44 -0
  100. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/monokai.css +28 -0
  101. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/neat.css +9 -0
  102. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/night.css +21 -0
  103. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/rubyblue.css +21 -0
  104. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/solarized.css +207 -0
  105. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/twilight.css +25 -0
  106. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/vibrant-ink.css +27 -0
  107. data/vendor/assets/ckeditor/ckeditor/plugins/codemirror/theme/xq-dark.css +46 -0
  108. data/vendor/assets/ckeditor/ckeditor/plugins/colordialog/dialogs/colordialog.js +13 -7
  109. data/vendor/assets/ckeditor/ckeditor/plugins/dialog/dialogDefinition.js +4 -4
  110. data/vendor/assets/ckeditor/ckeditor/plugins/div/dialogs/div.js +9 -8
  111. data/vendor/assets/ckeditor/ckeditor/{images → plugins/fakeobjects/images}/spacer.gif +0 -0
  112. data/vendor/assets/ckeditor/ckeditor/plugins/find/dialogs/find.js +24 -10
  113. data/vendor/assets/ckeditor/ckeditor/plugins/flash/dialogs/flash.js +23 -9
  114. data/vendor/assets/ckeditor/ckeditor/plugins/flash/images/placeholder.png +0 -0
  115. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/button.js +8 -6
  116. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/checkbox.js +8 -6
  117. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/form.js +8 -6
  118. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/hiddenfield.js +8 -6
  119. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/radio.js +8 -6
  120. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/select.js +20 -9
  121. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/textarea.js +8 -6
  122. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/textfield.js +10 -6
  123. data/vendor/assets/ckeditor/ckeditor/plugins/forms/images/hiddenfield.gif +0 -0
  124. data/vendor/assets/ckeditor/ckeditor/plugins/icons.png +0 -0
  125. data/vendor/assets/ckeditor/ckeditor/plugins/iframe/dialogs/iframe.js +10 -7
  126. data/vendor/assets/ckeditor/ckeditor/plugins/iframe/images/placeholder.png +0 -0
  127. data/vendor/assets/ckeditor/ckeditor/plugins/image/dialogs/image.js +41 -13
  128. data/vendor/assets/ckeditor/ckeditor/{_source/skins/kama → plugins/image}/images/noimage.png +0 -0
  129. data/vendor/assets/ckeditor/ckeditor/plugins/link/dialogs/anchor.js +8 -6
  130. data/vendor/assets/ckeditor/ckeditor/plugins/link/dialogs/link.js +36 -12
  131. data/vendor/assets/ckeditor/ckeditor/plugins/link/images/anchor.png +0 -0
  132. data/vendor/assets/ckeditor/ckeditor/plugins/liststyle/dialogs/liststyle.js +10 -7
  133. data/vendor/assets/ckeditor/ckeditor/plugins/magicline/images/icon.png +0 -0
  134. data/vendor/assets/ckeditor/ckeditor/plugins/pagebreak/images/pagebreak.gif +0 -0
  135. data/vendor/assets/ckeditor/ckeditor/plugins/pastefromword/filter/default.js +31 -11
  136. data/vendor/assets/ckeditor/ckeditor/plugins/preview/preview.html +10 -0
  137. data/vendor/assets/ckeditor/ckeditor/plugins/scayt/LICENSE.md +28 -0
  138. data/vendor/assets/ckeditor/ckeditor/plugins/scayt/README.md +25 -0
  139. data/vendor/assets/ckeditor/ckeditor/plugins/scayt/dialogs/options.js +19 -8
  140. data/vendor/assets/ckeditor/ckeditor/plugins/scayt/dialogs/toolbar.css +70 -5
  141. data/vendor/assets/ckeditor/ckeditor/plugins/showblocks/images/block_address.png +0 -0
  142. data/vendor/assets/ckeditor/ckeditor/plugins/showblocks/images/block_blockquote.png +0 -0
  143. data/vendor/assets/ckeditor/ckeditor/plugins/showblocks/images/block_div.png +0 -0
  144. data/vendor/assets/ckeditor/ckeditor/plugins/showblocks/images/block_h1.png +0 -0
  145. data/vendor/assets/ckeditor/ckeditor/plugins/showblocks/images/block_h2.png +0 -0
  146. data/vendor/assets/ckeditor/ckeditor/plugins/showblocks/images/block_h3.png +0 -0
  147. data/vendor/assets/ckeditor/ckeditor/plugins/showblocks/images/block_h4.png +0 -0
  148. data/vendor/assets/ckeditor/ckeditor/plugins/showblocks/images/block_h5.png +0 -0
  149. data/vendor/assets/ckeditor/ckeditor/plugins/showblocks/images/block_h6.png +0 -0
  150. data/vendor/assets/ckeditor/ckeditor/plugins/showblocks/images/block_p.png +0 -0
  151. data/vendor/assets/ckeditor/ckeditor/plugins/showblocks/images/block_pre.png +0 -0
  152. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/dialogs/smiley.js +10 -7
  153. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
  154. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
  155. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
  156. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
  157. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
  158. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
  159. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
  160. data/vendor/assets/ckeditor/ckeditor/{_source/plugins/smiley/images/embaressed_smile.gif → plugins/smiley/images/embarrassed_smile.gif} +0 -0
  161. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/envelope.gif +0 -0
  162. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/heart.gif +0 -0
  163. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/kiss.gif +0 -0
  164. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
  165. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
  166. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
  167. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
  168. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
  169. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
  170. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
  171. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
  172. data/vendor/assets/ckeditor/ckeditor/{_source/plugins/smiley/images/tounge_smile.gif → plugins/smiley/images/tongue_smile.gif} +0 -0
  173. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
  174. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  175. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
  176. data/vendor/assets/ckeditor/ckeditor/{_source/plugins/specialchar → plugins/specialchar/dialogs}/lang/_translationstatus.txt +2 -1
  177. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/ca.js +13 -0
  178. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/cs.js +13 -0
  179. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/cy.js +14 -0
  180. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/de.js +13 -0
  181. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/el.js +13 -0
  182. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/en.js +13 -0
  183. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/eo.js +12 -0
  184. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/et.js +13 -0
  185. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/fa.js +13 -0
  186. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/fi.js +13 -0
  187. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/fr.js +11 -0
  188. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/he.js +13 -0
  189. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/hr.js +13 -0
  190. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/it.js +14 -0
  191. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/ku.js +14 -0
  192. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/lv.js +13 -0
  193. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/nb.js +11 -0
  194. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/nl.js +13 -0
  195. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/no.js +11 -0
  196. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js +11 -0
  197. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/sk.js +13 -0
  198. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/sv.js +11 -0
  199. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/tr.js +12 -0
  200. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/ug.js +13 -0
  201. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js +9 -0
  202. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/specialchar.js +14 -7
  203. data/vendor/assets/ckeditor/ckeditor/plugins/table/dialogs/table.js +20 -9
  204. data/vendor/assets/ckeditor/ckeditor/plugins/tabletools/dialogs/tableCell.js +16 -8
  205. data/vendor/assets/ckeditor/ckeditor/plugins/templates/dialogs/templates.css +84 -0
  206. data/vendor/assets/ckeditor/ckeditor/plugins/templates/dialogs/templates.js +10 -7
  207. data/vendor/assets/ckeditor/ckeditor/plugins/templates/templates/default.js +6 -6
  208. data/vendor/assets/ckeditor/ckeditor/plugins/templates/templates/images/template1.gif +0 -0
  209. data/vendor/assets/ckeditor/ckeditor/plugins/templates/templates/images/template2.gif +0 -0
  210. data/vendor/assets/ckeditor/ckeditor/plugins/templates/templates/images/template3.gif +0 -0
  211. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/LICENSE.md +28 -0
  212. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/README.md +25 -0
  213. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/dialogs/ciframe.html +0 -0
  214. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +0 -0
  215. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/dialogs/wsc.css +77 -1
  216. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/dialogs/wsc.js +11 -7
  217. data/vendor/assets/ckeditor/ckeditor/samples/ajax.html +82 -0
  218. data/vendor/assets/ckeditor/ckeditor/{_samples → samples}/api.html +93 -78
  219. data/vendor/assets/ckeditor/ckeditor/samples/appendto.html +57 -0
  220. data/vendor/assets/ckeditor/ckeditor/samples/assets/inlineall/logo.png +0 -0
  221. data/vendor/assets/ckeditor/ckeditor/{_samples/assets/output_xhtml.css → samples/assets/outputxhtml/outputxhtml.css} +1 -1
  222. data/vendor/assets/ckeditor/ckeditor/{_samples/assets/_posteddata.php → samples/assets/posteddata.php} +9 -9
  223. data/vendor/assets/ckeditor/ckeditor/samples/assets/sample.css +3 -0
  224. data/vendor/assets/ckeditor/ckeditor/samples/assets/sample.jpg +0 -0
  225. data/vendor/assets/ckeditor/ckeditor/samples/assets/uilanguages/languages.js +7 -0
  226. data/vendor/assets/ckeditor/ckeditor/samples/divreplace.html +141 -0
  227. data/vendor/assets/ckeditor/ckeditor/samples/index.html +122 -0
  228. data/vendor/assets/ckeditor/ckeditor/samples/inlineall.html +311 -0
  229. data/vendor/assets/ckeditor/ckeditor/samples/inlinebycode.html +122 -0
  230. data/vendor/assets/ckeditor/ckeditor/samples/plugins/dialog/assets/my_dialog.js +48 -0
  231. data/vendor/assets/ckeditor/ckeditor/samples/plugins/dialog/dialog.html +187 -0
  232. data/vendor/assets/ckeditor/ckeditor/samples/plugins/enterkey/enterkey.html +103 -0
  233. data/vendor/assets/ckeditor/ckeditor/{_samples/assets/output_for_flash.fla → samples/plugins/htmlwriter/assets/outputforflash/outputforflash.fla} +0 -0
  234. data/vendor/assets/ckeditor/ckeditor/{_samples/assets/output_for_flash.swf → samples/plugins/htmlwriter/assets/outputforflash/outputforflash.swf} +0 -0
  235. data/vendor/assets/ckeditor/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js +18 -0
  236. data/vendor/assets/ckeditor/ckeditor/samples/plugins/htmlwriter/outputforflash.html +280 -0
  237. data/vendor/assets/ckeditor/ckeditor/samples/plugins/htmlwriter/outputhtml.html +237 -0
  238. data/vendor/assets/ckeditor/ckeditor/samples/plugins/magicline/magicline.html +203 -0
  239. data/vendor/assets/ckeditor/ckeditor/{_samples/assets/parsesample.css → samples/plugins/stylesheetparser/assets/sample.css} +0 -0
  240. data/vendor/assets/ckeditor/ckeditor/samples/plugins/stylesheetparser/stylesheetparser.html +82 -0
  241. data/vendor/assets/ckeditor/ckeditor/samples/plugins/toolbar/toolbar.html +200 -0
  242. data/vendor/assets/ckeditor/ckeditor/samples/plugins/wysiwygarea/fullpage.html +71 -0
  243. data/vendor/assets/ckeditor/ckeditor/samples/readonly.html +73 -0
  244. data/vendor/assets/ckeditor/ckeditor/samples/replacebyclass.html +57 -0
  245. data/vendor/assets/ckeditor/ckeditor/samples/replacebycode.html +56 -0
  246. data/vendor/assets/ckeditor/ckeditor/samples/sample.css +333 -0
  247. data/vendor/assets/ckeditor/ckeditor/samples/sample.js +5 -0
  248. data/vendor/assets/ckeditor/ckeditor/{_samples → samples}/sample_posteddata.php +5 -10
  249. data/vendor/assets/ckeditor/ckeditor/samples/tabindex.html +75 -0
  250. data/vendor/assets/ckeditor/ckeditor/samples/uicolor.html +69 -0
  251. data/vendor/assets/ckeditor/ckeditor/samples/uilanguages.html +119 -0
  252. data/vendor/assets/ckeditor/ckeditor/samples/xhtmlstyle.html +219 -0
  253. data/vendor/assets/ckeditor/ckeditor/skins/moono/dialog.css +5 -0
  254. data/vendor/assets/ckeditor/ckeditor/skins/moono/dialog_ie.css +5 -0
  255. data/vendor/assets/ckeditor/ckeditor/skins/moono/dialog_ie7.css +5 -0
  256. data/vendor/assets/ckeditor/ckeditor/skins/moono/dialog_ie8.css +5 -0
  257. data/vendor/assets/ckeditor/ckeditor/skins/moono/dialog_iequirks.css +5 -0
  258. data/vendor/assets/ckeditor/ckeditor/skins/moono/dialog_opera.css +5 -0
  259. data/vendor/assets/ckeditor/ckeditor/skins/moono/editor.css +5 -0
  260. data/vendor/assets/ckeditor/ckeditor/skins/moono/editor_gecko.css +5 -0
  261. data/vendor/assets/ckeditor/ckeditor/skins/moono/editor_ie.css +5 -0
  262. data/vendor/assets/ckeditor/ckeditor/skins/moono/editor_ie7.css +5 -0
  263. data/vendor/assets/ckeditor/ckeditor/skins/moono/editor_ie8.css +5 -0
  264. data/vendor/assets/ckeditor/ckeditor/skins/moono/editor_iequirks.css +5 -0
  265. data/vendor/assets/ckeditor/ckeditor/skins/moono/icons.png +0 -0
  266. data/vendor/assets/ckeditor/ckeditor/skins/moono/images/arrow.png +0 -0
  267. data/vendor/assets/ckeditor/ckeditor/skins/moono/images/close.png +0 -0
  268. data/vendor/assets/ckeditor/ckeditor/skins/moono/images/mini.png +0 -0
  269. data/vendor/assets/ckeditor/ckeditor/skins/moono/readme.md +51 -0
  270. data/vendor/assets/ckeditor/ckeditor/styles.js +112 -0
  271. metadata +190 -795
  272. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/MediaEmbed/dialogs/mediaembed.html +0 -14
  273. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/MediaEmbed/images/icon.gif +0 -0
  274. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/MediaEmbed/plugin.js +0 -61
  275. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/audio/README +0 -0
  276. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/audio/dialogs/audio.js +0 -265
  277. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/audio/docs/install.html +0 -72
  278. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/audio/docs/styles.css +0 -67
  279. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/audio/images/icon.png +0 -0
  280. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/audio/images/placeholder.png +0 -0
  281. data/vendor/assets/ckeditor/ckeditor-contrib/plugins/audio/plugin.js +0 -165
  282. data/vendor/assets/ckeditor/ckeditor/CHANGES.html +0 -1503
  283. data/vendor/assets/ckeditor/ckeditor/INSTALL.html +0 -92
  284. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/application.xml +0 -32
  285. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/run.bat +0 -9
  286. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/run.sh +0 -8
  287. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/sample.html +0 -45
  288. data/vendor/assets/ckeditor/ckeditor/_samples/ajax.html +0 -98
  289. data/vendor/assets/ckeditor/ckeditor/_samples/api_dialog.html +0 -198
  290. data/vendor/assets/ckeditor/ckeditor/_samples/api_dialog/my_dialog.js +0 -28
  291. data/vendor/assets/ckeditor/ckeditor/_samples/asp/advanced.asp +0 -105
  292. data/vendor/assets/ckeditor/ckeditor/_samples/asp/events.asp +0 -136
  293. data/vendor/assets/ckeditor/ckeditor/_samples/asp/index.html +0 -103
  294. data/vendor/assets/ckeditor/ckeditor/_samples/asp/replace.asp +0 -72
  295. data/vendor/assets/ckeditor/ckeditor/_samples/asp/replaceall.asp +0 -77
  296. data/vendor/assets/ckeditor/ckeditor/_samples/asp/sample_posteddata.asp +0 -46
  297. data/vendor/assets/ckeditor/ckeditor/_samples/asp/standalone.asp +0 -72
  298. data/vendor/assets/ckeditor/ckeditor/_samples/assets/swfobject.js +0 -18
  299. data/vendor/assets/ckeditor/ckeditor/_samples/autogrow.html +0 -108
  300. data/vendor/assets/ckeditor/ckeditor/_samples/bbcode.html +0 -125
  301. data/vendor/assets/ckeditor/ckeditor/_samples/devtools.html +0 -94
  302. data/vendor/assets/ckeditor/ckeditor/_samples/divreplace.html +0 -154
  303. data/vendor/assets/ckeditor/ckeditor/_samples/enterkey.html +0 -115
  304. data/vendor/assets/ckeditor/ckeditor/_samples/fullpage.html +0 -82
  305. data/vendor/assets/ckeditor/ckeditor/_samples/index.html +0 -116
  306. data/vendor/assets/ckeditor/ckeditor/_samples/jqueryadapter.html +0 -99
  307. data/vendor/assets/ckeditor/ckeditor/_samples/output_for_flash.html +0 -275
  308. data/vendor/assets/ckeditor/ckeditor/_samples/output_html.html +0 -285
  309. data/vendor/assets/ckeditor/ckeditor/_samples/output_xhtml.html +0 -181
  310. data/vendor/assets/ckeditor/ckeditor/_samples/php/advanced.php +0 -120
  311. data/vendor/assets/ckeditor/ckeditor/_samples/php/events.php +0 -153
  312. data/vendor/assets/ckeditor/ckeditor/_samples/php/index.html +0 -47
  313. data/vendor/assets/ckeditor/ckeditor/_samples/php/replace.php +0 -87
  314. data/vendor/assets/ckeditor/ckeditor/_samples/php/replaceall.php +0 -88
  315. data/vendor/assets/ckeditor/ckeditor/_samples/php/standalone.php +0 -83
  316. data/vendor/assets/ckeditor/ckeditor/_samples/placeholder.html +0 -81
  317. data/vendor/assets/ckeditor/ckeditor/_samples/readonly.html +0 -91
  318. data/vendor/assets/ckeditor/ckeditor/_samples/replacebyclass.html +0 -64
  319. data/vendor/assets/ckeditor/ckeditor/_samples/replacebycode.html +0 -97
  320. data/vendor/assets/ckeditor/ckeditor/_samples/sample.css +0 -163
  321. data/vendor/assets/ckeditor/ckeditor/_samples/sample.js +0 -65
  322. data/vendor/assets/ckeditor/ckeditor/_samples/sharedspaces.html +0 -153
  323. data/vendor/assets/ckeditor/ckeditor/_samples/skins.html +0 -110
  324. data/vendor/assets/ckeditor/ckeditor/_samples/stylesheetparser.html +0 -93
  325. data/vendor/assets/ckeditor/ckeditor/_samples/tableresize.html +0 -115
  326. data/vendor/assets/ckeditor/ckeditor/_samples/ui_color.html +0 -129
  327. data/vendor/assets/ckeditor/ckeditor/_samples/ui_languages.html +0 -134
  328. data/vendor/assets/ckeditor/ckeditor/_source/adapters/jquery.js +0 -306
  329. data/vendor/assets/ckeditor/ckeditor/_source/core/_bootstrap.js +0 -87
  330. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor.js +0 -141
  331. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor_base.js +0 -235
  332. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor_basic.js +0 -238
  333. data/vendor/assets/ckeditor/ckeditor/_source/core/command.js +0 -225
  334. data/vendor/assets/ckeditor/ckeditor/_source/core/commanddefinition.js +0 -129
  335. data/vendor/assets/ckeditor/ckeditor/_source/core/config.js +0 -447
  336. data/vendor/assets/ckeditor/ckeditor/_source/core/dataprocessor.js +0 -65
  337. data/vendor/assets/ckeditor/ckeditor/_source/core/dom.js +0 -20
  338. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/comment.js +0 -44
  339. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/document.js +0 -251
  340. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/documentfragment.js +0 -49
  341. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/domobject.js +0 -258
  342. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/element.js +0 -1796
  343. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/elementpath.js +0 -117
  344. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/event.js +0 -145
  345. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/node.js +0 -691
  346. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/nodelist.js +0 -26
  347. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/range.js +0 -2068
  348. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/rangelist.js +0 -213
  349. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/text.js +0 -128
  350. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/walker.js +0 -496
  351. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/window.js +0 -96
  352. data/vendor/assets/ckeditor/ckeditor/_source/core/dtd.js +0 -266
  353. data/vendor/assets/ckeditor/ckeditor/_source/core/editor.js +0 -1059
  354. data/vendor/assets/ckeditor/ckeditor/_source/core/editor_basic.js +0 -186
  355. data/vendor/assets/ckeditor/ckeditor/_source/core/env.js +0 -305
  356. data/vendor/assets/ckeditor/ckeditor/_source/core/event.js +0 -342
  357. data/vendor/assets/ckeditor/ckeditor/_source/core/eventInfo.js +0 -120
  358. data/vendor/assets/ckeditor/ckeditor/_source/core/focusmanager.js +0 -152
  359. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser.js +0 -224
  360. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/basicwriter.js +0 -145
  361. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/cdata.js +0 -43
  362. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/comment.js +0 -60
  363. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/element.js +0 -308
  364. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/filter.js +0 -288
  365. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/fragment.js +0 -537
  366. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/text.js +0 -53
  367. data/vendor/assets/ckeditor/ckeditor/_source/core/lang.js +0 -157
  368. data/vendor/assets/ckeditor/ckeditor/_source/core/loader.js +0 -240
  369. data/vendor/assets/ckeditor/ckeditor/_source/core/plugindefinition.js +0 -83
  370. data/vendor/assets/ckeditor/ckeditor/_source/core/plugins.js +0 -103
  371. data/vendor/assets/ckeditor/ckeditor/_source/core/resourcemanager.js +0 -238
  372. data/vendor/assets/ckeditor/ckeditor/_source/core/scriptloader.js +0 -180
  373. data/vendor/assets/ckeditor/ckeditor/_source/core/skins.js +0 -184
  374. data/vendor/assets/ckeditor/ckeditor/_source/core/themes.js +0 -19
  375. data/vendor/assets/ckeditor/ckeditor/_source/core/tools.js +0 -763
  376. data/vendor/assets/ckeditor/ckeditor/_source/core/ui.js +0 -128
  377. data/vendor/assets/ckeditor/ckeditor/_source/lang/_languages.js +0 -84
  378. data/vendor/assets/ckeditor/ckeditor/_source/lang/_translationstatus.txt +0 -63
  379. data/vendor/assets/ckeditor/ckeditor/_source/lang/af.js +0 -815
  380. data/vendor/assets/ckeditor/ckeditor/_source/lang/ar.js +0 -815
  381. data/vendor/assets/ckeditor/ckeditor/_source/lang/bg.js +0 -815
  382. data/vendor/assets/ckeditor/ckeditor/_source/lang/bn.js +0 -815
  383. data/vendor/assets/ckeditor/ckeditor/_source/lang/bs.js +0 -815
  384. data/vendor/assets/ckeditor/ckeditor/_source/lang/ca.js +0 -815
  385. data/vendor/assets/ckeditor/ckeditor/_source/lang/cs.js +0 -815
  386. data/vendor/assets/ckeditor/ckeditor/_source/lang/cy.js +0 -815
  387. data/vendor/assets/ckeditor/ckeditor/_source/lang/da.js +0 -815
  388. data/vendor/assets/ckeditor/ckeditor/_source/lang/de.js +0 -815
  389. data/vendor/assets/ckeditor/ckeditor/_source/lang/el.js +0 -815
  390. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-au.js +0 -815
  391. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-ca.js +0 -815
  392. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-gb.js +0 -815
  393. data/vendor/assets/ckeditor/ckeditor/_source/lang/en.js +0 -815
  394. data/vendor/assets/ckeditor/ckeditor/_source/lang/eo.js +0 -815
  395. data/vendor/assets/ckeditor/ckeditor/_source/lang/es.js +0 -815
  396. data/vendor/assets/ckeditor/ckeditor/_source/lang/et.js +0 -815
  397. data/vendor/assets/ckeditor/ckeditor/_source/lang/eu.js +0 -815
  398. data/vendor/assets/ckeditor/ckeditor/_source/lang/fa.js +0 -815
  399. data/vendor/assets/ckeditor/ckeditor/_source/lang/fi.js +0 -815
  400. data/vendor/assets/ckeditor/ckeditor/_source/lang/fo.js +0 -815
  401. data/vendor/assets/ckeditor/ckeditor/_source/lang/fr-ca.js +0 -815
  402. data/vendor/assets/ckeditor/ckeditor/_source/lang/fr.js +0 -815
  403. data/vendor/assets/ckeditor/ckeditor/_source/lang/gl.js +0 -815
  404. data/vendor/assets/ckeditor/ckeditor/_source/lang/gu.js +0 -815
  405. data/vendor/assets/ckeditor/ckeditor/_source/lang/he.js +0 -815
  406. data/vendor/assets/ckeditor/ckeditor/_source/lang/hi.js +0 -815
  407. data/vendor/assets/ckeditor/ckeditor/_source/lang/hr.js +0 -815
  408. data/vendor/assets/ckeditor/ckeditor/_source/lang/hu.js +0 -815
  409. data/vendor/assets/ckeditor/ckeditor/_source/lang/is.js +0 -815
  410. data/vendor/assets/ckeditor/ckeditor/_source/lang/it.js +0 -815
  411. data/vendor/assets/ckeditor/ckeditor/_source/lang/ja.js +0 -815
  412. data/vendor/assets/ckeditor/ckeditor/_source/lang/ka.js +0 -815
  413. data/vendor/assets/ckeditor/ckeditor/_source/lang/km.js +0 -815
  414. data/vendor/assets/ckeditor/ckeditor/_source/lang/ko.js +0 -815
  415. data/vendor/assets/ckeditor/ckeditor/_source/lang/lt.js +0 -815
  416. data/vendor/assets/ckeditor/ckeditor/_source/lang/lv.js +0 -815
  417. data/vendor/assets/ckeditor/ckeditor/_source/lang/mk.js +0 -814
  418. data/vendor/assets/ckeditor/ckeditor/_source/lang/mn.js +0 -815
  419. data/vendor/assets/ckeditor/ckeditor/_source/lang/ms.js +0 -815
  420. data/vendor/assets/ckeditor/ckeditor/_source/lang/nb.js +0 -815
  421. data/vendor/assets/ckeditor/ckeditor/_source/lang/nl.js +0 -815
  422. data/vendor/assets/ckeditor/ckeditor/_source/lang/no.js +0 -815
  423. data/vendor/assets/ckeditor/ckeditor/_source/lang/pl.js +0 -815
  424. data/vendor/assets/ckeditor/ckeditor/_source/lang/pt-br.js +0 -814
  425. data/vendor/assets/ckeditor/ckeditor/_source/lang/pt.js +0 -815
  426. data/vendor/assets/ckeditor/ckeditor/_source/lang/ro.js +0 -815
  427. data/vendor/assets/ckeditor/ckeditor/_source/lang/ru.js +0 -815
  428. data/vendor/assets/ckeditor/ckeditor/_source/lang/sk.js +0 -815
  429. data/vendor/assets/ckeditor/ckeditor/_source/lang/sl.js +0 -815
  430. data/vendor/assets/ckeditor/ckeditor/_source/lang/sr-latn.js +0 -815
  431. data/vendor/assets/ckeditor/ckeditor/_source/lang/sr.js +0 -815
  432. data/vendor/assets/ckeditor/ckeditor/_source/lang/sv.js +0 -814
  433. data/vendor/assets/ckeditor/ckeditor/_source/lang/th.js +0 -815
  434. data/vendor/assets/ckeditor/ckeditor/_source/lang/tr.js +0 -814
  435. data/vendor/assets/ckeditor/ckeditor/_source/lang/ug.js +0 -814
  436. data/vendor/assets/ckeditor/ckeditor/_source/lang/uk.js +0 -815
  437. data/vendor/assets/ckeditor/ckeditor/_source/lang/vi.js +0 -815
  438. data/vendor/assets/ckeditor/ckeditor/_source/lang/zh-cn.js +0 -815
  439. data/vendor/assets/ckeditor/ckeditor/_source/lang/zh.js +0 -815
  440. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/dialogs/a11yhelp.js +0 -222
  441. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/cs.js +0 -89
  442. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/cy.js +0 -89
  443. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/da.js +0 -89
  444. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/de.js +0 -89
  445. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/el.js +0 -89
  446. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/en.js +0 -108
  447. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/eo.js +0 -89
  448. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/fa.js +0 -89
  449. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/fi.js +0 -89
  450. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/fr.js +0 -89
  451. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/gu.js +0 -89
  452. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/he.js +0 -89
  453. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/it.js +0 -89
  454. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/mk.js +0 -89
  455. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/nb.js +0 -89
  456. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/nl.js +0 -89
  457. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/no.js +0 -89
  458. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/tr.js +0 -89
  459. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/ug.js +0 -89
  460. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/vi.js +0 -89
  461. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/zh-cn.js +0 -89
  462. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/plugin.js +0 -47
  463. data/vendor/assets/ckeditor/ckeditor/_source/plugins/about/dialogs/about.js +0 -76
  464. data/vendor/assets/ckeditor/ckeditor/_source/plugins/about/dialogs/logo_ckeditor.png +0 -0
  465. data/vendor/assets/ckeditor/ckeditor/_source/plugins/about/plugin.js +0 -24
  466. data/vendor/assets/ckeditor/ckeditor/_source/plugins/adobeair/plugin.js +0 -228
  467. data/vendor/assets/ckeditor/ckeditor/_source/plugins/ajax/plugin.js +0 -152
  468. data/vendor/assets/ckeditor/ckeditor/_source/plugins/autogrow/plugin.js +0 -141
  469. data/vendor/assets/ckeditor/ckeditor/_source/plugins/basicstyles/plugin.js +0 -129
  470. data/vendor/assets/ckeditor/ckeditor/_source/plugins/bbcode/plugin.js +0 -931
  471. data/vendor/assets/ckeditor/ckeditor/_source/plugins/bidi/plugin.js +0 -334
  472. data/vendor/assets/ckeditor/ckeditor/_source/plugins/blockquote/plugin.js +0 -305
  473. data/vendor/assets/ckeditor/ckeditor/_source/plugins/button/plugin.js +0 -290
  474. data/vendor/assets/ckeditor/ckeditor/_source/plugins/clipboard/dialogs/paste.js +0 -223
  475. data/vendor/assets/ckeditor/ckeditor/_source/plugins/clipboard/plugin.js +0 -479
  476. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colorbutton/plugin.js +0 -300
  477. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colordialog/dialogs/colordialog.js +0 -387
  478. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colordialog/plugin.js +0 -15
  479. data/vendor/assets/ckeditor/ckeditor/_source/plugins/contextmenu/plugin.js +0 -179
  480. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/_translationstatus.txt +0 -27
  481. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/bg.js +0 -16
  482. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/cs.js +0 -16
  483. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/cy.js +0 -16
  484. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/da.js +0 -16
  485. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/de.js +0 -16
  486. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/el.js +0 -16
  487. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/en.js +0 -16
  488. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/eo.js +0 -16
  489. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/et.js +0 -16
  490. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/fa.js +0 -16
  491. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/fi.js +0 -16
  492. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/fr.js +0 -16
  493. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/gu.js +0 -16
  494. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/he.js +0 -16
  495. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/hr.js +0 -16
  496. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/it.js +0 -16
  497. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/nb.js +0 -16
  498. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/nl.js +0 -16
  499. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/no.js +0 -16
  500. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/pl.js +0 -16
  501. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/tr.js +0 -16
  502. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/ug.js +0 -16
  503. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/uk.js +0 -16
  504. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/vi.js +0 -16
  505. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/zh-cn.js +0 -16
  506. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/plugin.js +0 -173
  507. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialog/dialogDefinition.js +0 -1166
  508. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialog/plugin.js +0 -3319
  509. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialogadvtab/plugin.js +0 -208
  510. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialogui/plugin.js +0 -1549
  511. data/vendor/assets/ckeditor/ckeditor/_source/plugins/div/dialogs/div.js +0 -535
  512. data/vendor/assets/ckeditor/ckeditor/_source/plugins/div/plugin.js +0 -121
  513. data/vendor/assets/ckeditor/ckeditor/_source/plugins/docprops/dialogs/docprops.js +0 -674
  514. data/vendor/assets/ckeditor/ckeditor/_source/plugins/docprops/plugin.js +0 -22
  515. data/vendor/assets/ckeditor/ckeditor/_source/plugins/domiterator/plugin.js +0 -366
  516. data/vendor/assets/ckeditor/ckeditor/_source/plugins/editingblock/plugin.js +0 -278
  517. data/vendor/assets/ckeditor/ckeditor/_source/plugins/elementspath/plugin.js +0 -218
  518. data/vendor/assets/ckeditor/ckeditor/_source/plugins/enterkey/plugin.js +0 -433
  519. data/vendor/assets/ckeditor/ckeditor/_source/plugins/entities/plugin.js +0 -254
  520. data/vendor/assets/ckeditor/ckeditor/_source/plugins/fakeobjects/plugin.js +0 -175
  521. data/vendor/assets/ckeditor/ckeditor/_source/plugins/filebrowser/plugin.js +0 -533
  522. data/vendor/assets/ckeditor/ckeditor/_source/plugins/find/dialogs/find.js +0 -915
  523. data/vendor/assets/ckeditor/ckeditor/_source/plugins/find/plugin.js +0 -47
  524. data/vendor/assets/ckeditor/ckeditor/_source/plugins/flash/dialogs/flash.js +0 -674
  525. data/vendor/assets/ckeditor/ckeditor/_source/plugins/flash/images/placeholder.png +0 -0
  526. data/vendor/assets/ckeditor/ckeditor/_source/plugins/flash/plugin.js +0 -154
  527. data/vendor/assets/ckeditor/ckeditor/_source/plugins/floatpanel/plugin.js +0 -476
  528. data/vendor/assets/ckeditor/ckeditor/_source/plugins/font/plugin.js +0 -234
  529. data/vendor/assets/ckeditor/ckeditor/_source/plugins/format/plugin.js +0 -197
  530. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/button.js +0 -118
  531. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/checkbox.js +0 -153
  532. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/form.js +0 -177
  533. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/hiddenfield.js +0 -100
  534. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/radio.js +0 -135
  535. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/select.js +0 -558
  536. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/textarea.js +0 -135
  537. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/textfield.js +0 -199
  538. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/images/hiddenfield.gif +0 -0
  539. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/plugin.js +0 -288
  540. data/vendor/assets/ckeditor/ckeditor/_source/plugins/horizontalrule/plugin.js +0 -48
  541. data/vendor/assets/ckeditor/ckeditor/_source/plugins/htmldataprocessor/plugin.js +0 -600
  542. data/vendor/assets/ckeditor/ckeditor/_source/plugins/htmlwriter/plugin.js +0 -319
  543. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframe/dialogs/iframe.js +0 -229
  544. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframe/images/placeholder.png +0 -0
  545. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframe/plugin.js +0 -87
  546. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframedialog/plugin.js +0 -188
  547. data/vendor/assets/ckeditor/ckeditor/_source/plugins/image/dialogs/image.js +0 -1406
  548. data/vendor/assets/ckeditor/ckeditor/_source/plugins/image/plugin.js +0 -164
  549. data/vendor/assets/ckeditor/ckeditor/_source/plugins/indent/plugin.js +0 -480
  550. data/vendor/assets/ckeditor/ckeditor/_source/plugins/justify/plugin.js +0 -251
  551. data/vendor/assets/ckeditor/ckeditor/_source/plugins/keystrokes/plugin.js +0 -225
  552. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/dialogs/anchor.js +0 -144
  553. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/dialogs/link.js +0 -1427
  554. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/images/anchor.gif +0 -0
  555. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/plugin.js +0 -374
  556. data/vendor/assets/ckeditor/ckeditor/_source/plugins/list/plugin.js +0 -967
  557. data/vendor/assets/ckeditor/ckeditor/_source/plugins/listblock/plugin.js +0 -260
  558. data/vendor/assets/ckeditor/ckeditor/_source/plugins/liststyle/dialogs/liststyle.js +0 -225
  559. data/vendor/assets/ckeditor/ckeditor/_source/plugins/liststyle/plugin.js +0 -66
  560. data/vendor/assets/ckeditor/ckeditor/_source/plugins/maximize/plugin.js +0 -353
  561. data/vendor/assets/ckeditor/ckeditor/_source/plugins/menu/plugin.js +0 -542
  562. data/vendor/assets/ckeditor/ckeditor/_source/plugins/menubutton/plugin.js +0 -98
  563. data/vendor/assets/ckeditor/ckeditor/_source/plugins/newpage/plugin.js +0 -55
  564. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pagebreak/images/pagebreak.gif +0 -0
  565. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pagebreak/plugin.js +0 -164
  566. data/vendor/assets/ckeditor/ckeditor/_source/plugins/panel/plugin.js +0 -396
  567. data/vendor/assets/ckeditor/ckeditor/_source/plugins/panelbutton/plugin.js +0 -144
  568. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastefromword/filter/default.js +0 -1367
  569. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastefromword/plugin.js +0 -141
  570. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastetext/dialogs/pastetext.js +0 -67
  571. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastetext/plugin.js +0 -98
  572. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/dialogs/placeholder.js +0 -71
  573. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/_translationstatus.txt +0 -26
  574. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/bg.js +0 -16
  575. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/cs.js +0 -16
  576. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/cy.js +0 -16
  577. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/da.js +0 -16
  578. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/de.js +0 -16
  579. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/el.js +0 -16
  580. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/en.js +0 -16
  581. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/eo.js +0 -16
  582. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/et.js +0 -16
  583. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/fa.js +0 -16
  584. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/fi.js +0 -16
  585. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/fr.js +0 -16
  586. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/he.js +0 -16
  587. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/hr.js +0 -16
  588. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/it.js +0 -16
  589. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/nb.js +0 -16
  590. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/nl.js +0 -16
  591. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/no.js +0 -16
  592. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/pl.js +0 -16
  593. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/tr.js +0 -16
  594. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/ug.js +0 -16
  595. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/uk.js +0 -16
  596. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/vi.js +0 -16
  597. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/zh-cn.js +0 -16
  598. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/placeholder.gif +0 -0
  599. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/plugin.js +0 -171
  600. data/vendor/assets/ckeditor/ckeditor/_source/plugins/popup/plugin.js +0 -69
  601. data/vendor/assets/ckeditor/ckeditor/_source/plugins/preview/plugin.js +0 -113
  602. data/vendor/assets/ckeditor/ckeditor/_source/plugins/print/plugin.js +0 -42
  603. data/vendor/assets/ckeditor/ckeditor/_source/plugins/removeformat/plugin.js +0 -185
  604. data/vendor/assets/ckeditor/ckeditor/_source/plugins/resize/plugin.js +0 -169
  605. data/vendor/assets/ckeditor/ckeditor/_source/plugins/richcombo/plugin.js +0 -381
  606. data/vendor/assets/ckeditor/ckeditor/_source/plugins/save/plugin.js +0 -56
  607. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/dialogs/options.js +0 -537
  608. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/dialogs/toolbar.css +0 -71
  609. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/plugin.js +0 -973
  610. data/vendor/assets/ckeditor/ckeditor/_source/plugins/selection/plugin.js +0 -1855
  611. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/images/block_address.png +0 -0
  612. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/images/block_blockquote.png +0 -0
  613. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/images/block_div.png +0 -0
  614. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/images/block_h1.png +0 -0
  615. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/images/block_h2.png +0 -0
  616. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/images/block_h3.png +0 -0
  617. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/images/block_h4.png +0 -0
  618. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/images/block_h5.png +0 -0
  619. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/images/block_h6.png +0 -0
  620. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/images/block_p.png +0 -0
  621. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/images/block_pre.png +0 -0
  622. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/plugin.js +0 -160
  623. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showborders/plugin.js +0 -207
  624. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/dialogs/smiley.js +0 -224
  625. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/angel_smile.gif +0 -0
  626. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/angry_smile.gif +0 -0
  627. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/broken_heart.gif +0 -0
  628. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/confused_smile.gif +0 -0
  629. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/cry_smile.gif +0 -0
  630. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/devil_smile.gif +0 -0
  631. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/envelope.gif +0 -0
  632. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/heart.gif +0 -0
  633. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/kiss.gif +0 -0
  634. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/lightbulb.gif +0 -0
  635. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/omg_smile.gif +0 -0
  636. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/regular_smile.gif +0 -0
  637. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/sad_smile.gif +0 -0
  638. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/shades_smile.gif +0 -0
  639. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/teeth_smile.gif +0 -0
  640. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/thumbs_down.gif +0 -0
  641. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/thumbs_up.gif +0 -0
  642. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  643. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/images/wink_smile.gif +0 -0
  644. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/plugin.js +0 -94
  645. data/vendor/assets/ckeditor/ckeditor/_source/plugins/sourcearea/plugin.js +0 -209
  646. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/dialogs/specialchar.js +0 -350
  647. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/cs.js +0 -126
  648. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/cy.js +0 -126
  649. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/de.js +0 -126
  650. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/en.js +0 -126
  651. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/eo.js +0 -126
  652. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/et.js +0 -126
  653. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/fa.js +0 -126
  654. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/fi.js +0 -126
  655. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/fr.js +0 -126
  656. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/hr.js +0 -126
  657. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/it.js +0 -126
  658. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/nb.js +0 -126
  659. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/nl.js +0 -126
  660. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/no.js +0 -126
  661. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/tr.js +0 -126
  662. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/ug.js +0 -126
  663. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/zh-cn.js +0 -126
  664. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/plugin.js +0 -70
  665. data/vendor/assets/ckeditor/ckeditor/_source/plugins/styles/plugin.js +0 -1706
  666. data/vendor/assets/ckeditor/ckeditor/_source/plugins/styles/styles/default.js +0 -88
  667. data/vendor/assets/ckeditor/ckeditor/_source/plugins/stylescombo/plugin.js +0 -218
  668. data/vendor/assets/ckeditor/ckeditor/_source/plugins/stylesheetparser/plugin.js +0 -148
  669. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tab/plugin.js +0 -367
  670. data/vendor/assets/ckeditor/ckeditor/_source/plugins/table/dialogs/table.js +0 -618
  671. data/vendor/assets/ckeditor/ckeditor/_source/plugins/table/plugin.js +0 -78
  672. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tableresize/plugin.js +0 -443
  673. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tabletools/dialogs/tableCell.js +0 -520
  674. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tabletools/plugin.js +0 -1185
  675. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/dialogs/templates.js +0 -234
  676. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/plugin.js +0 -100
  677. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/templates/default.js +0 -94
  678. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/templates/images/template1.gif +0 -0
  679. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/templates/images/template2.gif +0 -0
  680. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/templates/images/template3.gif +0 -0
  681. data/vendor/assets/ckeditor/ckeditor/_source/plugins/toolbar/plugin.js +0 -545
  682. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/dialogs/uicolor.js +0 -205
  683. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/_translationstatus.txt +0 -27
  684. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/bg.js +0 -15
  685. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/cs.js +0 -15
  686. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/cy.js +0 -15
  687. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/da.js +0 -15
  688. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/de.js +0 -15
  689. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/el.js +0 -15
  690. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/en.js +0 -15
  691. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/eo.js +0 -15
  692. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/et.js +0 -15
  693. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/fa.js +0 -15
  694. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/fi.js +0 -15
  695. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/fr.js +0 -15
  696. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/he.js +0 -15
  697. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/hr.js +0 -15
  698. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/it.js +0 -15
  699. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/mk.js +0 -15
  700. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/nb.js +0 -15
  701. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/nl.js +0 -15
  702. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/no.js +0 -15
  703. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/pl.js +0 -15
  704. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/tr.js +0 -15
  705. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/ug.js +0 -15
  706. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/uk.js +0 -15
  707. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/vi.js +0 -15
  708. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/zh-cn.js +0 -15
  709. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/plugin.js +0 -37
  710. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/uicolor.gif +0 -0
  711. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  712. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  713. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  714. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  715. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/assets/yui.css +0 -15
  716. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/yui.js +0 -71
  717. data/vendor/assets/ckeditor/ckeditor/_source/plugins/undo/plugin.js +0 -593
  718. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/ciframe.html +0 -49
  719. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/tmpFrameset.html +0 -52
  720. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/wsc.css +0 -82
  721. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/wsc.js +0 -192
  722. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/plugin.js +0 -33
  723. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wysiwygarea/plugin.js +0 -1346
  724. data/vendor/assets/ckeditor/ckeditor/_source/plugins/xml/plugin.js +0 -170
  725. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/dialog.css +0 -989
  726. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/editor.css +0 -25
  727. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/elementspath.css +0 -73
  728. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/icons.css +0 -366
  729. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/icons.png +0 -0
  730. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/icons_rtl.png +0 -0
  731. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/images/dialog_sides.gif +0 -0
  732. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/images/dialog_sides.png +0 -0
  733. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/images/dialog_sides_rtl.png +0 -0
  734. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/images/mini.gif +0 -0
  735. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/images/sprites.png +0 -0
  736. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/images/sprites_ie6.png +0 -0
  737. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/images/toolbar_start.gif +0 -0
  738. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/mainui.css +0 -206
  739. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/menu.css +0 -232
  740. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/panel.css +0 -217
  741. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/presets.css +0 -49
  742. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/reset.css +0 -85
  743. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/richcombo.css +0 -287
  744. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/skin.js +0 -236
  745. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/templates.css +0 -88
  746. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/toolbar.css +0 -408
  747. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/dialog.css +0 -891
  748. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/editor.css +0 -25
  749. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/elementspath.css +0 -74
  750. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/icons.css +0 -363
  751. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/icons.png +0 -0
  752. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/icons_rtl.png +0 -0
  753. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/images/dialog_sides.gif +0 -0
  754. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/images/dialog_sides.png +0 -0
  755. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/images/dialog_sides_rtl.png +0 -0
  756. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/images/mini.gif +0 -0
  757. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/images/noimage.png +0 -0
  758. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/images/sprites.png +0 -0
  759. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/images/sprites_ie6.png +0 -0
  760. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/mainui.css +0 -153
  761. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/menu.css +0 -229
  762. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/panel.css +0 -212
  763. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/presets.css +0 -49
  764. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/reset.css +0 -85
  765. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/richcombo.css +0 -309
  766. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/skin.js +0 -74
  767. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/templates.css +0 -87
  768. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/toolbar.css +0 -522
  769. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/dialog.css +0 -907
  770. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/editor.css +0 -25
  771. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/elementspath.css +0 -74
  772. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/icons.css +0 -363
  773. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/icons.png +0 -0
  774. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/icons_rtl.png +0 -0
  775. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/images/dialog_sides.gif +0 -0
  776. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/images/dialog_sides.png +0 -0
  777. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/images/dialog_sides_rtl.png +0 -0
  778. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/images/mini.gif +0 -0
  779. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/images/noimage.png +0 -0
  780. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/images/sprites.png +0 -0
  781. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/images/sprites_ie6.png +0 -0
  782. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/images/toolbar_start.gif +0 -0
  783. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/mainui.css +0 -162
  784. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/menu.css +0 -232
  785. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/panel.css +0 -212
  786. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/presets.css +0 -50
  787. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/reset.css +0 -85
  788. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/richcombo.css +0 -302
  789. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/skin.js +0 -70
  790. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/templates.css +0 -87
  791. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/toolbar.css +0 -465
  792. data/vendor/assets/ckeditor/ckeditor/_source/themes/default/theme.js +0 -407
  793. data/vendor/assets/ckeditor/ckeditor/adapters/jquery.js +0 -6
  794. data/vendor/assets/ckeditor/ckeditor/ckeditor.asp +0 -955
  795. data/vendor/assets/ckeditor/ckeditor/ckeditor.pack +0 -211
  796. data/vendor/assets/ckeditor/ckeditor/ckeditor.php +0 -29
  797. data/vendor/assets/ckeditor/ckeditor/ckeditor_basic.js +0 -8
  798. data/vendor/assets/ckeditor/ckeditor/ckeditor_basic_source.js +0 -20
  799. data/vendor/assets/ckeditor/ckeditor/ckeditor_php4.php +0 -566
  800. data/vendor/assets/ckeditor/ckeditor/ckeditor_php5.php +0 -556
  801. data/vendor/assets/ckeditor/ckeditor/ckeditor_source.js +0 -35
  802. data/vendor/assets/ckeditor/ckeditor/lang/_languages.js +0 -6
  803. data/vendor/assets/ckeditor/ckeditor/lang/_translationstatus.txt +0 -63
  804. data/vendor/assets/ckeditor/ckeditor/lang/af.js +0 -6
  805. data/vendor/assets/ckeditor/ckeditor/lang/ar.js +0 -6
  806. data/vendor/assets/ckeditor/ckeditor/lang/bg.js +0 -6
  807. data/vendor/assets/ckeditor/ckeditor/lang/bn.js +0 -6
  808. data/vendor/assets/ckeditor/ckeditor/lang/bs.js +0 -6
  809. data/vendor/assets/ckeditor/ckeditor/lang/ca.js +0 -6
  810. data/vendor/assets/ckeditor/ckeditor/lang/cs.js +0 -6
  811. data/vendor/assets/ckeditor/ckeditor/lang/cy.js +0 -6
  812. data/vendor/assets/ckeditor/ckeditor/lang/da.js +0 -6
  813. data/vendor/assets/ckeditor/ckeditor/lang/de.js +0 -6
  814. data/vendor/assets/ckeditor/ckeditor/lang/el.js +0 -6
  815. data/vendor/assets/ckeditor/ckeditor/lang/en-au.js +0 -6
  816. data/vendor/assets/ckeditor/ckeditor/lang/en-ca.js +0 -6
  817. data/vendor/assets/ckeditor/ckeditor/lang/en-gb.js +0 -6
  818. data/vendor/assets/ckeditor/ckeditor/lang/eo.js +0 -6
  819. data/vendor/assets/ckeditor/ckeditor/lang/es.js +0 -6
  820. data/vendor/assets/ckeditor/ckeditor/lang/et.js +0 -6
  821. data/vendor/assets/ckeditor/ckeditor/lang/eu.js +0 -6
  822. data/vendor/assets/ckeditor/ckeditor/lang/fa.js +0 -6
  823. data/vendor/assets/ckeditor/ckeditor/lang/fi.js +0 -6
  824. data/vendor/assets/ckeditor/ckeditor/lang/fo.js +0 -6
  825. data/vendor/assets/ckeditor/ckeditor/lang/fr-ca.js +0 -6
  826. data/vendor/assets/ckeditor/ckeditor/lang/fr.js +0 -6
  827. data/vendor/assets/ckeditor/ckeditor/lang/gl.js +0 -6
  828. data/vendor/assets/ckeditor/ckeditor/lang/gu.js +0 -6
  829. data/vendor/assets/ckeditor/ckeditor/lang/he.js +0 -6
  830. data/vendor/assets/ckeditor/ckeditor/lang/hi.js +0 -6
  831. data/vendor/assets/ckeditor/ckeditor/lang/hr.js +0 -6
  832. data/vendor/assets/ckeditor/ckeditor/lang/hu.js +0 -6
  833. data/vendor/assets/ckeditor/ckeditor/lang/is.js +0 -6
  834. data/vendor/assets/ckeditor/ckeditor/lang/it.js +0 -6
  835. data/vendor/assets/ckeditor/ckeditor/lang/ja.js +0 -6
  836. data/vendor/assets/ckeditor/ckeditor/lang/ka.js +0 -6
  837. data/vendor/assets/ckeditor/ckeditor/lang/km.js +0 -6
  838. data/vendor/assets/ckeditor/ckeditor/lang/ko.js +0 -6
  839. data/vendor/assets/ckeditor/ckeditor/lang/lt.js +0 -6
  840. data/vendor/assets/ckeditor/ckeditor/lang/lv.js +0 -6
  841. data/vendor/assets/ckeditor/ckeditor/lang/mk.js +0 -6
  842. data/vendor/assets/ckeditor/ckeditor/lang/mn.js +0 -6
  843. data/vendor/assets/ckeditor/ckeditor/lang/ms.js +0 -6
  844. data/vendor/assets/ckeditor/ckeditor/lang/nb.js +0 -6
  845. data/vendor/assets/ckeditor/ckeditor/lang/nl.js +0 -6
  846. data/vendor/assets/ckeditor/ckeditor/lang/no.js +0 -6
  847. data/vendor/assets/ckeditor/ckeditor/lang/pl.js +0 -6
  848. data/vendor/assets/ckeditor/ckeditor/lang/pt-br.js +0 -6
  849. data/vendor/assets/ckeditor/ckeditor/lang/pt.js +0 -6
  850. data/vendor/assets/ckeditor/ckeditor/lang/ro.js +0 -6
  851. data/vendor/assets/ckeditor/ckeditor/lang/ru.js +0 -6
  852. data/vendor/assets/ckeditor/ckeditor/lang/sk.js +0 -6
  853. data/vendor/assets/ckeditor/ckeditor/lang/sl.js +0 -6
  854. data/vendor/assets/ckeditor/ckeditor/lang/sr-latn.js +0 -6
  855. data/vendor/assets/ckeditor/ckeditor/lang/sr.js +0 -6
  856. data/vendor/assets/ckeditor/ckeditor/lang/sv.js +0 -6
  857. data/vendor/assets/ckeditor/ckeditor/lang/th.js +0 -6
  858. data/vendor/assets/ckeditor/ckeditor/lang/tr.js +0 -6
  859. data/vendor/assets/ckeditor/ckeditor/lang/ug.js +0 -6
  860. data/vendor/assets/ckeditor/ckeditor/lang/uk.js +0 -6
  861. data/vendor/assets/ckeditor/ckeditor/lang/vi.js +0 -6
  862. data/vendor/assets/ckeditor/ckeditor/lang/zh-cn.js +0 -6
  863. data/vendor/assets/ckeditor/ckeditor/lang/zh.js +0 -6
  864. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/_translationstatus.txt +0 -23
  865. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/cs.js +0 -6
  866. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/cy.js +0 -6
  867. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/da.js +0 -6
  868. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/de.js +0 -6
  869. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/el.js +0 -6
  870. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/en.js +0 -6
  871. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/eo.js +0 -6
  872. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/fa.js +0 -6
  873. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/fi.js +0 -6
  874. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/fr.js +0 -6
  875. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/gu.js +0 -6
  876. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/he.js +0 -6
  877. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/it.js +0 -6
  878. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/mk.js +0 -6
  879. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/nb.js +0 -6
  880. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/nl.js +0 -6
  881. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/no.js +0 -6
  882. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/tr.js +0 -6
  883. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/ug.js +0 -6
  884. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/vi.js +0 -6
  885. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/zh-cn.js +0 -6
  886. data/vendor/assets/ckeditor/ckeditor/plugins/adobeair/plugin.js +0 -6
  887. data/vendor/assets/ckeditor/ckeditor/plugins/ajax/plugin.js +0 -6
  888. data/vendor/assets/ckeditor/ckeditor/plugins/autogrow/plugin.js +0 -6
  889. data/vendor/assets/ckeditor/ckeditor/plugins/bbcode/plugin.js +0 -9
  890. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/_translationstatus.txt +0 -27
  891. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/bg.js +0 -6
  892. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/cs.js +0 -6
  893. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/cy.js +0 -6
  894. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/da.js +0 -6
  895. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/de.js +0 -6
  896. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/el.js +0 -6
  897. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/en.js +0 -6
  898. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/eo.js +0 -6
  899. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/et.js +0 -6
  900. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/fa.js +0 -6
  901. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/fi.js +0 -6
  902. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/fr.js +0 -6
  903. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/gu.js +0 -6
  904. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/he.js +0 -6
  905. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/hr.js +0 -6
  906. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/it.js +0 -6
  907. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/nb.js +0 -6
  908. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/nl.js +0 -6
  909. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/no.js +0 -6
  910. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/pl.js +0 -6
  911. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/tr.js +0 -6
  912. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/ug.js +0 -6
  913. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/uk.js +0 -6
  914. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/vi.js +0 -6
  915. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/zh-cn.js +0 -6
  916. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/plugin.js +0 -6
  917. data/vendor/assets/ckeditor/ckeditor/plugins/docprops/dialogs/docprops.js +0 -10
  918. data/vendor/assets/ckeditor/ckeditor/plugins/docprops/plugin.js +0 -6
  919. data/vendor/assets/ckeditor/ckeditor/plugins/iframedialog/plugin.js +0 -6
  920. data/vendor/assets/ckeditor/ckeditor/plugins/link/images/anchor.gif +0 -0
  921. data/vendor/assets/ckeditor/ckeditor/plugins/pastetext/dialogs/pastetext.js +0 -6
  922. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/dialogs/placeholder.js +0 -6
  923. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/_translationstatus.txt +0 -26
  924. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/bg.js +0 -6
  925. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/cs.js +0 -6
  926. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/cy.js +0 -6
  927. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/da.js +0 -6
  928. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/de.js +0 -6
  929. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/el.js +0 -6
  930. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/en.js +0 -6
  931. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/eo.js +0 -6
  932. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/et.js +0 -6
  933. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/fa.js +0 -6
  934. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/fi.js +0 -6
  935. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/fr.js +0 -6
  936. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/he.js +0 -6
  937. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/hr.js +0 -6
  938. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/it.js +0 -6
  939. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/nb.js +0 -6
  940. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/nl.js +0 -6
  941. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/no.js +0 -6
  942. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/pl.js +0 -6
  943. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/tr.js +0 -6
  944. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/ug.js +0 -6
  945. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/uk.js +0 -6
  946. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/vi.js +0 -6
  947. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/zh-cn.js +0 -6
  948. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/placeholder.gif +0 -0
  949. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/plugin.js +0 -6
  950. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/_translationstatus.txt +0 -19
  951. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/cs.js +0 -6
  952. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/cy.js +0 -6
  953. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/de.js +0 -6
  954. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/en.js +0 -6
  955. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/eo.js +0 -6
  956. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/et.js +0 -6
  957. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/fa.js +0 -6
  958. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/fi.js +0 -6
  959. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/fr.js +0 -6
  960. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/hr.js +0 -6
  961. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/it.js +0 -6
  962. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/nb.js +0 -6
  963. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/nl.js +0 -6
  964. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/no.js +0 -6
  965. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/tr.js +0 -6
  966. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/ug.js +0 -6
  967. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/zh-cn.js +0 -6
  968. data/vendor/assets/ckeditor/ckeditor/plugins/styles/styles/default.js +0 -6
  969. data/vendor/assets/ckeditor/ckeditor/plugins/stylesheetparser/plugin.js +0 -6
  970. data/vendor/assets/ckeditor/ckeditor/plugins/tableresize/plugin.js +0 -7
  971. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/dialogs/uicolor.js +0 -7
  972. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/_translationstatus.txt +0 -27
  973. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/bg.js +0 -6
  974. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/cs.js +0 -6
  975. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/cy.js +0 -6
  976. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/da.js +0 -6
  977. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/de.js +0 -6
  978. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/el.js +0 -6
  979. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/en.js +0 -6
  980. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/eo.js +0 -6
  981. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/et.js +0 -6
  982. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/fa.js +0 -6
  983. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/fi.js +0 -6
  984. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/fr.js +0 -6
  985. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/he.js +0 -6
  986. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/hr.js +0 -6
  987. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/it.js +0 -6
  988. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/mk.js +0 -6
  989. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/nb.js +0 -6
  990. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/nl.js +0 -6
  991. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/no.js +0 -6
  992. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/pl.js +0 -6
  993. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/tr.js +0 -6
  994. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/ug.js +0 -6
  995. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/uk.js +0 -6
  996. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/vi.js +0 -6
  997. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/zh-cn.js +0 -6
  998. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/plugin.js +0 -6
  999. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/uicolor.gif +0 -0
  1000. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  1001. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  1002. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  1003. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  1004. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/yui/assets/yui.css +0 -6
  1005. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/yui/yui.js +0 -76
  1006. data/vendor/assets/ckeditor/ckeditor/plugins/xml/plugin.js +0 -6
  1007. data/vendor/assets/ckeditor/ckeditor/skins/kama/dialog.css +0 -10
  1008. data/vendor/assets/ckeditor/ckeditor/skins/kama/editor.css +0 -13
  1009. data/vendor/assets/ckeditor/ckeditor/skins/kama/icons.png +0 -0
  1010. data/vendor/assets/ckeditor/ckeditor/skins/kama/icons_rtl.png +0 -0
  1011. data/vendor/assets/ckeditor/ckeditor/skins/kama/images/dialog_sides.gif +0 -0
  1012. data/vendor/assets/ckeditor/ckeditor/skins/kama/images/dialog_sides.png +0 -0
  1013. data/vendor/assets/ckeditor/ckeditor/skins/kama/images/dialog_sides_rtl.png +0 -0
  1014. data/vendor/assets/ckeditor/ckeditor/skins/kama/images/mini.gif +0 -0
  1015. data/vendor/assets/ckeditor/ckeditor/skins/kama/images/noimage.png +0 -0
  1016. data/vendor/assets/ckeditor/ckeditor/skins/kama/images/sprites.png +0 -0
  1017. data/vendor/assets/ckeditor/ckeditor/skins/kama/images/sprites_ie6.png +0 -0
  1018. data/vendor/assets/ckeditor/ckeditor/skins/kama/images/toolbar_start.gif +0 -0
  1019. data/vendor/assets/ckeditor/ckeditor/skins/kama/skin.js +0 -7
  1020. data/vendor/assets/ckeditor/ckeditor/skins/kama/templates.css +0 -6
  1021. data/vendor/assets/ckeditor/ckeditor/skins/office2003/dialog.css +0 -9
  1022. data/vendor/assets/ckeditor/ckeditor/skins/office2003/editor.css +0 -14
  1023. data/vendor/assets/ckeditor/ckeditor/skins/office2003/icons.png +0 -0
  1024. data/vendor/assets/ckeditor/ckeditor/skins/office2003/icons_rtl.png +0 -0
  1025. data/vendor/assets/ckeditor/ckeditor/skins/office2003/images/dialog_sides.gif +0 -0
  1026. data/vendor/assets/ckeditor/ckeditor/skins/office2003/images/dialog_sides.png +0 -0
  1027. data/vendor/assets/ckeditor/ckeditor/skins/office2003/images/dialog_sides_rtl.png +0 -0
  1028. data/vendor/assets/ckeditor/ckeditor/skins/office2003/images/mini.gif +0 -0
  1029. data/vendor/assets/ckeditor/ckeditor/skins/office2003/images/noimage.png +0 -0
  1030. data/vendor/assets/ckeditor/ckeditor/skins/office2003/images/sprites.png +0 -0
  1031. data/vendor/assets/ckeditor/ckeditor/skins/office2003/images/sprites_ie6.png +0 -0
  1032. data/vendor/assets/ckeditor/ckeditor/skins/office2003/skin.js +0 -6
  1033. data/vendor/assets/ckeditor/ckeditor/skins/office2003/templates.css +0 -6
  1034. data/vendor/assets/ckeditor/ckeditor/skins/v2/dialog.css +0 -9
  1035. data/vendor/assets/ckeditor/ckeditor/skins/v2/editor.css +0 -13
  1036. data/vendor/assets/ckeditor/ckeditor/skins/v2/icons.png +0 -0
  1037. data/vendor/assets/ckeditor/ckeditor/skins/v2/icons_rtl.png +0 -0
  1038. data/vendor/assets/ckeditor/ckeditor/skins/v2/images/dialog_sides.gif +0 -0
  1039. data/vendor/assets/ckeditor/ckeditor/skins/v2/images/dialog_sides.png +0 -0
  1040. data/vendor/assets/ckeditor/ckeditor/skins/v2/images/dialog_sides_rtl.png +0 -0
  1041. data/vendor/assets/ckeditor/ckeditor/skins/v2/images/mini.gif +0 -0
  1042. data/vendor/assets/ckeditor/ckeditor/skins/v2/images/noimage.png +0 -0
  1043. data/vendor/assets/ckeditor/ckeditor/skins/v2/images/sprites.png +0 -0
  1044. data/vendor/assets/ckeditor/ckeditor/skins/v2/images/sprites_ie6.png +0 -0
  1045. data/vendor/assets/ckeditor/ckeditor/skins/v2/images/toolbar_start.gif +0 -0
  1046. data/vendor/assets/ckeditor/ckeditor/skins/v2/skin.js +0 -6
  1047. data/vendor/assets/ckeditor/ckeditor/skins/v2/templates.css +0 -6
  1048. data/vendor/assets/ckeditor/ckeditor/themes/default/theme.js +0 -8
@@ -1,26 +0,0 @@
1
- /*
2
- Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
3
- For licensing, see LICENSE.html or http://ckeditor.com/license
4
- */
5
-
6
- /**
7
- * @class
8
- */
9
- CKEDITOR.dom.nodeList = function( nativeList )
10
- {
11
- this.$ = nativeList;
12
- };
13
-
14
- CKEDITOR.dom.nodeList.prototype =
15
- {
16
- count : function()
17
- {
18
- return this.$.length;
19
- },
20
-
21
- getItem : function( index )
22
- {
23
- var $node = this.$[ index ];
24
- return $node ? new CKEDITOR.dom.node( $node ) : null;
25
- }
26
- };
@@ -1,2068 +0,0 @@
1
- /*
2
- Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
3
- For licensing, see LICENSE.html or http://ckeditor.com/license
4
- */
5
-
6
- /**
7
- * Creates a CKEDITOR.dom.range instance that can be used inside a specific
8
- * DOM Document.
9
- * @class Represents a delimited piece of content in a DOM Document.
10
- * It is contiguous in the sense that it can be characterized as selecting all
11
- * of the content between a pair of boundary-points.<br>
12
- * <br>
13
- * This class shares much of the W3C
14
- * <a href="http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html">Document Object Model Range</a>
15
- * ideas and features, adding several range manipulation tools to it, but it's
16
- * not intended to be compatible with it.
17
- * @param {CKEDITOR.dom.document} document The document into which the range
18
- * features will be available.
19
- * @example
20
- * // Create a range for the entire contents of the editor document body.
21
- * var range = new CKEDITOR.dom.range( editor.document );
22
- * range.selectNodeContents( editor.document.getBody() );
23
- * // Delete the contents.
24
- * range.deleteContents();
25
- */
26
- CKEDITOR.dom.range = function( document )
27
- {
28
- /**
29
- * Node within which the range begins.
30
- * @type {CKEDITOR.NODE_ELEMENT|CKEDITOR.NODE_TEXT}
31
- * @example
32
- * var range = new CKEDITOR.dom.range( editor.document );
33
- * range.selectNodeContents( editor.document.getBody() );
34
- * alert( range.startContainer.getName() ); // "body"
35
- */
36
- this.startContainer = null;
37
-
38
- /**
39
- * Offset within the starting node of the range.
40
- * @type {Number}
41
- * @example
42
- * var range = new CKEDITOR.dom.range( editor.document );
43
- * range.selectNodeContents( editor.document.getBody() );
44
- * alert( range.startOffset ); // "0"
45
- */
46
- this.startOffset = null;
47
-
48
- /**
49
- * Node within which the range ends.
50
- * @type {CKEDITOR.NODE_ELEMENT|CKEDITOR.NODE_TEXT}
51
- * @example
52
- * var range = new CKEDITOR.dom.range( editor.document );
53
- * range.selectNodeContents( editor.document.getBody() );
54
- * alert( range.endContainer.getName() ); // "body"
55
- */
56
- this.endContainer = null;
57
-
58
- /**
59
- * Offset within the ending node of the range.
60
- * @type {Number}
61
- * @example
62
- * var range = new CKEDITOR.dom.range( editor.document );
63
- * range.selectNodeContents( editor.document.getBody() );
64
- * alert( range.endOffset ); // == editor.document.getBody().getChildCount()
65
- */
66
- this.endOffset = null;
67
-
68
- /**
69
- * Indicates that this is a collapsed range. A collapsed range has it's
70
- * start and end boudaries at the very same point so nothing is contained
71
- * in it.
72
- * @example
73
- * var range = new CKEDITOR.dom.range( editor.document );
74
- * range.selectNodeContents( editor.document.getBody() );
75
- * alert( range.collapsed ); // "false"
76
- * range.collapse();
77
- * alert( range.collapsed ); // "true"
78
- */
79
- this.collapsed = true;
80
-
81
- /**
82
- * The document within which the range can be used.
83
- * @type {CKEDITOR.dom.document}
84
- * @example
85
- * // Selects the body contents of the range document.
86
- * range.selectNodeContents( range.document.getBody() );
87
- */
88
- this.document = document;
89
- };
90
-
91
- (function()
92
- {
93
- // Updates the "collapsed" property for the given range object.
94
- var updateCollapsed = function( range )
95
- {
96
- range.collapsed = (
97
- range.startContainer &&
98
- range.endContainer &&
99
- range.startContainer.equals( range.endContainer ) &&
100
- range.startOffset == range.endOffset );
101
- };
102
-
103
- // This is a shared function used to delete, extract and clone the range
104
- // contents.
105
- // V2
106
- var execContentsAction = function( range, action, docFrag, mergeThen )
107
- {
108
- range.optimizeBookmark();
109
-
110
- var startNode = range.startContainer;
111
- var endNode = range.endContainer;
112
-
113
- var startOffset = range.startOffset;
114
- var endOffset = range.endOffset;
115
-
116
- var removeStartNode;
117
- var removeEndNode;
118
-
119
- // For text containers, we must simply split the node and point to the
120
- // second part. The removal will be handled by the rest of the code .
121
- if ( endNode.type == CKEDITOR.NODE_TEXT )
122
- endNode = endNode.split( endOffset );
123
- else
124
- {
125
- // If the end container has children and the offset is pointing
126
- // to a child, then we should start from it.
127
- if ( endNode.getChildCount() > 0 )
128
- {
129
- // If the offset points after the last node.
130
- if ( endOffset >= endNode.getChildCount() )
131
- {
132
- // Let's create a temporary node and mark it for removal.
133
- endNode = endNode.append( range.document.createText( '' ) );
134
- removeEndNode = true;
135
- }
136
- else
137
- endNode = endNode.getChild( endOffset );
138
- }
139
- }
140
-
141
- // For text containers, we must simply split the node. The removal will
142
- // be handled by the rest of the code .
143
- if ( startNode.type == CKEDITOR.NODE_TEXT )
144
- {
145
- startNode.split( startOffset );
146
-
147
- // In cases the end node is the same as the start node, the above
148
- // splitting will also split the end, so me must move the end to
149
- // the second part of the split.
150
- if ( startNode.equals( endNode ) )
151
- endNode = startNode.getNext();
152
- }
153
- else
154
- {
155
- // If the start container has children and the offset is pointing
156
- // to a child, then we should start from its previous sibling.
157
-
158
- // If the offset points to the first node, we don't have a
159
- // sibling, so let's use the first one, but mark it for removal.
160
- if ( !startOffset )
161
- {
162
- // Let's create a temporary node and mark it for removal.
163
- startNode = startNode.getFirst().insertBeforeMe( range.document.createText( '' ) );
164
- removeStartNode = true;
165
- }
166
- else if ( startOffset >= startNode.getChildCount() )
167
- {
168
- // Let's create a temporary node and mark it for removal.
169
- startNode = startNode.append( range.document.createText( '' ) );
170
- removeStartNode = true;
171
- }
172
- else
173
- startNode = startNode.getChild( startOffset ).getPrevious();
174
- }
175
-
176
- // Get the parent nodes tree for the start and end boundaries.
177
- var startParents = startNode.getParents();
178
- var endParents = endNode.getParents();
179
-
180
- // Compare them, to find the top most siblings.
181
- var i, topStart, topEnd;
182
-
183
- for ( i = 0 ; i < startParents.length ; i++ )
184
- {
185
- topStart = startParents[ i ];
186
- topEnd = endParents[ i ];
187
-
188
- // The compared nodes will match until we find the top most
189
- // siblings (different nodes that have the same parent).
190
- // "i" will hold the index in the parents array for the top
191
- // most element.
192
- if ( !topStart.equals( topEnd ) )
193
- break;
194
- }
195
-
196
- var clone = docFrag, levelStartNode, levelClone, currentNode, currentSibling;
197
-
198
- // Remove all successive sibling nodes for every node in the
199
- // startParents tree.
200
- for ( var j = i ; j < startParents.length ; j++ )
201
- {
202
- levelStartNode = startParents[j];
203
-
204
- // For Extract and Clone, we must clone this level.
205
- if ( clone && !levelStartNode.equals( startNode ) ) // action = 0 = Delete
206
- levelClone = clone.append( levelStartNode.clone() );
207
-
208
- currentNode = levelStartNode.getNext();
209
-
210
- while ( currentNode )
211
- {
212
- // Stop processing when the current node matches a node in the
213
- // endParents tree or if it is the endNode.
214
- if ( currentNode.equals( endParents[ j ] ) || currentNode.equals( endNode ) )
215
- break;
216
-
217
- // Cache the next sibling.
218
- currentSibling = currentNode.getNext();
219
-
220
- // If cloning, just clone it.
221
- if ( action == 2 ) // 2 = Clone
222
- clone.append( currentNode.clone( true ) );
223
- else
224
- {
225
- // Both Delete and Extract will remove the node.
226
- currentNode.remove();
227
-
228
- // When Extracting, move the removed node to the docFrag.
229
- if ( action == 1 ) // 1 = Extract
230
- clone.append( currentNode );
231
- }
232
-
233
- currentNode = currentSibling;
234
- }
235
-
236
- if ( clone )
237
- clone = levelClone;
238
- }
239
-
240
- clone = docFrag;
241
-
242
- // Remove all previous sibling nodes for every node in the
243
- // endParents tree.
244
- for ( var k = i ; k < endParents.length ; k++ )
245
- {
246
- levelStartNode = endParents[ k ];
247
-
248
- // For Extract and Clone, we must clone this level.
249
- if ( action > 0 && !levelStartNode.equals( endNode ) ) // action = 0 = Delete
250
- levelClone = clone.append( levelStartNode.clone() );
251
-
252
- // The processing of siblings may have already been done by the parent.
253
- if ( !startParents[ k ] || levelStartNode.$.parentNode != startParents[ k ].$.parentNode )
254
- {
255
- currentNode = levelStartNode.getPrevious();
256
-
257
- while ( currentNode )
258
- {
259
- // Stop processing when the current node matches a node in the
260
- // startParents tree or if it is the startNode.
261
- if ( currentNode.equals( startParents[ k ] ) || currentNode.equals( startNode ) )
262
- break;
263
-
264
- // Cache the next sibling.
265
- currentSibling = currentNode.getPrevious();
266
-
267
- // If cloning, just clone it.
268
- if ( action == 2 ) // 2 = Clone
269
- clone.$.insertBefore( currentNode.$.cloneNode( true ), clone.$.firstChild ) ;
270
- else
271
- {
272
- // Both Delete and Extract will remove the node.
273
- currentNode.remove();
274
-
275
- // When Extracting, mode the removed node to the docFrag.
276
- if ( action == 1 ) // 1 = Extract
277
- clone.$.insertBefore( currentNode.$, clone.$.firstChild );
278
- }
279
-
280
- currentNode = currentSibling;
281
- }
282
- }
283
-
284
- if ( clone )
285
- clone = levelClone;
286
- }
287
-
288
- if ( action == 2 ) // 2 = Clone.
289
- {
290
- // No changes in the DOM should be done, so fix the split text (if any).
291
-
292
- var startTextNode = range.startContainer;
293
- if ( startTextNode.type == CKEDITOR.NODE_TEXT )
294
- {
295
- startTextNode.$.data += startTextNode.$.nextSibling.data;
296
- startTextNode.$.parentNode.removeChild( startTextNode.$.nextSibling );
297
- }
298
-
299
- var endTextNode = range.endContainer;
300
- if ( endTextNode.type == CKEDITOR.NODE_TEXT && endTextNode.$.nextSibling )
301
- {
302
- endTextNode.$.data += endTextNode.$.nextSibling.data;
303
- endTextNode.$.parentNode.removeChild( endTextNode.$.nextSibling );
304
- }
305
- }
306
- else
307
- {
308
- // Collapse the range.
309
-
310
- // If a node has been partially selected, collapse the range between
311
- // topStart and topEnd. Otherwise, simply collapse it to the start. (W3C specs).
312
- if ( topStart && topEnd && ( startNode.$.parentNode != topStart.$.parentNode || endNode.$.parentNode != topEnd.$.parentNode ) )
313
- {
314
- var endIndex = topEnd.getIndex();
315
-
316
- // If the start node is to be removed, we must correct the
317
- // index to reflect the removal.
318
- if ( removeStartNode && topEnd.$.parentNode == startNode.$.parentNode )
319
- endIndex--;
320
-
321
- // Merge splitted parents.
322
- if ( mergeThen && topStart.type == CKEDITOR.NODE_ELEMENT )
323
- {
324
- var span = CKEDITOR.dom.element.createFromHtml( '<span ' +
325
- 'data-cke-bookmark="1" style="display:none">&nbsp;</span>', range.document );
326
- span.insertAfter( topStart );
327
- topStart.mergeSiblings( false );
328
- range.moveToBookmark( { startNode : span } );
329
- }
330
- else
331
- range.setStart( topEnd.getParent(), endIndex );
332
- }
333
-
334
- // Collapse it to the start.
335
- range.collapse( true );
336
- }
337
-
338
- // Cleanup any marked node.
339
- if ( removeStartNode )
340
- startNode.remove();
341
-
342
- if ( removeEndNode && endNode.$.parentNode )
343
- endNode.remove();
344
- };
345
-
346
- var inlineChildReqElements = { abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1 };
347
-
348
- // Creates the appropriate node evaluator for the dom walker used inside
349
- // check(Start|End)OfBlock.
350
- function getCheckStartEndBlockEvalFunction( isStart )
351
- {
352
- var hadBr = false, bookmarkEvaluator = CKEDITOR.dom.walker.bookmark( true );
353
- return function( node )
354
- {
355
- // First ignore bookmark nodes.
356
- if ( bookmarkEvaluator( node ) )
357
- return true;
358
-
359
- if ( node.type == CKEDITOR.NODE_TEXT )
360
- {
361
- // If there's any visible text, then we're not at the start.
362
- if ( node.hasAscendant( 'pre' ) || CKEDITOR.tools.trim( node.getText() ).length )
363
- return false;
364
- }
365
- else if ( node.type == CKEDITOR.NODE_ELEMENT )
366
- {
367
- // If there are non-empty inline elements (e.g. <img />), then we're not
368
- // at the start.
369
- if ( !inlineChildReqElements[ node.getName() ] )
370
- {
371
- // If we're working at the end-of-block, forgive the first <br /> in non-IE
372
- // browsers.
373
- if ( !isStart && !CKEDITOR.env.ie && node.getName() == 'br' && !hadBr )
374
- hadBr = true;
375
- else
376
- return false;
377
- }
378
- }
379
- return true;
380
- };
381
- }
382
-
383
-
384
- var isBogus = CKEDITOR.dom.walker.bogus();
385
- // Evaluator for CKEDITOR.dom.element::checkBoundaryOfElement, reject any
386
- // text node and non-empty elements unless it's being bookmark text.
387
- function elementBoundaryEval( checkStart )
388
- {
389
- return function( node )
390
- {
391
- // Tolerant bogus br when checking at the end of block.
392
- // Reject any text node unless it's being bookmark
393
- // OR it's spaces.
394
- // Reject any element unless it's being invisible empty. (#3883)
395
- return !checkStart && isBogus( node ) ||
396
- ( node.type == CKEDITOR.NODE_TEXT ?
397
- !CKEDITOR.tools.trim( node.getText() ) || !!node.getParent().data( 'cke-bookmark' )
398
- : node.getName() in CKEDITOR.dtd.$removeEmpty );
399
- };
400
- }
401
-
402
- var whitespaceEval = new CKEDITOR.dom.walker.whitespaces(),
403
- bookmarkEval = new CKEDITOR.dom.walker.bookmark();
404
-
405
- function nonWhitespaceOrBookmarkEval( node )
406
- {
407
- // Whitespaces and bookmark nodes are to be ignored.
408
- return !whitespaceEval( node ) && !bookmarkEval( node );
409
- }
410
-
411
- CKEDITOR.dom.range.prototype =
412
- {
413
- clone : function()
414
- {
415
- var clone = new CKEDITOR.dom.range( this.document );
416
-
417
- clone.startContainer = this.startContainer;
418
- clone.startOffset = this.startOffset;
419
- clone.endContainer = this.endContainer;
420
- clone.endOffset = this.endOffset;
421
- clone.collapsed = this.collapsed;
422
-
423
- return clone;
424
- },
425
-
426
- collapse : function( toStart )
427
- {
428
- if ( toStart )
429
- {
430
- this.endContainer = this.startContainer;
431
- this.endOffset = this.startOffset;
432
- }
433
- else
434
- {
435
- this.startContainer = this.endContainer;
436
- this.startOffset = this.endOffset;
437
- }
438
-
439
- this.collapsed = true;
440
- },
441
-
442
- /**
443
- * The content nodes of the range are cloned and added to a document fragment, which is returned.
444
- * <strong> Note: </strong> Text selection may lost after invoking this method. (caused by text node splitting).
445
- */
446
- cloneContents : function()
447
- {
448
- var docFrag = new CKEDITOR.dom.documentFragment( this.document );
449
-
450
- if ( !this.collapsed )
451
- execContentsAction( this, 2, docFrag );
452
-
453
- return docFrag;
454
- },
455
-
456
- /**
457
- * Deletes the content nodes of the range permanently from the DOM tree.
458
- * @param {Boolean} [mergeThen] Merge any splitted elements result in DOM true due to partial selection.
459
- */
460
- deleteContents : function( mergeThen )
461
- {
462
- if ( this.collapsed )
463
- return;
464
-
465
- execContentsAction( this, 0, null, mergeThen );
466
- },
467
-
468
- /**
469
- * The content nodes of the range are cloned and added to a document fragment,
470
- * meanwhile they're removed permanently from the DOM tree.
471
- * @param {Boolean} [mergeThen] Merge any splitted elements result in DOM true due to partial selection.
472
- */
473
- extractContents : function( mergeThen )
474
- {
475
- var docFrag = new CKEDITOR.dom.documentFragment( this.document );
476
-
477
- if ( !this.collapsed )
478
- execContentsAction( this, 1, docFrag, mergeThen );
479
-
480
- return docFrag;
481
- },
482
-
483
- /**
484
- * Creates a bookmark object, which can be later used to restore the
485
- * range by using the moveToBookmark function.
486
- * This is an "intrusive" way to create a bookmark. It includes <span> tags
487
- * in the range boundaries. The advantage of it is that it is possible to
488
- * handle DOM mutations when moving back to the bookmark.
489
- * Attention: the inclusion of nodes in the DOM is a design choice and
490
- * should not be changed as there are other points in the code that may be
491
- * using those nodes to perform operations. See GetBookmarkNode.
492
- * @param {Boolean} [serializable] Indicates that the bookmark nodes
493
- * must contain ids, which can be used to restore the range even
494
- * when these nodes suffer mutations (like a clonation or innerHTML
495
- * change).
496
- * @returns {Object} And object representing a bookmark.
497
- */
498
- createBookmark : function( serializable )
499
- {
500
- var startNode, endNode;
501
- var baseId;
502
- var clone;
503
- var collapsed = this.collapsed;
504
-
505
- startNode = this.document.createElement( 'span' );
506
- startNode.data( 'cke-bookmark', 1 );
507
- startNode.setStyle( 'display', 'none' );
508
-
509
- // For IE, it must have something inside, otherwise it may be
510
- // removed during DOM operations.
511
- startNode.setHtml( '&nbsp;' );
512
-
513
- if ( serializable )
514
- {
515
- baseId = 'cke_bm_' + CKEDITOR.tools.getNextNumber();
516
- startNode.setAttribute( 'id', baseId + 'S' );
517
- }
518
-
519
- // If collapsed, the endNode will not be created.
520
- if ( !collapsed )
521
- {
522
- endNode = startNode.clone();
523
- endNode.setHtml( '&nbsp;' );
524
-
525
- if ( serializable )
526
- endNode.setAttribute( 'id', baseId + 'E' );
527
-
528
- clone = this.clone();
529
- clone.collapse();
530
- clone.insertNode( endNode );
531
- }
532
-
533
- clone = this.clone();
534
- clone.collapse( true );
535
- clone.insertNode( startNode );
536
-
537
- // Update the range position.
538
- if ( endNode )
539
- {
540
- this.setStartAfter( startNode );
541
- this.setEndBefore( endNode );
542
- }
543
- else
544
- this.moveToPosition( startNode, CKEDITOR.POSITION_AFTER_END );
545
-
546
- return {
547
- startNode : serializable ? baseId + 'S' : startNode,
548
- endNode : serializable ? baseId + 'E' : endNode,
549
- serializable : serializable,
550
- collapsed : collapsed
551
- };
552
- },
553
-
554
- /**
555
- * Creates a "non intrusive" and "mutation sensible" bookmark. This
556
- * kind of bookmark should be used only when the DOM is supposed to
557
- * remain stable after its creation.
558
- * @param {Boolean} [normalized] Indicates that the bookmark must
559
- * normalized. When normalized, the successive text nodes are
560
- * considered a single node. To sucessful load a normalized
561
- * bookmark, the DOM tree must be also normalized before calling
562
- * moveToBookmark.
563
- * @returns {Object} An object representing the bookmark.
564
- */
565
- createBookmark2 : function( normalized )
566
- {
567
- var startContainer = this.startContainer,
568
- endContainer = this.endContainer;
569
-
570
- var startOffset = this.startOffset,
571
- endOffset = this.endOffset;
572
-
573
- var collapsed = this.collapsed;
574
-
575
- var child, previous;
576
-
577
- // If there is no range then get out of here.
578
- // It happens on initial load in Safari #962 and if the editor it's
579
- // hidden also in Firefox
580
- if ( !startContainer || !endContainer )
581
- return { start : 0, end : 0 };
582
-
583
- if ( normalized )
584
- {
585
- // Find out if the start is pointing to a text node that will
586
- // be normalized.
587
- if ( startContainer.type == CKEDITOR.NODE_ELEMENT )
588
- {
589
- child = startContainer.getChild( startOffset );
590
-
591
- // In this case, move the start information to that text
592
- // node.
593
- if ( child && child.type == CKEDITOR.NODE_TEXT
594
- && startOffset > 0 && child.getPrevious().type == CKEDITOR.NODE_TEXT )
595
- {
596
- startContainer = child;
597
- startOffset = 0;
598
- }
599
-
600
- // Get the normalized offset.
601
- if ( child && child.type == CKEDITOR.NODE_ELEMENT )
602
- startOffset = child.getIndex( 1 );
603
- }
604
-
605
- // Normalize the start.
606
- while ( startContainer.type == CKEDITOR.NODE_TEXT
607
- && ( previous = startContainer.getPrevious() )
608
- && previous.type == CKEDITOR.NODE_TEXT )
609
- {
610
- startContainer = previous;
611
- startOffset += previous.getLength();
612
- }
613
-
614
- // Process the end only if not normalized.
615
- if ( !collapsed )
616
- {
617
- // Find out if the start is pointing to a text node that
618
- // will be normalized.
619
- if ( endContainer.type == CKEDITOR.NODE_ELEMENT )
620
- {
621
- child = endContainer.getChild( endOffset );
622
-
623
- // In this case, move the start information to that
624
- // text node.
625
- if ( child && child.type == CKEDITOR.NODE_TEXT
626
- && endOffset > 0 && child.getPrevious().type == CKEDITOR.NODE_TEXT )
627
- {
628
- endContainer = child;
629
- endOffset = 0;
630
- }
631
-
632
- // Get the normalized offset.
633
- if ( child && child.type == CKEDITOR.NODE_ELEMENT )
634
- endOffset = child.getIndex( 1 );
635
- }
636
-
637
- // Normalize the end.
638
- while ( endContainer.type == CKEDITOR.NODE_TEXT
639
- && ( previous = endContainer.getPrevious() )
640
- && previous.type == CKEDITOR.NODE_TEXT )
641
- {
642
- endContainer = previous;
643
- endOffset += previous.getLength();
644
- }
645
- }
646
- }
647
-
648
- return {
649
- start : startContainer.getAddress( normalized ),
650
- end : collapsed ? null : endContainer.getAddress( normalized ),
651
- startOffset : startOffset,
652
- endOffset : endOffset,
653
- normalized : normalized,
654
- collapsed : collapsed,
655
- is2 : true // It's a createBookmark2 bookmark.
656
- };
657
- },
658
-
659
- moveToBookmark : function( bookmark )
660
- {
661
- if ( bookmark.is2 ) // Created with createBookmark2().
662
- {
663
- // Get the start information.
664
- var startContainer = this.document.getByAddress( bookmark.start, bookmark.normalized ),
665
- startOffset = bookmark.startOffset;
666
-
667
- // Get the end information.
668
- var endContainer = bookmark.end && this.document.getByAddress( bookmark.end, bookmark.normalized ),
669
- endOffset = bookmark.endOffset;
670
-
671
- // Set the start boundary.
672
- this.setStart( startContainer, startOffset );
673
-
674
- // Set the end boundary. If not available, collapse it.
675
- if ( endContainer )
676
- this.setEnd( endContainer, endOffset );
677
- else
678
- this.collapse( true );
679
- }
680
- else // Created with createBookmark().
681
- {
682
- var serializable = bookmark.serializable,
683
- startNode = serializable ? this.document.getById( bookmark.startNode ) : bookmark.startNode,
684
- endNode = serializable ? this.document.getById( bookmark.endNode ) : bookmark.endNode;
685
-
686
- // Set the range start at the bookmark start node position.
687
- this.setStartBefore( startNode );
688
-
689
- // Remove it, because it may interfere in the setEndBefore call.
690
- startNode.remove();
691
-
692
- // Set the range end at the bookmark end node position, or simply
693
- // collapse it if it is not available.
694
- if ( endNode )
695
- {
696
- this.setEndBefore( endNode );
697
- endNode.remove();
698
- }
699
- else
700
- this.collapse( true );
701
- }
702
- },
703
-
704
- getBoundaryNodes : function()
705
- {
706
- var startNode = this.startContainer,
707
- endNode = this.endContainer,
708
- startOffset = this.startOffset,
709
- endOffset = this.endOffset,
710
- childCount;
711
-
712
- if ( startNode.type == CKEDITOR.NODE_ELEMENT )
713
- {
714
- childCount = startNode.getChildCount();
715
- if ( childCount > startOffset )
716
- startNode = startNode.getChild( startOffset );
717
- else if ( childCount < 1 )
718
- startNode = startNode.getPreviousSourceNode();
719
- else // startOffset > childCount but childCount is not 0
720
- {
721
- // Try to take the node just after the current position.
722
- startNode = startNode.$;
723
- while ( startNode.lastChild )
724
- startNode = startNode.lastChild;
725
- startNode = new CKEDITOR.dom.node( startNode );
726
-
727
- // Normally we should take the next node in DFS order. But it
728
- // is also possible that we've already reached the end of
729
- // document.
730
- startNode = startNode.getNextSourceNode() || startNode;
731
- }
732
- }
733
- if ( endNode.type == CKEDITOR.NODE_ELEMENT )
734
- {
735
- childCount = endNode.getChildCount();
736
- if ( childCount > endOffset )
737
- endNode = endNode.getChild( endOffset ).getPreviousSourceNode( true );
738
- else if ( childCount < 1 )
739
- endNode = endNode.getPreviousSourceNode();
740
- else // endOffset > childCount but childCount is not 0
741
- {
742
- // Try to take the node just before the current position.
743
- endNode = endNode.$;
744
- while ( endNode.lastChild )
745
- endNode = endNode.lastChild;
746
- endNode = new CKEDITOR.dom.node( endNode );
747
- }
748
- }
749
-
750
- // Sometimes the endNode will come right before startNode for collapsed
751
- // ranges. Fix it. (#3780)
752
- if ( startNode.getPosition( endNode ) & CKEDITOR.POSITION_FOLLOWING )
753
- startNode = endNode;
754
-
755
- return { startNode : startNode, endNode : endNode };
756
- },
757
-
758
- /**
759
- * Find the node which fully contains the range.
760
- * @param includeSelf
761
- * @param {Boolean} ignoreTextNode Whether ignore CKEDITOR.NODE_TEXT type.
762
- */
763
- getCommonAncestor : function( includeSelf , ignoreTextNode )
764
- {
765
- var start = this.startContainer,
766
- end = this.endContainer,
767
- ancestor;
768
-
769
- if ( start.equals( end ) )
770
- {
771
- if ( includeSelf
772
- && start.type == CKEDITOR.NODE_ELEMENT
773
- && this.startOffset == this.endOffset - 1 )
774
- ancestor = start.getChild( this.startOffset );
775
- else
776
- ancestor = start;
777
- }
778
- else
779
- ancestor = start.getCommonAncestor( end );
780
-
781
- return ignoreTextNode && !ancestor.is ? ancestor.getParent() : ancestor;
782
- },
783
-
784
- /**
785
- * Transforms the startContainer and endContainer properties from text
786
- * nodes to element nodes, whenever possible. This is actually possible
787
- * if either of the boundary containers point to a text node, and its
788
- * offset is set to zero, or after the last char in the node.
789
- */
790
- optimize : function()
791
- {
792
- var container = this.startContainer;
793
- var offset = this.startOffset;
794
-
795
- if ( container.type != CKEDITOR.NODE_ELEMENT )
796
- {
797
- if ( !offset )
798
- this.setStartBefore( container );
799
- else if ( offset >= container.getLength() )
800
- this.setStartAfter( container );
801
- }
802
-
803
- container = this.endContainer;
804
- offset = this.endOffset;
805
-
806
- if ( container.type != CKEDITOR.NODE_ELEMENT )
807
- {
808
- if ( !offset )
809
- this.setEndBefore( container );
810
- else if ( offset >= container.getLength() )
811
- this.setEndAfter( container );
812
- }
813
- },
814
-
815
- /**
816
- * Move the range out of bookmark nodes if they'd been the container.
817
- */
818
- optimizeBookmark: function()
819
- {
820
- var startNode = this.startContainer,
821
- endNode = this.endContainer;
822
-
823
- if ( startNode.is && startNode.is( 'span' )
824
- && startNode.data( 'cke-bookmark' ) )
825
- this.setStartAt( startNode, CKEDITOR.POSITION_BEFORE_START );
826
- if ( endNode && endNode.is && endNode.is( 'span' )
827
- && endNode.data( 'cke-bookmark' ) )
828
- this.setEndAt( endNode, CKEDITOR.POSITION_AFTER_END );
829
- },
830
-
831
- trim : function( ignoreStart, ignoreEnd )
832
- {
833
- var startContainer = this.startContainer,
834
- startOffset = this.startOffset,
835
- collapsed = this.collapsed;
836
- if ( ( !ignoreStart || collapsed )
837
- && startContainer && startContainer.type == CKEDITOR.NODE_TEXT )
838
- {
839
- // If the offset is zero, we just insert the new node before
840
- // the start.
841
- if ( !startOffset )
842
- {
843
- startOffset = startContainer.getIndex();
844
- startContainer = startContainer.getParent();
845
- }
846
- // If the offset is at the end, we'll insert it after the text
847
- // node.
848
- else if ( startOffset >= startContainer.getLength() )
849
- {
850
- startOffset = startContainer.getIndex() + 1;
851
- startContainer = startContainer.getParent();
852
- }
853
- // In other case, we split the text node and insert the new
854
- // node at the split point.
855
- else
856
- {
857
- var nextText = startContainer.split( startOffset );
858
-
859
- startOffset = startContainer.getIndex() + 1;
860
- startContainer = startContainer.getParent();
861
-
862
- // Check all necessity of updating the end boundary.
863
- if ( this.startContainer.equals( this.endContainer ) )
864
- this.setEnd( nextText, this.endOffset - this.startOffset );
865
- else if ( startContainer.equals( this.endContainer ) )
866
- this.endOffset += 1;
867
- }
868
-
869
- this.setStart( startContainer, startOffset );
870
-
871
- if ( collapsed )
872
- {
873
- this.collapse( true );
874
- return;
875
- }
876
- }
877
-
878
- var endContainer = this.endContainer;
879
- var endOffset = this.endOffset;
880
-
881
- if ( !( ignoreEnd || collapsed )
882
- && endContainer && endContainer.type == CKEDITOR.NODE_TEXT )
883
- {
884
- // If the offset is zero, we just insert the new node before
885
- // the start.
886
- if ( !endOffset )
887
- {
888
- endOffset = endContainer.getIndex();
889
- endContainer = endContainer.getParent();
890
- }
891
- // If the offset is at the end, we'll insert it after the text
892
- // node.
893
- else if ( endOffset >= endContainer.getLength() )
894
- {
895
- endOffset = endContainer.getIndex() + 1;
896
- endContainer = endContainer.getParent();
897
- }
898
- // In other case, we split the text node and insert the new
899
- // node at the split point.
900
- else
901
- {
902
- endContainer.split( endOffset );
903
-
904
- endOffset = endContainer.getIndex() + 1;
905
- endContainer = endContainer.getParent();
906
- }
907
-
908
- this.setEnd( endContainer, endOffset );
909
- }
910
- },
911
-
912
- /**
913
- * Expands the range so that partial units are completely contained.
914
- * @param unit {Number} The unit type to expand with.
915
- * @param {Boolean} [excludeBrs=false] Whether include line-breaks when expanding.
916
- */
917
- enlarge : function( unit, excludeBrs )
918
- {
919
- switch ( unit )
920
- {
921
- case CKEDITOR.ENLARGE_ELEMENT :
922
-
923
- if ( this.collapsed )
924
- return;
925
-
926
- // Get the common ancestor.
927
- var commonAncestor = this.getCommonAncestor();
928
-
929
- var body = this.document.getBody();
930
-
931
- // For each boundary
932
- // a. Depending on its position, find out the first node to be checked (a sibling) or, if not available, to be enlarge.
933
- // b. Go ahead checking siblings and enlarging the boundary as much as possible until the common ancestor is not reached. After reaching the common ancestor, just save the enlargeable node to be used later.
934
-
935
- var startTop, endTop;
936
-
937
- var enlargeable, sibling, commonReached;
938
-
939
- // Indicates that the node can be added only if whitespace
940
- // is available before it.
941
- var needsWhiteSpace = false;
942
- var isWhiteSpace;
943
- var siblingText;
944
-
945
- // Process the start boundary.
946
-
947
- var container = this.startContainer;
948
- var offset = this.startOffset;
949
-
950
- if ( container.type == CKEDITOR.NODE_TEXT )
951
- {
952
- if ( offset )
953
- {
954
- // Check if there is any non-space text before the
955
- // offset. Otherwise, container is null.
956
- container = !CKEDITOR.tools.trim( container.substring( 0, offset ) ).length && container;
957
-
958
- // If we found only whitespace in the node, it
959
- // means that we'll need more whitespace to be able
960
- // to expand. For example, <i> can be expanded in
961
- // "A <i> [B]</i>", but not in "A<i> [B]</i>".
962
- needsWhiteSpace = !!container;
963
- }
964
-
965
- if ( container )
966
- {
967
- if ( !( sibling = container.getPrevious() ) )
968
- enlargeable = container.getParent();
969
- }
970
- }
971
- else
972
- {
973
- // If we have offset, get the node preceeding it as the
974
- // first sibling to be checked.
975
- if ( offset )
976
- sibling = container.getChild( offset - 1 ) || container.getLast();
977
-
978
- // If there is no sibling, mark the container to be
979
- // enlarged.
980
- if ( !sibling )
981
- enlargeable = container;
982
- }
983
-
984
- while ( enlargeable || sibling )
985
- {
986
- if ( enlargeable && !sibling )
987
- {
988
- // If we reached the common ancestor, mark the flag
989
- // for it.
990
- if ( !commonReached && enlargeable.equals( commonAncestor ) )
991
- commonReached = true;
992
-
993
- if ( !body.contains( enlargeable ) )
994
- break;
995
-
996
- // If we don't need space or this element breaks
997
- // the line, then enlarge it.
998
- if ( !needsWhiteSpace || enlargeable.getComputedStyle( 'display' ) != 'inline' )
999
- {
1000
- needsWhiteSpace = false;
1001
-
1002
- // If the common ancestor has been reached,
1003
- // we'll not enlarge it immediately, but just
1004
- // mark it to be enlarged later if the end
1005
- // boundary also enlarges it.
1006
- if ( commonReached )
1007
- startTop = enlargeable;
1008
- else
1009
- this.setStartBefore( enlargeable );
1010
- }
1011
-
1012
- sibling = enlargeable.getPrevious();
1013
- }
1014
-
1015
- // Check all sibling nodes preceeding the enlargeable
1016
- // node. The node wil lbe enlarged only if none of them
1017
- // blocks it.
1018
- while ( sibling )
1019
- {
1020
- // This flag indicates that this node has
1021
- // whitespaces at the end.
1022
- isWhiteSpace = false;
1023
-
1024
- if ( sibling.type == CKEDITOR.NODE_COMMENT )
1025
- {
1026
- sibling = sibling.getPrevious();
1027
- continue;
1028
- }
1029
- else if ( sibling.type == CKEDITOR.NODE_TEXT )
1030
- {
1031
- siblingText = sibling.getText();
1032
-
1033
- if ( /[^\s\ufeff]/.test( siblingText ) )
1034
- sibling = null;
1035
-
1036
- isWhiteSpace = /[\s\ufeff]$/.test( siblingText );
1037
- }
1038
- else
1039
- {
1040
- // If this is a visible element.
1041
- // We need to check for the bookmark attribute because IE insists on
1042
- // rendering the display:none nodes we use for bookmarks. (#3363)
1043
- // Line-breaks (br) are rendered with zero width, which we don't want to include. (#7041)
1044
- if ( ( sibling.$.offsetWidth > 0 || excludeBrs && sibling.is( 'br' ) ) && !sibling.data( 'cke-bookmark' ) )
1045
- {
1046
- // We'll accept it only if we need
1047
- // whitespace, and this is an inline
1048
- // element with whitespace only.
1049
- if ( needsWhiteSpace && CKEDITOR.dtd.$removeEmpty[ sibling.getName() ] )
1050
- {
1051
- // It must contains spaces and inline elements only.
1052
-
1053
- siblingText = sibling.getText();
1054
-
1055
- if ( (/[^\s\ufeff]/).test( siblingText ) ) // Spaces + Zero Width No-Break Space (U+FEFF)
1056
- sibling = null;
1057
- else
1058
- {
1059
- var allChildren = sibling.$.getElementsByTagName( '*' );
1060
- for ( var i = 0, child ; child = allChildren[ i++ ] ; )
1061
- {
1062
- if ( !CKEDITOR.dtd.$removeEmpty[ child.nodeName.toLowerCase() ] )
1063
- {
1064
- sibling = null;
1065
- break;
1066
- }
1067
- }
1068
- }
1069
-
1070
- if ( sibling )
1071
- isWhiteSpace = !!siblingText.length;
1072
- }
1073
- else
1074
- sibling = null;
1075
- }
1076
- }
1077
-
1078
- // A node with whitespaces has been found.
1079
- if ( isWhiteSpace )
1080
- {
1081
- // Enlarge the last enlargeable node, if we
1082
- // were waiting for spaces.
1083
- if ( needsWhiteSpace )
1084
- {
1085
- if ( commonReached )
1086
- startTop = enlargeable;
1087
- else if ( enlargeable )
1088
- this.setStartBefore( enlargeable );
1089
- }
1090
- else
1091
- needsWhiteSpace = true;
1092
- }
1093
-
1094
- if ( sibling )
1095
- {
1096
- var next = sibling.getPrevious();
1097
-
1098
- if ( !enlargeable && !next )
1099
- {
1100
- // Set the sibling as enlargeable, so it's
1101
- // parent will be get later outside this while.
1102
- enlargeable = sibling;
1103
- sibling = null;
1104
- break;
1105
- }
1106
-
1107
- sibling = next;
1108
- }
1109
- else
1110
- {
1111
- // If sibling has been set to null, then we
1112
- // need to stop enlarging.
1113
- enlargeable = null;
1114
- }
1115
- }
1116
-
1117
- if ( enlargeable )
1118
- enlargeable = enlargeable.getParent();
1119
- }
1120
-
1121
- // Process the end boundary. This is basically the same
1122
- // code used for the start boundary, with small changes to
1123
- // make it work in the oposite side (to the right). This
1124
- // makes it difficult to reuse the code here. So, fixes to
1125
- // the above code are likely to be replicated here.
1126
-
1127
- container = this.endContainer;
1128
- offset = this.endOffset;
1129
-
1130
- // Reset the common variables.
1131
- enlargeable = sibling = null;
1132
- commonReached = needsWhiteSpace = false;
1133
-
1134
- if ( container.type == CKEDITOR.NODE_TEXT )
1135
- {
1136
- // Check if there is any non-space text after the
1137
- // offset. Otherwise, container is null.
1138
- container = !CKEDITOR.tools.trim( container.substring( offset ) ).length && container;
1139
-
1140
- // If we found only whitespace in the node, it
1141
- // means that we'll need more whitespace to be able
1142
- // to expand. For example, <i> can be expanded in
1143
- // "A <i> [B]</i>", but not in "A<i> [B]</i>".
1144
- needsWhiteSpace = !( container && container.getLength() );
1145
-
1146
- if ( container )
1147
- {
1148
- if ( !( sibling = container.getNext() ) )
1149
- enlargeable = container.getParent();
1150
- }
1151
- }
1152
- else
1153
- {
1154
- // Get the node right after the boudary to be checked
1155
- // first.
1156
- sibling = container.getChild( offset );
1157
-
1158
- if ( !sibling )
1159
- enlargeable = container;
1160
- }
1161
-
1162
- while ( enlargeable || sibling )
1163
- {
1164
- if ( enlargeable && !sibling )
1165
- {
1166
- if ( !commonReached && enlargeable.equals( commonAncestor ) )
1167
- commonReached = true;
1168
-
1169
- if ( !body.contains( enlargeable ) )
1170
- break;
1171
-
1172
- if ( !needsWhiteSpace || enlargeable.getComputedStyle( 'display' ) != 'inline' )
1173
- {
1174
- needsWhiteSpace = false;
1175
-
1176
- if ( commonReached )
1177
- endTop = enlargeable;
1178
- else if ( enlargeable )
1179
- this.setEndAfter( enlargeable );
1180
- }
1181
-
1182
- sibling = enlargeable.getNext();
1183
- }
1184
-
1185
- while ( sibling )
1186
- {
1187
- isWhiteSpace = false;
1188
-
1189
- if ( sibling.type == CKEDITOR.NODE_TEXT )
1190
- {
1191
- siblingText = sibling.getText();
1192
-
1193
- if ( /[^\s\ufeff]/.test( siblingText ) )
1194
- sibling = null;
1195
-
1196
- isWhiteSpace = /^[\s\ufeff]/.test( siblingText );
1197
- }
1198
- else if ( sibling.type == CKEDITOR.NODE_ELEMENT )
1199
- {
1200
- // If this is a visible element.
1201
- // We need to check for the bookmark attribute because IE insists on
1202
- // rendering the display:none nodes we use for bookmarks. (#3363)
1203
- // Line-breaks (br) are rendered with zero width, which we don't want to include. (#7041)
1204
- if ( ( sibling.$.offsetWidth > 0 || excludeBrs && sibling.is( 'br' ) ) && !sibling.data( 'cke-bookmark' ) )
1205
- {
1206
- // We'll accept it only if we need
1207
- // whitespace, and this is an inline
1208
- // element with whitespace only.
1209
- if ( needsWhiteSpace && CKEDITOR.dtd.$removeEmpty[ sibling.getName() ] )
1210
- {
1211
- // It must contains spaces and inline elements only.
1212
-
1213
- siblingText = sibling.getText();
1214
-
1215
- if ( (/[^\s\ufeff]/).test( siblingText ) )
1216
- sibling = null;
1217
- else
1218
- {
1219
- allChildren = sibling.$.getElementsByTagName( '*' );
1220
- for ( i = 0 ; child = allChildren[ i++ ] ; )
1221
- {
1222
- if ( !CKEDITOR.dtd.$removeEmpty[ child.nodeName.toLowerCase() ] )
1223
- {
1224
- sibling = null;
1225
- break;
1226
- }
1227
- }
1228
- }
1229
-
1230
- if ( sibling )
1231
- isWhiteSpace = !!siblingText.length;
1232
- }
1233
- else
1234
- sibling = null;
1235
- }
1236
- }
1237
- else
1238
- isWhiteSpace = 1;
1239
-
1240
- if ( isWhiteSpace )
1241
- {
1242
- if ( needsWhiteSpace )
1243
- {
1244
- if ( commonReached )
1245
- endTop = enlargeable;
1246
- else
1247
- this.setEndAfter( enlargeable );
1248
- }
1249
- }
1250
-
1251
- if ( sibling )
1252
- {
1253
- next = sibling.getNext();
1254
-
1255
- if ( !enlargeable && !next )
1256
- {
1257
- enlargeable = sibling;
1258
- sibling = null;
1259
- break;
1260
- }
1261
-
1262
- sibling = next;
1263
- }
1264
- else
1265
- {
1266
- // If sibling has been set to null, then we
1267
- // need to stop enlarging.
1268
- enlargeable = null;
1269
- }
1270
- }
1271
-
1272
- if ( enlargeable )
1273
- enlargeable = enlargeable.getParent();
1274
- }
1275
-
1276
- // If the common ancestor can be enlarged by both boundaries, then include it also.
1277
- if ( startTop && endTop )
1278
- {
1279
- commonAncestor = startTop.contains( endTop ) ? endTop : startTop;
1280
-
1281
- this.setStartBefore( commonAncestor );
1282
- this.setEndAfter( commonAncestor );
1283
- }
1284
- break;
1285
-
1286
- case CKEDITOR.ENLARGE_BLOCK_CONTENTS:
1287
- case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:
1288
-
1289
- // Enlarging the start boundary.
1290
- var walkerRange = new CKEDITOR.dom.range( this.document );
1291
-
1292
- body = this.document.getBody();
1293
-
1294
- walkerRange.setStartAt( body, CKEDITOR.POSITION_AFTER_START );
1295
- walkerRange.setEnd( this.startContainer, this.startOffset );
1296
-
1297
- var walker = new CKEDITOR.dom.walker( walkerRange ),
1298
- blockBoundary, // The node on which the enlarging should stop.
1299
- tailBr, // In case BR as block boundary.
1300
- notBlockBoundary = CKEDITOR.dom.walker.blockBoundary(
1301
- ( unit == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ) ? { br : 1 } : null ),
1302
- // Record the encountered 'blockBoundary' for later use.
1303
- boundaryGuard = function( node )
1304
- {
1305
- var retval = notBlockBoundary( node );
1306
- if ( !retval )
1307
- blockBoundary = node;
1308
- return retval;
1309
- },
1310
- // Record the encounted 'tailBr' for later use.
1311
- tailBrGuard = function( node )
1312
- {
1313
- var retval = boundaryGuard( node );
1314
- if ( !retval && node.is && node.is( 'br' ) )
1315
- tailBr = node;
1316
- return retval;
1317
- };
1318
-
1319
- walker.guard = boundaryGuard;
1320
-
1321
- enlargeable = walker.lastBackward();
1322
-
1323
- // It's the body which stop the enlarging if no block boundary found.
1324
- blockBoundary = blockBoundary || body;
1325
-
1326
- // Start the range either after the end of found block (<p>...</p>[text)
1327
- // or at the start of block (<p>[text...), by comparing the document position
1328
- // with 'enlargeable' node.
1329
- this.setStartAt(
1330
- blockBoundary,
1331
- !blockBoundary.is( 'br' ) &&
1332
- ( !enlargeable && this.checkStartOfBlock()
1333
- || enlargeable && blockBoundary.contains( enlargeable ) ) ?
1334
- CKEDITOR.POSITION_AFTER_START :
1335
- CKEDITOR.POSITION_AFTER_END );
1336
-
1337
- // Avoid enlarging the range further when end boundary spans right after the BR. (#7490)
1338
- if ( unit == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS )
1339
- {
1340
- var theRange = this.clone();
1341
- walker = new CKEDITOR.dom.walker( theRange );
1342
-
1343
- var whitespaces = CKEDITOR.dom.walker.whitespaces(),
1344
- bookmark = CKEDITOR.dom.walker.bookmark();
1345
-
1346
- walker.evaluator = function( node ) { return !whitespaces( node ) && !bookmark( node ); };
1347
- var previous = walker.previous();
1348
- if ( previous && previous.type == CKEDITOR.NODE_ELEMENT && previous.is( 'br' ) )
1349
- return;
1350
- }
1351
-
1352
-
1353
- // Enlarging the end boundary.
1354
- walkerRange = this.clone();
1355
- walkerRange.collapse();
1356
- walkerRange.setEndAt( body, CKEDITOR.POSITION_BEFORE_END );
1357
- walker = new CKEDITOR.dom.walker( walkerRange );
1358
-
1359
- // tailBrGuard only used for on range end.
1360
- walker.guard = ( unit == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ) ?
1361
- tailBrGuard : boundaryGuard;
1362
- blockBoundary = null;
1363
- // End the range right before the block boundary node.
1364
-
1365
- enlargeable = walker.lastForward();
1366
-
1367
- // It's the body which stop the enlarging if no block boundary found.
1368
- blockBoundary = blockBoundary || body;
1369
-
1370
- // Close the range either before the found block start (text]<p>...</p>) or at the block end (...text]</p>)
1371
- // by comparing the document position with 'enlargeable' node.
1372
- this.setEndAt(
1373
- blockBoundary,
1374
- ( !enlargeable && this.checkEndOfBlock()
1375
- || enlargeable && blockBoundary.contains( enlargeable ) ) ?
1376
- CKEDITOR.POSITION_BEFORE_END :
1377
- CKEDITOR.POSITION_BEFORE_START );
1378
- // We must include the <br> at the end of range if there's
1379
- // one and we're expanding list item contents
1380
- if ( tailBr )
1381
- this.setEndAfter( tailBr );
1382
- }
1383
- },
1384
-
1385
- /**
1386
- * Descrease the range to make sure that boundaries
1387
- * always anchor beside text nodes or innermost element.
1388
- * @param {Number} mode ( CKEDITOR.SHRINK_ELEMENT | CKEDITOR.SHRINK_TEXT ) The shrinking mode.
1389
- * <dl>
1390
- * <dt>CKEDITOR.SHRINK_ELEMENT</dt>
1391
- * <dd>Shrink the range boundaries to the edge of the innermost element.</dd>
1392
- * <dt>CKEDITOR.SHRINK_TEXT</dt>
1393
- * <dd>Shrink the range boudaries to anchor by the side of enclosed text node, range remains if there's no text nodes on boundaries at all.</dd>
1394
- * </dl>
1395
- * @param {Boolean} selectContents Whether result range anchors at the inner OR outer boundary of the node.
1396
- */
1397
- shrink : function( mode, selectContents )
1398
- {
1399
- // Unable to shrink a collapsed range.
1400
- if ( !this.collapsed )
1401
- {
1402
- mode = mode || CKEDITOR.SHRINK_TEXT;
1403
-
1404
- var walkerRange = this.clone();
1405
-
1406
- var startContainer = this.startContainer,
1407
- endContainer = this.endContainer,
1408
- startOffset = this.startOffset,
1409
- endOffset = this.endOffset,
1410
- collapsed = this.collapsed;
1411
-
1412
- // Whether the start/end boundary is moveable.
1413
- var moveStart = 1,
1414
- moveEnd = 1;
1415
-
1416
- if ( startContainer && startContainer.type == CKEDITOR.NODE_TEXT )
1417
- {
1418
- if ( !startOffset )
1419
- walkerRange.setStartBefore( startContainer );
1420
- else if ( startOffset >= startContainer.getLength( ) )
1421
- walkerRange.setStartAfter( startContainer );
1422
- else
1423
- {
1424
- // Enlarge the range properly to avoid walker making
1425
- // DOM changes caused by triming the text nodes later.
1426
- walkerRange.setStartBefore( startContainer );
1427
- moveStart = 0;
1428
- }
1429
- }
1430
-
1431
- if ( endContainer && endContainer.type == CKEDITOR.NODE_TEXT )
1432
- {
1433
- if ( !endOffset )
1434
- walkerRange.setEndBefore( endContainer );
1435
- else if ( endOffset >= endContainer.getLength( ) )
1436
- walkerRange.setEndAfter( endContainer );
1437
- else
1438
- {
1439
- walkerRange.setEndAfter( endContainer );
1440
- moveEnd = 0;
1441
- }
1442
- }
1443
-
1444
- var walker = new CKEDITOR.dom.walker( walkerRange ),
1445
- isBookmark = CKEDITOR.dom.walker.bookmark();
1446
-
1447
- walker.evaluator = function( node )
1448
- {
1449
- return node.type == ( mode == CKEDITOR.SHRINK_ELEMENT ?
1450
- CKEDITOR.NODE_ELEMENT : CKEDITOR.NODE_TEXT );
1451
- };
1452
-
1453
- var currentElement;
1454
- walker.guard = function( node, movingOut )
1455
- {
1456
- if ( isBookmark( node ) )
1457
- return true;
1458
-
1459
- // Stop when we're shrink in element mode while encountering a text node.
1460
- if ( mode == CKEDITOR.SHRINK_ELEMENT && node.type == CKEDITOR.NODE_TEXT )
1461
- return false;
1462
-
1463
- // Stop when we've already walked "through" an element.
1464
- if ( movingOut && node.equals( currentElement ) )
1465
- return false;
1466
-
1467
- if ( !movingOut && node.type == CKEDITOR.NODE_ELEMENT )
1468
- currentElement = node;
1469
-
1470
- return true;
1471
- };
1472
-
1473
- if ( moveStart )
1474
- {
1475
- var textStart = walker[ mode == CKEDITOR.SHRINK_ELEMENT ? 'lastForward' : 'next']();
1476
- textStart && this.setStartAt( textStart, selectContents ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_START );
1477
- }
1478
-
1479
- if ( moveEnd )
1480
- {
1481
- walker.reset();
1482
- var textEnd = walker[ mode == CKEDITOR.SHRINK_ELEMENT ? 'lastBackward' : 'previous']();
1483
- textEnd && this.setEndAt( textEnd, selectContents ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_AFTER_END );
1484
- }
1485
-
1486
- return !!( moveStart || moveEnd );
1487
- }
1488
- },
1489
-
1490
- /**
1491
- * Inserts a node at the start of the range. The range will be expanded
1492
- * the contain the node.
1493
- */
1494
- insertNode : function( node )
1495
- {
1496
- this.optimizeBookmark();
1497
- this.trim( false, true );
1498
-
1499
- var startContainer = this.startContainer;
1500
- var startOffset = this.startOffset;
1501
-
1502
- var nextNode = startContainer.getChild( startOffset );
1503
-
1504
- if ( nextNode )
1505
- node.insertBefore( nextNode );
1506
- else
1507
- startContainer.append( node );
1508
-
1509
- // Check if we need to update the end boundary.
1510
- if ( node.getParent().equals( this.endContainer ) )
1511
- this.endOffset++;
1512
-
1513
- // Expand the range to embrace the new node.
1514
- this.setStartBefore( node );
1515
- },
1516
-
1517
- moveToPosition : function( node, position )
1518
- {
1519
- this.setStartAt( node, position );
1520
- this.collapse( true );
1521
- },
1522
-
1523
- selectNodeContents : function( node )
1524
- {
1525
- this.setStart( node, 0 );
1526
- this.setEnd( node, node.type == CKEDITOR.NODE_TEXT ? node.getLength() : node.getChildCount() );
1527
- },
1528
-
1529
- /**
1530
- * Sets the start position of a Range.
1531
- * @param {CKEDITOR.dom.node} startNode The node to start the range.
1532
- * @param {Number} startOffset An integer greater than or equal to zero
1533
- * representing the offset for the start of the range from the start
1534
- * of startNode.
1535
- */
1536
- setStart : function( startNode, startOffset )
1537
- {
1538
- // W3C requires a check for the new position. If it is after the end
1539
- // boundary, the range should be collapsed to the new start. It seams
1540
- // we will not need this check for our use of this class so we can
1541
- // ignore it for now.
1542
-
1543
- // Fixing invalid range start inside dtd empty elements.
1544
- if( startNode.type == CKEDITOR.NODE_ELEMENT
1545
- && CKEDITOR.dtd.$empty[ startNode.getName() ] )
1546
- startOffset = startNode.getIndex(), startNode = startNode.getParent();
1547
-
1548
- this.startContainer = startNode;
1549
- this.startOffset = startOffset;
1550
-
1551
- if ( !this.endContainer )
1552
- {
1553
- this.endContainer = startNode;
1554
- this.endOffset = startOffset;
1555
- }
1556
-
1557
- updateCollapsed( this );
1558
- },
1559
-
1560
- /**
1561
- * Sets the end position of a Range.
1562
- * @param {CKEDITOR.dom.node} endNode The node to end the range.
1563
- * @param {Number} endOffset An integer greater than or equal to zero
1564
- * representing the offset for the end of the range from the start
1565
- * of endNode.
1566
- */
1567
- setEnd : function( endNode, endOffset )
1568
- {
1569
- // W3C requires a check for the new position. If it is before the start
1570
- // boundary, the range should be collapsed to the new end. It seams we
1571
- // will not need this check for our use of this class so we can ignore
1572
- // it for now.
1573
-
1574
- // Fixing invalid range end inside dtd empty elements.
1575
- if( endNode.type == CKEDITOR.NODE_ELEMENT
1576
- && CKEDITOR.dtd.$empty[ endNode.getName() ] )
1577
- endOffset = endNode.getIndex() + 1, endNode = endNode.getParent();
1578
-
1579
- this.endContainer = endNode;
1580
- this.endOffset = endOffset;
1581
-
1582
- if ( !this.startContainer )
1583
- {
1584
- this.startContainer = endNode;
1585
- this.startOffset = endOffset;
1586
- }
1587
-
1588
- updateCollapsed( this );
1589
- },
1590
-
1591
- setStartAfter : function( node )
1592
- {
1593
- this.setStart( node.getParent(), node.getIndex() + 1 );
1594
- },
1595
-
1596
- setStartBefore : function( node )
1597
- {
1598
- this.setStart( node.getParent(), node.getIndex() );
1599
- },
1600
-
1601
- setEndAfter : function( node )
1602
- {
1603
- this.setEnd( node.getParent(), node.getIndex() + 1 );
1604
- },
1605
-
1606
- setEndBefore : function( node )
1607
- {
1608
- this.setEnd( node.getParent(), node.getIndex() );
1609
- },
1610
-
1611
- setStartAt : function( node, position )
1612
- {
1613
- switch( position )
1614
- {
1615
- case CKEDITOR.POSITION_AFTER_START :
1616
- this.setStart( node, 0 );
1617
- break;
1618
-
1619
- case CKEDITOR.POSITION_BEFORE_END :
1620
- if ( node.type == CKEDITOR.NODE_TEXT )
1621
- this.setStart( node, node.getLength() );
1622
- else
1623
- this.setStart( node, node.getChildCount() );
1624
- break;
1625
-
1626
- case CKEDITOR.POSITION_BEFORE_START :
1627
- this.setStartBefore( node );
1628
- break;
1629
-
1630
- case CKEDITOR.POSITION_AFTER_END :
1631
- this.setStartAfter( node );
1632
- }
1633
-
1634
- updateCollapsed( this );
1635
- },
1636
-
1637
- setEndAt : function( node, position )
1638
- {
1639
- switch( position )
1640
- {
1641
- case CKEDITOR.POSITION_AFTER_START :
1642
- this.setEnd( node, 0 );
1643
- break;
1644
-
1645
- case CKEDITOR.POSITION_BEFORE_END :
1646
- if ( node.type == CKEDITOR.NODE_TEXT )
1647
- this.setEnd( node, node.getLength() );
1648
- else
1649
- this.setEnd( node, node.getChildCount() );
1650
- break;
1651
-
1652
- case CKEDITOR.POSITION_BEFORE_START :
1653
- this.setEndBefore( node );
1654
- break;
1655
-
1656
- case CKEDITOR.POSITION_AFTER_END :
1657
- this.setEndAfter( node );
1658
- }
1659
-
1660
- updateCollapsed( this );
1661
- },
1662
-
1663
- fixBlock : function( isStart, blockTag )
1664
- {
1665
- var bookmark = this.createBookmark(),
1666
- fixedBlock = this.document.createElement( blockTag );
1667
-
1668
- this.collapse( isStart );
1669
-
1670
- this.enlarge( CKEDITOR.ENLARGE_BLOCK_CONTENTS );
1671
-
1672
- this.extractContents().appendTo( fixedBlock );
1673
- fixedBlock.trim();
1674
-
1675
- if ( !CKEDITOR.env.ie )
1676
- fixedBlock.appendBogus();
1677
-
1678
- this.insertNode( fixedBlock );
1679
-
1680
- this.moveToBookmark( bookmark );
1681
-
1682
- return fixedBlock;
1683
- },
1684
-
1685
- splitBlock : function( blockTag )
1686
- {
1687
- var startPath = new CKEDITOR.dom.elementPath( this.startContainer ),
1688
- endPath = new CKEDITOR.dom.elementPath( this.endContainer );
1689
-
1690
- var startBlockLimit = startPath.blockLimit,
1691
- endBlockLimit = endPath.blockLimit;
1692
-
1693
- var startBlock = startPath.block,
1694
- endBlock = endPath.block;
1695
-
1696
- var elementPath = null;
1697
- // Do nothing if the boundaries are in different block limits.
1698
- if ( !startBlockLimit.equals( endBlockLimit ) )
1699
- return null;
1700
-
1701
- // Get or fix current blocks.
1702
- if ( blockTag != 'br' )
1703
- {
1704
- if ( !startBlock )
1705
- {
1706
- startBlock = this.fixBlock( true, blockTag );
1707
- endBlock = new CKEDITOR.dom.elementPath( this.endContainer ).block;
1708
- }
1709
-
1710
- if ( !endBlock )
1711
- endBlock = this.fixBlock( false, blockTag );
1712
- }
1713
-
1714
- // Get the range position.
1715
- var isStartOfBlock = startBlock && this.checkStartOfBlock(),
1716
- isEndOfBlock = endBlock && this.checkEndOfBlock();
1717
-
1718
- // Delete the current contents.
1719
- // TODO: Why is 2.x doing CheckIsEmpty()?
1720
- this.deleteContents();
1721
-
1722
- if ( startBlock && startBlock.equals( endBlock ) )
1723
- {
1724
- if ( isEndOfBlock )
1725
- {
1726
- elementPath = new CKEDITOR.dom.elementPath( this.startContainer );
1727
- this.moveToPosition( endBlock, CKEDITOR.POSITION_AFTER_END );
1728
- endBlock = null;
1729
- }
1730
- else if ( isStartOfBlock )
1731
- {
1732
- elementPath = new CKEDITOR.dom.elementPath( this.startContainer );
1733
- this.moveToPosition( startBlock, CKEDITOR.POSITION_BEFORE_START );
1734
- startBlock = null;
1735
- }
1736
- else
1737
- {
1738
- endBlock = this.splitElement( startBlock );
1739
-
1740
- // In Gecko, the last child node must be a bogus <br>.
1741
- // Note: bogus <br> added under <ul> or <ol> would cause
1742
- // lists to be incorrectly rendered.
1743
- if ( !CKEDITOR.env.ie && !startBlock.is( 'ul', 'ol') )
1744
- startBlock.appendBogus() ;
1745
- }
1746
- }
1747
-
1748
- return {
1749
- previousBlock : startBlock,
1750
- nextBlock : endBlock,
1751
- wasStartOfBlock : isStartOfBlock,
1752
- wasEndOfBlock : isEndOfBlock,
1753
- elementPath : elementPath
1754
- };
1755
- },
1756
-
1757
- /**
1758
- * Branch the specified element from the collapsed range position and
1759
- * place the caret between the two result branches.
1760
- * Note: The range must be collapsed and been enclosed by this element.
1761
- * @param {CKEDITOR.dom.element} element
1762
- * @return {CKEDITOR.dom.element} Root element of the new branch after the split.
1763
- */
1764
- splitElement : function( toSplit )
1765
- {
1766
- if ( !this.collapsed )
1767
- return null;
1768
-
1769
- // Extract the contents of the block from the selection point to the end
1770
- // of its contents.
1771
- this.setEndAt( toSplit, CKEDITOR.POSITION_BEFORE_END );
1772
- var documentFragment = this.extractContents();
1773
-
1774
- // Duplicate the element after it.
1775
- var clone = toSplit.clone( false );
1776
-
1777
- // Place the extracted contents into the duplicated element.
1778
- documentFragment.appendTo( clone );
1779
- clone.insertAfter( toSplit );
1780
- this.moveToPosition( toSplit, CKEDITOR.POSITION_AFTER_END );
1781
- return clone;
1782
- },
1783
-
1784
- /**
1785
- * Check whether a range boundary is at the inner boundary of a given
1786
- * element.
1787
- * @param {CKEDITOR.dom.element} element The target element to check.
1788
- * @param {Number} checkType The boundary to check for both the range
1789
- * and the element. It can be CKEDITOR.START or CKEDITOR.END.
1790
- * @returns {Boolean} "true" if the range boundary is at the inner
1791
- * boundary of the element.
1792
- */
1793
- checkBoundaryOfElement : function( element, checkType )
1794
- {
1795
- var checkStart = ( checkType == CKEDITOR.START );
1796
-
1797
- // Create a copy of this range, so we can manipulate it for our checks.
1798
- var walkerRange = this.clone();
1799
-
1800
- // Collapse the range at the proper size.
1801
- walkerRange.collapse( checkStart );
1802
-
1803
- // Expand the range to element boundary.
1804
- walkerRange[ checkStart ? 'setStartAt' : 'setEndAt' ]
1805
- ( element, checkStart ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END );
1806
-
1807
- // Create the walker, which will check if we have anything useful
1808
- // in the range.
1809
- var walker = new CKEDITOR.dom.walker( walkerRange );
1810
- walker.evaluator = elementBoundaryEval( checkStart );
1811
-
1812
- return walker[ checkStart ? 'checkBackward' : 'checkForward' ]();
1813
- },
1814
-
1815
- // Calls to this function may produce changes to the DOM. The range may
1816
- // be updated to reflect such changes.
1817
- checkStartOfBlock : function()
1818
- {
1819
- var startContainer = this.startContainer,
1820
- startOffset = this.startOffset;
1821
-
1822
- // If the starting node is a text node, and non-empty before the offset,
1823
- // then we're surely not at the start of block.
1824
- if ( startOffset && startContainer.type == CKEDITOR.NODE_TEXT )
1825
- {
1826
- var textBefore = CKEDITOR.tools.ltrim( startContainer.substring( 0, startOffset ) );
1827
- if ( textBefore.length )
1828
- return false;
1829
- }
1830
-
1831
- // Antecipate the trim() call here, so the walker will not make
1832
- // changes to the DOM, which would not get reflected into this
1833
- // range otherwise.
1834
- this.trim();
1835
-
1836
- // We need to grab the block element holding the start boundary, so
1837
- // let's use an element path for it.
1838
- var path = new CKEDITOR.dom.elementPath( this.startContainer );
1839
-
1840
- // Creates a range starting at the block start until the range start.
1841
- var walkerRange = this.clone();
1842
- walkerRange.collapse( true );
1843
- walkerRange.setStartAt( path.block || path.blockLimit, CKEDITOR.POSITION_AFTER_START );
1844
-
1845
- var walker = new CKEDITOR.dom.walker( walkerRange );
1846
- walker.evaluator = getCheckStartEndBlockEvalFunction( true );
1847
-
1848
- return walker.checkBackward();
1849
- },
1850
-
1851
- checkEndOfBlock : function()
1852
- {
1853
- var endContainer = this.endContainer,
1854
- endOffset = this.endOffset;
1855
-
1856
- // If the ending node is a text node, and non-empty after the offset,
1857
- // then we're surely not at the end of block.
1858
- if ( endContainer.type == CKEDITOR.NODE_TEXT )
1859
- {
1860
- var textAfter = CKEDITOR.tools.rtrim( endContainer.substring( endOffset ) );
1861
- if ( textAfter.length )
1862
- return false;
1863
- }
1864
-
1865
- // Antecipate the trim() call here, so the walker will not make
1866
- // changes to the DOM, which would not get reflected into this
1867
- // range otherwise.
1868
- this.trim();
1869
-
1870
- // We need to grab the block element holding the start boundary, so
1871
- // let's use an element path for it.
1872
- var path = new CKEDITOR.dom.elementPath( this.endContainer );
1873
-
1874
- // Creates a range starting at the block start until the range start.
1875
- var walkerRange = this.clone();
1876
- walkerRange.collapse( false );
1877
- walkerRange.setEndAt( path.block || path.blockLimit, CKEDITOR.POSITION_BEFORE_END );
1878
-
1879
- var walker = new CKEDITOR.dom.walker( walkerRange );
1880
- walker.evaluator = getCheckStartEndBlockEvalFunction( false );
1881
-
1882
- return walker.checkForward();
1883
- },
1884
-
1885
- /**
1886
- * Check if elements at which the range boundaries anchor are read-only,
1887
- * with respect to "contenteditable" attribute.
1888
- */
1889
- checkReadOnly : ( function()
1890
- {
1891
- function checkNodesEditable( node, anotherEnd )
1892
- {
1893
- while( node )
1894
- {
1895
- if ( node.type == CKEDITOR.NODE_ELEMENT )
1896
- {
1897
- if ( node.getAttribute( 'contentEditable' ) == 'false'
1898
- && !node.data( 'cke-editable' ) )
1899
- {
1900
- return 0;
1901
- }
1902
- // Range enclosed entirely in an editable element.
1903
- else if ( node.is( 'html' )
1904
- || node.getAttribute( 'contentEditable' ) == 'true'
1905
- && ( node.contains( anotherEnd ) || node.equals( anotherEnd ) ) )
1906
- {
1907
- break;
1908
- }
1909
- }
1910
- node = node.getParent();
1911
- }
1912
-
1913
- return 1;
1914
- }
1915
-
1916
- return function()
1917
- {
1918
- var startNode = this.startContainer,
1919
- endNode = this.endContainer;
1920
-
1921
- // Check if elements path at both boundaries are editable.
1922
- return !( checkNodesEditable( startNode, endNode ) && checkNodesEditable( endNode, startNode ) );
1923
- };
1924
- })(),
1925
-
1926
- /**
1927
- * Moves the range boundaries to the first/end editing point inside an
1928
- * element. For example, in an element tree like
1929
- * "&lt;p&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt; Text&lt;/p&gt;", the start editing point is
1930
- * "&lt;p&gt;&lt;b&gt;&lt;i&gt;^&lt;/i&gt;&lt;/b&gt; Text&lt;/p&gt;" (inside &lt;i&gt;).
1931
- * @param {CKEDITOR.dom.element} el The element into which look for the
1932
- * editing spot.
1933
- * @param {Boolean} isMoveToEnd Whether move to the end editable position.
1934
- */
1935
- moveToElementEditablePosition : function( el, isMoveToEnd )
1936
- {
1937
- function nextDFS( node, childOnly )
1938
- {
1939
- var next;
1940
-
1941
- if ( node.type == CKEDITOR.NODE_ELEMENT
1942
- && node.isEditable( false )
1943
- && !CKEDITOR.dtd.$nonEditable[ node.getName() ] )
1944
- {
1945
- next = node[ isMoveToEnd ? 'getLast' : 'getFirst' ]( nonWhitespaceOrBookmarkEval );
1946
- }
1947
-
1948
- if ( !childOnly && !next )
1949
- next = node[ isMoveToEnd ? 'getPrevious' : 'getNext' ]( nonWhitespaceOrBookmarkEval );
1950
-
1951
- return next;
1952
- }
1953
-
1954
- var found = 0;
1955
-
1956
- while ( el )
1957
- {
1958
- // Stop immediately if we've found a text node.
1959
- if ( el.type == CKEDITOR.NODE_TEXT )
1960
- {
1961
- this.moveToPosition( el, isMoveToEnd ?
1962
- CKEDITOR.POSITION_AFTER_END :
1963
- CKEDITOR.POSITION_BEFORE_START );
1964
- found = 1;
1965
- break;
1966
- }
1967
-
1968
- // If an editable element is found, move inside it, but not stop the searching.
1969
- if ( el.type == CKEDITOR.NODE_ELEMENT )
1970
- {
1971
- if ( el.isEditable() )
1972
- {
1973
- this.moveToPosition( el, isMoveToEnd ?
1974
- CKEDITOR.POSITION_BEFORE_END :
1975
- CKEDITOR.POSITION_AFTER_START );
1976
- found = 1;
1977
- }
1978
- }
1979
-
1980
- el = nextDFS( el, found );
1981
- }
1982
-
1983
- return !!found;
1984
- },
1985
-
1986
- /**
1987
- *@see {CKEDITOR.dom.range.moveToElementEditablePosition}
1988
- */
1989
- moveToElementEditStart : function( target )
1990
- {
1991
- return this.moveToElementEditablePosition( target );
1992
- },
1993
-
1994
- /**
1995
- *@see {CKEDITOR.dom.range.moveToElementEditablePosition}
1996
- */
1997
- moveToElementEditEnd : function( target )
1998
- {
1999
- return this.moveToElementEditablePosition( target, true );
2000
- },
2001
-
2002
- /**
2003
- * Get the single node enclosed within the range if there's one.
2004
- */
2005
- getEnclosedNode : function()
2006
- {
2007
- var walkerRange = this.clone();
2008
-
2009
- // Optimize and analyze the range to avoid DOM destructive nature of walker. (#5780)
2010
- walkerRange.optimize();
2011
- if ( walkerRange.startContainer.type != CKEDITOR.NODE_ELEMENT
2012
- || walkerRange.endContainer.type != CKEDITOR.NODE_ELEMENT )
2013
- return null;
2014
-
2015
- var walker = new CKEDITOR.dom.walker( walkerRange ),
2016
- isNotBookmarks = CKEDITOR.dom.walker.bookmark( true ),
2017
- isNotWhitespaces = CKEDITOR.dom.walker.whitespaces( true ),
2018
- evaluator = function( node )
2019
- {
2020
- return isNotWhitespaces( node ) && isNotBookmarks( node );
2021
- };
2022
- walkerRange.evaluator = evaluator;
2023
- var node = walker.next();
2024
- walker.reset();
2025
- return node && node.equals( walker.previous() ) ? node : null;
2026
- },
2027
-
2028
- getTouchedStartNode : function()
2029
- {
2030
- var container = this.startContainer ;
2031
-
2032
- if ( this.collapsed || container.type != CKEDITOR.NODE_ELEMENT )
2033
- return container ;
2034
-
2035
- return container.getChild( this.startOffset ) || container ;
2036
- },
2037
-
2038
- getTouchedEndNode : function()
2039
- {
2040
- var container = this.endContainer ;
2041
-
2042
- if ( this.collapsed || container.type != CKEDITOR.NODE_ELEMENT )
2043
- return container ;
2044
-
2045
- return container.getChild( this.endOffset - 1 ) || container ;
2046
- }
2047
- };
2048
- })();
2049
-
2050
- CKEDITOR.POSITION_AFTER_START = 1; // <element>^contents</element> "^text"
2051
- CKEDITOR.POSITION_BEFORE_END = 2; // <element>contents^</element> "text^"
2052
- CKEDITOR.POSITION_BEFORE_START = 3; // ^<element>contents</element> ^"text"
2053
- CKEDITOR.POSITION_AFTER_END = 4; // <element>contents</element>^ "text"
2054
-
2055
- CKEDITOR.ENLARGE_ELEMENT = 1;
2056
- CKEDITOR.ENLARGE_BLOCK_CONTENTS = 2;
2057
- CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS = 3;
2058
-
2059
- // Check boundary types.
2060
- // @see CKEDITOR.dom.range.prototype.checkBoundaryOfElement
2061
- CKEDITOR.START = 1;
2062
- CKEDITOR.END = 2;
2063
- CKEDITOR.STARTEND = 3;
2064
-
2065
- // Shrink range types.
2066
- // @see CKEDITOR.dom.range.prototype.shrink
2067
- CKEDITOR.SHRINK_ELEMENT = 1;
2068
- CKEDITOR.SHRINK_TEXT = 2;