decidim 0.0.5 → 0.0.6

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 (360) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc.json +2 -1
  3. data/Gemfile.lock +121 -112
  4. data/README.md +28 -10
  5. data/Rakefile +1 -1
  6. data/decidim-admin/README.md +1 -1
  7. data/decidim-admin/app/assets/stylesheets/decidim/admin/_sidebar.scss +30 -1
  8. data/decidim-admin/app/assets/stylesheets/decidim/admin/_tables.scss +3 -0
  9. data/decidim-admin/app/assets/stylesheets/decidim/admin/application.scss +3 -0
  10. data/decidim-admin/app/commands/decidim/admin/create_participatory_process.rb +4 -1
  11. data/decidim-admin/app/commands/decidim/admin/create_participatory_process_admin.rb +26 -7
  12. data/decidim-admin/app/commands/decidim/admin/create_participatory_process_group.rb +54 -0
  13. data/decidim-admin/app/commands/decidim/admin/create_participatory_process_step.rb +0 -1
  14. data/decidim-admin/app/commands/decidim/admin/destroy_participatory_process_step.rb +3 -1
  15. data/decidim-admin/app/commands/decidim/admin/hide_resource.rb +37 -0
  16. data/decidim-admin/app/commands/decidim/admin/reorder_participatory_process_steps.rb +1 -0
  17. data/decidim-admin/app/commands/decidim/admin/unreport_resource.rb +33 -0
  18. data/decidim-admin/app/commands/decidim/admin/update_participatory_process.rb +4 -2
  19. data/decidim-admin/app/commands/decidim/admin/update_participatory_process_group.rb +57 -0
  20. data/decidim-admin/app/commands/decidim/admin/update_participatory_process_step.rb +1 -2
  21. data/decidim-admin/app/controllers/decidim/admin/application_controller.rb +4 -0
  22. data/decidim-admin/app/controllers/decidim/admin/categories_controller.rb +1 -1
  23. data/decidim-admin/app/controllers/decidim/admin/feature_permissions_controller.rb +2 -2
  24. data/decidim-admin/{lib → app/controllers}/decidim/admin/features/base_controller.rb +0 -0
  25. data/decidim-admin/app/controllers/decidim/admin/moderations_controller.rb +64 -0
  26. data/decidim-admin/app/controllers/decidim/admin/newsletters_controller.rb +1 -1
  27. data/decidim-admin/app/controllers/decidim/admin/participatory_process_groups_controller.rb +86 -0
  28. data/decidim-admin/app/controllers/decidim/admin/participatory_process_publications_controller.rb +1 -1
  29. data/decidim-admin/app/controllers/decidim/admin/participatory_process_step_activations_controller.rb +1 -1
  30. data/decidim-admin/app/controllers/decidim/admin/participatory_process_step_ordering_controller.rb +1 -1
  31. data/decidim-admin/app/controllers/decidim/admin/participatory_process_steps_controller.rb +1 -1
  32. data/decidim-admin/app/controllers/decidim/admin/participatory_process_user_roles_controller.rb +3 -3
  33. data/decidim-admin/app/controllers/decidim/admin/participatory_processes_controller.rb +3 -2
  34. data/decidim-admin/app/forms/decidim/admin/organization_form.rb +1 -0
  35. data/decidim-admin/app/forms/decidim/admin/participatory_process_form.rb +12 -1
  36. data/decidim-admin/app/forms/decidim/admin/participatory_process_group_form.rb +23 -0
  37. data/decidim-admin/app/forms/decidim/admin/participatory_process_step_form.rb +0 -1
  38. data/decidim-admin/app/forms/decidim/admin/participatory_process_user_role_form.rb +5 -1
  39. data/decidim-admin/app/helpers/decidim/admin/application_helper.rb +1 -0
  40. data/decidim-admin/app/helpers/decidim/admin/process_groups_for_select_helper.rb +20 -0
  41. data/decidim-admin/app/helpers/decidim/admin/processes_for_select_helper.rb +22 -0
  42. data/decidim-admin/app/models/decidim/admin/abilities/admin_user.rb +2 -0
  43. data/decidim-admin/app/models/decidim/admin/abilities/participatory_process_admin.rb +4 -0
  44. data/decidim-admin/app/models/decidim/admin/participatory_process_user_role.rb +1 -1
  45. data/decidim-admin/app/queries/decidim/admin/process_admins.rb +43 -0
  46. data/decidim-admin/app/views/decidim/admin/moderations/index.html.erb +65 -0
  47. data/decidim-admin/app/views/decidim/admin/organization/_form.html.erb +4 -0
  48. data/decidim-admin/app/views/decidim/admin/participatory_process_groups/_form.html.erb +17 -0
  49. data/decidim-admin/app/views/decidim/admin/participatory_process_groups/edit.html.erb +13 -0
  50. data/decidim-admin/app/views/decidim/admin/participatory_process_groups/index.html.erb +38 -0
  51. data/decidim-admin/app/views/decidim/admin/participatory_process_groups/new.html.erb +11 -0
  52. data/decidim-admin/app/views/decidim/admin/participatory_process_groups/show.html.erb +23 -0
  53. data/decidim-admin/app/views/decidim/admin/participatory_process_steps/_form.html.erb +0 -4
  54. data/decidim-admin/app/views/decidim/admin/participatory_process_steps/show.html.erb +4 -5
  55. data/decidim-admin/app/views/decidim/admin/participatory_process_user_roles/index.html.erb +27 -24
  56. data/decidim-admin/app/views/decidim/admin/participatory_processes/_form.html.erb +10 -1
  57. data/decidim-admin/app/views/decidim/admin/participatory_processes/show.html.erb +15 -1
  58. data/decidim-admin/app/views/layouts/decidim/admin/_header.html.erb +1 -0
  59. data/decidim-admin/app/views/layouts/decidim/admin/_language_chooser.html.erb +14 -0
  60. data/decidim-admin/app/views/layouts/decidim/admin/_sidebar.html.erb +2 -0
  61. data/decidim-admin/app/views/layouts/decidim/admin/participatory_process.html.erb +5 -0
  62. data/decidim-admin/config/i18n-tasks.yml +3 -1
  63. data/decidim-admin/config/locales/ca.yml +83 -3
  64. data/decidim-admin/config/locales/en.yml +81 -1
  65. data/decidim-admin/config/locales/es.yml +81 -1
  66. data/decidim-admin/config/locales/eu.yml +340 -1
  67. data/decidim-admin/config/locales/fi.yml +464 -0
  68. data/decidim-admin/config/routes.rb +8 -0
  69. data/decidim-admin/db/seeds.rb +1 -1
  70. data/decidim-admin/lib/decidim/admin/engine.rb +1 -0
  71. data/decidim-admin/spec/commands/create_participatory_process_admin_spec.rb +10 -4
  72. data/decidim-admin/spec/commands/create_participatory_process_spec.rb +6 -1
  73. data/decidim-admin/spec/commands/hide_resource_spec.rb +41 -0
  74. data/decidim-admin/spec/commands/unreport_resource_spec.rb +42 -0
  75. data/decidim-admin/spec/commands/update_organization_spec.rb +1 -0
  76. data/decidim-admin/spec/features/admin_invite_spec.rb +1 -0
  77. data/decidim-admin/spec/features/admin_manages_feature_permissions_spec.rb +1 -1
  78. data/decidim-admin/spec/features/admin_manages_organization_admins_spec.rb +1 -1
  79. data/decidim-admin/spec/features/admin_manages_participatory_process_groups_spec.rb +107 -0
  80. data/decidim-admin/spec/features/admin_manages_participatory_processes_spec.rb +5 -0
  81. data/decidim-admin/spec/features/admin_manages_user_groups_spec.rb +11 -4
  82. data/decidim-admin/spec/forms/organization_form_spec.rb +2 -0
  83. data/decidim-admin/spec/forms/participatory_process_group_form_spec.rb +86 -0
  84. data/decidim-admin/spec/forms/participatory_process_step_form_spec.rb +0 -10
  85. data/decidim-admin/spec/forms/participatory_process_user_role_form_spec.rb +4 -0
  86. data/decidim-admin/spec/models/abilities/admin_user_spec.rb +3 -2
  87. data/decidim-admin/spec/models/abilities/participatory_process_admin_spec.rb +7 -0
  88. data/decidim-admin/spec/queries/process_admins_spec.rb +23 -0
  89. data/decidim-admin/spec/shared/manage_process_admins_examples.rb +2 -0
  90. data/decidim-admin/spec/shared/manage_process_steps_examples.rb +0 -10
  91. data/decidim-api/decidim-api.gemspec +1 -1
  92. data/decidim-budgets/app/commands/decidim/budgets/add_line_item.rb +9 -1
  93. data/decidim-budgets/app/controllers/decidim/budgets/admin/projects_controller.rb +13 -1
  94. data/decidim-budgets/app/forms/decidim/budgets/admin/project_form.rb +5 -1
  95. data/decidim-budgets/app/models/decidim/budgets/order.rb +3 -0
  96. data/decidim-budgets/app/models/decidim/budgets/project.rb +9 -1
  97. data/decidim-budgets/app/services/decidim/budgets/project_search.rb +0 -5
  98. data/decidim-budgets/app/views/decidim/budgets/admin/projects/_form.html.erb +5 -3
  99. data/decidim-budgets/app/views/decidim/budgets/admin/projects/index.html.erb +9 -0
  100. data/decidim-budgets/app/views/decidim/budgets/line_items/update_budget.js.erb +1 -0
  101. data/decidim-budgets/app/views/decidim/budgets/projects/_filters.html.erb +2 -2
  102. data/decidim-budgets/app/views/decidim/budgets/projects/_filters_small_view.html.erb +18 -0
  103. data/decidim-budgets/app/views/decidim/budgets/projects/_project.html.erb +17 -2
  104. data/decidim-budgets/app/views/decidim/budgets/projects/_project_budget_button.html.erb +2 -2
  105. data/decidim-budgets/app/views/decidim/budgets/projects/_tags.html.erb +1 -1
  106. data/decidim-budgets/app/views/decidim/budgets/projects/index.html.erb +2 -1
  107. data/decidim-budgets/app/views/decidim/budgets/projects/show.html.erb +7 -1
  108. data/decidim-budgets/config/i18n-tasks.yml +1 -0
  109. data/decidim-budgets/config/locales/ca.yml +18 -3
  110. data/decidim-budgets/config/locales/en.yml +15 -0
  111. data/decidim-budgets/config/locales/es.yml +17 -2
  112. data/decidim-budgets/config/locales/eu.yml +97 -1
  113. data/decidim-budgets/config/locales/fi.yml +123 -0
  114. data/decidim-budgets/db/migrate/20170215132708_add_reference_to_projects.rb +7 -0
  115. data/decidim-budgets/lib/decidim/budgets/feature.rb +4 -2
  116. data/decidim-budgets/lib/decidim/budgets/seeds/Exampledocument.pdf +0 -0
  117. data/decidim-budgets/lib/decidim/budgets/seeds/city.jpeg +0 -0
  118. data/decidim-budgets/lib/decidim/budgets/test/factories.rb +21 -1
  119. data/decidim-budgets/spec/commands/add_line_item_spec.rb +10 -1
  120. data/decidim-budgets/spec/features/comments_spec.rb +10 -0
  121. data/decidim-budgets/spec/features/orders_spec.rb +47 -3
  122. data/decidim-budgets/spec/models/project_spec.rb +16 -1
  123. data/decidim-budgets/spec/services/project_search_spec.rb +9 -0
  124. data/decidim-budgets/spec/shared/admin_shared_context.rb +1 -1
  125. data/decidim-budgets/spec/shared/manage_projects_examples.rb +22 -0
  126. data/decidim-comments/app/assets/javascripts/decidim/comments/bundle.js +0 -0
  127. data/decidim-comments/app/commands/decidim/comments/create_comment.rb +9 -1
  128. data/decidim-comments/app/frontend/application/icon.component.jsx +1 -1
  129. data/decidim-comments/app/frontend/comments/add_comment_form.component.jsx +11 -10
  130. data/decidim-comments/app/frontend/comments/add_comment_form.component.test.jsx +5 -5
  131. data/decidim-comments/app/frontend/comments/comment.component.jsx +91 -1
  132. data/decidim-comments/app/frontend/comments/comment.component.test.jsx +18 -0
  133. data/decidim-comments/app/frontend/comments/comment_data.fragment.graphql +2 -0
  134. data/decidim-comments/app/frontend/comments/comment_order_selector.component.jsx +4 -5
  135. data/decidim-comments/app/frontend/comments/comments.query.graphql +1 -0
  136. data/decidim-comments/app/mailers/decidim/comments/comment_notification_mailer.rb +8 -0
  137. data/decidim-comments/app/models/decidim/comments/abilities/admin_user.rb +25 -0
  138. data/decidim-comments/app/models/decidim/comments/abilities/process_admin_user.rb +33 -0
  139. data/decidim-comments/app/models/decidim/comments/comment.rb +7 -1
  140. data/decidim-comments/app/models/decidim/comments/comment_vote.rb +3 -1
  141. data/decidim-comments/app/queries/decidim/comments/sorted_comments.rb +1 -0
  142. data/decidim-comments/app/views/decidim/comments/comment_notification_mailer/comment_created.html.erb +1 -1
  143. data/decidim-comments/app/views/decidim/comments/comment_notification_mailer/reply_created.html.erb +1 -1
  144. data/decidim-comments/config/locales/ca.yml +11 -0
  145. data/decidim-comments/config/locales/en.yml +12 -2
  146. data/decidim-comments/config/locales/es.yml +11 -0
  147. data/decidim-comments/config/locales/eu.yml +38 -1
  148. data/decidim-comments/config/locales/fi.yml +66 -0
  149. data/decidim-comments/lib/decidim/comments.rb +2 -0
  150. data/decidim-comments/lib/decidim/comments/admin.rb +9 -0
  151. data/decidim-comments/lib/decidim/comments/admin_engine.rb +22 -0
  152. data/decidim-comments/lib/decidim/comments/api/comment_type.rb +12 -0
  153. data/decidim-comments/lib/decidim/comments/commentable.rb +0 -2
  154. data/decidim-comments/lib/decidim/comments/engine.rb +1 -0
  155. data/decidim-comments/lib/decidim/comments/test/factories.rb +3 -0
  156. data/decidim-comments/spec/commands/create_comment_spec.rb +11 -0
  157. data/decidim-comments/spec/features/admin_manages_comments_spec.rb +23 -0
  158. data/decidim-comments/spec/features/comments_spec.rb +5 -173
  159. data/decidim-comments/spec/features/process_admin_manages_comments_spec.rb +24 -0
  160. data/decidim-comments/spec/features/report_comment_spec.rb +20 -0
  161. data/decidim-comments/spec/models/abilities/admin_user_spec.rb +20 -0
  162. data/decidim-comments/spec/models/abilities/process_admin_user_spec.rb +21 -0
  163. data/decidim-comments/spec/models/comment_spec.rb +1 -0
  164. data/decidim-comments/spec/queries/sorted_comments_spec.rb +11 -0
  165. data/decidim-comments/spec/shared/admin_shared_context.rb +11 -0
  166. data/decidim-comments/spec/types/comment_type_spec.rb +19 -0
  167. data/decidim-dev/config/locales/ca.yml +1 -1
  168. data/decidim-dev/config/locales/en.yml +1 -1
  169. data/decidim-dev/config/locales/es.yml +1 -1
  170. data/decidim-dev/config/locales/eu.yml +1 -1
  171. data/decidim-dev/config/locales/fi.yml +5 -0
  172. data/decidim-dev/decidim-dev.gemspec +3 -1
  173. data/decidim-dev/lib/decidim/dev/test/base_spec_helper.rb +1 -28
  174. data/decidim-dev/lib/decidim/dev/test/rspec_support/feature.rb +11 -0
  175. data/{decidim-meetings/spec/support → decidim-dev/lib/decidim/dev/test/rspec_support}/geocoder.rb +5 -1
  176. data/decidim-dev/lib/decidim/dev/test/rspec_support/html_matchers.rb +6 -0
  177. data/decidim-dev/lib/decidim/dev/test/rspec_support/i18n.rb +3 -0
  178. data/decidim-dev/lib/decidim/dev/test/rspec_support/webmock.rb +2 -0
  179. data/decidim-dev/lib/decidim/dev/test/spec_helper.rb +37 -0
  180. data/decidim-dev/lib/generators/decidim/dummy_generator.rb +5 -0
  181. data/decidim-dev/lib/generators/decidim/templates/autoprefixer.yml +8 -0
  182. data/decidim-dev/lib/generators/decidim/templates/autoprefixer_initializer.rb +16 -0
  183. data/decidim-meetings/app/commands/decidim/meetings/admin/create_meeting.rb +6 -17
  184. data/decidim-meetings/app/commands/decidim/meetings/admin/update_meeting.rb +6 -7
  185. data/decidim-meetings/app/controllers/decidim/meetings/application_controller.rb +1 -0
  186. data/decidim-meetings/app/controllers/decidim/meetings/meetings_controller.rb +14 -9
  187. data/decidim-meetings/app/forms/decidim/meetings/admin/meeting_form.rb +12 -1
  188. data/decidim-meetings/app/helpers/decidim/meetings/admin/application_helper.rb +1 -1
  189. data/decidim-meetings/app/helpers/decidim/meetings/application_helper.rb +2 -1
  190. data/decidim-meetings/app/helpers/decidim/meetings/map_helper.rb +10 -32
  191. data/decidim-meetings/app/models/decidim/meetings/meeting.rb +2 -1
  192. data/decidim-meetings/app/services/decidim/meetings/meeting_search.rb +0 -5
  193. data/decidim-meetings/app/views/decidim/meetings/admin/meetings/_form.html.erb +5 -3
  194. data/decidim-meetings/app/views/decidim/meetings/meetings/_filters.html.erb +5 -3
  195. data/decidim-meetings/app/views/decidim/meetings/meetings/_filters_small_view.html.erb +1 -1
  196. data/decidim-meetings/app/views/decidim/meetings/meetings/_meetings.html.erb +11 -1
  197. data/decidim-meetings/app/views/decidim/meetings/meetings/_tags.html.erb +1 -1
  198. data/decidim-meetings/app/views/decidim/meetings/meetings/index.html.erb +27 -32
  199. data/decidim-meetings/app/views/decidim/meetings/meetings/index.js.erb +2 -2
  200. data/decidim-meetings/app/views/decidim/meetings/meetings/show.html.erb +2 -15
  201. data/decidim-meetings/config/i18n-tasks.yml +1 -1
  202. data/decidim-meetings/config/locales/ca.yml +18 -3
  203. data/decidim-meetings/config/locales/en.yml +20 -3
  204. data/decidim-meetings/config/locales/es.yml +18 -3
  205. data/decidim-meetings/config/locales/eu.yml +75 -1
  206. data/decidim-meetings/config/locales/fi.yml +98 -0
  207. data/decidim-meetings/db/migrate/20170215132546_add_reference_to_meetings.rb +7 -0
  208. data/decidim-meetings/decidim-meetings.gemspec +0 -2
  209. data/decidim-meetings/lib/decidim/meetings/admin_engine.rb +0 -26
  210. data/decidim-meetings/lib/decidim/meetings/list_engine.rb +1 -9
  211. data/decidim-meetings/spec/commands/create_meeting_spec.rb +6 -14
  212. data/decidim-meetings/spec/commands/update_meeting_spec.rb +10 -29
  213. data/decidim-meetings/spec/features/explore_meetings_spec.rb +37 -13
  214. data/decidim-meetings/spec/forms/meeting_form_spec.rb +15 -1
  215. data/decidim-meetings/spec/models/meeting_spec.rb +1 -0
  216. data/decidim-meetings/spec/services/meeting_search_spec.rb +9 -0
  217. data/decidim-meetings/spec/shared/admin_shared_context.rb +1 -1
  218. data/decidim-meetings/spec/shared/manage_meetings_examples.rb +97 -1
  219. data/decidim-meetings/spec/spec_helper.rb +0 -5
  220. data/decidim-pages/app/commands/decidim/pages/admin/update_page.rb +1 -4
  221. data/decidim-pages/app/commands/decidim/pages/create_page.rb +1 -4
  222. data/decidim-pages/app/forms/decidim/pages/admin/page_form.rb +0 -3
  223. data/decidim-pages/app/models/decidim/pages/page.rb +8 -12
  224. data/decidim-pages/app/views/decidim/pages/admin/pages/_form.html.erb +0 -1
  225. data/decidim-pages/app/views/decidim/pages/application/show.html.erb +0 -1
  226. data/decidim-pages/config/locales/ca.yml +0 -1
  227. data/decidim-pages/config/locales/en.yml +0 -1
  228. data/decidim-pages/config/locales/es.yml +0 -1
  229. data/decidim-pages/config/locales/eu.yml +14 -1
  230. data/decidim-pages/config/locales/fi.yml +22 -0
  231. data/decidim-pages/db/migrate/20170220091402_remove_page_feature_titles.rb +5 -0
  232. data/decidim-pages/lib/decidim/pages/engine.rb +1 -0
  233. data/decidim-pages/lib/decidim/pages/feature.rb +4 -1
  234. data/decidim-pages/spec/commands/create_page_spec.rb +1 -2
  235. data/decidim-pages/spec/commands/update_page_spec.rb +0 -1
  236. data/decidim-pages/spec/factories.rb +6 -1
  237. data/decidim-pages/spec/features/admin_spec.rb +1 -17
  238. data/decidim-pages/spec/features/comments_spec.rb +10 -0
  239. data/decidim-pages/spec/features/page_show_spec.rb +1 -10
  240. data/decidim-pages/spec/forms/page_form_spec.rb +0 -21
  241. data/decidim-pages/spec/models/page_spec.rb +2 -4
  242. data/decidim-proposals/app/commands/decidim/proposals/admin/create_proposal.rb +4 -1
  243. data/decidim-proposals/app/commands/decidim/proposals/create_proposal.rb +4 -1
  244. data/decidim-proposals/app/controllers/decidim/proposals/admin/proposals_controller.rb +4 -0
  245. data/decidim-proposals/app/controllers/decidim/proposals/proposals_controller.rb +12 -6
  246. data/decidim-proposals/app/forms/decidim/proposals/admin/proposal_form.rb +13 -2
  247. data/decidim-proposals/app/forms/decidim/proposals/proposal_form.rb +13 -2
  248. data/decidim-proposals/app/helpers/decidim/proposals/application_helper.rb +3 -0
  249. data/decidim-proposals/app/helpers/decidim/proposals/map_helper.rb +19 -0
  250. data/decidim-proposals/app/helpers/decidim/proposals/proposal_order_helper.rb +16 -0
  251. data/decidim-proposals/app/models/decidim/proposals/abilities/admin_user.rb +2 -0
  252. data/decidim-proposals/app/models/decidim/proposals/abilities/current_user.rb +3 -0
  253. data/decidim-proposals/app/models/decidim/proposals/abilities/process_admin_user.rb +2 -1
  254. data/decidim-proposals/app/models/decidim/proposals/proposal.rb +12 -3
  255. data/decidim-proposals/app/services/decidim/proposals/proposal_search.rb +0 -5
  256. data/decidim-proposals/app/views/decidim/proposals/admin/proposal_answers/edit.html.erb +1 -1
  257. data/decidim-proposals/app/views/decidim/proposals/admin/proposals/_form.html.erb +8 -2
  258. data/decidim-proposals/app/views/decidim/proposals/admin/proposals/index.html.erb +12 -14
  259. data/decidim-proposals/app/views/decidim/proposals/proposals/_filters.html.erb +2 -2
  260. data/decidim-proposals/app/views/decidim/proposals/proposals/_filters_small_view.html.erb +1 -1
  261. data/decidim-proposals/app/views/decidim/proposals/proposals/_proposals.html.erb +1 -1
  262. data/decidim-proposals/app/views/decidim/proposals/proposals/_tags.html.erb +1 -1
  263. data/decidim-proposals/app/views/decidim/proposals/proposals/index.html.erb +27 -0
  264. data/decidim-proposals/app/views/decidim/proposals/proposals/new.html.erb +8 -2
  265. data/decidim-proposals/app/views/decidim/proposals/proposals/show.html.erb +18 -1
  266. data/decidim-proposals/config/i18n-tasks.yml +3 -1
  267. data/decidim-proposals/config/locales/ca.yml +11 -8
  268. data/decidim-proposals/config/locales/en.yml +9 -6
  269. data/decidim-proposals/config/locales/es.yml +14 -11
  270. data/decidim-proposals/config/locales/eu.yml +119 -1
  271. data/decidim-proposals/config/locales/fi.yml +143 -0
  272. data/decidim-proposals/db/migrate/20170215113152_create_proposal_reports.rb +14 -0
  273. data/decidim-proposals/db/migrate/20170215131720_add_report_count_to_proposals.rb +5 -0
  274. data/decidim-proposals/db/migrate/20170215132030_add_reference_to_proposals.rb +7 -0
  275. data/decidim-proposals/db/migrate/20170220152416_add_hidden_at_to_proposals.rb +5 -0
  276. data/decidim-proposals/db/migrate/20170228105156_add_geolocalization_fields_to_proposals.rb +7 -0
  277. data/decidim-proposals/db/migrate/20170307085300_migrate_proposal_reports_data_to_reports.rb +26 -0
  278. data/decidim-proposals/decidim-proposals.gemspec +1 -1
  279. data/decidim-proposals/lib/decidim/proposals/feature.rb +4 -3
  280. data/decidim-proposals/lib/decidim/proposals/test/factories.rb +8 -0
  281. data/decidim-proposals/spec/features/admin_manages_proposals_spec.rb +3 -0
  282. data/decidim-proposals/spec/features/comments_spec.rb +11 -0
  283. data/decidim-proposals/spec/features/process_admin_manages_proposals_spec.rb +3 -0
  284. data/decidim-proposals/spec/features/proposals_spec.rb +98 -15
  285. data/decidim-proposals/spec/features/report_proposal_spec.rb +19 -0
  286. data/decidim-proposals/spec/helpers/proposal_order_helper_spec.rb +30 -0
  287. data/decidim-proposals/spec/models/decidim/proposals/proposal_spec.rb +2 -0
  288. data/decidim-proposals/spec/services/decidim/proposals/proposal_search_spec.rb +9 -0
  289. data/decidim-proposals/spec/shared/create_proposal_examples.rb +29 -2
  290. data/decidim-proposals/spec/shared/manage_proposals_examples.rb +95 -26
  291. data/decidim-proposals/spec/shared/proposal_form_examples.rb +29 -1
  292. data/decidim-results/app/forms/decidim/results/admin/result_form.rb +9 -1
  293. data/decidim-results/app/models/decidim/results/result.rb +2 -1
  294. data/decidim-results/app/services/decidim/results/result_search.rb +0 -5
  295. data/decidim-results/app/views/decidim/results/admin/results/_form.html.erb +5 -3
  296. data/decidim-results/app/views/decidim/results/results/_filters.html.erb +2 -2
  297. data/decidim-results/app/views/decidim/results/results/_filters_small_view.html.erb +18 -0
  298. data/decidim-results/app/views/decidim/results/results/_tags.html.erb +1 -1
  299. data/decidim-results/app/views/decidim/results/results/index.html.erb +1 -0
  300. data/decidim-results/app/views/decidim/results/results/show.html.erb +1 -0
  301. data/decidim-results/config/i18n-tasks.yml +2 -0
  302. data/decidim-results/config/locales/ca.yml +15 -2
  303. data/decidim-results/config/locales/en.yml +15 -2
  304. data/decidim-results/config/locales/es.yml +15 -2
  305. data/decidim-results/config/locales/eu.yml +57 -1
  306. data/decidim-results/config/locales/fi.yml +77 -0
  307. data/decidim-results/db/migrate/20170215132624_add_reference_to_results.rb +7 -0
  308. data/decidim-results/lib/decidim/results/test/factories.rb +6 -0
  309. data/decidim-results/spec/features/comments_spec.rb +10 -0
  310. data/decidim-results/spec/features/explore_results_spec.rb +27 -0
  311. data/decidim-results/spec/models/result_spec.rb +1 -0
  312. data/decidim-results/spec/services/result_search_spec.rb +9 -0
  313. data/decidim-results/spec/shared/admin_shared_context.rb +1 -1
  314. data/decidim-system/README.md +45 -8
  315. data/decidim-system/app/commands/decidim/system/register_organization.rb +3 -0
  316. data/decidim-system/app/commands/decidim/system/update_organization.rb +2 -0
  317. data/decidim-system/app/controllers/decidim/system/application_controller.rb +2 -0
  318. data/decidim-system/app/forms/decidim/system/register_organization_form.rb +1 -0
  319. data/decidim-system/app/forms/decidim/system/update_organization_form.rb +18 -0
  320. data/decidim-system/app/views/decidim/system/organizations/edit.html.erb +10 -0
  321. data/decidim-system/app/views/decidim/system/organizations/new.html.erb +33 -19
  322. data/decidim-system/config/locales/ca.yml +3 -0
  323. data/decidim-system/config/locales/en.yml +3 -0
  324. data/decidim-system/config/locales/es.yml +3 -0
  325. data/decidim-system/config/locales/eu.yml +3 -0
  326. data/decidim-system/config/locales/fi.yml +68 -0
  327. data/decidim-system/db/seeds.rb +1 -1
  328. data/decidim-system/decidim-system.gemspec +1 -1
  329. data/decidim-system/lib/decidim/system/engine.rb +1 -0
  330. data/decidim-system/spec/commands/decidim/system/register_organization_spec.rb +3 -0
  331. data/decidim-system/spec/commands/decidim/system/update_organization_spec.rb +53 -0
  332. data/decidim-system/spec/features/organizations_spec.rb +5 -0
  333. data/docs/analytics.md +23 -0
  334. data/docs/how_to_create_a_plugin.md +3 -1
  335. data/lib/generators/decidim/app_generator.rb +4 -0
  336. data/lib/generators/decidim/demo_generator.rb +1 -1
  337. data/lib/generators/decidim/install_generator.rb +8 -1
  338. data/lib/generators/decidim/review_app_generator.rb +53 -0
  339. data/lib/generators/decidim/templates/Gemfile.erb +1 -5
  340. data/lib/generators/decidim/templates/app.json.erb +1 -1
  341. data/lib/generators/decidim/templates/carrierwave.rb +2 -2
  342. data/lib/generators/decidim/templates/decidim_controller.rb.erb +5 -0
  343. data/lib/generators/decidim/templates/initializer.rb +4 -0
  344. data/package.json +4 -4
  345. data/yarn.lock +106 -165
  346. metadata +100 -54
  347. data/decidim-meetings/app/assets/config/decidim_meetings_manifest.js +0 -2
  348. data/decidim-meetings/app/assets/javascripts/decidim/meetings/map.js.es6.erb +0 -97
  349. data/decidim-meetings/app/assets/stylesheets/decidim/meetings/map.css +0 -3
  350. data/decidim-meetings/app/services/decidim/meetings/static_map_generator.rb +0 -50
  351. data/decidim-meetings/app/views/decidim/meetings/meetings/_address_details.html.erb +0 -5
  352. data/decidim-meetings/spec/controllers/meetings_controller_spec.rb +0 -41
  353. data/decidim-meetings/spec/services/static_map_generator_spec.rb +0 -33
  354. data/decidim-meetings/vendor/assets/javascripts/leaflet-svg-icon.js +0 -179
  355. data/decidim-meetings/vendor/assets/javascripts/leaflet-tilelayer-here.js +0 -166
  356. data/decidim-meetings/vendor/assets/javascripts/leaflet.js +0 -9
  357. data/decidim-meetings/vendor/assets/javascripts/leaflet.markercluster.js +0 -7
  358. data/decidim-meetings/vendor/assets/stylesheets/MarkerCluster.Default.css +0 -60
  359. data/decidim-meetings/vendor/assets/stylesheets/MarkerCluster.css +0 -14
  360. data/decidim-meetings/vendor/assets/stylesheets/leaflet.css +0 -624
@@ -1,5 +1,13 @@
1
1
  ---
2
2
  en:
3
+ activemodel:
4
+ attributes:
5
+ result:
6
+ decidim_category_id: Category
7
+ decidim_scope_id: Scope
8
+ description: Description
9
+ proposal_ids: Included proposals
10
+ title: Title
3
11
  decidim:
4
12
  features:
5
13
  results:
@@ -11,9 +19,9 @@ en:
11
19
  comments_blocked: Comments blocked
12
20
  resource_links:
13
21
  included_proposals:
14
- proposals: Proposals included in this result
22
+ result_proposals: Proposals included in this result
15
23
  meetings_through_proposals:
16
- meetings: Related meetings
24
+ result_meetings: Related meetings
17
25
  results:
18
26
  actions:
19
27
  confirm_destroy: Are you sure you want to delete this result?
@@ -55,6 +63,11 @@ en:
55
63
  category: Category
56
64
  scopes: Scopes
57
65
  search: Search
66
+ filters_small_view:
67
+ close_modal: Close modal
68
+ filter: Filter
69
+ filter_by: Filter by
70
+ unfold: Unfold
58
71
  show:
59
72
  stats:
60
73
  attendees: Attendees
@@ -1,4 +1,12 @@
1
1
  es:
2
+ activemodel:
3
+ attributes:
4
+ result:
5
+ decidim_category_id: Categoría
6
+ decidim_scope_id: Ámbito
7
+ description: Descripción
8
+ proposal_ids: Propuestas incluidas
9
+ title: Título
2
10
  decidim:
3
11
  features:
4
12
  results:
@@ -10,9 +18,9 @@ es:
10
18
  comments_blocked: Comentarios bloqueados
11
19
  resource_links:
12
20
  included_proposals:
13
- proposals: Propuestas incluidas en este resultado
21
+ result_proposals: Propuestas incluidas en este resultado
14
22
  meetings_through_proposals:
15
- meetings: Encuentros relacionados
23
+ result_meetings: Encuentros relacionados
16
24
  results:
17
25
  actions:
18
26
  confirm_destroy: '¿Está seguro de que quiere eliminar este resultado?'
@@ -54,6 +62,11 @@ es:
54
62
  category: Categoría
55
63
  scopes: Ámbitos
56
64
  search: Buscar
65
+ filters_small_view:
66
+ close_modal: Cerrar ventana
67
+ filter: Filtrar
68
+ filter_by: Filtrar por
69
+ unfold: Desplegar
57
70
  show:
58
71
  stats:
59
72
  attendees: Asistentes
@@ -2,4 +2,60 @@ eu:
2
2
  decidim:
3
3
  features:
4
4
  results:
5
- name: Emaitzak
5
+ name: Emaitzak
6
+ resource_links:
7
+ included_proposals:
8
+ result_proposals: Emaitza honetan jasotako proposamenak
9
+ meetings_through_proposals:
10
+ result_meetings: Honekin lotutako topaketak
11
+ results:
12
+ actions:
13
+ confirm_destroy: Ziur zaude emaitza hau ezabatu nahi duzula?
14
+ destroy: Garbitu
15
+ edit: Editatu
16
+ new: '%{name} berria'
17
+ title: Ekintzak
18
+ admin:
19
+ models:
20
+ result:
21
+ name: Emaitza
22
+ results:
23
+ create:
24
+ invalid: Arazo bat izan da emaitza hau sortzean.
25
+ success: Emaitza zuzen sortu da
26
+ destroy:
27
+ success: Emaitza zuzen ezabatu da.
28
+ edit:
29
+ title: Editatu emaitza
30
+ update: Eguneratu emaitza
31
+ index:
32
+ title: Emaitzak
33
+ new:
34
+ create: Sortu emaitza
35
+ title: Emaitza berria
36
+ update:
37
+ invalid: Arazo bat izan da emaitza hau eguneratzean.
38
+ success: Emaitza zuzen eguneratu da.
39
+ models:
40
+ result:
41
+ fields:
42
+ title: Izenburua
43
+ results:
44
+ count:
45
+ results_count:
46
+ one: Emaitza bat
47
+ other: "%{count} emaitza"
48
+ filters:
49
+ category: Kategoria
50
+ scopes: Esparruak
51
+ search: Bilatu
52
+ filters_small_view:
53
+ filter_by: 'Iragazi honen arabera:'
54
+ show:
55
+ stats:
56
+ attendees: Bertaratuak
57
+ comments: Iruzkinak
58
+ contributions: Ekarpenak
59
+ meetings: Topaketa-zerrenda
60
+ proposals: Proposamenak
61
+ votes: Euskarria
@@ -0,0 +1,77 @@
1
+ fi:
2
+ activemodel:
3
+ attributes:
4
+ result:
5
+ decidim_category_id: Kategoria
6
+ decidim_scope_id: Konteksti
7
+ description: Kuvaus
8
+ proposal_ids: Sisällytetyt ehdotukset
9
+ title: Otsikko
10
+ decidim:
11
+ features:
12
+ results:
13
+ name: Tulokset
14
+ settings:
15
+ global:
16
+ comments_enabled: Kommentointi sallittu
17
+ step:
18
+ comments_blocked: Kommentointi estetty
19
+ resource_links:
20
+ included_proposals:
21
+ result_proposals: Projektit, jotka sisältyvät tähän tulokseen
22
+ meetings_through_proposals:
23
+ result_meetings: Liittyvät tapaamiset
24
+ results:
25
+ actions:
26
+ confirm_destroy: Oletko varma, että haluat poistaa tämän tuloksen?
27
+ destroy: Poista
28
+ edit: Muokkaa
29
+ new: Uusi %{name}
30
+ title: Toiminnot
31
+ admin:
32
+ models:
33
+ result:
34
+ name: Tulos
35
+ results:
36
+ create:
37
+ invalid: Tuloksen luonnissa tapahtui virhe
38
+ success: Tulos luotu onnistuneesti
39
+ destroy:
40
+ success: Tulos poistettu onnistuneesti
41
+ edit:
42
+ title: Muokkaa tulosta
43
+ update: Päivitä tulos
44
+ index:
45
+ title: Tulokset
46
+ new:
47
+ create: Luo tulos
48
+ title: Uusi tulos
49
+ update:
50
+ invalid: Tuloksen päivityksessä tapahtui virhe
51
+ success: Tulos päivitetty onnistuneesti
52
+ models:
53
+ result:
54
+ fields:
55
+ title: Otsikko
56
+ results:
57
+ count:
58
+ results_count:
59
+ one: 1 tulos
60
+ other: "%{count} tulosta"
61
+ filters:
62
+ category: Kategoria
63
+ scopes: Konteksti
64
+ search: Haku
65
+ filters_small_view:
66
+ close_modal: Sulje ikkuna
67
+ filter: Suodata
68
+ filter_by: Suodata
69
+ unfold: Avaa
70
+ show:
71
+ stats:
72
+ attendees: Osallistujat
73
+ comments: Kommentit
74
+ contributions: Kontribuutiot
75
+ meetings: Tapaamiset
76
+ proposals: Ehdotukset
77
+ votes: Kannatukset
@@ -0,0 +1,7 @@
1
+ class AddReferenceToResults < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :decidim_results_results, :reference, :string
4
+ Decidim::Results::Result.find_each(&:save)
5
+ change_column_null :decidim_results_results, :reference, false
6
+ end
7
+ end
@@ -3,6 +3,12 @@ require "decidim/faker/localized"
3
3
  require "decidim/dev"
4
4
 
5
5
  FactoryGirl.define do
6
+ factory :result_feature, parent: :feature do
7
+ name { Decidim::Features::Namer.new(participatory_process.organization.available_locales, :results).i18n_name }
8
+ manifest_name :results
9
+ participatory_process { create(:participatory_process, :with_steps) }
10
+ end
11
+
6
12
  factory :result, class: Decidim::Results::Result do
7
13
  title { Decidim::Faker::Localized.sentence(3) }
8
14
  description { Decidim::Faker::Localized.wrapped("<p>", "</p>") { Decidim::Faker::Localized.sentence(4) } }
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+ require "spec_helper"
3
+
4
+ describe "Comments", type: :feature, perform_enqueued: true do
5
+ let!(:feature) { create(:result_feature, organization: organization) }
6
+ let!(:commentable) { create(:result, feature: feature) }
7
+
8
+ let(:resource_path) { decidim_results.result_path(commentable, feature_id: feature, participatory_process_id: feature.participatory_process) }
9
+ include_examples "comments"
10
+ end
@@ -38,6 +38,7 @@ describe "Explore results", type: :feature do
38
38
  it "shows all result info" do
39
39
  expect(page).to have_i18n_content(result.title)
40
40
  expect(page).to have_i18n_content(result.description)
41
+ expect(page).to have_content(result.reference)
41
42
 
42
43
  within ".section.view-side" do
43
44
  expect(page).to have_content(/Proposals/i)
@@ -162,6 +163,32 @@ describe "Explore results", type: :feature do
162
163
  visit_feature
163
164
  end
164
165
 
166
+ context "when the process has a linked scope" do
167
+ before do
168
+ participatory_process.update_attributes(scope: scope)
169
+ visit current_path
170
+ end
171
+
172
+ it "enables filtering by scope" do
173
+ within ".filters" do
174
+ expect(page).not_to have_content(/Scopes/i)
175
+ end
176
+ end
177
+ end
178
+
179
+ context "when the process has no linked scope" do
180
+ before do
181
+ participatory_process.update_attributes(scope: nil)
182
+ visit current_path
183
+ end
184
+
185
+ it "enables filtering by scope" do
186
+ within ".filters" do
187
+ expect(page).to have_content(/Scopes/i)
188
+ end
189
+ end
190
+ end
191
+
165
192
  context "by origin 'official'" do
166
193
  it "lists the filtered results" do
167
194
  within ".filters" do
@@ -13,6 +13,7 @@ module Decidim
13
13
  include_examples "has feature"
14
14
  include_examples "has scope"
15
15
  include_examples "has category"
16
+ include_examples "has reference"
16
17
  end
17
18
  end
18
19
  end
@@ -65,6 +65,15 @@ describe Decidim::Results::ResultSearch do
65
65
  expect(subject.results).to match_array [result1,result2]
66
66
  end
67
67
  end
68
+
69
+ context "when `global` is being sent" do
70
+ let!(:resource_without_scope) { create(:result, feature: current_feature, scope: nil)}
71
+ let(:params) { default_params.merge(scope_id: ["global"]) }
72
+
73
+ it "returns resources without a scope" do
74
+ expect(subject.results).to eq [resource_without_scope]
75
+ end
76
+ end
68
77
  end
69
78
 
70
79
  context "category_id" do
@@ -1,6 +1,6 @@
1
1
  RSpec.shared_context "admin" do
2
2
  let(:organization) { create(:organization) }
3
- let!(:user) { create(:user, :admin, :confirmed, organization: organization, email: "admin@decidim.org") }
3
+ let!(:user) { create(:user, :admin, :confirmed, organization: organization, email: "admin@example.org") }
4
4
  let(:participatory_process) { create(:participatory_process, :with_steps, organization: organization) }
5
5
  let(:process_admin) { create :user, :confirmed, organization: organization }
6
6
  let!(:user_role) { create :participatory_process_user_role, user: process_admin, participatory_process: participatory_process }
@@ -1,10 +1,12 @@
1
1
  # Decidim::System
2
- Short description and motivation.
2
+
3
+ This engine adds an administration dashboard so admin can manage a Decidim deploy
4
+ and its organizations when working in a multi-tenant environment.
3
5
 
4
6
  ## Usage
5
- How to use my plugin.
6
7
 
7
- ## Installation
8
+ `decidim-system` is already included in the `decidim` gem, but you can also include it separately:
9
+
8
10
  Add this line to your application's Gemfile:
9
11
 
10
12
  ```ruby
@@ -16,13 +18,48 @@ And then execute:
16
18
  $ bundle
17
19
  ```
18
20
 
19
- Or install it yourself as:
20
- ```bash
21
- $ gem install decidim-system
21
+ ## Multi-tenancy in Decidim
22
+
23
+ A single Decidim deploy can be used by multiple organizations (tenants) at the same time. All resources and entities are always scoped to an organization.
24
+
25
+ When using Decidim as multi-tenant, you should keep these in mind:
26
+
27
+ * All organizations share the same database.
28
+ * Each organization must have a different hostname.
29
+ * Users aren't shared between each organization (the same email can be registered in different organizations and it will be considered as different users).
30
+ * All configuration related to Decidim (`Decidim.config`) is shared between the organizations.
31
+ * Stylesheets aren't customizable per-tenant so UI styles (colors and other variables) are shared.
32
+
33
+ ## Glossary
34
+
35
+ * **Organization**: Each of the tenants using a Decidim deploy.
36
+ * **System admin**: Users that can manage organizations in a Decidim deploy.
37
+ * **Admins**: Users that can manage a **single** organization in a Decidim deploy.
38
+ * **Participatory process admins**: Users that can manage a **single participatory process** in an organization in a Decidim deploy.
39
+
40
+ ## Managing System admins
41
+
42
+ Currently Decidim doesn't provide a way to create the first System Admin in a new deployment. To do it, you should open a Rails console in your application and
43
+ create it:
44
+
45
+ ```ruby
46
+ Decidim::System::Admin.create!(
47
+ email: "your-email@example.org",
48
+ password: "your-safe-password",
49
+ password_confirmation: "your-safe-password"
50
+ )
22
51
  ```
23
52
 
24
- ## Contributing
25
- Contribution directions go here.
53
+ Once you have created your first admin you can access the system dashboard at `https://your-decidim-deployment-host/system` and login with your newly created user.
54
+ From the system dashboard you can add new admins.
55
+
56
+ ## Managing organizations
57
+
58
+ Once you have your system admin setup you can also start managing the organizations in your deploy. To do it, login at the system dashboard and create a new organization
59
+ following the form instructions. After creating it, a new admin user will be created and invited to start managing it.
60
+
61
+ Remember that System admins and regular Admins are completely different users (they don't even share the same database table), so you can't use your
62
+ system user to login in as an organization admin.
26
63
 
27
64
  ## License
28
65
  The gem is available as open source under the terms of the [AGPLv3 License](https://opensource.org/licenses/AGPL-3.0).
@@ -42,7 +42,10 @@ module Decidim
42
42
  Decidim::Organization.create!(
43
43
  name: form.name,
44
44
  host: form.host,
45
+ secondary_hosts: form.clean_secondary_hosts,
46
+ reference_prefix: form.reference_prefix,
45
47
  available_locales: form.available_locales,
48
+ available_authorizations: form.clean_available_authorizations,
46
49
  default_locale: form.default_locale
47
50
  )
48
51
  end
@@ -42,6 +42,8 @@ module Decidim
42
42
  def save_organization
43
43
  organization.name = form.name
44
44
  organization.host = form.host
45
+ organization.secondary_hosts = form.clean_secondary_hosts
46
+ organization.available_authorizations = form.clean_available_authorizations
45
47
 
46
48
  organization.save!
47
49
  end
@@ -4,10 +4,12 @@ module Decidim
4
4
  # The main application controller that inherits from Rails.
5
5
  class ApplicationController < ActionController::Base
6
6
  include FormFactory
7
+ include PayloadInfo
7
8
  protect_from_forgery with: :exception, prepend: true
8
9
 
9
10
  helper Decidim::TranslationsHelper
10
11
  helper Decidim::DecidimFormHelper
12
+ helper Decidim::ReplaceButtonsHelper
11
13
  end
12
14
  end
13
15
  end
@@ -12,6 +12,7 @@ module Decidim
12
12
  attribute :organization_admin_name, String
13
13
  attribute :available_locales, Array
14
14
  attribute :default_locale, String
15
+ attribute :reference_prefix
15
16
 
16
17
  validates :organization_admin_email, :organization_admin_name, :name, :host, presence: true
17
18
  validates :available_locales, presence: true
@@ -12,9 +12,27 @@ module Decidim
12
12
 
13
13
  attribute :name, String
14
14
  attribute :host, String
15
+ attribute :secondary_hosts, String
16
+ attribute :available_authorizations, Array[String]
15
17
 
18
+ validates :name, presence: true
19
+ validates :host, presence: true
16
20
  validate :validate_organization_uniqueness
17
21
 
22
+ def map_model(model)
23
+ self.secondary_hosts = model.secondary_hosts.join("\n")
24
+ end
25
+
26
+ def clean_secondary_hosts
27
+ return unless secondary_hosts
28
+ secondary_hosts.split("\n").map(&:chomp).select(&:present?)
29
+ end
30
+
31
+ def clean_available_authorizations
32
+ return unless available_authorizations
33
+ available_authorizations.select(&:present?)
34
+ end
35
+
18
36
  private
19
37
 
20
38
  def validate_organization_uniqueness