diff --git a/module/gitlab/control.php b/module/gitlab/control.php
index 00365ddcbd..8cd64af9d5 100644
--- a/module/gitlab/control.php
+++ b/module/gitlab/control.php
@@ -624,13 +624,17 @@ class gitlab extends control
$result = $this->gitlab->apiGetProjectsPager($gitlabID, $keyword, $orderBy, $pager);
+ /* Get group id list by gitlab user that the user is maintainer. */
+ $groupIDList = array(0 => 0);
+ $groups = $this->gitlab->apiGetGroups($gitlabID, 'name_asc', $this->config->gitlab->accessLevel['maintainer']);
+ foreach($groups as $group) $groupIDList[] = $group->id;
+
foreach($result['projects'] as $key => $project)
{
$project->adminer = (bool)$this->app->user->admin;
if(!$project->adminer and isset($project->owner) and $project->owner->id == $openID) $project->adminer = true;
- $project->userAccess = 0;
- if(isset($project->permissions) and $project->permissions->project_access) $project->userAccess = (int)$project->permissions->project_access->access_level;
+ $project->isMaintainer = $this->gitlab->checkUserAccess($gitlabID, $openID, $project->id, $project, $groupIDList, 'maintainer');
}
$gitlab = $this->gitlab->getByID($gitlabID);
diff --git a/module/gitlab/model.php b/module/gitlab/model.php
index 54b723bba0..98b78615ef 100644
--- a/module/gitlab/model.php
+++ b/module/gitlab/model.php
@@ -2756,6 +2756,8 @@ class gitlabModel extends model
*/
public function checkUserAccess($gitlabID, $openID = 0, $projectID = 0, $project = null, $groupIDList = array(), $maxRole = 'maintainer')
{
+ if($this->app->user->admin) return true;
+
if($project == null) $project = $this->apiGetSingleProject($gitlabID, $projectID);
if(!$openID or !isset($project->id)) return false;
diff --git a/module/gitlab/view/browseproject.html.php b/module/gitlab/view/browseproject.html.php
index d60a2d782c..c964e1c2c9 100644
--- a/module/gitlab/view/browseproject.html.php
+++ b/module/gitlab/view/browseproject.html.php
@@ -67,13 +67,14 @@
last_activity_at, 0, 10);?> |
adminer or $gitlabProject->userAccess == 40) ? '' : 'disabled';
+ $canManage = $gitlabProject->isMaintainer ? '' : 'disabled';
+ $canDelete = $gitlabProject->adminer ? '' : 'disabled';
common::printLink('gitlab', 'browseBranch', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->browseBranch}' class='btn btn-primary'");
- common::printLink('gitlab', 'browseBranchPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->branch->accessLevel}' class='btn btn-primary {$adminClass}'");
+ common::printLink('gitlab', 'browseBranchPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->branch->accessLevel}' class='btn btn-primary {$canManage}'");
common::printLink('gitlab', 'browseTag', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->browseTag}' class='btn btn-primary'");
- common::printLink('gitlab', 'browseTagPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->browseTagPriv}' class='btn btn-primary {$adminClass}'");
- common::printLink('gitlab', 'editProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->project->edit}' class='btn btn-primary {$adminClass}'");
- if(common::hasPriv('gitlab', 'delete')) echo html::a($this->createLink('gitlab', 'deleteProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id"), '', 'hiddenwin', "title='{$lang->gitlab->deleteProject}' class='btn {$adminClass}'");
+ common::printLink('gitlab', 'browseTagPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->browseTagPriv}' class='btn btn-primary {$canManage}'");
+ common::printLink('gitlab', 'editProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id", " ", '', "title='{$lang->gitlab->project->edit}' class='btn btn-primary {$canManage}'");
+ if(common::hasPriv('gitlab', 'delete')) echo html::a($this->createLink('gitlab', 'deleteProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id"), '', 'hiddenwin', "title='{$lang->gitlab->deleteProject}' class='btn {$canDelete}'");
?>
|