ckeditor-rails 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (708) hide show
  1. data/README.md +17 -14
  2. data/lib/ckeditor-rails/version.rb +1 -1
  3. data/vendor/assets/ckeditor/ckeditor/.htaccess +1 -1
  4. data/vendor/assets/ckeditor/ckeditor/CHANGES.html +139 -3
  5. data/vendor/assets/ckeditor/ckeditor/INSTALL.html +92 -92
  6. data/vendor/assets/ckeditor/ckeditor/LICENSE.html +2 -2
  7. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/application.xml +32 -32
  8. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/run.bat +9 -9
  9. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/run.sh +1 -1
  10. data/vendor/assets/ckeditor/ckeditor/_samples/adobeair/sample.html +45 -45
  11. data/vendor/assets/ckeditor/ckeditor/_samples/ajax.html +98 -98
  12. data/vendor/assets/ckeditor/ckeditor/_samples/api.html +192 -192
  13. data/vendor/assets/ckeditor/ckeditor/_samples/api_dialog.html +198 -198
  14. data/vendor/assets/ckeditor/ckeditor/_samples/api_dialog/my_dialog.js +28 -28
  15. data/vendor/assets/ckeditor/ckeditor/_samples/asp/advanced.asp +105 -105
  16. data/vendor/assets/ckeditor/ckeditor/_samples/asp/events.asp +136 -136
  17. data/vendor/assets/ckeditor/ckeditor/_samples/asp/index.html +103 -103
  18. data/vendor/assets/ckeditor/ckeditor/_samples/asp/replace.asp +72 -72
  19. data/vendor/assets/ckeditor/ckeditor/_samples/asp/replaceall.asp +77 -77
  20. data/vendor/assets/ckeditor/ckeditor/_samples/asp/sample_posteddata.asp +46 -46
  21. data/vendor/assets/ckeditor/ckeditor/_samples/asp/standalone.asp +72 -72
  22. data/vendor/assets/ckeditor/ckeditor/_samples/assets/_posteddata.php +59 -59
  23. data/vendor/assets/ckeditor/ckeditor/_samples/assets/output_xhtml.css +204 -204
  24. data/vendor/assets/ckeditor/ckeditor/_samples/assets/parsesample.css +70 -70
  25. data/vendor/assets/ckeditor/ckeditor/_samples/assets/swfobject.js +18 -18
  26. data/vendor/assets/ckeditor/ckeditor/_samples/autogrow.html +108 -107
  27. data/vendor/assets/ckeditor/ckeditor/_samples/bbcode.html +125 -125
  28. data/vendor/assets/ckeditor/ckeditor/_samples/devtools.html +94 -94
  29. data/vendor/assets/ckeditor/ckeditor/_samples/divreplace.html +154 -154
  30. data/vendor/assets/ckeditor/ckeditor/_samples/enterkey.html +115 -115
  31. data/vendor/assets/ckeditor/ckeditor/_samples/fullpage.html +82 -82
  32. data/vendor/assets/ckeditor/ckeditor/_samples/index.html +116 -116
  33. data/vendor/assets/ckeditor/ckeditor/_samples/jqueryadapter.html +99 -99
  34. data/vendor/assets/ckeditor/ckeditor/_samples/output_for_flash.html +275 -275
  35. data/vendor/assets/ckeditor/ckeditor/_samples/output_html.html +285 -285
  36. data/vendor/assets/ckeditor/ckeditor/_samples/output_xhtml.html +181 -177
  37. data/vendor/assets/ckeditor/ckeditor/_samples/php/advanced.php +120 -120
  38. data/vendor/assets/ckeditor/ckeditor/_samples/php/events.php +153 -153
  39. data/vendor/assets/ckeditor/ckeditor/_samples/php/index.html +47 -47
  40. data/vendor/assets/ckeditor/ckeditor/_samples/php/replace.php +87 -87
  41. data/vendor/assets/ckeditor/ckeditor/_samples/php/replaceall.php +88 -88
  42. data/vendor/assets/ckeditor/ckeditor/_samples/php/standalone.php +83 -83
  43. data/vendor/assets/ckeditor/ckeditor/_samples/placeholder.html +81 -81
  44. data/vendor/assets/ckeditor/ckeditor/_samples/readonly.html +91 -91
  45. data/vendor/assets/ckeditor/ckeditor/_samples/replacebyclass.html +64 -64
  46. data/vendor/assets/ckeditor/ckeditor/_samples/replacebycode.html +97 -97
  47. data/vendor/assets/ckeditor/ckeditor/_samples/sample.css +163 -163
  48. data/vendor/assets/ckeditor/ckeditor/_samples/sample.js +65 -65
  49. data/vendor/assets/ckeditor/ckeditor/_samples/sample_posteddata.php +21 -21
  50. data/vendor/assets/ckeditor/ckeditor/_samples/sharedspaces.html +153 -153
  51. data/vendor/assets/ckeditor/ckeditor/_samples/skins.html +110 -110
  52. data/vendor/assets/ckeditor/ckeditor/_samples/stylesheetparser.html +93 -93
  53. data/vendor/assets/ckeditor/ckeditor/_samples/tableresize.html +115 -115
  54. data/vendor/assets/ckeditor/ckeditor/_samples/ui_color.html +129 -129
  55. data/vendor/assets/ckeditor/ckeditor/_samples/ui_languages.html +134 -134
  56. data/vendor/assets/ckeditor/ckeditor/_source/adapters/jquery.js +306 -306
  57. data/vendor/assets/ckeditor/ckeditor/_source/core/_bootstrap.js +87 -87
  58. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor.js +141 -141
  59. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor_base.js +235 -227
  60. data/vendor/assets/ckeditor/ckeditor/_source/core/ckeditor_basic.js +238 -238
  61. data/vendor/assets/ckeditor/ckeditor/_source/core/command.js +225 -209
  62. data/vendor/assets/ckeditor/ckeditor/_source/core/commanddefinition.js +129 -129
  63. data/vendor/assets/ckeditor/ckeditor/_source/core/config.js +447 -431
  64. data/vendor/assets/ckeditor/ckeditor/_source/core/dataprocessor.js +65 -65
  65. data/vendor/assets/ckeditor/ckeditor/_source/core/dom.js +20 -20
  66. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/comment.js +44 -32
  67. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/document.js +251 -251
  68. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/documentfragment.js +49 -49
  69. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/domobject.js +258 -258
  70. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/element.js +1796 -1681
  71. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/elementpath.js +117 -119
  72. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/event.js +145 -145
  73. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/node.js +691 -695
  74. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/nodelist.js +26 -26
  75. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/range.js +2068 -2032
  76. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/rangelist.js +213 -213
  77. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/text.js +128 -128
  78. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/walker.js +496 -462
  79. data/vendor/assets/ckeditor/ckeditor/_source/core/dom/window.js +96 -96
  80. data/vendor/assets/ckeditor/ckeditor/_source/core/dtd.js +266 -266
  81. data/vendor/assets/ckeditor/ckeditor/_source/core/editor.js +1059 -1059
  82. data/vendor/assets/ckeditor/ckeditor/_source/core/editor_basic.js +186 -186
  83. data/vendor/assets/ckeditor/ckeditor/_source/core/env.js +305 -291
  84. data/vendor/assets/ckeditor/ckeditor/_source/core/event.js +342 -342
  85. data/vendor/assets/ckeditor/ckeditor/_source/core/eventInfo.js +120 -120
  86. data/vendor/assets/ckeditor/ckeditor/_source/core/focusmanager.js +152 -152
  87. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser.js +224 -224
  88. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/basicwriter.js +145 -145
  89. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/cdata.js +43 -43
  90. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/comment.js +60 -60
  91. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/element.js +308 -308
  92. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/filter.js +288 -288
  93. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/fragment.js +537 -497
  94. data/vendor/assets/ckeditor/ckeditor/_source/core/htmlparser/text.js +53 -55
  95. data/vendor/assets/ckeditor/ckeditor/_source/core/lang.js +157 -157
  96. data/vendor/assets/ckeditor/ckeditor/_source/core/loader.js +240 -240
  97. data/vendor/assets/ckeditor/ckeditor/_source/core/plugindefinition.js +83 -83
  98. data/vendor/assets/ckeditor/ckeditor/_source/core/plugins.js +103 -103
  99. data/vendor/assets/ckeditor/ckeditor/_source/core/resourcemanager.js +238 -238
  100. data/vendor/assets/ckeditor/ckeditor/_source/core/scriptloader.js +180 -180
  101. data/vendor/assets/ckeditor/ckeditor/_source/core/skins.js +184 -184
  102. data/vendor/assets/ckeditor/ckeditor/_source/core/themes.js +19 -19
  103. data/vendor/assets/ckeditor/ckeditor/_source/core/tools.js +763 -763
  104. data/vendor/assets/ckeditor/ckeditor/_source/core/ui.js +128 -128
  105. data/vendor/assets/ckeditor/ckeditor/_source/lang/_languages.js +84 -84
  106. data/vendor/assets/ckeditor/ckeditor/_source/lang/_translationstatus.txt +63 -61
  107. data/vendor/assets/ckeditor/ckeditor/_source/lang/af.js +815 -812
  108. data/vendor/assets/ckeditor/ckeditor/_source/lang/ar.js +815 -812
  109. data/vendor/assets/ckeditor/ckeditor/_source/lang/bg.js +815 -812
  110. data/vendor/assets/ckeditor/ckeditor/_source/lang/bn.js +815 -812
  111. data/vendor/assets/ckeditor/ckeditor/_source/lang/bs.js +815 -812
  112. data/vendor/assets/ckeditor/ckeditor/_source/lang/ca.js +815 -812
  113. data/vendor/assets/ckeditor/ckeditor/_source/lang/cs.js +815 -812
  114. data/vendor/assets/ckeditor/ckeditor/_source/lang/cy.js +815 -812
  115. data/vendor/assets/ckeditor/ckeditor/_source/lang/da.js +815 -812
  116. data/vendor/assets/ckeditor/ckeditor/_source/lang/de.js +815 -812
  117. data/vendor/assets/ckeditor/ckeditor/_source/lang/el.js +815 -812
  118. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-au.js +815 -812
  119. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-ca.js +815 -812
  120. data/vendor/assets/ckeditor/ckeditor/_source/lang/en-gb.js +815 -812
  121. data/vendor/assets/ckeditor/ckeditor/_source/lang/en.js +815 -812
  122. data/vendor/assets/ckeditor/ckeditor/_source/lang/eo.js +815 -812
  123. data/vendor/assets/ckeditor/ckeditor/_source/lang/es.js +815 -812
  124. data/vendor/assets/ckeditor/ckeditor/_source/lang/et.js +815 -812
  125. data/vendor/assets/ckeditor/ckeditor/_source/lang/eu.js +815 -812
  126. data/vendor/assets/ckeditor/ckeditor/_source/lang/fa.js +815 -812
  127. data/vendor/assets/ckeditor/ckeditor/_source/lang/fi.js +815 -812
  128. data/vendor/assets/ckeditor/ckeditor/_source/lang/fo.js +815 -812
  129. data/vendor/assets/ckeditor/ckeditor/_source/lang/fr-ca.js +815 -812
  130. data/vendor/assets/ckeditor/ckeditor/_source/lang/fr.js +815 -812
  131. data/vendor/assets/ckeditor/ckeditor/_source/lang/gl.js +815 -812
  132. data/vendor/assets/ckeditor/ckeditor/_source/lang/gu.js +815 -812
  133. data/vendor/assets/ckeditor/ckeditor/_source/lang/he.js +815 -812
  134. data/vendor/assets/ckeditor/ckeditor/_source/lang/hi.js +815 -812
  135. data/vendor/assets/ckeditor/ckeditor/_source/lang/hr.js +815 -812
  136. data/vendor/assets/ckeditor/ckeditor/_source/lang/hu.js +815 -812
  137. data/vendor/assets/ckeditor/ckeditor/_source/lang/is.js +815 -812
  138. data/vendor/assets/ckeditor/ckeditor/_source/lang/it.js +815 -812
  139. data/vendor/assets/ckeditor/ckeditor/_source/lang/ja.js +815 -812
  140. data/vendor/assets/ckeditor/ckeditor/_source/lang/ka.js +815 -812
  141. data/vendor/assets/ckeditor/ckeditor/_source/lang/km.js +815 -812
  142. data/vendor/assets/ckeditor/ckeditor/_source/lang/ko.js +815 -812
  143. data/vendor/assets/ckeditor/ckeditor/_source/lang/lt.js +815 -812
  144. data/vendor/assets/ckeditor/ckeditor/_source/lang/lv.js +815 -812
  145. data/vendor/assets/ckeditor/ckeditor/_source/lang/mk.js +814 -0
  146. data/vendor/assets/ckeditor/ckeditor/_source/lang/mn.js +815 -812
  147. data/vendor/assets/ckeditor/ckeditor/_source/lang/ms.js +815 -812
  148. data/vendor/assets/ckeditor/ckeditor/_source/lang/nb.js +815 -812
  149. data/vendor/assets/ckeditor/ckeditor/_source/lang/nl.js +815 -812
  150. data/vendor/assets/ckeditor/ckeditor/_source/lang/no.js +815 -812
  151. data/vendor/assets/ckeditor/ckeditor/_source/lang/pl.js +815 -812
  152. data/vendor/assets/ckeditor/ckeditor/_source/lang/pt-br.js +814 -811
  153. data/vendor/assets/ckeditor/ckeditor/_source/lang/pt.js +815 -812
  154. data/vendor/assets/ckeditor/ckeditor/_source/lang/ro.js +815 -812
  155. data/vendor/assets/ckeditor/ckeditor/_source/lang/ru.js +815 -812
  156. data/vendor/assets/ckeditor/ckeditor/_source/lang/sk.js +815 -812
  157. data/vendor/assets/ckeditor/ckeditor/_source/lang/sl.js +815 -812
  158. data/vendor/assets/ckeditor/ckeditor/_source/lang/sr-latn.js +815 -812
  159. data/vendor/assets/ckeditor/ckeditor/_source/lang/sr.js +815 -812
  160. data/vendor/assets/ckeditor/ckeditor/_source/lang/sv.js +814 -811
  161. data/vendor/assets/ckeditor/ckeditor/_source/lang/th.js +815 -812
  162. data/vendor/assets/ckeditor/ckeditor/_source/lang/tr.js +814 -811
  163. data/vendor/assets/ckeditor/ckeditor/_source/lang/ug.js +814 -0
  164. data/vendor/assets/ckeditor/ckeditor/_source/lang/uk.js +815 -812
  165. data/vendor/assets/ckeditor/ckeditor/_source/lang/vi.js +815 -812
  166. data/vendor/assets/ckeditor/ckeditor/_source/lang/zh-cn.js +815 -812
  167. data/vendor/assets/ckeditor/ckeditor/_source/lang/zh.js +815 -812
  168. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/dialogs/a11yhelp.js +222 -222
  169. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/_translationstatus.txt +23 -0
  170. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/cs.js +89 -0
  171. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/cy.js +89 -0
  172. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/da.js +89 -0
  173. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/de.js +89 -0
  174. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/el.js +89 -0
  175. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/en.js +108 -108
  176. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/eo.js +89 -0
  177. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/fa.js +89 -0
  178. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/fi.js +89 -0
  179. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/fr.js +89 -0
  180. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/gu.js +89 -0
  181. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/he.js +89 -216
  182. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/it.js +89 -0
  183. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/mk.js +89 -0
  184. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/nb.js +89 -0
  185. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/nl.js +89 -0
  186. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/no.js +89 -0
  187. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/tr.js +89 -0
  188. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/ug.js +89 -0
  189. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/vi.js +89 -0
  190. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/lang/zh-cn.js +89 -0
  191. data/vendor/assets/ckeditor/ckeditor/_source/plugins/a11yhelp/plugin.js +47 -47
  192. data/vendor/assets/ckeditor/ckeditor/_source/plugins/about/dialogs/about.js +76 -76
  193. data/vendor/assets/ckeditor/ckeditor/_source/plugins/about/plugin.js +24 -24
  194. data/vendor/assets/ckeditor/ckeditor/_source/plugins/adobeair/plugin.js +228 -228
  195. data/vendor/assets/ckeditor/ckeditor/_source/plugins/ajax/plugin.js +152 -152
  196. data/vendor/assets/ckeditor/ckeditor/_source/plugins/autogrow/plugin.js +141 -88
  197. data/vendor/assets/ckeditor/ckeditor/_source/plugins/basicstyles/plugin.js +129 -101
  198. data/vendor/assets/ckeditor/ckeditor/_source/plugins/bbcode/plugin.js +931 -931
  199. data/vendor/assets/ckeditor/ckeditor/_source/plugins/bidi/plugin.js +334 -334
  200. data/vendor/assets/ckeditor/ckeditor/_source/plugins/blockquote/plugin.js +305 -305
  201. data/vendor/assets/ckeditor/ckeditor/_source/plugins/button/plugin.js +290 -290
  202. data/vendor/assets/ckeditor/ckeditor/_source/plugins/clipboard/dialogs/paste.js +223 -223
  203. data/vendor/assets/ckeditor/ckeditor/_source/plugins/clipboard/plugin.js +479 -453
  204. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colorbutton/plugin.js +300 -294
  205. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colordialog/dialogs/colordialog.js +387 -340
  206. data/vendor/assets/ckeditor/ckeditor/_source/plugins/colordialog/plugin.js +15 -15
  207. data/vendor/assets/ckeditor/ckeditor/_source/plugins/contextmenu/plugin.js +179 -177
  208. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/_translationstatus.txt +27 -0
  209. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/bg.js +16 -0
  210. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/cs.js +16 -0
  211. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/cy.js +16 -0
  212. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/da.js +16 -0
  213. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/de.js +16 -0
  214. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/el.js +16 -0
  215. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/en.js +16 -16
  216. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/eo.js +16 -0
  217. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/et.js +16 -0
  218. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/fa.js +16 -0
  219. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/fi.js +16 -0
  220. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/fr.js +16 -0
  221. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/gu.js +16 -0
  222. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/he.js +16 -0
  223. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/hr.js +16 -0
  224. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/it.js +16 -0
  225. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/nb.js +16 -0
  226. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/nl.js +16 -0
  227. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/no.js +16 -0
  228. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/pl.js +16 -0
  229. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/tr.js +16 -0
  230. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/ug.js +16 -0
  231. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/uk.js +16 -0
  232. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/vi.js +16 -0
  233. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/lang/zh-cn.js +16 -0
  234. data/vendor/assets/ckeditor/ckeditor/_source/plugins/devtools/plugin.js +173 -173
  235. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialog/dialogDefinition.js +1166 -1166
  236. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialog/plugin.js +3319 -3289
  237. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialogadvtab/plugin.js +208 -207
  238. data/vendor/assets/ckeditor/ckeditor/_source/plugins/dialogui/plugin.js +1549 -1541
  239. data/vendor/assets/ckeditor/ckeditor/_source/plugins/div/dialogs/div.js +535 -535
  240. data/vendor/assets/ckeditor/ckeditor/_source/plugins/div/plugin.js +121 -121
  241. data/vendor/assets/ckeditor/ckeditor/_source/plugins/docprops/dialogs/docprops.js +674 -686
  242. data/vendor/assets/ckeditor/ckeditor/_source/plugins/docprops/plugin.js +22 -22
  243. data/vendor/assets/ckeditor/ckeditor/_source/plugins/domiterator/plugin.js +366 -361
  244. data/vendor/assets/ckeditor/ckeditor/_source/plugins/editingblock/plugin.js +278 -275
  245. data/vendor/assets/ckeditor/ckeditor/_source/plugins/elementspath/plugin.js +218 -218
  246. data/vendor/assets/ckeditor/ckeditor/_source/plugins/enterkey/plugin.js +433 -413
  247. data/vendor/assets/ckeditor/ckeditor/_source/plugins/entities/plugin.js +254 -250
  248. data/vendor/assets/ckeditor/ckeditor/_source/plugins/fakeobjects/plugin.js +175 -175
  249. data/vendor/assets/ckeditor/ckeditor/_source/plugins/filebrowser/plugin.js +533 -524
  250. data/vendor/assets/ckeditor/ckeditor/_source/plugins/find/dialogs/find.js +915 -903
  251. data/vendor/assets/ckeditor/ckeditor/_source/plugins/find/plugin.js +47 -47
  252. data/vendor/assets/ckeditor/ckeditor/_source/plugins/flash/dialogs/flash.js +674 -673
  253. data/vendor/assets/ckeditor/ckeditor/_source/plugins/flash/plugin.js +154 -154
  254. data/vendor/assets/ckeditor/ckeditor/_source/plugins/floatpanel/plugin.js +476 -428
  255. data/vendor/assets/ckeditor/ckeditor/_source/plugins/font/plugin.js +234 -234
  256. data/vendor/assets/ckeditor/ckeditor/_source/plugins/format/plugin.js +197 -197
  257. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/button.js +118 -118
  258. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/checkbox.js +153 -153
  259. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/form.js +177 -177
  260. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/hiddenfield.js +100 -100
  261. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/radio.js +135 -135
  262. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/select.js +558 -558
  263. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/textarea.js +135 -114
  264. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/dialogs/textfield.js +199 -199
  265. data/vendor/assets/ckeditor/ckeditor/_source/plugins/forms/plugin.js +288 -288
  266. data/vendor/assets/ckeditor/ckeditor/_source/plugins/horizontalrule/plugin.js +48 -48
  267. data/vendor/assets/ckeditor/ckeditor/_source/plugins/htmldataprocessor/plugin.js +600 -595
  268. data/vendor/assets/ckeditor/ckeditor/_source/plugins/htmlwriter/plugin.js +319 -319
  269. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframe/dialogs/iframe.js +229 -229
  270. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframe/plugin.js +87 -87
  271. data/vendor/assets/ckeditor/ckeditor/_source/plugins/iframedialog/plugin.js +188 -188
  272. data/vendor/assets/ckeditor/ckeditor/_source/plugins/image/dialogs/image.js +1406 -1406
  273. data/vendor/assets/ckeditor/ckeditor/_source/plugins/image/plugin.js +164 -81
  274. data/vendor/assets/ckeditor/ckeditor/_source/plugins/indent/plugin.js +480 -461
  275. data/vendor/assets/ckeditor/ckeditor/_source/plugins/justify/plugin.js +251 -253
  276. data/vendor/assets/ckeditor/ckeditor/_source/plugins/keystrokes/plugin.js +225 -225
  277. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/dialogs/anchor.js +144 -144
  278. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/dialogs/link.js +1427 -1424
  279. data/vendor/assets/ckeditor/ckeditor/_source/plugins/link/plugin.js +374 -374
  280. data/vendor/assets/ckeditor/ckeditor/_source/plugins/list/plugin.js +967 -734
  281. data/vendor/assets/ckeditor/ckeditor/_source/plugins/listblock/plugin.js +260 -268
  282. data/vendor/assets/ckeditor/ckeditor/_source/plugins/liststyle/dialogs/liststyle.js +225 -225
  283. data/vendor/assets/ckeditor/ckeditor/_source/plugins/liststyle/plugin.js +66 -66
  284. data/vendor/assets/ckeditor/ckeditor/_source/plugins/maximize/plugin.js +353 -352
  285. data/vendor/assets/ckeditor/ckeditor/_source/plugins/menu/plugin.js +542 -541
  286. data/vendor/assets/ckeditor/ckeditor/_source/plugins/menubutton/plugin.js +98 -98
  287. data/vendor/assets/ckeditor/ckeditor/_source/plugins/newpage/plugin.js +55 -54
  288. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pagebreak/plugin.js +164 -164
  289. data/vendor/assets/ckeditor/ckeditor/_source/plugins/panel/plugin.js +396 -403
  290. data/vendor/assets/ckeditor/ckeditor/_source/plugins/panelbutton/plugin.js +144 -144
  291. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastefromword/filter/default.js +1367 -1367
  292. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastefromword/plugin.js +141 -141
  293. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastetext/dialogs/pastetext.js +67 -67
  294. data/vendor/assets/ckeditor/ckeditor/_source/plugins/pastetext/plugin.js +98 -98
  295. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/dialogs/placeholder.js +71 -71
  296. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/_translationstatus.txt +26 -0
  297. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/bg.js +16 -0
  298. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/cs.js +16 -0
  299. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/cy.js +16 -0
  300. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/da.js +16 -0
  301. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/de.js +16 -0
  302. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/el.js +16 -0
  303. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/en.js +16 -16
  304. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/eo.js +16 -0
  305. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/et.js +16 -0
  306. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/fa.js +16 -0
  307. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/fi.js +16 -0
  308. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/fr.js +16 -0
  309. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/he.js +16 -16
  310. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/hr.js +16 -0
  311. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/it.js +16 -0
  312. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/nb.js +16 -0
  313. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/nl.js +16 -0
  314. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/no.js +16 -0
  315. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/pl.js +16 -0
  316. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/tr.js +16 -0
  317. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/ug.js +16 -0
  318. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/uk.js +16 -0
  319. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/vi.js +16 -0
  320. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/lang/zh-cn.js +16 -0
  321. data/vendor/assets/ckeditor/ckeditor/_source/plugins/placeholder/plugin.js +171 -171
  322. data/vendor/assets/ckeditor/ckeditor/_source/plugins/popup/plugin.js +69 -64
  323. data/vendor/assets/ckeditor/ckeditor/_source/plugins/preview/plugin.js +113 -109
  324. data/vendor/assets/ckeditor/ckeditor/_source/plugins/print/plugin.js +42 -42
  325. data/vendor/assets/ckeditor/ckeditor/_source/plugins/removeformat/plugin.js +185 -185
  326. data/vendor/assets/ckeditor/ckeditor/_source/plugins/resize/plugin.js +169 -168
  327. data/vendor/assets/ckeditor/ckeditor/_source/plugins/richcombo/plugin.js +381 -381
  328. data/vendor/assets/ckeditor/ckeditor/_source/plugins/save/plugin.js +56 -56
  329. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/dialogs/options.js +537 -537
  330. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/dialogs/toolbar.css +71 -71
  331. data/vendor/assets/ckeditor/ckeditor/_source/plugins/scayt/plugin.js +973 -964
  332. data/vendor/assets/ckeditor/ckeditor/_source/plugins/selection/plugin.js +1855 -1601
  333. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showblocks/plugin.js +160 -160
  334. data/vendor/assets/ckeditor/ckeditor/_source/plugins/showborders/plugin.js +207 -207
  335. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/dialogs/smiley.js +224 -224
  336. data/vendor/assets/ckeditor/ckeditor/_source/plugins/smiley/plugin.js +94 -94
  337. data/vendor/assets/ckeditor/ckeditor/_source/plugins/sourcearea/plugin.js +209 -209
  338. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/dialogs/specialchar.js +350 -350
  339. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/_translationstatus.txt +19 -0
  340. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/cs.js +126 -0
  341. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/cy.js +126 -0
  342. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/de.js +126 -0
  343. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/en.js +126 -89
  344. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/eo.js +126 -0
  345. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/et.js +126 -0
  346. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/fa.js +126 -0
  347. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/fi.js +126 -0
  348. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/fr.js +126 -0
  349. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/hr.js +126 -0
  350. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/it.js +126 -0
  351. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/nb.js +126 -0
  352. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/nl.js +126 -0
  353. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/no.js +126 -0
  354. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/tr.js +126 -0
  355. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/ug.js +126 -0
  356. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/lang/zh-cn.js +126 -0
  357. data/vendor/assets/ckeditor/ckeditor/_source/plugins/specialchar/plugin.js +70 -70
  358. data/vendor/assets/ckeditor/ckeditor/_source/plugins/styles/plugin.js +1706 -1696
  359. data/vendor/assets/ckeditor/ckeditor/_source/plugins/styles/styles/default.js +88 -88
  360. data/vendor/assets/ckeditor/ckeditor/_source/plugins/stylescombo/plugin.js +218 -218
  361. data/vendor/assets/ckeditor/ckeditor/_source/plugins/stylesheetparser/plugin.js +148 -148
  362. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tab/plugin.js +367 -367
  363. data/vendor/assets/ckeditor/ckeditor/_source/plugins/table/dialogs/table.js +618 -602
  364. data/vendor/assets/ckeditor/ckeditor/_source/plugins/table/plugin.js +78 -78
  365. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tableresize/plugin.js +443 -443
  366. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tabletools/dialogs/tableCell.js +520 -525
  367. data/vendor/assets/ckeditor/ckeditor/_source/plugins/tabletools/plugin.js +1185 -1194
  368. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/dialogs/templates.js +234 -234
  369. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/plugin.js +100 -99
  370. data/vendor/assets/ckeditor/ckeditor/_source/plugins/templates/templates/default.js +94 -94
  371. data/vendor/assets/ckeditor/ckeditor/_source/plugins/toolbar/plugin.js +545 -545
  372. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/dialogs/uicolor.js +205 -205
  373. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/_translationstatus.txt +27 -0
  374. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/bg.js +15 -0
  375. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/cs.js +15 -0
  376. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/cy.js +15 -0
  377. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/da.js +15 -0
  378. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/de.js +15 -0
  379. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/el.js +15 -0
  380. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/en.js +15 -15
  381. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/eo.js +15 -0
  382. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/et.js +15 -0
  383. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/fa.js +15 -0
  384. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/fi.js +15 -0
  385. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/fr.js +15 -0
  386. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/he.js +15 -15
  387. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/hr.js +15 -0
  388. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/it.js +15 -0
  389. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/mk.js +15 -0
  390. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/nb.js +15 -0
  391. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/nl.js +15 -0
  392. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/no.js +15 -0
  393. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/pl.js +15 -0
  394. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/tr.js +15 -0
  395. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/ug.js +15 -0
  396. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/uk.js +15 -0
  397. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/vi.js +15 -0
  398. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/lang/zh-cn.js +15 -0
  399. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/plugin.js +37 -37
  400. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/assets/yui.css +15 -15
  401. data/vendor/assets/ckeditor/ckeditor/_source/plugins/uicolor/yui/yui.js +71 -71
  402. data/vendor/assets/ckeditor/ckeditor/_source/plugins/undo/plugin.js +593 -580
  403. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/ciframe.html +49 -49
  404. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/tmpFrameset.html +52 -52
  405. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/wsc.css +82 -82
  406. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/dialogs/wsc.js +192 -192
  407. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wsc/plugin.js +33 -33
  408. data/vendor/assets/ckeditor/ckeditor/_source/plugins/wysiwygarea/plugin.js +1346 -1351
  409. data/vendor/assets/ckeditor/ckeditor/_source/plugins/xml/plugin.js +170 -170
  410. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/dialog.css +989 -943
  411. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/editor.css +25 -25
  412. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/elementspath.css +73 -73
  413. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/icons.css +366 -366
  414. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/mainui.css +206 -203
  415. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/menu.css +232 -232
  416. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/panel.css +217 -217
  417. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/presets.css +49 -49
  418. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/reset.css +85 -84
  419. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/richcombo.css +287 -287
  420. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/skin.js +236 -236
  421. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/templates.css +88 -88
  422. data/vendor/assets/ckeditor/ckeditor/_source/skins/kama/toolbar.css +408 -407
  423. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/dialog.css +891 -844
  424. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/editor.css +25 -25
  425. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/elementspath.css +74 -74
  426. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/icons.css +363 -363
  427. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/mainui.css +153 -153
  428. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/menu.css +229 -229
  429. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/panel.css +212 -212
  430. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/presets.css +49 -49
  431. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/reset.css +85 -84
  432. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/richcombo.css +309 -309
  433. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/skin.js +74 -74
  434. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/templates.css +87 -87
  435. data/vendor/assets/ckeditor/ckeditor/_source/skins/office2003/toolbar.css +522 -522
  436. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/dialog.css +907 -861
  437. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/editor.css +25 -25
  438. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/elementspath.css +74 -74
  439. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/icons.css +363 -363
  440. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/mainui.css +162 -162
  441. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/menu.css +232 -232
  442. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/panel.css +212 -212
  443. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/presets.css +50 -50
  444. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/reset.css +85 -84
  445. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/richcombo.css +302 -302
  446. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/skin.js +70 -70
  447. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/templates.css +87 -87
  448. data/vendor/assets/ckeditor/ckeditor/_source/skins/v2/toolbar.css +465 -465
  449. data/vendor/assets/ckeditor/ckeditor/_source/themes/default/theme.js +407 -395
  450. data/vendor/assets/ckeditor/ckeditor/adapters/jquery.js +6 -6
  451. data/vendor/assets/ckeditor/ckeditor/ckeditor.asp +955 -955
  452. data/vendor/assets/ckeditor/ckeditor/ckeditor.js +134 -130
  453. data/vendor/assets/ckeditor/ckeditor/ckeditor.pack +211 -211
  454. data/vendor/assets/ckeditor/ckeditor/ckeditor.php +29 -29
  455. data/vendor/assets/ckeditor/ckeditor/ckeditor_basic.js +8 -8
  456. data/vendor/assets/ckeditor/ckeditor/ckeditor_basic_source.js +20 -20
  457. data/vendor/assets/ckeditor/ckeditor/ckeditor_php4.php +566 -566
  458. data/vendor/assets/ckeditor/ckeditor/ckeditor_php5.php +556 -556
  459. data/vendor/assets/ckeditor/ckeditor/ckeditor_source.js +14 -4
  460. data/vendor/assets/ckeditor/ckeditor/config.js +11 -11
  461. data/vendor/assets/ckeditor/ckeditor/contents.css +25 -25
  462. data/vendor/assets/ckeditor/ckeditor/lang/_languages.js +1 -1
  463. data/vendor/assets/ckeditor/ckeditor/lang/_translationstatus.txt +61 -59
  464. data/vendor/assets/ckeditor/ckeditor/lang/af.js +2 -2
  465. data/vendor/assets/ckeditor/ckeditor/lang/ar.js +2 -2
  466. data/vendor/assets/ckeditor/ckeditor/lang/bg.js +2 -2
  467. data/vendor/assets/ckeditor/ckeditor/lang/bn.js +2 -2
  468. data/vendor/assets/ckeditor/ckeditor/lang/bs.js +2 -2
  469. data/vendor/assets/ckeditor/ckeditor/lang/ca.js +2 -2
  470. data/vendor/assets/ckeditor/ckeditor/lang/cs.js +2 -2
  471. data/vendor/assets/ckeditor/ckeditor/lang/cy.js +2 -2
  472. data/vendor/assets/ckeditor/ckeditor/lang/da.js +2 -2
  473. data/vendor/assets/ckeditor/ckeditor/lang/de.js +2 -2
  474. data/vendor/assets/ckeditor/ckeditor/lang/el.js +2 -2
  475. data/vendor/assets/ckeditor/ckeditor/lang/en-au.js +2 -2
  476. data/vendor/assets/ckeditor/ckeditor/lang/en-ca.js +2 -2
  477. data/vendor/assets/ckeditor/ckeditor/lang/en-gb.js +2 -2
  478. data/vendor/assets/ckeditor/ckeditor/lang/en.js +2 -2
  479. data/vendor/assets/ckeditor/ckeditor/lang/eo.js +2 -2
  480. data/vendor/assets/ckeditor/ckeditor/lang/es.js +2 -2
  481. data/vendor/assets/ckeditor/ckeditor/lang/et.js +2 -2
  482. data/vendor/assets/ckeditor/ckeditor/lang/eu.js +2 -2
  483. data/vendor/assets/ckeditor/ckeditor/lang/fa.js +2 -2
  484. data/vendor/assets/ckeditor/ckeditor/lang/fi.js +2 -2
  485. data/vendor/assets/ckeditor/ckeditor/lang/fo.js +2 -2
  486. data/vendor/assets/ckeditor/ckeditor/lang/fr-ca.js +2 -2
  487. data/vendor/assets/ckeditor/ckeditor/lang/fr.js +2 -2
  488. data/vendor/assets/ckeditor/ckeditor/lang/gl.js +2 -2
  489. data/vendor/assets/ckeditor/ckeditor/lang/gu.js +2 -2
  490. data/vendor/assets/ckeditor/ckeditor/lang/he.js +2 -2
  491. data/vendor/assets/ckeditor/ckeditor/lang/hi.js +2 -2
  492. data/vendor/assets/ckeditor/ckeditor/lang/hr.js +2 -2
  493. data/vendor/assets/ckeditor/ckeditor/lang/hu.js +2 -2
  494. data/vendor/assets/ckeditor/ckeditor/lang/is.js +2 -2
  495. data/vendor/assets/ckeditor/ckeditor/lang/it.js +2 -2
  496. data/vendor/assets/ckeditor/ckeditor/lang/ja.js +2 -2
  497. data/vendor/assets/ckeditor/ckeditor/lang/ka.js +2 -2
  498. data/vendor/assets/ckeditor/ckeditor/lang/km.js +2 -2
  499. data/vendor/assets/ckeditor/ckeditor/lang/ko.js +2 -2
  500. data/vendor/assets/ckeditor/ckeditor/lang/lt.js +2 -2
  501. data/vendor/assets/ckeditor/ckeditor/lang/lv.js +2 -2
  502. data/vendor/assets/ckeditor/ckeditor/lang/mk.js +6 -0
  503. data/vendor/assets/ckeditor/ckeditor/lang/mn.js +2 -2
  504. data/vendor/assets/ckeditor/ckeditor/lang/ms.js +2 -2
  505. data/vendor/assets/ckeditor/ckeditor/lang/nb.js +2 -2
  506. data/vendor/assets/ckeditor/ckeditor/lang/nl.js +2 -2
  507. data/vendor/assets/ckeditor/ckeditor/lang/no.js +2 -2
  508. data/vendor/assets/ckeditor/ckeditor/lang/pl.js +2 -2
  509. data/vendor/assets/ckeditor/ckeditor/lang/pt-br.js +2 -2
  510. data/vendor/assets/ckeditor/ckeditor/lang/pt.js +2 -2
  511. data/vendor/assets/ckeditor/ckeditor/lang/ro.js +2 -2
  512. data/vendor/assets/ckeditor/ckeditor/lang/ru.js +2 -2
  513. data/vendor/assets/ckeditor/ckeditor/lang/sk.js +2 -2
  514. data/vendor/assets/ckeditor/ckeditor/lang/sl.js +2 -2
  515. data/vendor/assets/ckeditor/ckeditor/lang/sr-latn.js +2 -2
  516. data/vendor/assets/ckeditor/ckeditor/lang/sr.js +2 -2
  517. data/vendor/assets/ckeditor/ckeditor/lang/sv.js +2 -2
  518. data/vendor/assets/ckeditor/ckeditor/lang/th.js +2 -2
  519. data/vendor/assets/ckeditor/ckeditor/lang/tr.js +2 -2
  520. data/vendor/assets/ckeditor/ckeditor/lang/ug.js +6 -0
  521. data/vendor/assets/ckeditor/ckeditor/lang/uk.js +2 -2
  522. data/vendor/assets/ckeditor/ckeditor/lang/vi.js +2 -2
  523. data/vendor/assets/ckeditor/ckeditor/lang/zh-cn.js +2 -2
  524. data/vendor/assets/ckeditor/ckeditor/lang/zh.js +2 -2
  525. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +1 -1
  526. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/_translationstatus.txt +23 -0
  527. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/cs.js +6 -0
  528. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/cy.js +6 -0
  529. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/da.js +6 -0
  530. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/de.js +6 -0
  531. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/el.js +6 -0
  532. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/en.js +2 -2
  533. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/eo.js +6 -0
  534. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/fa.js +6 -0
  535. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/fi.js +6 -0
  536. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/fr.js +6 -0
  537. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/gu.js +6 -0
  538. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/he.js +2 -2
  539. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/it.js +6 -0
  540. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/mk.js +6 -0
  541. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/nb.js +6 -0
  542. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/nl.js +6 -0
  543. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/no.js +6 -0
  544. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/tr.js +6 -0
  545. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/ug.js +6 -0
  546. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/vi.js +6 -0
  547. data/vendor/assets/ckeditor/ckeditor/plugins/a11yhelp/lang/zh-cn.js +6 -0
  548. data/vendor/assets/ckeditor/ckeditor/plugins/about/dialogs/about.js +1 -1
  549. data/vendor/assets/ckeditor/ckeditor/plugins/adobeair/plugin.js +1 -1
  550. data/vendor/assets/ckeditor/ckeditor/plugins/ajax/plugin.js +1 -1
  551. data/vendor/assets/ckeditor/ckeditor/plugins/autogrow/plugin.js +2 -2
  552. data/vendor/assets/ckeditor/ckeditor/plugins/bbcode/plugin.js +1 -1
  553. data/vendor/assets/ckeditor/ckeditor/plugins/clipboard/dialogs/paste.js +2 -2
  554. data/vendor/assets/ckeditor/ckeditor/plugins/colordialog/dialogs/colordialog.js +3 -3
  555. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/_translationstatus.txt +27 -0
  556. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/bg.js +6 -0
  557. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/cs.js +6 -0
  558. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/cy.js +6 -0
  559. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/da.js +6 -0
  560. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/de.js +6 -0
  561. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/el.js +6 -0
  562. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/en.js +1 -1
  563. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/eo.js +6 -0
  564. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/et.js +6 -0
  565. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/fa.js +6 -0
  566. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/fi.js +6 -0
  567. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/fr.js +6 -0
  568. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/gu.js +6 -0
  569. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/he.js +6 -0
  570. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/hr.js +6 -0
  571. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/it.js +6 -0
  572. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/nb.js +6 -0
  573. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/nl.js +6 -0
  574. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/no.js +6 -0
  575. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/pl.js +6 -0
  576. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/tr.js +6 -0
  577. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/ug.js +6 -0
  578. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/uk.js +6 -0
  579. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/vi.js +6 -0
  580. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/lang/zh-cn.js +6 -0
  581. data/vendor/assets/ckeditor/ckeditor/plugins/devtools/plugin.js +2 -2
  582. data/vendor/assets/ckeditor/ckeditor/plugins/dialog/dialogDefinition.js +1 -1
  583. data/vendor/assets/ckeditor/ckeditor/plugins/div/dialogs/div.js +1 -1
  584. data/vendor/assets/ckeditor/ckeditor/plugins/docprops/dialogs/docprops.js +3 -3
  585. data/vendor/assets/ckeditor/ckeditor/plugins/docprops/plugin.js +1 -1
  586. data/vendor/assets/ckeditor/ckeditor/plugins/find/dialogs/find.js +6 -6
  587. data/vendor/assets/ckeditor/ckeditor/plugins/flash/dialogs/flash.js +2 -2
  588. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/button.js +1 -1
  589. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/checkbox.js +1 -1
  590. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/form.js +1 -1
  591. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/hiddenfield.js +1 -1
  592. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/radio.js +1 -1
  593. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/select.js +1 -1
  594. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/textarea.js +2 -2
  595. data/vendor/assets/ckeditor/ckeditor/plugins/forms/dialogs/textfield.js +1 -1
  596. data/vendor/assets/ckeditor/ckeditor/plugins/iframe/dialogs/iframe.js +1 -1
  597. data/vendor/assets/ckeditor/ckeditor/plugins/iframedialog/plugin.js +1 -1
  598. data/vendor/assets/ckeditor/ckeditor/plugins/image/dialogs/image.js +9 -9
  599. data/vendor/assets/ckeditor/ckeditor/plugins/link/dialogs/anchor.js +1 -1
  600. data/vendor/assets/ckeditor/ckeditor/plugins/link/dialogs/link.js +6 -6
  601. data/vendor/assets/ckeditor/ckeditor/plugins/liststyle/dialogs/liststyle.js +1 -1
  602. data/vendor/assets/ckeditor/ckeditor/plugins/pastefromword/filter/default.js +1 -1
  603. data/vendor/assets/ckeditor/ckeditor/plugins/pastetext/dialogs/pastetext.js +1 -1
  604. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/dialogs/placeholder.js +1 -1
  605. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/_translationstatus.txt +26 -0
  606. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/bg.js +6 -0
  607. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/cs.js +6 -0
  608. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/cy.js +6 -0
  609. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/da.js +6 -0
  610. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/de.js +6 -0
  611. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/el.js +6 -0
  612. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/en.js +1 -1
  613. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/eo.js +6 -0
  614. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/et.js +6 -0
  615. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/fa.js +6 -0
  616. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/fi.js +6 -0
  617. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/fr.js +6 -0
  618. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/he.js +1 -1
  619. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/hr.js +6 -0
  620. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/it.js +6 -0
  621. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/nb.js +6 -0
  622. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/nl.js +6 -0
  623. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/no.js +6 -0
  624. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/pl.js +6 -0
  625. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/tr.js +6 -0
  626. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/ug.js +6 -0
  627. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/uk.js +6 -0
  628. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/vi.js +6 -0
  629. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/lang/zh-cn.js +6 -0
  630. data/vendor/assets/ckeditor/ckeditor/plugins/placeholder/plugin.js +2 -2
  631. data/vendor/assets/ckeditor/ckeditor/plugins/scayt/dialogs/options.js +1 -1
  632. data/vendor/assets/ckeditor/ckeditor/plugins/scayt/dialogs/toolbar.css +1 -1
  633. data/vendor/assets/ckeditor/ckeditor/plugins/smiley/dialogs/smiley.js +1 -1
  634. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/dialogs/specialchar.js +2 -2
  635. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/_translationstatus.txt +19 -0
  636. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/cs.js +6 -0
  637. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/cy.js +6 -0
  638. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/de.js +6 -0
  639. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/en.js +2 -2
  640. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/eo.js +6 -0
  641. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/et.js +6 -0
  642. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/fa.js +6 -0
  643. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/fi.js +6 -0
  644. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/fr.js +6 -0
  645. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/hr.js +6 -0
  646. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/it.js +6 -0
  647. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/nb.js +6 -0
  648. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/nl.js +6 -0
  649. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/no.js +6 -0
  650. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/tr.js +6 -0
  651. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/ug.js +6 -0
  652. data/vendor/assets/ckeditor/ckeditor/plugins/specialchar/lang/zh-cn.js +6 -0
  653. data/vendor/assets/ckeditor/ckeditor/plugins/styles/styles/default.js +1 -1
  654. data/vendor/assets/ckeditor/ckeditor/plugins/stylesheetparser/plugin.js +1 -1
  655. data/vendor/assets/ckeditor/ckeditor/plugins/table/dialogs/table.js +5 -5
  656. data/vendor/assets/ckeditor/ckeditor/plugins/tableresize/plugin.js +1 -1
  657. data/vendor/assets/ckeditor/ckeditor/plugins/tabletools/dialogs/tableCell.js +3 -3
  658. data/vendor/assets/ckeditor/ckeditor/plugins/templates/dialogs/templates.js +1 -1
  659. data/vendor/assets/ckeditor/ckeditor/plugins/templates/templates/default.js +1 -1
  660. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/dialogs/uicolor.js +1 -1
  661. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/_translationstatus.txt +27 -0
  662. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/bg.js +6 -0
  663. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/cs.js +6 -0
  664. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/cy.js +6 -0
  665. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/da.js +6 -0
  666. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/de.js +6 -0
  667. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/el.js +6 -0
  668. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/en.js +1 -1
  669. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/eo.js +6 -0
  670. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/et.js +6 -0
  671. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/fa.js +6 -0
  672. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/fi.js +6 -0
  673. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/fr.js +6 -0
  674. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/he.js +1 -1
  675. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/hr.js +6 -0
  676. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/it.js +6 -0
  677. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/mk.js +6 -0
  678. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/nb.js +6 -0
  679. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/nl.js +6 -0
  680. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/no.js +6 -0
  681. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/pl.js +6 -0
  682. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/tr.js +6 -0
  683. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/ug.js +6 -0
  684. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/uk.js +6 -0
  685. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/vi.js +6 -0
  686. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/lang/zh-cn.js +6 -0
  687. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/plugin.js +2 -2
  688. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/yui/assets/yui.css +1 -1
  689. data/vendor/assets/ckeditor/ckeditor/plugins/uicolor/yui/yui.js +1 -1
  690. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/dialogs/ciframe.html +1 -1
  691. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +1 -1
  692. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/dialogs/wsc.css +1 -1
  693. data/vendor/assets/ckeditor/ckeditor/plugins/wsc/dialogs/wsc.js +2 -2
  694. data/vendor/assets/ckeditor/ckeditor/plugins/xml/plugin.js +1 -1
  695. data/vendor/assets/ckeditor/ckeditor/skins/kama/dialog.css +2 -2
  696. data/vendor/assets/ckeditor/ckeditor/skins/kama/editor.css +4 -4
  697. data/vendor/assets/ckeditor/ckeditor/skins/kama/skin.js +1 -1
  698. data/vendor/assets/ckeditor/ckeditor/skins/kama/templates.css +1 -1
  699. data/vendor/assets/ckeditor/ckeditor/skins/office2003/dialog.css +2 -2
  700. data/vendor/assets/ckeditor/ckeditor/skins/office2003/editor.css +2 -2
  701. data/vendor/assets/ckeditor/ckeditor/skins/office2003/skin.js +1 -1
  702. data/vendor/assets/ckeditor/ckeditor/skins/office2003/templates.css +1 -1
  703. data/vendor/assets/ckeditor/ckeditor/skins/v2/dialog.css +2 -2
  704. data/vendor/assets/ckeditor/ckeditor/skins/v2/editor.css +2 -2
  705. data/vendor/assets/ckeditor/ckeditor/skins/v2/skin.js +1 -1
  706. data/vendor/assets/ckeditor/ckeditor/skins/v2/templates.css +1 -1
  707. data/vendor/assets/ckeditor/ckeditor/themes/default/theme.js +8 -8
  708. metadata +225 -3
@@ -1,6 +1,6 @@
1
- /*
2
- Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3
- For licensing, see LICENSE.html or http://ckeditor.com/license
4
- */
5
-
6
- (function(){CKEDITOR.config.jqueryOverrideVal=typeof CKEDITOR.config.jqueryOverrideVal=='undefined'?true:CKEDITOR.config.jqueryOverrideVal;var a=window.jQuery;if(typeof a=='undefined')return;a.extend(a.fn,{ckeditorGet:function(){var b=this.eq(0).data('ckeditorInstance');if(!b)throw 'CKEditor not yet initialized, use ckeditor() with callback.';return b;},ckeditor:function(b,c){if(!CKEDITOR.env.isCompatible)return this;if(!a.isFunction(b)){var d=c;c=b;b=d;}c=c||{};this.filter('textarea, div, p').each(function(){var e=a(this),f=e.data('ckeditorInstance'),g=e.data('_ckeditorInstanceLock'),h=this;if(f&&!g){if(b)b.apply(f,[this]);}else if(!g){if(c.autoUpdateElement||typeof c.autoUpdateElement=='undefined'&&CKEDITOR.config.autoUpdateElement)c.autoUpdateElementJquery=true;c.autoUpdateElement=false;e.data('_ckeditorInstanceLock',true);f=CKEDITOR.replace(h,c);e.data('ckeditorInstance',f);f.on('instanceReady',function(i){var j=i.editor;setTimeout(function(){if(!j.element){setTimeout(arguments.callee,100);return;}i.removeListener('instanceReady',this.callee);j.on('dataReady',function(){e.trigger('setData.ckeditor',[j]);});j.on('getData',function(l){e.trigger('getData.ckeditor',[j,l.data]);},999);j.on('destroy',function(){e.trigger('destroy.ckeditor',[j]);});if(j.config.autoUpdateElementJquery&&e.is('textarea')&&e.parents('form').length){var k=function(){e.ckeditor(function(){j.updateElement();});};e.parents('form').submit(k);e.parents('form').bind('form-pre-serialize',k);e.bind('destroy.ckeditor',function(){e.parents('form').unbind('submit',k);e.parents('form').unbind('form-pre-serialize',k);});}j.on('destroy',function(){e.data('ckeditorInstance',null);});e.data('_ckeditorInstanceLock',null);e.trigger('instanceReady.ckeditor',[j]);if(b)b.apply(j,[h]);},0);},null,null,9999);}else CKEDITOR.on('instanceReady',function(i){var j=i.editor;setTimeout(function(){if(!j.element){setTimeout(arguments.callee,100);return;}if(j.element.$==h)if(b)b.apply(j,[h]);},0);},null,null,9999);});return this;}});if(CKEDITOR.config.jqueryOverrideVal)a.fn.val=CKEDITOR.tools.override(a.fn.val,function(b){return function(c,d){var e=typeof c!='undefined',f;this.each(function(){var g=a(this),h=g.data('ckeditorInstance');if(!d&&g.is('textarea')&&h){if(e)h.setData(c);else{f=h.getData();return null;}}else if(e)b.call(g,c);else{f=b.call(g);return null;}return true;});return e?this:f;};});})();
1
+ /*
2
+ Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
3
+ For licensing, see LICENSE.html or http://ckeditor.com/license
4
+ */
5
+
6
+ (function(){CKEDITOR.config.jqueryOverrideVal=typeof CKEDITOR.config.jqueryOverrideVal=='undefined'?true:CKEDITOR.config.jqueryOverrideVal;var a=window.jQuery;if(typeof a=='undefined')return;a.extend(a.fn,{ckeditorGet:function(){var b=this.eq(0).data('ckeditorInstance');if(!b)throw 'CKEditor not yet initialized, use ckeditor() with callback.';return b;},ckeditor:function(b,c){if(!CKEDITOR.env.isCompatible)return this;if(!a.isFunction(b)){var d=c;c=b;b=d;}c=c||{};this.filter('textarea, div, p').each(function(){var e=a(this),f=e.data('ckeditorInstance'),g=e.data('_ckeditorInstanceLock'),h=this;if(f&&!g){if(b)b.apply(f,[this]);}else if(!g){if(c.autoUpdateElement||typeof c.autoUpdateElement=='undefined'&&CKEDITOR.config.autoUpdateElement)c.autoUpdateElementJquery=true;c.autoUpdateElement=false;e.data('_ckeditorInstanceLock',true);f=CKEDITOR.replace(h,c);e.data('ckeditorInstance',f);f.on('instanceReady',function(i){var j=i.editor;setTimeout(function(){if(!j.element){setTimeout(arguments.callee,100);return;}i.removeListener('instanceReady',this.callee);j.on('dataReady',function(){e.trigger('setData.ckeditor',[j]);});j.on('getData',function(l){e.trigger('getData.ckeditor',[j,l.data]);},999);j.on('destroy',function(){e.trigger('destroy.ckeditor',[j]);});if(j.config.autoUpdateElementJquery&&e.is('textarea')&&e.parents('form').length){var k=function(){e.ckeditor(function(){j.updateElement();});};e.parents('form').submit(k);e.parents('form').bind('form-pre-serialize',k);e.bind('destroy.ckeditor',function(){e.parents('form').unbind('submit',k);e.parents('form').unbind('form-pre-serialize',k);});}j.on('destroy',function(){e.data('ckeditorInstance',null);});e.data('_ckeditorInstanceLock',null);e.trigger('instanceReady.ckeditor',[j]);if(b)b.apply(j,[h]);},0);},null,null,9999);}else CKEDITOR.on('instanceReady',function(i){var j=i.editor;setTimeout(function(){if(!j.element){setTimeout(arguments.callee,100);return;}if(j.element.$==h)if(b)b.apply(j,[h]);},0);},null,null,9999);});return this;}});if(CKEDITOR.config.jqueryOverrideVal)a.fn.val=CKEDITOR.tools.override(a.fn.val,function(b){return function(c,d){var e=typeof c!='undefined',f;this.each(function(){var g=a(this),h=g.data('ckeditorInstance');if(!d&&g.is('textarea')&&h){if(e)h.setData(c);else{f=h.getData();return null;}}else if(e)b.call(g,c);else{f=b.call(g);return null;}return true;});return e?this:f;};});})();
@@ -1,955 +1,955 @@
1
- <%
2
- '
3
- ' Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
4
- ' For licensing, see LICENSE.html or http://ckeditor.com/license
5
-
6
- ' Shared variable for all instances ("static")
7
- dim CKEDITOR_initComplete
8
- dim CKEDITOR_returnedEvents
9
-
10
- ''
11
- ' \brief CKEditor class that can be used to create editor
12
- ' instances in ASP pages on server side.
13
- ' @see http://ckeditor.com
14
- '
15
- ' Sample usage:
16
- ' @code
17
- ' editor = new CKEditor
18
- ' editor.editor "editor1", "<p>Initial value.</p>", empty, empty
19
- ' @endcode
20
-
21
- Class CKEditor
22
-
23
- ''
24
- ' The version of %CKEditor.
25
- private version
26
-
27
- ''
28
- ' A constant string unique for each release of %CKEditor.
29
- private mTimeStamp
30
-
31
- ''
32
- ' URL to the %CKEditor installation directory (absolute or relative to document root).
33
- ' If not set, CKEditor will try to guess it's path.
34
- '
35
- ' Example usage:
36
- ' @code
37
- ' editor.basePath = "/ckeditor/"
38
- ' @endcode
39
- Public basePath
40
-
41
- ''
42
- ' A boolean variable indicating whether CKEditor has been initialized.
43
- ' Set it to true only if you have already included
44
- ' &lt;script&gt; tag loading ckeditor.js in your website.
45
- Public initialized
46
-
47
- ''
48
- ' Boolean variable indicating whether created code should be printed out or returned by a function.
49
- '
50
- ' Example 1: get the code creating %CKEditor instance and print it on a page with the "echo" function.
51
- ' @code
52
- ' editor = new CKEditor
53
- ' editor.returnOutput = true
54
- ' code = editor.editor("editor1", "<p>Initial value.</p>", empty, empty)
55
- ' response.write "<p>Editor 1:</p>"
56
- ' response.write code
57
- ' @endcode
58
- Public returnOutput
59
-
60
- ''
61
- ' A Dictionary with textarea attributes.
62
- '
63
- ' When %CKEditor is created with the editor() method, a HTML &lt;textarea&gt; element is created,
64
- ' it will be displayed to anyone with JavaScript disabled or with incompatible browser.
65
- public textareaAttributes
66
-
67
- ''
68
- ' A string indicating the creation date of %CKEditor.
69
- ' Do not change it unless you want to force browsers to not use previously cached version of %CKEditor.
70
- public timestamp
71
-
72
- ''
73
- ' A dictionary that holds the instance configuration.
74
- private oInstanceConfig
75
-
76
- ''
77
- ' A dictionary that holds the configuration for all the instances.
78
- private oAllInstancesConfig
79
-
80
- ''
81
- ' A dictionary that holds event listeners for the instance.
82
- private oInstanceEvents
83
-
84
- ''
85
- ' A dictionary that holds event listeners for all the instances.
86
- private oAllInstancesEvents
87
-
88
- ''
89
- ' A Dictionary that holds global event listeners (CKEDITOR object)
90
- private oGlobalEvents
91
-
92
-
93
- Private Sub Class_Initialize()
94
- version = "3.6.1"
95
- timeStamp = "B5GJ5GG"
96
- mTimeStamp = "B5GJ5GG"
97
-
98
- Set oInstanceConfig = CreateObject("Scripting.Dictionary")
99
- Set oAllInstancesConfig = CreateObject("Scripting.Dictionary")
100
-
101
- Set oInstanceEvents = CreateObject("Scripting.Dictionary")
102
- Set oAllInstancesEvents = CreateObject("Scripting.Dictionary")
103
- Set oGlobalEvents = CreateObject("Scripting.Dictionary")
104
-
105
- Set textareaAttributes = CreateObject("Scripting.Dictionary")
106
- textareaAttributes.Add "rows", 8
107
- textareaAttributes.Add "cols", 60
108
- End Sub
109
-
110
- ''
111
- ' Creates a %CKEditor instance.
112
- ' In incompatible browsers %CKEditor will downgrade to plain HTML &lt;textarea&gt; element.
113
- '
114
- ' @param name (string) Name of the %CKEditor instance (this will be also the "name" attribute of textarea element).
115
- ' @param value (string) Initial value.
116
- '
117
- ' Example usage:
118
- ' @code
119
- ' set editor = New CKEditor
120
- ' editor.editor "field1", "<p>Initial value.</p>"
121
- ' @endcode
122
- '
123
- ' Advanced example:
124
- ' @code
125
- ' set editor = new CKEditor
126
- ' set config = CreateObject("Scripting.Dictionary")
127
- ' config.Add "toolbar", Array( _
128
- ' Array( "Source", "-", "Bold", "Italic", "Underline", "Strike" ), _
129
- ' Array( "Image", "Link", "Unlink", "Anchor" ) _
130
- ' )
131
- ' set events = CreateObject("Scripting.Dictionary")
132
- ' events.Add "instanceReady", "function (evt) { alert('Loaded second editor: ' + evt.editor.name );}"
133
-
134
- ' editor.editor "field1", "<p>Initial value.</p>", config, events
135
- ' @endcode
136
- '
137
- public function editor(name, value)
138
- dim attr, out, js, customConfig, extraConfig
139
- dim attribute
140
-
141
- attr = ""
142
-
143
- for each attribute in textareaAttributes
144
- attr = attr & " " & attribute & "=""" & replace( textareaAttributes( attribute ), """", "&quot" ) & """"
145
- next
146
-
147
- out = "<textarea name=""" & name & """" & attr & ">" & Server.HtmlEncode(value) & "</textarea>" & vbcrlf
148
-
149
- if not(initialized) then
150
- out = out & init()
151
- end if
152
-
153
- set customConfig = configSettings()
154
- js = returnGlobalEvents()
155
-
156
- extraConfig = (new JSON)( empty, customConfig, false )
157
- if extraConfig<>"" then extraConfig = ", " & extraConfig
158
- js = js & "CKEDITOR.replace('" & name & "'" & extraConfig & ");"
159
-
160
- out = out & script(js)
161
-
162
- if not(returnOutput) then
163
- response.write out
164
- out = ""
165
- end if
166
-
167
- editor = out
168
-
169
- oInstanceConfig.RemoveAll
170
- oInstanceEvents.RemoveAll
171
- end function
172
-
173
- ''
174
- ' Replaces a &lt;textarea&gt; with a %CKEditor instance.
175
- '
176
- ' @param id (string) The id or name of textarea element.
177
- '
178
- ' Example 1: adding %CKEditor to &lt;textarea name="article"&gt;&lt;/textarea&gt; element:
179
- ' @code
180
- ' set editor = New CKEditor
181
- ' editor.replace "article"
182
- ' @endcode
183
- '
184
- public function replaceInstance(id)
185
- dim out, js, customConfig, extraConfig
186
-
187
- out = ""
188
- if not(initialized) then
189
- out = out & init()
190
- end if
191
-
192
- set customConfig = configSettings()
193
- js = returnGlobalEvents()
194
-
195
- extraConfig = (new JSON)( empty, customConfig, false )
196
- if extraConfig<>"" then extraConfig = ", " & extraConfig
197
- js = js & "CKEDITOR.replace('" & id & "'" & extraConfig & ");"
198
-
199
- out = out & script(js)
200
-
201
- if not(returnOutput) then
202
- response.write out
203
- out = ""
204
- end if
205
-
206
- replaceInstance = out
207
-
208
- oInstanceConfig.RemoveAll
209
- oInstanceEvents.RemoveAll
210
- end function
211
-
212
- ''
213
- ' Replace all &lt;textarea&gt; elements available in the document with editor instances.
214
- '
215
- ' @param className (string) If set, replace all textareas with class className in the page.
216
- '
217
- ' Example 1: replace all &lt;textarea&gt; elements in the page.
218
- ' @code
219
- ' editor = new CKEditor
220
- ' editor.replaceAll empty
221
- ' @endcode
222
- '
223
- ' Example 2: replace all &lt;textarea class="myClassName"&gt; elements in the page.
224
- ' @code
225
- ' editor = new CKEditor
226
- ' editor.replaceAll 'myClassName'
227
- ' @endcode
228
- '
229
- function replaceAll(className)
230
- dim out, js, customConfig
231
-
232
- out = ""
233
- if not(initialized) then
234
- out = out & init()
235
- end if
236
-
237
- set customConfig = configSettings()
238
- js = returnGlobalEvents()
239
-
240
- if (customConfig.Count=0) then
241
- if (isEmpty(className)) then
242
- js = js & "CKEDITOR.replaceAll();"
243
- else
244
- js = js & "CKEDITOR.replaceAll('" & className & "');"
245
- end if
246
- else
247
- js = js & "CKEDITOR.replaceAll( function(textarea, config) {\n"
248
- if not(isEmpty(className)) then
249
- js = js & " var classRegex = new RegExp('(?:^| )' + '" & className & "' + '(?:$| )');\n"
250
- js = js & " if (!classRegex.test(textarea.className))\n"
251
- js = js & " return false;\n"
252
- end if
253
- js = js & " CKEDITOR.tools.extend(config, " & (new JSON)( empty, customConfig, false ) & ", true);"
254
- js = js & "} );"
255
- end if
256
-
257
- out = out & script(js)
258
-
259
- if not(returnOutput) then
260
- response.write out
261
- out = ""
262
- end if
263
-
264
- replaceAll = out
265
-
266
- oInstanceConfig.RemoveAll
267
- oInstanceEvents.RemoveAll
268
- end function
269
-
270
-
271
- ''
272
- ' A Dictionary that holds the %CKEditor configuration for all instances
273
- ' For the list of available options, see http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html
274
- '
275
- ' Example usage:
276
- ' @code
277
- ' editor.config("height") = 400
278
- ' // Use @@ at the beggining of a string to ouput it without surrounding quotes.
279
- ' editor.config("width") = "@@screen.width * 0.8"
280
- ' @endcode
281
- Public Property Let Config( configKey, configValue )
282
- oAllInstancesConfig.Add configKey, configValue
283
- End Property
284
-
285
- ''
286
- ' Configuration options for the next instance
287
- '
288
- Public Property Let instanceConfig( configKey, configValue )
289
- oInstanceConfig.Add configKey, configValue
290
- End Property
291
-
292
- ''
293
- ' Adds event listener.
294
- ' Events are fired by %CKEditor in various situations.
295
- '
296
- ' @param eventName (string) Event name.
297
- ' @param javascriptCode (string) Javascript anonymous function or function name.
298
- '
299
- ' Example usage:
300
- ' @code
301
- ' editor.addEventHandler "instanceReady", "function (ev) { " & _
302
- ' " alert('Loaded: ' + ev.editor.name); " & _
303
- ' "}"
304
- ' @endcode
305
- '
306
- public sub addEventHandler(eventName, javascriptCode)
307
- if not(oAllInstancesEvents.Exists( eventName ) ) then
308
- oAllInstancesEvents.Add eventName, Array()
309
- end if
310
-
311
- dim listeners, size
312
- listeners = oAllInstancesEvents( eventName )
313
- size = ubound(listeners) + 1
314
- redim preserve listeners(size)
315
- listeners(size) = javascriptCode
316
-
317
- oAllInstancesEvents( eventName ) = listeners
318
- ' '' Avoid duplicates. fixme...
319
- ' if (!in_array($javascriptCode, $this->_events[$event])) {
320
- ' $this->_events[$event][] = $javascriptCode;
321
- ' }
322
- end sub
323
-
324
- ''
325
- ' Clear registered event handlers.
326
- ' Note: this function will have no effect on already created editor instances.
327
- '
328
- ' @param eventName (string) Event name, if set to 'empty' all event handlers will be removed.
329
- '
330
- public sub clearEventHandlers( eventName )
331
- if not(isEmpty( eventName )) then
332
- oAllInstancesEvents.Remove eventName
333
- else
334
- oAllInstancesEvents.RemoveAll
335
- end if
336
- end sub
337
-
338
-
339
- ''
340
- ' Adds event listener only for the next instance.
341
- ' Events are fired by %CKEditor in various situations.
342
- '
343
- ' @param eventName (string) Event name.
344
- ' @param javascriptCode (string) Javascript anonymous function or function name.
345
- '
346
- ' Example usage:
347
- ' @code
348
- ' editor.addInstanceEventHandler "instanceReady", "function (ev) { " & _
349
- ' " alert('Loaded: ' + ev.editor.name); " & _
350
- ' "}"
351
- ' @endcode
352
- '
353
- public sub addInstanceEventHandler(eventName, javascriptCode)
354
- if not(oInstanceEvents.Exists( eventName ) ) then
355
- oInstanceEvents.Add eventName, Array()
356
- end if
357
-
358
- dim listeners, size
359
- listeners = oInstanceEvents( eventName )
360
- size = ubound(listeners) + 1
361
- redim preserve listeners(size)
362
- listeners(size) = javascriptCode
363
-
364
- oInstanceEvents( eventName ) = listeners
365
- ' '' Avoid duplicates. fixme...
366
- ' if (!in_array($javascriptCode, $this->_events[$event])) {
367
- ' $this->_events[$event][] = $javascriptCode;
368
- ' }
369
- end sub
370
-
371
- ''
372
- ' Clear registered event handlers.
373
- ' Note: this function will have no effect on already created editor instances.
374
- '
375
- ' @param eventName (string) Event name, if set to 'empty' all event handlers will be removed.
376
- '
377
- public sub clearInstanceEventHandlers( eventName )
378
- if not(isEmpty( eventName )) then
379
- oInstanceEvents.Remove eventName
380
- else
381
- oInstanceEvents.RemoveAll
382
- end if
383
- end sub
384
-
385
- ''
386
- ' Adds global event listener.
387
- '
388
- ' @param event (string) Event name.
389
- ' @param javascriptCode (string) Javascript anonymous function or function name.
390
- '
391
- ' Example usage:
392
- ' @code
393
- ' editor.addGlobalEventHandler "dialogDefinition", "function (ev) { " & _
394
- ' " alert('Loading dialog: ' + ev.data.name); " & _
395
- ' "}"
396
- ' @endcode
397
- '
398
- public sub addGlobalEventHandler( eventName, javascriptCode)
399
- if not(oGlobalEvents.Exists( eventName ) ) then
400
- oGlobalEvents.Add eventName, Array()
401
- end if
402
-
403
- dim listeners, size
404
- listeners = oGlobalEvents( eventName )
405
- size = ubound(listeners) + 1
406
- redim preserve listeners(size)
407
- listeners(size) = javascriptCode
408
-
409
- oGlobalEvents( eventName ) = listeners
410
-
411
- ' // Avoid duplicates.
412
- ' if (!in_array($javascriptCode, $this->_globalEvents[$event])) {
413
- ' $this->_globalEvents[$event][] = $javascriptCode;
414
- ' }
415
- end sub
416
-
417
- ''
418
- ' Clear registered global event handlers.
419
- ' Note: this function will have no effect if the event handler has been already printed/returned.
420
- '
421
- ' @param eventName (string) Event name, if set to 'empty' all event handlers will be removed .
422
- '
423
- public sub clearGlobalEventHandlers( eventName )
424
- if not(isEmpty( eventName )) then
425
- oGlobalEvents.Remove eventName
426
- else
427
- oGlobalEvents.RemoveAll
428
- end if
429
- end sub
430
-
431
- ''
432
- ' Prints javascript code.
433
- '
434
- ' @param string js
435
- '
436
- private function script(js)
437
- script = "<script type=""text/javascript"">" & _
438
- "//<![CDATA[" & vbcrlf & _
439
- js & vbcrlf & _
440
- "//]]>" & _
441
- "</script>" & vbcrlf
442
- end function
443
-
444
- ''
445
- ' Returns the configuration array (global and instance specific settings are merged into one array).
446
- '
447
- ' @param instanceConfig (Dictionary) The specific configurations to apply to editor instance.
448
- ' @param instanceEvents (Dictionary) Event listeners for editor instance.
449
- '
450
- private function configSettings()
451
- dim mergedConfig, mergedEvents
452
- set mergedConfig = cloneDictionary(oAllInstancesConfig)
453
- set mergedEvents = cloneDictionary(oAllInstancesEvents)
454
-
455
- if not(isEmpty(oInstanceConfig)) then
456
- set mergedConfig = mergeDictionary(mergedConfig, oInstanceConfig)
457
- end if
458
-
459
- if not(isEmpty(oInstanceEvents)) then
460
- for each eventName in oInstanceEvents
461
- code = oInstanceEvents( eventName )
462
-
463
- if not(mergedEvents.Exists( eventName)) then
464
- mergedEvents.Add eventName, code
465
- else
466
-
467
- dim listeners, size
468
- listeners = mergedEvents( eventName )
469
- size = ubound(listeners)
470
- if isArray( code ) then
471
- addedCount = ubound(code)
472
- redim preserve listeners( size + addedCount + 1 )
473
- for i = 0 to addedCount
474
- listeners(size + i + 1) = code (i)
475
- next
476
- else
477
- size = size + 1
478
- redim preserve listeners(size)
479
- listeners(size) = code
480
- end if
481
-
482
- mergedEvents( eventName ) = listeners
483
- end if
484
- next
485
-
486
- end if
487
-
488
- dim i, eventName, handlers, configON, ub, code
489
-
490
- if mergedEvents.Count>0 then
491
- if mergedConfig.Exists( "on" ) then
492
- set configON = mergedConfig.items( "on" )
493
- else
494
- set configON = CreateObject("Scripting.Dictionary")
495
- mergedConfig.Add "on", configOn
496
- end if
497
-
498
- for each eventName in mergedEvents
499
- handlers = mergedEvents( eventName )
500
- code = ""
501
-
502
- if isArray(handlers) then
503
- uB = ubound(handlers)
504
- if (uB = 0) then
505
- code = handlers(0)
506
- else
507
- code = "function (ev) {"
508
- for i=0 to uB
509
- code = code & "(" & handlers(i) & ")(ev);"
510
- next
511
- code = code & "}"
512
- end if
513
- else
514
- code = handlers
515
- end if
516
- ' Using @@ at the beggining to signal JSON that we don't want this quoted.
517
- configON.Add eventName, "@@" & code
518
- next
519
-
520
- ' set mergedConfig.Item("on") = configOn
521
- end if
522
-
523
- set configSettings = mergedConfig
524
- end function
525
-
526
- ''
527
- ' Returns a copy of a scripting.dictionary object
528
- '
529
- private function cloneDictionary( base )
530
- dim newOne, tmpKey
531
-
532
- Set newOne = CreateObject("Scripting.Dictionary")
533
- for each tmpKey in base
534
- newOne.Add tmpKey , base( tmpKey )
535
- next
536
-
537
- set cloneDictionary = newOne
538
- end function
539
-
540
- ''
541
- ' Combines two scripting.dictionary objects
542
- ' The base object isn't modified, and extra gets all the properties in base
543
- '
544
- private function mergeDictionary(base, extra)
545
- dim newOne, tmpKey
546
-
547
- for each tmpKey in base
548
- if not(extra.Exists( tmpKey )) then
549
- extra.Add tmpKey, base( tmpKey )
550
- end if
551
- next
552
-
553
- set mergeDictionary = extra
554
- end function
555
-
556
- ''
557
- ' Return global event handlers.
558
- '
559
- private function returnGlobalEvents()
560
- dim out, eventName, handlers
561
- dim handlersForEvent, handler, code, i
562
- out = ""
563
-
564
- if (isempty(CKEDITOR_returnedEvents)) then
565
- set CKEDITOR_returnedEvents = CreateObject("Scripting.Dictionary")
566
- end if
567
-
568
- for each eventName in oGlobalEvents
569
- handlers = oGlobalEvents( eventName )
570
-
571
- if not(CKEDITOR_returnedEvents.Exists(eventName)) then
572
- CKEDITOR_returnedEvents.Add eventName, CreateObject("Scripting.Dictionary")
573
- end if
574
-
575
- set handlersForEvent = CKEDITOR_returnedEvents.Item( eventName )
576
-
577
- ' handlersForEvent is another dictionary
578
- ' and handlers is an array
579
-
580
- for i = 0 to ubound(handlers)
581
- code = handlers( i )
582
-
583
- ' Return only new events
584
- if not(handlersForEvent.Exists( code )) then
585
- if (out <> "") then out = out & vbcrlf
586
- out = out & "CKEDITOR.on('" & eventName & "', " & code & ");"
587
- handlersForEvent.Add code, code
588
- end if
589
- next
590
- next
591
-
592
- returnGlobalEvents = out
593
- end function
594
-
595
- ''
596
- ' Initializes CKEditor (executed only once).
597
- '
598
- private function init()
599
- dim out, args, path, extraCode, file
600
- out = ""
601
-
602
- if (CKEDITOR_initComplete) then
603
- init = ""
604
- exit function
605
- end if
606
-
607
- if (initialized) then
608
- CKEDITOR_initComplete = true
609
- init = ""
610
- exit function
611
- end if
612
-
613
- args = ""
614
- path = ckeditorPath()
615
-
616
- if (timestamp <> "") and (timestamp <> "%" & "TIMESTAMP%") then
617
- args = "?t=" & timestamp
618
- end if
619
-
620
- ' Skip relative paths...
621
- if (instr(path, "..") <> 0) then
622
- out = out & script("window.CKEDITOR_BASEPATH='" & path & "';")
623
- end if
624
-
625
- out = out & "<scr" & "ipt type=""text/javascript"" src=""" & path & ckeditorFileName() & args & """></scr" & "ipt>" & vbcrlf
626
-
627
- extraCode = ""
628
- if (timestamp <> mTimeStamp) then
629
- extraCode = extraCode & "CKEDITOR.timestamp = '" & timestamp & "';"
630
- end if
631
- if (extraCode <> "") then
632
- out = out & script(extraCode)
633
- end if
634
-
635
- CKEDITOR_initComplete = true
636
- initialized = true
637
-
638
- init = out
639
- end function
640
-
641
- private function ckeditorFileName()
642
- ckeditorFileName = "ckeditor.js"
643
- end function
644
-
645
- ''
646
- ' Return path to ckeditor.js.
647
- '
648
- private function ckeditorPath()
649
- if (basePath <> "") then
650
- ckeditorPath = basePath
651
- else
652
- ' In classic ASP we can't get the location of this included script
653
- ckeditorPath = "/ckeditor/"
654
- end if
655
-
656
- ' Try to check if that folder contains the CKEditor files:
657
- ' If it's a full URL avoid checking it as it might point to an external server.
658
- if (instr(ckeditorPath, "://") <> 0) then exit function
659
-
660
- dim filename, oFSO, exists
661
- filename = server.mapPath(basePath & ckeditorFileName())
662
- set oFSO = Server.CreateObject("Scripting.FileSystemObject")
663
- exists = oFSO.FileExists(filename)
664
- set oFSO = nothing
665
-
666
- if not(exists) then
667
- response.clear
668
- response.write "<h1>CKEditor path validation failed</h1>"
669
- response.write "<p>The path &quot;" & ckeditorPath & "&quot; doesn't include the CKEditor main file (" & ckeditorFileName() & ")</p>"
670
- response.write "<p>Please, verify that you have set it correctly and/or adjust the 'basePath' property</p>"
671
- response.write "<p>Checked for physical file: &quot;" & filename & "&quot;</p>"
672
- response.end
673
- end if
674
- end function
675
-
676
- End Class
677
-
678
-
679
-
680
- ' URL: http://www.webdevbros.net/2007/04/26/generate-json-from-asp-datatypes/
681
- '**************************************************************************************************************
682
- '' @CLASSTITLE: JSON
683
- '' @CREATOR: Michal Gabrukiewicz (gabru at grafix.at), Michael Rebec
684
- '' @CONTRIBUTORS: - Cliff Pruitt (opensource at crayoncowboy.com)
685
- '' - Sylvain Lafontaine
686
- '' - Jef Housein
687
- '' - Jeremy Brown
688
- '' @CREATEDON: 2007-04-26 12:46
689
- '' @CDESCRIPTION: Comes up with functionality for JSON (http://json.org) to use within ASP.
690
- '' Correct escaping of characters, generating JSON Grammer out of ASP datatypes and structures
691
- '' Some examples (all use the <em>toJSON()</em> method but as it is the class' default method it can be left out):
692
- '' <code>
693
- '' <%
694
- '' 'simple number
695
- '' output = (new JSON)("myNum", 2, false)
696
- '' 'generates {"myNum": 2}
697
- ''
698
- '' 'array with different datatypes
699
- '' output = (new JSON)("anArray", array(2, "x", null), true)
700
- '' 'generates "anArray": [2, "x", null]
701
- '' '(note: the last parameter was true, thus no surrounding brackets in the result)
702
- '' % >
703
- '' </code>
704
- '' @REQUIRES: -
705
- '' @OPTIONEXPLICIT: yes
706
- '' @VERSION: 1.5.1
707
-
708
- '**************************************************************************************************************
709
- class JSON
710
-
711
- 'private members
712
- private output, innerCall
713
-
714
- '**********************************************************************************************************
715
- '* constructor
716
- '**********************************************************************************************************
717
- public sub class_initialize()
718
- newGeneration()
719
- end sub
720
-
721
- '******************************************************************************************
722
- '' @SDESCRIPTION: STATIC! takes a given string and makes it JSON valid
723
- '' @DESCRIPTION: all characters which needs to be escaped are beeing replaced by their
724
- '' unicode representation according to the
725
- '' RFC4627#2.5 - http://www.ietf.org/rfc/rfc4627.txt?number=4627
726
- '' @PARAM: val [string]: value which should be escaped
727
- '' @RETURN: [string] JSON valid string
728
- '******************************************************************************************
729
- public function escape(val)
730
- dim cDoubleQuote, cRevSolidus, cSolidus
731
- cDoubleQuote = &h22
732
- cRevSolidus = &h5C
733
- cSolidus = &h2F
734
- dim i, currentDigit
735
- for i = 1 to (len(val))
736
- currentDigit = mid(val, i, 1)
737
- if ascw(currentDigit) > &h00 and ascw(currentDigit) < &h1F then
738
- currentDigit = escapequence(currentDigit)
739
- elseif ascw(currentDigit) >= &hC280 and ascw(currentDigit) <= &hC2BF then
740
- currentDigit = "\u00" + right(padLeft(hex(ascw(currentDigit) - &hC200), 2, 0), 2)
741
- elseif ascw(currentDigit) >= &hC380 and ascw(currentDigit) <= &hC3BF then
742
- currentDigit = "\u00" + right(padLeft(hex(ascw(currentDigit) - &hC2C0), 2, 0), 2)
743
- else
744
- select case ascw(currentDigit)
745
- case cDoubleQuote: currentDigit = escapequence(currentDigit)
746
- case cRevSolidus: currentDigit = escapequence(currentDigit)
747
- case cSolidus: currentDigit = escapequence(currentDigit)
748
- end select
749
- end if
750
- escape = escape & currentDigit
751
- next
752
- end function
753
-
754
- '******************************************************************************************************************
755
- '' @SDESCRIPTION: generates a representation of a name value pair in JSON grammer
756
- '' @DESCRIPTION: It generates a name value pair which is represented as <em>{"name": value}</em> in JSON.
757
- '' the generation is fully recursive. Thus the value can also be a complex datatype (array in dictionary, etc.) e.g.
758
- '' <code>
759
- '' <%
760
- '' set j = new JSON
761
- '' j.toJSON "n", array(RS, dict, false), false
762
- '' j.toJSON "n", array(array(), 2, true), false
763
- '' % >
764
- '' </code>
765
- '' @PARAM: name [string]: name of the value (accessible with javascript afterwards). leave empty to get just the value
766
- '' @PARAM: val [variant], [int], [float], [array], [object], [dictionary]: value which needs
767
- '' to be generated. Conversation of the data types is as follows:<br>
768
- '' - <strong>ASP datatype -> JavaScript datatype</strong>
769
- '' - NOTHING, NULL -> null
770
- '' - INT, DOUBLE -> number
771
- '' - STRING -> string
772
- '' - BOOLEAN -> bool
773
- '' - ARRAY -> array
774
- '' - DICTIONARY -> Represents it as name value pairs. Each key is accessible as property afterwards. json will look like <code>"name": {"key1": "some value", "key2": "other value"}</code>
775
- '' - <em>multidimensional array</em> -> Generates a 1-dimensional array (flat) with all values of the multidimensional array
776
- '' - <em>request</em> object -> every property and collection (cookies, form, querystring, etc) of the asp request object is exposed as an item of a dictionary. Property names are <strong>lowercase</strong>. e.g. <em>servervariables</em>.
777
- '' - OBJECT -> name of the type (if unknown type) or all its properties (if class implements <em>reflect()</em> method)
778
- '' Implement a <strong>reflect()</strong> function if you want your custom classes to be recognized. The function must return
779
- '' a dictionary where the key holds the property name and the value its value. Example of a reflect function within a User class which has firstname and lastname properties
780
- '' <code>
781
- '' <%
782
- '' function reflect()
783
- '' . set reflect = server.createObject("scripting.dictionary")
784
- '' . reflect.add "firstname", firstname
785
- '' . reflect.add "lastname", lastname
786
- '' end function
787
- '' % >
788
- '' </code>
789
- '' Example of how to generate a JSON representation of the asp request object and access the <em>HTTP_HOST</em> server variable in JavaScript:
790
- '' <code>
791
- '' <script>alert(<%= (new JSON)(empty, request, false) % >.servervariables.HTTP_HOST);</script>
792
- '' </code>
793
- '' @PARAM: nested [bool]: indicates if the name value pair is already nested within another? if yes then the <em>{}</em> are left out.
794
- '' @RETURN: [string] returns a JSON representation of the given name value pair
795
- '******************************************************************************************************************
796
- public default function toJSON(name, val, nested)
797
- if not nested and not isEmpty(name) then write("{")
798
- if not isEmpty(name) then write("""" & escape(name) & """: ")
799
- generateValue(val)
800
- if not nested and not isEmpty(name) then write("}")
801
- toJSON = output
802
-
803
- if innerCall = 0 then newGeneration()
804
- end function
805
-
806
- '******************************************************************************************************************
807
- '* generate
808
- '******************************************************************************************************************
809
- private function generateValue(val)
810
- if isNull(val) then
811
- write("null")
812
- elseif isArray(val) then
813
- generateArray(val)
814
- elseif isObject(val) then
815
- dim tName : tName = typename(val)
816
- if val is nothing then
817
- write("null")
818
- elseif tName = "Dictionary" or tName = "IRequestDictionary" then
819
- generateDictionary(val)
820
- elseif tName = "IRequest" then
821
- set req = server.createObject("scripting.dictionary")
822
- req.add "clientcertificate", val.ClientCertificate
823
- req.add "cookies", val.cookies
824
- req.add "form", val.form
825
- req.add "querystring", val.queryString
826
- req.add "servervariables", val.serverVariables
827
- req.add "totalbytes", val.totalBytes
828
- generateDictionary(req)
829
- elseif tName = "IStringList" then
830
- if val.count = 1 then
831
- toJSON empty, val(1), true
832
- else
833
- generateArray(val)
834
- end if
835
- else
836
- generateObject(val)
837
- end if
838
- else
839
- 'bool
840
- dim varTyp
841
- varTyp = varType(val)
842
- if varTyp = 11 then
843
- if val then write("true") else write("false")
844
- 'int, long, byte
845
- elseif varTyp = 2 or varTyp = 3 or varTyp = 17 or varTyp = 19 then
846
- write(cLng(val))
847
- 'single, double, currency
848
- elseif varTyp = 4 or varTyp = 5 or varTyp = 6 or varTyp = 14 then
849
- write(replace(cDbl(val), ",", "."))
850
- else
851
- ' Using @@ at the beggining to signal JSON that we don't want this quoted.
852
- if left(val, 2) = "@@" then
853
- write( mid( val, 3 ) )
854
- else
855
- write("""" & escape(val & "") & """")
856
- end if
857
- end if
858
- end if
859
- generateValue = output
860
- end function
861
-
862
- '******************************************************************************************************************
863
- '* generateArray
864
- '******************************************************************************************************************
865
- private sub generateArray(val)
866
- dim item, i
867
- write("[")
868
- i = 0
869
- 'the for each allows us to support also multi dimensional arrays
870
- for each item in val
871
- if i > 0 then write(",")
872
- generateValue(item)
873
- i = i + 1
874
- next
875
- write("]")
876
- end sub
877
-
878
- '******************************************************************************************************************
879
- '* generateDictionary
880
- '******************************************************************************************************************
881
- private sub generateDictionary(val)
882
- innerCall = innerCall + 1
883
- if val.count = 0 then
884
- toJSON empty, null, true
885
- exit sub
886
- end if
887
- dim key, i
888
- write("{")
889
- i = 0
890
- for each key in val
891
- if i > 0 then write(",")
892
- toJSON key, val(key), true
893
- i = i + 1
894
- next
895
- write("}")
896
- innerCall = innerCall - 1
897
- end sub
898
-
899
- '******************************************************************************************************************
900
- '* generateObject
901
- '******************************************************************************************************************
902
- private sub generateObject(val)
903
- dim props
904
- on error resume next
905
- set props = val.reflect()
906
- if err = 0 then
907
- on error goto 0
908
- innerCall = innerCall + 1
909
- toJSON empty, props, true
910
- innerCall = innerCall - 1
911
- else
912
- on error goto 0
913
- write("""" & escape(typename(val)) & """")
914
- end if
915
- end sub
916
-
917
- '******************************************************************************************************************
918
- '* newGeneration
919
- '******************************************************************************************************************
920
- private sub newGeneration()
921
- output = empty
922
- innerCall = 0
923
- end sub
924
-
925
- '******************************************************************************************
926
- '* JsonEscapeSquence
927
- '******************************************************************************************
928
- private function escapequence(digit)
929
- escapequence = "\u00" + right(padLeft(hex(ascw(digit)), 2, 0), 2)
930
- end function
931
-
932
- '******************************************************************************************
933
- '* padLeft
934
- '******************************************************************************************
935
- private function padLeft(value, totalLength, paddingChar)
936
- padLeft = right(clone(paddingChar, totalLength) & value, totalLength)
937
- end function
938
-
939
- '******************************************************************************************
940
- '* clone
941
- '******************************************************************************************
942
- private function clone(byVal str, n)
943
- dim i
944
- for i = 1 to n : clone = clone & str : next
945
- end function
946
-
947
- '******************************************************************************************
948
- '* write
949
- '******************************************************************************************
950
- private sub write(val)
951
- output = output & val
952
- end sub
953
-
954
- end class
955
- %>
1
+ <%
2
+ '
3
+ ' Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
4
+ ' For licensing, see LICENSE.html or http://ckeditor.com/license
5
+
6
+ ' Shared variable for all instances ("static")
7
+ dim CKEDITOR_initComplete
8
+ dim CKEDITOR_returnedEvents
9
+
10
+ ''
11
+ ' \brief CKEditor class that can be used to create editor
12
+ ' instances in ASP pages on server side.
13
+ ' @see http://ckeditor.com
14
+ '
15
+ ' Sample usage:
16
+ ' @code
17
+ ' editor = new CKEditor
18
+ ' editor.editor "editor1", "<p>Initial value.</p>", empty, empty
19
+ ' @endcode
20
+
21
+ Class CKEditor
22
+
23
+ ''
24
+ ' The version of %CKEditor.
25
+ private version
26
+
27
+ ''
28
+ ' A constant string unique for each release of %CKEditor.
29
+ private mTimeStamp
30
+
31
+ ''
32
+ ' URL to the %CKEditor installation directory (absolute or relative to document root).
33
+ ' If not set, CKEditor will try to guess it's path.
34
+ '
35
+ ' Example usage:
36
+ ' @code
37
+ ' editor.basePath = "/ckeditor/"
38
+ ' @endcode
39
+ Public basePath
40
+
41
+ ''
42
+ ' A boolean variable indicating whether CKEditor has been initialized.
43
+ ' Set it to true only if you have already included
44
+ ' &lt;script&gt; tag loading ckeditor.js in your website.
45
+ Public initialized
46
+
47
+ ''
48
+ ' Boolean variable indicating whether created code should be printed out or returned by a function.
49
+ '
50
+ ' Example 1: get the code creating %CKEditor instance and print it on a page with the "echo" function.
51
+ ' @code
52
+ ' editor = new CKEditor
53
+ ' editor.returnOutput = true
54
+ ' code = editor.editor("editor1", "<p>Initial value.</p>", empty, empty)
55
+ ' response.write "<p>Editor 1:</p>"
56
+ ' response.write code
57
+ ' @endcode
58
+ Public returnOutput
59
+
60
+ ''
61
+ ' A Dictionary with textarea attributes.
62
+ '
63
+ ' When %CKEditor is created with the editor() method, a HTML &lt;textarea&gt; element is created,
64
+ ' it will be displayed to anyone with JavaScript disabled or with incompatible browser.
65
+ public textareaAttributes
66
+
67
+ ''
68
+ ' A string indicating the creation date of %CKEditor.
69
+ ' Do not change it unless you want to force browsers to not use previously cached version of %CKEditor.
70
+ public timestamp
71
+
72
+ ''
73
+ ' A dictionary that holds the instance configuration.
74
+ private oInstanceConfig
75
+
76
+ ''
77
+ ' A dictionary that holds the configuration for all the instances.
78
+ private oAllInstancesConfig
79
+
80
+ ''
81
+ ' A dictionary that holds event listeners for the instance.
82
+ private oInstanceEvents
83
+
84
+ ''
85
+ ' A dictionary that holds event listeners for all the instances.
86
+ private oAllInstancesEvents
87
+
88
+ ''
89
+ ' A Dictionary that holds global event listeners (CKEDITOR object)
90
+ private oGlobalEvents
91
+
92
+
93
+ Private Sub Class_Initialize()
94
+ version = "3.6.3"
95
+ timeStamp = "C3HA5RM"
96
+ mTimeStamp = "C3HA5RM"
97
+
98
+ Set oInstanceConfig = CreateObject("Scripting.Dictionary")
99
+ Set oAllInstancesConfig = CreateObject("Scripting.Dictionary")
100
+
101
+ Set oInstanceEvents = CreateObject("Scripting.Dictionary")
102
+ Set oAllInstancesEvents = CreateObject("Scripting.Dictionary")
103
+ Set oGlobalEvents = CreateObject("Scripting.Dictionary")
104
+
105
+ Set textareaAttributes = CreateObject("Scripting.Dictionary")
106
+ textareaAttributes.Add "rows", 8
107
+ textareaAttributes.Add "cols", 60
108
+ End Sub
109
+
110
+ ''
111
+ ' Creates a %CKEditor instance.
112
+ ' In incompatible browsers %CKEditor will downgrade to plain HTML &lt;textarea&gt; element.
113
+ '
114
+ ' @param name (string) Name of the %CKEditor instance (this will be also the "name" attribute of textarea element).
115
+ ' @param value (string) Initial value.
116
+ '
117
+ ' Example usage:
118
+ ' @code
119
+ ' set editor = New CKEditor
120
+ ' editor.editor "field1", "<p>Initial value.</p>"
121
+ ' @endcode
122
+ '
123
+ ' Advanced example:
124
+ ' @code
125
+ ' set editor = new CKEditor
126
+ ' set config = CreateObject("Scripting.Dictionary")
127
+ ' config.Add "toolbar", Array( _
128
+ ' Array( "Source", "-", "Bold", "Italic", "Underline", "Strike" ), _
129
+ ' Array( "Image", "Link", "Unlink", "Anchor" ) _
130
+ ' )
131
+ ' set events = CreateObject("Scripting.Dictionary")
132
+ ' events.Add "instanceReady", "function (evt) { alert('Loaded second editor: ' + evt.editor.name );}"
133
+
134
+ ' editor.editor "field1", "<p>Initial value.</p>", config, events
135
+ ' @endcode
136
+ '
137
+ public function editor(name, value)
138
+ dim attr, out, js, customConfig, extraConfig
139
+ dim attribute
140
+
141
+ attr = ""
142
+
143
+ for each attribute in textareaAttributes
144
+ attr = attr & " " & attribute & "=""" & replace( textareaAttributes( attribute ), """", "&quot" ) & """"
145
+ next
146
+
147
+ out = "<textarea name=""" & name & """" & attr & ">" & Server.HtmlEncode(value) & "</textarea>" & vbcrlf
148
+
149
+ if not(initialized) then
150
+ out = out & init()
151
+ end if
152
+
153
+ set customConfig = configSettings()
154
+ js = returnGlobalEvents()
155
+
156
+ extraConfig = (new JSON)( empty, customConfig, false )
157
+ if extraConfig<>"" then extraConfig = ", " & extraConfig
158
+ js = js & "CKEDITOR.replace('" & name & "'" & extraConfig & ");"
159
+
160
+ out = out & script(js)
161
+
162
+ if not(returnOutput) then
163
+ response.write out
164
+ out = ""
165
+ end if
166
+
167
+ editor = out
168
+
169
+ oInstanceConfig.RemoveAll
170
+ oInstanceEvents.RemoveAll
171
+ end function
172
+
173
+ ''
174
+ ' Replaces a &lt;textarea&gt; with a %CKEditor instance.
175
+ '
176
+ ' @param id (string) The id or name of textarea element.
177
+ '
178
+ ' Example 1: adding %CKEditor to &lt;textarea name="article"&gt;&lt;/textarea&gt; element:
179
+ ' @code
180
+ ' set editor = New CKEditor
181
+ ' editor.replace "article"
182
+ ' @endcode
183
+ '
184
+ public function replaceInstance(id)
185
+ dim out, js, customConfig, extraConfig
186
+
187
+ out = ""
188
+ if not(initialized) then
189
+ out = out & init()
190
+ end if
191
+
192
+ set customConfig = configSettings()
193
+ js = returnGlobalEvents()
194
+
195
+ extraConfig = (new JSON)( empty, customConfig, false )
196
+ if extraConfig<>"" then extraConfig = ", " & extraConfig
197
+ js = js & "CKEDITOR.replace('" & id & "'" & extraConfig & ");"
198
+
199
+ out = out & script(js)
200
+
201
+ if not(returnOutput) then
202
+ response.write out
203
+ out = ""
204
+ end if
205
+
206
+ replaceInstance = out
207
+
208
+ oInstanceConfig.RemoveAll
209
+ oInstanceEvents.RemoveAll
210
+ end function
211
+
212
+ ''
213
+ ' Replace all &lt;textarea&gt; elements available in the document with editor instances.
214
+ '
215
+ ' @param className (string) If set, replace all textareas with class className in the page.
216
+ '
217
+ ' Example 1: replace all &lt;textarea&gt; elements in the page.
218
+ ' @code
219
+ ' editor = new CKEditor
220
+ ' editor.replaceAll empty
221
+ ' @endcode
222
+ '
223
+ ' Example 2: replace all &lt;textarea class="myClassName"&gt; elements in the page.
224
+ ' @code
225
+ ' editor = new CKEditor
226
+ ' editor.replaceAll 'myClassName'
227
+ ' @endcode
228
+ '
229
+ function replaceAll(className)
230
+ dim out, js, customConfig
231
+
232
+ out = ""
233
+ if not(initialized) then
234
+ out = out & init()
235
+ end if
236
+
237
+ set customConfig = configSettings()
238
+ js = returnGlobalEvents()
239
+
240
+ if (customConfig.Count=0) then
241
+ if (isEmpty(className)) then
242
+ js = js & "CKEDITOR.replaceAll();"
243
+ else
244
+ js = js & "CKEDITOR.replaceAll('" & className & "');"
245
+ end if
246
+ else
247
+ js = js & "CKEDITOR.replaceAll( function(textarea, config) {\n"
248
+ if not(isEmpty(className)) then
249
+ js = js & " var classRegex = new RegExp('(?:^| )' + '" & className & "' + '(?:$| )');\n"
250
+ js = js & " if (!classRegex.test(textarea.className))\n"
251
+ js = js & " return false;\n"
252
+ end if
253
+ js = js & " CKEDITOR.tools.extend(config, " & (new JSON)( empty, customConfig, false ) & ", true);"
254
+ js = js & "} );"
255
+ end if
256
+
257
+ out = out & script(js)
258
+
259
+ if not(returnOutput) then
260
+ response.write out
261
+ out = ""
262
+ end if
263
+
264
+ replaceAll = out
265
+
266
+ oInstanceConfig.RemoveAll
267
+ oInstanceEvents.RemoveAll
268
+ end function
269
+
270
+
271
+ ''
272
+ ' A Dictionary that holds the %CKEditor configuration for all instances
273
+ ' For the list of available options, see http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html
274
+ '
275
+ ' Example usage:
276
+ ' @code
277
+ ' editor.config("height") = 400
278
+ ' // Use @@ at the beggining of a string to ouput it without surrounding quotes.
279
+ ' editor.config("width") = "@@screen.width * 0.8"
280
+ ' @endcode
281
+ Public Property Let Config( configKey, configValue )
282
+ oAllInstancesConfig.Add configKey, configValue
283
+ End Property
284
+
285
+ ''
286
+ ' Configuration options for the next instance
287
+ '
288
+ Public Property Let instanceConfig( configKey, configValue )
289
+ oInstanceConfig.Add configKey, configValue
290
+ End Property
291
+
292
+ ''
293
+ ' Adds event listener.
294
+ ' Events are fired by %CKEditor in various situations.
295
+ '
296
+ ' @param eventName (string) Event name.
297
+ ' @param javascriptCode (string) Javascript anonymous function or function name.
298
+ '
299
+ ' Example usage:
300
+ ' @code
301
+ ' editor.addEventHandler "instanceReady", "function (ev) { " & _
302
+ ' " alert('Loaded: ' + ev.editor.name); " & _
303
+ ' "}"
304
+ ' @endcode
305
+ '
306
+ public sub addEventHandler(eventName, javascriptCode)
307
+ if not(oAllInstancesEvents.Exists( eventName ) ) then
308
+ oAllInstancesEvents.Add eventName, Array()
309
+ end if
310
+
311
+ dim listeners, size
312
+ listeners = oAllInstancesEvents( eventName )
313
+ size = ubound(listeners) + 1
314
+ redim preserve listeners(size)
315
+ listeners(size) = javascriptCode
316
+
317
+ oAllInstancesEvents( eventName ) = listeners
318
+ ' '' Avoid duplicates. fixme...
319
+ ' if (!in_array($javascriptCode, $this->_events[$event])) {
320
+ ' $this->_events[$event][] = $javascriptCode;
321
+ ' }
322
+ end sub
323
+
324
+ ''
325
+ ' Clear registered event handlers.
326
+ ' Note: this function will have no effect on already created editor instances.
327
+ '
328
+ ' @param eventName (string) Event name, if set to 'empty' all event handlers will be removed.
329
+ '
330
+ public sub clearEventHandlers( eventName )
331
+ if not(isEmpty( eventName )) then
332
+ oAllInstancesEvents.Remove eventName
333
+ else
334
+ oAllInstancesEvents.RemoveAll
335
+ end if
336
+ end sub
337
+
338
+
339
+ ''
340
+ ' Adds event listener only for the next instance.
341
+ ' Events are fired by %CKEditor in various situations.
342
+ '
343
+ ' @param eventName (string) Event name.
344
+ ' @param javascriptCode (string) Javascript anonymous function or function name.
345
+ '
346
+ ' Example usage:
347
+ ' @code
348
+ ' editor.addInstanceEventHandler "instanceReady", "function (ev) { " & _
349
+ ' " alert('Loaded: ' + ev.editor.name); " & _
350
+ ' "}"
351
+ ' @endcode
352
+ '
353
+ public sub addInstanceEventHandler(eventName, javascriptCode)
354
+ if not(oInstanceEvents.Exists( eventName ) ) then
355
+ oInstanceEvents.Add eventName, Array()
356
+ end if
357
+
358
+ dim listeners, size
359
+ listeners = oInstanceEvents( eventName )
360
+ size = ubound(listeners) + 1
361
+ redim preserve listeners(size)
362
+ listeners(size) = javascriptCode
363
+
364
+ oInstanceEvents( eventName ) = listeners
365
+ ' '' Avoid duplicates. fixme...
366
+ ' if (!in_array($javascriptCode, $this->_events[$event])) {
367
+ ' $this->_events[$event][] = $javascriptCode;
368
+ ' }
369
+ end sub
370
+
371
+ ''
372
+ ' Clear registered event handlers.
373
+ ' Note: this function will have no effect on already created editor instances.
374
+ '
375
+ ' @param eventName (string) Event name, if set to 'empty' all event handlers will be removed.
376
+ '
377
+ public sub clearInstanceEventHandlers( eventName )
378
+ if not(isEmpty( eventName )) then
379
+ oInstanceEvents.Remove eventName
380
+ else
381
+ oInstanceEvents.RemoveAll
382
+ end if
383
+ end sub
384
+
385
+ ''
386
+ ' Adds global event listener.
387
+ '
388
+ ' @param event (string) Event name.
389
+ ' @param javascriptCode (string) Javascript anonymous function or function name.
390
+ '
391
+ ' Example usage:
392
+ ' @code
393
+ ' editor.addGlobalEventHandler "dialogDefinition", "function (ev) { " & _
394
+ ' " alert('Loading dialog: ' + ev.data.name); " & _
395
+ ' "}"
396
+ ' @endcode
397
+ '
398
+ public sub addGlobalEventHandler( eventName, javascriptCode)
399
+ if not(oGlobalEvents.Exists( eventName ) ) then
400
+ oGlobalEvents.Add eventName, Array()
401
+ end if
402
+
403
+ dim listeners, size
404
+ listeners = oGlobalEvents( eventName )
405
+ size = ubound(listeners) + 1
406
+ redim preserve listeners(size)
407
+ listeners(size) = javascriptCode
408
+
409
+ oGlobalEvents( eventName ) = listeners
410
+
411
+ ' // Avoid duplicates.
412
+ ' if (!in_array($javascriptCode, $this->_globalEvents[$event])) {
413
+ ' $this->_globalEvents[$event][] = $javascriptCode;
414
+ ' }
415
+ end sub
416
+
417
+ ''
418
+ ' Clear registered global event handlers.
419
+ ' Note: this function will have no effect if the event handler has been already printed/returned.
420
+ '
421
+ ' @param eventName (string) Event name, if set to 'empty' all event handlers will be removed .
422
+ '
423
+ public sub clearGlobalEventHandlers( eventName )
424
+ if not(isEmpty( eventName )) then
425
+ oGlobalEvents.Remove eventName
426
+ else
427
+ oGlobalEvents.RemoveAll
428
+ end if
429
+ end sub
430
+
431
+ ''
432
+ ' Prints javascript code.
433
+ '
434
+ ' @param string js
435
+ '
436
+ private function script(js)
437
+ script = "<script type=""text/javascript"">" & _
438
+ "//<![CDATA[" & vbcrlf & _
439
+ js & vbcrlf & _
440
+ "//]]>" & _
441
+ "</script>" & vbcrlf
442
+ end function
443
+
444
+ ''
445
+ ' Returns the configuration array (global and instance specific settings are merged into one array).
446
+ '
447
+ ' @param instanceConfig (Dictionary) The specific configurations to apply to editor instance.
448
+ ' @param instanceEvents (Dictionary) Event listeners for editor instance.
449
+ '
450
+ private function configSettings()
451
+ dim mergedConfig, mergedEvents
452
+ set mergedConfig = cloneDictionary(oAllInstancesConfig)
453
+ set mergedEvents = cloneDictionary(oAllInstancesEvents)
454
+
455
+ if not(isEmpty(oInstanceConfig)) then
456
+ set mergedConfig = mergeDictionary(mergedConfig, oInstanceConfig)
457
+ end if
458
+
459
+ if not(isEmpty(oInstanceEvents)) then
460
+ for each eventName in oInstanceEvents
461
+ code = oInstanceEvents( eventName )
462
+
463
+ if not(mergedEvents.Exists( eventName)) then
464
+ mergedEvents.Add eventName, code
465
+ else
466
+
467
+ dim listeners, size
468
+ listeners = mergedEvents( eventName )
469
+ size = ubound(listeners)
470
+ if isArray( code ) then
471
+ addedCount = ubound(code)
472
+ redim preserve listeners( size + addedCount + 1 )
473
+ for i = 0 to addedCount
474
+ listeners(size + i + 1) = code (i)
475
+ next
476
+ else
477
+ size = size + 1
478
+ redim preserve listeners(size)
479
+ listeners(size) = code
480
+ end if
481
+
482
+ mergedEvents( eventName ) = listeners
483
+ end if
484
+ next
485
+
486
+ end if
487
+
488
+ dim i, eventName, handlers, configON, ub, code
489
+
490
+ if mergedEvents.Count>0 then
491
+ if mergedConfig.Exists( "on" ) then
492
+ set configON = mergedConfig.items( "on" )
493
+ else
494
+ set configON = CreateObject("Scripting.Dictionary")
495
+ mergedConfig.Add "on", configOn
496
+ end if
497
+
498
+ for each eventName in mergedEvents
499
+ handlers = mergedEvents( eventName )
500
+ code = ""
501
+
502
+ if isArray(handlers) then
503
+ uB = ubound(handlers)
504
+ if (uB = 0) then
505
+ code = handlers(0)
506
+ else
507
+ code = "function (ev) {"
508
+ for i=0 to uB
509
+ code = code & "(" & handlers(i) & ")(ev);"
510
+ next
511
+ code = code & "}"
512
+ end if
513
+ else
514
+ code = handlers
515
+ end if
516
+ ' Using @@ at the beggining to signal JSON that we don't want this quoted.
517
+ configON.Add eventName, "@@" & code
518
+ next
519
+
520
+ ' set mergedConfig.Item("on") = configOn
521
+ end if
522
+
523
+ set configSettings = mergedConfig
524
+ end function
525
+
526
+ ''
527
+ ' Returns a copy of a scripting.dictionary object
528
+ '
529
+ private function cloneDictionary( base )
530
+ dim newOne, tmpKey
531
+
532
+ Set newOne = CreateObject("Scripting.Dictionary")
533
+ for each tmpKey in base
534
+ newOne.Add tmpKey , base( tmpKey )
535
+ next
536
+
537
+ set cloneDictionary = newOne
538
+ end function
539
+
540
+ ''
541
+ ' Combines two scripting.dictionary objects
542
+ ' The base object isn't modified, and extra gets all the properties in base
543
+ '
544
+ private function mergeDictionary(base, extra)
545
+ dim newOne, tmpKey
546
+
547
+ for each tmpKey in base
548
+ if not(extra.Exists( tmpKey )) then
549
+ extra.Add tmpKey, base( tmpKey )
550
+ end if
551
+ next
552
+
553
+ set mergeDictionary = extra
554
+ end function
555
+
556
+ ''
557
+ ' Return global event handlers.
558
+ '
559
+ private function returnGlobalEvents()
560
+ dim out, eventName, handlers
561
+ dim handlersForEvent, handler, code, i
562
+ out = ""
563
+
564
+ if (isempty(CKEDITOR_returnedEvents)) then
565
+ set CKEDITOR_returnedEvents = CreateObject("Scripting.Dictionary")
566
+ end if
567
+
568
+ for each eventName in oGlobalEvents
569
+ handlers = oGlobalEvents( eventName )
570
+
571
+ if not(CKEDITOR_returnedEvents.Exists(eventName)) then
572
+ CKEDITOR_returnedEvents.Add eventName, CreateObject("Scripting.Dictionary")
573
+ end if
574
+
575
+ set handlersForEvent = CKEDITOR_returnedEvents.Item( eventName )
576
+
577
+ ' handlersForEvent is another dictionary
578
+ ' and handlers is an array
579
+
580
+ for i = 0 to ubound(handlers)
581
+ code = handlers( i )
582
+
583
+ ' Return only new events
584
+ if not(handlersForEvent.Exists( code )) then
585
+ if (out <> "") then out = out & vbcrlf
586
+ out = out & "CKEDITOR.on('" & eventName & "', " & code & ");"
587
+ handlersForEvent.Add code, code
588
+ end if
589
+ next
590
+ next
591
+
592
+ returnGlobalEvents = out
593
+ end function
594
+
595
+ ''
596
+ ' Initializes CKEditor (executed only once).
597
+ '
598
+ private function init()
599
+ dim out, args, path, extraCode, file
600
+ out = ""
601
+
602
+ if (CKEDITOR_initComplete) then
603
+ init = ""
604
+ exit function
605
+ end if
606
+
607
+ if (initialized) then
608
+ CKEDITOR_initComplete = true
609
+ init = ""
610
+ exit function
611
+ end if
612
+
613
+ args = ""
614
+ path = ckeditorPath()
615
+
616
+ if (timestamp <> "") and (timestamp <> "%" & "TIMESTAMP%") then
617
+ args = "?t=" & timestamp
618
+ end if
619
+
620
+ ' Skip relative paths...
621
+ if (instr(path, "..") <> 0) then
622
+ out = out & script("window.CKEDITOR_BASEPATH='" & path & "';")
623
+ end if
624
+
625
+ out = out & "<scr" & "ipt type=""text/javascript"" src=""" & path & ckeditorFileName() & args & """></scr" & "ipt>" & vbcrlf
626
+
627
+ extraCode = ""
628
+ if (timestamp <> mTimeStamp) then
629
+ extraCode = extraCode & "CKEDITOR.timestamp = '" & timestamp & "';"
630
+ end if
631
+ if (extraCode <> "") then
632
+ out = out & script(extraCode)
633
+ end if
634
+
635
+ CKEDITOR_initComplete = true
636
+ initialized = true
637
+
638
+ init = out
639
+ end function
640
+
641
+ private function ckeditorFileName()
642
+ ckeditorFileName = "ckeditor.js"
643
+ end function
644
+
645
+ ''
646
+ ' Return path to ckeditor.js.
647
+ '
648
+ private function ckeditorPath()
649
+ if (basePath <> "") then
650
+ ckeditorPath = basePath
651
+ else
652
+ ' In classic ASP we can't get the location of this included script
653
+ ckeditorPath = "/ckeditor/"
654
+ end if
655
+
656
+ ' Try to check if that folder contains the CKEditor files:
657
+ ' If it's a full URL avoid checking it as it might point to an external server.
658
+ if (instr(ckeditorPath, "://") <> 0) then exit function
659
+
660
+ dim filename, oFSO, exists
661
+ filename = server.mapPath(basePath & ckeditorFileName())
662
+ set oFSO = Server.CreateObject("Scripting.FileSystemObject")
663
+ exists = oFSO.FileExists(filename)
664
+ set oFSO = nothing
665
+
666
+ if not(exists) then
667
+ response.clear
668
+ response.write "<h1>CKEditor path validation failed</h1>"
669
+ response.write "<p>The path &quot;" & ckeditorPath & "&quot; doesn't include the CKEditor main file (" & ckeditorFileName() & ")</p>"
670
+ response.write "<p>Please, verify that you have set it correctly and/or adjust the 'basePath' property</p>"
671
+ response.write "<p>Checked for physical file: &quot;" & filename & "&quot;</p>"
672
+ response.end
673
+ end if
674
+ end function
675
+
676
+ End Class
677
+
678
+
679
+
680
+ ' URL: http://www.webdevbros.net/2007/04/26/generate-json-from-asp-datatypes/
681
+ '**************************************************************************************************************
682
+ '' @CLASSTITLE: JSON
683
+ '' @CREATOR: Michal Gabrukiewicz (gabru at grafix.at), Michael Rebec
684
+ '' @CONTRIBUTORS: - Cliff Pruitt (opensource at crayoncowboy.com)
685
+ '' - Sylvain Lafontaine
686
+ '' - Jef Housein
687
+ '' - Jeremy Brown
688
+ '' @CREATEDON: 2007-04-26 12:46
689
+ '' @CDESCRIPTION: Comes up with functionality for JSON (http://json.org) to use within ASP.
690
+ '' Correct escaping of characters, generating JSON Grammer out of ASP datatypes and structures
691
+ '' Some examples (all use the <em>toJSON()</em> method but as it is the class' default method it can be left out):
692
+ '' <code>
693
+ '' <%
694
+ '' 'simple number
695
+ '' output = (new JSON)("myNum", 2, false)
696
+ '' 'generates {"myNum": 2}
697
+ ''
698
+ '' 'array with different datatypes
699
+ '' output = (new JSON)("anArray", array(2, "x", null), true)
700
+ '' 'generates "anArray": [2, "x", null]
701
+ '' '(note: the last parameter was true, thus no surrounding brackets in the result)
702
+ '' % >
703
+ '' </code>
704
+ '' @REQUIRES: -
705
+ '' @OPTIONEXPLICIT: yes
706
+ '' @VERSION: 1.5.1
707
+
708
+ '**************************************************************************************************************
709
+ class JSON
710
+
711
+ 'private members
712
+ private output, innerCall
713
+
714
+ '**********************************************************************************************************
715
+ '* constructor
716
+ '**********************************************************************************************************
717
+ public sub class_initialize()
718
+ newGeneration()
719
+ end sub
720
+
721
+ '******************************************************************************************
722
+ '' @SDESCRIPTION: STATIC! takes a given string and makes it JSON valid
723
+ '' @DESCRIPTION: all characters which needs to be escaped are beeing replaced by their
724
+ '' unicode representation according to the
725
+ '' RFC4627#2.5 - http://www.ietf.org/rfc/rfc4627.txt?number=4627
726
+ '' @PARAM: val [string]: value which should be escaped
727
+ '' @RETURN: [string] JSON valid string
728
+ '******************************************************************************************
729
+ public function escape(val)
730
+ dim cDoubleQuote, cRevSolidus, cSolidus
731
+ cDoubleQuote = &h22
732
+ cRevSolidus = &h5C
733
+ cSolidus = &h2F
734
+ dim i, currentDigit
735
+ for i = 1 to (len(val))
736
+ currentDigit = mid(val, i, 1)
737
+ if ascw(currentDigit) > &h00 and ascw(currentDigit) < &h1F then
738
+ currentDigit = escapequence(currentDigit)
739
+ elseif ascw(currentDigit) >= &hC280 and ascw(currentDigit) <= &hC2BF then
740
+ currentDigit = "\u00" + right(padLeft(hex(ascw(currentDigit) - &hC200), 2, 0), 2)
741
+ elseif ascw(currentDigit) >= &hC380 and ascw(currentDigit) <= &hC3BF then
742
+ currentDigit = "\u00" + right(padLeft(hex(ascw(currentDigit) - &hC2C0), 2, 0), 2)
743
+ else
744
+ select case ascw(currentDigit)
745
+ case cDoubleQuote: currentDigit = escapequence(currentDigit)
746
+ case cRevSolidus: currentDigit = escapequence(currentDigit)
747
+ case cSolidus: currentDigit = escapequence(currentDigit)
748
+ end select
749
+ end if
750
+ escape = escape & currentDigit
751
+ next
752
+ end function
753
+
754
+ '******************************************************************************************************************
755
+ '' @SDESCRIPTION: generates a representation of a name value pair in JSON grammer
756
+ '' @DESCRIPTION: It generates a name value pair which is represented as <em>{"name": value}</em> in JSON.
757
+ '' the generation is fully recursive. Thus the value can also be a complex datatype (array in dictionary, etc.) e.g.
758
+ '' <code>
759
+ '' <%
760
+ '' set j = new JSON
761
+ '' j.toJSON "n", array(RS, dict, false), false
762
+ '' j.toJSON "n", array(array(), 2, true), false
763
+ '' % >
764
+ '' </code>
765
+ '' @PARAM: name [string]: name of the value (accessible with javascript afterwards). leave empty to get just the value
766
+ '' @PARAM: val [variant], [int], [float], [array], [object], [dictionary]: value which needs
767
+ '' to be generated. Conversation of the data types is as follows:<br>
768
+ '' - <strong>ASP datatype -> JavaScript datatype</strong>
769
+ '' - NOTHING, NULL -> null
770
+ '' - INT, DOUBLE -> number
771
+ '' - STRING -> string
772
+ '' - BOOLEAN -> bool
773
+ '' - ARRAY -> array
774
+ '' - DICTIONARY -> Represents it as name value pairs. Each key is accessible as property afterwards. json will look like <code>"name": {"key1": "some value", "key2": "other value"}</code>
775
+ '' - <em>multidimensional array</em> -> Generates a 1-dimensional array (flat) with all values of the multidimensional array
776
+ '' - <em>request</em> object -> every property and collection (cookies, form, querystring, etc) of the asp request object is exposed as an item of a dictionary. Property names are <strong>lowercase</strong>. e.g. <em>servervariables</em>.
777
+ '' - OBJECT -> name of the type (if unknown type) or all its properties (if class implements <em>reflect()</em> method)
778
+ '' Implement a <strong>reflect()</strong> function if you want your custom classes to be recognized. The function must return
779
+ '' a dictionary where the key holds the property name and the value its value. Example of a reflect function within a User class which has firstname and lastname properties
780
+ '' <code>
781
+ '' <%
782
+ '' function reflect()
783
+ '' . set reflect = server.createObject("scripting.dictionary")
784
+ '' . reflect.add "firstname", firstname
785
+ '' . reflect.add "lastname", lastname
786
+ '' end function
787
+ '' % >
788
+ '' </code>
789
+ '' Example of how to generate a JSON representation of the asp request object and access the <em>HTTP_HOST</em> server variable in JavaScript:
790
+ '' <code>
791
+ '' <script>alert(<%= (new JSON)(empty, request, false) % >.servervariables.HTTP_HOST);</script>
792
+ '' </code>
793
+ '' @PARAM: nested [bool]: indicates if the name value pair is already nested within another? if yes then the <em>{}</em> are left out.
794
+ '' @RETURN: [string] returns a JSON representation of the given name value pair
795
+ '******************************************************************************************************************
796
+ public default function toJSON(name, val, nested)
797
+ if not nested and not isEmpty(name) then write("{")
798
+ if not isEmpty(name) then write("""" & escape(name) & """: ")
799
+ generateValue(val)
800
+ if not nested and not isEmpty(name) then write("}")
801
+ toJSON = output
802
+
803
+ if innerCall = 0 then newGeneration()
804
+ end function
805
+
806
+ '******************************************************************************************************************
807
+ '* generate
808
+ '******************************************************************************************************************
809
+ private function generateValue(val)
810
+ if isNull(val) then
811
+ write("null")
812
+ elseif isArray(val) then
813
+ generateArray(val)
814
+ elseif isObject(val) then
815
+ dim tName : tName = typename(val)
816
+ if val is nothing then
817
+ write("null")
818
+ elseif tName = "Dictionary" or tName = "IRequestDictionary" then
819
+ generateDictionary(val)
820
+ elseif tName = "IRequest" then
821
+ set req = server.createObject("scripting.dictionary")
822
+ req.add "clientcertificate", val.ClientCertificate
823
+ req.add "cookies", val.cookies
824
+ req.add "form", val.form
825
+ req.add "querystring", val.queryString
826
+ req.add "servervariables", val.serverVariables
827
+ req.add "totalbytes", val.totalBytes
828
+ generateDictionary(req)
829
+ elseif tName = "IStringList" then
830
+ if val.count = 1 then
831
+ toJSON empty, val(1), true
832
+ else
833
+ generateArray(val)
834
+ end if
835
+ else
836
+ generateObject(val)
837
+ end if
838
+ else
839
+ 'bool
840
+ dim varTyp
841
+ varTyp = varType(val)
842
+ if varTyp = 11 then
843
+ if val then write("true") else write("false")
844
+ 'int, long, byte
845
+ elseif varTyp = 2 or varTyp = 3 or varTyp = 17 or varTyp = 19 then
846
+ write(cLng(val))
847
+ 'single, double, currency
848
+ elseif varTyp = 4 or varTyp = 5 or varTyp = 6 or varTyp = 14 then
849
+ write(replace(cDbl(val), ",", "."))
850
+ else
851
+ ' Using @@ at the beggining to signal JSON that we don't want this quoted.
852
+ if left(val, 2) = "@@" then
853
+ write( mid( val, 3 ) )
854
+ else
855
+ write("""" & escape(val & "") & """")
856
+ end if
857
+ end if
858
+ end if
859
+ generateValue = output
860
+ end function
861
+
862
+ '******************************************************************************************************************
863
+ '* generateArray
864
+ '******************************************************************************************************************
865
+ private sub generateArray(val)
866
+ dim item, i
867
+ write("[")
868
+ i = 0
869
+ 'the for each allows us to support also multi dimensional arrays
870
+ for each item in val
871
+ if i > 0 then write(",")
872
+ generateValue(item)
873
+ i = i + 1
874
+ next
875
+ write("]")
876
+ end sub
877
+
878
+ '******************************************************************************************************************
879
+ '* generateDictionary
880
+ '******************************************************************************************************************
881
+ private sub generateDictionary(val)
882
+ innerCall = innerCall + 1
883
+ if val.count = 0 then
884
+ toJSON empty, null, true
885
+ exit sub
886
+ end if
887
+ dim key, i
888
+ write("{")
889
+ i = 0
890
+ for each key in val
891
+ if i > 0 then write(",")
892
+ toJSON key, val(key), true
893
+ i = i + 1
894
+ next
895
+ write("}")
896
+ innerCall = innerCall - 1
897
+ end sub
898
+
899
+ '******************************************************************************************************************
900
+ '* generateObject
901
+ '******************************************************************************************************************
902
+ private sub generateObject(val)
903
+ dim props
904
+ on error resume next
905
+ set props = val.reflect()
906
+ if err = 0 then
907
+ on error goto 0
908
+ innerCall = innerCall + 1
909
+ toJSON empty, props, true
910
+ innerCall = innerCall - 1
911
+ else
912
+ on error goto 0
913
+ write("""" & escape(typename(val)) & """")
914
+ end if
915
+ end sub
916
+
917
+ '******************************************************************************************************************
918
+ '* newGeneration
919
+ '******************************************************************************************************************
920
+ private sub newGeneration()
921
+ output = empty
922
+ innerCall = 0
923
+ end sub
924
+
925
+ '******************************************************************************************
926
+ '* JsonEscapeSquence
927
+ '******************************************************************************************
928
+ private function escapequence(digit)
929
+ escapequence = "\u00" + right(padLeft(hex(ascw(digit)), 2, 0), 2)
930
+ end function
931
+
932
+ '******************************************************************************************
933
+ '* padLeft
934
+ '******************************************************************************************
935
+ private function padLeft(value, totalLength, paddingChar)
936
+ padLeft = right(clone(paddingChar, totalLength) & value, totalLength)
937
+ end function
938
+
939
+ '******************************************************************************************
940
+ '* clone
941
+ '******************************************************************************************
942
+ private function clone(byVal str, n)
943
+ dim i
944
+ for i = 1 to n : clone = clone & str : next
945
+ end function
946
+
947
+ '******************************************************************************************
948
+ '* write
949
+ '******************************************************************************************
950
+ private sub write(val)
951
+ output = output & val
952
+ end sub
953
+
954
+ end class
955
+ %>