decidim-participatory_processes 0.23.0 → 0.24.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/participatory_process_groups/content_block_cell.rb +17 -0
  3. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/filters.erb +22 -0
  4. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/filters_small_view.erb +18 -0
  5. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/participatory_space_filters.erb +6 -0
  6. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/show.erb +7 -0
  7. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/title_filter_order.erb +8 -0
  8. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes_cell.rb +65 -0
  9. data/app/cells/decidim/participatory_process_groups/content_blocks/html/show.erb +3 -0
  10. data/app/cells/decidim/participatory_process_groups/content_blocks/html_cell.rb +13 -0
  11. data/app/cells/decidim/participatory_process_groups/content_blocks/metadata/show.erb +28 -0
  12. data/app/cells/decidim/participatory_process_groups/content_blocks/metadata_cell.rb +15 -0
  13. data/app/cells/decidim/participatory_process_groups/content_blocks/stats/show.erb +13 -0
  14. data/app/cells/decidim/participatory_process_groups/content_blocks/stats_cell.rb +17 -0
  15. data/app/cells/decidim/participatory_process_groups/content_blocks/title/show.erb +43 -0
  16. data/app/cells/decidim/participatory_process_groups/content_blocks/title_cell.rb +56 -0
  17. data/app/cells/decidim/participatory_process_groups/process_filters_cell.rb +78 -0
  18. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes/show.erb +2 -16
  19. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes/single_process.erb +32 -28
  20. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes_cell.rb +33 -10
  21. data/app/cells/decidim/participatory_processes/filtered_participatory_processes/show.erb +3 -0
  22. data/app/cells/decidim/participatory_processes/filtered_participatory_processes_cell.rb +56 -0
  23. data/app/cells/decidim/participatory_processes/process_cell.rb +6 -1
  24. data/app/cells/decidim/participatory_processes/process_filters_cell.rb +1 -1
  25. data/app/cells/decidim/participatory_processes/process_group_cell.rb +6 -1
  26. data/app/cells/decidim/participatory_processes/process_group_m_cell.rb +3 -1
  27. data/app/cells/decidim/participatory_processes/process_group_s/image.erb +1 -0
  28. data/app/cells/decidim/participatory_processes/process_group_s/show.erb +8 -0
  29. data/app/cells/decidim/participatory_processes/process_group_s_cell.rb +23 -0
  30. data/app/cells/decidim/participatory_processes/process_s/image.erb +1 -0
  31. data/app/cells/decidim/participatory_processes/process_s/show.erb +14 -0
  32. data/app/cells/decidim/participatory_processes/process_s_cell.rb +35 -0
  33. data/app/cells/decidim/participatory_processes/statistic/show.erb +3 -3
  34. data/app/cells/decidim/participatory_processes/statistics/show.erb +1 -1
  35. data/app/commands/decidim/participatory_processes/admin/create_participatory_process.rb +1 -0
  36. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_admin.rb +7 -75
  37. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_group.rb +11 -2
  38. data/app/commands/decidim/participatory_processes/admin/update_participatory_process.rb +1 -0
  39. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_group.rb +11 -2
  40. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_step.rb +1 -0
  41. data/app/controllers/decidim/participatory_processes/admin/imports_controller.rb +14 -0
  42. data/app/controllers/decidim/participatory_processes/admin/moderations/reports_controller.rb +18 -0
  43. data/app/controllers/decidim/participatory_processes/admin/participatory_process_group_landing_page_content_blocks_controller.rb +48 -0
  44. data/app/controllers/decidim/participatory_processes/admin/participatory_process_group_landing_page_controller.rb +53 -0
  45. data/app/controllers/decidim/participatory_processes/admin/participatory_process_groups_controller.rb +3 -1
  46. data/app/controllers/decidim/participatory_processes/participatory_process_groups_controller.rb +1 -2
  47. data/app/controllers/decidim/participatory_processes/participatory_processes_controller.rb +14 -1
  48. data/app/events/decidim/participatory_process_role_assigned_event.rb +1 -1
  49. data/app/forms/decidim/participatory_processes/admin/participatory_process_form.rb +1 -0
  50. data/app/forms/decidim/participatory_processes/admin/participatory_process_group_form.rb +34 -2
  51. data/app/forms/decidim/participatory_processes/admin/participatory_process_step_form.rb +1 -1
  52. data/app/forms/decidim/participatory_processes/admin/participatory_process_user_role_form.rb +0 -5
  53. data/app/helpers/decidim/participatory_processes/admin/participatory_processes_menu_helper.rb +23 -0
  54. data/app/helpers/decidim/participatory_processes/admin/process_groups_for_select_helper.rb +1 -1
  55. data/app/helpers/decidim/participatory_processes/application_helper.rb +0 -12
  56. data/app/helpers/decidim/participatory_processes/participatory_process_helper.rb +35 -0
  57. data/app/models/decidim/participatory_process_group.rb +9 -1
  58. data/app/permissions/decidim/participatory_processes/permissions.rb +1 -0
  59. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_group_presenter.rb +12 -4
  60. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_presenter.rb +2 -2
  61. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_user_role_presenter.rb +2 -2
  62. data/app/presenters/decidim/participatory_processes/participatory_process_group_stats_presenter.rb +67 -0
  63. data/app/presenters/decidim/participatory_processes/participatory_process_metric_charts_presenter.rb +2 -2
  64. data/app/presenters/decidim/participatory_processes/participatory_process_stats_presenter.rb +3 -3
  65. data/app/queries/decidim/participatory_processes/group_participatory_processes.rb +16 -0
  66. data/app/queries/decidim/participatory_processes/group_published_participatory_processes.rb +21 -0
  67. data/app/queries/decidim/participatory_processes/organization_participatory_processes.rb +1 -1
  68. data/app/queries/decidim/participatory_processes/organization_published_participatory_processes.rb +1 -1
  69. data/app/queries/decidim/participatory_processes/promoted_participatory_process_groups.rb +12 -0
  70. data/app/queries/decidim/participatory_processes/stats_followers_count.rb +18 -4
  71. data/app/queries/decidim/participatory_processes/stats_participants_count.rb +18 -4
  72. data/app/queries/decidim/participatory_processes/visible_participatory_process_groups.rb +6 -2
  73. data/app/serializers/decidim/participatory_processes/participatory_process_importer.rb +1 -1
  74. data/app/serializers/decidim/participatory_processes/participatory_process_serializer.rb +1 -1
  75. data/app/services/decidim/participatory_processes/participatory_process_search.rb +2 -1
  76. data/app/views/decidim/participatory_processes/admin/participatory_process_copies/new.html.erb +2 -0
  77. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/_form.html.erb +68 -13
  78. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/edit.html.erb +7 -14
  79. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/index.html.erb +12 -3
  80. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/new.html.erb +2 -8
  81. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/show.html.erb +10 -2
  82. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/edit.html.erb +1 -0
  83. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/index.html.erb +6 -0
  84. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/edit.html.erb +2 -0
  85. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/index.html.erb +8 -0
  86. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/new.html.erb +2 -0
  87. data/app/views/decidim/participatory_processes/admin/participatory_processes/_form.html.erb +4 -0
  88. data/app/views/decidim/participatory_processes/admin/participatory_processes/index.html.erb +14 -3
  89. data/app/views/decidim/participatory_processes/admin/participatory_processes/new.html.erb +2 -0
  90. data/app/views/decidim/participatory_processes/admin/shared/_secondary_nav.html.erb +2 -16
  91. data/app/views/decidim/participatory_processes/participatory_process_groups/show.html.erb +18 -8
  92. data/app/views/decidim/participatory_processes/participatory_process_groups/show.js.erb +12 -0
  93. data/app/views/decidim/participatory_processes/participatory_processes/_participatory_process_group.html.erb +4 -0
  94. data/app/views/decidim/participatory_processes/participatory_processes/_promoted_process_group.html.erb +31 -0
  95. data/app/views/decidim/participatory_processes/participatory_processes/index.html.erb +4 -2
  96. data/app/views/decidim/participatory_processes/participatory_processes/show.html.erb +4 -4
  97. data/app/views/layouts/decidim/admin/participatory_process.html.erb +8 -1
  98. data/app/views/layouts/decidim/admin/participatory_process_group.html.erb +17 -0
  99. data/config/locales/ar.yml +0 -10
  100. data/config/locales/ca.yml +6 -9
  101. data/config/locales/cs.yml +65 -18
  102. data/config/locales/de.yml +85 -35
  103. data/config/locales/el.yml +0 -6
  104. data/config/locales/en.yml +52 -5
  105. data/config/locales/es-MX.yml +0 -9
  106. data/config/locales/es-PY.yml +0 -9
  107. data/config/locales/es.yml +0 -9
  108. data/config/locales/eu.yml +0 -6
  109. data/config/locales/fi-plain.yml +56 -6
  110. data/config/locales/fi.yml +59 -9
  111. data/config/locales/fr-CA.yml +52 -5
  112. data/config/locales/fr.yml +52 -5
  113. data/config/locales/gl.yml +0 -6
  114. data/config/locales/hu.yml +0 -6
  115. data/config/locales/id-ID.yml +0 -5
  116. data/config/locales/is-IS.yml +0 -3
  117. data/config/locales/it.yml +5 -6
  118. data/config/locales/ja.yml +0 -5
  119. data/config/locales/lv.yml +0 -7
  120. data/config/locales/nl.yml +51 -6
  121. data/config/locales/no.yml +0 -6
  122. data/config/locales/pl.yml +27 -7
  123. data/config/locales/pt-BR.yml +0 -6
  124. data/config/locales/pt.yml +0 -6
  125. data/config/locales/ro-RO.yml +0 -7
  126. data/config/locales/ru.yml +0 -8
  127. data/config/locales/si-LK.yml +1 -0
  128. data/config/locales/sk.yml +0 -8
  129. data/config/locales/sv.yml +13 -12
  130. data/config/locales/sw-KE.yml +1 -0
  131. data/config/locales/tr-TR.yml +104 -6
  132. data/config/locales/uk.yml +0 -8
  133. data/config/locales/zh-CN.yml +0 -5
  134. data/db/migrate/20170220110740_remove_steps_short_description.rb +1 -1
  135. data/db/migrate/20201007215105_add_hashtag_to_participatory_process_groups.rb +7 -0
  136. data/db/migrate/20201008154315_add_metadata_columns_to_participatory_process_groups.rb +13 -0
  137. data/db/migrate/20201013105520_rename_name_column_to_title_in_decidim_participatory_process_groups.rb +39 -0
  138. data/db/migrate/20201030133444_add_promoted_flag_to_decidim_participatory_process_groups.rb +7 -0
  139. data/db/migrate/20210204154593_add_weight_field_to_participatory_processes.rb +7 -0
  140. data/lib/decidim/api/participatory_process_group_type.rb +17 -0
  141. data/{app/types/decidim/participatory_processes → lib/decidim/api}/participatory_process_input_filter.rb +0 -0
  142. data/{app/types/decidim/participatory_processes → lib/decidim/api}/participatory_process_input_sort.rb +2 -2
  143. data/lib/decidim/api/participatory_process_step_type.rb +23 -0
  144. data/lib/decidim/api/participatory_process_type.rb +50 -0
  145. data/lib/decidim/participatory_processes.rb +2 -6
  146. data/lib/decidim/participatory_processes/admin_engine.rb +49 -1
  147. data/lib/decidim/participatory_processes/api.rb +11 -0
  148. data/lib/decidim/participatory_processes/engine.rb +90 -8
  149. data/lib/decidim/participatory_processes/participatory_space.rb +47 -24
  150. data/lib/decidim/participatory_processes/query_extensions.rb +18 -20
  151. data/lib/decidim/participatory_processes/test/factories.rb +15 -2
  152. data/lib/decidim/participatory_processes/version.rb +1 -1
  153. metadata +65 -22
  154. data/app/functions/decidim/participatory_processes/participatory_process_finder.rb +0 -10
  155. data/app/functions/decidim/participatory_processes/participatory_process_list.rb +0 -11
  156. data/app/types/decidim/participatory_processes/participatory_process_group_type.rb +0 -20
  157. data/app/types/decidim/participatory_processes/participatory_process_step_type.rb +0 -28
  158. data/app/types/decidim/participatory_processes/participatory_process_type.rb +0 -54
@@ -4,22 +4,8 @@
4
4
  <div class="row collapse">
5
5
  <div class="row small-up-1 smallmedium-up-2 mediumlarge-up-3
6
6
  large-up-4 card-grid">
7
- <% highlighted_processes.each do |process| %>
8
- <div class="column">
9
- <%= link_to decidim_participatory_processes.participatory_process_path(process), class: "card card--process card--mini" do %>
10
- <div aria-hidden="true" class="card__image-top"
11
- style="background-image:url(<%= process.hero_image.url %>)"></div>
12
- <div class="card__content">
13
- <span class="card__title card__link"><%= translated_attribute process.title %></span>
14
- <% if process.active_step %>
15
- <span class="card--process__small">
16
- <%= t("active_step", scope: i18n_scope) %>
17
- <strong><%= translated_attribute process.active_step.title %></strong>
18
- </span>
19
- <% end %>
20
- </div>
21
- <% end %>
22
- </div>
7
+ <% highlighted_items.each do |item| %>
8
+ <%= card_for item, size: :s %>
23
9
  <% end %>
24
10
  </div>
25
11
  </div>
@@ -1,43 +1,47 @@
1
- <% process = highlighted_processes.first %>
1
+ <% process = highlighted_items.first %>
2
2
  <% title_id = "process_title" %>
3
3
  <section class="wrapper-home home-section">
4
4
  <div class="row" id="highlighted-processes">
5
5
  <h3 class="section-heading"><%= t("active_processes", scope: i18n_scope) %></h3>
6
6
  <div class="row collapse">
7
- <div class="card card--full card--process">
8
- <div class="row collapse card--process__row">
9
- <div class="column large-6 card--process__column">
10
- <div class="card__content">
11
- <%= link_to decidim_participatory_processes.participatory_process_path(process), class: "card__link" do %>
12
- <h2 class="card__title" id="<%= title_id %>"><%= decidim_html_escape(translated_attribute(process.title)) %></h2>
13
- <% end %>
14
- <%= decidim_sanitize translated_attribute(process.short_description) %>
15
- <%= link_to decidim_participatory_processes.participatory_process_path(process), class: "button small hollow" do %>
16
- <span class="show-for-sr"><%= decidim_html_escape(translated_attribute(process.title)) %></span>
17
- <%= t("more_information", scope: i18n_scope) %>
18
- <% end %>
7
+ <% if process.is_a? Decidim::ParticipatoryProcessGroup %>
8
+ <%= render partial: "decidim/participatory_processes/participatory_processes/promoted_process_group.html", locals: { promoted_process_group: process } %>
9
+ <% else %>
10
+ <div class="card card--full card--process">
11
+ <div class="row collapse card--process__row">
12
+ <div class="column large-6 card--process__column">
13
+ <div class="card__content">
14
+ <%= link_to decidim_participatory_processes.participatory_process_path(process), class: "card__link" do %>
15
+ <h2 class="card__title" id="<%= title_id %>"><%= decidim_html_escape(translated_attribute(process.title)) %></h2>
16
+ <% end %>
17
+ <%= decidim_sanitize translated_attribute(process.short_description) %>
18
+ <%= link_to decidim_participatory_processes.participatory_process_path(process), class: "button small hollow" do %>
19
+ <span class="show-for-sr"><%= decidim_html_escape(translated_attribute(process.title)) %></span>
20
+ <%= t("more_information", scope: i18n_scope) %>
21
+ <% end %>
22
+ </div>
19
23
  </div>
20
- </div>
21
- <div class="column large-6 card--process__column">
22
- <div class="card--full__image" style="background-image:url(<%= process.hero_image.url %>)">
23
- <div class="card__content row collapse">
24
- <div class="large-6 large-offset-6 columns">
25
- <%= link_to decidim_participatory_processes.participatory_process_path(process), class: "button expanded button--sc" do %>
26
- <span class="show-for-sr"><%= t("participate_in", resource_name: translated_attribute(process.title), scope: i18n_scope) %></span>
27
- <span aria-hidden="true"><%= t("participate", scope: i18n_scope) %></span>
28
- <% if process.active_step %>
29
- <span class="button__info">
30
- <%= t("active_step", scope: i18n_scope) %>
31
- <strong><%= translated_attribute process.active_step.title %></strong>
32
- </span>
24
+ <div class="column large-6 card--process__column">
25
+ <div class="card--full__image" style="background-image:url(<%= process.hero_image.url %>)">
26
+ <div class="card__content row collapse">
27
+ <div class="large-6 large-offset-6 columns">
28
+ <%= link_to decidim_participatory_processes.participatory_process_path(process), class: "button expanded button--sc" do %>
29
+ <span class="show-for-sr"><%= t("participate_in", resource_name: translated_attribute(process.title), scope: i18n_scope) %></span>
30
+ <span aria-hidden="true"><%= t("participate", scope: i18n_scope) %></span>
31
+ <% if process.active_step %>
32
+ <span class="button__info">
33
+ <%= t("active_step", scope: i18n_scope) %>
34
+ <strong><%= translated_attribute process.active_step.title %></strong>
35
+ </span>
36
+ <% end %>
33
37
  <% end %>
34
- <% end %>
38
+ </div>
35
39
  </div>
36
40
  </div>
37
41
  </div>
38
42
  </div>
39
43
  </div>
40
- </div>
44
+ <% end %>
41
45
  </div>
42
46
  </div>
43
47
  <%= render "_all_processes" %>
@@ -4,32 +4,33 @@ module Decidim
4
4
  module ParticipatoryProcesses
5
5
  module ContentBlocks
6
6
  class HighlightedProcessesCell < Decidim::ViewModel
7
+ include Decidim::ApplicationHelper
7
8
  include Decidim::SanitizeHelper
9
+ include Decidim::CardHelper
10
+ include Cell::ViewModel::Partial
11
+ include ParticipatoryProcessHelper
12
+ include Decidim::ParticipatoryProcesses::Engine.routes.url_helpers
8
13
 
9
14
  delegate :current_user, to: :controller
10
15
 
11
16
  def show
12
- if single_process?
17
+ if single_item?
13
18
  render "single_process"
14
- elsif highlighted_processes.any?
19
+ elsif highlighted_items.any?
15
20
  render
16
21
  end
17
22
  end
18
23
 
19
- def single_process?
20
- highlighted_processes.to_a.length == 1
24
+ def single_item?
25
+ highlighted_items.length == 1
21
26
  end
22
27
 
23
28
  def max_results
24
29
  model.settings.max_results
25
30
  end
26
31
 
27
- def highlighted_processes
28
- @highlighted_processes ||= (
29
- OrganizationPublishedParticipatoryProcesses.new(current_organization, current_user) |
30
- HighlightedParticipatoryProcesses.new |
31
- FilteredParticipatoryProcesses.new("active")
32
- ).query.includes([:organization]).limit(max_results)
32
+ def highlighted_items
33
+ @highlighted_items ||= promoted_groups + highlighted_processes
33
34
  end
34
35
 
35
36
  def i18n_scope
@@ -39,6 +40,28 @@ module Decidim
39
40
  def decidim_participatory_processes
40
41
  Decidim::ParticipatoryProcesses::Engine.routes.url_helpers
41
42
  end
43
+
44
+ private
45
+
46
+ def highlighted_processes
47
+ @highlighted_processes ||= if highlighted_processes_max_results.zero?
48
+ []
49
+ else
50
+ (
51
+ OrganizationPublishedParticipatoryProcesses.new(current_organization, current_user) |
52
+ HighlightedParticipatoryProcesses.new |
53
+ FilteredParticipatoryProcesses.new("active")
54
+ ).query.includes([:organization]).limit(highlighted_processes_max_results)
55
+ end
56
+ end
57
+
58
+ def promoted_groups
59
+ @promoted_groups ||= (OrganizationParticipatoryProcessGroups.new(current_organization) | PromotedParticipatoryProcessGroups.new).query.limit(max_results)
60
+ end
61
+
62
+ def highlighted_processes_max_results
63
+ @highlighted_processes_max_results ||= max_results - promoted_groups.count
64
+ end
42
65
  end
43
66
  end
44
67
  end
@@ -0,0 +1,3 @@
1
+ <% elements.each do |element| %>
2
+ <%= card_for element %>
3
+ <% end %>
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ # This cell renders a set of filtered participatory processes from a base
6
+ # relation provided by the model
7
+ #
8
+ # The `model` must be a relation of participatory processes
9
+ #
10
+ # Available options:
11
+ #
12
+ # - `default_date_filter` => The date filter to use if not given by
13
+ # params. If not provided is inferred from the model relation
14
+ #
15
+ # Example:
16
+ #
17
+ # cell(
18
+ # "decidim/participatory_processes/filtered_participatory_processes",
19
+ # group.participatory_processes.published,
20
+ # date_filter: "active"
21
+ # )
22
+ class FilteredParticipatoryProcessesCell < Decidim::ViewModel
23
+ include Decidim::FilterResource
24
+ include Decidim::CardHelper
25
+
26
+ def elements
27
+ @elements ||= search.results
28
+ end
29
+
30
+ private
31
+
32
+ def search_klass
33
+ Decidim::ParticipatoryProcesses::ParticipatoryProcessSearch
34
+ end
35
+
36
+ def default_search_params
37
+ {
38
+ base_relation: model,
39
+ date: default_date_filter
40
+ }
41
+ end
42
+
43
+ def default_date_filter
44
+ @default_date_filter ||= options[:default_filter].presence || if model.any?(&:active?)
45
+ "active"
46
+ elsif model.any?(&:upcoming?)
47
+ "upcoming"
48
+ elsif model.any?(&:past?)
49
+ "past"
50
+ else
51
+ "all"
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -12,7 +12,12 @@ module Decidim
12
12
  private
13
13
 
14
14
  def card_size
15
- "decidim/participatory_processes/process_m"
15
+ case @options[:size]
16
+ when :s
17
+ "decidim/participatory_processes/process_s"
18
+ else
19
+ "decidim/participatory_processes/process_m"
20
+ end
16
21
  end
17
22
  end
18
23
  end
@@ -3,7 +3,7 @@
3
3
  module Decidim
4
4
  module ParticipatoryProcesses
5
5
  class ProcessFiltersCell < Decidim::ViewModel
6
- ALL_FILTERS = %w(active past upcoming all).freeze
6
+ ALL_FILTERS = %w(active upcoming past all).freeze
7
7
 
8
8
  def filter_link(filter)
9
9
  Decidim::ParticipatoryProcesses::Engine
@@ -12,7 +12,12 @@ module Decidim
12
12
  private
13
13
 
14
14
  def card_size
15
- "decidim/participatory_processes/process_group_m"
15
+ case @options[:size]
16
+ when :s
17
+ "decidim/participatory_processes/process_group_s"
18
+ else
19
+ "decidim/participatory_processes/process_group_m"
20
+ end
16
21
  end
17
22
  end
18
23
  end
@@ -16,7 +16,7 @@ module Decidim
16
16
  end
17
17
 
18
18
  def title
19
- translated_attribute model.name
19
+ translated_attribute model.title
20
20
  end
21
21
 
22
22
  def resource_path
@@ -36,10 +36,12 @@ module Decidim
36
36
  end
37
37
 
38
38
  def processes_count_status
39
+ # rubocop: disable Style/StringConcatenation
39
40
  content_tag(
40
41
  :strong,
41
42
  t("layouts.decidim.participatory_process_groups.participatory_process_group.processes_count")
42
43
  ) + " " + processes_visible_for_user
44
+ # rubocop: enable Style/StringConcatenation
43
45
  end
44
46
 
45
47
  def processes_visible_for_user
@@ -0,0 +1 @@
1
+ <div aria-hidden="true" class="card__image-top" style="background-image:url(<%= resource_image_path %>)"></div>
@@ -0,0 +1,8 @@
1
+ <div class="column" id="<%= dom_id(model) %>">
2
+ <%= link_to resource_path, class: "card card--process card--stack card--mini" do %>
3
+ <%= render :image if has_image? %>
4
+ <div class="card__content">
5
+ <span class="card__title card__link"><%= title %></span>
6
+ </div>
7
+ <% end %>
8
+ </div>
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ # This cell renders the Small (:s) process group card
6
+ # for an given instance of a ParticipatoryProcessGroup
7
+ class ProcessGroupSCell < Decidim::CardMCell
8
+ private
9
+
10
+ def has_image?
11
+ model.hero_image.url.present?
12
+ end
13
+
14
+ def resource_path
15
+ Decidim::ParticipatoryProcesses::Engine.routes.url_helpers.participatory_process_group_path(model)
16
+ end
17
+
18
+ def resource_image_path
19
+ model.hero_image.url
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1 @@
1
+ <div aria-hidden="true" class="card__image-top" style="background-image:url(<%= resource_image_path %>)"></div>
@@ -0,0 +1,14 @@
1
+ <div class="column" id="<%= dom_id(model) %>">
2
+ <%= link_to resource_path, class: "card card--process card--mini" do %>
3
+ <%= render :image if has_image? %>
4
+ <div class="card__content">
5
+ <span class="card__title card__link"><%= title %></span>
6
+ <% if has_step? %>
7
+ <span class="card--process__small">
8
+ <%= t("active_step", scope: i18n_scope) %>
9
+ <strong><%= step_title %></strong>
10
+ </span>
11
+ <% end %>
12
+ </div>
13
+ <% end %>
14
+ </div>
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ # This cell renders the Small (:s) process card
6
+ # for an given instance of a ParticipatoryProcess
7
+ class ProcessSCell < Decidim::CardMCell
8
+ private
9
+
10
+ def has_image?
11
+ model.hero_image.url.present?
12
+ end
13
+
14
+ def has_step?
15
+ model.active_step.present?
16
+ end
17
+
18
+ def resource_path
19
+ Decidim::ParticipatoryProcesses::Engine.routes.url_helpers.participatory_process_path(model)
20
+ end
21
+
22
+ def resource_image_path
23
+ model.hero_image.url
24
+ end
25
+
26
+ def step_title
27
+ translated_attribute model.active_step.title
28
+ end
29
+
30
+ def i18n_scope
31
+ "decidim.participatory_processes.pages.home.highlighted_processes"
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,9 +1,9 @@
1
- <div class="process-stats__data">
2
- <span class="process-stats__number">
1
+ <div class="space-stats__data">
2
+ <span class="space-stats__number">
3
3
  <%= stat_number %>
4
4
  </span>
5
5
 
6
- <h4 class="process-stats__title">
6
+ <h4 class="space-stats__title">
7
7
  <%= stat_title %>
8
8
  </h4>
9
9
  </div>
@@ -5,7 +5,7 @@
5
5
  <%= stats_heading %>
6
6
  </h3>
7
7
 
8
- <div class="process-stats">
8
+ <div class="space-stats">
9
9
  <% if model.present? %>
10
10
  <%= cell("decidim/participatory_processes/statistic", collection: model) %>
11
11
  <% else %>
@@ -44,6 +44,7 @@ module Decidim
44
44
  organization: form.current_organization,
45
45
  title: form.title,
46
46
  subtitle: form.subtitle,
47
+ weight: form.weight,
47
48
  slug: form.slug,
48
49
  hashtag: form.hashtag,
49
50
  description: form.description,
@@ -6,6 +6,8 @@ module Decidim
6
6
  # A command with all the business logic when creating a new participatory
7
7
  # process admin in the system.
8
8
  class CreateParticipatoryProcessAdmin < NotifyRoleAssignedToParticipatoryProcess
9
+ include ::Decidim::Admin::CreateParticipatorySpaceAdminUserActions
10
+
9
11
  # Public: Initializes the command.
10
12
  #
11
13
  # form - A form object with the params.
@@ -15,33 +17,12 @@ module Decidim
15
17
  def initialize(form, current_user, participatory_process)
16
18
  @form = form
17
19
  @current_user = current_user
18
- @participatory_process = participatory_process
19
- end
20
-
21
- # Executes the command. Broadcasts these events:
22
- #
23
- # - :ok when everything is valid.
24
- # - :invalid if the form wasn't valid and we couldn't proceed.
25
- #
26
- # Returns nothing.
27
- def call
28
- return broadcast(:invalid) if form.invalid?
29
-
30
- ActiveRecord::Base.transaction do
31
- @user = existing_user || new_user
32
- existing_role || create_role
33
- add_admin_as_follower
34
- end
35
-
36
- broadcast(:ok)
37
- rescue ActiveRecord::RecordInvalid
38
- form.errors.add(:email, :taken)
39
- broadcast(:invalid)
20
+ @participatory_space = participatory_process
40
21
  end
41
22
 
42
23
  private
43
24
 
44
- attr_reader :form, :participatory_process, :current_user, :user
25
+ attr_reader :form, :participatory_space, :current_user, :user
45
26
 
46
27
  def create_role
47
28
  extra_info = {
@@ -52,7 +33,7 @@ module Decidim
52
33
  role_params = {
53
34
  role: form.role.to_sym,
54
35
  user: user,
55
- participatory_process: @participatory_process
36
+ participatory_process: participatory_space
56
37
  }
57
38
 
58
39
  Decidim.traceability.create!(
@@ -65,60 +46,11 @@ module Decidim
65
46
  end
66
47
 
67
48
  def existing_role
68
- Decidim::ParticipatoryProcessUserRole.find_by(
49
+ Decidim::ParticipatoryProcessUserRole.exists?(
69
50
  role: form.role.to_sym,
70
51
  user: user,
71
- participatory_process: @participatory_process
72
- )
73
- end
74
-
75
- def existing_user
76
- return @existing_user if defined?(@existing_user)
77
-
78
- @existing_user = User.find_by(
79
- email: form.email,
80
- organization: participatory_process.organization
52
+ participatory_process: participatory_space
81
53
  )
82
-
83
- InviteUserAgain.call(@existing_user, invitation_instructions) if @existing_user && !@existing_user.invitation_accepted?
84
-
85
- @existing_user
86
- end
87
-
88
- def new_user
89
- @new_user ||= InviteUser.call(user_form) do
90
- on(:ok) do |user|
91
- return user
92
- end
93
- end
94
- end
95
-
96
- def user_form
97
- OpenStruct.new(name: form.name,
98
- email: form.email.downcase,
99
- organization: participatory_process.organization,
100
- admin: false,
101
- invited_by: current_user,
102
- invitation_instructions: invitation_instructions)
103
- end
104
-
105
- def invitation_instructions
106
- return "invite_admin" if form.role == "admin"
107
-
108
- "invite_collaborator"
109
- end
110
-
111
- def add_admin_as_follower
112
- return if user.follows?(participatory_process)
113
-
114
- form = Decidim::FollowForm
115
- .from_params(followable_gid: participatory_process.to_signed_global_id.to_s)
116
- .with_context(
117
- current_organization: participatory_process.organization,
118
- current_user: user
119
- )
120
-
121
- Decidim::CreateFollow.new(form, user).call
122
54
  end
123
55
  end
124
56
  end