diff --git a/db/update21.5.sql b/db/update21.5.sql index 4e1fc5c552..fe843f5a56 100644 --- a/db/update21.5.sql +++ b/db/update21.5.sql @@ -3,3 +3,5 @@ ALTER TABLE `zt_feedback` ADD COLUMN `prevAssignedTo` varchar(255) NOT NULL DEFA ALTER TABLE `zt_doc` ADD COLUMN `editGroups` varchar(255) NOT NULL DEFAULT '' AFTER `users`; ALTER TABLE `zt_doc` ADD COLUMN `editUsers` text NULL AFTER `editGroups`; +ALTER TABLE `zt_doc` ADD COLUMN `readGroups` varchar(255) NOT NULL DEFAULT '' AFTER `users`; +ALTER TABLE `zt_doc` ADD COLUMN `readUsers` text NULL AFTER `readGroups`; diff --git a/module/doc/config/form.php b/module/doc/config/form.php index 488f2f3750..ad3f3d1fd7 100644 --- a/module/doc/config/form.php +++ b/module/doc/config/form.php @@ -52,8 +52,8 @@ $config->doc->form->create['editedBy'] = array('type' => 'string', 'requir $config->doc->form->create['editedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now); $config->doc->form->create['groups'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); $config->doc->form->create['users'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); -$config->doc->form->create['editGroups'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); -$config->doc->form->create['editUsers'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); +$config->doc->form->create['readGroups'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); +$config->doc->form->create['readUsers'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); $config->doc->form->create['mailto'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); $config->doc->form->create['contentType'] = array('type' => 'string', 'required' => false, 'default' => 'doc'); $config->doc->form->create['content'] = array('type' => 'string', 'required' => false, 'default' => '', 'control' => 'editor', 'skipRequired' => true); @@ -77,8 +77,8 @@ $config->doc->form->edit['content'] = array('type' => 'string', 'required' $config->doc->form->edit['rawContent'] = array('type' => 'string', 'required' => false, 'default' => '', 'skipRequired' => true, 'specialchars' => 'no'); $config->doc->form->edit['groups'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); $config->doc->form->edit['users'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); -$config->doc->form->edit['editGroups'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); -$config->doc->form->edit['editUsers'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); +$config->doc->form->edit['readGroups'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); +$config->doc->form->edit['readUsers'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); $config->doc->form->edit['mailto'] = array('type' => 'array', 'required' => false, 'default' => '', 'filter' => 'join'); $config->doc->form->edit['editedBy'] = array('type' => 'string', 'required' => false, 'default' => ''); $config->doc->form->edit['editedDate'] = array('type' => 'datetime', 'required' => false, 'default' => $now); diff --git a/module/doc/control.php b/module/doc/control.php index c08019cda4..eff71dd40b 100755 --- a/module/doc/control.php +++ b/module/doc/control.php @@ -631,7 +631,7 @@ class doc extends control $isOpen = $doc->acl == 'open'; $currentAccount = $this->app->user->account; $isAuthorOrAdmin = $doc->acl == 'private' && ($doc->addedBy == $currentAccount || $this->app->user->admin); - $isInEditUsers = strpos(",$doc->editUsers,", ",$currentAccount,") !== false; + $isInEditUsers = strpos(",$doc->users,", ",$currentAccount,") !== false; if(!$isOpen && !$isAuthorOrAdmin && !$isInEditUsers) return $this->send(array('result' => 'fail', 'message' => $this->lang->doc->needEditable)); diff --git a/module/doc/js/common.ui.js b/module/doc/js/common.ui.js index 58a62e69b7..e017027070 100644 --- a/module/doc/js/common.ui.js +++ b/module/doc/js/common.ui.js @@ -240,7 +240,7 @@ window.toggleWhiteList = function(e) { const acl = e.target.value; $('#whiteListBox').toggleClass('hidden', acl == 'open'); - $('#editListBox').toggleClass('hidden', acl == 'open'); + $('#readListBox').toggleClass('hidden', acl == 'open'); } $(document).on('mousedown', '.ajaxCollect', function (event) diff --git a/module/doc/model.php b/module/doc/model.php index a9466b5e73..f1e663d9d1 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -809,8 +809,8 @@ class docModel extends model { $isOpen = $doc->acl == 'open'; $isAuthorOrAdmin = $doc->acl == 'private' && ($doc->addedBy == $currentAccount || ($this->app->user->admin && $spaceType !== 'mine')); - $isInReadUsers = strpos(",$doc->users,", ",$currentAccount,") !== false; - $isInEditUsers = strpos(",$doc->editUsers,", ",$currentAccount,") !== false; + $isInReadUsers = strpos(",$doc->readUsers,", ",$currentAccount,") !== false; + $isInEditUsers = strpos(",$doc->users,", ",$currentAccount,") !== false; if($isOpen || $isAuthorOrAdmin || $isInReadUsers || $isInEditUsers) { $doc->editable = $isOpen || $isAuthorOrAdmin || $isInEditUsers; diff --git a/module/doc/ui/setdocbasic.html.php b/module/doc/ui/setdocbasic.html.php index 1c38544008..754f25b330 100644 --- a/module/doc/ui/setdocbasic.html.php +++ b/module/doc/ui/setdocbasic.html.php @@ -21,7 +21,7 @@ formPanel on::change('[name=lib]')->call('loadLibModules', jsRaw('event')), on::change('[name=project]')->call('loadExecutions', jsRaw('event')), on::change('[name=lib],[name^=users]', "checkLibPriv('#whiteListBox', 'users')"), - on::change('[name=lib],[name^=editUsers]', "checkLibPriv('#editListBox', 'editUsers')"), + on::change('[name=lib],[name^=readUsers]', "checkLibPriv('#readListBox', 'readUsers')"), set::ajax(array('beforeSubmit' => jsRaw('window.beforeSetDocBasicInfo'))), $objectType == 'project' @@ -108,10 +108,43 @@ formPanel ), $isDraft ? null : formGroup ( - setID('whiteListBox'), + setID('readListBox'), setClass((isset($doc) && $libID == $doc->lib && $objectType != 'mine' && $doc->acl == 'private') ? '' : 'hidden'), set::label($lang->doc->readonly), div + ( + setClass('w-full check-list'), + inputGroup + ( + setClass('w-full'), + $lang->doc->groups, + picker + ( + set::name('readGroups[]'), + set::items($groups), + set::value(isset($doc) ? $doc->readGroups : null), + set::multiple(true) + ) + ), + div + ( + setClass('w-full'), + userPicker + ( + set::label($lang->doc->users), + set::name('readUsers[]'), + set::items($users), + set::value(isset($doc) ? $doc->readUsers : null) + ) + ) + ) + ), + $isDraft ? null : formGroup + ( + setID('whiteListBox'), + setClass((isset($doc) && $libID == $doc->lib && $objectType != 'mine' && $doc->acl == 'private') ? '' : 'hidden'), + set::label($lang->doc->editable), + div ( setClass('w-full check-list'), inputGroup @@ -137,38 +170,5 @@ formPanel ) ) ) - ), - $isDraft ? null : formGroup - ( - setID('editListBox'), - setClass((isset($doc) && $libID == $doc->lib && $objectType != 'mine' && $doc->acl == 'private') ? '' : 'hidden'), - set::label($lang->doc->editable), - div - ( - setClass('w-full check-list'), - inputGroup - ( - setClass('w-full'), - $lang->doc->groups, - picker - ( - set::name('editGroups[]'), - set::items($groups), - set::value(isset($doc) ? $doc->editGroups : null), - set::multiple(true) - ) - ), - div - ( - setClass('w-full'), - userPicker - ( - set::label($lang->doc->users), - set::name('editUsers[]'), - set::items($users), - set::value(isset($doc) ? $doc->editUsers : null) - ) - ) - ) ) );