Работа над сайтом 16
This commit is contained in:
parent
177de6b3ef
commit
5f3623a258
|
@ -38,6 +38,7 @@ class AppAsset extends AssetBundle
|
||||||
'https://cdn.jsdelivr.net/bxslider/4.1.1/jquery.bxslider.min.js',
|
'https://cdn.jsdelivr.net/bxslider/4.1.1/jquery.bxslider.min.js',
|
||||||
'https://unpkg.com/cookielib/src/cookie.min.js',
|
'https://unpkg.com/cookielib/src/cookie.min.js',
|
||||||
'https://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU',
|
'https://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU',
|
||||||
|
'js/moment.min.js',
|
||||||
'js/menu.js',
|
'js/menu.js',
|
||||||
'js/main.js',
|
'js/main.js',
|
||||||
'js/account.js',
|
'js/account.js',
|
||||||
|
|
|
@ -39,8 +39,16 @@ class AuthenticationController extends Controller
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$model = new AccountForm(yii::$app->request->post('AccountForm'));
|
$model = new AccountForm(yii::$app->request->post('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_AUTHENTICATION;
|
$model->scenario = $model::SCENARIO_AUTHENTICATION;
|
||||||
|
|
||||||
|
// Фильтрация
|
||||||
|
$target = match ($target) {
|
||||||
|
'menu' => 'menu',
|
||||||
|
'main' => 'main',
|
||||||
|
default => 'main'
|
||||||
|
};
|
||||||
|
|
||||||
if (yii::$app->request->isPost) {
|
if (yii::$app->request->isPost) {
|
||||||
// AJAX-POST-запрос
|
// AJAX-POST-запрос
|
||||||
|
|
||||||
|
@ -48,13 +56,13 @@ class AuthenticationController extends Controller
|
||||||
yii::$app->response->format = Response::FORMAT_JSON;
|
yii::$app->response->format = Response::FORMAT_JSON;
|
||||||
|
|
||||||
// Валидация формы
|
// Валидация формы
|
||||||
if (!empty($errors = ActiveForm::validate($model))) {
|
// if (!empty($errors = ActiveForm::validate($model))) {
|
||||||
|
|
||||||
// Настройка кода ответа
|
// // Настройка кода ответа
|
||||||
yii::$app->response->statusCode = 401;
|
// yii::$app->response->statusCode = 401;
|
||||||
|
|
||||||
return $errors;
|
// return $errors;
|
||||||
};
|
// };
|
||||||
|
|
||||||
if (!yii::$app->user->isGuest || $model->authentication()) {
|
if (!yii::$app->user->isGuest || $model->authentication()) {
|
||||||
// Аккаунт аутентифицирован
|
// Аккаунт аутентифицирован
|
||||||
|
@ -69,7 +77,7 @@ class AuthenticationController extends Controller
|
||||||
|
|
||||||
// Запись ответа
|
// Запись ответа
|
||||||
$return = [
|
$return = [
|
||||||
'menu' => $this->renderPartial('/account/panel/authenticated', compact(
|
$target => $this->renderPartial('/account/panel/authenticated', compact(
|
||||||
'notifications_button',
|
'notifications_button',
|
||||||
'notifications_panel',
|
'notifications_panel',
|
||||||
'notifications_panel_full'
|
'notifications_panel_full'
|
||||||
|
@ -123,7 +131,7 @@ class AuthenticationController extends Controller
|
||||||
yii::$app->response->statusCode = 400;
|
yii::$app->response->statusCode = 400;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'main' => $this->renderPartial('/account/index', compact('model')),
|
$target => $this->renderPartial('/account/index', compact('model')),
|
||||||
'redirect' => '/authentication',
|
'redirect' => '/authentication',
|
||||||
'_csrf' => yii::$app->request->getCsrfToken()
|
'_csrf' => yii::$app->request->getCsrfToken()
|
||||||
];
|
];
|
||||||
|
|
|
@ -30,7 +30,17 @@ class InvoiceController extends Controller
|
||||||
// Инициализация файла
|
// Инициализация файла
|
||||||
$file = YII_PATH_PUBLIC . '/../assets/invoices/' . $order . '/invoice.xlsx';
|
$file = YII_PATH_PUBLIC . '/../assets/invoices/' . $order . '/invoice.xlsx';
|
||||||
|
|
||||||
if (file_exists($file)) return $this->response->sendFile($file);
|
if (file_exists($file)) {
|
||||||
else yii::$app->response->statusCode = 500;
|
// Удалось найти файл
|
||||||
|
|
||||||
|
return $this->response->sendFile($file);
|
||||||
|
} else {
|
||||||
|
// Не удалось найти файл
|
||||||
|
|
||||||
|
// Запись кода ответа
|
||||||
|
yii::$app->response->statusCode = 500;
|
||||||
|
|
||||||
|
return yii::$app->response->redirect('/orders');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,11 +18,13 @@ use app\models\AccountEdgeOrder;
|
||||||
use app\models\connection\Dellin;
|
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\SupplyEdgeProduct;
|
use app\models\SupplyEdgeProduct;
|
||||||
|
|
||||||
use Codeception\PHPUnit\ResultPrinter\HTML;
|
use Codeception\PHPUnit\ResultPrinter\HTML;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use Throwable;
|
||||||
|
|
||||||
class OrderController extends Controller
|
class OrderController extends Controller
|
||||||
{
|
{
|
||||||
|
@ -38,7 +40,6 @@ class OrderController extends Controller
|
||||||
'actions' => [
|
'actions' => [
|
||||||
'index',
|
'index',
|
||||||
'accept',
|
'accept',
|
||||||
'read',
|
|
||||||
'write',
|
'write',
|
||||||
'delete',
|
'delete',
|
||||||
'amount-update',
|
'amount-update',
|
||||||
|
@ -62,13 +63,23 @@ class OrderController extends Controller
|
||||||
|
|
||||||
public function accessDenied()
|
public function accessDenied()
|
||||||
{
|
{
|
||||||
// Инициализация
|
// Инициализация cookie
|
||||||
$cookies = yii::$app->response->cookies;
|
$cookies = yii::$app->response->cookies;
|
||||||
|
|
||||||
|
// Инициализация данных из HTTP-заголовка referrer
|
||||||
|
$referrer = trim(parse_url(yii::$app->request->referrer, PHP_URL_PATH) . '?' . parse_url(yii::$app->request->referrer, PHP_URL_QUERY), '/');
|
||||||
|
|
||||||
|
$redirect = match(yii::$app->request->pathInfo) {
|
||||||
|
'order/write' => $referrer,
|
||||||
|
'order/delete', 'order/amount-update', 'order/request' => 'cart',
|
||||||
|
'order/accept', 'order/supply-read', 'order/supply-write-stts', 'order/supply-edit-time', 'order/supply-edit-cost', 'order/supply-edit-comm' => 'orders',
|
||||||
|
default => yii::$app->request->pathInfo
|
||||||
|
};
|
||||||
|
|
||||||
// Запись cookie с редиректом, который выполнится после авторизации
|
// Запись cookie с редиректом, который выполнится после авторизации
|
||||||
$cookies->add(new Cookie([
|
$cookies->add(new Cookie([
|
||||||
'name' => 'redirect',
|
'name' => 'redirect',
|
||||||
'value' => yii::$app->request->pathInfo
|
'value' => $redirect
|
||||||
]));
|
]));
|
||||||
|
|
||||||
if (yii::$app->request->isPost) {
|
if (yii::$app->request->isPost) {
|
||||||
|
@ -90,11 +101,100 @@ class OrderController extends Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function actionIndex(string $type = 'all')
|
public function actionIndex(string $filter = 'all')
|
||||||
{
|
{
|
||||||
// Инициализация
|
// Инициализация cookie
|
||||||
$orders = Order::search(type: $type, limit: 10, page: 1, select: '{account_edge_order, order}', supplies: true);
|
$cookies = yii::$app->response->cookies;
|
||||||
|
|
||||||
|
// Инициализация фильтра по типу
|
||||||
|
if ($filter === 'last') {
|
||||||
|
// Запрошено использование прошлых данных о фильтрации по типу
|
||||||
|
|
||||||
|
// Чтение сохраненных cookie с данными прошлой фильтрации по типу
|
||||||
|
$filter = $cookies->get('filter');
|
||||||
|
} else {
|
||||||
|
// Запрошена сортировка
|
||||||
|
|
||||||
|
// Запись cookie с данными текущей фильтрации по типу
|
||||||
|
$cookies->add(new Cookie([
|
||||||
|
'name' => 'filter',
|
||||||
|
'value' => $filter
|
||||||
|
]));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Инициализация входных данных
|
||||||
|
$from = yii::$app->request->post('from') ?? yii::$app->request->get('from');
|
||||||
|
$to = yii::$app->request->post('to') ?? yii::$app->request->get('to');
|
||||||
|
|
||||||
|
// Инициализация фильтра по периоду
|
||||||
|
if (!empty($from) && !empty($to) && filter_var($from, FILTER_VALIDATE_INT) && filter_var($to, FILTER_VALIDATE_INT)) {
|
||||||
|
// Данные фильтра по периоду переданы и представляют собой целые числа (подразумевается unixtime)
|
||||||
|
|
||||||
|
// Конвертация типов
|
||||||
|
$from = (int) $from;
|
||||||
|
$to = (int) $to;
|
||||||
|
|
||||||
|
// Запись cookie с данными начала периода
|
||||||
|
$cookies->add(new Cookie([
|
||||||
|
'name' => 'from',
|
||||||
|
'value' => $from
|
||||||
|
]));
|
||||||
|
|
||||||
|
// Запись cookie с данными окончания периода
|
||||||
|
$cookies->add(new Cookie([
|
||||||
|
'name' => 'to',
|
||||||
|
'value' => $to
|
||||||
|
]));
|
||||||
|
} else {
|
||||||
|
// Некоректные данные или их отсутствие
|
||||||
|
|
||||||
|
// Чтение сохраненных cookie с данными прошлой фильтрации по периоду (начало)
|
||||||
|
$from = $cookies->get('from');
|
||||||
|
|
||||||
|
// Чтение сохраненных cookie с данными прошлой фильтрации по периоду (конец)
|
||||||
|
$to = $cookies->get('to');
|
||||||
|
|
||||||
|
if (empty($from) || empty($to) || filter_var($from, FILTER_VALIDATE_INT) || filter_var($to, FILTER_VALIDATE_INT)) {
|
||||||
|
// Каких-то cookie не оказалось, либо данные в них не подходящие, либо это первый запрос, но без фильтрации по периоду
|
||||||
|
|
||||||
|
// Реинициализация на стандартные параметры (неделя)
|
||||||
|
$from = time() - 604800;
|
||||||
|
$to = time();
|
||||||
|
} else {
|
||||||
|
// Данные в cookie найдены и подходят для выполнения
|
||||||
|
|
||||||
|
// Конвертация типов
|
||||||
|
$from = (int) $from;
|
||||||
|
$to = (int) $to;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Инициализация заказов
|
||||||
|
$orders = Order::search(
|
||||||
|
type: $filter,
|
||||||
|
limit: 10,
|
||||||
|
page: 1,
|
||||||
|
select: '{account_edge_order, order}',
|
||||||
|
supplies: true,
|
||||||
|
from: $from,
|
||||||
|
to: $to
|
||||||
|
);
|
||||||
|
|
||||||
|
if (
|
||||||
|
!yii::$app->user->isGuest
|
||||||
|
&& yii::$app->user->identity->type === 'administrator'
|
||||||
|
|| yii::$app->user->identity->type === 'moderator'
|
||||||
|
) {
|
||||||
|
// Пользователь имеет доступ
|
||||||
|
|
||||||
|
// Инициализация заказов для модератора
|
||||||
$moderator_orders = self::genOrdersForModeration();
|
$moderator_orders = self::genOrdersForModeration();
|
||||||
|
} else {
|
||||||
|
// Пользователь не имеет доступ
|
||||||
|
|
||||||
|
// Инициализация заглушки
|
||||||
|
$moderator_orders = null;
|
||||||
|
}
|
||||||
|
|
||||||
if (yii::$app->request->isPost) {
|
if (yii::$app->request->isPost) {
|
||||||
// POST-запрос
|
// POST-запрос
|
||||||
|
@ -102,8 +202,12 @@ class OrderController extends Controller
|
||||||
// Настройка
|
// Настройка
|
||||||
yii::$app->response->format = Response::FORMAT_JSON;
|
yii::$app->response->format = Response::FORMAT_JSON;
|
||||||
|
|
||||||
|
// Конвертация из UNIXTIME в формат поддерживаемый календарём по спецификации HTML
|
||||||
|
$from = DateTime::createFromFormat('U', (string) $from)->format('Y-m-d');
|
||||||
|
$to = DateTime::createFromFormat('U', (string) $to)->format('Y-m-d');
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'main' => $this->renderPartial('/orders/index', compact('orders', 'moderator_orders')),
|
'main' => $this->renderPartial('/orders/index', compact('orders', 'moderator_orders', 'from', 'to')),
|
||||||
'title' => 'Заказы',
|
'title' => 'Заказы',
|
||||||
'redirect' => '/orders',
|
'redirect' => '/orders',
|
||||||
'_csrf' => yii::$app->request->getCsrfToken()
|
'_csrf' => yii::$app->request->getCsrfToken()
|
||||||
|
@ -382,6 +486,9 @@ class OrderController extends Controller
|
||||||
if ($edge->update()) {
|
if ($edge->update()) {
|
||||||
// Удалось сохранить изменения
|
// Удалось сохранить изменения
|
||||||
|
|
||||||
|
// Запись в журнал
|
||||||
|
$model->journal('requested');
|
||||||
|
|
||||||
// Инициализация буфера поставок
|
// Инициализация буфера поставок
|
||||||
$supplies = [];
|
$supplies = [];
|
||||||
|
|
||||||
|
@ -412,31 +519,11 @@ class OrderController extends Controller
|
||||||
]
|
]
|
||||||
]));
|
]));
|
||||||
|
|
||||||
// Запись в журнал
|
|
||||||
$model->journal('requested');
|
|
||||||
|
|
||||||
// Отправка уведомлений модераторам
|
// Отправка уведомлений модераторам
|
||||||
Notification::_write($this->renderPartial('/notification/system/orders/new', ['id' => $edge->_key]), true, '@auth', Notification::TYPE_MODERATOR_ORDER_NEW);
|
Notification::_write($this->renderPartial('/notification/system/orders/new', ['id' => $edge->_key]), true, '@auth', Notification::TYPE_MODERATOR_ORDER_NEW);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Инициализация
|
return $this->actionIndex();
|
||||||
$orders = Order::search(type: 'all', limit: 10, page: 1, select: '{account_edge_order, order}', supplies: true);
|
|
||||||
$moderator_orders = self::genOrdersForModeration();
|
|
||||||
|
|
||||||
if (yii::$app->request->isPost) {
|
|
||||||
// POST-запрос
|
|
||||||
|
|
||||||
yii::$app->response->format = Response::FORMAT_JSON;
|
|
||||||
|
|
||||||
return [
|
|
||||||
'main' => $this->renderPartial('/orders/index', compact('orders', 'moderator_orders')),
|
|
||||||
'title' => 'Заказы',
|
|
||||||
'redirect' => '/orders',
|
|
||||||
'_csrf' => yii::$app->request->getCsrfToken()
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->render('/orders/index', compact('orders', 'moderator_orders'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -486,10 +573,23 @@ class OrderController extends Controller
|
||||||
$product = Product::searchBySupplyId($order_edge_supply->_to);
|
$product = Product::searchBySupplyId($order_edge_supply->_to);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// Инициализация данных геолокации
|
||||||
|
try {
|
||||||
|
$from = (int) $account['opts']['delivery_from_terminal'] ?? Settings::search()->delivery_from_default ?? 36;
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$from = (int) Settings::search()->delivery_from_default ?? 36;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$to = (int) yii::$app->user->identity->opts['delivery_to_terminal'] ?? 36;
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$to = 36;
|
||||||
|
}
|
||||||
|
|
||||||
// Инициализация доставки
|
// Инициализация доставки
|
||||||
$delivery = Dellin::calcDeliveryAdvanced(
|
$delivery = Dellin::calcDeliveryAdvanced(
|
||||||
$account['opts']['delivery_from_terminal'],
|
$from,
|
||||||
yii::$app->user->identity->opts['delivery_to_terminal'],
|
$to,
|
||||||
(int) ($product['wght'] ?? 0),
|
(int) ($product['wght'] ?? 0),
|
||||||
(int) ($product['dmns']['x'] ?? 0),
|
(int) ($product['dmns']['x'] ?? 0),
|
||||||
(int) ($product['dmns']['y'] ?? 0),
|
(int) ($product['dmns']['y'] ?? 0),
|
||||||
|
@ -497,13 +597,30 @@ class OrderController extends Controller
|
||||||
avia: $order_edge_supply->dlvr['type'] === 'avia'
|
avia: $order_edge_supply->dlvr['type'] === 'avia'
|
||||||
);
|
);
|
||||||
|
|
||||||
// Рассчет времени
|
// Инициализация даты отправки
|
||||||
try {
|
try {
|
||||||
|
// Взять данные из "arrivalToOspSender" (Дата прибытия на терминал-отправитель)
|
||||||
|
|
||||||
|
$delivery_send_date = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspSender'])->getTimestamp();
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
// Взять данные из "pickup" (Дата передачи груза на адресе отправителя)
|
||||||
|
|
||||||
|
$delivery_send_date = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['pickup'])->getTimestamp();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Инициализация времени доставки
|
||||||
|
try {
|
||||||
|
// Доставка по воздуху (подразумевается), данные из "giveoutFromOspReceiver" (Дата и время, с которого груз готов к выдаче на терминале)
|
||||||
|
|
||||||
$delivery_converted = DateTime::createFromFormat('Y-m-d H:i:s', $delivery['orderDates']['giveoutFromOspReceiver'])->getTimestamp();
|
$delivery_converted = DateTime::createFromFormat('Y-m-d H:i:s', $delivery['orderDates']['giveoutFromOspReceiver'])->getTimestamp();
|
||||||
} catch (Exception $e) {
|
} catch (Throwable $e) {
|
||||||
|
// Автоматическая доставка (подразумевается), данные из "arrivalToOspReceiver" (Дата прибытия натерминал-получатель)
|
||||||
|
|
||||||
$delivery_converted = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspReceiver'])->getTimestamp();
|
$delivery_converted = DateTime::createFromFormat('Y-m-d', $delivery['orderDates']['arrivalToOspReceiver'])->getTimestamp();
|
||||||
}
|
}
|
||||||
$delivery = ceil(($delivery_converted - time()) / 60 / 60 / 24) + 1;
|
|
||||||
|
// Рассчет времени доставки
|
||||||
|
$delivery = ceil(($delivery_converted - ($delivery_send_date ?? 0)) / 60 / 60 / 24) + 1;
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
// var_dump($e->getMessage());
|
// var_dump($e->getMessage());
|
||||||
// var_dump($e->getTrace());
|
// var_dump($e->getTrace());
|
||||||
|
|
|
@ -115,6 +115,7 @@ class ProductController extends Controller
|
||||||
// Товар обновлён
|
// Товар обновлён
|
||||||
|
|
||||||
$return['main'] = $this->renderPartial('index', compact('model'));
|
$return['main'] = $this->renderPartial('index', compact('model'));
|
||||||
|
$return['redirect'] = '/product/' . $model->catn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,10 +132,16 @@ class ProductController extends Controller
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($model = Product::searchByCatn($catn)) {
|
if (Product::searchByCatn($catn)) {
|
||||||
return $this->render('index', compact('model'));
|
// Старый товар ещё существует (подразумевается, что произошла ошибка)
|
||||||
|
|
||||||
|
// Возврат на страницу товара
|
||||||
|
return $this->redirect("/product/$catn");
|
||||||
} else {
|
} else {
|
||||||
return $this->redirect('/');
|
// Старый товар не существует (подразумевается, что его артикул успешно изменён)
|
||||||
|
|
||||||
|
// Переадресация на новую страницу товара
|
||||||
|
return $this->redirect("/product/$model->catn");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,12 @@ class ProfileController extends Controller
|
||||||
'access' => [
|
'access' => [
|
||||||
'class' => AccessControl::class,
|
'class' => AccessControl::class,
|
||||||
'rules' => [
|
'rules' => [
|
||||||
|
[
|
||||||
|
'allow' => true,
|
||||||
|
'actions' => [
|
||||||
|
'geolocation-init'
|
||||||
|
]
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'allow' => true,
|
'allow' => true,
|
||||||
'roles' => ['@'],
|
'roles' => ['@'],
|
||||||
|
@ -37,8 +43,7 @@ class ProfileController extends Controller
|
||||||
'supplies',
|
'supplies',
|
||||||
'import',
|
'import',
|
||||||
'monitoring',
|
'monitoring',
|
||||||
'readGroups',
|
'readGroups'
|
||||||
'geolocation-init'
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
@ -468,8 +473,21 @@ class ProfileController extends Controller
|
||||||
{
|
{
|
||||||
if (Yii::$app->request->isPost) {
|
if (Yii::$app->request->isPost) {
|
||||||
// POST-запрос
|
// POST-запрос
|
||||||
// Инициализация аккаунта
|
|
||||||
$account ?? $account = yii::$app->user->identity;
|
if (is_null($account)) {
|
||||||
|
// Данные аккаунта не переданы
|
||||||
|
|
||||||
|
if (yii::$app->user->isGuest) {
|
||||||
|
// Аккаунт не аутентифицирован
|
||||||
|
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
// Аккаунт аутентифицирован
|
||||||
|
|
||||||
|
// Инициализация
|
||||||
|
$account = yii::$app->user->identity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Инициализация IP-адреса
|
// Инициализация IP-адреса
|
||||||
$ip = yii::$app->request->userIp === 'localhost' || yii::$app->request->userIp === '127.0.0.1' ? '46.226.227.20' : yii::$app->request->userIp;
|
$ip = yii::$app->request->userIp === 'localhost' || yii::$app->request->userIp === '127.0.0.1' ? '46.226.227.20' : yii::$app->request->userIp;
|
||||||
|
@ -509,6 +527,6 @@ class ProfileController extends Controller
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
yii::$app->response->redirect('/');
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,16 +19,59 @@ class VerifyController extends Controller
|
||||||
if (Account::verification($vrfy, auth: true)) {
|
if (Account::verification($vrfy, auth: true)) {
|
||||||
// Успешно подтверждена регистрация
|
// Успешно подтверждена регистрация
|
||||||
|
|
||||||
return $this->redirect('/');
|
return $this->redirect('/profile');
|
||||||
}
|
}
|
||||||
|
|
||||||
return ErrorController::throw('Ошибка подтверждения регистрации', 'Код подтверждения не совпадает с тем, что мы отправили вам на почту, либо регистрация уже была подтверждена. Свяжитесь с администрацией');
|
return ErrorController::throw('Ошибка подтверждения регистрации', 'Код подтверждения не совпадает с тем, что мы отправили вам на почту, либо регистрация уже была подтверждена. Свяжитесь с администрацией');
|
||||||
} else {
|
} else {
|
||||||
// Простой запрос
|
// Простой запрос
|
||||||
|
|
||||||
|
if (yii::$app->user->isGuest) {
|
||||||
|
// Пользователь не аутентифицирован
|
||||||
|
|
||||||
|
return yii::$app->response->redirect('/registration');
|
||||||
|
} else {
|
||||||
|
// Пользователь аутентифицирован
|
||||||
|
|
||||||
|
if (yii::$app->user->identity->vrfy === true) {
|
||||||
|
// Регистрация аккаунта уже подтверждена
|
||||||
|
|
||||||
|
if (yii::$app->request->isPost) {
|
||||||
|
// POST-запрос
|
||||||
|
|
||||||
|
// Запись формата ответа
|
||||||
|
yii::$app->response->format = Response::FORMAT_JSON;
|
||||||
|
|
||||||
|
return [
|
||||||
|
'main' => $this->renderPartial('/profile/index'),
|
||||||
|
'title' => 'Профиль',
|
||||||
|
'redirect' => '/profile',
|
||||||
|
'_csrf' => yii::$app->request->getCsrfToken()
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
// GET-запрос (подразумевается)
|
||||||
|
|
||||||
|
return $this->render('/profile/index');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Регистрация аккаунта ещё не подтверждена
|
||||||
|
|
||||||
|
if (yii::$app->request->isPost) {
|
||||||
|
// POST-запрос
|
||||||
|
|
||||||
|
// Запись формата ответа
|
||||||
|
yii::$app->response->format = Response::FORMAT_JSON;
|
||||||
|
|
||||||
|
return $this->genPostVerify();
|
||||||
|
} else {
|
||||||
|
// GET-запрос (подразумевается)
|
||||||
|
|
||||||
return $this->render('/account/verify');
|
return $this->render('/account/verify');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Отправить запрос на активацию
|
* Отправить запрос на активацию
|
||||||
|
@ -37,24 +80,39 @@ class VerifyController extends Controller
|
||||||
*/
|
*/
|
||||||
public function actionSend(): string|array
|
public function actionSend(): string|array
|
||||||
{
|
{
|
||||||
|
if (!yii::$app->user->isGuest) {
|
||||||
|
// Пользователь аутентифицирован
|
||||||
|
|
||||||
|
// Регенерация кода подтверждения
|
||||||
yii::$app->user->identity->verifyRegenerate();
|
yii::$app->user->identity->verifyRegenerate();
|
||||||
|
|
||||||
|
// Отправка кода подтверждения на почту
|
||||||
yii::$app->user->identity->sendMailVerify();
|
yii::$app->user->identity->sendMailVerify();
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
return [
|
return $this->genPostVerify();
|
||||||
'main' => $this->renderPartial('/account/verify'),
|
|
||||||
'title' => 'Корзина',
|
|
||||||
'_csrf' => yii::$app->request->getCsrfToken()
|
|
||||||
];
|
|
||||||
} else {
|
} else {
|
||||||
// Подразумевается как GET-запрос
|
// GET-запрос (подразумевается)
|
||||||
|
|
||||||
return $this->render('/account/verify');
|
return $this->render('/account/verify');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Генерация данных для POST-запроса с переадресацией на страницу подтверждения
|
||||||
|
*/
|
||||||
|
function genPostVerify(): array {
|
||||||
|
return [
|
||||||
|
'main' => $this->renderPartial('/account/verify'),
|
||||||
|
'title' => 'Подтверждение аккаунта',
|
||||||
|
'redirect' => '/account/verify',
|
||||||
|
'_csrf' => yii::$app->request->getCsrfToken()
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -259,6 +259,53 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
return static::find()->where(['type' => 'moderator'])->orWhere(['type' => 'administrator'])->all();
|
return static::find()->where(['type' => 'moderator'])->orWhere(['type' => 'administrator'])->all();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Подтверждение регистрации
|
||||||
|
*/
|
||||||
|
public static function verification(string $vrfy, bool $auth = false): bool
|
||||||
|
{
|
||||||
|
if ($account = static::findByVrfy($vrfy)) {
|
||||||
|
// Аккаунт найден
|
||||||
|
|
||||||
|
// Запись в буфер
|
||||||
|
$account->vrfy = true;
|
||||||
|
|
||||||
|
// Отправка изменений
|
||||||
|
$updated = $account->update() > 0;
|
||||||
|
|
||||||
|
if ($updated && $auth) {
|
||||||
|
// Регистрация была подтверждена, а так же запрошена автоматическая аутентификация
|
||||||
|
|
||||||
|
// Аутентификация
|
||||||
|
yii::$app->user->login($account, true ? 3600 * 24 * 30 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $updated;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверка пароля
|
||||||
|
*/
|
||||||
|
public function validatePassword(string $pswd): bool
|
||||||
|
{
|
||||||
|
// return yii::$app->security->validatePassword($pswd, $this->pswd);
|
||||||
|
return $pswd === $this->pswd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверка аутентификационного ключа
|
||||||
|
*
|
||||||
|
* @todo Подождать обновление Yii2 и добавить
|
||||||
|
* проверку типов передаваемых параметров
|
||||||
|
*/
|
||||||
|
public function validateAuthKey($auth): bool
|
||||||
|
{
|
||||||
|
return $this->getAuthKey() === $auth;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Проверка почты
|
* Проверка почты
|
||||||
*/
|
*/
|
||||||
|
@ -311,53 +358,6 @@ class Account extends Document implements IdentityInterface, PartnerInterface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Подтверждение регистрации
|
|
||||||
*/
|
|
||||||
public static function verification(string $vrfy, bool $auth = false): bool
|
|
||||||
{
|
|
||||||
if ($account = static::findByVrfy($vrfy)) {
|
|
||||||
// Аккаунт найден
|
|
||||||
|
|
||||||
// Запись в буфер
|
|
||||||
$account->vrfy = true;
|
|
||||||
|
|
||||||
// Отправка изменений
|
|
||||||
$updated = $account->update() > 0;
|
|
||||||
|
|
||||||
if ($updated && $auth) {
|
|
||||||
// Регистрация была подтверждена, а так же запрошена автоматическая аутентификация
|
|
||||||
|
|
||||||
// Аутентификация
|
|
||||||
yii::$app->user->login($account, true ? 3600 * 24 * 30 : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $updated;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Проверка пароля
|
|
||||||
*/
|
|
||||||
public function validatePassword(string $pswd): bool
|
|
||||||
{
|
|
||||||
// return yii::$app->security->validatePassword($pswd, $this->pswd);
|
|
||||||
return $pswd === $this->pswd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Проверка аутентификационного ключа
|
|
||||||
*
|
|
||||||
* @todo Подождать обновление Yii2 и добавить
|
|
||||||
* проверку типов передаваемых параметров
|
|
||||||
*/
|
|
||||||
public function validateAuthKey($auth): bool
|
|
||||||
{
|
|
||||||
return $this->getAuthKey() === $auth;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Записать параметр
|
* Записать параметр
|
||||||
*
|
*
|
||||||
|
|
|
@ -237,7 +237,7 @@ class Order extends Document implements DocumentInterface
|
||||||
*
|
*
|
||||||
* @todo Привести в порядок
|
* @todo Привести в порядок
|
||||||
*/
|
*/
|
||||||
public static function search(Account|string $account = null, string $type = 'current', int $limit = 1, int $page = 1, string $select = null, bool $supplies = false): self|array|null
|
public static function search(Account|string $account = null, string $type = 'current', int $limit = 1, int $page = 1, string $select = null, bool $supplies = false, int|null $from = null, int|null $to = null): self|array|null
|
||||||
{
|
{
|
||||||
// Инициализация аккаунта
|
// Инициализация аккаунта
|
||||||
if (empty($account) && isset(yii::$app->user->identity)) {
|
if (empty($account) && isset(yii::$app->user->identity)) {
|
||||||
|
@ -276,13 +276,35 @@ class Order extends Document implements DocumentInterface
|
||||||
// Инициализация сдвига по запрашиваемым данным (пагинация)
|
// Инициализация сдвига по запрашиваемым данным (пагинация)
|
||||||
$offset = $limit * ($page - 1);
|
$offset = $limit * ($page - 1);
|
||||||
|
|
||||||
// Запрос
|
// Инициализация фильтрации
|
||||||
|
if (isset($from, $to)) {
|
||||||
|
// Задан период
|
||||||
|
|
||||||
|
// Инициализация логики
|
||||||
|
$foreach = [
|
||||||
|
['edge' => 'account_edge_order'],
|
||||||
|
['jrnl' => 'order.jrnl']
|
||||||
|
];
|
||||||
|
|
||||||
|
// Инициализация фильтра
|
||||||
|
$where = "edge._to == order._id && jrnl.action == 'requested' && jrnl.date >= $from && jrnl.date <= $to";
|
||||||
|
} else {
|
||||||
|
// Ничего не задано
|
||||||
|
|
||||||
|
// Инициализация логики
|
||||||
|
$foreach = ['edge' => 'account_edge_order'];
|
||||||
|
|
||||||
|
// Инициализация фильтра
|
||||||
|
$where = "edge._to == order._id";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Запрос на поиск заказов
|
||||||
$return = self::searchByEdge(
|
$return = self::searchByEdge(
|
||||||
from: 'account',
|
from: 'account',
|
||||||
to: 'order',
|
to: 'order',
|
||||||
subquery_where: $subquery_where,
|
subquery_where: $subquery_where,
|
||||||
foreach: ['edge' => 'account_edge_order'],
|
foreach: $foreach,
|
||||||
where: 'edge._to == order._id',
|
where: $where,
|
||||||
limit: $limit,
|
limit: $limit,
|
||||||
offset: $offset,
|
offset: $offset,
|
||||||
sort: ['DESC'],
|
sort: ['DESC'],
|
||||||
|
|
|
@ -17,12 +17,21 @@ use app\models\AccountForm;
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="mx-auto">
|
<div class="mx-auto">
|
||||||
<?php
|
<?php
|
||||||
Pjax::begin([
|
|
||||||
// Опции Pjax
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Инициализация идентификатора формы
|
// Инициализация идентификатора формы
|
||||||
$form_id = ($isPopupMenu ?? false) ? 'form_account_menu' : 'form_account';
|
if ($isPopupMenu ?? false) {
|
||||||
|
// Генерация документа во всплывающем меню
|
||||||
|
|
||||||
|
// Инициализация параметров
|
||||||
|
$form_id = 'form_account_menu';
|
||||||
|
$target = 'menu';
|
||||||
|
} else {
|
||||||
|
// Генерация документа в основном блоке страницы
|
||||||
|
|
||||||
|
// Инициализация параметров
|
||||||
|
$form_id = 'form_account';
|
||||||
|
$target = 'main';
|
||||||
|
}
|
||||||
|
|
||||||
$form = ActiveForm::begin([
|
$form = ActiveForm::begin([
|
||||||
'id' => $form_id,
|
'id' => $form_id,
|
||||||
|
@ -35,10 +44,7 @@ use app\models\AccountForm;
|
||||||
],
|
],
|
||||||
'options' => [
|
'options' => [
|
||||||
'class' => 'form_account',
|
'class' => 'form_account',
|
||||||
'onsubmit' => 'return false;',
|
'onsubmit' => 'return false;'
|
||||||
'data' => [
|
|
||||||
'pjax' => true
|
|
||||||
]
|
|
||||||
],
|
],
|
||||||
'enableClientValidation' => false,
|
'enableClientValidation' => false,
|
||||||
'enableAjaxValidation' => true
|
'enableAjaxValidation' => true
|
||||||
|
@ -61,11 +67,11 @@ use app\models\AccountForm;
|
||||||
<?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 small']])->textInput(['autofocus' => true, 'placeholder' => $model->getAttributeLabel('mail')]) ?>
|
<?= $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, 'pswd', ['enableLabel' => false, 'errorOptions' => ['class' => 'help-block help-block-error small']])->passwordInput(['placeholder' => $model->getAttributeLabel('pswd')]) ?>
|
<?= $form->field($model, 'pswd', ['enableLabel' => false, '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);', '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']) ?>
|
||||||
<?= $form->field($model, 'auto', ['checkboxTemplate' => '<div class="checkbox button_clean">{beginLabel}' .
|
<?= $form->field($model, 'auto', ['checkboxTemplate' => '<div class="checkbox button_clean">{beginLabel}' .
|
||||||
Html::submitButton('{labelTitle}', ['name' => 'submit', 'data-toggle' => 'button', 'class' => 'w-100 btn btn-primary button_clean', 'aria-pressed' => 'false', 'onclick' => 'return authentication_auto_button_status_switch(this);']) .
|
Html::submitButton('{labelTitle}', ['name' => 'submit', 'data-toggle' => 'button', 'class' => 'w-100 btn btn-primary button_clean', 'aria-pressed' => 'false', 'onclick' => 'return authentication_auto_button_status_switch(this);']) .
|
||||||
'{endLabel}</div>'])->checkbox()->label($model->getAttributeLabel('auto'), ['class' => 'w-100 m-0']) ?>
|
'{endLabel}</div>'])->checkbox()->label($model->getAttributeLabel('auto'), ['class' => 'w-100 m-0']) ?>
|
||||||
|
@ -77,8 +83,6 @@ use app\models\AccountForm;
|
||||||
|
|
||||||
ActiveForm::end();
|
ActiveForm::end();
|
||||||
|
|
||||||
Pjax::end();
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -182,19 +182,15 @@ if (
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-4">
|
<div class="row mb-4">
|
||||||
<small class="ml-auto d-flex">
|
<small class="ml-auto d-flex">
|
||||||
<a class="btn btn-sm button_white button_clean mb-0 mr-2" type="button" onclick="return orders_read('all');">День</a>
|
<a class="btn btn-sm button_white button_clean mb-0 mr-2" type="button" onclick="return orders_read('last','<?= time() - 86400 ?>', '<?= time() ?>');">День</a>
|
||||||
<a class="btn btn-sm button_white button_clean mb-0 mr-2" type="button" onclick="return orders_read('all');">Неделя</a>
|
<a class="btn btn-sm button_white button_clean mb-0 mr-2" type="button" onclick="return orders_read('last', '<?= time() - 604800 ?>', '<?= time() ?>');">Неделя</a>
|
||||||
<a class="btn btn-sm button_white button_clean mb-0 mr-2" type="button" onclick="return orders_read('requested');">Месяц</a>
|
<a class="btn btn-sm button_white button_clean mb-0 mr-2" type="button" onclick="return orders_read('last', '<?= time() - 2592000 ?>', '<?= time() ?>');">Месяц</a>
|
||||||
<a class="btn btn-sm button_white button_clean mb-0 mr-2" type="button" onclick="return orders_read('accepted');">Год</a>
|
<a class="btn btn-sm button_white button_clean mb-0 mr-2" type="button" onclick="return orders_read('last',' '<?= time() - 31536000 ?>', '<?= time() ?>');">Год</a>
|
||||||
</small>
|
</small>
|
||||||
<div class="ml-2 mr-3 d-flex">
|
<div class="ml-2 mr-3 d-flex">
|
||||||
<div class="ml-auto">
|
<input id="orders_period_calendar_from" class="form-control form-control-sm form_control_clean" type="date" value="<?= $from ?? date('Y-m-d', time() - 604800) ?>" onchange="return orders_read('last', moment(this.value, 'YYYY-MM-DD').unix(), moment(document.getElementById('orders_period_calendar_to').value, 'YYYY-MM-DD').unix());" pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}" />
|
||||||
<input class="form-contro form-control-sm" type="date" value="<?= date('Y-m-d', time() - 604800) ?>" />
|
|
||||||
</div>
|
|
||||||
<p class="mx-2 p-0">-</p>
|
<p class="mx-2 p-0">-</p>
|
||||||
<div>
|
<input id="orders_period_calendar_to" class="form-control form-control-sm form_control_clean" type="date" value="<?= $to ?? date('Y-m-d', time()) ?>" onchange="return orders_read('last', moment(document.getElementById('orders_period_calendar_from').value, 'YYYY-MM-DD').unix(), moment(this.value, 'YYYY-MM-DD').unix());" pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}" />
|
||||||
<input class="form-contro form-control-sm" type="date" value="<?= date('Y-m-d', time()) ?>" />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col mb-4 list rounded">
|
<div class="col mb-4 list rounded">
|
||||||
|
|
|
@ -87,7 +87,7 @@ if (
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$model ?? $model = yii::$app->user->identity;
|
$model ?? $model = yii::$app->user->identity;
|
||||||
$delivery_from_terminal_list or $delivery_from_terminal_list = ['Нет данных'];
|
$delivery_from_terminal_list ?? $delivery_from_terminal_list = ['Нет данных'];
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<?= $form->field($model, 'opts[delivery_from_terminal]', ['options' => ['class' => "mb-1"]])
|
<?= $form->field($model, 'opts[delivery_from_terminal]', ['options' => ['class' => "mb-1"]])
|
||||||
|
@ -118,7 +118,7 @@ if (
|
||||||
|
|
||||||
// Инициализация
|
// Инициализация
|
||||||
$model ?? $model = yii::$app->user->identity;
|
$model ?? $model = yii::$app->user->identity;
|
||||||
$import_oem_list or $import_oem_list = ['Нет данных'];
|
$import_oem_list ?? $import_oem_list = ['Нет данных'];
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<?= $form->field($model, 'opts[import_supplies_oem]', ['options' => ['class' => "mb-1"]])
|
<?= $form->field($model, 'opts[import_supplies_oem]', ['options' => ['class' => "mb-1"]])
|
||||||
|
|
|
@ -70,7 +70,6 @@ main {
|
||||||
.button_clean_full:focus,
|
.button_clean_full:focus,
|
||||||
.button_clean_full:active {
|
.button_clean_full:active {
|
||||||
outline : none !important;
|
outline : none !important;
|
||||||
box-shadow: none !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.button_clean_full,
|
.button_clean_full,
|
||||||
|
@ -81,6 +80,13 @@ main {
|
||||||
background: none !important;
|
background: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.form_control_clean,
|
||||||
|
.form_control_clean:hover,
|
||||||
|
.form_control_clean:focus,
|
||||||
|
.form_control_clean:active {
|
||||||
|
box-shadow: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
.button_blue_simple {
|
.button_blue_simple {
|
||||||
color : #eee;
|
color : #eee;
|
||||||
background-color: #123EAB;
|
background-color: #123EAB;
|
||||||
|
|
|
@ -11,7 +11,8 @@ function identification() {
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', identification(), true);
|
document.addEventListener('DOMContentLoaded', identification(), true);
|
||||||
|
|
||||||
function authentication(form) {
|
function authentication(form, target = 'main') {
|
||||||
|
|
||||||
if (form == undefined) {
|
if (form == undefined) {
|
||||||
form = {
|
form = {
|
||||||
'_csrf': yii.getCsrfToken()
|
'_csrf': yii.getCsrfToken()
|
||||||
|
@ -20,10 +21,17 @@ function authentication(form) {
|
||||||
form = $(form).serializeArray();
|
form = $(form).serializeArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
form.push({
|
form.push(
|
||||||
|
{
|
||||||
name: 'type',
|
name: 'type',
|
||||||
value: 'authentication'
|
value: 'authentication'
|
||||||
});
|
},
|
||||||
|
{
|
||||||
|
name: 'target',
|
||||||
|
value: target
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/authentication',
|
url: '/authentication',
|
||||||
|
@ -248,6 +256,19 @@ function account_response(data, status, xhr) {
|
||||||
// reinitialization(main);
|
// reinitialization(main);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
main_response(data, status, xhr);
|
||||||
|
}
|
||||||
|
|
||||||
|
function account_response_success(data, status, xhr) {
|
||||||
|
// Обработка ответов от удавшихся запросов
|
||||||
|
|
||||||
|
// Реинициализация панели поиска
|
||||||
|
// Перенести в отдельный файл который подгружается в зависимости от настроек
|
||||||
|
// search_panel_show();
|
||||||
|
|
||||||
|
// // Обновление панели поиска
|
||||||
|
// product_search();
|
||||||
|
|
||||||
if (data !== undefined) {
|
if (data !== undefined) {
|
||||||
// Получены данные с сервера
|
// Получены данные с сервера
|
||||||
|
|
||||||
|
@ -264,19 +285,6 @@ function account_response(data, status, xhr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
main_response(data, status, xhr);
|
|
||||||
}
|
|
||||||
|
|
||||||
function account_response_success(data, status, xhr) {
|
|
||||||
// Обработка ответов от удавшихся запросов
|
|
||||||
|
|
||||||
// Реинициализация панели поиска
|
|
||||||
// Перенести в отдельный файл который подгружается в зависимости от настроек
|
|
||||||
// search_panel_show();
|
|
||||||
|
|
||||||
// // Обновление панели поиска
|
|
||||||
// product_search();
|
|
||||||
|
|
||||||
account_response(data, status, xhr);
|
account_response(data, status, xhr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,13 +1,32 @@
|
||||||
// Запросить заказы
|
// Запросить заказы
|
||||||
function orders_read(type = 'all') {
|
function orders_read(type = 'all', from, to) {
|
||||||
|
// type = 'last' (оставить без изменений и взять данные из cookie
|
||||||
|
// Пустые from и to тоже возьмутся из текущих значений в cookie
|
||||||
|
|
||||||
|
if (from !== undefined && to !== undefined) {
|
||||||
|
// Данные периода переданы
|
||||||
|
|
||||||
|
// Инициализация буфера с данными запроса
|
||||||
|
data = {
|
||||||
|
'_csrf': yii.getCsrfToken(),
|
||||||
|
'from': from,
|
||||||
|
'to': to
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
// Данные периода не переданы
|
||||||
|
|
||||||
|
// Инициализация буфера с данными запроса
|
||||||
|
data = {
|
||||||
|
'_csrf': yii.getCsrfToken()
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
// Запрос
|
// Запрос
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/orders/' + type,
|
url: '/orders/' + type,
|
||||||
type: 'post',
|
type: 'post',
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
data: {
|
data: data,
|
||||||
'_csrf': yii.getCsrfToken()
|
|
||||||
},
|
|
||||||
success: orders_response_success,
|
success: orders_response_success,
|
||||||
error: orders_response_error
|
error: orders_response_error
|
||||||
});
|
});
|
||||||
|
|
|
@ -30,7 +30,7 @@ function product_response(data, status, xhr) {
|
||||||
function product_response_success(data, status, xhr) {
|
function product_response_success(data, status, xhr) {
|
||||||
// Обработка ответов от удавшихся запросов
|
// Обработка ответов от удавшихся запросов
|
||||||
|
|
||||||
product_response(data, status);
|
product_response(data, status, xhr);
|
||||||
};
|
};
|
||||||
|
|
||||||
function product_response_error(data, status, xhr) {
|
function product_response_error(data, status, xhr) {
|
||||||
|
|
|
@ -86,21 +86,7 @@ function product_panel_catn_save(catn, element, redirect = false) {
|
||||||
'_csrf': yii.getCsrfToken(),
|
'_csrf': yii.getCsrfToken(),
|
||||||
'text': text
|
'text': text
|
||||||
},
|
},
|
||||||
success: function (data, status, xhr) {
|
success: product_response_success,
|
||||||
if (data !== undefined) {
|
|
||||||
// Получены данные с сервера
|
|
||||||
|
|
||||||
// Заголовок
|
|
||||||
if (data.catn !== undefined && element !== null && element !== undefined) {
|
|
||||||
if (redirect) {
|
|
||||||
// Перенаправление
|
|
||||||
history.pushState({}, '/product/' + catn, '/product/' + data.catn);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
product_response_success(data, status, xhr);
|
|
||||||
},
|
|
||||||
error: product_response_error
|
error: product_response_error
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Reference in New Issue