Rewrite component to change user/group role

This commit is contained in:
Frederic Guillot
2016-12-09 20:35:40 -05:00
parent 86d04bc0ef
commit 67d01951f5
13 changed files with 233 additions and 144 deletions

View File

@@ -132,7 +132,7 @@ class ProjectPermissionController extends BaseController
if (! empty($project) && ! empty($values) && $this->projectUserRoleModel->changeUserRole($project['id'], $values['id'], $values['role'])) {
$this->response->json(array('status' => 'ok'));
} else {
$this->response->json(array('status' => 'error'));
$this->response->json(array('status' => 'error'), 500);
}
}

View File

@@ -0,0 +1,61 @@
<div class="page-header">
<h2><?= t('Allowed Groups') ?></h2>
</div>
<?php if (empty($groups)): ?>
<div class="alert"><?= t('No group have been allowed specifically.') ?></div>
<?php else: ?>
<table class="table-scrolling">
<tr>
<th class="column-50"><?= t('Group') ?></th>
<th><?= t('Role') ?></th>
<?php if ($project['is_private'] == 0): ?>
<th class="column-15"><?= t('Actions') ?></th>
<?php endif ?>
</tr>
<?php foreach ($groups as $group): ?>
<tr>
<td><?= $this->text->e($group['name']) ?></td>
<td>
<?= $this->app->component('project-select-role', array(
'roles' => $roles,
'role' => $group['role'],
'id' => $group['id'],
'url' => $this->url->to('ProjectPermissionController', 'changeGroupRole', array('project_id' => $project['id'])),
)) ?>
</td>
<td>
<i class="fa fa-trash-o" aria-hidden="true"></i>
<?= $this->url->link(t('Remove'), 'ProjectPermissionController', 'removeGroup', array('project_id' => $project['id'], 'group_id' => $group['id']), true) ?>
</td>
</tr>
<?php endforeach ?>
</table>
<?php endif ?>
<?php if ($project['is_private'] == 0): ?>
<div class="listing">
<form method="post" action="<?= $this->url->href('ProjectPermissionController', 'addGroup', array('project_id' => $project['id'])) ?>" autocomplete="off" class="form-inline">
<?= $this->form->csrf() ?>
<?= $this->form->hidden('project_id', array('project_id' => $project['id'])) ?>
<?= $this->form->hidden('group_id', $values) ?>
<?= $this->form->hidden('external_id', $values) ?>
<?= $this->form->label(t('Group Name'), 'name') ?>
<?= $this->form->text('name', $values, $errors, array(
'required',
'placeholder="'.t('Enter group name...').'"',
'title="'.t('Enter group name...').'"',
'data-dst-field="group_id"',
'data-dst-extra-field="external_id"',
'data-search-url="'.$this->url->href('GroupAjaxController', 'autocomplete').'"',
),
'autocomplete') ?>
<?= $this->form->select('role', $roles, $values, $errors) ?>
<button type="submit" class="btn btn-blue"><?= t('Add') ?></button>
</form>
</div>
<?php endif ?>

View File

@@ -5,125 +5,21 @@
<?php if ($project['is_everybody_allowed']): ?>
<div class="alert"><?= t('Everybody have access to this project.') ?></div>
<?php else: ?>
<?= $this->render('project_permission/users', array(
'project' => $project,
'roles' => $roles,
'users' => $users,
'errors' => $errors,
'values' => $values,
)) ?>
<?php if (empty($users)): ?>
<div class="alert"><?= t('No user have been allowed specifically.') ?></div>
<?php else: ?>
<table class="table-scrolling">
<tr>
<th class="column-50"><?= t('User') ?></th>
<th><?= t('Role') ?></th>
<?php if ($project['is_private'] == 0): ?>
<th class="column-15"><?= t('Actions') ?></th>
<?php endif ?>
</tr>
<?php foreach ($users as $user): ?>
<tr>
<td><?= $this->text->e($user['name'] ?: $user['username']) ?></td>
<td>
<?= $this->form->select(
'role-'.$user['id'],
$roles,
array('role-'.$user['id'] => $user['role']),
array(),
array('data-url="'.$this->url->href('ProjectPermissionController', 'changeUserRole', array('project_id' => $project['id'])).'"', 'data-id="'.$user['id'].'"'),
'project-change-role'
) ?>
</td>
<td>
<?= $this->url->link(t('Remove'), 'ProjectPermissionController', 'removeUser', array('project_id' => $project['id'], 'user_id' => $user['id']), true) ?>
</td>
</tr>
<?php endforeach ?>
</table>
<?php endif ?>
<?php if ($project['is_private'] == 0): ?>
<div class="listing">
<form method="post" action="<?= $this->url->href('ProjectPermissionController', 'addUser', array('project_id' => $project['id'])) ?>" autocomplete="off" class="form-inline">
<?= $this->form->csrf() ?>
<?= $this->form->hidden('project_id', array('project_id' => $project['id'])) ?>
<?= $this->form->hidden('user_id', $values) ?>
<?= $this->form->label(t('Name'), 'name') ?>
<?= $this->form->text('name', $values, $errors, array(
'required',
'placeholder="'.t('Enter user name...').'"',
'title="'.t('Enter user name...').'"',
'data-dst-field="user_id"',
'data-search-url="'.$this->url->href('UserAjaxController', 'autocomplete').'"',
),
'autocomplete') ?>
<?= $this->form->select('role', $roles, $values, $errors) ?>
<button type="submit" class="btn btn-blue"><?= t('Add') ?></button>
</form>
</div>
<?php endif ?>
<div class="page-header">
<h2><?= t('Allowed Groups') ?></h2>
</div>
<?php if (empty($groups)): ?>
<div class="alert"><?= t('No group have been allowed specifically.') ?></div>
<?php else: ?>
<table class="table-scrolling">
<tr>
<th class="column-50"><?= t('Group') ?></th>
<th><?= t('Role') ?></th>
<?php if ($project['is_private'] == 0): ?>
<th class="column-15"><?= t('Actions') ?></th>
<?php endif ?>
</tr>
<?php foreach ($groups as $group): ?>
<tr>
<td><?= $this->text->e($group['name']) ?></td>
<td>
<?= $this->form->select(
'role-'.$group['id'],
$roles,
array('role-'.$group['id'] => $group['role']),
array(),
array('data-url="'.$this->url->href('ProjectPermissionController', 'changeGroupRole', array('project_id' => $project['id'])).'"', 'data-id="'.$group['id'].'"'),
'project-change-role'
) ?>
</td>
<td>
<?= $this->url->link(t('Remove'), 'ProjectPermissionController', 'removeGroup', array('project_id' => $project['id'], 'group_id' => $group['id']), true) ?>
</td>
</tr>
<?php endforeach ?>
</table>
<?php endif ?>
<?php if ($project['is_private'] == 0): ?>
<div class="listing">
<form method="post" action="<?= $this->url->href('ProjectPermissionController', 'addGroup', array('project_id' => $project['id'])) ?>" autocomplete="off" class="form-inline">
<?= $this->form->csrf() ?>
<?= $this->form->hidden('project_id', array('project_id' => $project['id'])) ?>
<?= $this->form->hidden('group_id', $values) ?>
<?= $this->form->hidden('external_id', $values) ?>
<?= $this->form->label(t('Group Name'), 'name') ?>
<?= $this->form->text('name', $values, $errors, array(
'required',
'placeholder="'.t('Enter group name...').'"',
'title="'.t('Enter group name...').'"',
'data-dst-field="group_id"',
'data-dst-extra-field="external_id"',
'data-search-url="'.$this->url->href('GroupAjaxController', 'autocomplete').'"',
),
'autocomplete') ?>
<?= $this->form->select('role', $roles, $values, $errors) ?>
<button type="submit" class="btn btn-blue"><?= t('Add') ?></button>
</form>
</div>
<?php endif ?>
<?= $this->render('project_permission/groups', array(
'project' => $project,
'roles' => $roles,
'groups' => $groups,
'errors' => $errors,
'values' => $values,
)) ?>
<?php endif ?>
<?php if ($project['is_private'] == 0): ?>

View File

@@ -0,0 +1,54 @@
<?php if (empty($users)): ?>
<div class="alert"><?= t('No user have been allowed specifically.') ?></div>
<?php else: ?>
<table class="table-scrolling">
<tr>
<th class="column-50"><?= t('User') ?></th>
<th><?= t('Role') ?></th>
<?php if ($project['is_private'] == 0): ?>
<th class="column-15"><?= t('Actions') ?></th>
<?php endif ?>
</tr>
<?php foreach ($users as $user): ?>
<tr>
<td><?= $this->text->e($user['name'] ?: $user['username']) ?></td>
<td>
<?= $this->app->component('project-select-role', array(
'roles' => $roles,
'role' => $user['role'],
'id' => $user['id'],
'url' => $this->url->to('ProjectPermissionController', 'changeUserRole', array('project_id' => $project['id'])),
)) ?>
</td>
<td>
<i class="fa fa-trash-o" aria-hidden="true"></i>
<?= $this->url->link(t('Remove'), 'ProjectPermissionController', 'removeUser', array('project_id' => $project['id'], 'user_id' => $user['id']), true) ?>
</td>
</tr>
<?php endforeach ?>
</table>
<?php endif ?>
<?php if ($project['is_private'] == 0): ?>
<div class="listing">
<form method="post" action="<?= $this->url->href('ProjectPermissionController', 'addUser', array('project_id' => $project['id'])) ?>" autocomplete="off" class="form-inline">
<?= $this->form->csrf() ?>
<?= $this->form->hidden('project_id', array('project_id' => $project['id'])) ?>
<?= $this->form->hidden('user_id', $values) ?>
<?= $this->form->label(t('Name'), 'name') ?>
<?= $this->form->text('name', $values, $errors, array(
'required',
'placeholder="'.t('Enter user name...').'"',
'title="'.t('Enter user name...').'"',
'data-dst-field="user_id"',
'data-search-url="'.$this->url->href('UserAjaxController', 'autocomplete').'"',
),
'autocomplete') ?>
<?= $this->form->select('role', $roles, $values, $errors) ?>
<button type="submit" class="btn btn-blue"><?= t('Add') ?></button>
</form>
</div>
<?php endif ?>