diff --git a/config/zentaopms.php b/config/zentaopms.php index 83f3505853..940b90971e 100644 --- a/config/zentaopms.php +++ b/config/zentaopms.php @@ -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'; diff --git a/module/doc/control.php b/module/doc/control.php index 25d1ece877..554f2dfcf2 100755 --- a/module/doc/control.php +++ b/module/doc/control.php @@ -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; diff --git a/module/doc/js/app.ui.js b/module/doc/js/app.ui.js index 180aed0984..89bb424a27 100644 --- a/module/doc/js/app.ui.js +++ b/module/doc/js/app.ui.js @@ -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) { diff --git a/module/doc/js/editspace.ui.js b/module/doc/js/editspace.ui.js new file mode 100644 index 0000000000..6865f34372 --- /dev/null +++ b/module/doc/js/editspace.ui.js @@ -0,0 +1,4 @@ +$(function() +{ + toggleAcl('lib'); +}) diff --git a/module/doc/lang/zh-cn.php b/module/doc/lang/zh-cn.php index 393db8ad03..38475e2f75 100644 --- a/module/doc/lang/zh-cn.php +++ b/module/doc/lang/zh-cn.php @@ -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 = '批量移动'; diff --git a/module/doc/ui/app.html.php b/module/doc/ui/app.html.php index 363c96703a..c2e7c6fb9e 100644 --- a/module/doc/ui/app.html.php +++ b/module/doc/ui/app.html.php @@ -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'); diff --git a/module/doc/ui/commoneditlib.html.php b/module/doc/ui/commoneditlib.html.php new file mode 100644 index 0000000000..e72796c7a4 --- /dev/null +++ b/module/doc/ui/commoneditlib.html.php @@ -0,0 +1,105 @@ + + * @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(); diff --git a/module/doc/ui/editlib.html.php b/module/doc/ui/editlib.html.php index e72796c7a4..3c43902dda 100644 --- a/module/doc/ui/editlib.html.php +++ b/module/doc/ui/editlib.html.php @@ -1,105 +1,2 @@ - * @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'; diff --git a/module/doc/ui/editspace.html.php b/module/doc/ui/editspace.html.php new file mode 100644 index 0000000000..3c43902dda --- /dev/null +++ b/module/doc/ui/editspace.html.php @@ -0,0 +1,2 @@ +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'; diff --git a/module/group/packagemanager.php b/module/group/packagemanager.php index fceb6b0aab..7ce531130b 100644 --- a/module/group/packagemanager.php +++ b/module/group/packagemanager.php @@ -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());