#1201 Project's roles

This commit is contained in:
karel.picman@lbcfree.net 2021-01-12 08:44:32 +01:00
parent b3db9fb750
commit 3f22ce6f05
3 changed files with 17 additions and 2 deletions

View File

@ -33,6 +33,7 @@ class DmsfController < ApplicationController
# Also try to lookup folder by title if this is an API call # Also try to lookup folder by title if this is an API call
before_action :find_folder_by_title, only: [:show] before_action :find_folder_by_title, only: [:show]
before_action :get_query, only: [:expand_folder, :show, :trash] before_action :get_query, only: [:expand_folder, :show, :trash]
before_action :get_project_roles, only: [:new, :edit]
accept_api_auth :show, :create, :save, :delete accept_api_auth :show, :create, :save, :delete
@ -657,4 +658,9 @@ class DmsfController < ApplicationController
end end
end end
def get_project_roles
@project_roles = Role.givable.joins(:member_roles).joins(:members).where(
members: { project_id: @project.id }).distinct
end
end end

View File

@ -75,7 +75,7 @@
<% dir = @folder.inherited_permissions_from %> <% dir = @folder.inherited_permissions_from %>
<% if dir %> <% if dir %>
<%= label_tag '', l(:label_inherited_permissions) %> <%= label_tag '', l(:label_inherited_permissions) %>
<% Role.givable.each do |role| %> <% @project_roles.each do |role| %>
<% checked = dir.permission_for_role(role) %> <% checked = dir.permission_for_role(role) %>
<% if checked %> <% if checked %>
<label class="inline"> <label class="inline">
@ -95,7 +95,7 @@
<% end %> <% end %>
<% end %> <% end %>
<%= label_tag '', l(:label_dmsf_permissions) %> <%= label_tag '', l(:label_dmsf_permissions) %>
<% Role.givable.each do |role| %> <% @project_roles.each do |role| %>
<% checked = @folder.permission_for_role(role) %> <% checked = @folder.permission_for_role(role) %>
<label class="inline"> <label class="inline">
<%= check_box_tag 'permissions[role_ids][]', role.id, checked, id: nil %> <%= check_box_tag 'permissions[role_ids][]', role.id, checked, id: nil %>

View File

@ -50,8 +50,17 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
# Permissions OK # Permissions OK
get :edit, params: { id: @project1, folder_id: @folder1} get :edit, params: { id: @project1, folder_id: @folder1}
assert_response :success assert_response :success
# Custom fields
assert_select 'label', { text: @custom_field.name } assert_select 'label', { text: @custom_field.name }
assert_select 'option', { value: @custom_value.value } assert_select 'option', { value: @custom_value.value }
# Permissions - The form must contain a check box for each available role
roles = []
@project1.members.each do |m|
roles << m.roles
end
roles.uniq.each do |r|
assert_select 'input', { value: r.name }
end
end end
def test_edit_folder_redirection_to_the_parent_folder def test_edit_folder_redirection_to_the_parent_folder