Skip to content

Commit c791171

Browse files
Improved user creation
1 parent 241d7f8 commit c791171

File tree

6 files changed

+81
-94
lines changed

6 files changed

+81
-94
lines changed

src/controllers/UserController.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ public function actionIndex()
5858
public function actionCreate()
5959
{
6060
$model = new User();
61+
62+
$settings = UserSettingsConfig::find()->where([
63+
'access_level' => [UserSettingsConfig::CHANGE_ADMIN_ONLY, UserSettingsConfig::CHANGE_USER_AND_ADMIN]
64+
])->all();
6165

6266
if ($this->request->isPost && $model->load($this->request->post())) {
6367
// generate a random password
@@ -73,6 +77,14 @@ public function actionCreate()
7377

7478
if (!$model->save()) {
7579
Yii::$app->session->setFlash('error', Module::t('Error. Failed to save user during creation'));
80+
} else {
81+
// save user settings
82+
foreach ($settings as $setting) {
83+
$value = Yii::$app->request->post($setting->code) ?? null;
84+
UserSettings::saveValue($model->id, $setting->id, $value);
85+
}
86+
87+
Yii::$app->session->setFlash('success', Module::t('User created'));
7688
}
7789

7890
return $this->redirect(Url::previous('user_index') ?? ['index']);
@@ -82,6 +94,7 @@ public function actionCreate()
8294

8395
return $this->render('create', [
8496
'model' => $model,
97+
'settings' => $settings,
8598
]);
8699
}
87100

src/messages/ru/user.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
'Change Status' => 'Изменить статус',
8181
'Update Status' => 'Обновить статус',
8282
'Statuses changed' => 'Статусы изменены',
83+
'User created' => 'Пользователь создан',
8384

8485
'Select Role' => 'Выберите роль',
8586
'Roles added' => 'Роли добавлены',

src/models/UserSettingsConfig.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public static function getAccessLevel()
8787

8888
public function getUserSettingValue($user_id = null)
8989
{
90-
if (empty($user_id)) {
90+
if (is_null($user_id)) {
9191
$user_id = Yii::$app->user->id;
9292
}
9393

src/views/user/_form.php

Lines changed: 61 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33
use yii\helpers\Html;
44
use yii\widgets\ActiveForm;
55
use ZakharovAndrew\user\models\User;
6+
use ZakharovAndrew\user\models\UserSettingsConfig;
67
use ZakharovAndrew\user\Module;
8+
use ZakharovAndrew\user\assets\UserAssets;
9+
10+
UserAssets::register($this);
711

812
/** @var yii\web\View $this */
913
/** @var ZakharovAndrew\user\models\User $model */
@@ -18,19 +22,65 @@
1822
}
1923
?>
2024

21-
<?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?>
22-
23-
<?= $form->field($model, 'email')->textInput(['maxlength' => true]) ?>
24-
25-
<?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>
26-
27-
<?= $form->field($model, 'city')->textInput(['maxlength' => true]) ?>
25+
<div class="white-block">
26+
<?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>
2827

29-
<?= $form->field($model, 'birthday')->input('date') ?>
28+
<?php if (Yii::$app->user->identity->hasRole('admin')) {?>
29+
<div class="row">
30+
<div class="col-md-4">
31+
<?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?>
32+
</div>
33+
<div class="col-md-4">
34+
<?= $form->field($model, 'email')->textInput(['maxlength' => true]) ?>
35+
</div>
36+
<div class="col-md-4">
37+
<?= $form->field($model, 'status')->dropDownList(User::getStatusList()) ?>
38+
</div>
39+
</div>
40+
<?php } ?>
3041

31-
<?= $form->field($model, 'status')->dropDownList(User::getStatusList()) ?>
32-
33-
<?= $form->field($model, 'sex')->dropDownList(User::getSexList()) ?>
42+
<div class="row">
43+
<div class="col-md-3">
44+
<?= $form->field($model, 'city')->textInput(['maxlength' => true]) ?>
45+
</div>
46+
<div class="col-md-3">
47+
<?= $form->field($model, 'birthday')->input('date') ?>
48+
</div>
49+
<div class="col-md-3">
50+
<?= $form->field($model, 'sex')->dropDownList(User::getSexList(), ['class' => 'form-control form-select']) ?>
51+
</div>
52+
<div class="col-md-3">
53+
<?= $form->field($model, 'phone')->textInput(['maxlength' => true]) ?>
54+
</div>
55+
</div>
56+
</div>
57+
58+
<div class="white-block">
59+
<?php foreach ($settings as $setting) {?>
60+
<div class="form-group">
61+
<label><?= $setting->title ?></label>
62+
<?php
63+
if ($setting->type == UserSettingsConfig::TYPE_STRING && !empty($setting->getValues())) {
64+
echo Html::dropDownList( $setting->code, $setting->getUserSettingValue($model->id ?? 0), $setting->getValues(), [
65+
'id' => 'settings-'.$setting->code,
66+
'class' => 'form-control form-select',
67+
'prompt' => ''
68+
]);
69+
} else if ($setting->type == UserSettingsConfig::TYPE_CHECKBOX) {
70+
echo Html::checkbox($setting->code, $setting->getUserSettingValue($model->id ?? 0));
71+
} else {
72+
// determine the type
73+
$inputType = 'text';
74+
if ($setting->type == UserSettingsConfig::TYPE_TIME) {
75+
$inputType = 'time';
76+
} else if ($setting->type == UserSettingsConfig::TYPE_DATE) {
77+
$inputType = 'date';
78+
}
79+
echo Html::input($inputType, $setting->code, $setting->getUserSettingValue($model->id ?? 0), ['id' => 'settings-'.$setting->code, 'class' => 'form-control']);
80+
}?>
81+
</div>
82+
<?php } ?>
83+
</div>
3484

3585
<div class="form-group">
3686
<?= Html::submitButton(Module::t('Save'), ['class' => 'btn btn-success']) ?>

src/views/user/create.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
<?= $this->render('_form', [
1818
'model' => $model,
19+
'settings' => $settings,
1920
]) ?>
2021

2122
</div>

src/views/user/editProfile.php

Lines changed: 4 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,6 @@
22

33
use yii\helpers\Html;
44
use ZakharovAndrew\user\Module;
5-
use yii\widgets\ActiveForm;
6-
use ZakharovAndrew\user\models\User;
7-
use ZakharovAndrew\user\models\UserSettingsConfig;
8-
use ZakharovAndrew\user\assets\UserAssets;
9-
10-
UserAssets::register($this);
115

126
/** @var yii\web\View $this */
137
/** @var ZakharovAndrew\user\models\User $model */
@@ -18,81 +12,9 @@
1812

1913
<?php if (Yii::$app->getModule('user')->showTitle) {?><h1><?= Html::encode($this->title) ?></h1><?php } ?>
2014

21-
<div class="user-form">
22-
23-
<?php $form = ActiveForm::begin();
24-
if (!empty($model->birthday)) {
25-
$model->birthday = date('Y-m-d', strtotime($model->birthday));
26-
}
27-
?>
28-
29-
<div class="white-block">
30-
<?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>
31-
32-
<?php if (Yii::$app->user->identity->hasRole('admin')) {?>
33-
<div class="row">
34-
<div class="col-md-4">
35-
<?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?>
36-
</div>
37-
<div class="col-md-4">
38-
<?= $form->field($model, 'email')->textInput(['maxlength' => true]) ?>
39-
</div>
40-
<div class="col-md-4">
41-
<?= $form->field($model, 'status')->dropDownList(User::getStatusList()) ?>
42-
</div>
43-
</div>
44-
<?php } ?>
15+
<?= $this->render('_form', [
16+
'model' => $model,
17+
'settings' => $settings,
18+
]) ?>
4519

46-
<div class="row">
47-
<div class="col-md-3">
48-
<?= $form->field($model, 'city')->textInput(['maxlength' => true]) ?>
49-
</div>
50-
<div class="col-md-3">
51-
<?= $form->field($model, 'birthday')->input('date') ?>
52-
</div>
53-
<div class="col-md-3">
54-
<?= $form->field($model, 'sex')->dropDownList(User::getSexList()) ?>
55-
</div>
56-
<div class="col-md-3">
57-
<?= $form->field($model, 'phone')->textInput(['maxlength' => true]) ?>
58-
</div>
59-
</div>
60-
</div>
61-
<div class="white-block">
62-
<?php foreach ($settings as $setting) {?>
63-
<div class="form-group">
64-
<label><?= $setting->title ?></label>
65-
<?php
66-
if ($setting->type == UserSettingsConfig::TYPE_STRING && !empty($setting->getValues())) {
67-
echo Html::dropDownList( $setting->code, $setting->getUserSettingValue($model->id), $setting->getValues(), [
68-
'id' => 'settings-'.$setting->code,
69-
'class' => 'form-control',
70-
'prompt' => ''
71-
]);
72-
} else if ($setting->type == UserSettingsConfig::TYPE_CHECKBOX) {
73-
echo Html::checkbox($setting->code, $setting->getUserSettingValue($model->id));
74-
} else {
75-
// determine the type
76-
$inputType = 'text';
77-
if ($setting->type == UserSettingsConfig::TYPE_TIME) {
78-
$inputType = 'time';
79-
} else if ($setting->type == UserSettingsConfig::TYPE_DATE) {
80-
$inputType = 'date';
81-
}
82-
echo Html::input($inputType, $setting->code, $setting->getUserSettingValue($model->id), ['id' => 'settings-'.$setting->code, 'class' => 'form-control']);
83-
}?>
84-
</div>
85-
<?php } ?>
86-
</div>
87-
88-
<div class="form-group">
89-
<?= Html::submitButton(Module::t('Save'), ['class' => 'btn btn-success']) ?>
90-
</div>
91-
92-
<?php ActiveForm::end(); ?>
93-
94-
</div>
95-
96-
97-
9820
</div>

0 commit comments

Comments
 (0)