decidim-proposals 0.27.6 → 0.28.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (278) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/proposals/collaborative_draft_cell.rb +1 -1
  3. data/app/cells/decidim/proposals/collaborative_draft_l_cell.rb +16 -0
  4. data/app/cells/decidim/proposals/collaborative_draft_link_to_proposal/show.erb +4 -12
  5. data/app/cells/decidim/proposals/collaborative_draft_link_to_proposal_cell.rb +0 -29
  6. data/app/cells/decidim/proposals/collaborative_draft_metadata_cell.rb +30 -0
  7. data/app/cells/decidim/proposals/content_blocks/highlighted_proposals_cell.rb +2 -8
  8. data/app/cells/decidim/proposals/cost_report/show.erb +5 -34
  9. data/app/cells/decidim/proposals/cost_report_cell.rb +0 -13
  10. data/app/cells/decidim/proposals/highlighted_proposals_for_component/show.erb +29 -17
  11. data/app/cells/decidim/proposals/highlighted_proposals_for_component_cell.rb +34 -8
  12. data/app/cells/decidim/proposals/irreversible_action_modal/show.erb +9 -17
  13. data/app/cells/decidim/proposals/irreversible_action_modal_cell.rb +7 -9
  14. data/app/cells/decidim/proposals/participatory_text_proposal/buttons.erb +21 -31
  15. data/app/cells/decidim/proposals/participatory_text_proposal/show.erb +5 -9
  16. data/app/cells/decidim/proposals/participatory_text_proposal_cell.rb +0 -9
  17. data/app/cells/decidim/proposals/proposal_activity_cell.rb +1 -12
  18. data/app/cells/decidim/proposals/proposal_cell.rb +6 -1
  19. data/app/cells/decidim/proposals/proposal_l_cell.rb +47 -0
  20. data/app/cells/decidim/proposals/proposal_link_to_collaborative_draft_cell.rb +6 -4
  21. data/app/cells/decidim/proposals/proposal_link_to_rejected_emendation_cell.rb +9 -7
  22. data/app/cells/decidim/proposals/proposal_linked_resources/show.erb +3 -8
  23. data/app/cells/decidim/proposals/proposal_metadata_cell.rb +61 -0
  24. data/app/cells/decidim/proposals/proposal_s_cell.rb +21 -0
  25. data/app/cells/decidim/proposals/proposals_picker/show.erb +13 -13
  26. data/app/cells/decidim/proposals/proposals_picker_cell.rb +15 -38
  27. data/app/commands/decidim/proposals/accept_access_to_collaborative_draft.rb +1 -1
  28. data/app/commands/decidim/proposals/admin/answer_proposal.rb +1 -1
  29. data/app/commands/decidim/proposals/admin/assign_proposals_to_valuator.rb +3 -3
  30. data/app/commands/decidim/proposals/admin/create_proposal.rb +2 -2
  31. data/app/commands/decidim/proposals/admin/create_proposal_note.rb +4 -4
  32. data/app/commands/decidim/proposals/admin/discard_participatory_text.rb +1 -1
  33. data/app/commands/decidim/proposals/admin/import_participatory_text.rb +1 -1
  34. data/app/commands/decidim/proposals/admin/import_proposals.rb +2 -13
  35. data/app/commands/decidim/proposals/admin/merge_proposals.rb +1 -1
  36. data/app/commands/decidim/proposals/admin/notify_proposal_answer.rb +3 -3
  37. data/app/commands/decidim/proposals/admin/publish_answers.rb +1 -1
  38. data/app/commands/decidim/proposals/admin/publish_participatory_text.rb +2 -2
  39. data/app/commands/decidim/proposals/admin/split_proposals.rb +1 -1
  40. data/app/commands/decidim/proposals/admin/unassign_proposals_from_valuator.rb +2 -2
  41. data/app/commands/decidim/proposals/admin/update_participatory_text.rb +1 -1
  42. data/app/commands/decidim/proposals/admin/update_proposal.rb +5 -1
  43. data/app/commands/decidim/proposals/admin/update_proposal_scope.rb +1 -1
  44. data/app/commands/decidim/proposals/create_collaborative_draft.rb +13 -3
  45. data/app/commands/decidim/proposals/create_proposal.rb +14 -5
  46. data/app/commands/decidim/proposals/hashtags_methods.rb +1 -1
  47. data/app/commands/decidim/proposals/publish_proposal.rb +1 -1
  48. data/app/commands/decidim/proposals/reject_access_to_collaborative_draft.rb +1 -1
  49. data/app/commands/decidim/proposals/request_access_to_collaborative_draft.rb +1 -1
  50. data/app/commands/decidim/proposals/unvote_proposal.rb +2 -2
  51. data/app/commands/decidim/proposals/update_collaborative_draft.rb +12 -2
  52. data/app/commands/decidim/proposals/update_proposal.rb +16 -14
  53. data/app/commands/decidim/proposals/vote_proposal.rb +2 -2
  54. data/app/controllers/concerns/decidim/proposals/admin/filterable.rb +4 -13
  55. data/app/controllers/decidim/proposals/admin/proposal_answers_controller.rb +2 -2
  56. data/app/controllers/decidim/proposals/admin/proposal_notes_controller.rb +1 -1
  57. data/app/controllers/decidim/proposals/admin/proposals_controller.rb +2 -2
  58. data/app/controllers/decidim/proposals/collaborative_drafts_controller.rb +3 -9
  59. data/app/controllers/decidim/proposals/proposal_votes_controller.rb +3 -3
  60. data/app/controllers/decidim/proposals/proposals_controller.rb +42 -12
  61. data/app/events/decidim/proposals/accepted_proposal_event.rb +1 -1
  62. data/app/events/decidim/proposals/admin/proposal_note_created_event.rb +1 -1
  63. data/app/events/decidim/proposals/admin/update_proposal_category_event.rb +1 -1
  64. data/app/events/decidim/proposals/admin/update_proposal_scope_event.rb +1 -1
  65. data/app/events/decidim/proposals/collaborative_draft_access_accepted_event.rb +1 -1
  66. data/app/events/decidim/proposals/collaborative_draft_access_rejected_event.rb +1 -1
  67. data/app/events/decidim/proposals/collaborative_draft_access_request_event.rb +1 -1
  68. data/app/events/decidim/proposals/collaborative_draft_access_requested_event.rb +1 -1
  69. data/app/events/decidim/proposals/collaborative_draft_access_requester_accepted_event.rb +1 -1
  70. data/app/events/decidim/proposals/collaborative_draft_access_requester_rejected_event.rb +1 -1
  71. data/app/events/decidim/proposals/collaborative_draft_withdrawn_event.rb +1 -1
  72. data/app/events/decidim/proposals/evaluating_proposal_event.rb +1 -1
  73. data/app/events/decidim/proposals/proposal_endorsed_event.rb +1 -1
  74. data/app/events/decidim/proposals/proposal_mentioned_event.rb +1 -1
  75. data/app/events/decidim/proposals/publish_proposal_event.rb +1 -1
  76. data/app/events/decidim/proposals/rejected_proposal_event.rb +1 -1
  77. data/app/forms/decidim/proposals/admin/import_participatory_text_form.rb +1 -1
  78. data/app/forms/decidim/proposals/admin/proposal_base_form.rb +2 -2
  79. data/app/forms/decidim/proposals/admin/proposal_form.rb +1 -1
  80. data/app/forms/decidim/proposals/admin/proposals_fork_form.rb +1 -1
  81. data/app/forms/decidim/proposals/admin/valuation_assignment_form.rb +1 -1
  82. data/app/forms/decidim/proposals/proposal_form.rb +9 -27
  83. data/app/helpers/decidim/proposals/admin/proposal_bulk_actions_helper.rb +1 -1
  84. data/app/helpers/decidim/proposals/admin/proposals_helper.rb +13 -13
  85. data/app/helpers/decidim/proposals/application_helper.rb +79 -27
  86. data/app/helpers/decidim/proposals/collaborative_draft_helper.rb +44 -4
  87. data/app/helpers/decidim/proposals/map_helper.rb +3 -4
  88. data/app/helpers/decidim/proposals/participatory_texts_helper.rb +1 -9
  89. data/app/helpers/decidim/proposals/proposal_cells_helper.rb +1 -1
  90. data/app/helpers/decidim/proposals/proposal_votes_helper.rb +2 -24
  91. data/app/helpers/decidim/proposals/proposal_wizard_helper.rb +14 -81
  92. data/app/helpers/decidim/proposals/proposals_helper.rb +0 -12
  93. data/app/jobs/decidim/proposals/hide_all_created_by_author_job.rb +20 -0
  94. data/app/jobs/decidim/proposals/notify_proposals_mentioned_job.rb +1 -1
  95. data/app/jobs/decidim/proposals/settings_change_job.rb +2 -2
  96. data/app/models/decidim/proposals/collaborative_draft.rb +4 -16
  97. data/app/models/decidim/proposals/proposal.rb +33 -16
  98. data/app/models/decidim/proposals/proposal_vote.rb +3 -3
  99. data/app/models/decidim/proposals/valuation_assignment.rb +1 -2
  100. data/app/packs/documents/decidim/proposals/participatory_texts/participatory_text.md +9 -4
  101. data/app/packs/entrypoints/decidim_proposals.js +4 -0
  102. data/app/packs/entrypoints/decidim_proposals_admin.js +0 -1
  103. data/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_accepted_proposals.svg +68 -1
  104. data/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_proposal_votes.svg +34 -1
  105. data/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_proposals.svg +64 -1
  106. data/app/packs/src/decidim/proposals/add_proposal.js +25 -39
  107. data/app/packs/src/decidim/proposals/admin/proposals.js +0 -7
  108. data/app/packs/src/decidim/proposals/choose_proposals.js +20 -0
  109. data/app/packs/stylesheets/decidim/proposals/proposals.scss +97 -0
  110. data/app/permissions/decidim/proposals/admin/permissions.rb +3 -3
  111. data/app/permissions/decidim/proposals/permissions.rb +1 -10
  112. data/app/presenters/decidim/proposals/admin_log/proposal_note_presenter.rb +2 -2
  113. data/app/presenters/decidim/proposals/admin_log/proposal_presenter.rb +2 -2
  114. data/app/presenters/decidim/proposals/admin_log/valuation_assignment_presenter.rb +2 -2
  115. data/app/presenters/decidim/proposals/proposal_presenter.rb +6 -2
  116. data/app/services/decidim/proposals/diff_renderer.rb +3 -3
  117. data/app/services/decidim/proposals/proposal_builder.rb +6 -6
  118. data/app/views/decidim/proposals/admin/participatory_texts/_article-preview.html.erb +2 -4
  119. data/app/views/decidim/proposals/admin/participatory_texts/_bulk-actions.html.erb +2 -2
  120. data/app/views/decidim/proposals/admin/participatory_texts/index.html.erb +58 -46
  121. data/app/views/decidim/proposals/admin/participatory_texts/new_import.html.erb +31 -33
  122. data/app/views/decidim/proposals/admin/proposal_answers/_form.html.erb +17 -11
  123. data/app/views/decidim/proposals/admin/proposal_notes/_form.html.erb +5 -6
  124. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_notes.html.erb +28 -36
  125. data/app/views/decidim/proposals/admin/proposals/_bulk-actions.html.erb +27 -30
  126. data/app/views/decidim/proposals/admin/proposals/_documents.html.erb +13 -0
  127. data/app/views/decidim/proposals/admin/proposals/_endorsers.html.erb +25 -0
  128. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +70 -90
  129. data/app/views/decidim/proposals/admin/proposals/_meetings.html.erb +13 -0
  130. data/app/views/decidim/proposals/admin/proposals/_photos.html.erb +13 -0
  131. data/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb +31 -25
  132. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_assign_to_valuator.html.erb +3 -3
  133. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_dropdown.html.erb +3 -2
  134. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_merge.html.erb +4 -4
  135. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_publish_answers.html.erb +3 -3
  136. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_recategorize.html.erb +3 -3
  137. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_scope-change.html.erb +4 -8
  138. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_split.html.erb +3 -3
  139. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_unassign_from_valuator.html.erb +3 -3
  140. data/app/views/decidim/proposals/admin/proposals/edit.html.erb +17 -7
  141. data/app/views/decidim/proposals/admin/proposals/index.html.erb +50 -63
  142. data/app/views/decidim/proposals/admin/proposals/new.html.erb +16 -6
  143. data/app/views/decidim/proposals/admin/proposals/publish_answers.js.erb +2 -2
  144. data/app/views/decidim/proposals/admin/proposals/show.html.erb +204 -162
  145. data/app/views/decidim/proposals/admin/proposals/update_attribute.js.erb +5 -6
  146. data/app/views/decidim/proposals/admin/proposals_imports/new.html.erb +48 -34
  147. data/app/views/decidim/proposals/collaborative_drafts/_accept_request_access_form.html.erb +1 -1
  148. data/app/views/decidim/proposals/collaborative_drafts/_actions.html.erb +7 -0
  149. data/app/views/decidim/proposals/collaborative_drafts/_collaborative_draft_aside.html.erb +53 -0
  150. data/app/views/decidim/proposals/collaborative_drafts/_collaborative_drafts.html.erb +12 -13
  151. data/app/views/decidim/proposals/collaborative_drafts/_collaborator_requests.html.erb +8 -12
  152. data/app/views/decidim/proposals/collaborative_drafts/_edit_form_fields.html.erb +26 -54
  153. data/app/views/decidim/proposals/collaborative_drafts/_reject_request_access_form.html.erb +1 -3
  154. data/app/views/decidim/proposals/collaborative_drafts/_request_access_form.html.erb +1 -1
  155. data/app/views/decidim/proposals/collaborative_drafts/edit.html.erb +23 -25
  156. data/app/views/decidim/proposals/collaborative_drafts/index.html.erb +30 -22
  157. data/app/views/decidim/proposals/collaborative_drafts/index.js.erb +0 -5
  158. data/app/views/decidim/proposals/collaborative_drafts/new.html.erb +22 -18
  159. data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +39 -109
  160. data/app/views/decidim/proposals/proposal_votes/update_buttons_and_counters.js.erb +2 -2
  161. data/app/views/decidim/proposals/proposals/_actions.html.erb +13 -0
  162. data/app/views/decidim/proposals/proposals/_edit_form_fields.html.erb +31 -70
  163. data/app/views/decidim/proposals/proposals/_linked_proposals.html.erb +3 -35
  164. data/app/views/decidim/proposals/proposals/_proposal_aside.html.erb +40 -0
  165. data/app/views/decidim/proposals/proposals/_proposals.html.erb +18 -39
  166. data/app/views/decidim/proposals/proposals/_proposals_picker.html.erb +5 -0
  167. data/app/views/decidim/proposals/proposals/_remaining_votes_count.html.erb +3 -3
  168. data/app/views/decidim/proposals/proposals/_vote_button.html.erb +16 -17
  169. data/app/views/decidim/proposals/proposals/_votes_count.html.erb +3 -6
  170. data/app/views/decidim/proposals/proposals/_voting_rules.html.erb +28 -41
  171. data/app/views/decidim/proposals/proposals/_wizard_header.html.erb +19 -25
  172. data/app/views/decidim/proposals/proposals/compare.html.erb +17 -16
  173. data/app/views/decidim/proposals/proposals/complete.html.erb +26 -21
  174. data/app/views/decidim/proposals/proposals/edit.html.erb +32 -27
  175. data/app/views/decidim/proposals/proposals/edit_draft.html.erb +21 -19
  176. data/app/views/decidim/proposals/proposals/index.html.erb +56 -47
  177. data/app/views/decidim/proposals/proposals/index.js.erb +0 -5
  178. data/app/views/decidim/proposals/proposals/new.html.erb +30 -35
  179. data/app/views/decidim/proposals/proposals/participatory_texts/_proposal_vote_button.html.erb +5 -5
  180. data/app/views/decidim/proposals/proposals/participatory_texts/_view_index.html.erb +15 -8
  181. data/app/views/decidim/proposals/proposals/participatory_texts/participatory_text.html.erb +32 -15
  182. data/app/views/decidim/proposals/proposals/preview.html.erb +37 -34
  183. data/app/views/decidim/proposals/proposals/show.html.erb +90 -108
  184. data/app/views/decidim/proposals/versions/show.html.erb +13 -5
  185. data/config/assets.rb +0 -1
  186. data/config/brakeman.ignore +31 -56
  187. data/config/locales/ar.yml +21 -157
  188. data/config/locales/bg.yml +2 -184
  189. data/config/locales/ca.yml +87 -145
  190. data/config/locales/cs.yml +74 -134
  191. data/config/locales/de.yml +71 -129
  192. data/config/locales/el.yml +57 -121
  193. data/config/locales/en.yml +76 -134
  194. data/config/locales/es-MX.yml +75 -133
  195. data/config/locales/es-PY.yml +75 -133
  196. data/config/locales/es.yml +82 -140
  197. data/config/locales/eu.yml +74 -132
  198. data/config/locales/fi-plain.yml +68 -126
  199. data/config/locales/fi.yml +67 -125
  200. data/config/locales/fr-CA.yml +72 -131
  201. data/config/locales/fr.yml +76 -135
  202. data/config/locales/ga-IE.yml +0 -39
  203. data/config/locales/gl.yml +10 -130
  204. data/config/locales/hu.yml +43 -148
  205. data/config/locales/id-ID.yml +8 -114
  206. data/config/locales/is-IS.yml +3 -60
  207. data/config/locales/it.yml +12 -145
  208. data/config/locales/ja.yml +78 -141
  209. data/config/locales/lb.yml +0 -5
  210. data/config/locales/lt.yml +64 -126
  211. data/config/locales/lv.yml +12 -144
  212. data/config/locales/nl.yml +14 -147
  213. data/config/locales/no.yml +10 -134
  214. data/config/locales/pl.yml +15 -177
  215. data/config/locales/pt-BR.yml +13 -199
  216. data/config/locales/pt.yml +10 -142
  217. data/config/locales/ro-RO.yml +12 -146
  218. data/config/locales/ru.yml +4 -70
  219. data/config/locales/sk.yml +18 -145
  220. data/config/locales/sr-CS.yml +0 -23
  221. data/config/locales/sv.yml +25 -145
  222. data/config/locales/tr-TR.yml +14 -148
  223. data/config/locales/uk.yml +4 -70
  224. data/config/locales/zh-CN.yml +8 -135
  225. data/config/locales/zh-TW.yml +34 -107
  226. data/db/migrate/20170307085300_migrate_proposal_reports_data_to_reports.rb +1 -1
  227. data/db/migrate/20230427105700_change_states_on_collaborative_drafts.rb +34 -0
  228. data/db/migrate/20230427105700_change_states_on_proposals.rb +34 -0
  229. data/lib/decidim/api/proposals_type.rb +2 -2
  230. data/lib/decidim/proposals/component.rb +11 -289
  231. data/lib/decidim/proposals/doc_to_markdown.rb +0 -4
  232. data/lib/decidim/proposals/engine.rb +43 -7
  233. data/lib/decidim/proposals/import/proposal_answer_creator.rb +1 -1
  234. data/lib/decidim/proposals/import/proposal_creator.rb +10 -10
  235. data/lib/decidim/proposals/markdown_to_proposals.rb +8 -2
  236. data/lib/decidim/proposals/proposal_serializer.rb +4 -5
  237. data/lib/decidim/proposals/seeds.rb +278 -0
  238. data/lib/decidim/proposals/test/factories.rb +105 -72
  239. data/lib/decidim/proposals/valuatable.rb +1 -2
  240. data/lib/decidim/proposals/version.rb +1 -1
  241. metadata +57 -69
  242. data/app/cells/decidim/proposals/collaborative_draft_m/footer.erb +0 -6
  243. data/app/cells/decidim/proposals/collaborative_draft_m/tags.erb +0 -1
  244. data/app/cells/decidim/proposals/collaborative_draft_m_cell.rb +0 -44
  245. data/app/cells/decidim/proposals/content_blocks/highlighted_proposals/elements.erb +0 -5
  246. data/app/cells/decidim/proposals/content_blocks/highlighted_proposals/heading.erb +0 -1
  247. data/app/cells/decidim/proposals/proposal_link_to_rejected_emendation/show.erb +0 -9
  248. data/app/cells/decidim/proposals/proposal_m/footer.erb +0 -26
  249. data/app/cells/decidim/proposals/proposal_m/tags.erb +0 -1
  250. data/app/cells/decidim/proposals/proposal_m_cell.rb +0 -151
  251. data/app/cells/decidim/proposals/proposal_tags/show.erb +0 -33
  252. data/app/cells/decidim/proposals/proposal_tags_cell.rb +0 -35
  253. data/app/cells/decidim/proposals/proposals_picker/proposals.erb +0 -12
  254. data/app/controllers/concerns/decidim/proposals/admin/picker.rb +0 -21
  255. data/app/controllers/decidim/proposals/widgets_controller.rb +0 -29
  256. data/app/helpers/decidim/proposals/admin/filterable_helper.rb +0 -17
  257. data/app/helpers/decidim/proposals/admin/proposals_picker_helper.rb +0 -30
  258. data/app/packs/src/decidim/proposals/admin/proposals_picker.js +0 -50
  259. data/app/packs/stylesheets/decidim/proposals/_proposals.scss +0 -1
  260. data/app/packs/stylesheets/decidim/proposals/proposals/_preview.scss +0 -3
  261. data/app/views/decidim/proposals/collaborative_drafts/_count.html.erb +0 -1
  262. data/app/views/decidim/proposals/collaborative_drafts/_filters.html.erb +0 -32
  263. data/app/views/decidim/proposals/collaborative_drafts/_filters_small_view.html.erb +0 -18
  264. data/app/views/decidim/proposals/collaborative_drafts/_new_collaborative_draft_button.html.erb +0 -11
  265. data/app/views/decidim/proposals/collaborative_drafts/_wizard_aside.html.erb +0 -13
  266. data/app/views/decidim/proposals/collaborative_drafts/_wizard_header.html.erb +0 -14
  267. data/app/views/decidim/proposals/proposals/_count.html.erb +0 -1
  268. data/app/views/decidim/proposals/proposals/_dynamic_map_instructions.html.erb +0 -4
  269. data/app/views/decidim/proposals/proposals/_filters.html.erb +0 -48
  270. data/app/views/decidim/proposals/proposals/_filters_small_view.html.erb +0 -18
  271. data/app/views/decidim/proposals/proposals/_proposal_similar.html.erb +0 -22
  272. data/app/views/decidim/proposals/proposals/_wizard_aside.html.erb +0 -20
  273. data/app/views/decidim/proposals/proposals/participatory_texts/_index.html.erb +0 -19
  274. data/app/views/decidim/proposals/versions/index.html.erb +0 -16
  275. data/config/locales/he-IL.yml +0 -1
  276. data/db/migrate/20240404202756_add_valuation_assignments_count_to_decidim_proposals_proposals.rb +0 -16
  277. data/decidim-proposals.gemspec +0 -40
  278. data/lib/decidim/proposals/test/capybara_proposals_picker.rb +0 -59
@@ -1,33 +0,0 @@
1
- <figure>
2
- <ul class="tags tags--proposal tags--list">
3
- <% if category.present? %>
4
- <li>
5
- <%= link_to resource_locator(model).index(filter: { with_any_category: [category.id.to_s] }), title: t("decidim.tags.filter_results_for_category", resource: translated_attribute(category.name)) do %>
6
- <span class="show-for-sr"><%= t "decidim.tags.filter_results_for_category", resource: decidim_html_escape(translated_attribute(category.name)) %></span>
7
- <span aria-hidden="true"><%= decidim_html_escape(translated_attribute(category.name)) %></span>
8
- <% end %>
9
- <% if previous_category.present? && show_previous_category? %>
10
- &nbsp;
11
- <small class="text-small">
12
- <%= t("changed_from", scope: "decidim.proposals.proposals.tags", previous_name: "#{previous_category.translated_name}").html_safe %>
13
- </small>
14
- <% end %>
15
- </li>
16
- <% end %>
17
-
18
- <% if has_visible_scopes?(model) %>
19
- <li>
20
- <%= link_to resource_locator(model).index(filter: { with_any_scope: [scope.id] }), title: t("decidim.tags.filter_results_for_scope", resource: translated_attribute(scope.name)) do %>
21
- <span class="show-for-sr"><%= t "decidim.tags.filter_results_for_scope", resource: translated_attribute(scope.name) %></span>
22
- <span aria-hidden="true"><%= translated_attribute(scope.name) %></span>
23
- <% end %>
24
- <% if previous_scope.present? && show_previous_scope? %>
25
- &nbsp;
26
- <small class="text-small">
27
- <%= t("changed_from", scope: "decidim.proposals.proposals.tags", previous_name: "#{translated_attribute(previous_scope.name)}").html_safe %>
28
- </small>
29
- <% end %>
30
- </li>
31
- <% end %>
32
- </ul>
33
- </figure>
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "cell/partial"
4
-
5
- module Decidim
6
- module Proposals
7
- # This cell renders the tags for a proposal.
8
- class ProposalTagsCell < Decidim::ViewModel
9
- include ProposalCellsHelper
10
-
11
- property :category
12
- property :previous_category
13
- property :scope
14
- property :previous_scope
15
-
16
- def show
17
- render if has_category_or_scopes?
18
- end
19
-
20
- private
21
-
22
- def show_previous_category?
23
- options[:show_previous_category].to_s != "false"
24
- end
25
-
26
- def show_previous_scope?
27
- options[:show_previous_scope].to_s != "false"
28
- end
29
-
30
- def has_category_or_scopes?
31
- category.present? || has_visible_scopes?(model)
32
- end
33
- end
34
- end
35
- end
@@ -1,12 +0,0 @@
1
- <ul id="proposals_list">
2
- <% decorated_proposals do |proposal| %>
3
- <li>
4
- <label><input type="checkbox" data-picker-text="<%= proposal.id_and_title(html_escape: true) %>" data-picker-url="<%= picker_path %>" value="<%= proposal.id %>" data-picker-choose> <%= proposal.id_and_title(html_escape: true) %> (<%= proposal.reference %>)</label>
5
- </li>
6
- <% end %>
7
- <% if more_proposals? %>
8
- <li><div class="callout warning"><%= t("proposals_picker.more_proposals", scope: "decidim.proposals", number: more_proposals_count) %></div>
9
- </li>
10
- <% end %>
11
- </ul>
12
- <div id="no_proposals" class="callout warning"><%= t("proposals_picker.no_proposals", scope: "decidim.proposals") %></div>
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "active_support/concern"
4
-
5
- module Decidim
6
- module Proposals
7
- module Admin
8
- module Picker
9
- extend ActiveSupport::Concern
10
-
11
- included do
12
- helper Decidim::Proposals::Admin::ProposalsPickerHelper
13
- end
14
-
15
- def proposals_picker
16
- render :proposals_picker, layout: false
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Proposals
5
- class WidgetsController < Decidim::WidgetsController
6
- helper Proposals::ApplicationHelper
7
-
8
- def show
9
- enforce_permission_to :embed, :proposal, proposal: model if model
10
-
11
- super
12
- end
13
-
14
- private
15
-
16
- def model
17
- @model ||= Proposal.not_hidden.except_withdrawn.where(component: current_component).find(params[:proposal_id])
18
- end
19
-
20
- def iframe_url
21
- @iframe_url ||= proposal_widget_url(model)
22
- end
23
-
24
- def permission_class_chain
25
- [Decidim::Proposals::Permissions]
26
- end
27
- end
28
- end
29
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Proposals
5
- module Admin
6
- module FilterableHelper
7
- def extra_dropdown_submenu_options_items(filter, i18n_scope)
8
- options = case filter
9
- when :state_eq
10
- tag.li(filter_link_value(:state_null, true, i18n_scope))
11
- end
12
- [options].compact
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Proposals
5
- module Admin
6
- # This class contains helpers needed to show the Proposals picker.
7
- #
8
- module ProposalsPickerHelper
9
- def proposals_picker(form, field, url)
10
- picker_options = {
11
- id: sanitize_to_id(field),
12
- class: "picker-multiple",
13
- name: "#{form.object_name}[#{field.to_s.sub(/s$/, "_ids")}]",
14
- multiple: true,
15
- autosort: true
16
- }
17
-
18
- prompt_params = {
19
- url: url,
20
- text: t("proposals_picker.choose_proposals", scope: "decidim.proposals")
21
- }
22
-
23
- form.data_picker(field, picker_options, prompt_params) do |item|
24
- { url: url, text: present(item).id_and_title }
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,50 +0,0 @@
1
- $(() => {
2
- const $content = $(".picker-content"),
3
- pickerMore = $content.data("picker-more"),
4
- pickerPath = $content.data("picker-path"),
5
- toggleNoProposals = () => {
6
- const showNoProposals = $("#proposals_list li:visible").length === 0
7
- $("#no_proposals").toggle(showNoProposals)
8
- }
9
-
10
- let jqxhr = null
11
- let filterBuffer = ""
12
-
13
- toggleNoProposals()
14
-
15
- $(".data_picker-modal-content").on("change keyup", "#proposals_filter", (event) => {
16
- const filter = event.target.value.toLowerCase()
17
-
18
- if (pickerMore) {
19
- if (filter.length < 3) {
20
- return
21
- }
22
-
23
- if (filter === filterBuffer) {
24
- return
25
- }
26
-
27
- if (jqxhr !== null) {
28
- jqxhr.abort()
29
- }
30
-
31
- $content.html("<div class='loading-spinner'></div>")
32
- jqxhr = $.get(`${pickerPath}?q=${filter}`, (data) => {
33
- filterBuffer = filter
34
- $content.html(data)
35
- jqxhr = null
36
- toggleNoProposals()
37
-
38
- if (typeof window.theDataPicker === "object" && window.theDataPicker.current !== null) {
39
- window.theDataPicker._handleCheckboxes($content);
40
- window.theDataPicker._handleLinks($content);
41
- }
42
- })
43
- } else {
44
- $("#proposals_list li").each((index, li) => {
45
- $(li).toggle(li.textContent.toLowerCase().indexOf(filter) > -1)
46
- })
47
- toggleNoProposals()
48
- }
49
- })
50
- })
@@ -1 +0,0 @@
1
- @import "stylesheets/decidim/proposals/proposals/preview";
@@ -1,3 +0,0 @@
1
- .preview--form__hidden{
2
- display: none;
3
- }
@@ -1 +0,0 @@
1
- <%= t(".drafts_count", count: @collaborative_drafts.total_count) %>
@@ -1,32 +0,0 @@
1
- <%= render partial: "decidim/shared/filter_form_help", locals: { skip_to_id: "collaborative_drafts" } %>
2
-
3
- <%= filter_form_for filter do |form| %>
4
- <div class="filters__section">
5
- <div class="filters__search">
6
- <div class="input-group">
7
- <%= form.search_field :search_text_cont, label: false, class: "input-group-field", placeholder: t(".search"), title: t(".search"), "aria-label": t(".search"), data: { disable_dynamic_change: true } %>
8
- <div class="input-group-button">
9
- <button type="submit" class="button" aria-controls="collaborative_drafts">
10
- <%= icon "magnifying-glass", aria_label: t(".search"), role: "img" %>
11
- </button>
12
- </div>
13
- </div>
14
- </div>
15
- </div>
16
-
17
- <%= form.check_boxes_tree :with_any_state, filter_collaborative_drafts_state_values, legend_title: t(".state"), "aria-controls": "collaborative_drafts" %>
18
-
19
- <% if linked_classes_for(Decidim::Proposals::CollaborativeDraft).any? %>
20
- <%= form.collection_radio_buttons :related_to, linked_classes_filter_values_for(Decidim::Proposals::CollaborativeDraft), :first, :last, { legend_title: t(".related_to") }, "aria-controls": "collaborative_drafts" %>
21
- <% end %>
22
-
23
- <% if current_component.has_subscopes? %>
24
- <%= form.check_boxes_tree :with_any_scope, filter_scopes_values, legend_title: t(".scope"), "aria-controls": "collaborative_drafts" %>
25
- <% end %>
26
-
27
- <% if current_component.categories.any? %>
28
- <%= form.check_boxes_tree :with_any_category, filter_categories_values, legend_title: t(".category"), "aria-controls": "collaborative_drafts" %>
29
- <% end %>
30
-
31
- <%= hidden_field_tag :order, order, id: nil, class: "order_filter" %>
32
- <% end %>
@@ -1,18 +0,0 @@
1
- <div class="filters-controls hide-for-mediumlarge">
2
- <button data-open="filter-box" class="filters-controls__trigger" aria-controls="filter-box" aria-haspopup="dialog">
3
- <%= t ".filter" %>
4
- <%= icon "caret-bottom", class: "icon--small float-right", aria_label: t(".unfold"), role: "img" %>
5
- </button>
6
- </div>
7
-
8
- <div class="reveal" id="filter-box" data-reveal role="dialog" aria-modal="true" aria-labelledby="filter-box-label">
9
- <div class="reveal__header">
10
- <h3 id="filter-box-label" class="reveal__title"><%= t ".filter_by" %>:</h3>
11
- <button class="close-button" data-close aria-label="<%= t(".close_modal") %>" type="button">
12
- <span aria-hidden="true">&times;</span>
13
- </button>
14
- </div>
15
- <div class="filters">
16
- <%= render partial: "filters", locals: { type: :small } %>
17
- </div>
18
- </div>
@@ -1,11 +0,0 @@
1
- <% if current_settings.creation_enabled %>
2
- <%= action_authorized_link_to :create, new_collaborative_draft_path, class: "title-action__action button small", data: { "redirect_url" => new_collaborative_draft_path } do %>
3
- <%= t(".new_collaborative_draft") %>
4
- <%= icon "plus", role: "img", "aria-hidden": true %>
5
- <% end %>
6
- <% else %>
7
- <span class="title-action__action button small disabled">
8
- <%= t(".new_collaborative_draft") %>
9
- <%= icon "plus", role: "img", "aria-hidden": true %>
10
- </span>
11
- <% end %>
@@ -1,13 +0,0 @@
1
- <div class="columns large-3">
2
- <div class="m-bottom">
3
- <%= link_to collaborative_drafts_path do %>
4
- <%= icon "chevron-left", class: "icon--small", role: "img", "aria-hidden": true %>
5
- <%= t("back_from_collaborative_draft", scope: "decidim.proposals.collaborative_drafts.wizard_aside").html_safe %>
6
- <% end %>
7
- </div>
8
- <div class="section">
9
- <p>
10
- <%= t("info", scope: "decidim.proposals.collaborative_drafts.wizard_aside").html_safe %>
11
- </p>
12
- </div>
13
- </div>
@@ -1,14 +0,0 @@
1
- <% if translated_attribute(component_settings.new_proposal_help_text).present? %>
2
- <%= cell("decidim/announcement", component_settings.new_proposal_help_text) %>
3
- <% end %>
4
-
5
- <% if proposal_wizard_step_help_text?(@step) %>
6
- <div class="proposal_wizard_help_text">
7
- <% callout_step_help_text_class ||= nil %>
8
- <%= cell("decidim/announcement", component_settings.try("proposal_wizard_#{@step}_help_text"), callout_class: callout_step_help_text_class) %>
9
- </div>
10
- <% end %>
11
-
12
- <h2 class="section-heading">
13
- <%= t(".title") %>
14
- </h2>
@@ -1 +0,0 @@
1
- <%= t(".proposals_count", count: @proposals.total_count) %>
@@ -1,4 +0,0 @@
1
- <div class="column dynamic-map-instructions">
2
- <h3><%= t(".instructions") %></h3>
3
- <p><%= t(".description") %></p>
4
- </div>
@@ -1,48 +0,0 @@
1
- <%= render partial: "decidim/shared/filter_form_help", locals: { skip_to_id: "proposals" } %>
2
-
3
- <%= filter_form_for filter do |form| %>
4
- <div class="filters__section">
5
- <div class="filters__search">
6
- <div class="input-group">
7
- <%= form.search_field :search_text_cont, label: false, class: "input-group-field", placeholder: t(".search"), title: t(".search"), "aria-label": t(".search"), data: { disable_dynamic_change: true } %>
8
- <div class="input-group-button">
9
- <button type="submit" class="button" aria-controls="proposals">
10
- <%= icon "magnifying-glass", aria_label: t(".search"), role: "img" %>
11
- </button>
12
- </div>
13
- </div>
14
- </div>
15
- </div>
16
-
17
- <%= form.hidden_field "state_withdraw", value: params.dig("filter", "state_withdraw") %>
18
-
19
- <% if component_settings.proposal_answering_enabled && current_settings.proposal_answering_enabled %>
20
- <%= form.check_boxes_tree :with_any_state, filter_proposals_state_values, legend_title: t(".state"), "aria-controls": "proposals" %>
21
- <% end %>
22
-
23
- <% if current_component.has_subscopes? %>
24
- <%= form.check_boxes_tree :with_any_scope, filter_scopes_values, legend_title: t(".scope"), "aria-controls": "proposals" %>
25
- <% end %>
26
-
27
- <% if current_component.categories.any? %>
28
- <%= form.check_boxes_tree :with_any_category, filter_categories_values, legend_title: t(".category"), "aria-controls": "proposals" %>
29
- <% end %>
30
-
31
- <% if component_settings.official_proposals_enabled %>
32
- <%= form.check_boxes_tree :with_any_origin, filter_origin_values, legend_title: t(".origin"), "aria-controls": "proposals" %>
33
- <% end %>
34
-
35
- <% if current_user %>
36
- <%= form.collection_radio_buttons :activity, activity_filter_values, :first, :last, { legend_title: t(".activity") }, "aria-controls": "proposals" %>
37
- <% end %>
38
-
39
- <% if @proposals.only_emendations.any? %>
40
- <%= form.collection_radio_buttons :type, filter_type_values, :first, :last, { legend_title: t(".amendment_type") }, "aria-controls": "proposals" %>
41
- <% end %>
42
-
43
- <% if linked_classes_for(Decidim::Proposals::Proposal).any? %>
44
- <%= form.collection_radio_buttons :related_to, linked_classes_filter_values_for(Decidim::Proposals::Proposal), :first, :last, { legend_title: t(".related_to") }, "aria-controls": "proposals" %>
45
- <% end %>
46
-
47
- <%= hidden_field_tag :order, order, id: nil, class: "order_filter" %>
48
- <% end %>
@@ -1,18 +0,0 @@
1
- <div class="filters-controls hide-for-mediumlarge">
2
- <button data-open="filter-box" class="filters-controls__trigger" aria-controls="filter-box" aria-haspopup="dialog">
3
- <%= t ".filter" %>
4
- <%= icon "caret-bottom", class: "icon--small float-right", aria_label: t(".unfold"), role: "img" %>
5
- </button>
6
- </div>
7
-
8
- <div class="reveal" id="filter-box" data-reveal role="dialog" aria-modal="true" aria-labelledby="filter-box-label">
9
- <div class="reveal__header">
10
- <h3 id="filter-box-label" class="reveal__title"><%= t ".filter_by" %>:</h3>
11
- <button class="close-button" data-close aria-label="<%= t(".close_modal") %>" type="button">
12
- <span aria-hidden="true">&times;</span>
13
- </button>
14
- </div>
15
- <div class="filters">
16
- <%= render partial: "filters" %>
17
- </div>
18
- </div>
@@ -1,22 +0,0 @@
1
- <div class="column">
2
- <div class="card card--proposal">
3
- <div class="card__content">
4
- <div class="card__header">
5
- <%= link_to proposal, target: "_blank" do %>
6
- <h5 class="card__title"><%= decidim_html_escape(present(proposal).title).html_safe %></h5>
7
- <% end %>
8
- <%= cell("decidim/coauthorships", proposal, has_actions: false, context: { current_user: current_user }) %>
9
-
10
- <div class="tech-info tech-info--text-left">
11
- <%= t("decidim.proposals.proposals.proposal.creation_date", date: l(proposal.created_at, format: :decidim_short)) %>
12
- </div>
13
- <%= resource_reference(proposal, class: "tech-info--text-left") %>
14
- </div>
15
-
16
- <%== cell("decidim/proposals/proposal_m", proposal).badge %>
17
-
18
- <p><%= strip_tags(render_proposal_body(proposal)).truncate(100) %></p>
19
- <%= cell "decidim/tags", proposal, context: { extra_classes: ["tags--proposal"] } %>
20
- </div>
21
- </div>
22
- </div>
@@ -1,20 +0,0 @@
1
- <div class="columns large-3">
2
- <div class="m-bottom">
3
- <% unless @step == :step_2 %>
4
- <%= link_to proposal_wizard_aside_link_to_back(@step) do %>
5
- <%= icon "chevron-left", class: "icon--small", role: "img", "aria-hidden": true %>
6
- <%= wizard_aside_back_text(@step) %>
7
- <% end %>
8
- <% end %>
9
- </div>
10
- <div class="section">
11
- <p>
12
- <%= wizard_aside_info_text %>
13
- </p>
14
- </div>
15
- <div class="show-for-large">
16
- <div><%= proposal_wizard_steps_title %></div>
17
- <div><%= proposal_wizard_current_step_of(@step) %></div>
18
- <%= proposal_wizard_stepper(@step) %>
19
- </div>
20
- </div>
@@ -1,19 +0,0 @@
1
- <div class="p-s">
2
- <h4><%= t(".document_index") %></h4>
3
- <div class="text-muted">
4
- <% @proposals.each do |proposal| %>
5
- <div class="mb-s">
6
- <p>
7
- <%= link_to resource_locator(proposal).path do %>
8
- <% if proposal.participatory_text_level == "article" %>
9
- <u><%= decidim_html_escape(present(proposal).title) %></u>
10
- <% else %>
11
- <u><%= decidim_html_escape(present(proposal).title) %></u>
12
- <% end %>
13
- <br>
14
- <% end %>
15
- </p>
16
- </div>
17
- <% end %>
18
- </div>
19
- </div>
@@ -1,16 +0,0 @@
1
- <% add_decidim_page_title(t(".title")) %>
2
- <% add_decidim_page_title(versioned_resource.title) %>
3
- <%
4
- if versioned_resource.is_a?(Decidim::Proposals::CollaborativeDraft)
5
- add_decidim_page_title(Decidim::Proposals::CollaborativeDraft.model_name.human(count: 2))
6
- end
7
- %>
8
-
9
- <div class="row">
10
- <%= cell(
11
- "decidim/versions_list",
12
- versioned_resource,
13
- version_path: proc { |version_index| url_for(action: :show, id: version_index) },
14
- i18n_scope: "decidim.proposals.versions.#{item_name.to_s.pluralize}"
15
- ) %>
16
- </div>
@@ -1 +0,0 @@
1
- he:
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class AddValuationAssignmentsCountToDecidimProposalsProposals < ActiveRecord::Migration[6.1]
4
- def change
5
- add_column :decidim_proposals_proposals, :valuation_assignments_count, :integer, default: 0
6
-
7
- reversible do |dir|
8
- dir.up do
9
- Decidim::Proposals::Proposal.reset_column_information
10
- Decidim::Proposals::Proposal.find_each do |record|
11
- Decidim::Proposals::Proposal.reset_counters(record.id, :valuation_assignments)
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- $LOAD_PATH.push File.expand_path("lib", __dir__)
4
-
5
- # Maintain your gem's version:
6
- require "decidim/proposals/version"
7
-
8
- # Describe your gem and declare its dependencies:
9
- Gem::Specification.new do |s|
10
- s.version = Decidim::Proposals.version
11
- s.authors = ["Josep Jaume Rey Peroy", "Marc Riera Casals", "Oriol Gual Oliva"]
12
- s.email = ["josepjaume@gmail.com", "mrc2407@gmail.com", "oriolgual@gmail.com"]
13
- s.license = "AGPL-3.0"
14
- s.homepage = "https://github.com/decidim/decidim"
15
- s.required_ruby_version = "~> 3.0.0"
16
-
17
- s.name = "decidim-proposals"
18
- s.summary = "Decidim proposals module"
19
- s.description = "A proposals component for decidim's participatory spaces."
20
-
21
- s.files = Dir.chdir(__dir__) do
22
- `git ls-files -z`.split("\x0").select do |f|
23
- (File.expand_path(f) == __FILE__) ||
24
- f.start_with?(*%w(app/ config/ db/ lib/ Rakefile README.md))
25
- end
26
- end
27
-
28
- s.add_dependency "decidim-comments", Decidim::Proposals.version
29
- s.add_dependency "decidim-core", Decidim::Proposals.version
30
- s.add_dependency "doc2text", "~> 0.4.5"
31
- s.add_dependency "redcarpet", "~> 3.5", ">= 3.5.1"
32
-
33
- s.add_development_dependency "decidim-admin", Decidim::Proposals.version
34
- s.add_development_dependency "decidim-assemblies", Decidim::Proposals.version
35
- s.add_development_dependency "decidim-budgets", Decidim::Proposals.version
36
- s.add_development_dependency "decidim-conference", Decidim::Proposals.version
37
- s.add_development_dependency "decidim-dev", Decidim::Proposals.version
38
- s.add_development_dependency "decidim-meetings", Decidim::Proposals.version
39
- s.add_development_dependency "decidim-participatory_processes", Decidim::Proposals.version
40
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "decidim/dev/test/rspec_support/capybara_data_picker"
4
-
5
- module Capybara
6
- module ProposalsPicker
7
- include DataPicker
8
-
9
- RSpec::Matchers.define :have_proposals_picked do |expected|
10
- match do |proposals_picker|
11
- data_picker = proposals_picker.data_picker
12
-
13
- expected.each do |proposal|
14
- expect(data_picker).to have_selector(".picker-values div input[value='#{proposal.id}']", visible: :all)
15
- expect(data_picker).to have_selector(:xpath, "//div[contains(@class,'picker-values')]/div/a[text()[contains(.,\"#{translated(proposal.title)}\")]]")
16
- end
17
- end
18
- end
19
-
20
- RSpec::Matchers.define :have_proposals_not_picked do |expected|
21
- match do |proposals_picker|
22
- data_picker = proposals_picker.data_picker
23
-
24
- expected.each do |proposal|
25
- expect(data_picker).not_to have_selector(".picker-values div input[value='#{proposal.id}']", visible: :all)
26
- expect(data_picker).not_to have_selector(:xpath, "//div[contains(@class,'picker-values')]/div/a[text()[contains(.,\"#{translated(proposal.title)}\")]]")
27
- end
28
- end
29
- end
30
-
31
- def proposals_pick(proposals_picker, proposals)
32
- data_picker = proposals_picker.data_picker
33
-
34
- expect(data_picker).to have_selector(".picker-prompt")
35
- data_picker.find(".picker-prompt").click
36
-
37
- proposals.each do |proposal|
38
- data_picker_choose_value(proposal.id)
39
- end
40
- data_picker_close
41
-
42
- expect(proposals_picker).to have_proposals_picked(proposals)
43
- end
44
-
45
- def proposals_remove(proposals_picker, proposals)
46
- data_picker = proposals_picker.data_picker
47
-
48
- proposals.each do |proposal|
49
- data_picker.find("a", text: proposal.title["en"]).find("span").click
50
- end
51
-
52
- expect(proposals_picker).to have_proposals_not_picked(proposals)
53
- end
54
- end
55
- end
56
-
57
- RSpec.configure do |config|
58
- config.include Capybara::ProposalsPicker, type: :system
59
- end