decidim-assemblies 0.8.4 → 0.9.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 +5 -5
- data/README.md +1 -1
- data/app/assets/javascripts/decidim/assemblies/admin/assemblies.js.es6 +11 -9
- data/app/commands/decidim/assemblies/admin/create_assembly_admin.rb +93 -0
- data/app/commands/decidim/assemblies/admin/update_assembly_admin.rb +42 -0
- data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +2 -4
- data/app/controllers/decidim/assemblies/admin/assembly_user_roles_controller.rb +99 -0
- data/app/forms/decidim/assemblies/admin/assembly_user_role_form.rb +30 -0
- data/app/models/decidim/assemblies/abilities/admin/admin_ability.rb +1 -0
- data/app/models/decidim/assemblies/abilities/admin/assembly_admin_ability.rb +54 -0
- data/app/models/decidim/assemblies/abilities/admin/assembly_collaborator_ability.rb +25 -0
- data/app/models/decidim/assemblies/abilities/admin/assembly_moderator_ability.rb +33 -0
- data/app/models/decidim/assemblies/abilities/admin/assembly_role_ability.rb +65 -0
- data/app/models/decidim/assemblies/abilities/assembly_admin_ability.rb +15 -0
- data/app/models/decidim/assemblies/abilities/assembly_collaborator_ability.rb +15 -0
- data/app/models/decidim/assemblies/abilities/assembly_moderator_ability.rb +15 -0
- data/app/models/decidim/assemblies/abilities/assembly_role_ability.rb +51 -0
- data/app/models/decidim/assembly.rb +1 -0
- data/app/models/decidim/assembly_user_role.rb +22 -0
- data/app/queries/decidim/assemblies/assemblies_with_user_role.rb +48 -0
- data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +1 -1
- data/app/views/decidim/assemblies/admin/assembly_user_roles/_form.html.erb +22 -0
- data/app/views/decidim/assemblies/admin/assembly_user_roles/edit.html.erb +7 -0
- data/app/views/decidim/assemblies/admin/assembly_user_roles/index.html.erb +65 -0
- data/app/views/decidim/assemblies/admin/assembly_user_roles/new.html.erb +7 -0
- data/app/views/decidim/assemblies/assemblies/show.html.erb +5 -0
- data/app/views/layouts/decidim/admin/assembly.html.erb +19 -14
- data/config/locales/ca.yml +28 -1
- data/config/locales/en.yml +28 -0
- data/config/locales/es.yml +32 -5
- data/config/locales/eu.yml +28 -0
- data/config/locales/fi.yml +66 -38
- data/config/locales/fr.yml +28 -0
- data/config/locales/gl.yml +165 -0
- data/config/locales/it.yml +30 -2
- data/config/locales/nl.yml +28 -0
- data/config/locales/pl.yml +28 -0
- data/config/locales/pt-BR.yml +165 -0
- data/config/locales/pt.yml +48 -20
- data/config/locales/sv.yml +165 -0
- data/db/migrate/20180109105917_add_assembly_user_roles.rb +17 -0
- data/lib/decidim/assemblies/admin_engine.rb +11 -2
- data/lib/decidim/assemblies/engine.rb +9 -0
- data/lib/decidim/assemblies/participatory_space.rb +7 -2
- data/lib/decidim/assemblies/test/factories.rb +36 -0
- data/lib/decidim/assemblies/version.rb +1 -1
- metadata +34 -12
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Assemblies
|
5
|
+
module Abilities
|
6
|
+
module Admin
|
7
|
+
# Defines the abilities for an assembly admin user, whatever they role. Intended to be used
|
8
|
+
# with `cancancan`.
|
9
|
+
class AssemblyRoleAbility
|
10
|
+
include CanCan::Ability
|
11
|
+
|
12
|
+
def initialize(user, context)
|
13
|
+
@user = user
|
14
|
+
@context = context
|
15
|
+
|
16
|
+
# Define abilities if the user is not an admin and has at least one assembly to manage.
|
17
|
+
if not_admin? && has_manageable_assemblies?
|
18
|
+
define_abilities
|
19
|
+
|
20
|
+
define_assembly_abilities if current_assembly && can_manage_assembly?(current_assembly)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Grant access to admin panel by default.
|
25
|
+
def define_abilities
|
26
|
+
can :read, :admin_dashboard
|
27
|
+
end
|
28
|
+
|
29
|
+
def define_assembly_abilities; end
|
30
|
+
|
31
|
+
# Abstract: A subclass must define this method returning a valid role.
|
32
|
+
# See ParticipatoryProcessUserRoles::ROLES for more information.
|
33
|
+
def role
|
34
|
+
raise "Needs implementation"
|
35
|
+
end
|
36
|
+
|
37
|
+
# Whether the user is an admin or not.
|
38
|
+
def not_admin?
|
39
|
+
@user && !@user.admin?
|
40
|
+
end
|
41
|
+
|
42
|
+
# Returns a collection of assemblies where the given user has the
|
43
|
+
# specific role privilege.
|
44
|
+
def assemblies_with_role_privileges
|
45
|
+
@assemblies ||= Decidim::Assemblies::AssembliesWithUserRole.for(@user, role)
|
46
|
+
end
|
47
|
+
|
48
|
+
# Whether the user has at least one assembly to manage or not.
|
49
|
+
def has_manageable_assemblies?
|
50
|
+
assemblies_with_role_privileges.any?
|
51
|
+
end
|
52
|
+
|
53
|
+
# Whether the user can manage the given assembly or not.
|
54
|
+
def can_manage_assembly?(assembly)
|
55
|
+
assemblies_with_role_privileges.include? assembly
|
56
|
+
end
|
57
|
+
|
58
|
+
def current_assembly
|
59
|
+
@current_assembly ||= @context[:current_participatory_space]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Assemblies
|
5
|
+
module Abilities
|
6
|
+
# Defines the abilities for an assembly admin user.
|
7
|
+
# Intended to be used with `cancancan`.
|
8
|
+
class AssemblyAdminAbility < Decidim::Assemblies::Abilities::AssemblyRoleAbility
|
9
|
+
def role
|
10
|
+
:admin
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Assemblies
|
5
|
+
module Abilities
|
6
|
+
# Defines the abilities for an assembly collaborator user
|
7
|
+
# Intended to be used with `cancancan`.
|
8
|
+
class AssemblyCollaboratorAbility < Decidim::Assemblies::Abilities::AssemblyRoleAbility
|
9
|
+
def role
|
10
|
+
:collaborator
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Assemblies
|
5
|
+
module Abilities
|
6
|
+
# Defines the abilities for an assembly moderator user
|
7
|
+
# Intended to be used with `cancancan`.
|
8
|
+
class AssemblyModeratorAbility < Decidim::Assemblies::Abilities::AssemblyRoleAbility
|
9
|
+
def role
|
10
|
+
:moderator
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Assemblies
|
5
|
+
module Abilities
|
6
|
+
# Defines the abilities for any user that can manage assemblies (whatever their role).
|
7
|
+
# Intended to be used with `cancancan`.
|
8
|
+
class AssemblyRoleAbility
|
9
|
+
include CanCan::Ability
|
10
|
+
|
11
|
+
attr_reader :user
|
12
|
+
|
13
|
+
def initialize(user, context)
|
14
|
+
@user = user
|
15
|
+
@context = context
|
16
|
+
|
17
|
+
define_abilities if not_admin? && has_manageable_assemblies?
|
18
|
+
end
|
19
|
+
|
20
|
+
def define_abilities
|
21
|
+
can :read, :admin_dashboard
|
22
|
+
can :read, Assembly
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
# Whether the user is an admin or not.
|
28
|
+
def not_admin?
|
29
|
+
@user && !@user.admin?
|
30
|
+
end
|
31
|
+
|
32
|
+
# Abstract: A subclass must define this method returning a valid role.
|
33
|
+
# See ParticipatoryProcessUserRoles::ROLES for more information.
|
34
|
+
def role
|
35
|
+
raise "Needs implementation"
|
36
|
+
end
|
37
|
+
|
38
|
+
# Returns a collection of Participatory assemblies where the given user has the
|
39
|
+
# specific role privilege.
|
40
|
+
def assemblies_with_role_privileges
|
41
|
+
@assemblies ||= Decidim::Assemblies::AssembliesWithUserRole.for(@user, role)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Whether the user has at least one assembly to manage or not.
|
45
|
+
def has_manageable_assemblies?
|
46
|
+
assemblies_with_role_privileges.any?
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
# Defines a relation between a user and an assembly, and what kind of relation
|
5
|
+
# does the user have.
|
6
|
+
class AssemblyUserRole < ApplicationRecord
|
7
|
+
belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User", optional: true
|
8
|
+
belongs_to :assembly, foreign_key: "decidim_assembly_id", class_name: "Decidim::Assembly", optional: true
|
9
|
+
|
10
|
+
ROLES = %w(admin collaborator moderator).freeze
|
11
|
+
validates :role, inclusion: { in: ROLES }, uniqueness: { scope: [:user, :assembly] }
|
12
|
+
validate :user_and_assembly_same_organization
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
# Private: check if the process and the user have the same organization
|
17
|
+
def user_and_assembly_same_organization
|
18
|
+
return if !assembly || !user
|
19
|
+
errors.add(:assembly, :invalid) unless user.organization == assembly.organization
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Assemblies
|
5
|
+
# A class used to find the Assemblies that the given user has
|
6
|
+
# the specific role privilege.
|
7
|
+
class AssembliesWithUserRole < Rectify::Query
|
8
|
+
# Syntactic sugar to initialize the class and return the queried objects.
|
9
|
+
#
|
10
|
+
# user - a User that needs to find which assemblies can manage
|
11
|
+
# role - (optional) a Symbol to specify the role privilege
|
12
|
+
def self.for(user, role = :any)
|
13
|
+
new(user, role).query
|
14
|
+
end
|
15
|
+
|
16
|
+
# Initializes the class.
|
17
|
+
#
|
18
|
+
# user - a User that needs to find which assemblies can manage
|
19
|
+
# role - (optional) a Symbol to specify the role privilege
|
20
|
+
def initialize(user, role = :any)
|
21
|
+
@user = user
|
22
|
+
@role = role
|
23
|
+
end
|
24
|
+
|
25
|
+
# Finds the Assemblies that the given user has role privileges.
|
26
|
+
# If the special role ':any' is provided it returns all assemblies where
|
27
|
+
# the user has some kind of role privilege.
|
28
|
+
#
|
29
|
+
# Returns an ActiveRecord::Relation.
|
30
|
+
def query
|
31
|
+
# Admin users have all role privileges for all organization assemblies
|
32
|
+
return Assemblies::OrganizationAssemblies.new(user.organization).query if user.admin?
|
33
|
+
|
34
|
+
Assembly.where(id: assembly_ids)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
attr_reader :user, :role
|
40
|
+
|
41
|
+
def assembly_ids
|
42
|
+
user_roles = AssemblyUserRole.where(user: user) if role == :any
|
43
|
+
user_roles = AssemblyUserRole.where(user: user, role: role) if role != :any
|
44
|
+
user_roles.pluck(:decidim_assembly_id)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<div class="card">
|
2
|
+
<div class="card-divider">
|
3
|
+
<h2 class="card-title">
|
4
|
+
<%= title %>
|
5
|
+
</h2>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<div class="card-section">
|
9
|
+
<div class="row">
|
10
|
+
<div class="columns xlarge-4">
|
11
|
+
<%= form.text_field :name, readonly: @form.persisted? %>
|
12
|
+
</div>
|
13
|
+
<div class="columns xlarge-4">
|
14
|
+
<%= form.email_field :email, readonly: @form.persisted? %>
|
15
|
+
</div>
|
16
|
+
<div class="columns xlarge-4">
|
17
|
+
<%= form.label :role %>
|
18
|
+
<%= select :assembly_user_role, :role, @form.roles, include_blank: false %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</div>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<%= decidim_form_for(@form, url: assembly_user_role_path(@user_role.assembly, @user_role), html: { class: "form edit_assembly_user_roles" }) do |f| %>
|
2
|
+
<%= render partial: 'form', object: f, locals: { title: t('assembly_user_roles.edit.title', scope: "decidim.admin") } %>
|
3
|
+
|
4
|
+
<div class="button--double form-general-submit">
|
5
|
+
<%= f.submit t("assembly_user_roles.edit.update", scope: "decidim.admin") %>
|
6
|
+
</div>
|
7
|
+
<% end %>
|
@@ -0,0 +1,65 @@
|
|
1
|
+
<div class='card' id="assembly_admins">
|
2
|
+
<div class="card-divider">
|
3
|
+
<h2 class="card-title">
|
4
|
+
<%= t("assembly_user_roles.index.assembly_admins_title", scope: "decidim.admin") %>
|
5
|
+
<% if can? :create, Decidim::AssemblyUserRole %>
|
6
|
+
<%= link_to t("actions.new", scope: "decidim.admin", name: t("models.assembly_user_role.name", scope: "decidim.admin")), new_assembly_user_role_path(current_assembly), class: 'button tiny button--title new' %>
|
7
|
+
<% end %>
|
8
|
+
</h2>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<div class="card-section">
|
12
|
+
<div class="table-scroll">
|
13
|
+
<table class="stack">
|
14
|
+
<thead>
|
15
|
+
<tr>
|
16
|
+
<th><%= t("models.assembly_user_role.fields.name", scope: "decidim.admin") %></th>
|
17
|
+
<th><%= t("models.assembly_user_role.fields.email", scope: "decidim.admin") %></th>
|
18
|
+
<th><%= t("models.user.fields.invitation_sent_at", scope: "decidim.admin") %></th>
|
19
|
+
<th><%= t("models.user.fields.invitation_accepted_at", scope: "decidim.admin") %></th>
|
20
|
+
<th><%= t("models.assembly_user_role.fields.role", scope: "decidim.admin") %></th>
|
21
|
+
<th class="actions"></th>
|
22
|
+
</tr>
|
23
|
+
</thead>
|
24
|
+
<tbody>
|
25
|
+
<% @assembly_user_roles.each do |role| %>
|
26
|
+
<tr>
|
27
|
+
<td>
|
28
|
+
<%= role.user.name %><br />
|
29
|
+
</td>
|
30
|
+
<td>
|
31
|
+
<%= role.user.email %><br />
|
32
|
+
</td>
|
33
|
+
<td>
|
34
|
+
<% if role.user.invitation_sent_at %>
|
35
|
+
<%= l role.user.invitation_sent_at, format: :short %>
|
36
|
+
<% end %>
|
37
|
+
</td>
|
38
|
+
<td>
|
39
|
+
<% if role.user.invitation_accepted_at %>
|
40
|
+
<%= l role.user.invitation_accepted_at, format: :short %>
|
41
|
+
<% end %>
|
42
|
+
</td>
|
43
|
+
<td>
|
44
|
+
<%= t("#{role.role}", scope: "decidim.admin.models.assembly_user_role.roles") %><br />
|
45
|
+
</td>
|
46
|
+
<td class="table-list__actions">
|
47
|
+
<% if can?(:invite, role) && role.user.invited_to_sign_up? %>
|
48
|
+
<%= icon_link_to "reload", resend_invitation_assembly_user_role_path(current_assembly, role), t("actions.resend_invitation", scope: "decidim.admin"), class: "resend-invitation", method: :post %>
|
49
|
+
<% end %>
|
50
|
+
|
51
|
+
<% if can? :update, role %>
|
52
|
+
<%= icon_link_to "pencil", edit_assembly_user_role_path(current_assembly, role), t("actions.edit", scope: "decidim.admin"), class: "action-icon--edit" %>
|
53
|
+
<% end %>
|
54
|
+
|
55
|
+
<% if can? :destroy, role %>
|
56
|
+
<%= icon_link_to "circle-x", assembly_user_role_path(current_assembly, role), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
57
|
+
<% end %>
|
58
|
+
</td>
|
59
|
+
</tr>
|
60
|
+
<% end %>
|
61
|
+
</tbody>
|
62
|
+
</table>
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
</div>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<%= decidim_form_for(@form, html: { class: "form new_assembly_user_role" }) do |f| %>
|
2
|
+
<%= render partial: 'form', object: f, locals: { title: t('assembly_user_roles.new.title', scope: "decidim.admin") } %>
|
3
|
+
|
4
|
+
<div class="button--double form-general-submit">
|
5
|
+
<%= f.submit t("assembly_user_roles.new.create", scope: "decidim.admin") %>
|
6
|
+
</div>
|
7
|
+
<% end %>
|
@@ -18,6 +18,11 @@
|
|
18
18
|
<%= attachments_for current_participatory_space %>
|
19
19
|
</div>
|
20
20
|
<div class="section columns medium-5 mediumlarge-4 large-3">
|
21
|
+
<div class="card extra">
|
22
|
+
<div class="card__content">
|
23
|
+
<%= render partial: "decidim/shared/follow_button", locals: { followable: current_participatory_space } %>
|
24
|
+
</div>
|
25
|
+
</div>
|
21
26
|
<div class="card extra definition-data">
|
22
27
|
<% if translated_attribute(current_participatory_space.meta_scope).present? %>
|
23
28
|
<div class="definition-data__item scope">
|
@@ -1,18 +1,18 @@
|
|
1
1
|
<% content_for :secondary_nav do %>
|
2
2
|
<div class="secondary-nav secondary-nav--subnav">
|
3
3
|
<ul>
|
4
|
-
<% if can? :update,
|
5
|
-
<li <% if is_active_link?(decidim_admin_assemblies.edit_assembly_path(
|
6
|
-
<%= aria_selected_link_to t("info", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.edit_assembly_path(
|
4
|
+
<% if can? :update, current_participatory_space %>
|
5
|
+
<li <% if is_active_link?(decidim_admin_assemblies.edit_assembly_path(current_participatory_space)) %> class="is-active" <% end %>>
|
6
|
+
<%= aria_selected_link_to t("info", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.edit_assembly_path(current_participatory_space) %>
|
7
7
|
</li>
|
8
8
|
<% end %>
|
9
9
|
<% if can? :read, Decidim::Feature %>
|
10
|
-
<li <% if is_active_link?(decidim_admin_assemblies.features_path(
|
11
|
-
<%= aria_selected_link_to t("features", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.features_path(
|
10
|
+
<li <% if is_active_link?(decidim_admin_assemblies.features_path(current_participatory_space)) %> class="is-active" <% end %>>
|
11
|
+
<%= aria_selected_link_to t("features", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.features_path(current_participatory_space) %>
|
12
12
|
<ul>
|
13
|
-
<%
|
13
|
+
<% current_participatory_space.features.each do |feature| %>
|
14
14
|
<% if feature.manifest.admin_engine %>
|
15
|
-
<li <% if is_active_link?(manage_feature_path(feature)) || is_active_link?(decidim_admin_assemblies.edit_feature_path(
|
15
|
+
<li <% if is_active_link?(manage_feature_path(feature)) || is_active_link?(decidim_admin_assemblies.edit_feature_path(current_participatory_space, feature)) || is_active_link?(decidim_admin_assemblies.edit_feature_permissions_path(current_participatory_space, feature)) %> class="is-active" <% end %>>
|
16
16
|
<%= link_to manage_feature_path(feature) do %>
|
17
17
|
<%= translated_attribute feature.name %>
|
18
18
|
<% if feature.primary_stat.present? %>
|
@@ -26,18 +26,23 @@
|
|
26
26
|
</li>
|
27
27
|
<% end %>
|
28
28
|
<% if can? :read, Decidim::Category %>
|
29
|
-
<li <% if is_active_link?(decidim_admin_assemblies.categories_path(
|
30
|
-
<%= aria_selected_link_to t("categories", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.categories_path(
|
29
|
+
<li <% if is_active_link?(decidim_admin_assemblies.categories_path(current_participatory_space)) %> class="is-active" <% end %>>
|
30
|
+
<%= aria_selected_link_to t("categories", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.categories_path(current_participatory_space) %>
|
31
31
|
</li>
|
32
32
|
<% end %>
|
33
33
|
<% if can? :read, Decidim::Attachment %>
|
34
|
-
<li <% if is_active_link?(decidim_admin_assemblies.assembly_attachments_path(
|
35
|
-
<%= aria_selected_link_to t("attachments", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.assembly_attachments_path(
|
34
|
+
<li <% if is_active_link?(decidim_admin_assemblies.assembly_attachments_path(current_participatory_space)) %> class="is-active" <% end %>>
|
35
|
+
<%= aria_selected_link_to t("attachments", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.assembly_attachments_path(current_participatory_space) %>
|
36
|
+
</li>
|
37
|
+
<% end %>
|
38
|
+
<% if can? :read, Decidim::AssemblyUserRole %>
|
39
|
+
<li <% if is_active_link?(decidim_admin_assemblies.assembly_user_roles_path(current_participatory_space)) %> class="is-active" <% end %>>
|
40
|
+
<%= aria_selected_link_to t("assembly_admins", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.assembly_user_roles_path(current_participatory_space) %>
|
36
41
|
</li>
|
37
42
|
<% end %>
|
38
43
|
<% if can? :read, Decidim::Moderation %>
|
39
|
-
<li <% if is_active_link?(decidim_admin_assemblies.moderations_path(
|
40
|
-
<%= aria_selected_link_to t("moderations", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.moderations_path(
|
44
|
+
<li <% if is_active_link?(decidim_admin_assemblies.moderations_path(current_participatory_space)) %> class="is-active" <% end %>>
|
45
|
+
<%= aria_selected_link_to t("moderations", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.moderations_path(current_participatory_space) %>
|
41
46
|
</li>
|
42
47
|
<% end %>
|
43
48
|
</ul>
|
@@ -47,7 +52,7 @@
|
|
47
52
|
<%= render "layouts/decidim/admin/application" do %>
|
48
53
|
<div class="process-title">
|
49
54
|
<div class="process-title-content">
|
50
|
-
<%= translated_attribute(
|
55
|
+
<%= translated_attribute(current_participatory_space.title) %>
|
51
56
|
</div>
|
52
57
|
</div>
|
53
58
|
<%= yield %>
|
data/config/locales/ca.yml
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
---
|
2
1
|
ca:
|
3
2
|
activemodel:
|
4
3
|
attributes:
|
@@ -60,9 +59,27 @@ ca:
|
|
60
59
|
destroy:
|
61
60
|
error: S'ha produït un error en despublicar aquesta assemblea.
|
62
61
|
success: Assemblea despublicada amb èxit.
|
62
|
+
assembly_user_roles:
|
63
|
+
create:
|
64
|
+
error: S'ha produït un error en afegir un usuari per a aquesta assamblea.
|
65
|
+
success: L'usuari s'ha creat correctament per a aquesta assemblea.
|
66
|
+
destroy:
|
67
|
+
success: S'ha destruït l'usuari amb èxit per a aquesta assemblea.
|
68
|
+
edit:
|
69
|
+
title: Actualitza l'usuari de l'assemblea.
|
70
|
+
update: Actualitza
|
71
|
+
index:
|
72
|
+
assembly_admins_title: Usuaris de l'assemblea
|
73
|
+
new:
|
74
|
+
create: Crea
|
75
|
+
title: Nou usuari de l'assemblea.
|
76
|
+
update:
|
77
|
+
error: S'ha produït un error en l'actualització d'un usuari per a aquesta assemblea.
|
78
|
+
success: L'usuari s'ha actualitzat correctament per a aquesta assemblea.
|
63
79
|
menu:
|
64
80
|
assemblies: Assemblees
|
65
81
|
assemblies_submenu:
|
82
|
+
assembly_admins: Usuaris de l'assemblea
|
66
83
|
attachments: Adjunts
|
67
84
|
categories: Categories
|
68
85
|
features: Funcionalitats
|
@@ -76,6 +93,16 @@ ca:
|
|
76
93
|
published: Publicat
|
77
94
|
title: Grup de processos participatius
|
78
95
|
name: Assemblea
|
96
|
+
assembly_user_role:
|
97
|
+
fields:
|
98
|
+
email: Correu electrònic
|
99
|
+
name: Nom
|
100
|
+
role: Rol
|
101
|
+
name: Usuari de l'assemblea
|
102
|
+
roles:
|
103
|
+
admin: Administrador
|
104
|
+
collaborator: Col·laborador
|
105
|
+
moderator: Moderador
|
79
106
|
titles:
|
80
107
|
assemblies: Assemblees
|
81
108
|
assemblies:
|