decidim-proposals 0.32.0 → 0.32.2

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/proposals/create_proposal.rb +1 -1
  3. data/app/commands/decidim/proposals/update_proposal.rb +1 -1
  4. data/app/controllers/concerns/decidim/proposals/admin/filterable.rb +3 -0
  5. data/app/controllers/concerns/decidim/proposals/admin/needs_interpolations.rb +2 -0
  6. data/app/controllers/decidim/proposals/admin/participatory_texts_controller.rb +1 -0
  7. data/app/controllers/decidim/proposals/admin/proposal_answers_controller.rb +3 -2
  8. data/app/controllers/decidim/proposals/admin/proposals_controller.rb +5 -2
  9. data/app/controllers/decidim/proposals/admin/proposals_imports_controller.rb +1 -1
  10. data/app/controllers/decidim/proposals/admin/proposals_merges_controller.rb +1 -0
  11. data/app/controllers/decidim/proposals/proposals_controller.rb +4 -0
  12. data/app/controllers/decidim/proposals/versions_controller.rb +2 -0
  13. data/app/forms/decidim/proposals/proposal_form.rb +5 -1
  14. data/app/helpers/decidim/proposals/application_helper.rb +5 -1
  15. data/app/permissions/decidim/proposals/admin/permissions.rb +13 -0
  16. data/app/permissions/decidim/proposals/permissions.rb +1 -1
  17. data/app/presenters/decidim/proposals/admin_log/value_types/evaluator_role_user_presenter.rb +4 -3
  18. data/app/views/decidim/proposals/admin/proposal_notes/_form.html.erb +1 -1
  19. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +1 -1
  20. data/app/views/decidim/proposals/admin/proposals/show.html.erb +14 -0
  21. data/app/views/decidim/proposals/proposals/_proposal_actions.html.erb +1 -1
  22. data/config/locales/ar.yml +0 -1
  23. data/config/locales/bg.yml +0 -3
  24. data/config/locales/ca-IT.yml +1 -0
  25. data/config/locales/ca.yml +2 -1
  26. data/config/locales/cs.yml +5 -0
  27. data/config/locales/de.yml +33 -2
  28. data/config/locales/el.yml +0 -1
  29. data/config/locales/en.yml +3 -2
  30. data/config/locales/es-MX.yml +1 -0
  31. data/config/locales/es-PY.yml +1 -0
  32. data/config/locales/es.yml +1 -0
  33. data/config/locales/eu.yml +121 -120
  34. data/config/locales/fi-plain.yml +1 -0
  35. data/config/locales/fi.yml +1 -0
  36. data/config/locales/fr-CA.yml +3 -2
  37. data/config/locales/fr.yml +12 -2
  38. data/config/locales/ga-IE.yml +0 -1
  39. data/config/locales/gl.yml +556 -12
  40. data/config/locales/hu.yml +0 -1
  41. data/config/locales/it.yml +12 -1
  42. data/config/locales/ja.yml +13 -1
  43. data/config/locales/lt.yml +0 -1
  44. data/config/locales/no.yml +0 -1
  45. data/config/locales/pl.yml +0 -3
  46. data/config/locales/pt-BR.yml +0 -3
  47. data/config/locales/pt.yml +0 -1
  48. data/config/locales/ro-RO.yml +0 -1
  49. data/config/locales/sk.yml +0 -3
  50. data/config/locales/sv.yml +21 -1
  51. data/config/locales/tr-TR.yml +0 -3
  52. data/config/locales/zh-CN.yml +0 -1
  53. data/config/locales/zh-TW.yml +0 -1
  54. data/decidim-proposals.gemspec +1 -1
  55. data/lib/decidim/proposals/import/proposal_creator.rb +3 -8
  56. data/lib/decidim/proposals/seeds.rb +4 -2
  57. data/lib/decidim/proposals/test/factories.rb +1 -1
  58. data/lib/decidim/proposals/version.rb +1 -1
  59. metadata +19 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 76f8028076056c19ad5ce823a1d2907352d566302d0772a1da36b64c3c3e380e
4
- data.tar.gz: 99c6c69cbe9aaa138371363daeb32334543da6a42b6e1f562c351c81217af5e8
3
+ metadata.gz: 856bc56010e204a9428fbc51c2c06275ea4ff942f5378d97dafa1db00ec71711
4
+ data.tar.gz: 83b14ad4439a469543a1344ff8d60528a99ec1f8de7d54c01edd5ce94e9abf0b
5
5
  SHA512:
6
- metadata.gz: 4cee4638c6cdd360b71bae094d98a65daade5926ecd34094b4cc0abfb3c97c4148b77f0f088dba2992e095301fd86470fd541c4f472b5d52307df9b7b0c0887d
7
- data.tar.gz: 24650eff90d924e95ca68f827238989da1d53cb83f0a959f08788e03a68f7cbdc9b24cfa47acbe9daad95680cc5212930f168386ff17ab99345f0752ac9d7eaa
6
+ metadata.gz: 14379c86c69518edea3ae952878c07db8257e1d4191e4997275232bb2d33fd4e7baaf9232d2391ca4a17c74f80fcabbfdbd742775c3e9dfdb3547c20d95f9d7c
7
+ data.tar.gz: 98f5b28adc0bf48c982b002c35a86e430887313508ee552e3054073264102fab12e9ea0433a7918822f690da40f4f5518507c6198cfa8ce6bffd90f55a8803f2
@@ -76,7 +76,7 @@ module Decidim
76
76
  I18n.locale => Decidim::ContentProcessor.parse(form.title, current_organization: form.current_organization).rewrite
77
77
  },
78
78
  body: {
79
- I18n.locale => Decidim::ContentProcessor.parse_with_processor(:inline_images, form.body, current_organization: form.current_organization).rewrite
79
+ I18n.locale => Decidim::ContentProcessor.parse(form.body, current_organization: form.current_organization).rewrite
80
80
  },
81
81
  component: form.component
82
82
  )
@@ -95,7 +95,7 @@ module Decidim
95
95
  I18n.locale => Decidim::ContentProcessor.parse(form.title, current_organization: form.current_organization).rewrite
96
96
  },
97
97
  body: {
98
- I18n.locale => Decidim::ContentProcessor.parse_with_processor(:inline_images, form.body, current_organization: form.current_organization).rewrite
98
+ I18n.locale => Decidim::ContentProcessor.parse(form.body, current_organization: form.current_organization).rewrite
99
99
  },
100
100
  taxonomizations: form.taxonomizations,
101
101
  address: form.address,
@@ -27,6 +27,9 @@ module Decidim
27
27
  end
28
28
 
29
29
  def accessible_proposals_collection
30
+ # Administrators can manage every proposal, even when they also
31
+ # hold an evaluator role, matching the admin permissions.
32
+ return collection if current_user.admin?
30
33
  return collection if current_participatory_space.user_roles(:evaluator).where(user: current_user).empty?
31
34
 
32
35
  collection.with_evaluation_assigned_to(current_user, current_participatory_space)
@@ -9,6 +9,8 @@ module Decidim
9
9
  extend ActiveSupport::Concern
10
10
 
11
11
  included do
12
+ protected
13
+
12
14
  def populate_interpolations(text, proposal)
13
15
  return populate_string_interpolations(text, proposal) if text.is_a?(String)
14
16
 
@@ -9,6 +9,7 @@ module Decidim
9
9
  helper ParticipatoryTextsHelper
10
10
 
11
11
  def index
12
+ enforce_permission_to :manage, :participatory_texts
12
13
  @drafts = Proposal.where(component: current_component).drafts.order(:position)
13
14
  @preview_form = form(Admin::PreviewParticipatoryTextForm).instance
14
15
  @preview_form.from_models(@drafts)
@@ -40,6 +40,7 @@ module Decidim
40
40
  end
41
41
 
42
42
  def update_multiple_answers
43
+ enforce_permission_to(:read, :component, component: current_component)
43
44
  valid_proposals = []
44
45
  failed_proposals = []
45
46
  proposals.each do |proposal|
@@ -87,7 +88,7 @@ module Decidim
87
88
  def template
88
89
  return unless Decidim.module_installed?(:templates)
89
90
 
90
- @template ||= Decidim::Templates::Template.find_by(id: params[:template][:template_id])
91
+ @template ||= Decidim::Templates::Template.where(organization: current_organization).find_by(id: params[:template][:template_id])
91
92
  end
92
93
 
93
94
  def answer_form(proposal)
@@ -95,7 +96,7 @@ module Decidim
95
96
  end
96
97
 
97
98
  def proposal_state
98
- @proposal_state ||= Decidim::Proposals::ProposalState.find_by(id: template&.field_values&.dig("proposal_state_id"))
99
+ @proposal_state ||= Decidim::Proposals::ProposalState.where(component: current_component).find_by(id: template&.field_values&.dig("proposal_state_id"))
99
100
  end
100
101
  end
101
102
  end
@@ -18,9 +18,12 @@ module Decidim
18
18
 
19
19
  before_action :check_admin_session_filters, only: [:index]
20
20
 
21
- def index; end
21
+ def index
22
+ enforce_permission_to :read, :proposal
23
+ end
22
24
 
23
25
  def show
26
+ enforce_permission_to(:read, :proposal, proposal:)
24
27
  @notes_form = form(ProposalNoteForm).instance
25
28
  @answer_form = form(Admin::ProposalAnswerForm).from_model(proposal)
26
29
  end
@@ -157,7 +160,7 @@ module Decidim
157
160
  end
158
161
 
159
162
  def proposal
160
- @proposal ||= collection.find(params[:id])
163
+ @proposal ||= accessible_proposals_collection.find(params.expect(:id))
161
164
  end
162
165
 
163
166
  def proposal_ids
@@ -33,7 +33,7 @@ module Decidim
33
33
  component = current_participatory_space.components.find_by(id: params[:origin_id])
34
34
 
35
35
  if component
36
- states = Decidim::Proposals::ProposalState
36
+ states = Decidim::Proposals::ProposalState # rubocop:disable Decidim/OrganizationScopedFinder -- component is scoped via current_participatory_space, which is org-scoped
37
37
  .where(component:)
38
38
  .map { |s| { token: s.token, title: translated_attribute(s.title) } }
39
39
  states << { token: "not_answered", title: I18n.t("decidim.proposals.answers.not_answered") }
@@ -8,6 +8,7 @@ module Decidim
8
8
  helper Decidim::Proposals::Admin::ProposalsHelper
9
9
 
10
10
  def new
11
+ enforce_permission_to :merge, :proposals
11
12
  @form = form(Admin::ProposalsMergeForm).from_params(
12
13
  params.merge(attachment: form(AttachmentForm).from_params({}))
13
14
  )
@@ -32,6 +32,8 @@ module Decidim
32
32
  # rubocop:enable Naming/VariableNumber
33
33
 
34
34
  def index
35
+ enforce_permission_to :read, :proposal
36
+
35
37
  if component_settings.participatory_texts_enabled?
36
38
  @proposals = Decidim::Proposals::Proposal
37
39
  .where(component: current_component)
@@ -52,6 +54,8 @@ module Decidim
52
54
 
53
55
  def show
54
56
  raise ActionController::RoutingError, "Not Found" if @proposal.blank? || !can_show_proposal?
57
+
58
+ enforce_permission_to :read, :proposal, proposal: @proposal
55
59
  end
56
60
 
57
61
  def new
@@ -7,6 +7,8 @@ module Decidim
7
7
  include Decidim::ApplicationHelper
8
8
  include Decidim::ResourceVersionsConcern
9
9
 
10
+ private
11
+
10
12
  def versioned_resource
11
13
  @versioned_resource ||= Proposal.not_hidden.published.where(component: current_component).find(params[:proposal_id])
12
14
  end
@@ -40,7 +40,11 @@ module Decidim
40
40
  self.body = translated_attribute(model.body)
41
41
 
42
42
  presenter = ProposalPresenter.new(model)
43
- self.body = presenter.editor_body(all_locales: body.is_a?(Hash))
43
+ self.body = if model.component.organization.rich_text_editor_in_public_views?
44
+ presenter.editor_body(all_locales: body.is_a?(Hash))
45
+ else
46
+ presenter.plain_locales(model.body, body.is_a?(Hash))
47
+ end
44
48
 
45
49
  self.attachments = model.attachments
46
50
  end
@@ -87,8 +87,12 @@ module Decidim
87
87
  # Returns :text_area or :editor based on the organization' settings.
88
88
  def text_editor_for_proposal_body(form)
89
89
  options = {
90
+ mentionable: true,
90
91
  value: form_presenter.body(strip_tags: !current_organization.rich_text_editor_in_public_views).strip,
91
- data: { controller: "character-counter" }
92
+ data: {
93
+ controller: "character-counter mention",
94
+ search_prompt: t("decidim.shared.mentions.search_prompt")
95
+ }
92
96
  }
93
97
 
94
98
  text_editor_for(form, :body, options)
@@ -15,6 +15,7 @@ module Decidim
15
15
  can_create_proposal_answer?
16
16
  can_assign_evaluator_to_proposal?
17
17
  end
18
+ can_read_proposal?
18
19
  can_export_proposals?
19
20
 
20
21
  return permission_action
@@ -26,6 +27,9 @@ module Decidim
26
27
  can_create_proposal_answer?
27
28
  end
28
29
 
30
+ # Every user allowed by the space can read proposals
31
+ allow! if permission_action.subject == :proposal && permission_action.action == :read
32
+
29
33
  # Admins can only edit official proposals if they are within the
30
34
  # time limit.
31
35
  allow! if permission_action.subject == :proposal && permission_action.action == :edit && admin_edition_is_available?
@@ -142,6 +146,15 @@ module Decidim
142
146
  toggle_allow(admin_proposal_answering_is_enabled?) if permission_action.subject == :proposal_answer
143
147
  end
144
148
 
149
+ # Evaluators can read the proposals collection (e.g. the index action)
150
+ # but only their assigned proposals as individual records (e.g. the
151
+ # show action).
152
+ def can_read_proposal?
153
+ return unless permission_action.subject == :proposal && permission_action.action == :read
154
+
155
+ toggle_allow(proposal.nil? || evaluator_assigned_to_proposal?)
156
+ end
157
+
145
158
  def can_unassign_evaluator_from_proposals?
146
159
  allow! if permission_action.subject == :proposals && permission_action.action == :unassign_from_evaluator
147
160
  end
@@ -8,7 +8,7 @@ module Decidim
8
8
  return Decidim::Proposals::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin
9
9
  return permission_action if permission_action.scope != :public
10
10
 
11
- toggle_allow(!proposal.hidden?) if permission_action.subject == :proposal && permission_action.action == :read
11
+ toggle_allow(proposal.nil? || !proposal.hidden?) if permission_action.subject == :proposal && permission_action.action == :read
12
12
  return permission_action unless user
13
13
 
14
14
  case permission_action.subject
@@ -8,9 +8,10 @@ module Decidim
8
8
  def present
9
9
  return unless value
10
10
 
11
- role = Decidim::Proposals::EvaluationAssignment.find_by(evaluator_role_id: value).evaluator_role
12
- user = role.user
13
- user.try(:name)
11
+ assignment = Decidim::Proposals::EvaluationAssignment.find_by(evaluator_role_id: value)
12
+ return unless assignment
13
+
14
+ assignment.evaluator_role&.user&.name
14
15
  end
15
16
  end
16
17
  end
@@ -1,6 +1,6 @@
1
1
  <%= decidim_form_for(@notes_form, url: form_path, html: { class: "form form-defaults new_proposal_note flex flex-col mt-4" }) do |f| %>
2
2
  <div class="form__wrapper">
3
- <%= f.text_area :body, rows: 4, label: t(".note"), data: { controller: "mention" } %>
3
+ <%= f.text_area :body, rows: 4, label: t(".note"), data: { controller: "mention", search_prompt: t("decidim.shared.mentions.search_prompt") } %>
4
4
  </div>
5
5
 
6
6
  <%= f.submit t(".submit"), class: "button button__sm button__secondary ml-auto" %>
@@ -5,7 +5,7 @@
5
5
  <%= form.translated :text_field, :title, autofocus: true, aria: { label: :title }, data: { controller: "character-counter" } %>
6
6
  </div>
7
7
  <div class="row column">
8
- <%= form.translated :editor, :body, resource_mentionable: true, aria: { label: :body } %>
8
+ <%= form.translated :editor, :body, mentionable: true, resource_mentionable: true, aria: { label: :body } %>
9
9
  </div>
10
10
  <% if @form.meetings %>
11
11
  <div class="meeting-fields">
@@ -101,6 +101,20 @@
101
101
  </div>
102
102
  <% end %>
103
103
 
104
+ <% if component_settings.geocoding_enabled? && proposal.address.present? %>
105
+ <div class="card-section">
106
+ <div class="row column">
107
+ <span class="component__show-title"><%= t ".address" %></span>
108
+ <div class="flex items-center gap-x-2 mt-2">
109
+ <%= icon "map-pin-line", class: "fill-gray" %>
110
+ <p class="component__show-icon-text">
111
+ <%= proposal.address %>
112
+ </p>
113
+ </div>
114
+ </div>
115
+ </div>
116
+ <% end %>
117
+
104
118
  <div class="card-section">
105
119
  <div class="row column" data-votes>
106
120
  <span class="component__show-title"><%= t ".votes_count" %></span>
@@ -11,7 +11,7 @@
11
11
 
12
12
  <% if @proposal.withdrawable_by?(current_user) %>
13
13
  <li role="presentation" class="dropdown__item">
14
- <%= action_authorized_link_to :withdraw, withdraw_proposal_path(@proposal), resource: @proposal, method: :put, class: "dropdown__button", role: "menuitem", title: t("withdraw_btn_hint", scope: "decidim.proposals.proposals.show" ), data: { confirm: t("withdraw_confirmation_html", scope: "decidim.proposals.proposals.show" ) } do %>
14
+ <%= action_authorized_link_to :withdraw, withdraw_proposal_path(@proposal), resource: @proposal, method: :put, class: "dropdown__button", role: "menuitem", title: t("withdraw_btn_hint", scope: "decidim.proposals.proposals.show" ), data: { confirm: t("withdraw_confirmation_html", scope: "decidim.proposals.proposals.show" ), confirm_icon: "arrow-go-back-line" } do %>
15
15
  <span><%= t("withdraw_proposal", scope: "decidim.proposals.proposals.show") %></span>
16
16
  <%= icon "arrow-go-back-line" %>
17
17
  <% end %>
@@ -95,7 +95,6 @@ ar:
95
95
  'false': اقتراحات
96
96
  'true': تعديلات
97
97
  state_eq:
98
- label: الحالة
99
98
  values:
100
99
  accepted: تم قبوله
101
100
  evaluating: قيد التقييم
@@ -93,10 +93,7 @@ bg:
93
93
  values:
94
94
  'false': Предложения
95
95
  'true': Изменения
96
- proposal_state_id_eq:
97
- label: Състояние
98
96
  state_eq:
99
- label: Състояние
100
97
  values:
101
98
  accepted: Прието
102
99
  evaluating: Оценяване
@@ -659,6 +659,7 @@ ca-IT:
659
659
  number_of_proposals: Es publicaran les respostes a %{number} propostes
660
660
  select_a_proposal: Si us plau, selecciona una proposta.
661
661
  show:
662
+ address: Adreça
662
663
  amendments_count: Número d'esmenes
663
664
  assigned_evaluators: Avaluadores assignades
664
665
  body: Cos
@@ -19,7 +19,7 @@ ca:
19
19
  address: Adreça
20
20
  answer: Respondre
21
21
  answered_at: Respost el
22
- body: Cos
22
+ body: Descripció
23
23
  decidim_proposals_proposal_state_id: Estat
24
24
  decidim_scope_id: Àmbit
25
25
  has_address: Té adreça
@@ -662,6 +662,7 @@ ca:
662
662
  number_of_proposals: Es publicaran les respostes a %{number} propostes
663
663
  select_a_proposal: Si us plau, selecciona una proposta.
664
664
  show:
665
+ address: Adreça
665
666
  amendments_count: Número d'esmenes
666
667
  assigned_evaluators: Avaluadores assignades
667
668
  body: Cos
@@ -63,6 +63,8 @@ cs:
63
63
  allowed_file_content_types: 'Neplatný typ dokumentu. Jsou povoleny pouze soubory s následujícími příponami: %{types}'
64
64
  proposal:
65
65
  attributes:
66
+ add_attachments:
67
+ needs_to_be_reattached: Vyžaduje být znovu připojen
66
68
  body:
67
69
  cant_be_equal_to_template: nelze se rovnat šabloně
68
70
  identical: A název nemůže být totožný
@@ -92,6 +94,7 @@ cs:
92
94
  proposal:
93
95
  budget_text: Návrh <span class="resource-link">%{link} byl vytvořen</span>
94
96
  import_from_proposal_text: 'Stal se z něj tento návrh: %{link}'
97
+ import_to_proposal_text: Tento návrh <span "resource-link">%{link} byl vytvořen</span>
95
98
  merge_from_proposal_text: 'Stal se z něj tento návrh: %{link}'
96
99
  merge_to_proposal_text: 'Tento návrh byl vytvořen: %{link}'
97
100
  split_from_proposal_text: 'Stal se z něj tento návrh: %{link}'
@@ -180,6 +183,7 @@ cs:
180
183
  collaborative_drafts_enabled: Společné koncepty povoleny
181
184
  collaborative_drafts_enabled_help: Funkce „Spolunávrhy“ bude odstraněna v Decidim v0.32. Organizace, které ji používají, mohou přejít na novou funkci spoluautorství.
182
185
  comments_enabled: Komentáře povoleny
186
+ comments_max_length: Maximální počet znaků na komentář (ponechte 0 pro výchozí hodnotu)
183
187
  default_sort_order: Výchozí řazení návrhu
184
188
  default_sort_order_help: Automaticky znamená, že pokud je hlasování povoleno, návrhy se zobrazují seřazené náhodně, a pokud je hlasování zablokováno, pak se zobrazují seřazené podle počtu hlasů.
185
189
  default_sort_order_options:
@@ -645,6 +649,7 @@ cs:
645
649
  number_of_proposals: Odpovědi na %{number} návrhů budou zveřejněny?
646
650
  select_a_proposal: Vyberte návrh.
647
651
  show:
652
+ address: Adresa
648
653
  amendments_count: Počet pozměňovacích návrhů
649
654
  assigned_evaluators: Přiřazení hodnotitelé
650
655
  body: Tělo
@@ -53,6 +53,7 @@ de:
53
53
  file: Datei
54
54
  proposals_import:
55
55
  import_proposals: Vorschläge importieren
56
+ keep_answers: Status und Antworten beibehalten
56
57
  keep_authors: Behalten Sie die ursprünglichen Autoren
57
58
  errors:
58
59
  models:
@@ -62,6 +63,8 @@ de:
62
63
  allowed_file_content_types: 'Ungültiger Dokumententyp. Nur Dateien mit folgenden Erweiterungen sind erlaubt: %{types}'
63
64
  proposal:
64
65
  attributes:
66
+ add_attachments:
67
+ needs_to_be_reattached: Muss erneut angehängt werden
65
68
  body:
66
69
  cant_be_equal_to_template: kann nicht gleich der Vorlage sein
67
70
  identical: UND Titel dürfen nicht identisch sein
@@ -170,7 +173,9 @@ de:
170
173
  can_accumulate_votes_beyond_threshold: Stimmen können nach Erreichen des Schwellwerts weiter gesammelt werden
171
174
  clear_all: Alles löschen
172
175
  collaborative_drafts_enabled: Kollaborative Entwürfe aktiviert
176
+ collaborative_drafts_enabled_help: Die Funktion "Gemeinsame Entwürfe" wird in Decidim v0.32 entfernt. Organisationen, die sie nutzen, können auf die neue Funktion zur gemeinsamen Autorenschaft von Vorschlägen umsteigen.
173
177
  comments_enabled: Kommentare aktiviert
178
+ comments_max_length: Maximale Zeichenanzahl pro Kommentar (0 für Standardwert)
174
179
  default_sort_order: Standardsortierung für Vorschläge
175
180
  default_sort_order_help: Standardmäßig bedeutet, dass bei aktivierten Stimmensammlung die Vorschläge nach Zufall und bei deaktivierter Stimmensammlung nach den meist gewählten Vorschläge sortiert werden.
176
181
  default_sort_order_options:
@@ -269,13 +274,17 @@ de:
269
274
  email_intro: '%{author_name} hat eine private Notiz unter %{resource_title} erstellt. Jetzt im <a href="%{admin_proposal_info_url}">Admin-Panel</a> anzeigen.'
270
275
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie den Vorschlag bewerten können.
271
276
  email_subject: Jemand hat eine Notiz für Vorschlag %{resource_title} erstellt.
277
+ notification_title: <a href="%{author_path}">%{author_name}</a> hat eine private Notiz zu <a href="%{resource_path}">%{resource_title}</a> erstellt. Im <a href="%{admin_proposal_info_path}">Admin-Bereich</a> finden Sie die Details.
272
278
  proposal_note_mentioned:
279
+ email_intro: Sie wurden von "%{author_name}" in einer privaten Notiz zu "%{resource_title}" erwähnt. Im <a href="%{admin_proposal_info_url}">Admin-Bereich</a> finden Sie die Details.
273
280
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie in einer privaten Notiz erwähnt wurden.
274
281
  email_subject: Jemand hat Sie in einer Notiz zum Vorschlag "%{resource_title}" erwähnt.
282
+ notification_title: Sie wurden von <a href="%{author_path}">%{author_name}</a> in einer privaten Notiz zu <a href="%{resource_path}">%{resource_title}</a> erwähnt. Im <a href="%{admin_proposal_info_path}">Admin-Bereich</a> finden Sie die Details.
275
283
  proposal_note_replied:
276
284
  email_intro: '%{author_name} hat deine private Notiz unter %{resource_title} beantwortet. Jetzt im <a href="%{admin_proposal_info_url}">Admin-Panel</a> anzeigen.'
277
285
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie der Autor der Noitz sind.
278
286
  email_subject: "%{author_name} hat auf Ihre private Notiz unter %{resource_title} geantwortet."
287
+ notification_title: <a href="%{author_path}">%{author_name}</a> hat auf Ihre private Notiz zu <a href="%{resource_path}">%{resource_title}</a> geantwortet. Im <a href="%{admin_proposal_info_path}">Admin-Bereich</a> finden Sie die Details.
279
288
  coauthor_accepted_invite:
280
289
  notification_title: <a href="%{coauthor_path}">%{coauthor_name}</a> hat Ihre Einladung angenommen, mitverfassende Person des Vorschlags <a href="%{resource_path}">%{resource_title}</a> zu werden.
281
290
  coauthor_invited:
@@ -292,14 +301,17 @@ de:
292
301
  email_intro: '%{requester_name} wurde zur Mitwirkung am kollaborativen Entwurf <a href="%{resource_url}">%{resource_title}</a> akzeptiert.'
293
302
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie bei <a href="%{resource_url}">%{resource_title}</a> mitwirken.
294
303
  email_subject: "%{requester_name} wurde zur Mitwirkung an %{resource_title} akzeptiert."
304
+ notification_title: <a href="%{requester_path}">%{requester_name}</a> wurde als Mitwirkende/r für den gemeinsamen Entwurf <a href="%{resource_path}">%{resource_title}</a> <strong>angenommen</strong>.
295
305
  collaborative_draft_access_rejected:
296
306
  email_intro: '%{requester_name} wurde als Mitwirkender des kollaborativen Entwurfs <a href="%{resource_url}">%{resource_title}</a> abgelehnt.'
297
307
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie bei <a href="%{resource_url}">%{resource_title}</a> mitwirken.
298
308
  email_subject: "%{requester_name} wurde als Mitwirkender des kollaborativen Entwurfs %{resource_title} abgelehnt."
309
+ notification_title: <a href="%{requester_path}">%{requester_name}</a> wurde als Mitwirkende/r für den gemeinsamen Entwurf <a href="%{resource_path}">%{resource_title}</a> <strong>abgelehnt</strong>.
299
310
  collaborative_draft_access_requested:
300
311
  email_intro: '%{requester_name} hat um Zugriff auf Ihren kollaborativen Entwurf angefragt. Sie können den Antrag auf der Seite des kollaborativen Entwurfs <a href="%{resource_url}">%{resource_title}</a> <strong>annehmen oder ablehnen</strong>.'
301
312
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie bei <a href="%{resource_url}">%{resource_title}</a> mitwirken.
302
313
  email_subject: "%{requester_name} hat um Zugang zur Mitwirkung bei %{resource_title} angefragt."
314
+ notification_title: <a href="%{requester_path}">%{requester_name}</a> hat um Zugang zur Mitarbeit am gemeinsamen Entwurf <a href="%{resource_path}">%{resource_title}</a> gebeten. Bitte <strong>nehmen Sie die Anfrage an oder lehnen Sie sie ab</strong>.
303
315
  collaborative_draft_access_requester_accepted:
304
316
  email_intro: Sie wurden zur Mitwirkung am kollaborativen Entwurf <a href="%{resource_url}">%{resource_title}</a> akzeptiert.
305
317
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie angefragt haben, bei <a href="%{resource_url}">%{resource_title}</a> mitzuwirken.
@@ -311,7 +323,10 @@ de:
311
323
  email_subject: Sie wurden als Mitwirkender von %{resource_title} abgelehnt.
312
324
  notification_title: Sie wurden als Mitwirkender beim kollaborativen Entwurf <a href="%{resource_path}">%{resource_title}</a> <strong>abgelehnt</strong>.
313
325
  collaborative_draft_withdrawn:
326
+ email_intro: <a href="%{author_url}">%{author_name}</a> hat den gemeinsamen Entwurf <a href="%{resource_url}">%{resource_title}</a> zurückgezogen.
314
327
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie bei <a href="%{resource_url}">%{resource_title}</a> mitwirken.
328
+ email_subject: "%{author_name} hat den gemeinsamen Entwurf %{resource_title} zurückgezogen."
329
+ notification_title: <a href="%{author_path}">%{author_name}</a> hat den gemeinsamen Entwurf <a href="%{resource_path}">%{resource_title}</a> <strong>zurückgezogen</strong>.
315
330
  creation_enabled:
316
331
  email_intro: 'Sie können jetzt neue Vorschläge in %{participatory_space_title} erstellen! Beteiligen Sie sich auf dieser Seite:'
317
332
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie %{participatory_space_title} folgen. Falls Sie keine solchen Benachrichtigungen mehr erhalten möchten, besuchen Sie den obigen Link.
@@ -321,6 +336,7 @@ de:
321
336
  email_intro: 'Sie können ab jetzt Vorschläge auf %{participatory_space_title} unterstützen! Jetzt auf dieser Seite mitmachen:'
322
337
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie %{participatory_space_title} folgen. Falls Sie keine solchen Benachrichtigungen mehr erhalten möchten, besuchen Sie den angegebenen Link.
323
338
  email_subject: Vorschläge können nun in %{participatory_space_title} unterstützt werden
339
+ notification_title: Sie können nun in <a href="%{participatory_space_url}">%{participatory_space_title}</a> damit beginnen, <a href="%{resource_path}">Vorschlägen zu gefallen</a>.
324
340
  proposal_mentioned:
325
341
  email_intro: Ihr Vorschlag "%{mentioned_proposal_title}" wurde <a href="%{resource_url}">hier</a> in den Kommentaren erwähnt.
326
342
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie ein Autor von "%{resource_title}" sind.
@@ -331,6 +347,11 @@ de:
331
347
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie diesen Vorschlag verfasst haben.
332
348
  email_subject: Der Vorschlag %{resource_title} wurde zusammengeführt
333
349
  notification_title: Der Vorschlag <a href="%{resource_path}">%{resource_title}</a> wurde von einem Admin zusammengeführt.
350
+ proposal_published:
351
+ email_intro: '%{author_name}, dem/der Sie folgen, hat einen neuen Vorschlag mit dem Titel "%{resource_title}" veröffentlicht. Schauen Sie ihn sich an und beteiligen Sie sich:'
352
+ email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie %{author_name} folgen. Falls Sie keine solchen Benachrichtigungen mehr erhalten möchten, besuchen Sie den obigen Link.
353
+ email_subject: Neuer Vorschlag "%{resource_title}" von %{author_name}
354
+ notification_title: Der Vorschlag <a href="%{resource_path}">%{resource_title}</a> wurde von <a href="%{author_path}">%{author_name}</a> veröffentlicht.
334
355
  proposal_published_for_space:
335
356
  email_intro: Der Vorschlag "%{resource_title}" wurde zu "%{participatory_space_title}" hinzugefügt, welchem Sie folgen.
336
357
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie "%{participatory_space_title}" folgen. Sie können den Erhalt von Benachrichtigungen über den vorherigen Link beenden.
@@ -348,6 +369,12 @@ de:
348
369
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie "%{resource_title}" folgen. Falls Sie keine solchen Benachrichtigungen mehr erhalten möchten, besuchen Sie den obigen Link.
349
370
  email_subject: Der Status eines Vorschlags, dem Sie folgen, hat sich geändert (%{state})
350
371
  notification_title: Der Status des Vorschlags <a href="%{resource_path}">%{resource_title}</a> hat sich zu "%{state}" geändert.
372
+ proposal_state_changed_for_authors:
373
+ affected_user:
374
+ email_intro: 'Der Status des Vorschlags "%{resource_title}" wurde auf "%{state}" geändert. Die Antwort finden Sie auf dieser Seite:'
375
+ email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie Autor/in von "%{resource_title}" sind.
376
+ email_subject: Der Status Ihres Vorschlags wurde geändert (%{state})
377
+ notification_title: Der Status Ihres Vorschlags <a href="%{resource_path}">%{resource_title}</a> wurde auf "%{state}" geändert.
351
378
  proposal_update_taxonomies:
352
379
  email_intro: 'Ein Admin hat die Klassifizierung Ihres Vorschlags „%{resource_title}“ aktualisiert. Auf der folgenden Seite ansehen:'
353
380
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie diesen Vorschlag verfasst haben.
@@ -431,7 +458,7 @@ de:
431
458
  longitude: Der Längengrad des Vorschlags, falls er verortet wurde
432
459
  meeting_urls: Die URLs der Veranstaltungen, an denen dieser Vorschlag vorgestellt oder diskutiert wurde
433
460
  original_proposal: Referenz des ursprünglichen Vorschlags, falls es sich um einen Änderungsantrag handelt
434
- participatory_space: Zu welchem Bereich dieser Vorschlag gehört (z.B. Partizipationsprozesse oder Gremien)
461
+ participatory_space: Zu welchem Bereich dieser Vorschlag gehört (z.B. Partizipationsprozesse oder Versammlungen)
435
462
  published_at: Das Datum, an dem dieser Vorschlag veröffentlicht wurde
436
463
  reference: Die eindeutige Bezeichnung der Ressource auf dieser Plattform
437
464
  related_proposals: Mit diesem Vorschlag verknüpfte Vorschläge
@@ -624,7 +651,7 @@ de:
624
651
  statuses: Status
625
652
  title: Vorschläge
626
653
  unassign_from_evaluator: Zuweisung zur bewertenden Person aufheben
627
- unassign_from_evaluator_button:
654
+ unassign_from_evaluator_button: Zuweisung aufheben
628
655
  update: Aktualisieren
629
656
  manage_trash:
630
657
  title: Gelöschte Vorschläge
@@ -635,6 +662,7 @@ de:
635
662
  number_of_proposals: Antworten für %{number} Vorschläge werden veröffentlicht.
636
663
  select_a_proposal: Bitte wählen Sie einen Vorschlag.
637
664
  show:
665
+ address: Adresse
638
666
  amendments_count: Anzahl der Ergänzungen
639
667
  assigned_evaluators: Zugewiesene Personen
640
668
  body: Haupttext
@@ -652,6 +680,7 @@ de:
652
680
  related_meetings: Ähnliche Veranstaltungen
653
681
  remove_assignment: Zuweisung entfernen
654
682
  remove_assignment_confirmation: Sind Sie sicher, dass Sie den Bewerter dieses Vorschlags entfernen möchten?
683
+ title: Vorschlag beantworten
655
684
  votes_count: Anzahl Stimmen
656
685
  update_taxonomies:
657
686
  invalid: 'Diese Vorschläge gehörten bereits zur Klassifizierung %{taxonomies}: %{proposals}.'
@@ -666,6 +695,7 @@ de:
666
695
  create: Vorschläge importieren
667
696
  no_components: In diesem partizipatorischen Bereich gibt es keine weiteren Vorschlagskomponenten, aus denen die Vorschläge importiert werden könnten.
668
697
  select_component: Bitte wählen Sie eine Komponente aus
698
+ select_states: Importiert nur Vorschläge mit diesen Status. Wenn keiner ausgewählt ist, werden alle Vorschläge importiert.
669
699
  title: Vorschläge aus einer anderen Komponente importieren
670
700
  proposals_merges:
671
701
  create:
@@ -735,6 +765,7 @@ de:
735
765
  errors:
736
766
  device_not_supported: Ihr Gerät unterstützt keine Ortungsdienste. Bitte geben Sie die Adresse manuell ein.
737
767
  no_device_location: Leider konnten wir Ihren Standort nicht erkennen. Bitte geben Sie die Adresse manuell ein.
768
+ locating: Standort wird ermittelt …
738
769
  use_my_location: Meinen aktuellen Standort verwenden
739
770
  invite_coauthors:
740
771
  cancel:
@@ -78,7 +78,6 @@ el:
78
78
  'false': Προτάσεις
79
79
  'true': Τροποποιήσεις
80
80
  state_eq:
81
- label: Κατάσταση
82
81
  values:
83
82
  accepted: Έγινε αποδοχή
84
83
  evaluating: Υπό αξιολόγηση
@@ -126,9 +126,9 @@ en:
126
126
  'false': Proposals
127
127
  'true': Amendments
128
128
  proposal_state_id_eq:
129
- label: State
129
+ label: Status
130
130
  state_eq:
131
- label: State
131
+ label: Status
132
132
  values:
133
133
  accepted: Accepted
134
134
  evaluating: Evaluating
@@ -662,6 +662,7 @@ en:
662
662
  number_of_proposals: Answers for %{number} proposal's will be published?
663
663
  select_a_proposal: Please select a proposal.
664
664
  show:
665
+ address: Address
665
666
  amendments_count: Amendments count
666
667
  assigned_evaluators: Assigned evaluators
667
668
  body: Body
@@ -662,6 +662,7 @@ es-MX:
662
662
  number_of_proposals: Se publicarán las respuestas a %{number} propuestas
663
663
  select_a_proposal: Por favor, selecciona una propuesta.
664
664
  show:
665
+ address: Dirección
665
666
  amendments_count: Número de enmiendas
666
667
  assigned_evaluators: Evaluadoras asignadas
667
668
  body: Cuerpo
@@ -662,6 +662,7 @@ es-PY:
662
662
  number_of_proposals: Se publicarán las respuestas a %{number} propuestas
663
663
  select_a_proposal: Por favor, selecciona una propuesta.
664
664
  show:
665
+ address: Dirección
665
666
  amendments_count: Número de enmiendas
666
667
  assigned_evaluators: Evaluadoras asignadas
667
668
  body: Cuerpo
@@ -662,6 +662,7 @@ es:
662
662
  number_of_proposals: Se publicarán las respuestas a %{number} propuestas
663
663
  select_a_proposal: Por favor, selecciona una propuesta.
664
664
  show:
665
+ address: Dirección
665
666
  amendments_count: Número de enmiendas
666
667
  assigned_evaluators: Evaluadoras asignadas
667
668
  body: Cuerpo