decidim-proposals 0.28.4 → 0.28.5

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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/proposals/highlighted_proposals_for_component/show.erb +11 -11
  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/forms/decidim/proposals/admin/proposal_answer_form.rb +3 -3
  6. data/app/forms/decidim/proposals/admin/proposal_form.rb +1 -1
  7. data/app/helpers/decidim/proposals/map_helper.rb +1 -1
  8. data/app/models/decidim/proposals/proposal.rb +2 -6
  9. data/app/permissions/decidim/proposals/permissions.rb +4 -3
  10. data/app/services/decidim/proposals/collaborative_draft_diff_renderer.rb +22 -0
  11. data/app/services/decidim/proposals/diff_renderer.rb +2 -0
  12. data/app/services/decidim/proposals/proposal_builder.rb +1 -1
  13. data/app/views/decidim/proposals/admin/proposals/index.html.erb +2 -2
  14. data/app/views/decidim/proposals/proposals/index.html.erb +1 -1
  15. data/app/views/decidim/proposals/proposals/index.js.erb +12 -0
  16. data/app/views/decidim/proposals/proposals/show.html.erb +1 -1
  17. data/config/locales/ar.yml +1 -3
  18. data/config/locales/bg.yml +5 -7
  19. data/config/locales/bn-BD.yml +1 -0
  20. data/config/locales/bs-BA.yml +100 -0
  21. data/config/locales/ca.yml +5 -5
  22. data/config/locales/cs.yml +5 -5
  23. data/config/locales/de.yml +7 -7
  24. data/config/locales/el.yml +3 -5
  25. data/config/locales/es-MX.yml +3 -3
  26. data/config/locales/es-PY.yml +3 -3
  27. data/config/locales/es.yml +2 -2
  28. data/config/locales/eu.yml +92 -92
  29. data/config/locales/fi-plain.yml +3 -3
  30. data/config/locales/fi.yml +23 -23
  31. data/config/locales/fr-CA.yml +4 -6
  32. data/config/locales/fr.yml +3 -5
  33. data/config/locales/gl.yml +3 -6
  34. data/config/locales/he-IL.yml +4 -0
  35. data/config/locales/hu.yml +2 -3
  36. data/config/locales/id-ID.yml +9 -4
  37. data/config/locales/is-IS.yml +0 -7
  38. data/config/locales/it.yml +7 -8
  39. data/config/locales/ja.yml +3 -5
  40. data/config/locales/lt.yml +1 -3
  41. data/config/locales/lv.yml +5 -2
  42. data/config/locales/nl.yml +7 -5
  43. data/config/locales/no.yml +1 -4
  44. data/config/locales/pl.yml +2 -4
  45. data/config/locales/pt-BR.yml +3 -5
  46. data/config/locales/pt.yml +2 -4
  47. data/config/locales/ro-RO.yml +7 -9
  48. data/config/locales/ru.yml +0 -7
  49. data/config/locales/sk.yml +6 -3
  50. data/config/locales/sl.yml +0 -4
  51. data/config/locales/sv.yml +5 -5
  52. data/config/locales/tr-TR.yml +5 -7
  53. data/config/locales/uk.yml +1 -8
  54. data/config/locales/zh-CN.yml +1 -3
  55. data/config/locales/zh-TW.yml +3 -5
  56. data/decidim-proposals.gemspec +1 -1
  57. data/lib/decidim/api/proposal_type.rb +13 -0
  58. data/lib/decidim/api/proposals_type.rb +1 -3
  59. data/lib/decidim/proposals/proposal_serializer.rb +7 -4
  60. data/lib/decidim/proposals/test/factories.rb +6 -5
  61. data/lib/decidim/proposals/version.rb +1 -1
  62. metadata +24 -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: 2a1d75f047cf77a3873fed131cdefcd187c822c14f9fedb1b4d5c5d8a006454f
4
+ data.tar.gz: 825829e1601b57bcb849fd9359190839dc2e8691d4c203377d0cb8d1865c43c2
5
5
  SHA512:
6
- metadata.gz: 8f7d3a09bb63fe6e45295e8c1636d46d635e121ad51aa60f409723c0ace5e3cce9a32b15739940459821ceb47109d8349fe9d0ffa39d0d509db5e97ddd0ce70e
7
- data.tar.gz: 3a819d8a0556c18c08740b908d79a2f8366526876260ce74383674333194118ea64bc197ff581855091a4fbdb69f16273a5bf0312c3254e760f4b988918372f3
6
+ metadata.gz: 56fd50c16ab2a410a880b20896c64c3faf5be9e295223d3a6a42aa5045719057e5ad9effb1511ed953e52c89c270c037dc57100167566cba67e2b04f952e52ef
7
+ data.tar.gz: 46d01f111fab1ce7ba565990f435027a943dbb75f992f8873eb522739c9454a5a0c5ec3562daa20616ec03cf2ef4366d8ba82fd67dc51234464d262ff3cadbbf
@@ -11,21 +11,21 @@
11
11
  <% end %>
12
12
  </div>
13
13
 
14
+ <div class="flex items-center justify-between space-x-6">
15
+ <span class="content-block__span flex-shrink-0">
16
+ <%= t("decidim.participatory_spaces.highlighted_proposals.last") %>
17
+ </span>
18
+ <% if single_component? %>
19
+ <%= link_to decidim_proposals.new_proposal_path, class: "button button__xs md:button__lg button__secondary" do %>
20
+ <span class="text-center"><%= t("decidim.proposals.actions.new") %></span>
21
+ <%= icon "add-line" %>
22
+ <% end %>
23
+ <% end %>
24
+ </div>
14
25
  <div class="flex items-start justify-between">
15
26
  <div class="grow space-y-6">
16
- <span class="content-block__span">
17
- <%= t("decidim.participatory_spaces.highlighted_proposals.last") %>
18
- </span>
19
-
20
27
  <% proposals_to_render.each do |p| %>
21
28
  <%= card_for p, link_whole_card: true, title_tag: :h3, **options.slice(:show_space) %>
22
29
  <% end %>
23
30
  </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
31
  </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
 
@@ -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
@@ -347,12 +347,8 @@ module Decidim
347
347
  where(query, value:)
348
348
  end
349
349
 
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]
350
+ def self.ransackable_scopes(_auth_object = nil)
351
+ [:with_any_origin, :with_any_state, :voted_by, :coauthored_by, :related_to, :with_any_scope, :with_any_category, :valuator_role_ids_has]
356
352
  end
357
353
 
358
354
  # 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!
@@ -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>
@@ -31,7 +31,7 @@
31
31
 
32
32
  <% if Decidim::Map.available?(:geocoding, :dynamic) && component_settings.geocoding_enabled? %>
33
33
  <div class="proposal-list__map">
34
- <%= dynamic_map_for proposals_data_for_map(@all_geocoded_proposals) do %>
34
+ <%= dynamic_map_for proposals_data_for_map(@proposals) do %>
35
35
  <template id="marker-popup">
36
36
  <div class="space-y-6">
37
37
  <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 %>
@@ -311,12 +311,10 @@ ar:
311
311
  notification_title: تم رفض الاقتراح <a href="%{resource_path}">%{resource_title}</a>.
312
312
  proposal_update_category:
313
313
  email_intro: 'قام المشرف بتحديث فئة اقتراحك "%{resource_title}" ، تحقق من ذلك في هذه الصفحة:'
314
- email_outro: لقد تلقيت هذا الإشعار لأنك مؤلف الاقتراح.
315
314
  email_subject: تم تحديث فئة %{resource_title} اقتراح
316
315
  notification_title: تم تحديث فئة اقتراح <a href="%{resource_path}">%{resource_title}</a> بواسطة مسؤول.
317
316
  proposal_update_scope:
318
317
  email_intro: 'قام مدير بتحديث نطاق اقتراحك "%{resource_title}" ، يرجى التحقق منه على هذه الصفحة:'
319
- email_outro: لقد تلقيت هذا الإشعار لأنك مؤلف الاقتراح.
320
318
  email_subject: تم تحديث نطاق الاقتراح %{resource_title}
321
319
  notification_title: نطاق الاقتراح <a href="%{resource_path}">%{resource_title}</a> تم تحديثه من قبل مدير.
322
320
  voting_enabled:
@@ -376,7 +374,7 @@ ar:
376
374
  title: الدعم
377
375
  participatory_spaces:
378
376
  highlighted_proposals:
379
- see_all: شاهد الكل (%{count})
377
+ see_all: شاهد الكل
380
378
  proposals:
381
379
  actions:
382
380
  answer_proposal: الرد على المُقتَرَح
@@ -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:
@@ -653,7 +651,7 @@ bg:
653
651
  open: Отворен
654
652
  published: Публикувано
655
653
  related_to: Свързано с
656
- scope: Обхват
654
+ scope: Сфера
657
655
  search: Търсене
658
656
  state: Статус
659
657
  withdrawn: Оттеглено
@@ -739,7 +737,7 @@ bg:
739
737
  official_proposal: Официално предложение
740
738
  published_answer: Публикуван отговор
741
739
  published_at: Публикувано на
742
- scope: Обхват
740
+ scope: Сфера
743
741
  state: Статус
744
742
  title: Заглавие
745
743
  valuator: Оценител
@@ -0,0 +1 @@
1
+ bn:
@@ -0,0 +1,100 @@
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
+ assign_to_valuator_button: Dodeli
55
+ change_scope: Promeni opseg
56
+ publish_answers: Objavi odgovore
57
+ unassign_from_valuator: Oduzmi od procenjivača
58
+ unassign_from_valuator_button: Od dodeli
59
+ update_scope_button: Ažuriraj opseg
60
+ show:
61
+ amendments_count: Broj izmena
62
+ assigned_valuators: Dodeljeni procenjivači
63
+ comments_count: Broj komentara
64
+ documents: Dokumenti
65
+ endorsements_count: Broj podržavanja
66
+ endorsers: Podržavaoci
67
+ n_more_endorsers:
68
+ one: i još 1
69
+ few: i još %{count}
70
+ other: i još %{count}
71
+ photos: Slike
72
+ ranking: "%{ranking} od %{total}"
73
+ related_meetings: Slični sastanci
74
+ remove_assignment: Ukloni zadatak
75
+ remove_assignment_confirmation: Da li ste sigurni da želite da uklonite procenjivača sa ovog predloga?
76
+ valuators: Procenjivači
77
+ update_category:
78
+ invalid: 'Ovi predlozi već imaju %{subject_name} kategoriju: %{proposals}.'
79
+ success: 'Predlozi uspešno dodati u kategoriju %{subject_name}: %{proposals}.'
80
+ update_scope:
81
+ invalid: 'Ovi predlozi već imaju %{subject_name} opseg: %{proposals}.'
82
+ success: 'Predlozi kojima je uspešno dodat opseg %{subject_name}: %{proposals}.'
83
+ admin_log:
84
+ proposal:
85
+ publish_answer: "%{user_name} je objavio odgovor na predlog %{resource_name} u prostoru %{space_name}"
86
+ valuation_assignment:
87
+ create: "%{user_name} je dodao predlog %{resource_name} procenjivaču"
88
+ models:
89
+ proposal:
90
+ fields:
91
+ published_answer: Objavljeni odgovor
92
+ valuator: Procenjivač
93
+ valuators: Procenjivači
94
+ proposals:
95
+ show:
96
+ estimated_cost: Procenjen trošak
97
+ proposals_picker:
98
+ choose_proposals: Izaberi predloge
99
+ publish_answers:
100
+ success: Odgovori na predloge uspešno objavljeni.
@@ -130,7 +130,7 @@ ca:
130
130
  actions:
131
131
  amend: Esmena
132
132
  comment: Comentar
133
- create: Crear
133
+ create: Crea
134
134
  endorse: Adherir-se
135
135
  vote: Donar suport
136
136
  vote_comment: Votar el comentari
@@ -320,12 +320,12 @@ ca:
320
320
  notification_title: S'ha rebutjat la proposta <a href="%{resource_path}">%{resource_title}</a>.
321
321
  proposal_update_category:
322
322
  email_intro: 'Una administradora ha actualitzat la categoria de la teva proposta "%{resource_title}", fes-hi una ullada:'
323
- email_outro: Has rebut aquesta notificació perquè vas presentar aquesta proposta.
323
+ email_outro: Has rebut aquesta notificació perquè ets l'autora de la proposta.
324
324
  email_subject: S'ha actualitzat la categoria de la proposta %{resource_title}
325
325
  notification_title: La categoria de la proposta <a href="%{resource_path}">%{resource_title}</a> ha estat actualitzada per una administradora.
326
326
  proposal_update_scope:
327
327
  email_intro: 'Una administradora ha actualitzat l''àmbit de la teva proposta "%{resource_title}", fes-hi una ullada:'
328
- email_outro: Has rebut aquesta notificació perquè vas presentar aquesta proposta.
328
+ email_outro: Has rebut aquesta notificació perquè ets l'autora de la proposta.
329
329
  email_subject: S'ha actualitzat l'àmbit de la proposta %{resource_title}
330
330
  notification_title: L'àmbit de la proposta <a href="%{resource_path}">%{resource_title}</a> ha estat actualitzat per una administradora.
331
331
  voting_enabled:
@@ -498,7 +498,7 @@ ca:
498
498
  title: Actualitza la proposta
499
499
  update: Actualizar
500
500
  form:
501
- attachment_legend: "(Opcional) Afegiu un fitxer adjunt"
501
+ attachment_legend: "(Opcional) Afegeix un fitxer adjunt"
502
502
  created_in_meeting: Aquesta proposta prové d'una trobada
503
503
  delete_attachment: Suprimeix l'adjunt
504
504
  select_a_category: Selecciona una categoria
@@ -834,7 +834,7 @@ ca:
834
834
  show:
835
835
  answer: Resposta
836
836
  changes_at_title: Esmena a "%{title}"
837
- edit_proposal: Edita proposta
837
+ edit_proposal: Edita la proposta
838
838
  estimated_cost: Cost estimat
839
839
  hidden_endorsers_count:
840
840
  one: i %{count} persona més
@@ -113,7 +113,7 @@ cs:
113
113
  'false': Návrhy
114
114
  'true': Pozměňovací návrhy
115
115
  scope_id_eq:
116
- label: Oblast působnosti
116
+ label: Rozsah
117
117
  state_eq:
118
118
  label: Stav
119
119
  values:
@@ -187,7 +187,7 @@ cs:
187
187
  proposal_wizard_step_3_help_text: Text průvodce kroku nápovědy „Dokončit“ Návrh
188
188
  proposal_wizard_step_4_help_text: Text nápovědy ke kroku "Zveřejnit" průvodce návrhem
189
189
  resources_permissions_enabled: Pro každý návrh lze nastavit oprávnění akce
190
- scope_id: Oblast působnosti
190
+ scope_id: Rozsah
191
191
  scopes_enabled: Oblasti působnosti povoleny
192
192
  threshold_per_proposal: Prah na návrh
193
193
  vote_limit: Počet hlasů na uživatele
@@ -328,12 +328,12 @@ cs:
328
328
  notification_title: Návrh <a href="%{resource_path}">%{resource_title}</a> byl zamítnut.
329
329
  proposal_update_category:
330
330
  email_intro: 'Správce aktualizoval kategorii vašeho návrhu "%{resource_title}", podívejte se na něj:'
331
- email_outro: Toto oznámení jste obdrželi, protože jste autorem návrhu.
331
+ email_outro: Obdrželi jste toto oznámení, protože jste autorem návrhu.
332
332
  email_subject: Kategorie návrhů %{resource_title} byla aktualizována
333
333
  notification_title: Kategorie návrhu <a href="%{resource_path}">%{resource_title}</a> byla aktualizována administrátorem.
334
334
  proposal_update_scope:
335
335
  email_intro: 'Administrátor aktualizoval rozsah vašeho návrhu "%{resource_title}", podívejte se na tuto stránku:'
336
- email_outro: Toto oznámení jste obdrželi, protože jste autorem návrhu.
336
+ email_outro: Obdrželi jste toto oznámení, protože jste autorem návrhu.
337
337
  email_subject: Rámec návrhu %{resource_title} byl aktualizován
338
338
  notification_title: Rozsah návrhu <a href="%{resource_path}">%{resource_title}</a> byl aktualizován správcem.
339
339
  voting_enabled:
@@ -396,7 +396,7 @@ cs:
396
396
  participatory_spaces:
397
397
  highlighted_proposals:
398
398
  last: Poslední návrhy
399
- see_all: Zobrazit všechny (%{count})
399
+ see_all: Zobrazit všechny
400
400
  proposals:
401
401
  actions:
402
402
  answer_proposal: Odpověď na návrh
@@ -179,7 +179,7 @@ de:
179
179
  proposal_wizard_step_3_help_text: Hilfetext "Fertigstellen"-Schritt im Vorschlagsassistenten
180
180
  proposal_wizard_step_4_help_text: Hilfetext "Veröffentlichen"-Schritt im Vorschlagsassistenten
181
181
  resources_permissions_enabled: Berechtigungen können für jeden Vorschlag festgelegt werden
182
- scope_id: Bereich
182
+ scope_id: Umfang
183
183
  scopes_enabled: Bereiche aktiviert
184
184
  threshold_per_proposal: Schwellenwert pro Vorschlag
185
185
  vote_limit: Unterstützungslimit pro Benutzer
@@ -320,12 +320,12 @@ de:
320
320
  notification_title: Der Vorschlag <a href="%{resource_path}">%{resource_title}</a> wurde abgelehnt.
321
321
  proposal_update_category:
322
322
  email_intro: 'Ein Administrator hat die Kategorie Ihres Vorschlags "%{resource_title}" aktualisiert, sehen Sie es sich an:'
323
- email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie der Autor des Vorschlags sind.
323
+ email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie diesen Vorschlag verfasst haben.
324
324
  email_subject: Die Vorschlagskategorie %{resource_title} wurde aktualisiert
325
325
  notification_title: Die Vorschlagskategorie <a href="%{resource_path}">%{resource_title}</a> wurde von einem Administrator aktualisiert.
326
326
  proposal_update_scope:
327
327
  email_intro: 'Ein Administrator hat den Bereich Ihres Vorschlags „%{resource_title}“ aktualisiert, sehen Sie es sich das auf dieser Seite an:'
328
- email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie der Autor des Vorschlags sind.
328
+ email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie diesen Vorschlag verfasst haben.
329
329
  email_subject: Der Bereich des Vorschlags %{resource_title} wurde aktualisiert
330
330
  notification_title: Der Bereich des Vorschlags <a href="%{resource_path}">%{resource_title}</a> wurde von einem Administrator aktualisiert.
331
331
  voting_enabled:
@@ -388,7 +388,7 @@ de:
388
388
  participatory_spaces:
389
389
  highlighted_proposals:
390
390
  last: Letzte Vorschläge
391
- see_all: Alle anzeigen (%{count})
391
+ see_all: Alle anzeigen
392
392
  proposals:
393
393
  actions:
394
394
  answer_proposal: Vorschlag beantworten
@@ -498,7 +498,7 @@ de:
498
498
  title: Vorschlag aktualisieren
499
499
  update: Aktualisieren
500
500
  form:
501
- attachment_legend: "(Optional) Anhang hinzufügen"
501
+ attachment_legend: "(Optional) Fügen Sie einen Anhang hinzu"
502
502
  created_in_meeting: Dieser Vorschlag stammt von einer Besprechung
503
503
  delete_attachment: Anhang löschen
504
504
  select_a_category: Kategorie auswählen
@@ -693,7 +693,7 @@ de:
693
693
  error: Konnte nicht als Mitarbeiter abgelehnt werden, versuche es später erneut.
694
694
  success: "@%{user} wurde als Mitwirkende erfolgreich abgelehnt."
695
695
  show:
696
- edit: Bearbeiten Sie den gemeinsamen Entwurf
696
+ edit: Gemeinsamen Entwurf bearbeiten
697
697
  final_proposal: Endgültiger Vorschlag
698
698
  final_proposal_help_text: Dieser Entwurf ist fertig. Sie können den endgültigen fertigen Vorschlag sehen
699
699
  hidden_authors_count:
@@ -742,7 +742,7 @@ de:
742
742
  scope: Umfang
743
743
  state: Status
744
744
  title: Titel
745
- valuator: BewerterIn
745
+ valuator: Bewertende
746
746
  valuators: Bewertende
747
747
  votes: Stimmen
748
748
  new: