decidim-proposals 0.31.7 → 0.31.8

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/decidim/proposals/admin/filterable.rb +3 -0
  3. data/app/controllers/concerns/decidim/proposals/admin/needs_interpolations.rb +2 -0
  4. data/app/controllers/decidim/proposals/admin/participatory_texts_controller.rb +1 -0
  5. data/app/controllers/decidim/proposals/admin/proposal_answers_controller.rb +3 -2
  6. data/app/controllers/decidim/proposals/admin/proposals_controller.rb +5 -2
  7. data/app/controllers/decidim/proposals/admin/proposals_imports_controller.rb +1 -1
  8. data/app/controllers/decidim/proposals/admin/proposals_merges_controller.rb +1 -0
  9. data/app/controllers/decidim/proposals/collaborative_draft_collaborator_requests_controller.rb +6 -0
  10. data/app/controllers/decidim/proposals/collaborative_drafts_controller.rb +10 -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/permissions/decidim/proposals/admin/permissions.rb +13 -0
  14. data/app/permissions/decidim/proposals/permissions.rb +2 -1
  15. data/app/presenters/decidim/proposals/admin_log/value_types/evaluator_role_user_presenter.rb +4 -3
  16. data/app/views/decidim/proposals/proposals/_proposal_actions.html.erb +1 -1
  17. data/config/locales/ar.yml +0 -1
  18. data/config/locales/bg.yml +0 -3
  19. data/config/locales/ca.yml +1 -1
  20. data/config/locales/cs.yml +2 -0
  21. data/config/locales/de.yml +26 -2
  22. data/config/locales/el.yml +0 -1
  23. data/config/locales/en.yml +2 -2
  24. data/config/locales/eu.yml +131 -131
  25. data/config/locales/fr-CA.yml +3 -2
  26. data/config/locales/fr.yml +12 -2
  27. data/config/locales/ga-IE.yml +0 -1
  28. data/config/locales/gl.yml +550 -12
  29. data/config/locales/hu.yml +0 -1
  30. data/config/locales/it.yml +12 -1
  31. data/config/locales/ja.yml +1 -1
  32. data/config/locales/lt.yml +0 -1
  33. data/config/locales/no.yml +0 -1
  34. data/config/locales/pl.yml +0 -3
  35. data/config/locales/pt-BR.yml +0 -3
  36. data/config/locales/pt.yml +0 -1
  37. data/config/locales/ro-RO.yml +0 -1
  38. data/config/locales/sk.yml +0 -3
  39. data/config/locales/sv.yml +20 -1
  40. data/config/locales/tr-TR.yml +0 -3
  41. data/config/locales/zh-CN.yml +0 -1
  42. data/config/locales/zh-TW.yml +0 -1
  43. data/lib/decidim/proposals/seeds.rb +4 -2
  44. data/lib/decidim/proposals/version.rb +1 -1
  45. metadata +20 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b05df9edef6689841a2bce04ded49a9b7aab8344e3cbf4ff63e0893ce86fd95
4
- data.tar.gz: daf1020680ddec84ec4e65f8fc9a957791b2c74261e61fd7c118c2f192f2b458
3
+ metadata.gz: 83dc0e0f7e49cb5379a1c4f8a4d4ed134abb7f8c218491df050d7860356b3ec4
4
+ data.tar.gz: 35774a18c409c343f09248ca4debee844f8381118846085739874981db4d042f
5
5
  SHA512:
6
- metadata.gz: aeb8a6d006f5dd32937c342ab1411804c09365d22370749bffe534e0f32f3e1196a7253e35c690dbc43cdbc77a071599a0ac7b8938ea8680a0eba1d8d0789e16
7
- data.tar.gz: 524ecfc8defb388d3d419e3d5c70659c329be7da782d9649f7483c37ba7c324fb67f5b63b7f07cecd932e9671e5712bcf053260552691d2a989a463f2fd495a8
6
+ metadata.gz: 1f7d2f49d334d92e46c919d3e3d025e693f20e815c20a5468d2b6ab0cae05b89f4f0f19d288f38bc022b803192b785dda54e2b8ab1633ca10aa704628deab946
7
+ data.tar.gz: 3e43f9dab32e01fdd963b6ab7d1981cad8398128d583fa1a35a72e79195eb2d75c36f8599b821a57fa7ee75e012d643d2cf1f2fe39c3dcbb807028e901233a95
@@ -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.require(: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
  )
@@ -8,6 +8,8 @@ module Decidim
8
8
  before_action :retrieve_collaborative_draft, only: [:request_access, :request_accept, :request_reject]
9
9
 
10
10
  def request_access
11
+ enforce_permission_to :request_access, :collaborative_draft, collaborative_draft: @collaborative_draft
12
+
11
13
  @request_access_form = form(RequestAccessToCollaborativeDraftForm).from_params(params)
12
14
  RequestAccessToCollaborativeDraft.call(@request_access_form, current_user) do
13
15
  on(:ok) do |_collaborative_draft|
@@ -22,6 +24,8 @@ module Decidim
22
24
  end
23
25
 
24
26
  def request_accept
27
+ enforce_permission_to :react_to_request_access, :collaborative_draft, collaborative_draft: @collaborative_draft
28
+
25
29
  @accept_request_form = form(AcceptAccessToCollaborativeDraftForm).from_params(params)
26
30
  AcceptAccessToCollaborativeDraft.call(@accept_request_form, current_user) do
27
31
  on(:ok) do |requester_user|
@@ -36,6 +40,8 @@ module Decidim
36
40
  end
37
41
 
38
42
  def request_reject
43
+ enforce_permission_to :react_to_request_access, :collaborative_draft, collaborative_draft: @collaborative_draft
44
+
39
45
  @reject_request_form = form(RejectAccessToCollaborativeDraftForm).from_params(params)
40
46
  RejectAccessToCollaborativeDraft.call(@reject_request_form, current_user) do
41
47
  on(:ok) do |requester_user|
@@ -23,6 +23,8 @@ module Decidim
23
23
  before_action :retrieve_collaborative_draft, only: [:show, :edit, :update, :withdraw, :publish]
24
24
 
25
25
  def index
26
+ enforce_permission_to :read, :collaborative_draft
27
+
26
28
  @collaborative_drafts = search
27
29
  .result
28
30
  .not_hidden
@@ -35,6 +37,8 @@ module Decidim
35
37
  def show
36
38
  raise ActionController::RoutingError, "Not Found" unless retrieve_collaborative_draft
37
39
 
40
+ enforce_permission_to :read, :collaborative_draft, collaborative_draft: @collaborative_draft
41
+
38
42
  @request_access_form = form(RequestAccessToCollaborativeDraftForm).from_params({})
39
43
  @accept_request_form = form(AcceptAccessToCollaborativeDraftForm).from_params({})
40
44
  @reject_request_form = form(RejectAccessToCollaborativeDraftForm).from_params({})
@@ -90,6 +94,9 @@ module Decidim
90
94
  end
91
95
  end
92
96
 
97
+ # Authorization is enforced by the command, which checks that the
98
+ # collaborative draft is open and authored by the current user.
99
+ # rubocop:disable Decidim/EnforcePermissionTo
93
100
  def withdraw
94
101
  WithdrawCollaborativeDraft.call(@collaborative_draft, current_user) do
95
102
  on(:ok) do
@@ -102,8 +109,11 @@ module Decidim
102
109
  end
103
110
  redirect_to Decidim::ResourceLocatorPresenter.new(@collaborative_draft).path
104
111
  end
112
+ # rubocop:enable Decidim/EnforcePermissionTo
105
113
 
106
114
  def publish
115
+ enforce_permission_to :publish, :collaborative_draft, collaborative_draft: @collaborative_draft
116
+
107
117
  PublishCollaborativeDraft.call(@collaborative_draft, current_user) do
108
118
  on(:ok) do |proposal|
109
119
  flash[:notice] = I18n.t("publish.success", scope: "decidim.proposals.collaborative_drafts.collaborative_draft")
@@ -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
@@ -8,6 +8,8 @@ module Decidim
8
8
  include Decidim::ApplicationHelper
9
9
  include Decidim::ResourceVersionsConcern
10
10
 
11
+ private
12
+
11
13
  def versioned_resource
12
14
  @versioned_resource ||=
13
15
  if params[:proposal_id]
@@ -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,8 @@ 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
+ toggle_allow(collaborative_draft.nil? || !collaborative_draft.hidden?) if permission_action.subject == :collaborative_draft && permission_action.action == :read
12
13
  return permission_action unless user
13
14
 
14
15
  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
@@ -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: Оценяване
@@ -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
@@ -94,6 +94,7 @@ cs:
94
94
  proposal:
95
95
  budget_text: Návrh <span class="resource-link">%{link} byl vytvořen</span>
96
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>
97
98
  merge_from_proposal_text: 'Stal se z něj tento návrh: %{link}'
98
99
  merge_to_proposal_text: 'Tento návrh byl vytvořen: %{link}'
99
100
  split_from_proposal_text: 'Stal se z něj tento návrh: %{link}'
@@ -651,6 +652,7 @@ cs:
651
652
  number_of_proposals: Odpovědi na %{number} návrhů budou zveřejněny?
652
653
  select_a_proposal: Vyberte návrh.
653
654
  show:
655
+ address: Adresa
654
656
  amendments_count: Počet pozměňovacích návrhů
655
657
  assigned_evaluators: Přiřazení hodnotitelé
656
658
  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
@@ -172,7 +175,9 @@ de:
172
175
  can_accumulate_votes_beyond_threshold: Stimmen können nach Erreichen des Schwellwerts weiter gesammelt werden
173
176
  clear_all: Alles löschen
174
177
  collaborative_drafts_enabled: Kollaborative Entwürfe aktiviert
178
+ 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.
175
179
  comments_enabled: Kommentare aktiviert
180
+ comments_max_length: Maximale Zeichenanzahl pro Kommentar (0 für Standardwert)
176
181
  default_sort_order: Standardsortierung für Vorschläge
177
182
  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.
178
183
  default_sort_order_options:
@@ -271,13 +276,17 @@ de:
271
276
  email_intro: '%{author_name} hat eine private Notiz unter %{resource_title} erstellt. Jetzt im <a href="%{admin_proposal_info_url}">Admin-Panel</a> anzeigen.'
272
277
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie den Vorschlag bewerten können.
273
278
  email_subject: Jemand hat eine Notiz für Vorschlag %{resource_title} erstellt.
279
+ 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.
274
280
  proposal_note_mentioned:
281
+ 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.
275
282
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie in einer privaten Notiz erwähnt wurden.
276
283
  email_subject: Jemand hat Sie in einer Notiz zum Vorschlag "%{resource_title}" erwähnt.
284
+ 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.
277
285
  proposal_note_replied:
278
286
  email_intro: '%{author_name} hat deine private Notiz unter %{resource_title} beantwortet. Jetzt im <a href="%{admin_proposal_info_url}">Admin-Panel</a> anzeigen.'
279
287
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie der Autor der Noitz sind.
280
288
  email_subject: "%{author_name} hat auf Ihre private Notiz unter %{resource_title} geantwortet."
289
+ 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.
281
290
  coauthor_accepted_invite:
282
291
  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.
283
292
  coauthor_invited:
@@ -294,14 +303,17 @@ de:
294
303
  email_intro: '%{requester_name} wurde zur Mitwirkung am kollaborativen Entwurf <a href="%{resource_url}">%{resource_title}</a> akzeptiert.'
295
304
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie bei <a href="%{resource_url}">%{resource_title}</a> mitwirken.
296
305
  email_subject: "%{requester_name} wurde zur Mitwirkung an %{resource_title} akzeptiert."
306
+ 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>.
297
307
  collaborative_draft_access_rejected:
298
308
  email_intro: '%{requester_name} wurde als Mitwirkender des kollaborativen Entwurfs <a href="%{resource_url}">%{resource_title}</a> abgelehnt.'
299
309
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie bei <a href="%{resource_url}">%{resource_title}</a> mitwirken.
300
310
  email_subject: "%{requester_name} wurde als Mitwirkender des kollaborativen Entwurfs %{resource_title} abgelehnt."
311
+ 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>.
301
312
  collaborative_draft_access_requested:
302
313
  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>.'
303
314
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie bei <a href="%{resource_url}">%{resource_title}</a> mitwirken.
304
315
  email_subject: "%{requester_name} hat um Zugang zur Mitwirkung bei %{resource_title} angefragt."
316
+ 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>.
305
317
  collaborative_draft_access_requester_accepted:
306
318
  email_intro: Sie wurden zur Mitwirkung am kollaborativen Entwurf <a href="%{resource_url}">%{resource_title}</a> akzeptiert.
307
319
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie angefragt haben, bei <a href="%{resource_url}">%{resource_title}</a> mitzuwirken.
@@ -313,7 +325,10 @@ de:
313
325
  email_subject: Sie wurden als Mitwirkender von %{resource_title} abgelehnt.
314
326
  notification_title: Sie wurden als Mitwirkender beim kollaborativen Entwurf <a href="%{resource_path}">%{resource_title}</a> <strong>abgelehnt</strong>.
315
327
  collaborative_draft_withdrawn:
328
+ email_intro: <a href="%{author_url}">%{author_name}</a> hat den gemeinsamen Entwurf <a href="%{resource_url}">%{resource_title}</a> zurückgezogen.
316
329
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie bei <a href="%{resource_url}">%{resource_title}</a> mitwirken.
330
+ email_subject: "%{author_name} hat den gemeinsamen Entwurf %{resource_title} zurückgezogen."
331
+ notification_title: <a href="%{author_path}">%{author_name}</a> hat den gemeinsamen Entwurf <a href="%{resource_path}">%{resource_title}</a> <strong>zurückgezogen</strong>.
317
332
  creation_enabled:
318
333
  email_intro: 'Sie können jetzt neue Vorschläge in %{participatory_space_title} erstellen! Beteiligen Sie sich auf dieser Seite:'
319
334
  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.
@@ -323,6 +338,7 @@ de:
323
338
  email_intro: 'Sie können ab jetzt Vorschläge auf %{participatory_space_title} unterstützen! Jetzt auf dieser Seite mitmachen:'
324
339
  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.
325
340
  email_subject: Vorschläge können nun in %{participatory_space_title} unterstützt werden
341
+ 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>.
326
342
  proposal_mentioned:
327
343
  email_intro: Ihr Vorschlag "%{mentioned_proposal_title}" wurde <a href="%{resource_url}">hier</a> in den Kommentaren erwähnt.
328
344
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie ein Autor von "%{resource_title}" sind.
@@ -333,6 +349,11 @@ de:
333
349
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie diesen Vorschlag verfasst haben.
334
350
  email_subject: Der Vorschlag %{resource_title} wurde zusammengeführt
335
351
  notification_title: Der Vorschlag <a href="%{resource_path}">%{resource_title}</a> wurde von einem Admin zusammengeführt.
352
+ proposal_published:
353
+ 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:'
354
+ 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.
355
+ email_subject: Neuer Vorschlag "%{resource_title}" von %{author_name}
356
+ notification_title: Der Vorschlag <a href="%{resource_path}">%{resource_title}</a> wurde von <a href="%{author_path}">%{author_name}</a> veröffentlicht.
336
357
  proposal_published_for_space:
337
358
  email_intro: Der Vorschlag "%{resource_title}" wurde zu "%{participatory_space_title}" hinzugefügt, welchem Sie folgen.
338
359
  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.
@@ -433,7 +454,7 @@ de:
433
454
  longitude: Der Längengrad des Vorschlags, falls er verortet wurde
434
455
  meeting_urls: Die URLs der Veranstaltungen, an denen dieser Vorschlag vorgestellt oder diskutiert wurde
435
456
  original_proposal: Referenz des ursprünglichen Vorschlags, falls es sich um einen Änderungsantrag handelt
436
- participatory_space: Zu welchem Bereich dieser Vorschlag gehört (z.B. Partizipationsprozesse oder Gremien)
457
+ participatory_space: Zu welchem Bereich dieser Vorschlag gehört (z.B. Partizipationsprozesse oder Versammlungen)
437
458
  published_at: Das Datum, an dem dieser Vorschlag veröffentlicht wurde
438
459
  reference: Die eindeutige Bezeichnung der Ressource auf dieser Plattform
439
460
  related_proposals: Mit diesem Vorschlag verknüpfte Vorschläge
@@ -627,7 +648,7 @@ de:
627
648
  statuses: Status
628
649
  title: Vorschläge
629
650
  unassign_from_evaluator: Zuweisung zur bewertenden Person aufheben
630
- unassign_from_evaluator_button:
651
+ unassign_from_evaluator_button: Zuweisung aufheben
631
652
  update: Aktualisieren
632
653
  manage_trash:
633
654
  title: Gelöschte Vorschläge
@@ -638,6 +659,7 @@ de:
638
659
  number_of_proposals: Antworten für %{number} Vorschläge werden veröffentlicht.
639
660
  select_a_proposal: Bitte wählen Sie einen Vorschlag.
640
661
  show:
662
+ address: Adresse
641
663
  amendments_count: Anzahl der Ergänzungen
642
664
  assigned_evaluators: Zugewiesene Personen
643
665
  body: Haupttext
@@ -669,6 +691,7 @@ de:
669
691
  create: Vorschläge importieren
670
692
  no_components: In diesem partizipatorischen Bereich gibt es keine weiteren Vorschlagskomponenten, aus denen die Vorschläge importiert werden könnten.
671
693
  select_component: Bitte wählen Sie eine Komponente aus
694
+ select_states: Importiert nur Vorschläge mit diesen Status. Wenn keiner ausgewählt ist, werden alle Vorschläge importiert.
672
695
  title: Vorschläge aus einer anderen Komponente importieren
673
696
  proposals_merges:
674
697
  create:
@@ -835,6 +858,7 @@ de:
835
858
  errors:
836
859
  device_not_supported: Ihr Gerät unterstützt keine Ortungsdienste. Bitte geben Sie die Adresse manuell ein.
837
860
  no_device_location: Leider konnten wir Ihren Standort nicht erkennen. Bitte geben Sie die Adresse manuell ein.
861
+ locating: Standort wird ermittelt …
838
862
  use_my_location: Meinen aktuellen Standort verwenden
839
863
  invite_coauthors:
840
864
  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