* Finish task#43849,43851
This commit is contained in:
@@ -304,6 +304,7 @@ class gitlab extends control
|
||||
{
|
||||
$gitlabGroupList = $this->gitlab->apiGetGroups($gitlabID, $orderBy);
|
||||
|
||||
$this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->browseGroup;
|
||||
$this->view->gitlabID = $gitlabID;
|
||||
$this->view->gitlabGroupList = $gitlabGroupList;
|
||||
$this->view->orderBy = $orderBy;
|
||||
@@ -329,6 +330,7 @@ class gitlab extends control
|
||||
|
||||
$gitlab = $this->gitlab->getByID($gitlabID);
|
||||
|
||||
$this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->group->create;
|
||||
$this->view->gitlab = $gitlab;
|
||||
$this->view->gitlabID = $gitlabID;
|
||||
$this->display();
|
||||
@@ -355,12 +357,129 @@ class gitlab extends control
|
||||
$gitlab = $this->gitlab->getByID($gitlabID);
|
||||
$group = $this->gitlab->apiGetSingleGroup($gitlabID, $groupID);
|
||||
|
||||
$this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->group->edit;
|
||||
$this->view->gitlab = $gitlab;
|
||||
$this->view->group = $group;
|
||||
$this->view->gitlabID = $gitlabID;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a gitlab group.
|
||||
*
|
||||
* @param int $gitlabID
|
||||
* @param int $groupID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deleteGroup($gitlabID, $groupID, $confirm = 'no')
|
||||
{
|
||||
if($confirm != 'yes') die(js::confirm($this->lang->gitlab->group->confirmDelete , inlink('deleteGroup', "gitlabID=$gitlabID&groupID=$groupID&confirm=yes")));
|
||||
|
||||
$reponse = $this->gitlab->apiDeleteGroup($gitlabID, $groupID);
|
||||
if(!$reponse or substr($reponse->message, 0, 2) == '20') die(js::reload('parent'));
|
||||
die(js::alert($reponse->message));
|
||||
}
|
||||
|
||||
/**
|
||||
* Manage a gitlab group members.
|
||||
*
|
||||
* @param int $gitlabID
|
||||
* @param int $groupID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function manageGroupMembers($gitlabID, $groupID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$data = (array) fixer::input('post')->get();
|
||||
extract($data);
|
||||
|
||||
$ids = array_filter($ids);
|
||||
if(count($ids) != count(array_unique($ids))) return $this->send(array('result' => 'fail', 'message' => $this->lang->gitlab->group->repeatError));
|
||||
$newMembers = array();
|
||||
foreach($ids as $key => $id)
|
||||
{
|
||||
/* Check whether each member has selected accesslevel. */
|
||||
if(empty($levels[$key])) return $this->send(array('result' => 'fail', 'message' => $this->lang->gitlab->group->memberAccessLevel . $this->lang->gitlab->group->emptyError ));
|
||||
|
||||
$newMembers[$id] = (object)array('access_level'=>$levels[$key], 'expires_at'=>$expires[$key]);
|
||||
}
|
||||
|
||||
$currentMembers = $this->gitlab->apiGetGroupMembers($gitlabID, $groupID);
|
||||
|
||||
/* Get the updated,deleted data. */
|
||||
$addedMembers = $deletedMembers = $updatedMembers = array();
|
||||
foreach($currentMembers as $currentMember)
|
||||
{
|
||||
if(empty($newMembers[$currentMember->id]))
|
||||
{
|
||||
$deletedMembers[] = $currentMember->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
if($newMembers[$currentMember->id]->access_level != $currentMember->access_level or $newMembers[$currentMember->id]->expires_at != $currentMember->expires_at) $updatedMembers[] = (object)array('user_id' => $currentMember->id, 'access_level' => $newMembers[$currentMember->id]->access_level, 'expires_at' => $newMembers[$currentMember->id]->expires_at);
|
||||
}
|
||||
}
|
||||
/* Get the added data. */
|
||||
foreach($newMembers as $id => $newMember)
|
||||
{
|
||||
$exist = FALSE;
|
||||
foreach($currentMembers as $currentMember)
|
||||
{
|
||||
if($currentMember->id == $id)
|
||||
{
|
||||
$exist = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if($exist == FALSE) $addedMembers[] = (object)array('user_id' => $id, 'access_level' => $newMembers[$id]->access_level, 'expires_at' => $newMembers[$id]->expires_at);
|
||||
}
|
||||
|
||||
if(count($addedMembers) > 0)
|
||||
{
|
||||
foreach($addedMembers as $addedMember)
|
||||
{
|
||||
$this->gitlab->apiCreateGroupMember($gitlabID, $groupID, $addedMember);
|
||||
}
|
||||
}
|
||||
if(count($updatedMembers) > 0)
|
||||
{
|
||||
foreach($updatedMembers as $updatedMember)
|
||||
{
|
||||
$this->gitlab->apiUpdateGroupMember($gitlabID, $groupID, $updatedMember);
|
||||
}
|
||||
}
|
||||
if(count($deletedMembers) > 0)
|
||||
{
|
||||
foreach($deletedMembers as $deletedMemberID)
|
||||
{
|
||||
$this->gitlab->apiDeleteGroupMember($gitlabID, $groupID, $deletedMemberID);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('groupBrowse', "gitlabID=$gitlabID")));
|
||||
}
|
||||
|
||||
/* Get gitlab users data. */
|
||||
$gitlabUserList = $this->gitlab->apiGetUsers($gitlabID);
|
||||
$gitlabUsers = array(''=>'');
|
||||
foreach($gitlabUserList as $gitlabUser)
|
||||
{
|
||||
$gitlabUsers[$gitlabUser->id] = $gitlabUser->realname;
|
||||
}
|
||||
|
||||
$accessLevels = $this->lang->gitlab->accessLevels;
|
||||
$currentMembers = $this->gitlab->apiGetGroupMembers($gitlabID, $groupID);
|
||||
|
||||
$this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->group->manageMembers;
|
||||
$this->view->currentMembers = $currentMembers;
|
||||
$this->view->gitlabUsers = $gitlabUsers;
|
||||
$this->view->gitlabID = $gitlabID;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse gitlab project.
|
||||
*
|
||||
@@ -370,6 +489,7 @@ class gitlab extends control
|
||||
*/
|
||||
public function userBrowse($gitlabID)
|
||||
{
|
||||
$this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->browseUser;
|
||||
$this->view->gitlabID = $gitlabID;
|
||||
$this->view->gitlabUserList = $this->gitlab->apiGetUsers($gitlabID);
|
||||
$this->display();
|
||||
@@ -394,6 +514,7 @@ class gitlab extends control
|
||||
|
||||
$userPairs = $this->loadModel('user')->getPairs('noclosed|noletter');
|
||||
|
||||
$this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->user->create;
|
||||
$this->view->userPairs = $userPairs;
|
||||
$this->view->gitlabID = $gitlabID;
|
||||
$this->display();
|
||||
@@ -421,6 +542,7 @@ class gitlab extends control
|
||||
$user = $this->gitlab->apiGetSingleUser($gitlabID, $userID);
|
||||
$zentaoBindAccount = $this->dao->select('account')->from(TABLE_OAUTH)->where('providerType')->eq('gitlab')->andWhere('providerID')->eq($gitlabID)->andWhere('openID')->eq($user->id)->fetch('account');
|
||||
|
||||
$this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->user->edit;
|
||||
$this->view->user = $user;
|
||||
$this->view->userPairs = $userPairs;
|
||||
$this->view->zentaoBindAccount = $zentaoBindAccount;
|
||||
@@ -454,6 +576,7 @@ class gitlab extends control
|
||||
*/
|
||||
public function projectBrowse($gitlabID)
|
||||
{
|
||||
$this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->browseProject;
|
||||
$this->view->gitlabID = $gitlabID;
|
||||
$this->view->gitlabProjectList = $this->gitlab->apiGetProjects($gitlabID);
|
||||
$this->display();
|
||||
@@ -488,6 +611,7 @@ class gitlab extends control
|
||||
if($namespace->kind == 'group') $namespaces[$namespace->id] = $namespace->path;
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->project->create;
|
||||
$this->view->gitlab = $gitlab;
|
||||
$this->view->user = $user;
|
||||
$this->view->namespaces = $namespaces;
|
||||
@@ -514,6 +638,8 @@ class gitlab extends control
|
||||
}
|
||||
|
||||
$project = $this->gitlab->apiGetSingleProject($gitlabID, $projectID);
|
||||
|
||||
$this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->project->edit;
|
||||
$this->view->project = $project;
|
||||
$this->view->gitlabID = $gitlabID;
|
||||
$this->display();
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* Save team members.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function saveMembers()
|
||||
{
|
||||
$('#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, i);
|
||||
$(obj).closest('tr').after('<tr class="addedItem">' + item + '</tr>');
|
||||
var selects = $(obj).closest('tr').next('tr').find('select');
|
||||
selects.each(function()
|
||||
{
|
||||
$(this).trigger('liszt:updated');
|
||||
$(this).chosen();
|
||||
});
|
||||
$(obj).closest('tr').next('tr').find('.form-date').datetimepicker();
|
||||
i ++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete item.
|
||||
*
|
||||
* @param object $obj
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function deleteItem(obj)
|
||||
{
|
||||
if($('#teamForm .table tbody').children().length < 2) return false;
|
||||
$(obj).closest('tr').remove();
|
||||
}
|
||||
@@ -55,6 +55,12 @@ $lang->gitlab->bindUserError = "Can not bind users repeatedly %s";
|
||||
$lang->gitlab->importIssueError = "The execution to which this issue belongs is not selected.";
|
||||
$lang->gitlab->importIssueWarn = "There is a problem of import failure, you can try to import again.";
|
||||
|
||||
$lang->gitlab->accessLevel[10] = 'Guest';
|
||||
$lang->gitlab->accessLevel[20] = 'Reporter';
|
||||
$lang->gitlab->accessLevel[30] = 'Developer';
|
||||
$lang->gitlab->accessLevel[40] = 'Maintainer';
|
||||
$lang->gitlab->accessLevel[50] = 'Owner';
|
||||
|
||||
$lang->gitlab->project = new stdclass;
|
||||
$lang->gitlab->project->id = "Project ID";
|
||||
$lang->gitlab->project->name = "Project name";
|
||||
@@ -131,3 +137,8 @@ $lang->gitlab->group->createOn = "Created on";
|
||||
$lang->gitlab->group->members = "Group Members";
|
||||
$lang->gitlab->group->confirmDelete = 'Do you want to delete this GitLab group?';
|
||||
$lang->gitlab->group->emptyError = "cannot be empty";
|
||||
$lang->gitlab->group->manageMembers = 'Manage Group Members';
|
||||
$lang->gitlab->group->memberName = 'Account';
|
||||
$lang->gitlab->group->memberAccessLevel = 'Access Level';
|
||||
$lang->gitlab->group->memberExpiresAt = 'Expiration time';
|
||||
$lang->gitlab->group->repeatError = "Group members cannot be added repeatedly";
|
||||
|
||||
@@ -55,6 +55,12 @@ $lang->gitlab->bindUserError = "不能重复绑定用户 %s";
|
||||
$lang->gitlab->importIssueError = "未选择该issue所属的执行。";
|
||||
$lang->gitlab->importIssueWarn = "存在导入失败的issue,可再次尝试导入。";
|
||||
|
||||
$lang->gitlab->accessLevels[10] = '客人';
|
||||
$lang->gitlab->accessLevels[20] = '报告者';
|
||||
$lang->gitlab->accessLevels[30] = '开发者';
|
||||
$lang->gitlab->accessLevels[40] = '维护者';
|
||||
$lang->gitlab->accessLevels[50] = '所有者';
|
||||
|
||||
$lang->gitlab->project = new stdclass;
|
||||
$lang->gitlab->project->id = "项目ID";
|
||||
$lang->gitlab->project->name = "项目名称";
|
||||
@@ -131,3 +137,8 @@ $lang->gitlab->group->createOn = "创建于";
|
||||
$lang->gitlab->group->members = "群组成员";
|
||||
$lang->gitlab->group->confirmDelete = '确认删除该GitLab群组吗?';
|
||||
$lang->gitlab->group->emptyError = "不能为空";
|
||||
$lang->gitlab->group->manageMembers = '群组成员管理';
|
||||
$lang->gitlab->group->memberName = '账号';
|
||||
$lang->gitlab->group->memberAccessLevel = '角色权限';
|
||||
$lang->gitlab->group->memberExpiresAt = '过期时间';
|
||||
$lang->gitlab->group->repeatError = "群组成员不能重复添加";
|
||||
@@ -474,6 +474,30 @@ class gitlabModel extends model
|
||||
return $users;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get group members of one gitlab.
|
||||
*
|
||||
* @param int $gitlabID
|
||||
* @param int $groupID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function apiGetGroupMembers($gitlabID, $groupID)
|
||||
{
|
||||
$apiRoot = $this->getApiRoot($gitlabID);
|
||||
$url = sprintf($apiRoot, "/groups/$groupID/members/all");
|
||||
|
||||
$allResults = array();
|
||||
for($page = 1; true; $page++)
|
||||
{
|
||||
$results = json_decode(commonModel::http($url . "&&page={$page}&per_page=100"));
|
||||
if(!empty($results)) $allResults = array_merge($allResults, $results);
|
||||
if(count($results)<100) break;
|
||||
}
|
||||
|
||||
return $allResults;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get namespaces of one gitlab.
|
||||
*
|
||||
@@ -582,6 +606,58 @@ class gitlabModel extends model
|
||||
return json_decode(commonModel::http($url, $project));
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a gitab group member by api.
|
||||
*
|
||||
* @param int $gitlabID
|
||||
* @param int $groupID
|
||||
* @param object $member
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function apiCreateGroupMember($gitlabID, $groupID, $member)
|
||||
{
|
||||
if(empty($member->user_id) or empty($member->access_level)) return false;
|
||||
|
||||
$apiRoot = $this->getApiRoot($gitlabID);
|
||||
$url = sprintf($apiRoot, "/groups/{$groupID}/members");
|
||||
return json_decode(commonModel::http($url, $member));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a gitab group member by api.
|
||||
*
|
||||
* @param int $gitlabID
|
||||
* @param int $groupID
|
||||
* @param object $member
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function apiUpdateGroupMember($gitlabID, $groupID, $member)
|
||||
{
|
||||
if(empty($member->user_id) or empty($member->access_level)) return false;
|
||||
|
||||
$apiRoot = $this->getApiRoot($gitlabID);
|
||||
$url = sprintf($apiRoot, "/groups/{$groupID}/members/{$member->user_id}");
|
||||
return json_decode(commonModel::http($url, $member, $options = array(CURLOPT_CUSTOMREQUEST => 'PUT')));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a gitab group member by api.
|
||||
*
|
||||
* @param int $gitlabID
|
||||
* @param int $groupID
|
||||
* @param int $memberID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function apiDeleteGroupMember($gitlabID, $groupID, $memberID)
|
||||
{
|
||||
$apiRoot = $this->getApiRoot($gitlabID);
|
||||
$url = sprintf($apiRoot, "/groups/{$groupID}/members/{$memberID}");
|
||||
return json_decode(commonModel::http($url, array(), $options = array(CURLOPT_CUSTOMREQUEST => 'DELETE')));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a gitab user by api.
|
||||
*
|
||||
@@ -633,6 +709,23 @@ class gitlabModel extends model
|
||||
return json_decode(commonModel::http($url, $group, $options = array(CURLOPT_CUSTOMREQUEST => 'PUT')));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a gitab group by api.
|
||||
*
|
||||
* @param int $gitlabID
|
||||
* @param int $groupID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function apiDeleteGroup($gitlabID, $groupID)
|
||||
{
|
||||
if(empty($groupID)) return false;
|
||||
|
||||
$apiRoot = $this->getApiRoot($gitlabID);
|
||||
$url = sprintf($apiRoot, "/groups/{$groupID}");
|
||||
return json_decode(commonModel::http($url, array(), $options = array(CURLOPT_CUSTOMREQUEST => 'DELETE')));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a gitab project by api.
|
||||
*
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
<td class='text' title='<?php echo substr($gitlabGroup->created_at, 0, 10);?>'><?php echo substr($gitlabGroup->created_at, 0, 10);?></td>
|
||||
<td class='c-actions text-left'>
|
||||
<?php
|
||||
common::printLink('gitlab', 'groupMembers', "gitlabID=$gitlabID&groupID=$gitlabGroup->id", "<i class='icon icon-team'></i> ", '',"title={$lang->gitlab->group->members} class='btn btn-primary'");
|
||||
common::printLink('gitlab', 'manageGroupMembers', "gitlabID=$gitlabID&groupID=$gitlabGroup->id", "<i class='icon icon-team'></i> ", '',"title={$lang->gitlab->group->manageMembers} class='btn btn-primary'");
|
||||
common::printLink('gitlab', 'editGroup', "gitlabID=$gitlabID&groupID=$gitlabGroup->id", "<i class='icon icon-edit'></i> ", '', "title={$lang->gitlab->group->edit} class='btn btn-primary'");
|
||||
if(common::hasPriv('gitlab', 'delete')) echo html::a($this->createLink('gitlab', 'deleteGroup', "gitlabID=$gitlabID&groupID=$gitlabGroup->id"), '<i class="icon-trash"></i>', 'hiddenwin', "title='{$lang->gitlab->group->confirmDelete}' class='btn'");
|
||||
?>
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('oldAccountList', array_keys($currentMembers));?>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<div class='btn-toolbar pull-left'>
|
||||
<span class='btn btn-link btn-active-text'>
|
||||
<?php echo html::a('###', "<span class='text'> {$lang->gitlab->group->manageMembers}</span>");?>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<form class='main-form form-ajax' method='post' id='teamForm'>
|
||||
<table class='table table-form'>
|
||||
<thead>
|
||||
<tr class='text-center'>
|
||||
<th><?php echo $lang->gitlab->group->memberName;?></th>
|
||||
<th><?php echo $lang->gitlab->group->memberAccessLevel;?></th>
|
||||
<th class='c-date'><?php echo $lang->gitlab->group->memberExpiresAt;?></th>
|
||||
<th class="c-actions"><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php $i = 0;?>
|
||||
<?php foreach($currentMembers as $member):?>
|
||||
<tr>
|
||||
<td><?php echo html::input("names[$i]", $member->name, "class='form-control' readonly");?></td>
|
||||
<td><?php echo html::select("levels[$i]", array(''=>'') + $this->lang->gitlab->accessLevels, $member->access_level, "class='form-control chosen'");?></td>
|
||||
<td>
|
||||
<?php echo html::input("expires[$i]", $member->expires_at, "class='form-control form-date'");?>
|
||||
<?php echo html::hidden("ids[$i]", $member->id);?>
|
||||
</td>
|
||||
<td class='c-actions text-center'>
|
||||
<?php echo html::a('javascript:;', "<i class='icon-plus'></i>", '', "onclick='addItem(this)' class='btn btn-link'");?>
|
||||
<?php echo html::a('javascript:;', "<i class='icon icon-close'></i>", '', "onclick='deleteItem(this)' class='btn btn-link'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $i ++;?>
|
||||
<?php endforeach;?>
|
||||
|
||||
<?php for($j = 0; $j < 5; $j ++):?>
|
||||
<tr class='addedItem'>
|
||||
<td><?php echo html::select("ids[$i]", $gitlabUsers, '', "class='form-control chosen'");?></td>
|
||||
<td><?php echo html::select("levels[$i]", array(''=>'') + $this->lang->gitlab->accessLevels, '', "class='form-control chosen'");?></td>
|
||||
<td><?php echo html::input("expires[$i]", '', "class='form-control form-date'");?></td>
|
||||
<td class='c-actions text-center'>
|
||||
<?php echo html::a('javascript:;', "<i class='icon-plus'></i>", '', "onclick='addItem(this)' class='btn btn-link'");?>
|
||||
<?php echo html::a('javascript:;', "<i class='icon icon-close'></i>", '', "onclick='deleteItem(this)' class='btn btn-link'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $i ++;?>
|
||||
<?php endfor;?>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan='6' class='text-center form-actions'>
|
||||
<?php
|
||||
echo html::submitButton('', '', 'hidden btn btn-wide btn-primary');
|
||||
echo html::commonButton($lang->save, 'onclick="saveMembers()" id="saveBtn"', 'btn btn-wide btn-primary');
|
||||
|
||||
echo html::backButton();
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
<?php js::set('i', $i);?>
|
||||
</form>
|
||||
</div>
|
||||
<div>
|
||||
<?php $i = '%i%';?>
|
||||
<table class='hidden'>
|
||||
<tr id='addItem' class='hidden'>
|
||||
<td><?php echo html::select("ids[]", $gitlabUsers, '', "class='form-control'");?></td>
|
||||
<td><?php echo html::select("levels[]", array(''=>'') + $this->lang->gitlab->accessLevels, '', "class='form-control'");?></td>
|
||||
<td><?php echo html::input("expires[$i]", '', "class='form-control form-date'");?></td>
|
||||
<td class='c-actions text-center'>
|
||||
<?php echo html::a('javascript:;', "<i class='icon-plus'></i>", '', "onclick='addItem(this)' class='btn btn-link'");?>
|
||||
<?php echo html::a('javascript:;', "<i class='icon icon-close'></i>", '', "onclick='deleteItem(this)' class='btn btn-link'");?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
Reference in New Issue
Block a user