decidim-proposals 0.27.7 → 0.28.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (281) 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 +80 -28
  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 +7 -3
  114. data/app/presenters/decidim/proposals/admin_log/valuation_assignment_presenter.rb +2 -2
  115. data/app/presenters/decidim/proposals/admin_log/value_types/proposal_title_body_presenter.rb +3 -1
  116. data/app/presenters/decidim/proposals/log/resource_presenter.rb +22 -0
  117. data/app/presenters/decidim/proposals/log/valuation_assignment_presenter.rb +1 -1
  118. data/app/presenters/decidim/proposals/proposal_presenter.rb +6 -2
  119. data/app/services/decidim/proposals/diff_renderer.rb +3 -3
  120. data/app/services/decidim/proposals/proposal_builder.rb +6 -6
  121. data/app/views/decidim/proposals/admin/participatory_texts/_article-preview.html.erb +2 -4
  122. data/app/views/decidim/proposals/admin/participatory_texts/_bulk-actions.html.erb +2 -2
  123. data/app/views/decidim/proposals/admin/participatory_texts/index.html.erb +58 -46
  124. data/app/views/decidim/proposals/admin/participatory_texts/new_import.html.erb +31 -33
  125. data/app/views/decidim/proposals/admin/proposal_answers/_form.html.erb +17 -11
  126. data/app/views/decidim/proposals/admin/proposal_notes/_form.html.erb +5 -6
  127. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_notes.html.erb +28 -36
  128. data/app/views/decidim/proposals/admin/proposals/_bulk-actions.html.erb +27 -30
  129. data/app/views/decidim/proposals/admin/proposals/_documents.html.erb +13 -0
  130. data/app/views/decidim/proposals/admin/proposals/_endorsers.html.erb +25 -0
  131. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +70 -90
  132. data/app/views/decidim/proposals/admin/proposals/_meetings.html.erb +13 -0
  133. data/app/views/decidim/proposals/admin/proposals/_photos.html.erb +13 -0
  134. data/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb +31 -25
  135. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_assign_to_valuator.html.erb +3 -3
  136. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_dropdown.html.erb +3 -2
  137. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_merge.html.erb +4 -4
  138. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_publish_answers.html.erb +3 -3
  139. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_recategorize.html.erb +3 -3
  140. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_scope-change.html.erb +4 -8
  141. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_split.html.erb +3 -3
  142. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_unassign_from_valuator.html.erb +3 -3
  143. data/app/views/decidim/proposals/admin/proposals/edit.html.erb +17 -7
  144. data/app/views/decidim/proposals/admin/proposals/index.html.erb +50 -63
  145. data/app/views/decidim/proposals/admin/proposals/new.html.erb +16 -6
  146. data/app/views/decidim/proposals/admin/proposals/publish_answers.js.erb +2 -2
  147. data/app/views/decidim/proposals/admin/proposals/show.html.erb +204 -162
  148. data/app/views/decidim/proposals/admin/proposals/update_attribute.js.erb +5 -6
  149. data/app/views/decidim/proposals/admin/proposals_imports/new.html.erb +48 -34
  150. data/app/views/decidim/proposals/collaborative_drafts/_accept_request_access_form.html.erb +1 -1
  151. data/app/views/decidim/proposals/collaborative_drafts/_actions.html.erb +7 -0
  152. data/app/views/decidim/proposals/collaborative_drafts/_collaborative_draft_aside.html.erb +53 -0
  153. data/app/views/decidim/proposals/collaborative_drafts/_collaborative_drafts.html.erb +12 -13
  154. data/app/views/decidim/proposals/collaborative_drafts/_collaborator_requests.html.erb +8 -12
  155. data/app/views/decidim/proposals/collaborative_drafts/_edit_form_fields.html.erb +26 -54
  156. data/app/views/decidim/proposals/collaborative_drafts/_reject_request_access_form.html.erb +1 -3
  157. data/app/views/decidim/proposals/collaborative_drafts/_request_access_form.html.erb +1 -1
  158. data/app/views/decidim/proposals/collaborative_drafts/edit.html.erb +23 -25
  159. data/app/views/decidim/proposals/collaborative_drafts/index.html.erb +30 -22
  160. data/app/views/decidim/proposals/collaborative_drafts/index.js.erb +0 -5
  161. data/app/views/decidim/proposals/collaborative_drafts/new.html.erb +22 -18
  162. data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +39 -109
  163. data/app/views/decidim/proposals/proposal_votes/update_buttons_and_counters.js.erb +2 -2
  164. data/app/views/decidim/proposals/proposals/_actions.html.erb +13 -0
  165. data/app/views/decidim/proposals/proposals/_edit_form_fields.html.erb +31 -70
  166. data/app/views/decidim/proposals/proposals/_linked_proposals.html.erb +3 -35
  167. data/app/views/decidim/proposals/proposals/_proposal_aside.html.erb +40 -0
  168. data/app/views/decidim/proposals/proposals/_proposals.html.erb +18 -39
  169. data/app/views/decidim/proposals/proposals/_proposals_picker.html.erb +5 -0
  170. data/app/views/decidim/proposals/proposals/_remaining_votes_count.html.erb +3 -3
  171. data/app/views/decidim/proposals/proposals/_vote_button.html.erb +16 -17
  172. data/app/views/decidim/proposals/proposals/_votes_count.html.erb +3 -6
  173. data/app/views/decidim/proposals/proposals/_voting_rules.html.erb +28 -41
  174. data/app/views/decidim/proposals/proposals/_wizard_header.html.erb +19 -25
  175. data/app/views/decidim/proposals/proposals/compare.html.erb +17 -16
  176. data/app/views/decidim/proposals/proposals/complete.html.erb +26 -21
  177. data/app/views/decidim/proposals/proposals/edit.html.erb +32 -27
  178. data/app/views/decidim/proposals/proposals/edit_draft.html.erb +21 -19
  179. data/app/views/decidim/proposals/proposals/index.html.erb +56 -47
  180. data/app/views/decidim/proposals/proposals/index.js.erb +0 -5
  181. data/app/views/decidim/proposals/proposals/new.html.erb +30 -35
  182. data/app/views/decidim/proposals/proposals/participatory_texts/_proposal_vote_button.html.erb +5 -5
  183. data/app/views/decidim/proposals/proposals/participatory_texts/_view_index.html.erb +15 -8
  184. data/app/views/decidim/proposals/proposals/participatory_texts/participatory_text.html.erb +32 -15
  185. data/app/views/decidim/proposals/proposals/preview.html.erb +37 -34
  186. data/app/views/decidim/proposals/proposals/show.html.erb +90 -108
  187. data/app/views/decidim/proposals/versions/show.html.erb +13 -5
  188. data/config/assets.rb +0 -1
  189. data/config/brakeman.ignore +31 -56
  190. data/config/locales/ar.yml +23 -158
  191. data/config/locales/bg.yml +1 -776
  192. data/config/locales/ca.yml +92 -150
  193. data/config/locales/cs.yml +75 -134
  194. data/config/locales/de.yml +72 -130
  195. data/config/locales/el.yml +58 -121
  196. data/config/locales/en.yml +76 -134
  197. data/config/locales/es-MX.yml +77 -135
  198. data/config/locales/es-PY.yml +76 -134
  199. data/config/locales/es.yml +84 -142
  200. data/config/locales/eu.yml +75 -133
  201. data/config/locales/fi-plain.yml +68 -126
  202. data/config/locales/fi.yml +67 -125
  203. data/config/locales/fr-CA.yml +73 -132
  204. data/config/locales/fr.yml +77 -136
  205. data/config/locales/ga-IE.yml +0 -45
  206. data/config/locales/gl.yml +12 -131
  207. data/config/locales/hu.yml +45 -149
  208. data/config/locales/id-ID.yml +9 -114
  209. data/config/locales/is-IS.yml +5 -60
  210. data/config/locales/it.yml +14 -146
  211. data/config/locales/ja.yml +78 -141
  212. data/config/locales/lb.yml +0 -5
  213. data/config/locales/lt.yml +65 -126
  214. data/config/locales/lv.yml +13 -144
  215. data/config/locales/nl.yml +16 -148
  216. data/config/locales/no.yml +11 -134
  217. data/config/locales/pl.yml +16 -239
  218. data/config/locales/pt-BR.yml +14 -199
  219. data/config/locales/pt.yml +11 -142
  220. data/config/locales/ro-RO.yml +12 -146
  221. data/config/locales/ru.yml +5 -70
  222. data/config/locales/sk.yml +19 -145
  223. data/config/locales/sr-CS.yml +0 -23
  224. data/config/locales/sv.yml +26 -145
  225. data/config/locales/tr-TR.yml +16 -150
  226. data/config/locales/uk.yml +5 -70
  227. data/config/locales/zh-CN.yml +9 -135
  228. data/config/locales/zh-TW.yml +35 -107
  229. data/db/migrate/20170307085300_migrate_proposal_reports_data_to_reports.rb +1 -1
  230. data/db/migrate/20230427105700_change_states_on_collaborative_drafts.rb +34 -0
  231. data/db/migrate/20230427105700_change_states_on_proposals.rb +34 -0
  232. data/lib/decidim/api/proposals_type.rb +2 -2
  233. data/lib/decidim/proposals/component.rb +11 -289
  234. data/lib/decidim/proposals/doc_to_markdown.rb +0 -4
  235. data/lib/decidim/proposals/engine.rb +43 -7
  236. data/lib/decidim/proposals/import/proposal_answer_creator.rb +1 -1
  237. data/lib/decidim/proposals/import/proposal_creator.rb +10 -10
  238. data/lib/decidim/proposals/markdown_to_proposals.rb +8 -2
  239. data/lib/decidim/proposals/proposal_serializer.rb +4 -56
  240. data/lib/decidim/proposals/seeds.rb +278 -0
  241. data/lib/decidim/proposals/test/factories.rb +106 -85
  242. data/lib/decidim/proposals/valuatable.rb +1 -2
  243. data/lib/decidim/proposals/version.rb +1 -1
  244. metadata +55 -66
  245. data/app/cells/decidim/proposals/collaborative_draft_m/footer.erb +0 -6
  246. data/app/cells/decidim/proposals/collaborative_draft_m/tags.erb +0 -1
  247. data/app/cells/decidim/proposals/collaborative_draft_m_cell.rb +0 -44
  248. data/app/cells/decidim/proposals/content_blocks/highlighted_proposals/elements.erb +0 -5
  249. data/app/cells/decidim/proposals/content_blocks/highlighted_proposals/heading.erb +0 -1
  250. data/app/cells/decidim/proposals/proposal_link_to_rejected_emendation/show.erb +0 -9
  251. data/app/cells/decidim/proposals/proposal_m/footer.erb +0 -26
  252. data/app/cells/decidim/proposals/proposal_m/tags.erb +0 -1
  253. data/app/cells/decidim/proposals/proposal_m_cell.rb +0 -151
  254. data/app/cells/decidim/proposals/proposal_tags/show.erb +0 -33
  255. data/app/cells/decidim/proposals/proposal_tags_cell.rb +0 -35
  256. data/app/cells/decidim/proposals/proposals_picker/proposals.erb +0 -12
  257. data/app/controllers/concerns/decidim/proposals/admin/picker.rb +0 -21
  258. data/app/controllers/decidim/proposals/widgets_controller.rb +0 -29
  259. data/app/helpers/decidim/proposals/admin/filterable_helper.rb +0 -17
  260. data/app/helpers/decidim/proposals/admin/proposals_picker_helper.rb +0 -30
  261. data/app/packs/src/decidim/proposals/admin/proposals_picker.js +0 -50
  262. data/app/packs/stylesheets/decidim/proposals/_proposals.scss +0 -1
  263. data/app/packs/stylesheets/decidim/proposals/proposals/_preview.scss +0 -3
  264. data/app/views/decidim/proposals/collaborative_drafts/_count.html.erb +0 -1
  265. data/app/views/decidim/proposals/collaborative_drafts/_filters.html.erb +0 -32
  266. data/app/views/decidim/proposals/collaborative_drafts/_filters_small_view.html.erb +0 -18
  267. data/app/views/decidim/proposals/collaborative_drafts/_new_collaborative_draft_button.html.erb +0 -11
  268. data/app/views/decidim/proposals/collaborative_drafts/_wizard_aside.html.erb +0 -13
  269. data/app/views/decidim/proposals/collaborative_drafts/_wizard_header.html.erb +0 -14
  270. data/app/views/decidim/proposals/proposals/_count.html.erb +0 -1
  271. data/app/views/decidim/proposals/proposals/_dynamic_map_instructions.html.erb +0 -4
  272. data/app/views/decidim/proposals/proposals/_filters.html.erb +0 -48
  273. data/app/views/decidim/proposals/proposals/_filters_small_view.html.erb +0 -18
  274. data/app/views/decidim/proposals/proposals/_proposal_similar.html.erb +0 -22
  275. data/app/views/decidim/proposals/proposals/_wizard_aside.html.erb +0 -20
  276. data/app/views/decidim/proposals/proposals/participatory_texts/_index.html.erb +0 -19
  277. data/app/views/decidim/proposals/versions/index.html.erb +0 -16
  278. data/config/locales/he-IL.yml +0 -1
  279. data/db/migrate/20240404202756_add_valuation_assignments_count_to_decidim_proposals_proposals.rb +0 -16
  280. data/decidim-proposals.gemspec +0 -40
  281. data/lib/decidim/proposals/test/capybara_proposals_picker.rb +0 -59
@@ -2,53 +2,39 @@ import attachGeocoding from "src/decidim/geocoding/attach_input"
2
2
  import getCoordinateInputName from "src/decidim/geocoding/coordinate_input";
3
3
 
4
4
  $(() => {
5
- const $checkbox = $("input:checkbox[name$='[has_address]']");
6
- const $addressInput = $("#address_input");
7
- const $addressInputField = $("input", $addressInput);
8
5
  const $map = $("#address_map");
9
- let latFieldName = "latitude";
10
- let longFieldName = "longitude";
6
+ const $addressInputField = $("[data-decidim-geocoding]");
11
7
 
12
- if ($addressInputField.length > 0) {
13
- latFieldName = getCoordinateInputName("latitude", $addressInputField, {})
14
- longFieldName = getCoordinateInputName("longitude", $addressInputField, {})
15
- }
8
+ if ($map.length) {
9
+ if (!$addressInputField.data("coordinates")) {
10
+ $map.hide();
11
+ }
12
+ $addressInputField.on("geocoder-suggest-coordinates.decidim", () => $map.show());
16
13
 
17
- $map.hide();
14
+ let latFieldName = "latitude";
15
+ let longFieldName = "longitude";
18
16
 
19
- if ($checkbox.length > 0) {
20
- const toggleInput = () => {
21
- if ($checkbox[0].checked) {
22
- $addressInput.show();
23
- $addressInputField.prop("disabled", false);
24
- } else {
25
- $addressInput.hide();
26
- $addressInputField.prop("disabled", true);
27
- }
17
+ if ($addressInputField.length > 0) {
18
+ latFieldName = getCoordinateInputName("latitude", $addressInputField, {})
19
+ longFieldName = getCoordinateInputName("longitude", $addressInputField, {})
28
20
  }
29
- toggleInput();
30
- $checkbox.on("change", toggleInput);
31
- }
32
21
 
33
- if ($addressInput.length > 0) {
34
- if ($checkbox[0].checked) {
35
- $map.show();
36
- }
22
+ $("[data-decidim-map]").on("ready.decidim", (event) => {
23
+ const ctrl = $(event.target).data("map-controller");
37
24
 
38
- const ctrl = $("[data-decidim-map]").data("map-controller");
39
- ctrl.setEventHandler("coordinates", (ev) => {
40
- $(`input[name='${latFieldName}']`).val(ev.lat);
41
- $(`input[name='${longFieldName}']`).val(ev.lng);
42
- });
25
+ ctrl.setEventHandler("coordinates", (ev) => {
26
+ $(`input[name='${latFieldName}']`).val(ev.lat);
27
+ $(`input[name='${longFieldName}']`).val(ev.lng);
28
+ });
43
29
 
44
- attachGeocoding($addressInputField, null, (coordinates) => {
45
- $map.show();
46
- // Remove previous marker when user updates address in address field
47
- ctrl.removeMarker();
48
- ctrl.addMarker({
49
- latitude: coordinates[0],
50
- longitude: coordinates[1],
51
- address: $addressInput.val()
30
+ attachGeocoding($addressInputField, null, (coordinates) => {
31
+ // Remove previous marker when user updates address in address field
32
+ ctrl.removeMarker();
33
+ ctrl.addMarker({
34
+ latitude: coordinates[0],
35
+ longitude: coordinates[1],
36
+ address: $addressInputField.val()
37
+ });
52
38
  });
53
39
  });
54
40
  }
@@ -47,12 +47,6 @@ $(() => {
47
47
  }
48
48
  }
49
49
 
50
- const resetForms = function() {
51
- $("#js-bulk-actions-dropdown button").each(function() {
52
- $(`#js-form-${$(this).data("action")}`)[0].reset();
53
- })
54
- }
55
-
56
50
  const showOtherActionsButtons = function() {
57
51
  $("#js-other-actions-wrapper").removeClass("hide");
58
52
  }
@@ -74,7 +68,6 @@ $(() => {
74
68
  window.showOtherActionsButtons = showOtherActionsButtons;
75
69
  window.hideOtherActionsButtons = hideOtherActionsButtons;
76
70
  window.hideBulkActionForms = hideBulkActionForms;
77
- window.resetForms = resetForms;
78
71
 
79
72
  if ($(".js-bulk-action-form").length) {
80
73
  hideBulkActionForms();
@@ -0,0 +1,20 @@
1
+ import TomSelect from "tom-select/dist/cjs/tom-select.popular";
2
+
3
+ document.addEventListener("DOMContentLoaded", () => {
4
+ const tagContainers = document.querySelectorAll("#proposals_list");
5
+ tagContainers.forEach((container) => {
6
+ const { tmName, tmItems, tmNoResults } = container.dataset
7
+ const config = {
8
+ plugins: ["remove_button", "dropdown_input"],
9
+ allowEmptyOption: true,
10
+ items: JSON.parse(tmItems),
11
+ render: {
12
+ item: (data, escape) => `<div>${escape(data.text)}<input type="hidden" name="${tmName}[]" value="${data.value}" /></div>`,
13
+ // eslint-disable-next-line camelcase
14
+ ...(tmNoResults && { no_results: () => `<div class="no-results">${tmNoResults}</div>` })
15
+ }
16
+ };
17
+
18
+ return new TomSelect(container, config)
19
+ })
20
+ });
@@ -0,0 +1,97 @@
1
+ @import "tom-select/dist/scss/tom-select";
2
+
3
+ .proposal-list {
4
+ &__aside {
5
+ &__button-container {
6
+ @apply flex flex-col gap-4 md:gap-10 w-full;
7
+ }
8
+ }
9
+
10
+ &__map {
11
+ /* negative main padding values */
12
+ @apply md:-ml-16 -mt-6 md:-mt-12 aspect-square md:aspect-[21/9] [&>*]:h-full [&+*]:mt-6 md:[&+*]:mt-12;
13
+ }
14
+ }
15
+
16
+ .proposal {
17
+ &__cost {
18
+ @apply space-y-3 bg-background rounded p-4 text-black;
19
+
20
+ &-period {
21
+ @apply text-gray-2 uppercase text-sm;
22
+ }
23
+ }
24
+
25
+ &__aside {
26
+ &-vote {
27
+ @apply flex flex-row-reverse md:flex-col gap-4 items-center md:items-stretch justify-between first:[&>*]:grow last:[&>*]:w-1/4 md:last:[&>*]:w-auto;
28
+ }
29
+ }
30
+
31
+ &__container {
32
+ [data-decidim-map] {
33
+ @apply aspect-[5/1];
34
+ }
35
+ }
36
+ }
37
+
38
+ .proposal-participatory {
39
+ &__heading {
40
+ @apply pb-6 border-b-4 border-background font-sans font-semibold text-xl md:text-3xl;
41
+ }
42
+
43
+ &__section {
44
+ @apply p-4 rounded hover:bg-background-4 space-y-4 transition;
45
+ }
46
+
47
+ &__section + &__section {
48
+ @apply mt-2;
49
+ }
50
+
51
+ &__title {
52
+ @apply block font-semibold text-xl text-secondary;
53
+ }
54
+
55
+ &__text {
56
+ @apply text-md text-gray-2;
57
+ }
58
+
59
+ &__button {
60
+ @apply inline-flex items-center gap-1 px-0 md:px-6 border-gray-3 border-0 md:border-r first:pl-0 last:pr-0 last:border-r-0 text-sm text-secondary;
61
+
62
+ & > span {
63
+ @apply underline;
64
+ }
65
+
66
+ & > svg {
67
+ @apply w-3.5 h-3.5 fill-current text-gray;
68
+ }
69
+ }
70
+
71
+ &__section:hover &__title {
72
+ @apply underline;
73
+ }
74
+
75
+ &__section:hover .label {
76
+ @apply text-white bg-secondary;
77
+ }
78
+ }
79
+
80
+ /* overwrite tom-select defaults */
81
+ .ts {
82
+ &-control {
83
+ @apply border-gray text-md min-h-[40px];
84
+
85
+ input {
86
+ @apply font-normal text-black text-md;
87
+ }
88
+ }
89
+
90
+ &-dropdown {
91
+ @apply text-md text-gray-2 font-normal;
92
+
93
+ .active {
94
+ @apply text-white bg-secondary;
95
+ }
96
+ }
97
+ }
@@ -72,7 +72,7 @@ module Decidim
72
72
  end
73
73
 
74
74
  def user_valuator_role
75
- @user_valuator_role ||= space.user_roles(:valuator).find_by(user: user)
75
+ @user_valuator_role ||= space.user_roles(:valuator).find_by(user:)
76
76
  end
77
77
 
78
78
  def user_is_valuator?
@@ -84,7 +84,7 @@ module Decidim
84
84
  def valuator_assigned_to_proposal?
85
85
  @valuator_assigned_to_proposal ||=
86
86
  Decidim::Proposals::ValuationAssignment
87
- .where(proposal: proposal, valuator_role: user_valuator_role)
87
+ .where(proposal:, valuator_role: user_valuator_role)
88
88
  .any?
89
89
  end
90
90
 
@@ -112,7 +112,7 @@ module Decidim
112
112
  component_settings.participatory_texts_enabled?
113
113
  end
114
114
 
115
- # There's no special condition to create proposal notes, only
115
+ # There is no special condition to create proposal notes, only
116
116
  # users with access to the admin section can do it.
117
117
  def can_create_proposal_note?
118
118
  allow! if permission_action.subject == :proposal_note
@@ -4,7 +4,6 @@ module Decidim
4
4
  module Proposals
5
5
  class Permissions < Decidim::DefaultPermissions
6
6
  def permissions
7
- allow_embed_proposal?
8
7
  return permission_action unless user
9
8
 
10
9
  # Delegate the admin permission checks to the admin permissions class
@@ -48,14 +47,6 @@ module Decidim
48
47
  @proposal ||= context.fetch(:proposal, nil) || context.fetch(:resource, nil)
49
48
  end
50
49
 
51
- # As this is a public action, we need to run this before other checks
52
- def allow_embed_proposal?
53
- return unless permission_action.action == :embed && permission_action.subject == :proposal && proposal
54
- return disallow! if proposal.withdrawn?
55
-
56
- allow!
57
- end
58
-
59
50
  def voting_enabled?
60
51
  return unless current_settings
61
52
 
@@ -71,7 +62,7 @@ module Decidim
71
62
  def remaining_votes
72
63
  return 1 unless vote_limit_enabled?
73
64
 
74
- proposals = Proposal.where(component: component)
65
+ proposals = Proposal.where(component:)
75
66
  votes_count = ProposalVote.where(author: user, proposal: proposals).size
76
67
  component_settings.vote_limit - votes_count
77
68
  end
@@ -6,8 +6,8 @@ module Decidim
6
6
  # This class holds the logic to present a `Decidim::Proposals::ProposalNote`
7
7
  # for the `AdminLog` log.
8
8
  #
9
- # Usage should be automatic and you shouldn't need to call this class
10
- # directly, but here's an example:
9
+ # Usage should be automatic and you should not need to call this class
10
+ # directly, but here is an example:
11
11
  #
12
12
  # action_log = Decidim::ActionLog.last
13
13
  # view_helpers # => this comes from the views
@@ -6,8 +6,8 @@ module Decidim
6
6
  # This class holds the logic to present a `Decidim::Proposals::Proposal`
7
7
  # for the `AdminLog` log.
8
8
  #
9
- # Usage should be automatic and you shouldn't need to call this class
10
- # directly, but here's an example:
9
+ # Usage should be automatic and you should not need to call this class
10
+ # directly, but here is an example:
11
11
  #
12
12
  # action_log = Decidim::ActionLog.last
13
13
  # view_helpers # => this comes from the views
@@ -15,9 +15,13 @@ module Decidim
15
15
  class ProposalPresenter < Decidim::Log::BasePresenter
16
16
  private
17
17
 
18
+ def resource_presenter
19
+ @resource_presenter ||= Decidim::Proposals::Log::ResourcePresenter.new(action_log.resource, h, action_log.extra["resource"])
20
+ end
21
+
18
22
  def diff_fields_mapping
19
23
  {
20
- title: :i18n,
24
+ title: "Decidim::Proposals::AdminLog::ValueTypes::ProposalTitleBodyPresenter",
21
25
  body: "Decidim::Proposals::AdminLog::ValueTypes::ProposalTitleBodyPresenter",
22
26
  state: "Decidim::Proposals::AdminLog::ValueTypes::ProposalStatePresenter",
23
27
  answered_at: :date,
@@ -6,8 +6,8 @@ module Decidim
6
6
  # This class holds the logic to present a `Decidim::Proposals::ValuationAssignment`
7
7
  # for the `AdminLog` log.
8
8
  #
9
- # Usage should be automatic and you shouldn't need to call this class
10
- # directly, but here's an example:
9
+ # Usage should be automatic and you should not need to call this class
10
+ # directly, but here is an example:
11
11
  #
12
12
  # action_log = Decidim::ActionLog.last
13
13
  # view_helpers # => this comes from the views
@@ -5,10 +5,12 @@ module Decidim
5
5
  module AdminLog
6
6
  module ValueTypes
7
7
  class ProposalTitleBodyPresenter < Decidim::Log::ValueTypes::DefaultPresenter
8
+ include Decidim::TranslatableAttributes
9
+
8
10
  def present
9
11
  return unless value
10
12
 
11
- translated_value = h.decidim_escape_translated(value)
13
+ translated_value = translated_attribute(value)
12
14
  return if translated_value.blank?
13
15
 
14
16
  renderer = Decidim::ContentRenderers::HashtagRenderer.new(translated_value)
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Proposals
5
+ module Log
6
+ class ResourcePresenter < Decidim::Log::ResourcePresenter
7
+ private
8
+
9
+ # Private: Presents resource name.
10
+ #
11
+ # Returns an HTML-safe String.
12
+ def present_resource_name
13
+ if resource.present?
14
+ Decidim::Proposals::ProposalPresenter.new(resource).title
15
+ else
16
+ super
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -11,7 +11,7 @@ module Decidim
11
11
  # Returns an HTML-safe String.
12
12
  def present_resource_name
13
13
  if resource.present?
14
- resource.proposal.presenter.title(html_escape: true)
14
+ Decidim::Proposals::ProposalPresenter.new(resource.proposal).title
15
15
  else
16
16
  super
17
17
  end
@@ -40,11 +40,11 @@ module Decidim
40
40
  def title(links: false, extras: true, html_escape: false, all_locales: false)
41
41
  return unless proposal
42
42
 
43
- super proposal.title, links, html_escape, all_locales, extras: extras
43
+ super proposal.title, links, html_escape, all_locales, extras:
44
44
  end
45
45
 
46
46
  def id_and_title(links: false, extras: true, html_escape: false)
47
- "##{proposal.id} - #{title(links: links, extras: extras, html_escape: html_escape)}"
47
+ "##{proposal.id} - #{title(links:, extras:, html_escape:)}"
48
48
  end
49
49
 
50
50
  def body(links: false, extras: true, strip_tags: false, all_locales: false)
@@ -53,6 +53,10 @@ module Decidim
53
53
  content_handle_locale(proposal.body, all_locales, extras, links, strip_tags)
54
54
  end
55
55
 
56
+ def editor_body(all_locales: false, extras: true)
57
+ editor_locales(proposal.body, all_locales, extras:)
58
+ end
59
+
56
60
  # Returns the proposal versions, hiding not published answers
57
61
  #
58
62
  # Returns an Array.
@@ -29,10 +29,10 @@ module Decidim
29
29
 
30
30
  diff.update(
31
31
  attribute => {
32
- type: type,
32
+ type:,
33
33
  label: I18n.t(attribute, scope: i18n_scope),
34
- old_value: old_value,
35
- new_value: new_value
34
+ old_value:,
35
+ new_value:
36
36
  }
37
37
  )
38
38
  end
@@ -82,15 +82,15 @@ module Decidim
82
82
  proposal = if author.nil?
83
83
  create_with_authors(
84
84
  attributes: origin_attributes,
85
- original_proposal: original_proposal,
86
- action_user: action_user
85
+ original_proposal:,
86
+ action_user:
87
87
  )
88
88
  else
89
89
  create(
90
90
  attributes: origin_attributes,
91
- author: author,
92
- user_group_author: user_group_author,
93
- action_user: action_user
91
+ author:,
92
+ user_group_author:,
93
+ action_user:
94
94
  )
95
95
  end
96
96
 
@@ -122,7 +122,7 @@ module Decidim
122
122
 
123
123
  new_attachment.save!
124
124
  rescue Errno::ENOENT, OpenURI::HTTPError => e
125
- Rails.logger.warn("[ERROR] Couldn't copy attachment from proposal #{original_proposal.id} when copying to component due to #{e.message}")
125
+ Rails.logger.warn("[ERROR] Could not copy attachment from proposal #{original_proposal.id} when copying to component due to #{e.message}")
126
126
  end
127
127
  end
128
128
 
@@ -3,11 +3,9 @@
3
3
  <%= form.hidden_field :position, class: "position" %>
4
4
  <%= form.text_field :title, required: true %>
5
5
  </div>
6
- </div>
7
- <% if proposal.article? %>
8
- <div class="grid-x">
6
+ <% if proposal.article? %>
9
7
  <div class="cell">
10
8
  <%= form.text_area :body, required: true, rows: 5 %>
11
9
  </div>
10
+ <% end %>
12
11
  </div>
13
- <% end %>
@@ -1,2 +1,2 @@
1
- <%= link_to t(".discard_all"), discard_participatory_texts_path, method: "POST", id: "discard-all", class: "button tiny button--title alert", data: { confirm: t(".are_you_sure") } %>
2
- <%= link_to t(".import_doc"), new_import_participatory_texts_path, id: "import-doc", class: "button tiny button--title" %>
1
+ <%= link_to t(".discard_all"), discard_participatory_texts_path, method: "POST", id: "discard-all", class: "button button__sm button__secondary alert", data: { confirm: t(".are_you_sure") } %>
2
+ <%= link_to t(".import_doc"), new_import_participatory_texts_path, id: "import-doc", class: "button button__sm button__secondary" %>
@@ -1,54 +1,66 @@
1
- <%= decidim_form_for(@preview_form, url: participatory_texts_path, class: "form grid-container") do |form| %>
2
- <div class="card">
3
- <div class="card-divider">
4
- <h2 class="card-title">
5
- <%= t(".title") %>
6
- <%= render partial: "bulk-actions" %>
7
- </h2>
8
- </div>
9
- <div class="card-section">
10
- <% if @drafts.any? %>
11
- <p><%= t(".info_1") %></p>
12
- <ul id="participatory-text" class="accordion js-sortable mb-m"
13
- data-accordion
14
- data-multi-expand="true"
15
- data-allow-all-closed="true">
16
- <%= form.fields_for(:proposals) do |prop_form| %>
17
- <% proposal= @drafts[prop_form.index] %>
18
- <li class="accordion-item <%= proposal.article? ? "is-active" : nil %>" data-accordion-item>
19
- <a href="#" class="accordion-title flex--sbc"><%= preview_participatory_text_section_title(proposal) %><span class="mr-m"><%= icon "menu", class: "icon--small", role: "img", "aria-hidden": true %></span></a>
20
- <div class="accordion-content" data-tab-content>
21
- <%= render "article-preview", { form: prop_form, proposal: proposal } %>
22
- </div>
23
- </li>
24
- <% end %>
25
- </ul>
26
- <% end -%>
27
- </div>
1
+ <% add_decidim_page_title(t(".title")) %>
2
+
3
+ <div class="item_show__header">
4
+ <h2 class="item_show__header-title">
5
+ <%= t(".title") %>
6
+ <%= render partial: "bulk-actions" %>
7
+ </h2>
28
8
  </div>
29
9
  <% if @drafts.any? %>
30
- <div class="button--double form-general-submit">
31
- <%= form.submit t(".save_draft"), name: :save_draft, class: "button" %>
32
- <%= form.submit t(".publish_document"), class: "button success" %>
10
+ <div class="item__edit item__edit-1col">
11
+ <div class="item__edit-form">
12
+ <%= decidim_form_for(@preview_form, url: participatory_texts_path, html: { class: "form-defaults form grid-container" }) do |form| %>
13
+ <div class="form__wrapper">
14
+ <div class="card">
15
+ <div class="row column">
16
+ <p class="mt-3"><%= t(".info_1") %></p>
17
+ <ul id="participatory-text" class="draggable-list js-connect js-list-actives accordion mb-m mt-2.5 ml-2.5 mr-2.5"
18
+ data-accordion
19
+ data-sort-url="#"
20
+ data-multi-expand="true"
21
+ data-allow-all-closed="true">
22
+ <%= form.fields_for(:proposals) do |prop_form| %>
23
+ <% proposal = @drafts[prop_form.index] %>
24
+
25
+ <li class="py-4 draggable-content <%= proposal.article? ? "is-active" : nil %>" data-accordion-item draggable="true">
26
+ <a href="#" class="accordion-title font-bold mt-5"><%= preview_participatory_text_section_title(proposal) %>
27
+ <span class="mr-m"><%= icon "menu-line", class: "fill-black" %></span>
28
+ </a>
29
+ <div class="accordion-content" data-tab-content>
30
+ <%= render "article-preview", { form: prop_form, proposal: } %>
31
+ </div>
32
+ </li>
33
+ <% end %>
34
+ </ul>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ <div class="item__edit-sticky">
39
+ <div class="item__edit-sticky-container">
40
+ <%= form.submit t(".save_draft"), name: :save_draft, class: "button button__sm button__secondary" %>
41
+ <%= form.submit t(".publish_document"), class: "button button__sm button__secondary" %>
42
+ </div>
43
+ </div>
44
+ <% end -%>
45
+ </div>
33
46
  </div>
34
47
  <% end %>
35
- <% end -%>
36
48
  <script>
37
- $(window).on("load", function() {
38
- // Not all browsers submit the buttons as form data.
39
- $('button[name="save_draft"]').on("click", function(ev) {
40
- ev.preventDefault();
49
+ $(window).on("load", function() {
50
+ // Not all browsers submit the buttons as form data.
51
+ $("button[name=\"save_draft\"]").on("click", function(ev) {
52
+ ev.preventDefault();
41
53
 
42
- var $form = $(this).parents("form");
43
- $form.append('<input type="hidden" name="save_draft" value="true" />');
44
- $form.submit();
54
+ var $form = $(this).parents("form");
55
+ $form.append("<input type=\"hidden\" name=\"save_draft\" value=\"true\" />");
56
+ $form.submit();
57
+ });
58
+ $("#participatory-text").on("sortupdate",
59
+ function(event, ui) {
60
+ $("#participatory-text li").each(function(idx, li) {
61
+ input = $(li).find("input.position").val(idx + 1);
62
+ });
63
+ }
64
+ );
45
65
  });
46
- $( "#participatory-text" ).on( "sortupdate",
47
- function( event, ui ) {
48
- $('#participatory-text li').each(function(idx, li) {
49
- input= $(li).find("input.position").val(idx+1)
50
- })
51
- }
52
- )
53
- })
54
66
  </script>
@@ -1,39 +1,37 @@
1
- <%= decidim_form_for(@import, url: import_participatory_texts_path, class: "form grid-container") do |form| %>
2
- <div class="card">
3
- <div class="card-divider">
4
- <h2 class="card-title"><%= t(".title") %></h2>
5
- </div>
6
- <div class="card-section">
7
- <div class="grid-x">
8
- <div class="cell">
9
- <div id="import-title" class="row column">
10
- <%= form.translated :text_field, :title, autofocus: true %>
1
+ <% add_decidim_page_title(t(".title")) %>
2
+ <div class="item_show__header">
3
+ <h2 class="item_show__header-title">
4
+ <%= t(".title") %>
5
+ </h2>
6
+ </div>
7
+ <div class="item__edit item__edit-1col">
8
+ <div class="item__edit-form">
9
+ <%= decidim_form_for(@import, url: import_participatory_texts_path, html: { class: "form form-defaults grid-container" }) do |form| %>
10
+ <div class="form__wrapper">
11
+ <div class="card pt-4">
12
+ <div class="card-section">
13
+ <div id="import-title" class="row column">
14
+ <%= form.translated :text_field, :title, autofocus: true, aria: { label: :title } %>
15
+ </div>
16
+
17
+ <div id="import-desc" class="row column">
18
+ <%= form.translated :text_area, :description, aria: { label: :description } %>
19
+ </div>
20
+
21
+ <div class="row column">
22
+ <%= form.upload :document, label: t(".document_legend", valid_mime_types: mime_types_with_document_examples).html_safe, button_class: "button button__sm button__transparent-secondary" %>
23
+ </div>
11
24
  </div>
12
25
  </div>
13
- </div>
14
- <div class="grid-x">
15
- <div class="cell">
16
- <div id="import-desc" class="row column">
17
- <%= form.translated :text_area, :description %>
26
+ <div class="item__edit-sticky">
27
+ <div class="item__edit-sticky-container">
28
+ <div class="flex-col-reverse md:flex-row justify-between text-white">
29
+ <%= t(".bottom_hint") %>
30
+ <%= form.submit t(".upload_document"), class: "button button__sm button__secondary" %>
31
+ </div>
18
32
  </div>
19
33
  </div>
20
34
  </div>
21
- <div class="grid-x">
22
- <div class="cell">
23
- <fieldset>
24
- <legend> <%= t(".document_legend", valid_mime_types: mime_types_with_document_examples).html_safe %> </legend>
25
- <div class="row column">
26
- <%= form.upload :document, required: true %>
27
- </div>
28
- </fieldset>
29
- </div>
30
- </div>
31
- </div>
32
- </div>
33
- <div class="grid-x align-center mt-sm">
34
- <%= form.submit t(".upload_document") %>
35
- </div>
36
- <div class="grid-x align-center">
37
- <%= t(".bottom_hint") %>
35
+ <% end -%>
38
36
  </div>
39
- <% end -%>
37
+ </div>