savage-beast 0.1.0

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 (265) hide show
  1. data/.gitignore +2 -0
  2. data/README.rdoc +42 -0
  3. data/Rakefile +25 -0
  4. data/VERSION +1 -0
  5. data/app/controllers/application.rb +6 -0
  6. data/app/controllers/beast_application_controller.rb +3 -0
  7. data/app/controllers/forums_controller.rb +64 -0
  8. data/app/controllers/moderators_controller.rb +10 -0
  9. data/app/controllers/monitorships_controller.rb +22 -0
  10. data/app/controllers/posts_controller.rb +134 -0
  11. data/app/controllers/topics_controller.rb +110 -0
  12. data/app/helpers/count_helper.rb +13 -0
  13. data/app/helpers/forums_helper.rb +15 -0
  14. data/app/helpers/moderators_helper.rb +2 -0
  15. data/app/helpers/monitorships_helper.rb +2 -0
  16. data/app/helpers/posts_helper.rb +3 -0
  17. data/app/helpers/topics_helper.rb +3 -0
  18. data/app/models/forum.rb +26 -0
  19. data/app/models/moderatorship.rb +6 -0
  20. data/app/models/monitorship.rb +5 -0
  21. data/app/models/monitorships_sweeper.rb +9 -0
  22. data/app/models/post.rb +33 -0
  23. data/app/models/posts_sweeper.rb +12 -0
  24. data/app/models/topic.rb +94 -0
  25. data/app/views/forums/_form.html.erb +21 -0
  26. data/app/views/forums/edit.html.erb +12 -0
  27. data/app/views/forums/index.html.erb +77 -0
  28. data/app/views/forums/new.html.erb +10 -0
  29. data/app/views/forums/show.html.erb +94 -0
  30. data/app/views/layouts/_head.html.erb +34 -0
  31. data/app/views/layouts/_post.rss.builder +9 -0
  32. data/app/views/layouts/application.html.erb +29 -0
  33. data/app/views/layouts/beast.html.erb +29 -0
  34. data/app/views/monitorships/create.js.rjs +4 -0
  35. data/app/views/monitorships/destroy.js.rjs +4 -0
  36. data/app/views/posts/_edit.html.erb +38 -0
  37. data/app/views/posts/edit.html.erb +14 -0
  38. data/app/views/posts/edit.js.rjs +6 -0
  39. data/app/views/posts/index.html.erb +53 -0
  40. data/app/views/posts/index.rss.builder +20 -0
  41. data/app/views/posts/monitored.html.erb +55 -0
  42. data/app/views/posts/monitored.rss.builder +15 -0
  43. data/app/views/posts/update.js.rjs +3 -0
  44. data/app/views/topics/_form.html.erb +28 -0
  45. data/app/views/topics/edit.html.erb +10 -0
  46. data/app/views/topics/index.html.erb +2 -0
  47. data/app/views/topics/new.html.erb +18 -0
  48. data/app/views/topics/show.html.erb +183 -0
  49. data/app/views/topics/show.rss.builder +16 -0
  50. data/config/routes.rb +18 -0
  51. data/generators/beast/beast_generator.rb +88 -0
  52. data/generators/beast/templates/migrations/create_savage_tables.rb +73 -0
  53. data/generators/beast/templates/public/images/clearbits/_readme.txt +12 -0
  54. data/generators/beast/templates/public/images/clearbits/add.gif +0 -0
  55. data/generators/beast/templates/public/images/clearbits/addressbook.gif +0 -0
  56. data/generators/beast/templates/public/images/clearbits/alert.gif +0 -0
  57. data/generators/beast/templates/public/images/clearbits/apple.gif +0 -0
  58. data/generators/beast/templates/public/images/clearbits/arrow1_e.gif +0 -0
  59. data/generators/beast/templates/public/images/clearbits/arrow1_n.gif +0 -0
  60. data/generators/beast/templates/public/images/clearbits/arrow1_ne.gif +0 -0
  61. data/generators/beast/templates/public/images/clearbits/arrow1_nw.gif +0 -0
  62. data/generators/beast/templates/public/images/clearbits/arrow1_s.gif +0 -0
  63. data/generators/beast/templates/public/images/clearbits/arrow1_se.gif +0 -0
  64. data/generators/beast/templates/public/images/clearbits/arrow1_sw.gif +0 -0
  65. data/generators/beast/templates/public/images/clearbits/arrow1_w.gif +0 -0
  66. data/generators/beast/templates/public/images/clearbits/arrow2_e.gif +0 -0
  67. data/generators/beast/templates/public/images/clearbits/arrow2_n.gif +0 -0
  68. data/generators/beast/templates/public/images/clearbits/arrow2_ne.gif +0 -0
  69. data/generators/beast/templates/public/images/clearbits/arrow2_nw.gif +0 -0
  70. data/generators/beast/templates/public/images/clearbits/arrow2_s.gif +0 -0
  71. data/generators/beast/templates/public/images/clearbits/arrow2_se.gif +0 -0
  72. data/generators/beast/templates/public/images/clearbits/arrow2_sw.gif +0 -0
  73. data/generators/beast/templates/public/images/clearbits/arrow2_w.gif +0 -0
  74. data/generators/beast/templates/public/images/clearbits/arrow3_e.gif +0 -0
  75. data/generators/beast/templates/public/images/clearbits/arrow3_n.gif +0 -0
  76. data/generators/beast/templates/public/images/clearbits/arrow3_ne.gif +0 -0
  77. data/generators/beast/templates/public/images/clearbits/arrow3_nw.gif +0 -0
  78. data/generators/beast/templates/public/images/clearbits/arrow3_s.gif +0 -0
  79. data/generators/beast/templates/public/images/clearbits/arrow3_se.gif +0 -0
  80. data/generators/beast/templates/public/images/clearbits/arrow3_sw.gif +0 -0
  81. data/generators/beast/templates/public/images/clearbits/arrow3_w.gif +0 -0
  82. data/generators/beast/templates/public/images/clearbits/ascii.gif +0 -0
  83. data/generators/beast/templates/public/images/clearbits/back.gif +0 -0
  84. data/generators/beast/templates/public/images/clearbits/bg_blank.gif +0 -0
  85. data/generators/beast/templates/public/images/clearbits/bg_circle.gif +0 -0
  86. data/generators/beast/templates/public/images/clearbits/bg_rounded.gif +0 -0
  87. data/generators/beast/templates/public/images/clearbits/bg_rounded_ne.gif +0 -0
  88. data/generators/beast/templates/public/images/clearbits/bg_rounded_nw.gif +0 -0
  89. data/generators/beast/templates/public/images/clearbits/bg_rounded_se.gif +0 -0
  90. data/generators/beast/templates/public/images/clearbits/bg_rounded_sw.gif +0 -0
  91. data/generators/beast/templates/public/images/clearbits/bigsmile.gif +0 -0
  92. data/generators/beast/templates/public/images/clearbits/binary.gif +0 -0
  93. data/generators/beast/templates/public/images/clearbits/blah.gif +0 -0
  94. data/generators/beast/templates/public/images/clearbits/bstop.gif +0 -0
  95. data/generators/beast/templates/public/images/clearbits/buy.gif +0 -0
  96. data/generators/beast/templates/public/images/clearbits/calday.gif +0 -0
  97. data/generators/beast/templates/public/images/clearbits/calendar.gif +0 -0
  98. data/generators/beast/templates/public/images/clearbits/camera.gif +0 -0
  99. data/generators/beast/templates/public/images/clearbits/cart.gif +0 -0
  100. data/generators/beast/templates/public/images/clearbits/cd.gif +0 -0
  101. data/generators/beast/templates/public/images/clearbits/cellphone.gif +0 -0
  102. data/generators/beast/templates/public/images/clearbits/chat.gif +0 -0
  103. data/generators/beast/templates/public/images/clearbits/check.gif +0 -0
  104. data/generators/beast/templates/public/images/clearbits/close.gif +0 -0
  105. data/generators/beast/templates/public/images/clearbits/comment.gif +0 -0
  106. data/generators/beast/templates/public/images/clearbits/cube.gif +0 -0
  107. data/generators/beast/templates/public/images/clearbits/day.gif +0 -0
  108. data/generators/beast/templates/public/images/clearbits/denied.gif +0 -0
  109. data/generators/beast/templates/public/images/clearbits/document.gif +0 -0
  110. data/generators/beast/templates/public/images/clearbits/download.gif +0 -0
  111. data/generators/beast/templates/public/images/clearbits/edit.gif +0 -0
  112. data/generators/beast/templates/public/images/clearbits/eject.gif +0 -0
  113. data/generators/beast/templates/public/images/clearbits/equalizer.gif +0 -0
  114. data/generators/beast/templates/public/images/clearbits/first.gif +0 -0
  115. data/generators/beast/templates/public/images/clearbits/flag.gif +0 -0
  116. data/generators/beast/templates/public/images/clearbits/flash.gif +0 -0
  117. data/generators/beast/templates/public/images/clearbits/folder.gif +0 -0
  118. data/generators/beast/templates/public/images/clearbits/forward.gif +0 -0
  119. data/generators/beast/templates/public/images/clearbits/frown.gif +0 -0
  120. data/generators/beast/templates/public/images/clearbits/ftp.gif +0 -0
  121. data/generators/beast/templates/public/images/clearbits/graph.gif +0 -0
  122. data/generators/beast/templates/public/images/clearbits/heart.gif +0 -0
  123. data/generators/beast/templates/public/images/clearbits/home.gif +0 -0
  124. data/generators/beast/templates/public/images/clearbits/html.gif +0 -0
  125. data/generators/beast/templates/public/images/clearbits/ipod.gif +0 -0
  126. data/generators/beast/templates/public/images/clearbits/last.gif +0 -0
  127. data/generators/beast/templates/public/images/clearbits/lock.gif +0 -0
  128. data/generators/beast/templates/public/images/clearbits/loop.gif +0 -0
  129. data/generators/beast/templates/public/images/clearbits/mail.gif +0 -0
  130. data/generators/beast/templates/public/images/clearbits/man.gif +0 -0
  131. data/generators/beast/templates/public/images/clearbits/manman.gif +0 -0
  132. data/generators/beast/templates/public/images/clearbits/music.gif +0 -0
  133. data/generators/beast/templates/public/images/clearbits/mute.gif +0 -0
  134. data/generators/beast/templates/public/images/clearbits/mute_centered.gif +0 -0
  135. data/generators/beast/templates/public/images/clearbits/newwindow.gif +0 -0
  136. data/generators/beast/templates/public/images/clearbits/next.gif +0 -0
  137. data/generators/beast/templates/public/images/clearbits/night.gif +0 -0
  138. data/generators/beast/templates/public/images/clearbits/open.gif +0 -0
  139. data/generators/beast/templates/public/images/clearbits/pause.gif +0 -0
  140. data/generators/beast/templates/public/images/clearbits/phone.gif +0 -0
  141. data/generators/beast/templates/public/images/clearbits/play.gif +0 -0
  142. data/generators/beast/templates/public/images/clearbits/previous.gif +0 -0
  143. data/generators/beast/templates/public/images/clearbits/quicktime.gif +0 -0
  144. data/generators/beast/templates/public/images/clearbits/redo.gif +0 -0
  145. data/generators/beast/templates/public/images/clearbits/reload.gif +0 -0
  146. data/generators/beast/templates/public/images/clearbits/sad.gif +0 -0
  147. data/generators/beast/templates/public/images/clearbits/save.gif +0 -0
  148. data/generators/beast/templates/public/images/clearbits/scream.gif +0 -0
  149. data/generators/beast/templates/public/images/clearbits/search.gif +0 -0
  150. data/generators/beast/templates/public/images/clearbits/seconds.gif +0 -0
  151. data/generators/beast/templates/public/images/clearbits/smile.gif +0 -0
  152. data/generators/beast/templates/public/images/clearbits/smirk.gif +0 -0
  153. data/generators/beast/templates/public/images/clearbits/star.gif +0 -0
  154. data/generators/beast/templates/public/images/clearbits/stop.gif +0 -0
  155. data/generators/beast/templates/public/images/clearbits/subtract.gif +0 -0
  156. data/generators/beast/templates/public/images/clearbits/switch.gif +0 -0
  157. data/generators/beast/templates/public/images/clearbits/target.gif +0 -0
  158. data/generators/beast/templates/public/images/clearbits/tcp.gif +0 -0
  159. data/generators/beast/templates/public/images/clearbits/time.gif +0 -0
  160. data/generators/beast/templates/public/images/clearbits/toggle.gif +0 -0
  161. data/generators/beast/templates/public/images/clearbits/tongue.gif +0 -0
  162. data/generators/beast/templates/public/images/clearbits/tools.gif +0 -0
  163. data/generators/beast/templates/public/images/clearbits/trackback.gif +0 -0
  164. data/generators/beast/templates/public/images/clearbits/trash.gif +0 -0
  165. data/generators/beast/templates/public/images/clearbits/tv.gif +0 -0
  166. data/generators/beast/templates/public/images/clearbits/type.gif +0 -0
  167. data/generators/beast/templates/public/images/clearbits/undo.gif +0 -0
  168. data/generators/beast/templates/public/images/clearbits/unlock.gif +0 -0
  169. data/generators/beast/templates/public/images/clearbits/upload.gif +0 -0
  170. data/generators/beast/templates/public/images/clearbits/user.gif +0 -0
  171. data/generators/beast/templates/public/images/clearbits/video.gif +0 -0
  172. data/generators/beast/templates/public/images/clearbits/volume_high.gif +0 -0
  173. data/generators/beast/templates/public/images/clearbits/volume_low.gif +0 -0
  174. data/generators/beast/templates/public/images/clearbits/wifi.gif +0 -0
  175. data/generators/beast/templates/public/images/clearbits/window.gif +0 -0
  176. data/generators/beast/templates/public/images/clearbits/woman.gif +0 -0
  177. data/generators/beast/templates/public/images/clearbits/womanman.gif +0 -0
  178. data/generators/beast/templates/public/images/clearbits/work.gif +0 -0
  179. data/generators/beast/templates/public/images/clearbits/zoomin.gif +0 -0
  180. data/generators/beast/templates/public/images/clearbits/zoomout.gif +0 -0
  181. data/generators/beast/templates/public/images/feed-icon.png +0 -0
  182. data/generators/beast/templates/public/images/rails.png +0 -0
  183. data/generators/beast/templates/public/images/reply_background.png +0 -0
  184. data/generators/beast/templates/public/images/small_circle.gif +0 -0
  185. data/generators/beast/templates/public/images/spinner.gif +0 -0
  186. data/generators/beast/templates/public/images/spinner_black.gif +0 -0
  187. data/generators/beast/templates/public/images/spinner_bounce.gif +0 -0
  188. data/generators/beast/templates/public/javascripts/beast.js +80 -0
  189. data/generators/beast/templates/public/stylesheets/display.css +941 -0
  190. data/lang/en.yml +206 -0
  191. data/lib/beast.rb +79 -0
  192. data/lib/savage_beast/application_helper.rb +91 -0
  193. data/lib/savage_beast/authentication_system.rb +47 -0
  194. data/lib/savage_beast/user_init.rb +79 -0
  195. data/lib/tasks/capistrano.rake +90 -0
  196. data/lib/tasks/deploy_edge.rake +44 -0
  197. data/lib/tasks/savage_beast.rake +133 -0
  198. data/po/beast.pot +712 -0
  199. data/po/nl/beast.po +700 -0
  200. data/tested_plugins/acts_as_list/README +23 -0
  201. data/tested_plugins/acts_as_list/init.rb +3 -0
  202. data/tested_plugins/acts_as_list/lib/active_record/acts/list.rb +256 -0
  203. data/tested_plugins/acts_as_list/test/list_test.rb +332 -0
  204. data/tested_plugins/gibberish/LICENSE +18 -0
  205. data/tested_plugins/gibberish/README +118 -0
  206. data/tested_plugins/gibberish/Rakefile +14 -0
  207. data/tested_plugins/gibberish/init.rb +3 -0
  208. data/tested_plugins/gibberish/lang/es.yml +3 -0
  209. data/tested_plugins/gibberish/lang/fr.yml +3 -0
  210. data/tested_plugins/gibberish/lib/gibberish.rb +8 -0
  211. data/tested_plugins/gibberish/lib/gibberish/localize.rb +88 -0
  212. data/tested_plugins/gibberish/lib/gibberish/string_ext.rb +17 -0
  213. data/tested_plugins/gibberish/test/gibberish_test.rb +203 -0
  214. data/tested_plugins/gibberish/test/lang/es.yml +1 -0
  215. data/tested_plugins/gibberish/test/lang/fr.yml +1 -0
  216. data/tested_plugins/mislav-will_paginate/CHANGELOG.rdoc +110 -0
  217. data/tested_plugins/mislav-will_paginate/LICENSE +18 -0
  218. data/tested_plugins/mislav-will_paginate/README.rdoc +107 -0
  219. data/tested_plugins/mislav-will_paginate/Rakefile +53 -0
  220. data/tested_plugins/mislav-will_paginate/examples/apple-circle.gif +0 -0
  221. data/tested_plugins/mislav-will_paginate/examples/index.haml +69 -0
  222. data/tested_plugins/mislav-will_paginate/examples/index.html +92 -0
  223. data/tested_plugins/mislav-will_paginate/examples/pagination.css +90 -0
  224. data/tested_plugins/mislav-will_paginate/examples/pagination.sass +91 -0
  225. data/tested_plugins/mislav-will_paginate/init.rb +1 -0
  226. data/tested_plugins/mislav-will_paginate/lib/will_paginate.rb +78 -0
  227. data/tested_plugins/mislav-will_paginate/lib/will_paginate/array.rb +16 -0
  228. data/tested_plugins/mislav-will_paginate/lib/will_paginate/collection.rb +146 -0
  229. data/tested_plugins/mislav-will_paginate/lib/will_paginate/core_ext.rb +32 -0
  230. data/tested_plugins/mislav-will_paginate/lib/will_paginate/finder.rb +264 -0
  231. data/tested_plugins/mislav-will_paginate/lib/will_paginate/named_scope.rb +170 -0
  232. data/tested_plugins/mislav-will_paginate/lib/will_paginate/named_scope_patch.rb +37 -0
  233. data/tested_plugins/mislav-will_paginate/lib/will_paginate/version.rb +9 -0
  234. data/tested_plugins/mislav-will_paginate/lib/will_paginate/view_helpers.rb +402 -0
  235. data/tested_plugins/mislav-will_paginate/test/boot.rb +21 -0
  236. data/tested_plugins/mislav-will_paginate/test/collection_test.rb +143 -0
  237. data/tested_plugins/mislav-will_paginate/test/console +8 -0
  238. data/tested_plugins/mislav-will_paginate/test/database.yml +22 -0
  239. data/tested_plugins/mislav-will_paginate/test/finder_test.rb +476 -0
  240. data/tested_plugins/mislav-will_paginate/test/fixtures/admin.rb +3 -0
  241. data/tested_plugins/mislav-will_paginate/test/fixtures/developer.rb +14 -0
  242. data/tested_plugins/mislav-will_paginate/test/fixtures/developers_projects.yml +13 -0
  243. data/tested_plugins/mislav-will_paginate/test/fixtures/project.rb +15 -0
  244. data/tested_plugins/mislav-will_paginate/test/fixtures/projects.yml +6 -0
  245. data/tested_plugins/mislav-will_paginate/test/fixtures/replies.yml +29 -0
  246. data/tested_plugins/mislav-will_paginate/test/fixtures/reply.rb +7 -0
  247. data/tested_plugins/mislav-will_paginate/test/fixtures/schema.rb +38 -0
  248. data/tested_plugins/mislav-will_paginate/test/fixtures/topic.rb +10 -0
  249. data/tested_plugins/mislav-will_paginate/test/fixtures/topics.yml +30 -0
  250. data/tested_plugins/mislav-will_paginate/test/fixtures/user.rb +2 -0
  251. data/tested_plugins/mislav-will_paginate/test/fixtures/users.yml +35 -0
  252. data/tested_plugins/mislav-will_paginate/test/helper.rb +40 -0
  253. data/tested_plugins/mislav-will_paginate/test/lib/activerecord_test_case.rb +43 -0
  254. data/tested_plugins/mislav-will_paginate/test/lib/activerecord_test_connector.rb +75 -0
  255. data/tested_plugins/mislav-will_paginate/test/lib/load_fixtures.rb +11 -0
  256. data/tested_plugins/mislav-will_paginate/test/lib/view_test_process.rb +178 -0
  257. data/tested_plugins/mislav-will_paginate/test/tasks.rake +59 -0
  258. data/tested_plugins/mislav-will_paginate/test/view_test.rb +365 -0
  259. data/tested_plugins/white_list/README +29 -0
  260. data/tested_plugins/white_list/Rakefile +22 -0
  261. data/tested_plugins/white_list/init.rb +2 -0
  262. data/tested_plugins/white_list/lib/white_list_helper.rb +97 -0
  263. data/tested_plugins/white_list/test/white_list_test.rb +132 -0
  264. data/tested_plugins/white_list_formatted_content/init.rb +27 -0
  265. metadata +322 -0
@@ -0,0 +1,90 @@
1
+ # =============================================================================
2
+ # A set of rake tasks for invoking the Capistrano automation utility.
3
+ # =============================================================================
4
+
5
+ # Invoke the given actions via Capistrano
6
+ def cap(*parameters)
7
+ begin
8
+ require 'rubygems'
9
+ rescue LoadError
10
+ # no rubygems to load, so we fail silently
11
+ end
12
+
13
+ require 'capistrano/cli'
14
+
15
+ Capistrano::CLI.new(parameters.map { |param| param.to_s }).execute!
16
+ end
17
+
18
+ namespace :remote do
19
+ desc "Removes unused releases from the releases directory."
20
+ task(:cleanup) { cap :cleanup }
21
+
22
+ desc "Used only for deploying when the spinner isn't running."
23
+ task(:cold_deploy) { cap :cold_deploy }
24
+
25
+ desc "A macro-task that updates the code, fixes the symlink, and restarts the application servers."
26
+ task(:deploy) { cap :deploy }
27
+
28
+ desc "Similar to deploy, but it runs the migrate task on the new release before updating the symlink."
29
+ task(:deploy_with_migrations) { cap :deploy_with_migrations }
30
+
31
+ desc "Displays the diff between HEAD and what was last deployed."
32
+ task(:diff_from_last_deploy) { cap :diff_from_last_deploy }
33
+
34
+ desc "Disable the web server by writing a \"maintenance.html\" file to the web servers."
35
+ task(:disable_web) { cap :disable_web }
36
+
37
+ desc "Re-enable the web server by deleting any \"maintenance.html\" file."
38
+ task(:enable_web) { cap :enable_web }
39
+
40
+ desc "A simple task for performing one-off commands that may not require a full task to be written for them."
41
+ task(:invoke) { cap :invoke }
42
+
43
+ desc "Run the migrate rake task."
44
+ task(:migrate) { cap :migrate }
45
+
46
+ desc "Restart the FCGI processes on the app server."
47
+ task(:restart) { cap :restart }
48
+
49
+ desc "A macro-task that rolls back the code and restarts the application servers."
50
+ task(:rollback) { cap :rollback }
51
+
52
+ desc "Rollback the latest checked-out version to the previous one by fixing the symlinks and deleting the current release from all servers."
53
+ task(:rollback_code) { cap :rollback_code }
54
+
55
+ desc "Set up the expected application directory structure on all boxes"
56
+ task(:setup) { cap :setup }
57
+
58
+ desc "Enumerate and describe every available task."
59
+ task(:show_tasks) { cap :show_tasks, '-q' }
60
+
61
+ desc "Start the spinner daemon for the application (requires script/spin)."
62
+ task(:spinner) { cap :spinner }
63
+
64
+ desc "Update the 'current' symlink to point to the latest version of the application's code."
65
+ task(:symlink) { cap :symlink }
66
+
67
+ desc "Update all servers with the latest release of the source code."
68
+ task(:update_code) { cap :update_code }
69
+
70
+ desc "Update the currently released version of the software directly via an SCM update operation"
71
+ task(:update_current) { cap :update_current }
72
+
73
+ desc "Execute a specific action using capistrano"
74
+ task :exec do
75
+ unless ENV['ACTION']
76
+ raise "Please specify an action (or comma separated list of actions) via the ACTION environment variable"
77
+ end
78
+
79
+ actions = ENV['ACTION'].split(",")
80
+ actions.concat(ENV['PARAMS'].split(" ")) if ENV['PARAMS']
81
+
82
+ cap(*actions)
83
+ end
84
+ end
85
+
86
+ desc "Push the latest revision into production (delegates to remote:deploy)"
87
+ task :deploy => "remote:deploy"
88
+
89
+ desc "Rollback to the release before the current release in production (delegates to remote:rollback)"
90
+ task :rollback => "remote:rollback"
@@ -0,0 +1,44 @@
1
+ desc "freeze rails edge"
2
+ task :deploy_edge do
3
+ ENV['SHARED_PATH'] = '../../shared' unless ENV['SHARED_PATH']
4
+ ENV['RAILS_PATH'] ||= File.join(ENV['SHARED_PATH'], 'rails')
5
+ ENV['REPO_BRANCH'] ||= 'trunk'
6
+
7
+ checkout_path = File.join(ENV['RAILS_PATH'], 'trunk')
8
+ export_path = "#{ENV['RAILS_PATH']}/rev_#{ENV['REVISION']}"
9
+ symlink_path = 'vendor/rails'
10
+
11
+ # do we need to checkout the file?
12
+ unless File.exists?(checkout_path)
13
+ puts 'setting up rails trunk'
14
+ get_framework_for checkout_path do |framework|
15
+ system "svn co http://svn.rubyonrails.org/rails/#{ENV['REPO_BRANCH']}/#{framework}/lib #{checkout_path}/#{framework}/lib --quiet"
16
+ end
17
+ end
18
+
19
+ # do we need to export the revision?
20
+ unless File.exists?(export_path)
21
+ puts "setting up rails rev #{ENV['REVISION']}"
22
+ get_framework_for export_path do |framework|
23
+ system "svn up #{checkout_path}/#{framework}/lib -r #{ENV['REVISION']} --quiet"
24
+ system "svn export #{checkout_path}/#{framework}/lib #{export_path}/#{framework}/lib"
25
+ end
26
+ end
27
+
28
+ puts 'linking rails'
29
+ rm_rf symlink_path
30
+ mkdir_p symlink_path
31
+
32
+ get_framework_for symlink_path do |framework|
33
+ ln_s File.expand_path("#{export_path}/#{framework}/lib"), "#{symlink_path}/#{framework}/lib"
34
+ end
35
+
36
+ touch "vendor/rails_#{ENV['REVISION']}"
37
+ end
38
+
39
+ def get_framework_for(*paths)
40
+ %w( railties actionpack activerecord actionmailer activesupport activeresource ).each do |framework|
41
+ paths.each { |path| mkdir_p "#{path}/#{framework}" }
42
+ yield framework
43
+ end
44
+ end
@@ -0,0 +1,133 @@
1
+ require 'active_record'
2
+
3
+ #require File.join(File.dirname(__FILE__), '../task_util')
4
+ #include TaskUtil
5
+
6
+ SAVAGE_BEAST_BASE_DIR = File.join(File.dirname(__FILE__), "../..")
7
+
8
+ namespace :savage_beast do
9
+ desc "Add database tables for bloggity"
10
+ task :bootstrap_db => :environment do
11
+ CreateSavageTables.up
12
+ puts "Savage Beast tables created successfully!"
13
+ end
14
+
15
+ desc "Copy the stylesheets and Javascripts used natively by bloggity into host app's public directory"
16
+ task :bootstrap_assets => :environment do
17
+ destination_root = RAILS_ROOT + "/public/"
18
+ %w(stylesheets images).each{|asset|
19
+ destination_path = destination_root + asset
20
+ FileUtils.mkpath(destination_path) unless File.exists?(destination_path)
21
+ FileUtils.mkpath(destination_path + "/savage_beast") unless File.exists?(destination_path + "/savage_beast")
22
+
23
+ Dir[File.join(SAVAGE_BEAST_BASE_DIR, 'public', asset, '*')].each do |f|
24
+ FileUtils.cp_r(f, File.expand_path(File.join(destination_root, asset, 'savage_beast')))
25
+ end
26
+ }
27
+ puts "Files successfully copied!"
28
+ end
29
+
30
+
31
+ =begin
32
+ desc "Run all Bloggity tests"
33
+ task :run_tests => :environment do
34
+ Rake::Task['bloggity:test:blog_posts'].invoke
35
+ Rake::Task['bloggity:test:blog_post'].invoke
36
+ end
37
+
38
+ desc "Run a Bloggity test"
39
+ rule "" do |t|
40
+ # test:file:method
41
+ if /bloggity\:test:(.*)(:([^.]+))?$/.match(t.name)
42
+ arguments = t.name.split(":")[1..-1]
43
+ arguments.delete("test")
44
+ file_name = arguments.first
45
+ test_name = arguments[1..-1]
46
+
47
+ if File.exist?(BLOGGITY_BASE_DIR + "/test/unit/#{file_name}_test.rb")
48
+ run_file_name = "unit/#{file_name}_test.rb"
49
+ elsif File.exist?(BLOGGITY_BASE_DIR + "/test/functional/#{file_name}_controller_test.rb")
50
+ run_file_name = "functional/#{file_name}_controller_test.rb"
51
+ elsif File.exist?(BLOGGITY_BASE_DIR + "/test/functional/#{file_name}_test.rb")
52
+ run_file_name = "functional/#{file_name}_test.rb"
53
+ end
54
+
55
+ sh "ruby -Ilib:test #{BLOGGITY_BASE_DIR}/test/#{run_file_name} -n /#{test_name}/"
56
+ end
57
+ end
58
+ =end
59
+ end
60
+
61
+ class CreateSavageTables < ActiveRecord::Migration
62
+ def self.up
63
+ create_table "forums" do |t|
64
+ t.string "name"
65
+ t.string "description"
66
+ t.integer "topics_count", :default => 0
67
+ t.integer "posts_count", :default => 0
68
+ t.integer "position"
69
+ t.text "description_html"
70
+ end
71
+
72
+ create_table "moderatorships" do |t|
73
+ t.integer "forum_id"
74
+ t.integer "user_id"
75
+ end
76
+
77
+ add_index "moderatorships", ["forum_id"], :name => "index_moderatorships_on_forum_id"
78
+
79
+ create_table "monitorships" do |t|
80
+ t.integer "topic_id"
81
+ t.integer "user_id"
82
+ t.boolean "active", :default => true
83
+ end
84
+
85
+ create_table "posts" do |t|
86
+ t.integer "user_id"
87
+ t.integer "topic_id"
88
+ t.text "body"
89
+ t.datetime "created_at"
90
+ t.datetime "updated_at"
91
+ t.integer "forum_id"
92
+ t.text "body_html"
93
+ end
94
+
95
+ add_index "posts", ["forum_id", "created_at"], :name => "index_posts_on_forum_id"
96
+ add_index "posts", ["user_id", "created_at"], :name => "index_posts_on_user_id"
97
+ add_index "posts", ["topic_id", "created_at"], :name => "index_posts_on_topic_id"
98
+
99
+ create_table "topics" do |t|
100
+ t.integer "forum_id"
101
+ t.integer "user_id"
102
+ t.string "title"
103
+ t.datetime "created_at"
104
+ t.datetime "updated_at"
105
+ t.integer "hits", :default => 0
106
+ t.integer "sticky", :default => 0
107
+ t.integer "posts_count", :default => 0
108
+ t.datetime "replied_at"
109
+ t.boolean "locked", :default => false
110
+ t.integer "replied_by"
111
+ t.integer "last_post_id"
112
+ end
113
+
114
+ add_index "topics", ["forum_id"], :name => "index_topics_on_forum_id"
115
+ add_index "topics", ["forum_id", "sticky", "replied_at"], :name => "index_topics_on_sticky_and_replied_at"
116
+ add_index "topics", ["forum_id", "replied_at"], :name => "index_topics_on_forum_id_and_replied_at"
117
+
118
+ add_column :users, :posts_count, :integer, :default => 0
119
+ add_column :users, :last_seen_at, :datetime
120
+ end
121
+
122
+ def self.down
123
+ remove_column :users, :posts_count
124
+ remove_column :users, :last_seen_at
125
+
126
+ drop_table :topics
127
+ drop_table :posts
128
+ drop_table :monitorships
129
+ drop_table :moderatorships
130
+ drop_table :forums
131
+ end
132
+
133
+ end
@@ -0,0 +1,712 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: beast 1.0.0\n"
10
+ "POT-Creation-Date: 2007-01-25 23:08+0100\n"
11
+ "PO-Revision-Date: 2007-01-25 22:22+0100\n"
12
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
+ "Language-Team: LANGUAGE <LL@li.org>\n"
14
+ "MIME-Version: 1.0\n"
15
+ "Content-Type: text/plain; charset=UTF-8\n"
16
+ "Content-Transfer-Encoding: 8bit\n"
17
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
18
+
19
+ #: app/models/forum.rb:-
20
+ msgid "forum"
21
+ msgstr ""
22
+
23
+ #: app/models/forum.rb:-
24
+ msgid "Forum|Name"
25
+ msgstr ""
26
+
27
+ #: app/models/forum.rb:-
28
+ msgid "Forum|Description"
29
+ msgstr ""
30
+
31
+ #: app/models/forum.rb:-
32
+ msgid "Forum|Topics count"
33
+ msgstr ""
34
+
35
+ #: app/models/forum.rb:-
36
+ msgid "Forum|Posts count"
37
+ msgstr ""
38
+
39
+ #: app/models/forum.rb:-
40
+ msgid "Forum|Position"
41
+ msgstr ""
42
+
43
+ #: app/models/forum.rb:-
44
+ msgid "Forum|Description html"
45
+ msgstr ""
46
+
47
+ #: app/models/moderatorship.rb:-
48
+ msgid "moderatorship"
49
+ msgstr ""
50
+
51
+ #: app/models/moderatorship.rb:-
52
+ msgid "Moderatorship|Forum"
53
+ msgstr ""
54
+
55
+ #: app/models/moderatorship.rb:-
56
+ msgid "Moderatorship|User"
57
+ msgstr ""
58
+
59
+ #: app/models/monitorship.rb:-
60
+ msgid "monitorship"
61
+ msgstr ""
62
+
63
+ #: app/models/post.rb:- app/views/forums/show.rhtml:34
64
+ msgid "post"
65
+ msgstr ""
66
+
67
+ #: app/models/post.rb:-
68
+ msgid "Post|User"
69
+ msgstr ""
70
+
71
+ #: app/models/post.rb:-
72
+ msgid "Post|Topic"
73
+ msgstr ""
74
+
75
+ #: app/models/post.rb:-
76
+ msgid "Post|Body"
77
+ msgstr ""
78
+
79
+ #: app/models/post.rb:-
80
+ msgid "Post|Created at"
81
+ msgstr ""
82
+
83
+ #: app/models/post.rb:-
84
+ msgid "Post|Updated at"
85
+ msgstr ""
86
+
87
+ #: app/models/post.rb:-
88
+ msgid "Post|Forum"
89
+ msgstr ""
90
+
91
+ #: app/models/topic.rb:- app/views/forums/show.rhtml:34
92
+ #: app/views/topics/show.rhtml:22
93
+ msgid "topic"
94
+ msgstr ""
95
+
96
+ #: app/models/topic.rb:-
97
+ msgid "Topic|Forum"
98
+ msgstr ""
99
+
100
+ #: app/models/topic.rb:-
101
+ msgid "Topic|User"
102
+ msgstr ""
103
+
104
+ #: app/models/topic.rb:-
105
+ msgid "Topic|Title"
106
+ msgstr ""
107
+
108
+ #: app/models/topic.rb:-
109
+ msgid "Topic|Created at"
110
+ msgstr ""
111
+
112
+ #: app/models/topic.rb:-
113
+ msgid "Topic|Updated at"
114
+ msgstr ""
115
+
116
+ #: app/models/topic.rb:-
117
+ msgid "Topic|Hits"
118
+ msgstr ""
119
+
120
+ #: app/models/topic.rb:-
121
+ msgid "Topic|Sticky"
122
+ msgstr ""
123
+
124
+ #: app/models/topic.rb:-
125
+ msgid "Topic|Posts count"
126
+ msgstr ""
127
+
128
+ #: app/models/topic.rb:-
129
+ msgid "Topic|Replied at"
130
+ msgstr ""
131
+
132
+ #: app/models/topic.rb:-
133
+ msgid "Topic|Locked"
134
+ msgstr ""
135
+
136
+ #: app/models/topic.rb:-
137
+ msgid "Topic|Replied by"
138
+ msgstr ""
139
+
140
+ #: app/models/topic.rb:-
141
+ msgid "Topic|Last post"
142
+ msgstr ""
143
+
144
+ #: app/models/user.rb:-
145
+ msgid "user"
146
+ msgstr ""
147
+
148
+ #: app/models/user.rb:-
149
+ msgid "User|Login"
150
+ msgstr ""
151
+
152
+ #: app/models/user.rb:-
153
+ msgid "User|Email"
154
+ msgstr ""
155
+
156
+ #: app/models/user.rb:-
157
+ msgid "User|Password"
158
+ msgstr ""
159
+
160
+ #: app/models/user.rb:-
161
+ msgid "User|Created at"
162
+ msgstr ""
163
+
164
+ #: app/models/user.rb:-
165
+ msgid "User|Last login at"
166
+ msgstr ""
167
+
168
+ #: app/models/user.rb:-
169
+ msgid "User|Admin"
170
+ msgstr ""
171
+
172
+ #: app/models/user.rb:-
173
+ msgid "User|Posts count"
174
+ msgstr ""
175
+
176
+ #: app/models/user.rb:-
177
+ msgid "User|Last seen at"
178
+ msgstr ""
179
+
180
+ #: app/models/user.rb:-
181
+ msgid "User|Display name"
182
+ msgstr ""
183
+
184
+ #: app/models/user.rb:-
185
+ msgid "User|Updated at"
186
+ msgstr ""
187
+
188
+ #: app/models/user.rb:-
189
+ msgid "User|Aim"
190
+ msgstr ""
191
+
192
+ #: app/models/user.rb:-
193
+ msgid "User|Yahoo"
194
+ msgstr ""
195
+
196
+ #: app/models/user.rb:-
197
+ msgid "User|Google talk"
198
+ msgstr ""
199
+
200
+ #: app/models/user.rb:-
201
+ msgid "User|Msn"
202
+ msgstr ""
203
+
204
+ #: app/models/user.rb:-
205
+ msgid "User|Website"
206
+ msgstr ""
207
+
208
+ #: app/models/user.rb:-
209
+ msgid "User|Login key"
210
+ msgstr ""
211
+
212
+ #: app/models/user.rb:-
213
+ msgid "User|Login key expires at"
214
+ msgstr ""
215
+
216
+ #: app/models/user.rb:-
217
+ msgid "User|Activated"
218
+ msgstr ""
219
+
220
+ #: app/views/forums/_form.rhtml:8 app/views/topics/_form.rhtml:2
221
+ msgid "Title"
222
+ msgstr ""
223
+
224
+ #: app/views/forums/_form.rhtml:12
225
+ msgid "Position"
226
+ msgstr ""
227
+
228
+ #: app/views/forums/_form.rhtml:20
229
+ msgid "Description"
230
+ msgstr ""
231
+
232
+ #: app/views/forums/edit.rhtml:2 app/views/forums/index.rhtml:16
233
+ #: app/views/forums/show.rhtml:26 app/views/layouts/application.rhtml:21
234
+ #: app/views/topics/new.rhtml:2 app/views/topics/show.rhtml:172
235
+ msgid "Forums"
236
+ msgstr ""
237
+
238
+ #: app/views/forums/edit.rhtml:5
239
+ msgid "Edit Forum"
240
+ msgstr ""
241
+
242
+ #: app/views/forums/edit.rhtml:11
243
+ msgid "Save Forum"
244
+ msgstr ""
245
+
246
+ #: app/views/forums/edit.rhtml:11 app/views/forums/new.rhtml:9
247
+ #: app/views/topics/edit.rhtml:9 app/views/topics/new.rhtml:13
248
+ msgid "Cancel"
249
+ msgstr ""
250
+
251
+ #: app/views/forums/index.rhtml:3
252
+ msgid "What is Beast?"
253
+ msgstr ""
254
+
255
+ #: app/views/forums/index.rhtml:6
256
+ msgid ""
257
+ "A small, light-weight forum in Rails with a scary name and a goal of around "
258
+ "500 lines of code when we're done."
259
+ msgstr ""
260
+
261
+ #: app/views/forums/index.rhtml:10
262
+ msgid "Admin"
263
+ msgstr ""
264
+
265
+ #: app/views/forums/index.rhtml:11
266
+ msgid "Create New Forum"
267
+ msgstr ""
268
+
269
+ #: app/views/forums/index.rhtml:18
270
+ msgid "Recent Posts"
271
+ msgstr ""
272
+
273
+ #: app/views/forums/index.rhtml:19 app/views/forums/index.rhtml:48
274
+ msgid "topics"
275
+ msgstr ""
276
+
277
+ #: app/views/forums/index.rhtml:19 app/views/forums/index.rhtml:49
278
+ #: app/views/users/show.rhtml:47
279
+ msgid "posts"
280
+ msgstr ""
281
+
282
+ #: app/views/forums/index.rhtml:20
283
+ msgid "voices"
284
+ msgstr ""
285
+
286
+ #: app/views/forums/index.rhtml:26 app/views/topics/_form.rhtml:25
287
+ msgid "Forum"
288
+ msgstr ""
289
+
290
+ #: app/views/forums/index.rhtml:31
291
+ msgid "Last Post"
292
+ msgstr ""
293
+
294
+ #: app/views/forums/index.rhtml:38
295
+ msgid "Recent activity"
296
+ msgstr ""
297
+
298
+ #: app/views/forums/index.rhtml:40
299
+ msgid "No recent activity"
300
+ msgstr ""
301
+
302
+ #: app/views/forums/index.rhtml:44
303
+ msgid "Edit"
304
+ msgstr ""
305
+
306
+ #: app/views/forums/index.rhtml:71
307
+ msgid "Recent posts"
308
+ msgstr ""
309
+
310
+ #: app/views/forums/index.rhtml:79
311
+ msgid "Users online:"
312
+ msgstr ""
313
+
314
+ #: app/views/forums/new.rhtml:5
315
+ msgid "New Forum"
316
+ msgstr ""
317
+
318
+ #: app/views/forums/new.rhtml:9
319
+ msgid "Create"
320
+ msgstr ""
321
+
322
+ #: app/views/forums/show.rhtml:8
323
+ msgid "Moderators"
324
+ msgstr ""
325
+
326
+ #: app/views/forums/show.rhtml:17
327
+ msgid "This forum is currently unmoderated."
328
+ msgstr ""
329
+
330
+ #: app/views/forums/show.rhtml:18
331
+ msgid "Please always be courteous."
332
+ msgstr ""
333
+
334
+ #: app/views/forums/show.rhtml:43 app/views/forums/show.rhtml:95
335
+ #: app/views/posts/index.rhtml:16 app/views/posts/index.rhtml:60
336
+ #: app/views/posts/monitored.rhtml:21 app/views/posts/monitored.rhtml:62
337
+ #: app/views/topics/show.rhtml:59 app/views/users/index.rhtml:19
338
+ #: app/views/users/index.rhtml:51
339
+ msgid "Pages:"
340
+ msgstr ""
341
+
342
+ #: app/views/forums/show.rhtml:48
343
+ msgid "Topic"
344
+ msgstr ""
345
+
346
+ #: app/views/forums/show.rhtml:49 app/views/users/index.rhtml:26
347
+ msgid "Posts"
348
+ msgstr ""
349
+
350
+ #: app/views/forums/show.rhtml:50
351
+ msgid "Views"
352
+ msgstr ""
353
+
354
+ #: app/views/forums/show.rhtml:51
355
+ msgid "Last post"
356
+ msgstr ""
357
+
358
+ #: app/views/forums/show.rhtml:91 app/views/posts/index.rhtml:56
359
+ #: app/views/posts/monitored.rhtml:58 app/views/users/index.rhtml:47
360
+ msgid "Next page"
361
+ msgstr ""
362
+
363
+ #: app/views/forums/show.rhtml:99
364
+ msgid "New topic"
365
+ msgstr ""
366
+
367
+ #: app/views/layouts/application.rhtml:22 app/views/users/index.rhtml:13
368
+ msgid "Users"
369
+ msgstr ""
370
+
371
+ #: app/views/layouts/application.rhtml:32 app/views/users/edit.rhtml:9
372
+ msgid "Settings"
373
+ msgstr ""
374
+
375
+ #: app/views/layouts/application.rhtml:33
376
+ msgid "Logout"
377
+ msgstr ""
378
+
379
+ #: app/views/layouts/application.rhtml:35 app/views/users/new.rhtml:1
380
+ msgid "Signup"
381
+ msgstr ""
382
+
383
+ #: app/views/layouts/application.rhtml:36 app/views/sessions/new.rhtml:1
384
+ #: app/views/sessions/new.rhtml:5 app/views/sessions/new.rhtml:16
385
+ #: app/views/users/_form.rhtml:4 app/views/users/_settings.rhtml:8
386
+ msgid "Login"
387
+ msgstr ""
388
+
389
+ #: app/views/layouts/application.rhtml:79
390
+ msgid "Powered by"
391
+ msgstr ""
392
+
393
+ #: app/views/layouts/application.rhtml:80
394
+ msgid "and"
395
+ msgstr ""
396
+
397
+ #: app/views/posts/_edit.rhtml:13
398
+ msgid "delete post"
399
+ msgstr ""
400
+
401
+ #: app/views/posts/_edit.rhtml:17 app/views/topics/show.rhtml:144
402
+ msgid "Formatting Help"
403
+ msgstr ""
404
+
405
+ #: app/views/posts/_edit.rhtml:20 app/views/topics/show.rhtml:147
406
+ msgid "*bold*"
407
+ msgstr ""
408
+
409
+ #: app/views/posts/_edit.rhtml:21 app/views/topics/show.rhtml:149
410
+ msgid "_italics_"
411
+ msgstr ""
412
+
413
+ #: app/views/posts/_edit.rhtml:22 app/views/topics/show.rhtml:151
414
+ msgid "bq. <span>(quotes)</span>"
415
+ msgstr ""
416
+
417
+ #: app/views/posts/_edit.rhtml:24 app/views/topics/show.rhtml:153
418
+ msgid "* or # <span>(lists)</span>"
419
+ msgstr ""
420
+
421
+ #: app/views/posts/_edit.rhtml:32 app/views/topics/edit.rhtml:9
422
+ msgid "Save Changes"
423
+ msgstr ""
424
+
425
+ #: app/views/posts/_edit.rhtml:32 app/views/posts/edit.rhtml:12
426
+ #: app/views/sessions/new.rhtml:28 app/views/topics/show.rhtml:160
427
+ #: app/views/users/edit.rhtml:22 app/views/users/edit.rhtml:30
428
+ msgid "cancel"
429
+ msgstr ""
430
+
431
+ #: app/views/posts/edit.rhtml:1
432
+ msgid "Edit Post"
433
+ msgstr ""
434
+
435
+ #: app/views/posts/edit.rhtml:5
436
+ msgid "Delete post"
437
+ msgstr ""
438
+
439
+ #: app/views/posts/edit.rhtml:6
440
+ msgid "Delete this post forever?"
441
+ msgstr ""
442
+
443
+ #: app/views/posts/edit.rhtml:12
444
+ msgid "Save"
445
+ msgstr ""
446
+
447
+ #: app/views/posts/index.rhtml:7
448
+ msgid "Searching for"
449
+ msgstr ""
450
+
451
+ #: app/views/posts/monitored.rhtml:5
452
+ msgid "s Monitored Topics"
453
+ msgstr ""
454
+
455
+ #: app/views/posts/monitored.rhtml:17
456
+ msgid "found"
457
+ msgstr ""
458
+
459
+ #: app/views/posts/monitored.rhtml:48
460
+ msgid "Topic:"
461
+ msgstr ""
462
+
463
+ #: app/views/sessions/new.rhtml:10 app/views/users/_form.rhtml:19
464
+ #: app/views/users/_settings.rhtml:22
465
+ msgid "Password"
466
+ msgstr ""
467
+
468
+ #: app/views/sessions/new.rhtml:14
469
+ msgid "Remember me on this computer"
470
+ msgstr ""
471
+
472
+ #: app/views/sessions/new.rhtml:16
473
+ msgid "reset password"
474
+ msgstr ""
475
+
476
+ #: app/views/sessions/new.rhtml:23
477
+ msgid "Reset Password"
478
+ msgstr ""
479
+
480
+ #: app/views/sessions/new.rhtml:25
481
+ msgid ""
482
+ "Enter your email, and a brand new login key will be sent to you. Click the "
483
+ "link in the email to log in, and then change your password."
484
+ msgstr ""
485
+
486
+ #: app/views/sessions/new.rhtml:28
487
+ msgid "E-mail me the link"
488
+ msgstr ""
489
+
490
+ #: app/views/topics/_form.rhtml:7
491
+ msgid "Sticky"
492
+ msgstr ""
493
+
494
+ #: app/views/topics/_form.rhtml:11
495
+ msgid "Locked"
496
+ msgstr ""
497
+
498
+ #: app/views/topics/_form.rhtml:19
499
+ msgid "Body"
500
+ msgstr ""
501
+
502
+ #: app/views/topics/edit.rhtml:1
503
+ msgid "Edit Topic"
504
+ msgstr ""
505
+
506
+ #: app/views/topics/new.rhtml:6
507
+ msgid "New Topic"
508
+ msgstr ""
509
+
510
+ #: app/views/topics/new.rhtml:7
511
+ msgid "by"
512
+ msgstr ""
513
+
514
+ #: app/views/topics/new.rhtml:13
515
+ msgid "Post Topic"
516
+ msgstr ""
517
+
518
+ #: app/views/topics/show.rhtml:6
519
+ msgid "Voices"
520
+ msgstr ""
521
+
522
+ #: app/views/topics/show.rhtml:41
523
+ msgid "(locked)"
524
+ msgstr ""
525
+
526
+ #: app/views/topics/show.rhtml:46
527
+ msgid "edit"
528
+ msgstr ""
529
+
530
+ #: app/views/topics/show.rhtml:47
531
+ msgid "delete"
532
+ msgstr ""
533
+
534
+ #: app/views/topics/show.rhtml:47
535
+ msgid "Delete this topic forever?"
536
+ msgstr ""
537
+
538
+ #: app/views/topics/show.rhtml:91
539
+ msgid "Edit post"
540
+ msgstr ""
541
+
542
+ #: app/views/topics/show.rhtml:126
543
+ msgid "This topic is locked."
544
+ msgstr ""
545
+
546
+ #: app/views/topics/show.rhtml:130
547
+ msgid "Reply to topic"
548
+ msgstr ""
549
+
550
+ #: app/views/topics/show.rhtml:160
551
+ msgid "Save Reply"
552
+ msgstr ""
553
+
554
+ #: app/views/user_mailer/signup.rhtml:1
555
+ msgid "Welcome to Beast,"
556
+ msgstr ""
557
+
558
+ #: app/views/user_mailer/signup.rhtml:3
559
+ msgid "Please visit the link below to activate your account."
560
+ msgstr ""
561
+
562
+ #: app/views/users/_contact_info.rhtml:1
563
+ msgid "User Profile"
564
+ msgstr ""
565
+
566
+ #: app/views/users/_contact_info.rhtml:4
567
+ msgid "Display Name"
568
+ msgstr ""
569
+
570
+ #: app/views/users/_contact_info.rhtml:9 app/views/users/index.rhtml:25
571
+ msgid "Website"
572
+ msgstr ""
573
+
574
+ #: app/views/users/_contact_info.rhtml:12
575
+ msgid "(without http://)"
576
+ msgstr ""
577
+
578
+ #: app/views/users/_contact_info.rhtml:17
579
+ msgid "Bio"
580
+ msgstr ""
581
+
582
+ #: app/views/users/_form.rhtml:1
583
+ msgid ""
584
+ "Logins should start with least 2 characters and may consist of letters, "
585
+ "numbers, or the underscore."
586
+ msgstr ""
587
+
588
+ #: app/views/users/_form.rhtml:9 app/views/users/_settings.rhtml:17
589
+ msgid "Email"
590
+ msgstr ""
591
+
592
+ #: app/views/users/_form.rhtml:14
593
+ msgid "Display Name (optional)"
594
+ msgstr ""
595
+
596
+ #: app/views/users/_form.rhtml:20
597
+ msgid "Enter your desired password twice. It must be at least 5 characters."
598
+ msgstr ""
599
+
600
+ #: app/views/users/_form.rhtml:23 app/views/users/_settings.rhtml:25
601
+ msgid "(once)"
602
+ msgstr ""
603
+
604
+ #: app/views/users/_form.rhtml:25
605
+ msgid "(and then again)"
606
+ msgstr ""
607
+
608
+ #: app/views/users/_settings.rhtml:2
609
+ msgid "Basics"
610
+ msgstr ""
611
+
612
+ #: app/views/users/_settings.rhtml:9
613
+ msgid ""
614
+ "Please change your login.</strong> Logins should start with least 2 "
615
+ "characters and may consist of letters, numbers, or the underscore."
616
+ msgstr ""
617
+
618
+ #: app/views/users/_settings.rhtml:23
619
+ msgid ""
620
+ "Enter a new password twice to change your password. (must be longer than 5 "
621
+ "characters)"
622
+ msgstr ""
623
+
624
+ #: app/views/users/_settings.rhtml:28
625
+ msgid "(and again)"
626
+ msgstr ""
627
+
628
+ #: app/views/users/edit.rhtml:3
629
+ msgid "Avatars"
630
+ msgstr ""
631
+
632
+ #: app/views/users/edit.rhtml:5
633
+ msgid ""
634
+ "To have your very own avatar displayed on this forum visit <a href=\"http://"
635
+ "www.gravatar.com/\">gravatar.com</a> and sign up for a free gravatar."
636
+ msgstr ""
637
+
638
+ #: app/views/users/edit.rhtml:11
639
+ msgid "for"
640
+ msgstr ""
641
+
642
+ #: app/views/users/edit.rhtml:22
643
+ msgid "Change e-mail or password"
644
+ msgstr ""
645
+
646
+ #: app/views/users/edit.rhtml:30
647
+ msgid "Update Profile"
648
+ msgstr ""
649
+
650
+ #: app/views/users/index.rhtml:2
651
+ msgid "Find a User"
652
+ msgstr ""
653
+
654
+ #: app/views/users/index.rhtml:6
655
+ msgid "Display name or login"
656
+ msgstr ""
657
+
658
+ #: app/views/users/index.rhtml:8
659
+ msgid "Search"
660
+ msgstr ""
661
+
662
+ #: app/views/users/index.rhtml:15
663
+ msgid "users"
664
+ msgstr ""
665
+
666
+ #: app/views/users/index.rhtml:15
667
+ msgid "active"
668
+ msgstr ""
669
+
670
+ #: app/views/users/index.rhtml:15
671
+ msgid "lurking"
672
+ msgstr ""
673
+
674
+ #: app/views/users/index.rhtml:24
675
+ msgid "Name / Login"
676
+ msgstr ""
677
+
678
+ #: app/views/users/index.rhtml:32
679
+ msgid "(admin)"
680
+ msgstr ""
681
+
682
+ #: app/views/users/new.rhtml:7
683
+ msgid "Sign up!"
684
+ msgstr ""
685
+
686
+ #: app/views/users/show.rhtml:6
687
+ msgid "Admin &amp; Moderation"
688
+ msgstr ""
689
+
690
+ #: app/views/users/show.rhtml:10
691
+ msgid "This user can moderate the following forums. Click one to remove."
692
+ msgstr ""
693
+
694
+ #: app/views/users/show.rhtml:24
695
+ msgid "Add as moderator"
696
+ msgstr ""
697
+
698
+ #: app/views/users/show.rhtml:30
699
+ msgid "User is an administrator"
700
+ msgstr ""
701
+
702
+ #: app/views/users/show.rhtml:47
703
+ msgid "monitored"
704
+ msgstr ""
705
+
706
+ #: app/views/users/show.rhtml:54
707
+ msgid "Website:"
708
+ msgstr ""
709
+
710
+ #: app/views/users/show.rhtml:56
711
+ msgid "User since"
712
+ msgstr ""