*[bug#55956,2h].

This commit is contained in:
songchenxuan
2024-10-18 11:07:29 +08:00
committed by 綦新志
parent b7e4df9d30
commit 1ced79a88e
11 changed files with 185 additions and 116 deletions
+2
View File
@@ -240,6 +240,8 @@ $config->logonMethods[] = 'doc.createbasicinfo';
$config->logonMethods[] = 'doc.selectlibtype';
$config->logonMethods[] = 'doc.uploaddocs';
$config->logonMethods[] = 'doc.setdocbasic';
$config->logonMethods[] = 'doc.commoneditaction';
$config->logonMethods[] = 'doc.commondeleteaction';
$config->logonMethods[] = 'execution.browse';
$config->logonMethods[] = 'feedback.mergeproductmodule';
$config->logonMethods[] = 'file.buildoldform';
+57 -4
View File
@@ -164,6 +164,20 @@ class doc extends control
$this->display();
}
/**
* 编辑一个文档空间。
* Edit a doc space.
*
* @param int $libID
* @access public
* @return void
*/
public function editSpace(int $libID)
{
$this->commonEditAction($libID);
$this->display();
}
/**
* 编辑一个文档库。
* Edit a library.
@@ -174,11 +188,26 @@ class doc extends control
*/
public function editLib(int $libID)
{
$this->commonEditAction($libID);
$this->display();
}
/**
* 编辑空间和编辑库的公用方法。
* Edit a lib or space.
*
* @param int $libID
* @access public
* @return void
*/
public function commonEditAction($libID)
{
if(!common::hasPriv('doc', 'editSpace') && !common::hasPriv('doc', 'editLib')) return;
$lib = $this->doc->getLibByID($libID);
if(!empty($_POST))
{
$this->lang->doc->name = $this->lang->nameAB;
$libData = form::data()->get();
$libData = form::data($this->config->doc->form->editlib)->get();
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
$changes = $this->doc->updateLib($libID, $libData);
@@ -223,12 +252,23 @@ class doc extends control
$this->view->groups = $this->loadModel('group')->getPairs();
$this->view->users = $this->user->getPairs('noletter|noclosed', $lib->users);
$this->view->libID = $libID;
$this->display();
}
/**
* 删除一个数据库。
* 删除一个文档空间。
* Delete a doc space.
*
* @param int $libID
* @access public
* @return void
*/
public function deleteSpace(int $libID)
{
$this->commonDeleteAction($libID);
}
/**
* 删除一个文档库。
* Delete a library.
*
* @param int $libID
@@ -236,6 +276,19 @@ class doc extends control
* @return void
*/
public function deleteLib(int $libID)
{
$this->commonDeleteAction($libID);
}
/**
* 删除空间和删除库的公用方法。
* Delete a lib or space.
*
* @param int $libID
* @access public
* @return void
*/
public function commonDeleteAction(int $libID)
{
if(in_array($libID, array('product', 'execution'))) return;
+2 -2
View File
@@ -636,7 +636,7 @@ const commands =
{
const docApp = getDocApp();
const spaceID = args[0] || docApp.spaceID;
const url = $.createLink('doc', 'editLib', `libID=${spaceID}`);
const url = $.createLink('doc', 'editSpace', `libID=${spaceID}`);
zui.Modal.open({size: 'sm', url: url});
},
deleteSpace: function(_, args)
@@ -646,7 +646,7 @@ const commands =
$.ajaxSubmit(
{
confirm: getLang('confirmDeleteSpace'),
url: $.createLink('doc', 'deleteLib', `libID=${spaceID}`),
url: $.createLink('doc', 'deleteSpace', `libID=${spaceID}`),
load: false,
onSuccess: function(res)
{
+4
View File
@@ -0,0 +1,4 @@
$(function()
{
toggleAcl('lib');
})
+5 -3
View File
@@ -208,14 +208,16 @@ $lang->doc->libType = '库类型';
$lang->doc->custom = '自定义文档库';
$lang->doc->customAB = '自定义库';
$lang->doc->createLib = '创建库';
$lang->doc->createLibAction = '创建空间/库';
$lang->doc->createLibAction = '创建库';
$lang->doc->createSpace = '创建空间';
$lang->doc->allLibs = '库列表';
$lang->doc->objectLibs = "库文档详情";
$lang->doc->showFiles = '附件库';
$lang->doc->editLib = '编辑库';
$lang->doc->editLibAction = '编辑空间/库';
$lang->doc->deleteLibAction = '删除空间/库';
$lang->doc->editSpaceAction = '编辑空间';
$lang->doc->editLibAction = '编辑库';
$lang->doc->deleteSpaceAction = '删除空间';
$lang->doc->deleteLibAction = '删除库';
$lang->doc->moveLibAction = '移动库';
$lang->doc->moveDocAction = '移动文档';
$lang->doc->batchMove = '批量移动';
+3 -3
View File
@@ -48,9 +48,9 @@ $privs['moveLib'] = hasPriv('doc', 'moveLib');
$privs['deleteLib'] = hasPriv('doc', 'deleteLib');
$privs['sortDocLib'] = hasPriv('doc', 'sortDocLib');
$privs['exportFiles'] = hasPriv('doc', 'exportFiles');
$privs['createSpace'] = $hasCustomSpace && hasPriv('doc', 'createLib');
$privs['deleteSpace'] = $hasCustomSpace && hasPriv('doc', 'deleteLib');
$privs['editSpace'] = $hasCustomSpace && hasPriv('doc', 'editLib');
$privs['createSpace'] = $hasCustomSpace && hasPriv('doc', 'createSpace');
$privs['deleteSpace'] = $hasCustomSpace && hasPriv('doc', 'deleteSpace');
$privs['editSpace'] = $hasCustomSpace && hasPriv('doc', 'editSpace');
$privs['addModule'] = hasPriv('doc', 'addCatalog');
$privs['deleteModule'] = hasPriv('doc', 'deleteCatalog');
$privs['editModule'] = hasPriv('doc', 'editCatalog');
+105
View File
@@ -0,0 +1,105 @@
<?php
declare(strict_types=1);
/**
* The editLib view file of doc module of ZenTaoPMS.
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
* @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
* @author Shujie Tian<tianshujie@easycorp.ltd>
* @package doc
* @link https://www.zentao.net
*/
namespace zin;
$libType = $lib->type;
$defaultAcl = $lib->acl;
if(!empty($lib->main) && $lib->type != 'mine') $defaultAcl = 'default';
jsVar('doclibID', $lib->id);
jsVar('libType', $libType);
$isSpace = ($lib->type == 'custom' || $lib->type == 'mine') && $lib->parent == 0;
modalHeader
(
set::title($isSpace ? $lang->doclib->editSpace : $lang->doc->editLib),
set::entityID($lib->id),
set::entityText($lib->name),
);
formPanel
(
on::change('[name^=users]', 'checkObjectPriv'),
in_array($lib->type, array('product', 'project', 'execution')) ? formGroup
(
set::label($lang->doc->{$lib->type}),
set::control('static'),
set::value($object->name)
) : null,
formHidden('product', $lib->product),
formHidden('project', $lib->project),
formHidden('execution', $lib->execution),
formGroup
(
set::label($isSpace ? $lang->doclib->spaceName : $lang->doc->libName),
set::name('name'),
set::value($lib->name),
radioList
(
setClass('hidden'),
set::name('acl'),
set::items($lang->doc->libTypeList),
set::value($libType)
)
),
formRow
(
$isSpace ? setClass('hidden') : null,
setID('aclBox'),
formGroup
(
set::label($lang->doclib->control),
radioList
(
set::name('acl'),
set::items($lib->type == 'api' ? $lang->api->aclList : $lang->doclib->aclList),
set::value($defaultAcl),
on::change("toggleAcl('lib')")
)
)
),
formRow
(
setID('whiteListBox'),
setClass('hidden'),
formGroup
(
set::label($lang->doc->whiteList),
div
(
setClass('w-full check-list'),
div
(
setClass('w-full'),
inputGroup
(
$lang->doclib->group,
picker
(
set::name('groups[]'),
set::items($groups),
set::value($lib->groups),
set::multiple(true)
)
)
),
div
(
setClass('w-full'),
userPicker(set::label($lang->doclib->user), set::items($users), set::value($lib->users))
)
)
)
)
);
/* ====== Render page ====== */
render();
+1 -104
View File
@@ -1,105 +1,2 @@
<?php
declare(strict_types=1);
/**
* The editLib view file of doc module of ZenTaoPMS.
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
* @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
* @author Shujie Tian<tianshujie@easycorp.ltd>
* @package doc
* @link https://www.zentao.net
*/
namespace zin;
$libType = $lib->type;
$defaultAcl = $lib->acl;
if(!empty($lib->main) && $lib->type != 'mine') $defaultAcl = 'default';
jsVar('doclibID', $lib->id);
jsVar('libType', $libType);
$isSpace = ($lib->type == 'custom' || $lib->type == 'mine') && $lib->parent == 0;
modalHeader
(
set::title($isSpace ? $lang->doclib->editSpace : $lang->doc->editLib),
set::entityID($lib->id),
set::entityText($lib->name),
);
formPanel
(
on::change('[name^=users]', 'checkObjectPriv'),
in_array($lib->type, array('product', 'project', 'execution')) ? formGroup
(
set::label($lang->doc->{$lib->type}),
set::control('static'),
set::value($object->name)
) : null,
formHidden('product', $lib->product),
formHidden('project', $lib->project),
formHidden('execution', $lib->execution),
formGroup
(
set::label($isSpace ? $lang->doclib->spaceName : $lang->doc->libName),
set::name('name'),
set::value($lib->name),
radioList
(
setClass('hidden'),
set::name('acl'),
set::items($lang->doc->libTypeList),
set::value($libType)
)
),
formRow
(
$isSpace ? setClass('hidden') : null,
setID('aclBox'),
formGroup
(
set::label($lang->doclib->control),
radioList
(
set::name('acl'),
set::items($lib->type == 'api' ? $lang->api->aclList : $lang->doclib->aclList),
set::value($defaultAcl),
on::change("toggleAcl('lib')")
)
)
),
formRow
(
setID('whiteListBox'),
setClass('hidden'),
formGroup
(
set::label($lang->doc->whiteList),
div
(
setClass('w-full check-list'),
div
(
setClass('w-full'),
inputGroup
(
$lang->doclib->group,
picker
(
set::name('groups[]'),
set::items($groups),
set::value($lib->groups),
set::multiple(true)
)
)
),
div
(
setClass('w-full'),
userPicker(set::label($lang->doclib->user), set::items($users), set::value($lib->users))
)
)
)
)
);
/* ====== Render page ====== */
render();
include './commoneditlib.html.php';
+2
View File
@@ -0,0 +1,2 @@
<?php
include './commoneditlib.html.php';
+2
View File
@@ -1521,7 +1521,9 @@ $lang->resource->doc->myCreation = 'myCreation';
$lang->resource->doc->myEdited = 'myEdited';
$lang->resource->doc->createSpace = 'createSpace';
$lang->resource->doc->createLib = 'createLibAction';
$lang->resource->doc->editSpace = 'editSpaceAction';
$lang->resource->doc->editLib = 'editLibAction';
$lang->resource->doc->deleteSpace = 'deleteSpaceAction';
$lang->resource->doc->deleteLib = 'deleteLibAction';
$lang->resource->doc->moveLib = 'moveLibAction';
$lang->resource->doc->moveDoc = 'moveDocAction';
+2
View File
@@ -3605,6 +3605,7 @@ $config->group->package->manageDoc->subset = 'doc';
$config->group->package->manageDoc->privs = array();
$config->group->package->manageDoc->privs['doc-createSpace'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 0, 'depend' => array('doc-index', 'doc-teamSpace'), 'recommend' => array('doc-createLib'));
$config->group->package->manageDoc->privs['doc-createLib'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 0, 'depend' => array('doc-index'), 'recommend' => array('doc-editLib', 'doc-showFiles', 'doc-moveLib', 'doc-sortDoclib'));
$config->group->package->manageDoc->privs['doc-editSpace'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 1, 'depend' => array('doc-index'), 'recommend' => array('doc-createSpace', 'doc-showFiles', 'doc-sortDoclib'));
$config->group->package->manageDoc->privs['doc-editLib'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 1, 'depend' => array('doc-index'), 'recommend' => array('doc-createLib', 'doc-showFiles', 'doc-sortDoclib'));
$config->group->package->manageDoc->privs['doc-create'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 3, 'depend' => array('doc-index'), 'recommend' => array('doc-collect', 'doc-edit', 'doc-moveDoc', 'doc-batchMoveDoc', 'doc-sortDoc'));
$config->group->package->manageDoc->privs['doc-edit'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 4, 'depend' => array('doc-index'), 'recommend' => array('doc-collect', 'doc-create', 'doc-sortDoc'));
@@ -3623,6 +3624,7 @@ $config->group->package->deleteDoc = new stdclass();
$config->group->package->deleteDoc->order = 20;
$config->group->package->deleteDoc->subset = 'doc';
$config->group->package->deleteDoc->privs = array();
$config->group->package->deleteDoc->privs['doc-deleteSpace'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 40, 'depend' => array('doc-index'), 'recommend' => array());
$config->group->package->deleteDoc->privs['doc-deleteLib'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 40, 'depend' => array('doc-index'), 'recommend' => array());
$config->group->package->deleteDoc->privs['doc-delete'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 60, 'depend' => array('doc-index'), 'recommend' => array());
$config->group->package->deleteDoc->privs['doc-deleteFile'] = array('edition' => 'open,biz,max,ipd', 'vision' => 'rnd,lite,or', 'order' => 65, 'depend' => array('doc-index'), 'recommend' => array());