Merge branch 'master' into devel-2.4.2
This commit is contained in:
commit
53c06ad011
@ -52,7 +52,7 @@ class DmsfFolderPermissionsController < ApplicationController
|
||||
scope = Principal.active.visible.member_of(@project).like(params[:q]).order(:type, :lastname)
|
||||
if @dmsf_folder
|
||||
users = @dmsf_folder.permissions_users
|
||||
ids = users.collect{ |u| u[0].id }
|
||||
ids = users.collect{ |u| u.id }
|
||||
scope = scope.where(['id NOT IN (?)', ids.join(',')]).order(:type, :lastname)
|
||||
end
|
||||
scope.to_a
|
||||
|
||||
@ -24,9 +24,8 @@ module DmsfFolderPermissionsHelper
|
||||
def users_checkboxes(users)
|
||||
s = ''
|
||||
users.each do |user|
|
||||
user = [user, false] unless user.is_a?(Array)
|
||||
content = check_box_tag('permissions[user_ids][]', user[0].id, true, disabled: user[1], id: nil) + user[0].name
|
||||
s << content_tag(:label, content, id: "user_permission_ids_#{user[0].id}", class: 'inline')
|
||||
content = check_box_tag('permissions[user_ids][]', user.id, true, id: nil) + user.name
|
||||
s << content_tag(:label, content, id: "user_permission_ids_#{user.id}", class: 'inline')
|
||||
end
|
||||
s.html_safe
|
||||
end
|
||||
|
||||
@ -109,19 +109,17 @@ class DmsfFolder < ActiveRecord::Base
|
||||
return false if folder.issue && !folder.issue.visible?(User.current)
|
||||
end
|
||||
# Permissions?
|
||||
if !folder.dmsf_folder || DmsfFolder.permissions?(folder.dmsf_folder, allow_system)
|
||||
if folder.dmsf_folder_permissions.any?
|
||||
role_ids = User.current.roles_for_project(folder.project).map{ |r| r.id }
|
||||
role_permission_ids = folder.dmsf_folder_permissions.roles.map{ |p| p.object_id }
|
||||
return true if (role_ids & role_permission_ids).any?
|
||||
principal_ids = folder.dmsf_folder_permissions.users.map{ |p| p.object_id }
|
||||
return true if principal_ids.include?(User.current.id)
|
||||
user_group_ids = User.current.groups.map{ |g| g.id }
|
||||
return true if (principal_ids & user_group_ids).any?
|
||||
return false
|
||||
end
|
||||
if folder.dmsf_folder_permissions.any?
|
||||
role_ids = User.current.roles_for_project(folder.project).map{ |r| r.id }
|
||||
role_permission_ids = folder.dmsf_folder_permissions.roles.map{ |p| p.object_id }
|
||||
return true if (role_ids & role_permission_ids).any?
|
||||
principal_ids = folder.dmsf_folder_permissions.users.map{ |p| p.object_id }
|
||||
return true if principal_ids.include?(User.current.id)
|
||||
user_group_ids = User.current.groups.map{ |g| g.id }
|
||||
return true if (principal_ids & user_group_ids).any?
|
||||
return false
|
||||
end
|
||||
true
|
||||
DmsfFolder.permissions?(folder.dmsf_folder, allow_system)
|
||||
end
|
||||
|
||||
def default_values
|
||||
@ -531,42 +529,15 @@ class DmsfFolder < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def permission_for_role(role)
|
||||
options = Hash.new
|
||||
options[:checked] = false
|
||||
options[:disabled] = false
|
||||
permission_for_role_recursive(self, role, options)
|
||||
options[:disabled] = false unless options[:checked]
|
||||
options.values
|
||||
self.dmsf_folder_permissions.roles.exists?(object_id: role.id)
|
||||
end
|
||||
|
||||
def permissions_users
|
||||
users = Array.new
|
||||
permissions_users_recursive(self, users, false)
|
||||
users
|
||||
Principal.active.where(id: self.dmsf_folder_permissions.users.map{ |p| p.object_id })
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def permission_for_role_recursive(folder, role, options)
|
||||
options[:checked] = folder.dmsf_folder_permissions.roles.exists?(object_id: role.id)
|
||||
if !options[:checked] && folder.dmsf_folder && !folder.dmsf_folder.deleted?
|
||||
options[:disabled] = true
|
||||
# TODO: No inheritance
|
||||
#permission_for_role_recursive(folder.dmsf_folder, role, options)
|
||||
end
|
||||
end
|
||||
|
||||
def permissions_users_recursive(folder, users, disabled)
|
||||
if folder
|
||||
usrs = Principal.active.where(id: folder.dmsf_folder_permissions.users.map{ |p| p.object_id })
|
||||
usrs.each do |u|
|
||||
users << [u, disabled]
|
||||
end
|
||||
# TODO: No inheritance
|
||||
#permissions_users_recursive(folder.dmsf_folder, users, true)
|
||||
end
|
||||
end
|
||||
|
||||
def self.directory_subtree(tree, folder, level, current_folder)
|
||||
folders = DmsfFolder.where(project_id: folder.project_id, dmsf_folder_id: folder.id).notsystem.visible(false).to_a
|
||||
folders.delete(current_folder)
|
||||
|
||||
@ -76,10 +76,10 @@
|
||||
</p>
|
||||
<p>
|
||||
<%= label_tag '', l(:label_permissions) %>
|
||||
<% User.current.managed_roles(@project).each do |role| %>
|
||||
<% checked, disabled = @folder.permission_for_role(role) %>
|
||||
<% Role.givable.each do |role| %>
|
||||
<% checked = @folder.permission_for_role(role) %>
|
||||
<label class="inline">
|
||||
<%= check_box_tag 'permissions[role_ids][]', role.id, checked, disabled: disabled, id: nil %>
|
||||
<%= check_box_tag 'permissions[role_ids][]', role.id, checked, id: nil %>
|
||||
<%= role %>
|
||||
</label>
|
||||
<% end %>
|
||||
|
||||
@ -94,7 +94,9 @@ div.dataTables_length label {
|
||||
}
|
||||
|
||||
/* Comptibility with Easy SW: sorting icons are not visible do */
|
||||
.ui-state-default .ui-icon {
|
||||
.ui-state-default .ui-icon,
|
||||
.ui-icon-circle-plus,
|
||||
.ui-icon-circle-arrow-e {
|
||||
background-image: url("../../../stylesheets/jquery/images/ui-icons_759fcf_256x240.png");
|
||||
}
|
||||
|
||||
@ -111,11 +113,11 @@ div.dataTables_length label {
|
||||
.dmsf_controls input,
|
||||
.dmsf_controls select,
|
||||
.dmsf_entries #browser_filter.dataTables_filter,
|
||||
.dmsf_entries #browser_filter.dataTables_filter input{
|
||||
.dmsf_entries #browser_filter.dataTables_filter input {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
#browser_filter.dataTables_filter{
|
||||
#browser_filter.dataTables_filter {
|
||||
float:none;
|
||||
}
|
||||
|
||||
|
||||
@ -191,16 +191,13 @@ class DmsfFolderTest < RedmineDmsf::Test::UnitTest
|
||||
end
|
||||
|
||||
def test_permission_for_role
|
||||
checked, disabled = @folder7.permission_for_role(@manager_role)
|
||||
checked = @folder7.permission_for_role(@manager_role)
|
||||
assert checked
|
||||
assert !disabled
|
||||
end
|
||||
|
||||
def test_permissions_users
|
||||
users = @folder7.permissions_users
|
||||
assert users.any?
|
||||
assert users[0]
|
||||
assert !users[1]
|
||||
assert_equal 1, users.size
|
||||
end
|
||||
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user