portal.mkgtu.ru/frontend/views/layouts/base.php

311 lines
13 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 backend\models\DictionaryUpdateHistory;
use backend\models\FaviconSettings;
use common\assets\AjaxBtnManagerAsset;
use common\assets\SubmitBtnManagerAsset;
use common\components\notification\NotificationSettingsManager;
use common\components\notification\widgets\PopupNotificationWidget;
use common\models\settings\LogoSetting;
use common\models\User;
use frontend\assets\FrontendAsset;
use frontend\assets\LogoAssets;
use frontend\assets\NavBarAssets;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\helpers\Url;
use yii\web\View;
if ((new FaviconSettings())->hasAppearanceFile()) {
$this->registerLinkTag([
'rel' => 'icon',
'type' => 'image/ico',
'href' => '/custom-favicon.ico'
]);
}
FrontendAsset::register($this);
NavBarAssets::register($this);
LogoAssets::register($this);
AjaxBtnManagerAsset::register($this);
SubmitBtnManagerAsset::register($this);
$this->registerJsVar(
'alertErrorMessageForAjaxBtnManager',
Yii::t(
'abiturient/errors',
'Сообщение поступающему о ошибке сохранения формы скан-копий: `Возникла ошибка сохранения формы. Обратитесь к администратору.`'
)
);
$isGuest = Yii::$app->user->isGuest;
$isAbit = Yii::$app->user->can(User::ROLE_ABITURIENT);
$languages = Yii::$app->localizationManager->getAvailableLocales(true);
$pullDirection = $isGuest ? 'float-right' : '';
$containerClass = Yii::$app->user->can('manager') ? '' : 'container';
$style = '<style>';
$logoSettings = [];
$logoWithUsername = null;
$logoWithoutUsername = null;
$tableLogoSettingExist = Yii::$app->db->schema->getTableSchema(LogoSetting::tableName()) !== null;
if ($tableLogoSettingExist) {
$logoSettings = LogoSetting::find()
->andWhere(['>', 'width', 0])
->andWhere(['>', 'height', 0])
->all();
}
foreach ($logoSettings as $logoSetting) {
if ($logoSetting->name == 'logo-without-username') {
$logoWithoutUsername = $logoSetting;
} elseif ($logoSetting->name == 'logo-with-username') {
$logoWithUsername = $logoSetting;
}
$style .= "
.{$logoSetting->name} {
padding: 0;
width: {$logoSetting->width}px;
height: {$logoSetting->height}px;
}
";
}
$style .= '</style>';
?>
<?php $this->beginPage(); ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
<meta charset="<?= Yii::$app->charset ?>" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>
<?= Html::encode($this->title); ?>
</title>
<?php $this->head(); ?>
<?= Html::csrfMetaTags(); ?>
<?= $style ?>
</head>
<body>
<?php $session = Yii::$app->session; ?>
<?php if ($session->has('transfer')) : ?>
<?php $username = ArrayHelper::getValue(Yii::$app, 'user.identity.username', ''); ?>
<div class="alert alert-warning alert-for-transfer">
<?= Yii::t(
'header/admin-interface',
'Алерт предупреждающий о том, что пользователь изменён: `<strong>Внимание!</strong> Вы работаете от имени пользователя {username}. <a href="{url}" class="alert-link">Завершить сеанс.</a>`',
[
'url' => Url::to('/transfer/came-back'),
'username' => $username
]
); ?>
</div>
<?php endif; ?>
<?php if (!DictionaryUpdateHistory::hasUpdatedDictionariesAfterVersionMigrated()) : ?>
<div class="alert alert-warning text-center">
<?= Yii::t(
'header/admin-interface',
'Предупреждение о том, что после обновления портала не обновлены справочники: `После установки новой версии Портала вуза не обновлена справочная информация. Обратитесь к администратору.`',
); ?>
</div>
<?php endif; ?>
<nav class="navbar navbar-light portal-navbar <?= $containerClass ?> nav-bar-background-color navbar-expand-md">
<?php if ($isAbit && NotificationSettingsManager::isWidgetEnabled()) : ?>
<?php echo PopupNotificationWidget::widget(); ?>
<?php endif; ?>
<?php if ($isGuest) : ?>
<?php if ($logoWithoutUsername && $logoWithoutUsername->hasAppearanceFile()) : ?>
<?= Html::a(
Html::img(
Url::to($logoWithoutUsername->getLogoFileUrl()),
[
'class' => 'logo-without-username',
'alt' => Yii::t('header/logo', 'Подпись логотип портала, для неавторизованных пользователей на странице авторизации: `Логотип портала, для неавторизованных пользователей`')
]
),
'#',
['class' => 'navbar-brand li-like-padding nav-logo']
); ?>
<?php endif; ?>
<?php else : ?>
<?php if ($logoWithUsername && $logoWithUsername->hasAppearanceFile()) : ?>
<?= Html::a(
Html::img(
Url::to($logoWithUsername->getLogoFileUrl()),
[
'class' => 'logo-with-username',
'alt' => Yii::t('header/logo', 'Подпись логотип портала, для неавторизованных пользователей на странице авторизации: `Логотип портала, для неавторизованных пользователей`')
]
),
'#',
['class' => 'navbar-brand li-like-padding nav-logo']
); ?>
<?php endif; ?>
<?php endif; ?>
<?php if (!$isGuest && isset(Yii::$app->user->identity)) : ?>
<?php $isStudent = Yii::$app->user->identity->isInRole(User::ROLE_STUDENT);
$isTeacher = Yii::$app->user->identity->isInRole(User::ROLE_TEACHER); ?>
<?php if ($isStudent || $isTeacher) : ?>
<?php if ($isStudent) {
$url = Url::toRoute(['/student/index']);
} elseif ($isTeacher) {
$url = Url::toRoute(['/teacher/index']);
} ?>
<?= Html::a(
Yii::t(
'header/btns',
'Подпись кнопки перехода на главную страницу для студента: `На главную`'
),
$url,
['class' => 'navbar-brand li-like-padding']
); ?>
<?php elseif ($isAbit) : ?>
<?= Html::a(
Yii::$app->user->identity->getPublicIdentity(),
Url::toRoute(['/']),
['class' => 'navbar-brand li-like-padding']
); ?>
<?php endif; ?>
<?php endif; ?>
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#user-tabs" aria-controls="user-tabs" aria-expanded="false">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse collapse-border" id="user-tabs">
<ul class="nav navbar-nav ml-auto">
<?php if (!$isGuest) : ?>
<?php if (!$isAbit) : ?>
<li class="nav-item">
<?= Html::a(
Yii::$app->user->identity->getPublicIdentity(),
Url::toRoute(['/']),
['class' => 'nav-link']
); ?>
</li>
<li class="nav-item dropdown-divider"></li>
<?php endif; ?>
<?php if (!empty($languages)) : ?>
<li class="nav-item dropdown">
<?= Html::a(
Yii::t('header/language-btn', 'Надпись на кнопке переключающей язык интерфейса: `Язык`'),
'#',
[
'role' => 'button',
'aria-haspopup' => 'true',
'aria-expanded' => 'false',
'data-toggle' => 'dropdown',
'class' => 'dropdown-toggle nav-bar-background-color nav-link',
]
); ?>
<ul class="dropdown-menu nav-bar-background-color">
<?php foreach ($languages as $language => $alias) : ?>
<li class="nav-bar-background-color">
<?= Html::a(
$alias,
Url::toRoute(['/site/set-locale', 'language' => $language])
); ?>
</li>
<?php endforeach; ?>
</ul>
</li>
<li class="nav-item dropdown-divider"></li>
<?php endif; ?>
<?php if (
(Yii::$app->user->can(User::ROLE_STUDENT) ||
Yii::$app->user->can(User::ROLE_TEACHER)
) &&
!Yii::$app->user->can(User::ROLE_MANAGER)
) : ?>
<li class="nav-item dropdown">
<?= Html::a(
Yii::t('header/btns', 'Подпись кнопки перехода на страницу с настройками профиля: `Настройки`'),
'#',
[
'role' => 'button',
'aria-haspopup' => 'true',
'aria-expanded' => 'false',
'data-toggle' => 'dropdown',
'class' => 'dropdown-toggle nav-bar-background-color nav-link',
]
); ?>
<ul class="dropdown-menu nav-bar-background-color">
<li class="nav-bar-background-color">
<?= Html::a(
Yii::t(
'header/btns',
'Подпись кнопки перехода на страницу смены пароля: `Сменить пароль`'
),
Url::toRoute(['/user/sign-in/change-password'])
); ?>
</li>
</ul>
</li>
<li class="nav-item dropdown-divider"></li>
<?php endif; ?>
<li class="nav-item">
<?= Html::a(
Yii::t(
'header/btns',
'Подпись кнопки выхода из аккаунта: `Выход`'
),
Url::toRoute(['/user/sign-in/logout']),
['class' => 'nav-link']
); ?>
</li>
<?php elseif ($isGuest) : ?>
<li class="nav-item">
<?= Html::a(
Yii::t(
'header/btns',
'Подпись кнопки перехода на странице авторизации: `Вход`'
),
Url::toRoute(['/user/sign-in/login']),
['class' => 'navbar-brand li-like-padding nav-link']
); ?>
</li>
<?php endif; ?>
</ul>
</div>
</nav>
<?php $this->beginBody(); ?>
<?= $content ?>
<?php $this->endBody(); ?>
</body>
</html>
<?php $this->endPage();