_vacancy_form.php 10.2 KB
<?php
    /**
     * @var Vacancy $vacancy
     * @var Employment[] $employment
     * @var string[] $currencies
     * @var Specialization[] $specializations
     */
    use common\models\Employment;
    use common\models\Specialization;
    use common\models\Vacancy;
    use common\widgets\FieldEditor;
    use kartik\select2\Select2;
    use mihaildev\ckeditor\CKEditor;
    use yii\helpers\Html;
    use yii\web\JsExpression;
    use yii\widgets\ActiveForm;

    $this->title = 'Вакансии';
    $this->params[ 'breadcrumbs' ][] = $this->title;
?>
<div class="login-left-column-title"><?= $this->title ?></div>
<div class="login-left-column-title-two style">Редактирование:</div>
<?php
    $form = ActiveForm::begin();
?>

<div class="input-blocks-wrapper">
    <div class="input-blocks">
        <?= $form->field($vacancy, 'name')
            ->textInput (['class'=> 'custom-input-2']); ?>
    </div>
</div>

<div class="input-blocks-wrapper">
    <div class="input-blocks">
        <?= $form->field($vacancy, 'link')
            ->textInput (['class'=> 'custom-input-2']); ?>
    </div>
</div>

<div class="input-blocks-wrapper">
    <div class="input-blocks">
        <?= $form->field($vacancy, 'user_name')
            ->textInput (['class'=> 'custom-input-2']); ?>
        <span class="admin-hint-vacancy-contact">Вы</span>
    </div>
</div>

<div class="input-blocks-wrapper">
    <div class="input-blocks">
        <?= $form->field($vacancy, 'phone')
                 ->textInput (['class'=> 'custom-input-2']); ?>
        <span class="admin-hint-vacancy-contact">Ваш</span>
    </div>
</div>

<div class="input-blocks-wrapper">
    <div class="input-blocks">
        <?=
            $form->field($vacancy, 'city')->widget(Select2::classname(), [
                'options' => ['placeholder' => 'Выбор города ...'],
                'pluginOptions' => [
                    'allowClear' => true,
                    'minimumInputLength' => 3,
                    'ajax' => [
                        'url' => \yii\helpers\Url::to(['site/city']),
                        'dataType' => 'json',
                        'data' => new JsExpression('function(params) { return {q:params.term}; }')
                    ],
                    'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
                    'templateResult' => new JsExpression('function(city) { return city.text; }'),
                    'templateSelection' => new JsExpression('function (city) { return city.text; }'),
                ],
            ]);
        ?>
        <span class="admin-hint-vacancy-contact">Ваш</span>
    </div>
</div>

<div class="input-blocks-wrapper">
    <div class="input-blocks admin-currency-first">
        <?= $form->field($vacancy, 'salary', [
            'template' => "{label}<br /><span class='admn-input-txt'>от</span>{input}\n{hint}\n{error}",
            'options'  => [ 'class' => 'form-inline' ],
        ])
            ->label('Заработная плата')
            ->textInput (['class'=> 'custom-input-2 custom-input-2-date','type'=>'number']);
        ?>
    </div>
    <div class="input-blocks admin-currency-second">
        <?=
        $form->field($vacancy, 'salary_currency', [
            'template' => "{input}\n{hint}\n{error}",
        ])
            ->label(false)
            ->dropDownList($currencies)
        ?>
    </div>
</div>


<div class="input-blocks-wrapper admin-menu-list">
    <div class="input-blocks" style="width: 100%; margin-bottom: 5px">
        <label>Специализации</label>
    </div>
    <ul class="content-menu-first">
        <?php foreach($specializations as $specialization): ?>
            <li data-img="<?= $specialization->image ?>">
                <span data-menu-bg="<?= $specialization->background ?>" style="background: <?= $specialization->background ?>"></span><a href="#"><?= $specialization->specialization_name ?></a>
                <ul>
                    <?php foreach($specialization->children as $child_first): ?>

                        <?php if($child_first instanceof Specialization): ?>
                            <li>
                                <a href="#"><?= $child_first->specialization_name ?></a>
                                <ul>
                                    <?php foreach($child_first->children as $child_second): ?>
                                        <?php if($child_first instanceof Specialization): ?>
                                            <li>
                                                <a href="#" title="<?= $child_second->specialization_name ?>">
                                                    <?= $form->field($vacancy, "specializationInput[{$child_second->specialization_id}]", [
                                                        'template'     => '{input}{label}{hint}{error}',
                                                    ])
                                                        ->label('<span></span>' . $child_second->specialization_name)
                                                        ->checkbox([
                                                            'value'   => $child_second->specialization_id,
                                                            'label'   => NULL,
                                                            'uncheck' => NULL,
                                                            'class' => 'custom-check',
                                                        ], false) ?>
                                                </a>
                                            </li>
                                        <?php endif; ?>
                                    <?php endforeach; ?>
                                </ul>
                            </li>
                        <?php endif; ?>
                    <?php endforeach; ?>

                </ul>
            </li>
        <?php endforeach; ?>
    </ul>
</div>

<div class="admin-specialization-selected style">
    <ul>

    </ul>
</div>

<div class="input-blocks-wrapper admin-vacancy-check" style="margin-top: 29px">
    <div class="input-blocks">
        <?= $form->field($vacancy, 'employmentInput')
            ->checkboxList($employment,
                [
                    'item' => function($index, $label, $name, $checked, $value) {
                        $return = '<div class="admin-who-check-payment">';
                        $return .= '<input class="custom-check" id="select_admin_payment'.$value.'" type="checkbox" name="' . $name . '" value="' . $value . '" '.($checked ? "checked" :"").' >';
                        $return .= '<label for="select_admin_payment'.$value.'" >';
                        $return .= '<span></span>' . ucwords($label);
                        $return .= '</label>';
                        $return .= '</div>';
                        return $return;
                    }
                ]
            ) ?>
    </div>
</div>

<div class="skills-admin-wrapper style">
    <div class="input-blocks-wrapper skills-programs">
        <div class="input-blocks">
            <?= FieldEditor::widget (
                [
                    'template' => 'requirements', 'item_id' => $vacancy->vacancy_id, 'model' => 'common\models\Vacancy', 'language' => 'ru',
                ]
            ); ?>
        </div>
    </div>
</div>

<div class="input-blocks-wrapper full-blocks admin-editor-bl">
    <div class="input-blocks">
        <?= $form->field($vacancy, 'description')->widget(CKEditor::className()) ?>
    </div>
</div>

<div class="admin-save-btn skills-save-btn admin-add-remove-wr style">
    <?= Html::submitButton($vacancy->isNewRecord?'Добавить':'Обновить', [ 'class' => 'input-blocks-wrapper button' ]) ?>
    <div class="admin-remove-note">
        <?php
        if(!$vacancy->isNewRecord) {
            echo Html::a('Удалить', [
                'accounts/vacancy-delete',
                'id' => $vacancy->vacancy_id,
            ], [
                'title'        => 'Удалить',
                'aria-label'   => 'Удалить',
                'data-confirm' => 'Вы уверены, что хотите удалить этот элемент?',
                'data-method'  => 'post',
                'data-pjax'    => 0,
            ]);
        }
        ?>
    </div>
    <div class="admin-back-note">
        <?= Html::a('вернуться', [ 'accounts/vacancy' ]) ?>
    </div>
</div>


<?php
    $form->end();
?>
<script>
    $(document).ready(function(){
        $('.input-blocks.admin-currency-second select').change(function(){
            $(this).blur()
        })

        specializationTags()
        function specializationTags(){
            addSpecializationTags()
            removeSpecializationTags()
            newAddSpecializationTags()

            function addSpecializationTags(){
                var specTags = $('.admin-page .third-ul-menu input:checked')
                for (var spI=0;spI<specTags.length;spI++) {
                    var newSpecTagsId = $(specTags[spI]).attr('id')
                    var newSpecTagsTxt = $(specTags[spI]).parents('a').text()
                    $('.admin-page .admin-specialization-selected ul').append('<li data-spec-id="'+newSpecTagsId+'">'+newSpecTagsTxt+'</li>')
                }
            }

            function removeSpecializationTags(){
                $('body').on('click', '.admin-page .admin-specialization-selected ul li', function(){
                    var removeSpecTagsId = $(this).attr('data-spec-id')
                    $('.admin-page .third-ul-menu #'+removeSpecTagsId).attr('checked', false)
                    $(this).remove()
                })
            }

            function newAddSpecializationTags(){
                $('.admin-page .third-ul-menu input').change(function(){
                    var thisSpecTagsId = $(this).attr('id')
                    var thisSpecTagsTxt = $(this).parents('a').text()
                    if($(this).prop("checked")){
                        $('.admin-page .admin-specialization-selected ul').append('<li data-spec-id="'+thisSpecTagsId+'">'+thisSpecTagsTxt+'</li>')
                    } else {
                     $('.admin-page .admin-specialization-selected ul li[data-spec-id="'+thisSpecTagsId+'"]').remove()
                    }
                })
            }
        }
    })
</script>