decidim-proposals 0.28.4 → 0.28.6

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/proposals/highlighted_proposals_for_component/show.erb +0 -12
  3. data/app/cells/decidim/proposals/proposal_l_cell.rb +17 -18
  4. data/app/controllers/decidim/proposals/proposals_controller.rb +4 -8
  5. data/app/controllers/decidim/proposals/versions_controller.rb +1 -1
  6. data/app/forms/decidim/proposals/admin/proposal_answer_form.rb +3 -3
  7. data/app/forms/decidim/proposals/admin/proposal_form.rb +1 -1
  8. data/app/helpers/decidim/proposals/map_helper.rb +1 -1
  9. data/app/models/decidim/proposals/collaborative_draft.rb +2 -3
  10. data/app/models/decidim/proposals/proposal.rb +2 -11
  11. data/app/permissions/decidim/proposals/permissions.rb +4 -3
  12. data/app/services/decidim/proposals/collaborative_draft_diff_renderer.rb +22 -0
  13. data/app/services/decidim/proposals/diff_renderer.rb +2 -0
  14. data/app/services/decidim/proposals/proposal_builder.rb +1 -1
  15. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +1 -1
  16. data/app/views/decidim/proposals/admin/proposals/index.html.erb +2 -2
  17. data/app/views/decidim/proposals/admin/proposals/show.html.erb +4 -4
  18. data/app/views/decidim/proposals/proposals/_proposals.html.erb +1 -1
  19. data/app/views/decidim/proposals/proposals/index.html.erb +9 -2
  20. data/app/views/decidim/proposals/proposals/index.js.erb +12 -0
  21. data/app/views/decidim/proposals/proposals/show.html.erb +1 -1
  22. data/config/locales/ar.yml +7 -6
  23. data/config/locales/bg.yml +5 -11
  24. data/config/locales/bn-BD.yml +1 -0
  25. data/config/locales/bs-BA.yml +98 -0
  26. data/config/locales/ca-IT.yml +931 -0
  27. data/config/locales/ca.yml +15 -10
  28. data/config/locales/cs.yml +12 -7
  29. data/config/locales/de.yml +15 -10
  30. data/config/locales/el.yml +3 -8
  31. data/config/locales/en.yml +7 -2
  32. data/config/locales/es-MX.yml +13 -8
  33. data/config/locales/es-PY.yml +13 -8
  34. data/config/locales/es.yml +16 -11
  35. data/config/locales/eu.yml +165 -160
  36. data/config/locales/fi-plain.yml +10 -5
  37. data/config/locales/fi.yml +30 -25
  38. data/config/locales/fr-CA.yml +12 -9
  39. data/config/locales/fr.yml +11 -8
  40. data/config/locales/ga-IE.yml +0 -1
  41. data/config/locales/gl.yml +3 -6
  42. data/config/locales/he-IL.yml +4 -0
  43. data/config/locales/hu.yml +3 -8
  44. data/config/locales/id-ID.yml +10 -5
  45. data/config/locales/is-IS.yml +3 -7
  46. data/config/locales/it.yml +35 -11
  47. data/config/locales/ja.yml +12 -7
  48. data/config/locales/lt.yml +1 -7
  49. data/config/locales/lv.yml +5 -4
  50. data/config/locales/nl.yml +9 -9
  51. data/config/locales/no.yml +1 -6
  52. data/config/locales/pl.yml +2 -8
  53. data/config/locales/pt-BR.yml +3 -8
  54. data/config/locales/pt.yml +2 -6
  55. data/config/locales/ro-RO.yml +10 -11
  56. data/config/locales/ru.yml +3 -7
  57. data/config/locales/sk.yml +6 -5
  58. data/config/locales/sl.yml +0 -4
  59. data/config/locales/sr-CS.yml +0 -2
  60. data/config/locales/sv.yml +11 -7
  61. data/config/locales/tr-TR.yml +5 -9
  62. data/config/locales/uk.yml +4 -8
  63. data/config/locales/zh-CN.yml +1 -5
  64. data/config/locales/zh-TW.yml +3 -8
  65. data/decidim-proposals.gemspec +1 -1
  66. data/lib/decidim/api/proposal_type.rb +13 -0
  67. data/lib/decidim/api/proposals_type.rb +1 -3
  68. data/lib/decidim/proposals/proposal_serializer.rb +7 -4
  69. data/lib/decidim/proposals/test/factories.rb +6 -5
  70. data/lib/decidim/proposals/version.rb +1 -1
  71. metadata +25 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e03d9becd88af502a15e10d6b7596e4a4d0c2a41d914fc32931379c8b84313af
4
- data.tar.gz: 96d7de88818c77f8f6f9c2c2718b15ae307785d8c43e7ca9d496895f671b10e8
3
+ metadata.gz: 63f02eb870fe0f3b26efdfb4b561f9414b69088c57501c8a560836f4580fd587
4
+ data.tar.gz: 72ab69147738585ed8699e8f037854862d57710efd14da0d5ead38a6ca5ba362
5
5
  SHA512:
6
- metadata.gz: 8f7d3a09bb63fe6e45295e8c1636d46d635e121ad51aa60f409723c0ace5e3cce9a32b15739940459821ceb47109d8349fe9d0ffa39d0d509db5e97ddd0ce70e
7
- data.tar.gz: 3a819d8a0556c18c08740b908d79a2f8366526876260ce74383674333194118ea64bc197ff581855091a4fbdb69f16273a5bf0312c3254e760f4b988918372f3
6
+ metadata.gz: a4101cf611f39a640e9847ef15453ba995ddb961b72f60f64b909227cb3a4e5f93e3eb2012bebfaba9368ec03418e83e60d099dafaab35c93247e8b27a88fafc
7
+ data.tar.gz: 51125fff4a9d5e07483e6d741388aace1a3c6a719eba50bbe7d157d42124b98b75cc4a338cca0ed4da29f6cfda182199953c47732b068177774a97ac1df3aa13
@@ -10,22 +10,10 @@
10
10
  <% end %>
11
11
  <% end %>
12
12
  </div>
13
-
14
13
  <div class="flex items-start justify-between">
15
14
  <div class="grow space-y-6">
16
- <span class="content-block__span">
17
- <%= t("decidim.participatory_spaces.highlighted_proposals.last") %>
18
- </span>
19
-
20
15
  <% proposals_to_render.each do |p| %>
21
16
  <%= card_for p, link_whole_card: true, title_tag: :h3, **options.slice(:show_space) %>
22
17
  <% end %>
23
18
  </div>
24
-
25
- <% if single_component? %>
26
- <%= link_to decidim_proposals.new_proposal_path, class: "button button__sm md:button__lg button__secondary" do %>
27
- <span><%= t("decidim.proposals.actions.new") %></span>
28
- <%= icon "add-line" %>
29
- <% end %>
30
- <% end %>
31
19
  </div>
@@ -22,25 +22,24 @@ module Decidim
22
22
  end
23
23
 
24
24
  def cache_hash
25
- hash = []
26
- hash << I18n.locale.to_s
27
- hash << model.cache_key_with_version
28
- hash << model.proposal_votes_count
29
- hash << model.endorsements_count
30
- hash << model.comments_count
31
- hash << Digest::MD5.hexdigest(model.component.cache_key_with_version)
32
- hash << Digest::MD5.hexdigest(resource_image_url) if resource_image_url
33
- hash << render_space? ? 1 : 0
34
- if current_user
35
- hash << current_user.cache_key_with_version
36
- hash << current_user.follows?(model) ? 1 : 0
25
+ @cache_hash ||= begin
26
+ hash = []
27
+ hash << I18n.locale.to_s
28
+ hash << self.class.name.demodulize.underscore
29
+ hash << model.cache_key_with_version
30
+ hash << model.proposal_votes_count
31
+ hash << model.endorsements_count
32
+ hash << model.comments_count
33
+ hash << Digest::MD5.hexdigest(model.component.cache_key_with_version)
34
+ hash << Digest::MD5.hexdigest(resource_image_url) if resource_image_url
35
+ hash << render_space? ? 1 : 0
36
+ hash << model.follows_count
37
+ hash << Digest::MD5.hexdigest(model.authors.map(&:cache_key_with_version).to_s)
38
+ hash << (model.must_render_translation?(model.organization) ? 1 : 0) if model.respond_to?(:must_render_translation?)
39
+ hash << model.component.participatory_space.active_step.id if model.component.participatory_space.try(:active_step)
40
+
41
+ hash.join(Decidim.cache_key_separator)
37
42
  end
38
- hash << model.follows_count
39
- hash << Digest::MD5.hexdigest(model.authors.map(&:cache_key_with_version).to_s)
40
- hash << (model.must_render_translation?(model.organization) ? 1 : 0) if model.respond_to?(:must_render_translation?)
41
- hash << model.component.participatory_space.active_step.id if model.component.participatory_space.try(:active_step)
42
-
43
- hash.join(Decidim.cache_key_separator)
44
43
  end
45
44
  end
46
45
  end
@@ -43,13 +43,11 @@ module Decidim
43
43
  .order(position: :asc)
44
44
  render "decidim/proposals/proposals/participatory_texts/participatory_text"
45
45
  else
46
- @base_query = search
47
- .result
48
- .published
49
- .not_hidden
46
+ @proposals = search.result
50
47
 
51
- @proposals = @base_query.includes(:component, :coauthorships, :attachments)
52
- @all_geocoded_proposals = @base_query.geocoded
48
+ @proposals = reorder(@proposals)
49
+ @proposals = paginate(@proposals)
50
+ @proposals = @proposals.includes(:component, :coauthorships, :attachments)
53
51
 
54
52
  @voted_proposals = if current_user
55
53
  ProposalVote.where(
@@ -59,8 +57,6 @@ module Decidim
59
57
  else
60
58
  []
61
59
  end
62
- @proposals = reorder(@proposals)
63
- @proposals = paginate(@proposals)
64
60
  end
65
61
  end
66
62
 
@@ -11,7 +11,7 @@ module Decidim
11
11
  def versioned_resource
12
12
  @versioned_resource ||=
13
13
  if params[:proposal_id]
14
- present(Proposal.where(component: current_component).find(params[:proposal_id]))
14
+ present(Proposal.not_hidden.published.where(component: current_component).find(params[:proposal_id]))
15
15
  else
16
16
  CollaborativeDraft.where(component: current_component).find(params[:collaborative_draft_id])
17
17
  end
@@ -8,9 +8,9 @@ module Decidim
8
8
  include TranslatableAttributes
9
9
  mimic :proposal_answer
10
10
 
11
- translatable_attribute :answer, String
12
- translatable_attribute :cost_report, String
13
- translatable_attribute :execution_period, String
11
+ translatable_attribute :answer, Decidim::Attributes::RichText
12
+ translatable_attribute :cost_report, Decidim::Attributes::RichText
13
+ translatable_attribute :execution_period, Decidim::Attributes::RichText
14
14
  attribute :cost, Float
15
15
  attribute :internal_state, String
16
16
 
@@ -10,7 +10,7 @@ module Decidim
10
10
  translatable_attribute :title, String do |field, _locale|
11
11
  validates field, length: { in: 15..150 }, if: proc { |resource| resource.send(field).present? }
12
12
  end
13
- translatable_attribute :body, String
13
+ translatable_attribute :body, Decidim::Attributes::RichText
14
14
 
15
15
  validates :title, :body, translatable_presence: true
16
16
 
@@ -9,7 +9,7 @@ module Decidim
9
9
  #
10
10
  # geocoded_proposals - A collection of geocoded proposals
11
11
  def proposals_data_for_map(geocoded_proposals)
12
- geocoded_proposals.map do |proposal|
12
+ geocoded_proposals.select(&:geocoded_and_valid?).map do |proposal|
13
13
  proposal_data_for_map(proposal)
14
14
  end
15
15
  end
@@ -45,9 +45,8 @@ module Decidim
45
45
  authored_by?(user)
46
46
  end
47
47
 
48
- # Public: Overrides the `reported_content_url` Reportable concern method.
49
- def reported_content_url
50
- ResourceLocatorPresenter.new(self).url
48
+ def presenter
49
+ Decidim::Proposals::CollaborativeDraftPresenter.new(self)
51
50
  end
52
51
 
53
52
  # Public: Overrides the `reported_attributes` Reportable concern method.
@@ -251,11 +251,6 @@ module Decidim
251
251
  state == "evaluating"
252
252
  end
253
253
 
254
- # Public: Overrides the `reported_content_url` Reportable concern method.
255
- def reported_content_url
256
- ResourceLocatorPresenter.new(self).url
257
- end
258
-
259
254
  # Returns the presenter for this author, to be used in the views.
260
255
  # Required by ResourceRenderer.
261
256
  def presenter
@@ -347,12 +342,8 @@ module Decidim
347
342
  where(query, value:)
348
343
  end
349
344
 
350
- def self.ransackable_scopes(auth_object = nil)
351
- base = [:with_any_origin, :with_any_state, :voted_by, :coauthored_by, :related_to, :with_any_scope, :with_any_category]
352
- return base unless auth_object&.admin?
353
-
354
- # Add extra scopes for admins for the admin panel searches
355
- base + [:valuator_role_ids_has]
345
+ def self.ransackable_scopes(_auth_object = nil)
346
+ [:with_any_origin, :with_any_state, :voted_by, :coauthored_by, :related_to, :with_any_scope, :with_any_category, :valuator_role_ids_has]
356
347
  end
357
348
 
358
349
  # Create i18n ransackers for :title and :body.
@@ -4,15 +4,16 @@ module Decidim
4
4
  module Proposals
5
5
  class Permissions < Decidim::DefaultPermissions
6
6
  def permissions
7
- return permission_action unless user
8
-
9
7
  # Delegate the admin permission checks to the admin permissions class
10
8
  return Decidim::Proposals::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin
11
9
  return permission_action if permission_action.scope != :public
12
10
 
11
+ toggle_allow(!proposal.hidden?) if permission_action.subject == :proposal && permission_action.action == :read
12
+ return permission_action unless user
13
+
13
14
  case permission_action.subject
14
15
  when :proposal
15
- apply_proposal_permissions(permission_action)
16
+ apply_proposal_permissions(permission_action) unless permission_action.action == :read
16
17
  when :collaborative_draft
17
18
  apply_collaborative_draft_permissions(permission_action)
18
19
  else
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Proposals
5
+ class CollaborativeDraftDiffRenderer < DiffRenderer
6
+ private
7
+
8
+ def attribute_types
9
+ {
10
+ title: :string,
11
+ body: :string,
12
+ decidim_category_id: :category,
13
+ decidim_scope_id: :scope,
14
+ address: :string,
15
+ latitude: :string,
16
+ longitude: :string,
17
+ decidim_proposals_proposal_state_id: :string
18
+ }
19
+ end
20
+ end
21
+ end
22
+ end
@@ -21,7 +21,9 @@ module Decidim
21
21
 
22
22
  # Parses the values before parsing the changeset.
23
23
  def parse_changeset(attribute, values, type, diff)
24
+ return parse_i18n_changeset(attribute, values, type, diff) if [:i18n, :i18n_html].include?(type)
24
25
  return parse_scope_changeset(attribute, values, type, diff) if type == :scope
26
+ return parse_user_group_changeset(attribute, values, type, diff) if type == :user_group
25
27
 
26
28
  values = parse_values(attribute, values)
27
29
  old_value = values[0]
@@ -117,7 +117,7 @@ module Decidim
117
117
  if attachment.file.attached?
118
118
  new_attachment.file = attachment.file.blob
119
119
  else
120
- new_attachment.attached_uploader(:file).remote_url = attachment.attached_uploader(:file).url(host: original_proposal.organization.host)
120
+ new_attachment.attached_uploader(:file).remote_url = attachment.attached_uploader(:file).url
121
121
  end
122
122
 
123
123
  new_attachment.save!
@@ -20,7 +20,7 @@
20
20
  </div>
21
21
  <% end %>
22
22
  <% if @form.component_suggested_hashtags.any? %>
23
- <div class="field">
23
+ <div class="row column">
24
24
  <%= form.label :suggested_hashtags %>
25
25
  <div class="checkboxes hashtags">
26
26
  <%= form.collection_check_boxes :suggested_hashtags, @form.component_suggested_hashtags.map { |hashtag| [hashtag.downcase, "##{hashtag}"] }, :first, :last do |option|
@@ -21,7 +21,7 @@
21
21
  <%= check_box_tag "proposals_bulk", "all", false, class: "js-check-all" %>
22
22
  </th>
23
23
  <th class="!text-left">
24
- <%= sort_link(query, :title, t("models.proposal.fields.title", scope: "decidim.proposals") ) %>
24
+ <%= sort_link(query, :translated_title, t("models.proposal.fields.title", scope: "decidim.proposals") ) %>
25
25
  </th>
26
26
  <th>
27
27
  <%= sort_link(query, :published_at, t("models.proposal.fields.published_at", scope: "decidim.proposals") ) %>
@@ -54,7 +54,7 @@
54
54
  </th>
55
55
 
56
56
  <th>
57
- <%= sort_link(query, :state, [:state, :is_emendation], t("models.proposal.fields.state", scope: "decidim.proposals") ) %>
57
+ <%= t("models.proposal.fields.state", scope: "decidim.proposals") %>
58
58
  </th>
59
59
 
60
60
  <th class="actions"><%= t("actions.title", scope: "decidim.proposals") %></th>
@@ -52,20 +52,20 @@
52
52
 
53
53
  <% presented_endorsers = endorsers_presenters_for(proposal) %>
54
54
  <% if presented_endorsers.any? %>
55
- <%= render partial: "endorsers", locals: { presented_endorsers:, proposal: } %>
55
+ <%= render partial: "decidim/proposals/admin/proposals/endorsers", locals: { presented_endorsers:, proposal: } %>
56
56
  <% end %>
57
57
 
58
58
  <% if proposal.documents.any? %>
59
- <%= render partial: "documents", locals: { proposal: } %>
59
+ <%= render partial: "decidim/proposals/admin/proposals/documents", locals: { proposal: } %>
60
60
  <% end %>
61
61
 
62
62
  <% if proposal.photos.any? %>
63
- <%= render partial: "photos", locals: { proposal: } %>
63
+ <%= render partial: "decidim/proposals/admin/proposals/photos", locals: { proposal: } %>
64
64
  <% end %>
65
65
 
66
66
  <% proposal_meetings = proposal.linked_resources(:meetings, "proposals_from_meeting") %>
67
67
  <% if proposal_meetings.any? %>
68
- <%= render partial: "meetings", locals: { proposal_meetings: } %>
68
+ <%= render partial: "decidim/proposals/admin/proposals/meetings", locals: { proposal_meetings: } %>
69
69
  <% end %>
70
70
 
71
71
  <% if allowed_to?(:create, :proposal_note, proposal: proposal) %>
@@ -7,7 +7,7 @@
7
7
  <% if @proposals.empty? %>
8
8
  <%= cell("decidim/announcement", params[:filter].present? ? t(".empty_filters") : t(".empty")) %>
9
9
  <% else %>
10
- <h2 class="h5 md:h3 decorator"><%= t("count", scope: "decidim.proposals.proposals.index", count: @proposals.total_count) %></h2>
10
+ <h2 class="h5 md:h3 decorator" aria-live="polite" aria-atomic="true"><%= t("count", scope: "decidim.proposals.proposals.index", count: @proposals.total_count) %></h2>
11
11
 
12
12
  <%= order_selector available_orders, i18n_scope: "decidim.proposals.proposals.orders" %>
13
13
 
@@ -1,4 +1,11 @@
1
- <% add_decidim_page_title(t("name", scope: "decidim.components.proposals")) %>
1
+ <% add_decidim_meta_tags(
2
+ description: translated_attribute(current_participatory_space.short_description),
3
+ title: t("decidim.components.pagination.page_title",
4
+ component_name:,
5
+ current_page: @proposals.current_page,
6
+ total_pages: @proposals.total_pages ),
7
+ url: proposals_url,
8
+ resource: current_component) %>
2
9
 
3
10
  <% append_stylesheet_pack_tag "decidim_proposals", media: "all" %>
4
11
  <% append_javascript_pack_tag "decidim_proposals" %>
@@ -31,7 +38,7 @@
31
38
 
32
39
  <% if Decidim::Map.available?(:geocoding, :dynamic) && component_settings.geocoding_enabled? %>
33
40
  <div class="proposal-list__map">
34
- <%= dynamic_map_for proposals_data_for_map(@all_geocoded_proposals) do %>
41
+ <%= dynamic_map_for proposals_data_for_map(@proposals) do %>
35
42
  <template id="marker-popup">
36
43
  <div class="space-y-6">
37
44
  <a href="${link}" class="card__list">
@@ -3,3 +3,15 @@ var $orderFilterInput = $('.order_filter');
3
3
 
4
4
  $proposals.html('<%= j(render partial: "proposals").strip.html_safe %>');
5
5
  $orderFilterInput.val('<%= order %>');
6
+
7
+ <% if Decidim::Map.available?(:geocoding, :dynamic) && component_settings.geocoding_enabled? %>
8
+ var $map = $("#map");
9
+ var controller = $map.data("map-controller");
10
+ if (controller) {
11
+ var markerData = JSON.parse('<%= escape_javascript proposals_data_for_map(@proposals).to_json.html_safe %>');
12
+ controller.clearMarkers();
13
+ if (markerData.length > 0 ) {
14
+ controller.addMarkers(markerData);
15
+ }
16
+ }
17
+ <% end %>
@@ -77,7 +77,7 @@ extra_admin_link(
77
77
  <% end %>
78
78
 
79
79
  <% if component_settings.geocoding_enabled? && @proposal.geocoded? %>
80
- <div class="static-map__container">
80
+ <div class="static-map__container py-6">
81
81
  <%= render partial: "decidim/shared/static_map", locals: { icon_name: "proposals", geolocalizable: @proposal } %>
82
82
  </div>
83
83
  <% end %>
@@ -12,6 +12,8 @@ ar:
12
12
  state: حالة
13
13
  title: عنوان
14
14
  user_group_id: إنشاء مسودة تعاونية كـ
15
+ import_participatory_text:
16
+ document: مستند
15
17
  proposal:
16
18
  address: عنوان
17
19
  answer: إجابة
@@ -21,6 +23,8 @@ ar:
21
23
  category_id: الفئة
22
24
  decidim_scope_id: النطاق
23
25
  has_address: لديه عنوان
26
+ latitude: خط العرض
27
+ longitude: خط الطول
24
28
  scope_id: نطاق
25
29
  state: حالة
26
30
  suggested_hashtags: الهاشتاج المقترحة
@@ -33,6 +37,8 @@ ar:
33
37
  execution_period: فترة التنفيذ
34
38
  proposals_copy:
35
39
  origin_component_id: مكون لنسخ المقترحات من
40
+ proposals_file_import:
41
+ file: ملف
36
42
  proposals_import:
37
43
  import_proposals: مقترحات الاستيراد
38
44
  keep_answers: الاحتفاظ بالحالة والإجابات
@@ -311,12 +317,10 @@ ar:
311
317
  notification_title: تم رفض الاقتراح <a href="%{resource_path}">%{resource_title}</a>.
312
318
  proposal_update_category:
313
319
  email_intro: 'قام المشرف بتحديث فئة اقتراحك "%{resource_title}" ، تحقق من ذلك في هذه الصفحة:'
314
- email_outro: لقد تلقيت هذا الإشعار لأنك مؤلف الاقتراح.
315
320
  email_subject: تم تحديث فئة %{resource_title} اقتراح
316
321
  notification_title: تم تحديث فئة اقتراح <a href="%{resource_path}">%{resource_title}</a> بواسطة مسؤول.
317
322
  proposal_update_scope:
318
323
  email_intro: 'قام مدير بتحديث نطاق اقتراحك "%{resource_title}" ، يرجى التحقق منه على هذه الصفحة:'
319
- email_outro: لقد تلقيت هذا الإشعار لأنك مؤلف الاقتراح.
320
324
  email_subject: تم تحديث نطاق الاقتراح %{resource_title}
321
325
  notification_title: نطاق الاقتراح <a href="%{resource_path}">%{resource_title}</a> تم تحديثه من قبل مدير.
322
326
  voting_enabled:
@@ -376,7 +380,7 @@ ar:
376
380
  title: الدعم
377
381
  participatory_spaces:
378
382
  highlighted_proposals:
379
- see_all: شاهد الكل (%{count})
383
+ see_all: شاهد الكل
380
384
  proposals:
381
385
  actions:
382
386
  answer_proposal: الرد على المُقتَرَح
@@ -486,7 +490,6 @@ ar:
486
490
  index:
487
491
  actions: أفعال
488
492
  assign_to_valuator: أسنِده إلى مُقيِّم
489
- assign_to_valuator_button: تعيين
490
493
  cancel: إلغاء
491
494
  change_category: تغيير الفئة
492
495
  change_scope: تغيير النطاق
@@ -500,7 +503,6 @@ ar:
500
503
  split_button: انشق، مزق
501
504
  title: اقتراحات
502
505
  unassign_from_valuator: إلغاء الإسناد مِن المُقيِّم
503
- unassign_from_valuator_button: إلغاء الإسناد
504
506
  update: تحديث
505
507
  update_scope_button: تحديث النطاق
506
508
  new:
@@ -766,7 +768,6 @@ ar:
766
768
  text_banner: أنت تتطلع على قائمة الاقتراحات المسحوبة من قبل مؤلفيها. %{go_back_link}.
767
769
  new:
768
770
  send: استمر
769
- title: إنشاء اقتراحك
770
771
  orders:
771
772
  label: 'ترتيب المقترحات حسب:'
772
773
  most_commented: الأكثر تعليقًا عليها
@@ -105,7 +105,7 @@ bg:
105
105
  'false': Предложения
106
106
  'true': Изменения
107
107
  scope_id_eq:
108
- label: Обхват
108
+ label: Сфера
109
109
  state_eq:
110
110
  label: Състояние
111
111
  values:
@@ -130,7 +130,7 @@ bg:
130
130
  actions:
131
131
  amend: Промяна
132
132
  comment: Коментар
133
- create: Създай
133
+ create: Създаване
134
134
  endorse: Одобри
135
135
  vote: Поддръжка
136
136
  vote_comment: Оцени коментара
@@ -179,7 +179,7 @@ bg:
179
179
  proposal_wizard_step_3_help_text: Текст на помощника за стъпка "Завърши"
180
180
  proposal_wizard_step_4_help_text: Помощен текст на стъпка "Публикуване" на съветника за предложения
181
181
  resources_permissions_enabled: Позволените действия могат да се задават за всяко предложение
182
- scope_id: Обхват
182
+ scope_id: Сфера
183
183
  scopes_enabled: Обхватите са активирани
184
184
  threshold_per_proposal: Праг за предложенията
185
185
  vote_limit: Максимален брой поддръжки на участник
@@ -320,12 +320,10 @@ bg:
320
320
  notification_title: Предложението <a href="%{resource_path}">%{resource_title}</a> беше отхвърлено.
321
321
  proposal_update_category:
322
322
  email_intro: 'Администратор актуализира категорията на Вашето предложение „%{resource_title}“. Вижте повече на тази страница:'
323
- email_outro: Получавате това известие, защото сте авторът на предложението.
324
323
  email_subject: Категорията на предложението %{resource_title} беше актуализирана
325
324
  notification_title: Категорията на предложението <a href="%{resource_path}">%{resource_title}</a> беше актуализирана от администратор.
326
325
  proposal_update_scope:
327
326
  email_intro: 'Администратор актуализира обхвата на Вашето предложение „%{resource_title}“. Вижте повече на тази страница:'
328
- email_outro: Получавате това известие, защото сте авторът на предложението.
329
327
  email_subject: Обхватът на предложението %{resource_title} беше актуализиран
330
328
  notification_title: Обхватът на предложението <a href="%{resource_path}">%{resource_title}</a> беше актуализиран от администратор.
331
329
  voting_enabled:
@@ -387,7 +385,6 @@ bg:
387
385
  title: Подкрепа
388
386
  participatory_spaces:
389
387
  highlighted_proposals:
390
- last: Позледни предложения
391
388
  see_all: Виж всички предложения
392
389
  proposals:
393
390
  actions:
@@ -506,7 +503,6 @@ bg:
506
503
  index:
507
504
  actions: Активности
508
505
  assign_to_valuator: Възлагане на оценител
509
- assign_to_valuator_button: Възлагане
510
506
  cancel: Отказ
511
507
  change_category: Промяна на категория
512
508
  change_scope: Промяна на обхвата
@@ -520,7 +516,6 @@ bg:
520
516
  split_button: Разделяне
521
517
  title: Предложения
522
518
  unassign_from_valuator: Отнемане възложеното на оценителя
523
- unassign_from_valuator_button: Отнемане на възложеното
524
519
  update: Актуализация
525
520
  update_scope_button: Актуализиране на обхвата
526
521
  new:
@@ -653,7 +648,7 @@ bg:
653
648
  open: Отворен
654
649
  published: Публикувано
655
650
  related_to: Свързано с
656
- scope: Обхват
651
+ scope: Сфера
657
652
  search: Търсене
658
653
  state: Статус
659
654
  withdrawn: Оттеглено
@@ -739,7 +734,7 @@ bg:
739
734
  official_proposal: Официално предложение
740
735
  published_answer: Публикуван отговор
741
736
  published_at: Публикувано на
742
- scope: Обхват
737
+ scope: Сфера
743
738
  state: Статус
744
739
  title: Заглавие
745
740
  valuator: Оценител
@@ -803,7 +798,6 @@ bg:
803
798
  text_banner: Разглеждате списъка с предложения, оттеглени от своите автори. %{go_back_link}.
804
799
  new:
805
800
  send: Продължи
806
- title: Създайте Ваше предложение
807
801
  orders:
808
802
  label: 'Подреждане на предложенията по:'
809
803
  most_commented: Най-коментирани
@@ -0,0 +1 @@
1
+ bn:
@@ -0,0 +1,98 @@
1
+ ---
2
+ bs:
3
+ activemodel:
4
+ attributes:
5
+ valuation_assignment:
6
+ admin_log:
7
+ valuator_role_id: Ime procenjivača
8
+ errors:
9
+ models:
10
+ proposal:
11
+ attributes:
12
+ body:
13
+ cant_be_equal_to_template: ne može biti jednak šablonu
14
+ models:
15
+ decidim/proposals/admin/update_proposal_scope_event: Predlog opsega izmenjen
16
+ decidim:
17
+ admin:
18
+ filters:
19
+ proposals:
20
+ valuator_role_ids_has:
21
+ label: Dodeljeno procenjivaču
22
+ search_placeholder:
23
+ id_string_or_title_cont: Pretraži %{collection} prema identifikacionom broju ili nazivu.
24
+ components:
25
+ proposals:
26
+ settings:
27
+ global:
28
+ new_proposal_body_template: Novi predlog šablona glavnog teksta
29
+ new_proposal_body_template_help: Možete da definišete tekst koji će se pojavljivati pri kreiranju novog predloga
30
+ step:
31
+ amendments_visibility: Vidljivost izmena
32
+ amendments_visibility_choices:
33
+ all: Izmene su vidljive svima
34
+ participants: Izmene su vidljive samo svojim autorima
35
+ answers_with_costs: Omogući troškove za odgovore na predloge
36
+ publish_answers_immediately: Objavi odgovore na predloge odmah
37
+ events:
38
+ proposals:
39
+ admin:
40
+ proposal_note_created:
41
+ email_outro: Dobili ste ovo obaveštenje jer možete da procenite predlog.
42
+ email_subject: Neko je ostavio poruku na predlogu %{resource_title}.
43
+ proposal_update_scope:
44
+ email_intro: 'Administrator je ažurirao opseg vašeg predloga "%{resource_title}", pogledajte na ovoj strani:'
45
+ email_subject: Opseg predloga %{resource_title} je ažuriran
46
+ proposals:
47
+ actions:
48
+ answer_proposal: Odgovor na predlog
49
+ show: Prikaži predlog
50
+ admin:
51
+ proposals:
52
+ index:
53
+ assign_to_valuator: Dodeli procenjivaču
54
+ change_scope: Promeni opseg
55
+ publish_answers: Objavi odgovore
56
+ unassign_from_valuator: Oduzmi od procenjivača
57
+ update_scope_button: Ažuriraj opseg
58
+ show:
59
+ amendments_count: Broj izmena
60
+ assigned_valuators: Dodeljeni procenjivači
61
+ comments_count: Broj komentara
62
+ documents: Dokumenti
63
+ endorsements_count: Broj podržavanja
64
+ endorsers: Podržavaoci
65
+ n_more_endorsers:
66
+ one: i još 1
67
+ few: i još %{count}
68
+ other: i još %{count}
69
+ photos: Slike
70
+ ranking: "%{ranking} od %{total}"
71
+ related_meetings: Slični sastanci
72
+ remove_assignment: Ukloni zadatak
73
+ remove_assignment_confirmation: Da li ste sigurni da želite da uklonite procenjivača sa ovog predloga?
74
+ valuators: Procenjivači
75
+ update_category:
76
+ invalid: 'Ovi predlozi već imaju %{subject_name} kategoriju: %{proposals}.'
77
+ success: 'Predlozi uspešno dodati u kategoriju %{subject_name}: %{proposals}.'
78
+ update_scope:
79
+ invalid: 'Ovi predlozi već imaju %{subject_name} opseg: %{proposals}.'
80
+ success: 'Predlozi kojima je uspešno dodat opseg %{subject_name}: %{proposals}.'
81
+ admin_log:
82
+ proposal:
83
+ publish_answer: "%{user_name} je objavio odgovor na predlog %{resource_name} u prostoru %{space_name}"
84
+ valuation_assignment:
85
+ create: "%{user_name} je dodao predlog %{resource_name} procenjivaču"
86
+ models:
87
+ proposal:
88
+ fields:
89
+ published_answer: Objavljeni odgovor
90
+ valuator: Procenjivač
91
+ valuators: Procenjivači
92
+ proposals:
93
+ show:
94
+ estimated_cost: Procenjen trošak
95
+ proposals_picker:
96
+ choose_proposals: Izaberi predloge
97
+ publish_answers:
98
+ success: Odgovori na predloge uspešno objavljeni.