Merge branch 'sprint/203_mayue_bug#23183' into 'master'
* Fix bug #23183. See merge request easycorp/zentaopms!3984
This commit is contained in:
+42
-5
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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'>
|
||||
|
||||
Reference in New Issue
Block a user