decidim-participatory_processes 0.30.2 → 0.31.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.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/participatory_process_groups/content_blocks/main_data/content.erb +1 -1
  3. data/app/cells/decidim/participatory_process_groups/content_blocks/main_data_cell.rb +1 -15
  4. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats/show.erb +74 -0
  5. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_cell.rb +29 -0
  6. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form/citizen_influence.erb +32 -0
  7. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form/inclusiveness.erb +69 -0
  8. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form/informativeness.erb +29 -0
  9. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form/show.erb +10 -0
  10. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form_cell.rb +81 -0
  11. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes_settings_form/show.erb +3 -1
  12. data/app/cells/decidim/participatory_processes/content_blocks/main_data_cell.rb +10 -2
  13. data/app/cells/decidim/participatory_processes/indicator/show.erb +11 -0
  14. data/app/cells/decidim/participatory_processes/indicator_cell.rb +25 -0
  15. data/app/cells/decidim/participatory_processes/process_dropdown_metadata/metadata.erb +0 -7
  16. data/app/cells/decidim/participatory_processes/process_filters_cell.rb +2 -0
  17. data/app/cells/decidim/participatory_processes/process_step/show.erb +1 -1
  18. data/app/commands/decidim/participatory_processes/admin/create_participatory_process.rb +1 -1
  19. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_group.rb +1 -1
  20. data/app/commands/decidim/participatory_processes/admin/{copy_participatory_process.rb → duplicate_participatory_process.rb} +25 -26
  21. data/app/commands/decidim/participatory_processes/admin/import_participatory_process.rb +1 -1
  22. data/app/commands/decidim/participatory_processes/admin/update_participatory_process.rb +16 -4
  23. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_group.rb +1 -1
  24. data/app/controllers/decidim/participatory_processes/admin/{participatory_process_copies_controller.rb → participatory_process_duplicates_controller.rb} +7 -7
  25. data/app/controllers/decidim/participatory_processes/admin/participatory_process_group_landing_page_controller.rb +4 -0
  26. data/app/controllers/decidim/participatory_processes/admin/participatory_process_groups_controller.rb +3 -3
  27. data/app/controllers/decidim/participatory_processes/admin/participatory_process_imports_controller.rb +1 -1
  28. data/app/controllers/decidim/participatory_processes/admin/participatory_process_landing_page_controller.rb +4 -0
  29. data/app/controllers/decidim/participatory_processes/admin/participatory_process_steps_controller.rb +2 -2
  30. data/app/controllers/decidim/participatory_processes/admin/participatory_processes_controller.rb +3 -3
  31. data/app/controllers/decidim/participatory_processes/participatory_processes_controller.rb +0 -9
  32. data/app/forms/decidim/participatory_processes/admin/{participatory_process_copy_form.rb → participatory_process_duplicate_form.rb} +5 -5
  33. data/app/forms/decidim/participatory_processes/admin/participatory_process_form.rb +2 -1
  34. data/app/forms/decidim/participatory_processes/admin/participatory_process_group_form.rb +0 -1
  35. data/app/helpers/decidim/participatory_processes/application_helper.rb +14 -0
  36. data/app/models/decidim/participatory_process.rb +4 -4
  37. data/app/models/decidim/participatory_process_group.rb +9 -0
  38. data/app/permissions/decidim/participatory_processes/permissions.rb +4 -4
  39. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_group_presenter.rb +0 -1
  40. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_presenter.rb +0 -1
  41. data/app/presenters/decidim/participatory_processes/participatory_process_democratic_quality_stats_presenter.rb +312 -0
  42. data/app/presenters/decidim/participatory_processes/participatory_process_group_stats_presenter.rb +1 -11
  43. data/app/presenters/decidim/participatory_processes/participatory_process_presenter.rb +35 -1
  44. data/app/presenters/decidim/participatory_processes/participatory_process_stats_presenter.rb +1 -3
  45. data/app/queries/decidim/participatory_processes/participatory_processes_stats_followers_count.rb +31 -0
  46. data/app/queries/decidim/participatory_processes/participatory_processes_stats_participants_count.rb +27 -0
  47. data/app/serializers/decidim/participatory_processes/participatory_process_importer.rb +0 -1
  48. data/app/views/decidim/participatory_processes/admin/{participatory_process_copies → participatory_process_duplicates}/_form.html.erb +5 -5
  49. data/app/views/decidim/participatory_processes/admin/participatory_process_duplicates/new.html.erb +19 -0
  50. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/_form.html.erb +3 -7
  51. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/index.html.erb +31 -15
  52. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/_form.html.erb +1 -1
  53. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/index.html.erb +39 -21
  54. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/index.html.erb +42 -24
  55. data/app/views/decidim/participatory_processes/admin/participatory_processes/_form.html.erb +10 -14
  56. data/app/views/decidim/participatory_processes/admin/participatory_processes/_process_row.html.erb +125 -53
  57. data/app/views/decidim/participatory_processes/admin/participatory_processes/edit.html.erb +0 -8
  58. data/app/views/decidim/participatory_processes/admin/participatory_processes/index.html.erb +2 -2
  59. data/app/views/decidim/participatory_processes/admin/participatory_processes/manage_trash.html.erb +2 -1
  60. data/app/views/layouts/decidim/admin/_manage_processes.html.erb +1 -1
  61. data/app/views/layouts/decidim/admin/participatory_process_group.html.erb +1 -1
  62. data/config/assets.rb +2 -2
  63. data/config/locales/ar.yml +0 -13
  64. data/config/locales/bg.yml +0 -24
  65. data/config/locales/bs-BA.yml +0 -4
  66. data/config/locales/ca-IT.yml +319 -25
  67. data/config/locales/ca.yml +319 -25
  68. data/config/locales/cs.yml +93 -26
  69. data/config/locales/de.yml +123 -25
  70. data/config/locales/el.yml +0 -21
  71. data/config/locales/en.yml +303 -24
  72. data/config/locales/es-MX.yml +319 -25
  73. data/config/locales/es-PY.yml +319 -25
  74. data/config/locales/es.yml +319 -25
  75. data/config/locales/eu.yml +304 -25
  76. data/config/locales/fi-plain.yml +303 -24
  77. data/config/locales/fi.yml +303 -24
  78. data/config/locales/fr-CA.yml +86 -24
  79. data/config/locales/fr.yml +86 -24
  80. data/config/locales/ga-IE.yml +0 -7
  81. data/config/locales/gl.yml +0 -19
  82. data/config/locales/hu.yml +0 -21
  83. data/config/locales/id-ID.yml +0 -13
  84. data/config/locales/is-IS.yml +0 -11
  85. data/config/locales/it.yml +0 -20
  86. data/config/locales/ja.yml +123 -25
  87. data/config/locales/lb.yml +0 -20
  88. data/config/locales/lt.yml +0 -21
  89. data/config/locales/lv.yml +0 -14
  90. data/config/locales/nl.yml +0 -20
  91. data/config/locales/no.yml +0 -21
  92. data/config/locales/pl.yml +16 -24
  93. data/config/locales/pt-BR.yml +0 -23
  94. data/config/locales/pt.yml +0 -20
  95. data/config/locales/ro-RO.yml +2 -21
  96. data/config/locales/ru.yml +0 -11
  97. data/config/locales/sk.yml +0 -14
  98. data/config/locales/sr-CS.yml +0 -4
  99. data/config/locales/sv.yml +86 -24
  100. data/config/locales/tr-TR.yml +0 -20
  101. data/config/locales/uk.yml +0 -11
  102. data/config/locales/zh-CN.yml +0 -17
  103. data/config/locales/zh-TW.yml +0 -21
  104. data/db/migrate/20250403110052_add_democratic_quality_static_page.rb +34 -0
  105. data/db/migrate/20250605114136_remove_hashtag_from_participatory_processes.rb +7 -0
  106. data/db/migrate/20250605114415_remove_hashtag_from_participatory_processes_groups.rb +7 -0
  107. data/decidim-participatory_processes.gemspec +3 -0
  108. data/lib/decidim/api/participatory_process_group_type.rb +9 -0
  109. data/lib/decidim/api/participatory_process_input_filter.rb +0 -1
  110. data/lib/decidim/api/participatory_process_step_type.rb +2 -0
  111. data/lib/decidim/api/participatory_process_type.rb +17 -11
  112. data/lib/decidim/participatory_processes/admin_engine.rb +1 -1
  113. data/lib/decidim/participatory_processes/content_blocks/registry_manager.rb +25 -5
  114. data/lib/decidim/participatory_processes/engine.rb +22 -25
  115. data/lib/decidim/participatory_processes/participatory_space.rb +1 -4
  116. data/lib/decidim/participatory_processes/seeds.rb +3 -5
  117. data/lib/decidim/participatory_processes/test/factories.rb +2 -3
  118. data/lib/decidim/participatory_processes/version.rb +1 -1
  119. metadata +72 -22
  120. data/app/cells/decidim/participatory_processes/content_blocks/metrics_cell.rb +0 -25
  121. data/app/presenters/decidim/participatory_processes/participatory_process_metric_charts_presenter.rb +0 -21
  122. data/app/queries/decidim/participatory_processes/metrics/participatory_process_followers_metric_measure.rb +0 -31
  123. data/app/queries/decidim/participatory_processes/metrics/participatory_processes_metric_manage.rb +0 -27
  124. data/app/queries/decidim/participatory_processes/stats_followers_count.rb +0 -60
  125. data/app/queries/decidim/participatory_processes/stats_participants_count.rb +0 -136
  126. data/app/views/decidim/participatory_processes/admin/participatory_process_copies/new.html.erb +0 -19
  127. data/app/views/decidim/participatory_processes/participatory_processes/all_metrics.html.erb +0 -25
@@ -1,136 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module ParticipatoryProcesses
5
- # This class counts unique Participants on a participatory process or
6
- # participatory processes belonging to a participatory process group
7
- class StatsParticipantsCount < Decidim::Query
8
- def self.for(participatory_space)
9
- return 0 unless participatory_space.is_a?(Decidim::ParticipatoryProcess) ||
10
- (participatory_space.is_a?(Decidim::ParticipatoryProcessGroup) && participatory_space.participatory_processes.exists?)
11
-
12
- new(participatory_space).query
13
- end
14
-
15
- def initialize(participatory_space)
16
- @participatory_space = participatory_space
17
- end
18
-
19
- def query
20
- [
21
- comments_query,
22
- debates_query,
23
- meetings_query,
24
- endorsements_query,
25
- project_votes_query,
26
- proposals_query,
27
- proposal_votes_query,
28
- survey_answer_query
29
- ].flatten.uniq.count
30
- end
31
-
32
- private
33
-
34
- attr_reader :participatory_space
35
-
36
- def participatory_space_ids
37
- @participatory_space_ids ||= if participatory_space.is_a?(Decidim::ParticipatoryProcess)
38
- participatory_space.id
39
- else
40
- participatory_space.participatory_processes.pluck(:id)
41
- end
42
- end
43
-
44
- def comments_query
45
- return [] unless Decidim.module_installed?(:comments)
46
-
47
- Decidim::Comments::Comment
48
- .where(decidim_participatory_space_type: Decidim::ParticipatoryProcess.class.name)
49
- .where(decidim_participatory_space_id: participatory_space_ids)
50
- .pluck(:decidim_author_id)
51
- .uniq
52
- end
53
-
54
- def debates_query
55
- return [] unless Decidim.module_installed?(:debates)
56
-
57
- Decidim::Debates::Debate
58
- .where(
59
- component: space_components,
60
- decidim_author_type: Decidim::UserBaseEntity.name
61
- )
62
- .not_hidden
63
- .pluck(:decidim_author_id)
64
- .uniq
65
- end
66
-
67
- def meetings_query
68
- return [] unless Decidim.module_installed?(:meetings)
69
-
70
- meetings = Decidim::Meetings::Meeting.where(component: space_components).not_hidden
71
- registrations = Decidim::Meetings::Registration.where(decidim_meeting_id: meetings).distinct.pluck(:decidim_user_id)
72
- organizers = meetings.where(decidim_author_type: Decidim::UserBaseEntity.name).distinct.pluck(:decidim_author_id)
73
-
74
- [registrations, organizers].flatten.uniq
75
- end
76
-
77
- def endorsements_query
78
- Decidim::Endorsement
79
- .where(resource: space_components)
80
- .pluck(:decidim_author_id)
81
- .uniq
82
- end
83
-
84
- def proposals_query
85
- return [] unless Decidim.module_installed?(:proposals)
86
-
87
- Decidim::Coauthorship
88
- .where(
89
- coauthorable: proposals_components,
90
- decidim_author_type: Decidim::UserBaseEntity.name
91
- )
92
- .pluck(:decidim_author_id)
93
- .uniq
94
- end
95
-
96
- def proposal_votes_query
97
- return [] unless Decidim.module_installed?(:proposals)
98
-
99
- Decidim::Proposals::ProposalVote
100
- .where(
101
- proposal: proposals_components
102
- )
103
- .final
104
- .pluck(:decidim_author_id)
105
- .uniq
106
- end
107
-
108
- def project_votes_query
109
- return [] unless Decidim.module_installed?(:budgets)
110
-
111
- Decidim::Budgets::Order.joins(budget: [:component])
112
- .where(budget: {
113
- decidim_components: { id: space_components.pluck(:id) }
114
- })
115
- .pluck(:decidim_user_id)
116
- .uniq
117
- end
118
-
119
- def survey_answer_query
120
- Decidim::Forms::Answer.newsletter_participant_ids(space_components)
121
- end
122
-
123
- def space_components
124
- @space_components ||= if participatory_space.is_a?(Decidim::ParticipatoryProcess)
125
- participatory_space.components
126
- else
127
- Decidim::Component.where(participatory_space: participatory_space.participatory_processes)
128
- end
129
- end
130
-
131
- def proposals_components
132
- @proposals_components ||= Decidim::Proposals::FilteredProposals.for(space_components).published.not_hidden
133
- end
134
- end
135
- end
136
- end
@@ -1,19 +0,0 @@
1
- <% add_decidim_page_title(t("participatory_process_copies.new.title", scope: "decidim.admin")) %>
2
- <div class="item_show__header">
3
- <h1 class="item_show__header-title">
4
- <%= t("participatory_process_copies.new.title", scope: "decidim.admin") %>
5
- </h1>
6
- </div>
7
-
8
- <div class="item__edit item__edit-1col">
9
- <div class="item__edit-form">
10
- <%= decidim_form_for(@form, url: participatory_process_copies_path(current_participatory_process), method: :post, html: { class: "form form-defaults copy_participatory_process" }) do |f| %>
11
- <%= render partial: "form", object: f %>
12
- <div class="item__edit-sticky">
13
- <div class="item__edit-sticky-container">
14
- <%= f.submit t("participatory_process_copies.new.copy", scope: "decidim.admin"), class: "button button__sm button__secondary" %>
15
- </div>
16
- </div>
17
- <% end %>
18
- </div>
19
- </div>
@@ -1,25 +0,0 @@
1
- <% add_decidim_page_title(t("decidim.pages.participatory_space.metrics.headline")) %>
2
- <% add_decidim_page_title(translated_attribute(current_participatory_space.title)) %>
3
-
4
- <%= render layout:"layouts/decidim/shared/layout_center", locals: { columns: 8 } do %>
5
- <div class="text-center py-10">
6
- <h2 class="title-decorator inline-block text-left">
7
- <%= t("decidim.pages.participatory_space.metrics.headline") %>
8
- </h2>
9
- </div>
10
-
11
- <% if current_participatory_space.private_space? %>
12
- <%= cell("decidim/announcement", t("participatory_processes.show.private_space", scope: "decidim"), callout_class: "alert") %>
13
- <% end %>
14
-
15
- <div id="metrics" class="metric__container">
16
- <%= metrics.params %>
17
- <%= metrics.render_charts Decidim.metrics_registry.filtered(scope: "participatory_process", sort: true) %>
18
- </div>
19
-
20
- <%= link_to participatory_process_path(current_participatory_space), class: "button button__sm button__text-secondary mt-10" do %>
21
- <%= icon "arrow-left-line" %>
22
- <span><%= t("back_to_process", scope: "decidim.participatory_processes.participatory_process_steps.index") %></span>
23
- <% end %>
24
-
25
- <% end %>