portal.mkgtu.ru/common/modules/abiturient/views/notification/index.php

379 lines
17 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\models\notification\NotificationForm;
use common\models\notification\NotificationType;
use common\models\notification\ReceiverSearch;
use common\models\User;
use common\modules\abiturient\assets\notificationAsset\NotificationAsset;
use kartik\form\ActiveForm;
use kartik\grid\GridView;
use kartik\helpers\Html as HelpersHtml;
use kartik\select2\Select2;
use yii\bootstrap4\Modal;
use yii\data\ActiveDataProvider;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\helpers\Url;
use yii\web\View;
use yii\widgets\Pjax;
$this->title = Yii::$app->name . ' | ' . Yii::t(
'notification/index/index',
'Заголовок страницы рассылки уведомлений: `Рассылка уведомлений`'
);
$appLanguage = Yii::$app->language;
$this->registerCssFile('css/manager_style.css', ['depends' => ['frontend\assets\FrontendAsset']]);
NotificationAsset::register($this);
$data_bool = [
null => Yii::t(
'notification/index/filter-block',
'Текст для значения "Все" в выпадающем списке; блока с фильтрами на стр. рассылки уведомлений: `Все`'
),
1 => Yii::t(
'notification/index/filter-block',
'Текст для значения "Есть" в выпадающем списке; блока с фильтрами на стр. рассылки уведомлений: `Есть`'
),
2 => Yii::t(
'notification/index/filter-block',
'Текст для значения "Нет" в выпадающем списке; блока с фильтрами на стр. рассылки уведомлений: `Нет`'
)
];
$select_options = [
'placeholder' => Yii::t(
'notification/index/filter-block',
'Текст для пустого значения выпадающего списка; блока с фильтрами на стр. рассылки уведомлений: `Выберите ...`'
)
];
?>
<?php Pjax::begin(['timeout' => '5000']) ?>
<?php if (Yii::$app->session->hasFlash('notificationError')) : ?>
<div class="alert alert-danger">
<?php foreach (Yii::$app->session->getFlash('notificationError') as $errors) : ?>
<?php foreach ($errors as $error) : ?>
<?php echo $error ?><br>
<?php endforeach; ?>
<?php endforeach; ?>
</div>
<?php endif; ?>
<div class="mx-gutters">
<h2>
<a href="<?php echo Url::toRoute(['/sandbox']); ?>" class="btn btn-primary float-right">
<?= Yii::t(
'sandbox/moderate/all',
'Подпись кнопки возвращающей к списку с заявлениями; на стр. рассылки уведомлений: `К списку заявлений поступающих`'
) ?>
</a>
<?= Yii::t(
'notification/index/index',
'Заголовок таблицы с получателями уведомлений; на стр. рассылки уведомлений: `Рассылка уведомлений`'
); ?>
</h2>
</div>
<div class="card-group">
<div class="card mb-3">
<div class="card-header">
<h4>
<a data-toggle="collapse" href="#collapse-notification">
<?php echo Yii::t(
'notification/index/filter-block',
'Заголовок блока с фильтрами; на стр. рассылки уведомлений: `Фильтры`'
); ?>
</a>
</h4>
</div>
<div id="collapse-notification" class="panel-collapse collapse in">
<div class="card-body">
<?php $form = ActiveForm::begin([
'id' => 'receiver-search-form',
'method' => 'GET',
'options' => ['data-pjax' => '1'],
]) ?>
<div class="row notification-filter-container mb-3">
<div class="col-lg-2 col-md-4 col-6">
<?php echo $form->field($searchModel, 'email')
->textInput(['type' => 'email']); ?>
</div>
<div class="col-lg-2 col-md-4 col-6">
<?php echo $form->field($searchModel, 'fio'); ?>
</div>
<div class="col-lg-2 col-md-4 col-6">
<?php echo $form->field($searchModel, 'campaign_code')->widget(Select2::class, [
'language' => $appLanguage,
'data' => ArrayHelper::merge(
[null => Yii::t(
'notification/index/filter-block',
'Текст для значения "Все ПК" в выпадающем списке; блока с фильтрами на стр. рассылки уведомлений: `Все ПК`'
)],
ArrayHelper::map($listOfAdmissionCampaign, 'reference_uid', 'name')
),
'options' => $select_options,
'pluginOptions' => ['allowClear' => true],
]); ?>
</div>
<div class="col-lg-2 col-md-4 col-6">
<?php echo $form->field($searchModel, 'has_entrant_tests')->widget(Select2::class, [
'language' => $appLanguage,
'data' => $data_bool,
'options' => $select_options,
'pluginOptions' => ['allowClear' => true],
]); ?>
</div>
<div class="col-lg-2 col-md-4 col-6">
<?php echo $form->field($searchModel, 'has_preferences')->widget(Select2::class, [
'language' => $appLanguage,
'data' => $data_bool,
'options' => $select_options,
'pluginOptions' => ['allowClear' => true],
]); ?>
</div>
<div class="col-lg-2 col-md-4 col-6">
<?php echo $form->field($searchModel, 'has_target_receptions')->widget(Select2::class, [
'language' => $appLanguage,
'data' => $data_bool,
'options' => $select_options,
'pluginOptions' => ['allowClear' => true],
]); ?>
</div>
<div class="col-lg-2 col-md-4 col-6">
<?php echo $form->field($searchModel, 'has_full_cost_recovery')->widget(Select2::class, [
'language' => $appLanguage,
'data' => $data_bool,
'options' => $select_options,
'pluginOptions' => ['allowClear' => true],
]); ?>
</div>
<div class="col-lg-2 col-md-4 col-6">
<?php echo $form->field($searchModel, 'application_status')->widget(Select2::class, [
'language' => $appLanguage,
'data' => ReceiverSearch::getApplicationStatusesData(),
'options' => $select_options,
'pluginOptions' => ['allowClear' => true],
]); ?>
</div>
</div>
<div class="row">
<div class="col-12">
<?php echo Html::submitButton(Yii::t(
'notification/index/filter-block',
'Подпись для кнопки применения фильтров; блока с фильтрами на стр. рассылки уведомлений: `Отфильтровать`'
), ['class' => 'btn btn-primary']); ?>
<?php echo Html::a(
Yii::t(
'notification/index/filter-block',
'Подпись для кнопки сброса фильтров; блока с фильтрами на стр. рассылки уведомлений: `Сбросить`'
),
['notification/index'],
['class' => 'btn btn-outline-secondary']
); ?>
</div>
</div>
<?php ActiveForm::end() ?>
</div>
</div>
</div>
</div>
<div class="card-group">
<div class="card mb-3">
<div class="card-body">
<div class="row">
<div class="col-lg-9 col-md-8 col-7">
<?php echo Select2::widget([
'language' => $appLanguage,
'name' => 'notification_type',
'data' => ArrayHelper::map(NotificationType::find()->enabled()->all(), 'key', 'description'),
'options' => ArrayHelper::merge($select_options, [
'id' => 'notification-type',
'multiple' => true,
'placeholder' => Yii::t('notification/index/index', 'Подпись кнопки создания уведомления; на стр. рассылки уведомлений: `Выберите способы доставки`'),
]),
'pluginOptions' => [
'tags' => true,
'tokenSeparators' => [',', ' '],
'maximumInputLength' => 10
],
]); ?>
</div>
<div class="col-lg-3 col-md-4 col-5">
<?php echo Html::a(
Yii::t('notification/index/index', 'Подпись кнопки создания уведомления; на стр. рассылки уведомлений: `Создать уведомления`'),
'#',
[
'class' => 'btn btn-success btn-block',
'style' => 'overflow-x: hidden',
'data-toggle' => 'modal',
'data-target' => '#notification-modal',
]
); ?>
</div>
</div>
</div>
</div>
</div>
<div>
<?php echo Yii::t('notification/index/receivers-table', 'Подпись к галочке для выбора всех получателей; на стр. рассылки уведомлений: `Отправить всем`'); ?>
<?php echo Html::checkbox('send_to_all', false, ['id' => 'send-to-all']); ?>
</div>
<div>
<?php echo Yii::t('notification/index/receivers-table', 'Подпись к отображаемому числу получателей; на стр. рассылки уведомлений: `Получателей:`') ?>
<span class="receiver_count">0</span>
</div>
<?php
$query = clone $dataProvider->query;
$this->registerJsVar('all_receivers', $query->select(User::tableName() . '.id')->column());
$this->registerJsVar('no_receivers_text', Yii::t(
'common/models/notification-form',
'Текст ошибки от том, что не выбран ни один получатель уведомления формы "Форма уведомления": `Не выбран ни один получатель`'
));
$this->registerJsVar('no_types_text', Yii::t(
'common/models/notification-form',
'Текст ошибки от том, что не выбран ни один из способов доставки уведомления формы "Форма уведомления": `Не выбран ни один из способов доставки`'
));
?>
<div class="table-responsive">
<?php echo GridView::widget([
'hover' => true,
'headerContainer' => ['class' => 'thead-light'],
'tableOptions' => ['class' => 'table-sm valign-middle'],
'striped' => false,
'summary' => false,
'pager' => [
'firstPageLabel' => '<<',
'prevPageLabel' => '<',
'nextPageLabel' => '>',
'lastPageLabel' => '>>',
],
'id' => 'receiver-grid',
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'class' => 'yii\grid\CheckboxColumn',
'cssClass' => 'receiverCheck'
],
[
'label' => Yii::t('notification/index/receivers-table', 'Подпись колонки для поля "fio" в таблице рассылки уведомлений: `ФИО`'),
'attribute' => 'abiturientQuestionary.fio'
],
'email',
[
'header' => Yii::t('common/models/notification/receiver-search', 'Подпись для поля "has_entrant_tests" формы "Поиск получателя": `Наличие экзаменов ВИ`'),
'attribute' => 'hasEntrantTests',
'format' => 'boolean',
],
[
'header' => Yii::t('common/models/notification/receiver-search', 'Подпись для поля "has_preferences" формы "Поиск получателя": `Наличие льгот`'),
'attribute' => 'hasPreferences',
'format' => 'boolean',
],
[
'header' => Yii::t('common/models/notification/receiver-search', 'Подпись для поля "has_target_receptions" формы "Поиск получателя": `Наличие целевых договоров`'),
'attribute' => 'hasTargetReceptions',
'format' => 'boolean',
],
[
'header' => Yii::t('common/models/notification/receiver-search', 'Подпись для поля "has_full_cost_recovery" формы "Поиск получателя": `Наличие направлений с полным возмещением затрат`'),
'attribute' => 'hasFullCostRecovery',
'format' => 'boolean',
],
[
'header' => Yii::t('common/models/notification/receiver-search', 'Подпись для поля "application_status" формы "Поиск получателя": `Статус заявления`'),
'attribute' => 'humanApplicationStatuses',
],
],
'formatter' => [
'class' => 'yii\i18n\Formatter',
'nullDisplay' => ''
],
]); ?>
</div>
<?php echo Yii::t(
'notification/index/receivers-table',
'Подпись к переключателю количества записей на странице; на стр. рассылки уведомлений: `Показывать на странице`'
); ?>
<div class="row">
<div class="col-6">
<?= HelpersHtml::radioButtonGroup(
"{$searchModel->formName()}[pageSize]",
$searchModel->pageSize,
ArrayHelper::map(
[20, 50, 100, 200, 500],
function ($data) {
return $data;
},
function ($data) {
return $data;
}
),
['itemOptions' => ['labelOptions' => [
'onclick' => 'window.changePagination($(this))',
'class' => 'btn btn-success pagination_size',
]]]
) ?>
</div>
<div class="col-6">
<?= Html::button(
'<i class="fa fa-arrow-up"></i> ' . Yii::t(
'notification/index/receivers-table',
'Подпись кнопки для быстрой прокрутки в начало страницы; на стр. поданных заявлений: `Наверх`'
),
[
'id' => 'btn_to_up_scroll',
'onclick' => 'window.toTop()',
'class' => 'btn btn-warning pull-right',
]
) ?>
</div>
</div>
<?php Pjax::end(); ?>
<?php Modal::begin([
'title' => Html::tag('h4', Yii::t(
'notification/index/index',
'Заголовок модального окна для создания уведомления на странице рассылки уведомлений: `Новое уведомление`'
)),
'size' => 'modal-lg',
'id' => "notification-modal",
'options' => [
'tabindex' => false,
],
]);
echo $this->render('_form', [
'model' => new NotificationForm()
]);
Modal::end();