rostra 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. data/README.rdoc +18 -7
  2. data/app/assets/images/rostra/anonymous_avatar.png +0 -0
  3. data/app/assets/javascripts/rostra/application.js +64 -8
  4. data/app/assets/javascripts/rostra/tiny_mce/jquery.tinymce.js +1 -0
  5. data/app/assets/javascripts/rostra/tiny_mce/langs/en.js +1 -0
  6. data/app/assets/javascripts/rostra/tiny_mce/plugins/advhr/css/advhr.css +5 -0
  7. data/app/assets/javascripts/rostra/tiny_mce/plugins/advhr/editor_plugin.js +1 -0
  8. data/app/assets/javascripts/rostra/tiny_mce/plugins/advhr/editor_plugin_src.js +57 -0
  9. data/app/assets/javascripts/rostra/tiny_mce/plugins/advhr/js/rule.js +43 -0
  10. data/app/assets/javascripts/rostra/tiny_mce/plugins/advhr/langs/en_dlg.js +1 -0
  11. data/app/assets/javascripts/rostra/tiny_mce/plugins/advhr/rule.htm +58 -0
  12. data/app/assets/javascripts/rostra/tiny_mce/plugins/advimage/css/advimage.css +13 -0
  13. data/app/assets/javascripts/rostra/tiny_mce/plugins/advimage/editor_plugin.js +1 -0
  14. data/app/assets/javascripts/rostra/tiny_mce/plugins/advimage/editor_plugin_src.js +50 -0
  15. data/app/assets/javascripts/rostra/tiny_mce/plugins/advimage/image.htm +235 -0
  16. data/app/assets/javascripts/rostra/tiny_mce/plugins/advimage/img/sample.gif +0 -0
  17. data/app/assets/javascripts/rostra/tiny_mce/plugins/advimage/js/image.js +462 -0
  18. data/app/assets/javascripts/rostra/tiny_mce/plugins/advimage/langs/en_dlg.js +1 -0
  19. data/app/assets/javascripts/rostra/tiny_mce/plugins/advlink/css/advlink.css +8 -0
  20. data/app/assets/javascripts/rostra/tiny_mce/plugins/advlink/editor_plugin.js +1 -0
  21. data/app/assets/javascripts/rostra/tiny_mce/plugins/advlink/editor_plugin_src.js +61 -0
  22. data/app/assets/javascripts/rostra/tiny_mce/plugins/advlink/js/advlink.js +532 -0
  23. data/app/assets/javascripts/rostra/tiny_mce/plugins/advlink/langs/en_dlg.js +1 -0
  24. data/app/assets/javascripts/rostra/tiny_mce/plugins/advlink/link.htm +338 -0
  25. data/app/assets/javascripts/rostra/tiny_mce/plugins/advlist/editor_plugin.js +1 -0
  26. data/app/assets/javascripts/rostra/tiny_mce/plugins/advlist/editor_plugin_src.js +176 -0
  27. data/app/assets/javascripts/rostra/tiny_mce/plugins/autolink/editor_plugin.js +1 -0
  28. data/app/assets/javascripts/rostra/tiny_mce/plugins/autolink/editor_plugin_src.js +172 -0
  29. data/app/assets/javascripts/rostra/tiny_mce/plugins/autoresize/editor_plugin.js +1 -0
  30. data/app/assets/javascripts/rostra/tiny_mce/plugins/autoresize/editor_plugin_src.js +137 -0
  31. data/app/assets/javascripts/rostra/tiny_mce/plugins/autosave/editor_plugin.js +1 -0
  32. data/app/assets/javascripts/rostra/tiny_mce/plugins/autosave/editor_plugin_src.js +431 -0
  33. data/app/assets/javascripts/rostra/tiny_mce/plugins/autosave/langs/en.js +4 -0
  34. data/app/assets/javascripts/rostra/tiny_mce/plugins/bbcode/editor_plugin.js +1 -0
  35. data/app/assets/javascripts/rostra/tiny_mce/plugins/bbcode/editor_plugin_src.js +120 -0
  36. data/app/assets/javascripts/rostra/tiny_mce/plugins/contextmenu/editor_plugin.js +1 -0
  37. data/app/assets/javascripts/rostra/tiny_mce/plugins/contextmenu/editor_plugin_src.js +160 -0
  38. data/app/assets/javascripts/rostra/tiny_mce/plugins/directionality/editor_plugin.js +1 -0
  39. data/app/assets/javascripts/rostra/tiny_mce/plugins/directionality/editor_plugin_src.js +82 -0
  40. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/editor_plugin.js +1 -0
  41. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/editor_plugin_src.js +43 -0
  42. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/emotions.htm +41 -0
  43. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-cool.gif +0 -0
  44. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-cry.gif +0 -0
  45. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-embarassed.gif +0 -0
  46. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif +0 -0
  47. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-frown.gif +0 -0
  48. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-innocent.gif +0 -0
  49. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-kiss.gif +0 -0
  50. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-laughing.gif +0 -0
  51. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif +0 -0
  52. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-sealed.gif +0 -0
  53. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-smile.gif +0 -0
  54. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-surprised.gif +0 -0
  55. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif +0 -0
  56. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-undecided.gif +0 -0
  57. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-wink.gif +0 -0
  58. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/img/smiley-yell.gif +0 -0
  59. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/js/emotions.js +22 -0
  60. data/app/assets/javascripts/rostra/tiny_mce/plugins/emotions/langs/en_dlg.js +1 -0
  61. data/app/assets/javascripts/rostra/tiny_mce/plugins/example/dialog.htm +22 -0
  62. data/app/assets/javascripts/rostra/tiny_mce/plugins/example/editor_plugin.js +1 -0
  63. data/app/assets/javascripts/rostra/tiny_mce/plugins/example/editor_plugin_src.js +84 -0
  64. data/app/assets/javascripts/rostra/tiny_mce/plugins/example/img/example.gif +0 -0
  65. data/app/assets/javascripts/rostra/tiny_mce/plugins/example/js/dialog.js +19 -0
  66. data/app/assets/javascripts/rostra/tiny_mce/plugins/example/langs/en.js +3 -0
  67. data/app/assets/javascripts/rostra/tiny_mce/plugins/example/langs/en_dlg.js +3 -0
  68. data/app/assets/javascripts/rostra/tiny_mce/plugins/example_dependency/editor_plugin.js +1 -0
  69. data/app/assets/javascripts/rostra/tiny_mce/plugins/example_dependency/editor_plugin_src.js +50 -0
  70. data/app/assets/javascripts/rostra/tiny_mce/plugins/fullpage/css/fullpage.css +143 -0
  71. data/app/assets/javascripts/rostra/tiny_mce/plugins/fullpage/editor_plugin.js +1 -0
  72. data/app/assets/javascripts/rostra/tiny_mce/plugins/fullpage/editor_plugin_src.js +405 -0
  73. data/app/assets/javascripts/rostra/tiny_mce/plugins/fullpage/fullpage.htm +259 -0
  74. data/app/assets/javascripts/rostra/tiny_mce/plugins/fullpage/js/fullpage.js +232 -0
  75. data/app/assets/javascripts/rostra/tiny_mce/plugins/fullpage/langs/en_dlg.js +1 -0
  76. data/app/assets/javascripts/rostra/tiny_mce/plugins/fullscreen/editor_plugin.js +1 -0
  77. data/app/assets/javascripts/rostra/tiny_mce/plugins/fullscreen/editor_plugin_src.js +159 -0
  78. data/app/assets/javascripts/rostra/tiny_mce/plugins/fullscreen/fullscreen.htm +110 -0
  79. data/app/assets/javascripts/rostra/tiny_mce/plugins/iespell/editor_plugin.js +1 -0
  80. data/app/assets/javascripts/rostra/tiny_mce/plugins/iespell/editor_plugin_src.js +54 -0
  81. data/app/assets/javascripts/rostra/tiny_mce/plugins/inlinepopups/editor_plugin.js +1 -0
  82. data/app/assets/javascripts/rostra/tiny_mce/plugins/inlinepopups/editor_plugin_src.js +699 -0
  83. data/app/assets/javascripts/rostra/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
  84. data/app/assets/javascripts/rostra/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
  85. data/app/assets/javascripts/rostra/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
  86. data/app/assets/javascripts/rostra/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
  87. data/app/assets/javascripts/rostra/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
  88. data/app/assets/javascripts/rostra/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
  89. data/app/assets/javascripts/rostra/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
  90. data/app/assets/javascripts/rostra/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +90 -0
  91. data/app/assets/javascripts/rostra/tiny_mce/plugins/inlinepopups/template.htm +387 -0
  92. data/app/assets/javascripts/rostra/tiny_mce/plugins/insertdatetime/editor_plugin.js +1 -0
  93. data/app/assets/javascripts/rostra/tiny_mce/plugins/insertdatetime/editor_plugin_src.js +83 -0
  94. data/app/assets/javascripts/rostra/tiny_mce/plugins/layer/editor_plugin.js +1 -0
  95. data/app/assets/javascripts/rostra/tiny_mce/plugins/layer/editor_plugin_src.js +214 -0
  96. data/app/assets/javascripts/rostra/tiny_mce/plugins/legacyoutput/editor_plugin.js +1 -0
  97. data/app/assets/javascripts/rostra/tiny_mce/plugins/legacyoutput/editor_plugin_src.js +139 -0
  98. data/app/assets/javascripts/rostra/tiny_mce/plugins/lists/editor_plugin.js +1 -0
  99. data/app/assets/javascripts/rostra/tiny_mce/plugins/lists/editor_plugin_src.js +781 -0
  100. data/app/assets/javascripts/rostra/tiny_mce/plugins/media/css/media.css +17 -0
  101. data/app/assets/javascripts/rostra/tiny_mce/plugins/media/editor_plugin.js +1 -0
  102. data/app/assets/javascripts/rostra/tiny_mce/plugins/media/editor_plugin_src.js +822 -0
  103. data/app/assets/javascripts/rostra/tiny_mce/plugins/media/js/embed.js +73 -0
  104. data/app/assets/javascripts/rostra/tiny_mce/plugins/media/js/media.js +389 -0
  105. data/app/assets/javascripts/rostra/tiny_mce/plugins/media/langs/en_dlg.js +1 -0
  106. data/app/assets/javascripts/rostra/tiny_mce/plugins/media/media.htm +897 -0
  107. data/app/assets/javascripts/rostra/tiny_mce/plugins/media/moxieplayer.swf +0 -0
  108. data/app/assets/javascripts/rostra/tiny_mce/plugins/nonbreaking/editor_plugin.js +1 -0
  109. data/app/assets/javascripts/rostra/tiny_mce/plugins/nonbreaking/editor_plugin_src.js +54 -0
  110. data/app/assets/javascripts/rostra/tiny_mce/plugins/noneditable/editor_plugin.js +1 -0
  111. data/app/assets/javascripts/rostra/tiny_mce/plugins/noneditable/editor_plugin_src.js +95 -0
  112. data/app/assets/javascripts/rostra/tiny_mce/plugins/pagebreak/editor_plugin.js +1 -0
  113. data/app/assets/javascripts/rostra/tiny_mce/plugins/pagebreak/editor_plugin_src.js +74 -0
  114. data/app/assets/javascripts/rostra/tiny_mce/plugins/paste/editor_plugin.js +1 -0
  115. data/app/assets/javascripts/rostra/tiny_mce/plugins/paste/editor_plugin_src.js +861 -0
  116. data/app/assets/javascripts/rostra/tiny_mce/plugins/paste/js/pastetext.js +36 -0
  117. data/app/assets/javascripts/rostra/tiny_mce/plugins/paste/js/pasteword.js +51 -0
  118. data/app/assets/javascripts/rostra/tiny_mce/plugins/paste/langs/en_dlg.js +1 -0
  119. data/app/assets/javascripts/rostra/tiny_mce/plugins/paste/pastetext.htm +27 -0
  120. data/app/assets/javascripts/rostra/tiny_mce/plugins/paste/pasteword.htm +21 -0
  121. data/app/assets/javascripts/rostra/tiny_mce/plugins/preview/editor_plugin.js +1 -0
  122. data/app/assets/javascripts/rostra/tiny_mce/plugins/preview/editor_plugin_src.js +53 -0
  123. data/app/assets/javascripts/rostra/tiny_mce/plugins/preview/example.html +28 -0
  124. data/app/assets/javascripts/rostra/tiny_mce/plugins/preview/jscripts/embed.js +73 -0
  125. data/app/assets/javascripts/rostra/tiny_mce/plugins/preview/preview.html +17 -0
  126. data/app/assets/javascripts/rostra/tiny_mce/plugins/print/editor_plugin.js +1 -0
  127. data/app/assets/javascripts/rostra/tiny_mce/plugins/print/editor_plugin_src.js +34 -0
  128. data/app/assets/javascripts/rostra/tiny_mce/plugins/save/editor_plugin.js +1 -0
  129. data/app/assets/javascripts/rostra/tiny_mce/plugins/save/editor_plugin_src.js +101 -0
  130. data/app/assets/javascripts/rostra/tiny_mce/plugins/searchreplace/css/searchreplace.css +6 -0
  131. data/app/assets/javascripts/rostra/tiny_mce/plugins/searchreplace/editor_plugin.js +1 -0
  132. data/app/assets/javascripts/rostra/tiny_mce/plugins/searchreplace/editor_plugin_src.js +61 -0
  133. data/app/assets/javascripts/rostra/tiny_mce/plugins/searchreplace/js/searchreplace.js +142 -0
  134. data/app/assets/javascripts/rostra/tiny_mce/plugins/searchreplace/langs/en_dlg.js +1 -0
  135. data/app/assets/javascripts/rostra/tiny_mce/plugins/searchreplace/searchreplace.htm +100 -0
  136. data/app/assets/javascripts/rostra/tiny_mce/plugins/spellchecker/css/content.css +1 -0
  137. data/app/assets/javascripts/rostra/tiny_mce/plugins/spellchecker/editor_plugin.js +1 -0
  138. data/app/assets/javascripts/rostra/tiny_mce/plugins/spellchecker/editor_plugin_src.js +434 -0
  139. data/app/assets/javascripts/rostra/tiny_mce/plugins/spellchecker/img/wline.gif +0 -0
  140. data/app/assets/javascripts/rostra/tiny_mce/plugins/style/css/props.css +13 -0
  141. data/app/assets/javascripts/rostra/tiny_mce/plugins/style/editor_plugin.js +1 -0
  142. data/app/assets/javascripts/rostra/tiny_mce/plugins/style/editor_plugin_src.js +55 -0
  143. data/app/assets/javascripts/rostra/tiny_mce/plugins/style/js/props.js +635 -0
  144. data/app/assets/javascripts/rostra/tiny_mce/plugins/style/langs/en_dlg.js +1 -0
  145. data/app/assets/javascripts/rostra/tiny_mce/plugins/style/props.htm +840 -0
  146. data/app/assets/javascripts/rostra/tiny_mce/plugins/tabfocus/editor_plugin.js +1 -0
  147. data/app/assets/javascripts/rostra/tiny_mce/plugins/tabfocus/editor_plugin_src.js +122 -0
  148. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/cell.htm +180 -0
  149. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/css/cell.css +17 -0
  150. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/css/row.css +25 -0
  151. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/css/table.css +13 -0
  152. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/editor_plugin.js +1 -0
  153. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/editor_plugin_src.js +1364 -0
  154. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/js/cell.js +319 -0
  155. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/js/merge_cells.js +27 -0
  156. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/js/row.js +237 -0
  157. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/js/table.js +450 -0
  158. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/langs/en_dlg.js +1 -0
  159. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/merge_cells.htm +32 -0
  160. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/row.htm +158 -0
  161. data/app/assets/javascripts/rostra/tiny_mce/plugins/table/table.htm +188 -0
  162. data/app/assets/javascripts/rostra/tiny_mce/plugins/template/blank.htm +12 -0
  163. data/app/assets/javascripts/rostra/tiny_mce/plugins/template/css/template.css +23 -0
  164. data/app/assets/javascripts/rostra/tiny_mce/plugins/template/editor_plugin.js +1 -0
  165. data/app/assets/javascripts/rostra/tiny_mce/plugins/template/editor_plugin_src.js +159 -0
  166. data/app/assets/javascripts/rostra/tiny_mce/plugins/template/js/template.js +106 -0
  167. data/app/assets/javascripts/rostra/tiny_mce/plugins/template/langs/en_dlg.js +1 -0
  168. data/app/assets/javascripts/rostra/tiny_mce/plugins/template/template.htm +31 -0
  169. data/app/assets/javascripts/rostra/tiny_mce/plugins/visualchars/editor_plugin.js +1 -0
  170. data/app/assets/javascripts/rostra/tiny_mce/plugins/visualchars/editor_plugin_src.js +83 -0
  171. data/app/assets/javascripts/rostra/tiny_mce/plugins/wordcount/editor_plugin.js +1 -0
  172. data/app/assets/javascripts/rostra/tiny_mce/plugins/wordcount/editor_plugin_src.js +114 -0
  173. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/abbr.htm +142 -0
  174. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/acronym.htm +142 -0
  175. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/attributes.htm +149 -0
  176. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/cite.htm +142 -0
  177. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/css/attributes.css +11 -0
  178. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/css/popup.css +9 -0
  179. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/del.htm +162 -0
  180. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +1 -0
  181. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +132 -0
  182. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/ins.htm +162 -0
  183. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/js/abbr.js +28 -0
  184. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/js/acronym.js +28 -0
  185. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/js/attributes.js +111 -0
  186. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/js/cite.js +28 -0
  187. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/js/del.js +53 -0
  188. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/js/element_common.js +229 -0
  189. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/js/ins.js +53 -0
  190. data/app/assets/javascripts/rostra/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js +1 -0
  191. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/about.htm +52 -0
  192. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/anchor.htm +26 -0
  193. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/charmap.htm +51 -0
  194. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/color_picker.htm +74 -0
  195. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/editor_template.js +1 -0
  196. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/editor_template_src.js +1358 -0
  197. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/image.htm +80 -0
  198. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
  199. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/img/flash.gif +0 -0
  200. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/img/icons.gif +0 -0
  201. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/img/iframe.gif +0 -0
  202. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/img/pagebreak.gif +0 -0
  203. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/img/quicktime.gif +0 -0
  204. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/img/realmedia.gif +0 -0
  205. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/img/shockwave.gif +0 -0
  206. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/img/trans.gif +0 -0
  207. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/img/video.gif +0 -0
  208. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/img/windowsmedia.gif +0 -0
  209. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/js/about.js +73 -0
  210. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/js/anchor.js +42 -0
  211. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/js/charmap.js +355 -0
  212. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/js/color_picker.js +329 -0
  213. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/js/image.js +251 -0
  214. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/js/link.js +153 -0
  215. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/js/source_editor.js +56 -0
  216. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/langs/en.js +1 -0
  217. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/langs/en_dlg.js +1 -0
  218. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/link.htm +57 -0
  219. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/shortcuts.htm +47 -0
  220. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/default/content.css +50 -0
  221. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/default/dialog.css +117 -0
  222. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  223. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  224. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  225. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  226. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
  227. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  228. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/default/ui.css +214 -0
  229. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/highcontrast/content.css +24 -0
  230. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +105 -0
  231. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/highcontrast/ui.css +102 -0
  232. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/o2k7/content.css +48 -0
  233. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/o2k7/dialog.css +117 -0
  234. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  235. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  236. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  237. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/o2k7/ui.css +217 -0
  238. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +8 -0
  239. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +5 -0
  240. data/app/assets/javascripts/rostra/tiny_mce/themes/advanced/source_editor.htm +25 -0
  241. data/app/assets/javascripts/rostra/tiny_mce/themes/simple/editor_template.js +1 -0
  242. data/app/assets/javascripts/rostra/tiny_mce/themes/simple/editor_template_src.js +84 -0
  243. data/app/assets/javascripts/rostra/tiny_mce/themes/simple/img/icons.gif +0 -0
  244. data/app/assets/javascripts/rostra/tiny_mce/themes/simple/langs/en.js +1 -0
  245. data/app/assets/javascripts/rostra/tiny_mce/themes/simple/skins/default/content.css +25 -0
  246. data/app/assets/javascripts/rostra/tiny_mce/themes/simple/skins/default/ui.css +32 -0
  247. data/app/assets/javascripts/rostra/tiny_mce/themes/simple/skins/o2k7/content.css +17 -0
  248. data/app/assets/javascripts/rostra/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png +0 -0
  249. data/app/assets/javascripts/rostra/tiny_mce/themes/simple/skins/o2k7/ui.css +35 -0
  250. data/app/assets/javascripts/rostra/tiny_mce/tiny_mce.js +1 -0
  251. data/app/assets/javascripts/rostra/tiny_mce/tiny_mce_popup.js +5 -0
  252. data/app/assets/javascripts/rostra/tiny_mce/tiny_mce_src.js +15617 -0
  253. data/app/assets/javascripts/rostra/tiny_mce/utils/editable_selects.js +70 -0
  254. data/app/assets/javascripts/rostra/tiny_mce/utils/form_utils.js +210 -0
  255. data/app/assets/javascripts/rostra/tiny_mce/utils/mctabs.js +162 -0
  256. data/app/assets/javascripts/rostra/tiny_mce/utils/validate.js +252 -0
  257. data/app/assets/stylesheets/rostra/application.css +113 -20
  258. data/app/assets/stylesheets/rostra/flash_messages.css +3 -0
  259. data/app/assets/stylesheets/rostra/forms.css +4 -4
  260. data/app/assets/stylesheets/rostra/typography.css +1 -0
  261. data/app/controllers/rostra/answers_controller.rb +1 -8
  262. data/app/controllers/rostra/application_controller.rb +17 -3
  263. data/app/controllers/rostra/comments_controller.rb +31 -0
  264. data/app/controllers/rostra/questions_controller.rb +3 -9
  265. data/app/helpers/rostra/application_helper.rb +58 -0
  266. data/app/models/comment.rb +13 -0
  267. data/app/models/rostra/ability.rb +7 -2
  268. data/app/models/rostra/answer.rb +1 -0
  269. data/app/models/rostra/question.rb +20 -0
  270. data/app/views/layouts/rostra/application.html.erb +0 -2
  271. data/app/views/rostra/answers/_form.html.erb +2 -2
  272. data/app/views/rostra/answers/vote.js.erb +2 -1
  273. data/app/views/rostra/questions/_form.html.erb +2 -2
  274. data/app/views/rostra/questions/index.html.erb +24 -14
  275. data/app/views/rostra/questions/show.html.erb +46 -13
  276. data/app/views/rostra/questions/vote.js.erb +2 -1
  277. data/app/views/rostra/shared/_sidebar.html.erb +9 -2
  278. data/app/views/rostra/shared/_votes.html.erb +13 -21
  279. data/config/routes.rb +1 -0
  280. data/db/migrate/20111012020025_create_comments.rb +18 -0
  281. data/db/migrate/20111016021105_create_impressions_table.rb +37 -0
  282. data/lib/generators/rostra/install_generator.rb +14 -0
  283. data/lib/generators/rostra/templates/config/initializers/rostra.rb +26 -0
  284. data/lib/rostra/config.rb +38 -0
  285. data/lib/rostra/engine.rb +3 -1
  286. data/lib/rostra/version.rb +1 -1
  287. data/lib/rostra.rb +60 -5
  288. metadata +296 -15
  289. data/app/helpers/rostra/questions_helper.rb +0 -4
  290. data/app/views/rostra/shared/_answers_votes.html.erb +0 -27
@@ -4,22 +4,17 @@
4
4
 
5
5
  <div id="page_content">
6
6
 
7
- <div class="question">
8
- <%= render 'rostra/shared/votes' %>
7
+ <div class="question" id="<%= dom_id(@question) %>">
8
+ <%= render partial: 'rostra/shared/votes', locals: { resource: @question } %>
9
+ <%= image_tag avatar_url(@question.user), class: 'avatar' %>
9
10
  <h3 class="title"><%= @question.title %></h3>
10
-
11
11
  <cite>
12
- Asked by <%= @question.user.name %>
12
+ Asked by <%= @question.user.rostra_user_name %>
13
13
  <%= link_to 'edit', edit_question_path(@question) if can? :manage, @question %>
14
14
  </cite>
15
15
  <div class="text"><%= simple_format(@question.details) %></div>
16
16
  <div class="timestamp"><%= time_ago_in_words(@question.updated_at) %> ago</div>
17
- <div class="tags">
18
- Tags:
19
- <% @question.tags.each do |tag| %>
20
- <%= link_to tag, "" %>
21
- <% end %>
22
- </div>
17
+ <%= tag_list(@question) %>
23
18
  </div>
24
19
 
25
20
  <% unless @answers.empty? %>
@@ -27,13 +22,51 @@
27
22
  <div id="answers">
28
23
  <% @answers.each do |answer| %>
29
24
  <div class="answer" id="<%= dom_id(answer) %>">
30
- <%= render partial: 'rostra/shared/answers_votes', locals: {answer: answer} %>
25
+ <%= render partial: 'rostra/shared/votes', locals: { resource: answer } %>
26
+ <%= image_tag avatar_url(answer.user), class: 'avatar' %>
31
27
  <cite>
32
- <%= answer.user.name %> says:
28
+ <%= answer.user.rostra_user_name %> says:
33
29
  <%= link_to('edit', edit_question_answer_path(@question, answer)) if can? :manage, answer %>
34
30
  </cite>
35
31
  <div class="text"><%= simple_format(answer.text) %></div>
36
32
  <div class="timestamp"><%= time_ago_in_words(answer.updated_at) %> ago</div>
33
+
34
+ <% if answer.comments.any? %>
35
+ <div class="comments">
36
+ <% answer.comments.each do |comment| %>
37
+ <div class="comment text">
38
+ <div class="editable" data-ajax_url="<%= question_comment_path(@question, comment) %>"><%= comment.comment %></div>
39
+ <div class="timestamp">
40
+ <%= comment.user.rostra_user_name %> – <%= time_ago_in_words(comment.updated_at) %> ago
41
+ <% if can? :manage, comment %>
42
+ <%= link_to('edit', question_comment_path(@question, comment), class: 'edit_comment') %>
43
+ <%= link_to('delete', question_comment_path(@question, comment), method: :delete, confirm: 'Are you sure?') if can? :manage, comment %>
44
+ <% end %>
45
+ </div>
46
+ </div>
47
+ <% end %>
48
+ </div>
49
+ <% end %>
50
+
51
+
52
+ <% if can? :manage, Comment %>
53
+ <%= link_to("leave comment", '#', class: 'leave_comment') %>
54
+ <% else %>
55
+ <%= link_to("login leave comment", main_app_login_path) %>
56
+ <% end %>
57
+
58
+
59
+ <% if can? :manage, Comment %>
60
+ <%= simple_form_for [@question, answer.comments.build], validate: true do |f| %>
61
+ <% # TODO: Should not need hidden fields. Why doesn't build apply the foreign keys? %>
62
+ <%= f.hidden_field :user_id, value: rostra_user.id %>
63
+ <%= f.hidden_field :commentable_id, value: answer.id %>
64
+ <%= f.hidden_field :commentable_type, value: "Rostra::Answer" %>
65
+ <%= f.input :comment, label: '' %>
66
+ <%= f.submit 'post comment' %>
67
+ <% end %>
68
+ <% end %>
69
+
37
70
  </div>
38
71
  <% end %>
39
72
  </div>
@@ -42,6 +75,6 @@
42
75
  <% if user_signed_in? %>
43
76
  <%= render 'rostra/answers/form' %>
44
77
  <% else %>
45
- <%= link_to "Login to answer this question", main_app.new_user_session_path, class: 'button' %>
78
+ <%= link_to "Login to answer this question", main_app_login_path, class: 'button' %>
46
79
  <% end %>
47
80
  </div><!-- page_content -->
@@ -1 +1,2 @@
1
- $('.vote_wrapper').replaceWith('<%= escape_javascript(render 'rostra/shared/votes') %>');
1
+ var selector = "#rostra_question_<%= @question.id%> .vote_wrapper";
2
+ $(selector).replaceWith('<%= escape_javascript(render partial: 'rostra/shared/votes', locals: { resource: @question }) %>');
@@ -2,7 +2,14 @@
2
2
  <% if user_signed_in? %>
3
3
  <%= link_to 'Ask a question', new_question_path, class: "button" %>
4
4
  <% else %>
5
- <%= link_to 'Login to ask a question', main_app.new_user_session_path, class: "button" %>
5
+ <%= link_to 'Login to ask a question', main_app_login_path, class: "button" %>
6
6
  <% end %>
7
- </div><!--sidebar-->
8
7
 
8
+ <h4>Trending questions</h4>
9
+ <ul id="trending_questions">
10
+ <% Rostra::Question.trending.each do |question| %>
11
+ <li><%= link_to question.title, question %></li>
12
+ <% end %>
13
+ </ul>
14
+
15
+ </div>
@@ -1,27 +1,19 @@
1
1
  <div class="vote_wrapper">
2
-
3
- <% if user_signed_in? %>
4
-
5
- <% up_selected = current_user.voted_for?(@question) ? 'selected' : "" %>
6
- <%= link_to('Vote Question Up', vote_question_path(@question, vote_type: 'up'), method: :put, remote: true, class: "vote up #{up_selected}") %>
7
-
8
- <div class="count"><%= @question.plusminus %></div>
9
-
10
- <% down_selected = current_user.voted_against?(@question) ? 'selected' : "" %>
11
- <%= link_to('Vote Question Down', vote_question_path(@question, vote_type: 'down'), method: :put, remote: true, class: "vote down #{down_selected}") %>
12
-
13
- <% else %>
14
-
15
- <%= link_to('Vote Question Up', '#', class: "vote up login_flash") %>
16
- <div class="count"><%= @question.plusminus %></div>
17
- <%= link_to('Vote Question Down', '#', class: "vote down login_flash") %>
18
-
19
- <% end %>
20
-
2
+ <%= link_to_vote(:up, resource) %>
3
+ <div class="count"><%= resource.plusminus %></div>
4
+ <%= link_to_vote(:down, resource) %>
21
5
  </div>
22
6
 
23
7
  <% unless user_signed_in? %>
24
8
  <div class="hidden flash" id="flash_notice">
25
- You must <%= link_to 'login', main_app.new_user_session_path %> or <%= link_to 'signup', main_app.new_user_registration_path %> in order to vote
9
+ You must <%= link_to 'login', main_app_login_path %> or <%= link_to 'signup', main_app_signup_path %> in order to vote
10
+ <%= link_to 'close', '#', class: 'close' %>
11
+ </div>
12
+ <% end %>
13
+
14
+ <% if can? :manage, resource %>
15
+ <div class="hidden flash" id="flash_notice">
16
+ You cannot vote on your own <%= class_name(resource) %>
17
+ <%= link_to 'close', '#', class: 'close' %>
26
18
  </div>
27
- <% end %>
19
+ <% end %>
data/config/routes.rb CHANGED
@@ -4,6 +4,7 @@ Rostra::Engine.routes.draw do
4
4
  resources :answers do
5
5
  put :vote, :on => :member
6
6
  end
7
+ resources :comments, :only => [:create, :update, :destroy]
7
8
  end
8
9
 
9
10
  root :to => "questions#index"
@@ -0,0 +1,18 @@
1
+ class CreateComments < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :comments do |t|
4
+ t.text :comment
5
+ t.references :commentable, :polymorphic => true
6
+ t.references :user
7
+ t.timestamps
8
+ end
9
+
10
+ add_index :comments, :commentable_type
11
+ add_index :comments, :commentable_id
12
+ add_index :comments, :user_id
13
+ end
14
+
15
+ def self.down
16
+ drop_table :comments
17
+ end
18
+ end
@@ -0,0 +1,37 @@
1
+ class CreateImpressionsTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :impressions, :force => true do |t|
4
+ t.string :impressionable_type
5
+ t.integer :impressionable_id
6
+ t.integer :user_id
7
+ t.string :controller_name
8
+ t.string :action_name
9
+ t.string :view_name
10
+ t.string :request_hash
11
+ t.string :session_hash
12
+ t.string :ip_address
13
+ t.string :message
14
+ t.string :referrer
15
+ t.timestamps
16
+ end
17
+ add_index :impressions, [:impressionable_type, :impressionable_id, :request_hash], :name => "poly_request_index", :unique => false
18
+ add_index :impressions, [:impressionable_type, :impressionable_id, :ip_address], :name => "poly_ip_index", :unique => false
19
+ add_index :impressions, [:impressionable_type, :impressionable_id, :session_hash], :name => "poly_session_index", :unique => false
20
+ add_index :impressions, [:controller_name,:action_name,:request_hash], :name => "controlleraction_request_index", :unique => false
21
+ add_index :impressions, [:controller_name,:action_name,:ip_address], :name => "controlleraction_ip_index", :unique => false
22
+ add_index :impressions, [:controller_name,:action_name,:session_hash], :name => "controlleraction_session_index", :unique => false
23
+ add_index :impressions, :user_id
24
+ end
25
+
26
+ def self.down
27
+ remove_index :impressions, :name => :poly_request_index
28
+ remove_index :impressions, :name => :poly_ip_index
29
+ remove_index :impressions, :name => :poly_session_index
30
+ remove_index :impressions, :name => :controlleraction_request_index
31
+ remove_index :impressions, :name => :controlleraction_ip_index
32
+ remove_index :impressions, :name => :controlleraction_session_index
33
+ remove_index :impressions, :user_id
34
+
35
+ drop_table :impressions
36
+ end
37
+ end
@@ -0,0 +1,14 @@
1
+ module Rostra
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ desc "Copy Rostra config file"
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ class_option :template_engine
7
+
8
+ def copy_config
9
+ directory 'config'
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,26 @@
1
+ # Use this setup block to configure all options available in Rostra.
2
+ Rostra::Config.setup do |config|
3
+ # Helper method used to access current user in the view
4
+ # config.rostra_user = :current_user
5
+
6
+ # Method called on the rostra'd model (e.g. User) to access the users full name
7
+ # config.rostra_user_name = :name
8
+
9
+ # Method called on the rostra'd model (e.g. User) to access the users email address
10
+ # config.rostra_user_email = :email
11
+
12
+ # Method called on the rostra'd model (e.g. User) to access the users avatar. It
13
+ # looks for an avatar in this order:
14
+ #
15
+ # 1. Calls the method defined here
16
+ # 2. Uses the users email address to looks for a gravatar
17
+ # 3. Renders <tt>app/assets/images/rostra/anonymous_avatar.png</tt>
18
+ #
19
+ # config.rostra_user_avatar = :avatar
20
+
21
+ # Route to your login page
22
+ # config.main_app_login_path = :new_user_session_path
23
+
24
+ # Route to your signup page
25
+ # config.main_app_signup_path = :new_user_registration_path
26
+ end
@@ -0,0 +1,38 @@
1
+ module Rostra
2
+ module Config
3
+ # Helper method used to access current user in the view
4
+ mattr_accessor :rostra_user
5
+ @@rostra_user = :current_user
6
+
7
+ # Method called on the rostra'd model (e.g. User) to access the users full name
8
+ mattr_accessor :rostra_user_name
9
+ @@rostra_user_name = :name
10
+
11
+ # Method called on the rostra'd model (e.g. User) to access the users email
12
+ mattr_accessor :rostra_user_email
13
+ @@rostra_user_email = :email
14
+
15
+ # Method called on the rostra'd model (e.g. User) to access the users avatar. It looks
16
+ # for an avatar in this order:
17
+ #
18
+ # 1. Calls the method defined here
19
+ # 2. Uses the users email address to looks for a gravatar
20
+ # 3. Renders <tt>app/assets/images/rostra/anonymous_avatar.png</tt>
21
+ #
22
+ mattr_accessor :rostra_user_avatar
23
+ @@rostra_user_avatar = :avatar
24
+
25
+ # Route to your login page
26
+ mattr_accessor :main_app_login_path
27
+ @@main_app_login_path = :new_user_session_path
28
+
29
+ # Route to your signup page
30
+ mattr_accessor :main_app_signup_path
31
+ @@main_app_signup_path = :new_user_registration_path
32
+
33
+ def self.setup
34
+ yield self
35
+ end
36
+
37
+ end
38
+ end
data/lib/rostra/engine.rb CHANGED
@@ -6,8 +6,10 @@ module Rostra
6
6
  require 'jquery-rails'
7
7
  require 'client_side_validations'
8
8
  require 'thumbs_up'
9
- require 'grb'
9
+ require 'acts_as_commentable'
10
+ require 'impressionist'
10
11
 
11
12
  isolate_namespace Rostra
13
+
12
14
  end
13
15
  end
@@ -1,3 +1,3 @@
1
1
  module Rostra
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/rostra.rb CHANGED
@@ -1,11 +1,66 @@
1
1
  require "rostra/engine"
2
+ require "rostra/config"
2
3
 
3
4
  module Rostra
4
5
 
5
- # def self.included(base)
6
- # def base.rostra
7
- # base.has_many :questions
8
- # end
9
- # end
6
+ module ActsAsRostra
7
+ def self.included(base)
8
+ base.extend ClassMethods
9
+ end
10
+
11
+ module ClassMethods
12
+
13
+ # Include this method in your <tt>rostra</tt>'d model to add the necessary accociations and
14
+ # and methods:
15
+ #
16
+ # class User < ActiveRecord::Base
17
+ # rostra
18
+ # end
19
+ #
20
+ def rostra
21
+ has_many :questions
22
+ has_many :answers
23
+ has_many :comments
24
+ acts_as_voter
25
+
26
+ include InstanceMethods
27
+ end
28
+ end
29
+
30
+ module InstanceMethods
31
+
32
+ # Built atop the <tt>thumbs_up</tt> API, this method does some conditional voting:
33
+ #
34
+ # * Clear the user's existing vote if...
35
+ # - they've already voted up and attempt to vote up again
36
+ # - they've already voted down and attempt to vote down again
37
+ # * Ensure the user only votes once per resource (i.e. question or answer)
38
+ # * Clear previous votes before casting a new vote (e.g. they've already voted up and
39
+ # click to vote down, then clear the old up vote prior to casting the new down vote)
40
+ #
41
+ def vote_on(resource, direction)
42
+ direction = direction.to_sym
43
+ if (direction == :up && voted_for?(resource)) || (direction == :down && voted_against?(resource))
44
+ clear_votes(resource)
45
+ else
46
+ vote(resource, {:exclusive => true, :direction => direction})
47
+ end
48
+ end
49
+
50
+ # Rostra will use this method to find a user's full name.
51
+ #
52
+ def rostra_user_name
53
+ send(Rostra::Config.rostra_user_name)
54
+ end
55
+
56
+ # Rostra will use this method to find a user's email address.
57
+ #
58
+ def rostra_user_email
59
+ send(Rostra::Config.rostra_user_email)
60
+ end
61
+ end
62
+ end
10
63
 
11
64
  end
65
+
66
+ ActiveRecord::Base.send(:include, Rostra::ActsAsRostra)