tiny_mce 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (393) hide show
  1. data/CHANGELOG_PLUGIN.rdoc +4 -0
  2. data/CHANGELOG_TINYMCE +78 -7
  3. data/LICENSE +2 -2
  4. data/README.rdoc +36 -14
  5. data/Rakefile +1 -3
  6. data/SPELLCHECKING_PLUGIN.rdoc +3 -1
  7. data/VERSION +1 -1
  8. data/lib/tiny_mce.rb +2 -7
  9. data/lib/tiny_mce/assets/tiny_mce/langs/ar.js +95 -95
  10. data/lib/tiny_mce/assets/tiny_mce/langs/cs.js +13 -13
  11. data/lib/tiny_mce/assets/tiny_mce/langs/es.js +1 -1
  12. data/lib/tiny_mce/assets/tiny_mce/langs/fa.js +1 -1
  13. data/lib/tiny_mce/assets/tiny_mce/langs/fr.js +41 -41
  14. data/lib/tiny_mce/assets/tiny_mce/langs/he.js +93 -93
  15. data/lib/tiny_mce/assets/tiny_mce/langs/hu.js +10 -10
  16. data/lib/tiny_mce/assets/tiny_mce/langs/hy.js +157 -0
  17. data/lib/tiny_mce/assets/tiny_mce/langs/id.js +71 -71
  18. data/lib/tiny_mce/assets/tiny_mce/langs/ii.js +78 -70
  19. data/lib/tiny_mce/assets/tiny_mce/langs/ja.js +91 -99
  20. data/lib/tiny_mce/assets/tiny_mce/langs/lb.js +155 -0
  21. data/lib/tiny_mce/assets/tiny_mce/langs/pl.js +3 -3
  22. data/lib/tiny_mce/assets/tiny_mce/langs/ps.js +154 -0
  23. data/lib/tiny_mce/assets/tiny_mce/langs/pt.js +2 -2
  24. data/lib/tiny_mce/assets/tiny_mce/langs/ru.js +61 -59
  25. data/lib/tiny_mce/assets/tiny_mce/langs/sk.js +25 -25
  26. data/lib/tiny_mce/assets/tiny_mce/langs/th.js +1 -1
  27. data/lib/tiny_mce/assets/tiny_mce/langs/tr.js +51 -51
  28. data/lib/tiny_mce/assets/tiny_mce/langs/tw.js +2 -0
  29. data/lib/tiny_mce/assets/tiny_mce/langs/uk.js +7 -7
  30. data/lib/tiny_mce/assets/tiny_mce/langs/vi.js +17 -17
  31. data/lib/tiny_mce/assets/tiny_mce/langs/zu.js +162 -0
  32. data/lib/tiny_mce/assets/tiny_mce/plugins/advhr/editor_plugin_src.js +6 -3
  33. data/lib/tiny_mce/assets/tiny_mce/plugins/advhr/langs/ar_dlg.js +3 -3
  34. data/lib/tiny_mce/assets/tiny_mce/plugins/advhr/langs/he_dlg.js +3 -3
  35. data/lib/tiny_mce/assets/tiny_mce/plugins/advhr/langs/hy_dlg.js +5 -0
  36. data/lib/tiny_mce/assets/tiny_mce/plugins/advhr/langs/id_dlg.js +3 -3
  37. data/lib/tiny_mce/assets/tiny_mce/plugins/advhr/langs/ii_dlg.js +1 -1
  38. data/lib/tiny_mce/assets/tiny_mce/plugins/advhr/langs/ja_dlg.js +3 -3
  39. data/lib/tiny_mce/assets/tiny_mce/plugins/advhr/langs/lb_dlg.js +5 -0
  40. data/lib/tiny_mce/assets/tiny_mce/plugins/advhr/langs/ps_dlg.js +5 -0
  41. data/lib/tiny_mce/assets/tiny_mce/plugins/advhr/langs/zu_dlg.js +5 -0
  42. data/lib/tiny_mce/assets/tiny_mce/plugins/advhr/rule.htm +2 -7
  43. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/editor_plugin_src.js +6 -3
  44. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/image.htm +2 -7
  45. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/js/image.js +1 -1
  46. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/ar_dlg.js +41 -41
  47. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/de_dlg.js +1 -1
  48. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/fa_dlg.js +2 -2
  49. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/fr_dlg.js +14 -14
  50. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/he_dlg.js +37 -37
  51. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/hy_dlg.js +43 -0
  52. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/id_dlg.js +22 -22
  53. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/ii_dlg.js +24 -24
  54. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/ja_dlg.js +38 -38
  55. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/lb_dlg.js +43 -0
  56. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/ps_dlg.js +43 -0
  57. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/pt_dlg.js +1 -1
  58. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/ru_dlg.js +31 -31
  59. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/sk_dlg.js +2 -2
  60. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/th_dlg.js +1 -1
  61. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/tr_dlg.js +13 -13
  62. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/uk_dlg.js +1 -1
  63. data/lib/tiny_mce/assets/tiny_mce/plugins/advimage/langs/zu_dlg.js +43 -0
  64. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/editor_plugin_src.js +6 -3
  65. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/js/advlink.js +1 -1
  66. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/ar_dlg.js +49 -49
  67. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/fr_dlg.js +12 -12
  68. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/he_dlg.js +40 -40
  69. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/hy_dlg.js +52 -0
  70. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/id_dlg.js +32 -32
  71. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/ii_dlg.js +31 -31
  72. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/ja_dlg.js +49 -49
  73. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/lb_dlg.js +52 -0
  74. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/ps_dlg.js +52 -0
  75. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/pt_dlg.js +1 -1
  76. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/ru_dlg.js +38 -38
  77. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/sk_dlg.js +5 -5
  78. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/th_dlg.js +5 -5
  79. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/tr_dlg.js +23 -23
  80. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/uk_dlg.js +11 -11
  81. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/vi_dlg.js +1 -1
  82. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/langs/zu_dlg.js +52 -0
  83. data/lib/tiny_mce/assets/tiny_mce/plugins/advlink/link.htm +2 -7
  84. data/lib/tiny_mce/assets/tiny_mce/plugins/advlist/editor_plugin.js +1 -0
  85. data/lib/tiny_mce/assets/tiny_mce/plugins/advlist/editor_plugin_src.js +154 -0
  86. data/lib/tiny_mce/assets/tiny_mce/plugins/autoresize/editor_plugin_src.js +6 -3
  87. data/lib/tiny_mce/assets/tiny_mce/plugins/autosave/editor_plugin.js +1 -1
  88. data/lib/tiny_mce/assets/tiny_mce/plugins/autosave/editor_plugin_src.js +388 -17
  89. data/lib/tiny_mce/assets/tiny_mce/plugins/autosave/langs/en.js +4 -0
  90. data/lib/tiny_mce/assets/tiny_mce/plugins/bbcode/editor_plugin_src.js +6 -3
  91. data/lib/tiny_mce/assets/tiny_mce/plugins/contextmenu/editor_plugin_src.js +35 -3
  92. data/lib/tiny_mce/assets/tiny_mce/plugins/directionality/editor_plugin_src.js +6 -3
  93. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/editor_plugin.js +1 -1
  94. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/editor_plugin_src.js +8 -5
  95. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/ar_dlg.js +18 -18
  96. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/fr_dlg.js +3 -3
  97. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/he_dlg.js +18 -18
  98. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/hy_dlg.js +20 -0
  99. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/id_dlg.js +1 -1
  100. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/ii_dlg.js +3 -3
  101. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/ja_dlg.js +18 -18
  102. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/lb_dlg.js +20 -0
  103. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/ps_dlg.js +20 -0
  104. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/ru_dlg.js +18 -18
  105. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/sk_dlg.js +18 -18
  106. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/th_dlg.js +1 -1
  107. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/tr_dlg.js +12 -12
  108. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/vi_dlg.js +18 -18
  109. data/lib/tiny_mce/assets/tiny_mce/plugins/emotions/langs/zu_dlg.js +20 -0
  110. data/lib/tiny_mce/assets/tiny_mce/plugins/example/dialog.htm +2 -7
  111. data/lib/tiny_mce/assets/tiny_mce/plugins/example/editor_plugin_src.js +6 -3
  112. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/editor_plugin_src.js +6 -3
  113. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/fullpage.htm +2 -7
  114. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/js/fullpage.js +17 -7
  115. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/ar_dlg.js +78 -78
  116. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/fr_dlg.js +4 -4
  117. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/he_dlg.js +40 -40
  118. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/hy_dlg.js +85 -0
  119. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/ii_dlg.js +51 -51
  120. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/ja_dlg.js +75 -75
  121. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/lb_dlg.js +85 -0
  122. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/ps_dlg.js +85 -0
  123. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/pt_dlg.js +1 -1
  124. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/ru_dlg.js +54 -54
  125. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/tr_dlg.js +42 -42
  126. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/tw_dlg.js +3 -3
  127. data/lib/tiny_mce/assets/tiny_mce/plugins/fullpage/langs/zu_dlg.js +85 -0
  128. data/lib/tiny_mce/assets/tiny_mce/plugins/fullscreen/editor_plugin_src.js +6 -3
  129. data/lib/tiny_mce/assets/tiny_mce/plugins/fullscreen/fullscreen.htm +0 -1
  130. data/lib/tiny_mce/assets/tiny_mce/plugins/iespell/editor_plugin_src.js +6 -3
  131. data/lib/tiny_mce/assets/tiny_mce/plugins/inlinepopups/editor_plugin_src.js +6 -3
  132. data/lib/tiny_mce/assets/tiny_mce/plugins/insertdatetime/editor_plugin_src.js +6 -3
  133. data/lib/tiny_mce/assets/tiny_mce/plugins/layer/editor_plugin_src.js +6 -3
  134. data/lib/tiny_mce/assets/tiny_mce/plugins/legacyoutput/editor_plugin.js +1 -0
  135. data/lib/tiny_mce/assets/tiny_mce/plugins/legacyoutput/editor_plugin_src.js +136 -0
  136. data/lib/tiny_mce/assets/tiny_mce/plugins/media/editor_plugin.js +1 -1
  137. data/lib/tiny_mce/assets/tiny_mce/plugins/media/editor_plugin_src.js +10 -7
  138. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/ar_dlg.js +86 -86
  139. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/cs_dlg.js +12 -12
  140. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/fr_dlg.js +15 -15
  141. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/he_dlg.js +24 -24
  142. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/hy_dlg.js +103 -0
  143. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/id_dlg.js +16 -16
  144. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/ii_dlg.js +70 -70
  145. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/ja_dlg.js +91 -91
  146. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/lb_dlg.js +103 -0
  147. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/ps_dlg.js +103 -0
  148. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/ru_dlg.js +88 -88
  149. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/sk_dlg.js +1 -1
  150. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/tr_dlg.js +44 -44
  151. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/uk_dlg.js +24 -24
  152. data/lib/tiny_mce/assets/tiny_mce/plugins/media/langs/zu_dlg.js +103 -0
  153. data/lib/tiny_mce/assets/tiny_mce/plugins/media/media.htm +2 -7
  154. data/lib/tiny_mce/assets/tiny_mce/plugins/nonbreaking/editor_plugin_src.js +6 -3
  155. data/lib/tiny_mce/assets/tiny_mce/plugins/noneditable/editor_plugin_src.js +6 -3
  156. data/lib/tiny_mce/assets/tiny_mce/plugins/pagebreak/editor_plugin_src.js +6 -3
  157. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/editor_plugin.js +1 -1
  158. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/editor_plugin_src.js +509 -111
  159. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/langs/ar_dlg.js +3 -3
  160. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/langs/fr_dlg.js +1 -1
  161. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/langs/he_dlg.js +3 -3
  162. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/langs/hy_dlg.js +5 -0
  163. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/langs/id_dlg.js +2 -2
  164. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/langs/ii_dlg.js +3 -3
  165. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/langs/ja_dlg.js +3 -3
  166. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/langs/lb_dlg.js +5 -0
  167. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/langs/ps_dlg.js +5 -0
  168. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/langs/ru_dlg.js +3 -3
  169. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/langs/tr_dlg.js +3 -3
  170. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/langs/zu_dlg.js +5 -0
  171. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/pastetext.htm +2 -8
  172. data/lib/tiny_mce/assets/tiny_mce/plugins/paste/pasteword.htm +2 -8
  173. data/lib/tiny_mce/assets/tiny_mce/plugins/preview/editor_plugin_src.js +6 -3
  174. data/lib/tiny_mce/assets/tiny_mce/plugins/print/editor_plugin_src.js +6 -3
  175. data/lib/tiny_mce/assets/tiny_mce/plugins/save/editor_plugin_src.js +6 -3
  176. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/editor_plugin.js +1 -1
  177. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/editor_plugin_src.js +7 -4
  178. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/js/searchreplace.js +4 -0
  179. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/ar_dlg.js +14 -14
  180. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/fa_dlg.js +2 -2
  181. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/fr_dlg.js +10 -10
  182. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/he_dlg.js +14 -14
  183. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/hy_dlg.js +16 -0
  184. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/id_dlg.js +13 -13
  185. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/ii_dlg.js +11 -11
  186. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/ja_dlg.js +13 -13
  187. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/lb_dlg.js +16 -0
  188. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/pl_dlg.js +2 -2
  189. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/ps_dlg.js +16 -0
  190. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/ru_dlg.js +8 -8
  191. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/sk_dlg.js +11 -11
  192. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/tr_dlg.js +5 -5
  193. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/langs/zu_dlg.js +16 -0
  194. data/lib/tiny_mce/assets/tiny_mce/plugins/searchreplace/searchreplace.htm +4 -9
  195. data/lib/tiny_mce/assets/tiny_mce/plugins/spellchecker/editor_plugin_src.js +6 -3
  196. data/lib/tiny_mce/assets/tiny_mce/plugins/style/editor_plugin_src.js +6 -3
  197. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/ar_dlg.js +61 -61
  198. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/cs_dlg.js +1 -1
  199. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/fr_dlg.js +4 -4
  200. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/he_dlg.js +56 -56
  201. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/hy_dlg.js +63 -0
  202. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/ii_dlg.js +33 -33
  203. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/ja_dlg.js +59 -59
  204. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/lb_dlg.js +63 -0
  205. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/pl_dlg.js +1 -1
  206. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/ps_dlg.js +63 -0
  207. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/ru_dlg.js +21 -21
  208. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/sk_dlg.js +7 -7
  209. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/th_dlg.js +3 -3
  210. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/tr_dlg.js +18 -18
  211. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/tw_dlg.js +2 -2
  212. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/uk_dlg.js +19 -19
  213. data/lib/tiny_mce/assets/tiny_mce/plugins/style/langs/zu_dlg.js +63 -0
  214. data/lib/tiny_mce/assets/tiny_mce/plugins/style/props.htm +4 -8
  215. data/lib/tiny_mce/assets/tiny_mce/plugins/tabfocus/editor_plugin.js +1 -1
  216. data/lib/tiny_mce/assets/tiny_mce/plugins/tabfocus/editor_plugin_src.js +7 -4
  217. data/lib/tiny_mce/assets/tiny_mce/plugins/table/cell.htm +2 -7
  218. data/lib/tiny_mce/assets/tiny_mce/plugins/table/editor_plugin.js +1 -1
  219. data/lib/tiny_mce/assets/tiny_mce/plugins/table/editor_plugin_src.js +889 -973
  220. data/lib/tiny_mce/assets/tiny_mce/plugins/table/js/cell.js +40 -23
  221. data/lib/tiny_mce/assets/tiny_mce/plugins/table/js/merge_cells.js +18 -20
  222. data/lib/tiny_mce/assets/tiny_mce/plugins/table/js/row.js +47 -22
  223. data/lib/tiny_mce/assets/tiny_mce/plugins/table/js/table.js +17 -8
  224. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/ar_dlg.js +70 -70
  225. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/fr_dlg.js +14 -14
  226. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/he_dlg.js +56 -56
  227. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/hy_dlg.js +74 -0
  228. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/id_dlg.js +25 -25
  229. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/ii_dlg.js +54 -54
  230. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/ja_dlg.js +67 -67
  231. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/lb_dlg.js +74 -0
  232. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/ps_dlg.js +74 -0
  233. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/pt_dlg.js +1 -1
  234. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/ru_dlg.js +47 -47
  235. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/sk_dlg.js +2 -2
  236. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/tr_dlg.js +25 -25
  237. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/uk_dlg.js +22 -22
  238. data/lib/tiny_mce/assets/tiny_mce/plugins/table/langs/zu_dlg.js +74 -0
  239. data/lib/tiny_mce/assets/tiny_mce/plugins/table/merge_cells.htm +3 -8
  240. data/lib/tiny_mce/assets/tiny_mce/plugins/table/row.htm +2 -7
  241. data/lib/tiny_mce/assets/tiny_mce/plugins/table/table.htm +2 -7
  242. data/lib/tiny_mce/assets/tiny_mce/plugins/template/editor_plugin_src.js +6 -3
  243. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/ar_dlg.js +11 -11
  244. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/cs_dlg.js +4 -4
  245. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/es_dlg.js +1 -1
  246. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/fr_dlg.js +2 -2
  247. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/he_dlg.js +7 -7
  248. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/hy_dlg.js +15 -0
  249. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/id_dlg.js +6 -6
  250. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/ii_dlg.js +10 -10
  251. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/ja_dlg.js +11 -11
  252. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/lb_dlg.js +15 -0
  253. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/ps_dlg.js +15 -0
  254. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/ru_dlg.js +9 -9
  255. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/tr_dlg.js +5 -5
  256. data/lib/tiny_mce/assets/tiny_mce/plugins/template/langs/zu_dlg.js +15 -0
  257. data/lib/tiny_mce/assets/tiny_mce/plugins/template/template.htm +2 -8
  258. data/lib/tiny_mce/assets/tiny_mce/plugins/visualchars/editor_plugin_src.js +6 -3
  259. data/lib/tiny_mce/assets/tiny_mce/plugins/wordcount/editor_plugin_src.js +6 -3
  260. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/abbr.htm +3 -10
  261. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/acronym.htm +3 -10
  262. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/attributes.htm +2 -7
  263. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/cite.htm +3 -10
  264. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/del.htm +3 -11
  265. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +1 -1
  266. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +11 -3
  267. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/ins.htm +3 -11
  268. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/js/abbr.js +8 -5
  269. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/js/acronym.js +7 -4
  270. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/js/attributes.js +7 -4
  271. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/js/cite.js +7 -4
  272. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/js/del.js +7 -4
  273. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/js/element_common.js +8 -8
  274. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/js/ins.js +7 -4
  275. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/ar_dlg.js +30 -30
  276. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/cs_dlg.js +2 -2
  277. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js +6 -6
  278. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/he_dlg.js +27 -27
  279. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/hy_dlg.js +32 -0
  280. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/id_dlg.js +22 -22
  281. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/ii_dlg.js +14 -14
  282. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js +25 -25
  283. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/lb_dlg.js +32 -0
  284. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/pl_dlg.js +3 -3
  285. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/ps_dlg.js +32 -0
  286. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js +15 -15
  287. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/sk_dlg.js +2 -2
  288. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/th_dlg.js +5 -5
  289. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/tr_dlg.js +18 -18
  290. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/uk_dlg.js +9 -9
  291. data/lib/tiny_mce/assets/tiny_mce/plugins/xhtmlxtras/langs/zu_dlg.js +32 -0
  292. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/about.htm +1 -3
  293. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/anchor.htm +2 -7
  294. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/color_picker.htm +1 -3
  295. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/editor_template.js +1 -1
  296. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/editor_template_src.js +166 -169
  297. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/image.htm +2 -7
  298. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/img/icons.gif +0 -0
  299. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/js/anchor.js +7 -7
  300. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/js/charmap.js +10 -0
  301. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/js/image.js +2 -2
  302. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/ar.js +59 -61
  303. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/ar_dlg.js +49 -49
  304. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/cs.js +1 -1
  305. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/el.js +3 -1
  306. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/es.js +4 -4
  307. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/es_dlg.js +2 -2
  308. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/fa_dlg.js +1 -1
  309. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/fr.js +14 -17
  310. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/fr_dlg.js +17 -17
  311. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/he.js +57 -57
  312. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/he_dlg.js +49 -49
  313. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/hu.js +2 -2
  314. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/hu_dlg.js +4 -4
  315. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/hy.js +62 -0
  316. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/hy_dlg.js +51 -0
  317. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/id.js +5 -5
  318. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/id_dlg.js +13 -13
  319. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/ii.js +42 -40
  320. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/ii_dlg.js +28 -28
  321. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/it_dlg.js +5 -5
  322. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/ja.js +57 -59
  323. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/ja_dlg.js +48 -48
  324. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/lb.js +63 -0
  325. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/lb_dlg.js +51 -0
  326. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/pl.js +2 -2
  327. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/ps.js +62 -0
  328. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/ps_dlg.js +51 -0
  329. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/pt.js +5 -5
  330. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/ru.js +28 -28
  331. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/ru_dlg.js +37 -37
  332. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/sk.js +15 -15
  333. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/sk_dlg.js +19 -19
  334. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/th.js +4 -4
  335. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/th_dlg.js +4 -4
  336. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/tr.js +27 -27
  337. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/tr_dlg.js +17 -17
  338. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/tw.js +3 -3
  339. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/uk_dlg.js +6 -6
  340. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/vi.js +17 -17
  341. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/vi_dlg.js +1 -1
  342. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/zu.js +64 -0
  343. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/langs/zu_dlg.js +51 -0
  344. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/link.htm +2 -7
  345. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/skins/default/content.css +6 -3
  346. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/skins/default/dialog.css +4 -3
  347. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/skins/default/ui.css +4 -5
  348. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/skins/o2k7/content.css +6 -3
  349. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/skins/o2k7/dialog.css +3 -2
  350. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/skins/o2k7/ui.css +3 -3
  351. data/lib/tiny_mce/assets/tiny_mce/themes/advanced/source_editor.htm +2 -7
  352. data/lib/tiny_mce/assets/tiny_mce/themes/simple/editor_template_src.js +5 -5
  353. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/ar.js +9 -9
  354. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/he.js +8 -8
  355. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/hu.js +1 -1
  356. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/hy.js +11 -0
  357. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/ii.js +8 -8
  358. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/ja.js +9 -9
  359. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/lb.js +11 -0
  360. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/ps.js +11 -0
  361. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/ru.js +4 -4
  362. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/sk.js +4 -4
  363. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/tr.js +4 -4
  364. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/tw.js +1 -1
  365. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/vi.js +9 -9
  366. data/lib/tiny_mce/assets/tiny_mce/themes/simple/langs/zu.js +11 -0
  367. data/lib/tiny_mce/assets/tiny_mce/tiny_mce.js +1 -1
  368. data/lib/tiny_mce/assets/tiny_mce/tiny_mce_popup.js +1 -1
  369. data/lib/tiny_mce/assets/tiny_mce/tiny_mce_src.js +4684 -4107
  370. data/lib/tiny_mce/assets/tiny_mce/utils/editable_selects.js +5 -4
  371. data/lib/tiny_mce/assets/tiny_mce/utils/form_utils.js +5 -4
  372. data/lib/tiny_mce/assets/tiny_mce/utils/mctabs.js +5 -4
  373. data/lib/tiny_mce/assets/tiny_mce/utils/validate.js +5 -4
  374. data/lib/tiny_mce/base.rb +7 -19
  375. data/lib/tiny_mce/configuration.rb +98 -0
  376. data/lib/tiny_mce/exceptions.rb +14 -0
  377. data/lib/tiny_mce/helpers.rb +13 -49
  378. data/lib/tiny_mce/spell_checker.rb +0 -2
  379. data/lib/tiny_mce/valid_tinymce_options.yml +1 -6
  380. data/test/functional/full_tiny_mce_controller_test.rb +9 -12
  381. data/test/functional/multi_configuration_tiny_mce_controller_test.rb +58 -0
  382. data/test/functional/slim_tiny_mce_controller_test.rb +8 -5
  383. data/test/test_helper.rb +12 -0
  384. data/test/unit/configuration_test.rb +56 -0
  385. data/test/unit/helpers/tiny_mce_helper_test.rb +99 -97
  386. data/test/unit/tiny_mce_test.rb +1 -2
  387. data/tiny_mce.gemspec +79 -10
  388. metadata +88 -11
  389. data/lib/tiny_mce/assets/tiny_mce/plugins/safari/blank.htm +0 -1
  390. data/lib/tiny_mce/assets/tiny_mce/plugins/safari/editor_plugin.js +0 -1
  391. data/lib/tiny_mce/assets/tiny_mce/plugins/safari/editor_plugin_src.js +0 -438
  392. data/lib/tiny_mce/option_validator.rb +0 -35
  393. data/test/unit/options_validator_test.rb +0 -51
@@ -1,10 +1,11 @@
1
1
  /**
2
- * $Id: editable_selects.js 867 2008-06-09 20:33:40Z spocke $
2
+ * editable_selects.js
3
3
  *
4
- * Makes select boxes editable.
4
+ * Copyright 2009, Moxiecode Systems AB
5
+ * Released under LGPL License.
5
6
  *
6
- * @author Moxiecode
7
- * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
7
+ * License: http://tinymce.moxiecode.com/license
8
+ * Contributing: http://tinymce.moxiecode.com/contributing
8
9
  */
9
10
 
10
11
  var TinyMCE_EditableSelects = {
@@ -1,10 +1,11 @@
1
1
  /**
2
- * $Id: form_utils.js 1184 2009-08-11 11:47:27Z spocke $
2
+ * form_utils.js
3
3
  *
4
- * Various form utilitiy functions.
4
+ * Copyright 2009, Moxiecode Systems AB
5
+ * Released under LGPL License.
5
6
  *
6
- * @author Moxiecode
7
- * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
7
+ * License: http://tinymce.moxiecode.com/license
8
+ * Contributing: http://tinymce.moxiecode.com/contributing
8
9
  */
9
10
 
10
11
  var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));
@@ -1,10 +1,11 @@
1
1
  /**
2
- * $Id: mctabs.js 758 2008-03-30 13:53:29Z spocke $
2
+ * mctabs.js
3
3
  *
4
- * Moxiecode DHTML Tabs script.
4
+ * Copyright 2009, Moxiecode Systems AB
5
+ * Released under LGPL License.
5
6
  *
6
- * @author Moxiecode
7
- * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
7
+ * License: http://tinymce.moxiecode.com/license
8
+ * Contributing: http://tinymce.moxiecode.com/contributing
8
9
  */
9
10
 
10
11
  function MCTabs() {
@@ -1,10 +1,11 @@
1
1
  /**
2
- * $Id: validate.js 758 2008-03-30 13:53:29Z spocke $
2
+ * validate.js
3
3
  *
4
- * Various form validation methods.
4
+ * Copyright 2009, Moxiecode Systems AB
5
+ * Released under LGPL License.
5
6
  *
6
- * @author Moxiecode
7
- * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
7
+ * License: http://tinymce.moxiecode.com/license
8
+ * Contributing: http://tinymce.moxiecode.com/contributing
8
9
  */
9
10
 
10
11
  /**
@@ -11,38 +11,26 @@ module TinyMCE
11
11
  # Takes options hash, raw_options string, and any normal params you
12
12
  # can send to a before_filter (only, except etc)
13
13
  def uses_tiny_mce(options = {})
14
- tiny_mce_options = options.delete(:options) || {}
15
- raw_tiny_mce_options = options.delete(:raw_options) || ''
16
-
17
- # Allow users to have default options in config/tiny_mce.yml so that
18
- # they do not need to specify the same options over all controllers
19
- tiny_mce_yaml_filepath = File.join(RAILS_ROOT, 'config', 'tiny_mce.yml')
20
- if File.exist?(tiny_mce_yaml_filepath)
21
- yaml_options = YAML::load(IO.read(tiny_mce_yaml_filepath)) rescue Hash.new
22
- tiny_mce_options = yaml_options.merge(tiny_mce_options) if yaml_options
23
- end
14
+ configuration = TinyMCE::Configuration.new(options.delete(:options), options.delete(:raw_options))
24
15
 
25
16
  # If the tiny_mce plugins includes the spellchecker, then form a spellchecking path,
26
17
  # add it to the tiny_mce_options, and include the SpellChecking module
27
- if !tiny_mce_options[:plugins].blank? && tiny_mce_options[:plugins].include?('spellchecker')
28
- tiny_mce_options.reverse_merge!(:spellchecker_rpc_url => "/" + self.controller_name + "/spellchecker")
29
- self.class_eval do
30
- include TinyMCE::SpellChecker
31
- end
18
+ if configuration.plugins.include?('spellchecker')
19
+ configuration.reverse_add_options("spellchecker_rpc_url" => "/" + self.controller_name + "/spellchecker")
20
+ self.class_eval { include TinyMCE::SpellChecker }
32
21
  end
33
22
 
34
23
  # Set instance vars in the current class
35
24
  proc = Proc.new do |c|
36
- c.instance_variable_set(:@tiny_mce_options, tiny_mce_options)
37
- c.instance_variable_set(:@raw_tiny_mce_options, raw_tiny_mce_options)
25
+ configurations = c.instance_variable_get(:@tiny_mce_configurations) || []
26
+ configurations << configuration
27
+ c.instance_variable_set(:@tiny_mce_configurations, configurations)
38
28
  c.instance_variable_set(:@uses_tiny_mce, true)
39
29
  end
40
30
 
41
31
  # Run the above proc before each page load this method is declared in
42
32
  before_filter(proc, options)
43
33
  end
44
-
45
34
  end
46
-
47
35
  end
48
36
  end
@@ -0,0 +1,98 @@
1
+ module TinyMCE
2
+ class Configuration
3
+ # We use this to combine options and raw_options into one class and validate
4
+ # whether options passed in by the users are valid tiny mce configuration settings.
5
+ # Also loads which options are valid, and provides an plugins attribute to allow
6
+ # more configuration options dynamicly
7
+
8
+ DEFAULT_OPTIONS = {
9
+ 'mode' => 'textareas',
10
+ 'editor_selector' => 'mceEditor',
11
+ 'theme' => 'simple',
12
+ 'language' => (defined?(I18n) ? I18n.locale : :en)
13
+ }
14
+
15
+ def self.config_file_options
16
+ @@config_file_options ||= begin
17
+ tiny_mce_yaml_filepath = File.join(RAILS_ROOT, 'config', 'tiny_mce.yml')
18
+ # The YAML file might not exist, might be blank, might be invalid, or
19
+ # might be valid. Catch all cases and make sure we always return a Hash
20
+ (YAML::load(IO.read(tiny_mce_yaml_filepath)) rescue nil) || Hash.new
21
+ end
22
+ end
23
+
24
+ # Parse the options file and load it into an array
25
+ # (this method is called when tiny_mce is initialized - see init.rb)
26
+ def self.valid_options
27
+ @@valid_options ||= begin
28
+ valid_options_path = File.join(File.dirname(__FILE__), 'valid_tinymce_options.yml')
29
+ File.open(valid_options_path) { |f| YAML.load(f.read) }
30
+ end
31
+ end
32
+
33
+ attr_accessor :options, :raw_options
34
+
35
+ def initialize(options = {}, raw_options = nil)
36
+ options = Hash.new unless options.is_a?(Hash)
37
+ @options = DEFAULT_OPTIONS.merge(self.class.config_file_options.stringify_keys).
38
+ merge(options.stringify_keys)
39
+ @raw_options = [raw_options]
40
+ end
41
+
42
+ # Merge additional options and raw_options
43
+ def add_options(options = {}, raw_options = nil)
44
+ @options.merge!(options.stringify_keys) unless options.blank?
45
+ @raw_options << raw_options unless raw_options.blank?
46
+ end
47
+
48
+ # Merge additional options and raw_options, but don't overwrite existing
49
+ def reverse_add_options(options = {}, raw_options = nil)
50
+ @options.reverse_merge!(options.stringify_keys) unless options.blank?
51
+ @raw_options << raw_options unless raw_options.blank?
52
+ end
53
+
54
+ def plugins
55
+ @options['plugins'] || []
56
+ end
57
+
58
+ # Validate and merge options and raw_options into a string
59
+ # to be used for tinyMCE.init() in the raw_tiny_mce_init helper
60
+ def to_json
61
+ raise TinyMCEInvalidOptionType.invalid_type_of(plugins, :for => :plugins) unless plugins.is_a?(Array)
62
+
63
+ json_options = []
64
+ @options.each_pair do |key, value|
65
+ raise TinyMCEInvalidOption.invalid_option(key) unless valid?(key)
66
+ json_options << "#{key} : " + case value
67
+ when String, Symbol, Fixnum
68
+ "'#{value.to_s}'"
69
+ when Array
70
+ '"' + value.join(',') + '"'
71
+ when TrueClass
72
+ 'true'
73
+ when FalseClass
74
+ 'false'
75
+ else
76
+ raise TinyMCEInvalidOptionType.invalid_type_of(value, :for => key)
77
+ end
78
+ end
79
+
80
+ json_options.sort!
81
+
82
+ @raw_options.compact!
83
+ json_options += @raw_options unless @raw_options.blank?
84
+
85
+ "{\n" + json_options.delete_if {|o| o.blank? }.join(",\n") + "\n\n}"
86
+ end
87
+
88
+ # Does the check to see if the option is valid. It checks the valid_options
89
+ # array (see above), checks if the start of the option name is in the plugin list
90
+ # or checks if it's an theme_advanced_container setting
91
+ def valid?(option)
92
+ option = option.to_s
93
+ self.class.valid_options.include?(option) ||
94
+ plugins.include?(option.split('_').first) ||
95
+ option =~ /^theme_advanced_container_\w+$/
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,14 @@
1
+ module TinyMCE
2
+ # Setup a couple of Exception classes that we use later on
3
+ class TinyMCEInvalidOption < Exception
4
+ def self.invalid_option(option)
5
+ new "Invalid option #{option} passed to tinymce"
6
+ end
7
+ end
8
+
9
+ class TinyMCEInvalidOptionType < Exception
10
+ def self.invalid_type_of(value, parameters={})
11
+ new "Invalid value of type #{value.class} passed for TinyMCE option #{parameters[:for].to_s}"
12
+ end
13
+ end
14
+ end
@@ -1,9 +1,6 @@
1
1
  module TinyMCE
2
2
  # The helper module we include into ActionController::Base
3
3
  module Helpers
4
- # Setup a couple of Exception classes that we use later on
5
- class TinyMCEInvalidOption < Exception; end
6
- class TinyMCEInvalidOptionType < Exception; end
7
4
 
8
5
  # Has uses_tiny_mce method been declared in the controller for this page?
9
6
  def using_tiny_mce?
@@ -12,60 +9,27 @@ module TinyMCE
12
9
 
13
10
  # Parse @tiny_mce_options and @raw_tiny_mce_options to create a raw JS string
14
11
  # used by TinyMCE. Returns errors if the option or options type is invalid
15
- def raw_tiny_mce_init(options = {}, raw_options = '')
16
- # first we set some defaults, then we merge in the controller level options
17
- # and finally merge in the view level options (to give presidence)
18
- @tiny_mce_options ||= {}
19
- default_options = { 'mode' => 'textareas',
20
- 'editor_selector' => 'mceEditor',
21
- 'theme' => 'simple',
22
- 'language' => (defined?(I18n) ? I18n.locale : :en) }
23
- options = default_options.merge(@tiny_mce_options.stringify_keys).merge(options.stringify_keys)
24
- raw_options = @raw_tiny_mce_options + raw_options unless @raw_tiny_mce_options.nil?
25
-
26
- unless options['plugins'].nil?
27
- raise TinyMCEInvalidOptionType.new("Invalid value of type #{options['plugins'].class} passed for TinyMCE option plugins") unless options['plugins'].kind_of?(Array)
28
-
29
- # Append the plugins we have enabled for this field to the OptionsValidator
30
- TinyMCE::OptionValidator.plugins += options['plugins']
12
+ def raw_tiny_mce_init(options = {}, raw_options = nil)
13
+ tinymce_js = ""
14
+
15
+ @tiny_mce_configurations ||= [Configuration.new]
16
+ @tiny_mce_configurations.each do |configuration|
17
+ configuration.add_options(options, raw_options)
18
+ tinymce_js += "tinyMCE.init("
19
+ tinymce_js += configuration.to_json
20
+ tinymce_js += ");"
31
21
  end
32
22
 
33
- tinymce_js = "tinyMCE.init({\n"
34
- options.sort.each_with_index do |values, index|
35
- key, value = values[0], values[1]
36
- raise TinyMCEInvalidOption.new("Invalid option #{key} passed to tinymce") unless TinyMCE::OptionValidator.valid?(key)
37
- tinymce_js += "#{key} : "
38
- case value
39
- when String, Symbol, Fixnum
40
- tinymce_js += "'#{value.to_s}'"
41
- when Array
42
- tinymce_js += '"' + value.join(',') + '"'
43
- when TrueClass
44
- tinymce_js += 'true'
45
- when FalseClass
46
- tinymce_js += 'false'
47
- else
48
- raise TinyMCEInvalidOptionType.new("Invalid value of type #{value.class} passed for TinyMCE option #{key}")
49
- end
50
- if (index < options.size - 1)
51
- # there are more options in this array
52
- tinymce_js += ",\n"
53
- else
54
- # no more options in this array. Finish it by adding the addition JS
55
- tinymce_js += ",\n#{raw_options}" unless raw_options.blank?
56
- tinymce_js += "\n"
57
- end
58
- end
59
- tinymce_js += "\n});"
23
+ tinymce_js
60
24
  end
61
25
 
62
26
  # Form the raw JS and wrap in in a <script> tag for inclusion in the <head>
63
- def tiny_mce_init(options = {}, raw_options = '')
27
+ def tiny_mce_init(options = {}, raw_options = nil)
64
28
  javascript_tag raw_tiny_mce_init(options, raw_options)
65
29
  end
66
30
  # Form the raw JS and wrap in in a <script> tag for inclusion in the <head>
67
31
  # (only if tiny mce is actually being used)
68
- def tiny_mce_init_if_needed(options = {}, raw_options = '')
32
+ def tiny_mce_init_if_needed(options = {}, raw_options = nil)
69
33
  tiny_mce_init(options, raw_options) if using_tiny_mce?
70
34
  end
71
35
 
@@ -82,7 +46,7 @@ module TinyMCE
82
46
  # Form a JS include tag for the TinyMCE JS src, and form the raw JS and wrap
83
47
  # in in a <script> tag for inclusion in the <head> for inclusion in the <head>
84
48
  # (only if tiny mce is actually being used)
85
- def include_tiny_mce_if_needed(options = {}, raw_options = '')
49
+ def include_tiny_mce_if_needed(options = {}, raw_options = nil)
86
50
  if using_tiny_mce?
87
51
  include_tiny_mce_js + tiny_mce_init(options, raw_options)
88
52
  end
@@ -63,7 +63,5 @@ module TinyMCE
63
63
  end
64
64
  return xml_response_values
65
65
  end
66
-
67
66
  end
68
-
69
67
  end
@@ -4,7 +4,6 @@
4
4
  #
5
5
 
6
6
  # General
7
- - accessibility_focus
8
7
  - accessibility_warnings
9
8
  - auto_focus
10
9
  - browsers
@@ -26,7 +25,6 @@
26
25
  - skin
27
26
  - skin_variant
28
27
  - strict_loading_mode
29
- - tab_focus
30
28
  - table_inline_editing
31
29
  - theme
32
30
 
@@ -76,6 +74,7 @@
76
74
  - remove_linebreaks
77
75
  - remove_redundant_brs
78
76
  - preformatted
77
+ - style_formats
79
78
  - valid_child_elements
80
79
  - valid_elements
81
80
  - verify_css_classes
@@ -113,10 +112,6 @@
113
112
  - external_link_list_url
114
113
  - external_image_list_url
115
114
 
116
- # Tab specific
117
- - display_tab_class
118
- - hidden_tab_class
119
-
120
115
  # Triggers/Patches
121
116
  - add_form_submit_trigger
122
117
  - add_unload_trigger
@@ -34,8 +34,8 @@ class FullTinyMCEControllerTest < ActionController::TestCase
34
34
  get :show_page
35
35
  assert_response :success
36
36
  assert_nil assigns(:uses_tiny_mce)
37
- assert_nil assigns(:tiny_mce_options)
38
- assert_nil assigns(:raw_tiny_mce_options)
37
+ assert_nil assigns(:tiny_mce_configurations)
38
+ # assert_nil assigns(:raw_tiny_mce_options)
39
39
  end
40
40
 
41
41
  #
@@ -53,8 +53,8 @@ class FullTinyMCEControllerTest < ActionController::TestCase
53
53
 
54
54
  test "the spellchecker has a default path to use" do
55
55
  get :new_page
56
- assert_not_nil assigns(:tiny_mce_options)
57
- assert_equal assigns(:tiny_mce_options)[:spellchecker_rpc_url], "/full_tiny_mce/spellchecker"
56
+ assert_not_nil assigns(:tiny_mce_configurations).first
57
+ assert_equal assigns(:tiny_mce_configurations).first.options["spellchecker_rpc_url"], "/full_tiny_mce/spellchecker"
58
58
  end
59
59
 
60
60
  private
@@ -63,12 +63,9 @@ class FullTinyMCEControllerTest < ActionController::TestCase
63
63
  assert_response :success
64
64
  assert (assigns(:uses_tiny_mce) &&
65
65
  assigns(:uses_tiny_mce) == true)
66
- assert (assigns(:tiny_mce_options) &&
67
- assigns(:tiny_mce_options).is_a?(Hash) &&
68
- assigns(:tiny_mce_options) == { :spellchecker_rpc_url=> "/full_tiny_mce/spellchecker",
69
- :plugins => ['spellchecker'] })
70
- assert (assigns(:raw_tiny_mce_options) &&
71
- assigns(:raw_tiny_mce_options) == '')
66
+ assert (assigns(:tiny_mce_configurations) &&
67
+ assigns(:tiny_mce_configurations).is_a?(Array) &&
68
+ assigns(:tiny_mce_configurations).first.options == { "spellchecker_rpc_url"=> "/full_tiny_mce/spellchecker",
69
+ "plugins" => ['spellchecker'] })
72
70
  end
73
-
74
- end
71
+ end
@@ -0,0 +1,58 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ # Make a test class with full options
4
+ class MultiConfigurationTinyMCEController < ApplicationController
5
+ uses_tiny_mce :options => { :plugins => ['spellchecker'] },
6
+ :raw_options => '',
7
+ :only => ['new_page','edit_page']
8
+ uses_tiny_mce :options => { :plugins => ['paste','fullscreen'] },
9
+ :raw_options => '',
10
+ :only => ['edit_page']
11
+ include TinyMCEActions
12
+ end
13
+
14
+ # Lets make sure that if routes arn't the
15
+ # defaults, these tests will still work
16
+ ActionController::Routing::Routes.draw do |map|
17
+ map.with_options :controller => 'multi_configuration_tiny_mce' do |tiny_mce|
18
+ tiny_mce.connect '/full_tiny_mce/new_page', :action => 'new_page'
19
+ tiny_mce.connect '/full_tiny_mce/edit_page', :action => 'edit_page'
20
+ tiny_mce.connect '/full_tiny_mce/show_page', :action => 'show_page'
21
+ tiny_mce.connect '/full_tiny_mce/spellchecker', :action => 'spellchecker'
22
+ end
23
+ end
24
+
25
+ # Use non-default action names to get around possible authentication
26
+ # filters to ensure the tests work in most cases
27
+ class MultiConfigurationTinyMCEControllerTest < ActionController::TestCase
28
+
29
+ test "all instance variables are properly set on new" do
30
+ get :new_page
31
+ assert_response :success
32
+ assert (assigns(:uses_tiny_mce) &&
33
+ assigns(:uses_tiny_mce) == true)
34
+ assert (assigns(:tiny_mce_configurations) &&
35
+ assigns(:tiny_mce_configurations).is_a?(Array) &&
36
+ assigns(:tiny_mce_configurations).first.options == { "spellchecker_rpc_url"=> "/multi_configuration_tiny_mce/spellchecker",
37
+ "plugins" => ['spellchecker'] })
38
+ end
39
+
40
+ test "all instance variables are properly set on edit" do
41
+ get :edit_page
42
+ assert_response :success
43
+ assert (assigns(:uses_tiny_mce) &&
44
+ assigns(:uses_tiny_mce) == true)
45
+ assert (assigns(:tiny_mce_configurations) &&
46
+ assigns(:tiny_mce_configurations).is_a?(Array) &&
47
+ assigns(:tiny_mce_configurations).first.options == { "spellchecker_rpc_url"=> "/multi_configuration_tiny_mce/spellchecker",
48
+ "plugins" => ['spellchecker'] } &&
49
+ assigns(:tiny_mce_configurations).second.options == { "plugins" => ['paste','fullscreen'] })
50
+ end
51
+
52
+ test "tiny mce is only loaded on the pages specified to the uses_tiny_mce declaration" do
53
+ get :show_page
54
+ assert_response :success
55
+ assert_nil assigns(:uses_tiny_mce)
56
+ assert_nil assigns(:tiny_mce_configurations)
57
+ end
58
+ end