decidim-assemblies 0.23.5 → 0.24.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/assemblies/assembly_m_cell.rb +2 -0
  3. data/app/cells/decidim/assemblies/statistic/show.erb +9 -0
  4. data/app/cells/decidim/assemblies/statistic_cell.rb +20 -0
  5. data/app/cells/decidim/assemblies/statistics/show.erb +17 -0
  6. data/app/cells/decidim/assemblies/statistics_cell.rb +18 -0
  7. data/app/commands/decidim/assemblies/admin/create_assembly.rb +1 -0
  8. data/app/commands/decidim/assemblies/admin/update_assembly.rb +2 -1
  9. data/app/controllers/decidim/assemblies/admin/imports_controller.rb +14 -0
  10. data/app/controllers/decidim/assemblies/admin/moderations/reports_controller.rb +14 -0
  11. data/app/controllers/decidim/assemblies/assemblies_controller.rb +1 -1
  12. data/app/forms/decidim/assemblies/admin/assembly_form.rb +3 -0
  13. data/app/helpers/decidim/assemblies/admin/assemblies_admin_menu_helper.rb +15 -0
  14. data/app/models/decidim/assembly.rb +3 -3
  15. data/app/presenters/decidim/assemblies/assembly_stats_presenter.rb +35 -25
  16. data/app/queries/decidim/assemblies/organization_assemblies.rb +1 -1
  17. data/app/queries/decidim/assemblies/organization_published_assemblies.rb +1 -1
  18. data/app/serializers/decidim/assemblies/assembly_serializer.rb +1 -0
  19. data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +4 -0
  20. data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +11 -1
  21. data/app/views/decidim/assemblies/admin/assemblies_types/index.html.erb +1 -1
  22. data/app/views/decidim/assemblies/assemblies/show.html.erb +1 -1
  23. data/app/views/layouts/decidim/admin/assemblies.html.erb +2 -20
  24. data/app/views/layouts/decidim/admin/assembly.html.erb +2 -1
  25. data/config/locales/ar.yml +2 -1
  26. data/config/locales/ca.yml +9 -3
  27. data/config/locales/cs.yml +11 -5
  28. data/config/locales/de.yml +9 -3
  29. data/config/locales/el.yml +2 -4
  30. data/config/locales/en.yml +9 -3
  31. data/config/locales/es-MX.yml +9 -3
  32. data/config/locales/es-PY.yml +9 -3
  33. data/config/locales/es.yml +9 -3
  34. data/config/locales/eu.yml +2 -1
  35. data/config/locales/fi-plain.yml +8 -2
  36. data/config/locales/fi.yml +8 -2
  37. data/config/locales/fr-CA.yml +9 -3
  38. data/config/locales/fr.yml +9 -3
  39. data/config/locales/gl.yml +8 -6
  40. data/config/locales/hu.yml +2 -4
  41. data/config/locales/id-ID.yml +2 -1
  42. data/config/locales/is-IS.yml +1 -1
  43. data/config/locales/it.yml +2 -4
  44. data/config/locales/ja.yml +4 -3
  45. data/config/locales/lv.yml +2 -4
  46. data/config/locales/nl.yml +9 -3
  47. data/config/locales/no.yml +2 -4
  48. data/config/locales/pl.yml +10 -4
  49. data/config/locales/pt-BR.yml +2 -1
  50. data/config/locales/pt.yml +2 -4
  51. data/config/locales/ro-RO.yml +6 -3
  52. data/config/locales/ru.yml +2 -1
  53. data/config/locales/sk.yml +0 -3
  54. data/config/locales/sl.yml +2 -1
  55. data/config/locales/sr-CS.yml +0 -3
  56. data/config/locales/sv.yml +8 -3
  57. data/config/locales/tr-TR.yml +2 -4
  58. data/config/locales/uk.yml +2 -1
  59. data/config/locales/zh-CN.yml +2 -4
  60. data/db/migrate/20210204152393_add_weight_field_to_assembly.rb +7 -0
  61. data/db/migrate/20210310120444_add_followable_counter_cache_to_assemblies.rb +16 -0
  62. data/lib/decidim/api/assemblies_type_type.rb +16 -0
  63. data/lib/decidim/api/assembly_member_type.rb +28 -0
  64. data/lib/decidim/api/assembly_type.rb +64 -0
  65. data/lib/decidim/assemblies.rb +1 -0
  66. data/lib/decidim/assemblies/admin_engine.rb +31 -1
  67. data/lib/decidim/assemblies/api.rb +9 -0
  68. data/lib/decidim/assemblies/engine.rb +3 -5
  69. data/lib/decidim/assemblies/participatory_space.rb +38 -38
  70. data/lib/decidim/assemblies/query_extensions.rb +39 -20
  71. data/lib/decidim/assemblies/test/factories.rb +5 -4
  72. data/lib/decidim/assemblies/version.rb +1 -1
  73. metadata +23 -14
  74. data/app/types/decidim/assemblies/assemblies_type_type.rb +0 -17
  75. data/app/types/decidim/assemblies/assembly_member_type.rb +0 -29
  76. data/app/types/decidim/assemblies/assembly_type.rb +0 -67
  77. data/app/views/decidim/assemblies/assemblies/_statistics.html.erb +0 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b2b886c349514104d6708e53a42e773ea634b719df96f236db3bf7ed1d41cc4d
4
- data.tar.gz: fba8a685d7f34805f95fa241b7a4fdbbeeaeb5bbd146479d49d2bcffb451b178
3
+ metadata.gz: f1cdccdc43b87cca1180a3e753329bb0b99f74e55d57fe1d4d2e2550fdec0723
4
+ data.tar.gz: d03ca1b004aa6d853693201af27edb9b5759c68af86fd0f0a588b39be0a5f9ad
5
5
  SHA512:
6
- metadata.gz: 51e58e11bdfae61a0afdda8f1f56d12315cb2aa6bdcacc86a71f02ffd30d959ca8862e5fc7765c665bdf67c4cd698b5b2fbe488dde0130c2fdbe872cfe88aa58
7
- data.tar.gz: c243f7be5e48040946d0a0a85f3a266cfb79aff514a5f5ebb77332eb0ccb342a4105f351f9168b2dda60f95c2d11561805ff1f5712983da12c86d8af00bc17b8
6
+ metadata.gz: 9a9c07f3f332c9a6182e26cab5370c43674e2fa7400363732460e4e787b20fa5eb53d585ac896896996841a498fd3aa95c70599b522fd9e0f178689260c31ab4
7
+ data.tar.gz: 5d3531576102d1fa52c8226adfd7613319ad825f5e10af7153fbcc05ede1d5afc4ba9a513020dfd4e0e1b0af275764df06a92485510791672a07f7e500a6a60e
@@ -41,10 +41,12 @@ module Decidim
41
41
  end
42
42
 
43
43
  def children_count_status
44
+ # rubocop: disable Style/StringConcatenation
44
45
  content_tag(
45
46
  :strong,
46
47
  t("layouts.decidim.assemblies.index.children")
47
48
  ) + " " + children_assemblies_visible_for_user
49
+ # rubocop: enable Style/StringConcatenation
48
50
  end
49
51
 
50
52
  def children_assemblies_visible_for_user
@@ -0,0 +1,9 @@
1
+ <div class="space-stats__data">
2
+ <span class="space-stats__number">
3
+ <%= stat_number %>
4
+ </span>
5
+
6
+ <h4 class="space-stats__title">
7
+ <%= stat_title %>
8
+ </h4>
9
+ </div>
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Assemblies
5
+ # This cell renders a Statistic of a Assemblies
6
+ class StatisticCell < Decidim::ViewModel
7
+ include ActionView::Helpers::NumberHelper
8
+
9
+ private
10
+
11
+ def stat_number
12
+ number_with_delimiter(model[:stat_number])
13
+ end
14
+
15
+ def stat_title
16
+ t(model[:stat_title], scope: "decidim.assemblies.statistics")
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ <section class="row statistics" id="participatory_process-statistics">
2
+ <div class="columns large-8">
3
+ <div class="row column">
4
+ <h3 class="section-heading">
5
+ <%= stats_heading %>
6
+ </h3>
7
+
8
+ <div class="space-stats">
9
+ <% if model.present? %>
10
+ <%= cell("decidim/assemblies/statistic", collection: model) %>
11
+ <% else %>
12
+ <span class="muted"><%= no_stats %></span>
13
+ <% end %>
14
+ </div>
15
+ </div>
16
+ </div>
17
+ </section>
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Assemblies
5
+ # This cell renders the Statistics of an Assembly
6
+ class StatisticsCell < Decidim::ViewModel
7
+ private
8
+
9
+ def stats_heading
10
+ t("statistics.headline", scope: "decidim.assemblies")
11
+ end
12
+
13
+ def no_stats
14
+ t("statistics.no_stats", scope: "decidim.assemblies")
15
+ end
16
+ end
17
+ end
18
+ end
@@ -45,6 +45,7 @@ module Decidim
45
45
  organization: form.current_organization,
46
46
  title: form.title,
47
47
  subtitle: form.subtitle,
48
+ weight: form.weight,
48
49
  slug: form.slug,
49
50
  hashtag: form.hashtag,
50
51
  description: form.description,
@@ -94,7 +94,8 @@ module Decidim
94
94
  facebook_handler: form.facebook_handler,
95
95
  instagram_handler: form.instagram_handler,
96
96
  youtube_handler: form.youtube_handler,
97
- github_handler: form.github_handler
97
+ github_handler: form.github_handler,
98
+ weight: form.weight
98
99
  }.merge(uploader_attributes)
99
100
  end
100
101
 
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Assemblies
5
+ module Admin
6
+ # This controller allows importing things.
7
+ # It is targeted for customizations for importing things that lives under
8
+ # an assembly.
9
+ class ImportsController < Decidim::Admin::ImportsController
10
+ include Concerns::AssemblyAdmin
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Assemblies
5
+ module Admin
6
+ module Moderations
7
+ # This controller allows admins to manage moderation reports in an assembly.
8
+ class ReportsController < Decidim::Admin::Moderations::ReportsController
9
+ include Concerns::AssemblyAdmin
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -77,7 +77,7 @@ module Decidim
77
77
  end
78
78
 
79
79
  def parent_assemblies
80
- search.results.parent_assemblies.order(promoted: :desc)
80
+ search.results.parent_assemblies.order(weight: :asc, promoted: :desc)
81
81
  end
82
82
 
83
83
  def stats
@@ -45,6 +45,7 @@ module Decidim
45
45
  attribute :parent_id, Integer
46
46
  attribute :participatory_processes_ids, Array[Integer]
47
47
  attribute :scope_id, Integer
48
+ attribute :weight, Integer, default: 0
48
49
 
49
50
  attribute :is_transparent, Boolean
50
51
  attribute :promoted, Boolean
@@ -79,6 +80,8 @@ module Decidim
79
80
  validates :banner_image, passthru: { to: Decidim::Assembly }
80
81
  validates :hero_image, passthru: { to: Decidim::Assembly }
81
82
 
83
+ validates :weight, presence: true
84
+
82
85
  alias organization current_organization
83
86
 
84
87
  def ensure_parent_cannot_be_child
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Assemblies
5
+ module Admin
6
+ module AssembliesAdminMenuHelper
7
+ include Decidim::Admin::SidebarMenuHelper
8
+
9
+ def admin_assemblies_menu
10
+ @admin_assemblies_menu ||= sidebar_menu(:admin_assemblies_menu)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -67,7 +67,7 @@ module Decidim
67
67
  has_many :components, as: :participatory_space, dependent: :destroy
68
68
 
69
69
  has_many :children, foreign_key: "parent_id", class_name: "Decidim::Assembly", inverse_of: :parent, dependent: :destroy
70
- belongs_to :parent, foreign_key: "parent_id", class_name: "Decidim::Assembly", inverse_of: :children, optional: true, counter_cache: :children_count
70
+ belongs_to :parent, class_name: "Decidim::Assembly", inverse_of: :children, optional: true, counter_cache: :children_count
71
71
 
72
72
  validates_upload :hero_image
73
73
  mount_uploader :hero_image, Decidim::HeroImageUploader
@@ -215,9 +215,9 @@ module Decidim
215
215
  # rubocop:disable Rails/SkipsModelValidations
216
216
  def update_children_paths
217
217
  self.class.where(
218
- ["#{self.class.table_name}.parents_path <@ :old_path AND #{self.class.table_name}.id != :id", old_path: parents_path_before_last_save, id: id]
218
+ ["#{self.class.table_name}.parents_path <@ :old_path AND #{self.class.table_name}.id != :id", { old_path: parents_path_before_last_save, id: id }]
219
219
  ).update_all(
220
- ["parents_path = :new_path || subpath(parents_path, nlevel(:old_path))", new_path: parents_path, old_path: parents_path_before_last_save]
220
+ ["parents_path = :new_path || subpath(parents_path, nlevel(:old_path))", { new_path: parents_path, old_path: parents_path_before_last_save }]
221
221
  )
222
222
  end
223
223
  # rubocop:enable Rails/SkipsModelValidations
@@ -2,46 +2,56 @@
2
2
 
3
3
  module Decidim
4
4
  module Assemblies
5
- # A presenter to render statistics in the homepage.
5
+ # A presenter to render statistics in an Assembly.
6
6
  class AssemblyStatsPresenter < Rectify::Presenter
7
7
  attribute :assembly, Decidim::Assembly
8
- include IconHelper
8
+ include Decidim::IconHelper
9
9
 
10
- # Public: Render a collection of primary stats.
11
- def highlighted
12
- highlighted_stats = component_stats(priority: StatsRegistry::HIGH_PRIORITY)
13
- highlighted_stats = highlighted_stats.concat(component_stats(priority: StatsRegistry::MEDIUM_PRIORITY))
10
+ # Public: returns a collection of stats (Hash) for the Assembly Home.
11
+ def collection
12
+ highlighted_stats = assembly_participants_stats
13
+ highlighted_stats.concat(assembly_followers_stats(priority: StatsRegistry::HIGH_PRIORITY))
14
+ highlighted_stats.concat(component_stats(priority: StatsRegistry::HIGH_PRIORITY))
15
+ highlighted_stats.concat(component_stats(priority: StatsRegistry::MEDIUM_PRIORITY))
14
16
  highlighted_stats = highlighted_stats.reject(&:empty?)
15
- highlighted_stats = highlighted_stats.reject { |_manifest, _name, data| data.zero? }
16
- grouped_highlighted_stats = highlighted_stats.group_by { |stats| stats.first.name }
17
-
18
- safe_join(
19
- grouped_highlighted_stats.map do |_manifest_name, stats|
20
- content_tag :div, class: "process_stats-item" do
21
- safe_join(
22
- stats.each_with_index.map do |stat, index|
23
- render_stats_data(stat[0], stat[1], stat[2], index)
24
- end
25
- )
17
+ highlighted_stats = highlighted_stats.reject { |_stat_manifest, _stat_title, stat_number| stat_number.zero? }
18
+ grouped_highlighted_stats = highlighted_stats.group_by(&:first)
19
+
20
+ statistics = []
21
+ grouped_highlighted_stats.each do |_manifest_name, stats|
22
+ stats.each_with_index.each do |stat, _index|
23
+ stat.each_with_index.map do |_item, subindex|
24
+ next unless (subindex % 3).zero?
25
+ next if stat[subindex + 2].zero?
26
+
27
+ statistics << { stat_title: stat[subindex + 1], stat_number: stat[subindex + 2] }
26
28
  end
27
29
  end
28
- )
30
+ end
31
+ statistics
29
32
  end
30
33
 
31
34
  private
32
35
 
36
+ def assembly_participants_stats
37
+ Decidim.stats.only([:participants_count]).with_context(assembly)
38
+ .map { |stat_title, stat_number| [assembly.manifest.name, stat_title, stat_number] }
39
+ end
40
+
33
41
  def component_stats(conditions)
34
42
  Decidim.component_manifests.map do |component_manifest|
35
- component_manifest.stats.filter(conditions).with_context(published_components).map { |name, data| [component_manifest, name, data] }.flatten
43
+ component_manifest.stats.except([:proposals_accepted])
44
+ .filter(conditions)
45
+ .with_context(published_components)
46
+ .map { |stat_title, stat_number| [component_manifest.name, stat_title, stat_number] }.flatten
36
47
  end
37
48
  end
38
49
 
39
- def render_stats_data(component_manifest, name, data, index)
40
- safe_join([
41
- index.zero? ? manifest_icon(component_manifest, role: "img", "aria-hidden": true) : " /&nbsp".html_safe,
42
- content_tag(:span, "#{number_with_delimiter(data)} " + I18n.t(name, scope: "decidim.assemblies.statistics"),
43
- class: "#{name} process_stats-text")
44
- ])
50
+ def assembly_followers_stats(conditions)
51
+ Decidim.stats.only([:followers_count])
52
+ .filter(conditions)
53
+ .with_context(assembly)
54
+ .map { |stat_title, stat_number| [assembly.manifest.name, stat_title, stat_number] }
45
55
  end
46
56
 
47
57
  def published_components
@@ -9,7 +9,7 @@ module Decidim
9
9
  end
10
10
 
11
11
  def query
12
- Decidim::Assembly.where(organization: @organization)
12
+ Decidim::Assembly.where(organization: @organization).order(weight: :asc)
13
13
  end
14
14
  end
15
15
  end
@@ -14,7 +14,7 @@ module Decidim
14
14
  OrganizationAssemblies.new(@organization),
15
15
  PublishedAssemblies.new,
16
16
  VisibleAssemblies.new(@user)
17
- ).query
17
+ ).query.order(weight: :asc)
18
18
  end
19
19
  end
20
20
  end
@@ -22,6 +22,7 @@ module Decidim
22
22
  decidim_organization_id: assembly.decidim_organization_id,
23
23
  title: assembly.title,
24
24
  subtitle: assembly.subtitle,
25
+ weight: assembly.weight,
25
26
  short_description: assembly.short_description,
26
27
  description: assembly.description,
27
28
  remote_hero_image_url: Decidim::Assemblies::AssemblyPresenter.new(assembly).hero_image_url,
@@ -14,6 +14,10 @@
14
14
  <%= form.translated :text_field, :subtitle %>
15
15
  </div>
16
16
 
17
+ <div class="row column">
18
+ <%= form.number_field :weight %>
19
+ </div>
20
+
17
21
  <div class="row">
18
22
  <div class="columns xlarge-6 slug">
19
23
  <%= form.text_field :slug %>
@@ -65,7 +65,7 @@
65
65
  <% end %>
66
66
  </td>
67
67
  <td>
68
- <%= l(assembly.creation_date, format: :decidim_short) if assembly.creation_date %>
68
+ <%= l(assembly.created_at, format: :short) %>
69
69
  </td>
70
70
  <td class="table-list__state">
71
71
  <% if assembly.private_space? %>
@@ -84,14 +84,20 @@
84
84
  <td class="table-list__actions">
85
85
  <% if allowed_to? :create, :assembly, assembly: assembly %>
86
86
  <%= icon_link_to "data-transfer-download", assembly_export_path(assembly), t("actions.export", scope: "decidim.admin"), method: :post, class: "action-icon--export" %>
87
+ <% else %>
88
+ <span class="action-space icon"></span>
87
89
  <% end %>
88
90
 
89
91
  <% if allowed_to? :create, :assembly, assembly: assembly %>
90
92
  <%= icon_link_to "clipboard", new_assembly_copy_path(assembly), t("actions.duplicate", scope: "decidim.admin"), class: "action-icon--copy" %>
93
+ <% else %>
94
+ <span class="action-space icon"></span>
91
95
  <% end %>
92
96
 
93
97
  <% if allowed_to? :update, :assembly, assembly: assembly %>
94
98
  <%= icon_link_to "pencil", edit_assembly_path(assembly), t("actions.configure", scope: "decidim.admin"), class: "action-icon--new" %>
99
+ <% else %>
100
+ <span class="action-space icon"></span>
95
101
  <% end %>
96
102
 
97
103
  <% if assembly.children.count.positive? || allowed_to?(:create, :assembly) %>
@@ -99,10 +105,14 @@
99
105
  url_for(query_params_with(parent_id_eq: assembly.id)),
100
106
  t("decidim.admin.titles.assemblies"),
101
107
  class: "action-icon--dial #{'highlighted' if assembly.children.count.positive?}" %>
108
+ <% else %>
109
+ <span class="action-space icon"></span>
102
110
  <% end %>
103
111
 
104
112
  <% if allowed_to? :preview, :assembly, assembly: assembly %>
105
113
  <%= icon_link_to "eye", decidim_assemblies.assembly_path(assembly), t("actions.preview", scope: "decidim.admin"), class: "action-icon--preview" %>
114
+ <% else %>
115
+ <span class="action-space icon"></span>
106
116
  <% end %>
107
117
  </td>
108
118
  </tr>
@@ -3,7 +3,7 @@
3
3
  <h2 class="card-title">
4
4
  <%= t "decidim.admin.titles.assemblies_types" %>
5
5
  <%= link_to t("actions.new_assembly_type", scope: "decidim.admin"),
6
- ["new", "assemblies_type"],
6
+ [:new, :assemblies_type],
7
7
  class: "button tiny button--title" if allowed_to? :create, :assembly_type %>
8
8
  </h2>
9
9
  </div>
@@ -214,7 +214,7 @@ edit_link(
214
214
  </div>
215
215
 
216
216
  <% if current_participatory_space.show_statistics? %>
217
- <%= render partial: "statistics" %>
217
+ <%= cell "decidim/assemblies/statistics", stats.collection %>
218
218
  <% end %>
219
219
  </div>
220
220
 
@@ -1,23 +1,5 @@
1
- <% content_for :secondary_nav do %>
2
- <div class="secondary-nav secondary-nav--subnav">
3
- <ul>
4
- <% if allowed_to?(:read, :assembly_list) %>
5
- <li <% if is_active_link?(decidim_admin_assemblies.assemblies_path) %> class="is-active" <% end %>>
6
- <%= aria_selected_link_to I18n.t("menu.assemblies", scope: "decidim.admin"), decidim_admin_assemblies.assemblies_path %>
7
- </li>
8
- <% end %>
9
- <% if allowed_to?(:manage, :assemblies_type) %>
10
- <li <% if is_active_link?(decidim_admin_assemblies.assemblies_types_path) %> class="is-active" <% end %>>
11
- <%= aria_selected_link_to I18n.t("menu.assemblies_types", scope: "decidim.admin"), decidim_admin_assemblies.assemblies_types_path %>
12
- </li>
13
- <% end %>
14
- <% if allowed_to?(:read, :assemblies_setting) %>
15
- <li <% if is_active_link?(decidim_admin_assemblies.edit_assemblies_settings_path) %> class="is-active" <% end %>>
16
- <%= aria_selected_link_to I18n.t("menu.assemblies_settings", scope: "decidim.admin"), decidim_admin_assemblies.edit_assemblies_settings_path %>
17
- </li>
18
- <% end %>
19
- </ul>
20
- </div>
1
+ <% content_for :sidebar_menu_nav do %>
2
+ <%= admin_assemblies_menu.render %>
21
3
  <% end %>
22
4
 
23
5
  <%= render "layouts/decidim/admin/application" do %>
@@ -13,7 +13,7 @@
13
13
  <ul id="components-list">
14
14
  <% current_participatory_space.components.each do |component| %>
15
15
  <% if component.manifest.admin_engine && user_role_config.component_is_accessible?(component.manifest_name) %>
16
- <li <% if is_active_link?(manage_component_path(component)) || is_active_link?(decidim_admin_assemblies.edit_component_path(current_participatory_space, component)) || is_active_link?(decidim_admin_assemblies.edit_component_permissions_path(current_participatory_space, component)) %> class="is-active" <% end %>>
16
+ <li <% if is_active_link?(manage_component_path(component)) || is_active_link?(decidim_admin_assemblies.edit_component_path(current_participatory_space, component)) || is_active_link?(decidim_admin_assemblies.edit_component_permissions_path(current_participatory_space, component)) || participatory_space_active_link?(component) %> class="is-active" <% end %>>
17
17
  <%= link_to manage_component_path(component) do %>
18
18
  <%= translated_attribute component.name %>
19
19
  <% if component.primary_stat.present? %>
@@ -68,6 +68,7 @@
68
68
  <%= aria_selected_link_to t("moderations", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.moderations_path(current_participatory_space) %>
69
69
  </li>
70
70
  <% end %>
71
+ <%= Decidim::Admin.view_hooks.render(:admin_secondary_nav, deep_dup) %>
71
72
  </ul>
72
73
  </div>
73
74
  <% end %>