decidim 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of decidim might be problematic. Click here for more details.

Files changed (322) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +3 -1
  3. data/.codeclimate.yml +2 -3
  4. data/.rubocop.yml +1 -48
  5. data/.travis.yml +1 -0
  6. data/Dockerfile +1 -0
  7. data/Gemfile +1 -0
  8. data/Gemfile.lock +119 -115
  9. data/README.md +24 -9
  10. data/Rakefile +14 -10
  11. data/decidim-admin/app/assets/javascripts/decidim/admin/application.js.es6 +21 -9
  12. data/decidim-admin/app/assets/javascripts/decidim/admin/sort_list.component.js.es6 +35 -0
  13. data/decidim-admin/app/assets/stylesheets/decidim/admin/extra/_language-chooser.scss +4 -0
  14. data/decidim-admin/app/assets/stylesheets/decidim/admin/extra/_sort.scss +12 -0
  15. data/decidim-admin/app/controllers/decidim/admin/application_controller.rb +1 -0
  16. data/decidim-admin/app/controllers/decidim/admin/participatory_process_attachments_controller.rb +4 -0
  17. data/decidim-admin/app/helpers/decidim/admin/menu_helper.rb +0 -1
  18. data/decidim-admin/app/models/decidim/admin/participatory_process_user_role.rb +2 -2
  19. data/decidim-admin/app/views/decidim/admin/categories/index.html.erb +7 -1
  20. data/decidim-admin/app/views/decidim/admin/exports/_dropdown.html.erb +1 -1
  21. data/decidim-admin/app/views/decidim/admin/moderations/index.html.erb +6 -2
  22. data/decidim-admin/app/views/decidim/admin/participatory_process_steps/index.html.erb +1 -0
  23. data/decidim-admin/app/views/layouts/decidim/admin/_title_bar.html.erb +10 -0
  24. data/decidim-admin/bin/rails +3 -3
  25. data/decidim-admin/config/locales/ca.yml +3 -1
  26. data/decidim-admin/config/locales/en.yml +3 -1
  27. data/decidim-admin/config/locales/es.yml +3 -1
  28. data/decidim-admin/config/locales/eu.yml +0 -1
  29. data/decidim-admin/config/locales/fi.yml +0 -1
  30. data/decidim-admin/config/locales/fr.yml +0 -1
  31. data/decidim-admin/config/locales/it.yml +490 -0
  32. data/decidim-admin/db/migrate/20161102144648_add_admin_participatory_process_user_roles.rb +5 -3
  33. data/decidim-admin/db/migrate/20170128112958_change_user_groups_verified_to_timestamp.rb +2 -0
  34. data/decidim-admin/decidim-admin.gemspec +2 -1
  35. data/decidim-admin/lib/decidim/admin/engine.rb +1 -1
  36. data/decidim-admin/lib/decidim/admin/test/manage_attachments_examples.rb +3 -3
  37. data/decidim-admin/spec/commands/reject_user_group_spec.rb +2 -2
  38. data/decidim-admin/spec/features/admin_copy_participatory_process_spec.rb +2 -2
  39. data/decidim-admin/spec/features/admin_invite_spec.rb +1 -1
  40. data/decidim-admin/spec/features/admin_manages_features_spec.rb +2 -2
  41. data/decidim-admin/spec/features/admin_manages_newsletters_spec.rb +4 -4
  42. data/decidim-admin/spec/features/admin_manages_organization_spec.rb +6 -6
  43. data/decidim-admin/spec/features/admin_manages_participatory_process_groups_spec.rb +4 -4
  44. data/decidim-admin/spec/features/admin_manages_participatory_processes_spec.rb +4 -4
  45. data/decidim-admin/spec/features/static_pages_spec.rb +4 -4
  46. data/decidim-admin/spec/forms/organization_form_spec.rb +1 -1
  47. data/decidim-admin/spec/shared/manage_process_categories_examples.rb +44 -29
  48. data/decidim-admin/spec/shared/manage_process_steps_examples.rb +3 -3
  49. data/decidim-admin/spec/shared/manage_processes_examples.rb +1 -1
  50. data/decidim-admin/spec/shared/participatory_admin_shared_context.rb +3 -3
  51. data/decidim-admin/spec/spec_helper.rb +3 -2
  52. data/decidim-api/bin/rails +3 -3
  53. data/decidim-api/decidim-api.gemspec +2 -1
  54. data/decidim-api/lib/decidim/api/engine.rb +1 -1
  55. data/decidim-api/spec/spec_helper.rb +3 -2
  56. data/decidim-budgets/app/controllers/decidim/budgets/application_controller.rb +1 -1
  57. data/decidim-budgets/app/models/decidim/budgets/line_item.rb +1 -2
  58. data/decidim-budgets/app/models/decidim/budgets/order.rb +2 -2
  59. data/decidim-budgets/app/views/decidim/budgets/projects/_linked_projects.html.erb +1 -1
  60. data/decidim-budgets/bin/rails +3 -3
  61. data/decidim-budgets/config/locales/it.yml +126 -0
  62. data/decidim-budgets/db/migrate/20170127114122_create_projects.rb +2 -0
  63. data/decidim-budgets/db/migrate/20170130095615_create_orders.rb +2 -0
  64. data/decidim-budgets/db/migrate/20170130101825_create_line_items.rb +2 -0
  65. data/decidim-budgets/db/migrate/20170207101750_remove_short_description_from_decidim_projects.rb +2 -0
  66. data/decidim-budgets/db/migrate/20170215132708_add_reference_to_projects.rb +2 -0
  67. data/decidim-budgets/db/migrate/20170410074214_remove_not_null_reference_budgets.rb +2 -0
  68. data/decidim-budgets/db/migrate/20170612101846_migrate_projects_category.rb +15 -0
  69. data/decidim-budgets/decidim-budgets.gemspec +3 -1
  70. data/decidim-budgets/lib/decidim/budgets/feature.rb +2 -2
  71. data/decidim-budgets/spec/features/admin_manages_project_attachments_spec.rb +5 -3
  72. data/decidim-budgets/spec/features/admin_manages_projects_spec.rb +5 -7
  73. data/decidim-budgets/spec/features/process_admin_manages_project_attachments_spec.rb +4 -4
  74. data/decidim-budgets/spec/features/process_admin_manages_projects_spec.rb +5 -8
  75. data/decidim-budgets/spec/shared/manage_attachments_examples.rb +0 -4
  76. data/decidim-budgets/spec/shared/manage_projects_examples.rb +3 -3
  77. data/decidim-budgets/spec/spec_helper.rb +2 -1
  78. data/decidim-comments/app/assets/javascripts/decidim/comments/bundle.js +0 -0
  79. data/decidim-comments/app/commands/decidim/comments/create_comment.rb +2 -2
  80. data/decidim-comments/app/frontend/comments/add_comment_form.component.tsx +1 -0
  81. data/decidim-comments/app/frontend/comments/comment.component.test.tsx +12 -1
  82. data/decidim-comments/app/frontend/comments/comment.component.tsx +42 -4
  83. data/decidim-comments/app/frontend/comments/comment_thread.component.test.tsx +11 -0
  84. data/decidim-comments/app/frontend/comments/comment_thread.component.tsx +5 -1
  85. data/decidim-comments/app/frontend/fragments/comment_data.fragment.graphql +3 -0
  86. data/decidim-comments/app/frontend/support/generate_comments_data.ts +3 -0
  87. data/decidim-comments/app/frontend/support/schema.ts +18 -12
  88. data/decidim-comments/app/mailers/decidim/comments/comment_notification_mailer.rb +6 -4
  89. data/decidim-comments/app/models/decidim/comments/comment.rb +6 -4
  90. data/decidim-comments/app/models/decidim/comments/comment_vote.rb +1 -2
  91. data/decidim-comments/app/models/decidim/comments/seed.rb +5 -2
  92. data/decidim-comments/app/resolvers/decidim/comments/vote_comment_resolver.rb +3 -0
  93. data/decidim-comments/app/types/decidim/comments/commentable_interface.rb +3 -3
  94. data/decidim-comments/app/views/decidim/comments/comment_notification_mailer/comment_created.html.erb +1 -1
  95. data/decidim-comments/app/views/decidim/comments/comment_notification_mailer/reply_created.html.erb +1 -1
  96. data/decidim-comments/bin/rails +3 -3
  97. data/decidim-comments/config/locales/ca.yml +5 -0
  98. data/decidim-comments/config/locales/en.yml +5 -0
  99. data/decidim-comments/config/locales/es.yml +5 -0
  100. data/decidim-comments/config/locales/it.yml +65 -0
  101. data/decidim-comments/db/migrate/20161130143508_create_comments.rb +2 -0
  102. data/decidim-comments/db/migrate/20161214082645_add_depth_to_comments.rb +2 -0
  103. data/decidim-comments/db/migrate/20161216102820_add_alignment_to_comments.rb +2 -0
  104. data/decidim-comments/db/migrate/20161219150806_create_comment_votes.rb +3 -1
  105. data/decidim-comments/db/migrate/20170123102043_add_user_group_id_to_comments.rb +2 -0
  106. data/decidim-comments/db/migrate/20170504085413_add_root_commentable_to_comments.rb +2 -0
  107. data/decidim-comments/db/migrate/20170510091348_update_root_commentable_for_comments.rb +3 -2
  108. data/decidim-comments/db/migrate/20170510091409_set_root_commentable_null_constraints.rb +2 -0
  109. data/decidim-comments/decidim-comments.gemspec +2 -1
  110. data/decidim-comments/lib/decidim/comments/comment_serializer.rb +1 -1
  111. data/decidim-comments/lib/decidim/comments/commentable.rb +4 -4
  112. data/decidim-comments/spec/commands/create_comment_spec.rb +2 -2
  113. data/decidim-comments/spec/features/admin_manages_comments_spec.rb +4 -9
  114. data/decidim-comments/spec/features/process_admin_manages_comments_spec.rb +5 -11
  115. data/decidim-comments/spec/mailers/comment_notification_mailer_spec.rb +12 -7
  116. data/decidim-comments/spec/shared/author_localised_email.rb +26 -0
  117. data/decidim-comments/spec/spec_helper.rb +1 -1
  118. data/decidim-dev/config/locales/it.yml +9 -0
  119. data/decidim-dev/decidim-dev.gemspec +8 -3
  120. data/decidim-dev/lib/decidim/dev.rb +1 -8
  121. data/decidim-dev/lib/decidim/dev/railtie.rb +1 -1
  122. data/decidim-dev/lib/decidim/dev/test/base_spec_helper.rb +6 -4
  123. data/decidim-dev/lib/decidim/dev/test/rspec_support/capybara.rb +2 -2
  124. data/decidim-dev/lib/decidim/dev/test/rspec_support/feature.rb +4 -2
  125. data/decidim-dev/lib/decidim/dev/test/rspec_support/feature_context.rb +28 -8
  126. data/decidim-dev/lib/decidim/dev/test/rspec_support/translation_helpers.rb +7 -2
  127. data/decidim-dev/lib/decidim/dev/test/spec_helper.rb +2 -2
  128. data/decidim-dev/lib/generators/decidim/dummy_generator.rb +1 -1
  129. data/decidim-meetings/README.md +1 -1
  130. data/decidim-meetings/app/controllers/decidim/meetings/application_controller.rb +1 -1
  131. data/decidim-meetings/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +1 -1
  132. data/decidim-meetings/bin/rails +3 -3
  133. data/decidim-meetings/config/locales/it.yml +87 -0
  134. data/decidim-meetings/db/migrate/20161130121354_create_meetings.rb +2 -0
  135. data/decidim-meetings/db/migrate/20170110142105_close_a_meeting.rb +2 -0
  136. data/decidim-meetings/db/migrate/20170123151650_add_latitude_and_longitude_to_meetings.rb +2 -0
  137. data/decidim-meetings/db/migrate/20170129153716_remove_short_description_from_meetings.rb +2 -0
  138. data/decidim-meetings/db/migrate/20170215132546_add_reference_to_meetings.rb +2 -0
  139. data/decidim-meetings/db/migrate/20170410074252_remove_not_null_reference_meetings.rb +2 -0
  140. data/decidim-meetings/db/migrate/20170612101925_migrate_meetings_category.rb +15 -0
  141. data/decidim-meetings/decidim-meetings.gemspec +3 -1
  142. data/decidim-meetings/lib/decidim/meetings/feature.rb +2 -2
  143. data/decidim-meetings/spec/features/admin_manages_meetings_attachments_spec.rb +5 -1
  144. data/decidim-meetings/spec/features/admin_manages_meetings_spec.rb +5 -7
  145. data/decidim-meetings/spec/features/explore_meetings_spec.rb +32 -6
  146. data/decidim-meetings/spec/features/process_admin_manages_meetings_attachments_spec.rb +4 -2
  147. data/decidim-meetings/spec/features/process_admin_manages_meetings_spec.rb +5 -8
  148. data/decidim-meetings/spec/shared/manage_attachments_examples.rb +0 -3
  149. data/decidim-meetings/spec/shared/manage_meetings_examples.rb +11 -11
  150. data/decidim-meetings/spec/spec_helper.rb +2 -1
  151. data/decidim-pages/bin/rails +3 -3
  152. data/decidim-pages/config/locales/it.yml +22 -0
  153. data/decidim-pages/db/migrate/20161116121353_create_decidim_pages.rb +2 -0
  154. data/decidim-pages/db/migrate/20161214150429_add_commentable_to_pages.rb +2 -0
  155. data/decidim-pages/db/migrate/20170110145040_remove_commentable_flag_from_pages.rb +2 -0
  156. data/decidim-pages/db/migrate/20170220091402_remove_page_feature_titles.rb +2 -0
  157. data/decidim-pages/decidim-pages.gemspec +3 -1
  158. data/decidim-pages/spec/features/admin_spec.rb +1 -1
  159. data/decidim-pages/spec/spec_helper.rb +2 -3
  160. data/decidim-proposals/app/commands/decidim/proposals/unvote_proposal.rb +34 -0
  161. data/decidim-proposals/app/commands/decidim/proposals/vote_proposal.rb +39 -0
  162. data/decidim-proposals/app/controllers/concerns/decidim/proposals/orderable.rb +7 -3
  163. data/decidim-proposals/app/controllers/decidim/proposals/proposal_votes_controller.rb +18 -8
  164. data/decidim-proposals/app/models/decidim/proposals/proposal.rb +3 -3
  165. data/decidim-proposals/app/models/decidim/proposals/proposal_vote.rb +0 -1
  166. data/decidim-proposals/app/views/decidim/proposals/proposals/_author.html.erb +23 -0
  167. data/decidim-proposals/app/views/decidim/proposals/proposals/_linked_proposals.html.erb +2 -2
  168. data/decidim-proposals/app/views/decidim/proposals/proposals/_proposal.html.erb +1 -9
  169. data/decidim-proposals/app/views/decidim/proposals/proposals/_vote_button.html.erb +2 -6
  170. data/decidim-proposals/app/views/decidim/proposals/proposals/new.html.erb +1 -1
  171. data/decidim-proposals/app/views/decidim/proposals/proposals/show.html.erb +1 -11
  172. data/decidim-proposals/bin/rails +3 -3
  173. data/decidim-proposals/config/locales/ca.yml +6 -0
  174. data/decidim-proposals/config/locales/en.yml +6 -0
  175. data/decidim-proposals/config/locales/es.yml +6 -0
  176. data/decidim-proposals/config/locales/eu.yml +0 -2
  177. data/decidim-proposals/config/locales/fi.yml +0 -2
  178. data/decidim-proposals/config/locales/fr.yml +0 -2
  179. data/decidim-proposals/config/locales/it.yml +147 -0
  180. data/decidim-proposals/db/migrate/20161212110850_create_decidim_proposals.rb +2 -0
  181. data/decidim-proposals/db/migrate/20170112115253_create_proposal_votes.rb +3 -1
  182. data/decidim-proposals/db/migrate/20170113114245_add_text_search_indexes.rb +2 -0
  183. data/decidim-proposals/db/migrate/20170118120151_add_counter_cache_votes_to_proposals.rb +2 -0
  184. data/decidim-proposals/db/migrate/20170120151202_add_user_group_id_to_proposals.rb +2 -0
  185. data/decidim-proposals/db/migrate/20170131092413_add_answers_to_proposals.rb +2 -0
  186. data/decidim-proposals/db/migrate/20170205082832_add_index_to_decidim_proposals_proposals_proposal_votes_count.rb +2 -0
  187. data/decidim-proposals/db/migrate/20170215113152_create_proposal_reports.rb +2 -0
  188. data/decidim-proposals/db/migrate/20170215131720_add_report_count_to_proposals.rb +2 -0
  189. data/decidim-proposals/db/migrate/20170215132030_add_reference_to_proposals.rb +2 -0
  190. data/decidim-proposals/db/migrate/20170220152416_add_hidden_at_to_proposals.rb +2 -0
  191. data/decidim-proposals/db/migrate/20170228105156_add_geolocalization_fields_to_proposals.rb +2 -0
  192. data/decidim-proposals/db/migrate/20170307085300_migrate_proposal_reports_data_to_reports.rb +8 -10
  193. data/decidim-proposals/db/migrate/20170410073742_remove_not_null_reference_proposals.rb +2 -0
  194. data/decidim-proposals/db/migrate/20170612101809_migrate_proposals_category.rb +15 -0
  195. data/decidim-proposals/decidim-proposals.gemspec +4 -2
  196. data/decidim-proposals/lib/decidim/proposals/feature.rb +5 -1
  197. data/decidim-proposals/lib/decidim/proposals/proposal_serializer.rb +1 -6
  198. data/decidim-proposals/spec/commands/decidim/proposals/unvote_proposal_spec.rb +26 -0
  199. data/decidim-proposals/spec/commands/decidim/proposals/vote_proposal_spec.rb +47 -0
  200. data/decidim-proposals/spec/features/admin_manages_proposals_spec.rb +6 -11
  201. data/decidim-proposals/spec/features/process_admin_manages_proposals_spec.rb +6 -12
  202. data/decidim-proposals/spec/features/proposals_spec.rb +38 -12
  203. data/decidim-proposals/spec/shared/manage_proposals_examples.rb +3 -6
  204. data/decidim-proposals/spec/spec_helper.rb +2 -1
  205. data/decidim-results/app/controllers/decidim/results/application_controller.rb +1 -1
  206. data/decidim-results/app/views/decidim/results/results/_linked_results.html.erb +1 -1
  207. data/decidim-results/bin/rails +3 -3
  208. data/decidim-results/config/locales/it.yml +78 -0
  209. data/decidim-results/db/migrate/20170116104125_create_results.rb +2 -0
  210. data/decidim-results/db/migrate/20170129164553_remove_short_description_from_results.rb +2 -0
  211. data/decidim-results/db/migrate/20170215132624_add_reference_to_results.rb +2 -0
  212. data/decidim-results/db/migrate/20170410074358_remove_not_null_reference_results.rb +2 -0
  213. data/decidim-results/db/migrate/20170612101951_migrate_results_category.rb +15 -0
  214. data/decidim-results/decidim-results.gemspec +3 -1
  215. data/decidim-results/spec/features/admin_manages_results_spec.rb +5 -7
  216. data/decidim-results/spec/features/process_admin_manages_results_spec.rb +5 -8
  217. data/decidim-results/spec/shared/manage_results_examples.rb +3 -3
  218. data/decidim-results/spec/spec_helper.rb +2 -1
  219. data/decidim-surveys/README.md +24 -0
  220. data/decidim-surveys/Rakefile +3 -0
  221. data/decidim-surveys/app/assets/config/admin/decidim_surveys_manifest.js +1 -0
  222. data/decidim-surveys/app/assets/images/decidim/surveys/icon.svg +1 -0
  223. data/decidim-surveys/app/assets/javascripts/decidim/surveys/admin/auto_label_by_position.component.js.es6 +33 -0
  224. data/decidim-surveys/app/assets/javascripts/decidim/surveys/admin/dynamic_fields.component.js.es6 +95 -0
  225. data/decidim-surveys/app/assets/javascripts/decidim/surveys/admin/surveys.js.es6 +85 -0
  226. data/decidim-surveys/app/assets/stylesheets/decidim/surveys/surveys.scss +9 -0
  227. data/decidim-surveys/app/commands/decidim/surveys/admin/update_survey.rb +65 -0
  228. data/decidim-surveys/app/commands/decidim/surveys/answer_survey.rb +43 -0
  229. data/decidim-surveys/app/commands/decidim/surveys/create_survey.rb +19 -0
  230. data/decidim-surveys/app/controllers/decidim/surveys/admin/application_controller.rb +15 -0
  231. data/decidim-surveys/app/controllers/decidim/surveys/admin/surveys_controller.rb +55 -0
  232. data/decidim-surveys/app/controllers/decidim/surveys/application_controller.rb +13 -0
  233. data/decidim-surveys/app/controllers/decidim/surveys/surveys_controller.rb +39 -0
  234. data/decidim-surveys/app/forms/decidim/surveys/admin/survey_form.rb +19 -0
  235. data/decidim-surveys/app/forms/decidim/surveys/admin/survey_question_answer_option_form.rb +15 -0
  236. data/decidim-surveys/app/forms/decidim/surveys/admin/survey_question_form.rb +24 -0
  237. data/decidim-surveys/app/forms/decidim/surveys/survey_answer_form.rb +36 -0
  238. data/decidim-surveys/app/forms/decidim/surveys/survey_form.rb +22 -0
  239. data/decidim-surveys/app/helpers/decidim/surveys/admin/application_helper.rb +39 -0
  240. data/decidim-surveys/app/models/decidim/surveys/abilities/admin_user.rb +34 -0
  241. data/decidim-surveys/app/models/decidim/surveys/abilities/current_user.rb +47 -0
  242. data/decidim-surveys/app/models/decidim/surveys/abilities/process_admin_user.rb +44 -0
  243. data/decidim-surveys/app/models/decidim/surveys/application_record.rb +10 -0
  244. data/decidim-surveys/app/models/decidim/surveys/survey.rb +25 -0
  245. data/decidim-surveys/app/models/decidim/surveys/survey_answer.rb +27 -0
  246. data/decidim-surveys/app/models/decidim/surveys/survey_question.rb +18 -0
  247. data/decidim-surveys/app/queries/decidim/surveys/survey_user_answers.rb +28 -0
  248. data/decidim-surveys/app/views/decidim/surveys/admin/surveys/_answer_option.html.erb +23 -0
  249. data/decidim-surveys/app/views/decidim/surveys/admin/surveys/_form.html.erb +47 -0
  250. data/decidim-surveys/app/views/decidim/surveys/admin/surveys/_question.html.erb +57 -0
  251. data/decidim-surveys/app/views/decidim/surveys/admin/surveys/edit.html.erb +7 -0
  252. data/decidim-surveys/app/views/decidim/surveys/surveys/show.html.erb +102 -0
  253. data/decidim-surveys/bin/rails +15 -0
  254. data/decidim-surveys/config/i18n-tasks.yml +11 -0
  255. data/decidim-surveys/config/locales/ca.yml +69 -0
  256. data/decidim-surveys/config/locales/en.yml +73 -0
  257. data/decidim-surveys/config/locales/es.yml +69 -0
  258. data/decidim-surveys/config/locales/eu.yml +5 -0
  259. data/decidim-surveys/config/locales/fi.yml +5 -0
  260. data/decidim-surveys/config/locales/fr.yml +5 -0
  261. data/decidim-surveys/config/locales/it.yml +5 -0
  262. data/decidim-surveys/config/locales/nl.yml +5 -0
  263. data/decidim-surveys/db/migrate/20170511092231_create_decidim_surveys.rb +15 -0
  264. data/decidim-surveys/db/migrate/20170515090916_create_decidim_survey_questions.rb +12 -0
  265. data/decidim-surveys/db/migrate/20170515144119_create_decidim_survey_answers.rb +14 -0
  266. data/decidim-surveys/db/migrate/20170518085302_add_position_to_surveys_questions.rb +7 -0
  267. data/decidim-surveys/db/migrate/20170522075938_add_mandatory_to_surveys_questions.rb +7 -0
  268. data/decidim-surveys/db/migrate/20170524122229_add_question_type_to_surveys_questions.rb +7 -0
  269. data/decidim-surveys/db/migrate/20170525132233_add_answer_options_to_surveys_questions.rb +7 -0
  270. data/decidim-surveys/decidim-surveys.gemspec +22 -0
  271. data/decidim-surveys/lib/decidim/surveys.rb +14 -0
  272. data/decidim-surveys/lib/decidim/surveys/admin.rb +10 -0
  273. data/decidim-surveys/lib/decidim/surveys/admin_engine.rb +34 -0
  274. data/decidim-surveys/lib/decidim/surveys/engine.rb +25 -0
  275. data/decidim-surveys/lib/decidim/surveys/feature.rb +85 -0
  276. data/decidim-surveys/lib/decidim/surveys/survey_user_answers_serializer.rb +23 -0
  277. data/decidim-surveys/lib/decidim/surveys/test/factories.rb +39 -0
  278. data/decidim-surveys/spec/commands/decidim/surveys/admin/update_survey_spec.rb +147 -0
  279. data/decidim-surveys/spec/commands/decidim/surveys/answer_survey_spec.rb +71 -0
  280. data/decidim-surveys/spec/commands/decidim/surveys/create_survey_spec.rb +44 -0
  281. data/decidim-surveys/spec/factories.rb +3 -0
  282. data/decidim-surveys/spec/features/admin_manages_surveys_spec.rb +13 -0
  283. data/decidim-surveys/spec/features/process_admin_manages_surveys_spec.rb +13 -0
  284. data/decidim-surveys/spec/features/survey_spec.rb +235 -0
  285. data/decidim-surveys/spec/forms/decidim/surveys/admin/survey_form_spec.rb +64 -0
  286. data/decidim-surveys/spec/forms/decidim/surveys/admin/survey_question_form_spec.rb +36 -0
  287. data/decidim-surveys/spec/forms/decidim/surveys/survey_answer_form_spec.rb +36 -0
  288. data/decidim-surveys/spec/forms/decidim/surveys/survey_form_spec.rb +32 -0
  289. data/decidim-surveys/spec/models/decidim/surveys/abilities/admin_user_spec.rb +22 -0
  290. data/decidim-surveys/spec/models/decidim/surveys/abilities/current_user_spec.rb +19 -0
  291. data/decidim-surveys/spec/models/decidim/surveys/abilities/process_admin_user_spec.rb +23 -0
  292. data/decidim-surveys/spec/models/decidim/surveys/survey_answer_spec.rb +55 -0
  293. data/decidim-surveys/spec/models/decidim/surveys/survey_question_spec.rb +19 -0
  294. data/decidim-surveys/spec/models/decidim/surveys/survey_spec.rb +65 -0
  295. data/decidim-surveys/spec/queries/decidim/surveys/survey_user_answers_spec.rb +21 -0
  296. data/decidim-surveys/spec/services/decidim/surveys/surveys/survey_user_answer_serializer_spec.rb +34 -0
  297. data/decidim-surveys/spec/shared/edit_survey_examples.rb +213 -0
  298. data/decidim-surveys/spec/shared/export_survey_user_answers_examples.rb +47 -0
  299. data/decidim-surveys/spec/spec_helper.rb +4 -0
  300. data/decidim-system/app/controllers/decidim/system/devise/passwords_controller.rb +2 -0
  301. data/decidim-system/app/helpers/decidim/system/menu_helper.rb +0 -1
  302. data/decidim-system/bin/rails +3 -3
  303. data/decidim-system/config/locales/it.yml +66 -0
  304. data/decidim-system/db/migrate/20160919105637_devise_create_decidim_admins.rb +2 -0
  305. data/decidim-system/decidim-system.gemspec +2 -1
  306. data/decidim-system/spec/spec_helper.rb +3 -2
  307. data/decidim.gemspec +5 -4
  308. data/docs/geocoding.md +2 -2
  309. data/docs/how_to_create_a_plugin.md +11 -11
  310. data/lib/decidim.rb +1 -0
  311. data/lib/generators/decidim/app_generator.rb +3 -2
  312. data/lib/generators/decidim/demo_generator.rb +1 -1
  313. data/lib/generators/decidim/docker_generator.rb +2 -2
  314. data/lib/generators/decidim/install_generator.rb +3 -6
  315. data/lib/generators/decidim/templates/initializer.rb +2 -2
  316. metadata +130 -47
  317. data/decidim-admin/app/assets/javascripts/decidim/admin/sort_steps.js.es6 +0 -30
  318. data/decidim-budgets/spec/shared/admin_shared_context.rb +0 -13
  319. data/decidim-comments/spec/shared/admin_shared_context.rb +0 -13
  320. data/decidim-meetings/spec/shared/admin_shared_context.rb +0 -13
  321. data/decidim-proposals/spec/shared/admin_shared_context.rb +0 -13
  322. data/decidim-results/spec/shared/admin_shared_context.rb +0 -13
@@ -24,10 +24,10 @@ end
24
24
  capybara_options = {
25
25
  extensions: [
26
26
  File.expand_path(
27
- File.join(File.dirname(__FILE__), "phantomjs_polyfills", "promise.js")
27
+ File.join(__dir__, "phantomjs_polyfills", "promise.js")
28
28
  ),
29
29
  File.expand_path(
30
- File.join(File.dirname(__FILE__), "phantomjs_polyfills", "phantomjs-shim.js")
30
+ File.join(__dir__, "phantomjs_polyfills", "phantomjs-shim.js")
31
31
  )
32
32
  ],
33
33
  js_errors: true,
@@ -27,12 +27,13 @@ module Decidim
27
27
  include Resourceable
28
28
  include Reportable
29
29
  include Authorable
30
+ include HasCategory
30
31
  include Decidim::Comments::Commentable
31
32
 
32
33
  feature_manifest_name "dummy"
33
34
 
34
- def reported_content
35
- title
35
+ def reported_content_url
36
+ ResourceLocatorPresenter.new(self).url
36
37
  end
37
38
  end
38
39
 
@@ -110,6 +111,7 @@ RSpec.configure do |config|
110
111
 
111
112
  t.references :decidim_feature, index: true
112
113
  t.references :decidim_author, index: true
114
+ t.references :decidim_category, index: true
113
115
 
114
116
  t.timestamps
115
117
  end
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RSpec.shared_context "feature" do
4
- let!(:manifest_name) { raise NotImplementedError }
5
4
  let(:manifest) { Decidim.find_feature_manifest(manifest_name) }
6
5
 
6
+ let(:user) { create :user, :confirmed, organization: organization }
7
+
7
8
  let!(:organization) { create(:organization) }
8
9
 
9
10
  let(:participatory_process) do
@@ -16,6 +17,10 @@ RSpec.shared_context "feature" do
16
17
  participatory_process: participatory_process)
17
18
  end
18
19
 
20
+ let!(:category) { create :category, participatory_process: participatory_process }
21
+
22
+ let!(:scope) { create :scope, organization: organization }
23
+
19
24
  before do
20
25
  switch_to_host(organization.host)
21
26
  end
@@ -27,19 +32,34 @@ end
27
32
 
28
33
  RSpec.shared_context "feature admin" do
29
34
  include_context "feature"
30
- let(:user) { create(:user, :confirmed, organization: organization) }
31
35
 
32
- before do
33
- Decidim::Admin::ParticipatoryProcessUserRole.create!(
34
- role: :admin,
35
- user: user,
36
- participatory_process: participatory_process
37
- )
36
+ let(:current_feature) { feature }
37
+
38
+ let(:user) do
39
+ create :user,
40
+ :admin,
41
+ :confirmed,
42
+ organization: organization
43
+ end
38
44
 
45
+ before do
39
46
  login_as user, scope: :user
47
+ visit_feature_admin
40
48
  end
41
49
 
42
50
  def visit_feature_admin
43
51
  visit decidim_admin.manage_feature_path(participatory_process, feature)
44
52
  end
45
53
  end
54
+
55
+ RSpec.shared_context "feature process admin" do
56
+ include_context "feature admin"
57
+
58
+ let(:user) do
59
+ create :user,
60
+ :process_admin,
61
+ :confirmed,
62
+ organization: organization,
63
+ participatory_process: participatory_process
64
+ end
65
+ end
@@ -16,8 +16,13 @@ module TranslationHelpers
16
16
  #
17
17
  # field - the field that holds the translations
18
18
  # locale - the ID of the locale to check
19
- def have_i18n_content(field, locale: I18n.locale)
20
- have_content(stripped(translated(field, locale: locale)))
19
+ # upcase - a boolean to indicate whether the string must be checked upcased or not.
20
+ #
21
+ # rubocop:disable Style/PredicateName
22
+ def have_i18n_content(field, locale: I18n.locale, upcase: false)
23
+ content = stripped(translated(field, locale: locale))
24
+ content = content.upcase if upcase
25
+ have_content(content)
21
26
  end
22
27
 
23
28
  # Handles how to fill in i18n form fields.
@@ -19,11 +19,11 @@ require "db-query-matchers"
19
19
 
20
20
  # Requires supporting files with custom matchers and macros, etc,
21
21
  # in ./support/ and its subdirectories.
22
- Dir["#{File.dirname(__FILE__)}/rspec_support/**/*.rb"].each { |f| require f }
22
+ Dir["#{__dir__}/rspec_support/**/*.rb"].each { |f| require f }
23
23
 
24
24
  RSpec.configure do |config|
25
25
  config.color = true
26
- config.fail_fast = ENV["FAIL_FAST"] || false
26
+ config.fail_fast = ENV["FAIL_FAST"] == "true"
27
27
  config.infer_spec_type_from_file_location!
28
28
  config.mock_with :rspec
29
29
  config.raise_errors_for_deprecations!
@@ -24,7 +24,7 @@ module Decidim
24
24
 
25
25
  def source_paths
26
26
  [
27
- File.expand_path("../templates", __FILE__)
27
+ File.expand_path("templates", __dir__)
28
28
  ]
29
29
  end
30
30
 
@@ -1,5 +1,5 @@
1
1
  # Decidim::Meetings
2
- The Meeetings module adds meeting to any participatory process. It adds a CRUD engine to the admin and public view scoped inside the participatory process.
2
+ The Meetings module adds meeting to any participatory process. It adds a CRUD engine to the admin and public view scoped inside the participatory process.
3
3
 
4
4
  ## Usage
5
5
  Meetings will be available as a Feature for a Participatory Process.
@@ -5,7 +5,7 @@ module Decidim
5
5
  # This controller is the abstract class from which all other controllers of
6
6
  # this engine inherit.
7
7
  #
8
- # Note that it inherits from `Decidim::Components::BaseController`, which
8
+ # Note that it inherits from `Decidim::Features::BaseController`, which
9
9
  # override its layout and provide all kinds of useful methods.
10
10
  class ApplicationController < Decidim::Features::BaseController
11
11
  helper Decidim::Meetings::ApplicationHelper
@@ -3,7 +3,7 @@
3
3
  <div class="column">
4
4
  <article class="card card--meeting">
5
5
  <div class="card__content">
6
- <%= link_to decidim_resource_path(meeting), class: "card__link" do %>
6
+ <%= link_to resource_locator(meeting).path, class: "card__link" do %>
7
7
  <h5 class="card__title"><%= translated_attribute meeting.title %></h5>
8
8
  <% end %>
9
9
  <div class="card__datetime">
@@ -4,11 +4,11 @@
4
4
  # This command will automatically be run when you run "rails" with Rails gems
5
5
  # installed from the root of your application.
6
6
 
7
- ENGINE_ROOT = File.expand_path("../..", __FILE__)
8
- ENGINE_PATH = File.expand_path("../../lib/decidim/meetings/engine", __FILE__)
7
+ ENGINE_ROOT = File.expand_path("..", __dir__)
8
+ ENGINE_PATH = File.expand_path("../lib/decidim/meetings/engine", __dir__)
9
9
 
10
10
  # Set up gems listed in the Gemfile.
11
- ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
12
12
  require "bundler/setup" if File.exist?(ENV["BUNDLE_GEMFILE"])
13
13
 
14
14
  require "rails/all"
@@ -0,0 +1,87 @@
1
+ it:
2
+ activemodel:
3
+ attributes:
4
+ close_meeting:
5
+ attendees_count: Numero di partecipanti
6
+ attending_organizations: Elenco delle organizzazioni partecipanti
7
+ meeting:
8
+ address: Indirizzo
9
+ decidim_category_id: Categoria
10
+ decidim_scope_id: Visibilità
11
+ description: Descrizione
12
+ end_time: Orario fine
13
+ start_time: Orario inizio
14
+ decidim:
15
+ features:
16
+ meetings:
17
+ name: Incontri
18
+ meetings:
19
+ actions:
20
+ attachments: Allegati
21
+ close: Chiuso
22
+ confirm_destroy: Sei certo di voler cancellare questo meeting?
23
+ destroy: Cancella
24
+ edit: Modifica
25
+ new: Nuovo
26
+ preview: Anteprima
27
+ title: Azioni
28
+ admin:
29
+ meeting_closes:
30
+ edit:
31
+ close: Chiudi
32
+ title: Chiusura meeting
33
+ meetings:
34
+ close:
35
+ invalid: C'è stato un problema durante la chiusura di questo meeting.
36
+ success: OK, il meeting è stato chiuso.
37
+ create:
38
+ invalid: C'è stato un problema durante la creazione di questo meeting.
39
+ success: OK, il meeting è stato creato con successo.
40
+ destroy:
41
+ success: OK, il meeting è stato cancellato.
42
+ edit:
43
+ update: Modifica
44
+ new:
45
+ create: Crea
46
+ title: Crea meeting
47
+ update:
48
+ invalid: C'è stato un problema durante l'aggiornamento di questo meeting.
49
+ success: OK, il meeting è stato aggiornato.
50
+ meetings:
51
+ filters:
52
+ category: Categoria
53
+ category_prompt: Scegli una categoria
54
+ date: Data
55
+ past: Passato
56
+ scopes: Visibilità
57
+ search: Cerca
58
+ upcoming: Imminenti
59
+ filters_small_view:
60
+ close_modal: Chiudi modalità
61
+ filter: Filtra
62
+ filter_by: Filtra per
63
+ unfold: Espandi
64
+ index:
65
+ view_meeting: Visualizza meeting
66
+ meetings:
67
+ no_meetings_warning: Nessun meeting corrisponde ai tuoi criteri di ricerca oppure non vi è nessun meeting in programma.
68
+ upcoming_meetings_warning: Attualmente non vi sono meeting in programma, ma qui puoi trovare elencati tutti i meeting effettuati in passato.
69
+ show:
70
+ attendees: Conteggio dei partecipanti
71
+ contributions: Conteggio dei contributi
72
+ organizations: Organizzazioni partecipanti.
73
+ models:
74
+ meeting:
75
+ fields:
76
+ closed: Chiuso
77
+ end_time: Data di fine
78
+ map: Mappa
79
+ start_time: Data di inizio
80
+ title: Titolo
81
+ resource_links:
82
+ meetings_through_proposals:
83
+ meeting_results: 'Risultati correlati:'
84
+ result_meetings: 'Meeting correlati:'
85
+ proposals_from_meeting:
86
+ meeting_proposals: 'Proposte correlate:'
87
+ proposal_meetings: 'Meeting correlati alle proposte:'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class CreateMeetings < ActiveRecord::Migration[5.0]
2
4
  def change
3
5
  create_table :decidim_meetings_meetings do |t|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class CloseAMeeting < ActiveRecord::Migration[5.0]
2
4
  def change
3
5
  add_column :decidim_meetings_meetings, :closing_report, :jsonb
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddLatitudeAndLongitudeToMeetings < ActiveRecord::Migration[5.0]
2
4
  def change
3
5
  add_column :decidim_meetings_meetings, :latitude, :float
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class RemoveShortDescriptionFromMeetings < ActiveRecord::Migration[5.0]
2
4
  def change
3
5
  remove_column :decidim_meetings_meetings, :short_description
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddReferenceToMeetings < ActiveRecord::Migration[5.0]
2
4
  def change
3
5
  add_column :decidim_meetings_meetings, :reference, :string
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class RemoveNotNullReferenceMeetings < ActiveRecord::Migration[5.0]
2
4
  def change
3
5
  change_column_null :decidim_meetings_meetings, :reference, true
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ class MigrateMeetingsCategory < ActiveRecord::Migration[5.1]
4
+ def change
5
+ # Create categorizations ensuring database integrity
6
+ execute('
7
+ INSERT INTO decidim_categorizations(decidim_category_id, categorizable_id, categorizable_type, created_at, updated_at)
8
+ SELECT decidim_category_id, decidim_meetings_meetings.id, \'Decidim::Meetings::Meeting\', NOW(), NOW()
9
+ FROM decidim_meetings_meetings
10
+ INNER JOIN decidim_categories ON decidim_categories.id = decidim_meetings_meetings.decidim_category_id
11
+ ')
12
+ # Remove unused column
13
+ remove_column :decidim_meetings_meetings, :decidim_category_id
14
+ end
15
+ end
@@ -1,4 +1,6 @@
1
- $:.push File.expand_path("../lib", __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path("lib", __dir__)
2
4
 
3
5
  # Maintain your gem's version:
4
6
  require_relative "../decidim-core/lib/decidim/core/version"
@@ -54,13 +54,13 @@ Decidim.register_feature(:meetings) do |feature|
54
54
  Decidim::Attachment.create!(
55
55
  title: Decidim::Faker::Localized.sentence(2),
56
56
  description: Decidim::Faker::Localized.sentence(5),
57
- file: File.new(File.join(File.dirname(__FILE__), "seeds", "city.jpeg")),
57
+ file: File.new(File.join(__dir__, "seeds", "city.jpeg")),
58
58
  attached_to: meeting
59
59
  )
60
60
  Decidim::Attachment.create!(
61
61
  title: Decidim::Faker::Localized.sentence(2),
62
62
  description: Decidim::Faker::Localized.sentence(5),
63
- file: File.new(File.join(File.dirname(__FILE__), "seeds", "Exampledocument.pdf")),
63
+ file: File.new(File.join(__dir__, "seeds", "Exampledocument.pdf")),
64
64
  attached_to: meeting
65
65
  )
66
66
  end
@@ -3,6 +3,10 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe "Admin manages meetings attachments", type: :feature do
6
- include_context "admin"
6
+ let(:manifest_name) { "meetings" }
7
+ let!(:meeting) { create :meeting, scope: scope, feature: current_feature }
8
+
9
+ include_context "feature admin"
10
+
7
11
  it_behaves_like "manage meetings attachments"
8
12
  end
@@ -3,12 +3,10 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe "Admin manages meetings", type: :feature do
6
- include_context "admin"
7
- it_behaves_like "manage meetings"
6
+ let(:manifest_name) { "meetings" }
7
+ let!(:meeting) { create :meeting, scope: scope, feature: current_feature }
8
+
9
+ include_context "feature admin"
8
10
 
9
- before do
10
- switch_to_host(organization.host)
11
- login_as user, scope: :user
12
- visit decidim_admin.manage_feature_path(participatory_process_id: participatory_process, feature_id: current_feature)
13
- end
11
+ it_behaves_like "manage meetings"
14
12
  end
@@ -26,6 +26,11 @@ describe "Explore meetings", type: :feature do
26
26
  visit_feature
27
27
  within ".filters" do
28
28
  fill_in :filter_search_text, with: translated(meetings.first.title)
29
+
30
+ # The form should be auto-submitted when filter box is filled up, but
31
+ # somehow it's not happening. So we workaround that be explicitly
32
+ # clicking on "Search" until we find out why.
33
+ find(".icon--magnifying-glass").click
29
34
  end
30
35
 
31
36
  expect(page).to have_css(".card--meeting", count: 1)
@@ -219,18 +224,39 @@ describe "Explore meetings", type: :feature do
219
224
  let(:attached_to) { meeting }
220
225
  it_behaves_like "has attachments"
221
226
 
222
- context "when the meeting is closed" do
223
- let!(:meeting) { create(:meeting, :closed, feature: feature) }
224
-
227
+ shared_examples_for "a closing report page" do
225
228
  it "shows the closing report" do
226
229
  visit_feature
227
230
  click_link translated(meeting.title)
228
231
  expect(page).to have_i18n_content(meeting.closing_report)
229
232
 
230
233
  within ".definition-data" do
231
- expect(page).to have_content(meeting.attendees_count)
232
- expect(page).to have_content(meeting.contributions_count)
233
- expect(page).to have_content(meeting.attending_organizations)
234
+ expect(page).to have_content("ATTENDEES COUNT #{meeting.attendees_count}")
235
+ expect(page).to have_content("ATTENDING ORGANIZATIONS #{meeting.attending_organizations}")
236
+ end
237
+ end
238
+ end
239
+
240
+ context "when the meeting is closed and had no contributions" do
241
+ let!(:meeting) { create(:meeting, :closed, contributions_count: 0, feature: feature) }
242
+
243
+ it_behaves_like "a closing report page"
244
+
245
+ it "does not show contributions count" do
246
+ within ".definition-data" do
247
+ expect(page).to have_no_content("CONTRIBUTIONS COUNT 0")
248
+ end
249
+ end
250
+ end
251
+
252
+ context "when the meeting is closed and had contributions" do
253
+ let!(:meeting) { create(:meeting, :closed, contributions_count: 1, feature: feature) }
254
+
255
+ it_behaves_like "a closing report page"
256
+
257
+ it "shows contributions count" do
258
+ within ".definition-data" do
259
+ expect(page).to have_content("CONTRIBUTIONS COUNT 1")
234
260
  end
235
261
  end
236
262
  end