_projects_form.php 14 KB
<?php
/**
 * @var Project          $project
 * @var Specialization[] $specialization
 * @var Payment[]        $payment
 * @var string[]         $projects
 */
use common\components\Request;
use common\models\Currency;
use common\models\File;
use common\models\Payment;
use common\models\Project;
use common\models\Specialization;
use common\modules\file\widgets\ImageUploader;
use common\modules\fileloader\widgets\FileloaderWidget;
use kartik\select2\Select2;
use mihaildev\ckeditor\CKEditor;
use yii\helpers\Html;
use yii\jui\DatePicker;
use yii\web\JsExpression;
use yii\widgets\ActiveForm;

$this->title = Yii::t('app', 'Projects');
$this->params[ 'breadcrumbs' ][] = $this->title;
?>
<div class="login-left-column-title"><?= $this->title ?></div>

<?php
$form = ActiveForm::begin([ 'options' => [ 'enctype' => 'multipart/form-data' ] ]);
?>


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

<div class="input-blocks-wrapper">
    <div class="input-blocks admin-project-list admin-currency-second">
        <?= $form->field($project, 'project_pid')
            ->dropDownList($projects, [ 'prompt' => Yii::t('app', 'Parent project') ]) ?>
    </div>
</div>

<div class="input-blocks-wrapper admin-menu-list">
    <div class="input-blocks" style="width: 100%; margin-bottom: 5px">
        <label>Специализации</label>
        <div class="required"></div>
    </div>
    <div class="style">
        <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($project, "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="style admn-menu-err">
        <div class="help-block">Необходимо выбрать хотя бы одну «специализацию».</div>
    </div>
</div>

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


<div class="conacts-admin style">Адрес заказа:</div>
<div class="form-inline">
    <div class="input-blocks-wrapper">
        <div class="input-blocks">
            <?= $form->field($project, '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; }'),
                    ],
                ]); ?>
        </div>


        <div class="input-blocks street-input">
            <?= $form->field($project, 'street', [ 'template' => "{label}{input}{hint}{error}" ])
                ->textInput([ 'class' => 'custom-input-2' ]) ?>
        </div>


        <div class="input-blocks home-input">
            <?= $form->field($project, 'house', [ 'template' => "{label}{input}{hint}{error}" ])
                ->textInput([ 'class' => 'custom-input-2' ]) ?>
        </div>
    </div>
</div>

<div class="input-blocks-wrapper">
    <div class="input-blocks admin-project-list-two admin-currency-first">
        <?= $form->field($project, 'budget', [
            'template' => "{label}<br />{input}\n{hint}\n{error}",
        ])
            ->textInput([
                'class' => 'custom-input-2 custom-input-2-date',
                'type'  => 'number',
            ]) ?>
    </div>
    <div class="input-blocks admin-project-list-two admin-currency-second">
        <?= $form->field($project, 'budget_currency')
            ->label(false)
            ->dropDownList(Currency::getCurrencyDropdown(), [ 'class' => 'custom-input-2' ]); ?>
    </div>
    <div class="input-blocks admin-who-check-payment admin-project-contractual">
        <?= $form->field($project, 'contractual', [ 'template' => "{input}{label}\n{hint}\n{error}" ])
            ->checkbox([ 'class' => 'custom-check' ], false)
            ->label('<span></span>Договорной') ?>
    </div>

</div>

<div class="input-blocks-wrapper">
    <div class="input-blocks">
        <?= $form->field($project, 'payment_variant')
            ->radioList([
                1 => 'Без предоплаты',
                2 => 'Предоплата возможна',
            ], [
                'item' => function($index, $label, $name, $checked, $value) {
                    $return = '<div class="admin-who-check">';
                    $return .= '<input class="custom-radio" id="select_admin_mfp' . $value . '" type="radio" name="' . $name . '" value="' . $value . '" ' . ( $checked ? "checked" : "" ) . ' >';
                    $return .= '<label for="select_admin_mfp' . $value . '" >';
                    $return .= '<span></span>' . ucwords($label);
                    $return .= '</label>';
                    $return .= '</div>';
                    return $return;
                },
            ]) ?>
    </div>
</div>

<div class="input-blocks-wrapper">
    <div class="input-blocks">
        <?= $form->field($project, 'paymentInput')
            ->checkboxList($payment, [
                'item' => function($index, $label, $name, $checked, $value) {
                    $return = '<div class="admin-who-check-payment">';
                    $return .= '<input class="custom-check" id="check_admin_mfp' . $value . '" type="checkbox" name="' . $name . '" value="' . $value . '" ' . ( $checked ? "checked" : "" ) . ' >';
                    $return .= '<label for="check_admin_mfp' . $value . '" >';
                    $return .= '<span></span>' . ucwords($label);
                    $return .= '</label>';
                    $return .= '</div>';
                    return $return;
                },
            ]) ?>
    </div>
</div>


<div class="input-blocks-wrapper">
    <div class="input-blocks admin-project-days">
        <?= $form->field($project, 'deadline', [ 'template' => "{label}<br />{input}<span class='admn-input-txt' style='padding-left: 10px'>дней</span>\n{hint}\n{error}" ])
            ->textInput([
                'class' => 'custom-input-2 custom-input-2-date',
                'type'  => 'number',
            ]) ?>
    </div>
</div>

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

<?php
/* == Old file upload ==
?>
<div class="input-blocks-wrapper admin-project-file">
    <div class="input-blocks">
        <div style="position: absolute; float: left;top: 0; left: 0; z-index: 1; width: 100%; overflow: hidden">
            <div class="gen-admin-title">Присоединить файл</div>
            <div class="admin-project-file-btn">Загрузить</div>
            <div class="not-file-mb-adm">До 3 Мб файл</div>
        </div>
        <div style="opacity: 0; height: 54px; width: 100%; float: left;position: absolute; top: 0;left: 0; z-index: 2;-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=0)'">
            <?= $form->field($project, 'files[]')
                     ->fileInput([ 'multiple' => 'multiple' ]) ?>
        </div>
    </div>
</div>
<?php
    == End of old file upload == */
?>

<div class="input-blocks-wrapper">
    <?php
    echo $form->field($project, 'fileloader')
        ->label(false)
        ->widget(FileloaderWidget::className(), [
            'labelOptions' => [ 'label' => '<div class="gen-admin-title">Присоединить файлы</div><div class="admin-project-file-btn">Загрузить</div><div class="not-file-mb-adm">До 3 Мб файл</div>' ],
            'inputOptions' => [
                'multiple' => 'multiple',
                'class'    => 'hidden',
            ],
            'options'      => [ 'class' => 'fileloader-file' ],
        ]);
    ?>
</div>

<div class="input-blocks-wrapper">
    <div class="input-blocks admin-project-list admin-currency-second">
        <?= $form->field($project, 'date_end')
            ->widget(DatePicker::className(), [
                'dateFormat'    => 'yyyy-MM-dd',
                'clientOptions' => [ 'minDate' => 1 ],
            ]) ?>
    </div>
</div>

<div class="input-blocks-wrapper hint-link hint-link-check">
    <div class="input-blocks admin-project-list admin-currency-second">
        <?= $form->field($project, 'hidden', [ 'template' => "{input}{label}\n{hint}\n{error}" ])
            ->checkbox([ 'class' => 'custom-check admin-check' ], false)
            ->label('<span></span>'.Yii::t('app', 'hidden_project'))
            ->hint(Yii::t('app', 'hidden_project_hint')) ?>
    </div>
</div>

<div class="input-blocks-wrapper">
    <div class="admin-save-btn skills-save-btn admin-add-remove-wr style">
        <?= Html::submitButton($project->isNewRecord ? Yii::t('app', 'add') : 'Обновить', [ 'class' => 'input-blocks-wrapper button' ]) ?>
        <div class="admin-remove-note">
            <?php
            if(!$project->isNewRecord) {
                echo Html::a(Yii::t('app', 'delete'), [
                    'accounts/projects-delete',
                    'id' => $project->project_id,
                ], [
                    'title'        => Yii::t('app', 'delete'),
                    'aria-label'   => Yii::t('app', 'delete'),
                    'data-confirm' =>  Yii::t('app', 'delete_confirm'),
                    'data-method'  => 'post',
                    'data-pjax'    => 0,
                ]);
            }
            ?>
        </div>
        <div class="admin-back-note">
            <?= Html::a('вернуться', Request::getIsLocal(\Yii::$app->request->referrer) ? \Yii::$app->request->referrer : [ 'accounts/projects' ]) ?>
        </div>
    </div>
</div>

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

            if($('.admin-project-contractual input[type="checkbox"]').prop("checked"))
            {
                $('.admin-project-list-two input, .admin-project-list-two select')
                    .attr('disabled', 'disabled')
            }
            $('.admin-project-contractual input[type="checkbox"]').change(
                function()
                {
                    if($(this).prop("checked"))
                    {
                        $('.admin-project-list-two input, .admin-project-list-two select')
                            .attr('disabled', 'disabled')
                    } else
                    {
                        $('.admin-project-list-two input, .admin-project-list-two select')
                            .removeAttr('disabled')
                    }
                }
            )

            $('.admin-project-file input[type="file"]').change(
                function()
                {
                    var strInput = this.value
                    $('.admin-project-file .not-file-mb-adm').html(strInput.replace(/^.*\\/, ""))

                }
            );

            $('#project-date_end').focus(function () {
                $('#ui-datepicker-div').addClass('fix-color-datepicker')
            })
        }
    )
</script>