decidim-proposals 0.28.3 → 0.29.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -18
  3. data/app/cells/decidim/proposals/cost_report_cell.rb +0 -3
  4. data/app/cells/decidim/proposals/highlighted_proposals_for_component_cell.rb +1 -1
  5. data/app/cells/decidim/proposals/participatory_text_proposal/buttons.erb +1 -1
  6. data/app/cells/decidim/proposals/participatory_text_proposal_cell.rb +2 -3
  7. data/app/cells/decidim/proposals/proposal_cell.rb +2 -0
  8. data/app/cells/decidim/proposals/proposal_g/show.erb +23 -0
  9. data/app/cells/decidim/proposals/proposal_g_cell.rb +48 -0
  10. data/app/cells/decidim/proposals/proposal_l_cell.rb +1 -3
  11. data/app/cells/decidim/proposals/proposal_metadata_cell.rb +23 -15
  12. data/app/commands/decidim/proposals/admin/answer_proposal.rb +2 -1
  13. data/app/commands/decidim/proposals/admin/assign_proposals_to_valuator.rb +7 -5
  14. data/app/commands/decidim/proposals/admin/create_proposal.rb +2 -2
  15. data/app/commands/decidim/proposals/admin/create_proposal_state.rb +15 -0
  16. data/app/commands/decidim/proposals/admin/destroy_proposal_state.rb +10 -0
  17. data/app/commands/decidim/proposals/admin/import_proposals.rb +10 -2
  18. data/app/commands/decidim/proposals/admin/notify_proposal_answer.rb +4 -21
  19. data/app/commands/decidim/proposals/admin/unassign_proposals_from_valuator.rb +6 -4
  20. data/app/commands/decidim/proposals/admin/update_proposal_state.rb +13 -0
  21. data/app/commands/decidim/proposals/create_proposal.rb +21 -2
  22. data/app/commands/decidim/proposals/update_proposal.rb +2 -2
  23. data/app/commands/decidim/proposals/vote_proposal.rb +1 -1
  24. data/app/commands/decidim/proposals/withdraw_proposal.rb +3 -7
  25. data/app/controllers/concerns/decidim/proposals/admin/filterable.rb +10 -22
  26. data/app/controllers/decidim/proposals/admin/proposal_states_controller.rb +86 -0
  27. data/app/controllers/decidim/proposals/admin/proposals_controller.rb +4 -0
  28. data/app/controllers/decidim/proposals/admin/valuation_assignments_controller.rb +8 -11
  29. data/app/controllers/decidim/proposals/proposals_controller.rb +30 -35
  30. data/app/events/decidim/proposals/proposal_state_changed_event.rb +37 -0
  31. data/app/forms/decidim/proposals/admin/proposal_answer_form.rb +5 -1
  32. data/app/forms/decidim/proposals/admin/proposal_state_form.rb +22 -0
  33. data/app/forms/decidim/proposals/admin/proposals_fork_form.rb +1 -1
  34. data/app/forms/decidim/proposals/admin/proposals_import_form.rb +1 -1
  35. data/app/forms/decidim/proposals/admin/valuation_assignment_form.rb +12 -14
  36. data/app/forms/decidim/proposals/proposal_form.rb +25 -4
  37. data/app/forms/decidim/proposals/reject_access_to_collaborative_draft_form.rb +1 -1
  38. data/app/forms/decidim/proposals/request_access_to_collaborative_draft_form.rb +1 -1
  39. data/app/helpers/decidim/proposals/admin/proposal_bulk_actions_helper.rb +7 -17
  40. data/app/helpers/decidim/proposals/admin/proposals_helper.rb +13 -89
  41. data/app/helpers/decidim/proposals/application_helper.rb +16 -10
  42. data/app/helpers/decidim/proposals/proposal_cells_helper.rb +6 -2
  43. data/app/helpers/decidim/proposals/proposal_votes_helper.rb +3 -3
  44. data/app/helpers/decidim/proposals/proposal_wizard_helper.rb +5 -8
  45. data/app/helpers/decidim/proposals/proposals_helper.rb +18 -24
  46. data/app/models/decidim/proposals/proposal.rb +78 -28
  47. data/app/models/decidim/proposals/proposal_state.rb +58 -0
  48. data/app/packs/documents/decidim/proposals/participatory_texts/participatory_text.md +1 -3
  49. data/app/packs/images/decidim/proposals/proposal-placeholder-card-g.svg +15 -0
  50. data/app/packs/src/decidim/proposals/add_proposal.js +2 -0
  51. data/app/packs/src/decidim/proposals/admin/proposals.js +43 -8
  52. data/app/packs/stylesheets/decidim/proposals/proposals.scss +39 -1
  53. data/app/permissions/decidim/proposals/admin/permissions.rb +16 -4
  54. data/app/presenters/decidim/proposals/admin_log/proposal_state_presenter.rb +21 -0
  55. data/app/presenters/decidim/proposals/proposal_presenter.rb +12 -3
  56. data/app/queries/decidim/proposals/metrics/endorsements_metric_manage.rb +1 -1
  57. data/app/queries/decidim/proposals/metrics/proposal_followers_metric_measure.rb +1 -1
  58. data/app/queries/decidim/proposals/metrics/proposal_participants_metric_measure.rb +4 -4
  59. data/app/queries/decidim/proposals/metrics/proposals_metric_manage.rb +1 -1
  60. data/app/queries/decidim/proposals/metrics/votes_metric_manage.rb +1 -1
  61. data/app/services/decidim/proposals/diff_renderer.rb +1 -1
  62. data/app/views/decidim/proposals/admin/imports/_proposals_fields.html.erb +1 -1
  63. data/app/views/decidim/proposals/admin/participatory_texts/index.html.erb +3 -2
  64. data/app/views/decidim/proposals/admin/proposal_answers/_form.html.erb +2 -2
  65. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_notes.html.erb +3 -3
  66. data/app/views/decidim/proposals/admin/proposal_states/_form.html.erb +67 -0
  67. data/app/views/decidim/proposals/admin/proposal_states/edit.html.erb +18 -0
  68. data/app/views/decidim/proposals/admin/proposal_states/index.html.erb +50 -0
  69. data/app/views/decidim/proposals/admin/proposal_states/new.html.erb +18 -0
  70. data/app/views/decidim/proposals/admin/proposals/_bulk-actions.html.erb +6 -12
  71. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +6 -6
  72. data/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb +2 -2
  73. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_assign_to_valuator.html.erb +11 -7
  74. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_dropdown.html.erb +7 -5
  75. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_merge.html.erb +2 -2
  76. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_publish_answers.html.erb +2 -2
  77. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_recategorize.html.erb +2 -2
  78. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_scope-change.html.erb +2 -2
  79. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_split.html.erb +2 -2
  80. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_unassign_from_valuator.html.erb +11 -7
  81. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_valuators_picker.html.erb +12 -0
  82. data/app/views/decidim/proposals/admin/proposals/index.html.erb +9 -5
  83. data/app/views/decidim/proposals/admin/proposals/publish_answers.js.erb +1 -1
  84. data/app/views/decidim/proposals/admin/proposals/show.html.erb +3 -2
  85. data/app/views/decidim/proposals/admin/proposals/update_attribute.js.erb +3 -3
  86. data/app/views/decidim/proposals/proposals/_edit_form_fields.html.erb +12 -5
  87. data/app/views/decidim/proposals/proposals/_proposal.html.erb +1 -1
  88. data/app/views/decidim/proposals/proposals/_proposal_aside.html.erb +1 -1
  89. data/app/views/decidim/proposals/proposals/_proposals.html.erb +9 -3
  90. data/app/views/decidim/proposals/proposals/_vote_button.html.erb +1 -1
  91. data/app/views/decidim/proposals/proposals/_voting_rules.html.erb +3 -3
  92. data/app/views/decidim/proposals/proposals/_wizard_header.html.erb +0 -1
  93. data/app/views/decidim/proposals/proposals/new.html.erb +2 -7
  94. data/app/views/decidim/proposals/proposals/participatory_texts/_proposal_vote_button.html.erb +4 -4
  95. data/app/views/decidim/proposals/proposals/participatory_texts/_proposal_votes_count.html.erb +8 -8
  96. data/app/views/decidim/proposals/proposals/preview.html.erb +1 -1
  97. data/app/views/decidim/proposals/proposals/show.html.erb +1 -1
  98. data/config/locales/ar.yml +6 -114
  99. data/config/locales/bg.yml +110 -106
  100. data/config/locales/ca.yml +81 -78
  101. data/config/locales/cs.yml +60 -122
  102. data/config/locales/de.yml +122 -119
  103. data/config/locales/el.yml +3 -118
  104. data/config/locales/en.yml +110 -107
  105. data/config/locales/es-MX.yml +82 -79
  106. data/config/locales/es-PY.yml +85 -82
  107. data/config/locales/es.yml +81 -78
  108. data/config/locales/eu.yml +103 -107
  109. data/config/locales/fi-plain.yml +87 -84
  110. data/config/locales/fi.yml +118 -115
  111. data/config/locales/fr-CA.yml +86 -83
  112. data/config/locales/fr.yml +78 -75
  113. data/config/locales/ga-IE.yml +1 -27
  114. data/config/locales/gl.yml +5 -104
  115. data/config/locales/he-IL.yml +0 -13
  116. data/config/locales/hu.yml +15 -88
  117. data/config/locales/id-ID.yml +2 -97
  118. data/config/locales/is-IS.yml +1 -33
  119. data/config/locales/it.yml +6 -96
  120. data/config/locales/ja.yml +110 -107
  121. data/config/locales/lb.yml +1 -0
  122. data/config/locales/lt.yml +3 -122
  123. data/config/locales/lv.yml +2 -96
  124. data/config/locales/nl.yml +6 -95
  125. data/config/locales/no.yml +3 -107
  126. data/config/locales/pl.yml +106 -113
  127. data/config/locales/pt-BR.yml +5 -81
  128. data/config/locales/pt.yml +5 -107
  129. data/config/locales/ro-RO.yml +6 -110
  130. data/config/locales/ru.yml +2 -53
  131. data/config/locales/sk.yml +2 -103
  132. data/config/locales/sv.yml +66 -206
  133. data/config/locales/tr-TR.yml +57 -103
  134. data/config/locales/uk.yml +3 -54
  135. data/config/locales/zh-CN.yml +2 -99
  136. data/config/locales/zh-TW.yml +3 -116
  137. data/db/migrate/20240110203500_add_withdrawn_at_field_to_proposals.rb +27 -0
  138. data/db/migrate/20240110203501_create_decidim_proposals_proposal_state.rb +14 -0
  139. data/db/migrate/20240110203502_add_state_id_to_decidim_proposals_proposals.rb +13 -0
  140. data/db/migrate/20240110203503_remove_state_from_decidim_proposals_proposals.rb +11 -0
  141. data/db/migrate/20240110203504_create_default_proposal_states.rb +31 -0
  142. data/db/migrate/20240209092404_change_color_fields_on_proposals_states.rb +54 -0
  143. data/decidim-proposals.gemspec +2 -2
  144. data/lib/decidim/api/proposal_type.rb +4 -0
  145. data/lib/decidim/proposals/admin_engine.rb +8 -0
  146. data/lib/decidim/proposals/admin_filter.rb +37 -0
  147. data/lib/decidim/proposals/component.rb +8 -5
  148. data/lib/decidim/proposals/engine.rb +1 -15
  149. data/lib/decidim/proposals/import/proposal_answer_creator.rb +6 -6
  150. data/lib/decidim/proposals/import/proposal_creator.rb +1 -1
  151. data/lib/decidim/proposals/markdown_to_proposals.rb +2 -8
  152. data/lib/decidim/proposals/proposal_serializer.rb +5 -3
  153. data/lib/decidim/proposals/seeds.rb +60 -51
  154. data/lib/decidim/proposals/test/factories.rb +64 -8
  155. data/lib/decidim/proposals/version.rb +1 -1
  156. data/lib/decidim/proposals.rb +84 -12
  157. data/lib/tasks/proposals/upgrade/decidim_proposals_upgrade_tasks.rake +32 -0
  158. metadata +50 -36
  159. data/app/events/decidim/proposals/accepted_proposal_event.rb +0 -17
  160. data/app/events/decidim/proposals/evaluating_proposal_event.rb +0 -11
  161. data/app/events/decidim/proposals/rejected_proposal_event.rb +0 -17
  162. data/app/forms/decidim/proposals/proposal_wizard_create_step_form.rb +0 -44
  163. data/app/queries/decidim/proposals/similar_proposals.rb +0 -67
  164. data/app/views/decidim/proposals/proposals/_endorsements_card_row.html.erb +0 -0
  165. data/app/views/decidim/proposals/proposals/_proposal_badge.html.erb +0 -3
  166. data/app/views/decidim/proposals/proposals/compare.html.erb +0 -24
  167. data/app/views/decidim/proposals/proposals/complete.html.erb +0 -31
  168. data/lib/tasks/proposals/upgrade/decdim_proposal_upgrade_tasks.rake +0 -34
@@ -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
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :decidim_proposals do
4
+ namespace :upgrade do
5
+ desc "Removes all proposal valuator records of which the role assignment does not exists"
6
+ task remove_valuator_orphan_records: :environment do
7
+ if Decidim.module_installed?("participatory_processes")
8
+ Decidim::Proposals::ValuationAssignment
9
+ .where(valuator_role_type: "Decidim::ParticipatoryProcessUserRole")
10
+ .where
11
+ .not(valuator_role_id: Decidim::ParticipatoryProcessUserRole.pluck(:id))
12
+ .destroy_all
13
+ end
14
+
15
+ if Decidim.module_installed?("assemblies")
16
+ Decidim::Proposals::ValuationAssignment
17
+ .where(valuator_role_type: "Decidim::AssemblyUserRole")
18
+ .where
19
+ .not(valuator_role_id: Decidim::AssemblyUserRole.pluck(:id))
20
+ .destroy_all
21
+ end
22
+
23
+ if Decidim.module_installed?("conferences")
24
+ Decidim::Proposals::ValuationAssignment
25
+ .where(valuator_role_type: "Decidim::ConferenceUserRole")
26
+ .where
27
+ .not(valuator_role_id: Decidim::ConferenceUserRole.pluck(:id))
28
+ .destroy_all
29
+ end
30
+ end
31
+ end
32
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-proposals
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.3
4
+ version: 0.29.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-09-10 00:00:00.000000000 Z
13
+ date: 2024-07-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: decidim-comments
@@ -18,42 +18,42 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.28.3
21
+ version: 0.29.0.rc1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 0.28.3
28
+ version: 0.29.0.rc1
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: decidim-core
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.28.3
35
+ version: 0.29.0.rc1
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 0.28.3
42
+ version: 0.29.0.rc1
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: doc2text
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: 0.4.6
49
+ version: 0.4.7
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: 0.4.6
56
+ version: 0.4.7
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: redcarpet
59
59
  requirement: !ruby/object:Gem::Requirement
@@ -80,98 +80,98 @@ dependencies:
80
80
  requirements:
81
81
  - - '='
82
82
  - !ruby/object:Gem::Version
83
- version: 0.28.3
83
+ version: 0.29.0.rc1
84
84
  type: :development
85
85
  prerelease: false
86
86
  version_requirements: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - '='
89
89
  - !ruby/object:Gem::Version
90
- version: 0.28.3
90
+ version: 0.29.0.rc1
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: decidim-assemblies
93
93
  requirement: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - '='
96
96
  - !ruby/object:Gem::Version
97
- version: 0.28.3
97
+ version: 0.29.0.rc1
98
98
  type: :development
99
99
  prerelease: false
100
100
  version_requirements: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - '='
103
103
  - !ruby/object:Gem::Version
104
- version: 0.28.3
104
+ version: 0.29.0.rc1
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: decidim-budgets
107
107
  requirement: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - '='
110
110
  - !ruby/object:Gem::Version
111
- version: 0.28.3
111
+ version: 0.29.0.rc1
112
112
  type: :development
113
113
  prerelease: false
114
114
  version_requirements: !ruby/object:Gem::Requirement
115
115
  requirements:
116
116
  - - '='
117
117
  - !ruby/object:Gem::Version
118
- version: 0.28.3
118
+ version: 0.29.0.rc1
119
119
  - !ruby/object:Gem::Dependency
120
120
  name: decidim-conference
121
121
  requirement: !ruby/object:Gem::Requirement
122
122
  requirements:
123
123
  - - '='
124
124
  - !ruby/object:Gem::Version
125
- version: 0.28.3
125
+ version: 0.29.0.rc1
126
126
  type: :development
127
127
  prerelease: false
128
128
  version_requirements: !ruby/object:Gem::Requirement
129
129
  requirements:
130
130
  - - '='
131
131
  - !ruby/object:Gem::Version
132
- version: 0.28.3
132
+ version: 0.29.0.rc1
133
133
  - !ruby/object:Gem::Dependency
134
134
  name: decidim-dev
135
135
  requirement: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - '='
138
138
  - !ruby/object:Gem::Version
139
- version: 0.28.3
139
+ version: 0.29.0.rc1
140
140
  type: :development
141
141
  prerelease: false
142
142
  version_requirements: !ruby/object:Gem::Requirement
143
143
  requirements:
144
144
  - - '='
145
145
  - !ruby/object:Gem::Version
146
- version: 0.28.3
146
+ version: 0.29.0.rc1
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: decidim-meetings
149
149
  requirement: !ruby/object:Gem::Requirement
150
150
  requirements:
151
151
  - - '='
152
152
  - !ruby/object:Gem::Version
153
- version: 0.28.3
153
+ version: 0.29.0.rc1
154
154
  type: :development
155
155
  prerelease: false
156
156
  version_requirements: !ruby/object:Gem::Requirement
157
157
  requirements:
158
158
  - - '='
159
159
  - !ruby/object:Gem::Version
160
- version: 0.28.3
160
+ version: 0.29.0.rc1
161
161
  - !ruby/object:Gem::Dependency
162
162
  name: decidim-participatory_processes
163
163
  requirement: !ruby/object:Gem::Requirement
164
164
  requirements:
165
165
  - - '='
166
166
  - !ruby/object:Gem::Version
167
- version: 0.28.3
167
+ version: 0.29.0.rc1
168
168
  type: :development
169
169
  prerelease: false
170
170
  version_requirements: !ruby/object:Gem::Requirement
171
171
  requirements:
172
172
  - - '='
173
173
  - !ruby/object:Gem::Version
174
- version: 0.28.3
174
+ version: 0.29.0.rc1
175
175
  description: A proposals component for decidim's participatory spaces.
176
176
  email:
177
177
  - josepjaume@gmail.com
@@ -204,6 +204,8 @@ files:
204
204
  - app/cells/decidim/proposals/participatory_text_proposal_cell.rb
205
205
  - app/cells/decidim/proposals/proposal_activity_cell.rb
206
206
  - app/cells/decidim/proposals/proposal_cell.rb
207
+ - app/cells/decidim/proposals/proposal_g/show.erb
208
+ - app/cells/decidim/proposals/proposal_g_cell.rb
207
209
  - app/cells/decidim/proposals/proposal_l_cell.rb
208
210
  - app/cells/decidim/proposals/proposal_link_to_collaborative_draft_cell.rb
209
211
  - app/cells/decidim/proposals/proposal_link_to_rejected_emendation_cell.rb
@@ -220,6 +222,8 @@ files:
220
222
  - app/commands/decidim/proposals/admin/assign_proposals_to_valuator.rb
221
223
  - app/commands/decidim/proposals/admin/create_proposal.rb
222
224
  - app/commands/decidim/proposals/admin/create_proposal_note.rb
225
+ - app/commands/decidim/proposals/admin/create_proposal_state.rb
226
+ - app/commands/decidim/proposals/admin/destroy_proposal_state.rb
223
227
  - app/commands/decidim/proposals/admin/discard_participatory_text.rb
224
228
  - app/commands/decidim/proposals/admin/import_participatory_text.rb
225
229
  - app/commands/decidim/proposals/admin/import_proposals.rb
@@ -233,6 +237,7 @@ files:
233
237
  - app/commands/decidim/proposals/admin/update_proposal.rb
234
238
  - app/commands/decidim/proposals/admin/update_proposal_category.rb
235
239
  - app/commands/decidim/proposals/admin/update_proposal_scope.rb
240
+ - app/commands/decidim/proposals/admin/update_proposal_state.rb
236
241
  - app/commands/decidim/proposals/create_collaborative_draft.rb
237
242
  - app/commands/decidim/proposals/create_proposal.rb
238
243
  - app/commands/decidim/proposals/destroy_proposal.rb
@@ -255,6 +260,7 @@ files:
255
260
  - app/controllers/decidim/proposals/admin/participatory_texts_controller.rb
256
261
  - app/controllers/decidim/proposals/admin/proposal_answers_controller.rb
257
262
  - app/controllers/decidim/proposals/admin/proposal_notes_controller.rb
263
+ - app/controllers/decidim/proposals/admin/proposal_states_controller.rb
258
264
  - app/controllers/decidim/proposals/admin/proposals_controller.rb
259
265
  - app/controllers/decidim/proposals/admin/proposals_imports_controller.rb
260
266
  - app/controllers/decidim/proposals/admin/proposals_merges_controller.rb
@@ -266,7 +272,6 @@ files:
266
272
  - app/controllers/decidim/proposals/proposal_votes_controller.rb
267
273
  - app/controllers/decidim/proposals/proposals_controller.rb
268
274
  - app/controllers/decidim/proposals/versions_controller.rb
269
- - app/events/decidim/proposals/accepted_proposal_event.rb
270
275
  - app/events/decidim/proposals/admin/proposal_note_created_event.rb
271
276
  - app/events/decidim/proposals/admin/update_proposal_category_event.rb
272
277
  - app/events/decidim/proposals/admin/update_proposal_scope_event.rb
@@ -279,11 +284,10 @@ files:
279
284
  - app/events/decidim/proposals/collaborative_draft_withdrawn_event.rb
280
285
  - app/events/decidim/proposals/creation_enabled_event.rb
281
286
  - app/events/decidim/proposals/endorsing_enabled_event.rb
282
- - app/events/decidim/proposals/evaluating_proposal_event.rb
283
287
  - app/events/decidim/proposals/proposal_endorsed_event.rb
284
288
  - app/events/decidim/proposals/proposal_mentioned_event.rb
289
+ - app/events/decidim/proposals/proposal_state_changed_event.rb
285
290
  - app/events/decidim/proposals/publish_proposal_event.rb
286
- - app/events/decidim/proposals/rejected_proposal_event.rb
287
291
  - app/events/decidim/proposals/voting_enabled_event.rb
288
292
  - app/forms/decidim/proposals/accept_access_to_collaborative_draft_form.rb
289
293
  - app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
@@ -294,6 +298,7 @@ files:
294
298
  - app/forms/decidim/proposals/admin/proposal_base_form.rb
295
299
  - app/forms/decidim/proposals/admin/proposal_form.rb
296
300
  - app/forms/decidim/proposals/admin/proposal_note_form.rb
301
+ - app/forms/decidim/proposals/admin/proposal_state_form.rb
297
302
  - app/forms/decidim/proposals/admin/proposals_file_import_form.rb
298
303
  - app/forms/decidim/proposals/admin/proposals_fork_form.rb
299
304
  - app/forms/decidim/proposals/admin/proposals_import_form.rb
@@ -302,7 +307,6 @@ files:
302
307
  - app/forms/decidim/proposals/admin/valuation_assignment_form.rb
303
308
  - app/forms/decidim/proposals/collaborative_draft_form.rb
304
309
  - app/forms/decidim/proposals/proposal_form.rb
305
- - app/forms/decidim/proposals/proposal_wizard_create_step_form.rb
306
310
  - app/forms/decidim/proposals/reject_access_to_collaborative_draft_form.rb
307
311
  - app/forms/decidim/proposals/request_access_to_collaborative_draft_form.rb
308
312
  - app/helpers/decidim/proposals/admin/proposal_bulk_actions_helper.rb
@@ -327,6 +331,7 @@ files:
327
331
  - app/models/decidim/proposals/participatory_text.rb
328
332
  - app/models/decidim/proposals/proposal.rb
329
333
  - app/models/decidim/proposals/proposal_note.rb
334
+ - app/models/decidim/proposals/proposal_state.rb
330
335
  - app/models/decidim/proposals/proposal_vote.rb
331
336
  - app/models/decidim/proposals/valuation_assignment.rb
332
337
  - app/packs/documents/decidim/proposals/participatory_texts/participatory_text.md
@@ -338,6 +343,7 @@ files:
338
343
  - app/packs/images/decidim/gamification/badges/decidim_gamification_badges_proposal_votes.svg
339
344
  - app/packs/images/decidim/gamification/badges/decidim_gamification_badges_proposals.svg
340
345
  - app/packs/images/decidim/proposals/decidim_proposals.svg
346
+ - app/packs/images/decidim/proposals/proposal-placeholder-card-g.svg
341
347
  - app/packs/src/decidim/proposals/add_proposal.js
342
348
  - app/packs/src/decidim/proposals/admin/proposals.js
343
349
  - app/packs/src/decidim/proposals/admin/proposals_form.js
@@ -349,6 +355,7 @@ files:
349
355
  - app/permissions/decidim/proposals/permissions.rb
350
356
  - app/presenters/decidim/proposals/admin_log/proposal_note_presenter.rb
351
357
  - app/presenters/decidim/proposals/admin_log/proposal_presenter.rb
358
+ - app/presenters/decidim/proposals/admin_log/proposal_state_presenter.rb
352
359
  - app/presenters/decidim/proposals/admin_log/valuation_assignment_presenter.rb
353
360
  - app/presenters/decidim/proposals/admin_log/value_types/proposal_state_presenter.rb
354
361
  - app/presenters/decidim/proposals/admin_log/value_types/proposal_title_body_presenter.rb
@@ -364,7 +371,6 @@ files:
364
371
  - app/queries/decidim/proposals/metrics/proposal_participants_metric_measure.rb
365
372
  - app/queries/decidim/proposals/metrics/proposals_metric_manage.rb
366
373
  - app/queries/decidim/proposals/metrics/votes_metric_manage.rb
367
- - app/queries/decidim/proposals/similar_proposals.rb
368
374
  - app/services/decidim/proposals/diff_renderer.rb
369
375
  - app/services/decidim/proposals/proposal_builder.rb
370
376
  - app/services/decidim/proposals/proposal_search.rb
@@ -377,6 +383,10 @@ files:
377
383
  - app/views/decidim/proposals/admin/proposal_answers/_form.html.erb
378
384
  - app/views/decidim/proposals/admin/proposal_notes/_form.html.erb
379
385
  - app/views/decidim/proposals/admin/proposal_notes/_proposal_notes.html.erb
386
+ - app/views/decidim/proposals/admin/proposal_states/_form.html.erb
387
+ - app/views/decidim/proposals/admin/proposal_states/edit.html.erb
388
+ - app/views/decidim/proposals/admin/proposal_states/index.html.erb
389
+ - app/views/decidim/proposals/admin/proposal_states/new.html.erb
380
390
  - app/views/decidim/proposals/admin/proposals/_bulk-actions.html.erb
381
391
  - app/views/decidim/proposals/admin/proposals/_documents.html.erb
382
392
  - app/views/decidim/proposals/admin/proposals/_endorsers.html.erb
@@ -392,6 +402,7 @@ files:
392
402
  - app/views/decidim/proposals/admin/proposals/bulk_actions/_scope-change.html.erb
393
403
  - app/views/decidim/proposals/admin/proposals/bulk_actions/_split.html.erb
394
404
  - app/views/decidim/proposals/admin/proposals/bulk_actions/_unassign_from_valuator.html.erb
405
+ - app/views/decidim/proposals/admin/proposals/bulk_actions/_valuators_picker.html.erb
395
406
  - app/views/decidim/proposals/admin/proposals/edit.html.erb
396
407
  - app/views/decidim/proposals/admin/proposals/index.html.erb
397
408
  - app/views/decidim/proposals/admin/proposals/new.html.erb
@@ -415,11 +426,9 @@ files:
415
426
  - app/views/decidim/proposals/proposal_votes/update_buttons_and_counters.js.erb
416
427
  - app/views/decidim/proposals/proposals/_actions.html.erb
417
428
  - app/views/decidim/proposals/proposals/_edit_form_fields.html.erb
418
- - app/views/decidim/proposals/proposals/_endorsements_card_row.html.erb
419
429
  - app/views/decidim/proposals/proposals/_linked_proposals.html.erb
420
430
  - app/views/decidim/proposals/proposals/_proposal.html.erb
421
431
  - app/views/decidim/proposals/proposals/_proposal_aside.html.erb
422
- - app/views/decidim/proposals/proposals/_proposal_badge.html.erb
423
432
  - app/views/decidim/proposals/proposals/_proposals.html.erb
424
433
  - app/views/decidim/proposals/proposals/_proposals_picker.html.erb
425
434
  - app/views/decidim/proposals/proposals/_remaining_votes_count.html.erb
@@ -427,8 +436,6 @@ files:
427
436
  - app/views/decidim/proposals/proposals/_votes_count.html.erb
428
437
  - app/views/decidim/proposals/proposals/_voting_rules.html.erb
429
438
  - app/views/decidim/proposals/proposals/_wizard_header.html.erb
430
- - app/views/decidim/proposals/proposals/compare.html.erb
431
- - app/views/decidim/proposals/proposals/complete.html.erb
432
439
  - app/views/decidim/proposals/proposals/edit.html.erb
433
440
  - app/views/decidim/proposals/proposals/edit_draft.html.erb
434
441
  - app/views/decidim/proposals/proposals/index.html.erb
@@ -579,6 +586,12 @@ files:
579
586
  - db/migrate/20210318082934_fix_counters_for_copied_proposals.rb
580
587
  - db/migrate/20230427105700_change_states_on_collaborative_drafts.rb
581
588
  - db/migrate/20230427105700_change_states_on_proposals.rb
589
+ - db/migrate/20240110203500_add_withdrawn_at_field_to_proposals.rb
590
+ - db/migrate/20240110203501_create_decidim_proposals_proposal_state.rb
591
+ - db/migrate/20240110203502_add_state_id_to_decidim_proposals_proposals.rb
592
+ - db/migrate/20240110203503_remove_state_from_decidim_proposals_proposals.rb
593
+ - db/migrate/20240110203504_create_default_proposal_states.rb
594
+ - db/migrate/20240209092404_change_color_fields_on_proposals_states.rb
582
595
  - db/migrate/20240404202756_add_valuation_assignments_count_to_decidim_proposals_proposals.rb
583
596
  - decidim-proposals.gemspec
584
597
  - lib/decidim/api/proposal_input_filter.rb
@@ -590,6 +603,7 @@ files:
590
603
  - lib/decidim/proposals.rb
591
604
  - lib/decidim/proposals/admin.rb
592
605
  - lib/decidim/proposals/admin_engine.rb
606
+ - lib/decidim/proposals/admin_filter.rb
593
607
  - lib/decidim/proposals/api.rb
594
608
  - lib/decidim/proposals/commentable_collaborative_draft.rb
595
609
  - lib/decidim/proposals/commentable_proposal.rb
@@ -609,7 +623,7 @@ files:
609
623
  - lib/decidim/proposals/test/factories.rb
610
624
  - lib/decidim/proposals/valuatable.rb
611
625
  - lib/decidim/proposals/version.rb
612
- - lib/tasks/proposals/upgrade/decdim_proposal_upgrade_tasks.rake
626
+ - lib/tasks/proposals/upgrade/decidim_proposals_upgrade_tasks.rake
613
627
  homepage: https://decidim.org
614
628
  licenses:
615
629
  - AGPL-3.0
@@ -627,14 +641,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
627
641
  requirements:
628
642
  - - "~>"
629
643
  - !ruby/object:Gem::Version
630
- version: 3.1.0
644
+ version: 3.2.0
631
645
  required_rubygems_version: !ruby/object:Gem::Requirement
632
646
  requirements:
633
- - - ">="
647
+ - - ">"
634
648
  - !ruby/object:Gem::Version
635
- version: '0'
649
+ version: 1.3.1
636
650
  requirements: []
637
- rubygems_version: 3.3.7
651
+ rubygems_version: 3.4.10
638
652
  signing_key:
639
653
  specification_version: 4
640
654
  summary: Decidim proposals module
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Proposals
5
- class AcceptedProposalEvent < Decidim::Events::SimpleEvent
6
- include Decidim::Events::AuthorEvent
7
-
8
- def resource_text
9
- translated_attribute(resource.answer)
10
- end
11
-
12
- def event_has_roles?
13
- true
14
- end
15
- end
16
- end
17
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Proposals
5
- class EvaluatingProposalEvent < Decidim::Events::SimpleEvent
6
- def event_has_roles?
7
- true
8
- end
9
- end
10
- end
11
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Proposals
5
- class RejectedProposalEvent < Decidim::Events::SimpleEvent
6
- include Decidim::Events::AuthorEvent
7
-
8
- def resource_text
9
- translated_attribute(resource.answer)
10
- end
11
-
12
- def event_has_roles?
13
- true
14
- end
15
- end
16
- end
17
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Proposals
5
- # A form object to be used when public users want to create a proposal.
6
- class ProposalWizardCreateStepForm < Decidim::Form
7
- mimic :proposal
8
-
9
- attribute :title, String
10
- attribute :body, Decidim::Attributes::CleanString
11
- attribute :body_template, String
12
- attribute :user_group_id, Integer
13
-
14
- validates :title, :body, presence: true, etiquette: true
15
- validates :title, length: { in: 15..150 }
16
- validates :body, proposal_length: {
17
- minimum: 15,
18
- maximum: ->(record) { record.component.settings.proposal_length }
19
- }
20
-
21
- validate :body_is_not_bare_template
22
-
23
- alias component current_component
24
-
25
- def map_model(model)
26
- self.title = translated_attribute(model.title)
27
- self.body = translated_attribute(model.body)
28
-
29
- self.user_group_id = model.user_groups.first&.id
30
- return unless model.categorization
31
-
32
- self.category_id = model.categorization.decidim_category_id
33
- end
34
-
35
- private
36
-
37
- def body_is_not_bare_template
38
- return if body_template.blank?
39
-
40
- errors.add(:body, :cant_be_equal_to_template) if body.presence == body_template.presence
41
- end
42
- end
43
- end
44
- end
@@ -1,67 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Proposals
5
- # Class used to retrieve similar proposals.
6
- class SimilarProposals < Decidim::Query
7
- include Decidim::TranslationsHelper
8
-
9
- # Syntactic sugar to initialize the class and return the queried objects.
10
- #
11
- # components - Decidim::CurrentComponent
12
- # proposal - Decidim::Proposals::Proposal
13
- def self.for(components, proposal)
14
- new(components, proposal).query
15
- end
16
-
17
- # Initializes the class.
18
- #
19
- # components - Decidim::CurrentComponent
20
- # proposal - Decidim::Proposals::Proposal
21
- def initialize(components, proposal)
22
- @components = components
23
- @proposal = proposal
24
- @translations_enabled = proposal.component.organization.enable_machine_translations
25
- end
26
-
27
- # Retrieves similar proposals
28
- def query
29
- Decidim::Proposals::Proposal
30
- .where(component: @components)
31
- .published
32
- .not_hidden
33
- .where(
34
- Arel.sql("GREATEST(#{title_similarity}, #{body_similarity}) >= ?").to_s,
35
- *similarity_params,
36
- Decidim::Proposals.similarity_threshold
37
- )
38
- .limit(Decidim::Proposals.similarity_limit)
39
- end
40
-
41
- private
42
-
43
- attr_reader :translations_enabled, :proposal
44
-
45
- def title_similarity
46
- return "similarity(title::text, ?)" unless translations_enabled
47
-
48
- language = proposal.content_original_language
49
- "similarity(title->>'#{language}'::text, ?), similarity(title->'machine_translations'->>'#{language}'::text, ?)"
50
- end
51
-
52
- def body_similarity
53
- return "similarity(body::text, ?)" unless translations_enabled
54
-
55
- language = proposal.content_original_language
56
- "similarity(body->>'#{language}'::text, ?), similarity(body->'machine_translations'->>'#{language}'::text, ?)"
57
- end
58
-
59
- def similarity_params
60
- title_attr = translated_attribute(proposal.title)
61
- body_attr = translated_attribute(proposal.body)
62
-
63
- translations_enabled ? [title_attr, title_attr, body_attr, body_attr] : [title_attr, body_attr]
64
- end
65
- end
66
- end
67
- end
@@ -1,3 +0,0 @@
1
- <% if proposal.published_state? || proposal.withdrawn? %>
2
- <span class="<%= proposal_state_badge_css_class(proposal.state) %> label proposal-status"><%= humanize_proposal_state proposal.state %></span>
3
- <% end %>