decidim-proposals 0.30.0.rc2 → 0.30.0.rc3
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.
- checksums.yaml +4 -4
- data/app/cells/decidim/proposals/highlighted_proposals_for_component/show.erb +1 -1
- data/app/cells/decidim/proposals/proposal_g_cell.rb +1 -1
- data/app/cells/decidim/proposals/proposal_l/show.erb +1 -1
- data/app/cells/decidim/proposals/proposal_l_cell.rb +1 -1
- data/app/commands/decidim/proposals/admin/import_proposals.rb +7 -60
- data/app/controllers/decidim/proposals/admin/proposals_imports_controller.rb +2 -2
- data/app/jobs/decidim/proposals/admin/import_proposals_job.rb +86 -0
- data/app/mailers/decidim/proposals/admin/import_proposals_mailer.rb +30 -0
- data/app/packs/stylesheets/decidim/proposals/proposals.scss +28 -2
- data/app/services/decidim/proposals/proposal_builder.rb +1 -0
- data/app/views/decidim/proposals/admin/import_proposals_mailer/notify_failure.html.erb +1 -0
- data/app/views/decidim/proposals/admin/import_proposals_mailer/notify_success.html.erb +2 -0
- data/app/views/decidim/proposals/proposals/_proposal.html.erb +1 -1
- data/app/views/decidim/proposals/proposals/_proposals.html.erb +2 -2
- data/config/locales/ar.yml +2 -2
- data/config/locales/bg.yml +2 -3
- data/config/locales/bs-BA.yml +2 -2
- data/config/locales/ca.yml +17 -7
- data/config/locales/cs.yml +8 -5
- data/config/locales/de.yml +11 -4
- data/config/locales/el.yml +2 -3
- data/config/locales/en.yml +12 -2
- data/config/locales/es-MX.yml +15 -5
- data/config/locales/es-PY.yml +15 -5
- data/config/locales/es.yml +16 -6
- data/config/locales/eu.yml +14 -4
- data/config/locales/fi-plain.yml +12 -4
- data/config/locales/fi.yml +11 -3
- data/config/locales/fr-CA.yml +31 -2
- data/config/locales/fr.yml +32 -3
- data/config/locales/ga-IE.yml +0 -1
- data/config/locales/hu.yml +2 -2
- data/config/locales/it.yml +2 -2
- data/config/locales/ja.yml +78 -5
- data/config/locales/lt.yml +2 -3
- data/config/locales/lv.yml +2 -2
- data/config/locales/nl.yml +2 -2
- data/config/locales/no.yml +0 -2
- data/config/locales/pl.yml +2 -3
- data/config/locales/pt-BR.yml +2 -2
- data/config/locales/pt.yml +2 -2
- data/config/locales/ro-RO.yml +22 -2
- data/config/locales/sk.yml +0 -2
- data/config/locales/sr-CS.yml +2 -2
- data/config/locales/sv.yml +0 -4
- data/config/locales/tr-TR.yml +2 -2
- data/config/locales/zh-CN.yml +2 -2
- data/config/locales/zh-TW.yml +2 -3
- data/lib/decidim/proposals/version.rb +1 -1
- data/lib/tasks/proposals/upgrade/decidim_proposals_upgrade_tasks.rake +22 -0
- metadata +24 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 555324c80eedfe348072f67f5b6334273f5422024ecd000e0a3a09c4e32eec42
|
4
|
+
data.tar.gz: ae328a90906fd92093c6255fa69cd8925393754f85e28243ff1f5605c55ddec7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49260eaf53b5f57edeaed6e8823c9d653fc73c8dcb12c3e96e14a59f7284e58951a119152624252f68a6861fd9aad6a6ff3e08b584280f82f93cf01152d9bd7f
|
7
|
+
data.tar.gz: c735d0fdba1fd18fec70df9f03351167a838d12ba9a042674fe43d9355eab0598543091fd8a5597f15ac784bbe11fa3eddcbeba8745c4cf4fe4b32e0a48c0471
|
@@ -25,7 +25,7 @@
|
|
25
25
|
<div class="flex items-start justify-between">
|
26
26
|
<div class="grow space-y-6">
|
27
27
|
<% proposals_to_render.each do |p| %>
|
28
|
-
<%= card_for p, link_whole_card: true,
|
28
|
+
<%= card_for p, link_whole_card: true, title_tag: :h3, **options.slice(:show_space) %>
|
29
29
|
<% end %>
|
30
30
|
</div>
|
31
31
|
</div>
|
@@ -53,7 +53,7 @@ module Decidim
|
|
53
53
|
hash << self.class.name.demodulize.underscore
|
54
54
|
hash << model.cache_key_with_version
|
55
55
|
hash << model.proposal_votes_count
|
56
|
-
hash << options[:
|
56
|
+
hash << options[:show_voting] ? 0 : 1
|
57
57
|
hash << model.endorsements_count
|
58
58
|
hash << model.comments_count
|
59
59
|
hash << Digest::MD5.hexdigest(model.component.cache_key_with_version)
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<%= render :content %>
|
5
5
|
<%= render :extra_data if render_extra_data? %>
|
6
6
|
<% end %>
|
7
|
-
<% if has_actions? && options.fetch(:
|
7
|
+
<% if has_actions? && options.fetch(:show_voting, false) == true %>
|
8
8
|
<% if current_settings.votes_hidden? %>
|
9
9
|
<div class="card__proposals-votes-hidden">
|
10
10
|
<%= cell proposal_vote_cell, resource, **options %>
|
@@ -34,7 +34,7 @@ module Decidim
|
|
34
34
|
hash << self.class.name.demodulize.underscore
|
35
35
|
hash << model.cache_key_with_version
|
36
36
|
hash << model.proposal_votes_count
|
37
|
-
hash << options[:
|
37
|
+
hash << options[:show_voting] ? 0 : 1
|
38
38
|
hash << model.endorsements_count
|
39
39
|
hash << model.comments_count
|
40
40
|
hash << Digest::MD5.hexdigest(model.component.cache_key_with_version)
|
@@ -22,7 +22,8 @@ module Decidim
|
|
22
22
|
def call
|
23
23
|
return broadcast(:invalid) unless form.valid?
|
24
24
|
|
25
|
-
|
25
|
+
import_proposals
|
26
|
+
broadcast(:ok)
|
26
27
|
end
|
27
28
|
|
28
29
|
private
|
@@ -30,65 +31,11 @@ module Decidim
|
|
30
31
|
attr_reader :form
|
31
32
|
|
32
33
|
def import_proposals
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
author: proposal_author,
|
39
|
-
action_user: form.current_user,
|
40
|
-
extra_attributes: {
|
41
|
-
"component" => target_component
|
42
|
-
}.merge(proposal_answer_attributes(original_proposal))
|
43
|
-
)
|
44
|
-
end.compact
|
45
|
-
end
|
46
|
-
|
47
|
-
def proposals
|
48
|
-
@proposals = Decidim::Proposals::Proposal
|
49
|
-
.where(component: origin_component)
|
50
|
-
|
51
|
-
@proposals = if @form.states.include?("not_answered")
|
52
|
-
@proposals.not_answered.or(@proposals.where(id: @proposals.only_status(@form.states).pluck(:id)))
|
53
|
-
else
|
54
|
-
@proposals.only_status(@form.states)
|
55
|
-
end
|
56
|
-
|
57
|
-
@proposals
|
58
|
-
end
|
59
|
-
|
60
|
-
def origin_component
|
61
|
-
@form.origin_component
|
62
|
-
end
|
63
|
-
|
64
|
-
def target_component
|
65
|
-
@form.current_component
|
66
|
-
end
|
67
|
-
|
68
|
-
def proposal_already_copied?(original_proposal, target_component)
|
69
|
-
# Note: we are including also proposals from unpublished components
|
70
|
-
# because otherwise duplicates could be created until the component is
|
71
|
-
# published.
|
72
|
-
original_proposal.linked_resources(:proposals, "copied_from_component", component_published: false).any? do |proposal|
|
73
|
-
proposal.component == target_component
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def proposal_author
|
78
|
-
form.keep_authors ? nil : @form.current_organization
|
79
|
-
end
|
80
|
-
|
81
|
-
def proposal_answer_attributes(original_proposal)
|
82
|
-
return {} unless form.keep_answers
|
83
|
-
|
84
|
-
state = Decidim::Proposals::ProposalState.where(component: target_component, token: original_proposal.state).first
|
85
|
-
|
86
|
-
{
|
87
|
-
answer: original_proposal.answer,
|
88
|
-
answered_at: original_proposal.answered_at,
|
89
|
-
proposal_state: state,
|
90
|
-
state_published_at: original_proposal.state_published_at
|
91
|
-
}
|
34
|
+
ImportProposalsJob.perform_later(form.as_json.merge({
|
35
|
+
"current_user_id" => form.current_user.id,
|
36
|
+
"current_organization_id" => form.current_organization.id,
|
37
|
+
"current_component_id" => form.current_component.id
|
38
|
+
}))
|
92
39
|
end
|
93
40
|
end
|
94
41
|
end
|
@@ -16,8 +16,8 @@ module Decidim
|
|
16
16
|
@form = form(Admin::ProposalsImportForm).from_params(params)
|
17
17
|
|
18
18
|
Admin::ImportProposals.call(@form) do
|
19
|
-
on(:ok) do
|
20
|
-
flash[:notice] = I18n.t("proposals_imports.create.success", scope: "decidim.proposals.admin"
|
19
|
+
on(:ok) do
|
20
|
+
flash[:notice] = I18n.t("proposals_imports.create.success", scope: "decidim.proposals.admin")
|
21
21
|
redirect_to EngineRouter.admin_proxy(current_component).root_path
|
22
22
|
end
|
23
23
|
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Proposals
|
5
|
+
module Admin
|
6
|
+
class ImportProposalsJob < ApplicationJob
|
7
|
+
queue_as :default
|
8
|
+
|
9
|
+
def perform(form)
|
10
|
+
@form = form
|
11
|
+
ActiveRecord::Base.transaction do
|
12
|
+
proposals.map do |original_proposal|
|
13
|
+
next if proposal_already_copied?(original_proposal, target_component)
|
14
|
+
|
15
|
+
Decidim::Proposals::ProposalBuilder.copy(
|
16
|
+
original_proposal,
|
17
|
+
author: proposal_author,
|
18
|
+
action_user: current_user,
|
19
|
+
extra_attributes: {
|
20
|
+
"component" => target_component
|
21
|
+
}.merge(proposal_answer_attributes(original_proposal))
|
22
|
+
)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
ImportProposalsMailer.notify_success(current_user, origin_component, target_component, proposals.count).deliver_later
|
26
|
+
rescue ActiveRecord::RecordNotFound, NoMethodError
|
27
|
+
ImportProposalsMailer.notify_failure(current_user, origin_component, target_component).deliver_later
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def proposals
|
33
|
+
proposals = Decidim::Proposals::Proposal.where(component: origin_component)
|
34
|
+
|
35
|
+
if @form["states"].include?("not_answered")
|
36
|
+
proposals.not_answered.or(proposals.where(id: proposals.only_status(@form["states"]).pluck(:id)))
|
37
|
+
else
|
38
|
+
proposals.only_status(@form["states"])
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def origin_component
|
43
|
+
@origin_component ||= Decidim::Component.find(@form["origin_component_id"])
|
44
|
+
end
|
45
|
+
|
46
|
+
def target_component
|
47
|
+
@target_component ||= Decidim::Component.find(@form["current_component_id"])
|
48
|
+
end
|
49
|
+
|
50
|
+
def current_user
|
51
|
+
@current_user ||= Decidim::User.find(@form["current_user_id"])
|
52
|
+
end
|
53
|
+
|
54
|
+
def current_organization
|
55
|
+
@current_organization ||= Decidim::Organization.find(@form["current_organization_id"])
|
56
|
+
end
|
57
|
+
|
58
|
+
def proposal_already_copied?(original_proposal, target_component)
|
59
|
+
# Note: we are including also proposals from unpublished components
|
60
|
+
# because otherwise duplicates could be created until the component is
|
61
|
+
# published.
|
62
|
+
original_proposal.linked_resources(:proposals, "copied_from_component", component_published: false).any? do |proposal|
|
63
|
+
proposal.component == target_component
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def proposal_author
|
68
|
+
@form["keep_authors"] ? nil : current_organization
|
69
|
+
end
|
70
|
+
|
71
|
+
def proposal_answer_attributes(original_proposal)
|
72
|
+
return {} unless @form["keep_answers"]
|
73
|
+
|
74
|
+
state = Decidim::Proposals::ProposalState.where(component: target_component, token: original_proposal.proposal_state&.token).first
|
75
|
+
|
76
|
+
{
|
77
|
+
answer: original_proposal.answer,
|
78
|
+
answered_at: original_proposal.answered_at,
|
79
|
+
proposal_state: state,
|
80
|
+
state_published_at: original_proposal.state_published_at
|
81
|
+
}
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Proposals
|
5
|
+
module Admin
|
6
|
+
class ImportProposalsMailer < Decidim::ApplicationMailer
|
7
|
+
def notify_success(user, origin_component, target_component, count)
|
8
|
+
@organization = user.organization
|
9
|
+
@origin_component = origin_component
|
10
|
+
@target_component = target_component
|
11
|
+
@count = count
|
12
|
+
|
13
|
+
with_user(user) do
|
14
|
+
mail(to: user.email, subject: t(".subject"))
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def notify_failure(user, origin_component, target_component)
|
19
|
+
@organization = user.organization
|
20
|
+
@origin_component = origin_component
|
21
|
+
@target_component = target_component
|
22
|
+
|
23
|
+
with_user(user) do
|
24
|
+
mail(to: user.email, subject: t(".subject"))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -122,7 +122,8 @@
|
|
122
122
|
}
|
123
123
|
}
|
124
124
|
|
125
|
-
.card__proposals-votes
|
125
|
+
.card__proposals-votes,
|
126
|
+
.card__proposals-votes-hidden {
|
126
127
|
@apply flex md:flex-col lg:flex-row bg-[#F5F5F5] justify-around md:flex-[0.6] lg:flex-[0.8] items-center md:items-stretch lg:items-center lg:min-w-[196px] h-[68px] md:h-auto lg:h-[68px];
|
127
128
|
|
128
129
|
button {
|
@@ -138,6 +139,14 @@
|
|
138
139
|
|
139
140
|
.proposals__aside-progress {
|
140
141
|
@apply flex flex-col w-[80%] items-center md:order-1 lg:order-none md:flex-[1_1_100%] lg:flex-none;
|
142
|
+
|
143
|
+
.progress-bar {
|
144
|
+
@apply bg-[#D3D5D9] border-white border border-solid;
|
145
|
+
|
146
|
+
> :first-child {
|
147
|
+
@apply outline outline-white;
|
148
|
+
}
|
149
|
+
}
|
141
150
|
}
|
142
151
|
|
143
152
|
.progress-bar {
|
@@ -149,6 +158,10 @@
|
|
149
158
|
span {
|
150
159
|
@apply text-sm;
|
151
160
|
}
|
161
|
+
|
162
|
+
> :last-child::before {
|
163
|
+
@apply content-['/'] mx-1;
|
164
|
+
}
|
152
165
|
}
|
153
166
|
}
|
154
167
|
}
|
@@ -228,7 +241,8 @@
|
|
228
241
|
}
|
229
242
|
}
|
230
243
|
|
231
|
-
.card__proposals-votes
|
244
|
+
.card__proposals-votes,
|
245
|
+
.card__proposals-votes-hidden {
|
232
246
|
@apply flex bg-[#F5F5F5EE] justify-around items-center px-4 h-[68px];
|
233
247
|
|
234
248
|
button {
|
@@ -244,6 +258,14 @@
|
|
244
258
|
|
245
259
|
.proposals__aside-progress {
|
246
260
|
@apply flex flex-col-reverse w-[80%] items-center;
|
261
|
+
|
262
|
+
.progress-bar {
|
263
|
+
@apply bg-[#D3D5D9] border-white border border-solid;
|
264
|
+
|
265
|
+
> :first-child {
|
266
|
+
@apply outline outline-white;
|
267
|
+
}
|
268
|
+
}
|
247
269
|
}
|
248
270
|
|
249
271
|
.progress-bar {
|
@@ -253,6 +275,10 @@
|
|
253
275
|
span {
|
254
276
|
@apply text-sm;
|
255
277
|
}
|
278
|
+
|
279
|
+
> :last-child::before {
|
280
|
+
@apply content-['/'] mx-1;
|
281
|
+
}
|
256
282
|
}
|
257
283
|
|
258
284
|
&__units {
|
@@ -0,0 +1 @@
|
|
1
|
+
<p><%= t(".body", origin_component_name: translated_attribute(@origin_component.name), target_component_name: translated_attribute(@target_component.name)) %></p>
|
@@ -1 +1 @@
|
|
1
|
-
<%= card_for proposal, from: proposal, size: card_size %>
|
1
|
+
<%= card_for proposal, from: proposal, size: card_size, show_voting: %>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<%= cell("decidim/announcement", params[:filter].present? ? t(".empty_filters") : t(".empty")) %>
|
9
9
|
<% else %>
|
10
10
|
<div class="flex items-center justify-between">
|
11
|
-
<h2 class="h5 md:h3 decorator"><%= t("count", scope: "decidim.proposals.proposals.index", count: @proposals.total_count) %></h2>
|
11
|
+
<h2 class="h5 md:h3 decorator" aria-live="polite" aria-atomic="true"><%= t("count", scope: "decidim.proposals.proposals.index", count: @proposals.total_count) %></h2>
|
12
12
|
<div class="view-layout__links flex view_mode__links">
|
13
13
|
<%= toggle_view_mode_link(@view_mode, "list", t("list_mode", scope: "decidim.proposals.proposals.index"), params) %>
|
14
14
|
<%= toggle_view_mode_link(@view_mode, "grid", t("grid_mode", scope: "decidim.proposals.proposals.index"), params) %>
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<%= order_selector available_orders, i18n_scope: "decidim.proposals.proposals.orders" %>
|
19
19
|
|
20
20
|
<div class="<%= proposals_container_class(@view_mode) %>">
|
21
|
-
<%= render partial: "proposal", collection: @proposals, as: :proposal, locals: { card_size: card_size_for_view_mode(@view_mode) } %>
|
21
|
+
<%= render partial: "proposal", collection: @proposals, as: :proposal, locals: { card_size: card_size_for_view_mode(@view_mode), show_voting: true } %>
|
22
22
|
</div>
|
23
23
|
|
24
24
|
<%= decidim_paginate @proposals %>
|
data/config/locales/ar.yml
CHANGED
@@ -198,6 +198,8 @@ ar:
|
|
198
198
|
events:
|
199
199
|
proposals:
|
200
200
|
admin:
|
201
|
+
proposal_assigned_to_valuator:
|
202
|
+
email_outro: تلقيت هذا الإشعار لأنك تستطيع تقييم الاقتراح.
|
201
203
|
proposal_note_created:
|
202
204
|
email_outro: تلقيت هذا الإشعار لأنك تستطيع تقييم الاقتراح.
|
203
205
|
email_subject: ترك شخص ملاحظة على الاقتراح %{resource_title}.
|
@@ -385,7 +387,6 @@ ar:
|
|
385
387
|
index:
|
386
388
|
actions: أفعال
|
387
389
|
assign_to_valuator: أسنِده إلى مُقيِّم
|
388
|
-
assign_to_valuator_button: تعيين
|
389
390
|
cancel: إلغاء
|
390
391
|
merge: دمج في واحدة جديدة
|
391
392
|
merge_button: دمج
|
@@ -397,7 +398,6 @@ ar:
|
|
397
398
|
split_button: انشق، مزق
|
398
399
|
title: اقتراحات
|
399
400
|
unassign_from_valuator: إلغاء الإسناد مِن المُقيِّم
|
400
|
-
unassign_from_valuator_button: إلغاء الإسناد
|
401
401
|
update: تحديث
|
402
402
|
new:
|
403
403
|
create: إنشاء
|
data/config/locales/bg.yml
CHANGED
@@ -222,6 +222,8 @@ bg:
|
|
222
222
|
events:
|
223
223
|
proposals:
|
224
224
|
admin:
|
225
|
+
proposal_assigned_to_valuator:
|
226
|
+
email_outro: Получихте известие, защото можете да оценяте предложението.
|
225
227
|
proposal_note_created:
|
226
228
|
email_outro: Получихте известие, защото можете да оценяте предложението.
|
227
229
|
email_subject: Някой е направил бележка в предложението %{resource_title}.
|
@@ -467,7 +469,6 @@ bg:
|
|
467
469
|
index:
|
468
470
|
actions: Активности
|
469
471
|
assign_to_valuator: Възлагане на оценител
|
470
|
-
assign_to_valuator_button: Възлагане
|
471
472
|
cancel: Отказ
|
472
473
|
merge: Сливане в едно ново
|
473
474
|
merge_button: Сливане
|
@@ -481,7 +482,6 @@ bg:
|
|
481
482
|
statuses: Статуси
|
482
483
|
title: Предложения
|
483
484
|
unassign_from_valuator: Отнемане възложеното на оценителя
|
484
|
-
unassign_from_valuator_button: Отнемане на възложеното
|
485
485
|
update: Актуализация
|
486
486
|
new:
|
487
487
|
create: Създаване
|
@@ -511,7 +511,6 @@ bg:
|
|
511
511
|
proposals_imports:
|
512
512
|
create:
|
513
513
|
invalid: Възникна проблем при импортирането на предложенията.
|
514
|
-
success: "%{number} предложения бяха импортирани успешно."
|
515
514
|
new:
|
516
515
|
create: Импортиране на предложения
|
517
516
|
no_components: Няма други компоненти на предложения в това пространство за участие, от които да се импортират предложенията.
|
data/config/locales/bs-BA.yml
CHANGED
@@ -35,6 +35,8 @@ bs:
|
|
35
35
|
events:
|
36
36
|
proposals:
|
37
37
|
admin:
|
38
|
+
proposal_assigned_to_valuator:
|
39
|
+
email_outro: Dobili ste ovo obaveštenje jer možete da procenite predlog.
|
38
40
|
proposal_note_created:
|
39
41
|
email_outro: Dobili ste ovo obaveštenje jer možete da procenite predlog.
|
40
42
|
email_subject: Neko je ostavio poruku na predlogu %{resource_title}.
|
@@ -46,10 +48,8 @@ bs:
|
|
46
48
|
proposals:
|
47
49
|
index:
|
48
50
|
assign_to_valuator: Dodeli procenjivaču
|
49
|
-
assign_to_valuator_button: Dodeli
|
50
51
|
publish_answers: Objavi odgovore
|
51
52
|
unassign_from_valuator: Oduzmi od procenjivača
|
52
|
-
unassign_from_valuator_button: Od dodeli
|
53
53
|
show:
|
54
54
|
amendments_count: Broj izmena
|
55
55
|
assigned_valuators: Dodeljeni procenjivači
|
data/config/locales/ca.yml
CHANGED
@@ -222,7 +222,7 @@ ca:
|
|
222
222
|
taxonomy_filters: Seleccionar filtres pel component
|
223
223
|
taxonomy_filters_add: Afegir un filtre
|
224
224
|
threshold_per_proposal: Llindar per proposta
|
225
|
-
vote_limit: Límit de
|
225
|
+
vote_limit: Límit de suports per participant
|
226
226
|
step:
|
227
227
|
amendment_creation_enabled: Creació d'esmenes habilitada
|
228
228
|
amendment_creation_enabled_help: Les participants poden esmenar les propostes.
|
@@ -284,7 +284,7 @@ ca:
|
|
284
284
|
email_intro: '"%{author_name}" "%{author_nickname}" t''ha esmentat a una nota privada a "%{resource_title}". La pots veure al <a href="%{admin_proposal_info_url}">taulell d''administració</a>.'
|
285
285
|
email_outro: Has rebut aquesta notificació perquè t'han esmentat a una nota privada.
|
286
286
|
email_subject: Algú ha deixat una nota a la proposta %{resource_title}.
|
287
|
-
notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a>
|
287
|
+
notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> t'ha esmentat a una nota privada a <a href="%{resource_path}">%{resource_title}</a>. La pots veure al <a href="%{admin_proposal_info_path}">taulell d'administració</a>.
|
288
288
|
proposal_note_replied:
|
289
289
|
email_intro: '%{author_name} ha respost la teva nota privada a %{resource_title}. Ho pots veure al <a href="%{admin_proposal_info_url}">taulell d''administració</a>.'
|
290
290
|
email_outro: Has rebut aquesta notificació perquè ets l'autora de la nota privada.
|
@@ -491,7 +491,7 @@ ca:
|
|
491
491
|
actions:
|
492
492
|
answer_proposal: Respondre a la proposta
|
493
493
|
cancel_coauthor_invitation: Cancel·lar la invitació de coautoria
|
494
|
-
cancel_coauthor_invitation_confirm: Segur que vols cancel·lar la invitació de
|
494
|
+
cancel_coauthor_invitation_confirm: Segur que vols cancel·lar la invitació de coautoria?
|
495
495
|
delete_proposal_state_confirm: Segur que vols esborrar aquest estat?
|
496
496
|
destroy: Esborrar estat
|
497
497
|
edit_proposal: Edita la proposta
|
@@ -513,12 +513,22 @@ ca:
|
|
513
513
|
exports:
|
514
514
|
proposal_comments: Comentaris
|
515
515
|
proposals: Propostes
|
516
|
+
import_proposals_mailer:
|
517
|
+
notify_failure:
|
518
|
+
body: Hi ha hagut un problema en importar propostes del component %{origin_component_name} al component %{target_component_name}.
|
519
|
+
subject: S'ha produït un error en importar les propostes
|
520
|
+
notify_success:
|
521
|
+
added_proposals:
|
522
|
+
one: S'ha importat una proposta.
|
523
|
+
other: "S'han importat %{count} propostes."
|
524
|
+
body: S'han importat amb èxit les propostes des del component %{origin_component_name} al component %{target_component_name}. Pots revisar els resultats al tauler d'administració.
|
525
|
+
subject: Les propostes s'han importat correctament
|
516
526
|
imports:
|
517
527
|
help:
|
518
528
|
answers: |
|
519
529
|
El document d'importació ha d'incloure els següents noms de columna en cas d'arxius CSV o Excel o noms de claus en el cas d'arxius JSON (s'ignoraran altres columnes):
|
520
530
|
<ul>
|
521
|
-
<li><b>id:</b> ID de la proposta a
|
531
|
+
<li><b>id:</b> ID de la proposta a respondre</li>
|
522
532
|
<li>state<b>:</b> Un d'aquests "acceptada", "en avaluació" o "rebutjada"</li>
|
523
533
|
<li><b>answer/ca</b> Resposta en català. Això dependrà de la configuració d'idioma predeterminat a la teva plataforma.</li>
|
524
534
|
</ul>
|
@@ -647,7 +657,7 @@ ca:
|
|
647
657
|
statuses: Estats
|
648
658
|
title: Propostes
|
649
659
|
unassign_from_valuator: Desfer assignació a avaluadora
|
650
|
-
unassign_from_valuator_button: Desfer assignació
|
660
|
+
unassign_from_valuator_button: Desfer l'assignació
|
651
661
|
update: Actualitza
|
652
662
|
manage_trash:
|
653
663
|
title: Propostes eliminades
|
@@ -684,7 +694,7 @@ ca:
|
|
684
694
|
proposals_imports:
|
685
695
|
create:
|
686
696
|
invalid: S'ha produït un error en importar les propostes.
|
687
|
-
success:
|
697
|
+
success: El procés d'importació ha començat. T'avisarem quan hagi finalitzat.
|
688
698
|
new:
|
689
699
|
create: Importa propostes
|
690
700
|
no_components: No hi ha cap altre component de propostes en aquest espai participatiu des d'on importar-les.
|
@@ -866,7 +876,7 @@ ca:
|
|
866
876
|
success: Invitació de coautoria cancel·lada amb èxit.
|
867
877
|
create:
|
868
878
|
error: S'ha produït un error en convidar a la coautora.
|
869
|
-
success: "S'ha convidat amb èxit
|
879
|
+
success: "S'ha convidat amb èxit %{author_name} per ser coautor/a de la proposta."
|
870
880
|
destroy:
|
871
881
|
error: S'ha produït un error en rebutjar la invitació.
|
872
882
|
success: S'ha rebutjat la invitació.
|
data/config/locales/cs.yml
CHANGED
@@ -280,7 +280,7 @@ cs:
|
|
280
280
|
admin:
|
281
281
|
proposal_assigned_to_valuator:
|
282
282
|
email_intro: Byli jste přiděleni jako hodnotitel k nnávrhu "%{resource_title}". To znamená, že vám důvěřujeme, že jim v příštích dnech poskytnete zpětnou vazbu a náležitou odpověď. Podívejte se na <a href="%{admin_proposal_info_url}">administrátorský panel</a>.
|
283
|
-
email_outro: Obdrželi jste toto oznámení, protože můžete návrh
|
283
|
+
email_outro: Obdrželi jste toto oznámení, protože můžete návrh ohodnotit.
|
284
284
|
email_subject: Byl jste přiřazen jako hodnotitel k návrhu %{resource_title}.
|
285
285
|
notification_title: Byli jste přiřazeni jako hodnotitel k nnávrhu <a href="%{resource_path}">%{resource_title}</a>. Podívejte se na <a href="%{admin_proposal_info_path}">administrátorský panel</a>.
|
286
286
|
proposal_note_created:
|
@@ -521,6 +521,12 @@ cs:
|
|
521
521
|
exports:
|
522
522
|
proposal_comments: Komentáře
|
523
523
|
proposals: Návrhy
|
524
|
+
import_proposals_mailer:
|
525
|
+
notify_failure:
|
526
|
+
body: Při importu návrhů ze komponenty %{origin_component_name} do komponenty %{target_component_name} došlo k chybě.
|
527
|
+
subject: Došlo k chybě při importu návrhů
|
528
|
+
notify_success:
|
529
|
+
subject: Návrhy byly úspěšně importovány
|
524
530
|
imports:
|
525
531
|
help:
|
526
532
|
answers: |
|
@@ -643,7 +649,6 @@ cs:
|
|
643
649
|
actions: Akce
|
644
650
|
apply_answer_template: Použít šablonu odpovědi
|
645
651
|
assign_to_valuator: Přiřadit hodnotiteli
|
646
|
-
assign_to_valuator_button: Přiřadit
|
647
652
|
cancel: Zrušit
|
648
653
|
change_taxonomies: Změnit taxonomie
|
649
654
|
merge: Sloučit do nového
|
@@ -659,7 +664,6 @@ cs:
|
|
659
664
|
statuses: Statusy
|
660
665
|
title: Návrhy
|
661
666
|
unassign_from_valuator: Odebrat přiřazení od hodnotitele
|
662
|
-
unassign_from_valuator_button: Zrušit přiřazení
|
663
667
|
update: Aktualizace
|
664
668
|
manage_trash:
|
665
669
|
title: Smazané návrhy
|
@@ -698,7 +702,7 @@ cs:
|
|
698
702
|
proposals_imports:
|
699
703
|
create:
|
700
704
|
invalid: Při importu návrhů došlo k chybě.
|
701
|
-
success:
|
705
|
+
success: Proces importu byl zahájen. Jakmile bude dokončen, dáme vám vědět.
|
702
706
|
new:
|
703
707
|
create: Návrhy na dovoz
|
704
708
|
no_components: V tomto účastnickém prostoru neexistují žádné jiné komponenty návrhu, které by mohly importovat návrhy.
|
@@ -884,7 +888,6 @@ cs:
|
|
884
888
|
success: Pozvánka spoluautora byla úspěšně zrušena.
|
885
889
|
create:
|
886
890
|
error: Při pozvání spoluautora došlo k chybě.
|
887
|
-
success: "%{author_name} byl úspěšně pozván jako spoluautor."
|
888
891
|
destroy:
|
889
892
|
error: Při odmítání pozvánky došlo k chybě.
|
890
893
|
success: Pozvánka byla zamítnuta.
|
data/config/locales/de.yml
CHANGED
@@ -513,6 +513,16 @@ de:
|
|
513
513
|
exports:
|
514
514
|
proposal_comments: Kommentare
|
515
515
|
proposals: Vorschläge
|
516
|
+
import_proposals_mailer:
|
517
|
+
notify_failure:
|
518
|
+
body: Beim Importieren von Vorschlägen aus der Komponente %{origin_component_name} in die Komponente %{target_component_name} ist ein Fehler aufgetreten.
|
519
|
+
subject: Beim Importieren der Vorschläge ist ein Fehler aufgetreten
|
520
|
+
notify_success:
|
521
|
+
added_proposals:
|
522
|
+
one: Ein Vorschlag wurde importiert.
|
523
|
+
other: "%{count} Vorschläge wurden importiert."
|
524
|
+
body: Vorschläge erfolgreich aus der Komponente %{origin_component_name} zu %{target_component_name} importiert. Sie können die Ergebnisse in der Adminoberfläche überprüfen.
|
525
|
+
subject: Die Vorschläge wurden erfolgreich importiert
|
516
526
|
imports:
|
517
527
|
help:
|
518
528
|
answers: |
|
@@ -631,7 +641,6 @@ de:
|
|
631
641
|
actions: Aktionen
|
632
642
|
apply_answer_template: Antwortvorlage anwenden
|
633
643
|
assign_to_valuator: Zuweisen zur Bewertung
|
634
|
-
assign_to_valuator_button: Zuweisen
|
635
644
|
cancel: Abbrechen
|
636
645
|
change_taxonomies: Klassifizierungen ändern
|
637
646
|
merge: Zu einem neuen zusammenführen
|
@@ -647,7 +656,6 @@ de:
|
|
647
656
|
statuses: Status
|
648
657
|
title: Vorschläge
|
649
658
|
unassign_from_valuator: Zuweisung zur Bewertung zurückziehen
|
650
|
-
unassign_from_valuator_button: Zuweisung aufheben
|
651
659
|
update: Aktualisieren
|
652
660
|
manage_trash:
|
653
661
|
title: Gelöschte Vorschläge
|
@@ -684,7 +692,7 @@ de:
|
|
684
692
|
proposals_imports:
|
685
693
|
create:
|
686
694
|
invalid: Beim Importieren der Vorschläge ist ein Problem aufgetreten.
|
687
|
-
success:
|
695
|
+
success: Der Importprozess wurde gestartet. Sie werden benachrichtigt, sobald er beendet ist.
|
688
696
|
new:
|
689
697
|
create: Vorschläge importieren
|
690
698
|
no_components: In diesem partizipatorischen Bereich gibt es keine weiteren Vorschlagskomponenten, aus denen die Vorschläge importiert werden könnten.
|
@@ -866,7 +874,6 @@ de:
|
|
866
874
|
success: Einladung zur Mitverfassung erfolgreich zurückgezogen.
|
867
875
|
create:
|
868
876
|
error: Beim Einladen zur Mitverfassung ist ein Problem aufgetreten.
|
869
|
-
success: "%{author_name} wurde erfolgreich zur Mitverfassung eingeladen."
|
870
877
|
destroy:
|
871
878
|
error: Beim Ablehnen der Einladung ist ein Problem aufgetreten.
|
872
879
|
success: Die Einladung wurde abgelehnt.
|