* [story#72027] Swap read-only and editable fields.

This commit is contained in:
qixinzhi
2025-03-10 10:00:22 +08:00
committed by 刘刚
parent 28b7b19b1d
commit 8970305f4d
6 changed files with 45 additions and 43 deletions
+2
View File
@@ -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`;
+4 -4
View File
@@ -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);
+1 -1
View File
@@ -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));
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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;
+35 -35
View File
@@ -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)
)
)
)
)
);