muck-contents 0.1.1

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 (528) hide show
  1. data/.document +5 -0
  2. data/.gitignore +5 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.rdoc +112 -0
  5. data/Rakefile +101 -0
  6. data/VERSION +1 -0
  7. data/app/controllers/admin/muck/contents_controller.rb +15 -0
  8. data/app/controllers/muck/contents_controller.rb +186 -0
  9. data/app/helpers/muck_contents_helper.rb +22 -0
  10. data/app/views/admin/contents/index.html.erb +28 -0
  11. data/app/views/contents/_admin.html.erb +7 -0
  12. data/app/views/contents/_form.html.erb +13 -0
  13. data/app/views/contents/edit.html.erb +6 -0
  14. data/app/views/contents/new.html.erb +5 -0
  15. data/app/views/contents/show.html.erb +5 -0
  16. data/config/muck_contents_routes.rb +8 -0
  17. data/db/migrate/20090703055724_add_contents.rb +49 -0
  18. data/db/migrate/20090806230610_add_layout_to_contents.rb +9 -0
  19. data/db/migrate/20090808005918_add_scope_index_to_slugs.rb +9 -0
  20. data/db/migrate/20090808175401_add_contents_comment_counter_cache.rb +9 -0
  21. data/lib/action_controller/acts/muck_content_handler.rb +84 -0
  22. data/lib/active_record/acts/muck_content.rb +313 -0
  23. data/lib/active_record/acts/muck_content_permission.rb +38 -0
  24. data/lib/active_record/acts/muck_content_translation.rb +40 -0
  25. data/lib/muck_contents/initialize_routes.rb +8 -0
  26. data/lib/muck_contents/tasks.rb +28 -0
  27. data/lib/muck_contents.rb +38 -0
  28. data/locales/en.yml +31 -0
  29. data/muck-contents.gemspec +641 -0
  30. data/public/javascripts/tiny_mce/langs/en.js +154 -0
  31. data/public/javascripts/tiny_mce/license.txt +504 -0
  32. data/public/javascripts/tiny_mce/plugins/advfiletoo/css/advfile.css +34 -0
  33. data/public/javascripts/tiny_mce/plugins/advfiletoo/editor_plugin.js +55 -0
  34. data/public/javascripts/tiny_mce/plugins/advfiletoo/editor_plugin_src.js +55 -0
  35. data/public/javascripts/tiny_mce/plugins/advfiletoo/file.htm +139 -0
  36. data/public/javascripts/tiny_mce/plugins/advfiletoo/img/upload.gif +0 -0
  37. data/public/javascripts/tiny_mce/plugins/advfiletoo/js/functions.js +286 -0
  38. data/public/javascripts/tiny_mce/plugins/advfiletoo/langs/en_dlg.js +48 -0
  39. data/public/javascripts/tiny_mce/plugins/advhr/css/advhr.css +5 -0
  40. data/public/javascripts/tiny_mce/plugins/advhr/editor_plugin.js +1 -0
  41. data/public/javascripts/tiny_mce/plugins/advhr/editor_plugin_src.js +54 -0
  42. data/public/javascripts/tiny_mce/plugins/advhr/js/rule.js +43 -0
  43. data/public/javascripts/tiny_mce/plugins/advhr/langs/en_dlg.js +5 -0
  44. data/public/javascripts/tiny_mce/plugins/advhr/rule.htm +63 -0
  45. data/public/javascripts/tiny_mce/plugins/advimage/css/advimage.css +13 -0
  46. data/public/javascripts/tiny_mce/plugins/advimage/editor_plugin.js +1 -0
  47. data/public/javascripts/tiny_mce/plugins/advimage/editor_plugin_src.js +47 -0
  48. data/public/javascripts/tiny_mce/plugins/advimage/image.htm +238 -0
  49. data/public/javascripts/tiny_mce/plugins/advimage/img/sample.gif +0 -0
  50. data/public/javascripts/tiny_mce/plugins/advimage/js/image.js +441 -0
  51. data/public/javascripts/tiny_mce/plugins/advimage/langs/en_dlg.js +43 -0
  52. data/public/javascripts/tiny_mce/plugins/advimagetoo/css/advimage.css +32 -0
  53. data/public/javascripts/tiny_mce/plugins/advimagetoo/editor_plugin.js +53 -0
  54. data/public/javascripts/tiny_mce/plugins/advimagetoo/editor_plugin_src.js +53 -0
  55. data/public/javascripts/tiny_mce/plugins/advimagetoo/image.htm +303 -0
  56. data/public/javascripts/tiny_mce/plugins/advimagetoo/img/sample.gif +0 -0
  57. data/public/javascripts/tiny_mce/plugins/advimagetoo/js/functions.js +593 -0
  58. data/public/javascripts/tiny_mce/plugins/advimagetoo/langs/en_dlg.js +44 -0
  59. data/public/javascripts/tiny_mce/plugins/advlink/css/advlink.css +8 -0
  60. data/public/javascripts/tiny_mce/plugins/advlink/editor_plugin.js +1 -0
  61. data/public/javascripts/tiny_mce/plugins/advlink/editor_plugin_src.js +58 -0
  62. data/public/javascripts/tiny_mce/plugins/advlink/js/advlink.js +527 -0
  63. data/public/javascripts/tiny_mce/plugins/advlink/langs/en_dlg.js +52 -0
  64. data/public/javascripts/tiny_mce/plugins/advlink/link.htm +339 -0
  65. data/public/javascripts/tiny_mce/plugins/advlinktoo/css/advlink.css +8 -0
  66. data/public/javascripts/tiny_mce/plugins/advlinktoo/editor_plugin.js +58 -0
  67. data/public/javascripts/tiny_mce/plugins/advlinktoo/editor_plugin_src.js +58 -0
  68. data/public/javascripts/tiny_mce/plugins/advlinktoo/js/advlink.js +548 -0
  69. data/public/javascripts/tiny_mce/plugins/advlinktoo/langs/en_dlg.js +52 -0
  70. data/public/javascripts/tiny_mce/plugins/advlinktoo/link.htm +344 -0
  71. data/public/javascripts/tiny_mce/plugins/autosave/editor_plugin.js +1 -0
  72. data/public/javascripts/tiny_mce/plugins/autosave/editor_plugin_src.js +51 -0
  73. data/public/javascripts/tiny_mce/plugins/bbcode/editor_plugin.js +1 -0
  74. data/public/javascripts/tiny_mce/plugins/bbcode/editor_plugin_src.js +117 -0
  75. data/public/javascripts/tiny_mce/plugins/compat2x/editor_plugin.js +1 -0
  76. data/public/javascripts/tiny_mce/plugins/compat2x/editor_plugin_src.js +616 -0
  77. data/public/javascripts/tiny_mce/plugins/contextmenu/editor_plugin.js +1 -0
  78. data/public/javascripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js +95 -0
  79. data/public/javascripts/tiny_mce/plugins/directionality/editor_plugin.js +1 -0
  80. data/public/javascripts/tiny_mce/plugins/directionality/editor_plugin_src.js +79 -0
  81. data/public/javascripts/tiny_mce/plugins/emotions/editor_plugin.js +1 -0
  82. data/public/javascripts/tiny_mce/plugins/emotions/editor_plugin_src.js +40 -0
  83. data/public/javascripts/tiny_mce/plugins/emotions/emotions.htm +41 -0
  84. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-cool.gif +0 -0
  85. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-cry.gif +0 -0
  86. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif +0 -0
  87. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif +0 -0
  88. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-frown.gif +0 -0
  89. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif +0 -0
  90. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif +0 -0
  91. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif +0 -0
  92. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif +0 -0
  93. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif +0 -0
  94. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-smile.gif +0 -0
  95. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif +0 -0
  96. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif +0 -0
  97. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif +0 -0
  98. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-wink.gif +0 -0
  99. data/public/javascripts/tiny_mce/plugins/emotions/img/smiley-yell.gif +0 -0
  100. data/public/javascripts/tiny_mce/plugins/emotions/js/emotions.js +22 -0
  101. data/public/javascripts/tiny_mce/plugins/emotions/langs/en_dlg.js +20 -0
  102. data/public/javascripts/tiny_mce/plugins/example/dialog.htm +27 -0
  103. data/public/javascripts/tiny_mce/plugins/example/editor_plugin.js +1 -0
  104. data/public/javascripts/tiny_mce/plugins/example/editor_plugin_src.js +81 -0
  105. data/public/javascripts/tiny_mce/plugins/example/img/example.gif +0 -0
  106. data/public/javascripts/tiny_mce/plugins/example/js/dialog.js +19 -0
  107. data/public/javascripts/tiny_mce/plugins/example/langs/en.js +3 -0
  108. data/public/javascripts/tiny_mce/plugins/example/langs/en_dlg.js +3 -0
  109. data/public/javascripts/tiny_mce/plugins/fullpage/css/fullpage.css +182 -0
  110. data/public/javascripts/tiny_mce/plugins/fullpage/editor_plugin.js +1 -0
  111. data/public/javascripts/tiny_mce/plugins/fullpage/editor_plugin_src.js +142 -0
  112. data/public/javascripts/tiny_mce/plugins/fullpage/fullpage.htm +577 -0
  113. data/public/javascripts/tiny_mce/plugins/fullpage/js/fullpage.js +461 -0
  114. data/public/javascripts/tiny_mce/plugins/fullpage/langs/en_dlg.js +85 -0
  115. data/public/javascripts/tiny_mce/plugins/fullscreen/editor_plugin.js +1 -0
  116. data/public/javascripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js +145 -0
  117. data/public/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +111 -0
  118. data/public/javascripts/tiny_mce/plugins/iespell/editor_plugin.js +1 -0
  119. data/public/javascripts/tiny_mce/plugins/iespell/editor_plugin_src.js +51 -0
  120. data/public/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin.js +1 -0
  121. data/public/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js +632 -0
  122. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
  123. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
  124. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
  125. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
  126. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
  127. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
  128. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
  129. data/public/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +90 -0
  130. data/public/javascripts/tiny_mce/plugins/inlinepopups/template.htm +387 -0
  131. data/public/javascripts/tiny_mce/plugins/insertdatetime/editor_plugin.js +1 -0
  132. data/public/javascripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js +80 -0
  133. data/public/javascripts/tiny_mce/plugins/layer/editor_plugin.js +1 -0
  134. data/public/javascripts/tiny_mce/plugins/layer/editor_plugin_src.js +209 -0
  135. data/public/javascripts/tiny_mce/plugins/media/css/content.css +6 -0
  136. data/public/javascripts/tiny_mce/plugins/media/css/media.css +16 -0
  137. data/public/javascripts/tiny_mce/plugins/media/editor_plugin.js +1 -0
  138. data/public/javascripts/tiny_mce/plugins/media/editor_plugin_src.js +374 -0
  139. data/public/javascripts/tiny_mce/plugins/media/img/flash.gif +0 -0
  140. data/public/javascripts/tiny_mce/plugins/media/img/quicktime.gif +0 -0
  141. data/public/javascripts/tiny_mce/plugins/media/img/realmedia.gif +0 -0
  142. data/public/javascripts/tiny_mce/plugins/media/img/shockwave.gif +0 -0
  143. data/public/javascripts/tiny_mce/plugins/media/img/trans.gif +0 -0
  144. data/public/javascripts/tiny_mce/plugins/media/img/windowsmedia.gif +0 -0
  145. data/public/javascripts/tiny_mce/plugins/media/js/embed.js +73 -0
  146. data/public/javascripts/tiny_mce/plugins/media/js/media.js +628 -0
  147. data/public/javascripts/tiny_mce/plugins/media/langs/en_dlg.js +103 -0
  148. data/public/javascripts/tiny_mce/plugins/media/media.htm +824 -0
  149. data/public/javascripts/tiny_mce/plugins/nonbreaking/editor_plugin.js +1 -0
  150. data/public/javascripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js +50 -0
  151. data/public/javascripts/tiny_mce/plugins/noneditable/editor_plugin.js +1 -0
  152. data/public/javascripts/tiny_mce/plugins/noneditable/editor_plugin_src.js +87 -0
  153. data/public/javascripts/tiny_mce/plugins/pagebreak/css/content.css +1 -0
  154. data/public/javascripts/tiny_mce/plugins/pagebreak/editor_plugin.js +1 -0
  155. data/public/javascripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js +74 -0
  156. data/public/javascripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif +0 -0
  157. data/public/javascripts/tiny_mce/plugins/pagebreak/img/trans.gif +0 -0
  158. data/public/javascripts/tiny_mce/plugins/paste/blank.htm +22 -0
  159. data/public/javascripts/tiny_mce/plugins/paste/css/blank.css +14 -0
  160. data/public/javascripts/tiny_mce/plugins/paste/css/pasteword.css +3 -0
  161. data/public/javascripts/tiny_mce/plugins/paste/editor_plugin.js +1 -0
  162. data/public/javascripts/tiny_mce/plugins/paste/editor_plugin_src.js +394 -0
  163. data/public/javascripts/tiny_mce/plugins/paste/js/pastetext.js +42 -0
  164. data/public/javascripts/tiny_mce/plugins/paste/js/pasteword.js +56 -0
  165. data/public/javascripts/tiny_mce/plugins/paste/langs/en_dlg.js +5 -0
  166. data/public/javascripts/tiny_mce/plugins/paste/pastetext.htm +34 -0
  167. data/public/javascripts/tiny_mce/plugins/paste/pasteword.htm +29 -0
  168. data/public/javascripts/tiny_mce/plugins/preview/editor_plugin.js +1 -0
  169. data/public/javascripts/tiny_mce/plugins/preview/editor_plugin_src.js +50 -0
  170. data/public/javascripts/tiny_mce/plugins/preview/example.html +28 -0
  171. data/public/javascripts/tiny_mce/plugins/preview/jscripts/embed.js +73 -0
  172. data/public/javascripts/tiny_mce/plugins/preview/preview.html +19 -0
  173. data/public/javascripts/tiny_mce/plugins/print/editor_plugin.js +1 -0
  174. data/public/javascripts/tiny_mce/plugins/print/editor_plugin_src.js +31 -0
  175. data/public/javascripts/tiny_mce/plugins/safari/blank.htm +1 -0
  176. data/public/javascripts/tiny_mce/plugins/safari/editor_plugin.js +1 -0
  177. data/public/javascripts/tiny_mce/plugins/safari/editor_plugin_src.js +545 -0
  178. data/public/javascripts/tiny_mce/plugins/save/editor_plugin.js +1 -0
  179. data/public/javascripts/tiny_mce/plugins/save/editor_plugin_src.js +98 -0
  180. data/public/javascripts/tiny_mce/plugins/searchreplace/css/searchreplace.css +6 -0
  181. data/public/javascripts/tiny_mce/plugins/searchreplace/editor_plugin.js +1 -0
  182. data/public/javascripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js +54 -0
  183. data/public/javascripts/tiny_mce/plugins/searchreplace/js/searchreplace.js +126 -0
  184. data/public/javascripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js +16 -0
  185. data/public/javascripts/tiny_mce/plugins/searchreplace/searchreplace.htm +105 -0
  186. data/public/javascripts/tiny_mce/plugins/spellchecker/css/content.css +1 -0
  187. data/public/javascripts/tiny_mce/plugins/spellchecker/editor_plugin.js +1 -0
  188. data/public/javascripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js +338 -0
  189. data/public/javascripts/tiny_mce/plugins/spellchecker/img/wline.gif +0 -0
  190. data/public/javascripts/tiny_mce/plugins/style/css/props.css +13 -0
  191. data/public/javascripts/tiny_mce/plugins/style/editor_plugin.js +1 -0
  192. data/public/javascripts/tiny_mce/plugins/style/editor_plugin_src.js +52 -0
  193. data/public/javascripts/tiny_mce/plugins/style/js/props.js +641 -0
  194. data/public/javascripts/tiny_mce/plugins/style/langs/en_dlg.js +63 -0
  195. data/public/javascripts/tiny_mce/plugins/style/props.htm +731 -0
  196. data/public/javascripts/tiny_mce/plugins/table/cell.htm +184 -0
  197. data/public/javascripts/tiny_mce/plugins/table/css/cell.css +17 -0
  198. data/public/javascripts/tiny_mce/plugins/table/css/row.css +25 -0
  199. data/public/javascripts/tiny_mce/plugins/table/css/table.css +13 -0
  200. data/public/javascripts/tiny_mce/plugins/table/editor_plugin.js +1 -0
  201. data/public/javascripts/tiny_mce/plugins/table/editor_plugin_src.js +1115 -0
  202. data/public/javascripts/tiny_mce/plugins/table/js/cell.js +269 -0
  203. data/public/javascripts/tiny_mce/plugins/table/js/merge_cells.js +29 -0
  204. data/public/javascripts/tiny_mce/plugins/table/js/row.js +212 -0
  205. data/public/javascripts/tiny_mce/plugins/table/js/table.js +410 -0
  206. data/public/javascripts/tiny_mce/plugins/table/langs/en_dlg.js +74 -0
  207. data/public/javascripts/tiny_mce/plugins/table/merge_cells.htm +38 -0
  208. data/public/javascripts/tiny_mce/plugins/table/row.htm +161 -0
  209. data/public/javascripts/tiny_mce/plugins/table/table.htm +193 -0
  210. data/public/javascripts/tiny_mce/plugins/template/blank.htm +12 -0
  211. data/public/javascripts/tiny_mce/plugins/template/css/template.css +23 -0
  212. data/public/javascripts/tiny_mce/plugins/template/editor_plugin.js +1 -0
  213. data/public/javascripts/tiny_mce/plugins/template/editor_plugin_src.js +156 -0
  214. data/public/javascripts/tiny_mce/plugins/template/js/template.js +106 -0
  215. data/public/javascripts/tiny_mce/plugins/template/langs/en_dlg.js +15 -0
  216. data/public/javascripts/tiny_mce/plugins/template/template.htm +39 -0
  217. data/public/javascripts/tiny_mce/plugins/visualchars/editor_plugin.js +1 -0
  218. data/public/javascripts/tiny_mce/plugins/visualchars/editor_plugin_src.js +73 -0
  219. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/abbr.htm +149 -0
  220. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/acronym.htm +149 -0
  221. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/attributes.htm +154 -0
  222. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/cite.htm +149 -0
  223. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css +11 -0
  224. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/css/popup.css +9 -0
  225. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/del.htm +170 -0
  226. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +1 -0
  227. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +136 -0
  228. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/ins.htm +170 -0
  229. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js +25 -0
  230. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js +25 -0
  231. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js +123 -0
  232. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/cite.js +25 -0
  233. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/del.js +60 -0
  234. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js +228 -0
  235. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/js/ins.js +59 -0
  236. data/public/javascripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js +32 -0
  237. data/public/javascripts/tiny_mce/templates/bio.htm +31 -0
  238. data/public/javascripts/tiny_mce/templates/country.htm +59 -0
  239. data/public/javascripts/tiny_mce/themes/advanced/about.htm +56 -0
  240. data/public/javascripts/tiny_mce/themes/advanced/anchor.htm +32 -0
  241. data/public/javascripts/tiny_mce/themes/advanced/charmap.htm +54 -0
  242. data/public/javascripts/tiny_mce/themes/advanced/color_picker.htm +76 -0
  243. data/public/javascripts/tiny_mce/themes/advanced/editor_template.js +1 -0
  244. data/public/javascripts/tiny_mce/themes/advanced/editor_template_src.js +1147 -0
  245. data/public/javascripts/tiny_mce/themes/advanced/image.htm +86 -0
  246. data/public/javascripts/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
  247. data/public/javascripts/tiny_mce/themes/advanced/img/icons.gif +0 -0
  248. data/public/javascripts/tiny_mce/themes/advanced/js/about.js +72 -0
  249. data/public/javascripts/tiny_mce/themes/advanced/js/anchor.js +37 -0
  250. data/public/javascripts/tiny_mce/themes/advanced/js/charmap.js +325 -0
  251. data/public/javascripts/tiny_mce/themes/advanced/js/color_picker.js +253 -0
  252. data/public/javascripts/tiny_mce/themes/advanced/js/image.js +245 -0
  253. data/public/javascripts/tiny_mce/themes/advanced/js/link.js +155 -0
  254. data/public/javascripts/tiny_mce/themes/advanced/js/source_editor.js +62 -0
  255. data/public/javascripts/tiny_mce/themes/advanced/langs/en.js +62 -0
  256. data/public/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +51 -0
  257. data/public/javascripts/tiny_mce/themes/advanced/link.htm +64 -0
  258. data/public/javascripts/tiny_mce/themes/advanced/skins/default/content.css +32 -0
  259. data/public/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +114 -0
  260. data/public/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  261. data/public/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  262. data/public/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  263. data/public/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  264. data/public/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
  265. data/public/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  266. data/public/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +215 -0
  267. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +32 -0
  268. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +113 -0
  269. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  270. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  271. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  272. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +215 -0
  273. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +8 -0
  274. data/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +5 -0
  275. data/public/javascripts/tiny_mce/themes/advanced/source_editor.htm +32 -0
  276. data/public/javascripts/tiny_mce/themes/simple/editor_template.js +1 -0
  277. data/public/javascripts/tiny_mce/themes/simple/editor_template_src.js +85 -0
  278. data/public/javascripts/tiny_mce/themes/simple/img/icons.gif +0 -0
  279. data/public/javascripts/tiny_mce/themes/simple/langs/en.js +11 -0
  280. data/public/javascripts/tiny_mce/themes/simple/skins/default/content.css +25 -0
  281. data/public/javascripts/tiny_mce/themes/simple/skins/default/ui.css +32 -0
  282. data/public/javascripts/tiny_mce/themes/simple/skins/o2k7/content.css +17 -0
  283. data/public/javascripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png +0 -0
  284. data/public/javascripts/tiny_mce/themes/simple/skins/o2k7/ui.css +35 -0
  285. data/public/javascripts/tiny_mce/tiny_mce.js +1 -0
  286. data/public/javascripts/tiny_mce/tiny_mce_popup.js +294 -0
  287. data/public/javascripts/tiny_mce/tiny_mce_src.js +11059 -0
  288. data/public/javascripts/tiny_mce/utils/editable_selects.js +69 -0
  289. data/public/javascripts/tiny_mce/utils/form_utils.js +199 -0
  290. data/public/javascripts/tiny_mce/utils/mctabs.js +76 -0
  291. data/public/javascripts/tiny_mce/utils/validate.js +219 -0
  292. data/public/javascripts/tiny_mce_helper.js +73 -0
  293. data/rails/init.rb +24 -0
  294. data/tasks/muck_contents_tasks.rake +1 -0
  295. data/test/rails_root/.gitignore +8 -0
  296. data/test/rails_root/.rake_tasks +103 -0
  297. data/test/rails_root/Capfile +3 -0
  298. data/test/rails_root/Rakefile +18 -0
  299. data/test/rails_root/app/controllers/application_controller.rb +22 -0
  300. data/test/rails_root/app/controllers/contents_controller.rb +3 -0
  301. data/test/rails_root/app/controllers/default_controller.rb +7 -0
  302. data/test/rails_root/app/helpers/application_helper.rb +3 -0
  303. data/test/rails_root/app/models/.keep +0 -0
  304. data/test/rails_root/app/models/comment.rb +5 -0
  305. data/test/rails_root/app/models/content.rb +7 -0
  306. data/test/rails_root/app/models/content_permission.rb +3 -0
  307. data/test/rails_root/app/models/content_translation.rb +3 -0
  308. data/test/rails_root/app/models/user.rb +12 -0
  309. data/test/rails_root/app/models/user_session.rb +2 -0
  310. data/test/rails_root/app/views/default/index.html.erb +0 -0
  311. data/test/rails_root/app/views/layouts/_not_a_template.html.erb +1 -0
  312. data/test/rails_root/app/views/layouts/default.html.erb +26 -0
  313. data/test/rails_root/config/amazon_s3.yml +14 -0
  314. data/test/rails_root/config/boot.rb +109 -0
  315. data/test/rails_root/config/database.yml +19 -0
  316. data/test/rails_root/config/environment.rb +33 -0
  317. data/test/rails_root/config/environments/cucumber.rb +22 -0
  318. data/test/rails_root/config/environments/development.rb +19 -0
  319. data/test/rails_root/config/environments/production.rb +1 -0
  320. data/test/rails_root/config/environments/test.rb +46 -0
  321. data/test/rails_root/config/global_config.yml +80 -0
  322. data/test/rails_root/config/initializers/inflections.rb +10 -0
  323. data/test/rails_root/config/initializers/mime_types.rb +5 -0
  324. data/test/rails_root/config/initializers/requires.rb +13 -0
  325. data/test/rails_root/config/initializers/session_store.rb +8 -0
  326. data/test/rails_root/config/routes.rb +6 -0
  327. data/test/rails_root/db/.keep +0 -0
  328. data/test/rails_root/db/migrate/20090320174818_create_muck_permissions_and_roles.rb +16 -0
  329. data/test/rails_root/db/migrate/20090402033319_add_muck_activities.rb +36 -0
  330. data/test/rails_root/db/migrate/20090602041838_create_users.rb +39 -0
  331. data/test/rails_root/db/migrate/20090608073052_create_friends.rb +16 -0
  332. data/test/rails_root/db/migrate/20090613173314_create_comments.rb +24 -0
  333. data/test/rails_root/db/migrate/20090703055724_add_contents.rb +49 -0
  334. data/test/rails_root/db/migrate/20090704220055_create_slugs.rb +18 -0
  335. data/test/rails_root/db/migrate/20090704220120_acts_as_taggable_on_migration.rb +29 -0
  336. data/test/rails_root/db/migrate/20090730154102_allow_null_user.rb +9 -0
  337. data/test/rails_root/db/migrate/20090806230610_add_layout_to_contents.rb +9 -0
  338. data/test/rails_root/db/migrate/20090808005918_add_scope_index_to_slugs.rb +9 -0
  339. data/test/rails_root/db/migrate/20090808175401_add_contents_comment_counter_cache.rb +9 -0
  340. data/test/rails_root/db/schema.rb +186 -0
  341. data/test/rails_root/features/step_definitions/common_steps.rb +99 -0
  342. data/test/rails_root/features/step_definitions/content_steps.rb +15 -0
  343. data/test/rails_root/features/step_definitions/webrat_steps.rb +128 -0
  344. data/test/rails_root/features/support/env.rb +49 -0
  345. data/test/rails_root/features/support/paths.rb +27 -0
  346. data/test/rails_root/features/view_contents.feature +29 -0
  347. data/test/rails_root/lib/tasks/cucumber.rake +20 -0
  348. data/test/rails_root/public/.htaccess +40 -0
  349. data/test/rails_root/public/404.html +30 -0
  350. data/test/rails_root/public/422.html +30 -0
  351. data/test/rails_root/public/500.html +30 -0
  352. data/test/rails_root/public/dispatch.rb +10 -0
  353. data/test/rails_root/public/favicon.ico +0 -0
  354. data/test/rails_root/public/images/arrow_left.gif +0 -0
  355. data/test/rails_root/public/images/arrow_right.gif +0 -0
  356. data/test/rails_root/public/images/icons/accept.png +0 -0
  357. data/test/rails_root/public/images/icons/add.png +0 -0
  358. data/test/rails_root/public/images/icons/delete.png +0 -0
  359. data/test/rails_root/public/images/icons/vote.png +0 -0
  360. data/test/rails_root/public/images/loading.gif +0 -0
  361. data/test/rails_root/public/images/profile_default.jpg +0 -0
  362. data/test/rails_root/public/images/rails.png +0 -0
  363. data/test/rails_root/public/images/spinner.gif +0 -0
  364. data/test/rails_root/public/images/sprites.png +0 -0
  365. data/test/rails_root/public/javascripts/application.js +2 -0
  366. data/test/rails_root/public/javascripts/builder.js +136 -0
  367. data/test/rails_root/public/javascripts/controls.js +963 -0
  368. data/test/rails_root/public/javascripts/dragdrop.js +972 -0
  369. data/test/rails_root/public/javascripts/effects.js +1120 -0
  370. data/test/rails_root/public/javascripts/fancyzoom.min.js +1 -0
  371. data/test/rails_root/public/javascripts/jquery/jquery-ui.js +273 -0
  372. data/test/rails_root/public/javascripts/jquery/jquery.form.js +637 -0
  373. data/test/rails_root/public/javascripts/jquery/jquery.jgrowl.js +2 -0
  374. data/test/rails_root/public/javascripts/jquery/jquery.js +19 -0
  375. data/test/rails_root/public/javascripts/jquery/jquery.tips.js +69 -0
  376. data/test/rails_root/public/javascripts/muck.js +76 -0
  377. data/test/rails_root/public/javascripts/muck_activities.js +108 -0
  378. data/test/rails_root/public/javascripts/prototype.js +4225 -0
  379. data/test/rails_root/public/javascripts/scriptaculous.js +58 -0
  380. data/test/rails_root/public/javascripts/slider.js +277 -0
  381. data/test/rails_root/public/javascripts/sound.js +60 -0
  382. data/test/rails_root/public/robots.txt +1 -0
  383. data/test/rails_root/public/stylesheets/.keep +0 -0
  384. data/test/rails_root/public/stylesheets/admin.css +12 -0
  385. data/test/rails_root/public/stylesheets/blueprint/ie.css +26 -0
  386. data/test/rails_root/public/stylesheets/blueprint/liquid_screen.css +203 -0
  387. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/cross.png +0 -0
  388. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/key.png +0 -0
  389. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/icons/tick.png +0 -0
  390. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/readme.txt +32 -0
  391. data/test/rails_root/public/stylesheets/blueprint/plugins/buttons/screen.css +97 -0
  392. data/test/rails_root/public/stylesheets/blueprint/plugins/fancy-type/readme.txt +14 -0
  393. data/test/rails_root/public/stylesheets/blueprint/plugins/fancy-type/screen.css +71 -0
  394. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/doc.png +0 -0
  395. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/email.png +0 -0
  396. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/external.png +0 -0
  397. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/feed.png +0 -0
  398. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/im.png +0 -0
  399. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/pdf.png +0 -0
  400. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/visited.png +0 -0
  401. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/icons/xls.png +0 -0
  402. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/readme.txt +18 -0
  403. data/test/rails_root/public/stylesheets/blueprint/plugins/link-icons/screen.css +40 -0
  404. data/test/rails_root/public/stylesheets/blueprint/plugins/liquid/liquid.css +134 -0
  405. data/test/rails_root/public/stylesheets/blueprint/plugins/liquid/src/liquid.css +197 -0
  406. data/test/rails_root/public/stylesheets/blueprint/plugins/rtl/readme.txt +10 -0
  407. data/test/rails_root/public/stylesheets/blueprint/plugins/rtl/screen.css +109 -0
  408. data/test/rails_root/public/stylesheets/blueprint/print.css +30 -0
  409. data/test/rails_root/public/stylesheets/blueprint/screen.css +251 -0
  410. data/test/rails_root/public/stylesheets/blueprint/sprite.css +1 -0
  411. data/test/rails_root/public/stylesheets/blueprint/src/forms.css +49 -0
  412. data/test/rails_root/public/stylesheets/blueprint/src/grid.css +213 -0
  413. data/test/rails_root/public/stylesheets/blueprint/src/grid.png +0 -0
  414. data/test/rails_root/public/stylesheets/blueprint/src/ie.css +59 -0
  415. data/test/rails_root/public/stylesheets/blueprint/src/print.css +85 -0
  416. data/test/rails_root/public/stylesheets/blueprint/src/reset.css +38 -0
  417. data/test/rails_root/public/stylesheets/blueprint/src/typography.css +105 -0
  418. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png +0 -0
  419. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-thick_15_444444_40x40.png +0 -0
  420. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_100_f0f0f0_1x400.png +0 -0
  421. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_50_99c2ff_1x400.png +0 -0
  422. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_55_fbf5d0_1x400.png +0 -0
  423. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_80_e6e6e6_1x400.png +0 -0
  424. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  425. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png +0 -0
  426. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_highlight-soft_100_e7eef3_1x100.png +0 -0
  427. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_222222_256x240.png +0 -0
  428. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_2694e8_256x240.png +0 -0
  429. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_2e83ff_256x240.png +0 -0
  430. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_72a7cf_256x240.png +0 -0
  431. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_888888_256x240.png +0 -0
  432. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_cd0a0a_256x240.png +0 -0
  433. data/test/rails_root/public/stylesheets/jquery/cupertino/images/ui-icons_ffffff_256x240.png +0 -0
  434. data/test/rails_root/public/stylesheets/jquery/cupertino/jquery-ui-1.7.1.custom.css +404 -0
  435. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  436. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
  437. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  438. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  439. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  440. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  441. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  442. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  443. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_217bc0_256x240.png +0 -0
  444. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_2e83ff_256x240.png +0 -0
  445. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_469bdd_256x240.png +0 -0
  446. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_6da8d5_256x240.png +0 -0
  447. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_cd0a0a_256x240.png +0 -0
  448. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_d8e7f3_256x240.png +0 -0
  449. data/test/rails_root/public/stylesheets/jquery/redmond/images/ui-icons_f9bd01_256x240.png +0 -0
  450. data/test/rails_root/public/stylesheets/jquery/redmond/jquery-ui-1.7.1.custom.css +404 -0
  451. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  452. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  453. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  454. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  455. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  456. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  457. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  458. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  459. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_222222_256x240.png +0 -0
  460. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  461. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_454545_256x240.png +0 -0
  462. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_888888_256x240.png +0 -0
  463. data/test/rails_root/public/stylesheets/jquery/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  464. data/test/rails_root/public/stylesheets/jquery/smoothness/jquery-ui-1.7.1.custom.css +404 -0
  465. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  466. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  467. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  468. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  469. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  470. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  471. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  472. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  473. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  474. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  475. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  476. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  477. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  478. data/test/rails_root/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  479. data/test/rails_root/public/stylesheets/jquery/ui-lightness/jquery-ui-1.7.1.custom.css +404 -0
  480. data/test/rails_root/public/stylesheets/reset.css +0 -0
  481. data/test/rails_root/public/stylesheets/styles.css +79 -0
  482. data/test/rails_root/script/about +3 -0
  483. data/test/rails_root/script/breakpointer +3 -0
  484. data/test/rails_root/script/console +3 -0
  485. data/test/rails_root/script/create_project.rb +52 -0
  486. data/test/rails_root/script/cucumber +8 -0
  487. data/test/rails_root/script/dbconsole +3 -0
  488. data/test/rails_root/script/destroy +3 -0
  489. data/test/rails_root/script/generate +3 -0
  490. data/test/rails_root/script/performance/benchmarker +3 -0
  491. data/test/rails_root/script/performance/profiler +3 -0
  492. data/test/rails_root/script/performance/request +3 -0
  493. data/test/rails_root/script/plugin +3 -0
  494. data/test/rails_root/script/process/inspector +3 -0
  495. data/test/rails_root/script/process/reaper +3 -0
  496. data/test/rails_root/script/process/spawner +3 -0
  497. data/test/rails_root/script/runner +3 -0
  498. data/test/rails_root/script/server +3 -0
  499. data/test/rails_root/test/factories.rb +139 -0
  500. data/test/rails_root/test/functional/.keep +0 -0
  501. data/test/rails_root/test/functional/contents_controller_test.rb +41 -0
  502. data/test/rails_root/test/integration/.keep +0 -0
  503. data/test/rails_root/test/mocks/development/.keep +0 -0
  504. data/test/rails_root/test/mocks/test/.keep +0 -0
  505. data/test/rails_root/test/shoulda_macros/controller.rb +49 -0
  506. data/test/rails_root/test/shoulda_macros/forms.rb +32 -0
  507. data/test/rails_root/test/shoulda_macros/models.rb +50 -0
  508. data/test/rails_root/test/shoulda_macros/pagination.rb +53 -0
  509. data/test/rails_root/test/shoulda_macros/plugins.rb +34 -0
  510. data/test/rails_root/test/test_helper.rb +55 -0
  511. data/test/rails_root/test/unit/.keep +0 -0
  512. data/test/rails_root/test/unit/content_permission_test.rb +30 -0
  513. data/test/rails_root/test/unit/content_test.rb +289 -0
  514. data/test/rails_root/test/unit/content_translation_test.rb +35 -0
  515. data/test/rails_root/test/unit/user_test.rb +12 -0
  516. data/test/rails_root/vendor/plugins/ssl_requirement/README +43 -0
  517. data/test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb +62 -0
  518. data/test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb +132 -0
  519. data/test/rails_root/vendor/plugins/validation_reflection/CHANGELOG +24 -0
  520. data/test/rails_root/vendor/plugins/validation_reflection/LICENSE +20 -0
  521. data/test/rails_root/vendor/plugins/validation_reflection/README +64 -0
  522. data/test/rails_root/vendor/plugins/validation_reflection/Rakefile +22 -0
  523. data/test/rails_root/vendor/plugins/validation_reflection/about.yml +7 -0
  524. data/test/rails_root/vendor/plugins/validation_reflection/init.rb +8 -0
  525. data/test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb +129 -0
  526. data/test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb +36 -0
  527. data/test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb +126 -0
  528. metadata +705 -0
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Justin Ball
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,112 @@
1
+ = MuckContents
2
+
3
+ Add contents to you website. News stories, blog posts and pages are all basically a page with content and a title. Muck content makes
4
+ it easy to add this content to your website.
5
+
6
+ === Gems
7
+ Note that all gems below should be installed automatically as a muck-contents has them set as a dependency.
8
+ Many of the gems are found on github so before installing do:
9
+ gem sources -a http://gems.github.com
10
+
11
+ sudo gem install jbasdf-acts_as_git # Versioning. Requires a git installation.
12
+ sudo gem install collectiveidea-awesome_nested_set # Nested pages. Used to setup navigation hierarchy (http://github.com/collectiveidea/awesome_nested_set/tree/master)
13
+ sudo gem install rgrove-sanitize # Remove harmful html. (http://github.com/rgrove/sanitize/tree/master.)
14
+ sudo gem install mbleigh-acts-as-taggable-on # Tagging. (http://github.com/mbleigh/acts-as-taggable-on/tree/master)
15
+ sudo gem install friendly_id # Pretty urls (http://github.com/norman/friendly_id/tree/master)
16
+ sudo gem install babelphish # Translations
17
+ sudo gem install muck-solr # Search Install muck_solr (or another version of acts_as_solr)
18
+
19
+ === Configure environment.rb
20
+ Paste in the following:
21
+ config.gem "collectiveidea-awesome_nested_set", :lib => 'awesome_nested_set'
22
+ config.gem "rgrove-sanitize", :lib => 'sanitize'
23
+ config.gem "mbleigh-acts-as-taggable-on", :source => "http://gems.github.com", :lib => "acts-as-taggable-on"
24
+ config.gem "friendly_id"
25
+ config.gem "babelphish"
26
+
27
+
28
+ === Gem configuration and setup
29
+ In your app do
30
+ script/generate friendly_id
31
+ script/generate acts_as_taggable_on_migration
32
+ rake db:migrate
33
+
34
+ == Setup
35
+
36
+ === User model
37
+ Add the following method to your user model and modify it according to your specific needs:
38
+
39
+ def can_add_root_content?
40
+ admin?
41
+ end
42
+
43
+ This method determines who can add content to any url on your website. For example, if you type in
44
+ http://www.example.com/a/test/page and that page does not exist, muck contents will automatically create
45
+ a page for you at that location if the logged in user has a method can_add_root_content? that returns true.
46
+
47
+ === Content models
48
+ Create the following models in your project. This let's you add any other methods that you see fit.
49
+
50
+ class Content < ActiveRecord::Base
51
+ # This assumes you are using GlobalConfig. You can also set these values directly in the model
52
+ acts_as_muck_content(
53
+ :git_repository => GlobalConfig.content_git_repository,
54
+ :enable_translations => GlobalConfig.enable_auto_translations,
55
+ :enable_solr => GlobalConfig.content_enable_solr
56
+ )
57
+ end
58
+
59
+ class ContentTranslation < ActiveRecord::Base
60
+ acts_as_muck_content_translation
61
+ end
62
+
63
+ class ContentPermission < ActiveRecord::Base
64
+ acts_as_muck_content_permission
65
+ end
66
+
67
+ === Contents controller
68
+ Create a ContentsController and inherit from Muck::ContentsController. Unfortunately, due to routing issues this is required or
69
+ we'd have to hard code the routes to go to muck/contents which prevent modification of the contents_controller.
70
+ class ContentsController < Muck::ContentsController
71
+ end
72
+
73
+ Add a route for the new controller:
74
+ ActionController::Routing::Routes.draw do |map|
75
+ map.resource :contents
76
+ end
77
+
78
+
79
+ === Application controller
80
+ Add acts_as_muck_content_handler if you want muck_contents to intercept pages that are not found and provide authorized users
81
+ and opportunity to add them.
82
+
83
+ class ApplicationController < ActionController::Base
84
+ acts_as_muck_content_handler
85
+ end
86
+
87
+ === Content controller
88
+ Override the contents controller to change the the security model. For example:
89
+
90
+ class ContentsController < Muck::ContentsController
91
+
92
+ before_filter :login_required # require the user to be logged in to add content
93
+
94
+ # Modify this method to change how permissions are checked to see if a user can content.
95
+ # Each model that implements 'has_muck_content' can (and should) override can_add_content? to
96
+ # change how content permissions are handled.
97
+ def has_permission_to_add_content(user, parent)
98
+ parent.can_add_content?(user)
99
+ end
100
+
101
+ # Setups up the layouts that are available in the 'layouts' pulldown.
102
+ # Override this method to change the available layouts. Note that the
103
+ # layout will need to exist in your 'views/layouts' directory
104
+ def setup_layouts
105
+ @content_layouts =
106
+ end
107
+
108
+ end
109
+
110
+
111
+
112
+ Copyright (c) 2009 Justin Ball, released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,101 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+
5
+ desc 'Default: run unit tests.'
6
+ task :default => :test
7
+
8
+ desc 'Test muck-contents.'
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << 'lib'
11
+ t.libs << 'test/rails_root/test'
12
+ t.pattern = 'test/rails_root/test/**/*_test.rb'
13
+ t.verbose = true
14
+ end
15
+
16
+ begin
17
+ require 'rcov/rcovtask'
18
+ Rcov::RcovTask.new do |t|
19
+ #t.libs << 'lib'
20
+ t.libs << 'test/rails_root/lib'
21
+ t.pattern = 'test/rails_root/test/**/*_test.rb'
22
+ t.verbose = true
23
+ t.output_dir = 'coverage'
24
+ t.rcov_opts << '--exclude "gems/*"'
25
+ end
26
+ rescue LoadError
27
+ task :rcov do
28
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
29
+ end
30
+ end
31
+
32
+ require 'rake/rdoctask'
33
+ desc 'Generate documentation for the muck-contents gem.'
34
+ Rake::RDocTask.new do |rdoc|
35
+ if File.exist?('VERSION.yml')
36
+ config = YAML.load(File.read('VERSION.yml'))
37
+ version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
38
+ else
39
+ version = ""
40
+ end
41
+
42
+ rdoc.rdoc_dir = 'rdoc'
43
+ rdoc.title = "muck_contents #{version}"
44
+ rdoc.rdoc_files.include('README*')
45
+ rdoc.rdoc_files.include('lib/**/*.rb')
46
+ end
47
+
48
+ desc 'Translate this gem'
49
+ task :translate do
50
+ file = File.join(File.dirname(__FILE__), 'locales', 'en.yml')
51
+ system("babelphish -o -y #{file}")
52
+ end
53
+
54
+ begin
55
+ require 'jeweler'
56
+ Jeweler::Tasks.new do |gemspec|
57
+ gemspec.name = "muck-contents"
58
+ gemspec.summary = "Add content to your muck based project"
59
+ gemspec.email = "justinball@gmail.com"
60
+ gemspec.homepage = "http://github.com/jbasdf/muck_contents"
61
+ gemspec.authors = ["Justin Ball"]
62
+ gemspec.rubyforge_project = 'muck-contents'
63
+ gemspec.add_dependency "muck-engine"
64
+ gemspec.add_dependency "muck-users"
65
+ gemspec.add_dependency "muck-comments"
66
+ gemspec.add_dependency "collectiveidea-awesome_nested_set"
67
+ gemspec.add_dependency "rgrove-sanitize"
68
+ gemspec.add_dependency "mbleigh-acts-as-taggable-on"
69
+ gemspec.add_dependency "friendly_id"
70
+ end
71
+
72
+ rescue LoadError
73
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
74
+ end
75
+
76
+ # rubyforge tasks
77
+ begin
78
+ require 'rake/contrib/sshpublisher'
79
+ namespace :rubyforge do
80
+
81
+ desc "Release gem and RDoc documentation to RubyForge"
82
+ task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
83
+
84
+ namespace :release do
85
+ desc "Publish RDoc to RubyForge."
86
+ task :docs => [:rdoc] do
87
+ config = YAML.load(
88
+ File.read(File.expand_path('~/.rubyforge/user-config.yml'))
89
+ )
90
+
91
+ host = "#{config['username']}@rubyforge.org"
92
+ remote_dir = "/var/www/gforge-projects/muck-contents/"
93
+ local_dir = 'rdoc'
94
+
95
+ Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
96
+ end
97
+ end
98
+ end
99
+ rescue LoadError
100
+ puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
101
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.1
@@ -0,0 +1,15 @@
1
+ class Admin::Muck::ContentsController < ApplicationController
2
+ unloadable
3
+
4
+ def index
5
+ end
6
+
7
+ def edit
8
+ @content = Content.find(params[:id])
9
+ @title = @content.title
10
+ respond_to do |format|
11
+ format.html { render :template => 'contents/edit' }
12
+ end
13
+ end
14
+
15
+ end
@@ -0,0 +1,186 @@
1
+ class Muck::ContentsController < ApplicationController
2
+ unloadable
3
+
4
+ before_filter :login_required, :only => [:new, :create, :edit, :update, :destroy]
5
+ before_filter :setup_parent, :only => [:new, :create]
6
+ before_filter :get_secure_content, :only => [:edit, :update, :destroy]
7
+ before_filter :setup_layouts, :only => [:new, :create, :edit, :update]
8
+
9
+ def show
10
+ handle_content_request
11
+ end
12
+
13
+ # If a content object is not found this method will render a 404 for users that are not allowed to add content.
14
+ # If the user is allowed to add content a redirect to new is performed so that the content can be added.
15
+ #
16
+ # Notes:
17
+ # Override 'new' by setting up @content and passing in a custom message via @new_content_message
18
+ # For example:
19
+ # def new
20
+ # @content = Content.new(:custom_scope => 'my-stuff')
21
+ # @new_content_message = 'Add Content to My Stuff'
22
+ # super
23
+ # end
24
+ #
25
+ # It is also simple to override the new template. Simply create a template in app/views/contents/new.html.erb
26
+ # and add something similar to the following:
27
+ # <div id="add_content">
28
+ # <%= output_errors(t('muck.contents.problem_adding_content'), {:class => 'help-box'}, @content) %>
29
+ # <% content_form(@content) do |f| -%>
30
+ # <%# Add custom fields here. ie %>
31
+ # <%= f.text_field :custom_thing %>
32
+ # <% end -%>
33
+ # </div>
34
+ def new
35
+ @content ||= Content.new
36
+ @content.uri = params[:path] if params[:path]
37
+ if has_permission_to_add_content(current_user, @parent, @content)
38
+ flash[:notice] = @new_content_message || t('muck.contents.page_doesnt_exist_create')
39
+ respond_to do |format|
40
+ format.html { render :template => 'contents/new'}
41
+ format.pjs { render :template => 'contents/new', :layout => 'popup'}
42
+ end
43
+ else
44
+ # TODO think about caching this:
45
+ @content = Content.find('404-page-not-found', :scope => MuckContents::GLOBAL_SCOPE) rescue nil
46
+ if @content.blank?
47
+ @content = Content.new(:title => I18n.t('muck.contents.default_404_title'), :body_raw => I18n.t('muck.contents.default_404_body'), :locale => I18n.locale.to_s)
48
+ @content.uri = '/404-page-not-found'
49
+ @content.save!
50
+ end
51
+ @title = @content.locale_title(I18n.locale)
52
+ respond_to do |format|
53
+ format.html { render :template => "contents/show", :status => 404 }
54
+ format.all { render :nothing => true, :status => 404 }
55
+ end
56
+ end
57
+ end
58
+
59
+ def create
60
+ @content = Content.new(params[:content])
61
+ @content.contentable = @parent if @parent
62
+ @content.creator = current_user
63
+ @content.current_editor = current_user
64
+ @content.locale ||= I18n.locale
65
+ return permission_denied unless has_permission_to_add_content(current_user, @parent, @content)
66
+
67
+ @content.save!
68
+ respond_to do |format|
69
+ format.html do
70
+ redirect_back_or_default(@content.uri)
71
+ end
72
+ format.json { render :json => { :success => true, :content => @content, :parent_id => @parent ? @parent.id : nil } }
73
+ end
74
+ rescue ActiveRecord::RecordInvalid => ex
75
+ if @content
76
+ @errors = @content.errors.full_messages.to_sentence
77
+ else
78
+ @errors = ex
79
+ end
80
+ message = t('muck.contents.create_error', :errors => @errors)
81
+ respond_to do |format|
82
+ format.html do
83
+ flash[:error] = message
84
+ render :template => 'contents/new'
85
+ end
86
+ format.json { render :json => { :success => false, :message => message, :errors => @errors } }
87
+ end
88
+ end
89
+
90
+ def edit
91
+ @page_title = @content.locale_title(I18n.locale)
92
+ respond_to do |format|
93
+ format.html { render :template => 'contents/edit'}
94
+ format.pjs { render :template => 'contents/edit', :layout => 'popup'}
95
+ end
96
+ end
97
+
98
+ def update
99
+ @content.current_editor = current_user
100
+ @content.update_attributes(params[:content])
101
+ respond_to do |format|
102
+ format.html do
103
+ redirect_back_or_default(@content.uri)
104
+ end
105
+ format.json { render :json => { :success => true, :content => @content, :parent_id => @parent ? @parent.id : nil } }
106
+ end
107
+ end
108
+
109
+ def destroy
110
+ @content.destroy
111
+ respond_to do |format|
112
+ format.html do
113
+ flash[:notice] = t('muck.contents.content_removed')
114
+ redirect_back_or_default(current_user)
115
+ end
116
+ format.js do
117
+ render(:update) do |page|
118
+ page << "jQuery('##{@content.dom_id}').fadeOut();"
119
+ end
120
+ end
121
+ format.json { render :json => { :success => true, :message => t("muck.contents.content_removed"), :content_id => @content.id } }
122
+ end
123
+ end
124
+
125
+ protected
126
+
127
+ # Setups up the layouts that are available in the 'layouts' pulldown.
128
+ # Override this method to change the available layouts. Note that the
129
+ # layout will need to exist in your 'views/layouts' directory
130
+ def setup_layouts
131
+ @content_layouts = []
132
+ get_layouts(File.join(RAILS_ROOT, 'app', 'views', 'layouts')).each do |layout|
133
+ @content_layouts << OpenStruct.new(:name => layout.titleize, :value => layout)
134
+ end
135
+ end
136
+
137
+ def get_layouts(path)
138
+ layouts = []
139
+ Dir.glob("#{path}/*").each do |layout_file|
140
+ if File.directory?(layout_file)
141
+ layouts << get_layouts(layout_file)
142
+ else
143
+ if layout_file.include?('.html.erb') || layout_file.include?('.html.haml')
144
+ trimmed_layout_file = File.basename(File.basename(layout_file, '.*'), '.*') # get ride of html.erb, html.haml
145
+ if trimmed_layout_file.first != '_'&& # don't include partials
146
+ layouts << trimmed_layout_file
147
+ end
148
+ end
149
+ end
150
+ end
151
+ layouts
152
+ end
153
+
154
+ # This method checks to see if the specified user has the right o
155
+ # add content. Override this method in an individual controller
156
+ # to provide more restrictive or more liberal permissions.
157
+ # Parameters:
158
+ # user - The user attempting to add content.
159
+ # parent - The parent object of the content. May be nil.
160
+ # content - The content to be added. In an overridden method may want to check scope on the content
161
+ # to be sure a user doesn't attempt to change the scope to something they shouldn't have
162
+ # permission to.
163
+ def has_permission_to_add_content(user, parent, content)
164
+ return true if user.can_add_root_content?
165
+ return false if parent.blank?
166
+ parent.can_add_content?(user)
167
+ end
168
+
169
+ # Pass the numeric id to this method to ensure that the operations update and delete occur on the correct object
170
+ def get_secure_content
171
+ @content = Content.find(params[:id])
172
+ unless @content.can_edit?(current_user)
173
+ respond_to do |format|
174
+ format.html do
175
+ flash[:notice] = I18n.t('muck.contents.cant_delete_content')
176
+ redirect_back_or_default current_user
177
+ end
178
+ format.js { render(:update){|page| page.alert I18n.t('muck.contents.cant_delete_content')}}
179
+ end
180
+ end
181
+ end
182
+
183
+ def setup_parent
184
+ @parent = get_parent
185
+ end
186
+ end
@@ -0,0 +1,22 @@
1
+ module MuckContentsHelper
2
+
3
+ # share is an optional share object that can be used to pre populate the form.
4
+ # options:
5
+ # html options for form:
6
+ # :html => {:id => 'a form'}
7
+ def content_form(content = nil, options = {}, &block)
8
+ content ||= Content.new
9
+ options[:html] = {} if options[:html].nil?
10
+ raw_block_to_partial('contents/form', options.merge(:content => content), &block)
11
+ end
12
+
13
+ # content uses friendly_id but we want the param in the form to use the number id
14
+ def get_content_form_url(content, parent)
15
+ if content.new_record?
16
+ contents_path(make_muck_parent_params(parent))
17
+ else
18
+ content_path(content.id, make_muck_parent_params(parent))
19
+ end
20
+ end
21
+
22
+ end
@@ -0,0 +1,28 @@
1
+ <div id="content-pages">
2
+ <h2><%= t('muck.content.manage_pages_title') %></h2>
3
+ <div id="pageSearch">
4
+ <label>Search by Page Name:</label> <input id="autoPages" />
5
+ <span class="link-button"><%= link_to _("Add New Page"), new_admin_page_path %></span>
6
+ </div>
7
+ <div id="pageList">
8
+ <ul id="pageMasterUl">
9
+ <%= render :partial => 'admin/pages/page', :collection => @pages, :locals => {:parent_id => 0} -%>
10
+ </ul>
11
+ </div>
12
+ </div>
13
+
14
+ <input id="updatePath" type="hidden" value="<%=admin_pages_path%>">
15
+
16
+ <script type="text/javascript" language="JavaScript">
17
+ jQuery(document).ready(function() {
18
+ var data = <%= @pages.collect{|page| { :title => page.title, :id => page.id } }.to_json %>;
19
+ jQuery("#autoPages").autocomplete(data, {
20
+ minChars: 0,
21
+ autoFill: true,
22
+ mustMatch: false,
23
+ formatItem: function(item) {
24
+ return item.title;
25
+ }
26
+ }).result(function(event, item) { location.href = '/admin/pages/' + item.id + '/edit'; });
27
+ });
28
+ </script>
@@ -0,0 +1,7 @@
1
+ <% if logged_in? && content.can_edit?(current_user) -%>
2
+ <% if current_user.can_add_root_content? -%>
3
+ <%= link_to t('muck.contents.add'), new_content_path, :title => t('muck.contents.add_title'), :class => 'admin-content' -%> |
4
+ <% end -%>
5
+ <%= link_to t('muck.contents.edit'), edit_content_path(content.id), :title => t('muck.contents.edit_this_page'), :class => 'admin-content' -%> |
6
+ <%= link_to t('muck.contents.delete'), content_path(content.id), :method => :delete, :title => t('muck.contents.delete_title'), :class => 'admin-content', :confirm => t('muck.contents.confirm_delete_content') -%>
7
+ <% end -%>
@@ -0,0 +1,13 @@
1
+ <div id="<%= "#{content.dom_id}" %>" class="content_editor">
2
+ <% custom_form_for(content, :url => get_content_form_url(content, @parent), :html => html.merge(:id => "#{content.dom_id}_content_form", :class => 'content_form') ) do |f| -%>
3
+ <%= f.text_field :title, {:class => 'title', :tip => t('muck.contents.title_help'), :label => t('muck.contents.title_label') } %>
4
+ <%= f.text_area :body_raw, {:label => t('muck.contents.content_label'), :class => 'mceEditor', :id => 'mce_content', :tip_key => 'mce_content', :tip => t('muck.contents.content_help') } %>
5
+ <%= capture(f, &block) %>
6
+ <%= f.muck_select(:layout, :value, :name, t('muck.contents.choose_layout'), @content_layouts, {:tip => t('muck.contents.choose_layout_help')}) %>
7
+ <div class="button form-row">
8
+ <%= f.submit t('muck.contents.submit_content_button'), :class => "button share-submit", :id => "content_submit_#{content.dom_id}" %>
9
+ <%= f.hidden_field :uri_path unless content.uri_path.blank? %>
10
+ <%= f.hidden_field :custom_scope unless content.custom_scope.blank? %>
11
+ </div>
12
+ <% end %>
13
+ </div>
@@ -0,0 +1,6 @@
1
+ <div id="edit_content">
2
+ <%= output_errors(t('muck.contents.problem_updating_content'), {:class => 'help-box'}, @content) %>
3
+ <% content_form(@content) do |f| -%>
4
+ <%# can add form fields as desired here -%>
5
+ <% end -%>
6
+ </div>
@@ -0,0 +1,5 @@
1
+ <div id="add_content">
2
+ <%= output_errors(t('muck.contents.problem_adding_content'), {:class => 'help-box'}, @content) %>
3
+ <% content_form(@content) do |f| -%>
4
+ <% end -%>
5
+ </div>
@@ -0,0 +1,5 @@
1
+ <% content_for :head do -%>
2
+ <meta name="keywords" content="<%=@content.tags.join(',')%>" />
3
+ <% end -%>
4
+ <%= @content.locale_body(I18n.locale) %>
5
+ <%= render :partial => 'contents/admin', :locals => { :content => @content } -%>
@@ -0,0 +1,8 @@
1
+ ActionController::Routing::Routes.draw do |map|
2
+ map.resources :contents, :controller => 'muck/contents'
3
+
4
+ # MuckContents.routes.each do |route|
5
+ # map.connect route[:uri], MuckContents.build_route_options(route)
6
+ # end
7
+
8
+ end
@@ -0,0 +1,49 @@
1
+ class AddContents < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :contents, :force => true do |t|
4
+ t.integer :creator_id
5
+ t.string :title
6
+ t.text :body
7
+ t.string :locale
8
+ t.text :body_raw
9
+ t.integer :contentable_id
10
+ t.string :contentable_type
11
+ t.integer :parent_id
12
+ t.integer :lft
13
+ t.integer :rgt
14
+ t.boolean :is_public
15
+ t.string :state
16
+ t.timestamps
17
+ end
18
+
19
+ create_table :content_translations, :force => true do |t|
20
+ t.integer :content_id
21
+ t.string :title
22
+ t.text :body
23
+ t.string :locale
24
+ t.boolean :user_edited, :default => false
25
+ t.timestamps
26
+ end
27
+
28
+ create_table :content_permissions, :force => true do |t|
29
+ t.integer :content_id
30
+ t.integer :user_id
31
+ t.timestamps
32
+ end
33
+
34
+ add_index :contents, :parent_id
35
+ add_index :contents, :creator_id
36
+
37
+ add_index :content_translations, :content_id
38
+ add_index :content_translations, :locale
39
+
40
+ add_index :content_permissions, [:content_id, :user_id]
41
+ end
42
+
43
+ def self.down
44
+ drop_table :content_versions
45
+ drop_table :contents
46
+ drop_table :content_translations
47
+ drop_table :content_permissions
48
+ end
49
+ end
@@ -0,0 +1,9 @@
1
+ class AddLayoutToContents < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :contents, :layout, :string
4
+ end
5
+
6
+ def self.down
7
+ remove_column :contents, :layout
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class AddScopeIndexToSlugs < ActiveRecord::Migration
2
+ def self.up
3
+ add_index :slugs, :scope
4
+ end
5
+
6
+ def self.down
7
+ remove_index :slugs, :scope
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class AddContentsCommentCounterCache < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :contents, :comment_count, :integer, :default => 0
4
+ end
5
+
6
+ def self.down
7
+ remove_column :contents, :comment_count
8
+ end
9
+ end