Merge branch 'sprint/203_mayue_bug#23183' into 'master'

* Fix bug #23183.

See merge request easycorp/zentaopms!3984
This commit is contained in:
孙广明
2022-06-16 08:35:39 +00:00
5 changed files with 104 additions and 7 deletions
+42 -5
View File
@@ -827,19 +827,56 @@ class doc extends control
}
/**
* Ajax get doclib whitelist.
* Ajax get whitelist.
*
* @param int $doclibID
* @param string $acl open|custom|private
* @param string $control user|group
* @access public
* @return string
*/
public function ajaxGetWhitelist($doclibID, $acl)
public function ajaxGetWhitelist($doclibID, $acl = '', $control = '')
{
$doclib = $this->doc->getLibById($doclibID);
$users = $this->user->getPairs('noletter|noempty|noclosed');
$doclib = $this->doc->getLibById($doclibID);
$users = $this->user->getPairs('noletter|noempty|noclosed');
$selectedUser = $doclib->users;
if($control == 'group')
{
$groups = $this->loadModel('group')->getPairs();
$selectedGroup = $doclib->groups;
if($doclib->acl == 'custom')
{
foreach($groups as $groupID => $group)
{
if(strpos($doclib->groups, (string)$groupID) === false) unset($groups[$groupID]);
}
return print(html::select('groups[]', $groups, $selectedGroup, "class='form-control chosen' multiple"));
}
if($doclib->acl == 'open') return print(html::select('groups[]', $groups, $selectedGroup, "class='form-control chosen' multiple"));
if($doclib->acl == 'private') echo 'private';
if($doclib->acl == 'default') echo 'default';
return false;
}
if($control == 'user')
{
foreach($users as $account => $user)
{
if(($doclib->acl == 'custom' or $doclib->acl == 'private') and strpos($doclib->users, (string)$account) === false ) unset($users[$account]);
}
if($doclib->acl == 'custom')
{
return print(html::select('users[]', $users, $selectedUser, "multiple class='form-control"));
}
if($doclib->acl == 'open') return print(html::select('users[]', $users, $selectedUser, "multiple class='form-control"));
if($doclib->acl == 'private') echo 'private';
if($doclib->acl == 'default') echo 'default';
return false;
}
/* Sync whitelist when doclib permissions changed. */
if($doclib->acl != 'custom' and !empty($doclib->project) and $acl == 'custom')
{
$project = $this->loadModel('project')->getById($doclib->project);
+58
View File
@@ -21,15 +21,18 @@ function loadModules(libID)
*/
function toggleAcl(acl, type)
{
var libID = $('#lib').val();
if(acl == 'custom')
{
$('#whiteListBox').removeClass('hidden');
$('#groupBox').removeClass('hidden');
if(type == 'doc') loadWhitelist(libID);
}
else if(acl == 'private')
{
$('#whiteListBox').removeClass('hidden');
$('#groupBox').addClass('hidden');
if(type == 'doc') loadWhitelist(libID);
}
else
{
@@ -78,6 +81,61 @@ function loadDocModule(libID)
$('#module_chosen').remove();
$('#module').chosen();
});
loadWhitelist(libID);
}
/**
* Load whitelist by libID.
*
* @param int $libID
* @access public
* @return void
*/
function loadWhitelist(libID)
{
var groupLink = createLink('doc', 'ajaxGetWhitelist', 'libID=' + libID + '&acl=&control=group');
var userLink = createLink('doc', 'ajaxGetWhitelist', 'libID=' + libID + '&acl=&control=user');
$.post(groupLink, function(groups)
{
if(!(groups == 'default' || groups == 'private'))
{
$('#groups').replaceWith(groups);
$('#groups_chosen').remove();
$('#groups').chosen();
}
});
$.post(userLink, function(users)
{
if(users != 'default')
{
if(users == 'private')
{
$('#aclopen').parent('.radio-inline').addClass('hidden');
$('#aclcustom').parent('.radio-inline').addClass('hidden');
$('#aclprivate').prop('checked', true);
}
else
{
$('#aclopen').parent('.radio-inline').removeClass('hidden');
$('#aclcustom').parent('.radio-inline').removeClass('hidden');
$('#aclprivate').prop('checked', false);
$('#users').replaceWith(users);
$('#users_chosen').remove();
$('#whiteListBox .picker').remove();
if($('#users option').length < maxCount)
{
$('#users').chosen();
}
else
{
$('#users').picker();
}
}
}
});
}
/**
+2 -2
View File
@@ -1084,7 +1084,7 @@ class docModel extends model
if(strpos(",{$object->users},", $account) !== false) return true;
}
if(strpos($extra, 'notdoc') === false)
if(strpos($extra, 'notdoc') !== false)
{
static $extraDocLibs;
if($extraDocLibs === null) $extraDocLibs = $this->getPrivLibsByDoc();
@@ -1118,7 +1118,7 @@ class docModel extends model
if($extraDocLibs === null) $extraDocLibs = $this->getPrivLibsByDoc();
static $libs;
if($libs === null) $libs = $this->getLibs('all', 'notdoc');
if($libs === null) $libs = $this->getLibs('all');
if(isset($libs[$object->lib]) and isset($extraDocLibs[$object->lib])) unset($extraDocLibs[$object->lib]);
if($object->acl == 'open' and !isset($extraDocLibs[$object->lib])) return true;
+1
View File
@@ -10,6 +10,7 @@
* @link http://www.zentao.net
*/
?>
<?php js::set('maxCount', $this->config->maxCount);?>
<?php if($docType != '' and strpos($config->doc->officeTypes, $docType) !== false):?>
<?php include '../../common/view/header.lite.html.php';?>
<div id="mainContent" class="main-content">
+1
View File
@@ -17,6 +17,7 @@
<?php js::set('confirmUpdateContent', $lang->doc->confirmUpdateContent);?>
<?php js::set('docID', $doc->id);?>
<?php js::set('draft', $doc->draft);?>
<?php js::set('maxCount', $this->config->maxCount);?>
<div id='mainContent' class='main-content'>
<div class='center-block'>
<div class='main-header'>