decidim-proposals 0.28.6 → 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 +12 -0
- 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/controllers/decidim/proposals/versions_controller.rb +1 -1
- 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/collaborative_draft.rb +3 -2
- data/app/models/decidim/proposals/proposal.rb +88 -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 +7 -6
- 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 +2 -9
- 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 +12 -121
- data/config/locales/bg.yml +121 -111
- data/config/locales/ca.yml +91 -93
- data/config/locales/cs.yml +67 -134
- data/config/locales/de.yml +131 -133
- data/config/locales/el.yml +11 -121
- data/config/locales/en.yml +112 -114
- data/config/locales/es-MX.yml +90 -92
- data/config/locales/es-PY.yml +93 -95
- data/config/locales/es.yml +91 -93
- data/config/locales/eu.yml +231 -240
- data/config/locales/fi-plain.yml +92 -94
- data/config/locales/fi.yml +141 -143
- data/config/locales/fr-CA.yml +95 -95
- data/config/locales/fr.yml +86 -86
- data/config/locales/ga-IE.yml +2 -27
- data/config/locales/gl.yml +11 -107
- data/config/locales/he-IL.yml +0 -17
- data/config/locales/hu.yml +23 -91
- data/config/locales/id-ID.yml +7 -107
- data/config/locales/is-IS.yml +8 -36
- data/config/locales/it.yml +17 -131
- data/config/locales/ja.yml +119 -121
- data/config/locales/lb.yml +1 -0
- data/config/locales/lt.yml +10 -123
- data/config/locales/lv.yml +6 -101
- data/config/locales/nl.yml +15 -104
- data/config/locales/no.yml +9 -108
- data/config/locales/pl.yml +114 -115
- data/config/locales/pt-BR.yml +13 -84
- data/config/locales/pt.yml +11 -109
- data/config/locales/ro-RO.yml +17 -120
- data/config/locales/ru.yml +9 -56
- data/config/locales/sk.yml +7 -109
- data/config/locales/sl.yml +4 -0
- data/config/locales/sr-CS.yml +2 -0
- data/config/locales/sv.yml +143 -342
- data/config/locales/tr-TR.yml +66 -108
- data/config/locales/uk.yml +11 -58
- data/config/locales/zh-CN.yml +7 -100
- data/config/locales/zh-TW.yml +11 -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 -41
- 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 -98
- data/config/locales/ca-IT.yml +0 -931
@@ -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")
|