decidim-participatory_processes 0.21.0 → 0.22.0

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes/_all_processes.erb +4 -1
  3. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes/show.erb +5 -9
  4. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes/single_process.erb +10 -5
  5. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes_cell.rb +1 -1
  6. data/app/cells/decidim/participatory_processes/process_filters/show.erb +2 -2
  7. data/app/cells/decidim/participatory_processes/process_group_m/footer.erb +4 -5
  8. data/app/cells/decidim/participatory_processes/process_m/data.erb +1 -1
  9. data/app/cells/decidim/participatory_processes/process_m/footer.erb +5 -6
  10. data/app/cells/decidim/participatory_processes/process_m/tags.erb +2 -2
  11. data/app/cells/decidim/participatory_processes/process_m_cell.rb +2 -0
  12. data/app/cells/decidim/participatory_processes/statistics/show.erb +2 -2
  13. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_admin.rb +2 -1
  14. data/app/commands/decidim/participatory_processes/admin/notify_role_assigned_to_participatory_process.rb +22 -0
  15. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_admin.rb +3 -1
  16. data/app/controllers/decidim/participatory_processes/participatory_processes_controller.rb +11 -2
  17. data/app/events/decidim/participatory_process_role_assigned_event.rb +28 -0
  18. data/app/presenters/decidim/participatory_processes/participatory_process_metric_charts_presenter.rb +2 -2
  19. data/app/queries/decidim/participatory_processes/stats_participants_count.rb +2 -2
  20. data/app/views/decidim/participatory_process_steps/_participatory_process_step.html.erb +1 -1
  21. data/app/views/decidim/participatory_processes/participatory_process_groups/show.html.erb +3 -2
  22. data/app/views/decidim/participatory_processes/participatory_process_steps/index.html.erb +8 -3
  23. data/app/views/decidim/participatory_processes/participatory_processes/_metrics.html.erb +1 -1
  24. data/app/views/decidim/participatory_processes/participatory_processes/_promoted_process.html.erb +7 -5
  25. data/app/views/decidim/participatory_processes/participatory_processes/_statistics.html.erb +0 -0
  26. data/app/views/decidim/participatory_processes/participatory_processes/show.html.erb +23 -11
  27. data/app/views/layouts/decidim/_process_header.html.erb +1 -1
  28. data/app/views/layouts/decidim/_process_header_steps.html.erb +1 -1
  29. data/config/locales/bg-BG.yml +19 -0
  30. data/config/locales/ca.yml +19 -1
  31. data/config/locales/cs.yml +26 -8
  32. data/config/locales/da-DK.yml +1 -0
  33. data/config/locales/de.yml +49 -0
  34. data/config/locales/el.yml +452 -0
  35. data/config/locales/en.yml +19 -1
  36. data/config/locales/es-MX.yml +18 -0
  37. data/config/locales/es-PY.yml +18 -0
  38. data/config/locales/es.yml +18 -0
  39. data/config/locales/et-EE.yml +1 -0
  40. data/config/locales/fi-plain.yml +18 -0
  41. data/config/locales/fi.yml +90 -72
  42. data/config/locales/fr-CA.yml +453 -0
  43. data/config/locales/fr.yml +26 -0
  44. data/config/locales/ga-IE.yml +1 -0
  45. data/config/locales/hr-HR.yml +1 -0
  46. data/config/locales/it.yml +28 -2
  47. data/config/locales/ja-JP.yml +445 -0
  48. data/config/locales/lt-LT.yml +1 -0
  49. data/config/locales/lv-LV.yml +445 -0
  50. data/config/locales/mt-MT.yml +1 -0
  51. data/config/locales/nl.yml +26 -0
  52. data/config/locales/no.yml +147 -136
  53. data/config/locales/pl.yml +54 -5
  54. data/config/locales/pt-BR.yml +1 -1
  55. data/config/locales/pt.yml +169 -120
  56. data/config/locales/ro-RO.yml +461 -0
  57. data/config/locales/sk-SK.yml +451 -0
  58. data/config/locales/sk.yml +451 -0
  59. data/config/locales/sl.yml +5 -0
  60. data/config/locales/sr-CS.yml +33 -0
  61. data/config/locales/sv.yml +151 -112
  62. data/db/migrate/20200320105908_index_foreign_keys_in_decidim_attachments.rb +7 -0
  63. data/db/migrate/20200320105924_index_foreign_keys_in_decidim_participatory_process_user_roles.rb +7 -0
  64. data/db/migrate/20200320105925_index_foreign_keys_in_decidim_participatory_processes.rb +8 -0
  65. data/db/seeds/city.jpeg +0 -0
  66. data/db/seeds/city2.jpeg +0 -0
  67. data/lib/decidim/participatory_processes/participatory_space.rb +5 -1
  68. data/lib/decidim/participatory_processes/version.rb +1 -1
  69. metadata +29 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2d739759631aca0408a7ae0aba4ff332eae1e0f2f0da9687baa753fdecfb1882
4
- data.tar.gz: 5db3ca8acfbc423b83176a45dd67bc6b24083824264b367ccdc7b603b1b8bb68
3
+ metadata.gz: 4c87d3748ed5ddda107431eccbde08c257a669a9b0b6b87010cfc6dd1f6f5450
4
+ data.tar.gz: 5a984b08e37fb702a0f8cc425189782e7acc298fe0f933d02b68c2f171ec9106
5
5
  SHA512:
6
- metadata.gz: 71fd380d50a0bf51fac1e84ee82de34dae3c8412ddac11e7f102d91809f928af6c6d62e58c2809649067aeabcdbf8fb4992831a37876567f372901d177809b06
7
- data.tar.gz: c33eca9c58ce8cb093178232584a70916ccc314920de56443475abf129363d94e0f8cd86840ad1ae29536cbadbb8252b490ddaa93ce88002e613fd6432d00e97
6
+ metadata.gz: 04cb2351dd62f27e32155fe620953c7524216925686bef5be09d6fe30bfdebcdc12d45a79e577f414438c06cee0bc0a7f8396976386058bc2f40a21e5e21baa5
7
+ data.tar.gz: 30dbc6a09f4f3f5c5f417b0a1c9be50c4bca044b415aea17364dd9623bd86f4c188635528e87f74a9d4ed97a0cb8a0f8142eed1706415f3264118d9237585eb7
@@ -1,6 +1,9 @@
1
1
  <div class="row" id="see-all-processes">
2
2
  <div class="columns small-centered small-12
3
3
  smallmedium-8 medium-6 large-4">
4
- <%= link_to t("see_all_processes", scope: i18n_scope), decidim_participatory_processes.participatory_processes_path, class: "button expanded hollow button--sc home-section__cta" %>
4
+ <%= link_to t("see_all_processes", scope: i18n_scope),
5
+ decidim_participatory_processes.participatory_processes_path,
6
+ class: "button expanded hollow button--sc home-section__cta",
7
+ title: t("processes_button_title", scope: i18n_scope) %>
5
8
  </div>
6
9
  </div>
@@ -6,15 +6,11 @@
6
6
  large-up-4 card-grid">
7
7
  <% highlighted_processes.each do |process| %>
8
8
  <div class="column">
9
- <article class="card card--process card--mini">
10
- <%= link_to decidim_participatory_processes.participatory_process_path(process), class: "card__link" do %>
11
- <div class="card__image-top"
12
- style="background-image:url(<%= process.hero_image.url %>)"></div>
13
- <% end %>
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>
14
12
  <div class="card__content">
15
- <%= link_to decidim_participatory_processes.participatory_process_path(process), class: "card__link" do %>
16
- <h4 class="card__title"><%= translated_attribute process.title %></h4>
17
- <% end %>
13
+ <span class="card__title card__link"><%= translated_attribute process.title %></span>
18
14
  <% if process.active_step %>
19
15
  <span class="card--process__small">
20
16
  <%= t("active_step", scope: i18n_scope) %>
@@ -22,7 +18,7 @@
22
18
  </span>
23
19
  <% end %>
24
20
  </div>
25
- </article>
21
+ <% end %>
26
22
  </div>
27
23
  <% end %>
28
24
  </div>
@@ -1,17 +1,21 @@
1
1
  <% process = highlighted_processes.first %>
2
+ <% title_id = "process_title" %>
2
3
  <section class="wrapper-home home-section">
3
4
  <div class="row" id="highlighted-processes">
4
5
  <h3 class="section-heading"><%= t("active_processes", scope: i18n_scope) %></h3>
5
6
  <div class="row collapse">
6
- <article class="card card--full card--process">
7
+ <div class="card card--full card--process">
7
8
  <div class="row collapse card--process__row">
8
9
  <div class="column large-6 card--process__column">
9
10
  <div class="card__content">
10
11
  <%= link_to decidim_participatory_processes.participatory_process_path(process), class: "card__link" do %>
11
- <h2 class="card__title"><%= translated_attribute process.title %></h2>
12
+ <h2 class="card__title" id="<%= title_id %>"><%= decidim_html_escape(translated_attribute(process.title)) %></h2>
12
13
  <% end %>
13
14
  <%= decidim_sanitize translated_attribute(process.short_description) %>
14
- <%= link_to t("more_information", scope: i18n_scope), decidim_participatory_processes.participatory_process_path(process), class: "button secondary small hollow" %>
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 %>
15
19
  </div>
16
20
  </div>
17
21
  <div class="column large-6 card--process__column">
@@ -19,7 +23,8 @@
19
23
  <div class="card__content row collapse">
20
24
  <div class="large-6 large-offset-6 columns">
21
25
  <%= link_to decidim_participatory_processes.participatory_process_path(process), class: "button expanded button--sc" do %>
22
- <%= t("participate", scope: i18n_scope) %>
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>
23
28
  <% if process.active_step %>
24
29
  <span class="button__info">
25
30
  <%= t("active_step", scope: i18n_scope) %>
@@ -32,7 +37,7 @@
32
37
  </div>
33
38
  </div>
34
39
  </div>
35
- </article>
40
+ </div>
36
41
  </div>
37
42
  </div>
38
43
  <%= render "_all_processes" %>
@@ -29,7 +29,7 @@ module Decidim
29
29
  OrganizationPublishedParticipatoryProcesses.new(current_organization, current_user) |
30
30
  HighlightedParticipatoryProcesses.new |
31
31
  FilteredParticipatoryProcesses.new("active")
32
- ).query.limit(max_results)
32
+ ).query.includes([:organization]).limit(max_results)
33
33
  end
34
34
 
35
35
  def i18n_scope
@@ -1,8 +1,8 @@
1
1
  <div class="row collapse order-by">
2
- <h2 class="order-by__text section-heading">
2
+ <h3 class="order-by__text section-heading">
3
3
  <%= title %>
4
4
  <%= render :filter_tabs %>
5
- </h2>
5
+ </h3>
6
6
  </div>
7
7
  <% if process_count_by_filter["active"] == 0 && process_count_by_filter["upcoming"] == 0 %>
8
8
  <div class="row column">
@@ -1,9 +1,8 @@
1
1
  <div class="card__footer card__footer--spaces">
2
2
  <div class="card__support">
3
- <%= link_to(
4
- t("layouts.decidim.participatory_process_groups.participatory_process_group.browse"),
5
- resource_path,
6
- class: "card__button button button--sc secondary light small"
7
- ) %>
3
+ <%= link_to(resource_path, class: "card__button button button--sc small") do %>
4
+ <span class="show-for-sr"><%= t("browse_resource", resource_name: title, scope: "layouts.decidim.participatory_process_groups.participatory_process_group") %></span>
5
+ <%= t("layouts.decidim.participatory_process_groups.participatory_process_group.browse") %>
6
+ <% end %>
8
7
  </div>
9
8
  </div>
@@ -1,7 +1,7 @@
1
1
  <div class="card__icondata">
2
2
  <ul class="card-data">
3
3
  <li class="card-data__item">
4
- <%= icon "datetime", class: "icon--big" %>
4
+ <%= icon "datetime", class: "icon--big", role: "img", aria_label: t("decidim.participatory_processes.show.dates") %>
5
5
  </li>
6
6
  <li class="card-data__item">
7
7
  <div class="card-data__item--centerblock">
@@ -2,14 +2,13 @@
2
2
  <div class="card__support">
3
3
  <% if has_step? %>
4
4
  <div class="card__support__data--left">
5
- <div class="text-uppercase"><%= t("layouts.decidim.participatory_processes.participatory_process.active_step") %></div>
5
+ <div><%= t("layouts.decidim.participatory_processes.participatory_process.active_step") %></div>
6
6
  <div class="text-ellipsis"><strong><%= step_title %></strong></div>
7
7
  </div>
8
8
  <% end %>
9
- <%= link_to(
10
- t(model.cta_button_text_key, scope: "layouts.decidim.participatory_processes.participatory_process"),
11
- resource_path,
12
- class: "card__button button button--sc secondary light small"
13
- ) %>
9
+ <%= link_to(resource_path, class: "card__button button button--sc small") do %>
10
+ <span class="show-for-sr"><%= t(model.cta_button_text_key_accessible, resource_name: title, scope: "layouts.decidim.participatory_processes.participatory_process") %></span>
11
+ <%= t(model.cta_button_text_key, scope: "layouts.decidim.participatory_processes.participatory_process") %>
12
+ <% end %>
14
13
  </div>
15
14
  </div>
@@ -1,7 +1,7 @@
1
1
  <% if model.hashtag.present? %>
2
2
  <%= link_to(
3
- "##{model.hashtag}",
4
- "https://twitter.com/hashtag/#{model.hashtag}",
3
+ "##{decidim_html_escape(model.hashtag)}",
4
+ "https://twitter.com/hashtag/#{decidim_html_escape(model.hashtag)}",
5
5
  class: "card__text--category",
6
6
  target: "_blank"
7
7
  ) %>
@@ -5,6 +5,8 @@ module Decidim
5
5
  # This cell renders the Medium (:m) process card
6
6
  # for an given instance of a Process
7
7
  class ProcessMCell < Decidim::CardMCell
8
+ include Decidim::SanitizeHelper
9
+
8
10
  private
9
11
 
10
12
  def has_image?
@@ -1,9 +1,9 @@
1
1
  <section class="row statistics" id="participatory_process-statistics">
2
2
  <div class="columns large-8">
3
3
  <div class="row column">
4
- <h4 class="section-heading">
4
+ <h3 class="section-heading">
5
5
  <%= stats_heading %>
6
- </h4>
6
+ </h3>
7
7
 
8
8
  <div class="process-stats">
9
9
  <% if model.present? %>
@@ -5,7 +5,7 @@ module Decidim
5
5
  module Admin
6
6
  # A command with all the business logic when creating a new participatory
7
7
  # process admin in the system.
8
- class CreateParticipatoryProcessAdmin < Rectify::Command
8
+ class CreateParticipatoryProcessAdmin < NotifyRoleAssignedToParticipatoryProcess
9
9
  # Public: Initializes the command.
10
10
  #
11
11
  # form - A form object with the params.
@@ -61,6 +61,7 @@ module Decidim
61
61
  role_params,
62
62
  extra_info
63
63
  )
64
+ send_notification user
64
65
  end
65
66
 
66
67
  def existing_role
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module Admin
6
+ # A command to notify users when a role is assigned for a participatory process
7
+ class NotifyRoleAssignedToParticipatoryProcess < Rectify::Command
8
+ def send_notification(user)
9
+ Decidim::EventsManager.publish(
10
+ event: "decidim.events.participatory_process.role_assigned",
11
+ event_class: Decidim::ParticipatoryProcessRoleAssignedEvent,
12
+ resource: form.current_participatory_space,
13
+ affected_users: [user],
14
+ extra: {
15
+ role: form.role
16
+ }
17
+ )
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -5,7 +5,7 @@ module Decidim
5
5
  module Admin
6
6
  # A command with all the business logic when updated a participatory
7
7
  # process admin in the system.
8
- class UpdateParticipatoryProcessAdmin < Rectify::Command
8
+ class UpdateParticipatoryProcessAdmin < NotifyRoleAssignedToParticipatoryProcess
9
9
  # Public: Initializes the command.
10
10
  #
11
11
  # form - A form object with the params.
@@ -47,6 +47,8 @@ module Decidim
47
47
  { role: form.role },
48
48
  extra_info
49
49
  )
50
+
51
+ send_notification user_role.user
50
52
  end
51
53
  end
52
54
  end
@@ -15,7 +15,8 @@ module Decidim
15
15
  :stats,
16
16
  :metrics,
17
17
  :default_date_filter,
18
- :related_processes
18
+ :related_processes,
19
+ :linked_assemblies
19
20
 
20
21
  def index
21
22
  raise ActionController::RoutingError, "Not Found" if published_processes.none?
@@ -29,7 +30,11 @@ module Decidim
29
30
  end
30
31
 
31
32
  def all_metrics
32
- enforce_permission_to :read, :process, process: current_participatory_space
33
+ if current_participatory_space.show_statistics
34
+ enforce_permission_to :read, :process, process: current_participatory_space
35
+ else
36
+ render status: :not_found
37
+ end
33
38
  end
34
39
 
35
40
  private
@@ -106,6 +111,10 @@ module Decidim
106
111
  .published
107
112
  .all
108
113
  end
114
+
115
+ def linked_assemblies
116
+ @linked_assemblies ||= current_participatory_space.linked_participatory_space_resources(:assembly, "included_participatory_processes").public_spaces
117
+ end
109
118
  end
110
119
  end
111
120
  end
@@ -0,0 +1,28 @@
1
+ # frozen-string_literal: true
2
+
3
+ module Decidim
4
+ class ParticipatoryProcessRoleAssignedEvent < Decidim::Events::SimpleEvent
5
+ include Decidim::Events::NotificationEvent
6
+ include Decidim::Events::AuthorEvent
7
+
8
+ def notification_title
9
+ I18n.t("notification_title", i18n_options).html_safe
10
+ end
11
+
12
+ def i18n_role
13
+ I18n.t(extra["role"], "decidim.admin.models.participatory_process_user_role.roles", default: extra["role"])
14
+ end
15
+
16
+ def i18n_options
17
+ {
18
+ resource_path: resource_path,
19
+ resource_title: resource_title,
20
+ resource_url: resource_url,
21
+ scope: event_name,
22
+ participatory_space_title: participatory_space_title,
23
+ participatory_space_url: participatory_space_url,
24
+ role: i18n_role
25
+ }
26
+ end
27
+ end
28
+ end
@@ -8,8 +8,8 @@ module Decidim
8
8
 
9
9
  def params
10
10
  capture do
11
- concat(content_tag(:input, nil, type: :hidden, id: :"metrics-space_type", value: participatory_process.class))
12
- concat(content_tag(:input, nil, type: :hidden, id: :"metrics-space_id", value: participatory_process.id))
11
+ concat(hidden_field_tag(:metrics_space_type, value: participatory_process.class, id: :"metrics-space_type"))
12
+ concat(hidden_field_tag(:metrics_space_id, value: participatory_process.id, id: :"metrics-space_id"))
13
13
  end
14
14
  end
15
15
 
@@ -49,8 +49,8 @@ module Decidim
49
49
  end
50
50
 
51
51
  def endorsements_query
52
- Decidim::Proposals::ProposalEndorsement
53
- .where(proposal: proposals_components)
52
+ Decidim::Endorsement
53
+ .where(resource: space_components)
54
54
  .pluck(:decidim_author_id)
55
55
  .uniq
56
56
  end
@@ -7,7 +7,7 @@
7
7
  <span class="timeline__date text-small">
8
8
  <%= participatory_space_helpers.step_dates(participatory_process_step) %>
9
9
  </span>
10
- <h6 class="timeline__title heading6"><%= translated_attribute(participatory_process_step.title) %></h6>
10
+ <h4 class="timeline__title heading4"><%= translated_attribute(participatory_process_step.title) %></h4>
11
11
  </div>
12
12
  <div class="timeline__content">
13
13
  <%= translated_attribute(participatory_process_step.description).html_safe %>
@@ -1,6 +1,7 @@
1
+ <% add_decidim_page_title(translated_attribute(group.name)) %>
1
2
  <% add_decidim_meta_tags(title: t("participatory_process_groups.show.title", scope: "decidim")) %>
2
3
 
3
- <main class="wrapper">
4
+ <div class="wrapper">
4
5
  <section id="processes-grid" class="section row collapse">
5
6
  <h1 class="section-heading"><%= t("participatory_process_groups.show.group_participatory_processes", scope: "decidim", count: participatory_processes.count, group: translated_attribute(group.name)) %></h1>
6
7
  <div class="row small-up-1 medium-up-2 large-up-3 card-grid">
@@ -8,4 +9,4 @@
8
9
  </div>
9
10
  </section>
10
11
  <%= render_participatory_processes_hook(:process_group_highlighted_elements) %>
11
- </main>
12
+ </div>
@@ -1,14 +1,19 @@
1
1
  <% add_decidim_page_title(t("participatory_process_steps.index.title", scope: "decidim")) %>
2
2
 
3
- <main class="steps">
3
+ <div class="steps">
4
4
  <div class="row column">
5
5
  <div class="row">
6
6
  <div class="columns mediumlarge-9 large-7">
7
7
  <div class="section">
8
- <h4 class="section-heading"><%= t("participatory_process_steps.index.process_steps", scope: "decidim") %></h4>
8
+ <%= link_to participatory_process_path(current_participatory_space), class: "small hollow" do %>
9
+ <%= icon "chevron-left", class: "icon--small", role: "img", "aria-hidden": true %>
10
+ <%= t(".back_to_process") %>
11
+ <% end %>
12
+
13
+ <h3 class="section-heading"><%= t("participatory_process_steps.index.process_steps", scope: "decidim") %></h3>
9
14
  <%= render partial: "timeline" %>
10
15
  </div>
11
16
  </div>
12
17
  </div>
13
18
  </div>
14
- </main>
19
+ </div>
@@ -1,5 +1,5 @@
1
1
  <div class="section" id="metrics">
2
- <h4 class="section-heading"><%= t("decidim.pages.participatory_space.metrics.headline", name: translated_attribute(current_participatory_space.title)) %></h4>
2
+ <h3 class="section-heading"><%= t("decidim.pages.participatory_space.metrics.headline", name: translated_attribute(current_participatory_space.title)) %></h3>
3
3
  <%= metrics.params %>
4
4
  <div class="row mb-sm">
5
5
  <%= metrics.highlighted %>
@@ -1,12 +1,13 @@
1
- <article class="card card--full card--process">
1
+ <div class="card card--full card--process">
2
2
  <div class="row collapse card--process__row">
3
3
  <div class="columns mediumlarge-8 large-6 card--process__column">
4
4
  <div class="card__content">
5
5
  <%= link_to participatory_process_path(promoted_process), class: "card__link" do %>
6
- <h2 class="card__title"><%= translated_attribute promoted_process.title %></h2>
6
+ <h2 class="card__title"><%= decidim_html_escape(translated_attribute(promoted_process.title)) %></h2>
7
7
  <% end %>
8
8
  <%= decidim_sanitize html_truncate(translated_attribute(promoted_process.short_description), length: 630, separator: "...") %>
9
- <%= link_to participatory_process_path(promoted_process), class: "button secondary small hollow card__button" do %>
9
+ <%= link_to participatory_process_path(promoted_process), class: "button small hollow card__button" do %>
10
+ <span class="show-for-sr"><%= decidim_html_escape(translated_attribute(promoted_process.title)) %></span>
10
11
  <%= t("participatory_processes.promoted_process.more_info", scope: "layouts.decidim") %>
11
12
  <% end %>
12
13
  </div>
@@ -17,7 +18,8 @@
17
18
  <div class="card__content row collapse">
18
19
  <div class="large-6 large-offset-6 columns">
19
20
  <%= link_to participatory_process_path(promoted_process), class: "button expanded button--sc" do %>
20
- <%= t(promoted_process.cta_button_text_key, scope: "layouts.decidim.participatory_processes.promoted_process") %>
21
+ <span class="show-for-sr"><%= t(promoted_process.cta_button_text_key_accessible, resource_name: translated_attribute(promoted_process.title), scope: "layouts.decidim.participatory_processes.promoted_process") %></span>
22
+ <span aria-hidden="true"><%= t(promoted_process.cta_button_text_key, scope: "layouts.decidim.participatory_processes.promoted_process") %></span>
21
23
  <% if promoted_process.active_step %>
22
24
  <span class="button__info">
23
25
  <%= t("participatory_processes.promoted_process.active_step", scope: "layouts.decidim") %> <%= translated_attribute promoted_process.active_step.title %>
@@ -29,4 +31,4 @@
29
31
  </div>
30
32
  </div>
31
33
  </div>
32
- </article>
34
+ </div>
@@ -1,17 +1,17 @@
1
1
  <% add_decidim_meta_tags({
2
- image_url: current_participatory_space.hero_image.url,
3
- description: translated_attribute(current_participatory_space.short_description),
4
- url: participatory_process_url(current_participatory_space),
5
- twitter_handler: current_organization.twitter_handler
6
- }) %>
2
+ image_url: current_participatory_space.hero_image.url,
3
+ description: translated_attribute(current_participatory_space.short_description),
4
+ url: participatory_process_url(current_participatory_space),
5
+ twitter_handler: current_organization.twitter_handler
6
+ }) %>
7
7
 
8
8
  <%
9
- edit_link(
10
- resource_locator(current_participatory_space).edit,
11
- :update,
12
- :process,
13
- process: current_participatory_space
14
- )
9
+ edit_link(
10
+ resource_locator(current_participatory_space).edit,
11
+ :update,
12
+ :process,
13
+ process: current_participatory_space
14
+ )
15
15
  %>
16
16
 
17
17
  <%= participatory_space_floating_help %>
@@ -48,6 +48,18 @@ edit_link(
48
48
  </div>
49
49
  </div>
50
50
  <% end %>
51
+
52
+ <% if linked_assemblies.any? %>
53
+ <div class="section">
54
+ <h4 class="section-heading"><%= t("participatory_process.show.related_assemblies", scope: "decidim") %></h4>
55
+ <div class="row small-up-1 medium-up-2 card-grid">
56
+ <% linked_assemblies.each do |linked_assembly| %>
57
+ <%= card_for(linked_assembly) %>
58
+ <% end %>
59
+ </div>
60
+ </div>
61
+ <% end %>
62
+
51
63
  </div>
52
64
  <div class="section columns medium-5 mediumlarge-4 large-3">
53
65
  <div class="card extra">