From e5ffd04c34b14409199c6c720dff569d462f9548 Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Tue, 12 Jul 2022 09:45:31 +0800 Subject: [PATCH] * Finish task #60565,60566. --- module/gitlab/control.php | 461 ++++--------------- module/gitlab/js/managebranchpriv.js | 72 +++ module/gitlab/js/managetagpriv.js | 72 +++ module/gitlab/lang/de.php | 9 +- module/gitlab/lang/en.php | 9 +- module/gitlab/lang/fr.php | 9 +- module/gitlab/lang/vi.php | 9 +- module/gitlab/lang/zh-cn.php | 9 +- module/gitlab/model.php | 156 +++---- module/gitlab/view/browsebranchpriv.html.php | 81 ---- module/gitlab/view/browseproject.html.php | 4 +- module/gitlab/view/browsetagpriv.html.php | 82 ---- module/gitlab/view/createbranchpriv.html.php | 47 -- module/gitlab/view/createtagpriv.html.php | 43 -- module/gitlab/view/edittagpriv.html.php | 44 -- module/gitlab/view/managebranchpriv.html.php | 82 ++++ module/gitlab/view/managetagpriv.html.php | 76 +++ module/group/lang/resource.php | 18 +- 18 files changed, 485 insertions(+), 798 deletions(-) create mode 100644 module/gitlab/js/managebranchpriv.js create mode 100644 module/gitlab/js/managetagpriv.js delete mode 100644 module/gitlab/view/browsebranchpriv.html.php delete mode 100644 module/gitlab/view/browsetagpriv.html.php delete mode 100644 module/gitlab/view/createbranchpriv.html.php delete mode 100644 module/gitlab/view/createtagpriv.html.php delete mode 100644 module/gitlab/view/edittagpriv.html.php create mode 100644 module/gitlab/view/managebranchpriv.html.php create mode 100644 module/gitlab/view/managetagpriv.html.php diff --git a/module/gitlab/control.php b/module/gitlab/control.php index 5c8074064a..0f3d774d41 100644 --- a/module/gitlab/control.php +++ b/module/gitlab/control.php @@ -911,176 +911,6 @@ class gitlab extends control $this->display(); } - /** - * Browse gitlab protect branch. - * - * @param int $gitlabID - * @param int $projectID - * @param string $orderBy - * @param int $recTotal - * @param int $recPerPage - * @param int $pageID - * @access public - * @return void - */ - public function browseBranchPriv($gitlabID, $projectID, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1) - { - $project = $this->gitlab->apiGetSingleProject($gitlabID, $projectID); - - if(!$this->app->user->admin) - { - $openID = $this->gitlab->getUserIDByZentaoAccount($gitlabID, $this->app->user->account); - if(!$openID) return print(js::alert($this->lang->gitlab->mustBindUser) . js::locate($this->createLink('gitlab', 'browse'))); - if(!$this->gitlab->checkUserAccess($gitlabID, $projectID, $project)) return print(js::alert($this->lang->gitlab->noAccess) . js::locate($this->createLink('gitlab', 'browse'))); - } - - $keyword = fixer::input('post')->setDefault('keyword', '')->get('keyword'); - $branches = $this->gitlab->apiGetBranchPrivs($gitlabID, $projectID, $keyword, $orderBy); - - /* Pager. */ - $this->app->loadClass('pager', $static = true); - $recTotal = count($branches); - $pager = new pager($recTotal, $recPerPage, $pageID); - $branchList = array_chunk($branches, $pager->recPerPage); - - $this->view->keyword = $keyword; - $this->view->pager = $pager; - $this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->browseBranchPriv; - $this->view->levelLang = $this->lang->gitlab->branch->branchCreationLevelList; - $this->view->gitlabID = $gitlabID; - $this->view->projectID = $projectID; - $this->view->project = $project; - $this->view->orderBy = $orderBy; - $this->view->branchList = empty($branchList) ? $branchList: $branchList[$pageID - 1]; - $this->display(); - } - - /** - * Set a gitlab protect branch. - * - * @param int $gitlabID - * @param int $projectID - * @param string $branch - * @access public - * @return void - */ - public function createBranchPriv($gitlabID, $projectID, $branch = '') - { - if(!$this->app->user->admin) - { - $openID = $this->gitlab->getUserIDByZentaoAccount($gitlabID, $this->app->user->account); - if(!$openID) return print(js::alert($this->lang->gitlab->mustBindUser) . js::locate($this->createLink('gitlab', 'browse'))); - - $project = $this->gitlab->apiGetSingleProject($gitlabID, $projectID); - if(!$this->gitlab->checkUserAccess($gitlabID, $projectID, $project)) return print(js::alert($this->lang->gitlab->noAccess) . js::locate($this->createLink('gitlab', 'browse'))); - } - - /* Fix error when request type is PATH_INFO and the branch name contains '-'.*/ - if($branch) $branch = urldecode(helper::safe64Decode($branch)); - - if($_POST) - { - $this->gitlab->createBranchPriv($gitlabID, $projectID, $branch); - - if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); - return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browseBranchPriv', "gitlabID=$gitlabID&projectID=$projectID"))); - } - - $branchPriv = new stdClass(); - $branchPriv->name = ''; - $branchPriv->mergeAccessLevel = 40; // Initialize data, and the operation authority is the maintainers by default. - $branchPriv->pushAccessLevel = 40; // Initialize data, and the operation authority is the maintainers by default. - - $title = $this->lang->gitlab->createBranchPriv; - - if($branch) - { - $title = $this->lang->gitlab->editBranchPriv; - $branchPriv = $this->gitlab->apiGetSingleBranchPriv($gitlabID, $projectID, $branch); - $branchPriv->name = helper::safe64Encode(urlencode($branchPriv->name)); - $branchPriv->mergeAccessLevel = $this->gitlab->checkAccessLevel($branchPriv->merge_access_levels); - $branchPriv->pushAccessLevel = $this->gitlab->checkAccessLevel($branchPriv->push_access_levels); - } - - $gitlabBranches = $this->gitlab->apiGetBranches($gitlabID, $projectID); - $protectBranches = $this->gitlab->apiGetBranchPrivs($gitlabID, $projectID, '', 'name_asc'); - $protectNames = array_keys($protectBranches); - - $branches = array(); - foreach($gitlabBranches as $oneBranch) - { - if(!in_array($oneBranch->name, $protectNames) || $oneBranch->name == $branch) - { - $branchName = helper::safe64Encode(urlencode($oneBranch->name)); - $branches[$branchName] = $oneBranch->name; - } - } - - $this->view->title = $this->lang->gitlab->common . $this->lang->colon . $title; - $this->view->pageTitle = $title; - $this->view->gitlabID = $gitlabID; - $this->view->branch = $branch; - $this->view->projectID = $projectID; - $this->view->branches = $branches; - $this->view->branchPriv = $branchPriv; - $this->display(); - } - - /** - * Edit a gitlab branch protect. - * - * @param int $gitlabID - * @param int $projectID - * @param string $branch - * @access public - * @return void - */ - public function editBranchPriv($gitlabID, $projectID, $branch) - { - echo $this->fetch('gitlab', 'createBranchPriv', "gitlabID=$gitlabID&projectID=$projectID&branch=$branch"); - } - - /** - * Delete a gitlab protect branch. - * - * @param int $gitlabID - * @param int $projectID - * @param string $branch - * @param string $confirm - * @access public - * @return void - */ - public function deleteBranchPriv($gitlabID, $projectID, $branch, $confirm = 'no') - { - if(!$this->app->user->admin) - { - $openID = $this->gitlab->getUserIDByZentaoAccount($gitlabID, $this->app->user->account); - if(!$openID) return print(js::alert($this->lang->gitlab->mustBindUser) . js::locate($this->createLink('gitlab', 'browse'))); - - $project = $this->gitlab->apiGetSingleProject($gitlabID, $projectID); - if(!$this->gitlab->checkUserAccess($gitlabID, $projectID, $project)) return print(js::alert($this->lang->gitlab->noAccess) . js::locate($this->createLink('gitlab', 'browse'))); - } - - if($confirm != 'yes') - { - $branch = urlencode($branch); - return print(js::confirm($this->lang->gitlab->branch->confirmDelete , inlink('deleteBranchPriv', "gitlabID=$gitlabID&projectID=$projectID&branch=$branch&confirm=yes"))); - } - - /* Fix error when request type is PATH_INFO and the branch name contains '-'.*/ - $branch = urldecode(helper::safe64Decode($branch)); - $reponse = $this->gitlab->apiDeleteBranchPriv($gitlabID, $projectID, $branch); - - /* If the status code beginning with 20 is returned or empty is returned, it is successful. */ - if(!$reponse or substr($reponse->message, 0, 2) == '20') - { - $this->loadModel('action')->create('gitlabbranchPriv', $branch, 'deleted', '', $branch); - return print(js::reload('parent')); - } - - echo js::alert($reponse->message); - } - /** * Browse gitlab tag. * @@ -1135,206 +965,6 @@ class gitlab extends control $this->display(); } - /** - * Browse gitlab protect tag. - * - * @param int $gitlabID - * @param int $projectID - * @param string $orderBy - * @param int $recTotal - * @param int $recPerPage - * @param int $pageID - * @access public - * @return void - */ - public function browseTagPriv($gitlabID, $projectID, $orderBy = 'name_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) - { - $project = $this->gitlab->apiGetSingleProject($gitlabID, $projectID); - - if(!$this->app->user->admin) - { - $openID = $this->gitlab->getUserIDByZentaoAccount($gitlabID, $this->app->user->account); - if(!$openID) return print(js::alert($this->lang->gitlab->mustBindUser) . js::locate($this->createLink('gitlab', 'browse'))); - - if(!$this->gitlab->checkUserAccess($gitlabID, $projectID, $project)) return print(js::alert($this->lang->gitlab->noAccess) . js::locate($this->createLink('gitlab', 'browse'))); - } - - $this->session->set('gitlabTagPrivList', $this->app->getURI(true)); - $keyword = fixer::input('post')->setDefault('keyword', '')->get('keyword'); - - $gitlabTags = array(); - $allTags = $this->gitlab->apiGetTags($gitlabID, $projectID); - foreach($allTags as $tag) - { - $gitlabTags[$tag->name] = $tag; - } - - $tagList = array(); - $gitlabProtectTags = $this->gitlab->apiGetTagPrivs($gitlabID, $projectID); - foreach($gitlabProtectTags as $gitlabProtectTag) - { - $tag = new stdClass(); - $tag->name = $gitlabProtectTag->name; - $tag->lastCommitter = isset($gitlabTags[$tag->name]) ? $gitlabTags[$tag->name]->commit->committer_name : ''; - $tag->accessLevels = $gitlabProtectTag->create_access_levels; - - $tagList[] = $tag; - } - - /* Data search. */ - if($keyword) - { - foreach($tagList as $key => $tag) - { - if(strpos($tag->name, $keyword) === false) unset($tagList[$key]); - } - $tagList = array_values($tagList); - } - - /* Data sort. */ - list($order, $sort) = explode('_', $orderBy); - $orderList = array(); - foreach($tagList as $tag) $orderList[] = $tag->$order; - array_multisort($orderList, $sort == 'desc' ? SORT_DESC : SORT_ASC, $tagList); - - /* Pager. */ - $this->app->loadClass('pager', $static = true); - $recTotal = count($tagList); - $pager = new pager($recTotal, $recPerPage, $pageID); - $tagList = array_chunk($tagList, $pager->recPerPage); - - $this->view->gitlab = $this->gitlab->getByID($gitlabID); - $this->view->pager = $pager; - $this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->browseTagPriv; - $this->view->gitlabID = $gitlabID; - $this->view->projectID = $projectID; - $this->view->keyword = $keyword; - $this->view->project = $project; - $this->view->gitlabTagList = empty($tagList) ? $tagList: $tagList[$pageID - 1]; - $this->view->orderBy = $orderBy; - $this->display(); - } - - /** - * Set a gitlab protect tag. - * - * @param int $gitlabID - * @param int $projectID - * @access public - * @return void - */ - public function createTagPriv($gitlabID, $projectID) - { - if(!$this->app->user->admin) - { - $openID = $this->gitlab->getUserIDByZentaoAccount($gitlabID, $this->app->user->account); - if(!$openID) return print(js::alert($this->lang->gitlab->mustBindUser) . js::locate($this->createLink('gitlab', 'browse'))); - - $project = $this->gitlab->apiGetSingleProject($gitlabID, $projectID); - if(!$this->gitlab->checkUserAccess($gitlabID, $projectID, $project)) return print(js::alert($this->lang->gitlab->noAccess) . js::locate($this->createLink('gitlab', 'browse'))); - } - - if($_POST) - { - $this->gitlab->createTagPriv($gitlabID, $projectID); - - if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); - return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browseTagPriv', "gitlabID=$gitlabID&projectID=$projectID"))); - } - - $gitlabTags = $this->gitlab->apiGetTags($gitlabID, $projectID); - $protectTags = $this->gitlab->apiGetTagPrivs($gitlabID, $projectID, '', 'name_asc'); - $protectNames = array_keys($protectTags); - - $tags = array(); - foreach($gitlabTags as $tag) - { - if(!in_array($tag->name, $protectNames)) $tags[$tag->name] = $tag->name; - } - - $this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->createTagPriv; - $this->view->gitlabID = $gitlabID; - $this->view->projectID = $projectID; - $this->view->tags = $tags; - $this->display(); - } - - /** - * Edit a gitlab protect tag. - * - * @param int $gitlabID - * @param int $projectID - * @param string $tag - * @access public - * @return void - */ - public function editTagPriv($gitlabID, $projectID, $tag = '') - { - if(!$this->app->user->admin) - { - $openID = $this->gitlab->getUserIDByZentaoAccount($gitlabID, $this->app->user->account); - if(!$openID) return print(js::alert($this->lang->gitlab->mustBindUser) . js::locate($this->createLink('gitlab', 'browse'))); - - $project = $this->gitlab->apiGetSingleProject($gitlabID, $projectID); - if(!$this->gitlab->checkUserAccess($gitlabID, $projectID, $project)) return print(js::alert($this->lang->gitlab->noAccess) . js::locate($this->createLink('gitlab', 'browse'))); - } - - /* Fix error when request type is PATH_INFO and the tag name contains '-'.*/ - $tag = urldecode(helper::safe64Decode($tag)); - - if($_POST) - { - $this->gitlab->createTagPriv($gitlabID, $projectID, $tag); - - if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); - return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browseTagPriv', "gitlabID=$gitlabID&projectID=$projectID"))); - } - - $tagPriv = $this->gitlab->apiGetSingleTagPriv($gitlabID, $projectID, $tag); - $tagPriv->createAccessLevel = $this->gitlab->checkAccessLevel($tagPriv->create_access_levels); - - $this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->editTagPriv; - $this->view->gitlabID = $gitlabID; - $this->view->projectID = $projectID; - $this->view->tagPriv = $tagPriv; - $this->view->tag = $tag; - $this->display(); - } - - /** - * Delete a gitlab protect tag. - * - * @param int $gitlabID - * @param int $projectID - * @param string $tag - * @access public - * @return void - */ - public function deleteTagPriv($gitlabID, $projectID, $tag) - { - if(!$this->app->user->admin) - { - $openID = $this->gitlab->getUserIDByZentaoAccount($gitlabID, $this->app->user->account); - if(!$openID) return print(js::alert($this->lang->gitlab->mustBindUser) . js::locate($this->createLink('gitlab', 'browse'))); - - $project = $this->gitlab->apiGetSingleProject($gitlabID, $projectID); - if(!$this->gitlab->checkUserAccess($gitlabID, $projectID, $project)) return print(js::alert($this->lang->gitlab->noAccess) . js::locate($this->createLink('gitlab', 'browse'))); - } - - /* Fix error when request type is PATH_INFO and the tag name contains '-'.*/ - $tag = urldecode(helper::safe64Decode($tag)); - $reponse = $this->gitlab->apiDeleteTagPriv($gitlabID, $projectID, $tag); - - /* If the status code beginning with 20 is returned or empty is returned, it is successful. */ - if(!$reponse or substr($reponse->message, 0, 2) == '20') - { - $this->loadModel('action')->create('gitlabtagpriv', 0, 'deleted', '', $tag); - return print(js::reload('parent')); - } - - echo js::alert($reponse->message); - } - /** * Import gitlab issue to zentaopms. * @@ -1746,4 +1376,95 @@ class gitlab extends control echo js::alert($reponse->message); } + + /** + * Manage a gitlab branch protected. + * + * @param int $repoID + * @param int $projectID + * @access public + * @return void + */ + public function manageBranchPriv($gitlabID, $projectID) + { + if(!$this->app->user->admin) + { + $openID = $this->gitlab->getUserIDByZentaoAccount($gitlabID, $this->app->user->account); + if(!$openID) return print(js::alert($this->lang->gitlab->mustBindUser) . js::locate($this->createLink('gitlab', 'browse'))); + if(!$this->gitlab->checkUserAccess($gitlabID, $projectID, $project)) return print(js::alert($this->lang->gitlab->noAccess) . js::locate($this->createLink('gitlab', 'browse'))); + } + + $hasAccessBranches = $this->gitlab->apiGetBranchPrivs($gitlabID, $projectID, '', 'name_asc'); + foreach($hasAccessBranches as $branch) + { + $branch->pushAccess = $this->gitlab->checkAccessLevel($branch->push_access_levels); + $branch->mergeAccess = $this->gitlab->checkAccessLevel($branch->merge_access_levels); + } + + if(!empty($_POST)) + { + $result = $this->gitlab->manageBranchPrivs($gitlabID, $projectID, $hasAccessBranches); + if(!empty($result)) return $this->send(array('result' => 'fail', 'message' => sprintf($this->lang->gitlab->svaeFailed, implode(', ', $result)))); + + return $this->send(array('message' => $this->lang->saveSuccess, 'result' => 'success', 'locate' => inlink('browseProject', "gitlabID=$gitlabID"))); + } + $allBranches = $this->gitlab->apiGetBranches($gitlabID, $projectID); + $noAccessBranches = array(); + foreach($allBranches as $branch) + { + if(!isset($hasAccessBranches[$branch->name])) $noAccessBranches[$branch->name] = $branch->name; + } + + $this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->browseBranchPriv; + $this->view->gitlabID = $gitlabID; + $this->view->projectID = $projectID; + $this->view->hasAccessBranches = $hasAccessBranches; + $this->view->noAccessBranches = $noAccessBranches; + $this->display(); + } + + /** + * Manage a gitlab tag protected. + * + * @param int $repoID + * @param int $projectID + * @access public + * @return void + */ + public function manageTagPriv($gitlabID, $projectID) + { + if(!$this->app->user->admin) + { + $openID = $this->gitlab->getUserIDByZentaoAccount($gitlabID, $this->app->user->account); + if(!$openID) return print(js::alert($this->lang->gitlab->mustBindUser) . js::locate($this->createLink('gitlab', 'browse'))); + if(!$this->gitlab->checkUserAccess($gitlabID, $projectID, $project)) return print(js::alert($this->lang->gitlab->noAccess) . js::locate($this->createLink('gitlab', 'browse'))); + } + + $hasAccessTags = $this->gitlab->apiGetTagPrivs($gitlabID, $projectID, '', 'name_asc'); + foreach($hasAccessTags as $tag) + { + $tag->createAccess = $this->gitlab->checkAccessLevel($tag->create_access_levels); + } + + if(!empty($_POST)) + { + $result = $this->gitlab->manageTagPrivs($gitlabID, $projectID, $hasAccessTags); + if(!empty($result)) return $this->send(array('result' => 'fail', 'message' => sprintf($this->lang->gitlab->svaeFailed, implode(', ', $result)))); + + return $this->send(array('message' => $this->lang->saveSuccess, 'result' => 'success', 'locate' => inlink('browseProject', "gitlabID=$gitlabID"))); + } + $allTags = $this->gitlab->apiGetTags($gitlabID, $projectID); + $noAccessTags = array(); + foreach($allTags as $tag) + { + if(!isset($hasAccessTags[$tag->name])) $noAccessTags[$tag->name] = $tag->name; + } + + $this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->browseTagPriv; + $this->view->gitlabID = $gitlabID; + $this->view->projectID = $projectID; + $this->view->hasAccessTags = $hasAccessTags; + $this->view->noAccessTags = $noAccessTags; + $this->display(); + } } diff --git a/module/gitlab/js/managebranchpriv.js b/module/gitlab/js/managebranchpriv.js new file mode 100644 index 0000000000..ca2a04c27b --- /dev/null +++ b/module/gitlab/js/managebranchpriv.js @@ -0,0 +1,72 @@ +/* Update other picker on change */ +$.zui.Picker.DEFAULTS.onChange = function(event) +{ + var picker = event.picker; + if(!picker.$formItem.is('[name^=branches]')) return; + + var select = picker.$formItem[0]; + var newItem = event.value.length ? $.extend({}, picker.getListItem(event.value), {disabled: true}) : $.extend({}, picker.getListItem(event.oldValue), {disabled: false}); + + $('.user-picker[name^=branches]').each(function() + { + if(this === select) return; + + var $select = $(this); + var selectPicker = $select.data('zui.picker'); + + if(selectPicker) selectPicker.updateOptionList([$.extend({}, newItem)]); + }); +} + +/** + * Save team members. + * + * @access public + * @return void + */ +function savePriv() +{ + $('#saveBtn').addClass('hidden'); + $('#submit').removeClass('hidden'); + $('#submit').click(); +} + +/** + * Add item. + * + * @param object $obj + * @access public + * @return void + */ +function addItem(obj) +{ + var item = $('#addItem').html().replace(/%i%/g, itemIndex); + var $tr = $('' + item + '').insertAfter($(obj).closest('tr')); + var $accounts = $tr.find('select:first').addClass('user-picker').trigger('list:updated').picker({type: 'user'}); + itemIndex++; + + var disabledItems = []; + $('.user-picker[name^=branches]').each(function() + { + if(this === $accounts[0]) return; + var $select = $(this); + var picker = $select.data('zui.picker'); + if(!picker) return; + var selectItem = picker.getListItem(picker.getValue()); + if(selectItem) disabledItems.push($.extend({}, selectItem, {disabled: true})); + }); + if(disabledItems.length) $accounts.data('zui.picker').updateOptionList(disabledItems); +} + +/** + * Delete item. + * + * @param object $obj + * @access public + * @return void + */ +function deleteItem(obj) +{ + if($('#teamForm .table-form tbody').children().length < 2) return false; + $(obj).closest('tr').remove(); +} diff --git a/module/gitlab/js/managetagpriv.js b/module/gitlab/js/managetagpriv.js new file mode 100644 index 0000000000..6e290efb1f --- /dev/null +++ b/module/gitlab/js/managetagpriv.js @@ -0,0 +1,72 @@ +/* Update other picker on change */ +$.zui.Picker.DEFAULTS.onChange = function(event) +{ + var picker = event.picker; + if(!picker.$formItem.is('[name^=tags]')) return; + + var select = picker.$formItem[0]; + var newItem = event.value.length ? $.extend({}, picker.getListItem(event.value), {disabled: true}) : $.extend({}, picker.getListItem(event.oldValue), {disabled: false}); + + $('.user-picker[name^=tags]').each(function() + { + if(this === select) return; + + var $select = $(this); + var selectPicker = $select.data('zui.picker'); + + if(selectPicker) selectPicker.updateOptionList([$.extend({}, newItem)]); + }); +} + +/** + * Save team members. + * + * @access public + * @return void + */ +function savePriv() +{ + $('#saveBtn').addClass('hidden'); + $('#submit').removeClass('hidden'); + $('#submit').click(); +} + +/** + * Add item. + * + * @param object $obj + * @access public + * @return void + */ +function addItem(obj) +{ + var item = $('#addItem').html().replace(/%i%/g, itemIndex); + var $tr = $('' + item + '').insertAfter($(obj).closest('tr')); + var $accounts = $tr.find('select:first').addClass('user-picker').trigger('list:updated').picker({type: 'user'}); + itemIndex++; + + var disabledItems = []; + $('.user-picker[name^=tags]').each(function() + { + if(this === $accounts[0]) return; + var $select = $(this); + var picker = $select.data('zui.picker'); + if(!picker) return; + var selectItem = picker.getListItem(picker.getValue()); + if(selectItem) disabledItems.push($.extend({}, selectItem, {disabled: true})); + }); + if(disabledItems.length) $accounts.data('zui.picker').updateOptionList(disabledItems); +} + +/** + * Delete item. + * + * @param object $obj + * @access public + * @return void + */ +function deleteItem(obj) +{ + if($('#teamForm .table-form tbody').children().length < 2) return false; + $(obj).closest('tr').remove(); +} diff --git a/module/gitlab/lang/de.php b/module/gitlab/lang/de.php index 169875c665..41d82d8582 100644 --- a/module/gitlab/lang/de.php +++ b/module/gitlab/lang/de.php @@ -34,7 +34,7 @@ $lang->gitlab->browseUser = "User"; $lang->gitlab->browseGroup = "Group"; $lang->gitlab->browseBranch = "GitLab Branch List"; $lang->gitlab->browseTag = "GitLab Tag List"; -$lang->gitlab->browseTagPriv = "GitLab Tag protected List"; +$lang->gitlab->browseTagPriv = "Protected tag"; $lang->gitlab->gitlabIssue = "GitLab Issue"; $lang->gitlab->zentaoProduct = 'Zentao Product'; $lang->gitlab->objectType = 'Type'; // task, bug, story @@ -52,14 +52,9 @@ $lang->gitlab->createBranch = 'Add branch'; $lang->gitlab->manageGroupMembers = 'Manage group member'; $lang->gitlab->createWebhook = 'Create Webhook'; $lang->gitlab->browseBranchPriv = 'Protect branch'; -$lang->gitlab->createBranchPriv = 'Cerate branch protected'; -$lang->gitlab->editBranchPriv = 'Edit branch protected'; -$lang->gitlab->deleteBranchPriv = 'Delete branch protected'; $lang->gitlab->createTag = 'Create Tag'; $lang->gitlab->deleteTag = 'Delete tag'; -$lang->gitlab->createTagPriv = 'Create tag protected'; -$lang->gitlab->editTagPriv = 'Edit tag protected'; -$lang->gitlab->deleteTagPriv = 'Delete tag protected'; +$lang->gitlab->svaeFailed = '『%s』save failed'; $lang->gitlab->id = 'ID'; $lang->gitlab->name = "Server Name"; diff --git a/module/gitlab/lang/en.php b/module/gitlab/lang/en.php index 169875c665..41d82d8582 100644 --- a/module/gitlab/lang/en.php +++ b/module/gitlab/lang/en.php @@ -34,7 +34,7 @@ $lang->gitlab->browseUser = "User"; $lang->gitlab->browseGroup = "Group"; $lang->gitlab->browseBranch = "GitLab Branch List"; $lang->gitlab->browseTag = "GitLab Tag List"; -$lang->gitlab->browseTagPriv = "GitLab Tag protected List"; +$lang->gitlab->browseTagPriv = "Protected tag"; $lang->gitlab->gitlabIssue = "GitLab Issue"; $lang->gitlab->zentaoProduct = 'Zentao Product'; $lang->gitlab->objectType = 'Type'; // task, bug, story @@ -52,14 +52,9 @@ $lang->gitlab->createBranch = 'Add branch'; $lang->gitlab->manageGroupMembers = 'Manage group member'; $lang->gitlab->createWebhook = 'Create Webhook'; $lang->gitlab->browseBranchPriv = 'Protect branch'; -$lang->gitlab->createBranchPriv = 'Cerate branch protected'; -$lang->gitlab->editBranchPriv = 'Edit branch protected'; -$lang->gitlab->deleteBranchPriv = 'Delete branch protected'; $lang->gitlab->createTag = 'Create Tag'; $lang->gitlab->deleteTag = 'Delete tag'; -$lang->gitlab->createTagPriv = 'Create tag protected'; -$lang->gitlab->editTagPriv = 'Edit tag protected'; -$lang->gitlab->deleteTagPriv = 'Delete tag protected'; +$lang->gitlab->svaeFailed = '『%s』save failed'; $lang->gitlab->id = 'ID'; $lang->gitlab->name = "Server Name"; diff --git a/module/gitlab/lang/fr.php b/module/gitlab/lang/fr.php index 169875c665..41d82d8582 100644 --- a/module/gitlab/lang/fr.php +++ b/module/gitlab/lang/fr.php @@ -34,7 +34,7 @@ $lang->gitlab->browseUser = "User"; $lang->gitlab->browseGroup = "Group"; $lang->gitlab->browseBranch = "GitLab Branch List"; $lang->gitlab->browseTag = "GitLab Tag List"; -$lang->gitlab->browseTagPriv = "GitLab Tag protected List"; +$lang->gitlab->browseTagPriv = "Protected tag"; $lang->gitlab->gitlabIssue = "GitLab Issue"; $lang->gitlab->zentaoProduct = 'Zentao Product'; $lang->gitlab->objectType = 'Type'; // task, bug, story @@ -52,14 +52,9 @@ $lang->gitlab->createBranch = 'Add branch'; $lang->gitlab->manageGroupMembers = 'Manage group member'; $lang->gitlab->createWebhook = 'Create Webhook'; $lang->gitlab->browseBranchPriv = 'Protect branch'; -$lang->gitlab->createBranchPriv = 'Cerate branch protected'; -$lang->gitlab->editBranchPriv = 'Edit branch protected'; -$lang->gitlab->deleteBranchPriv = 'Delete branch protected'; $lang->gitlab->createTag = 'Create Tag'; $lang->gitlab->deleteTag = 'Delete tag'; -$lang->gitlab->createTagPriv = 'Create tag protected'; -$lang->gitlab->editTagPriv = 'Edit tag protected'; -$lang->gitlab->deleteTagPriv = 'Delete tag protected'; +$lang->gitlab->svaeFailed = '『%s』save failed'; $lang->gitlab->id = 'ID'; $lang->gitlab->name = "Server Name"; diff --git a/module/gitlab/lang/vi.php b/module/gitlab/lang/vi.php index 169875c665..41d82d8582 100644 --- a/module/gitlab/lang/vi.php +++ b/module/gitlab/lang/vi.php @@ -34,7 +34,7 @@ $lang->gitlab->browseUser = "User"; $lang->gitlab->browseGroup = "Group"; $lang->gitlab->browseBranch = "GitLab Branch List"; $lang->gitlab->browseTag = "GitLab Tag List"; -$lang->gitlab->browseTagPriv = "GitLab Tag protected List"; +$lang->gitlab->browseTagPriv = "Protected tag"; $lang->gitlab->gitlabIssue = "GitLab Issue"; $lang->gitlab->zentaoProduct = 'Zentao Product'; $lang->gitlab->objectType = 'Type'; // task, bug, story @@ -52,14 +52,9 @@ $lang->gitlab->createBranch = 'Add branch'; $lang->gitlab->manageGroupMembers = 'Manage group member'; $lang->gitlab->createWebhook = 'Create Webhook'; $lang->gitlab->browseBranchPriv = 'Protect branch'; -$lang->gitlab->createBranchPriv = 'Cerate branch protected'; -$lang->gitlab->editBranchPriv = 'Edit branch protected'; -$lang->gitlab->deleteBranchPriv = 'Delete branch protected'; $lang->gitlab->createTag = 'Create Tag'; $lang->gitlab->deleteTag = 'Delete tag'; -$lang->gitlab->createTagPriv = 'Create tag protected'; -$lang->gitlab->editTagPriv = 'Edit tag protected'; -$lang->gitlab->deleteTagPriv = 'Delete tag protected'; +$lang->gitlab->svaeFailed = '『%s』save failed'; $lang->gitlab->id = 'ID'; $lang->gitlab->name = "Server Name"; diff --git a/module/gitlab/lang/zh-cn.php b/module/gitlab/lang/zh-cn.php index d9ac66d15f..7273c0c8ef 100644 --- a/module/gitlab/lang/zh-cn.php +++ b/module/gitlab/lang/zh-cn.php @@ -34,7 +34,7 @@ $lang->gitlab->browseUser = "用户"; $lang->gitlab->browseGroup = "群组"; $lang->gitlab->browseBranch = "GitLab分支列表"; $lang->gitlab->browseTag = "GitLab标签列表"; -$lang->gitlab->browseTagPriv = "GitLab标签保护列表"; +$lang->gitlab->browseTagPriv = "标签保护管理"; $lang->gitlab->gitlabIssue = "{$lang->gitlab->common} issue"; $lang->gitlab->zentaoProduct = '禅道产品'; $lang->gitlab->objectType = '类型'; // task, bug, story @@ -52,14 +52,9 @@ $lang->gitlab->createBranch = '添加分支'; $lang->gitlab->manageGroupMembers = '群组成员管理'; $lang->gitlab->createWebhook = '创建Webhook'; $lang->gitlab->browseBranchPriv = '分支保护管理'; -$lang->gitlab->createBranchPriv = '创建分支保护'; -$lang->gitlab->editBranchPriv = '编辑分支保护'; -$lang->gitlab->deleteBranchPriv = '删除分支保护'; $lang->gitlab->createTag = '创建标签'; $lang->gitlab->deleteTag = '删除标签'; -$lang->gitlab->createTagPriv = '创建标签保护'; -$lang->gitlab->editTagPriv = '编辑标签保护'; -$lang->gitlab->deleteTagPriv = '删除标签保护'; +$lang->gitlab->svaeFailed = '『%s』保存失败'; $lang->gitlab->id = 'ID'; $lang->gitlab->name = "服务器名称"; diff --git a/module/gitlab/model.php b/module/gitlab/model.php index aa7d73dca6..6cef6d84c1 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -2549,59 +2549,54 @@ class gitlabModel extends model } /** - * Get single protct branch by API. + * Manage branch privs. * * @param int $gitlabID * @param int $projectID - * @param string $branch + * @param array $protected * @access public - * @return object + * @return array */ - public function apiGetSingleBranchPriv($gitlabID, $projectID, $branch) + public function manageBranchPrivs($gitlabID, $projectID, $protected = array()) { - if(empty($gitlabID)) return false; - $branch = urlencode($branch); - $url = sprintf($this->getApiRoot($gitlabID), "/projects/$projectID/protected_branches/$branch"); - return json_decode(commonModel::http($url)); - } + $data = (array)fixer::input('post')->get(); + extract($data); + $failure = array(); - /** - * Create gitlab potect branch. - * - * @param int $gitlabID - * @param int $projectID - * @param string $branch - * @access public - * @return bool - */ - public function createBranchPriv($gitlabID, $projectID, $branch = '') - { - $priv = fixer::input('post')->get(); - if(empty($priv->name)) + /* Remove privs. */ + foreach($protected as $name => $branch) { - dao::$errors['name'][] = $this->lang->gitlab->branch->emptyPrivNameError; - return false; + if(!in_array($name, $branches)) + { + $result = $this->apiDeleteBranchPriv($gitlabID, $projectID, $name); + if($result and substr($result->message, 0, 2) != '20') $failure[] = $name; + } } - $priv->name = urldecode(helper::safe64Decode($priv->name)); - $singleBranch = $this->apiGetSingleBranchPriv($gitlabID, $projectID, $priv->name); - if(empty($branch) && !empty($singleBranch->id)) + $priv = new stdClass(); + foreach($branches as $key => $name) { - dao::$errors['name'][] = $this->lang->gitlab->branch->issetPrivNameError; - return false; + /* Process exists data. */ + if(isset($protected[$name])) + { + if($protected[$name]->pushAccess == $pushLevels[$key] and $protected[$name]->mergeAccess == $mergeLevels[$key]) + { + continue; + } + else + { + $result = $this->apiDeleteBranchPriv($gitlabID, $projectID, $name); + if(isset($result->message) and substr($result->message, 0, 2) != '20') $failure[] = $name; + } + } + + $priv->name = $name; + $priv->push_access_level = $pushLevels[$key]; + $priv->merge_access_level = $mergeLevels[$key]; + $response = $this->apiCreateBranchPriv($gitlabID, $projectID, $priv); + if(isset($response->message) and substr($response->message, 0, 2) != '20') $failure[] = $name; } - - if(!empty($branch) && !empty($singleBranch->id)) $this->apiDeleteBranchPriv($gitlabID, $projectID, $branch); - $response = $this->apiCreateBranchPriv($gitlabID, $projectID, $priv); - - if(!empty($response->id)) - { - $action = empty($branch) ? 'created' : 'edited'; - $this->loadModel('action')->create('gitlabbranchpriv', $response->id, $action, '', $response->name); - return true; - } - - return $this->apiErrorHandling($response); + return array_unique($failure); } /** @@ -2630,7 +2625,7 @@ class gitlabModel extends model * @param int $projectID * @param string $branch * @access public - * @return object + * @return array */ public function apiDeleteBranchPriv($gitlabID, $projectID, $branch) { @@ -2642,58 +2637,53 @@ class gitlabModel extends model } /** - * Create gitlab protect tag. + * Manage tag privs. * * @param int $gitlabID * @param int $projectID - * @param string $tag + * @param array $protected * @access public - * @return bool + * @return array */ - public function createTagPriv($gitlabID, $projectID, $tag = '') + public function manageTagPrivs($gitlabID, $projectID, $protected = array()) { - $priv = fixer::input('post')->get(); - if(empty($priv->name)) + $data = (array)fixer::input('post')->get(); + extract($data); + $failure = array(); + + /* Remove privs. */ + foreach($protected as $name => $tag) { - dao::$errors['name'][] = $this->lang->gitlab->tag->emptyPrivNameError; - return false; + if(!in_array($name, $tags)) + { + $result = $this->apiDeleteTagPriv($gitlabID, $projectID, $name); + if($result and substr($result->message, 0, 2) != '20') $failure[] = $name; + } } - $singleTag = $this->apiGetSingleTagPriv($gitlabID, $projectID, $priv->name); - if(empty($tag) && !empty($singleTag->id)) + $priv = new stdClass(); + foreach($tags as $key => $name) { - dao::$errors['name'][] = $this->lang->gitlab->tag->issetPrivNameError; - return false; + /* Process exists data. */ + if(isset($protected[$name])) + { + if($protected[$name]->createAccess == $createLevels[$key]) + { + continue; + } + else + { + $result = $this->apiDeleteTagPriv($gitlabID, $projectID, $name); + if(isset($result->message) and substr($result->message, 0, 2) != '20') $failure[] = $name; + } + } + + $priv->name = $name; + $priv->create_access_level = $createLevels[$key]; + $response = $this->apiCreateTagPriv($gitlabID, $projectID, $priv); + if(isset($response->message) and substr($response->message, 0, 2) != '20') $failure[] = $name; } - - if(!empty($tag) && !empty($singleTag->name)) $this->apiDeleteTagPriv($gitlabID, $projectID, $tag); - $response = $this->apiCreateTagPriv($gitlabID, $projectID, $priv); - - if(!empty($response->id)) - { - $action = empty($tag) ? 'created' : 'edited'; - $this->loadModel('action')->create('gitlabtagpriv', $response->id, $action, '', $response->name); - return true; - } - - return $this->apiErrorHandling($response); - } - - /** - * Get single protct tag by API. - * - * @param int $gitlabID - * @param int $projectID - * @param string $tag - * @access public - * @return object - */ - public function apiGetSingleTagPriv($gitlabID, $projectID, $tag) - { - if(empty($gitlabID)) return false; - $tag = urlencode($tag); - $url = sprintf($this->getApiRoot($gitlabID), "/projects/$projectID/protected_tags/$tag"); - return json_decode(commonModel::http($url)); + return array_unique($failure); } /** diff --git a/module/gitlab/view/browsebranchpriv.html.php b/module/gitlab/view/browsebranchpriv.html.php deleted file mode 100644 index 181c913742..0000000000 --- a/module/gitlab/view/browsebranchpriv.html.php +++ /dev/null @@ -1,81 +0,0 @@ - - * @package gitlab - * @version $Id$ - * @link http://www.zentao.net - */ -?> - - - -
-

- noData;?> - - createLink('gitlab', 'createBranchPriv', "gitlabID=$gitlabID&projectID=$projectID"), " " . $lang->gitlab->createBranchPriv, '', "class='btn btn-info'");?> - -

-
- -
-
- - recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";?> - - - - - - - - - - $branch): ?> - merge_access_level = $this->gitlab->checkAccessLevel($branch->merge_access_levels); ?> - push_access_level = $this->gitlab->checkAccessLevel($branch->push_access_levels); ?> - - - - - - - - -
gitlab->branch->name);?>gitlab->branch->mergeAllowed;?>gitlab->branch->pushAllowed;?>actions;?>
name;?>merge_access_level];?>push_access_level];?> - name)); - if(common::hasPriv('gitlab', 'editBranchPriv')) common::printLink('gitlab', 'editBranchPriv', "gitlabID=$gitlabID&projectID=$projectID&branch=$branchName", " ", '', "title={$lang->gitlab->editBranchPriv} class='btn btn-primary'"); - if(common::hasPriv('gitlab', 'deleteBranchPriv')) echo html::a($this->createLink('gitlab', 'deleteBranchPriv', "gitlabID=$gitlabID&projectID=$projectID&branch=$branchName"), '', 'hiddenwin', "title='{$lang->gitlab->deleteBranchPriv}' class='btn'"); - ?> -
- - - -
-
- - diff --git a/module/gitlab/view/browseproject.html.php b/module/gitlab/view/browseproject.html.php index 93fddbd2f7..e2e9c57d1d 100644 --- a/module/gitlab/view/browseproject.html.php +++ b/module/gitlab/view/browseproject.html.php @@ -60,8 +60,8 @@ last_activity_at, 0, 10);?> id", '', 'list', 'branch-lock', '', '', false, '', '', 0, ($gitlabProject->isMaintainer and $gitlabProject->default_branch)); - echo common::buildIconButton('gitlab', 'browseTagPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'tag-lock', '', '', false, '', '', 0, ($gitlabProject->isMaintainer and $gitlabProject->default_branch)); + echo common::buildIconButton('gitlab', 'manageBranchPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'branch-lock', '', '', false, '', '', 0, ($gitlabProject->isMaintainer and $gitlabProject->default_branch)); + echo common::buildIconButton('gitlab', 'manageTagPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'tag-lock', '', '', false, '', '', 0, ($gitlabProject->isMaintainer and $gitlabProject->default_branch)); echo common::buildIconButton('gitlab', 'manageProjectMembers', 'repoID=' . zget($repoPairs, $gitlabProject->id), '', 'list', 'team', '', '', false, '', '', 0, isset($repoPairs[$gitlabProject->id])); echo common::buildIconButton('gitlab', 'createWebhook', 'repoID=' . zget($repoPairs, $gitlabProject->id), '', 'list', 'change', 'hiddenwin', '', false, '', '', 0, isset($repoPairs[$gitlabProject->id])); echo common::buildIconButton('gitlab', 'importIssue', 'repoID=' . zget($repoPairs, $gitlabProject->id), '', 'list', 'link', '', '', false, '', '', 0, isset($repoPairs[$gitlabProject->id])); diff --git a/module/gitlab/view/browsetagpriv.html.php b/module/gitlab/view/browsetagpriv.html.php deleted file mode 100644 index 792e05531e..0000000000 --- a/module/gitlab/view/browsetagpriv.html.php +++ /dev/null @@ -1,82 +0,0 @@ - - * @package gitlab - * @version $Id$ - * @link http://www.zentao.net - */ -?> - -recTotal}&recPerPage={$pager->recPerPage}&pageID=1")?> - - - -
-

- noData;?> - - createLink('gitlab', 'createTagPriv', "gitlabID=$gitlabID&projectID=$projectID"), " " . $lang->gitlab->createTagPriv, '', "class='btn btn-info'");?> - -

-
- -
-
- - recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";?> - - - - - - - - - - $gitlabTag): ?> - accessLevel = $this->gitlab->checkAccessLevel($gitlabTag->accessLevels); ?> - - - - - - - - -
gitlab->tag->name);?>gitlab->tag->lastCommitter;?>gitlab->tag->accessLevel);?>actions;?>
name;?>lastCommitter;?>gitlab->branch->branchCreationLevelList, $gitlabTag->accessLevel);?> - name)); - common::printLink('gitlab', 'editTagPriv', "gitlabID=$gitlabID&projectID=$projectID&tag_name=$tagName", " ", '', "title={$lang->gitlab->editTagPriv} class='btn btn-primary'"); - common::printLink('gitlab', 'deleteTagPriv', "gitlabID=$gitlabID&projectID={$projectID}&tag_name=$tagName", " ", '', "title='{$lang->gitlab->deleteTagPriv}' class='btn btn-primary' target='hiddenwin' onclick='if(confirm(\"{$lang->gitlab->tag->protectConfirmDel}\")==false) return false;'"); - ?> -
- - - -
-
- - diff --git a/module/gitlab/view/createbranchpriv.html.php b/module/gitlab/view/createbranchpriv.html.php deleted file mode 100644 index 52c3e691f2..0000000000 --- a/module/gitlab/view/createbranchpriv.html.php +++ /dev/null @@ -1,47 +0,0 @@ - - * @package gitlab - * @version $Id$ - * @link http://www.zentao.net - */ -?> - -
-
-
-
-

-
-
- name) echo html::hidden('name', $branchPriv->name);?> - - - - - - - - - - - - - - - - - -
gitlab->branch->name;?>name, "class='form-control chosen' " . ($branch ? 'disabled' : ''));?>
gitlab->branch->mergeAllowed;?>gitlab->branch->branchCreationLevelList, $branchPriv->mergeAccessLevel, "class='form-control'");?>
gitlab->branch->pushAllowed;?>gitlab->branch->branchCreationLevelList, $branchPriv->pushAccessLevel, "class='form-control'");?>
- - goback, '', 'class="btn btn-wide"');?> -
-
-
-
-
- diff --git a/module/gitlab/view/createtagpriv.html.php b/module/gitlab/view/createtagpriv.html.php deleted file mode 100644 index cf45b66372..0000000000 --- a/module/gitlab/view/createtagpriv.html.php +++ /dev/null @@ -1,43 +0,0 @@ - - * @package gitlab - * @version $Id$ - * @link https://www.zentao.net - */ -?> - -
-
-
-
-

gitlab->createTagPriv;?>

-
-
- - - - - - - - - - - - - - -
gitlab->tag->name;?>
gitlab->tag->accessLevel;?>gitlab->branch->branchCreationLevelList, '40', "class='form-control chosen'");?>
- - goback, '', 'class="btn btn-wide"');?> -
-
-
-
-
- diff --git a/module/gitlab/view/edittagpriv.html.php b/module/gitlab/view/edittagpriv.html.php deleted file mode 100644 index aec4bbcbf2..0000000000 --- a/module/gitlab/view/edittagpriv.html.php +++ /dev/null @@ -1,44 +0,0 @@ - - * @package gitlab - * @version $Id$ - * @link https://www.zentao.net - */ -?> - -
-
-
-
-

gitlab->editTagPriv;?>

-
-
- - - - - - - - - - - - - - - -
gitlab->tag->name;?>
gitlab->tag->accessLevel;?>gitlab->branch->branchCreationLevelList, $tagPriv->createAccessLevel, "class='form-control chosen'");?>
- - goback, '', 'class="btn btn-wide"');?> -
-
-
-
-
- diff --git a/module/gitlab/view/managebranchpriv.html.php b/module/gitlab/view/managebranchpriv.html.php new file mode 100644 index 0000000000..c33f4272ff --- /dev/null +++ b/module/gitlab/view/managebranchpriv.html.php @@ -0,0 +1,82 @@ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
gitlab->branch->name;?>gitlab->branch->mergeAllowed;?>gitlab->branch->pushAllowed;?>actions;?>
name, "class='form-control' readonly");?>gitlab->branch->branchCreationLevelList, $branch->mergeAccess, "class='form-control chosen'");?> + gitlab->branch->branchCreationLevelList, $branch->pushAccess, "class='form-control chosen'");?> + name);?> + + ", '', "onclick='addItem(this)' class='btn btn-link'");?> + ", '', "onclick='deleteItem(this)' class='btn btn-link'");?> +
'') + $noAccessBranches, '', "class='form-control user-picker'");?>gitlab->branch->branchCreationLevelList, 40, "class='form-control chosen'");?>gitlab->branch->branchCreationLevelList, 40, "class='form-control chosen'");?> + ", '', "onclick='addItem(this)' class='btn btn-link'");?> + ", '', "onclick='deleteItem(this)' class='btn btn-link'");?> +
+ save, 'onclick="savePriv()" id="saveBtn"', 'btn btn-wide btn-primary'); + echo html::backButton(); + ?> +
+ +
+
+
+ + + + + + + + + +
+ diff --git a/module/gitlab/view/managetagpriv.html.php b/module/gitlab/view/managetagpriv.html.php new file mode 100644 index 0000000000..c22ed7462a --- /dev/null +++ b/module/gitlab/view/managetagpriv.html.php @@ -0,0 +1,76 @@ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
gitlab->tag->name;?>gitlab->tag->accessLevel;?>actions;?>
name, "class='form-control' readonly");?>gitlab->branch->branchCreationLevelList, $tag->createAccess, "class='form-control chosen'");?> + name);?> + ", '', "onclick='addItem(this)' class='btn btn-link'");?> + ", '', "onclick='deleteItem(this)' class='btn btn-link'");?> +
'') + $noAccessTags, '', "class='form-control user-picker'");?>gitlab->branch->branchCreationLevelList, 40, "class='form-control chosen'");?> + ", '', "onclick='addItem(this)' class='btn btn-link'");?> + ", '', "onclick='deleteItem(this)' class='btn btn-link'");?> +
+ save, 'onclick="savePriv()" id="saveBtn"', 'btn btn-wide btn-primary'); + echo html::backButton(); + ?> +
+ +
+
+
+ + + + + + + + +
+ diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 9893779893..361267c995 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -1344,17 +1344,11 @@ $lang->resource->gitlab->browseBranch = 'browseBranch'; $lang->resource->gitlab->webhook = 'webhook'; $lang->resource->gitlab->createWebhook = 'createWebhook'; $lang->resource->gitlab->manageProjectMembers = 'manageProjectMembers'; -$lang->resource->gitlab->browseBranchPriv = 'browseBranchPriv'; -$lang->resource->gitlab->createBranchPriv = 'createBranchPriv'; -$lang->resource->gitlab->editBranchPriv = 'editBranchPriv'; -$lang->resource->gitlab->deleteBranchPriv = 'deleteBranchPriv'; +$lang->resource->gitlab->manageBranchPriv = 'browseBranchPriv'; +$lang->resource->gitlab->manageTagPriv = 'browseTagPriv'; $lang->resource->gitlab->browseTag = 'browseTag'; $lang->resource->gitlab->createTag = 'createTag'; $lang->resource->gitlab->deleteTag = 'deleteTag'; -$lang->resource->gitlab->browseTagPriv = 'browseTagPriv'; -$lang->resource->gitlab->createTagPriv = 'createTagPriv'; -$lang->resource->gitlab->editTagPriv = 'editTagPriv'; -$lang->resource->gitlab->deleteTagPriv = 'deleteTagPriv'; $lang->gitlab->methodOrder[5] = 'browse'; $lang->gitlab->methodOrder[10] = 'create'; @@ -1381,9 +1375,11 @@ $lang->gitlab->methodOrder[115] = 'browseBranch'; $lang->gitlab->methodOrder[120] = 'webhook'; $lang->gitlab->methodOrder[125] = 'createWebhook'; $lang->gitlab->methodOrder[130] = 'manageProjectMembers'; -$lang->gitlab->methodOrder[135] = 'browseTag'; -$lang->gitlab->methodOrder[140] = 'browseTagPriv'; -$lang->gitlab->methodOrder[145] = 'deleteTagPriv'; +$lang->gitlab->methodOrder[135] = 'manageBranchPriv'; +$lang->gitlab->methodOrder[140] = 'manageTagPriv'; +$lang->gitlab->methodOrder[145] = 'browseTag'; +$lang->gitlab->methodOrder[150] = 'createTag'; +$lang->gitlab->methodOrder[155] = 'deleteTag'; /* Gitea. */ $lang->resource->gitea = new stdclass();