decidim-proposals 0.29.4 → 0.30.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/proposals/highlighted_proposals_for_component/show.erb +13 -1
  3. data/app/cells/decidim/proposals/highlighted_proposals_for_component_cell.rb +1 -1
  4. data/app/cells/decidim/proposals/participatory_text_proposal_cell.rb +1 -1
  5. data/app/cells/decidim/proposals/proposal_g/show.erb +13 -0
  6. data/app/cells/decidim/proposals/proposal_g_cell.rb +13 -0
  7. data/app/cells/decidim/proposals/proposal_history_cell.rb +107 -0
  8. data/app/cells/decidim/proposals/proposal_l/show.erb +37 -0
  9. data/app/cells/decidim/proposals/proposal_l_cell.rb +9 -0
  10. data/app/cells/decidim/proposals/proposal_metadata_cell.rb +2 -2
  11. data/app/cells/decidim/proposals/proposal_vote/show.erb +75 -0
  12. data/app/cells/decidim/proposals/proposal_vote_cell.rb +43 -0
  13. data/app/commands/decidim/proposals/accept_coauthorship.rb +62 -0
  14. data/app/commands/decidim/proposals/admin/assign_proposals_to_valuator.rb +14 -0
  15. data/app/commands/decidim/proposals/admin/create_proposal.rb +6 -14
  16. data/app/commands/decidim/proposals/admin/create_proposal_note.rb +20 -11
  17. data/app/commands/decidim/proposals/admin/import_proposals.rb +60 -7
  18. data/app/commands/decidim/proposals/admin/merge_proposals.rb +2 -2
  19. data/app/commands/decidim/proposals/admin/proposal_notes_methods.rb +48 -0
  20. data/app/commands/decidim/proposals/admin/reply_proposal_note.rb +92 -0
  21. data/app/commands/decidim/proposals/admin/split_proposals.rb +2 -2
  22. data/app/commands/decidim/proposals/admin/update_proposal.rb +10 -16
  23. data/app/commands/decidim/proposals/admin/update_proposal_taxonomies.rb +34 -0
  24. data/app/commands/decidim/proposals/cancel_coauthorship.rb +32 -0
  25. data/app/commands/decidim/proposals/create_collaborative_draft.rb +1 -2
  26. data/app/commands/decidim/proposals/create_proposal.rb +1 -2
  27. data/app/commands/decidim/proposals/invite_coauthor.rb +45 -0
  28. data/app/commands/decidim/proposals/publish_collaborative_draft.rb +1 -2
  29. data/app/commands/decidim/proposals/reject_coauthorship.rb +54 -0
  30. data/app/commands/decidim/proposals/update_collaborative_draft.rb +1 -2
  31. data/app/commands/decidim/proposals/update_proposal.rb +1 -2
  32. data/app/controllers/concerns/decidim/proposals/admin/filterable.rb +5 -1
  33. data/app/controllers/concerns/decidim/proposals/admin/needs_interpolations.rb +40 -0
  34. data/app/controllers/decidim/proposals/admin/proposal_answers_controller.rb +46 -5
  35. data/app/controllers/decidim/proposals/admin/proposal_notes_controller.rb +18 -0
  36. data/app/controllers/decidim/proposals/admin/proposals_controller.rb +41 -85
  37. data/app/controllers/decidim/proposals/admin/proposals_imports_controller.rb +2 -2
  38. data/app/controllers/decidim/proposals/collaborative_drafts_controller.rb +2 -4
  39. data/app/controllers/decidim/proposals/invite_coauthors_controller.rb +87 -0
  40. data/app/controllers/decidim/proposals/proposals_controller.rb +7 -32
  41. data/app/controllers/decidim/proposals/versions_controller.rb +1 -1
  42. data/app/events/decidim/proposals/accepted_coauthorship_event.rb +8 -0
  43. data/app/events/decidim/proposals/admin/proposal_assigned_to_valuator_event.rb +27 -0
  44. data/app/events/decidim/proposals/admin/proposal_note_created_event.rb +5 -0
  45. data/app/events/decidim/proposals/coauthor_accepted_invite_event.rb +49 -0
  46. data/app/events/decidim/proposals/coauthor_invited_event.rb +45 -0
  47. data/app/events/decidim/proposals/coauthor_rejected_invite_event.rb +8 -0
  48. data/app/events/decidim/proposals/rejected_coauthorship_event.rb +8 -0
  49. data/app/events/decidim/proposals/update_proposal_taxonomies_event.rb +9 -0
  50. data/app/forms/decidim/proposals/admin/proposal_answer_form.rb +16 -0
  51. data/app/forms/decidim/proposals/admin/proposal_base_form.rb +3 -31
  52. data/app/forms/decidim/proposals/admin/proposal_form.rb +11 -6
  53. data/app/forms/decidim/proposals/admin/proposals_import_form.rb +0 -5
  54. data/app/forms/decidim/proposals/collaborative_draft_form.rb +0 -8
  55. data/app/forms/decidim/proposals/proposal_form.rb +5 -32
  56. data/app/helpers/decidim/proposals/admin/proposal_bulk_actions_helper.rb +25 -0
  57. data/app/helpers/decidim/proposals/admin/proposals_helper.rb +0 -1
  58. data/app/helpers/decidim/proposals/application_helper.rb +23 -15
  59. data/app/helpers/decidim/proposals/collaborative_draft_helper.rb +7 -7
  60. data/app/helpers/decidim/proposals/map_helper.rb +0 -18
  61. data/app/helpers/decidim/proposals/proposal_votes_helper.rb +15 -2
  62. data/app/helpers/decidim/proposals/proposals_helper.rb +3 -1
  63. data/app/jobs/decidim/proposals/admin/proposal_answer_job.rb +20 -0
  64. data/app/models/decidim/proposals/collaborative_draft.rb +13 -3
  65. data/app/models/decidim/proposals/proposal.rb +71 -5
  66. data/app/models/decidim/proposals/proposal_note.rb +11 -0
  67. data/app/packs/entrypoints/decidim_proposals.js +1 -0
  68. data/app/packs/entrypoints/decidim_proposals_geocoding.js +2 -0
  69. data/app/packs/src/decidim/proposals/admin/proposals.js +16 -1
  70. data/app/packs/src/decidim/proposals/exit_handler.js +73 -0
  71. data/app/packs/stylesheets/decidim/proposals/proposals.scss +248 -3
  72. data/app/permissions/decidim/proposals/admin/permissions.rb +2 -5
  73. data/app/permissions/decidim/proposals/permissions.rb +42 -0
  74. data/app/presenters/decidim/proposals/admin_log/proposal_presenter.rb +1 -1
  75. data/app/presenters/decidim/proposals/proposal_presenter.rb +1 -1
  76. data/app/queries/decidim/proposals/filtered_proposals.rb +2 -2
  77. data/app/queries/decidim/proposals/metrics/accepted_proposals_metric_manage.rb +2 -2
  78. data/app/queries/decidim/proposals/metrics/endorsements_metric_manage.rb +10 -10
  79. data/app/queries/decidim/proposals/metrics/proposal_followers_metric_measure.rb +4 -4
  80. data/app/queries/decidim/proposals/metrics/proposal_participants_metric_measure.rb +6 -6
  81. data/app/queries/decidim/proposals/metrics/proposals_metric_manage.rb +6 -6
  82. data/app/queries/decidim/proposals/metrics/votes_metric_manage.rb +6 -6
  83. data/app/services/decidim/proposals/proposal_builder.rb +1 -2
  84. data/app/views/decidim/proposals/admin/proposal_notes/_form.html.erb +3 -3
  85. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_note.html.erb +28 -0
  86. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_note_reply.html.erb +9 -0
  87. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_notes.html.erb +4 -28
  88. data/app/views/decidim/proposals/admin/proposal_states/_form.html.erb +1 -1
  89. data/app/views/decidim/proposals/admin/proposals/_actions.html.erb +21 -0
  90. data/app/views/decidim/proposals/admin/proposals/_bulk-actions.html.erb +3 -2
  91. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +17 -24
  92. data/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb +12 -28
  93. data/app/views/decidim/proposals/admin/proposals/_proposals-thead.html.erb +45 -0
  94. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_apply_answer_template.html.erb +22 -0
  95. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_dropdown.html.erb +15 -11
  96. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_taxonomy_change.html.erb +23 -0
  97. data/app/views/decidim/proposals/admin/proposals/index.html.erb +17 -48
  98. data/app/views/decidim/proposals/admin/proposals/manage_trash.html.erb +18 -0
  99. data/app/views/decidim/proposals/admin/proposals/publish_answers.js.erb +1 -1
  100. data/app/views/decidim/proposals/admin/proposals/show.html.erb +14 -26
  101. data/app/views/decidim/proposals/admin/proposals/update_attribute.js.erb +1 -1
  102. data/app/views/decidim/proposals/admin/proposals_imports/new.html.erb +0 -3
  103. data/app/views/decidim/proposals/collaborative_drafts/_collaborative_actions.html.erb +9 -0
  104. data/app/views/decidim/proposals/collaborative_drafts/_collaborative_draft_aside.html.erb +0 -15
  105. data/app/views/decidim/proposals/collaborative_drafts/_edit_form_fields.html.erb +4 -6
  106. data/app/views/decidim/proposals/collaborative_drafts/index.html.erb +6 -2
  107. data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +27 -11
  108. data/app/views/decidim/proposals/proposal_votes/update_buttons_and_counters.js.erb +29 -9
  109. data/app/views/decidim/proposals/proposals/_actions.html.erb +4 -7
  110. data/app/views/decidim/proposals/proposals/_edit_form_fields.html.erb +17 -22
  111. data/app/views/decidim/proposals/proposals/_exit_modal.html.erb +17 -0
  112. data/app/views/decidim/proposals/proposals/_notification_alert_box.html.erb +1 -0
  113. data/app/views/decidim/proposals/proposals/_proposal_actions.html.erb +19 -0
  114. data/app/views/decidim/proposals/proposals/_proposal_aside.html.erb +9 -32
  115. data/app/views/decidim/proposals/proposals/_proposal_voting_rules.html.erb +33 -0
  116. data/app/views/decidim/proposals/proposals/_proposals.html.erb +1 -1
  117. data/app/views/decidim/proposals/proposals/_remaining_votes_count.html.erb +2 -2
  118. data/app/views/decidim/proposals/proposals/_remaining_votes_notification.html.erb +12 -0
  119. data/app/views/decidim/proposals/proposals/_update_proposal_voting_rules.html.erb +6 -0
  120. data/app/views/decidim/proposals/proposals/_vote_button.html.erb +12 -8
  121. data/app/views/decidim/proposals/proposals/_votes_count.html.erb +2 -1
  122. data/app/views/decidim/proposals/proposals/_voting_rules.html.erb +1 -7
  123. data/app/views/decidim/proposals/proposals/index.html.erb +3 -18
  124. data/app/views/decidim/proposals/proposals/index.js.erb +1 -1
  125. data/app/views/decidim/proposals/proposals/participatory_texts/_proposal_vote_button.html.erb +3 -1
  126. data/app/views/decidim/proposals/proposals/show.html.erb +35 -15
  127. data/config/locales/ar.yml +22 -73
  128. data/config/locales/bg.yml +16 -90
  129. data/config/locales/bs-BA.yml +6 -13
  130. data/config/locales/ca.yml +209 -84
  131. data/config/locales/cs.yml +215 -81
  132. data/config/locales/de.yml +217 -90
  133. data/config/locales/el.yml +15 -84
  134. data/config/locales/en.yml +206 -81
  135. data/config/locales/es-MX.yml +213 -88
  136. data/config/locales/es-PY.yml +213 -88
  137. data/config/locales/es.yml +214 -89
  138. data/config/locales/eu.yml +292 -168
  139. data/config/locales/fi-plain.yml +217 -88
  140. data/config/locales/fi.yml +217 -88
  141. data/config/locales/fr-CA.yml +120 -98
  142. data/config/locales/fr.yml +119 -97
  143. data/config/locales/ga-IE.yml +1 -21
  144. data/config/locales/gl.yml +11 -45
  145. data/config/locales/hu.yml +16 -69
  146. data/config/locales/id-ID.yml +9 -43
  147. data/config/locales/is-IS.yml +0 -19
  148. data/config/locales/it.yml +14 -77
  149. data/config/locales/ja.yml +167 -106
  150. data/config/locales/lt.yml +18 -85
  151. data/config/locales/lv.yml +14 -52
  152. data/config/locales/nl.yml +15 -61
  153. data/config/locales/no.yml +13 -44
  154. data/config/locales/pl.yml +18 -90
  155. data/config/locales/pt-BR.yml +12 -74
  156. data/config/locales/pt.yml +13 -56
  157. data/config/locales/ro-RO.yml +16 -72
  158. data/config/locales/ru.yml +0 -23
  159. data/config/locales/sk.yml +18 -55
  160. data/config/locales/sr-CS.yml +6 -14
  161. data/config/locales/sv.yml +129 -90
  162. data/config/locales/tr-TR.yml +14 -54
  163. data/config/locales/uk.yml +0 -23
  164. data/config/locales/zh-CN.yml +12 -53
  165. data/config/locales/zh-TW.yml +14 -86
  166. data/db/migrate/20171220084719_add_published_at_to_proposals.rb +1 -1
  167. data/db/migrate/20181016132225_add_organization_as_author.rb +1 -1
  168. data/db/migrate/20200120215928_move_proposal_endorsements_to_core_endorsements.rb +1 -1
  169. data/db/migrate/20200827154156_add_commentable_counter_cache_to_proposals.rb +3 -3
  170. data/db/migrate/20210310102839_add_followable_counter_cache_to_proposals.rb +1 -1
  171. data/db/migrate/20240110203504_create_default_proposal_states.rb +1 -1
  172. data/db/migrate/20240404202756_add_valuation_assignments_count_to_decidim_proposals_proposals.rb +1 -1
  173. data/db/migrate/20240617091140_add_email_on_assigned_proposals_to_users.rb +7 -0
  174. data/db/migrate/20240617170052_add_parent_relation_to_decidim_proposal_notes.rb +7 -0
  175. data/db/migrate/20240828103755_add_deleted_at_to_decidim_proposals_proposals.rb +8 -0
  176. data/decidim-proposals.gemspec +1 -1
  177. data/lib/decidim/api/functions/proposal_finder_helper.rb +12 -0
  178. data/lib/decidim/api/functions/proposal_list_helper.rb +12 -0
  179. data/lib/decidim/api/proposal_type.rb +17 -25
  180. data/lib/decidim/api/proposals_type.rb +4 -19
  181. data/lib/decidim/proposals/admin_engine.rb +12 -3
  182. data/lib/decidim/proposals/admin_filter.rb +3 -6
  183. data/lib/decidim/proposals/component.rb +4 -5
  184. data/lib/decidim/proposals/download_your_data_proposal_serializer.rb +15 -0
  185. data/lib/decidim/proposals/engine.rb +5 -0
  186. data/lib/decidim/proposals/import/proposal_creator.rb +4 -4
  187. data/lib/decidim/proposals/proposal_serializer.rb +12 -29
  188. data/lib/decidim/proposals/seeds.rb +21 -17
  189. data/lib/decidim/proposals/test/factories.rb +2 -1
  190. data/lib/decidim/proposals/version.rb +1 -1
  191. data/lib/decidim/proposals.rb +4 -0
  192. data/lib/tasks/proposals/upgrade/decidim_proposals_upgrade_tasks.rake +0 -22
  193. metadata +65 -34
  194. data/app/commands/decidim/proposals/admin/update_proposal_category.rb +0 -70
  195. data/app/commands/decidim/proposals/admin/update_proposal_scope.rb +0 -75
  196. data/app/events/decidim/proposals/admin/update_proposal_category_event.rb +0 -11
  197. data/app/events/decidim/proposals/admin/update_proposal_scope_event.rb +0 -11
  198. data/app/jobs/decidim/proposals/admin/import_proposals_job.rb +0 -91
  199. data/app/mailers/decidim/proposals/admin/import_proposals_mailer.rb +0 -30
  200. data/app/views/decidim/proposals/admin/import_proposals_mailer/notify_failure.html.erb +0 -1
  201. data/app/views/decidim/proposals/admin/import_proposals_mailer/notify_success.html.erb +0 -2
  202. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_recategorize.html.erb +0 -15
  203. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_scope-change.html.erb +0 -21
  204. data/app/views/decidim/proposals/collaborative_drafts/_actions.html.erb +0 -7
  205. data/config/locales/ca-IT.yml +0 -945
@@ -0,0 +1,6 @@
1
+ <% if show_voting_rules? %>
2
+ <div class="item_voting_rules">
3
+ <%= render partial: "remaining_votes_notification" %>
4
+ <%= render partial: "proposal_voting_rules" %>
5
+ </div>
6
+ <% end %>
@@ -4,12 +4,14 @@
4
4
  <% if component_settings.participatory_texts_enabled? && from_proposals_list %>
5
5
  <%= render partial: "decidim/proposals/proposals/participatory_texts/proposal_vote_button", locals: { proposal:, from_proposals_list: true } %>
6
6
  <% else %>
7
- <div id="proposal-<%= proposal.id %>-vote-button">
7
+ <div id="proposal-<%= proposal.id %>-vote-button" class="card__proposals-votes-container">
8
8
  <% if !current_user %>
9
9
  <% if current_settings.votes_blocked? %>
10
- <%= action_authorized_button_to :vote, t("decidim.proposals.proposals.vote_button.votes_blocked"), proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list:), resource: proposal, class: button_classes, disabled: true %>
10
+ <%= action_authorized_button_to :vote, proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list:), resource: proposal, class: button_classes, data: { "proposal-vote-button": true }, disabled: true do %>
11
+ <%= t("decidim.proposals.proposals.vote_button.votes_blocked") %>
12
+ <% end %>
11
13
  <% else %>
12
- <%= action_authorized_button_to :vote, proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list:), resource: proposal, class: button_classes, data: { disable: true, "redirect-url": proposal_path(proposal) } do %>
14
+ <%= action_authorized_button_to :vote, proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list:), resource: proposal, class: button_classes, data: { "proposal-vote-button": true, disable: true, "redirect-url": proposal_path(proposal) } do %>
13
15
  <%= t("decidim.proposals.proposals.vote_button.vote") %>
14
16
  <span class="sr-only"><%= decidim_html_escape(present(proposal).title) %></span>
15
17
  <% end %>
@@ -26,24 +28,26 @@
26
28
  disable: true,
27
29
  original: t("decidim.proposals.proposals.vote_button.already_voted"),
28
30
  replace: t("decidim.proposals.proposals.vote_button.already_voted_hover"),
31
+ "proposal-vote-button": true,
29
32
  "redirect-url": proposal_path(proposal)
30
33
  },
31
- class: "#{button_classes} is-hover",
34
+ class: "#{button_classes}",
32
35
  id: "vote_button-#{proposal.id}"
33
36
  ) do %>
34
37
  <%= t("decidim.proposals.proposals.vote_button.already_voted") %>
38
+ <%= icon "check-line", class: "already-voted-icon" %>
35
39
  <span class="sr-only"><%= decidim_html_escape(present(proposal).title) %></span>
36
40
  <% end %>
37
41
  <% else %>
38
42
  <% if proposal.maximum_votes_reached? && !proposal.can_accumulate_votes_beyond_threshold && current_component.participatory_space.can_participate?(current_user) %>
39
- <%= content_tag :button, t("decidim.proposals.proposals.vote_button.maximum_votes_reached"), class: button_classes, disabled: true %>
43
+ <%= content_tag :button, t("decidim.proposals.proposals.vote_button.maximum_votes_reached"), class: button_classes, data: { "proposal-vote-button": true }, disabled: true %>
40
44
  <% else %>
41
45
  <% if vote_limit_enabled? && remaining_votes_count_for(current_user) == 0 %>
42
- <%= content_tag :button, t("decidim.proposals.proposals.vote_button.no_votes_remaining"), class: button_classes, disabled: true %>
46
+ <%= content_tag :button, t("decidim.proposals.proposals.vote_button.no_votes_remaining"), class: button_classes, data: { "proposal-vote-button": true }, disabled: true %>
43
47
  <% elsif current_settings.votes_blocked? || !current_component.participatory_space.can_participate?(current_user) %>
44
- <%= content_tag :button, t("decidim.proposals.proposals.vote_button.votes_blocked"), class: button_classes, disabled: true %>
48
+ <%= content_tag :button, t("decidim.proposals.proposals.vote_button.votes_blocked"), class: button_classes, data: { "proposal-vote-button": true }, disabled: true %>
45
49
  <% else %>
46
- <%= action_authorized_button_to :vote, proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list:), resource: proposal, remote: true, data: { disable: true, "redirect-url": proposal_path(proposal) }, class: button_classes do %>
50
+ <%= action_authorized_button_to :vote, proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list:), resource: proposal, remote: true, data: { "proposal-vote-button": true, disable: true, "redirect-url": proposal_path(proposal) }, class: button_classes do %>
47
51
  <%= t("decidim.proposals.proposals.vote_button.vote") %>
48
52
  <span class="sr-only"><%= decidim_html_escape(present(proposal).title) %></span>
49
53
  <% end %>
@@ -9,7 +9,8 @@
9
9
  progress,
10
10
  total:,
11
11
  units_name: "decidim.proposals.proposals.votes_count.count",
12
- element_id: "proposal-#{proposal.id}-votes-count"
12
+ element_id: "proposal-#{proposal.id}-votes-count",
13
+ class: total.positive? ? "card__proposals-votes-limited" : "card__proposals-votes-unlimited"
13
14
  ) %>
14
15
  <% end %>
15
16
  <% end %>
@@ -1,7 +1,7 @@
1
1
  <% if show_voting_rules? %>
2
2
  <% announcement_body = capture do %>
3
3
  <div class="editor-content">
4
- <ul>
4
+ <ul class="mt-0 mb-2">
5
5
  <% if vote_limit_enabled? %>
6
6
  <li><%= t(".vote_limit.description", limit: component_settings.vote_limit) %></li>
7
7
  <% end %>
@@ -21,15 +21,9 @@
21
21
  <% if minimum_votes_per_user_enabled? %>
22
22
  <li>
23
23
  <%= t(".minimum_votes_per_user.description", votes: minimum_votes_per_user) %>
24
- <% if votes_given >= minimum_votes_per_user %>
25
- <%= t(".minimum_votes_per_user.given_enough_votes") %>
26
- <% else %>
27
- <%= t(".minimum_votes_per_user.votes_remaining", remaining_votes: minimum_votes_per_user - votes_given) %>
28
- <% end %>
29
24
  </li>
30
25
  <% end %>
31
26
  </ul>
32
- <%= render partial: "decidim/proposals/proposals/remaining_votes_count" if current_user_can_vote? %>
33
27
  </div>
34
28
  <% end %>
35
29
 
@@ -1,7 +1,7 @@
1
1
  <% add_decidim_meta_tags(
2
2
  description: translated_attribute(current_participatory_space.short_description),
3
3
  title: t("decidim.components.pagination.page_title",
4
- component_name:,
4
+ component_name: component_name,
5
5
  current_page: @proposals.current_page,
6
6
  total_pages: @proposals.total_pages ),
7
7
  url: proposals_url,
@@ -15,7 +15,7 @@
15
15
 
16
16
  <div class="proposal-list__aside__button-container">
17
17
  <% if current_settings.creation_enabled && current_component.participatory_space.can_participate?(current_user) %>
18
- <%= action_authorized_link_to :create, new_proposal_path, class: "button button__xl button__secondary w-full", data: { "redirect_url" => new_proposal_path } do %>
18
+ <%= action_authorized_link_to :create, new_proposal_path, permissions_holder: current_component, class: "button button__xl button__secondary w-full", data: { "redirect_url" => new_proposal_path } do %>
19
19
  <span><%= t("new_proposal", scope: "decidim.proposals.proposals.index") %></span>
20
20
  <%= icon "add-line" %>
21
21
  <% end %>
@@ -38,22 +38,7 @@
38
38
 
39
39
  <% if Decidim::Map.available?(:geocoding, :dynamic) && component_settings.geocoding_enabled? %>
40
40
  <div class="proposal-list__map">
41
- <%= dynamic_map_for proposals_data_for_map(@proposals) do %>
42
- <template id="marker-popup">
43
- <div class="space-y-6">
44
- <a href="${link}" class="card__list">
45
- <div class="card__list-content">
46
- <h3 class="h4 card__list-title">${title}</h3>
47
- <div class="card__list-metadata">
48
- {{each JSON.parse(items)}}
49
- <span>{{html icon}}{{html text}}</span>
50
- {{/each}}
51
- </div>
52
- </div>
53
- </a>
54
- </div>
55
- </template>
56
- <% end %>
41
+ <%= cell "decidim/map", @proposals, metadata_card: "decidim/proposals/proposal_metadata" %>
57
42
  </div>
58
43
  <% end %>
59
44
 
@@ -8,7 +8,7 @@ $orderFilterInput.val('<%= order %>');
8
8
  var $map = $("#map");
9
9
  var controller = $map.data("map-controller");
10
10
  if (controller) {
11
- var markerData = JSON.parse('<%= escape_javascript proposals_data_for_map(@proposals).to_json.html_safe %>');
11
+ var markerData = JSON.parse('<%= escape_javascript cell("decidim/map", @proposals, metadata_card: "decidim/proposals/proposal_metadata").geocoded_data.to_json.html_safe %>');
12
12
  controller.clearMarkers();
13
13
  if (markerData.length > 0 ) {
14
14
  controller.addMarkers(markerData);
@@ -4,7 +4,9 @@
4
4
  <div id="proposal-<%= proposal.id %>-vote-button">
5
5
  <% if !current_user %>
6
6
  <% if current_settings.votes_blocked? %>
7
- <%= action_authorized_button_to :vote, t("decidim.proposals.proposals.vote_button.votes_blocked"), proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list:), resource: proposal, class: "column button light button--sc disabled", disabled: true %>
7
+ <%= action_authorized_button_to :vote, proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list:), resource: proposal, class: "column button light button--sc disabled", disabled: true do %>
8
+ <%= t("decidim.proposals.proposals.vote_button.votes_blocked") %>
9
+ <% end %>
8
10
  <% else %>
9
11
  <%= action_authorized_button_to :vote, proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list:), resource: proposal, class: "column button light button--sc", data: { disable: true, "redirect-url": proposal_path(proposal) } do %>
10
12
  <%= t("decidim.proposals.proposals.vote_button.vote") %>
@@ -1,8 +1,8 @@
1
- <% add_decidim_meta_tags({
2
- description: present(@proposal).body,
3
- title: present(@proposal).title,
4
- url: proposal_url(@proposal.id)
5
- }) %>
1
+ <% add_decidim_meta_tags(
2
+ description: present(@proposal).body,
3
+ title: present(@proposal).title,
4
+ url: proposal_url(@proposal.id),
5
+ resource: @proposal) %>
6
6
 
7
7
  <%
8
8
  edit_link(
@@ -26,6 +26,14 @@ extra_admin_link(
26
26
  <% append_stylesheet_pack_tag "decidim_proposals", media: "all" %>
27
27
  <% append_javascript_pack_tag "decidim_proposals" %>
28
28
 
29
+ <% content_for :item_header do %>
30
+ <% if show_voting_rules? %>
31
+ <div class="layout-item-complementary">
32
+ <%= render partial: "update_proposal_voting_rules" %>
33
+ </div>
34
+ <% end %>
35
+ <% end %>
36
+
29
37
  <% content_for :aside do %>
30
38
  <%= render partial: "proposal_aside" %>
31
39
  <% end %>
@@ -33,7 +41,9 @@ extra_admin_link(
33
41
  <%= render layout: "layouts/decidim/shared/layout_item", locals: { back_path: component_settings.participatory_texts_enabled? ? main_component_path(current_component) : proposals_path } do %>
34
42
 
35
43
  <section class="layout-main__section layout-main__heading">
36
- <%= render partial: "voting_rules" %>
44
+ <% if show_voting_rules? && remaining_minimum_votes_count_for(current_user).positive? && current_component.participatory_space.can_participate?(current_user) %>
45
+ <%= render partial: "exit_modal" %>
46
+ <% end %>
37
47
 
38
48
  <%= cell("decidim/announcement", proposal_reason_callout_announcement, callout_styles: @proposal.proposal_state&.css_style) if @proposal.answered? && @proposal.published_state? %>
39
49
 
@@ -46,12 +56,20 @@ extra_admin_link(
46
56
  <% end %>
47
57
 
48
58
  <% unless component_settings.participatory_texts_enabled? %>
49
- <div class="layout-author">
50
- <%= cell "decidim/coauthorships", @proposal, context_actions: [:date] %>
51
-
52
- <% if not ["section","subsection"].include? @proposal.participatory_text_level %>
59
+ <% unless ["section","subsection"].include?(@proposal.participatory_text_level) %>
60
+ <div class="layout-author has_status">
53
61
  <%= cell("decidim/proposals/proposal_metadata", @proposal).state_item&.dig(:text) %>
54
- <% end %>
62
+ </div>
63
+ <% end %>
64
+ <div class="layout-author <%= "has_status" unless %w(section subsection).include?(@proposal.participatory_text_level) %>">
65
+ <div class="relative flex items-center justify-center w-full">
66
+ <div class="w-10/12 flex items-center gap-4">
67
+ <%= cell "decidim/coauthorships", @proposal, context_actions: [:date] %>
68
+ </div>
69
+ <%= render "decidim/shared/resource_actions", resource: @proposal do %>
70
+ <%= render "decidim/proposals/proposals/proposal_actions" %>
71
+ <% end %>
72
+ </div>
55
73
  </div>
56
74
  <% end %>
57
75
  </section>
@@ -88,6 +106,8 @@ extra_admin_link(
88
106
  <%= cell "decidim/amendable/amendments", @proposal %>
89
107
  </section>
90
108
 
109
+ <%= cell "decidim/tags", @proposal %>
110
+
91
111
  <%= render partial: "actions" %>
92
112
 
93
113
  <% content_for :item_footer do %>
@@ -97,10 +117,10 @@ extra_admin_link(
97
117
  <%= content_tag :li, resource_reference(@proposal), class: "metadata__item" %>
98
118
  <%= content_tag :li, resource_version(proposal_presenter, versions_path: proposal_version_path(@proposal, proposal_presenter.versions.count)), class: "metadata__item" %>
99
119
 
100
- <% fingerprint_id = dom_id(@proposal, :fingerprint_dialog) %>
101
- <%= content_tag :li, class: "metadata__item" do %>
102
- <%= content_tag :button, t("decidim.fingerprint.check"), data: { dialog_open: fingerprint_id } %>
103
- <% end %>
120
+ <% fingerprint_id = dom_id(@proposal, :fingerprint_dialog) %>
121
+ <%= content_tag :li, class: "metadata__item" do %>
122
+ <%= content_tag :button, t("decidim.fingerprint.check"), data: { dialog_open: fingerprint_id } %>
123
+ <% end %>
104
124
  </ul>
105
125
  <%= decidim_modal id: fingerprint_id, class: "fingerprint-modal" do %>
106
126
  <div data-dialog-container>
@@ -5,7 +5,6 @@ ar:
5
5
  collaborative_draft:
6
6
  address: عنوان
7
7
  body: الجسم
8
- category_id: الفئة
9
8
  decidim_scope_id: نطاق
10
9
  has_address: لديه عنوان
11
10
  scope_id: نطاق
@@ -20,7 +19,6 @@ ar:
20
19
  answered_at: أجاب في
21
20
  automatic_hashtags: علامات التصنيف المضافة تلقائيًا
22
21
  body: الجسم
23
- category_id: الفئة
24
22
  decidim_scope_id: النطاق
25
23
  has_address: لديه عنوان
26
24
  latitude: خط العرض
@@ -72,8 +70,6 @@ ar:
72
70
  base:
73
71
  not_official: غير رسمية
74
72
  models:
75
- decidim/proposals/admin/update_proposal_category_event: تم تغيير فئة الاقتراح
76
- decidim/proposals/admin/update_proposal_scope_event: تم تغيير نطاق الاقتراح
77
73
  decidim/proposals/creation_enabled_event: تمكين إنشاء الاقتراح
78
74
  decidim/proposals/endorsing_enabled_event: تمكين اقتراح الاقتراح
79
75
  decidim/proposals/proposal_mentioned_event: الاقتراح المذكور
@@ -106,15 +102,11 @@ ar:
106
102
  admin:
107
103
  filters:
108
104
  proposals:
109
- category_id_eq:
110
- label: الفئة
111
105
  is_emendation_true:
112
106
  label: النوع
113
107
  values:
114
108
  'false': اقتراحات
115
109
  'true': تعديلات
116
- scope_id_eq:
117
- label: نطاق
118
110
  state_eq:
119
111
  label: الحالة
120
112
  values:
@@ -133,7 +125,6 @@ ar:
133
125
  actions:
134
126
  amend: تعديل
135
127
  comment: تعليق
136
- create: إنشاء
137
128
  endorse: تأييد
138
129
  vote: تصويت
139
130
  vote_comment: التصويت على التعليق
@@ -157,7 +148,6 @@ ar:
157
148
  random: عشوائي
158
149
  recent: الأخيرة
159
150
  with_more_authors: مع المزيد من المؤلفين
160
- geocoding_enabled: تم تمكين الترميز الجغرافي
161
151
  new_proposal_body_template: نموذج جديد لمحتوى المُقتَرَح
162
152
  new_proposal_body_template_help: يمكنكم تعريف النص المعبأ مسبقاً الذي سيدرج في المقترحات الجديدة
163
153
  new_proposal_help_text: نص مساعدة اقتراح جديد
@@ -165,7 +155,6 @@ ar:
165
155
  participatory_texts_enabled: تم تمكين النصوص التشاركية
166
156
  participatory_texts_enabled_readonly: لا يمكن التفاعل مع هذا الإعداد إذا كانت هناك اقتراحات موجودة. الرجاء إنشاء "مكون مقترحات" جديد إذا كنت ترغب في تمكين هذه الميزة أو تجاهل كافة المقترحات المستوردة في قائمة "النصوص التشاركية" إذا كنت ترغب في تعطيلها.
167
157
  proposal_answering_enabled: تم تمكين الرد على الاقتراح
168
- proposal_edit_before_minutes: يمكن تحرير المقترحات من قبل المؤلفين قبل مرور عدة دقائق
169
158
  proposal_edit_time: تحرير المقترح
170
159
  proposal_edit_time_choices:
171
160
  infinite: السماح بتعديل المقترحات لفترة زمنية غير محدودة
@@ -174,8 +163,6 @@ ar:
174
163
  proposal_limit: حد الاقتراح لكل مشارك
175
164
  proposal_wizard_step_1_help_text: اقتراح الاقتراح "إنشاء" نص مساعدة الخطوة
176
165
  resources_permissions_enabled: يمكن تعيين أذونات الإجراءات لكل اقتراح
177
- scope_id: نطاق
178
- scopes_enabled: النطاقات مفعلة
179
166
  threshold_per_proposal: عتبة لكل اقتراح
180
167
  step:
181
168
  amendment_creation_enabled: إنشاء التعديلات مُفعّلة
@@ -266,22 +253,14 @@ ar:
266
253
  email_intro: تمت إضافة الاقتراح "%{resource_title}" إلى "%{participatory_space_title}" الذي تتابعه.
267
254
  email_outro: لقد تلقيت هذا الإشعار لأنك تتابع "%{participatory_space_title}". يمكنك إيقاف تلقي الإخطارات باتباع الرابط السابق.
268
255
  email_subject: تمت إضافة اقتراح جديد "%{resource_title}" إلى %{participatory_space_title}
269
- proposal_update_category:
270
- email_intro: 'قام المشرف بتحديث فئة اقتراحك "%{resource_title}" ، تحقق من ذلك في هذه الصفحة:'
271
- email_subject: تم تحديث فئة %{resource_title} اقتراح
272
- notification_title: تم تحديث فئة اقتراح <a href="%{resource_path}">%{resource_title}</a> بواسطة مسؤول.
273
- proposal_update_scope:
274
- email_intro: 'قام مدير بتحديث نطاق اقتراحك "%{resource_title}" ، يرجى التحقق منه على هذه الصفحة:'
275
- email_subject: تم تحديث نطاق الاقتراح %{resource_title}
276
- notification_title: نطاق الاقتراح <a href="%{resource_path}">%{resource_title}</a> تم تحديثه من قبل مدير.
277
256
  voting_enabled:
278
257
  email_outro: لقد تلقيت هذا الإشعار لأنك تتابع %{participatory_space_title}. يمكنك إيقاف تلقي الإخطارات باتباع الرابط السابق.
279
258
  gamification:
280
259
  badges:
281
260
  accepted_proposals:
282
261
  conditions:
283
- - اختر مساحة المشاركة التي تهمك مع تمكين تقديم المقترحات
284
- - حاول تقديم مقترحات يمكن تنفيذها. بهذه الطريقة هم أكثر عرضة للقبول.
262
+ - اختر مساحة المشاركة التي تهمك مع تمكين تقديم المقترحات
263
+ - حاول تقديم مقترحات يمكن تنفيذها. بهذه الطريقة هم أكثر عرضة للقبول.
285
264
  description: تُمنح هذه الشارة عندما تشارك بفعالية في المقترحات الجديدة ويتم قبولها.
286
265
  description_another: هذا المشارك لديه %{score} مقترحات مقبولة.
287
266
  description_own: حصلت على %{score} مقترحات مقبولة.
@@ -291,12 +270,12 @@ ar:
291
270
  unearned_own: لم تحصل على اقتراحات مقبولة حتى الآن.
292
271
  proposal_votes:
293
272
  conditions:
294
- - تصفح وقضاء بعض الوقت في قراءة اقتراحات الآخرين
295
- -
273
+ - تصفح وقضاء بعض الوقت في قراءة اقتراحات الآخرين
274
+ -
296
275
  proposals:
297
276
  conditions:
298
- - اختر مساحة المشاركة التي تهمك مع تمكين تقديم المقترحات
299
- - إنشاء اقتراح جديد
277
+ - اختر مساحة المشاركة التي تهمك مع تمكين تقديم المقترحات
278
+ - إنشاء اقتراح جديد
300
279
  description: تُمنح هذه الشارة عندما تشارك بنشاط في مقترحات جديدة.
301
280
  description_another: قام هذا المشارك بإنشاء %{score} مقترحات.
302
281
  description_own: لقد قمت بإنشاء %{score} مقترحات.
@@ -318,7 +297,6 @@ ar:
318
297
  title: اقتراحات
319
298
  votes:
320
299
  object: أصوات
321
- title: الأصوات
322
300
  participatory_spaces:
323
301
  highlighted_proposals:
324
302
  see_all: شاهد الكل
@@ -338,22 +316,6 @@ ar:
338
316
  proposal_comments: التعليقات
339
317
  proposals: اقتراحات
340
318
  imports:
341
- help:
342
- answers: |
343
- ينبغي أن تحتوي وثيقة الاستيراد على أسماء الأعمدة التالية لدى وجود ملفات CSV أو Excel، أو الأسماء الرئيسية في حالة ملفات JSON:
344
- <ul>
345
- <li><b>معرف:</b> معرف الاقتراح من أجل الإجابة</li>
346
- <li><b>حالة:</b> اما "مقبول"، أو "قيد التقييم"، أو "مرفوض"</li>
347
- <li><b>إجابة/en:</b> الإجابة على اللغة الإنجليزية. سيعتمد هذا على إعداد لغة المنصة الخاصة بك.</li>
348
- </ul>
349
- proposals: |
350
- يجب أن يحتوي الملف على أسماء الأعمدة التالية في حالة ملفات CSV أو Excel، أو الأسماء الرئيسية في حالة ملفات JSON:
351
- <ul>
352
- <li><b>عنوان/en:</b> عنوان اللغة الإنجليزية. سيعتمد هذا على إعداد لغة المنصة الخاصة بك.</li>
353
- <li><b>نص/en:</b> نص اللغة الإنجليزية. سيعتمد هذا على إعداد لغة المنصة الخاصة بك.</li>
354
- <li><b>النطاق/المعرف:</b> معرف النطاق</li>
355
- <li><b>الفئة/المعرفة:</b> معرف الفئة</li>
356
- </ul>
357
319
  label:
358
320
  answers: استيراد إجابات من ملف
359
321
  proposals: استيراد اقتراحات من ملف
@@ -412,24 +374,19 @@ ar:
412
374
  form:
413
375
  note: ملحوظة
414
376
  submit: خضع
415
- leave_your_note: اترك ملاحظتك
416
377
  title: ملاحظات خاصة
417
378
  proposals:
418
379
  edit:
419
380
  title: تحديث الاقتراح
420
381
  update: تحديث
421
382
  form:
422
- attachment_legend: "(اختياري) إضافة مرفق"
423
383
  created_in_meeting: هذا الاقتراح يأتي من اجتماع
424
- delete_attachment: حذف المرفق
425
- select_a_category: اختر تصنيف
426
384
  select_a_meeting: اختيار اجتماع
427
385
  index:
428
386
  actions: أفعال
429
387
  assign_to_valuator: أسنِده إلى مُقيِّم
388
+ assign_to_valuator_button: تعيين
430
389
  cancel: إلغاء
431
- change_category: تغيير الفئة
432
- change_scope: تغيير النطاق
433
390
  merge: دمج في واحدة جديدة
434
391
  merge_button: دمج
435
392
  publish: نشر
@@ -440,8 +397,8 @@ ar:
440
397
  split_button: انشق، مزق
441
398
  title: اقتراحات
442
399
  unassign_from_valuator: إلغاء الإسناد مِن المُقيِّم
400
+ unassign_from_valuator_button: إلغاء الإسناد
443
401
  update: تحديث
444
- update_scope_button: تحديث النطاق
445
402
  new:
446
403
  create: إنشاء
447
404
  title: إنشاء اقتراح
@@ -453,18 +410,19 @@ ar:
453
410
  documents: المستندات
454
411
  endorsements_count: عد أصوات التأييدات
455
412
  endorsers: المؤيدون
413
+ n_more_endorsers:
414
+ zero: و%{count} آخرين
415
+ one: وواحد آخر
416
+ two: و%{count} آخرين
417
+ few: و%{count} آخرين
418
+ many: و%{count} آخرين
419
+ other: و%{count} آخرين
456
420
  photos: الصور
457
421
  ranking: "%{ranking} مِن %{total}"
458
422
  related_meetings: ملتقيات ذات صلة
459
423
  remove_assignment: إزالة التعيين
460
424
  remove_assignment_confirmation: هل أنت متأكد من أنك تريد إزالة المُقيِّم من هذا الاقتراح؟
461
425
  valuators: المُقيِّمون
462
- update_category:
463
- invalid: 'هذه الاقتراحات تحتوي بالفعل على فئة %{subject_name}: %{proposals}.'
464
- success: 'تم تحديث الاقتراحات بنجاح إلى فئة %{subject_name}: %{proposals}.'
465
- update_scope:
466
- invalid: 'تحتوي الاقتراحات مسبقاً على نطاق %{subject_name}: %{proposals}.'
467
- success: 'تم تحديث الاقتراحات بنجاح إلى نطاق %{subject_name}: %{proposals}.'
468
426
  proposals_imports:
469
427
  new:
470
428
  create: مقترحات الاستيراد
@@ -473,11 +431,9 @@ ar:
473
431
  select_states: تحقق من حالة مقترحات الاستيراد
474
432
  proposals_merges:
475
433
  create:
476
- invalid: 'طرأت مشكلة في دمج الاقتراحات المحددة لأن بعضها:'
477
434
  success: دمج المقترحات بنجاح في واحدة جديدة.
478
435
  proposals_splits:
479
436
  create:
480
- invalid: 'طرأت مشكلة في فصل الاقتراحات المحددة لأن بعضها:'
481
437
  success: تم تقسيم المقترحات بنجاح إلى مقترحات جديدة.
482
438
  admin_log:
483
439
  proposal:
@@ -530,19 +486,16 @@ ar:
530
486
  error: طرأت مشكلة خلال إنشاء هذه المسودة التعاونية.
531
487
  success: تم إنشاء مشروع تعاوني بنجاح.
532
488
  edit:
533
- attachment_legend: "(اختياري) إضافة مرفق"
489
+ attachment_legend: إضافة مستند أو صورة
534
490
  back: الى الخلف
535
- select_a_category: الرجاء تحديد الفئة
536
491
  send: إرسال
537
492
  title: تحرير المسودة التعاونية
538
493
  filters:
539
494
  all: الكل
540
495
  amendment: تعديلات
541
- category: الفئة
542
496
  open: افتح
543
497
  published: نشرت
544
498
  related_to: متعلق ب
545
- scope: نطاق
546
499
  search: بحث
547
500
  state: الحالة
548
501
  withdrawn: سحب
@@ -582,7 +535,6 @@ ar:
582
535
  rejected_request:
583
536
  error: لا يمكن الرفض كمتعاون ، يرجى المحاولة مرة أخرى لاحقًا.
584
537
  show:
585
- edit: تحرير المسودة التعاونية
586
538
  final_proposal: الاقتراح النهائي
587
539
  final_proposal_help_text: انتهى هذا المشروع. تحقق من الاقتراح النهائي
588
540
  hidden_authors_count:
@@ -621,14 +573,12 @@ ar:
621
573
  models:
622
574
  proposal:
623
575
  fields:
624
- category: الفئة
625
576
  comments: تعليقات
626
577
  id: هوية شخصية
627
578
  notes: ملاحظات
628
579
  official_proposal: الاقتراح الرسمي
629
580
  published_answer: الإجابة المنشورة
630
581
  published_at: نشرت في
631
- scope: نطاق
632
582
  state: الحالة
633
583
  title: عنوان
634
584
  valuator: مُقيِّم
@@ -644,11 +594,10 @@ ar:
644
594
  description: سيتم تحديث الإحداثيات لدى النقر على زر "السابق". غير أن العنوان لن يتغير.
645
595
  instructions: يمكنك تحريك النقطة على الخريطة.
646
596
  edit:
647
- add_documents: إضافة وثائق
648
- attachment_legend: "(اختياري) إضافة مرفق"
597
+ add_attachments: إضافة مرفقات
598
+ attachment_legend: إضافة مستند أو صورة
649
599
  back: الى الخلف
650
- edit_documents: تحرير الوثائق
651
- select_a_category: الرجاء تحديد الفئة
600
+ edit_attachments: تعديل المرفقات
652
601
  send: إرسال
653
602
  title: تعديل الاقتراح
654
603
  edit_draft:
@@ -659,7 +608,6 @@ ar:
659
608
  activity: نشاطي
660
609
  all: الكل
661
610
  amendment_type: نوع
662
- category: الفئة
663
611
  my_proposals: اقتراحاتي
664
612
  origin: الأصل
665
613
  related_to: متعلق ب
@@ -683,6 +631,7 @@ ar:
683
631
  text_banner: أنت تتطلع على قائمة الاقتراحات المسحوبة من قبل مؤلفيها. %{go_back_link}.
684
632
  new:
685
633
  send: استمر
634
+ title: إنشاء اقتراحك
686
635
  orders:
687
636
  label: 'ترتيب المقترحات حسب:'
688
637
  most_commented: الأكثر تعليقًا عليها
@@ -709,7 +658,6 @@ ar:
709
658
  show:
710
659
  answer: إجابة
711
660
  changes_at_title: تعديل على "%{title}"
712
- edit_proposal: تعديل الاقتراح
713
661
  estimated_cost: التكلفة التقديرية
714
662
  hidden_endorsers_count:
715
663
  zero: و %{count} المزيد من الناس
@@ -728,7 +676,6 @@ ar:
728
676
  proposal_in_evaluation_reason: هذا الاقتراح قيد التقييم
729
677
  proposal_rejected_reason: 'تم رفض هذا الاقتراح بسبب:'
730
678
  withdraw_confirmation_html: هل أنت متأكد من أنك تريد سحب هذا الاقتراح؟<br><br><strong>لا يمكن إلغاء هذا الإجراء!</strong>
731
- withdraw_proposal: سحب الاقتراح
732
679
  update:
733
680
  title: تحديث الإقتراح
734
681
  vote_button:
@@ -736,6 +683,8 @@ ar:
736
683
  voting_rules:
737
684
  proposal_limit:
738
685
  description: يمكنك إنشاء ما يصل إلى %{limit} مقترحات.
686
+ vote_limit:
687
+ description: يمكنك دعم ما يصل إلى %{limit} مقترحات.
739
688
  wizard_aside:
740
689
  back: الى الخلف
741
690
  back_from_step_1: العودة إلى الاقتراحات