* [story#72027] Swap read-only and editable fields.
This commit is contained in:
@@ -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`;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user