Simplify user creation form

This commit is contained in:
Frederic Guillot 2017-01-22 18:45:17 -05:00
parent 9b9543353f
commit b55810043d
8 changed files with 74 additions and 103 deletions

View File

@ -22,10 +22,7 @@ class UserCreationController extends BaseController
*/
public function show(array $values = array(), array $errors = array())
{
$isRemote = $this->request->getIntegerParam('remote') == 1 || (isset($values['is_ldap_user']) && $values['is_ldap_user'] == 1);
$template = $isRemote ? 'user_creation/remote' : 'user_creation/local';
$this->response->html($this->template->render($template, array(
$this->response->html($this->template->render('user_creation/show', array(
'timezones' => $this->timezoneModel->getTimezones(true),
'languages' => $this->languageModel->getLanguages(true),
'roles' => $this->role->getApplicationRoles(),

View File

@ -1,43 +0,0 @@
<div class="page-header">
<h2><?= t('New local user') ?></h2>
</div>
<form method="post" action="<?= $this->url->href('UserCreationController', 'save') ?>" autocomplete="off">
<?= $this->form->csrf() ?>
<div class="form-columns">
<div class="form-column">
<?= $this->form->label(t('Username'), 'username') ?>
<?= $this->form->text('username', $values, $errors, array('autofocus', 'required', 'maxlength="50"')) ?>
<?= $this->form->label(t('Name'), 'name') ?>
<?= $this->form->text('name', $values, $errors) ?>
<?= $this->form->label(t('Email'), 'email') ?>
<?= $this->form->email('email', $values, $errors) ?>
<?= $this->form->label(t('Password'), 'password') ?>
<?= $this->form->password('password', $values, $errors, array('required')) ?>
<?= $this->form->label(t('Confirmation'), 'confirmation') ?>
<?= $this->form->password('confirmation', $values, $errors, array('required')) ?>
</div>
<div class="form-column">
<?= $this->form->label(t('Add project member'), 'project_id') ?>
<?= $this->form->select('project_id', $projects, $values, $errors) ?>
<?= $this->form->label(t('Timezone'), 'timezone') ?>
<?= $this->form->select('timezone', $timezones, $values, $errors) ?>
<?= $this->form->label(t('Language'), 'language') ?>
<?= $this->form->select('language', $languages, $values, $errors) ?>
<?= $this->form->label(t('Role'), 'role') ?>
<?= $this->form->select('role', $roles, $values, $errors) ?>
<?= $this->form->checkbox('notifications_enabled', t('Enable email notifications'), 1, isset($values['notifications_enabled']) && $values['notifications_enabled'] == 1 ? true : false) ?>
</div>
</div>
<?= $this->modal->submitButtons() ?>
</form>

View File

@ -1,47 +0,0 @@
<div class="page-header">
<h2><?= t('New remote user') ?></h2>
</div>
<form method="post" action="<?= $this->url->href('UserCreationController', 'save') ?>" autocomplete="off">
<?= $this->form->csrf() ?>
<?= $this->form->hidden('is_ldap_user', array('is_ldap_user' => 1)) ?>
<div class="form-columns">
<div class="form-column">
<?= $this->form->label(t('Username'), 'username') ?>
<?= $this->form->text('username', $values, $errors, array('autofocus', 'required', 'maxlength="50"')) ?>
<?= $this->form->label(t('Name'), 'name') ?>
<?= $this->form->text('name', $values, $errors) ?>
<?= $this->form->label(t('Email'), 'email') ?>
<?= $this->form->email('email', $values, $errors) ?>
<?= $this->hook->render('template:user:create-remote:form', array('values' => $values, 'errors' => $errors)) ?>
</div>
<div class="form-column">
<?= $this->form->label(t('Add project member'), 'project_id') ?>
<?= $this->form->select('project_id', $projects, $values, $errors) ?>
<?= $this->form->label(t('Timezone'), 'timezone') ?>
<?= $this->form->select('timezone', $timezones, $values, $errors) ?>
<?= $this->form->label(t('Language'), 'language') ?>
<?= $this->form->select('language', $languages, $values, $errors) ?>
<?= $this->form->label(t('Role'), 'role') ?>
<?= $this->form->select('role', $roles, $values, $errors) ?>
<?= $this->form->checkbox('notifications_enabled', t('Enable email notifications'), 1, isset($values['notifications_enabled']) && $values['notifications_enabled'] == 1 ? true : false) ?>
<?= $this->form->checkbox('disable_login_form', t('Disallow login form'), 1, isset($values['disable_login_form']) && $values['disable_login_form'] == 1) ?>
</div>
</div>
<?= $this->modal->submitButtons() ?>
</form>
<div class="alert alert-info">
<ul>
<li><?= t('Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.') ?></li>
<li><?= t('If you check the box "Disallow login form", credentials entered in the login form will be ignored.') ?></li>
</ul>
</div>

View File

@ -0,0 +1,67 @@
<div class="page-header">
<h2><?= t('New User') ?></h2>
</div>
<form method="post" action="<?= $this->url->href('UserCreationController', 'save') ?>" autocomplete="off">
<?= $this->form->csrf() ?>
<div class="form-columns">
<div class="form-column">
<fieldset>
<legend><?= t('Profile') ?></legend>
<?= $this->form->label(t('Username'), 'username') ?>
<?= $this->form->text('username', $values, $errors, array('autofocus', 'required', 'maxlength="50"')) ?>
<?= $this->form->label(t('Name'), 'name') ?>
<?= $this->form->text('name', $values, $errors) ?>
<?= $this->form->label(t('Email'), 'email') ?>
<?= $this->form->email('email', $values, $errors) ?>
</fieldset>
<fieldset>
<legend><?= t('Authentication') ?></legend>
<?= $this->form->checkbox('is_ldap_user', t('Remote user'), 1, isset($values['is_ldap_user']) && $values['is_ldap_user'] == 1) ?>
<p class="form-help"><?= t('If checked, this user will use a third-party system for authentication.') ?></p>
<?= $this->form->label(t('Password'), 'password') ?>
<?= $this->form->password('password', $values, $errors) ?>
<p class="form-help"><?= t('The password is necessary only for local users.') ?></p>
<?= $this->form->label(t('Confirmation'), 'confirmation') ?>
<?= $this->form->password('confirmation', $values, $errors) ?>
</fieldset>
</div>
<div class="form-column">
<fieldset>
<legend><?= t('Security') ?></legend>
<?= $this->form->label(t('Role'), 'role') ?>
<?= $this->form->select('role', $roles, $values, $errors) ?>
<?= $this->form->checkbox('disable_login_form', t('Disallow login form'), 1, isset($values['disable_login_form']) && $values['disable_login_form'] == 1) ?>
</fieldset>
<fieldset>
<legend><?= t('Preferences') ?></legend>
<?= $this->form->label(t('Timezone'), 'timezone') ?>
<?= $this->form->select('timezone', $timezones, $values, $errors) ?>
<?= $this->form->label(t('Language'), 'language') ?>
<?= $this->form->select('language', $languages, $values, $errors) ?>
<?= $this->form->checkbox('notifications_enabled', t('Enable email notifications'), 1, isset($values['notifications_enabled']) && $values['notifications_enabled'] == 1 ? true : false) ?>
</fieldset>
<fieldset>
<legend><?= t('Projects') ?></legend>
<?= $this->form->label(t('Add this user to project'), 'project_id') ?>
<?= $this->form->select('project_id', $projects, $values, $errors) ?>
</fieldset>
</div>
</div>
<?= $this->modal->submitButtons() ?>
</form>

View File

@ -3,10 +3,7 @@
<?php if ($this->user->hasAccess('UserCreationController', 'show')): ?>
<ul>
<li>
<?= $this->modal->medium('plus', t('New local user'), 'UserCreationController', 'show') ?>
</li>
<li>
<?= $this->modal->medium('plus', t('New remote user'), 'UserCreationController', 'show', array('remote' => 1)) ?>
<?= $this->modal->medium('plus', t('New user'), 'UserCreationController', 'show') ?>
</li>
<li>
<?= $this->modal->medium('upload', t('Import'), 'UserImportController', 'show') ?>

View File

@ -6,10 +6,7 @@
<?= $this->url->icon('user', t('All users'), 'UserListController', 'show') ?>
</li>
<li>
<?= $this->modal->medium('plus', t('New local user'), 'UserCreationController', 'show') ?>
</li>
<li>
<?= $this->modal->medium('plus', t('New remote user'), 'UserCreationController', 'show', array('remote' => 1)) ?>
<?= $this->modal->medium('plus', t('New user'), 'UserCreationController', 'show') ?>
</li>
<li>
<?= $this->modal->medium('upload', t('Import'), 'UserImportController', 'show') ?>

File diff suppressed because one or more lines are too long

View File

@ -139,6 +139,9 @@ ul.form-errors li
margin-right: 25px
flex-grow: 1
fieldset
margin-top: 0
.form-login
max-width: 350px
margin: 8% auto 0