decidim-proposals 0.28.4 → 0.28.5

Sign up to get free protection for your applications and to get access to all the features.
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: