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
@@ -0,0 +1 @@
1
+ (function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(e){var h=this,f,d,i;h.editor=e;d=e.settings.contextmenu_never_use_native;h.onContextMenu=new tinymce.util.Dispatcher(this);f=e.onContextMenu.add(function(j,k){if((i!==0?i:k.ctrlKey)&&!d){return}a.cancel(k);if(k.target.nodeName=="IMG"){j.selection.select(k.target)}h._getMenu(j).showMenu(k.clientX||k.pageX,k.clientY||k.pageY);a.add(j.getDoc(),"click",function(l){g(j,l)});j.nodeChanged()});e.onRemove.add(function(){if(h._menu){h._menu.removeAll()}});function g(j,k){i=0;if(k&&k.button==2){i=k.ctrlKey;return}if(h._menu){h._menu.removeAll();h._menu.destroy();a.remove(j.getDoc(),"click",g);h._menu=null}}e.onMouseDown.add(g);e.onKeyDown.add(g);e.onKeyDown.add(function(j,k){if(k.shiftKey&&!k.ctrlKey&&!k.altKey&&k.keyCode===121){a.cancel(k);f(j,k)}})},getInfo:function(){return{longname:"Contextmenu",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getMenu:function(e){var g=this,d=g._menu,j=e.selection,f=j.isCollapsed(),h=j.getNode()||e.getBody(),i,k;if(d){d.removeAll();d.destroy()}k=b.getPos(e.getContentAreaContainer());d=e.controlManager.createDropMenu("contextmenu",{offset_x:k.x+e.getParam("contextmenu_offset_x",0),offset_y:k.y+e.getParam("contextmenu_offset_y",0),constrain:1,keyboard_focus:true});g._menu=d;d.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(f);d.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(f);d.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((h.nodeName=="A"&&!e.dom.getAttrib(h,"name"))||!f){d.addSeparator();d.add({title:"advanced.link_desc",icon:"link",cmd:e.plugins.advlink?"mceAdvLink":"mceLink",ui:true});d.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}d.addSeparator();d.add({title:"advanced.image_desc",icon:"image",cmd:e.plugins.advimage?"mceAdvImage":"mceImage",ui:true});d.addSeparator();i=d.addMenu({title:"contextmenu.align"});i.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});i.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});i.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});i.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});g.onContextMenu.dispatch(g,d,h,f);return d}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})();
@@ -80,6 +80,7 @@
80
80
  t._menu.removeAll();
81
81
  t._menu.destroy();
82
82
  Event.remove(ed.getDoc(), 'click', hide);
83
+ t._menu = null;
83
84
  }
84
85
  };
85
86
 
@@ -0,0 +1,42 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <title>{#emotions_dlg.title}</title>
5
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
6
+ <script type="text/javascript" src="js/emotions.js"></script>
7
+ </head>
8
+ <body style="display: none" role="application" aria-labelledby="app_title">
9
+ <span style="display:none;" id="app_title">{#emotions_dlg.title}</span>
10
+ <div align="center">
11
+ <div class="title">{#emotions_dlg.title}:<br /><br /></div>
12
+
13
+ <table id="emoticon_table" role="presentation" border="0" cellspacing="0" cellpadding="4">
14
+ <tr>
15
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.cool}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-cool.gif','emotions_dlg.cool');"><img src="img/smiley-cool.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cool}. {#emotions_dlg.usage}" /></a></td>
16
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.cry}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-cry.gif','emotions_dlg.cry');"><img src="img/smiley-cry.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cry}. {#emotions_dlg.usage}" /></a></td>
17
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.embarassed}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-embarassed.gif','emotions_dlg.embarassed');"><img src="img/smiley-embarassed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.embarassed}. {#emotions_dlg.usage}" /></a></td>
18
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.foot_in_mouth}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-foot-in-mouth.gif','emotions_dlg.foot_in_mouth');"><img src="img/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.foot_in_mouth}. {#emotions_dlg.usage}" /></a></td>
19
+ </tr>
20
+ <tr>
21
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.frown}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-frown.gif','emotions_dlg.frown');"><img src="img/smiley-frown.gif" width="18" height="18" border="0" alt="{#emotions_dlg.frown}. {#emotions_dlg.usage}" /></a></td>
22
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.innocent}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-innocent.gif','emotions_dlg.innocent');"><img src="img/smiley-innocent.gif" width="18" height="18" border="0" alt="{#emotions_dlg.innocent}. {#emotions_dlg.usage}" /></a></td>
23
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.kiss}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-kiss.gif','emotions_dlg.kiss');"><img src="img/smiley-kiss.gif" width="18" height="18" border="0" alt="{#emotions_dlg.kiss}. {#emotions_dlg.usage}" /></a></td>
24
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.laughing}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-laughing.gif','emotions_dlg.laughing');"><img src="img/smiley-laughing.gif" width="18" height="18" border="0" alt="{#emotions_dlg.laughing}. {#emotions_dlg.usage}" /></a></td>
25
+ </tr>
26
+ <tr>
27
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.money_mouth}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-money-mouth.gif','emotions_dlg.money_mouth');"><img src="img/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.money_mouth}. {#emotions_dlg.usage}"/></a></td>
28
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.sealed}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-sealed.gif','emotions_dlg.sealed');"><img src="img/smiley-sealed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.sealed}. {#emotions_dlg.usage}" /></a></td>
29
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.smile}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-smile.gif','emotions_dlg.smile');"><img src="img/smiley-smile.gif" width="18" height="18" border="0" alt="{#emotions_dlg.smile}. {#emotions_dlg.usage}" /></a></td>
30
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.surprised}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-surprised.gif','emotions_dlg.surprised');"><img src="img/smiley-surprised.gif" width="18" height="18" border="0" alt="{#emotions_dlg.surprised}. {#emotions_dlg.usage}" /></a></td>
31
+ </tr>
32
+ <tr>
33
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.tongue_out}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-tongue-out.gif','emotions_dlg.tongue_out');"><img src="img/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{#emotions_dlg.tongue-out}. {#emotions_dlg.usage}" /></a></td>
34
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.undecided}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-undecided.gif','emotions_dlg.undecided');"><img src="img/smiley-undecided.gif" width="18" height="18" border="0" alt="{#emotions_dlg.undecided}. {#emotions_dlg.usage}" /></a></td>
35
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.wink}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-wink.gif','emotions_dlg.wink');"><img src="img/smiley-wink.gif" width="18" height="18" border="0" alt="{#emotions_dlg.wink}. {#emotions_dlg.usage}" /></a></td>
36
+ <td><a class="emoticon_link" role="button" title="{#emotions_dlg.yell}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-yell.gif','emotions_dlg.yell');"><img src="img/smiley-yell.gif" width="18" height="18" border="0" alt="{#emotions_dlg.yell}. {#emotions_dlg.usage}" /></a></td>
37
+ </tr>
38
+ </table>
39
+ <div>{#emotions_dlg.usage}</div>
40
+ </div>
41
+ </body>
42
+ </html>
@@ -0,0 +1,43 @@
1
+ tinyMCEPopup.requireLangPack();
2
+
3
+ var EmotionsDialog = {
4
+ addKeyboardNavigation: function(){
5
+ var tableElm, cells, settings;
6
+
7
+ cells = tinyMCEPopup.dom.select("a.emoticon_link", "emoticon_table");
8
+
9
+ settings ={
10
+ root: "emoticon_table",
11
+ items: cells
12
+ };
13
+ cells[0].tabindex=0;
14
+ tinyMCEPopup.dom.addClass(cells[0], "mceFocus");
15
+ if (tinymce.isGecko) {
16
+ cells[0].focus();
17
+ } else {
18
+ setTimeout(function(){
19
+ cells[0].focus();
20
+ }, 100);
21
+ }
22
+ tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom);
23
+ },
24
+ init : function(ed) {
25
+ tinyMCEPopup.resizeToInnerSize();
26
+ this.addKeyboardNavigation();
27
+ },
28
+
29
+ insert : function(file, title) {
30
+ var ed = tinyMCEPopup.editor, dom = ed.dom;
31
+
32
+ tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {
33
+ src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file,
34
+ alt : ed.getLang(title),
35
+ title : ed.getLang(title),
36
+ border : 0
37
+ }));
38
+
39
+ tinyMCEPopup.close();
40
+ }
41
+ };
42
+
43
+ tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog);
@@ -0,0 +1 @@
1
+ tinyMCE.addI18n('en.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"Insert Emotion",usage:"Use left and right arrows to navigate.",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue Out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money Mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in Mouth",embarassed:"Embarassed"});
@@ -0,0 +1 @@
1
+ (function(){var e=tinymce.each,r=tinymce.dom.Event,g;function p(t,s){while(t&&(t.nodeType===8||(t.nodeType===3&&/^[ \t\n\r]*$/.test(t.nodeValue)))){t=s(t)}return t}function b(s){return p(s,function(t){return t.previousSibling})}function i(s){return p(s,function(t){return t.nextSibling})}function d(s,u,t){return s.dom.getParent(u,function(v){return tinymce.inArray(t,v)!==-1})}function n(s){return s&&(s.tagName==="OL"||s.tagName==="UL")}function c(u,v){var t,w,s;t=b(u.lastChild);while(n(t)){w=t;t=b(w.previousSibling)}if(w){s=v.create("li",{style:"list-style-type: none;"});v.split(u,w);v.insertAfter(s,w);s.appendChild(w);s.appendChild(w);u=s.previousSibling}return u}function m(t,s,u){t=a(t,s,u);return o(t,s,u)}function a(u,s,v){var t=b(u.previousSibling);if(t){return h(t,u,s?t:false,v)}else{return u}}function o(u,t,v){var s=i(u.nextSibling);if(s){return h(u,s,t?s:false,v)}else{return u}}function h(u,s,t,v){if(l(u,s,!!t,v)){return f(u,s,t)}else{if(u&&u.tagName==="LI"&&n(s)){u.appendChild(s)}}return s}function l(u,t,s,v){if(!u||!t){return false}else{if(u.tagName==="LI"&&t.tagName==="LI"){return t.style.listStyleType==="none"||j(t)}else{if(n(u)){return(u.tagName===t.tagName&&(s||u.style.listStyleType===t.style.listStyleType))||q(t)}else{return v&&u.tagName==="P"&&t.tagName==="P"}}}}function q(t){var s=i(t.firstChild),u=b(t.lastChild);return s&&u&&n(t)&&s===u&&(n(s)||s.style.listStyleType==="none"||j(s))}function j(u){var t=i(u.firstChild),s=b(u.lastChild);return t&&s&&t===s&&n(t)}function f(w,v,s){var u=b(w.lastChild),t=i(v.firstChild);if(w.tagName==="P"){w.appendChild(w.ownerDocument.createElement("br"))}while(v.firstChild){w.appendChild(v.firstChild)}if(s){w.style.listStyleType=s.style.listStyleType}v.parentNode.removeChild(v);h(u,t,false);return w}function k(t,u){var s;if(!u.is(t,"li,ol,ul")){s=u.getParent(t,"li");if(s){t=s}}return t}tinymce.create("tinymce.plugins.Lists",{init:function(y){var v="TABBING";var s="EMPTY";var J="ESCAPE";var z="PARAGRAPH";var N="UNKNOWN";var x=N;function E(U){return U.keyCode===tinymce.VK.TAB&&!(U.altKey||U.ctrlKey)&&(y.queryCommandState("InsertUnorderedList")||y.queryCommandState("InsertOrderedList"))}function w(){var U=B();var W=U.parentNode.parentNode;var V=U.parentNode.lastChild===U;return V&&!t(W)&&P(U)}function t(U){if(n(U)){return U.parentNode&&U.parentNode.tagName==="LI"}else{return U.tagName==="LI"}}function F(){return y.selection.isCollapsed()&&P(B())}function B(){var U=y.selection.getStart();return((U.tagName=="BR"||U.tagName=="")&&U.parentNode.tagName=="LI")?U.parentNode:U}function P(U){var V=U.childNodes.length;if(U.tagName==="LI"){return V==0?true:V==1&&(U.firstChild.tagName==""||U.firstChild.tagName=="BR"||H(U))}return false}function H(U){var V=tinymce.grep(U.parentNode.childNodes,function(Y){return Y.tagName=="LI"});var W=U==V[V.length-1];var X=U.firstChild;return tinymce.isIE9&&W&&(X.nodeValue==String.fromCharCode(160)||X.nodeValue==String.fromCharCode(32))}function T(U){return U.keyCode===tinymce.VK.ENTER}function A(U){return T(U)&&!U.shiftKey}function M(U){if(E(U)){return v}else{if(A(U)&&w()){return J}else{if(A(U)&&F()){return s}else{return N}}}}function D(U,V){if(x==v||x==s||tinymce.isGecko&&x==J){r.cancel(V)}}function C(){var U=y.selection.getRng(true);var V=U.startContainer;if(V.nodeType==3){var W=V.nodeValue;if(tinymce.isIE9&&W.length>1&&W.charCodeAt(W.length-1)==32){return(U.endOffset==W.length-1)}else{return(U.endOffset==W.length)}}else{if(V.nodeType==1){return U.endOffset==V.childNodes.length}}return false}function I(){var W=y.selection.getNode();var V="h1,h2,h3,h4,h5,h6,p,div";var U=y.dom.is(W,V)&&W.parentNode.tagName==="LI"&&W.parentNode.lastChild===W;return y.selection.isCollapsed()&&U&&C()}function K(W,Y){if(A(Y)&&I()){var X=W.selection.getNode();var V=W.dom.create("li");var U=W.dom.getParent(X,"li");W.dom.insertAfter(V,U);if(tinymce.isIE6||tinymce.isIE7||tinyMCE.isIE8){V.appendChild(W.dom.create("&nbsp;"));W.selection.setCursorLocation(V,1)}else{if(tinyMCE.isGecko){setTimeout(function(){var Z=W.getDoc().createTextNode("\uFEFF");V.appendChild(Z);W.selection.setCursorLocation(V,0)},0)}else{W.selection.setCursorLocation(V,0)}}Y.preventDefault()}}function u(X,Z){var ac;if(!tinymce.isGecko){return}var V=X.selection.getStart();if(Z.keyCode!=tinymce.VK.BACKSPACE||V.tagName!=="IMG"){return}function W(ag){var ah=ag.firstChild;var af=null;do{if(!ah){break}if(ah.tagName==="LI"){af=ah}}while(ah=ah.nextSibling);return af}function ae(ag,af){while(ag.childNodes.length>0){af.appendChild(ag.childNodes[0])}}ac=V.parentNode.previousSibling;if(!ac){return}var aa;if(ac.tagName==="UL"||ac.tagName==="OL"){aa=ac}else{if(ac.previousSibling&&(ac.previousSibling.tagName==="UL"||ac.previousSibling.tagName==="OL")){aa=ac.previousSibling}else{return}}var ad=W(aa);var U=X.dom.createRng();U.setStart(ad,1);U.setEnd(ad,1);X.selection.setRng(U);X.selection.collapse(true);var Y=X.selection.getBookmark();var ab=V.parentNode.cloneNode(true);if(ab.tagName==="P"||ab.tagName==="DIV"){ae(ab,ad)}else{ad.appendChild(ab)}V.parentNode.parentNode.removeChild(V.parentNode);X.selection.moveToBookmark(Y)}function G(U){var V=y.dom.getParent(U,"ol,ul");if(V!=null){var W=V.lastChild;W.appendChild(y.getDoc().createElement(""));y.selection.setCursorLocation(W,0)}}this.ed=y;y.addCommand("Indent",this.indent,this);y.addCommand("Outdent",this.outdent,this);y.addCommand("InsertUnorderedList",function(){this.applyList("UL","OL")},this);y.addCommand("InsertOrderedList",function(){this.applyList("OL","UL")},this);y.onInit.add(function(){y.editorCommands.addCommands({outdent:function(){var V=y.selection,W=y.dom;function U(X){X=W.getParent(X,W.isBlock);return X&&(parseInt(y.dom.getStyle(X,"margin-left")||0,10)+parseInt(y.dom.getStyle(X,"padding-left")||0,10))>0}return U(V.getStart())||U(V.getEnd())||y.queryCommandState("InsertOrderedList")||y.queryCommandState("InsertUnorderedList")}},"state")});y.onKeyUp.add(function(V,W){if(x==v){V.execCommand(W.shiftKey?"Outdent":"Indent",true,null);x=N;return r.cancel(W)}else{if(x==s){var U=B();var Y=V.settings.list_outdent_on_enter===true||W.shiftKey;V.execCommand(Y?"Outdent":"Indent",true,null);if(tinymce.isIE){G(U)}return r.cancel(W)}else{if(x==J){if(tinymce.isIE6||tinymce.isIE7||tinymce.isIE8){var X=V.getDoc().createTextNode("\uFEFF");V.selection.getNode().appendChild(X)}else{if(tinymce.isIE9||tinymce.isGecko){V.execCommand("Outdent");return r.cancel(W)}}}}}});function L(V,U){var W=y.getDoc().createTextNode("\uFEFF");V.insertBefore(W,U);y.selection.setCursorLocation(W,0);y.execCommand("mceRepaint")}function R(V,X){if(T(X)){var U=B();if(U){var W=U.parentNode;var Y=W&&W.parentNode;if(Y&&Y.nodeName=="LI"&&Y.firstChild==W&&U==W.firstChild){L(Y,W)}}}}function S(V,X){if(T(X)){var U=B();if(V.dom.select("ul li",U).length===1){var W=U.firstChild;L(U,W)}}}function Q(V,Z){function W(ad,aa){var ac=[];var ae=new tinymce.dom.TreeWalker(aa,ad);for(var ab=ae.current();ab;ab=ae.next()){if(V.dom.is(ab,"ol,ul,li")){ac.push(ab)}}return ac}if(Z.keyCode==tinymce.VK.BACKSPACE){var U=B();if(U){var Y=V.dom.getParent(U,"ol,ul");if(Y&&Y.firstChild===U){var X=W(Y,U);V.execCommand("Outdent",false,X);V.undoManager.add();return r.cancel(Z)}}}}function O(V,X){var U=B();if(X.keyCode===tinymce.VK.BACKSPACE&&V.dom.is(U,"li")&&U.parentNode.firstChild!==U){if(V.dom.select("ul,ol",U).length===1){var Z=U.previousSibling;V.dom.remove(V.dom.select("br",U));V.dom.remove(U,true);var W=tinymce.grep(Z.childNodes,function(aa){return aa.nodeType===3});if(W.length===1){var Y=W[0];V.selection.setCursorLocation(Y,Y.length)}V.undoManager.add();return r.cancel(X)}}}y.onKeyDown.add(function(U,V){x=M(V)});y.onKeyDown.add(D);y.onKeyDown.add(u);y.onKeyDown.add(K);if(tinymce.isGecko){y.onKeyUp.add(R)}if(tinymce.isIE8){y.onKeyUp.add(S)}if(tinymce.isGecko||tinymce.isWebKit){y.onKeyDown.add(Q)}if(tinymce.isWebKit){y.onKeyDown.add(O)}},applyList:function(y,v){var C=this,z=C.ed,I=z.dom,s=[],H=false,u=false,w=false,B,G=z.selection.getSelectedBlocks();function E(t){if(t&&t.tagName==="BR"){I.remove(t)}}function F(M){var N=I.create(y),t;function L(O){if(O.style.marginLeft||O.style.paddingLeft){C.adjustPaddingFunction(false)(O)}}if(M.tagName==="LI"){}else{if(M.tagName==="P"||M.tagName==="DIV"||M.tagName==="BODY"){K(M,function(P,O){J(P,O,M.tagName==="BODY"?null:P.parentNode);t=P.parentNode;L(t);E(O)});if(t){if(t.tagName==="LI"&&(M.tagName==="P"||G.length>1)){I.split(t.parentNode.parentNode,t.parentNode)}m(t.parentNode,true)}return}else{t=I.create("li");I.insertAfter(t,M);t.appendChild(M);L(M);M=t}}I.insertAfter(N,M);N.appendChild(M);m(N,true);s.push(M)}function J(P,L,N){var t,O=P,M;while(!I.isBlock(P.parentNode)&&P.parentNode!==I.getRoot()){P=I.split(P.parentNode,P.previousSibling);P=P.nextSibling;O=P}if(N){t=N.cloneNode(true);P.parentNode.insertBefore(t,P);while(t.firstChild){I.remove(t.firstChild)}t=I.rename(t,"li")}else{t=I.create("li");P.parentNode.insertBefore(t,P)}while(O&&O!=L){M=O.nextSibling;t.appendChild(O);O=M}if(t.childNodes.length===0){t.innerHTML='<br _mce_bogus="1" />'}F(t)}function K(Q,T){var N,R,O=3,L=1,t="br,ul,ol,p,div,h1,h2,h3,h4,h5,h6,table,blockquote,address,pre,form,center,dl";function P(X,U){var V=I.createRng(),W;g.keep=true;z.selection.moveToBookmark(g);g.keep=false;W=z.selection.getRng(true);if(!U){U=X.parentNode.lastChild}V.setStartBefore(X);V.setEndAfter(U);return !(V.compareBoundaryPoints(O,W)>0||V.compareBoundaryPoints(L,W)<=0)}function S(U){if(U.nextSibling){return U.nextSibling}if(!I.isBlock(U.parentNode)&&U.parentNode!==I.getRoot()){return S(U.parentNode)}}N=Q.firstChild;var M=false;e(I.select(t,Q),function(U){if(U.hasAttribute&&U.hasAttribute("_mce_bogus")){return true}if(P(N,U)){I.addClass(U,"_mce_tagged_br");N=S(U)}});M=(N&&P(N,undefined));N=Q.firstChild;e(I.select(t,Q),function(V){var U=S(V);if(V.hasAttribute&&V.hasAttribute("_mce_bogus")){return true}if(I.hasClass(V,"_mce_tagged_br")){T(N,V,R);R=null}else{R=V}N=U});if(M){T(N,undefined,R)}}function D(t){K(t,function(M,L,N){J(M,L);E(L);E(N)})}function A(t){if(tinymce.inArray(s,t)!==-1){return}if(t.parentNode.tagName===v){I.split(t.parentNode,t);F(t);o(t.parentNode,false)}s.push(t)}function x(M){var O,N,L,t;if(tinymce.inArray(s,M)!==-1){return}M=c(M,I);while(I.is(M.parentNode,"ol,ul,li")){I.split(M.parentNode,M)}s.push(M);M=I.rename(M,"p");L=m(M,false,z.settings.force_br_newlines);if(L===M){O=M.firstChild;while(O){if(I.isBlock(O)){O=I.split(O.parentNode,O);t=true;N=O.nextSibling&&O.nextSibling.firstChild}else{N=O.nextSibling;if(t&&O.tagName==="BR"){I.remove(O)}t=false}O=N}}}e(G,function(t){t=k(t,I);if(t.tagName===v||(t.tagName==="LI"&&t.parentNode.tagName===v)){u=true}else{if(t.tagName===y||(t.tagName==="LI"&&t.parentNode.tagName===y)){H=true}else{w=true}}});if(w&&!H||u||G.length===0){B={LI:A,H1:F,H2:F,H3:F,H4:F,H5:F,H6:F,P:F,BODY:F,DIV:G.length>1?F:D,defaultAction:D,elements:this.selectedBlocks()}}else{B={defaultAction:x,elements:this.selectedBlocks()}}this.process(B)},indent:function(){var u=this.ed,w=u.dom,x=[];function s(z){var y=w.create("li",{style:"list-style-type: none;"});w.insertAfter(y,z);return y}function t(B){var y=s(B),D=w.getParent(B,"ol,ul"),C=D.tagName,E=w.getStyle(D,"list-style-type"),A={},z;if(E!==""){A.style="list-style-type: "+E+";"}z=w.create(C,A);y.appendChild(z);return z}function v(z){if(!d(u,z,x)){z=c(z,w);var y=t(z);y.appendChild(z);m(y.parentNode,false);m(y,false);x.push(z)}}this.process({LI:v,defaultAction:this.adjustPaddingFunction(true),elements:this.selectedBlocks()})},outdent:function(y,x){var w=this,u=w.ed,z=u.dom,s=[];function A(t){var C,B,D;if(!d(u,t,s)){if(z.getStyle(t,"margin-left")!==""||z.getStyle(t,"padding-left")!==""){return w.adjustPaddingFunction(false)(t)}D=z.getStyle(t,"text-align",true);if(D==="center"||D==="right"){z.setStyle(t,"text-align","left");return}t=c(t,z);C=t.parentNode;B=t.parentNode.parentNode;if(B.tagName==="P"){z.split(B,t.parentNode)}else{z.split(C,t);if(B.tagName==="LI"){z.split(B,t)}else{if(!z.is(B,"ol,ul")){z.rename(t,"p")}}}s.push(t)}}var v=x&&tinymce.is(x,"array")?x:this.selectedBlocks();this.process({LI:A,defaultAction:this.adjustPaddingFunction(false),elements:v});e(s,m)},process:function(y){var F=this,w=F.ed.selection,z=F.ed.dom,E,u;function B(t){var s=tinymce.grep(t.childNodes,function(H){return !(H.nodeName==="BR"||H.nodeName==="SPAN"&&z.getAttrib(H,"data-mce-type")=="bookmark"||H.nodeType==3&&(H.nodeValue==String.fromCharCode(160)||H.nodeValue==""))});return s.length===0}function x(s){z.removeClass(s,"_mce_act_on");if(!s||s.nodeType!==1||E.length>1&&B(s)){return}s=k(s,z);var t=y[s.tagName];if(!t){t=y.defaultAction}t(s)}function v(s){F.splitSafeEach(s.childNodes,x)}function C(s,t){return t>=0&&s.hasChildNodes()&&t<s.childNodes.length&&s.childNodes[t].tagName==="BR"}function D(){var t=w.getNode();var s=z.getParent(t,"td");return s!==null}E=y.elements;u=w.getRng(true);if(!u.collapsed){if(C(u.endContainer,u.endOffset-1)){u.setEnd(u.endContainer,u.endOffset-1);w.setRng(u)}if(C(u.startContainer,u.startOffset)){u.setStart(u.startContainer,u.startOffset+1);w.setRng(u)}}if(tinymce.isIE8){var G=F.ed.selection.getNode();if(G.tagName==="LI"&&!(G.parentNode.lastChild===G)){var A=F.ed.getDoc().createTextNode("\uFEFF");G.appendChild(A)}}g=w.getBookmark();y.OL=y.UL=v;F.splitSafeEach(E,x);w.moveToBookmark(g);g=null;if(!D()){F.ed.execCommand("mceRepaint")}},splitSafeEach:function(t,s){if(tinymce.isGecko&&(/Firefox\/[12]\.[0-9]/.test(navigator.userAgent)||/Firefox\/3\.[0-4]/.test(navigator.userAgent))){this.classBasedEach(t,s)}else{e(t,s)}},classBasedEach:function(v,u){var w=this.ed.dom,s,t;e(v,function(x){w.addClass(x,"_mce_act_on")});s=w.select("._mce_act_on");while(s.length>0){t=s.shift();w.removeClass(t,"_mce_act_on");u(t);s=w.select("._mce_act_on")}},adjustPaddingFunction:function(u){var s,v,t=this.ed;s=t.settings.indentation;v=/[a-z%]+/i.exec(s);s=parseInt(s,10);return function(w){var y,x;y=parseInt(t.dom.getStyle(w,"margin-left")||0,10)+parseInt(t.dom.getStyle(w,"padding-left")||0,10);if(u){x=y+s}else{x=y-s}t.dom.setStyle(w,"padding-left","");t.dom.setStyle(w,"margin-left",x>0?x+v:"")}},selectedBlocks:function(){var s=this.ed;var t=s.selection.getSelectedBlocks();return t.length==0?[s.dom.getRoot()]:t},getInfo:function(){return{longname:"Lists",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/lists",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("lists",tinymce.plugins.Lists)}());
@@ -99,11 +99,7 @@
99
99
  return e2.style.listStyleType === 'none' || containsOnlyAList(e2);
100
100
  } else if (isList(e1)) {
101
101
  return (e1.tagName === e2.tagName && (allowDifferentListStyles || e1.style.listStyleType === e2.style.listStyleType)) || isListForIndent(e2);
102
- } else if (mergeParagraphs && e1.tagName === 'P' && e2.tagName === 'P') {
103
- return true;
104
- } else {
105
- return false;
106
- }
102
+ } else return mergeParagraphs && e1.tagName === 'P' && e2.tagName === 'P';
107
103
  }
108
104
 
109
105
  function isListForIndent(e) {
@@ -144,15 +140,18 @@
144
140
  }
145
141
 
146
142
  tinymce.create('tinymce.plugins.Lists', {
147
- init: function(ed, url) {
148
- var LIST_TABBING = 0;
149
- var LIST_EMPTY_ITEM = 1;
150
- var LIST_ESCAPE = 2;
151
- var LIST_UNKNOWN = 3;
143
+ init: function(ed) {
144
+ var LIST_TABBING = 'TABBING';
145
+ var LIST_EMPTY_ITEM = 'EMPTY';
146
+ var LIST_ESCAPE = 'ESCAPE';
147
+ var LIST_PARAGRAPH = 'PARAGRAPH';
148
+ var LIST_UNKNOWN = 'UNKNOWN';
152
149
  var state = LIST_UNKNOWN;
153
150
 
154
151
  function isTabInList(e) {
155
- return e.keyCode === 9 && (ed.queryCommandState('InsertUnorderedList') || ed.queryCommandState('InsertOrderedList'));
152
+ // Don't indent on Ctrl+Tab or Alt+Tab
153
+ return e.keyCode === tinymce.VK.TAB && !(e.altKey || e.ctrlKey) &&
154
+ (ed.queryCommandState('InsertUnorderedList') || ed.queryCommandState('InsertOrderedList'));
156
155
  }
157
156
 
158
157
  function isOnLastListItem() {
@@ -183,43 +182,97 @@
183
182
  function isEmptyListItem(li) {
184
183
  var numChildren = li.childNodes.length;
185
184
  if (li.tagName === 'LI') {
186
- return numChildren == 0 ? true : numChildren == 1 && (li.firstChild.tagName == '' || isEmptyWebKitLi(li) || isEmptyIE9Li(li));
185
+ return numChildren == 0 ? true : numChildren == 1 && (li.firstChild.tagName == '' || li.firstChild.tagName == 'BR' || isEmptyIE9Li(li));
187
186
  }
188
187
  return false;
189
188
  }
190
189
 
191
- function isEmptyWebKitLi(li) {
192
- // Check for empty LI or a LI with just a child that is a BR since Gecko and WebKit uses BR elements to place the caret
193
- return tinymce.isWebKit && li.firstChild.nodeName == 'BR';
194
- }
195
-
196
190
  function isEmptyIE9Li(li) {
197
191
  // only consider this to be last item if there is no list item content or that content is nbsp or space since IE9 creates these
198
- var lis = tinymce.grep(li.parentNode.childNodes, function(n) {return n.nodeName == 'LI'});
192
+ var lis = tinymce.grep(li.parentNode.childNodes, function(n) {return n.tagName == 'LI'});
199
193
  var isLastLi = li == lis[lis.length - 1];
200
194
  var child = li.firstChild;
201
195
  return tinymce.isIE9 && isLastLi && (child.nodeValue == String.fromCharCode(160) || child.nodeValue == String.fromCharCode(32));
202
196
  }
203
197
 
204
198
  function isEnter(e) {
205
- return e.keyCode === 13;
199
+ return e.keyCode === tinymce.VK.ENTER;
200
+ }
201
+
202
+ function isEnterWithoutShift(e) {
203
+ return isEnter(e) && !e.shiftKey;
206
204
  }
207
205
 
208
206
  function getListKeyState(e) {
209
207
  if (isTabInList(e)) {
210
208
  return LIST_TABBING;
211
- } else if (isEnter(e) && isOnLastListItem()) {
209
+ } else if (isEnterWithoutShift(e) && isOnLastListItem()) {
212
210
  return LIST_ESCAPE;
213
- } else if (isEnter(e) && isInEmptyListItem()) {
211
+ } else if (isEnterWithoutShift(e) && isInEmptyListItem()) {
214
212
  return LIST_EMPTY_ITEM;
215
213
  } else {
216
214
  return LIST_UNKNOWN;
217
215
  }
218
216
  }
219
217
 
220
- function cancelEnterAndTab(_, e) {
221
- if (state == LIST_TABBING || state == LIST_EMPTY_ITEM) {
222
- return Event.cancel(e);
218
+ function cancelDefaultEvents(ed, e) {
219
+ // list escape is done manually using outdent as it does not create paragraphs correctly in td's
220
+ if (state == LIST_TABBING || state == LIST_EMPTY_ITEM || tinymce.isGecko && state == LIST_ESCAPE) {
221
+ Event.cancel(e);
222
+ }
223
+ }
224
+
225
+ function isCursorAtEndOfContainer() {
226
+ var range = ed.selection.getRng(true);
227
+ var startContainer = range.startContainer;
228
+ if (startContainer.nodeType == 3) {
229
+ var value = startContainer.nodeValue;
230
+ if (tinymce.isIE9 && value.length > 1 && value.charCodeAt(value.length-1) == 32) {
231
+ // IE9 places a space on the end of the text in some cases so ignore last char
232
+ return (range.endOffset == value.length-1);
233
+ } else {
234
+ return (range.endOffset == value.length);
235
+ }
236
+ } else if (startContainer.nodeType == 1) {
237
+ return range.endOffset == startContainer.childNodes.length;
238
+ }
239
+ return false;
240
+ }
241
+
242
+ /*
243
+ If we are at the end of a list item surrounded with an element, pressing enter should create a
244
+ new list item instead without splitting the element e.g. don't want to create new P or H1 tag
245
+ */
246
+ function isEndOfListItem() {
247
+ var node = ed.selection.getNode();
248
+ var validElements = 'h1,h2,h3,h4,h5,h6,p,div';
249
+ var isLastParagraphOfLi = ed.dom.is(node, validElements) && node.parentNode.tagName === 'LI' && node.parentNode.lastChild === node;
250
+ return ed.selection.isCollapsed() && isLastParagraphOfLi && isCursorAtEndOfContainer();
251
+ }
252
+
253
+ // Creates a new list item after the current selection's list item parent
254
+ function createNewLi(ed, e) {
255
+ if (isEnterWithoutShift(e) && isEndOfListItem()) {
256
+ var node = ed.selection.getNode();
257
+ var li = ed.dom.create("li");
258
+ var parentLi = ed.dom.getParent(node, 'li');
259
+ ed.dom.insertAfter(li, parentLi);
260
+
261
+ // Move caret to new list element.
262
+ if (tinymce.isIE6 || tinymce.isIE7 || tinyMCE.isIE8) {
263
+ li.appendChild(ed.dom.create("&nbsp;")); // IE needs an element within the bullet point
264
+ ed.selection.setCursorLocation(li, 1);
265
+ } else if (tinyMCE.isGecko) {
266
+ // This setTimeout is a hack as FF behaves badly if there is no content after the bullet point
267
+ setTimeout(function () {
268
+ var n = ed.getDoc().createTextNode('\uFEFF');
269
+ li.appendChild(n);
270
+ ed.selection.setCursorLocation(li, 0);
271
+ }, 0);
272
+ } else {
273
+ ed.selection.setCursorLocation(li, 0);
274
+ }
275
+ e.preventDefault();
223
276
  }
224
277
  }
225
278
 
@@ -230,7 +283,7 @@
230
283
  return;
231
284
 
232
285
  var n = ed.selection.getStart();
233
- if (e.keyCode != 8 || n.tagName !== 'IMG')
286
+ if (e.keyCode != tinymce.VK.BACKSPACE || n.tagName !== 'IMG')
234
287
  return;
235
288
 
236
289
  function lastLI(node) {
@@ -338,25 +391,118 @@
338
391
  if (tinymce.isIE) {
339
392
  setCursorPositionToOriginalLi(li);
340
393
  }
394
+
341
395
  return Event.cancel(e);
342
396
  } else if (state == LIST_ESCAPE) {
343
- if (tinymce.isIE8) {
344
- // append a zero sized nbsp so that caret is positioned correctly in IE8 after escaping and applying formatting.
397
+ if (tinymce.isIE6 || tinymce.isIE7 || tinymce.isIE8) {
398
+ // append a zero sized nbsp so that caret is positioned correctly in IE after escaping and applying formatting.
345
399
  // if there is no text then applying formatting for e.g a H1 to the P tag immediately following list after
346
400
  // escaping from it will cause the caret to be positioned on the last li instead of staying the in P tag.
347
401
  var n = ed.getDoc().createTextNode('\uFEFF');
348
402
  ed.selection.getNode().appendChild(n);
349
- } else if (tinymce.isIE9) {
403
+ } else if (tinymce.isIE9 || tinymce.isGecko) {
350
404
  // IE9 does not escape the list so we use outdent to do this and cancel the default behaviour
405
+ // Gecko does not create a paragraph outdenting inside a TD so default behaviour is cancelled and we outdent ourselves
351
406
  ed.execCommand('Outdent');
352
407
  return Event.cancel(e);
353
408
  }
354
409
  }
355
410
  });
411
+
412
+ function fixListItem(parent, reference) {
413
+ // a zero-sized non-breaking space is placed in the empty list item so that the nested list is
414
+ // displayed on the below line instead of next to it
415
+ var n = ed.getDoc().createTextNode('\uFEFF');
416
+ parent.insertBefore(n, reference);
417
+ ed.selection.setCursorLocation(n, 0);
418
+ // repaint to remove rendering artifact. only visible when creating new list
419
+ ed.execCommand('mceRepaint');
420
+ }
421
+
422
+ function fixIndentedListItemForGecko(ed, e) {
423
+ if (isEnter(e)) {
424
+ var li = getLi();
425
+ if (li) {
426
+ var parent = li.parentNode;
427
+ var grandParent = parent && parent.parentNode;
428
+ if (grandParent && grandParent.nodeName == 'LI' && grandParent.firstChild == parent && li == parent.firstChild) {
429
+ fixListItem(grandParent, parent);
430
+ }
431
+ }
432
+ }
433
+ }
434
+
435
+ function fixIndentedListItemForIE8(ed, e) {
436
+ if (isEnter(e)) {
437
+ var li = getLi();
438
+ if (ed.dom.select('ul li', li).length === 1) {
439
+ var list = li.firstChild;
440
+ fixListItem(li, list);
441
+ }
442
+ }
443
+ }
444
+
445
+ function fixDeletingFirstCharOfList(ed, e) {
446
+ function listElements(list, li) {
447
+ var elements = [];
448
+ var walker = new tinymce.dom.TreeWalker(li, list);
449
+ for (var node = walker.current(); node; node = walker.next()) {
450
+ if (ed.dom.is(node, 'ol,ul,li')) {
451
+ elements.push(node);
452
+ }
453
+ }
454
+ return elements;
455
+ }
456
+
457
+ if (e.keyCode == tinymce.VK.BACKSPACE) {
458
+ var li = getLi();
459
+ if (li) {
460
+ var list = ed.dom.getParent(li, 'ol,ul');
461
+ if (list && list.firstChild === li) {
462
+ var elements = listElements(list, li);
463
+ ed.execCommand("Outdent", false, elements);
464
+ ed.undoManager.add();
465
+ return Event.cancel(e);
466
+ }
467
+ }
468
+ }
469
+ }
470
+
471
+ function fixDeletingEmptyLiInWebkit(ed, e) {
472
+ var li = getLi();
473
+ if (e.keyCode === tinymce.VK.BACKSPACE && ed.dom.is(li, 'li') && li.parentNode.firstChild!==li) {
474
+ if (ed.dom.select('ul,ol', li).length === 1) {
475
+ var prevLi = li.previousSibling;
476
+ ed.dom.remove(ed.dom.select('br', li));
477
+ ed.dom.remove(li, true);
478
+ var textNodes = tinymce.grep(prevLi.childNodes, function(n){ return n.nodeType === 3 });
479
+ if (textNodes.length === 1) {
480
+ var textNode = textNodes[0]
481
+ ed.selection.setCursorLocation(textNode, textNode.length);
482
+ }
483
+ ed.undoManager.add();
484
+ return Event.cancel(e);
485
+ }
486
+ }
487
+ }
488
+
356
489
  ed.onKeyDown.add(function(_, e) { state = getListKeyState(e); });
357
- ed.onKeyDown.add(cancelEnterAndTab);
490
+ ed.onKeyDown.add(cancelDefaultEvents);
358
491
  ed.onKeyDown.add(imageJoiningListItem);
359
- ed.onKeyPress.add(cancelEnterAndTab);
492
+ ed.onKeyDown.add(createNewLi);
493
+
494
+ if (tinymce.isGecko) {
495
+ ed.onKeyUp.add(fixIndentedListItemForGecko);
496
+ }
497
+ if (tinymce.isIE8) {
498
+ ed.onKeyUp.add(fixIndentedListItemForIE8);
499
+ }
500
+ if (tinymce.isGecko || tinymce.isWebKit) {
501
+ ed.onKeyDown.add(fixDeletingFirstCharOfList);
502
+ }
503
+ if (tinymce.isWebKit) {
504
+ ed.onKeyDown.add(fixDeletingEmptyLiInWebkit);
505
+ }
360
506
  },
361
507
 
362
508
  applyList: function(targetListType, oppositeListType) {
@@ -382,16 +528,18 @@
382
528
  if (element.tagName === 'LI') {
383
529
  // No change required.
384
530
  } else if (element.tagName === 'P' || element.tagName === 'DIV' || element.tagName === 'BODY') {
385
- processBrs(element, function(startSection, br, previousBR) {
531
+ processBrs(element, function(startSection, br) {
386
532
  doWrapList(startSection, br, element.tagName === 'BODY' ? null : startSection.parentNode);
387
533
  li = startSection.parentNode;
388
534
  adjustIndentForNewList(li);
389
535
  cleanupBr(br);
390
536
  });
391
- if (element.tagName === 'P' || selectedBlocks.length > 1) {
392
- dom.split(li.parentNode.parentNode, li.parentNode);
537
+ if (li) {
538
+ if (li.tagName === 'LI' && (element.tagName === 'P' || selectedBlocks.length > 1)) {
539
+ dom.split(li.parentNode.parentNode, li.parentNode);
540
+ }
541
+ attemptMergeWithAdjacent(li.parentNode, true);
393
542
  }
394
- attemptMergeWithAdjacent(li.parentNode, true);
395
543
  return;
396
544
  } else {
397
545
  // Put the list around the element.
@@ -408,7 +556,7 @@
408
556
  }
409
557
 
410
558
  function doWrapList(start, end, template) {
411
- var li, n = start, tmp, i;
559
+ var li, n = start, tmp;
412
560
  while (!dom.isBlock(start.parentNode) && start.parentNode !== dom.getRoot()) {
413
561
  start = dom.split(start.parentNode, start.previousSibling);
414
562
  start = start.nextSibling;
@@ -464,7 +612,6 @@
464
612
  // First mark the BRs that have any part of the previous section selected.
465
613
  var trailingContentSelected = false;
466
614
  each(dom.select(breakElements, element), function(br) {
467
- var b;
468
615
  if (br.hasAttribute && br.hasAttribute('_mce_bogus')) {
469
616
  return true; // Skip the bogus Brs that are put in to appease Firefox and Safari.
470
617
  }
@@ -560,7 +707,7 @@
560
707
  }
561
708
  });
562
709
 
563
- if (hasNonList || hasOppositeType || selectedBlocks.length === 0) {
710
+ if (hasNonList &&!hasSameType || hasOppositeType || selectedBlocks.length === 0) {
564
711
  actions = {
565
712
  'LI': changeList,
566
713
  'H1': makeList,
@@ -572,11 +719,13 @@
572
719
  'P': makeList,
573
720
  'BODY': makeList,
574
721
  'DIV': selectedBlocks.length > 1 ? makeList : wrapList,
575
- defaultAction: wrapList
722
+ defaultAction: wrapList,
723
+ elements: this.selectedBlocks()
576
724
  };
577
725
  } else {
578
726
  actions = {
579
- defaultAction: convertListItemToParagraph
727
+ defaultAction: convertListItemToParagraph,
728
+ elements: this.selectedBlocks()
580
729
  };
581
730
  }
582
731
  this.process(actions);
@@ -619,12 +768,13 @@
619
768
 
620
769
  this.process({
621
770
  'LI': indentLI,
622
- defaultAction: this.adjustPaddingFunction(true)
771
+ defaultAction: this.adjustPaddingFunction(true),
772
+ elements: this.selectedBlocks()
623
773
  });
624
774
 
625
775
  },
626
776
 
627
- outdent: function() {
777
+ outdent: function(ui, elements) {
628
778
  var t = this, ed = t.ed, dom = ed.dom, outdented = [];
629
779
 
630
780
  function outdentLI(element) {
@@ -656,9 +806,11 @@
656
806
  }
657
807
  }
658
808
 
809
+ var listElements = elements && tinymce.is(elements, 'array') ? elements : this.selectedBlocks();
659
810
  this.process({
660
811
  'LI': outdentLI,
661
- defaultAction: this.adjustPaddingFunction(false)
812
+ defaultAction: this.adjustPaddingFunction(false),
813
+ elements: listElements
662
814
  });
663
815
 
664
816
  each(outdented, attemptMergeWithAdjacent);
@@ -667,9 +819,17 @@
667
819
  process: function(actions) {
668
820
  var t = this, sel = t.ed.selection, dom = t.ed.dom, selectedBlocks, r;
669
821
 
822
+ function isEmptyElement(element) {
823
+ var excludeBrsAndBookmarks = tinymce.grep(element.childNodes, function(n) {
824
+ return !(n.nodeName === 'BR' || n.nodeName === 'SPAN' && dom.getAttrib(n, 'data-mce-type') == 'bookmark'
825
+ || n.nodeType == 3 && (n.nodeValue == String.fromCharCode(160) || n.nodeValue == ''));
826
+ });
827
+ return excludeBrsAndBookmarks.length === 0;
828
+ }
829
+
670
830
  function processElement(element) {
671
831
  dom.removeClass(element, '_mce_act_on');
672
- if (!element || element.nodeType !== 1) {
832
+ if (!element || element.nodeType !== 1 || selectedBlocks.length > 1 && isEmptyElement(element)) {
673
833
  return;
674
834
  }
675
835
  element = findItemToOperateOn(element, dom);
@@ -689,11 +849,14 @@
689
849
  container.childNodes[offset].tagName === 'BR';
690
850
  }
691
851
 
692
- selectedBlocks = sel.getSelectedBlocks();
693
- if (selectedBlocks.length === 0) {
694
- selectedBlocks = [ dom.getRoot() ];
852
+ function isInTable() {
853
+ var n = sel.getNode();
854
+ var p = dom.getParent(n, 'td');
855
+ return p !== null;
695
856
  }
696
857
 
858
+ selectedBlocks = actions.elements;
859
+
697
860
  r = sel.getRng(true);
698
861
  if (!r.collapsed) {
699
862
  if (brAtEdgeOfSelection(r.endContainer, r.endOffset - 1)) {
@@ -721,8 +884,12 @@
721
884
  t.splitSafeEach(selectedBlocks, processElement);
722
885
  sel.moveToBookmark(bookmark);
723
886
  bookmark = null;
724
- // Avoids table or image handles being left behind in Firefox.
725
- t.ed.execCommand('mceRepaint');
887
+
888
+ // we avoid doing repaint in a table as this will move the caret out of the table in Firefox 3.6
889
+ if (!isInTable()) {
890
+ // Avoids table or image handles being left behind in Firefox.
891
+ t.ed.execCommand('mceRepaint');
892
+ }
726
893
  },
727
894
 
728
895
  splitSafeEach: function(elements, f) {
@@ -767,6 +934,12 @@
767
934
  };
768
935
  },
769
936
 
937
+ selectedBlocks: function() {
938
+ var ed = this.ed
939
+ var selectedBlocks = ed.selection.getSelectedBlocks();
940
+ return selectedBlocks.length == 0 ? [ ed.dom.getRoot() ] : selectedBlocks;
941
+ },
942
+
770
943
  getInfo: function() {
771
944
  return {
772
945
  longname : 'Lists',