branston 0.3.2

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 (409) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +17 -0
  3. data/bin/branston +4 -0
  4. data/lib/branston/README +1 -0
  5. data/lib/branston/Rakefile +20 -0
  6. data/lib/branston/app/controllers/application_controller.rb +13 -0
  7. data/lib/branston/app/controllers/iterations_controller.rb +106 -0
  8. data/lib/branston/app/controllers/outcomes_controller.rb +102 -0
  9. data/lib/branston/app/controllers/preconditions_controller.rb +106 -0
  10. data/lib/branston/app/controllers/releases_controller.rb +93 -0
  11. data/lib/branston/app/controllers/scenarios_controller.rb +104 -0
  12. data/lib/branston/app/controllers/sessions_controller.rb +44 -0
  13. data/lib/branston/app/controllers/stories_controller.rb +121 -0
  14. data/lib/branston/app/controllers/user_roles_controller.rb +91 -0
  15. data/lib/branston/app/controllers/users_controller.rb +28 -0
  16. data/lib/branston/app/helpers/application_helper.rb +14 -0
  17. data/lib/branston/app/helpers/iterations_helper.rb +2 -0
  18. data/lib/branston/app/helpers/outcomes_helper.rb +2 -0
  19. data/lib/branston/app/helpers/preconditions_helper.rb +2 -0
  20. data/lib/branston/app/helpers/releases_helper.rb +2 -0
  21. data/lib/branston/app/helpers/sessions_helper.rb +2 -0
  22. data/lib/branston/app/helpers/stories_helper.rb +2 -0
  23. data/lib/branston/app/helpers/user_roles_helper.rb +2 -0
  24. data/lib/branston/app/helpers/users_helper.rb +93 -0
  25. data/lib/branston/app/models/iteration.rb +15 -0
  26. data/lib/branston/app/models/outcome.rb +16 -0
  27. data/lib/branston/app/models/participation.rb +7 -0
  28. data/lib/branston/app/models/precondition.rb +16 -0
  29. data/lib/branston/app/models/release.rb +7 -0
  30. data/lib/branston/app/models/scenario.rb +14 -0
  31. data/lib/branston/app/models/story.rb +33 -0
  32. data/lib/branston/app/models/user.rb +56 -0
  33. data/lib/branston/app/models/user_role.rb +7 -0
  34. data/lib/branston/app/views/iterations/_form.html.erb +24 -0
  35. data/lib/branston/app/views/iterations/edit.html.erb +14 -0
  36. data/lib/branston/app/views/iterations/index.html.erb +31 -0
  37. data/lib/branston/app/views/iterations/new.html.erb +13 -0
  38. data/lib/branston/app/views/iterations/show.html.erb +39 -0
  39. data/lib/branston/app/views/layouts/_footer.html.erb +7 -0
  40. data/lib/branston/app/views/layouts/_header.html.erb +30 -0
  41. data/lib/branston/app/views/layouts/_meta.html.erb +5 -0
  42. data/lib/branston/app/views/layouts/main.html.erb +31 -0
  43. data/lib/branston/app/views/layouts/outcomes.html.erb +17 -0
  44. data/lib/branston/app/views/layouts/preconditions.html.erb +17 -0
  45. data/lib/branston/app/views/layouts/releases.html.erb +17 -0
  46. data/lib/branston/app/views/layouts/user_roles.html.erb +32 -0
  47. data/lib/branston/app/views/outcomes/_outcome.html.erb +19 -0
  48. data/lib/branston/app/views/outcomes/_outcomes.html.erb +13 -0
  49. data/lib/branston/app/views/outcomes/create.js.rjs +3 -0
  50. data/lib/branston/app/views/outcomes/destroy.js.rjs +2 -0
  51. data/lib/branston/app/views/outcomes/edit.html.erb +12 -0
  52. data/lib/branston/app/views/outcomes/index.html.erb +18 -0
  53. data/lib/branston/app/views/outcomes/index.js.rjs +3 -0
  54. data/lib/branston/app/views/outcomes/new.html.erb +11 -0
  55. data/lib/branston/app/views/outcomes/new.js.rjs +3 -0
  56. data/lib/branston/app/views/outcomes/show.html.erb +3 -0
  57. data/lib/branston/app/views/preconditions/_precondition.html.erb +19 -0
  58. data/lib/branston/app/views/preconditions/_preconditions.html.erb +13 -0
  59. data/lib/branston/app/views/preconditions/create.js.rjs +3 -0
  60. data/lib/branston/app/views/preconditions/destroy.js.rjs +2 -0
  61. data/lib/branston/app/views/preconditions/edit.html.erb +12 -0
  62. data/lib/branston/app/views/preconditions/index.html.erb +18 -0
  63. data/lib/branston/app/views/preconditions/index.js.rjs +3 -0
  64. data/lib/branston/app/views/preconditions/new.html.erb +16 -0
  65. data/lib/branston/app/views/preconditions/new.js.rjs +3 -0
  66. data/lib/branston/app/views/preconditions/show.html.erb +3 -0
  67. data/lib/branston/app/views/releases/edit.html.erb +20 -0
  68. data/lib/branston/app/views/releases/index.html.erb +28 -0
  69. data/lib/branston/app/views/releases/new.html.erb +19 -0
  70. data/lib/branston/app/views/releases/show.html.erb +13 -0
  71. data/lib/branston/app/views/scenarios/_scenario.html.erb +25 -0
  72. data/lib/branston/app/views/scenarios/_scenarios.html.erb +16 -0
  73. data/lib/branston/app/views/scenarios/create.js.rjs +2 -0
  74. data/lib/branston/app/views/scenarios/destroy.js.rjs +2 -0
  75. data/lib/branston/app/views/scenarios/edit.html.erb +0 -0
  76. data/lib/branston/app/views/scenarios/index.html.erb +0 -0
  77. data/lib/branston/app/views/scenarios/index.js.rjs +3 -0
  78. data/lib/branston/app/views/scenarios/new.html.erb +0 -0
  79. data/lib/branston/app/views/scenarios/new.js.rjs +3 -0
  80. data/lib/branston/app/views/scenarios/show.html.erb +0 -0
  81. data/lib/branston/app/views/sessions/new.html.erb +21 -0
  82. data/lib/branston/app/views/stories/_form.html.erb +17 -0
  83. data/lib/branston/app/views/stories/_story.html.erb +37 -0
  84. data/lib/branston/app/views/stories/edit.html.erb +14 -0
  85. data/lib/branston/app/views/stories/index.html.erb +52 -0
  86. data/lib/branston/app/views/stories/new.html.erb +13 -0
  87. data/lib/branston/app/views/stories/show.html.erb +23 -0
  88. data/lib/branston/app/views/stories/show.js.rjs +3 -0
  89. data/lib/branston/app/views/stories/update.js.rjs +1 -0
  90. data/lib/branston/app/views/user_roles/edit.html.erb +16 -0
  91. data/lib/branston/app/views/user_roles/index.html.erb +20 -0
  92. data/lib/branston/app/views/user_roles/new.html.erb +15 -0
  93. data/lib/branston/app/views/user_roles/show.html.erb +8 -0
  94. data/lib/branston/app/views/users/_user_bar.html.erb +8 -0
  95. data/lib/branston/app/views/users/new.html.erb +28 -0
  96. data/lib/branston/config/boot.rb +110 -0
  97. data/lib/branston/config/database.yml +31 -0
  98. data/lib/branston/config/environment.rb +51 -0
  99. data/lib/branston/config/environments/cucumber.rb +24 -0
  100. data/lib/branston/config/environments/development.rb +20 -0
  101. data/lib/branston/config/environments/production.rb +29 -0
  102. data/lib/branston/config/environments/test.rb +43 -0
  103. data/lib/branston/config/initializers/backtrace_silencers.rb +7 -0
  104. data/lib/branston/config/initializers/inflections.rb +10 -0
  105. data/lib/branston/config/initializers/mime_types.rb +5 -0
  106. data/lib/branston/config/initializers/new_rails_defaults.rb +21 -0
  107. data/lib/branston/config/initializers/session_store.rb +15 -0
  108. data/lib/branston/config/initializers/site_keys.rb +38 -0
  109. data/lib/branston/config/locales/en.yml +5 -0
  110. data/lib/branston/config/routes.rb +26 -0
  111. data/lib/branston/coverage/app-controllers-application_controller_rb.html +141 -0
  112. data/lib/branston/coverage/app-controllers-iterations_controller_rb.html +693 -0
  113. data/lib/branston/coverage/app-controllers-outcomes_controller_rb.html +663 -0
  114. data/lib/branston/coverage/app-controllers-preconditions_controller_rb.html +735 -0
  115. data/lib/branston/coverage/app-controllers-releases_controller_rb.html +609 -0
  116. data/lib/branston/coverage/app-controllers-scenarios_controller_rb.html +669 -0
  117. data/lib/branston/coverage/app-controllers-sessions_controller_rb.html +309 -0
  118. data/lib/branston/coverage/app-controllers-stories_controller_rb.html +717 -0
  119. data/lib/branston/coverage/app-controllers-user_roles_controller_rb.html +573 -0
  120. data/lib/branston/coverage/app-controllers-users_controller_rb.html +219 -0
  121. data/lib/branston/coverage/app-helpers-application_helper_rb.html +129 -0
  122. data/lib/branston/coverage/app-helpers-iterations_helper_rb.html +75 -0
  123. data/lib/branston/coverage/app-helpers-outcomes_helper_rb.html +75 -0
  124. data/lib/branston/coverage/app-helpers-preconditions_helper_rb.html +75 -0
  125. data/lib/branston/coverage/app-helpers-releases_helper_rb.html +75 -0
  126. data/lib/branston/coverage/app-helpers-sessions_helper_rb.html +75 -0
  127. data/lib/branston/coverage/app-helpers-stories_helper_rb.html +75 -0
  128. data/lib/branston/coverage/app-helpers-user_roles_helper_rb.html +75 -0
  129. data/lib/branston/coverage/app-models-iteration_rb.html +153 -0
  130. data/lib/branston/coverage/app-models-outcome_rb.html +159 -0
  131. data/lib/branston/coverage/app-models-participation_rb.html +105 -0
  132. data/lib/branston/coverage/app-models-precondition_rb.html +153 -0
  133. data/lib/branston/coverage/app-models-release_rb.html +105 -0
  134. data/lib/branston/coverage/app-models-scenario_rb.html +147 -0
  135. data/lib/branston/coverage/app-models-story_rb.html +189 -0
  136. data/lib/branston/coverage/app-models-user_rb.html +399 -0
  137. data/lib/branston/coverage/app-models-user_role_rb.html +105 -0
  138. data/lib/branston/coverage/index.html +554 -0
  139. data/lib/branston/coverage/jquery-1.3.2.min.js +19 -0
  140. data/lib/branston/coverage/jquery.tablesorter.min.js +15 -0
  141. data/lib/branston/coverage/lib-faker_extras_rb.html +207 -0
  142. data/lib/branston/coverage/lib-story_generator_rb.html +879 -0
  143. data/lib/branston/coverage/print.css +12 -0
  144. data/lib/branston/coverage/rcov.js +42 -0
  145. data/lib/branston/coverage/screen.css +270 -0
  146. data/lib/branston/db/development.sqlite3 +0 -0
  147. data/lib/branston/db/development_structure.sql +35 -0
  148. data/lib/branston/db/migrate/20091127114237_create_users.rb +22 -0
  149. data/lib/branston/db/migrate/20091127120627_create_iterations.rb +17 -0
  150. data/lib/branston/db/migrate/20091127122422_create_stories.rb +16 -0
  151. data/lib/branston/db/migrate/20091127131037_create_user_roles.rb +13 -0
  152. data/lib/branston/db/migrate/20091127144645_create_participations.rb +15 -0
  153. data/lib/branston/db/migrate/20091127164217_create_scenarios.rb +14 -0
  154. data/lib/branston/db/migrate/20091127164446_create_preconditions.rb +14 -0
  155. data/lib/branston/db/migrate/20091127164705_create_outcomes.rb +14 -0
  156. data/lib/branston/db/migrate/20091127172849_add_title_to_stories.rb +9 -0
  157. data/lib/branston/db/migrate/20091127172950_add_story_id_to_user_role.rb +10 -0
  158. data/lib/branston/db/migrate/20091127173744_add_author_id_to_story.rb +10 -0
  159. data/lib/branston/db/migrate/20091202105555_create_releases.rb +17 -0
  160. data/lib/branston/db/migrate/20091204173634_add_slug_to_stories.rb +13 -0
  161. data/lib/branston/db/pristine.sqlite3 +0 -0
  162. data/lib/branston/db/production.sqlite3 +0 -0
  163. data/lib/branston/db/schema.rb +91 -0
  164. data/lib/branston/db/seeds.rb +7 -0
  165. data/lib/branston/db/test.sqlite3 +0 -0
  166. data/lib/branston/doc/README_FOR_APP +2 -0
  167. data/lib/branston/doc/branston.zargo +0 -0
  168. data/lib/branston/features/step_definitions/webrat_steps.rb +189 -0
  169. data/lib/branston/features/support/env.rb +46 -0
  170. data/lib/branston/features/support/paths.rb +27 -0
  171. data/lib/branston/features/support/version_check.rb +31 -0
  172. data/lib/branston/lib/authenticated_system.rb +189 -0
  173. data/lib/branston/lib/authenticated_test_helper.rb +11 -0
  174. data/lib/branston/lib/branston.rb +149 -0
  175. data/lib/branston/lib/client.rb +61 -0
  176. data/lib/branston/lib/faker_extras.rb +24 -0
  177. data/lib/branston/lib/story_generator.rb +135 -0
  178. data/lib/branston/lib/tasks/cucumber.rake +46 -0
  179. data/lib/branston/lib/tasks/make_pristine_copy.rake +18 -0
  180. data/lib/branston/log/cucumber.log +1 -0
  181. data/lib/branston/log/development.log +10836 -0
  182. data/lib/branston/log/test.log +52955 -0
  183. data/lib/branston/public/404.html +75 -0
  184. data/lib/branston/public/422.html +74 -0
  185. data/lib/branston/public/500.html +65 -0
  186. data/lib/branston/public/blank_iframe.html +2 -0
  187. data/lib/branston/public/favicon.ico +0 -0
  188. data/lib/branston/public/images/branston_pickle_bg.png +0 -0
  189. data/lib/branston/public/images/calendar_date_select/calendar.gif +0 -0
  190. data/lib/branston/public/images/icons/back_icon_30x23.png +0 -0
  191. data/lib/branston/public/images/icons/delete_icon_20x19.png +0 -0
  192. data/lib/branston/public/images/icons/delete_icon_30x29.png +0 -0
  193. data/lib/branston/public/images/icons/plus_icon_15x15.png +0 -0
  194. data/lib/branston/public/images/icons/plus_icon_20x20.png +0 -0
  195. data/lib/branston/public/images/icons/plus_icon_30x30.png +0 -0
  196. data/lib/branston/public/images/img01.gif +0 -0
  197. data/lib/branston/public/images/img02.gif +0 -0
  198. data/lib/branston/public/images/img03.gif +0 -0
  199. data/lib/branston/public/images/img04.gif +0 -0
  200. data/lib/branston/public/images/img05.gif +0 -0
  201. data/lib/branston/public/images/img06.gif +0 -0
  202. data/lib/branston/public/images/img07.gif +0 -0
  203. data/lib/branston/public/images/img08.gif +0 -0
  204. data/lib/branston/public/images/logo.png +0 -0
  205. data/lib/branston/public/images/rails.png +0 -0
  206. data/lib/branston/public/javascripts/accordion.js +126 -0
  207. data/lib/branston/public/javascripts/application.js +11 -0
  208. data/lib/branston/public/javascripts/calendar_date_select/calendar_date_select.js +443 -0
  209. data/lib/branston/public/javascripts/calendar_date_select/calendar_date_select.prototype.js +443 -0
  210. data/lib/branston/public/javascripts/calendar_date_select/format_american.js +34 -0
  211. data/lib/branston/public/javascripts/calendar_date_select/format_db.js +27 -0
  212. data/lib/branston/public/javascripts/calendar_date_select/format_euro_24hr.js +7 -0
  213. data/lib/branston/public/javascripts/calendar_date_select/format_euro_24hr_ymd.js +7 -0
  214. data/lib/branston/public/javascripts/calendar_date_select/format_finnish.js +32 -0
  215. data/lib/branston/public/javascripts/calendar_date_select/format_german.js +34 -0
  216. data/lib/branston/public/javascripts/calendar_date_select/format_hyphen_ampm.js +37 -0
  217. data/lib/branston/public/javascripts/calendar_date_select/format_iso_date.js +46 -0
  218. data/lib/branston/public/javascripts/calendar_date_select/format_italian.js +24 -0
  219. data/lib/branston/public/javascripts/calendar_date_select/locale/de.js +11 -0
  220. data/lib/branston/public/javascripts/calendar_date_select/locale/fi.js +10 -0
  221. data/lib/branston/public/javascripts/calendar_date_select/locale/fr.js +10 -0
  222. data/lib/branston/public/javascripts/calendar_date_select/locale/pl.js +10 -0
  223. data/lib/branston/public/javascripts/calendar_date_select/locale/pt.js +11 -0
  224. data/lib/branston/public/javascripts/calendar_date_select/locale/ru.js +10 -0
  225. data/lib/branston/public/javascripts/controls.js +963 -0
  226. data/lib/branston/public/javascripts/dragdrop.js +973 -0
  227. data/lib/branston/public/javascripts/effects.js +1128 -0
  228. data/lib/branston/public/javascripts/prototype.js +4320 -0
  229. data/lib/branston/public/robots.txt +5 -0
  230. data/lib/branston/public/stylesheets/application.css +74 -0
  231. data/lib/branston/public/stylesheets/calendar_date_select/blue.css +130 -0
  232. data/lib/branston/public/stylesheets/calendar_date_select/default.css +135 -0
  233. data/lib/branston/public/stylesheets/calendar_date_select/plain.css +128 -0
  234. data/lib/branston/public/stylesheets/calendar_date_select/red.css +135 -0
  235. data/lib/branston/public/stylesheets/calendar_date_select/silver.css +133 -0
  236. data/lib/branston/public/stylesheets/scaffold.css +54 -0
  237. data/lib/branston/public/stylesheets/style.css +485 -0
  238. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  239. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  240. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  241. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  242. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  243. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  244. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  245. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  246. data/lib/branston/public/stylesheets/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  247. data/lib/branston/public/stylesheets/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  248. data/lib/branston/public/stylesheets/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  249. data/lib/branston/public/stylesheets/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  250. data/lib/branston/public/stylesheets/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  251. data/lib/branston/public/stylesheets/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  252. data/lib/branston/public/stylesheets/ui-lightness/jquery-ui-1.7.2.custom.css +406 -0
  253. data/lib/branston/script/about +4 -0
  254. data/lib/branston/script/console +3 -0
  255. data/lib/branston/script/cucumber +17 -0
  256. data/lib/branston/script/dbconsole +3 -0
  257. data/lib/branston/script/destroy +3 -0
  258. data/lib/branston/script/generate +3 -0
  259. data/lib/branston/script/performance/benchmarker +3 -0
  260. data/lib/branston/script/performance/profiler +3 -0
  261. data/lib/branston/script/plugin +3 -0
  262. data/lib/branston/script/runner +3 -0
  263. data/lib/branston/script/server +3 -0
  264. data/lib/branston/test/blueprints.rb +108 -0
  265. data/lib/branston/test/fixtures/outcomes.yml +7 -0
  266. data/lib/branston/test/fixtures/preconditions.yml +7 -0
  267. data/lib/branston/test/functional/iterations_controller_test.rb +155 -0
  268. data/lib/branston/test/functional/outcomes_controller_test.rb +97 -0
  269. data/lib/branston/test/functional/preconditions_controller_test.rb +106 -0
  270. data/lib/branston/test/functional/releases_controller_test.rb +68 -0
  271. data/lib/branston/test/functional/scenarios_controller_test.rb +100 -0
  272. data/lib/branston/test/functional/sessions_controller_test.rb +85 -0
  273. data/lib/branston/test/functional/stories_controller_test.rb +129 -0
  274. data/lib/branston/test/functional/user_roles_controller_test.rb +71 -0
  275. data/lib/branston/test/functional/users_controller_test.rb +61 -0
  276. data/lib/branston/test/performance/browsing_test.rb +9 -0
  277. data/lib/branston/test/test_helper.rb +49 -0
  278. data/lib/branston/test/unit/client_test.rb +101 -0
  279. data/lib/branston/test/unit/helpers/iterations_helper_test.rb +4 -0
  280. data/lib/branston/test/unit/helpers/outcomes_helper_test.rb +4 -0
  281. data/lib/branston/test/unit/helpers/preconditions_helper_test.rb +4 -0
  282. data/lib/branston/test/unit/helpers/releases_helper_test.rb +4 -0
  283. data/lib/branston/test/unit/helpers/stories_helper_test.rb +4 -0
  284. data/lib/branston/test/unit/helpers/user_roles_helper_test.rb +4 -0
  285. data/lib/branston/test/unit/iteration_test.rb +13 -0
  286. data/lib/branston/test/unit/outcome_test.rb +9 -0
  287. data/lib/branston/test/unit/participation_test.rb +9 -0
  288. data/lib/branston/test/unit/precondition_test.rb +9 -0
  289. data/lib/branston/test/unit/release_test.rb +5 -0
  290. data/lib/branston/test/unit/scenario_test.rb +12 -0
  291. data/lib/branston/test/unit/story_generator_test.rb +37 -0
  292. data/lib/branston/test/unit/story_test.rb +159 -0
  293. data/lib/branston/test/unit/user_role_test.rb +9 -0
  294. data/lib/branston/test/unit/user_test.rb +115 -0
  295. data/lib/branston/test/xml/example.xml +45 -0
  296. data/lib/branston/test/xml/no_scenarios.xml +12 -0
  297. data/lib/branston/vendor/plugins/calendar_date_select-1.15/History.txt +237 -0
  298. data/lib/branston/vendor/plugins/calendar_date_select-1.15/MIT-LICENSE +20 -0
  299. data/lib/branston/vendor/plugins/calendar_date_select-1.15/Manifest.txt +42 -0
  300. data/lib/branston/vendor/plugins/calendar_date_select-1.15/Rakefile +31 -0
  301. data/lib/branston/vendor/plugins/calendar_date_select-1.15/Readme.txt +16 -0
  302. data/lib/branston/vendor/plugins/calendar_date_select-1.15/init.rb +1 -0
  303. data/lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/functional/cds_test.html +334 -0
  304. data/lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/prototype.js +4184 -0
  305. data/lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/test.css +40 -0
  306. data/lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/unit/cds_helper_methods.html +46 -0
  307. data/lib/branston/vendor/plugins/calendar_date_select-1.15/js_test/unittest.js +564 -0
  308. data/lib/branston/vendor/plugins/calendar_date_select-1.15/lib/calendar_date_select.rb +33 -0
  309. data/lib/branston/vendor/plugins/calendar_date_select-1.15/lib/calendar_date_select/calendar_date_select.rb +116 -0
  310. data/lib/branston/vendor/plugins/calendar_date_select-1.15/lib/calendar_date_select/form_helpers.rb +225 -0
  311. data/lib/branston/vendor/plugins/calendar_date_select-1.15/lib/calendar_date_select/includes_helper.rb +29 -0
  312. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/blank_iframe.html +2 -0
  313. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/images/calendar_date_select/calendar.gif +0 -0
  314. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/calendar_date_select.js +443 -0
  315. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_american.js +34 -0
  316. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_db.js +27 -0
  317. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_euro_24hr.js +7 -0
  318. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_euro_24hr_ymd.js +7 -0
  319. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_finnish.js +32 -0
  320. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_hyphen_ampm.js +37 -0
  321. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_iso_date.js +46 -0
  322. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/format_italian.js +24 -0
  323. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/de.js +11 -0
  324. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/fi.js +10 -0
  325. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/fr.js +10 -0
  326. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/pl.js +10 -0
  327. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/pt.js +11 -0
  328. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/javascripts/calendar_date_select/locale/ru.js +10 -0
  329. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/blue.css +130 -0
  330. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/default.css +135 -0
  331. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/plain.css +128 -0
  332. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/red.css +135 -0
  333. data/lib/branston/vendor/plugins/calendar_date_select-1.15/public/stylesheets/calendar_date_select/silver.css +133 -0
  334. data/lib/branston/vendor/plugins/calendar_date_select-1.15/spec/calendar_date_select/calendar_date_select_spec.rb +14 -0
  335. data/lib/branston/vendor/plugins/calendar_date_select-1.15/spec/calendar_date_select/form_helpers_spec.rb +166 -0
  336. data/lib/branston/vendor/plugins/calendar_date_select-1.15/spec/spec_helper.rb +26 -0
  337. data/lib/branston/vendor/plugins/in_place_editing/README +14 -0
  338. data/lib/branston/vendor/plugins/in_place_editing/Rakefile +22 -0
  339. data/lib/branston/vendor/plugins/in_place_editing/init.rb +2 -0
  340. data/lib/branston/vendor/plugins/in_place_editing/lib/in_place_editing.rb +28 -0
  341. data/lib/branston/vendor/plugins/in_place_editing/lib/in_place_macros_helper.rb +82 -0
  342. data/lib/branston/vendor/plugins/in_place_editing/test/in_place_editing_test.rb +89 -0
  343. data/lib/branston/vendor/plugins/in_place_editing/test/test_helper.rb +8 -0
  344. data/lib/branston/vendor/plugins/restful_authentication/CHANGELOG +68 -0
  345. data/lib/branston/vendor/plugins/restful_authentication/LICENSE +20 -0
  346. data/lib/branston/vendor/plugins/restful_authentication/README.textile +224 -0
  347. data/lib/branston/vendor/plugins/restful_authentication/Rakefile +32 -0
  348. data/lib/branston/vendor/plugins/restful_authentication/TODO +15 -0
  349. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/USAGE +1 -0
  350. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/authenticated_generator.rb +478 -0
  351. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/lib/insert_routes.rb +54 -0
  352. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/_model_partial.html.erb +8 -0
  353. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/activation.erb +3 -0
  354. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/authenticated_system.rb +189 -0
  355. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/authenticated_test_helper.rb +22 -0
  356. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/controller.rb +43 -0
  357. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/accounts.feature +109 -0
  358. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/sessions.feature +134 -0
  359. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/ra_env.rb +9 -0
  360. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/ra_navigation_steps.rb +48 -0
  361. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/ra_resource_steps.rb +178 -0
  362. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/ra_response_steps.rb +169 -0
  363. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/rest_auth_features_helper.rb +81 -0
  364. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/features/step_definitions/user_steps.rb +131 -0
  365. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/helper.rb +2 -0
  366. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/login.html.erb +16 -0
  367. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/mailer.rb +25 -0
  368. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/migration.rb +26 -0
  369. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/model.rb +83 -0
  370. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/model_controller.rb +85 -0
  371. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/model_helper.rb +93 -0
  372. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/model_helper_spec.rb +158 -0
  373. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/observer.rb +11 -0
  374. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/signup.html.erb +19 -0
  375. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/signup_notification.erb +8 -0
  376. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/site_keys.rb +38 -0
  377. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/access_control_spec.rb +90 -0
  378. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/authenticated_system_spec.rb +102 -0
  379. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/sessions_controller_spec.rb +139 -0
  380. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/users_controller_spec.rb +198 -0
  381. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/fixtures/users.yml +60 -0
  382. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/helpers/users_helper_spec.rb +141 -0
  383. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/models/user_spec.rb +290 -0
  384. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/test/functional_test.rb +82 -0
  385. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/test/mailer_test.rb +31 -0
  386. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/test/model_functional_test.rb +93 -0
  387. data/lib/branston/vendor/plugins/restful_authentication/generators/authenticated/templates/test/unit_test.rb +164 -0
  388. data/lib/branston/vendor/plugins/restful_authentication/init.rb +1 -0
  389. data/lib/branston/vendor/plugins/restful_authentication/lib/authentication.rb +40 -0
  390. data/lib/branston/vendor/plugins/restful_authentication/lib/authentication/by_cookie_token.rb +82 -0
  391. data/lib/branston/vendor/plugins/restful_authentication/lib/authentication/by_password.rb +64 -0
  392. data/lib/branston/vendor/plugins/restful_authentication/lib/authorization.rb +14 -0
  393. data/lib/branston/vendor/plugins/restful_authentication/lib/authorization/aasm_roles.rb +63 -0
  394. data/lib/branston/vendor/plugins/restful_authentication/lib/authorization/stateful_roles.rb +62 -0
  395. data/lib/branston/vendor/plugins/restful_authentication/lib/trustification.rb +14 -0
  396. data/lib/branston/vendor/plugins/restful_authentication/lib/trustification/email_validation.rb +20 -0
  397. data/lib/branston/vendor/plugins/restful_authentication/notes/AccessControl.txt +2 -0
  398. data/lib/branston/vendor/plugins/restful_authentication/notes/Authentication.txt +5 -0
  399. data/lib/branston/vendor/plugins/restful_authentication/notes/Authorization.txt +154 -0
  400. data/lib/branston/vendor/plugins/restful_authentication/notes/RailsPlugins.txt +78 -0
  401. data/lib/branston/vendor/plugins/restful_authentication/notes/SecurityFramework.graffle +0 -0
  402. data/lib/branston/vendor/plugins/restful_authentication/notes/SecurityFramework.png +0 -0
  403. data/lib/branston/vendor/plugins/restful_authentication/notes/SecurityPatterns.txt +163 -0
  404. data/lib/branston/vendor/plugins/restful_authentication/notes/Tradeoffs.txt +126 -0
  405. data/lib/branston/vendor/plugins/restful_authentication/notes/Trustification.txt +49 -0
  406. data/lib/branston/vendor/plugins/restful_authentication/rails/init.rb +3 -0
  407. data/lib/branston/vendor/plugins/restful_authentication/restful-authentication.gemspec +33 -0
  408. data/lib/branston/vendor/plugins/restful_authentication/tasks/auth.rake +33 -0
  409. metadata +513 -0
@@ -0,0 +1,104 @@
1
+ class ScenariosController < ApplicationController
2
+
3
+ layout 'main'
4
+ before_filter :login_required
5
+ before_filter :find_story, :except => [:destroy, :set_scenario_title]
6
+
7
+ in_place_edit_for :scenario, :title
8
+
9
+ def index
10
+ @scenarios = @story.scenarios
11
+ respond_to do |format|
12
+ format.html
13
+ format.js
14
+ end
15
+ end
16
+
17
+ # GET /scenarios/1
18
+ # GET /scenarios/1.xml
19
+ def show
20
+ @scenario = Scenario.find(params[:id])
21
+
22
+ respond_to do |format|
23
+ format.html # scenario.html.erb
24
+ format.xml { render :xml => @scenario }
25
+ end
26
+ end
27
+
28
+ # GET /stories/:story_id/scenarios/new
29
+ # GET /stories/:story_id/scenarios/new.xml
30
+ def new
31
+ @scenario = Scenario.new
32
+ @scenarios = @story.scenarios
33
+ @scenarios.push @scenario
34
+ respond_to do |format|
35
+ format.html # new.html.erb
36
+ format.xml { render :xml => @story }
37
+ format.js
38
+ end
39
+ end
40
+
41
+
42
+ # GET /scenarios/1/edit
43
+ def edit
44
+ @scenario = Scenario.find(params[:id])
45
+ end
46
+
47
+ # POST /stories/:story_id/scenarios
48
+ # POST /stories/:story_id/scenarios.xml
49
+ def create
50
+ @scenario = Scenario.new(params[:scenario])
51
+ @scenario.story = @story
52
+ respond_to do |format|
53
+ if @scenario.save
54
+ @scenarios = @story.scenarios
55
+ flash[:notice] = 'Scenario was successfully created.'
56
+ format.html { redirect_to story_scenario_path(@story, @scenario) }
57
+ format.xml { render :xml => @scenario, :status => :created, :location => @scenario }
58
+ format.js
59
+ else
60
+ format.html { render :action => "new" }
61
+ format.xml { render :xml => @scenario.errors, :status => :unprocessable_entity }
62
+ end
63
+ end
64
+ end
65
+
66
+ # PUT /scenarios/1
67
+ # PUT /scenarios/1.xml
68
+ def update
69
+ @scenario = Scenario.find(params[:id])
70
+ respond_to do |format|
71
+ if @scenario.update_attributes(params[:scenario])
72
+ flash[:notice] = 'Scenario was successfully updated.'
73
+ format.html { redirect_to story_scenario_path(@story, @scenario) }
74
+ format.xml { head :ok }
75
+ else
76
+ format.html { render :action => "edit" }
77
+ format.xml { render :xml => @scenario.errors, :status => :unprocessable_entity }
78
+ end
79
+ end
80
+ end
81
+
82
+ # DELETE /stories/1
83
+ # DELETE /stories/1.xml
84
+ def destroy
85
+ @scenario = Scenario.find(params[:id])
86
+ @story = @scenario.story
87
+ @scenario.destroy
88
+
89
+ respond_to do |format|
90
+ format.html { redirect_to(story_scenarios_path(@story)) }
91
+ format.xml { head :ok }
92
+ format.js
93
+ end
94
+ end
95
+
96
+
97
+ private
98
+
99
+ def find_story
100
+ @story = Story.find_by_slug(params[:story_id]) if @story.nil?
101
+ end
102
+
103
+ end
104
+
@@ -0,0 +1,44 @@
1
+ # This controller handles the login/logout function of the site.
2
+ class SessionsController < ApplicationController
3
+
4
+ layout 'main'
5
+
6
+ # render new.rhtml
7
+ def new
8
+ end
9
+
10
+ def create
11
+ logout_keeping_session!
12
+ user = User.authenticate(params[:login], params[:password])
13
+ if user
14
+ # Protects against session fixation attacks, causes request forgery
15
+ # protection if user resubmits an earlier form using back
16
+ # button. Uncomment if you understand the tradeoffs.
17
+ # reset_session
18
+ self.current_user = user
19
+ new_cookie_flag = (params[:remember_me] == "1")
20
+ handle_remember_cookie! new_cookie_flag
21
+ redirect_back_or_default('/')
22
+ flash[:notice] = "Logged in successfully"
23
+ else
24
+ note_failed_signin
25
+ @login = params[:login]
26
+ @remember_me = params[:remember_me]
27
+ render :action => 'new'
28
+ end
29
+ end
30
+
31
+ def destroy
32
+ logout_killing_session!
33
+ flash[:notice] = "You have been logged out."
34
+ redirect_back_or_default('/')
35
+ end
36
+
37
+ protected
38
+ # Track failed login attempts
39
+ def note_failed_signin
40
+ flash[:error] = "Couldn't log you in as '#{params[:login]}'"
41
+ logger.warn "Failed login for '#{params[:login]}' from #{request.remote_ip} at #{Time.now.utc}"
42
+ end
43
+ end
44
+
@@ -0,0 +1,121 @@
1
+ class StoriesController < ApplicationController
2
+
3
+ layout 'main'
4
+ before_filter :login_required
5
+ before_filter :retrieve_iterations, :only => [:new, :edit, :create, :update, :index, :show] # so everything?
6
+
7
+ in_place_edit_for :story, :title
8
+ in_place_edit_for :story, :description
9
+ in_place_edit_for :story, :points
10
+
11
+ def generate_feature
12
+ @story = Story.find_by_slug(params[:id])
13
+ if @story.nil?
14
+ @story = Story.find(:first, :include => :scenarios,
15
+ :conditions => ['slug LIKE ?', "%#{id}%"] )
16
+ end
17
+ @story.generate(@story)
18
+ render :text => 'done'
19
+ end
20
+
21
+ # GET /stories
22
+ # GET /stories.xml
23
+ def index
24
+ @current_stories = Story.in_progress
25
+ @backlog_stories = Story.find :all, :conditions => "iteration_id IS NULL"
26
+
27
+ respond_to do |format|
28
+ format.html # index.html.erb
29
+ format.xml { render :xml => @stories }
30
+ end
31
+ end
32
+
33
+ # GET /stories/1
34
+ # GET /stories/1.xml
35
+ def show
36
+ @story = Story.find_by_slug(params[:id])
37
+
38
+ respond_to do |format|
39
+ format.html # show.html.erb
40
+ format.xml {
41
+ if @story.nil?
42
+ @story = Story.find(:first, :include => :scenarios,
43
+ :conditions => ['slug LIKE ?', "%#{params[:id]}%"] )
44
+ end
45
+ render :xml => (@story.to_xml :include => { :scenarios => {
46
+ :include => [:preconditions, :outcomes] } } ) }
47
+ format.js { @active = true }
48
+ end
49
+ end
50
+
51
+ # GET /stories/new
52
+ # GET /stories/new.xml
53
+ def new
54
+ @story = Story.new
55
+
56
+ respond_to do |format|
57
+ format.html # new.html.erb
58
+ format.xml { render :xml => @story }
59
+ end
60
+ end
61
+
62
+ # GET /stories/1/edit
63
+ def edit
64
+ @story = Story.find_by_slug(params[:id])
65
+ end
66
+
67
+ # POST /stories
68
+ # POST /stories.xml
69
+ def create
70
+ @story = Story.new(params[:story])
71
+
72
+ respond_to do |format|
73
+ if @story.save
74
+ flash[:notice] = 'Story was successfully created.'
75
+ format.html { redirect_to stories_url }
76
+ format.xml { render :xml => @story, :status => :created, :location => @story }
77
+ else
78
+ format.html { render :action => "new" }
79
+ format.xml { render :xml => @story.errors, :status => :unprocessable_entity }
80
+ end
81
+ end
82
+ end
83
+
84
+ # PUT /stories/1
85
+ # PUT /stories/1.xml
86
+ def update
87
+ @story = Story.find_by_slug(params[:id])
88
+ respond_to do |format|
89
+ if @story.update_attributes(params[:story])
90
+ flash[:notice] = 'Story was successfully updated.'
91
+ format.html { redirect_to(@story) }
92
+ format.xml { head :ok }
93
+ format.js { redirect_to stories_path }
94
+ else
95
+ format.html { render :action => "edit" }
96
+ format.xml { render :xml => @story.errors, :status => :unprocessable_entity }
97
+ end
98
+ end
99
+ end
100
+
101
+ # DELETE /stories/1
102
+ # DELETE /stories/1.xml
103
+ def destroy
104
+ @story = Story.find_by_slug(params[:id])
105
+ @story.destroy
106
+
107
+ respond_to do |format|
108
+ format.html { redirect_to(stories_url) }
109
+ format.xml { head :ok }
110
+ end
111
+ end
112
+
113
+
114
+ private
115
+
116
+ def retrieve_iterations
117
+ @iterations = Iteration.all
118
+ end
119
+
120
+ end
121
+
@@ -0,0 +1,91 @@
1
+ class UserRolesController < ApplicationController
2
+
3
+ layout 'main'
4
+
5
+ before_filter :login_required
6
+
7
+ # GET /user_roles
8
+ # GET /user_roles.xml
9
+ def index
10
+ @user_roles = UserRole.all
11
+
12
+ respond_to do |format|
13
+ format.html # index.html.erb
14
+ format.xml { render :xml => @user_roles }
15
+ end
16
+ end
17
+
18
+ # GET /user_roles/1
19
+ # GET /user_roles/1.xml
20
+ def show
21
+ @user_role = UserRole.find(params[:id])
22
+
23
+ respond_to do |format|
24
+ format.html # show.html.erb
25
+ format.xml { render :xml => @user_role }
26
+ end
27
+ end
28
+
29
+ # GET /user_roles/new
30
+ # GET /user_roles/new.xml
31
+ def new
32
+ @user_role = UserRole.new
33
+
34
+ respond_to do |format|
35
+ format.html # new.html.erb
36
+ format.xml { render :xml => @user_role }
37
+ end
38
+ end
39
+
40
+ # GET /user_roles/1/edit
41
+ def edit
42
+ @user_role = UserRole.find(params[:id])
43
+ end
44
+
45
+ # POST /user_roles
46
+ # POST /user_roles.xml
47
+ def create
48
+ @user_role = UserRole.new(params[:user_role])
49
+
50
+ respond_to do |format|
51
+ if @user_role.save
52
+ flash[:notice] = 'UserRole was successfully created.'
53
+ format.html { redirect_to(@user_role) }
54
+ format.xml { render :xml => @user_role, :status => :created, :location => @user_role }
55
+ else
56
+ format.html { render :action => "new" }
57
+ format.xml { render :xml => @user_role.errors, :status => :unprocessable_entity }
58
+ end
59
+ end
60
+ end
61
+
62
+ # PUT /user_roles/1
63
+ # PUT /user_roles/1.xml
64
+ def update
65
+ @user_role = UserRole.find(params[:id])
66
+
67
+ respond_to do |format|
68
+ if @user_role.update_attributes(params[:user_role])
69
+ flash[:notice] = 'UserRole was successfully updated.'
70
+ format.html { redirect_to(@user_role) }
71
+ format.xml { head :ok }
72
+ else
73
+ format.html { render :action => "edit" }
74
+ format.xml { render :xml => @user_role.errors, :status => :unprocessable_entity }
75
+ end
76
+ end
77
+ end
78
+
79
+ # DELETE /user_roles/1
80
+ # DELETE /user_roles/1.xml
81
+ def destroy
82
+ @user_role = UserRole.find(params[:id])
83
+ @user_role.destroy
84
+
85
+ respond_to do |format|
86
+ format.html { redirect_to(user_roles_url) }
87
+ format.xml { head :ok }
88
+ end
89
+ end
90
+ end
91
+
@@ -0,0 +1,28 @@
1
+ class UsersController < ApplicationController
2
+
3
+ layout 'main'
4
+
5
+ # render new.rhtml
6
+ def new
7
+ @user = User.new
8
+ end
9
+
10
+ def create
11
+ logout_keeping_session!
12
+ @user = User.new(params[:user])
13
+ success = @user && @user.save
14
+ if success && @user.errors.empty?
15
+ # Protects against session fixation attacks, causes request forgery
16
+ # protection if visitor resubmits an earlier form using back
17
+ # button. Uncomment if you understand the tradeoffs.
18
+ # reset session
19
+ self.current_user = @user # !! now logged in
20
+ redirect_back_or_default('/')
21
+ flash[:notice] = "Thanks for signing up! We're sending you an email with your activation code."
22
+ else
23
+ flash[:error] = "We couldn't set up that account, sorry. Please try again, or contact an admin (link is above)."
24
+ render :action => 'new'
25
+ end
26
+ end
27
+ end
28
+
@@ -0,0 +1,14 @@
1
+ module ApplicationHelper
2
+ # Applies an html class attribute where the controller name contains the 'tab_name'.
3
+ def tab_on(tab_name, html_class="current_page_item")
4
+ controller_name.match(Regexp.new("#{tab_name}")) ? " class=\"#{html_class}\"" : ''
5
+ end
6
+
7
+ # Produces a string id using the type and id of obj plus any field suffix supplied useful when
8
+ # assigning html ids on index pages.
9
+ # e.g. element_id(user, 'name') => 'User_23_name'
10
+ def element_id(obj, field="")
11
+ obj.class.to_s + '_' + obj.to_param + (field.blank? ? '' : '_' + field)
12
+ end
13
+ end
14
+
@@ -0,0 +1,2 @@
1
+ module IterationsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module OutcomesHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module PreconditionsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module ReleasesHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module SessionsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module StoriesHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module UserRolesHelper
2
+ end
@@ -0,0 +1,93 @@
1
+ module UsersHelper
2
+
3
+ #
4
+ # Use this to wrap view elements that the user can't access.
5
+ # !! Note: this is an *interface*, not *security* feature !!
6
+ # You need to do all access control at the controller level.
7
+ #
8
+ # Example:
9
+ # <%= if_authorized?(:index, User) do link_to('List all users', users_path) end %> |
10
+ # <%= if_authorized?(:edit, @user) do link_to('Edit this user', edit_user_path) end %> |
11
+ # <%= if_authorized?(:destroy, @user) do link_to 'Destroy', @user, :confirm => 'Are you sure?', :method => :delete end %>
12
+ #
13
+ #
14
+ def if_authorized?(action, resource, &block)
15
+ if authorized?(action, resource)
16
+ yield action, resource
17
+ end
18
+ end
19
+
20
+ #
21
+ # Link to user's page ('users/1')
22
+ #
23
+ # By default, their login is used as link text and link title (tooltip)
24
+ #
25
+ # Takes options
26
+ # * :content_text => 'Content text in place of user.login', escaped with
27
+ # the standard h() function.
28
+ # * :content_method => :user_instance_method_to_call_for_content_text
29
+ # * :title_method => :user_instance_method_to_call_for_title_attribute
30
+ # * as well as link_to()'s standard options
31
+ #
32
+ # Examples:
33
+ # link_to_user @user
34
+ # # => <a href="/users/3" title="barmy">barmy</a>
35
+ #
36
+ # # if you've added a .name attribute:
37
+ # content_tag :span, :class => :vcard do
38
+ # (link_to_user user, :class => 'fn n', :title_method => :login, :content_method => :name) +
39
+ # ': ' + (content_tag :span, user.email, :class => 'email')
40
+ # end
41
+ # # => <span class="vcard"><a href="/users/3" title="barmy" class="fn n">Cyril Fotheringay-Phipps</a>: <span class="email">barmy@blandings.com</span></span>
42
+ #
43
+ # link_to_user @user, :content_text => 'Your user page'
44
+ # # => <a href="/users/3" title="barmy" class="nickname">Your user page</a>
45
+ #
46
+ def link_to_user(user, options={})
47
+ raise "Invalid user" unless user
48
+ options.reverse_merge! :content_method => :login, :title_method => :login, :class => :nickname
49
+ content_text = options.delete(:content_text)
50
+ content_text ||= user.send(options.delete(:content_method))
51
+ options[:title] ||= user.send(options.delete(:title_method))
52
+ link_to h(content_text), user_path(user), options
53
+ end
54
+
55
+ #
56
+ # Link to login page using remote ip address as link content
57
+ #
58
+ # The :title (and thus, tooltip) is set to the IP address
59
+ #
60
+ # Examples:
61
+ # link_to_login_with_IP
62
+ # # => <a href="/login" title="169.69.69.69">169.69.69.69</a>
63
+ #
64
+ # link_to_login_with_IP :content_text => 'not signed in'
65
+ # # => <a href="/login" title="169.69.69.69">not signed in</a>
66
+ #
67
+ def link_to_login_with_IP content_text=nil, options={}
68
+ ip_addr = request.remote_ip
69
+ content_text ||= ip_addr
70
+ options.reverse_merge! :title => ip_addr
71
+ if tag = options.delete(:tag)
72
+ content_tag tag, h(content_text), options
73
+ else
74
+ link_to h(content_text), login_path, options
75
+ end
76
+ end
77
+
78
+ #
79
+ # Link to the current user's page (using link_to_user) or to the login page
80
+ # (using link_to_login_with_IP).
81
+ #
82
+ def link_to_current_user(options={})
83
+ if current_user
84
+ link_to_user current_user, options
85
+ else
86
+ content_text = options.delete(:content_text) || 'not signed in'
87
+ # kill ignored options from link_to_user
88
+ [:content_method, :title_method].each{|opt| options.delete(opt)}
89
+ link_to_login_with_IP content_text, options
90
+ end
91
+ end
92
+
93
+ end