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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddAdminParticipatoryProcessUserRoles < ActiveRecord::Migration[5.0]
2
4
  def change
3
5
  create_table :decidim_admin_participatory_process_user_roles do |t|
@@ -8,8 +10,8 @@ class AddAdminParticipatoryProcessUserRoles < ActiveRecord::Migration[5.0]
8
10
  end
9
11
 
10
12
  add_index :decidim_admin_participatory_process_user_roles,
11
- [:decidim_participatory_process_id, :decidim_user_id, :role],
12
- unique: true,
13
- name: "index_unique_user_and_process_role"
13
+ [:decidim_participatory_process_id, :decidim_user_id, :role],
14
+ unique: true,
15
+ name: "index_unique_user_and_process_role"
14
16
  end
15
17
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ChangeUserGroupsVerifiedToTimestamp < ActiveRecord::Migration[5.0]
2
4
  def change
3
5
  ActiveRecord::Base.transaction do
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- $LOAD_PATH.push File.expand_path("../lib", __FILE__)
2
+
3
+ $LOAD_PATH.push File.expand_path("lib", __dir__)
3
4
 
4
5
  # Maintain your gem's version:
5
6
  require_relative "../decidim-core/lib/decidim/core/version"
@@ -13,7 +13,7 @@ require "foundation_rails_helper"
13
13
  require "autoprefixer-rails"
14
14
  require "rectify"
15
15
 
16
- require_dependency File.join(File.dirname(__FILE__), "..", "..", "..", "app/models/decidim/admin/abilities/admin_user")
16
+ require_dependency File.join(__dir__, "..", "..", "..", "app/models/decidim/admin/abilities/admin_user")
17
17
 
18
18
  module Decidim
19
19
  module Admin
@@ -35,7 +35,7 @@ RSpec.shared_examples "manage attachments examples" do
35
35
  within ".new_participatory_process_attachment" do
36
36
  fill_in_i18n(
37
37
  :attachment_title,
38
- "#title-tabs",
38
+ "#attachment-title-tabs",
39
39
  en: "Very Important Document",
40
40
  es: "Documento Muy Importante",
41
41
  ca: "Document Molt Important"
@@ -43,7 +43,7 @@ RSpec.shared_examples "manage attachments examples" do
43
43
 
44
44
  fill_in_i18n(
45
45
  :attachment_description,
46
- "#description-tabs",
46
+ "#attachment-description-tabs",
47
47
  en: "This document contains important information",
48
48
  es: "Este documento contiene información importante",
49
49
  ca: "Aquest document conté informació important"
@@ -84,7 +84,7 @@ RSpec.shared_examples "manage attachments examples" do
84
84
  within ".edit_participatory_process_attachment" do
85
85
  fill_in_i18n(
86
86
  :attachment_title,
87
- "#title-tabs",
87
+ "#attachment-title-tabs",
88
88
  en: "This is a nice photo",
89
89
  es: "Una foto muy guay",
90
90
  ca: "Aquesta foto és ben xula"
@@ -6,7 +6,7 @@ describe Decidim::Admin::RejectUserGroup do
6
6
  let(:organization) { create :organization }
7
7
 
8
8
  describe "User group validation is pending" do
9
- let!(:user_group) { create(:user_group, users: [create(:user, organization: organization)]) }
9
+ let!(:user_group) { create(:user_group, decidim_organization_id: organization.id, users: [create(:user, organization: organization)]) }
10
10
 
11
11
  subject { described_class.new(user_group) }
12
12
 
@@ -33,7 +33,7 @@ describe Decidim::Admin::RejectUserGroup do
33
33
  end
34
34
 
35
35
  describe "User group is already rejected" do
36
- let!(:user_group) { create(:user_group, verified_at: Time.current, users: [create(:user, organization: organization)]) }
36
+ let!(:user_group) { create(:user_group, decidim_organization_id: organization.id, verified_at: Time.current, users: [create(:user, organization: organization)]) }
37
37
 
38
38
  subject { described_class.new(user_group) }
39
39
 
@@ -26,7 +26,7 @@ describe "Admin copy participatory process", type: :feature do
26
26
  within ".copy_participatory_process" do
27
27
  fill_in_i18n(
28
28
  :participatory_process_copy_title,
29
- "#title-tabs",
29
+ "#participatory_process_copy-title-tabs",
30
30
  en: "Copy participatory process",
31
31
  es: "Copia del proceso participativo",
32
32
  ca: "Còpia del procés participatiu"
@@ -48,7 +48,7 @@ describe "Admin copy participatory process", type: :feature do
48
48
  within ".copy_participatory_process" do
49
49
  fill_in_i18n(
50
50
  :participatory_process_copy_title,
51
- "#title-tabs",
51
+ "#participatory_process_copy-title-tabs",
52
52
  en: "Copy participatory process",
53
53
  es: "Copia del proceso participativo",
54
54
  ca: "Còpia del procés participatiu"
@@ -9,7 +9,7 @@ describe "Admin invite", type: :feature do
9
9
 
10
10
  let(:homepage_image_path) do
11
11
  File.expand_path(
12
- File.join(File.dirname(__FILE__), "..", "..", "..", "decidim-dev", "spec", "support", "city.jpeg")
12
+ File.join(__dir__, "..", "..", "..", "decidim-dev", "spec", "support", "city.jpeg")
13
13
  )
14
14
  end
15
15
 
@@ -30,7 +30,7 @@ describe "Admin manages features", type: :feature do
30
30
  within ".new_feature" do
31
31
  fill_in_i18n(
32
32
  :feature_name,
33
- "#name-tabs",
33
+ "#feature-name-tabs",
34
34
  en: "My feature",
35
35
  ca: "La meva funcionalitat",
36
36
  es: "Mi funcionalitat"
@@ -92,7 +92,7 @@ describe "Admin manages features", type: :feature do
92
92
  within ".edit_feature" do
93
93
  fill_in_i18n(
94
94
  :feature_name,
95
- "#name-tabs",
95
+ "#feature-name-tabs",
96
96
  en: "My updated feature",
97
97
  ca: "La meva funcionalitat actualitzada",
98
98
  es: "Mi funcionalidad actualizada"
@@ -29,7 +29,7 @@ describe "Admin manages newsletters", type: :feature do
29
29
  within ".new_newsletter" do
30
30
  fill_in_i18n(
31
31
  :newsletter_subject,
32
- "#subject-tabs",
32
+ "#newsletter-subject-tabs",
33
33
  en: "A fancy newsletter for %{name}",
34
34
  es: "Un correo electrónico muy chulo para %{name}",
35
35
  ca: "Un correu electrònic flipant per a %{name}"
@@ -37,7 +37,7 @@ describe "Admin manages newsletters", type: :feature do
37
37
 
38
38
  fill_in_i18n_editor(
39
39
  :newsletter_body,
40
- "#body-tabs",
40
+ "#newsletter-body-tabs",
41
41
  en: "Hello %{name}! Relevant content.",
42
42
  es: "Hola, %{name}! Contenido relevante.",
43
43
  ca: "Hola, %{name}! Contingut rellevant."
@@ -90,7 +90,7 @@ describe "Admin manages newsletters", type: :feature do
90
90
  within ".edit_newsletter" do
91
91
  fill_in_i18n(
92
92
  :newsletter_subject,
93
- "#subject-tabs",
93
+ "#newsletter-subject-tabs",
94
94
  en: "A fancy newsletter",
95
95
  es: "Un correo electrónico muy chulo",
96
96
  ca: "Un correu electrònic flipant"
@@ -98,7 +98,7 @@ describe "Admin manages newsletters", type: :feature do
98
98
 
99
99
  fill_in_i18n_editor(
100
100
  :newsletter_body,
101
- "#body-tabs",
101
+ "#newsletter-body-tabs",
102
102
  en: "Relevant content.",
103
103
  es: "Contenido relevante.",
104
104
  ca: "Contingut rellevant."
@@ -17,13 +17,13 @@ describe "Admin manages ogranization", type: :feature do
17
17
 
18
18
  fill_in "Name", with: "My super-uber organization"
19
19
 
20
- fill_in_i18n_editor :organization_description, "#description-tabs", en: "My own super description",
21
- es: "Mi gran descripción",
22
- ca: "La meva gran descripció"
20
+ fill_in_i18n_editor :organization_description, "#organization-description-tabs", en: "My own super description",
21
+ es: "Mi gran descripción",
22
+ ca: "La meva gran descripció"
23
23
 
24
- fill_in_i18n :organization_welcome_text, "#welcome_text-tabs", en: "My super welcome text",
25
- es: "Mi super texto de bienvenida",
26
- ca: "El meu súper text de benvinguda"
24
+ fill_in_i18n :organization_welcome_text, "#organization-welcome_text-tabs", en: "My super welcome text",
25
+ es: "Mi super texto de bienvenida",
26
+ ca: "El meu súper text de benvinguda"
27
27
 
28
28
  %w(Twitter Facebook Instagram YouTube GitHub).each do |network|
29
29
  click_link network
@@ -19,14 +19,14 @@ describe "Admin manage participatory process groups", type: :feature do
19
19
  within ".new_participatory_process_group" do
20
20
  fill_in_i18n(
21
21
  :participatory_process_group_name,
22
- "#name-tabs",
22
+ "#participatory_process_group-name-tabs",
23
23
  en: "My group",
24
24
  es: "Mi grupo",
25
25
  ca: "El meu grup"
26
26
  )
27
27
  fill_in_i18n_editor(
28
28
  :participatory_process_group_description,
29
- "#description-tabs",
29
+ "#participatory_process_group-description-tabs",
30
30
  en: "A longer description",
31
31
  es: "Descripción más larga",
32
32
  ca: "Descripció més llarga"
@@ -62,14 +62,14 @@ describe "Admin manage participatory process groups", type: :feature do
62
62
  within ".edit_participatory_process_group" do
63
63
  fill_in_i18n(
64
64
  :participatory_process_group_name,
65
- "#name-tabs",
65
+ "#participatory_process_group-name-tabs",
66
66
  en: "My old group",
67
67
  es: "Mi grupo antiguo",
68
68
  ca: "El meu grup antic"
69
69
  )
70
70
  fill_in_i18n_editor(
71
71
  :participatory_process_group_description,
72
- "#description-tabs",
72
+ "#participatory_process_group-description-tabs",
73
73
  en: "New description",
74
74
  es: "Nueva descripción",
75
75
  ca: "Nova descripció"
@@ -22,28 +22,28 @@ describe "Admin manage participatory processes", type: :feature do
22
22
  within ".new_participatory_process" do
23
23
  fill_in_i18n(
24
24
  :participatory_process_title,
25
- "#title-tabs",
25
+ "#participatory_process-title-tabs",
26
26
  en: "My participatory process",
27
27
  es: "Mi proceso participativo",
28
28
  ca: "El meu procés participatiu"
29
29
  )
30
30
  fill_in_i18n(
31
31
  :participatory_process_subtitle,
32
- "#subtitle-tabs",
32
+ "#participatory_process-subtitle-tabs",
33
33
  en: "Subtitle",
34
34
  es: "Subtítulo",
35
35
  ca: "Subtítol"
36
36
  )
37
37
  fill_in_i18n_editor(
38
38
  :participatory_process_short_description,
39
- "#short_description-tabs",
39
+ "#participatory_process-short_description-tabs",
40
40
  en: "Short description",
41
41
  es: "Descripción corta",
42
42
  ca: "Descripció curta"
43
43
  )
44
44
  fill_in_i18n_editor(
45
45
  :participatory_process_description,
46
- "#description-tabs",
46
+ "#participatory_process-description-tabs",
47
47
  en: "A longer description",
48
48
  es: "Descripción más larga",
49
49
  ca: "Descripció més llarga"
@@ -46,7 +46,7 @@ describe "Content pages", type: :feature do
46
46
 
47
47
  fill_in_i18n(
48
48
  :static_page_title,
49
- "#title-tabs",
49
+ "#static_page-title-tabs",
50
50
  en: "Welcome to Decidim",
51
51
  es: "Te damos la bienvendida a Decidim",
52
52
  ca: "Et donem la benvinguda a Decidim"
@@ -54,7 +54,7 @@ describe "Content pages", type: :feature do
54
54
 
55
55
  fill_in_i18n_editor(
56
56
  :static_page_content,
57
- "#content-tabs",
57
+ "#static_page-content-tabs",
58
58
  en: "<p>Some HTML content</p>",
59
59
  es: "<p>Contenido HTML</p>",
60
60
  ca: "<p>Contingut HTML</p>"
@@ -87,12 +87,12 @@ describe "Content pages", type: :feature do
87
87
  within ".edit_static_page" do
88
88
  fill_in_i18n(
89
89
  :static_page_title,
90
- "#title-tabs",
90
+ "#static_page-title-tabs",
91
91
  en: "Not welcomed anymore"
92
92
  )
93
93
  fill_in_i18n_editor(
94
94
  :static_page_content,
95
- "#content-tabs",
95
+ "#static_page-content-tabs",
96
96
  en: "This is the new <strong>content</strong>"
97
97
  )
98
98
  find("*[type=submit]").click
@@ -30,7 +30,7 @@ module Decidim
30
30
  let(:organization) { create(:organization) }
31
31
  let(:homepage_image_path) do
32
32
  File.expand_path(
33
- File.join(File.dirname(__FILE__), "..", "..", "..", "decidim-dev", "spec", "support", "city.jpeg")
33
+ File.join(__dir__, "..", "..", "..", "decidim-dev", "spec", "support", "city.jpeg")
34
34
  )
35
35
  end
36
36
  let(:attributes) do
@@ -15,14 +15,14 @@ RSpec.shared_examples "manage process categories examples" do
15
15
  within ".new_participatory_process_category" do
16
16
  fill_in_i18n(
17
17
  :category_name,
18
- "#name-tabs",
18
+ "#category-name-tabs",
19
19
  en: "My category",
20
20
  es: "Mi categoría",
21
21
  ca: "La meva categoria"
22
22
  )
23
23
  fill_in_i18n_editor(
24
24
  :category_description,
25
- "#description-tabs",
25
+ "#category-description-tabs",
26
26
  en: "Description",
27
27
  es: "Descripción",
28
28
  ca: "Descripció"
@@ -50,7 +50,7 @@ RSpec.shared_examples "manage process categories examples" do
50
50
  within ".edit_participatory_process_category" do
51
51
  fill_in_i18n(
52
52
  :category_name,
53
- "#name-tabs",
53
+ "#category-name-tabs",
54
54
  en: "My new name",
55
55
  es: "Mi nuevo nombre",
56
56
  ca: "El meu nou nom"
@@ -71,44 +71,59 @@ RSpec.shared_examples "manage process categories examples" do
71
71
  context "deleting a category" do
72
72
  let!(:category2) { create(:category, participatory_process: participatory_process) }
73
73
 
74
- context "when the category has no subcategories" do
75
- before do
76
- visit current_path
77
- end
74
+ context "when the category has no associated content" do
75
+ context "when the category has no subcategories" do
76
+ before do
77
+ visit current_path
78
+ end
79
+
80
+ it "deletes a category" do
81
+ within find("tr", text: translated(category2.name)) do
82
+ page.find("a.action-icon--remove").click
83
+ end
78
84
 
79
- it "deletes a category" do
80
- within find("tr", text: translated(category2.name)) do
81
- page.find("a.action-icon--remove").click
85
+ within ".callout-wrapper" do
86
+ expect(page).to have_content("successfully")
87
+ end
88
+
89
+ within "#categories table" do
90
+ expect(page).not_to have_content(translated(category2.name))
91
+ end
82
92
  end
93
+ end
94
+
95
+ context "when the category has some subcategories" do
96
+ let!(:subcategory) { create(:subcategory, parent: category2) }
83
97
 
84
- within ".callout-wrapper" do
85
- expect(page).to have_content("successfully")
98
+ before do
99
+ visit current_path
86
100
  end
87
101
 
88
- within "#categories table" do
89
- expect(page).not_to have_content(translated(category2.name))
102
+ it "deletes a category" do
103
+ within find("tr", text: translated(category2.name)) do
104
+ page.find("a.action-icon--remove").click
105
+ end
106
+
107
+ within ".callout-wrapper" do
108
+ expect(page).to have_content("error deleting")
109
+ end
110
+
111
+ within "#categories table" do
112
+ expect(page).to have_content(translated(category2.name))
113
+ end
90
114
  end
91
115
  end
92
116
  end
93
117
 
94
- context "when the category has some subcategories" do
95
- let!(:subcategory) { create(:subcategory, parent: category2) }
118
+ context "when the category has associated content" do
119
+ let!(:feature) { create(:feature, participatory_process: participatory_process) }
120
+ let!(:dummy_resource) { create(:dummy_resource, feature: feature, category: category) }
96
121
 
97
- before do
122
+ it "cannot delete it" do
98
123
  visit current_path
99
- end
100
-
101
- it "deletes a category" do
102
- within find("tr", text: translated(category2.name)) do
103
- page.find("a.action-icon--remove").click
104
- end
105
-
106
- within ".callout-wrapper" do
107
- expect(page).to have_content("error deleting")
108
- end
109
124
 
110
- within "#categories table" do
111
- expect(page).to have_content(translated(category2.name))
125
+ within find("tr", text: translated(category.name)) do
126
+ expect(page).not_to have_selector("a.action-icon--remove")
112
127
  end
113
128
  end
114
129
  end
@@ -22,14 +22,14 @@ RSpec.shared_examples "manage process steps examples" do
22
22
 
23
23
  fill_in_i18n(
24
24
  :participatory_process_step_title,
25
- "#title-tabs",
25
+ "#participatory_process_step-title-tabs",
26
26
  en: "My participatory process step",
27
27
  es: "Mi fase de proceso participativo",
28
28
  ca: "La meva fase de procés participatiu"
29
29
  )
30
30
  fill_in_i18n_editor(
31
31
  :participatory_process_step_description,
32
- "#description-tabs",
32
+ "#participatory_process_step-description-tabs",
33
33
  en: "A longer description",
34
34
  es: "Descripción más larga",
35
35
  ca: "Descripció més llarga"
@@ -65,7 +65,7 @@ RSpec.shared_examples "manage process steps examples" do
65
65
  within ".edit_participatory_process_step" do
66
66
  fill_in_i18n(
67
67
  :participatory_process_step_title,
68
- "#title-tabs",
68
+ "#participatory_process_step-title-tabs",
69
69
  en: "My new title",
70
70
  es: "Mi nuevo título",
71
71
  ca: "El meu nou títol"
@@ -34,7 +34,7 @@ RSpec.shared_examples "manage processes examples" do
34
34
 
35
35
  fill_in_i18n(
36
36
  :participatory_process_title,
37
- "#title-tabs",
37
+ "#participatory_process-title-tabs",
38
38
  en: "My new title",
39
39
  es: "Mi nuevo título",
40
40
  ca: "El meu nou títol"