dust-ckeditor 3.5.0

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