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
@@ -7,17 +7,14 @@ module Decidim
7
7
  include FormFactory
8
8
  include FilterResource
9
9
 
10
- helper_method :order, :random_seed
10
+ helper_method :order, :random_seed, :geocoded_proposals
11
11
 
12
12
  before_action :authenticate_user!, only: [:new, :create]
13
13
 
14
- def show
15
- @proposal = Proposal.where(feature: current_feature).find(params[:id])
16
- end
17
-
18
14
  def index
19
15
  @proposals = search
20
16
  .results
17
+ .not_hidden
21
18
  .includes(:author)
22
19
  .includes(:category)
23
20
  .includes(:scope)
@@ -35,6 +32,11 @@ module Decidim
35
32
  end
36
33
  end
37
34
 
35
+ def show
36
+ @proposal = Proposal.not_hidden.where(feature: current_feature).find(params[:id])
37
+ @report_form = form(Decidim::ReportForm).from_params(reason: "spam")
38
+ end
39
+
38
40
  def new
39
41
  authorize! :create, Proposal
40
42
 
@@ -86,6 +88,10 @@ module Decidim
86
88
  end
87
89
  end
88
90
 
91
+ def geocoded_proposals
92
+ @geocoded_proposals ||= search.results.not_hidden.select(&:geocoded?)
93
+ end
94
+
89
95
  def search_klass
90
96
  ProposalSearch
91
97
  end
@@ -97,7 +103,7 @@ module Decidim
97
103
  activity: "",
98
104
  category_id: "",
99
105
  state: "all",
100
- scope_id: "",
106
+ scope_id: nil,
101
107
  related_to: ""
102
108
  }
103
109
  end
@@ -8,15 +8,26 @@ module Decidim
8
8
 
9
9
  attribute :title, String
10
10
  attribute :body, String
11
+ attribute :address, String
12
+ attribute :latitude, Float
13
+ attribute :longitude, Float
11
14
  attribute :category_id, Integer
12
15
  attribute :scope_id, Integer
13
16
 
14
17
  validates :title, :body, presence: true
18
+ validates :address, geocoding: true, if: -> { current_feature.settings.geocoding_enabled? }
15
19
  validates :category, presence: true, if: ->(form) { form.category_id.present? }
16
20
  validates :scope, presence: true, if: ->(form) { form.scope_id.present? }
17
21
 
18
22
  delegate :categories, to: :current_feature, prefix: false
19
- delegate :scopes, to: :current_organization, prefix: false
23
+
24
+ def organization_scopes
25
+ current_organization.scopes
26
+ end
27
+
28
+ def process_scope
29
+ current_feature.participatory_process.scope
30
+ end
20
31
 
21
32
  alias feature current_feature
22
33
 
@@ -31,7 +42,7 @@ module Decidim
31
42
  #
32
43
  # Returns a Decidim::Scope
33
44
  def scope
34
- @scope ||= scopes.where(id: scope_id).first
45
+ @scope ||= process_scope || organization_scopes.where(id: scope_id).first
35
46
  end
36
47
  end
37
48
  end
@@ -7,6 +7,9 @@ module Decidim
7
7
 
8
8
  attribute :title, String
9
9
  attribute :body, String
10
+ attribute :address, String
11
+ attribute :latitude, Float
12
+ attribute :longitude, Float
10
13
  attribute :category_id, Integer
11
14
  attribute :scope_id, Integer
12
15
  attribute :user_group_id, Integer
@@ -14,11 +17,19 @@ module Decidim
14
17
  validates :title, :body, presence: true, etiquette: true
15
18
  validates :title, length: { maximum: 150 }
16
19
  validates :body, length: { maximum: 500 }, etiquette: true
20
+ validates :address, geocoding: true, if: -> { current_feature.settings.geocoding_enabled? }
17
21
  validates :category, presence: true, if: ->(form) { form.category_id.present? }
18
22
  validates :scope, presence: true, if: ->(form) { form.scope_id.present? }
19
23
 
20
24
  delegate :categories, to: :current_feature
21
- delegate :scopes, to: :current_organization
25
+
26
+ def organization_scopes
27
+ current_organization.scopes
28
+ end
29
+
30
+ def process_scope
31
+ current_feature.participatory_process.scope
32
+ end
22
33
 
23
34
  alias feature current_feature
24
35
 
@@ -33,7 +44,7 @@ module Decidim
33
44
  #
34
45
  # Returns a Decidim::Scope
35
46
  def scope
36
- @scope ||= scopes.where(id: scope_id).first
47
+ @scope ||= process_scope || organization_scopes.where(id: scope_id).first
37
48
  end
38
49
  end
39
50
  end
@@ -7,6 +7,9 @@ module Decidim
7
7
  include Decidim::Comments::CommentsHelper
8
8
  include PaginateHelper
9
9
  include ProposalVotesHelper
10
+ include ProposalOrderHelper
11
+ include Decidim::MapHelper
12
+ include Decidim::Proposals::MapHelper
10
13
 
11
14
  # Public: The state of a proposal in a way a human can understand.
12
15
  #
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+ module Decidim
3
+ module Proposals
4
+ # This helper include some methods for rendering proposals dynamic maps.
5
+ module MapHelper
6
+ # Serialize a collection of geocoded proposals to be used by the dynamic map component
7
+ #
8
+ # geocoded_proposals - A collection of geocoded proposals
9
+ def proposals_data_for_map(geocoded_proposals)
10
+ geocoded_proposals.map do |proposal|
11
+ proposal.slice(:latitude, :longitude, :address).merge(title: proposal.title,
12
+ body: truncate(proposal.body, length: 100),
13
+ icon: icon("proposals", width: 40, height: 70, remove_icon_class: true),
14
+ link: proposal_path(proposal))
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+ module Decidim
3
+ module Proposals
4
+ # Simple helpers to handle proposals ordering
5
+ module ProposalOrderHelper
6
+ # Returns the options the user will see to order proposals
7
+ def order_fields
8
+ @order_fields ||= begin
9
+ order_fields = [:random, :recent]
10
+ order_fields << :most_voted if current_settings.votes_enabled?
11
+ order_fields
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -16,6 +16,8 @@ module Decidim
16
16
  @context = context
17
17
 
18
18
  can :manage, Proposal
19
+ can :unreport, Proposal
20
+ can :hide, Proposal
19
21
  cannot :create, Proposal unless can_create_proposal?
20
22
  cannot :update, Proposal unless can_update_proposal?
21
23
  end
@@ -24,6 +24,9 @@ module Decidim
24
24
  end
25
25
 
26
26
  can :create, Proposal if authorized?(:create) && creation_enabled?
27
+
28
+ can :report, Proposal
29
+ can :report, Decidim::Comments::Comment
27
30
  end
28
31
 
29
32
  private
@@ -18,7 +18,8 @@ module Decidim
18
18
  can :manage, Proposal do |proposal|
19
19
  participatory_processes.include?(proposal.feature.participatory_process)
20
20
  end
21
-
21
+ can :unreport, Proposal
22
+ can :hide, Proposal
22
23
  cannot :create, Proposal unless can_create_proposal?
23
24
  cannot :update, Proposal unless can_update_proposal?
24
25
  end
@@ -7,7 +7,9 @@ module Decidim
7
7
  include Decidim::Authorable
8
8
  include Decidim::HasFeature
9
9
  include Decidim::HasScope
10
+ include Decidim::HasReference
10
11
  include Decidim::HasCategory
12
+ include Decidim::Reportable
11
13
  include Decidim::Comments::Commentable
12
14
 
13
15
  feature_manifest_name "proposals"
@@ -16,8 +18,10 @@ module Decidim
16
18
 
17
19
  validates :title, :body, presence: true
18
20
 
19
- scope :accepted, -> { where(state: "accepted") }
20
- scope :rejected, -> { where(state: "rejected") }
21
+ geocoded_by :address, http_headers: lambda { |proposal| { "Referer" => proposal.feature.organization.host } }
22
+
23
+ scope :accepted, -> { where(state: "accepted") }
24
+ scope :rejected, -> { where(state: "rejected") }
21
25
 
22
26
  def author_name
23
27
  user_group&.name || author&.name || I18n.t("decidim.proposals.models.proposal.fields.official_proposal")
@@ -62,7 +66,7 @@ module Decidim
62
66
 
63
67
  # Public: Overrides the `accepts_new_comments?` Commentable concern method.
64
68
  def accepts_new_comments?
65
- commentable? && !feature.active_step_settings.comments_blocked
69
+ commentable? && !feature.active_step_settings.comments_blocked
66
70
  end
67
71
 
68
72
  # Public: Overrides the `comments_have_alignment?` Commentable concern method.
@@ -74,6 +78,11 @@ module Decidim
74
78
  def comments_have_votes?
75
79
  true
76
80
  end
81
+
82
+ # Public: Overrides the `reported_content` Reportable concern method.
83
+ def reported_content
84
+ "<h3>#{title}</h3><p>#{body}</p>"
85
+ end
77
86
  end
78
87
  end
79
88
  end
@@ -44,11 +44,6 @@ module Decidim
44
44
  end
45
45
  end
46
46
 
47
- # Handle the scope_id filter
48
- def search_scope_id
49
- query.where(decidim_scope_id: scope_id)
50
- end
51
-
52
47
  # Handle the state filter
53
48
  def search_state
54
49
  if state == "accepted"
@@ -6,7 +6,7 @@
6
6
  </div>
7
7
 
8
8
  <div class="field">
9
- <%= f.translated :text_area, :answer, autofocus: true, rows: 15 %>
9
+ <%= f.translated :editor, :answer, autofocus: true, rows: 15 %>
10
10
  </div>
11
11
 
12
12
  <div class="actions">
@@ -6,14 +6,20 @@
6
6
  <%= form.text_area :body, rows: 10 %>
7
7
  </div>
8
8
 
9
+ <% if feature_settings.geocoding_enabled? %>
10
+ <div class="field">
11
+ <%= form.text_field :address %>
12
+ </div>
13
+ <% end %>
14
+
9
15
  <% if @form.categories&.any? %>
10
16
  <div class="field">
11
17
  <%= form.categories_select :category_id, @form.categories, prompt: t(".select_a_category") %>
12
18
  </div>
13
19
  <% end %>
14
20
 
15
- <% if @form.scopes&.any? && feature_settings.scoped_proposals_enabled %>
21
+ <% if !@form.process_scope %>
16
22
  <div class="field">
17
- <%= form.select :scope_id, @form.scopes.map{|s| [s.name, s.id]}, prompt: t(".select_a_scope") %>
23
+ <%= form.collection_select :scope_id, organization_scopes, :id, :name %>
18
24
  </div>
19
25
  <% end %>
@@ -1,19 +1,17 @@
1
1
  <h2><%= t(".title") %></h2>
2
2
 
3
- <% if feature_settings.official_proposals_enabled %>
4
- <div class="actions title">
3
+ <div class="actions title">
4
+ <% if feature_settings.official_proposals_enabled %>
5
5
  <%= link_to t("actions.new", scope: "decidim.proposals", name: t("models.proposal.name", scope: "decidim.proposals.admin")), new_proposal_path, class: 'new' if can? :manage, current_feature %>
6
- </div>
7
- <% end %>
6
+ <% end %>
7
+ </div>
8
8
 
9
9
  <table class="stack">
10
10
  <thead>
11
11
  <tr>
12
12
  <th><%= t("models.proposal.fields.title", scope: "decidim.proposals") %></th>
13
13
  <th><%= t("models.proposal.fields.category", scope: "decidim.proposals") %></th>
14
- <% if feature_settings.scoped_proposals_enabled %>
15
- <th><%= t("models.proposal.fields.scope", scope: "decidim.proposals") %></th>
16
- <% end %>
14
+ <th><%= t("models.proposal.fields.scope", scope: "decidim.proposals") %></th>
17
15
  <th><%= t("models.proposal.fields.state", scope: "decidim.proposals") %></th>
18
16
  <th class="actions"><%= t("actions.title", scope: "decidim.proposals") %></th>
19
17
  </tr>
@@ -29,13 +27,13 @@
29
27
  <%= translated_attribute proposal.category.name %>
30
28
  <% end %>
31
29
  </td>
32
- <% if feature_settings.scoped_proposals_enabled %>
33
- <td>
34
- <% if proposal.scope %>
35
- <%= translated_attribute proposal.scope.name %>
36
- <% end %>
37
- </td>
38
- <% end %>
30
+ <td>
31
+ <% if proposal.scope %>
32
+ <%= proposal.scope.name %>
33
+ <% else %>
34
+ <%= t("decidim.participatory_processes.scopes.global") %>
35
+ <% end %>
36
+ </td>
39
37
  <td>
40
38
  <%= humanize_proposal_state proposal.state %>
41
39
  </td>
@@ -28,8 +28,8 @@
28
28
  <%= form.collection_check_boxes :activity, [["voted", t('.voted')]], :first, :last, legend_title: t('.activity') %>
29
29
  <% end %>
30
30
 
31
- <% if current_organization.scopes.any? && feature_settings.scoped_proposals_enabled %>
32
- <%= form.collection_check_boxes :scope_id, current_organization.scopes, lambda {|scope| scope.id.to_s}, :name, legend_title: t('.scopes') %>
31
+ <% if current_organization.scopes.any? && !current_participatory_process.scope %>
32
+ <%= form.collection_check_boxes :scope_id, search_organization_scopes, lambda {|scope| scope.id.to_s}, :name, legend_title: t('.scopes') %>
33
33
  <% end %>
34
34
 
35
35
  <% if current_feature.categories.any? %>
@@ -7,7 +7,7 @@
7
7
 
8
8
  <div class="reveal" id="filter-box" data-reveal>
9
9
  <div class="reveal__header">
10
- <h3 class="reveal__title"><%= t ".filter_for" %>:</h3>
10
+ <h3 class="reveal__title"><%= t ".filter_by" %>:</h3>
11
11
  <button class="close-button" data-close aria-label="<%= t(".close_modal") %>" type="button">
12
12
  <span aria-hidden="true">&times;</span>
13
13
  </button>
@@ -1,4 +1,4 @@
1
- <%= order_selector [:random, :most_voted, :recent], i18n_scope: "decidim.proposals.proposals.orders" %>
1
+ <%= order_selector order_fields, i18n_scope: "decidim.proposals.proposals.orders" %>
2
2
  <div class="row small-up-1 medium-up-2 card-grid">
3
3
  <%= render @proposals %>
4
4
  </div>
@@ -3,7 +3,7 @@
3
3
  <% if proposal.category.present? %>
4
4
  <li><%= link_to translated_attribute(proposal.category.name), decidim_proposals.proposals_path(filter: { category_id: proposal.category.id }) %></li>
5
5
  <% end %>
6
- <% if proposal.scope.present? && feature_settings.scoped_proposals_enabled %>
6
+ <% if proposal.scope.present? && !current_participatory_process.scope %>
7
7
  <li><%= link_to proposal.scope.name, decidim_proposals.proposals_path(filter: { scope_id: [proposal.scope.id] }) %></li>
8
8
  <% end %>
9
9
  </ul>
@@ -1,3 +1,30 @@
1
+ <% if feature_settings.geocoding_enabled? %>
2
+ <%= dynamic_map_for proposals_data_for_map(geocoded_proposals) do %>
3
+ <template id="marker-popup">
4
+ <div class="map-info__content">
5
+ <h3>${title}</h3>
6
+ <div id="bodyContent">
7
+ <p>{{html body}}</p>
8
+ <div class="map__date-adress">
9
+ <div class="address card__extra">
10
+ <div class="address__icon">{{html icon}}</div>
11
+ <div class="address__details">
12
+ <span>${address}</span><br />
13
+ </div>
14
+ </div>
15
+ </div>
16
+ <div class="map-info__button">
17
+ <a href="${link}" class="button button--sc">
18
+ <%= t('.view_proposal') %>
19
+ </a>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ </template>
24
+ <%= stylesheet_link_tag "decidim/map" %>
25
+ <%= javascript_include_tag "decidim/map" %>
26
+ <% end %>
27
+ <% end %>
1
28
  <%= render partial: "votes_limit" %>
2
29
  <div class="row columns">
3
30
  <div class="title-action">
@@ -18,15 +18,21 @@
18
18
  <%= form.text_area :body, rows: 10 %>
19
19
  </div>
20
20
 
21
+ <% if feature_settings.geocoding_enabled? %>
22
+ <div class="field">
23
+ <%= form.text_field :address %>
24
+ </div>
25
+ <% end %>
26
+
21
27
  <% if @form.categories&.any? %>
22
28
  <div class="field">
23
29
  <%= form.categories_select :category_id, @form.categories, prompt: t(".select_a_category") %>
24
30
  </div>
25
31
  <% end %>
26
32
 
27
- <% if @form.scopes&.any? && feature_settings.scoped_proposals_enabled %>
33
+ <% if !@form.process_scope %>
28
34
  <div class="field">
29
- <%= form.select :scope_id, @form.scopes.map{|s| [s.name, s.id]}, prompt: t(".select_a_scope") %>
35
+ <%= form.collection_select :scope_id, organization_scopes, :id, :name %>
30
36
  </div>
31
37
  <% end %>
32
38
 
@@ -19,6 +19,11 @@
19
19
  </span>
20
20
  </div>
21
21
  </div>
22
+ <div class="author-data__extra">
23
+ <button type="button" data-open="<%= current_user.present? ? 'flagModal' : 'loginModal' %>" title="<%= t('.report') %>" aria-controls="<%= current_user.present? ? 'flagModal' : 'loginModal' %>" aria-haspopup="true" tabindex="0">
24
+ <%= icon "flag", aria_label: t('.report'), class: 'icon--small' %>
25
+ </button>
26
+ </div>
22
27
  </div>
23
28
  </div>
24
29
  <div class="row">
@@ -35,12 +40,16 @@
35
40
  </div>
36
41
  </div>
37
42
  <% end %>
43
+ <%= feature_reference(@proposal) %>
38
44
  <%= render partial: "decidim/shared/share_modal" %>
39
45
  </div>
40
46
  <div class="columns mediumlarge-8 mediumlarge-pull-4">
41
47
  <div class="section">
42
48
  <%= render partial: "proposal_badge", locals: { proposal: @proposal } %>
43
49
  <p><%= @proposal.body %></p>
50
+ <% if feature_settings.geocoding_enabled? %>
51
+ <%= render partial: "decidim/shared/static_map", locals: { icon_name: "proposals", geolocalizable: @proposal } %>
52
+ <% end %>
44
53
  <%= render partial: "tags", locals: { proposal: @proposal } %>
45
54
  </div>
46
55
  <% if @proposal.answered? && translated_attribute(@proposal.answer).present? %>
@@ -48,7 +57,7 @@
48
57
  <div class="section">
49
58
  <div class="callout success">
50
59
  <h5><%= t(".proposal_accepted_reason") %></h5>
51
- <p><%= translated_attribute @proposal.answer %></p>
60
+ <p><%== translated_attribute @proposal.answer %></p>
52
61
  </div>
53
62
  </div>
54
63
  <% else %>
@@ -70,3 +79,11 @@
70
79
 
71
80
  <%= javascript_include_tag "decidim/proposals/social_share" %>
72
81
  <%= stylesheet_link_tag "decidim/proposals/social_share" %>
82
+
83
+ <%=
84
+ render partial: "decidim/shared/flag_modal", locals: {
85
+ reportable: @proposal,
86
+ form: @report_form,
87
+ url: decidim.report_path(sgid: @proposal.to_sgid.to_s)
88
+ }
89
+ %>