ouvrages-tinymce-rails 3.4.6 → 3.4.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (308) hide show
  1. data/README.md +52 -16
  2. data/Rakefile +11 -20
  3. data/app/assets/javascripts/tinymce-jquery.js +3 -0
  4. data/app/assets/javascripts/tinymce.js +2 -0
  5. data/app/assets/javascripts/tinymce/preinit.js.erb +5 -0
  6. data/lib/tasks/assets.rake +7 -0
  7. data/lib/tinymce-rails.rb +1 -2
  8. data/lib/tinymce/rails.rb +12 -0
  9. data/lib/tinymce/rails/configuration.rb +67 -0
  10. data/lib/tinymce/rails/engine.rb +16 -0
  11. data/lib/tinymce/rails/helper.rb +29 -0
  12. data/lib/tinymce/rails/version.rb +6 -0
  13. data/vendor/assets/javascripts/tinymce/jquery.tinymce.js +1 -0
  14. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/langs/en.js +0 -0
  15. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/license.txt +0 -0
  16. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advhr/css/advhr.css +0 -0
  17. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advhr/editor_plugin.js +0 -0
  18. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advhr/editor_plugin_src.js +0 -0
  19. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advhr/js/rule.js +0 -0
  20. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advhr/langs/en_dlg.js +0 -0
  21. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advhr/rule.htm +0 -0
  22. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advimage/css/advimage.css +0 -0
  23. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advimage/editor_plugin.js +0 -0
  24. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advimage/editor_plugin_src.js +0 -0
  25. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advimage/image.htm +0 -0
  26. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advimage/img/sample.gif +0 -0
  27. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advimage/js/image.js +0 -0
  28. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advimage/langs/en_dlg.js +0 -0
  29. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advlink/css/advlink.css +0 -0
  30. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advlink/editor_plugin.js +0 -0
  31. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advlink/editor_plugin_src.js +0 -0
  32. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advlink/js/advlink.js +8 -1
  33. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advlink/langs/en_dlg.js +0 -0
  34. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advlink/link.htm +0 -0
  35. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advlist/editor_plugin.js +0 -0
  36. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/advlist/editor_plugin_src.js +0 -0
  37. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/autolink/editor_plugin.js +0 -0
  38. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/autolink/editor_plugin_src.js +0 -0
  39. data/vendor/assets/javascripts/tinymce/plugins/autoresize/editor_plugin.js +1 -0
  40. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/autoresize/editor_plugin_src.js +20 -38
  41. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/autosave/editor_plugin.js +0 -0
  42. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/autosave/editor_plugin_src.js +0 -0
  43. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/autosave/langs/en.js +0 -0
  44. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/bbcode/editor_plugin.js +0 -0
  45. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/bbcode/editor_plugin_src.js +0 -0
  46. data/vendor/assets/javascripts/tinymce/plugins/contextmenu/editor_plugin.js +1 -0
  47. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/contextmenu/editor_plugin_src.js +1 -0
  48. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/directionality/editor_plugin.js +0 -0
  49. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/directionality/editor_plugin_src.js +0 -0
  50. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/editor_plugin.js +0 -0
  51. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/editor_plugin_src.js +0 -0
  52. data/vendor/assets/javascripts/tinymce/plugins/emotions/emotions.htm +42 -0
  53. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-cool.gif +0 -0
  54. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-cry.gif +0 -0
  55. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-embarassed.gif +0 -0
  56. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-foot-in-mouth.gif +0 -0
  57. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-frown.gif +0 -0
  58. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-innocent.gif +0 -0
  59. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-kiss.gif +0 -0
  60. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-laughing.gif +0 -0
  61. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-money-mouth.gif +0 -0
  62. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-sealed.gif +0 -0
  63. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-smile.gif +0 -0
  64. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-surprised.gif +0 -0
  65. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-tongue-out.gif +0 -0
  66. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-undecided.gif +0 -0
  67. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-wink.gif +0 -0
  68. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/emotions/img/smiley-yell.gif +0 -0
  69. data/vendor/assets/javascripts/tinymce/plugins/emotions/js/emotions.js +43 -0
  70. data/vendor/assets/javascripts/tinymce/plugins/emotions/langs/en_dlg.js +1 -0
  71. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/example/dialog.htm +0 -0
  72. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/example/editor_plugin.js +0 -0
  73. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/example/editor_plugin_src.js +0 -0
  74. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/example/img/example.gif +0 -0
  75. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/example/js/dialog.js +0 -0
  76. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/example/langs/en.js +0 -0
  77. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/example/langs/en_dlg.js +0 -0
  78. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/example_dependency/editor_plugin.js +0 -0
  79. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/example_dependency/editor_plugin_src.js +0 -0
  80. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/fullpage/css/fullpage.css +0 -0
  81. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/fullpage/editor_plugin.js +0 -0
  82. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/fullpage/editor_plugin_src.js +0 -0
  83. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/fullpage/fullpage.htm +0 -0
  84. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/fullpage/js/fullpage.js +0 -0
  85. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/fullpage/langs/en_dlg.js +0 -0
  86. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/fullscreen/editor_plugin.js +0 -0
  87. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/fullscreen/editor_plugin_src.js +0 -0
  88. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/fullscreen/fullscreen.htm +0 -0
  89. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/iespell/editor_plugin.js +0 -0
  90. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/iespell/editor_plugin_src.js +0 -0
  91. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/inlinepopups/editor_plugin.js +0 -0
  92. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/inlinepopups/editor_plugin_src.js +0 -0
  93. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
  94. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
  95. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
  96. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
  97. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
  98. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
  99. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
  100. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css +0 -0
  101. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/inlinepopups/template.htm +0 -0
  102. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/insertdatetime/editor_plugin.js +0 -0
  103. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/insertdatetime/editor_plugin_src.js +0 -0
  104. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/layer/editor_plugin.js +0 -0
  105. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/layer/editor_plugin_src.js +0 -0
  106. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/legacyoutput/editor_plugin.js +0 -0
  107. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/legacyoutput/editor_plugin_src.js +0 -0
  108. data/vendor/assets/javascripts/tinymce/plugins/lists/editor_plugin.js +1 -0
  109. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/lists/editor_plugin_src.js +221 -48
  110. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/media/css/media.css +0 -0
  111. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/media/editor_plugin.js +0 -0
  112. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/media/editor_plugin_src.js +0 -0
  113. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/media/js/embed.js +0 -0
  114. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/media/js/media.js +39 -22
  115. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/media/langs/en_dlg.js +1 -1
  116. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/media/media.htm +0 -0
  117. data/vendor/assets/javascripts/tinymce/plugins/media/moxieplayer.swf +0 -0
  118. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/nonbreaking/editor_plugin.js +0 -0
  119. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/nonbreaking/editor_plugin_src.js +0 -0
  120. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/noneditable/editor_plugin.js +0 -0
  121. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/noneditable/editor_plugin_src.js +0 -0
  122. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/pagebreak/editor_plugin.js +0 -0
  123. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/pagebreak/editor_plugin_src.js +0 -0
  124. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/paste/editor_plugin.js +0 -0
  125. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/paste/editor_plugin_src.js +0 -0
  126. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/paste/js/pastetext.js +0 -0
  127. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/paste/js/pasteword.js +0 -0
  128. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/paste/langs/en_dlg.js +0 -0
  129. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/paste/pastetext.htm +0 -0
  130. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/paste/pasteword.htm +0 -0
  131. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/preview/editor_plugin.js +0 -0
  132. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/preview/editor_plugin_src.js +0 -0
  133. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/preview/example.html +0 -0
  134. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/preview/jscripts/embed.js +0 -0
  135. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/preview/preview.html +0 -0
  136. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/print/editor_plugin.js +0 -0
  137. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/print/editor_plugin_src.js +0 -0
  138. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/save/editor_plugin.js +0 -0
  139. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/save/editor_plugin_src.js +0 -0
  140. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/searchreplace/css/searchreplace.css +0 -0
  141. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/searchreplace/editor_plugin.js +0 -0
  142. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/searchreplace/editor_plugin_src.js +0 -0
  143. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/searchreplace/js/searchreplace.js +0 -0
  144. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/searchreplace/langs/en_dlg.js +0 -0
  145. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/searchreplace/searchreplace.htm +0 -0
  146. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/spellchecker/css/content.css +0 -0
  147. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/spellchecker/editor_plugin.js +0 -0
  148. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/spellchecker/editor_plugin_src.js +0 -0
  149. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/spellchecker/img/wline.gif +0 -0
  150. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/style/css/props.css +0 -0
  151. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/style/editor_plugin.js +0 -0
  152. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/style/editor_plugin_src.js +0 -0
  153. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/style/js/props.js +15 -0
  154. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/style/langs/en_dlg.js +0 -0
  155. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/style/props.htm +1 -1
  156. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/tabfocus/editor_plugin.js +0 -0
  157. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/tabfocus/editor_plugin_src.js +0 -0
  158. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/cell.htm +0 -0
  159. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/css/cell.css +0 -0
  160. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/css/row.css +0 -0
  161. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/css/table.css +0 -0
  162. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/editor_plugin.js +1 -1
  163. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/editor_plugin_src.js +108 -46
  164. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/js/cell.js +0 -0
  165. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/js/merge_cells.js +0 -0
  166. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/js/row.js +0 -0
  167. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/js/table.js +50 -12
  168. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/langs/en_dlg.js +0 -0
  169. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/merge_cells.htm +0 -0
  170. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/row.htm +0 -0
  171. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/table/table.htm +1 -1
  172. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/template/blank.htm +0 -0
  173. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/template/css/template.css +0 -0
  174. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/template/editor_plugin.js +0 -0
  175. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/template/editor_plugin_src.js +0 -0
  176. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/template/js/template.js +0 -0
  177. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/template/langs/en_dlg.js +0 -0
  178. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/template/template.htm +0 -0
  179. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/visualchars/editor_plugin.js +0 -0
  180. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/visualchars/editor_plugin_src.js +0 -0
  181. data/vendor/assets/javascripts/tinymce/plugins/wordcount/editor_plugin.js +1 -0
  182. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/wordcount/editor_plugin_src.js +14 -6
  183. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/abbr.htm +0 -0
  184. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/acronym.htm +0 -0
  185. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/attributes.htm +0 -0
  186. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/cite.htm +0 -0
  187. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/css/attributes.css +0 -0
  188. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/css/popup.css +0 -0
  189. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/del.htm +0 -0
  190. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/editor_plugin.js +0 -0
  191. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/editor_plugin_src.js +0 -0
  192. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/ins.htm +0 -0
  193. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/js/abbr.js +0 -0
  194. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/js/acronym.js +0 -0
  195. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/js/attributes.js +0 -0
  196. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/js/cite.js +0 -0
  197. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/js/del.js +0 -0
  198. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/js/element_common.js +0 -0
  199. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/js/ins.js +0 -0
  200. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/plugins/xhtmlxtras/langs/en_dlg.js +0 -0
  201. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/about.htm +0 -0
  202. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/anchor.htm +0 -0
  203. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/charmap.htm +5 -1
  204. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/color_picker.htm +0 -0
  205. data/vendor/assets/javascripts/tinymce/themes/advanced/editor_template.js +1 -0
  206. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/editor_template_src.js +7 -3
  207. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/image.htm +0 -0
  208. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/img/colorpicker.jpg +0 -0
  209. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/img/flash.gif +0 -0
  210. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/img/icons.gif +0 -0
  211. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/img/iframe.gif +0 -0
  212. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/img/pagebreak.gif +0 -0
  213. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/img/quicktime.gif +0 -0
  214. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/img/realmedia.gif +0 -0
  215. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/img/shockwave.gif +0 -0
  216. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/img/trans.gif +0 -0
  217. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/img/video.gif +0 -0
  218. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/img/windowsmedia.gif +0 -0
  219. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/js/about.js +0 -0
  220. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/js/anchor.js +0 -0
  221. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/js/charmap.js +11 -3
  222. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/js/color_picker.js +4 -4
  223. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/js/image.js +0 -0
  224. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/js/link.js +0 -0
  225. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/js/source_editor.js +0 -0
  226. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/langs/en.js +0 -0
  227. data/vendor/assets/javascripts/tinymce/themes/advanced/langs/en_dlg.js +1 -0
  228. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/link.htm +0 -0
  229. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/shortcuts.htm +0 -0
  230. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/default/content.css +0 -0
  231. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/default/dialog.css +0 -0
  232. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/default/img/buttons.png +0 -0
  233. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/default/img/items.gif +0 -0
  234. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  235. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  236. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/default/img/progress.gif +0 -0
  237. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/default/img/tabs.gif +0 -0
  238. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/default/ui.css +0 -0
  239. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/highcontrast/content.css +0 -0
  240. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/highcontrast/dialog.css +0 -0
  241. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/highcontrast/ui.css +0 -0
  242. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/o2k7/content.css +0 -0
  243. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/o2k7/dialog.css +0 -0
  244. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  245. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  246. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  247. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/o2k7/ui.css +0 -0
  248. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/o2k7/ui_black.css +0 -0
  249. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/skins/o2k7/ui_silver.css +0 -0
  250. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/advanced/source_editor.htm +0 -0
  251. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/simple/editor_template.js +0 -0
  252. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/simple/editor_template_src.js +0 -0
  253. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/simple/img/icons.gif +0 -0
  254. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/simple/langs/en.js +0 -0
  255. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/simple/skins/default/content.css +0 -0
  256. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/simple/skins/default/ui.css +0 -0
  257. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/simple/skins/o2k7/content.css +0 -0
  258. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/simple/skins/o2k7/img/button_bg.png +0 -0
  259. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/themes/simple/skins/o2k7/ui.css +0 -0
  260. data/vendor/assets/javascripts/tinymce/tiny_mce.js +1 -0
  261. data/vendor/assets/javascripts/tinymce/tiny_mce_jquery.js +1 -0
  262. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/tiny_mce_jquery_src.js +774 -409
  263. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/tiny_mce_popup.js +0 -0
  264. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/tiny_mce_src.js +774 -409
  265. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/utils/editable_selects.js +0 -0
  266. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/utils/form_utils.js +0 -0
  267. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/utils/mctabs.js +0 -0
  268. data/{assets/precompiled → vendor/assets/javascripts}/tinymce/utils/validate.js +0 -0
  269. metadata +294 -318
  270. data/assets/integration/tinymce-jquery.js +0 -3
  271. data/assets/integration/tinymce.js +0 -2
  272. data/assets/integration/tinymce/preinit.js.erb +0 -5
  273. data/assets/precompiled/tinymce/jquery.tinymce.js +0 -1
  274. data/assets/precompiled/tinymce/langs/fr.js +0 -1
  275. data/assets/precompiled/tinymce/plugins/advhr/langs/fr_dlg.js +0 -1
  276. data/assets/precompiled/tinymce/plugins/advimage/langs/fr_dlg.js +0 -1
  277. data/assets/precompiled/tinymce/plugins/advlink/langs/fr_dlg.js +0 -1
  278. data/assets/precompiled/tinymce/plugins/autoresize/editor_plugin.js +0 -1
  279. data/assets/precompiled/tinymce/plugins/contextmenu/editor_plugin.js +0 -1
  280. data/assets/precompiled/tinymce/plugins/emotions/emotions.htm +0 -41
  281. data/assets/precompiled/tinymce/plugins/emotions/js/emotions.js +0 -22
  282. data/assets/precompiled/tinymce/plugins/emotions/langs/en_dlg.js +0 -1
  283. data/assets/precompiled/tinymce/plugins/emotions/langs/fr_dlg.js +0 -1
  284. data/assets/precompiled/tinymce/plugins/fullpage/langs/fr_dlg.js +0 -1
  285. data/assets/precompiled/tinymce/plugins/lists/editor_plugin.js +0 -1
  286. data/assets/precompiled/tinymce/plugins/media/langs/fr_dlg.js +0 -1
  287. data/assets/precompiled/tinymce/plugins/media/moxieplayer.swf +0 -0
  288. data/assets/precompiled/tinymce/plugins/paste/langs/fr_dlg.js +0 -1
  289. data/assets/precompiled/tinymce/plugins/searchreplace/langs/fr_dlg.js +0 -1
  290. data/assets/precompiled/tinymce/plugins/style/langs/fr_dlg.js +0 -1
  291. data/assets/precompiled/tinymce/plugins/table/langs/fr_dlg.js +0 -1
  292. data/assets/precompiled/tinymce/plugins/template/langs/fr_dlg.js +0 -1
  293. data/assets/precompiled/tinymce/plugins/wordcount/editor_plugin.js +0 -1
  294. data/assets/precompiled/tinymce/plugins/xhtmlxtras/langs/fr_dlg.js +0 -1
  295. data/assets/precompiled/tinymce/themes/advanced/editor_template.js +0 -1
  296. data/assets/precompiled/tinymce/themes/advanced/langs/en_dlg.js +0 -1
  297. data/assets/precompiled/tinymce/themes/advanced/langs/fr.js +0 -1
  298. data/assets/precompiled/tinymce/themes/advanced/langs/fr_dlg.js +0 -1
  299. data/assets/precompiled/tinymce/themes/simple/langs/fr.js +0 -1
  300. data/assets/precompiled/tinymce/tiny_mce.js +0 -1
  301. data/assets/precompiled/tinymce/tiny_mce_jquery.js +0 -1
  302. data/assets/vendor/tinymce/jquery-tinymce.js +0 -1
  303. data/assets/vendor/tinymce/tiny_mce.js +0 -16479
  304. data/assets/vendor/tinymce/tiny_mce_jquery.js +0 -15656
  305. data/lib/tinymce/assets.rake +0 -7
  306. data/lib/tinymce/rails-3.1.0.rake +0 -65
  307. data/lib/tinymce/railtie.rb +0 -27
  308. data/lib/tinymce/version.rb +0 -4
@@ -48,7 +48,7 @@
48
48
  }
49
49
 
50
50
  function setVal(id, value, name) {
51
- if (typeof(value) != 'undefined') {
51
+ if (typeof(value) != 'undefined' && value != null) {
52
52
  var elm = get(id);
53
53
 
54
54
  if (elm.nodeName == "SELECT")
@@ -66,9 +66,9 @@
66
66
 
67
67
  window.Media = {
68
68
  init : function() {
69
- var html, editor;
69
+ var html, editor, self = this;
70
70
 
71
- this.editor = editor = tinyMCEPopup.editor;
71
+ self.editor = editor = tinyMCEPopup.editor;
72
72
 
73
73
  // Setup file browsers and color pickers
74
74
  get('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');
@@ -80,7 +80,7 @@
80
80
  get('audio_altsource2_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource2','audio_altsource2','media','media');
81
81
  get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','media','image');
82
82
 
83
- html = this.getMediaListHTML('medialist', 'src', 'media', 'media');
83
+ html = self.getMediaListHTML('medialist', 'src', 'media', 'media');
84
84
  if (html == "")
85
85
  get("linklistrow").style.display = 'none';
86
86
  else
@@ -104,11 +104,12 @@
104
104
  if (isVisible('filebrowser_poster'))
105
105
  get('video_poster').style.width = '220px';
106
106
 
107
- editor.dom.setOuterHTML(get('media_type'), this.getMediaTypeHTML(editor));
107
+ editor.dom.setOuterHTML(get('media_type'), self.getMediaTypeHTML(editor));
108
108
 
109
- this.data = clone(tinyMCEPopup.getWindowArg('data'));
110
- this.dataToForm();
111
- this.preview();
109
+ self.setDefaultDialogSettings(editor);
110
+ self.data = clone(tinyMCEPopup.getWindowArg('data'));
111
+ self.dataToForm();
112
+ self.preview();
112
113
 
113
114
  updateColor('bgcolor_pick', 'bgcolor');
114
115
  },
@@ -175,14 +176,14 @@
175
176
  formItemName = type == 'global' ? name : type + '_' + name;
176
177
 
177
178
  if (type == 'global')
178
- list = data;
179
- else if (type == 'video' || type == 'audio') {
179
+ list = data;
180
+ else if (type == 'video' || type == 'audio') {
180
181
  list = data.video.attrs;
181
182
 
182
183
  if (!list && !to_form)
183
- data.video.attrs = list = {};
184
+ data.video.attrs = list = {};
184
185
  } else
185
- list = data.params;
186
+ list = data.params;
186
187
 
187
188
  if (list) {
188
189
  if (to_form) {
@@ -426,23 +427,39 @@
426
427
  },
427
428
 
428
429
  getMediaTypeHTML : function(editor) {
430
+ function option(media_type, element) {
431
+ if (!editor.schema.getElementRule(element || media_type)) {
432
+ return '';
433
+ }
434
+
435
+ return '<option value="'+media_type+'">'+tinyMCEPopup.editor.translate("media_dlg."+media_type)+'</option>'
436
+ }
437
+
429
438
  var html = "";
439
+
430
440
  html += '<select id="media_type" name="media_type" onchange="Media.formToData(\'type\');">';
431
- html += '<option value="video">HTML5 Video</option>';
432
- html += '<option value="audio">HTML5 Audio</option>';
433
- html += '<option value="flash">Flash</option>';
434
- html += '<option value="quicktime">QuickTime</option>';
435
- html += '<option value="shockwave">Shockwave</option>';
436
- html += '<option value="windowsmedia">Windows Media</option>';
437
- html += '<option value="realmedia">Real Media</option>';
438
- html += '<option value="iframe">Iframe</option>';
441
+ html += option("video");
442
+ html += option("audio");
443
+ html += option("flash", "object");
444
+ html += option("quicktime", "object");
445
+ html += option("shockwave", "object");
446
+ html += option("windowsmedia", "object");
447
+ html += option("realmedia", "object");
448
+ html += option("iframe");
439
449
 
440
450
  if (editor.getParam('media_embedded_audio', false)) {
441
- html += '<option value="embeddedaudio">Embedded Audio</option>';
451
+ html += option('embeddedaudio', "object");
442
452
  }
443
-
453
+
444
454
  html += '</select>';
445
455
  return html;
456
+ },
457
+
458
+ setDefaultDialogSettings : function(editor) {
459
+ var defaultDialogSettings = editor.getParam("media_dialog_defaults", {});
460
+ tinymce.each(defaultDialogSettings, function(v, k) {
461
+ setVal(k, v);
462
+ });
446
463
  }
447
464
  };
448
465
 
@@ -1 +1 @@
1
- tinyMCE.addI18n('en.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert/Edit Embedded Media","align_top_left":"Top Left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed RTSP resources should be added to the QT Source field under the Advanced tab.\nYou should also add a non-streamed version to the Source field.",qtsrc:"QT Source",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch Style",scriptcallbacks:"Script Callbacks","align_top_right":"Top Right",uimode:"UI Mode",rate:"Rate",playcount:"Play Count",defaultframe:"Default Frame",currentposition:"Current Position",currentmarker:"Current Marker",captioningid:"Captioning ID",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless Video",stretchtofit:"Stretch to Fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Full Screen",enabled:"Enabled",autostart:"Auto Start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke Speed",href:"HREF",endtime:"End Time",starttime:"Start Time",enablejavascript:"Enable JavaScript",correction:"No Correction",targetcache:"Target Cache",playeveryframe:"Play Every Frame",kioskmode:"Kiosk Mode",controller:"Controller",menu:"Show Menu",loop:"Loop",play:"Auto Play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"ID",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain Proportions",controls:"Controls",numloop:"Num Loops",console:"Console",cache:"Cache",autohref:"Auto HREF",liveconnect:"SWLiveConnect",flashvars:"Flash Vars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No Java",maintainaspect:"Maintain Aspect",imagestatus:"Image Status",center:"Center",autogotourl:"Auto Goto URL","shockwave_options":"Shockwave Options","rmp_options":"Real Media Player Options","wmp_options":"Windows Media Player Options","qt_options":"QuickTime Options","flash_options":"Flash Options",hidden:"Hidden","align_bottom_left":"Bottom Left","align_bottom_right":"Bottom Right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide", "embedded_audio_options":"Embedded Audio Options"});
1
+ tinyMCE.addI18n('en.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert/Edit Embedded Media","align_top_left":"Top Left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed RTSP resources should be added to the QT Source field under the Advanced tab.\nYou should also add a non-streamed version to the Source field.",qtsrc:"QT Source",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch Style",scriptcallbacks:"Script Callbacks","align_top_right":"Top Right",uimode:"UI Mode",rate:"Rate",playcount:"Play Count",defaultframe:"Default Frame",currentposition:"Current Position",currentmarker:"Current Marker",captioningid:"Captioning ID",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless Video",stretchtofit:"Stretch to Fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Full Screen",enabled:"Enabled",autostart:"Auto Start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke Speed",href:"HREF",endtime:"End Time",starttime:"Start Time",enablejavascript:"Enable JavaScript",correction:"No Correction",targetcache:"Target Cache",playeveryframe:"Play Every Frame",kioskmode:"Kiosk Mode",controller:"Controller",menu:"Show Menu",loop:"Loop",play:"Auto Play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"ID",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain Proportions",controls:"Controls",numloop:"Num Loops",console:"Console",cache:"Cache",autohref:"Auto HREF",liveconnect:"SWLiveConnect",flashvars:"Flash Vars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No Java",maintainaspect:"Maintain Aspect",imagestatus:"Image Status",center:"Center",autogotourl:"Auto Goto URL","shockwave_options":"Shockwave Options","rmp_options":"Real Media Player Options","wmp_options":"Windows Media Player Options","qt_options":"QuickTime Options","flash_options":"Flash Options",hidden:"Hidden","align_bottom_left":"Bottom Left","align_bottom_right":"Bottom Right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide", "embedded_audio_options":"Embedded Audio Options", video:"HTML5 Video", audio:"HTML5 Audio", flash:"Flash", quicktime:"QuickTime", shockwave:"Shockwave", windowsmedia:"Windows Media", realmedia:"Real Media", iframe:"Iframe", embeddedaudio:"Embedded Audio" });
@@ -144,6 +144,8 @@ function setupFormData() {
144
144
  f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');
145
145
  f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');
146
146
  f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');
147
+ f.text_none.checked = inStr(ce.style.textDecoration, 'none');
148
+ updateTextDecorations();
147
149
 
148
150
  // Setup background fields
149
151
 
@@ -632,4 +634,17 @@ function synch(fr, to) {
632
634
  selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);
633
635
  }
634
636
 
637
+ function updateTextDecorations(){
638
+ var el = document.forms[0].elements;
639
+
640
+ var textDecorations = ["text_underline", "text_overline", "text_linethrough", "text_blink"];
641
+ var noneChecked = el["text_none"].checked;
642
+ tinymce.each(textDecorations, function(id) {
643
+ el[id].disabled = noneChecked;
644
+ if (noneChecked) {
645
+ el[id].checked = false;
646
+ }
647
+ });
648
+ }
649
+
635
650
  tinyMCEPopup.onInit.add(init);
@@ -118,7 +118,7 @@
118
118
  <td><label for="text_blink">{#style_dlg.text_blink}</label></td>
119
119
  </tr>
120
120
  <tr>
121
- <td><input id="text_none" name="text_none" class="checkbox" type="checkbox" /></td>
121
+ <td><input id="text_none" name="text_none" class="checkbox" type="checkbox" onclick="updateTextDecorations();"/></td>
122
122
  <td><label for="text_none">{#style_dlg.text_none}</label></td>
123
123
  </tr>
124
124
  </table>
@@ -1 +1 @@
1
- (function(d){var e=d.each;function c(g,h){var j=h.ownerDocument,f=j.createRange(),k;f.setStartBefore(h);f.setEnd(g.endContainer,g.endOffset);k=j.createElement("body");k.appendChild(f.cloneContents());return k.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(g,f){return parseInt(g.getAttribute(f)||1)}function b(H,G,K){var g,L,D,o;t();o=G.getParent(K.getStart(),"th,td");if(o){L=F(o);D=I();o=z(L.x,L.y)}function A(N,M){N=N.cloneNode(M);N.removeAttribute("id");return N}function t(){var M=0;g=[];e(["thead","tbody","tfoot"],function(N){var O=G.select("> "+N+" tr",H);e(O,function(P,Q){Q+=M;e(G.select("> td, > th",P),function(W,R){var S,T,U,V;if(g[Q]){while(g[Q][R]){R++}}U=a(W,"rowspan");V=a(W,"colspan");for(T=Q;T<Q+U;T++){if(!g[T]){g[T]=[]}for(S=R;S<R+V;S++){g[T][S]={part:N,real:T==Q&&S==R,elm:W,rowspan:U,colspan:V}}}})});M+=O.length})}function z(M,O){var N;N=g[O];if(N){return N[M]}}function s(O,M,N){if(O){N=parseInt(N);if(N===1){O.removeAttribute(M,1)}else{O.setAttribute(M,N,1)}}}function j(M){return M&&(G.hasClass(M.elm,"mceSelected")||M==o)}function k(){var M=[];e(H.rows,function(N){e(N.cells,function(O){if(G.hasClass(O,"mceSelected")||O==o.elm){M.push(N);return false}})});return M}function r(){var M=G.createRng();M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H)}function f(M){var N;d.walk(M,function(P){var O;if(P.nodeType==3){e(G.getParents(P.parentNode,null,M).reverse(),function(Q){Q=A(Q,false);if(!N){N=O=Q}else{if(O){O.appendChild(Q)}}O=Q});if(O){O.innerHTML=d.isIE?"&nbsp;":'<br data-mce-bogus="1" />'}return false}},"childNodes");M=A(M,false);s(M,"rowSpan",1);s(M,"colSpan",1);if(N){M.appendChild(N)}else{if(!d.isIE){M.innerHTML='<br data-mce-bogus="1" />'}}return M}function q(){var M=G.createRng();e(G.select("tr",H),function(N){if(N.cells.length==0){G.remove(N)}});if(G.select("tr",H).length==0){M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H);return}e(G.select("thead,tbody,tfoot",H),function(N){if(N.rows.length==0){G.remove(N)}});t();row=g[Math.min(g.length-1,L.y)];if(row){K.select(row[Math.min(row.length-1,L.x)].elm,true);K.collapse(true)}}function u(S,Q,U,R){var P,N,M,O,T;P=g[Q][S].elm.parentNode;for(M=1;M<=U;M++){P=G.getNext(P,"tr");if(P){for(N=S;N>=0;N--){T=g[Q+M][N].elm;if(T.parentNode==P){for(O=1;O<=R;O++){G.insertAfter(f(T),T)}break}}if(N==-1){for(O=1;O<=R;O++){P.insertBefore(f(P.cells[0]),P.cells[0])}}}}}function C(){e(g,function(M,N){e(M,function(P,O){var S,R,T,Q;if(j(P)){P=P.elm;S=a(P,"colspan");R=a(P,"rowspan");if(S>1||R>1){s(P,"rowSpan",1);s(P,"colSpan",1);for(Q=0;Q<S-1;Q++){G.insertAfter(f(P),P)}u(O,N,R-1,S)}}})})}function p(V,S,Y){var P,O,X,W,U,R,T,M,V,N,Q;if(V){pos=F(V);P=pos.x;O=pos.y;X=P+(S-1);W=O+(Y-1)}else{P=L.x;O=L.y;X=D.x;W=D.y}T=z(P,O);M=z(X,W);if(T&&M&&T.part==M.part){C();t();T=z(P,O).elm;s(T,"colSpan",(X-P)+1);s(T,"rowSpan",(W-O)+1);for(R=O;R<=W;R++){for(U=P;U<=X;U++){if(!g[R]||!g[R][U]){continue}V=g[R][U].elm;if(V!=T){N=d.grep(V.childNodes);e(N,function(Z){T.appendChild(Z)});if(N.length){N=d.grep(T.childNodes);Q=0;e(N,function(Z){if(Z.nodeName=="BR"&&G.getAttrib(Z,"data-mce-bogus")&&Q++<N.length-1){T.removeChild(Z)}})}G.remove(V)}}}q()}}function l(Q){var M,S,P,R,T,U,N,V,O;e(g,function(W,X){e(W,function(Z,Y){if(j(Z)){Z=Z.elm;T=Z.parentNode;U=A(T,false);M=X;if(Q){return false}}});if(Q){return !M}});for(R=0;R<g[0].length;R++){if(!g[M][R]){continue}S=g[M][R].elm;if(S!=P){if(!Q){O=a(S,"rowspan");if(O>1){s(S,"rowSpan",O+1);continue}}else{if(M>0&&g[M-1][R]){V=g[M-1][R].elm;O=a(V,"rowSpan");if(O>1){s(V,"rowSpan",O+1);continue}}}N=f(S);s(N,"colSpan",S.colSpan);U.appendChild(N);P=S}}if(U.hasChildNodes()){if(!Q){G.insertAfter(U,T)}else{T.parentNode.insertBefore(U,T)}}}function h(N){var O,M;e(g,function(P,Q){e(P,function(S,R){if(j(S)){O=R;if(N){return false}}});if(N){return !O}});e(g,function(S,T){var P,Q,R;if(!S[O]){return}P=S[O].elm;if(P!=M){R=a(P,"colspan");Q=a(P,"rowspan");if(R==1){if(!N){G.insertAfter(f(P),P);u(O,T,Q-1,R)}else{P.parentNode.insertBefore(f(P),P);u(O,T,Q-1,R)}}else{s(P,"colSpan",P.colSpan+1)}M=P}})}function n(){var M=[];e(g,function(N,O){e(N,function(Q,P){if(j(Q)&&d.inArray(M,P)===-1){e(g,function(T){var R=T[P].elm,S;S=a(R,"colSpan");if(S>1){s(R,"colSpan",S-1)}else{G.remove(R)}});M.push(P)}})});q()}function m(){var N;function M(Q){var P,R,O;P=G.getNext(Q,"tr");e(Q.cells,function(S){var T=a(S,"rowSpan");if(T>1){s(S,"rowSpan",T-1);R=F(S);u(R.x,R.y,1,1)}});R=F(Q.cells[0]);e(g[R.y],function(S){var T;S=S.elm;if(S!=O){T=a(S,"rowSpan");if(T<=1){G.remove(S)}else{s(S,"rowSpan",T-1)}O=S}})}N=k();e(N.reverse(),function(O){M(O)});q()}function E(){var M=k();G.remove(M);q();return M}function J(){var M=k();e(M,function(O,N){M[N]=A(O,true)});return M}function B(O,N){var P=k(),M=P[N?0:P.length-1],Q=M.cells.length;e(g,function(S){var R;Q=0;e(S,function(U,T){if(U.real){Q+=U.colspan}if(U.elm.parentNode==M){R=1}});if(R){return false}});if(!N){O.reverse()}e(O,function(T){var S=T.cells.length,R;for(i=0;i<S;i++){R=T.cells[i];s(R,"colSpan",1);s(R,"rowSpan",1)}for(i=S;i<Q;i++){T.appendChild(f(T.cells[S-1]))}for(i=Q;i<S;i++){G.remove(T.cells[i])}if(N){M.parentNode.insertBefore(T,M)}else{G.insertAfter(T,M)}})}function F(M){var N;e(g,function(O,P){e(O,function(R,Q){if(R.elm==M){N={x:Q,y:P};return false}});return !N});return N}function w(M){L=F(M)}function I(){var O,N,M;N=M=0;e(g,function(P,Q){e(P,function(S,R){var U,T;if(j(S)){S=g[Q][R];if(R>N){N=R}if(Q>M){M=Q}if(S.real){U=S.colspan-1;T=S.rowspan-1;if(U){if(R+U>N){N=R+U}}if(T){if(Q+T>M){M=Q+T}}}}})});return{x:N,y:M}}function v(S){var P,O,U,T,N,M,Q,R;D=F(S);if(L&&D){P=Math.min(L.x,D.x);O=Math.min(L.y,D.y);U=Math.max(L.x,D.x);T=Math.max(L.y,D.y);N=U;M=T;for(y=O;y<=M;y++){S=g[y][P];if(!S.real){if(P-(S.colspan-1)<P){P-=S.colspan-1}}}for(x=P;x<=N;x++){S=g[O][x];if(!S.real){if(O-(S.rowspan-1)<O){O-=S.rowspan-1}}}for(y=O;y<=T;y++){for(x=P;x<=U;x++){S=g[y][x];if(S.real){Q=S.colspan-1;R=S.rowspan-1;if(Q){if(x+Q>N){N=x+Q}}if(R){if(y+R>M){M=y+R}}}}}G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=O;y<=M;y++){for(x=P;x<=N;x++){if(g[y][x]){G.addClass(g[y][x].elm,"mceSelected")}}}}}d.extend(this,{deleteTable:r,split:C,merge:p,insertRow:l,insertCol:h,deleteCols:n,deleteRows:m,cutRows:E,copyRows:J,pasteRows:B,getPos:F,setStartCell:w,setEndCell:v})}d.create("tinymce.plugins.TablePlugin",{init:function(g,h){var f,m,j=true;function l(p){var o=g.selection,n=g.dom.getParent(p||o.getNode(),"table");if(n){return new b(n,g.dom,o)}}function k(){g.getBody().style.webkitUserSelect="";if(j){g.dom.removeClass(g.dom.select("td.mceSelected,th.mceSelected"),"mceSelected");j=false}}e([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(n){g.addButton(n[0],{title:n[1],cmd:n[2],ui:n[3]})});if(!d.isIE){g.onClick.add(function(n,o){o=o.target;if(o.nodeName==="TABLE"){n.selection.select(o);n.nodeChanged()}})}g.onPreProcess.add(function(o,p){var n,q,r,t=o.dom,s;n=t.select("table",p.node);q=n.length;while(q--){r=n[q];t.setAttrib(r,"data-mce-style","");if((s=t.getAttrib(r,"width"))){t.setStyle(r,"width",s);t.setAttrib(r,"width","")}if((s=t.getAttrib(r,"height"))){t.setStyle(r,"height",s);t.setAttrib(r,"height","")}}});g.onNodeChange.add(function(q,o,s){var r;s=q.selection.getStart();r=q.dom.getParent(s,"td,th,caption");o.setActive("table",s.nodeName==="TABLE"||!!r);if(r&&r.nodeName==="CAPTION"){r=0}o.setDisabled("delete_table",!r);o.setDisabled("delete_col",!r);o.setDisabled("delete_table",!r);o.setDisabled("delete_row",!r);o.setDisabled("col_after",!r);o.setDisabled("col_before",!r);o.setDisabled("row_after",!r);o.setDisabled("row_before",!r);o.setDisabled("row_props",!r);o.setDisabled("cell_props",!r);o.setDisabled("split_cells",!r);o.setDisabled("merge_cells",!r)});g.onInit.add(function(r){var p,t,q=r.dom,u;f=r.windowManager;r.onMouseDown.add(function(w,z){if(z.button!=2){k();t=q.getParent(z.target,"td,th");p=q.getParent(t,"table")}});q.bind(r.getDoc(),"mouseover",function(C){var A,z,B=C.target;if(t&&(u||B!=t)&&(B.nodeName=="TD"||B.nodeName=="TH")){z=q.getParent(B,"table");if(z==p){if(!u){u=l(z);u.setStartCell(t);r.getBody().style.webkitUserSelect="none"}u.setEndCell(B);j=true}A=r.selection.getSel();try{if(A.removeAllRanges){A.removeAllRanges()}else{A.empty()}}catch(w){}C.preventDefault()}});r.onMouseUp.add(function(F,G){var z,B=F.selection,H,I=B.getSel(),w,C,A,E;if(t){if(u){F.getBody().style.webkitUserSelect=""}function D(J,L){var K=new d.dom.TreeWalker(J,J);do{if(J.nodeType==3&&d.trim(J.nodeValue).length!=0){if(L){z.setStart(J,0)}else{z.setEnd(J,J.nodeValue.length)}return}if(J.nodeName=="BR"){if(L){z.setStartBefore(J)}else{z.setEndBefore(J)}return}}while(J=(L?K.next():K.prev()))}H=q.select("td.mceSelected,th.mceSelected");if(H.length>0){z=q.createRng();C=H[0];E=H[H.length-1];z.setStartBefore(C);z.setEndAfter(C);D(C,1);w=new d.dom.TreeWalker(C,q.getParent(H[0],"table"));do{if(C.nodeName=="TD"||C.nodeName=="TH"){if(!q.hasClass(C,"mceSelected")){break}A=C}}while(C=w.next());D(A);B.setRng(z)}F.nodeChanged();t=u=p=null}});r.onKeyUp.add(function(w,z){k()});r.onKeyDown.add(function(w,z){n(w)});r.onMouseDown.add(function(w,z){if(z.button!=2){n(w)}});function o(D,z,A,F){var B=3,G=D.dom.getParent(z.startContainer,"TABLE"),C,w,E;if(G){C=G.parentNode}w=z.startContainer.nodeType==B&&z.startOffset==0&&z.endOffset==0&&F&&(A.nodeName=="TR"||A==C);E=(A.nodeName=="TD"||A.nodeName=="TH")&&!F;return w||E}function n(A){if(!d.isWebKit){return}var z=A.selection.getRng();var C=A.selection.getNode();var B=A.dom.getParent(z.startContainer,"TD");if(!o(A,z,C,B)){return}if(!B){B=C}var w=B.lastChild;while(w.lastChild){w=w.lastChild}z.setEnd(w,w.nodeValue.length);A.selection.setRng(z)}r.plugins.table.fixTableCellSelection=n;if(r&&r.plugins.contextmenu){r.plugins.contextmenu.onContextMenu.add(function(A,w,C){var D,B=r.selection,z=B.getNode()||r.getBody();if(r.dom.getParent(C,"td")||r.dom.getParent(C,"th")||r.dom.select("td.mceSelected,th.mceSelected").length){w.removeAll();if(z.nodeName=="A"&&!r.dom.getAttrib(z,"name")){w.add({title:"advanced.link_desc",icon:"link",cmd:r.plugins.advlink?"mceAdvLink":"mceLink",ui:true});w.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});w.addSeparator()}if(z.nodeName=="IMG"&&z.className.indexOf("mceItem")==-1){w.add({title:"advanced.image_desc",icon:"image",cmd:r.plugins.advimage?"mceAdvImage":"mceImage",ui:true});w.addSeparator()}w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});w.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});w.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});w.addSeparator();D=w.addMenu({title:"table.cell"});D.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});D.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});D.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});D=w.addMenu({title:"table.row"});D.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});D.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});D.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});D.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});D.addSeparator();D.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});D.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});D.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!m);D.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!m);D=w.addMenu({title:"table.col"});D.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});D.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});D.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(d.isWebKit){function v(B,M){function F(Q){B.selection.setCursorLocation(Q,0)}function H(R,Q){return R.keyCode==z?Q.previousSibling:Q.nextSibling}function G(R,S){var Q=H(R,S);return Q!==null&&Q.tagName==="TR"?Q:null}function C(Q,R){return Q.dom.getParent(R,"table")}function O(Q){var R=C(B,Q);return H(M,R)}function A(Q){return Q.keyCode==z||Q.keyCode==I}function D(Q){var S=Q.selection.getNode();var R=Q.dom.getParent(S,"tr");return R!==null}function N(R){var Q=0;var S=R;while(S.previousSibling){S=S.previousSibling;Q=Q+a(S,"colspan")}return Q}function E(S,Q){var T=0;var R=0;e(S.children,function(U,V){T=T+a(U,"colspan");R=V;if(T>Q){return false}});return R}function w(S,T,V){var U=N(S.dom.getParent(T,"td,th"));var R=E(V,U);var Q=V.childNodes[R];F(Q)}function L(R,T){var Q=O(R);if(Q!==null){F(Q);return d.dom.Event.cancel(T)}else{var S=T.keyCode==z?R.firstChild:R.lastChild;F(S);return true}}var z=38;var I=40;if(A(M)&&D(B)){var J=B.selection.getNode();var P=B.dom.getParent(J,"tr");var K=G(M,P);if(K==null){return L(P,M)}else{w(B,J,K);d.dom.Event.cancel(M);return true}}}r.onKeyDown.add(v)}if(!d.isIE){function s(){var w;for(w=r.getBody().lastChild;w&&w.nodeType==3&&!w.nodeValue.length;w=w.previousSibling){}if(w&&w.nodeName=="TABLE"){r.dom.add(r.getBody(),"p",null,'<br mce_bogus="1" />')}}if(d.isGecko){r.onKeyDown.add(function(z,B){var w,A,C=z.dom;if(B.keyCode==37||B.keyCode==38){w=z.selection.getRng();A=C.getParent(w.startContainer,"table");if(A&&z.getBody().firstChild==A){if(c(w,A)){w=C.createRng();w.setStartBefore(A);w.setEndBefore(A);z.selection.setRng(w);B.preventDefault()}}}})}r.onKeyUp.add(s);r.onSetContent.add(s);r.onVisualAid.add(s);r.onPreProcess.add(function(w,A){var z=A.node.lastChild;if(z&&z.childNodes.length==1&&z.firstChild.nodeName=="BR"){w.dom.remove(z)}});s();r.startContent=r.getContent({format:"raw"})}});e({mceTableSplitCells:function(n){n.split()},mceTableMergeCells:function(o){var p,q,n;n=g.dom.getParent(g.selection.getNode(),"th,td");if(n){p=n.rowSpan;q=n.colSpan}if(!g.dom.select("td.mceSelected,th.mceSelected").length){f.open({url:h+"/merge_cells.htm",width:240+parseInt(g.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(g.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:p,cols:q,onaction:function(r){o.merge(n,r.cols,r.rows)},plugin_url:h})}else{o.merge()}},mceTableInsertRowBefore:function(n){n.insertRow(true)},mceTableInsertRowAfter:function(n){n.insertRow()},mceTableInsertColBefore:function(n){n.insertCol(true)},mceTableInsertColAfter:function(n){n.insertCol()},mceTableDeleteCol:function(n){n.deleteCols()},mceTableDeleteRow:function(n){n.deleteRows()},mceTableCutRow:function(n){m=n.cutRows()},mceTableCopyRow:function(n){m=n.copyRows()},mceTablePasteRowBefore:function(n){n.pasteRows(m,true)},mceTablePasteRowAfter:function(n){n.pasteRows(m)},mceTableDelete:function(n){n.deleteTable()}},function(o,n){g.addCommand(n,function(){var p=l();if(p){o(p);g.execCommand("mceRepaint");k()}})});e({mceInsertTable:function(n){f.open({url:h+"/table.htm",width:400+parseInt(g.getLang("table.table_delta_width",0)),height:320+parseInt(g.getLang("table.table_delta_height",0)),inline:1},{plugin_url:h,action:n?n.action:0})},mceTableRowProps:function(){f.open({url:h+"/row.htm",width:400+parseInt(g.getLang("table.rowprops_delta_width",0)),height:295+parseInt(g.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:h})},mceTableCellProps:function(){f.open({url:h+"/cell.htm",width:400+parseInt(g.getLang("table.cellprops_delta_width",0)),height:295+parseInt(g.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:h})}},function(o,n){g.addCommand(n,function(p,q){o(q)})})}});d.PluginManager.add("table",d.plugins.TablePlugin)})(tinymce);
1
+ (function(d){var e=d.each;function c(g,h){var j=h.ownerDocument,f=j.createRange(),k;f.setStartBefore(h);f.setEnd(g.endContainer,g.endOffset);k=j.createElement("body");k.appendChild(f.cloneContents());return k.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(g,f){return parseInt(g.getAttribute(f)||1)}function b(H,G,K){var g,L,D,o;t();o=G.getParent(K.getStart(),"th,td");if(o){L=F(o);D=I();o=z(L.x,L.y)}function A(N,M){N=N.cloneNode(M);N.removeAttribute("id");return N}function t(){var M=0;g=[];e(["thead","tbody","tfoot"],function(N){var O=G.select("> "+N+" tr",H);e(O,function(P,Q){Q+=M;e(G.select("> td, > th",P),function(W,R){var S,T,U,V;if(g[Q]){while(g[Q][R]){R++}}U=a(W,"rowspan");V=a(W,"colspan");for(T=Q;T<Q+U;T++){if(!g[T]){g[T]=[]}for(S=R;S<R+V;S++){g[T][S]={part:N,real:T==Q&&S==R,elm:W,rowspan:U,colspan:V}}}})});M+=O.length})}function z(M,O){var N;N=g[O];if(N){return N[M]}}function s(O,M,N){if(O){N=parseInt(N);if(N===1){O.removeAttribute(M,1)}else{O.setAttribute(M,N,1)}}}function j(M){return M&&(G.hasClass(M.elm,"mceSelected")||M==o)}function k(){var M=[];e(H.rows,function(N){e(N.cells,function(O){if(G.hasClass(O,"mceSelected")||O==o.elm){M.push(N);return false}})});return M}function r(){var M=G.createRng();M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H)}function f(M){var N;d.walk(M,function(P){var O;if(P.nodeType==3){e(G.getParents(P.parentNode,null,M).reverse(),function(Q){Q=A(Q,false);if(!N){N=O=Q}else{if(O){O.appendChild(Q)}}O=Q});if(O){O.innerHTML=d.isIE?"&nbsp;":'<br data-mce-bogus="1" />'}return false}},"childNodes");M=A(M,false);s(M,"rowSpan",1);s(M,"colSpan",1);if(N){M.appendChild(N)}else{if(!d.isIE){M.innerHTML='<br data-mce-bogus="1" />'}}return M}function q(){var M=G.createRng();e(G.select("tr",H),function(N){if(N.cells.length==0){G.remove(N)}});if(G.select("tr",H).length==0){M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H);return}e(G.select("thead,tbody,tfoot",H),function(N){if(N.rows.length==0){G.remove(N)}});t();row=g[Math.min(g.length-1,L.y)];if(row){K.select(row[Math.min(row.length-1,L.x)].elm,true);K.collapse(true)}}function u(S,Q,U,R){var P,N,M,O,T;P=g[Q][S].elm.parentNode;for(M=1;M<=U;M++){P=G.getNext(P,"tr");if(P){for(N=S;N>=0;N--){T=g[Q+M][N].elm;if(T.parentNode==P){for(O=1;O<=R;O++){G.insertAfter(f(T),T)}break}}if(N==-1){for(O=1;O<=R;O++){P.insertBefore(f(P.cells[0]),P.cells[0])}}}}}function C(){e(g,function(M,N){e(M,function(P,O){var S,R,T,Q;if(j(P)){P=P.elm;S=a(P,"colspan");R=a(P,"rowspan");if(S>1||R>1){s(P,"rowSpan",1);s(P,"colSpan",1);for(Q=0;Q<S-1;Q++){G.insertAfter(f(P),P)}u(O,N,R-1,S)}}})})}function p(V,S,Y){var P,O,X,W,U,R,T,M,V,N,Q;if(V){pos=F(V);P=pos.x;O=pos.y;X=P+(S-1);W=O+(Y-1)}else{P=L.x;O=L.y;X=D.x;W=D.y}T=z(P,O);M=z(X,W);if(T&&M&&T.part==M.part){C();t();T=z(P,O).elm;s(T,"colSpan",(X-P)+1);s(T,"rowSpan",(W-O)+1);for(R=O;R<=W;R++){for(U=P;U<=X;U++){if(!g[R]||!g[R][U]){continue}V=g[R][U].elm;if(V!=T){N=d.grep(V.childNodes);e(N,function(Z){T.appendChild(Z)});if(N.length){N=d.grep(T.childNodes);Q=0;e(N,function(Z){if(Z.nodeName=="BR"&&G.getAttrib(Z,"data-mce-bogus")&&Q++<N.length-1){T.removeChild(Z)}})}G.remove(V)}}}q()}}function l(Q){var M,S,P,R,T,U,N,V,O;e(g,function(W,X){e(W,function(Z,Y){if(j(Z)){Z=Z.elm;T=Z.parentNode;U=A(T,false);M=X;if(Q){return false}}});if(Q){return !M}});for(R=0;R<g[0].length;R++){if(!g[M][R]){continue}S=g[M][R].elm;if(S!=P){if(!Q){O=a(S,"rowspan");if(O>1){s(S,"rowSpan",O+1);continue}}else{if(M>0&&g[M-1][R]){V=g[M-1][R].elm;O=a(V,"rowSpan");if(O>1){s(V,"rowSpan",O+1);continue}}}N=f(S);s(N,"colSpan",S.colSpan);U.appendChild(N);P=S}}if(U.hasChildNodes()){if(!Q){G.insertAfter(U,T)}else{T.parentNode.insertBefore(U,T)}}}function h(N){var O,M;e(g,function(P,Q){e(P,function(S,R){if(j(S)){O=R;if(N){return false}}});if(N){return !O}});e(g,function(S,T){var P,Q,R;if(!S[O]){return}P=S[O].elm;if(P!=M){R=a(P,"colspan");Q=a(P,"rowspan");if(R==1){if(!N){G.insertAfter(f(P),P);u(O,T,Q-1,R)}else{P.parentNode.insertBefore(f(P),P);u(O,T,Q-1,R)}}else{s(P,"colSpan",P.colSpan+1)}M=P}})}function n(){var M=[];e(g,function(N,O){e(N,function(Q,P){if(j(Q)&&d.inArray(M,P)===-1){e(g,function(T){var R=T[P].elm,S;S=a(R,"colSpan");if(S>1){s(R,"colSpan",S-1)}else{G.remove(R)}});M.push(P)}})});q()}function m(){var N;function M(Q){var P,R,O;P=G.getNext(Q,"tr");e(Q.cells,function(S){var T=a(S,"rowSpan");if(T>1){s(S,"rowSpan",T-1);R=F(S);u(R.x,R.y,1,1)}});R=F(Q.cells[0]);e(g[R.y],function(S){var T;S=S.elm;if(S!=O){T=a(S,"rowSpan");if(T<=1){G.remove(S)}else{s(S,"rowSpan",T-1)}O=S}})}N=k();e(N.reverse(),function(O){M(O)});q()}function E(){var M=k();G.remove(M);q();return M}function J(){var M=k();e(M,function(O,N){M[N]=A(O,true)});return M}function B(O,N){var P=k(),M=P[N?0:P.length-1],Q=M.cells.length;e(g,function(S){var R;Q=0;e(S,function(U,T){if(U.real){Q+=U.colspan}if(U.elm.parentNode==M){R=1}});if(R){return false}});if(!N){O.reverse()}e(O,function(T){var S=T.cells.length,R;for(i=0;i<S;i++){R=T.cells[i];s(R,"colSpan",1);s(R,"rowSpan",1)}for(i=S;i<Q;i++){T.appendChild(f(T.cells[S-1]))}for(i=Q;i<S;i++){G.remove(T.cells[i])}if(N){M.parentNode.insertBefore(T,M)}else{G.insertAfter(T,M)}})}function F(M){var N;e(g,function(O,P){e(O,function(R,Q){if(R.elm==M){N={x:Q,y:P};return false}});return !N});return N}function w(M){L=F(M)}function I(){var O,N,M;N=M=0;e(g,function(P,Q){e(P,function(S,R){var U,T;if(j(S)){S=g[Q][R];if(R>N){N=R}if(Q>M){M=Q}if(S.real){U=S.colspan-1;T=S.rowspan-1;if(U){if(R+U>N){N=R+U}}if(T){if(Q+T>M){M=Q+T}}}}})});return{x:N,y:M}}function v(S){var P,O,U,T,N,M,Q,R;D=F(S);if(L&&D){P=Math.min(L.x,D.x);O=Math.min(L.y,D.y);U=Math.max(L.x,D.x);T=Math.max(L.y,D.y);N=U;M=T;for(y=O;y<=M;y++){S=g[y][P];if(!S.real){if(P-(S.colspan-1)<P){P-=S.colspan-1}}}for(x=P;x<=N;x++){S=g[O][x];if(!S.real){if(O-(S.rowspan-1)<O){O-=S.rowspan-1}}}for(y=O;y<=T;y++){for(x=P;x<=U;x++){S=g[y][x];if(S.real){Q=S.colspan-1;R=S.rowspan-1;if(Q){if(x+Q>N){N=x+Q}}if(R){if(y+R>M){M=y+R}}}}}G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=O;y<=M;y++){for(x=P;x<=N;x++){if(g[y][x]){G.addClass(g[y][x].elm,"mceSelected")}}}}}d.extend(this,{deleteTable:r,split:C,merge:p,insertRow:l,insertCol:h,deleteCols:n,deleteRows:m,cutRows:E,copyRows:J,pasteRows:B,getPos:F,setStartCell:w,setEndCell:v})}d.create("tinymce.plugins.TablePlugin",{init:function(g,h){var f,m,j=true;function l(p){var o=g.selection,n=g.dom.getParent(p||o.getNode(),"table");if(n){return new b(n,g.dom,o)}}function k(){g.getBody().style.webkitUserSelect="";if(j){g.dom.removeClass(g.dom.select("td.mceSelected,th.mceSelected"),"mceSelected");j=false}}e([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(n){g.addButton(n[0],{title:n[1],cmd:n[2],ui:n[3]})});if(!d.isIE){g.onClick.add(function(n,o){o=o.target;if(o.nodeName==="TABLE"){n.selection.select(o);n.nodeChanged()}})}g.onPreProcess.add(function(o,p){var n,q,r,t=o.dom,s;n=t.select("table",p.node);q=n.length;while(q--){r=n[q];t.setAttrib(r,"data-mce-style","");if((s=t.getAttrib(r,"width"))){t.setStyle(r,"width",s);t.setAttrib(r,"width","")}if((s=t.getAttrib(r,"height"))){t.setStyle(r,"height",s);t.setAttrib(r,"height","")}}});g.onNodeChange.add(function(q,o,s){var r;s=q.selection.getStart();r=q.dom.getParent(s,"td,th,caption");o.setActive("table",s.nodeName==="TABLE"||!!r);if(r&&r.nodeName==="CAPTION"){r=0}o.setDisabled("delete_table",!r);o.setDisabled("delete_col",!r);o.setDisabled("delete_table",!r);o.setDisabled("delete_row",!r);o.setDisabled("col_after",!r);o.setDisabled("col_before",!r);o.setDisabled("row_after",!r);o.setDisabled("row_before",!r);o.setDisabled("row_props",!r);o.setDisabled("cell_props",!r);o.setDisabled("split_cells",!r);o.setDisabled("merge_cells",!r)});g.onInit.add(function(r){var p,t,q=r.dom,u;f=r.windowManager;r.onMouseDown.add(function(w,z){if(z.button!=2){k();t=q.getParent(z.target,"td,th");p=q.getParent(t,"table")}});q.bind(r.getDoc(),"mouseover",function(C){var A,z,B=C.target;if(t&&(u||B!=t)&&(B.nodeName=="TD"||B.nodeName=="TH")){z=q.getParent(B,"table");if(z==p){if(!u){u=l(z);u.setStartCell(t);r.getBody().style.webkitUserSelect="none"}u.setEndCell(B);j=true}A=r.selection.getSel();try{if(A.removeAllRanges){A.removeAllRanges()}else{A.empty()}}catch(w){}C.preventDefault()}});r.onMouseUp.add(function(F,G){var z,B=F.selection,H,I=B.getSel(),w,C,A,E;if(t){if(u){F.getBody().style.webkitUserSelect=""}function D(J,L){var K=new d.dom.TreeWalker(J,J);do{if(J.nodeType==3&&d.trim(J.nodeValue).length!=0){if(L){z.setStart(J,0)}else{z.setEnd(J,J.nodeValue.length)}return}if(J.nodeName=="BR"){if(L){z.setStartBefore(J)}else{z.setEndBefore(J)}return}}while(J=(L?K.next():K.prev()))}H=q.select("td.mceSelected,th.mceSelected");if(H.length>0){z=q.createRng();C=H[0];E=H[H.length-1];z.setStartBefore(C);z.setEndAfter(C);D(C,1);w=new d.dom.TreeWalker(C,q.getParent(H[0],"table"));do{if(C.nodeName=="TD"||C.nodeName=="TH"){if(!q.hasClass(C,"mceSelected")){break}A=C}}while(C=w.next());D(A);B.setRng(z)}F.nodeChanged();t=u=p=null}});r.onKeyUp.add(function(w,z){k()});r.onKeyDown.add(function(w,z){n(w)});r.onMouseDown.add(function(w,z){if(z.button!=2){n(w)}});function o(D,z,A,F){var B=3,G=D.dom.getParent(z.startContainer,"TABLE"),C,w,E;if(G){C=G.parentNode}w=z.startContainer.nodeType==B&&z.startOffset==0&&z.endOffset==0&&F&&(A.nodeName=="TR"||A==C);E=(A.nodeName=="TD"||A.nodeName=="TH")&&!F;return w||E}function n(A){if(!d.isWebKit){return}var z=A.selection.getRng();var C=A.selection.getNode();var B=A.dom.getParent(z.startContainer,"TD,TH");if(!o(A,z,C,B)){return}if(!B){B=C}var w=B.lastChild;while(w.lastChild){w=w.lastChild}z.setEnd(w,w.nodeValue.length);A.selection.setRng(z)}r.plugins.table.fixTableCellSelection=n;if(r&&r.plugins.contextmenu){r.plugins.contextmenu.onContextMenu.add(function(A,w,C){var D,B=r.selection,z=B.getNode()||r.getBody();if(r.dom.getParent(C,"td")||r.dom.getParent(C,"th")||r.dom.select("td.mceSelected,th.mceSelected").length){w.removeAll();if(z.nodeName=="A"&&!r.dom.getAttrib(z,"name")){w.add({title:"advanced.link_desc",icon:"link",cmd:r.plugins.advlink?"mceAdvLink":"mceLink",ui:true});w.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});w.addSeparator()}if(z.nodeName=="IMG"&&z.className.indexOf("mceItem")==-1){w.add({title:"advanced.image_desc",icon:"image",cmd:r.plugins.advimage?"mceAdvImage":"mceImage",ui:true});w.addSeparator()}w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});w.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});w.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});w.addSeparator();D=w.addMenu({title:"table.cell"});D.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});D.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});D.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});D=w.addMenu({title:"table.row"});D.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});D.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});D.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});D.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});D.addSeparator();D.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});D.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});D.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!m);D.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!m);D=w.addMenu({title:"table.col"});D.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});D.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});D.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(d.isWebKit){function v(C,N){var L=d.VK;var Q=N.keyCode;function O(Y,U,S){var T=Y?"previousSibling":"nextSibling";var Z=C.dom.getParent(U,"tr");var X=Z[T];if(X){z(C,U,X,Y);d.dom.Event.cancel(S);return true}else{var aa=C.dom.getParent(Z,"table");var W=Z.parentNode;var R=W.nodeName.toLowerCase();if(R==="tbody"||R===(Y?"tfoot":"thead")){var V=w(Y,aa,W,"tbody");if(V!==null){return K(Y,V,U,S)}}return M(Y,Z,T,aa,S)}}function w(V,T,U,X){var S=C.dom.select(">"+X,T);var R=S.indexOf(U);if(V&&R===0||!V&&R===S.length-1){return B(V,T)}else{if(R===-1){var W=U.tagName.toLowerCase()==="thead"?0:S.length-1;return S[W]}else{return S[R+(V?-1:1)]}}}function B(U,T){var S=U?"thead":"tfoot";var R=C.dom.select(">"+S,T);return R.length!==0?R[0]:null}function K(V,T,S,U){var R=J(T,V);R&&z(C,S,R,V);d.dom.Event.cancel(U);return true}function M(Y,U,R,X,W){var S=X[R];if(S){F(S);return true}else{var V=C.dom.getParent(X,"td,th");if(V){return O(Y,V,W)}else{var T=J(U,!Y);F(T);return d.dom.Event.cancel(W)}}}function J(S,R){return S&&S[R?"lastChild":"firstChild"]}function F(R){C.selection.setCursorLocation(R,0)}function A(){return Q==L.UP||Q==L.DOWN}function D(R){var T=R.selection.getNode();var S=R.dom.getParent(T,"tr");return S!==null}function P(S){var R=0;var T=S;while(T.previousSibling){T=T.previousSibling;R=R+a(T,"colspan")}return R}function E(T,R){var U=0;var S=0;e(T.children,function(V,W){U=U+a(V,"colspan");S=W;if(U>R){return false}});return S}function z(T,W,Y,V){var X=P(T.dom.getParent(W,"td,th"));var S=E(Y,X);var R=Y.childNodes[S];var U=J(R,V);F(U||R)}function H(R){var T=C.selection.getNode();var U=C.dom.getParent(T,"td,th");var S=C.dom.getParent(R,"td,th");return U&&U!==S&&I(U,S)}function I(S,R){return C.dom.getParent(S,"TABLE")===C.dom.getParent(R,"TABLE")}if(A()&&D(C)){var G=C.selection.getNode();setTimeout(function(){if(H(G)){O(!N.shiftKey&&Q===L.UP,G,N)}},0)}}r.onKeyDown.add(v)}if(!d.isIE){function s(){var w;for(w=r.getBody().lastChild;w&&w.nodeType==3&&!w.nodeValue.length;w=w.previousSibling){}if(w&&w.nodeName=="TABLE"){r.dom.add(r.getBody(),"p",null,'<br mce_bogus="1" />')}}if(d.isGecko){r.onKeyDown.add(function(z,B){var w,A,C=z.dom;if(B.keyCode==37||B.keyCode==38){w=z.selection.getRng();A=C.getParent(w.startContainer,"table");if(A&&z.getBody().firstChild==A){if(c(w,A)){w=C.createRng();w.setStartBefore(A);w.setEndBefore(A);z.selection.setRng(w);B.preventDefault()}}}})}r.onKeyUp.add(s);r.onSetContent.add(s);r.onVisualAid.add(s);r.onPreProcess.add(function(w,A){var z=A.node.lastChild;if(z&&z.childNodes.length==1&&z.firstChild.nodeName=="BR"){w.dom.remove(z)}});if(d.isGecko){r.onKeyDown.add(function(z,B){if(B.keyCode===d.VK.ENTER&&B.shiftKey){var A=z.selection.getRng().startContainer;var C=q.getParent(A,"td,th");if(C){var w=z.getDoc().createTextNode("\uFEFF");q.insertAfter(w,A)}}})}s();r.startContent=r.getContent({format:"raw"})}});e({mceTableSplitCells:function(n){n.split()},mceTableMergeCells:function(o){var p,q,n;n=g.dom.getParent(g.selection.getNode(),"th,td");if(n){p=n.rowSpan;q=n.colSpan}if(!g.dom.select("td.mceSelected,th.mceSelected").length){f.open({url:h+"/merge_cells.htm",width:240+parseInt(g.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(g.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:p,cols:q,onaction:function(r){o.merge(n,r.cols,r.rows)},plugin_url:h})}else{o.merge()}},mceTableInsertRowBefore:function(n){n.insertRow(true)},mceTableInsertRowAfter:function(n){n.insertRow()},mceTableInsertColBefore:function(n){n.insertCol(true)},mceTableInsertColAfter:function(n){n.insertCol()},mceTableDeleteCol:function(n){n.deleteCols()},mceTableDeleteRow:function(n){n.deleteRows()},mceTableCutRow:function(n){m=n.cutRows()},mceTableCopyRow:function(n){m=n.copyRows()},mceTablePasteRowBefore:function(n){n.pasteRows(m,true)},mceTablePasteRowAfter:function(n){n.pasteRows(m)},mceTableDelete:function(n){n.deleteTable()}},function(o,n){g.addCommand(n,function(){var p=l();if(p){o(p);g.execCommand("mceRepaint");k()}})});e({mceInsertTable:function(n){f.open({url:h+"/table.htm",width:400+parseInt(g.getLang("table.table_delta_width",0)),height:320+parseInt(g.getLang("table.table_delta_height",0)),inline:1},{plugin_url:h,action:n?n.action:0})},mceTableRowProps:function(){f.open({url:h+"/row.htm",width:400+parseInt(g.getLang("table.rowprops_delta_width",0)),height:295+parseInt(g.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:h})},mceTableCellProps:function(){f.open({url:h+"/cell.htm",width:400+parseInt(g.getLang("table.cellprops_delta_width",0)),height:295+parseInt(g.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:h})}},function(o,n){g.addCommand(n,function(p,q){o(q)})})}});d.PluginManager.add("table",d.plugins.TablePlugin)})(tinymce);
@@ -988,7 +988,7 @@
988
988
  rng.endOffset == 0 &&
989
989
  currentCell &&
990
990
  (n.nodeName=="TR" || n==tableParent);
991
- tableCellSelection = (n.nodeName=="TD"||n.nodeName=="TH")&& !currentCell;
991
+ tableCellSelection = (n.nodeName=="TD"||n.nodeName=="TH")&& !currentCell;
992
992
  return allOfCellSelected || tableCellSelection;
993
993
  // return false;
994
994
  }
@@ -1000,7 +1000,7 @@
1000
1000
 
1001
1001
  var rng = ed.selection.getRng();
1002
1002
  var n = ed.selection.getNode();
1003
- var currentCell = ed.dom.getParent(rng.startContainer, 'TD');
1003
+ var currentCell = ed.dom.getParent(rng.startContainer, 'TD,TH');
1004
1004
 
1005
1005
  if (!tableCellSelected(ed, rng, n, currentCell))
1006
1006
  return;
@@ -1012,7 +1012,7 @@
1012
1012
  var end = currentCell.lastChild;
1013
1013
  while (end.lastChild)
1014
1014
  end = end.lastChild;
1015
-
1015
+
1016
1016
  // Select the entire table cell. Nothing outside of the table cell should be selected.
1017
1017
  rng.setEnd(end, end.nodeValue.length);
1018
1018
  ed.selection.setRng(rng);
@@ -1074,31 +1074,85 @@
1074
1074
  // Fix to allow navigating up and down in a table in WebKit browsers.
1075
1075
  if (tinymce.isWebKit) {
1076
1076
  function moveSelection(ed, e) {
1077
+ var VK = tinymce.VK;
1078
+ var key = e.keyCode;
1077
1079
 
1078
- function moveCursorToStartOfElement(n) {
1079
- ed.selection.setCursorLocation(n, 0);
1080
+ function handle(upBool, sourceNode, event) {
1081
+ var siblingDirection = upBool ? 'previousSibling' : 'nextSibling';
1082
+ var currentRow = ed.dom.getParent(sourceNode, 'tr');
1083
+ var siblingRow = currentRow[siblingDirection];
1084
+
1085
+ if (siblingRow) {
1086
+ moveCursorToRow(ed, sourceNode, siblingRow, upBool);
1087
+ tinymce.dom.Event.cancel(event);
1088
+ return true;
1089
+ } else {
1090
+ var tableNode = ed.dom.getParent(currentRow, 'table');
1091
+ var middleNode = currentRow.parentNode;
1092
+ var parentNodeName = middleNode.nodeName.toLowerCase();
1093
+ if (parentNodeName === 'tbody' || parentNodeName === (upBool ? 'tfoot' : 'thead')) {
1094
+ var targetParent = getTargetParent(upBool, tableNode, middleNode, 'tbody');
1095
+ if (targetParent !== null) {
1096
+ return moveToRowInTarget(upBool, targetParent, sourceNode, event);
1097
+ }
1098
+ }
1099
+ return escapeTable(upBool, currentRow, siblingDirection, tableNode, event);
1100
+ }
1080
1101
  }
1081
1102
 
1082
- function getSibling(event, element) {
1083
- return event.keyCode == UP_ARROW ? element.previousSibling : element.nextSibling;
1103
+ function getTargetParent(upBool, topNode, secondNode, nodeName) {
1104
+ var tbodies = ed.dom.select('>' + nodeName, topNode);
1105
+ var position = tbodies.indexOf(secondNode);
1106
+ if (upBool && position === 0 || !upBool && position === tbodies.length - 1) {
1107
+ return getFirstHeadOrFoot(upBool, topNode);
1108
+ } else if (position === -1) {
1109
+ var topOrBottom = secondNode.tagName.toLowerCase() === 'thead' ? 0 : tbodies.length - 1;
1110
+ return tbodies[topOrBottom];
1111
+ } else {
1112
+ return tbodies[position + (upBool ? -1 : 1)];
1113
+ }
1084
1114
  }
1085
1115
 
1086
- function getNextRow(e, row) {
1087
- var sibling = getSibling(e, row);
1088
- return sibling !== null && sibling.tagName === 'TR' ? sibling : null;
1116
+ function getFirstHeadOrFoot(upBool, parent) {
1117
+ var tagName = upBool ? 'thead' : 'tfoot';
1118
+ var headOrFoot = ed.dom.select('>' + tagName, parent);
1119
+ return headOrFoot.length !== 0 ? headOrFoot[0] : null;
1089
1120
  }
1090
1121
 
1091
- function getTable(ed, currentRow) {
1092
- return ed.dom.getParent(currentRow, 'table');
1122
+ function moveToRowInTarget(upBool, targetParent, sourceNode, event) {
1123
+ var targetRow = getChildForDirection(targetParent, upBool);
1124
+ targetRow && moveCursorToRow(ed, sourceNode, targetRow, upBool);
1125
+ tinymce.dom.Event.cancel(event);
1126
+ return true;
1093
1127
  }
1094
1128
 
1095
- function getTableSibling(currentRow) {
1096
- var table = getTable(ed, currentRow);
1097
- return getSibling(e, table);
1129
+ function escapeTable(upBool, currentRow, siblingDirection, table, event) {
1130
+ var tableSibling = table[siblingDirection];
1131
+ if (tableSibling) {
1132
+ moveCursorToStartOfElement(tableSibling);
1133
+ return true;
1134
+ } else {
1135
+ var parentCell = ed.dom.getParent(table, 'td,th');
1136
+ if (parentCell) {
1137
+ return handle(upBool, parentCell, event);
1138
+ } else {
1139
+ var backUpSibling = getChildForDirection(currentRow, !upBool);
1140
+ moveCursorToStartOfElement(backUpSibling);
1141
+ return tinymce.dom.Event.cancel(event);
1142
+ }
1143
+ }
1144
+ }
1145
+
1146
+ function getChildForDirection(parent, up) {
1147
+ return parent && parent[up ? 'lastChild' : 'firstChild'];
1148
+ }
1149
+
1150
+ function moveCursorToStartOfElement(n) {
1151
+ ed.selection.setCursorLocation(n, 0);
1098
1152
  }
1099
1153
 
1100
- function isVerticalMovement(event) {
1101
- return event.keyCode == UP_ARROW || event.keyCode == DOWN_ARROW;
1154
+ function isVerticalMovement() {
1155
+ return key == VK.UP || key == VK.DOWN;
1102
1156
  }
1103
1157
 
1104
1158
  function isInTable(ed) {
@@ -1129,42 +1183,32 @@
1129
1183
  return r;
1130
1184
  }
1131
1185
 
1132
- function moveCursorToRow(ed, node, row) {
1186
+ function moveCursorToRow(ed, node, row, upBool) {
1133
1187
  var srcColumnIndex = columnIndex(ed.dom.getParent(node, 'td,th'));
1134
- var tgtColumnIndex = findColumn(row, srcColumnIndex)
1188
+ var tgtColumnIndex = findColumn(row, srcColumnIndex);
1135
1189
  var tgtNode = row.childNodes[tgtColumnIndex];
1136
- moveCursorToStartOfElement(tgtNode);
1190
+ var rowCellTarget = getChildForDirection(tgtNode, upBool);
1191
+ moveCursorToStartOfElement(rowCellTarget || tgtNode);
1137
1192
  }
1138
1193
 
1139
- function escapeTable(currentRow, e) {
1140
- var tableSiblingElement = getTableSibling(currentRow);
1141
- if (tableSiblingElement !== null) {
1142
- moveCursorToStartOfElement(tableSiblingElement);
1143
- return tinymce.dom.Event.cancel(e);
1144
- } else {
1145
- var element = e.keyCode == UP_ARROW ? currentRow.firstChild : currentRow.lastChild;
1146
- // rely on default behaviour to escape table after we are in the last cell of the last row
1147
- moveCursorToStartOfElement(element);
1148
- return true;
1149
- }
1194
+ function shouldFixCaret(preBrowserNode) {
1195
+ var newNode = ed.selection.getNode();
1196
+ var newParent = ed.dom.getParent(newNode, 'td,th');
1197
+ var oldParent = ed.dom.getParent(preBrowserNode, 'td,th');
1198
+ return newParent && newParent !== oldParent && checkSameParentTable(newParent, oldParent)
1150
1199
  }
1151
1200
 
1152
- var UP_ARROW = 38;
1153
- var DOWN_ARROW = 40;
1154
-
1155
- if (isVerticalMovement(e) && isInTable(ed)) {
1156
- var node = ed.selection.getNode();
1157
- var currentRow = ed.dom.getParent(node, 'tr');
1158
- var nextRow = getNextRow(e, currentRow);
1201
+ function checkSameParentTable(nodeOne, NodeTwo) {
1202
+ return ed.dom.getParent(nodeOne, 'TABLE') === ed.dom.getParent(NodeTwo, 'TABLE');
1203
+ }
1159
1204
 
1160
- // If we're at the first or last row in the table, we should move the caret outside of the table
1161
- if (nextRow == null) {
1162
- return escapeTable(currentRow, e);
1163
- } else {
1164
- moveCursorToRow(ed, node, nextRow);
1165
- tinymce.dom.Event.cancel(e);
1166
- return true;
1167
- }
1205
+ if (isVerticalMovement() && isInTable(ed)) {
1206
+ var preBrowserNode = ed.selection.getNode();
1207
+ setTimeout(function() {
1208
+ if (shouldFixCaret(preBrowserNode)) {
1209
+ handle(!e.shiftKey && key === VK.UP, preBrowserNode, e);
1210
+ }
1211
+ }, 0);
1168
1212
  }
1169
1213
  }
1170
1214
 
@@ -1223,6 +1267,24 @@
1223
1267
  ed.dom.remove(last);
1224
1268
  });
1225
1269
 
1270
+
1271
+ /**
1272
+ * Fixes bug in Gecko where shift-enter in table cell does not place caret on new line
1273
+ */
1274
+ if (tinymce.isGecko) {
1275
+ ed.onKeyDown.add(function(ed, e) {
1276
+ if (e.keyCode === tinymce.VK.ENTER && e.shiftKey) {
1277
+ var node = ed.selection.getRng().startContainer;
1278
+ var tableCell = dom.getParent(node, 'td,th');
1279
+ if (tableCell) {
1280
+ var zeroSizedNbsp = ed.getDoc().createTextNode("\uFEFF");
1281
+ dom.insertAfter(zeroSizedNbsp, node);
1282
+ }
1283
+ }
1284
+ });
1285
+ }
1286
+
1287
+
1226
1288
  fixTableCaretPos();
1227
1289
  ed.startContent = ed.getContent({format : 'raw'});
1228
1290
  }