forge-cli 0.1.1 → 0.1.2

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