Обновление панели аутентификации и отображения товаров в заказах
This commit is contained in:
parent
8270eaed11
commit
d087256181
|
@ -99,9 +99,9 @@ $config = [
|
||||||
'profile/geolocation/<action:(init)>' => 'profile/geolocation-<action>',
|
'profile/geolocation/<action:(init)>' => 'profile/geolocation-<action>',
|
||||||
'orders' => 'order/index',
|
'orders' => 'order/index',
|
||||||
'orders/<type:[^/]+>' => 'order/index',
|
'orders/<type:[^/]+>' => 'order/index',
|
||||||
'orders/<_key:[^/]+>/<action:(accept)>' => 'order/<action>',
|
'orders/<catn:[^/]+>/<action:(accept)>' => 'order/<action>',
|
||||||
'orders/supply/<_key:[^/]+>/<action:(read|write|edit|delete)>' => 'order/supply-<action>',
|
'orders/supply/<catn:[^/]+>/<action:(read|write|edit|delete)>' => 'order/supply-<action>',
|
||||||
'orders/supply/<_key:[^/]+>/<action:(read|write|edit|delete)>/<target:(stts|cost|time|comm)>' => 'order/supply-<action>-<target>',
|
'orders/supply/<catn:[^/]+>/<action:(read|write|edit|delete)>/<target:(stts|cost|time|comm)>' => 'order/supply-<action>-<target>',
|
||||||
'invoices/<order:[^/]+>' => 'invoice/index',
|
'invoices/<order:[^/]+>' => 'invoice/index',
|
||||||
'invoices/<order:[^/]+>/<action:(download)>' => 'invoice/<action>',
|
'invoices/<order:[^/]+>/<action:(download)>' => 'invoice/<action>',
|
||||||
'verify/send' => 'verify/send',
|
'verify/send' => 'verify/send',
|
||||||
|
|
|
@ -44,11 +44,14 @@ class AuthenticationController extends Controller
|
||||||
|
|
||||||
// Фильтрация
|
// Фильтрация
|
||||||
$target = match ($target) {
|
$target = match ($target) {
|
||||||
'menu' => 'menu',
|
'panel' => 'panel',
|
||||||
'main' => 'main',
|
'main' => 'main',
|
||||||
default => 'main'
|
default => 'main'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Рендер для всплывающей панели
|
||||||
|
$panel = $target === 'panel';
|
||||||
|
|
||||||
if (yii::$app->request->isPost) {
|
if (yii::$app->request->isPost) {
|
||||||
// AJAX-POST-запрос
|
// AJAX-POST-запрос
|
||||||
|
|
||||||
|
@ -72,15 +75,13 @@ class AuthenticationController extends Controller
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$notifications_button = $this->renderPartial('/notification/button');
|
$notifications_button = $this->renderPartial('/notification/button');
|
||||||
$notifications_panel_full = true;
|
$notifications_panel = $this->renderPartial('/notification/panel', ['notifications_panel_full' => true]);
|
||||||
$notifications_panel = $this->renderPartial('/notification/panel', compact('notifications_panel_full'));
|
|
||||||
|
|
||||||
// Запись ответа
|
// Запись ответа
|
||||||
$return = [
|
$return = [
|
||||||
$target => $this->renderPartial('/account/panel/authenticated', compact(
|
'menu' => $this->renderPartial('/account/panel/authenticated', compact(
|
||||||
'notifications_button',
|
'notifications_button',
|
||||||
'notifications_panel',
|
'notifications_panel'
|
||||||
'notifications_panel_full'
|
|
||||||
)),
|
)),
|
||||||
'_csrf' => yii::$app->request->getCsrfToken()
|
'_csrf' => yii::$app->request->getCsrfToken()
|
||||||
];
|
];
|
||||||
|
@ -131,7 +132,7 @@ class AuthenticationController extends Controller
|
||||||
yii::$app->response->statusCode = 400;
|
yii::$app->response->statusCode = 400;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
$target => $this->renderPartial('/account/index', compact('model')),
|
$target => $this->renderPartial('/account/index', compact('model', 'panel')),
|
||||||
'redirect' => '/authentication',
|
'redirect' => '/authentication',
|
||||||
'_csrf' => yii::$app->request->getCsrfToken()
|
'_csrf' => yii::$app->request->getCsrfToken()
|
||||||
];
|
];
|
||||||
|
@ -141,7 +142,7 @@ class AuthenticationController extends Controller
|
||||||
if (!yii::$app->user->isGuest) {
|
if (!yii::$app->user->isGuest) {
|
||||||
yii::$app->response->redirect('/');
|
yii::$app->response->redirect('/');
|
||||||
} else {
|
} else {
|
||||||
return $this->render('/account/index');
|
return $this->render('/account/index', compact('model', 'panel'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ use app\models\connection\Dellin;
|
||||||
use app\models\Invoice;
|
use app\models\Invoice;
|
||||||
use app\models\Notification;
|
use app\models\Notification;
|
||||||
use app\models\Settings;
|
use app\models\Settings;
|
||||||
|
use app\models\Supply;
|
||||||
use app\models\SupplyEdgeProduct;
|
use app\models\SupplyEdgeProduct;
|
||||||
|
|
||||||
use Codeception\PHPUnit\ResultPrinter\HTML;
|
use Codeception\PHPUnit\ResultPrinter\HTML;
|
||||||
|
@ -561,15 +562,20 @@ class OrderController extends Controller
|
||||||
/**
|
/**
|
||||||
* Чтение инстанции поставки в заказе (order_edge_supply)
|
* Чтение инстанции поставки в заказе (order_edge_supply)
|
||||||
*
|
*
|
||||||
* @param int $_key Ключ записи в коллекции order_edge_supply
|
* @param string $catn Артикул поставки
|
||||||
*
|
*
|
||||||
* @return string|array|null
|
* @return string|array|null
|
||||||
*/
|
*/
|
||||||
public function actionSupplyRead(int $_key): string|array|null
|
public function actionSupplyRead(string $catn): string|array|null
|
||||||
{
|
{
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$buffer = [];
|
$buffer = [];
|
||||||
|
|
||||||
|
if ($supply = OrderEdgeSupply::searchBySupplyCatn($catn)) {
|
||||||
|
// Удалось найти инстанцию поставки
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if ($order_edge_supply = OrderEdgeSupply::searchById($_id = OrderEdgeSupply::collectionName() . '/' . $_key)) {
|
if ($order_edge_supply = OrderEdgeSupply::searchById($_id = OrderEdgeSupply::collectionName() . '/' . $_key)) {
|
||||||
// Удалось найти инстанцию поставки
|
// Удалось найти инстанцию поставки
|
||||||
|
|
||||||
|
@ -661,17 +667,24 @@ class OrderController extends Controller
|
||||||
/**
|
/**
|
||||||
* Запись статуса поставки в заказе (order_edge_supply)
|
* Запись статуса поставки в заказе (order_edge_supply)
|
||||||
*
|
*
|
||||||
* @param int $_key Ключ записи в коллекции order_edge_supply
|
* @param string $catn Артикул поставки
|
||||||
*
|
*
|
||||||
* @return string|array|null
|
* @return string|array|null
|
||||||
*/
|
*/
|
||||||
public function actionSupplyWriteStts(int $_key): string|array|null
|
public function actionSupplyWriteStts(string $catn): string|array|null
|
||||||
{
|
{
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$stts = yii::$app->request->post('stts') ?? yii::$app->request->get('stts');
|
$stts = yii::$app->request->post('stts') ?? yii::$app->request->get('stts') ?? '';
|
||||||
$buffer = [];
|
$buffer = [];
|
||||||
|
|
||||||
if ($order_edge_supply = OrderEdgeSupply::searchById($_id = OrderEdgeSupply::collectionName() . '/' . $_key)) {
|
if ($supply = OrderEdgeSupply::searchBySupplyCatn($_id = Supply::collectionName() . '/' . $catn)) {
|
||||||
|
// Удалось найти инстанцию поставки
|
||||||
|
|
||||||
|
var_dump($supply);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($order_edge_supply = OrderEdgeSupply::searchById($_id = OrderEdgeSupply::collectionName() . '/' . $catn)) {
|
||||||
// Удалось найти инстанцию поставки
|
// Удалось найти инстанцию поставки
|
||||||
|
|
||||||
// Запись в буфер изначальных данных
|
// Запись в буфер изначальных данных
|
||||||
|
@ -711,17 +724,17 @@ class OrderController extends Controller
|
||||||
/**
|
/**
|
||||||
* Запись цены поставки в заказе (order_edge_supply)
|
* Запись цены поставки в заказе (order_edge_supply)
|
||||||
*
|
*
|
||||||
* @param int $_key Ключ записи в коллекции order_edge_supply
|
* @param string $catn Артикул поставки
|
||||||
*
|
*
|
||||||
* @return string|array|null
|
* @return string|array|null
|
||||||
*/
|
*/
|
||||||
public function actionSupplyEditCost(int $_key): string|array|null
|
public function actionSupplyEditCost(int $catn): string|array|null
|
||||||
{
|
{
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$cost = yii::$app->request->post('cost') ?? yii::$app->request->get('cost');
|
$cost = yii::$app->request->post('cost') ?? yii::$app->request->get('cost');
|
||||||
$buffer = [];
|
$buffer = [];
|
||||||
|
|
||||||
if ($order_edge_supply = OrderEdgeSupply::searchById($_id = OrderEdgeSupply::collectionName() . '/' . $_key)) {
|
if ($order_edge_supply = OrderEdgeSupply::searchById($_id = OrderEdgeSupply::collectionName() . '/' . $catn)) {
|
||||||
// Удалось найти инстанцию поставки
|
// Удалось найти инстанцию поставки
|
||||||
|
|
||||||
// Запись в буфер изначальных данных
|
// Запись в буфер изначальных данных
|
||||||
|
|
|
@ -19,16 +19,24 @@ class RegistrationController extends Controller
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$model = new AccountForm(yii::$app->request->post('AccountForm') ?? yii::$app->request->get('AccountForm'));
|
$model = new AccountForm(yii::$app->request->post('AccountForm') ?? yii::$app->request->get('AccountForm'));
|
||||||
$type = yii::$app->request->post('type') ?? yii::$app->request->get('type');
|
$type = yii::$app->request->post('type') ?? yii::$app->request->get('type');
|
||||||
|
$target = yii::$app->request->post('target') ?? yii::$app->request->get('target');
|
||||||
$model->scenario = $model::SCENARIO_REGISTRATION;
|
$model->scenario = $model::SCENARIO_REGISTRATION;
|
||||||
|
|
||||||
|
// Фильтрация
|
||||||
|
$target = match ($target) {
|
||||||
|
'panel' => 'panel',
|
||||||
|
'main' => 'main',
|
||||||
|
default => 'main'
|
||||||
|
};
|
||||||
|
|
||||||
|
// Рендер для всплывающей панели
|
||||||
|
$panel = $target === 'panel';
|
||||||
|
|
||||||
if (yii::$app->request->isPost) {
|
if (yii::$app->request->isPost) {
|
||||||
// POST-запрос
|
// POST-запрос
|
||||||
|
|
||||||
yii::$app->response->format = Response::FORMAT_JSON;
|
yii::$app->response->format = Response::FORMAT_JSON;
|
||||||
|
|
||||||
// Валидация формы
|
|
||||||
if (!empty($errors = ActiveForm::validate($model))) return $errors;
|
|
||||||
|
|
||||||
if ($type === 'registration' && (!yii::$app->user->isGuest || $model->registration())) {
|
if ($type === 'registration' && (!yii::$app->user->isGuest || $model->registration())) {
|
||||||
// Данные прошли проверку и аккаунт был создан
|
// Данные прошли проверку и аккаунт был создан
|
||||||
|
|
||||||
|
@ -43,7 +51,7 @@ class RegistrationController extends Controller
|
||||||
$model->scenario = $model::SCENARIO_REGISTRATION;
|
$model->scenario = $model::SCENARIO_REGISTRATION;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'main' => $this->renderPartial('/account/index', compact('model') + ['registration' => true]),
|
$target => $this->renderPartial('/account/index', compact('model', 'panel') + ['registration' => true]),
|
||||||
'redirect' => '/registration',
|
'redirect' => '/registration',
|
||||||
'_csrf' => yii::$app->request->getCsrfToken()
|
'_csrf' => yii::$app->request->getCsrfToken()
|
||||||
];
|
];
|
||||||
|
@ -51,8 +59,7 @@ class RegistrationController extends Controller
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$notifications_button = $this->renderPartial('/notification/button');
|
$notifications_button = $this->renderPartial('/notification/button');
|
||||||
$notifications_panel_full = true;
|
$notifications_panel = $this->renderPartial('/notification/panel', ['notifications_panel_full' => true]);
|
||||||
$notifications_panel = $this->renderPartial('/notification/panel', compact('notifications_panel_full'));
|
|
||||||
|
|
||||||
// Запись ответа
|
// Запись ответа
|
||||||
$return = [
|
$return = [
|
||||||
|
@ -108,7 +115,7 @@ class RegistrationController extends Controller
|
||||||
yii::$app->response->statusCode = 400;
|
yii::$app->response->statusCode = 400;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'main' => $this->renderPartial('/account/index', compact('model') + ['registration' => true]),
|
$target => $this->renderPartial('/account/index', compact('model', 'panel') + ['registration' => true]),
|
||||||
'redirect' => '/registration',
|
'redirect' => '/registration',
|
||||||
'_csrf' => yii::$app->request->getCsrfToken()
|
'_csrf' => yii::$app->request->getCsrfToken()
|
||||||
];
|
];
|
||||||
|
@ -118,7 +125,7 @@ class RegistrationController extends Controller
|
||||||
if (!yii::$app->user->isGuest) {
|
if (!yii::$app->user->isGuest) {
|
||||||
yii::$app->response->redirect('/');
|
yii::$app->response->redirect('/');
|
||||||
} else {
|
} else {
|
||||||
return $this->render('/account/index', compact('model') + ['registration' => true]);
|
return $this->render('/account/index', compact('model', 'panel') + ['registration' => true]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -337,6 +337,17 @@ class Order extends Document implements DocumentInterface
|
||||||
return $limit === 1 ? $return[0] ?? null : $return;
|
return $limit === 1 ? $return[0] ?? null : $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Объеденить дубликаты поставок
|
||||||
|
// *
|
||||||
|
// * @return array Данные заказа
|
||||||
|
// */
|
||||||
|
// public function mergeDuplicateSupplies(array $order): array {
|
||||||
|
// foreach ($orders as $order) {
|
||||||
|
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Поиск содержимого заказа
|
* Поиск содержимого заказа
|
||||||
*
|
*
|
||||||
|
@ -444,6 +455,7 @@ class Order extends Document implements DocumentInterface
|
||||||
foreach ($connections as &$connection_for_check) {
|
foreach ($connections as &$connection_for_check) {
|
||||||
if ($connection == $connection_for_check) {
|
if ($connection == $connection_for_check) {
|
||||||
// Найден дубликат
|
// Найден дубликат
|
||||||
|
|
||||||
// Запись в реестр
|
// Запись в реестр
|
||||||
$registry[$key] = [
|
$registry[$key] = [
|
||||||
'catn' => $connection_for_check['supply']['catn'],
|
'catn' => $connection_for_check['supply']['catn'],
|
||||||
|
@ -456,7 +468,6 @@ class Order extends Document implements DocumentInterface
|
||||||
$connection['amount'] = count($connection['order_edge_supply']);
|
$connection['amount'] = count($connection['order_edge_supply']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Инициализация дополнительных данных
|
// Инициализация дополнительных данных
|
||||||
foreach ($connections as $key => &$connection) {
|
foreach ($connections as $key => &$connection) {
|
||||||
// Перебор поставок
|
// Перебор поставок
|
||||||
|
@ -620,6 +631,27 @@ class Order extends Document implements DocumentInterface
|
||||||
return $connections;
|
return $connections;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверка на то, что все поставки подтверждены
|
||||||
|
*
|
||||||
|
* @param array $order_edge_supply Поставки
|
||||||
|
*
|
||||||
|
* @return bool Статус подтверждения всех поставок (true если все и false если хотя бы одна из них не подтверждена)
|
||||||
|
*/
|
||||||
|
public static function checkSuppliesStts(array $order_edge_supply): bool {
|
||||||
|
foreach ($order_edge_supply as $edge) {
|
||||||
|
// Перебор поставок
|
||||||
|
|
||||||
|
if (empty($edge['stts']) || $edge['stts'] !== 'accepted') {
|
||||||
|
// Найдена неподтверждённая поставка
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return DocumentInterface[]
|
* @return DocumentInterface[]
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -19,12 +19,12 @@ use app\models\AccountForm;
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// Инициализация идентификатора формы
|
// Инициализация идентификатора формы
|
||||||
if ($isPopupMenu ?? false) {
|
if ($panel ?? false) {
|
||||||
// Генерация документа во всплывающем меню
|
// Генерация документа во всплывающем меню
|
||||||
|
|
||||||
// Инициализация параметров
|
// Инициализация параметров
|
||||||
$form_id = 'form_account_menu';
|
$form_id = 'form_account_panel';
|
||||||
$target = 'menu';
|
$target = 'panel';
|
||||||
} else {
|
} else {
|
||||||
// Генерация документа в основном блоке страницы
|
// Генерация документа в основном блоке страницы
|
||||||
|
|
||||||
|
@ -54,21 +54,21 @@ use app\models\AccountForm;
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<?php if ($registration ?? false) : ?>
|
<?php if ($registration ?? false) : ?>
|
||||||
<?php if ($isPopupMenu ?? false) : ?>
|
<?php if ($panel ?? false) : ?>
|
||||||
<h5 class="mb-4 text-center">Регистрация</h5>
|
<h5 class="mb-4 text-center">Регистрация</h5>
|
||||||
<?php else : ?>
|
<?php else : ?>
|
||||||
<h3 class="mb-4 text-center">Регистрация</h3>
|
<h3 class="mb-4 text-center">Регистрация</h3>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
<?php else : ?>
|
<?php else : ?>
|
||||||
<?php if ($isPopupMenu ?? false) : ?>
|
<?php if ($panel ?? false) : ?>
|
||||||
<h5 class="mb-4 text-center">Аутентификация</h5>
|
<h5 class="mb-4 text-center">Аутентификация</h5>
|
||||||
<?php else : ?>
|
<?php else : ?>
|
||||||
<h3 class="mb-4 text-center">Аутентификация</h3>
|
<h3 class="mb-4 text-center">Аутентификация</h3>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
|
||||||
<?= $form->field($model, 'mail', ['enableLabel' => false, 'options' => ['class' => 'mb-2'], 'errorOptions' => ['class' => 'help-block help-block-error px-2 small']])->textInput(['autofocus' => true, 'placeholder' => $model->getAttributeLabel('mail')]) ?>
|
<?= $form->field($model, 'mail', ['enableLabel' => false, 'options' => ['class' => 'mb-2'], 'inputOptions' => ['class' => 'form-control button_clean', 'errorOptions' => ['class' => 'help-block help-block-error px-2 small']]])->textInput(['autofocus' => true, 'placeholder' => $model->getAttributeLabel('mail')]) ?>
|
||||||
<?= $form->field($model, 'pswd', ['enableLabel' => false, 'errorOptions' => ['class' => 'help-block help-block-error px-2 small']])->passwordInput(['placeholder' => $model->getAttributeLabel('pswd')]) ?>
|
<?= $form->field($model, 'pswd', ['enableLabel' => false, 'inputOptions' => ['class' => 'form-control button_clean'], 'errorOptions' => ['class' => 'help-block help-block-error px-2 small']])->passwordInput(['placeholder' => $model->getAttributeLabel('pswd')]) ?>
|
||||||
|
|
||||||
<div class="d-flex mb-2 mt-4">
|
<div class="d-flex mb-2 mt-4">
|
||||||
<?= Html::submitButton('Войти', ['name' => 'submitAuthentication', 'onclick' => 'authentication(this.parentElement.parentElement, \'' . $target . '\');', 'class' => 'flex-grow-1 mr-2 btn btn-primary button_clean']) ?>
|
<?= Html::submitButton('Войти', ['name' => 'submitAuthentication', 'onclick' => 'authentication(this.parentElement.parentElement, \'' . $target . '\');', 'class' => 'flex-grow-1 mr-2 btn btn-primary button_clean']) ?>
|
||||||
|
@ -77,7 +77,7 @@ use app\models\AccountForm;
|
||||||
'{endLabel}</div>'])->checkbox()->label($model->getAttributeLabel('auto'), ['class' => 'w-100 m-0']) ?>
|
'{endLabel}</div>'])->checkbox()->label($model->getAttributeLabel('auto'), ['class' => 'w-100 m-0']) ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?= Html::submitButton('Регистрация', ['name' => 'submitRegistration', 'onclick' => 'return registration_start(this.parentElement);', 'class' => 'col-12 ml-auto btn btn-success btn-sm button_clean']) ?>
|
<?= Html::submitButton('Регистрация', ['name' => 'submitRegistration', 'onclick' => 'return registration_start(this.parentElement, \'' . $target . '\');', 'class' => 'col-12 ml-auto btn btn-success btn-sm button_clean']) ?>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
@ -90,18 +90,29 @@ use app\models\AccountForm;
|
||||||
|
|
||||||
<?php if ($registration ?? false) : ?>
|
<?php if ($registration ?? false) : ?>
|
||||||
<script defer>
|
<script defer>
|
||||||
if (document.readyState === "complete") {
|
// Инициализация формы
|
||||||
let form = document.getElementById('<?= $form_id ?>');
|
let form = document.getElementById('<?= $form_id ?>');
|
||||||
|
|
||||||
|
// Запуск программы регистрации
|
||||||
|
registration_start(form, 'panel');
|
||||||
|
|
||||||
|
if (document.readyState === "complete") {
|
||||||
|
// Документ загружен
|
||||||
|
|
||||||
|
// Обработчик события инициализации
|
||||||
$(form).on('afterInit', function(e) {
|
$(form).on('afterInit', function(e) {
|
||||||
registration_start(form);
|
// Запуск программы регистрации
|
||||||
|
registration_start(form, 'panel');
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
// Документ не загружен
|
||||||
let form = document.getElementById('<?= $form_id ?>');
|
|
||||||
|
|
||||||
|
// Обработчик события загрузки документа
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
// Обработчик события инициализации
|
||||||
$(form).on('afterInit', function(e) {
|
$(form).on('afterInit', function(e) {
|
||||||
registration_start(form);
|
// Запуск программы регистрации
|
||||||
|
registration_start(form, 'panel');
|
||||||
});
|
});
|
||||||
}, false);
|
}, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,8 @@ use yii;
|
||||||
<a class="text-dark my-auto mr-2" title="Заказы" href="/orders" role="button" onclick="return page_orders();"><i class="fas fa-list mx-2"></i></a>
|
<a class="text-dark my-auto mr-2" title="Заказы" href="/orders" role="button" onclick="return page_orders();"><i class="fas fa-list mx-2"></i></a>
|
||||||
<div class="btn-group my-auto">
|
<div class="btn-group my-auto">
|
||||||
<a class="btn m-0 px-0 text-dark button_clean" title="Личный кабинет" href="/profile" role="button" onclick="return page_profile();"><b><?= yii::$app->user->identity->mail ?></b></a>
|
<a class="btn m-0 px-0 text-dark button_clean" title="Личный кабинет" href="/profile" role="button" onclick="return page_profile();"><b><?= yii::$app->user->identity->mail ?></b></a>
|
||||||
<button id="profile_button" class="btn button_clean_full pr-0 dropdown-toggle dropdown-toggle-split button_clean" type="button" data-toggle="dropdown" onmouseover="$('#profile_button').dropdown('show')"></button>
|
<button id="menu_auth_panel_button" class="pr-0 btn button_clean button_clean_full" type="button" onclick="return deauthentication();" title="Выход"><i class="fas fa-sign-out-alt"></i></button>
|
||||||
<div id="profile_button_panel" class="dropdown-menu dropdown-menu-right py-1" aria-labelledby="profile_button" onmouseout="$('#profile_button').dropdown('show')">
|
<!-- <div id="menu_auth_panel" class="py-1 text-center d-none">
|
||||||
<a class="dropdown-item button_white text-dark" onclick="deauthentication()">Выход (<?= yii::$app->user->identity->mail ?>)</a>
|
<a class="py-1 px-3 d-block button_white text-dark" onclick="return deauthentication();"><b>Выход</b></a>
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -11,10 +11,9 @@ use app\models\helpers\JsManager;
|
||||||
<a class="text-dark my-auto mr-2" title="Заказы" href="/orders" role="button" onclick="return page_orders();"><i class="fas fa-list mx-2"></i></a>
|
<a class="text-dark my-auto mr-2" title="Заказы" href="/orders" role="button" onclick="return page_orders();"><i class="fas fa-list mx-2"></i></a>
|
||||||
<div class="btn-group my-auto">
|
<div class="btn-group my-auto">
|
||||||
<a class="btn m-0 px-0 text-dark button_clean" title="Личный кабинет" href="/profile" role="button" onclick="return page_profile();">Личный кабинет</a>
|
<a class="btn m-0 px-0 text-dark button_clean" title="Личный кабинет" href="/profile" role="button" onclick="return page_profile();">Личный кабинет</a>
|
||||||
<button id="profile_button" class="btn pr-0 dropdown-toggle dropdown-toggle-split button_clean" type="button" data-toggle="dropdown" onmouseover="$('#profile_button').dropdown('show')"></button>
|
<button id="menu_auth_panel_button" class="pr-0 btn button_clean button_clean_full" type="button" onmouseover="return menu_auth_panel_show(document.getElementById('menu_auth_panel'));" onclick="return menu_auth_panel_show(document.getElementById('menu_auth_panel'));"><i class="fas fa-caret-down"></i></button>
|
||||||
<div id="profile_button_panel" class="dropdown-menu dropdown-menu-long dropdown-menu-right p-3" aria-labelledby="profile_button" onmouseout="$('#profile_button').dropdown('show')">
|
<div id="menu_auth_panel" class="p-3 d-none">
|
||||||
<?= yii::$app->controller->renderPartial('/account/index', compact('model') + ['isPopupMenu' => true]) ?>
|
<?= yii::$app->controller->renderPartial('/account/index', compact('model') + ['panel' => true]) ?>
|
||||||
<!-- <a class="dropdown-item-text text-center px-0 py-2" href="#"><small>Восстановление пароля</small></a> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,13 @@
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
use app\models\AccountEdgeOrder;
|
|
||||||
use app\models\OrderEdgeSupply;
|
|
||||||
use yii;
|
use yii;
|
||||||
use yii\bootstrap\ActiveForm;
|
use yii\bootstrap\ActiveForm;
|
||||||
|
|
||||||
|
use app\models\AccountEdgeOrder;
|
||||||
|
use app\models\Order;
|
||||||
|
use app\models\OrderEdgeSupply;
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
if (
|
if (
|
||||||
!yii::$app->user->isGuest
|
!yii::$app->user->isGuest
|
||||||
|
@ -110,18 +112,18 @@ if (
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Инициализация окружения
|
||||||
|
extract($supply);
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<?php foreach ($supply['order_edge_supply'] as $part) : ?>
|
<a id="<?= $supply['catn'] ?>_supply" class="row mb-2 p-2 px-0 rounded row_supply" type="button" onclick="return orders_supply_edit('<?= $supply['catn'] ?>', <?= $order['order']['_key'] ?>);">
|
||||||
<a id="<?= $part['_key'] ?>_supply" class="row p-2 px-0 rounded row_supply" type="button" onclick="return orders_supply_edit('<?= $part['_key'] ?>', <?= $order['order']['_key'] ?>);">
|
|
||||||
<img class="col-auto px-0 h-100 img-fluid rounded" src="<?= $covr ?>" />
|
<img class="col-auto px-0 h-100 img-fluid rounded" src="<?= $covr ?>" />
|
||||||
<p id="<?= $part['_key'] ?>_supply_stts_indicator" class="col d-flex text-dark"><?= $supply['product']['catn'] ?>
|
<p id="<?= $supply['catn'] ?>_supply_stts_indicator" class="col d-flex text-dark"><?= $product['catn'] . ' x' . $amount ?>
|
||||||
<?php if (isset($part['stts']) && $part['stts'] == 1) : ?>
|
<?php if (Order::checkSuppliesStts($order_edge_supply)) : ?>
|
||||||
<span id="<?= $part['_key'] ?>_supply_stts_indicator_icon" class="ml-auto my-auto fas fa-check"></span>
|
<span id="<?= $supply['catn'] ?>_supply_stts_indicator_icon" class="ml-auto my-auto fas fa-check"></span>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
<?php endforeach ?>
|
|
||||||
|
|
||||||
<?php if ($count++ < count($order['supplies'])) : ?>
|
<?php if ($count++ < count($order['supplies'])) : ?>
|
||||||
<div class="dropdown-divider mb-2"></div>
|
<div class="dropdown-divider mb-2"></div>
|
||||||
|
@ -205,9 +207,10 @@ if (
|
||||||
<input id="checkbox_cart_all" type="checkbox" onchange="return cart_list_checkbox(this);" />
|
<input id="checkbox_cart_all" type="checkbox" onchange="return cart_list_checkbox(this);" />
|
||||||
</div> -->
|
</div> -->
|
||||||
<span class="col-2"><b>Артикул</b></span>
|
<span class="col-2"><b>Артикул</b></span>
|
||||||
<span class="col-4"><b>Статус</b></span>
|
<span class="col-3"><b>Статус</b></span>
|
||||||
<span class="col-3"><b>Поступление</b></span>
|
<span class="col-3"><b>Поступление</b></span>
|
||||||
<span class="col-3"><b>Стоимость</b></span>
|
<span class="col-2"><b>Количество</b></span>
|
||||||
|
<span class="col-2"><b>Стоимость</b></span>
|
||||||
</div>
|
</div>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
@ -252,8 +255,8 @@ if (
|
||||||
// Инициализация окружения
|
// Инициализация окружения
|
||||||
extract($supply);
|
extract($supply);
|
||||||
|
|
||||||
foreach ($order_edge_supply as $part) {
|
// Инициализация связи поставки с заказом (подразумевается, что все одинаковые по основным параметрам)
|
||||||
// Перебор связей поставок с заказом
|
$part = $order_edge_supply[0];
|
||||||
|
|
||||||
// Инициализация доставки
|
// Инициализация доставки
|
||||||
if (isset($delivery['error'])) {
|
if (isset($delivery['error'])) {
|
||||||
|
@ -317,11 +320,11 @@ if (
|
||||||
}
|
}
|
||||||
|
|
||||||
// Инициализация статуса связи поставки
|
// Инициализация статуса связи поставки
|
||||||
$status = OrderEdgeSupply::convertStatusToRussian($part['stts'] ?? 0);
|
$status = OrderEdgeSupply::convertStatusToRussian($part['stts'] ?? '');
|
||||||
|
|
||||||
// Инициализация класса для поставки (если необходимо)
|
// Инициализация класса для поставки (если необходимо)
|
||||||
$css = match ($part['stts'] ?? 0) {
|
$css = match ($part['stts'] ?? '') {
|
||||||
'accepted', 1 => ' supply_accepted',
|
'accepted' => ' supply_accepted',
|
||||||
default => ''
|
default => ''
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -329,9 +332,10 @@ if (
|
||||||
$supplies_html .= <<<HTML
|
$supplies_html .= <<<HTML
|
||||||
<div class="row py-2 supply$css text-center">
|
<div class="row py-2 supply$css text-center">
|
||||||
<div class="col-2">{$supply['catn']}</div>
|
<div class="col-2">{$supply['catn']}</div>
|
||||||
<div class="col-4 d-flex"><small class="m-auto">$status</small></div>
|
<div class="col-3 d-flex"><small class="m-auto">$status</small></div>
|
||||||
<div class="col-3 d-flex">$date_html</div>
|
<div class="col-3 d-flex">$date_html</div>
|
||||||
<div class="col-3 d-flex">$cost_html</div>
|
<div class="col-2">$amount</div>
|
||||||
|
<div class="col-2 d-flex">$cost_html</div>
|
||||||
</div>
|
</div>
|
||||||
HTML;
|
HTML;
|
||||||
|
|
||||||
|
@ -339,7 +343,6 @@ if (
|
||||||
$sum += (int) $cost;
|
$sum += (int) $cost;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Инициализация статуса заказа
|
// Инициализация статуса заказа
|
||||||
$status = AccountEdgeOrder::convertStatusToRussian($account_edge_order[0]['type']);
|
$status = AccountEdgeOrder::convertStatusToRussian($account_edge_order[0]['type']);
|
||||||
|
@ -353,9 +356,10 @@ if (
|
||||||
$supplies_html
|
$supplies_html
|
||||||
<div class="row py-2 cart_list_target_total text-center">
|
<div class="row py-2 cart_list_target_total text-center">
|
||||||
<div class="col-2">$invoice</div>
|
<div class="col-2">$invoice</div>
|
||||||
<div class="col-4"><b>$status</b></div>
|
<div class="col-3"><b>$status</b></div>
|
||||||
<div class="col-3"><b>$date</b></div>
|
<div class="col-3"><b>$date</b></div>
|
||||||
<div class="col-3"><b>$sum <small><b>руб</b></small></b></div>
|
<div class="col-2"></div>
|
||||||
|
<div class="col-2"><b>$sum <small><b>руб</b></small></b></div>
|
||||||
</div>
|
</div>
|
||||||
HTML;
|
HTML;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,16 +7,15 @@ nav {
|
||||||
height: max-content;
|
height: max-content;
|
||||||
}
|
}
|
||||||
|
|
||||||
#profile_button+.dropdown-menu-long {
|
#menu_auth_panel_button+#menu_auth_panel {
|
||||||
|
z-index: 9999;
|
||||||
|
top: 100%;
|
||||||
|
right: 0;
|
||||||
width: 250px;
|
width: 250px;
|
||||||
}
|
position: absolute;
|
||||||
|
background: #fff;
|
||||||
#profile_button+.dropdown-menu #form_account .help-block-error {
|
border: 1px solid #ced4da;
|
||||||
margin-bottom: .5rem;
|
border-radius: 3px;
|
||||||
}
|
|
||||||
|
|
||||||
#profile_button_panel {
|
|
||||||
z-index: 1500;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.h-divider {
|
.h-divider {
|
||||||
|
|
|
@ -54,13 +54,13 @@ function deauthentication() {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
function registration_start(form, type) {
|
function registration_start(form, target = 'main') {
|
||||||
// Инициализация постфикса
|
// // Инициализация постфикса
|
||||||
let postfix = '';
|
// let postfix = '';
|
||||||
|
|
||||||
if (type === 'menu') {
|
// if (target === 'panel') {
|
||||||
postfix = '-menu';
|
// postfix = '-panel';
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Удаление кнопок аутентификации
|
// Удаление кнопок аутентификации
|
||||||
form.children[4].remove();
|
form.children[4].remove();
|
||||||
|
@ -89,7 +89,7 @@ function registration_start(form, type) {
|
||||||
|
|
||||||
|
|
||||||
// Изменение вызываемой функции
|
// Изменение вызываемой функции
|
||||||
registration.setAttribute('onclick', 'return registration_end(this.parentElement);');
|
registration.setAttribute('onclick', 'return registration_end(this.parentElement, \'' + target + '\');');
|
||||||
|
|
||||||
// // Инициализация оболочки поля повтора пароля
|
// // Инициализация оболочки поля повтора пароля
|
||||||
// let password_repeat_wrap = document.createElement('div');
|
// let password_repeat_wrap = document.createElement('div');
|
||||||
|
@ -187,7 +187,7 @@ function registration_start(form, type) {
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
function registration_end(form) {
|
function registration_end(form, target = 'main') {
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$(form).yiiActiveForm('init');
|
$(form).yiiActiveForm('init');
|
||||||
|
|
||||||
|
@ -202,9 +202,14 @@ function registration_end(form) {
|
||||||
form = $(form).serializeArray();
|
form = $(form).serializeArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
form.push({
|
form.push(
|
||||||
|
{
|
||||||
name: 'type',
|
name: 'type',
|
||||||
value: 'registration'
|
value: 'registration'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'target',
|
||||||
|
value: target
|
||||||
});
|
});
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
@ -256,6 +261,42 @@ function account_response(data, status, xhr) {
|
||||||
// reinitialization(main);
|
// reinitialization(main);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
if (data !== undefined) {
|
||||||
|
// Получены данные с сервера
|
||||||
|
|
||||||
|
// Панель
|
||||||
|
if (data.panel !== undefined) {
|
||||||
|
// Данные с панелью переданы
|
||||||
|
|
||||||
|
// Инициализация
|
||||||
|
let panel = document.getElementById('menu_auth_panel');
|
||||||
|
|
||||||
|
if (panel !== null) {
|
||||||
|
// Панель инициализирована
|
||||||
|
|
||||||
|
// Обновление документа
|
||||||
|
panel.innerHTML = data.panel;
|
||||||
|
|
||||||
|
// Реинициализация
|
||||||
|
reinitialization(panel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Меню
|
||||||
|
if (data.menu !== undefined) {
|
||||||
|
// Данные с меню переданы
|
||||||
|
|
||||||
|
// Инициализация
|
||||||
|
let menu = document.getElementsByTagName('menu')[0];
|
||||||
|
|
||||||
|
// Обновление документа
|
||||||
|
menu.innerHTML = data.menu;
|
||||||
|
|
||||||
|
// Реинициализация
|
||||||
|
reinitialization(menu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
main_response(data, status, xhr);
|
main_response(data, status, xhr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,22 +310,6 @@ function account_response_success(data, status, xhr) {
|
||||||
// // Обновление панели поиска
|
// // Обновление панели поиска
|
||||||
// product_search();
|
// product_search();
|
||||||
|
|
||||||
if (data !== undefined) {
|
|
||||||
// Получены данные с сервера
|
|
||||||
|
|
||||||
// Меню
|
|
||||||
if (data.menu !== undefined) {
|
|
||||||
// Инициализация
|
|
||||||
let menu = document.getElementsByTagName('menu')[0];
|
|
||||||
|
|
||||||
// Обновление документа
|
|
||||||
menu.innerHTML = data.menu;
|
|
||||||
|
|
||||||
// Реинициализация
|
|
||||||
reinitialization(menu);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
account_response(data, status, xhr);
|
account_response(data, status, xhr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,11 +66,50 @@ function page_orders() {
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
function notifications() {
|
function menu_auth_panel_show(panel) {
|
||||||
|
if (panel !== undefined) {
|
||||||
|
// Необходимые данные переданы
|
||||||
|
|
||||||
|
// Отображение панели
|
||||||
|
panel.classList.remove('d-none');
|
||||||
|
|
||||||
|
// Возможность скрыть панель при клике вне её
|
||||||
|
function menu_auth_panel_hide_handler(event) {
|
||||||
|
if (panel.contains(event.target)) {
|
||||||
|
// Событие произошло по панели или элементов внутри неё
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
// Событие произошло вне панели
|
||||||
|
|
||||||
|
// Скрыть панель
|
||||||
|
return menu_auth_panel_hide(panel);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Запись обработчика события
|
||||||
|
document.addEventListener('mousedown', menu_auth_panel_hide_handler);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function menu_auth_panel_hide(panel) {
|
||||||
|
if (panel !== undefined) {
|
||||||
|
// Необходимые данные переданы
|
||||||
|
|
||||||
|
// Скрытие панели
|
||||||
|
panel.classList.add('d-none');
|
||||||
|
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
function menu_responce(data, status, xhr) {
|
function menu_responce(data, status, xhr) {
|
||||||
// Обработка ответов
|
// Обработка ответов
|
||||||
|
|
||||||
|
|
|
@ -72,12 +72,13 @@ function orders_supply_edit(supply_key, order_key) {
|
||||||
data: {
|
data: {
|
||||||
'_csrf': yii.getCsrfToken()
|
'_csrf': yii.getCsrfToken()
|
||||||
},
|
},
|
||||||
success: function (data, statu, xhrs) {
|
success: function (data, status, xhr) {
|
||||||
// Удаление индикатора загрузки
|
// Удаление индикатора загрузки
|
||||||
panel.innerHTML = '';
|
panel.innerHTML = '';
|
||||||
|
|
||||||
if (data !== undefined) {
|
if (data !== undefined) {
|
||||||
// Получены данные с сервера
|
// Получены данные с сервера
|
||||||
|
|
||||||
// Идентификатор
|
// Идентификатор
|
||||||
if (document.getElementById(supply.getAttribute('id') + '_id') === null) {
|
if (document.getElementById(supply.getAttribute('id') + '_id') === null) {
|
||||||
// Инициализация контейнера
|
// Инициализация контейнера
|
||||||
|
|
Reference in New Issue