decidim-proposals 0.28.5 → 0.29.0.rc1
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/README.md +1 -18
- data/app/cells/decidim/proposals/cost_report_cell.rb +0 -3
- data/app/cells/decidim/proposals/highlighted_proposals_for_component/show.erb +11 -11
- data/app/cells/decidim/proposals/highlighted_proposals_for_component_cell.rb +1 -1
- data/app/cells/decidim/proposals/participatory_text_proposal/buttons.erb +1 -1
- data/app/cells/decidim/proposals/participatory_text_proposal_cell.rb +2 -3
- data/app/cells/decidim/proposals/proposal_cell.rb +2 -0
- data/app/cells/decidim/proposals/proposal_g/show.erb +23 -0
- data/app/cells/decidim/proposals/proposal_g_cell.rb +48 -0
- data/app/cells/decidim/proposals/proposal_l_cell.rb +18 -19
- data/app/cells/decidim/proposals/proposal_metadata_cell.rb +23 -15
- data/app/commands/decidim/proposals/admin/answer_proposal.rb +2 -1
- data/app/commands/decidim/proposals/admin/assign_proposals_to_valuator.rb +7 -5
- data/app/commands/decidim/proposals/admin/create_proposal.rb +4 -6
- data/app/commands/decidim/proposals/admin/create_proposal_state.rb +15 -0
- data/app/commands/decidim/proposals/admin/destroy_proposal_state.rb +10 -0
- data/app/commands/decidim/proposals/admin/import_proposals.rb +10 -2
- data/app/commands/decidim/proposals/admin/notify_proposal_answer.rb +4 -21
- data/app/commands/decidim/proposals/admin/unassign_proposals_from_valuator.rb +6 -4
- data/app/commands/decidim/proposals/admin/update_proposal_state.rb +13 -0
- data/app/commands/decidim/proposals/create_proposal.rb +21 -2
- data/app/commands/decidim/proposals/update_proposal.rb +2 -2
- data/app/commands/decidim/proposals/vote_proposal.rb +1 -1
- data/app/commands/decidim/proposals/withdraw_proposal.rb +3 -7
- data/app/controllers/concerns/decidim/proposals/admin/filterable.rb +10 -22
- data/app/controllers/decidim/proposals/admin/proposal_states_controller.rb +86 -0
- data/app/controllers/decidim/proposals/admin/proposals_controller.rb +4 -0
- data/app/controllers/decidim/proposals/admin/valuation_assignments_controller.rb +8 -11
- data/app/controllers/decidim/proposals/proposals_controller.rb +38 -39
- data/app/events/decidim/proposals/proposal_state_changed_event.rb +37 -0
- data/app/forms/decidim/proposals/admin/proposal_answer_form.rb +8 -4
- data/app/forms/decidim/proposals/admin/proposal_form.rb +1 -1
- data/app/forms/decidim/proposals/admin/proposal_state_form.rb +22 -0
- data/app/forms/decidim/proposals/admin/proposals_fork_form.rb +1 -1
- data/app/forms/decidim/proposals/admin/proposals_import_form.rb +1 -1
- data/app/forms/decidim/proposals/admin/valuation_assignment_form.rb +12 -14
- data/app/forms/decidim/proposals/proposal_form.rb +25 -4
- data/app/forms/decidim/proposals/reject_access_to_collaborative_draft_form.rb +1 -1
- data/app/forms/decidim/proposals/request_access_to_collaborative_draft_form.rb +1 -1
- data/app/helpers/decidim/proposals/admin/proposal_bulk_actions_helper.rb +7 -17
- data/app/helpers/decidim/proposals/admin/proposals_helper.rb +13 -89
- data/app/helpers/decidim/proposals/application_helper.rb +16 -10
- data/app/helpers/decidim/proposals/map_helper.rb +1 -1
- data/app/helpers/decidim/proposals/proposal_cells_helper.rb +6 -2
- data/app/helpers/decidim/proposals/proposal_votes_helper.rb +3 -3
- data/app/helpers/decidim/proposals/proposal_wizard_helper.rb +5 -8
- data/app/helpers/decidim/proposals/proposals_helper.rb +18 -24
- data/app/models/decidim/proposals/proposal.rb +83 -29
- data/app/models/decidim/proposals/proposal_state.rb +58 -0
- data/app/packs/documents/decidim/proposals/participatory_texts/participatory_text.md +1 -3
- data/app/packs/images/decidim/proposals/proposal-placeholder-card-g.svg +15 -0
- data/app/packs/src/decidim/proposals/add_proposal.js +2 -0
- data/app/packs/src/decidim/proposals/admin/proposals.js +43 -8
- data/app/packs/stylesheets/decidim/proposals/proposals.scss +39 -1
- data/app/permissions/decidim/proposals/admin/permissions.rb +16 -4
- data/app/permissions/decidim/proposals/permissions.rb +3 -4
- data/app/presenters/decidim/proposals/admin_log/proposal_state_presenter.rb +21 -0
- data/app/presenters/decidim/proposals/proposal_presenter.rb +12 -3
- data/app/queries/decidim/proposals/metrics/endorsements_metric_manage.rb +1 -1
- data/app/queries/decidim/proposals/metrics/proposal_followers_metric_measure.rb +1 -1
- data/app/queries/decidim/proposals/metrics/proposal_participants_metric_measure.rb +4 -4
- data/app/queries/decidim/proposals/metrics/proposals_metric_manage.rb +1 -1
- data/app/queries/decidim/proposals/metrics/votes_metric_manage.rb +1 -1
- data/app/services/decidim/proposals/diff_renderer.rb +1 -3
- data/app/services/decidim/proposals/proposal_builder.rb +1 -1
- data/app/views/decidim/proposals/admin/imports/_proposals_fields.html.erb +1 -1
- data/app/views/decidim/proposals/admin/participatory_texts/index.html.erb +3 -2
- data/app/views/decidim/proposals/admin/proposal_answers/_form.html.erb +2 -2
- data/app/views/decidim/proposals/admin/proposal_notes/_proposal_notes.html.erb +3 -3
- data/app/views/decidim/proposals/admin/proposal_states/_form.html.erb +67 -0
- data/app/views/decidim/proposals/admin/proposal_states/edit.html.erb +18 -0
- data/app/views/decidim/proposals/admin/proposal_states/index.html.erb +50 -0
- data/app/views/decidim/proposals/admin/proposal_states/new.html.erb +18 -0
- data/app/views/decidim/proposals/admin/proposals/_bulk-actions.html.erb +6 -12
- data/app/views/decidim/proposals/admin/proposals/_form.html.erb +6 -6
- data/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb +2 -2
- data/app/views/decidim/proposals/admin/proposals/bulk_actions/_assign_to_valuator.html.erb +11 -7
- data/app/views/decidim/proposals/admin/proposals/bulk_actions/_dropdown.html.erb +7 -5
- data/app/views/decidim/proposals/admin/proposals/bulk_actions/_merge.html.erb +2 -2
- data/app/views/decidim/proposals/admin/proposals/bulk_actions/_publish_answers.html.erb +2 -2
- data/app/views/decidim/proposals/admin/proposals/bulk_actions/_recategorize.html.erb +2 -2
- data/app/views/decidim/proposals/admin/proposals/bulk_actions/_scope-change.html.erb +2 -2
- data/app/views/decidim/proposals/admin/proposals/bulk_actions/_split.html.erb +2 -2
- data/app/views/decidim/proposals/admin/proposals/bulk_actions/_unassign_from_valuator.html.erb +11 -7
- data/app/views/decidim/proposals/admin/proposals/bulk_actions/_valuators_picker.html.erb +12 -0
- data/app/views/decidim/proposals/admin/proposals/index.html.erb +11 -7
- data/app/views/decidim/proposals/admin/proposals/publish_answers.js.erb +1 -1
- data/app/views/decidim/proposals/admin/proposals/show.html.erb +3 -2
- data/app/views/decidim/proposals/admin/proposals/update_attribute.js.erb +3 -3
- data/app/views/decidim/proposals/proposals/_edit_form_fields.html.erb +12 -5
- data/app/views/decidim/proposals/proposals/_proposal.html.erb +1 -1
- data/app/views/decidim/proposals/proposals/_proposal_aside.html.erb +1 -1
- data/app/views/decidim/proposals/proposals/_proposals.html.erb +9 -3
- data/app/views/decidim/proposals/proposals/_vote_button.html.erb +1 -1
- data/app/views/decidim/proposals/proposals/_voting_rules.html.erb +3 -3
- data/app/views/decidim/proposals/proposals/_wizard_header.html.erb +0 -1
- data/app/views/decidim/proposals/proposals/index.html.erb +1 -1
- data/app/views/decidim/proposals/proposals/index.js.erb +0 -12
- data/app/views/decidim/proposals/proposals/new.html.erb +2 -7
- data/app/views/decidim/proposals/proposals/participatory_texts/_proposal_vote_button.html.erb +4 -4
- data/app/views/decidim/proposals/proposals/participatory_texts/_proposal_votes_count.html.erb +8 -8
- data/app/views/decidim/proposals/proposals/preview.html.erb +1 -1
- data/app/views/decidim/proposals/proposals/show.html.erb +3 -3
- data/config/locales/ar.yml +9 -115
- data/config/locales/bg.yml +117 -111
- data/config/locales/ca.yml +86 -83
- data/config/locales/cs.yml +65 -127
- data/config/locales/de.yml +128 -125
- data/config/locales/el.yml +8 -121
- data/config/locales/en.yml +110 -107
- data/config/locales/es-MX.yml +85 -82
- data/config/locales/es-PY.yml +88 -85
- data/config/locales/es.yml +83 -80
- data/config/locales/eu.yml +166 -170
- data/config/locales/fi-plain.yml +90 -87
- data/config/locales/fi.yml +139 -136
- data/config/locales/fr-CA.yml +92 -87
- data/config/locales/fr.yml +83 -78
- data/config/locales/ga-IE.yml +1 -27
- data/config/locales/gl.yml +11 -107
- data/config/locales/he-IL.yml +0 -17
- data/config/locales/hu.yml +18 -90
- data/config/locales/id-ID.yml +6 -106
- data/config/locales/is-IS.yml +8 -33
- data/config/locales/it.yml +14 -103
- data/config/locales/ja.yml +117 -112
- data/config/locales/lb.yml +1 -0
- data/config/locales/lt.yml +6 -123
- data/config/locales/lv.yml +4 -101
- data/config/locales/nl.yml +11 -102
- data/config/locales/no.yml +7 -108
- data/config/locales/pl.yml +110 -115
- data/config/locales/pt-BR.yml +10 -84
- data/config/locales/pt.yml +9 -109
- data/config/locales/ro-RO.yml +15 -117
- data/config/locales/ru.yml +9 -53
- data/config/locales/sk.yml +5 -109
- data/config/locales/sl.yml +4 -0
- data/config/locales/sv.yml +142 -337
- data/config/locales/tr-TR.yml +64 -108
- data/config/locales/uk.yml +11 -55
- data/config/locales/zh-CN.yml +5 -100
- data/config/locales/zh-TW.yml +8 -119
- data/db/migrate/20240110203500_add_withdrawn_at_field_to_proposals.rb +27 -0
- data/db/migrate/20240110203501_create_decidim_proposals_proposal_state.rb +14 -0
- data/db/migrate/20240110203502_add_state_id_to_decidim_proposals_proposals.rb +13 -0
- data/db/migrate/20240110203503_remove_state_from_decidim_proposals_proposals.rb +11 -0
- data/db/migrate/20240110203504_create_default_proposal_states.rb +31 -0
- data/db/migrate/20240209092404_change_color_fields_on_proposals_states.rb +54 -0
- data/decidim-proposals.gemspec +3 -3
- data/lib/decidim/api/proposal_type.rb +4 -13
- data/lib/decidim/api/proposals_type.rb +3 -1
- data/lib/decidim/proposals/admin_engine.rb +8 -0
- data/lib/decidim/proposals/admin_filter.rb +37 -0
- data/lib/decidim/proposals/component.rb +8 -5
- data/lib/decidim/proposals/engine.rb +1 -15
- data/lib/decidim/proposals/import/proposal_answer_creator.rb +6 -6
- data/lib/decidim/proposals/import/proposal_creator.rb +1 -1
- data/lib/decidim/proposals/markdown_to_proposals.rb +2 -8
- data/lib/decidim/proposals/proposal_serializer.rb +8 -9
- data/lib/decidim/proposals/seeds.rb +60 -51
- data/lib/decidim/proposals/test/factories.rb +69 -14
- data/lib/decidim/proposals/version.rb +1 -1
- data/lib/decidim/proposals.rb +84 -12
- data/lib/tasks/proposals/upgrade/{decdim_proposals_upgrade_tasks.rake → decidim_proposals_upgrade_tasks.rake} +0 -13
- metadata +51 -40
- data/app/events/decidim/proposals/accepted_proposal_event.rb +0 -17
- data/app/events/decidim/proposals/evaluating_proposal_event.rb +0 -11
- data/app/events/decidim/proposals/rejected_proposal_event.rb +0 -17
- data/app/forms/decidim/proposals/proposal_wizard_create_step_form.rb +0 -44
- data/app/queries/decidim/proposals/similar_proposals.rb +0 -67
- data/app/services/decidim/proposals/collaborative_draft_diff_renderer.rb +0 -22
- data/app/views/decidim/proposals/proposals/_endorsements_card_row.html.erb +0 -0
- data/app/views/decidim/proposals/proposals/_proposal_badge.html.erb +0 -3
- data/app/views/decidim/proposals/proposals/compare.html.erb +0 -24
- data/app/views/decidim/proposals/proposals/complete.html.erb +0 -31
- data/config/locales/bn-BD.yml +0 -1
- data/config/locales/bs-BA.yml +0 -100
@@ -5,6 +5,17 @@ require "decidim/core/test/factories"
|
|
5
5
|
require "decidim/participatory_processes/test/factories"
|
6
6
|
require "decidim/meetings/test/factories"
|
7
7
|
|
8
|
+
def generate_state_title(token, skip_injection: false)
|
9
|
+
value = I18n.t(token, scope: "decidim.proposals.answers")
|
10
|
+
Decidim::Faker::Localized.localized do
|
11
|
+
if skip_injection
|
12
|
+
value
|
13
|
+
else
|
14
|
+
"<script>alert(\"proposal_state_title\");</script> #{value}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
8
19
|
FactoryBot.define do
|
9
20
|
factory :proposal_component, parent: :component do
|
10
21
|
transient do
|
@@ -14,6 +25,10 @@ FactoryBot.define do
|
|
14
25
|
manifest_name { :proposals }
|
15
26
|
participatory_space { create(:participatory_process, :with_steps, organization:, skip_injection:) }
|
16
27
|
|
28
|
+
after :create do |proposal_component|
|
29
|
+
Decidim::Proposals.create_default_states!(proposal_component, nil, with_traceability: false)
|
30
|
+
end
|
31
|
+
|
17
32
|
trait :with_endorsements_enabled do
|
18
33
|
step_settings do
|
19
34
|
{
|
@@ -148,10 +163,10 @@ FactoryBot.define do
|
|
148
163
|
end
|
149
164
|
end
|
150
165
|
|
151
|
-
trait :
|
166
|
+
trait :with_can_accumulate_votes_beyond_threshold do
|
152
167
|
settings do
|
153
168
|
{
|
154
|
-
|
169
|
+
can_accumulate_votes_beyond_threshold: true
|
155
170
|
}
|
156
171
|
end
|
157
172
|
end
|
@@ -246,12 +261,45 @@ FactoryBot.define do
|
|
246
261
|
end
|
247
262
|
end
|
248
263
|
|
264
|
+
factory :proposal_state, class: "Decidim::Proposals::ProposalState" do
|
265
|
+
transient do
|
266
|
+
skip_injection { false }
|
267
|
+
end
|
268
|
+
token { :not_answered }
|
269
|
+
title { generate_state_title(:not_answered, skip_injection:) }
|
270
|
+
announcement_title { generate_localized_title(:announcement_title, skip_injection:) }
|
271
|
+
component { build(:proposal_component) }
|
272
|
+
bg_color { Faker::Color.hex_color(:light) }
|
273
|
+
text_color { Faker::Color.hex_color(:dark) }
|
274
|
+
|
275
|
+
trait :evaluating do
|
276
|
+
title { generate_state_title(:evaluating, skip_injection:) }
|
277
|
+
token { :evaluating }
|
278
|
+
end
|
279
|
+
|
280
|
+
trait :accepted do
|
281
|
+
title { generate_state_title(:accepted, skip_injection:) }
|
282
|
+
token { :accepted }
|
283
|
+
end
|
284
|
+
|
285
|
+
trait :rejected do
|
286
|
+
title { generate_state_title(:rejected, skip_injection:) }
|
287
|
+
token { :rejected }
|
288
|
+
end
|
289
|
+
|
290
|
+
trait :withdrawn do
|
291
|
+
title { generate_state_title(:withdrawn, skip_injection:) }
|
292
|
+
token { :withdrawn }
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
249
296
|
factory :proposal, class: "Decidim::Proposals::Proposal" do
|
250
297
|
transient do
|
251
298
|
users { nil }
|
252
299
|
# user_groups correspondence to users is by sorting order
|
253
300
|
user_groups { [] }
|
254
301
|
skip_injection { false }
|
302
|
+
state { :not_answered }
|
255
303
|
end
|
256
304
|
|
257
305
|
title { generate_localized_title(:proposal_title, skip_injection:) }
|
@@ -266,6 +314,14 @@ FactoryBot.define do
|
|
266
314
|
execution_period { generate_localized_title(:proposal_execution_period, skip_injection:) }
|
267
315
|
|
268
316
|
after(:build) do |proposal, evaluator|
|
317
|
+
if proposal.component
|
318
|
+
existing_states = Decidim::Proposals::ProposalState.where(component: proposal.component)
|
319
|
+
|
320
|
+
Decidim::Proposals.create_default_states!(proposal.component, nil, with_traceability: false) unless existing_states.any?
|
321
|
+
end
|
322
|
+
|
323
|
+
proposal.assign_state(evaluator.state)
|
324
|
+
|
269
325
|
proposal.title = if evaluator.title.is_a?(String)
|
270
326
|
{ proposal.try(:organization).try(:default_locale) || "en" => evaluator.title }
|
271
327
|
else
|
@@ -300,7 +356,7 @@ FactoryBot.define do
|
|
300
356
|
trait :participant_author do
|
301
357
|
after :build do |proposal, evaluator|
|
302
358
|
proposal.coauthorships.clear
|
303
|
-
user = build(:user,
|
359
|
+
user = build(:user, organization: proposal.component.participatory_space.organization, skip_injection: evaluator.skip_injection)
|
304
360
|
proposal.coauthorships.build(author: user)
|
305
361
|
end
|
306
362
|
end
|
@@ -324,42 +380,42 @@ FactoryBot.define do
|
|
324
380
|
trait :official_meeting do
|
325
381
|
after :build do |proposal, evaluator|
|
326
382
|
proposal.coauthorships.clear
|
327
|
-
component = build(:meeting_component,
|
328
|
-
proposal.coauthorships.build(author: build(:meeting,
|
383
|
+
component = build(:meeting_component, participatory_space: proposal.component.participatory_space, skip_injection: evaluator.skip_injection)
|
384
|
+
proposal.coauthorships.build(author: build(:meeting, component:, skip_injection: evaluator.skip_injection))
|
329
385
|
end
|
330
386
|
end
|
331
387
|
|
332
388
|
trait :evaluating do
|
333
|
-
state {
|
389
|
+
state { :evaluating }
|
334
390
|
answered_at { Time.current }
|
335
391
|
state_published_at { Time.current }
|
336
392
|
end
|
337
393
|
|
338
394
|
trait :accepted do
|
339
|
-
state {
|
395
|
+
state { :accepted }
|
340
396
|
answered_at { Time.current }
|
341
397
|
state_published_at { Time.current }
|
342
398
|
end
|
343
399
|
|
344
400
|
trait :rejected do
|
345
|
-
state {
|
401
|
+
state { :rejected }
|
346
402
|
answered_at { Time.current }
|
347
403
|
state_published_at { Time.current }
|
348
404
|
end
|
349
405
|
|
350
406
|
trait :withdrawn do
|
351
|
-
|
407
|
+
withdrawn_at { Time.current }
|
352
408
|
end
|
353
409
|
|
354
410
|
trait :accepted_not_published do
|
355
|
-
state {
|
411
|
+
state { :accepted }
|
356
412
|
answered_at { Time.current }
|
357
413
|
state_published_at { nil }
|
358
414
|
answer { generate_localized_title }
|
359
415
|
end
|
360
416
|
|
361
417
|
trait :with_answer do
|
362
|
-
state {
|
418
|
+
state { :accepted }
|
363
419
|
answer { generate_localized_title }
|
364
420
|
answered_at { Time.current }
|
365
421
|
state_published_at { Time.current }
|
@@ -388,8 +444,7 @@ FactoryBot.define do
|
|
388
444
|
trait :with_endorsements do
|
389
445
|
after :create do |proposal, evaluator|
|
390
446
|
5.times.collect do
|
391
|
-
create(:endorsement, resource: proposal,
|
392
|
-
author: build(:user, :confirmed, organization: proposal.participatory_space.organization, skip_injection: evaluator.skip_injection),
|
447
|
+
create(:endorsement, resource: proposal, author: build(:user, organization: proposal.participatory_space.organization, skip_injection: evaluator.skip_injection),
|
393
448
|
skip_injection: evaluator.skip_injection)
|
394
449
|
end
|
395
450
|
end
|
@@ -434,7 +489,7 @@ FactoryBot.define do
|
|
434
489
|
end
|
435
490
|
amendable { build(:proposal, skip_injection:) }
|
436
491
|
emendation { build(:proposal, component: amendable.component, skip_injection:) }
|
437
|
-
amender { build(:user,
|
492
|
+
amender { build(:user, organization: amendable.component.participatory_space.organization, skip_injection:) }
|
438
493
|
state { Decidim::Amendment::STATES.keys.sample }
|
439
494
|
end
|
440
495
|
|
data/lib/decidim/proposals.rb
CHANGED
@@ -22,18 +22,6 @@ module Decidim
|
|
22
22
|
|
23
23
|
include ActiveSupport::Configurable
|
24
24
|
|
25
|
-
# Public Setting that defines the similarity minimum value to consider two
|
26
|
-
# proposals similar. Defaults to 0.25.
|
27
|
-
config_accessor :similarity_threshold do
|
28
|
-
0.25
|
29
|
-
end
|
30
|
-
|
31
|
-
# Public Setting that defines how many similar proposals will be shown.
|
32
|
-
# Defaults to 10.
|
33
|
-
config_accessor :similarity_limit do
|
34
|
-
10
|
35
|
-
end
|
36
|
-
|
37
25
|
# Public Setting that defines how many proposals will be shown in the
|
38
26
|
# participatory_space_highlighted_elements view hook
|
39
27
|
config_accessor :participatory_space_highlighted_proposals_limit do
|
@@ -45,6 +33,90 @@ module Decidim
|
|
45
33
|
config_accessor :process_group_highlighted_proposals_limit do
|
46
34
|
3
|
47
35
|
end
|
36
|
+
|
37
|
+
def self.proposal_states_colors
|
38
|
+
{
|
39
|
+
gray: {
|
40
|
+
background: "#F6F8FA",
|
41
|
+
foreground: "#4B5058",
|
42
|
+
name: I18n.t("gray", scope: "activemodel.attributes.proposal_state.colors")
|
43
|
+
},
|
44
|
+
blue: {
|
45
|
+
background: "#EBF9FF",
|
46
|
+
foreground: "#0851A6",
|
47
|
+
name: I18n.t("blue", scope: "activemodel.attributes.proposal_state.colors")
|
48
|
+
},
|
49
|
+
green: {
|
50
|
+
background: "#E3FCE9",
|
51
|
+
foreground: "#15602C",
|
52
|
+
name: I18n.t("green", scope: "activemodel.attributes.proposal_state.colors")
|
53
|
+
},
|
54
|
+
yellow: {
|
55
|
+
background: "#FFFCE5",
|
56
|
+
foreground: "#9A6700",
|
57
|
+
name: I18n.t("yellow", scope: "activemodel.attributes.proposal_state.colors")
|
58
|
+
},
|
59
|
+
orange: {
|
60
|
+
background: "#FFF1E5",
|
61
|
+
foreground: "#BC4C00",
|
62
|
+
name: I18n.t("orange", scope: "activemodel.attributes.proposal_state.colors")
|
63
|
+
},
|
64
|
+
red: {
|
65
|
+
background: "#FFEBE9",
|
66
|
+
foreground: "#D1242F",
|
67
|
+
name: I18n.t("red", scope: "activemodel.attributes.proposal_state.colors")
|
68
|
+
},
|
69
|
+
pink: {
|
70
|
+
background: "#FFEFF7",
|
71
|
+
foreground: "#BF3989",
|
72
|
+
name: I18n.t("pink", scope: "activemodel.attributes.proposal_state.colors")
|
73
|
+
},
|
74
|
+
purple: {
|
75
|
+
background: "#FBEFFF",
|
76
|
+
foreground: "#8250DF",
|
77
|
+
name: I18n.t("purple", scope: "activemodel.attributes.proposal_state.colors")
|
78
|
+
}
|
79
|
+
}
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.create_default_states!(component, admin_user, with_traceability: true)
|
83
|
+
colors = Decidim::Proposals.proposal_states_colors
|
84
|
+
|
85
|
+
locale = Decidim.default_locale
|
86
|
+
default_states = {
|
87
|
+
evaluating: {
|
88
|
+
token: :evaluating,
|
89
|
+
bg_color: colors[:orange][:background],
|
90
|
+
text_color: colors[:orange][:foreground],
|
91
|
+
announcement_title: { locale => I18n.with_locale(locale) { I18n.t("proposal_in_evaluation_reason", scope: "decidim.proposals.proposals.show") } },
|
92
|
+
title: { locale => I18n.with_locale(locale) { I18n.t(:evaluating, scope: "decidim.proposals.answers") } }
|
93
|
+
},
|
94
|
+
accepted: {
|
95
|
+
token: :accepted,
|
96
|
+
bg_color: colors[:green][:background],
|
97
|
+
text_color: colors[:green][:foreground],
|
98
|
+
announcement_title: { locale => I18n.with_locale(locale) { I18n.t("proposal_accepted_reason", scope: "decidim.proposals.proposals.show") } },
|
99
|
+
title: { locale => I18n.with_locale(locale) { I18n.t(:accepted, scope: "decidim.proposals.answers") } }
|
100
|
+
},
|
101
|
+
rejected: {
|
102
|
+
token: :rejected,
|
103
|
+
bg_color: colors[:red][:background],
|
104
|
+
text_color: colors[:red][:foreground],
|
105
|
+
announcement_title: { locale => I18n.with_locale(locale) { I18n.t("proposal_rejected_reason", scope: "decidim.proposals.proposals.show") } },
|
106
|
+
title: { locale => I18n.with_locale(locale) { I18n.t(:rejected, scope: "decidim.proposals.answers") } }
|
107
|
+
}
|
108
|
+
}
|
109
|
+
default_states.each_key do |key|
|
110
|
+
default_states[key][:object] = if with_traceability
|
111
|
+
Decidim.traceability.create(
|
112
|
+
Decidim::Proposals::ProposalState, admin_user, component:, **default_states[key]
|
113
|
+
)
|
114
|
+
else
|
115
|
+
Decidim::Proposals::ProposalState.create(component:, **default_states[key])
|
116
|
+
end
|
117
|
+
end
|
118
|
+
default_states
|
119
|
+
end
|
48
120
|
end
|
49
121
|
|
50
122
|
module ContentParsers
|
@@ -2,19 +2,6 @@
|
|
2
2
|
|
3
3
|
namespace :decidim_proposals do
|
4
4
|
namespace :upgrade do
|
5
|
-
desc "Assigns category to emendations based on amendable category"
|
6
|
-
task set_categories: :environment do
|
7
|
-
Decidim::Proposals::Proposal.includes(:category).find_each do |proposal|
|
8
|
-
next if proposal.category.blank?
|
9
|
-
next unless proposal.amendable?
|
10
|
-
|
11
|
-
proposal.emendations.each do |emendation|
|
12
|
-
emendation.category = proposal.category
|
13
|
-
emendation.save(validate: false)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
5
|
desc "Removes all proposal valuator records of which the role assignment does not exists"
|
19
6
|
task remove_valuator_orphan_records: :environment do
|
20
7
|
if Decidim.module_installed?("participatory_processes")
|