+ Add managegroupmembers page for gitlab.
This commit is contained in:
@@ -489,15 +489,15 @@ class gitlab extends control
|
||||
{
|
||||
$data = fixer::input('post')->get();
|
||||
|
||||
$ids = array_filter($data->ids);
|
||||
$ids = array_filter($data->id);
|
||||
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($data->levels[$key])) return $this->send(array('result' => 'fail', 'message' => $this->lang->gitlab->group->memberAccessLevel . $this->lang->gitlab->group->emptyError ));
|
||||
if(empty($data->access_level[$key])) return $this->send(array('result' => 'fail', 'message' => $this->lang->gitlab->group->memberAccessLevel . $this->lang->gitlab->group->emptyError ));
|
||||
|
||||
$newMembers[$id] = (object)array('access_level'=>$data->levels[$key], 'expires_at'=>$data->expires[$key]);
|
||||
$newMembers[$id] = (object)array('access_level'=>$data->access_level[$key], 'expires_at'=>$data->expires_at[$key]);
|
||||
}
|
||||
|
||||
$currentMembers = $this->gitlab->apiGetGroupMembers($gitlabID, $groupID);
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
window.getMenu = function(item)
|
||||
{
|
||||
const selectedUsers = [];
|
||||
$('.pick-value[name^=id]').each(function()
|
||||
{
|
||||
const name = $(this).val();
|
||||
if(name) selectedUsers.push(name);
|
||||
});
|
||||
|
||||
item.disabled = selectedUsers.includes(item.value);
|
||||
return item;
|
||||
}
|
||||
|
||||
window.onRenderRow = function(row, rowIdx, data)
|
||||
{
|
||||
if(!data) return;
|
||||
|
||||
row.find('[data-name="id"]').find('.picker-box').on('inited', function(_, info)
|
||||
{
|
||||
if(hasAccessUsers[data.id])
|
||||
{
|
||||
const users = [{text: data.name, value: data.id}];
|
||||
info[0].render({disabled: true, required: true, items: users, defaultValue: data.id});
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* The manageprojectmembers view file of gitlab 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 Yanyi Cao <caoyanyi@easycorp.ltd>
|
||||
* @package gitlab
|
||||
* @link https://www.zentao.net
|
||||
*/
|
||||
namespace zin;
|
||||
|
||||
jsVar('hasAccessUsers', $currentMembers);
|
||||
formBatchPanel
|
||||
(
|
||||
set::data(array_values($currentMembers)),
|
||||
set::onRenderRow(jsRaw('onRenderRow')),
|
||||
formBatchItem
|
||||
(
|
||||
set::name('index'),
|
||||
set::label('ID'),
|
||||
set::control('index'),
|
||||
set::width('50px'),
|
||||
),
|
||||
formBatchItem
|
||||
(
|
||||
set::label($lang->gitlab->group->memberName),
|
||||
set::width('1/3'),
|
||||
set::name('id'),
|
||||
set::control
|
||||
(
|
||||
array(
|
||||
'type' => 'picker',
|
||||
'name' => 'id',
|
||||
'cache' => false,
|
||||
'items' => $gitlabUsers,
|
||||
'menu' => jsRaw('{getItem(item) {return getMenu(item)}}'),
|
||||
)
|
||||
)
|
||||
),
|
||||
formBatchItem
|
||||
(
|
||||
set::name('access_level'),
|
||||
set::label($lang->gitlab->group->memberAccessLevel),
|
||||
set::control('picker'),
|
||||
set::width('1/3'),
|
||||
set::items($lang->gitlab->accessLevels)
|
||||
),
|
||||
formBatchItem
|
||||
(
|
||||
set::name('expires_at'),
|
||||
set::label($lang->gitlab->group->memberExpiresAt),
|
||||
set::control('datePicker'),
|
||||
set::width('1/3'),
|
||||
)
|
||||
);
|
||||
Reference in New Issue
Block a user