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
@@ -3,8 +3,10 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe "Process admin manages meetings attachments", type: :feature do
6
- include_context "admin"
7
- let(:user) { process_admin }
6
+ let(:manifest_name) { "meetings" }
7
+ let!(:meeting) { create :meeting, scope: scope, feature: current_feature }
8
+
9
+ include_context "feature process admin"
8
10
 
9
11
  it_behaves_like "manage meetings attachments"
10
12
  end
@@ -3,13 +3,10 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe "Process admin manages meetings", type: :feature do
6
- include_context "admin"
7
- let(:user) { process_admin }
8
- 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 process admin"
9
10
 
10
- before do
11
- switch_to_host(organization.host)
12
- login_as user, scope: :user
13
- visit decidim_admin.manage_feature_path(participatory_process_id: participatory_process, feature_id: current_feature)
14
- end
11
+ it_behaves_like "manage meetings"
15
12
  end
@@ -6,9 +6,6 @@ RSpec.shared_examples "manage meetings attachments" do
6
6
  let(:attached_to) { meeting }
7
7
 
8
8
  before do
9
- switch_to_host(organization.host)
10
- login_as user, scope: :user
11
- visit decidim_admin.manage_feature_path(participatory_process_id: participatory_process, feature_id: current_feature)
12
9
  within find("tr", text: translated(meeting.title)) do
13
10
  find("a.action-icon--attachments").click
14
11
  end
@@ -21,7 +21,7 @@ RSpec.shared_examples "manage meetings" do
21
21
  within ".edit_meeting" do
22
22
  fill_in_i18n(
23
23
  :meeting_title,
24
- "#title-tabs",
24
+ "#meeting-title-tabs",
25
25
  en: "My new title",
26
26
  es: "Mi nuevo título",
27
27
  ca: "El meu nou títol"
@@ -58,28 +58,28 @@ RSpec.shared_examples "manage meetings" do
58
58
 
59
59
  fill_in_i18n(
60
60
  :meeting_title,
61
- "#title-tabs",
61
+ "#meeting-title-tabs",
62
62
  en: "My meeting",
63
63
  es: "Mi meeting",
64
64
  ca: "El meu meeting"
65
65
  )
66
66
  fill_in_i18n(
67
67
  :meeting_location,
68
- "#location-tabs",
68
+ "#meeting-location-tabs",
69
69
  en: "Location",
70
70
  es: "Location",
71
71
  ca: "Location"
72
72
  )
73
73
  fill_in_i18n(
74
74
  :meeting_location_hints,
75
- "#location_hints-tabs",
75
+ "#meeting-location_hints-tabs",
76
76
  en: "Location hints",
77
77
  es: "Location hints",
78
78
  ca: "Location hints"
79
79
  )
80
80
  fill_in_i18n_editor(
81
81
  :meeting_description,
82
- "#description-tabs",
82
+ "#meeting-description-tabs",
83
83
  en: "A longer description",
84
84
  es: "Descripción más larga",
85
85
  ca: "Descripció més llarga"
@@ -148,7 +148,7 @@ RSpec.shared_examples "manage meetings" do
148
148
  within ".edit_meeting" do
149
149
  fill_in_i18n(
150
150
  :meeting_title,
151
- "#title-tabs",
151
+ "#meeting-title-tabs",
152
152
  en: "My new title",
153
153
  es: "Mi nuevo título",
154
154
  ca: "El meu nou títol"
@@ -172,28 +172,28 @@ RSpec.shared_examples "manage meetings" do
172
172
 
173
173
  fill_in_i18n(
174
174
  :meeting_title,
175
- "#title-tabs",
175
+ "#meeting-title-tabs",
176
176
  en: "My meeting",
177
177
  es: "Mi meeting",
178
178
  ca: "El meu meeting"
179
179
  )
180
180
  fill_in_i18n(
181
181
  :meeting_location,
182
- "#location-tabs",
182
+ "#meeting-location-tabs",
183
183
  en: "Location",
184
184
  es: "Location",
185
185
  ca: "Location"
186
186
  )
187
187
  fill_in_i18n(
188
188
  :meeting_location_hints,
189
- "#location_hints-tabs",
189
+ "#meeting-location_hints-tabs",
190
190
  en: "Location hints",
191
191
  es: "Location hints",
192
192
  ca: "Location hints"
193
193
  )
194
194
  fill_in_i18n_editor(
195
195
  :meeting_description,
196
- "#description-tabs",
196
+ "#meeting-description-tabs",
197
197
  en: "A longer description",
198
198
  es: "Descripción más larga",
199
199
  ca: "Descripció més llarga"
@@ -241,7 +241,7 @@ RSpec.shared_examples "manage meetings" do
241
241
  within ".edit_close_meeting" do
242
242
  fill_in_i18n(
243
243
  :close_meeting_closing_report,
244
- "#closing_report-tabs",
244
+ "#close_meeting-closing_report-tabs",
245
245
  en: "The meeting was great!",
246
246
  es: "El encuentro fue genial",
247
247
  ca: "La trobada va ser genial"
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- ENV["ENGINE_NAME"] = File.dirname(File.dirname(__FILE__)).split("/").last
3
+ ENV["ENGINE_NAME"] = File.dirname(__dir__).split("/").last
4
+
4
5
  require "decidim/dev/test/base_spec_helper"
@@ -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/pages/engine", __FILE__)
7
+ ENGINE_ROOT = File.expand_path("..", __dir__)
8
+ ENGINE_PATH = File.expand_path("../lib/decidim/pages/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,22 @@
1
+ it:
2
+ decidim:
3
+ features:
4
+ pages:
5
+ name: Pagina
6
+ settings:
7
+ global:
8
+ comments_enabled: Commenti abilitati
9
+ step:
10
+ comments_blocked: Commenti bloccati
11
+ pages:
12
+ admin:
13
+ models:
14
+ components:
15
+ body: Corpo del testo
16
+ pages:
17
+ edit:
18
+ save: Aggiorna
19
+ title: Modifica la pagina
20
+ update:
21
+ invalid: C'è stato un errore durante il salvataggio della pagina.
22
+ success: OK, la pagina è stata salvata.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class CreateDecidimPages < ActiveRecord::Migration[5.0]
2
4
  def change
3
5
  create_table :decidim_pages_pages do |t|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddCommentableToPages < ActiveRecord::Migration[5.0]
2
4
  def change
3
5
  add_column :decidim_pages_pages, :commentable, :boolean, null: false, default: false
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class RemoveCommentableFlagFromPages < ActiveRecord::Migration[5.0]
2
4
  def change
3
5
  remove_column :decidim_pages_pages, :commentable
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class RemovePageFeatureTitles < ActiveRecord::Migration[5.0]
2
4
  def change
3
5
  remove_column :decidim_pages_pages, :title
@@ -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"
@@ -29,7 +29,7 @@ describe "Edit a page", type: :feature do
29
29
  }
30
30
 
31
31
  within "form.edit_page" do
32
- fill_in_i18n_editor(:page_body, "#body-tabs", new_body)
32
+ fill_in_i18n_editor(:page_body, "#page-body-tabs", new_body)
33
33
  find("*[type=submit]").click
34
34
  end
35
35
 
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- ENV["ENGINE_NAME"] = File.dirname(File.dirname(__FILE__)).split("/").last
4
- require "decidim/dev/test/base_spec_helper"
3
+ ENV["ENGINE_NAME"] = File.dirname(__dir__).split("/").last
5
4
 
6
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
5
+ require "decidim/dev/test/base_spec_helper"
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Proposals
5
+ # A command with all the business logic when a user unvotes a proposal.
6
+ class UnvoteProposal < Rectify::Command
7
+ # Public: Initializes the command.
8
+ #
9
+ # proposal - A Decidim::Proposals::Proposal object.
10
+ # current_user - The current user.
11
+ def initialize(proposal, current_user)
12
+ @proposal = proposal
13
+ @current_user = current_user
14
+ end
15
+
16
+ # Executes the command. Broadcasts these events:
17
+ #
18
+ # - :ok when everything is valid, together with the proposal.
19
+ # - :invalid if the form wasn't valid and we couldn't proceed.
20
+ #
21
+ # Returns nothing.
22
+ def call
23
+ destroy_proposal_vote
24
+ broadcast(:ok, @proposal)
25
+ end
26
+
27
+ private
28
+
29
+ def destroy_proposal_vote
30
+ @proposal.votes.where(author: @current_user).destroy_all
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Proposals
5
+ # A command with all the business logic when a user votes a proposal.
6
+ class VoteProposal < Rectify::Command
7
+ # Public: Initializes the command.
8
+ #
9
+ # proposal - A Decidim::Proposals::Proposal object.
10
+ # current_user - The current user.
11
+ def initialize(proposal, current_user)
12
+ @proposal = proposal
13
+ @current_user = current_user
14
+ end
15
+
16
+ # Executes the command. Broadcasts these events:
17
+ #
18
+ # - :ok when everything is valid, together with the proposal vote.
19
+ # - :invalid if the form wasn't valid and we couldn't proceed.
20
+ #
21
+ # Returns nothing.
22
+ def call
23
+ build_proposal_vote
24
+ return broadcast(:invalid) unless vote.valid?
25
+
26
+ vote.save!
27
+ broadcast(:ok, vote)
28
+ end
29
+
30
+ attr_reader :vote
31
+
32
+ private
33
+
34
+ def build_proposal_vote
35
+ @vote = @proposal.votes.build(author: @current_user)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -22,23 +22,27 @@ module Decidim
22
22
  def available_orders
23
23
  @available_orders ||= begin
24
24
  available_orders = %w(random recent)
25
- available_orders << "most_voted" if votes_visible?
25
+ available_orders << "most_voted" if most_voted_order_available?
26
26
  available_orders
27
27
  end
28
28
  end
29
29
 
30
30
  def default_order
31
- if current_settings.votes_blocked?
31
+ if order_by_votes?
32
32
  detect_order("most_voted")
33
33
  else
34
34
  "random"
35
35
  end
36
36
  end
37
37
 
38
- def votes_visible?
38
+ def most_voted_order_available?
39
39
  current_settings.votes_enabled? && !current_settings.votes_hidden?
40
40
  end
41
41
 
42
+ def order_by_votes?
43
+ most_voted_order_available? && current_settings.votes_blocked?
44
+ end
45
+
42
46
  # Returns: A random float number between -1 and 1 to be used as a random seed at the database.
43
47
  def random_seed
44
48
  @random_seed ||= (params[:random_seed] ? params[:random_seed].to_f : (rand * 2 - 1))
@@ -12,20 +12,30 @@ module Decidim
12
12
 
13
13
  def create
14
14
  authorize! :vote, proposal
15
-
16
- proposal.votes.create!(author: current_user)
17
15
  @from_proposals_list = params[:from_proposals_list] == "true"
18
- render :update_buttons_and_counters
16
+
17
+ VoteProposal.call(proposal, current_user) do
18
+ on(:ok) do
19
+ proposal.reload
20
+ render :update_buttons_and_counters
21
+ end
22
+
23
+ on(:invalid) do
24
+ render json: { error: I18n.t("proposal_votes.create.error", scope: "decidim.proposals") }, status: 422
25
+ end
26
+ end
19
27
  end
20
28
 
21
29
  def destroy
22
30
  authorize! :unvote, proposal
23
-
24
- proposal.votes.where(author: current_user).destroy_all
25
- proposal.reload
26
-
27
31
  @from_proposals_list = params[:from_proposals_list] == "true"
28
- render :update_buttons_and_counters
32
+
33
+ UnvoteProposal.call(proposal, current_user) do
34
+ on(:ok) do
35
+ proposal.reload
36
+ render :update_buttons_and_counters
37
+ end
38
+ end
29
39
  end
30
40
 
31
41
  private
@@ -87,9 +87,9 @@ module Decidim
87
87
  true
88
88
  end
89
89
 
90
- # Public: Overrides the `reported_content` Reportable concern method.
91
- def reported_content
92
- "<h3>#{title}</h3><p>#{body}</p>"
90
+ # Public: Overrides the `reported_content_url` Reportable concern method.
91
+ def reported_content_url
92
+ ResourceLocatorPresenter.new(self).url
93
93
  end
94
94
  end
95
95
  end
@@ -7,7 +7,6 @@ module Decidim
7
7
  belongs_to :proposal, foreign_key: "decidim_proposal_id", class_name: "Decidim::Proposals::Proposal", counter_cache: true
8
8
  belongs_to :author, foreign_key: "decidim_author_id", class_name: "Decidim::User"
9
9
 
10
- validates :proposal, :author, presence: true
11
10
  validates :proposal, uniqueness: { scope: :author }
12
11
  validate :author_and_proposal_same_organization
13
12
 
@@ -0,0 +1,23 @@
1
+ <div class="author-data__main">
2
+ <div class="author author--inline">
3
+ <span class="author__avatar author__avatar--small">
4
+ <%= image_tag proposal.author_avatar_url %>
5
+ </span>
6
+ <span class="author__name">
7
+ <% if proposal.author&.deleted? %>
8
+ <span class="label label--small label--basic">
9
+ <%= t('.deleted') %>
10
+ </span>
11
+ <% else %>
12
+ <%= proposal.author_name %>
13
+ <% end %>
14
+ </span>
15
+ <% if proposal.user_group && proposal.user_group.verified? %>
16
+ &nbsp;
17
+ <span class="label label--highlight label--small">
18
+ <%= t ".verified_user_group" %>
19
+ </span>
20
+ <% end %>
21
+ <%= l proposal.created_at, format: "%d/%m/%Y" %>
22
+ </div>
23
+ </div>
@@ -2,11 +2,11 @@
2
2
  <% resources.each do |proposal| %>
3
3
  <div class="card--list__item">
4
4
  <div class="card--list__text">
5
- <%= link_to decidim_resource_path(proposal) do %>
5
+ <%= link_to resource_locator(proposal).path do %>
6
6
  <%= icon "proposals", class: "card--list__icon", remove_icon_class: true %>
7
7
  <% end %>
8
8
  <div>
9
- <%= link_to decidim_resource_path(proposal), class: "card__link" do %>
9
+ <%= link_to resource_locator(proposal).path, class: "card__link" do %>
10
10
  <h5 class="card--list__heading"><%= proposal.title %></h5>
11
11
  <% end %>
12
12
  <div class="author">