portal.mkgtu.ru/common/components/AccountingBenefits/_form_olymp.php

501 lines
26 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
use common\components\ini\iniGet;
use common\components\validation_rules_providers\RulesProviderByDocumentType;
use common\models\Attachment;
use common\models\dictionary\DocumentType;
use common\models\dictionary\StoredReferenceType\StoredOlympicClassReferenceType;
use common\models\dictionary\StoredReferenceType\StoredOlympicKindReferenceType;
use common\models\dictionary\StoredReferenceType\StoredOlympicProfileReferenceType;
use common\modules\abiturient\models\bachelor\BachelorPreferences;
use common\widgets\ContractorField\ContractorField;
use kartik\form\ActiveForm;
use kartik\widgets\DepDrop;
use kartik\widgets\Select2;
use sguinfocom\DatePickerMaskedWidget\DatePickerMaskedWidget;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\helpers\Url;
use yii\web\View;
$appLanguage = Yii::$app->language;
$isReadOnly = !!$model->read_only || !$canEdit;
if (!isset($number)) {
$number = 'B';
}
if (empty($itemsDoc)) {
$itemsDoc = [];
}
if (empty($buttonName)) {
$buttonName = Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись кнопки для сохранения формы; модального окна БВИ на странице льгот: `Добавить`'
);
}
if (empty($action)) {
$action = [];
}
if ($model->document_type_id && !isset($itemsDoc[$model->document_type_id])) {
[
'description' => $description,
'documentTypesOptions' => $documentTypesOptions,
] = DocumentType::processArchiveDocForDropdown('id', $model->document_type_id);
$itemsDoc[$model->document_type_id] = $description;
if ($documentTypesOptions) {
$model->addError(
'document_type_id',
Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подсказка о том, что выбран архивный тип документа: `Внимание! Выбранный элемент "{attribute}" находится в архиве.`',
['attribute' => $model->getAttributeLabel('document_type_id')]
)
);
}
}
$model_id = base64_encode((string)$model->id);
$canDelete = $number !== 'B' ? 'true' : 'false';
$del_url = Url::to(['site/delete-file-benefit']);
$wrapper_id = "olymp-wrapper-{$number}";
?>
<?php $form = ActiveForm::begin([
'method' => 'post',
'action' => $action
]); ?>
<div class="document-root">
<div id="<?php echo $wrapper_id ?>">
<?php if (!$model->isNewRecord) : ?>
<?= $this->render(
'@abiturientViews/_document_check_status_render',
compact(['model'])
) ?>
<?php endif ?>
<div class="row">
<div class="col-12">
<div class="card mb-3">
<div class="card-body">
<div class="row">
<div class="col-12 col-md-6">
<label>
<?= Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись поля "kind" для блока фильтров; модального окна БВИ на странице льгот: `Вид`'
) ?>
</label>
<?php $tnStoredOlympicKindReferenceType = StoredOlympicKindReferenceType::tableName(); ?>
<?= Select2::widget([
'language' => $appLanguage,
'name' => "kind-filter-{$number}",
'data' => ArrayHelper::map(
StoredOlympicKindReferenceType::find()
->active()
->andWhere(["is_folder" => false])
->orderBy("{$tnStoredOlympicKindReferenceType}.reference_name")
->all(),
'reference_name',
'reference_name'
),
'options' => [
'disabled' => $isReadOnly,
'placeholder' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись пустого значения для поля "kind"; модального окна БВИ на странице льгот: `Выберите ...`'
),
'id' => "kind-filter-{$number}",
],
'pluginOptions' => [
'allowClear' => true,
'multiple' => false,
'dropdownParent' => "#{$wrapper_id}",
],
]); ?>
</div>
<div class="col-12 col-md-6">
<label>
<?= Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись поля "class" для блока фильтров; модального окна БВИ на странице льгот: `Класс`'
) ?>
</label>
<?php $tnStoredOlympicClassReferenceType = StoredOlympicClassReferenceType::tableName(); ?>
<?= Select2::widget([
'language' => $appLanguage,
'name' => "class-filter-{$number}",
'data' => ArrayHelper::map(
StoredOlympicClassReferenceType::find()
->active()
->andWhere(["is_folder" => false])
->orderBy("{$tnStoredOlympicClassReferenceType}.reference_name")
->all(),
'reference_uid',
'reference_name'
),
'options' => [
'disabled' => $isReadOnly,
'placeholder' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись пустого значения для поля "class"; модального окна БВИ на странице льгот: `Выберите ...`'
),
'id' => "class-filter-{$number}",
],
'pluginOptions' => [
'allowClear' => true,
'multiple' => false,
'dropdownParent' => "#{$wrapper_id}",
],
]); ?>
</div>
</div>
<div class="row" style="margin-top: 10px;">
<div class="col-12 col-md-6">
<label>
<?= Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись поля "year" для блока фильтров; модального окна БВИ на странице льгот: `Год`'
) ?>
</label>
<?= Html::input(
'number',
"year-filter-{$number}",
null,
[
'disabled' => $isReadOnly,
'id' => "year-filter-{$number}",
'class' => 'form-control',
]
); ?>
</div>
<div class="col-12 col-md-6">
<label>
<?= Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись поля "profile" для блока фильтров; модального окна БВИ на странице льгот: `Профиль`'
) ?>
</label>
<?php $tnStoredOlympicProfileReferenceType = StoredOlympicProfileReferenceType::tableName(); ?>
<?= Select2::widget([
'language' => $appLanguage,
'name' => "profile-filter-{$number}",
'data' => ArrayHelper::map(
StoredOlympicProfileReferenceType::find()
->active()
->andWhere(["is_folder" => false])
->orderBy("{$tnStoredOlympicProfileReferenceType}.reference_name")
->all(),
'reference_uid',
'reference_name'
),
'options' => [
'disabled' => $isReadOnly,
'placeholder' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись пустого значения для поля "profile"; модального окна БВИ на странице льгот: `Выберите ...`'
),
'id' => "profile-filter-{$number}",
],
'pluginOptions' => [
'allowClear' => true,
'multiple' => false,
'dropdownParent' => "#{$wrapper_id}",
],
]); ?>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<?= $form->field($model, 'olympiad_id')
->widget(
DepDrop::class,
[
'language' => $appLanguage,
'type' => DepDrop::TYPE_SELECT2,
'options' => [
'disabled' => $isReadOnly,
'placeholder' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись пустого значения для поля "olympiad_id"; модального окна БВИ на странице льгот: `Выберите ...`'
),
'id' => "first_drop_oly_{$number}"
],
'select2Options' => ['pluginOptions' => [
'allowClear' => true,
'multiple' => false,
'dropdownParent' => "#{$wrapper_id}",
]],
'data' => $items,
'pluginOptions' => [
'placeholder' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись пустого значения для поля "olympiad_id"; модального окна БВИ на странице льгот: `Выберите ...`'
),
'loadingText' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись загружаемого значения для поля "olympiad_id"; модального окна БВИ на странице льгот: `Загрузка ...`'
),
'depends' => [
"kind-filter-{$number}",
"class-filter-{$number}",
"year-filter-{$number}",
"profile-filter-{$number}",
],
'url' => Url::to(['/site/filter-olympiads', 'app_id' => $id]),
]
]
); ?>
</div>
</div>
<div class="row">
<div class="col-12">
<?= $form->field($model, 'special_mark_id')
->widget(
DepDrop::class,
[
'language' => $appLanguage,
'type' => DepDrop::TYPE_SELECT2,
'options' => [
'disabled' => $isReadOnly,
'placeholder' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись пустого значения для поля "special_mark_id"; модального окна БВИ на странице льгот: `Выберите ...`'
),
'id' => "second_drop_oly_{$number}"
],
'select2Options' => ['pluginOptions' => [
'allowClear' => true,
'multiple' => false,
'dropdownParent' => "#{$wrapper_id}",
]],
'data' => $itemsOlymp,
'pluginOptions' => [
'placeholder' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись пустого значения для поля "special_mark_id"; модального окна БВИ на странице льгот: `Выберите ...`'
),
'loadingText' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись загружаемого значения для поля "special_mark_id"; модального окна БВИ на странице льгот: `Загрузка ...`'
),
'depends' => ["first_drop_oly_{$number}"],
'url' => Url::to(['site/olymp-type', 'app_id' => $id, 'id' => $model->id]),
]
]
); ?>
</div>
</div>
<div class="row">
<div class="col-12">
<?= $form->field($model, 'document_type_id')
->widget(
DepDrop::class,
[
'language' => $appLanguage,
'type' => DepDrop::TYPE_SELECT2,
'options' => [
'disabled' => $isReadOnly,
'placeholder' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись пустого значения для поля "document_type_id"; модального окна БВИ на странице льгот: `Выберите ...`'
),
'id' => "third_drop_oly_{$number}",
'data' => ['document_type_input' => 1],
],
'select2Options' => ['pluginOptions' => [
'allowClear' => true,
'multiple' => false,
'dropdownParent' => "#{$wrapper_id}",
]],
'data' => $itemsDoc,
'pluginOptions' => [
'placeholder' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись пустого значения для поля "document_type_id"; модального окна БВИ на странице льгот: `Выберите ...`'
),
'loadingText' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись загружаемого значения для поля "document_type_id"; модального окна БВИ на странице льгот: `Загрузка ...`'
),
'depends' => ["second_drop_oly_{$number}"],
'url' => Url::to(['site/doc-type-olympiads', 'id' => $id]),
]
]
); ?>
</div>
</div>
<div class="row">
<div class="col-12">
<?php echo ContractorField::widget([
'form' => $form,
'model' => $model,
'disabled' => $isReadOnly,
'attribute' => 'contractor_id',
'notFoundAttribute' => 'notFoundContractor',
'keynum' => $number,
'need_subdivision_code' => false,
'default_contractor_type_guid_code' => 'contractor_type_olymp_guid',
'labels' => [
'contractor_name' => $model->getAttributeLabel('contractor_id'),
],
'application' => $application,
'options' => [
'selectInputId' => "olympiad-contractor_id_{$number}",
'contractorTitleInputId' => "olympiad-contractor_name_{$number}",
'contractorSubdivisionCodeInputId' => "olympiad-contractor_subdivision_code_{$number}",
'contractorLocationCodeInputId' => "olympiad-contractor_location_code_{$number}",
'notFoundCheckboxInputId' => "olympiad-contractor_not_found_{$number}",
'data' => [
'one-s-attribute-name' => RulesProviderByDocumentType::IssuedBy
]
]
]); ?>
</div>
</div>
<div class="row">
<div class="col-12 col-md-4">
<?= $form->field($model, 'document_series')
->textInput([
'data' => ['one-s-attribute-name' => RulesProviderByDocumentType::DocumentSeries],
'disabled' => $isReadOnly,
]); ?>
</div>
<div class="col-12 col-md-4">
<?= $form->field($model, 'document_number')
->textInput([
'data' => ['one-s-attribute-name' => RulesProviderByDocumentType::DocumentNumber],
'disabled' => $isReadOnly,
]); ?>
</div>
<div class="col-12 col-md-4">
<?= $form->field($model, 'document_date')
->widget(
DatePickerMaskedWidget::class,
[
'inline' => false,
'language' => $appLanguage,
'template' => '{input}{addon}',
'clientOptions' => [
'clearBtn' => true,
'endDate' => '-1d',
'weekStart' => '1',
'autoclose' => true,
'todayBtn' => 'linked',
'format' => 'dd.mm.yyyy',
'calendarWeeks' => 'true',
'todayHighlight' => 'true',
'orientation' => 'top left',
],
'options' => [
'disabled' => $isReadOnly,
'autocomplete' => 'off',
'id' => "dp_ol_{$number}",
'data' => ['one-s-attribute-name' => RulesProviderByDocumentType::IssuedDate],
],
'maskOptions' => ['alias' => 'dd.mm.yyyy']
]
); ?>
</div>
</div>
<div class="row">
<div class="col-12">
<?php
$file_required = $model->attachmentCollection->isRequired();
?>
<div class="form-group <?= $file_required ? 'required' : '' ?>">
<?= $this->render(
'@abiturient/views/partial/fileInput/_fileInput',
[
'form' => $form,
'isReadonly' => $isReadOnly,
'addNewFile' => !$isReadOnly,
'canDeleteFile' => !$isReadOnly,
'required' => $file_required,
'attachmentCollection' => $model->attachmentCollection,
'label' => Yii::t(
'abiturient/bachelor/accounting-benefits/modal-olympiad',
'Подпись области прикрепления сканов; модального окна БВИ на странице льгот: `Скан-копии подтверждающего документа`'
),
]
); ?>
</div>
</div>
</div>
<div class="row">
<div class="col-12 ml-auto">
<?= Html::tag(
'span',
Yii::t(
'abiturient/attachment-widget',
'Текст сообщения об максимально допустимом размере файла виджета сканов: `Максимальный размер приложенного файла: {uploadMaxFilesizeString}`',
['uploadMaxFilesizeString' => iniGet::getUploadMaxFilesizeString()]
),
['class' => 'form-text text-muted', 'style' => 'padding-left: 0px;']
); ?>
<?= Html::tag(
'span',
Yii::t(
'abiturient/attachment-widget',
'Текст перечисляющий доступные форматов для сканов: `Список допустимых форматов файлов: {extensions}`',
['extensions' => Attachment::getExtensionsListForRules()]
),
['class' => 'form-text text-muted', 'style' => 'padding-left: 0px;']
); ?>
</div>
</div>
<?php if (!$isReadOnly) : ?>
<div class="row">
<div class="col-12">
<?php $globalTextForSubmitTooltip = Yii::$app->configurationManager->getText('global_text_for_submit_tooltip', $application->type ?? null); ?>
<?= Html::submitButton($buttonName, [
'data-tooltip_title' => $globalTextForSubmitTooltip,
'class' => 'btn btn-primary float-right anti-clicker-btn'
]); ?>
</div>
</div>
<?php endif ?>
<div class="hidden m-n3">
<?= $form->field($model, 'id_application')->label('')->hiddenInput(['value' => $id]); ?>
<?php if (isset($model->id)) : ?>
<?= $form->field($model, 'id')->label('')->hiddenInput(['value' => $model->id]); ?>
<?php endif; ?>
</div>
</div>
</div>
<?php ActiveForm::end();