skills on main page api and admin

This commit is contained in:
andrey
2021-06-09 18:06:13 +03:00
parent 23773eff4e
commit b9f919204c
27 changed files with 842 additions and 0 deletions

View File

@ -2,6 +2,9 @@
namespace backend\modules\settings\controllers;
use backend\modules\options\Options;
use backend\modules\settings\models\SkillsOnMainPageForm;
use common\classes\Debug;
use Yii;
use backend\modules\settings\models\Skill;
use backend\modules\settings\models\SkillSearch;
@ -105,6 +108,21 @@ class SkillController extends Controller
]);
}
public function actionSkillsOnMainPage()
{
$model = new SkillsOnMainPageForm();
if ($model->load(Yii::$app->request->post())) {
$model->saveSkills();
$model->showMsg = true;
} else {
$skills = \common\models\Options::getValue('skills_on_main_page');
$model->load(json_decode($skills, true));
}
return $this->render('skills-on-main-page', ['model' => $model]);
}
/**
* Deletes an existing Skill model.
* If deletion is successful, the browser will be redirected to the 'index' page.

View File

@ -0,0 +1,67 @@
<?php
namespace backend\modules\settings\models;
use common\classes\Debug;
use common\models\Options;
use yii\base\Model;
/**
* Class SkillsOnMainPageForm
* @property array $skills_back
* @property array $skills_front
* @property array $skills_design
* @package backend\modules\settings\models
*/
class SkillsOnMainPageForm extends Model
{
public $skills_back;
public $skills_front;
public $skills_design;
public $showMsg = false;
public function rules()
{
return [
[['skills_back', 'skills_front', 'skills_design'], 'checkIsArray'],
];
}
public function checkIsArray()
{
if (!is_array($this->_task)) {
$this->addError('_task', 'X is not array!');
}
}
public function saveSkills()
{
$res = [];
$resToFront = [];
if ($this->skills_back) {
$res['SkillsOnMainPageForm']['skills_back'] = $this->skills_back;
foreach ($this->skills_back as $item) {
$resToFront['skills_back'][] = [$item => \common\models\Skill::getNameById($item)];
}
}
if ($this->skills_front) {
$res['SkillsOnMainPageForm']['skills_front'] = $this->skills_front;
foreach ($this->skills_front as $item) {
$resToFront['skills_front'][] = [$item => \common\models\Skill::getNameById($item)];
}
}
if ($this->skills_design) {
$res['SkillsOnMainPageForm']['skills_design'] = $this->skills_design;
foreach ($this->skills_design as $item) {
$resToFront['skills_design'][] = [$item => \common\models\Skill::getNameById($item)];
}
}
Options::setValue('skills_on_main_page', json_encode($res));
Options::setValue('skills_on_main_page_to_front', json_encode($resToFront));
}
}

View File

@ -17,6 +17,7 @@ $this->params['breadcrumbs'][] = $this->title;
<p>
<?= Html::a('Добавить', ['create'], ['class' => 'btn btn-success']) ?>
<?= Html::a('Категории', ['/settings/skill-category'], ['class' => 'btn btn-success']) ?>
<?= Html::a('Навыки на главной', ['/settings/skill/skills-on-main-page'], ['class' => 'btn btn-success']) ?>
</p>
<?= GridView::widget([

View File

@ -0,0 +1,74 @@
<?php
use kartik\select2\Select2;
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $form yii\widgets\ActiveForm */
/* @var $model \backend\modules\settings\models\SkillsOnMainPageForm */
?>
<div class="skill-form">
<?php if ($model->showMsg): ?>
<div class="alert alert-success" role="alert">
Данные сохранены.
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<?php endif; ?>
<?php $form = ActiveForm::begin(); ?>
<div class="row">
<div class="col-xs-12">
<?= $form->field($model, 'skills_back')->widget(
Select2::class,
[
'data' => \yii\helpers\ArrayHelper::map(\common\models\Skill::find()->all(), 'id', 'name'),
'options' => ['placeholder' => '...', 'class' => 'form-control', 'multiple' => true],
'pluginOptions' => [
'allowClear' => true
],
]
)->label('Навыки Backend'); ?>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<?= $form->field($model, 'skills_front')->widget(
Select2::class,
[
'data' => \yii\helpers\ArrayHelper::map(\common\models\Skill::find()->all(), 'id', 'name'),
'options' => ['placeholder' => '...', 'class' => 'form-control', 'multiple' => true],
'pluginOptions' => [
'allowClear' => true
],
]
)->label('Навыки FrontEnd'); ?>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<?= $form->field($model, 'skills_design')->widget(
Select2::class,
[
'data' => \yii\helpers\ArrayHelper::map(\common\models\Skill::find()->all(), 'id', 'name'),
'options' => ['placeholder' => '...', 'class' => 'form-control', 'multiple' => true],
'pluginOptions' => [
'allowClear' => true
],
]
)->label('Навыки Design'); ?>
</div>
</div>
<div class="form-group">
<?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>