voluntary 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +48 -0
  3. data/Rakefile +27 -0
  4. data/app/assets/javascripts/voluntary/application.js +6 -0
  5. data/app/assets/javascripts/voluntary/base.js.coffee +34 -0
  6. data/app/assets/javascripts/voluntary/bootstrap.js.coffee +4 -0
  7. data/app/assets/javascripts/voluntary/functions.js +24 -0
  8. data/app/assets/javascripts/voluntary/users.js.coffee +12 -0
  9. data/app/assets/stylesheets/voluntary/application.css +15 -0
  10. data/app/assets/stylesheets/voluntary/base.css.scss +40 -0
  11. data/app/assets/stylesheets/voluntary/bootstrap_and_overrides.css.less +67 -0
  12. data/app/controllers/areas_controller.rb +66 -0
  13. data/app/controllers/candidatures_controller.rb +79 -0
  14. data/app/controllers/comments_controller.rb +70 -0
  15. data/app/controllers/devise_extensions/registrations_controller.rb +37 -0
  16. data/app/controllers/home_controller.rb +7 -0
  17. data/app/controllers/organizations_controller.rb +67 -0
  18. data/app/controllers/pages_controller.rb +54 -0
  19. data/app/controllers/products_controller.rb +62 -0
  20. data/app/controllers/professions_controller.rb +66 -0
  21. data/app/controllers/projects_controller.rb +56 -0
  22. data/app/controllers/results_controller.rb +93 -0
  23. data/app/controllers/stories_controller.rb +96 -0
  24. data/app/controllers/tasks_controller.rb +88 -0
  25. data/app/controllers/users_controller.rb +52 -0
  26. data/app/controllers/vacancies_controller.rb +79 -0
  27. data/app/controllers/voluntary/application_controller.rb +92 -0
  28. data/app/controllers/workflow/candidatures_controller.rb +20 -0
  29. data/app/controllers/workflow/products_controller.rb +6 -0
  30. data/app/controllers/workflow/project_owner_controller.rb +33 -0
  31. data/app/controllers/workflow/stories_controller.rb +6 -0
  32. data/app/controllers/workflow/tasks_controller.rb +147 -0
  33. data/app/controllers/workflow/user_controller.rb +6 -0
  34. data/app/controllers/workflow/vacancies_controller.rb +17 -0
  35. data/app/controllers/workflow_controller.rb +7 -0
  36. data/app/helpers/application_helper.rb +65 -0
  37. data/app/helpers/collection_helper.rb +31 -0
  38. data/app/helpers/comments_helper.rb +11 -0
  39. data/app/helpers/form_helper.rb +39 -0
  40. data/app/helpers/language_helper.rb +15 -0
  41. data/app/helpers/layout_helper.rb +24 -0
  42. data/app/helpers/product_helper.rb +32 -0
  43. data/app/helpers/show_helper.rb +65 -0
  44. data/app/helpers/wizard_helper.rb +27 -0
  45. data/app/models/area.rb +19 -0
  46. data/app/models/area_user.rb +19 -0
  47. data/app/models/candidature.rb +35 -0
  48. data/app/models/comment.rb +16 -0
  49. data/app/models/history_tracker.rb +3 -0
  50. data/app/models/mongo_db_document.rb +11 -0
  51. data/app/models/organization.rb +19 -0
  52. data/app/models/page.rb +30 -0
  53. data/app/models/product.rb +99 -0
  54. data/app/models/product/new_product.rb +3 -0
  55. data/app/models/product/project_management.rb +29 -0
  56. data/app/models/profession.rb +13 -0
  57. data/app/models/project.rb +66 -0
  58. data/app/models/project_user.rb +13 -0
  59. data/app/models/result.rb +55 -0
  60. data/app/models/role.rb +8 -0
  61. data/app/models/role/admin.rb +2 -0
  62. data/app/models/role/master.rb +2 -0
  63. data/app/models/role/project_owner.rb +2 -0
  64. data/app/models/role/user.rb +2 -0
  65. data/app/models/state_machines/candidature.rb +42 -0
  66. data/app/models/state_machines/page.rb +18 -0
  67. data/app/models/state_machines/story.rb +51 -0
  68. data/app/models/state_machines/task.rb +46 -0
  69. data/app/models/state_machines/vacancy.rb +41 -0
  70. data/app/models/story.rb +82 -0
  71. data/app/models/task.rb +85 -0
  72. data/app/models/user.rb +95 -0
  73. data/app/models/user_role.rb +6 -0
  74. data/app/models/vacancy.rb +41 -0
  75. data/app/observers/candidature_observer.rb +29 -0
  76. data/app/observers/story_observer.rb +6 -0
  77. data/app/observers/task_observer.rb +34 -0
  78. data/app/presenters/layout/application_presenter.rb +3 -0
  79. data/app/presenters/layout_presenter.rb +9 -0
  80. data/app/presenters/presenter.rb +46 -0
  81. data/app/presenters/resource_presenter.rb +30 -0
  82. data/app/presenters/resources/general/wizard_presenter.rb +17 -0
  83. data/app/presenters/resources/general/wizards/story/steps/activate_presenter.rb +3 -0
  84. data/app/presenters/resources/general/wizards/story/steps/setup_tasks_presenter.rb +5 -0
  85. data/app/presenters/resources/general/wizards/story_presenter.rb +3 -0
  86. data/app/presenters/resources/user/form_presenter.rb +16 -0
  87. data/app/presenters/shared/collection/table_presenter.rb +33 -0
  88. data/app/views/areas/_form.html.erb +11 -0
  89. data/app/views/areas/edit.html.erb +3 -0
  90. data/app/views/areas/index.html.erb +5 -0
  91. data/app/views/areas/new.html.erb +3 -0
  92. data/app/views/areas/show.html.erb +6 -0
  93. data/app/views/candidatures/_form.html.erb +13 -0
  94. data/app/views/candidatures/edit.html.erb +3 -0
  95. data/app/views/candidatures/index.html.erb +11 -0
  96. data/app/views/candidatures/new.html.erb +3 -0
  97. data/app/views/candidatures/show.html.erb +18 -0
  98. data/app/views/comments/_form.html.erb +16 -0
  99. data/app/views/comments/_resource.html.erb +16 -0
  100. data/app/views/comments/edit.html.erb +3 -0
  101. data/app/views/comments/new.html.erb +3 -0
  102. data/app/views/devise/mailer/confirmation_instructions.html.erb +10 -0
  103. data/app/views/devise/registrations/new.html.erb +5 -0
  104. data/app/views/general/wizard.html.erb +16 -0
  105. data/app/views/kaminari/_first_page.html.erb +13 -0
  106. data/app/views/kaminari/_gap.html.erb +8 -0
  107. data/app/views/kaminari/_last_page.html.erb +13 -0
  108. data/app/views/kaminari/_next_page.html.erb +13 -0
  109. data/app/views/kaminari/_page.html.erb +12 -0
  110. data/app/views/kaminari/_paginator.html.erb +25 -0
  111. data/app/views/kaminari/_prev_page.html.erb +13 -0
  112. data/app/views/layouts/application.html.erb +48 -0
  113. data/app/views/layouts/shared/_flash_messages.html.erb +7 -0
  114. data/app/views/layouts/shared/_navigation.html.erb +7 -0
  115. data/app/views/organizations/_form.html.erb +11 -0
  116. data/app/views/organizations/edit.html.erb +3 -0
  117. data/app/views/organizations/index.html.erb +5 -0
  118. data/app/views/organizations/new.html.erb +3 -0
  119. data/app/views/organizations/show.html.erb +6 -0
  120. data/app/views/pages/_form.html.erb +12 -0
  121. data/app/views/pages/edit.html.erb +3 -0
  122. data/app/views/pages/index.html.erb +5 -0
  123. data/app/views/pages/new.html.erb +3 -0
  124. data/app/views/pages/show.html.erb +10 -0
  125. data/app/views/products/_form.html.erb +28 -0
  126. data/app/views/products/edit.html.erb +3 -0
  127. data/app/views/products/index.html.erb +5 -0
  128. data/app/views/products/mixins/_keywords.html.erb +4 -0
  129. data/app/views/products/new.html.erb +3 -0
  130. data/app/views/products/show.html.erb +11 -0
  131. data/app/views/products/types/text_creation/stories/_form.html.erb +19 -0
  132. data/app/views/products/types/text_creation/stories/_task_fields.html.erb +7 -0
  133. data/app/views/projects/_form.html.erb +16 -0
  134. data/app/views/projects/edit.html.erb +3 -0
  135. data/app/views/projects/index.html.erb +5 -0
  136. data/app/views/projects/new.html.erb +3 -0
  137. data/app/views/projects/show.html.erb +13 -0
  138. data/app/views/shared/_comments.html.erb +7 -0
  139. data/app/views/shared/collection/_list.html.erb +37 -0
  140. data/app/views/shared/collection/_table.html.erb +36 -0
  141. data/app/views/shared/form/_error_messages.html.erb +10 -0
  142. data/app/views/shared/resource/_actions.html.erb +26 -0
  143. data/app/views/shared/resource/_event_elements.html.erb +7 -0
  144. data/app/views/stories/_collection.html.erb +8 -0
  145. data/app/views/stories/_form.html.erb +19 -0
  146. data/app/views/stories/_task_fields.html.erb +11 -0
  147. data/app/views/stories/index.html.erb +1 -0
  148. data/app/views/stories/show.html.erb +13 -0
  149. data/app/views/stories/steps/_activate.html.erb +17 -0
  150. data/app/views/stories/steps/_setup_tasks.html.erb +35 -0
  151. data/app/views/stories/tasks.html.erb +0 -0
  152. data/app/views/tasks/_collection.html.erb +12 -0
  153. data/app/views/users/_form.html.erb +43 -0
  154. data/app/views/users/edit.html.erb +3 -0
  155. data/app/views/users/index.html.erb +6 -0
  156. data/app/views/users/new.html.erb +3 -0
  157. data/app/views/users/preferences.html.erb +11 -0
  158. data/app/views/users/show.html.erb +6 -0
  159. data/app/views/vacancies/_form.html.erb +15 -0
  160. data/app/views/vacancies/edit.html.erb +3 -0
  161. data/app/views/vacancies/index.html.erb +7 -0
  162. data/app/views/vacancies/new.html.erb +3 -0
  163. data/app/views/vacancies/show.html.erb +17 -0
  164. data/app/views/workflow/index.html.erb +0 -0
  165. data/app/views/workflow/products/show.html.erb +34 -0
  166. data/app/views/workflow/project_owner/_candidatures.html.erb +31 -0
  167. data/app/views/workflow/project_owner/_stories.html.erb +29 -0
  168. data/app/views/workflow/project_owner/_tasks.html.erb +34 -0
  169. data/app/views/workflow/project_owner/_vacancies.html.erb +27 -0
  170. data/app/views/workflow/project_owner/index.html.erb +24 -0
  171. data/app/views/workflow/tasks/_work_form.html.erb +8 -0
  172. data/app/views/workflow/tasks/_work_head.html.erb +15 -0
  173. data/app/views/workflow/tasks/edit.html.erb +3 -0
  174. data/app/views/workflow/tasks/index.html.erb +31 -0
  175. data/app/views/workflow/tasks/next.html.erb +0 -0
  176. data/app/views/workflow/tasks/steps/_complete.html.erb +11 -0
  177. data/app/views/workflow/tasks/steps/_review.html.erb +13 -0
  178. data/app/views/workflow/tasks/steps/_work.html.erb +17 -0
  179. data/app/views/workflow/user/_tasks.html.erb +30 -0
  180. data/app/views/workflow/user/index.html.erb +14 -0
  181. data/config/initializers/1_initialize_app_config.rb +5 -0
  182. data/config/initializers/devise.rb +193 -0
  183. data/config/initializers/locale_settings.rb +42 -0
  184. data/config/initializers/mongoid-history.rb +2 -0
  185. data/config/initializers/recaptcha.rb +7 -0
  186. data/config/initializers/simple_form.rb +178 -0
  187. data/config/initializers/simple_navigation.rb +2 -0
  188. data/config/locales/devise.en.yml +59 -0
  189. data/config/locales/en.yml +26 -0
  190. data/config/locales/general/en.yml +71 -0
  191. data/config/locales/resources/area/en.yml +12 -0
  192. data/config/locales/resources/candidature/en.yml +19 -0
  193. data/config/locales/resources/comment/en.yml +11 -0
  194. data/config/locales/resources/organization/en.yml +11 -0
  195. data/config/locales/resources/page/en.yml +11 -0
  196. data/config/locales/resources/product/en.yml +23 -0
  197. data/config/locales/resources/project/en.yml +9 -0
  198. data/config/locales/resources/result/en.yml +9 -0
  199. data/config/locales/resources/story/en.yml +34 -0
  200. data/config/locales/resources/task/en.yml +36 -0
  201. data/config/locales/resources/user/en.yml +14 -0
  202. data/config/locales/resources/vacancy/en.yml +29 -0
  203. data/config/locales/simple_form.en.yml +26 -0
  204. data/config/locales/workflow/en.yml +37 -0
  205. data/config/routes.rb +188 -0
  206. data/db/migrate/20120907144853_create_schema.rb +217 -0
  207. data/db/migrate/20120911093743_remove_timestamps_from_habtm_tables.rb +21 -0
  208. data/db/migrate/20120919161831_add_unique_index_for_one_user_candidature_per_vacancy.rb +9 -0
  209. data/db/migrate/20120922201955_create_mongo_db_documents.rb +13 -0
  210. data/db/migrate/20120923140109_add_product_to_project.rb +6 -0
  211. data/db/migrate/20121004061413_add_extra_user_attributes.rb +9 -0
  212. data/db/migrate/20121004132105_create_professions.rb +13 -0
  213. data/db/migrate/20121006162913_add_public_attribute_to_roles.rb +6 -0
  214. data/db/migrate/20121006170407_add_type_attribute_to_roles.rb +5 -0
  215. data/db/migrate/20121007071543_add_foreign_languages_to_user.rb +6 -0
  216. data/db/migrate/20121028073712_create_organizations.rb +13 -0
  217. data/db/seeds.rb +14 -0
  218. data/lib/applicat/mvc/controller.rb +171 -0
  219. data/lib/applicat/mvc/controller/error_handling.rb +40 -0
  220. data/lib/applicat/mvc/controller/resource.rb +19 -0
  221. data/lib/applicat/mvc/controller/transition_actions.rb +43 -0
  222. data/lib/applicat/mvc/model/resource/base.rb +56 -0
  223. data/lib/applicat/mvc/model/tokenable.rb +24 -0
  224. data/lib/applicat/mvc/model/tree.rb +82 -0
  225. data/lib/db_seed.rb +150 -0
  226. data/lib/environment_configuration.rb +54 -0
  227. data/lib/generators/voluntary/install/install_generator.rb +118 -0
  228. data/lib/generators/voluntary/install/templates/app/controllers/application_controller.rb +3 -0
  229. data/lib/generators/voluntary/install/templates/app/models/ability.rb +49 -0
  230. data/lib/generators/voluntary/install/templates/app/models/app_config.rb +32 -0
  231. data/lib/generators/voluntary/install/templates/app/views/layouts/application.html.erb +50 -0
  232. data/lib/generators/voluntary/install/templates/config/application.yml +147 -0
  233. data/lib/generators/voluntary/install/templates/config/cucumber.yml +8 -0
  234. data/lib/generators/voluntary/install/templates/config/database.example.yml +28 -0
  235. data/lib/generators/voluntary/install/templates/config/deploy.rb +59 -0
  236. data/lib/generators/voluntary/install/templates/config/email.example.yml +9 -0
  237. data/lib/generators/voluntary/install/templates/config/initializers/recaptcha_example +4 -0
  238. data/lib/generators/voluntary/install/templates/config/locale_settings.yml +121 -0
  239. data/lib/generators/voluntary/install/templates/config/main_navigation.rb +262 -0
  240. data/lib/generators/voluntary/install/templates/config/mongoid.yml +78 -0
  241. data/lib/generators/voluntary/install/templates/config/nginx.conf +27 -0
  242. data/lib/generators/voluntary/install/templates/config/unicorn.rb +9 -0
  243. data/lib/generators/voluntary/install/templates/config/unicorn_init.sh +84 -0
  244. data/lib/generators/voluntary/install/templates/db/seeds.rb +14 -0
  245. data/lib/generators/voluntary/install/templates/features/step_definitions/email_steps.rb +89 -0
  246. data/lib/generators/voluntary/install/templates/features/step_definitions/factory_steps.rb +120 -0
  247. data/lib/generators/voluntary/install/templates/features/step_definitions/javascript_steps.rb +15 -0
  248. data/lib/generators/voluntary/install/templates/features/step_definitions/navigation_steps.rb +3 -0
  249. data/lib/generators/voluntary/install/templates/features/step_definitions/resources_steps.rb +8 -0
  250. data/lib/generators/voluntary/install/templates/features/step_definitions/session_steps.rb +35 -0
  251. data/lib/generators/voluntary/install/templates/features/step_definitions/web_steps.rb +271 -0
  252. data/lib/generators/voluntary/install/templates/features/support/database_cleaner_patches.rb +24 -0
  253. data/lib/generators/voluntary/install/templates/features/support/env.rb +83 -0
  254. data/lib/generators/voluntary/install/templates/features/support/integration_sessions_controller.rb +32 -0
  255. data/lib/generators/voluntary/install/templates/features/support/integration_sessions_form.html.erb +1 -0
  256. data/lib/generators/voluntary/install/templates/features/support/paths.rb +98 -0
  257. data/lib/generators/voluntary/install/templates/features/support/selectors.rb +44 -0
  258. data/lib/generators/voluntary/install/templates/features/support/spork_env +72 -0
  259. data/lib/generators/voluntary/install/templates/features/support/user_cuke_helpers.rb +78 -0
  260. data/lib/generators/voluntary/install/templates/lib/volontariat_seed.rb +36 -0
  261. data/lib/generators/voluntary/install/templates/spec/spec_helper.rb +72 -0
  262. data/lib/generators/voluntary/install/templates/spec/support/deferred_garbage_collector.rb +45 -0
  263. data/lib/generators/voluntary/install/templates/spec/support/devise.rb +3 -0
  264. data/lib/generators/voluntary/install/templates/spec/support/mongo_database_cleaner.rb +19 -0
  265. data/lib/generators/voluntary/install/templates/vendor/assets/javascripts/jquery.tokeninput.js +915 -0
  266. data/lib/generators/voluntary/install/templates/vendor/assets/stylesheets/token-input-facebook.css +122 -0
  267. data/lib/generators/voluntary/install/templates/vendor/assets/stylesheets/token-input-mac.css +204 -0
  268. data/lib/generators/voluntary/install/templates/vendor/assets/stylesheets/token-input.css +127 -0
  269. data/lib/i18n_interpolation_fallbacks.rb +21 -0
  270. data/lib/model/mongo_db/commentable.rb +17 -0
  271. data/lib/model/mongo_db/core_extensions.rb +10 -0
  272. data/lib/model/mongo_db/customizable.rb +23 -0
  273. data/lib/model/mongo_db/product/keywords.rb +31 -0
  274. data/lib/model/mongo_db/state_version_attributes.rb +15 -0
  275. data/lib/tasks/cucumber.rake +65 -0
  276. data/lib/tasks/voluntary_tasks.rake +4 -0
  277. data/lib/vendors/active_model/naming.rb +14 -0
  278. data/lib/vendors/simple_navigation/renderer/breadcrumbs_without_method_links.rb +30 -0
  279. data/lib/vendors/simple_navigation/renderer/twitter_sidenav.rb +34 -0
  280. data/lib/voluntary.rb +87 -0
  281. data/lib/voluntary/engine.rb +11 -0
  282. data/lib/voluntary/helpers/application.rb +69 -0
  283. data/lib/voluntary/helpers/collection.rb +35 -0
  284. data/lib/voluntary/helpers/comments.rb +15 -0
  285. data/lib/voluntary/helpers/form.rb +43 -0
  286. data/lib/voluntary/helpers/language.rb +19 -0
  287. data/lib/voluntary/helpers/layout.rb +28 -0
  288. data/lib/voluntary/helpers/product.rb +36 -0
  289. data/lib/voluntary/helpers/show.rb +69 -0
  290. data/lib/voluntary/helpers/wizard.rb +31 -0
  291. data/lib/voluntary/version.rb +3 -0
  292. data/lib/wizard.rb +58 -0
  293. data/lib/wizard/controller/concerns/paths.rb +31 -0
  294. data/lib/wizard/controller/concerns/steps.rb +142 -0
  295. metadata +1217 -0
@@ -0,0 +1,70 @@
1
+ class CommentsController < ApplicationController
2
+ include Applicat::Mvc::Controller::Resource
3
+
4
+ load_and_authorize_resource
5
+
6
+ before_filter :find_commentable, only: [:new, :edit]
7
+
8
+ respond_to :html, :js, :json
9
+
10
+ def index
11
+ @comments = Comment.includes(:commentable, :user).all
12
+ end
13
+
14
+ def show
15
+ @comment = Comment.includes(:commentable, :user).find(params[:id])
16
+ end
17
+
18
+ def new
19
+ @comment = Comment.new(params[:comment])
20
+ @comment.commentable = @commentable
21
+ end
22
+
23
+ def create
24
+ @comment = Comment.new(params[:comment])
25
+ @comment.user_id = current_user.id
26
+
27
+ if @comment.save
28
+ redirect_to @comment.commentable, notice: t('general.form.successfully_created')
29
+ else
30
+ render :new
31
+ end
32
+ end
33
+
34
+ def edit
35
+ @comment = Comment.find(params[:id])
36
+ end
37
+
38
+ def update
39
+ @comment = Comment.find(params[:id])
40
+
41
+ if @comment.update_attributes(params[:comment])
42
+ redirect_to @comment.commentable, notice: t('general.form.successfully_updated')
43
+ else
44
+ render :edit
45
+ end
46
+ end
47
+
48
+ def destroy
49
+ @comment = Comment.find(params[:id])
50
+ @comment.destroy
51
+ redirect_to comments_url, notice: t('general.form.destroyed')
52
+ end
53
+
54
+ def resource
55
+ @comment
56
+ end
57
+
58
+ private
59
+
60
+ def find_commentable
61
+ @commentable = @comment.commentable ? @comment.commentable : find_parent(Comment::COMMENTABLE_TYPES)
62
+ eval("@#{@commentable.class.name.tableize.singularize} = @commentable")
63
+
64
+ if @commentable.is_a?(Candidature)
65
+ @vacancy = @commentable.vacancy
66
+ elsif @commentable.is_a?(Project)
67
+ @twitter_sidenav_level = 4
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,37 @@
1
+ class DeviseExtensions::RegistrationsController < Devise::RegistrationsController
2
+ # GET /resource/sign_up
3
+ def new
4
+ resource = build_resource({})
5
+
6
+ @presenter = Resources::User::FormPresenter.new(self.view_context, resource: resource)
7
+
8
+ respond_with resource
9
+ end
10
+
11
+ # POST /resource
12
+ def create
13
+ build_resource
14
+
15
+ captcha_verified = if Rails.env == 'production'
16
+ verify_recaptcha(model: resource, message: I18n.t('general.exceptions.wrong_recaptcha'))
17
+ else
18
+ true
19
+ end
20
+
21
+ if captcha_verified && resource.save
22
+ if resource.active_for_authentication?
23
+ set_flash_message :notice, :signed_up if is_navigational_format?
24
+ sign_in(resource_name, resource)
25
+ respond_with resource, :location => after_sign_up_path_for(resource)
26
+ else
27
+ set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format?
28
+ expire_session_data_after_sign_in!
29
+ respond_with resource, :location => after_inactive_sign_up_path_for(resource)
30
+ end
31
+ else
32
+ @presenter = Resources::User::FormPresenter.new(self.view_context, resource: resource)
33
+ clean_up_passwords resource
34
+ respond_with resource
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,7 @@
1
+ class HomeController < ApplicationController
2
+ def index
3
+ @projects = Project.limit(5).order('created_at DESC').all
4
+ @vacancies = Vacancy.open.limit(5).order('created_at DESC').all
5
+ @page = Page.where(name: 'Home').first
6
+ end
7
+ end
@@ -0,0 +1,67 @@
1
+ class OrganizationsController < ApplicationController
2
+ include Applicat::Mvc::Controller::Resource
3
+
4
+ load_and_authorize_resource
5
+
6
+ rescue_from ActiveRecord::RecordNotFound, with: :not_found
7
+
8
+ respond_to :html, :js, :json
9
+
10
+ def index
11
+ @parent = find_parent Organization::PARENT_TYPES
12
+ @organizations = @parent ? @parent.organizations.order(:name) : Organization.order(:name)
13
+
14
+ respond_to do |format|
15
+ format.html
16
+ format.json { render json: @organizations.tokens(params[:q]) }
17
+ end
18
+ end
19
+
20
+ def show
21
+ @organization = Organization.find(params[:id])
22
+ end
23
+
24
+ def new
25
+ @organization = Organization.new
26
+ end
27
+
28
+ def create
29
+ @organization = Organization.new(params[:organization])
30
+
31
+ if @organization.save
32
+ redirect_to @organization, notice: t('general.form.successfully_created')
33
+ else
34
+ render :new
35
+ end
36
+ end
37
+
38
+ def edit
39
+ @organization = Organization.find(params[:id])
40
+ end
41
+
42
+ def update
43
+ @organization = Organization.find(params[:id])
44
+
45
+ if @organization.update_attributes(params[:organization])
46
+ redirect_to @organization, notice: t('general.form.successfully_updated')
47
+ else
48
+ render :edit
49
+ end
50
+ end
51
+
52
+ def destroy
53
+ @organization = Organization.find(params[:id])
54
+ @organization.destroy
55
+ redirect_to organizations_url, notice: t('general.form.destroyed')
56
+ end
57
+
58
+ def resource
59
+ @organization
60
+ end
61
+
62
+ private
63
+
64
+ def not_found
65
+ redirect_to organizations_path, notice: t('organizations.exceptions.not_found')
66
+ end
67
+ end
@@ -0,0 +1,54 @@
1
+ class PagesController < ApplicationController
2
+ include Applicat::Mvc::Controller::Resource
3
+
4
+ load_and_authorize_resource
5
+
6
+ respond_to :html, :js, :json
7
+
8
+ def index
9
+ @pages = Page.order_by(name: 'ASC')
10
+ end
11
+
12
+ def show
13
+ @page = Page.find(params[:id])
14
+ end
15
+
16
+ def new
17
+ @page = Page.new
18
+ end
19
+
20
+ def create
21
+ @page = Page.new(params[:page])
22
+ @page.user = current_user
23
+
24
+ if @page.save
25
+ redirect_to @page, notice: t('general.form.successfully_created')
26
+ else
27
+ render :new
28
+ end
29
+ end
30
+
31
+ def edit
32
+ @page = Page.find(params[:id])
33
+ end
34
+
35
+ def update
36
+ @page = Page.find(params[:id])
37
+
38
+ if @page.update_attributes(params[:page])
39
+ redirect_to @page, notice: t('general.form.successfully_updated')
40
+ else
41
+ render :edit
42
+ end
43
+ end
44
+
45
+ def destroy
46
+ @page = Page.find(params[:id])
47
+ @page.destroy
48
+ redirect_to pages_url, notice: t('general.form.destroyed')
49
+ end
50
+
51
+ def resource
52
+ @page
53
+ end
54
+ end
@@ -0,0 +1,62 @@
1
+ class ProductsController < ApplicationController
2
+ include Applicat::Mvc::Controller::Resource
3
+
4
+ load_and_authorize_resource
5
+
6
+ rescue_from ActiveRecord::RecordNotFound, with: :not_found
7
+
8
+ respond_to :html, :js, :json
9
+
10
+ def index
11
+ @products = Product.all
12
+ end
13
+
14
+ def show
15
+ @product = Product.find(params[:id])
16
+ end
17
+
18
+ def new
19
+ @product = Product.new
20
+ end
21
+
22
+ def create
23
+ @product = Product.new(params[:product])
24
+ @product.user_id = current_user.id
25
+
26
+ if @product.save
27
+ redirect_to @product, notice: t('general.form.successfully_created')
28
+ else
29
+ render :new
30
+ end
31
+ end
32
+
33
+ def edit
34
+ @product = Product.find(params[:id])
35
+ end
36
+
37
+ def update
38
+ @product = Product.find(params[:id])
39
+
40
+ if @product.update_attributes(params[:product])
41
+ redirect_to @product, notice: t('general.form.successfully_updated')
42
+ else
43
+ render :edit
44
+ end
45
+ end
46
+
47
+ def destroy
48
+ @product = Product.find(params[:id])
49
+ @product.destroy
50
+ redirect_to products_url, notice: t('general.form.destroyed')
51
+ end
52
+
53
+ def resource
54
+ @product
55
+ end
56
+
57
+ private
58
+
59
+ def not_found
60
+ redirect_to products_path, notice: t('products.exceptions.not_found')
61
+ end
62
+ end
@@ -0,0 +1,66 @@
1
+ class ProfessionsController < ApplicationController
2
+ include Applicat::Mvc::Controller::Resource
3
+
4
+ load_and_authorize_resource
5
+
6
+ rescue_from ActiveRecord::RecordNotFound, with: :not_found
7
+
8
+ respond_to :html, :js, :json
9
+
10
+ def index
11
+ @professions = Profession.order(:name)
12
+
13
+ respond_to do |format|
14
+ format.html
15
+ format.json { render json: @professions.tokens(params[:q]) }
16
+ end
17
+ end
18
+
19
+ def show
20
+ @profession = Profession.find(params[:id])
21
+ end
22
+
23
+ def new
24
+ @profession = Profession.new
25
+ end
26
+
27
+ def create
28
+ @profession = Profession.new(params[:profession])
29
+
30
+ if @profession.save
31
+ redirect_to @profession, notice: t('general.form.successfully_created')
32
+ else
33
+ render :new
34
+ end
35
+ end
36
+
37
+ def edit
38
+ @profession = Profession.find(params[:id])
39
+ end
40
+
41
+ def update
42
+ @profession = Profession.find(params[:id])
43
+
44
+ if @profession.update_attributes(params[:profession])
45
+ redirect_to @profession, notice: t('general.form.successfully_updated')
46
+ else
47
+ render :edit
48
+ end
49
+ end
50
+
51
+ def destroy
52
+ @profession = Profession.find(params[:id])
53
+ @profession.destroy
54
+ redirect_to professions_url, notice: t('general.form.destroyed')
55
+ end
56
+
57
+ def resource
58
+ @profession
59
+ end
60
+
61
+ private
62
+
63
+ def not_found
64
+ redirect_to professions_path, notice: t('professions.exceptions.not_found')
65
+ end
66
+ end
@@ -0,0 +1,56 @@
1
+ class ProjectsController < ApplicationController
2
+ include Applicat::Mvc::Controller::Resource
3
+
4
+ load_and_authorize_resource
5
+
6
+ respond_to :html, :js, :json
7
+
8
+ def index
9
+ @parent = find_parent Project::PARENT_TYPES
10
+ @projects = @parent ? @parent.projects.order(:name) : Project.order(:name)
11
+ end
12
+
13
+ def show
14
+ @project = Project.includes(:areas, :comments).find(params[:id])
15
+ @comments = @project.comments
16
+ end
17
+
18
+ def new
19
+ @project = Project.new
20
+ end
21
+
22
+ def create
23
+ @project = Project.new(params[:project])
24
+ @project.user_id = current_user.id
25
+
26
+ if @project.save
27
+ redirect_to @project, notice: t('general.form.successfully_created')
28
+ else
29
+ render :new
30
+ end
31
+ end
32
+
33
+ def edit
34
+ @project = Project.find(params[:id])
35
+ end
36
+
37
+ def update
38
+ @project = Project.find(params[:id])
39
+
40
+ if @project.update_attributes(params[:project])
41
+ redirect_to @project, notice: t('general.form.successfully_updated')
42
+ else
43
+ render :edit
44
+ end
45
+ end
46
+
47
+ def destroy
48
+ @project = Project.find(params[:id])
49
+ @project.destroy
50
+ redirect_to projects_url, notice: t('general.form.destroyed')
51
+ end
52
+
53
+ def resource
54
+ @project
55
+ end
56
+ end
@@ -0,0 +1,93 @@
1
+ class ResultsController < ApplicationController
2
+ include Applicat::Mvc::Controller::Resource
3
+ include Wizard::Controller
4
+
5
+ wizard_steps :setup_results, :activate
6
+
7
+ before_filter :build_resource, only: [:new, :create]
8
+ before_filter :resource, only: [:show, :edit, :update, :setup_results, :activate]
9
+
10
+ load_and_authorize_resource
11
+
12
+ respond_to :html, :js, :json
13
+
14
+ def index
15
+ parent = find_parent Result::PARENT_TYPES
16
+ @results = parent ? parent.results : Result.all
17
+ end
18
+
19
+ def show
20
+ @comments = @result.comments
21
+ end
22
+
23
+ def new
24
+ render_wizard
25
+ end
26
+
27
+ def create
28
+ if @result.initialization
29
+ redirect_to edit_result_path(@result) and return
30
+ else
31
+ render_wizard
32
+ end
33
+ end
34
+
35
+ def edit
36
+ if @result.results.none?
37
+ @result.results << @result.result_class.new
38
+ @result.results.first.errors.clear
39
+ end
40
+
41
+ render_wizard
42
+ end
43
+
44
+ def update
45
+ @result.attributes = params[:result]
46
+
47
+ # shift the first empty result set after initialization on state :initialized
48
+ @result.results.shift if params[:next_step] == '1' && !@result.results.first.valid?
49
+ success = params[:next_step] == '1' ? @result.send(step) : @result.save
50
+
51
+ if success
52
+ redirect_to(
53
+ edit_result_path(@result), notice: t('general.form.successfully_updated')
54
+ )
55
+ else
56
+ render_wizard
57
+ end
58
+
59
+ return
60
+ end
61
+
62
+ def destroy
63
+ @result = Result.find(params[:id])
64
+ @result.destroy
65
+ redirect_to @result.task, notice: t('general.form.destroyed')
66
+ end
67
+
68
+ def resource
69
+ @result = Result.find(params[:id]) unless @result || !params[:id].present?
70
+ @task = @result.task unless @task || !@result
71
+ @result
72
+ end
73
+
74
+ def resource=(value); @result = value; end
75
+
76
+ def parent
77
+ @task
78
+ end
79
+
80
+ private
81
+
82
+ def build_resource
83
+ @task = find_parent Result::PARENT_TYPES, action_name == 'create' ? :result : nil
84
+ @result = @task.result_class.new({ task_id: @task.id }.merge(params[:result] || {}))
85
+ end
86
+
87
+ def render_wizard
88
+ @presenter = Resources::General::Wizards::ResultPresenter.new(
89
+ self.view_context, resource: resource
90
+ )
91
+ render 'general/wizard'
92
+ end
93
+ end