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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9dfb3b14eed79e4decb75418d6bfeee8d55db420a6482555c5e6750ab16fc81a
4
- data.tar.gz: b3cefb856a915c0b22e811d716c264039e399bcc768b88194d04aaa2500f7695
3
+ metadata.gz: 4e2a3865da4fea6e8086d1861c607c830ae4f6065d657403495831d54a7ea141
4
+ data.tar.gz: fd7a38162cfc5c5ab403b15eefca0c636ede53b79b3dd1ba15d1a891f65a1d29
5
5
  SHA512:
6
- metadata.gz: 73b96bead3f5403f84865e8be0be9148e475cc7ad83c53c044deae885307ad748287d40655d0e47f23907be2a5600ec9e33109b806d0c65b905742bbbae8f264
7
- data.tar.gz: 880adda6eb23f04cb81f502ff003da08351617075d5eb2fdd0342d7e81ff2cc29c021d585114f76cbed0a2dd2b9b08255e7c356ca41d3c89faa6f56196b389a8
6
+ metadata.gz: 3e0f835e72277aedefef38a056a245682d8be43c4a4430f151de5f0d2e7960ae272a74535278ffc4470cd5690a723969606726208fa1fe823b9fbbd6e27fc65c
7
+ data.tar.gz: 115df8486de52b7c640ab4b968a7650226c18414246a5818c9abef2b3128001662db72c9ca93f28b709b6dae8b377ff559a6f5a98963b321237a88fd4c92a5cb
@@ -5,7 +5,7 @@
5
5
  </div>
6
6
 
7
7
  <% group_attributes1 = [processes_count_item, meta_scope_item].compact %>
8
- <% group_attributes2 = [hashtag_item, external_link_item].compact %>
8
+ <% group_attributes2 = [external_link_item].compact %>
9
9
 
10
10
  <div class="participatory-space-group__content-block-metadata">
11
11
  <% group_attributes1.each do |item| %>
@@ -5,9 +5,8 @@ module Decidim
5
5
  module ContentBlocks
6
6
  class MainDataCell < Decidim::ContentBlocks::ParticipatorySpaceMainDataCell
7
7
  include Decidim::SanitizeHelper
8
- include Decidim::TwitterSearchHelper
9
8
 
10
- delegate :title, :description, :hashtag, :group_url, :meta_scope, to: :resource
9
+ delegate :title, :description, :group_url, :meta_scope, to: :resource
11
10
 
12
11
  private
13
12
 
@@ -23,15 +22,6 @@ module Decidim
23
22
  decidim_sanitize_editor_admin translated_attribute(description)
24
23
  end
25
24
 
26
- def hashtag_item
27
- return if hashtag_text.blank?
28
-
29
- {
30
- icon: "twitter-x-line",
31
- text: link_to("##{hashtag_text}", twitter_hashtag_url(hashtag_text), target: "_blank", rel: "noopener")
32
- }
33
- end
34
-
35
25
  def processes_count_item
36
26
  {
37
27
  icon: "grid-line",
@@ -60,10 +50,6 @@ module Decidim
60
50
  }
61
51
  end
62
52
 
63
- def hashtag_text
64
- @hashtag_text ||= decidim_html_escape(hashtag || "")
65
- end
66
-
67
53
  def group_url_text
68
54
  group_uri.host + group_uri.path
69
55
  end
@@ -0,0 +1,74 @@
1
+ <section id="democratic_quality_stats" class="home__section home__section-content-block">
2
+ <h2 class="home__section-title">
3
+ <%= t("decidim.participatory_processes.content_blocks.democratic_quality_stats.name") %>
4
+ </h2>
5
+
6
+ <div>
7
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-4">
8
+ <%= cell "decidim/participatory_processes/indicator", nil, metric_name: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.global_score.name"), metric_value: stats[:global_score], metric_tooltip: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.global_score.tooltip") %>
9
+ <div class="text-md col-span-3 text-gray-2 prose-a:underline">
10
+ <p><%= t("decidim.participatory_processes.content_blocks.democratic_quality_stats.global_score.description_html", info_url:) %></p>
11
+ <p class="text-sm mt-4 text-gray">
12
+ <%= t("decidim.participatory_processes.content_blocks.democratic_quality_stats.global_score.note") %>
13
+ </p>
14
+ </div>
15
+ </div>
16
+ <div class="mt-8">
17
+ <h4 class="uppercase text-md font-semibold tracking-wider text-gray-2">
18
+ <%= t("decidim.participatory_processes.content_blocks.democratic_quality_stats.automatic_metrics.name") %>
19
+ </h4>
20
+ <p class="text-md mt-2 text-gray-2">
21
+ <%= t("decidim.participatory_processes.content_blocks.democratic_quality_stats.automatic_metrics.description") %>
22
+ </p>
23
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-4 mt-4">
24
+ <%= cell "decidim/participatory_processes/indicator",
25
+ nil,
26
+ metric_name: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.automatic_metrics.indicators.influence"),
27
+ metric_value: stats[:automatic][:influence],
28
+ metric_tooltip: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.automatic_metrics.indicators.influence_tooltip") %>
29
+ <%= cell "decidim/participatory_processes/indicator",
30
+ nil,
31
+ metric_name: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.automatic_metrics.indicators.hybridization"),
32
+ metric_value: stats[:automatic][:hybridization],
33
+ metric_tooltip: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.automatic_metrics.indicators.hybridization_tooltip") %>
34
+ <%= cell "decidim/participatory_processes/indicator",
35
+ nil,
36
+ metric_name: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.automatic_metrics.indicators.transparency"),
37
+ metric_value: stats[:automatic][:transparency],
38
+ metric_tooltip: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.automatic_metrics.indicators.transparency_tooltip") %>
39
+ <%= cell "decidim/participatory_processes/indicator",
40
+ nil,
41
+ metric_name: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.automatic_metrics.indicators.traceability"),
42
+ metric_value: stats[:automatic][:traceability],
43
+ metric_tooltip: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.automatic_metrics.indicators.traceability_tooltip") %>
44
+ </div>
45
+ </div>
46
+ <% if finished_survey? %>
47
+ <div class="mt-8">
48
+ <h4 class="uppercase text-md font-semibold tracking-wider text-gray-2">
49
+ <%= t("decidim.participatory_processes.content_blocks.democratic_quality_stats.qualitative_metrics.name") %>
50
+ </h4>
51
+ <p class="text-md mt-2 text-gray-2">
52
+ <%= t("decidim.participatory_processes.content_blocks.democratic_quality_stats.qualitative_metrics.description") %>
53
+ </p>
54
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-4 mt-4">
55
+ <%= cell "decidim/participatory_processes/indicator",
56
+ nil,
57
+ metric_name: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.qualitative_metrics.indicators.inclusiveness"),
58
+ metric_value: stats[:auto_evaluation][:inclusiveness],
59
+ metric_tooltip: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.qualitative_metrics.indicators.inclusiveness_tooltip") %>
60
+ <%= cell "decidim/participatory_processes/indicator",
61
+ nil,
62
+ metric_name: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.qualitative_metrics.indicators.citizen_influence"),
63
+ metric_value: stats[:auto_evaluation][:citizen_influence],
64
+ metric_tooltip: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.qualitative_metrics.indicators.citizen_influence_tooltip") %>
65
+ <%= cell "decidim/participatory_processes/indicator",
66
+ nil,
67
+ metric_name: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.qualitative_metrics.indicators.informativeness"),
68
+ metric_value: stats[:auto_evaluation][:informativeness],
69
+ metric_tooltip: t("decidim.participatory_processes.content_blocks.democratic_quality_stats.qualitative_metrics.indicators.informativeness_tooltip") %>
70
+ </div>
71
+ </div>
72
+ <% end %>
73
+ </div>
74
+ </section>
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module ContentBlocks
6
+ class DemocraticQualityStatsCell < Decidim::ContentBlocks::BaseCell
7
+ include ParticipatorySpaceContentBlocksHelper
8
+
9
+ private
10
+
11
+ def stats
12
+ @stats ||= presenter.stats
13
+ end
14
+
15
+ def finished_survey?
16
+ @finished_survey ||= presenter.finished_survey?
17
+ end
18
+
19
+ def presenter
20
+ @presenter ||= ParticipatoryProcessDemocraticQualityStatsPresenter.new(model, resource)
21
+ end
22
+
23
+ def info_url
24
+ decidim.page_path("democratic-quality-indicators")
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,32 @@
1
+ <div class="row column mt-10">
2
+ <h2 class="text-xl font-semibold">
3
+ <%= t("citizen_influence.name", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %>
4
+ </h2>
5
+ </div>
6
+
7
+ <div class="row column">
8
+ <fieldset class="mt-4">
9
+ <legend class="font-semibold"><%= t("citizen_influence.citizen_influence_level.legend", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %></legend>
10
+ <% settings_options[:citizen_influence_level].each do |label, value, description| %>
11
+ <%= label_tag nil, class: "form__wrapper-radio-label" do %>
12
+ <%= radio_button_tag input_name("citizen_influence_level"), value, form.object.settings.citizen_influence_level == value %>
13
+ <%= label %>
14
+ <div class="text-sm text-gray mt-1 font-normal">
15
+ <%= description %>
16
+ </div>
17
+ <% end %>
18
+ <% end %>
19
+ </fieldset>
20
+ </div>
21
+
22
+ <div class="row column">
23
+ <fieldset>
24
+ <legend class="font-semibold"><%= t("citizen_influence.citizen_decisional_intervention.legend", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %></legend>
25
+ <% settings_options[:citizen_decisional_intervention].each do |label, value| %>
26
+ <%= label_tag nil, class: "form__wrapper-checkbox-label" do %>
27
+ <%= radio_button_tag input_name("citizen_decisional_intervention"), value, form.object.settings.citizen_decisional_intervention == value %>
28
+ <%= label %>
29
+ <% end %>
30
+ <% end %>
31
+ </fieldset>
32
+ </div>
@@ -0,0 +1,69 @@
1
+ <div class="row column">
2
+ <h2 class="text-xl font-semibold">
3
+ <%= t("inclusiveness.name", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %>
4
+ </h2>
5
+
6
+ <p class="text-md text-gray mt-2 font-normal">
7
+ <%= t("inclusiveness.description", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %>
8
+ </p>
9
+ </div>
10
+
11
+ <div class="row column">
12
+ <fieldset>
13
+ <legend class="font-semibold"><%= t("inclusiveness.functional_diversity_invited.legend", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %></legend>
14
+ <% settings_options[:functional_diversity_invited].each do |label, value| %>
15
+ <%= label_tag nil, class: "form__wrapper-checkbox-label" do %>
16
+ <%= radio_button_tag input_name("functional_diversity_invited"), value, form.object.settings.functional_diversity_invited == value %>
17
+ <%= label %>
18
+ <% end %>
19
+ <% end %>
20
+ </fieldset>
21
+ </div>
22
+
23
+ <div class="row column">
24
+ <fieldset>
25
+ <legend class="font-semibold"><%= t("inclusiveness.languages_communicated.legend", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %></legend>
26
+ <% settings_options[:languages_communicated].each do |label, value| %>
27
+ <%= label_tag nil, class: "form__wrapper-checkbox-label" do %>
28
+ <%= radio_button_tag input_name("languages_communicated"), value, form.object.settings.languages_communicated == value %>
29
+ <%= label %>
30
+ <% end %>
31
+ <% end %>
32
+ </fieldset>
33
+ </div>
34
+
35
+ <div class="row column">
36
+ <fieldset>
37
+ <legend class="font-semibold"><%= t("inclusiveness.mobility_meeting_access.legend", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %></legend>
38
+ <% settings_options[:mobility_meeting_access].each do |label, value| %>
39
+ <%= label_tag nil, class: "form__wrapper-checkbox-label" do %>
40
+ <%= radio_button_tag input_name("mobility_meeting_access"), value, form.object.settings.mobility_meeting_access == value %>
41
+ <%= label %>
42
+ <% end %>
43
+ <% end %>
44
+ </fieldset>
45
+ </div>
46
+
47
+ <div class="row column">
48
+ <fieldset>
49
+ <legend class="font-semibold"><%= t("inclusiveness.participation_scheduling_times.legend", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %></legend>
50
+ <% settings_options[:participation_scheduling_times].each do |label, value| %>
51
+ <%= label_tag nil, class: "form__wrapper-checkbox-label" do %>
52
+ <%= radio_button_tag input_name("participation_scheduling_times"), value, form.object.settings.participation_scheduling_times == value %>
53
+ <%= label %>
54
+ <% end %>
55
+ <% end %>
56
+ </fieldset>
57
+ </div>
58
+
59
+ <div class="row column">
60
+ <fieldset>
61
+ <legend class="font-semibold"><%= t("inclusiveness.digital_support_offered.legend", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %></legend>
62
+ <% settings_options[:digital_support_offered].each do |label, value| %>
63
+ <%= label_tag nil, class: "form__wrapper-checkbox-label" do %>
64
+ <%= radio_button_tag input_name("digital_support_offered"), value, form.object.settings.digital_support_offered == value %>
65
+ <%= label %>
66
+ <% end %>
67
+ <% end %>
68
+ </fieldset>
69
+ </div>
@@ -0,0 +1,29 @@
1
+ <div class="row column mt-10">
2
+ <h2 class="text-xl font-semibold">
3
+ <%= t("informativeness.name", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %>
4
+ </h2>
5
+ </div>
6
+
7
+ <div class="row column">
8
+ <fieldset>
9
+ <legend class="font-semibold"><%= t("informativeness.published_information_clarity.legend", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %></legend>
10
+ <% settings_options[:published_information_clarity].each do |label, value| %>
11
+ <%= label_tag nil, class: "form__wrapper-checkbox-label" do %>
12
+ <%= radio_button_tag input_name("published_information_clarity"), value, form.object.settings.published_information_clarity == value %>
13
+ <%= label %>
14
+ <% end %>
15
+ <% end %>
16
+ </fieldset>
17
+ </div>
18
+
19
+ <div class="row column">
20
+ <fieldset>
21
+ <legend class="font-semibold"><%= t("informativeness.information_provided.legend", scope: "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form") %></legend>
22
+ <% settings_options[:information_provided].each do |label, value| %>
23
+ <%= label_tag nil, class: "form__wrapper-checkbox-label" do %>
24
+ <%= radio_button_tag input_name("information_provided"), value, form.object.settings.information_provided == value %>
25
+ <%= label %>
26
+ <% end %>
27
+ <% end %>
28
+ </fieldset>
29
+ </div>
@@ -0,0 +1,10 @@
1
+ <div class="px-4 mb-4">
2
+ <%= cell("decidim/announcement", {
3
+ title: t("decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form.announcement.title"),
4
+ body: t("decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form.announcement.body_html")
5
+ }, callout_class: "secondary") %>
6
+ </div>
7
+
8
+ <%= render :informativeness %>
9
+ <%= render :citizen_influence %>
10
+ <%= render :inclusiveness %>
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module ContentBlocks
6
+ # Cell for the democratic quality stats settings form content block.
7
+ class DemocraticQualityStatsSettingsFormCell < Decidim::ContentBlocks::BaseCell
8
+ alias form model
9
+
10
+ def content_block
11
+ options[:content_block]
12
+ end
13
+
14
+ def option_scope
15
+ "decidim.participatory_processes.admin.content_blocks.democratic_quality_stats_settings_form"
16
+ end
17
+
18
+ def settings_options
19
+ {
20
+ functional_diversity_invited: [
21
+ [t("inclusiveness.functional_diversity_invited.options.zero", scope: option_scope), 0],
22
+ [t("inclusiveness.functional_diversity_invited.options.one", scope: option_scope), 1],
23
+ [t("inclusiveness.functional_diversity_invited.options.two_five", scope: option_scope), 2.5],
24
+ [t("inclusiveness.functional_diversity_invited.options.five", scope: option_scope), 5]
25
+ ],
26
+ languages_communicated: [
27
+ [t("inclusiveness.languages_communicated.options.one", scope: option_scope), 1],
28
+ [t("inclusiveness.languages_communicated.options.two_five", scope: option_scope), 2.5],
29
+ [t("inclusiveness.languages_communicated.options.five", scope: option_scope), 5]
30
+ ],
31
+ mobility_meeting_access: [
32
+ [t("inclusiveness.mobility_meeting_access.options.zero", scope: option_scope), 0],
33
+ [t("inclusiveness.mobility_meeting_access.options.two_five", scope: option_scope), 2.5],
34
+ [t("inclusiveness.mobility_meeting_access.options.five", scope: option_scope), 5]
35
+ ],
36
+ participation_scheduling_times: [
37
+ [t("inclusiveness.participation_scheduling_times.options.zero", scope: option_scope), 0],
38
+ [t("inclusiveness.participation_scheduling_times.options.two_five", scope: option_scope), 2.5],
39
+ [t("inclusiveness.participation_scheduling_times.options.five", scope: option_scope), 5]
40
+ ],
41
+ digital_support_offered: [
42
+ [t("inclusiveness.digital_support_offered.options.zero", scope: option_scope), 0],
43
+ [t("inclusiveness.digital_support_offered.options.two_five", scope: option_scope), 2.5],
44
+ [t("inclusiveness.digital_support_offered.options.five", scope: option_scope), 5]
45
+ ],
46
+ citizen_influence_level: [
47
+ [t("citizen_influence.citizen_influence_level.options.one", scope: option_scope), 1],
48
+ [t("citizen_influence.citizen_influence_level.options.two", scope: option_scope), 2],
49
+ [t("citizen_influence.citizen_influence_level.options.three", scope: option_scope), 3],
50
+ [t("citizen_influence.citizen_influence_level.options.four", scope: option_scope), 4],
51
+ [t("citizen_influence.citizen_influence_level.options.five", scope: option_scope), 5]
52
+ ],
53
+ citizen_decisional_intervention: [
54
+ [t("citizen_influence.citizen_decisional_intervention.options.one", scope: option_scope), 1],
55
+ [t("citizen_influence.citizen_decisional_intervention.options.two", scope: option_scope), 2],
56
+ [t("citizen_influence.citizen_decisional_intervention.options.three", scope: option_scope), 3],
57
+ [t("citizen_influence.citizen_decisional_intervention.options.four", scope: option_scope), 4],
58
+ [t("citizen_influence.citizen_decisional_intervention.options.five", scope: option_scope), 5]
59
+ ],
60
+ published_information_clarity: [
61
+ [t("informativeness.published_information_clarity.options.zero", scope: option_scope), 0],
62
+ [t("informativeness.published_information_clarity.options.one", scope: option_scope), 1],
63
+ [t("informativeness.published_information_clarity.options.two_five", scope: option_scope), 2.5],
64
+ [t("informativeness.published_information_clarity.options.five", scope: option_scope), 5]
65
+ ],
66
+ information_provided: [
67
+ [t("informativeness.information_provided.options.zero", scope: option_scope), 0],
68
+ [t("informativeness.information_provided.options.one", scope: option_scope), 1],
69
+ [t("informativeness.information_provided.options.two_five", scope: option_scope), 2.5],
70
+ [t("informativeness.information_provided.options.five", scope: option_scope), 5]
71
+ ]
72
+ }
73
+ end
74
+
75
+ def input_name(name)
76
+ "content_block[settings][#{name}]"
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -1,3 +1,5 @@
1
1
  <% form.fields_for :settings, form.object.settings do |settings_fields| %>
2
- <%= settings_fields.number_field :max_results, label: %>
2
+ <div class="row column">
3
+ <%= settings_fields.number_field :max_results, label: %>
4
+ </div>
3
5
  <% end %>
@@ -17,17 +17,25 @@ module Decidim
17
17
  t("title", scope: "decidim.participatory_processes.participatory_processes.show")
18
18
  end
19
19
 
20
+ def rich_text_processors?
21
+ true
22
+ end
23
+
20
24
  def short_description_text
21
- decidim_sanitize_editor_admin translated_attribute(short_description)
25
+ presenter.short_description
22
26
  end
23
27
 
24
28
  def description_text
25
- decidim_sanitize_editor_admin translated_attribute(description)
29
+ presenter.description
26
30
  end
27
31
 
28
32
  def nav_items
29
33
  process_nav_items(resource)
30
34
  end
35
+
36
+ def presenter
37
+ @presenter ||= Decidim::ParticipatoryProcesses::ParticipatoryProcessPresenter.new(resource)
38
+ end
31
39
  end
32
40
  end
33
41
  end
@@ -0,0 +1,11 @@
1
+ <div class="flex gap-2 py-2 px-4 rounded-lg justify-between items-center text-gray-2" style="background-color: #F3F8FC;">
2
+ <div class="text-lg font-semibold flex items-center gap-2">
3
+ <span><%= metric_name %></span>
4
+ <%= with_tooltip(metric_tooltip, class: "top") do %>
5
+ <%= icon("information-line", aria_label: metric_tooltip, role: "img", class: "fill-secondary h-4 w-4") %>
6
+ <% end %>
7
+ </div>
8
+ <div class="text-lg font-semibold flex items-center gap-2">
9
+ <span class="font-bold text-5xl"><%= metric_value %></span><span class=""> /5*</span>
10
+ </div>
11
+ </div>
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ class IndicatorCell < Decidim::ViewModel
6
+ include Decidim::Admin::IconWithTooltipHelper
7
+
8
+ def show
9
+ render
10
+ end
11
+
12
+ def metric_name
13
+ options[:metric_name]
14
+ end
15
+
16
+ def metric_value
17
+ number_with_precision(options[:metric_value], strip_insignificant_zeros: true, precision: 2)
18
+ end
19
+
20
+ def metric_tooltip
21
+ options[:metric_tooltip]
22
+ end
23
+ end
24
+ end
25
+ end
@@ -12,11 +12,4 @@
12
12
  ) %>
13
13
  </span>
14
14
  <% end %>
15
-
16
- <% if hashtag.present? %>
17
- <span>
18
- <%= icon "twitter-x-line", class: "text-gray fill-current" %>
19
- <%= link_to "##{hashtag}", twitter_hashtag_url(hashtag), target: "_blank", class: "text-secondary underline" %>
20
- </span>
21
- <% end %>
22
15
  </div>
@@ -18,6 +18,8 @@ module Decidim
18
18
 
19
19
  def get_filter(filter_name, default = nil)
20
20
  params&.dig(:filter, filter_name) || default
21
+ rescue ActionController::InvalidParameterKey
22
+ default
21
23
  end
22
24
 
23
25
  def get_filter_in(filter_name, options, default = nil)
@@ -3,7 +3,7 @@
3
3
  <%= icon "flag-line" %>
4
4
  <h3 id="dialog-title-process-steps-modal" data-dialog-title><%= t("participatory_process_steps.index.process_steps", scope: "decidim") %></h3>
5
5
  <div>
6
- <div class="participatory-space__metadata-modal__list-container" data-component="accordion" data-multiselectable="false" data-collapsible="false">
6
+ <div class="participatory-space__metadata-modal__list-container" data-controller="accordion" data-multiselectable="false" data-collapsible="false">
7
7
  <ol class="participatory-space__metadata-modal__list">
8
8
  <% steps.each_with_index do |step, i| %>
9
9
  <% active = step == active_step %>
@@ -8,7 +8,7 @@ module Decidim
8
8
  class CreateParticipatoryProcess < Decidim::Commands::CreateResource
9
9
  fetch_file_attributes :hero_image
10
10
 
11
- fetch_form_attributes :organization, :title, :subtitle, :weight, :slug, :hashtag, :description,
11
+ fetch_form_attributes :organization, :title, :subtitle, :weight, :slug, :description,
12
12
  :short_description, :promoted, :taxonomizations, :announcement,
13
13
  :private_space, :developer_group, :local_area, :target,
14
14
  :participatory_scope, :participatory_structure, :meta_scope, :start_date, :end_date,
@@ -8,7 +8,7 @@ module Decidim
8
8
  class CreateParticipatoryProcessGroup < Decidim::Commands::CreateResource
9
9
  fetch_file_attributes :hero_image
10
10
 
11
- fetch_form_attributes :organization, :title, :description, :hashtag, :group_url, :target, :promoted,
11
+ fetch_form_attributes :organization, :title, :description, :group_url, :target, :promoted,
12
12
  :developer_group, :local_area, :meta_scope, :participatory_scope, :participatory_structure
13
13
 
14
14
  protected