decidim-assemblies 0.15.2 → 0.16.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.
- checksums.yaml +4 -4
- data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +1 -10
- data/app/controllers/decidim/assemblies/assemblies_controller.rb +8 -2
- data/app/helpers/decidim/assemblies/assemblies_helper.rb +2 -0
- data/app/helpers/decidim/assemblies/filter_assemblies_helper.rb +24 -0
- data/app/models/decidim/assembly.rb +13 -12
- data/app/permissions/decidim/assemblies/permissions.rb +7 -12
- data/app/queries/decidim/assemblies/filtered_assemblies.rb +28 -0
- data/app/queries/decidim/assemblies/visible_assemblies.rb +5 -2
- data/app/views/decidim/assemblies/_filter_by_type.html.erb +13 -0
- data/app/views/decidim/assemblies/admin/assemblies/edit.html.erb +0 -4
- data/app/views/decidim/assemblies/assemblies/_count.html.erb +1 -0
- data/app/views/decidim/assemblies/assemblies/_statistics.html.erb +1 -1
- data/app/views/decidim/assemblies/assemblies/index.html.erb +11 -3
- data/app/views/decidim/assemblies/assemblies/index.js.erb +5 -0
- data/app/views/decidim/assemblies/assemblies/show.html.erb +3 -1
- data/app/views/layouts/decidim/_assembly_header.html.erb +8 -54
- data/app/views/layouts/decidim/_assembly_navigation.html.erb +24 -0
- data/app/views/layouts/decidim/assembly.html.erb +1 -1
- data/config/locales/ca.yml +19 -4
- data/config/locales/de.yml +19 -4
- data/config/locales/en.yml +20 -5
- data/config/locales/es-PY.yml +19 -4
- data/config/locales/es.yml +19 -4
- data/config/locales/eu.yml +19 -4
- data/config/locales/fi-pl.yml +19 -4
- data/config/locales/fi.yml +19 -4
- data/config/locales/fr.yml +19 -4
- data/config/locales/gl.yml +19 -4
- data/config/locales/hu.yml +20 -5
- data/config/locales/id-ID.yml +19 -7
- data/config/locales/it.yml +20 -5
- data/config/locales/nl.yml +19 -4
- data/config/locales/pl.yml +19 -4
- data/config/locales/pt-BR.yml +19 -4
- data/config/locales/pt.yml +19 -4
- data/config/locales/ru.yml +1 -5
- data/config/locales/sv.yml +20 -5
- data/config/locales/tr-TR.yml +19 -8
- data/config/locales/uk.yml +1 -5
- data/lib/decidim/assemblies/admin_engine.rb +1 -1
- data/lib/decidim/assemblies/engine.rb +9 -6
- data/lib/decidim/assemblies/test/factories.rb +16 -0
- data/lib/decidim/assemblies/version.rb +1 -1
- metadata +15 -10
- data/app/views/decidim/assemblies/_order_by_assemblies.html.erb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93623b3d750202db5ba682221675d92c5abe68884ad81f3838bb695ae6b1bcf1
|
4
|
+
data.tar.gz: 22bd1c3b11d93e20a77aded79e1b5258e07af3f301d37d7f2038a8c685318eab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da27795b25811e8c8d0e45e69f28071ca169761a08953814908f670bcd41e297b2bc8af431904f9f6a6b504441468589103a2b0b83d7ba6371b969b6a0a4a5f7
|
7
|
+
data.tar.gz: 64d33448389d1dcc36026959a49b6056b2c19e3581d3dd0316f578eba89d691820afdcfb76b64e13a5eb1c02a738a00fee417e2a3a4fef12d41e4260c40f6b0b
|
@@ -9,7 +9,7 @@ module Decidim
|
|
9
9
|
helper_method :current_assembly, :parent_assembly, :parent_assemblies, :current_participatory_space
|
10
10
|
layout "decidim/admin/assemblies"
|
11
11
|
|
12
|
-
before_action :set_all_assemblies, except: [:index
|
12
|
+
before_action :set_all_assemblies, except: [:index]
|
13
13
|
|
14
14
|
def index
|
15
15
|
enforce_permission_to :read, :assembly_list
|
@@ -65,15 +65,6 @@ module Decidim
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
-
def destroy
|
69
|
-
enforce_permission_to :destroy, :assembly, assembly: current_assembly
|
70
|
-
current_assembly.destroy!
|
71
|
-
|
72
|
-
flash[:notice] = I18n.t("assemblies.destroy.success", scope: "decidim.admin")
|
73
|
-
|
74
|
-
redirect_to assemblies_path
|
75
|
-
end
|
76
|
-
|
77
68
|
def copy
|
78
69
|
enforce_permission_to :create, :assembly
|
79
70
|
end
|
@@ -26,6 +26,12 @@ module Decidim
|
|
26
26
|
render "index"
|
27
27
|
end
|
28
28
|
|
29
|
+
format.js do
|
30
|
+
raise ActionController::RoutingError, "Not Found" if published_assemblies.none?
|
31
|
+
|
32
|
+
render "index"
|
33
|
+
end
|
34
|
+
|
29
35
|
format.json do
|
30
36
|
render json: published_assemblies.query.includes(:children).where(parent: nil).collect { |assembly|
|
31
37
|
{
|
@@ -43,7 +49,7 @@ module Decidim
|
|
43
49
|
end
|
44
50
|
|
45
51
|
def show
|
46
|
-
|
52
|
+
enforce_permission_to :read, :assembly, assembly: current_participatory_space
|
47
53
|
end
|
48
54
|
|
49
55
|
private
|
@@ -65,7 +71,7 @@ module Decidim
|
|
65
71
|
end
|
66
72
|
|
67
73
|
def parent_assemblies
|
68
|
-
@parent_assemblies ||= assemblies | ParentAssemblies.new
|
74
|
+
@parent_assemblies ||= assemblies | ParentAssemblies.new | FilteredAssemblies.new(params[:filter])
|
69
75
|
end
|
70
76
|
|
71
77
|
alias collection parent_assemblies
|
@@ -5,6 +5,8 @@ module Decidim
|
|
5
5
|
# Helpers related to the Assemblies layout.
|
6
6
|
module AssembliesHelper
|
7
7
|
include Decidim::ResourceHelper
|
8
|
+
include FilterAssembliesHelper
|
9
|
+
|
8
10
|
# Public: Returns the characteristics of an assembly in a readable format like
|
9
11
|
# "title: close, no public, no transparent and is restricted to the members of the assembly"
|
10
12
|
def participatory_processes_for_assembly(assembly_participatory_processes)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Assemblies
|
5
|
+
# Helpers related to the Assemblies filter by type.
|
6
|
+
module FilterAssembliesHelper
|
7
|
+
def available_filters
|
8
|
+
%w(all government executive consultative_advisory participatory working_group commission others)
|
9
|
+
end
|
10
|
+
|
11
|
+
def filter_link(filter)
|
12
|
+
link_to t(filter, scope: "decidim.assemblies.filter"), url_for(params.to_unsafe_h.merge(page: nil, filter: filter)), data: { filter: filter }, remote: true
|
13
|
+
end
|
14
|
+
|
15
|
+
def label_text
|
16
|
+
t("label", scope: "decidim.assemblies.filter")
|
17
|
+
end
|
18
|
+
|
19
|
+
def placeholder_text
|
20
|
+
t("placeholder", scope: "decidim.assemblies.filter")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -59,11 +59,14 @@ module Decidim
|
|
59
59
|
has_many :children, foreign_key: "parent_id", class_name: "Decidim::Assembly", inverse_of: :parent, dependent: :destroy
|
60
60
|
belongs_to :parent, foreign_key: "parent_id", class_name: "Decidim::Assembly", inverse_of: :children, optional: true, counter_cache: :children_count
|
61
61
|
|
62
|
+
mount_uploader :hero_image, Decidim::HeroImageUploader
|
63
|
+
mount_uploader :banner_image, Decidim::BannerImageUploader
|
64
|
+
|
62
65
|
validates :slug, uniqueness: { scope: :organization }
|
63
66
|
validates :slug, presence: true, format: { with: Decidim::Assembly.slug_format }
|
64
67
|
|
65
|
-
|
66
|
-
|
68
|
+
after_create :set_parents_path
|
69
|
+
after_update :set_parents_path, :update_children_paths, if: :saved_change_to_parent_id?
|
67
70
|
|
68
71
|
scope :visible_for, lambda { |user|
|
69
72
|
joins("LEFT JOIN decidim_participatory_space_private_users ON
|
@@ -72,8 +75,6 @@ module Decidim
|
|
72
75
|
or private_space = ? or (private_space = ? and is_transparent = ?)", true, user, false, true, true).distinct
|
73
76
|
}
|
74
77
|
|
75
|
-
after_create :set_parents_path
|
76
|
-
after_update :set_parents_path, :update_children_paths, if: :saved_change_to_parent_id?
|
77
78
|
# Scope to return only the promoted assemblies.
|
78
79
|
#
|
79
80
|
# Returns an ActiveRecord::Relation.
|
@@ -81,6 +82,14 @@ module Decidim
|
|
81
82
|
where(promoted: true)
|
82
83
|
end
|
83
84
|
|
85
|
+
def self.private_assemblies
|
86
|
+
where(private_space: true)
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.public_spaces
|
90
|
+
super.where(private_space: false).or(Decidim::Assembly.where(private_space: true).where(is_transparent: true))
|
91
|
+
end
|
92
|
+
|
84
93
|
def self.log_presenter_class_for(_log)
|
85
94
|
Decidim::Assemblies::AdminLog::AssemblyPresenter
|
86
95
|
end
|
@@ -101,14 +110,6 @@ module Decidim
|
|
101
110
|
self_and_ancestors.where.not(id: id)
|
102
111
|
end
|
103
112
|
|
104
|
-
def self.private_assemblies
|
105
|
-
where(private_space: true)
|
106
|
-
end
|
107
|
-
|
108
|
-
def self.public_spaces
|
109
|
-
super.where(private_space: false).or(Decidim::Assembly.where(private_space: true).where(is_transparent: true))
|
110
|
-
end
|
111
|
-
|
112
113
|
def can_participate?(user)
|
113
114
|
return true unless private_space?
|
114
115
|
return true if private_space? && users.include?(user)
|
@@ -31,7 +31,6 @@ module Decidim
|
|
31
31
|
user_can_read_assembly_list?
|
32
32
|
user_can_read_current_assembly?
|
33
33
|
user_can_create_assembly?
|
34
|
-
user_can_destroy_assembly?
|
35
34
|
|
36
35
|
# org admins and space admins can do everything in the admin section
|
37
36
|
org_admin_action?
|
@@ -83,11 +82,17 @@ module Decidim
|
|
83
82
|
[:assembly, :participatory_space].include?(permission_action.subject) &&
|
84
83
|
assembly
|
85
84
|
|
85
|
+
return disallow! if cannot_view_private_space
|
86
86
|
return allow! if user&.admin?
|
87
87
|
return allow! if assembly.published?
|
88
88
|
toggle_allow(can_manage_assembly?)
|
89
89
|
end
|
90
90
|
|
91
|
+
def cannot_view_private_space
|
92
|
+
return unless assembly.private_space && !assembly.is_transparent
|
93
|
+
!user || !user.admin && !assembly.users.include?(user)
|
94
|
+
end
|
95
|
+
|
91
96
|
def public_list_members_action?
|
92
97
|
return unless permission_action.action == :list &&
|
93
98
|
permission_action.subject == :members
|
@@ -137,14 +142,6 @@ module Decidim
|
|
137
142
|
toggle_allow(user.admin?)
|
138
143
|
end
|
139
144
|
|
140
|
-
# Only organization admins can destroy a assembly
|
141
|
-
def user_can_destroy_assembly?
|
142
|
-
return unless permission_action.action == :destroy &&
|
143
|
-
permission_action.subject == :assembly
|
144
|
-
|
145
|
-
toggle_allow(user.admin?)
|
146
|
-
end
|
147
|
-
|
148
145
|
# Everyone can read the assembly list
|
149
146
|
def user_can_read_assembly_list?
|
150
147
|
return unless read_assembly_list_permission_action?
|
@@ -174,14 +171,12 @@ module Decidim
|
|
174
171
|
|
175
172
|
# Process admins can eprform everything *inside* that assembly. They cannot
|
176
173
|
# create a assembly or perform actions on assembly groups or other
|
177
|
-
# assemblies.
|
174
|
+
# assemblies.
|
178
175
|
def assembly_admin_action?
|
179
176
|
return unless can_manage_assembly?(role: :admin)
|
180
177
|
return if user.admin?
|
181
178
|
return disallow! if permission_action.action == :create &&
|
182
179
|
permission_action.subject == :assembly
|
183
|
-
return disallow! if permission_action.action == :destroy &&
|
184
|
-
permission_action.subject == :assembly
|
185
180
|
|
186
181
|
is_allowed = [
|
187
182
|
:attachment,
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Assemblies
|
5
|
+
# This query filters assemblies by type.
|
6
|
+
class FilteredAssemblies < Rectify::Query
|
7
|
+
def initialize(filter)
|
8
|
+
@filter = filter
|
9
|
+
end
|
10
|
+
|
11
|
+
def filter
|
12
|
+
return "all" if @filter.nil?
|
13
|
+
|
14
|
+
@filter
|
15
|
+
end
|
16
|
+
|
17
|
+
def assemblies
|
18
|
+
Decidim::Assembly
|
19
|
+
end
|
20
|
+
|
21
|
+
def query
|
22
|
+
return assemblies.all if filter == "all"
|
23
|
+
|
24
|
+
assemblies.where(assembly_type: filter)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -9,10 +9,13 @@ module Decidim
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def query
|
12
|
+
assemblies = Decidim::Assembly.all
|
13
|
+
|
12
14
|
if @user
|
13
|
-
|
15
|
+
return assemblies if @user.admin
|
16
|
+
assemblies.visible_for(@user.id)
|
14
17
|
else
|
15
|
-
|
18
|
+
assemblies.public_spaces
|
16
19
|
end
|
17
20
|
end
|
18
21
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<div class="inline-filters">
|
2
|
+
<label>
|
3
|
+
<span><%= label_text %></span>
|
4
|
+
<button data-toggle="inline-filter-sort"><%= placeholder_text %></button>
|
5
|
+
<div id="inline-filter-sort" class="dropdown-pane" data-position="bottom" data-alignment="right" data-dropdown data-auto-focus="true">
|
6
|
+
<ul class="list-reset">
|
7
|
+
<% available_filters.each do |filter| %>
|
8
|
+
<li><%= filter_link(filter) %></li>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
</label>
|
13
|
+
</div>
|
@@ -10,9 +10,5 @@
|
|
10
10
|
<%= link_to t("actions.publish", scope: "decidim.admin"), assembly_publish_path(current_assembly), method: :post, class: "button hollow" %>
|
11
11
|
<% end %>
|
12
12
|
<% end %>
|
13
|
-
|
14
|
-
<% if allowed_to? :destroy, :assembly, assembly: current_assembly %>
|
15
|
-
<%= link_to t("decidim.admin.actions.destroy"), current_assembly, method: :delete, class: "alert button", data: { confirm: t("decidim.admin.actions.confirm_destroy") } %>
|
16
|
-
<% end %>
|
17
13
|
</div>
|
18
14
|
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= t("assemblies.order_by_assemblies.assemblies", scope: "layouts.decidim", count: collection.count) %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<section class="extended" id="assembly-statistics" class="statistics">
|
2
2
|
<div class="row column">
|
3
|
-
<h4 class="section-heading"><%= t("statistics.headline", scope: "decidim.assemblies") %></
|
3
|
+
<h4 class="section-heading"><%= t("statistics.headline", scope: "decidim.assemblies") %></h4>
|
4
4
|
</div>
|
5
5
|
<div class="row">
|
6
6
|
<div class="columns small-centered mediumlarge-12 large-12 process_stats">
|
@@ -8,7 +8,7 @@ edit_link(
|
|
8
8
|
)
|
9
9
|
%>
|
10
10
|
|
11
|
-
|
11
|
+
<%= participatory_space_wrapper do %>
|
12
12
|
<% if promoted_assemblies.any? %>
|
13
13
|
<section id="highlighted-assemblies" class="row section">
|
14
14
|
<h1 class="section-heading"><%= t("assemblies.index.promoted_assemblies", scope: "layouts.decidim") %></h1>
|
@@ -17,7 +17,15 @@ edit_link(
|
|
17
17
|
<% end %>
|
18
18
|
|
19
19
|
<section id="assemblies-grid" class="section row collapse">
|
20
|
-
|
20
|
+
<div class="row column">
|
21
|
+
<div class="flex--sbe">
|
22
|
+
<h2 id="assemblies-count" class="section-heading collapse">
|
23
|
+
<%= render partial: "count" %>
|
24
|
+
</h2>
|
25
|
+
<%= render partial: "decidim/assemblies/filter_by_type" %>
|
26
|
+
</div>
|
27
|
+
<hr class="reset mt-s mb-s" />
|
28
|
+
</div>
|
21
29
|
<div class="row small-up-1 medium-up-2 large-up-3 card-grid">
|
22
30
|
<%= render(collection) %>
|
23
31
|
</div>
|
@@ -31,4 +39,4 @@ edit_link(
|
|
31
39
|
</article>
|
32
40
|
</div>
|
33
41
|
</section>
|
34
|
-
|
42
|
+
<% end %>
|
@@ -14,6 +14,8 @@ edit_link(
|
|
14
14
|
)
|
15
15
|
%>
|
16
16
|
|
17
|
+
<%= participatory_space_floating_help %>
|
18
|
+
|
17
19
|
<% if current_participatory_space.private_space? %>
|
18
20
|
<%= render partial: "decidim/shared/private_participatory_space", locals: { text: t("assemblies.show.private_space", scope: "decidim") } %>
|
19
21
|
<% end %>
|
@@ -93,7 +95,7 @@ edit_link(
|
|
93
95
|
<div class="section columns medium-5 mediumlarge-4 large-3">
|
94
96
|
<div class="card extra">
|
95
97
|
<div class="card__content">
|
96
|
-
<%= render partial: "decidim/shared/follow_button", locals: { followable: current_participatory_space } %>
|
98
|
+
<%= render partial: "decidim/shared/follow_button", locals: { followable: current_participatory_space, large: false } %>
|
97
99
|
</div>
|
98
100
|
</div>
|
99
101
|
<div class="card extra definition-data">
|
@@ -1,8 +1,10 @@
|
|
1
|
-
<div class="process-header
|
2
|
-
<div class="
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
<div class="process-header">
|
2
|
+
<div class="process-header__inner">
|
3
|
+
<div class="row column process-header__main"
|
4
|
+
style="background-image:url(<%= current_participatory_space.banner_image.url %>);">
|
5
|
+
</div>
|
6
|
+
<div class="process-header__container row collapse column">
|
7
|
+
<div class="columns mediumlarge-8 process-header__info">
|
6
8
|
<div>
|
7
9
|
<h1 class="text-highlight heading2">
|
8
10
|
<%= translated_attribute(current_participatory_space.title) %>
|
@@ -21,53 +23,5 @@
|
|
21
23
|
</div>
|
22
24
|
</div>
|
23
25
|
</div>
|
24
|
-
|
25
|
-
<div class="row column">
|
26
|
-
<div class="process-nav">
|
27
|
-
<button class="process-nav__trigger hide-for-medium" data-toggle="process-nav-content">
|
28
|
-
<%= icon "caret-bottom", class: "icon--small process-nav__trigger__icon", aria_label: t(".unfold"), role: "img" %>
|
29
|
-
<div class="process-nav__link">
|
30
|
-
<% if self.try(:current_component) %>
|
31
|
-
<%= component_icon(current_component) %>
|
32
|
-
<%= translated_attribute(current_component.name) %>
|
33
|
-
<% else %>
|
34
|
-
<%= icon "assembly" %>
|
35
|
-
<%= t ".assembly_menu_item" %>
|
36
|
-
<% end %>
|
37
|
-
</div>
|
38
|
-
</button>
|
39
|
-
<div class="row column process-nav__content is-active" id="process-nav-content" data-toggler=".is-active">
|
40
|
-
<ul>
|
41
|
-
<li class="<%= "is-active" if is_active_link?(decidim_assemblies.assembly_path(current_participatory_space), :exclusive) %>">
|
42
|
-
<%= active_link_to decidim_assemblies.assembly_path(current_participatory_space), active: :exclusive, class: "process-nav__link", class_active: "is-active" do %>
|
43
|
-
<%= external_icon "decidim/assemblies/assembly.svg" %>
|
44
|
-
<%= t ".assembly_menu_item" %>
|
45
|
-
<% end %>
|
46
|
-
</li>
|
47
|
-
|
48
|
-
<% if current_participatory_space.members.not_ceased.any? %>
|
49
|
-
<li class="<%= "is-active" if is_active_link?(decidim_assemblies.assembly_assembly_members_path(current_participatory_space), :inclusive) %>">
|
50
|
-
<%= active_link_to decidim_assemblies.assembly_assembly_members_path(current_participatory_space), class: "process-nav__link", active: :inclusive, class_active: "is-active" do %>
|
51
|
-
<%= icon("members") %>
|
52
|
-
<%= t ".assembly_member_menu_item" %>
|
53
|
-
<% end %>
|
54
|
-
</li>
|
55
|
-
<% end %>
|
56
|
-
|
57
|
-
<% current_participatory_space.components.each do |component| %>
|
58
|
-
<% if component.published? || component == self.try(:current_component) %>
|
59
|
-
<li class="<%= "is-active" if is_active_link?(main_component_path(component), :inclusive) %>">
|
60
|
-
<%= active_link_to main_component_path(component), class: "process-nav__link", active: :inclusive, class_active: "is-active" do %>
|
61
|
-
<%= component_icon(component) %>
|
62
|
-
|
63
|
-
<%= translated_attribute(component.name) %>
|
64
|
-
<% end %>
|
65
|
-
</li>
|
66
|
-
<% end %>
|
67
|
-
<% end %>
|
68
|
-
</ul>
|
69
|
-
</div>
|
70
|
-
</div>
|
71
|
-
</div>
|
72
|
-
<% end %>
|
26
|
+
<%= render partial: "layouts/decidim/assembly_navigation", locals: { participatory_space: current_participatory_space } %>
|
73
27
|
</div>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<%
|
2
|
+
components = participatory_space.components.published.or(Decidim::Component.where(id: self.try(:current_component)))
|
3
|
+
%>
|
4
|
+
|
5
|
+
<%=
|
6
|
+
extended_navigation_bar(([
|
7
|
+
{
|
8
|
+
name: t(".assembly_menu_item"),
|
9
|
+
url: decidim_assemblies.assembly_path(current_participatory_space),
|
10
|
+
active: is_active_link?(decidim_assemblies.assembly_path(current_participatory_space), :exclusive)
|
11
|
+
},
|
12
|
+
participatory_space.members.not_ceased.any? ? {
|
13
|
+
name: t(".assembly_member_menu_item"),
|
14
|
+
url: decidim_assemblies.assembly_assembly_members_path(current_participatory_space),
|
15
|
+
active: is_active_link?(decidim_assemblies.assembly_assembly_members_path(current_participatory_space), :inclusive)
|
16
|
+
} : nil
|
17
|
+
] + components.map do |component|
|
18
|
+
{
|
19
|
+
name: translated_attribute(component.name),
|
20
|
+
url: main_component_path(component),
|
21
|
+
active: is_active_link?(main_component_path(component), :inclusive)
|
22
|
+
}
|
23
|
+
end).compact)
|
24
|
+
%>
|