Работа над сайтом 14

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2021-07-12 04:21:32 +10:00
parent 2ca929e122
commit bf821a9819
27 changed files with 810 additions and 962 deletions

View File

@ -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',
'js/menu.js', 'js/menu.js',
'js/main.js',
'js/account.js', 'js/account.js',
'js/search.js', 'js/search.js',
'js/notification.js', 'js/notification.js',
@ -47,7 +48,7 @@ class AppAsset extends AssetBundle
// 'position' => View::POS_HEAD // 'position' => View::POS_HEAD
]; ];
public $depends = [ public $depends = [
'yii\web\YiiAsset', 'yii\web\YiiAsset'
// 'yii\bootstrap\BootstrapAsset' // 'yii\bootstrap\BootstrapAsset'
]; ];
} }

View File

@ -77,7 +77,7 @@ class CartController extends Controller
* *
* @see $this->behaviors Доступ только аутентифицированным * @see $this->behaviors Доступ только аутентифицированным
*/ */
public function actionIndex(): string|array|null public function actionIndex(): string|array|null|Response
{ {
// Инициализация // Инициализация
$page = yii::$app->request->get('page') ?? yii::$app->request->post('page') ?? 1; $page = yii::$app->request->get('page') ?? yii::$app->request->post('page') ?? 1;

View File

@ -198,22 +198,22 @@ class SearchController extends Controller
$to = 36; $to = 36;
} }
if ($buffer_connection = $connection['product']['bffr']["$from-$to"] ?? false) { if (
($buffer_connection = $connection['product']['bffr']["$from-$to"] ?? false)
&& time() < $buffer_connection['expires']
) {
// Найдены данные доставки в буфере // Найдены данные доставки в буфере
// и срок хранения не превышен, информация актуальна
if (time() < $buffer_connection['expires']) { // Запись в буфер вывода
// Срок хранения не превышен, информация актуальна $connection['delivery'] = $buffer_connection['data'];
$connection['delivery']['type'] = 'auto';
// Запись в буфер вывода
$connection['delivery'] = $buffer_connection['data'];
$connection['delivery']['type'] = 'auto';
}
} else { } else {
// Инициализация инстанции продукта в базе данных // Инициализация инстанции продукта в базе данных
$product = Product::searchByCatn($connection['product']['catn']); $product = Product::searchByCatn($connection['product']['catn']);
// Инициализация доставки Dellin (автоматическая) // Инициализация доставки Dellin (автоматическая)
$product->bffr = ($product->bffr ?? []) + [ $product->bffr = [
"$from-$to" => [ "$from-$to" => [
'data' => $connection['delivery'] = Dellin::calcDeliveryAdvanced( 'data' => $connection['delivery'] = Dellin::calcDeliveryAdvanced(
$from, $from,
@ -225,7 +225,7 @@ class SearchController extends Controller
), ),
'expires' => time() + 86400 'expires' => time() + 86400
] ]
]; ] + ($product->bffr ?? []);
$connection['delivery']['type'] = 'auto'; $connection['delivery']['type'] = 'auto';
// Отправка в базу данных // Отправка в базу данных
@ -248,7 +248,7 @@ class SearchController extends Controller
// Инициализация версии для рассчета доставки по воздуху // Инициализация версии для рассчета доставки по воздуху
$buffer = $connection; $buffer = $connection;
try {// Инициализация данных геолокации try { // Инициализация данных геолокации
try { try {
$from = (int) $connection['account']['opts']['delivery_from_terminal'] ?? Settings::search()->delivery_from_default ?? 36; $from = (int) $connection['account']['opts']['delivery_from_terminal'] ?? Settings::search()->delivery_from_default ?? 36;
} catch (Exception $e) { } catch (Exception $e) {
@ -261,22 +261,22 @@ class SearchController extends Controller
$to = 36; $to = 36;
} }
if ($buffer_connection = $connection['product']['bffr']["$from-$to-avia"] ?? false) { if (
($buffer_connection = $connection['product']['bffr']["$from-$to-avia"] ?? false)
&& time() < $buffer_connection['expires']
) {
// Найдены данные доставки в буфере // Найдены данные доставки в буфере
// и срок хранения не превышен, информация актуальна
if (time() < $buffer_connection['expires']) { // Запись в буфер вывода
// Срок хранения не превышен, информация актуальна $connection['delivery'] = $buffer_connection['data'];
$connection['delivery']['type'] = 'avia';
// Запись в буфер вывода
$connection['delivery'] = $buffer_connection['data'];
$connection['delivery']['type'] = 'avia';
}
} else { } else {
// Инициализация инстанции продукта в базе данных // Инициализация инстанции продукта в базе данных
$product = Product::searchByCatn($connection['product']['catn']); $product = Product::searchByCatn($connection['product']['catn']);
// Инициализация доставки Dellin (автоматическая) // Инициализация доставки Dellin (автоматическая)
$product->bffr = ($product->bffr ?? []) + [ $product->bffr = [
"$from-$to-avia" => [ "$from-$to-avia" => [
'data' => $connection['delivery'] = Dellin::calcDeliveryAdvanced( 'data' => $connection['delivery'] = Dellin::calcDeliveryAdvanced(
$from, $from,
@ -289,7 +289,7 @@ class SearchController extends Controller
), ),
'expires' => time() + 86400 'expires' => time() + 86400
] ]
]; ] + ($product->bffr ?? []);
$connection['delivery']['type'] = 'avia'; $connection['delivery']['type'] = 'avia';
// Отправка в базу данных // Отправка в базу данных

View File

@ -446,7 +446,10 @@ class Order extends Document implements DocumentInterface
// Если стоимость не найдена или равна нулю (явная ошибка) // Если стоимость не найдена или равна нулю (явная ошибка)
// Удаление из базы данных // Удаление из базы данных
$this->deleteSupply($connection['supply']->readId()); $this->deleteSupply($connection['supply']['_id']);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Добавить уведомление об ошибочном товаре
// Удаление из списка // Удаление из списка
unset($connections[$key]); unset($connections[$key]);

View File

@ -0,0 +1,59 @@
<?php
declare(strict_types=1);
namespace app\models\helpers;
use yii;
use yii\base\Model;
use yii\web\View;
class JsManager extends Model
{
/**
* Сгенерировать <script> элементы из данных AssetManager
*
* Создавалось под виджет ActiveForm и только на нём тестировалось
*
* @param View $view Представление
* @param array $targets Названия виджетов (например: "yii\widgets\ActiveFormAsset")
*
* @return string HTML-код
*/
public static function include(View $view, array $targets): string
{
// Инициализация
$buffer = '';
foreach ($targets as $target) {
// Перебор целей для генерации
// Инициализация
$depends = $view->assetBundles[$target]->depends;
if (count($depends) > 0) {
// Найдены зависимости
// Рекурсивный вызов
self::include($view, $depends);
}
// Инициализация
$files = $view->assetBundles[$target]->js;
foreach ($files as $file) {
// Перебор файлов цели для генерации
// Инициализация публичного пути к файлу
$path = $view->assetBundles[$target]->baseUrl . '/' . $file;
// Генерация
$buffer .= <<<HTML
<script src="$path" defer></script>
HTML;
}
}
return $buffer;
}
}

View File

@ -3,6 +3,7 @@
declare(strict_types=1); declare(strict_types=1);
use yii; use yii;
use app\models\helpers\JsManager;
?> ?>
@ -16,3 +17,5 @@ use yii;
<!-- <a class="dropdown-item-text text-center px-0 py-2" href="#"><small>Восстановление пароля</small></a> --> <!-- <a class="dropdown-item-text text-center px-0 py-2" href="#"><small>Восстановление пароля</small></a> -->
</div> </div>
</div> </div>
<?= JsManager::include($this, ['yii\widgets\ActiveFormAsset']);?>

View File

@ -49,10 +49,10 @@ $this->title = 'SkillParts';
</div> </div>
<div class="p-3 px-md-4 category_block"> <div class="p-3 px-md-4 category_block">
<dl class="mb-0"> <dl class="mb-0">
<dd><a onclick="return writeinDevelopment(this);" type="button">Масла моторные</a></dd> <dd><a onclick="return writeInDevelopment(this);" type="button">Масла моторные</a></dd>
<dd><a onclick="return writeinDevelopment(this);" type="button">Масла трансмиссионные</a></dd> <dd><a onclick="return writeInDevelopment(this);" type="button">Масла трансмиссионные</a></dd>
<dd><a onclick="return writeinDevelopment(this);" type="button">Масла гидравлические</a></dd> <dd><a onclick="return writeInDevelopment(this);" type="button">Масла гидравлические</a></dd>
<dd><a onclick="return writeinDevelopment(this);" type="button">Смазки</a></dd> <dd><a onclick="return writeInDevelopment(this);" type="button">Смазки</a></dd>
</dl> </dl>
</div> </div>
</div> </div>
@ -62,7 +62,7 @@ $this->title = 'SkillParts';
</div> </div>
<div class="p-3 px-md-4 category_block"> <div class="p-3 px-md-4 category_block">
<dl class="mb-0"> <dl class="mb-0">
<dd><a onclick="return writeinDevelopment(this);" type="button">Фары и свет</a></dd> <dd><a onclick="return writeInDevelopment(this);" type="button">Фары и свет</a></dd>
</dl> </dl>
</div> </div>
</div> </div>
@ -72,9 +72,9 @@ $this->title = 'SkillParts';
</div> </div>
<div class="p-3 px-md-4 category_block"> <div class="p-3 px-md-4 category_block">
<dl class="mb-0"> <dl class="mb-0">
<dd><a onclick="return writeinDevelopment(this);" type="button">Шприцы для смазки</a></dd> <dd><a onclick="return writeInDevelopment(this);" type="button">Шприцы для смазки</a></dd>
<dd><a onclick="return writeinDevelopment(this);" type="button">Ключи, съёмники</a></dd> <dd><a onclick="return writeInDevelopment(this);" type="button">Ключи, съёмники</a></dd>
<dd><a onclick="return writeinDevelopment(this);" type="button">Наборы инструментов</a></dd> <dd><a onclick="return writeInDevelopment(this);" type="button">Наборы инструментов</a></dd>
</dl> </dl>
</div> </div>
</div> </div>
@ -83,4 +83,4 @@ $this->title = 'SkillParts';
</div> </div>
<script src="/js/ticker.js" defer></script> <script src="/js/ticker.js" defer></script>
<script src="/js/main.js" defer></script> <script src="/js/text.js" defer></script>

View File

@ -161,7 +161,7 @@
<div class="col-5 mr-4"></div> <div class="col-5 mr-4"></div>
<small class="col-1 ml-2 my-auto pl-2 pr-0">$index</small> <small class="col-1 ml-2 my-auto pl-2 pr-0">$index</small>
<small class="col-1 my-auto pl-2 pr-0 text-center">$amount</small> <small class="col-1 my-auto pl-2 pr-0 text-center">$amount</small>
<small class="col-auto mr-2 my-auto pl-2 pr-0 text-left" title="Ориентировочно">$delivery_icon ~$delivery дн</small> <small class="col-auto mr-2 my-auto pl-2 pr-0 text-left" title="Ориентировочно">$delivery_icon $delivery дн</small>
<b class="col-2 ml-auto my-auto">$price</b> <b class="col-2 ml-auto my-auto">$price</b>
<a class="col-1 ml-0 py-2 text-dark d-flex button_white rounded" title="Добавить $catn в корзину" role="button" onclick="return cart_write('{$supply['_id']}', '$delivery_type');"> <a class="col-1 ml-0 py-2 text-dark d-flex button_white rounded" title="Добавить $catn в корзину" role="button" onclick="return cart_write('{$supply['_id']}', '$delivery_type');">
<i class="fas fa-cart-arrow-down pr-1 m-auto"></i> <i class="fas fa-cart-arrow-down pr-1 m-auto"></i>

View File

@ -4,20 +4,8 @@ function identification() {
type: 'post', type: 'post',
dataType: 'json', dataType: 'json',
data: { '_csrf': yii.getCsrfToken() }, data: { '_csrf': yii.getCsrfToken() },
success: function (data) { success: account_response_success,
if (data.menu !== undefined) { error: account_response_error
// Обновление документа
document.getElementsByTagName('menu')[0].innerHTML = data.menu;
}
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
}
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
}
}
}); });
}; };
@ -40,55 +28,8 @@ function authentication(form) {
type: 'post', type: 'post',
dataType: 'json', dataType: 'json',
data: form, data: form,
success: function (data, status) { success: account_response_success,
if (data.menu !== undefined) { error: account_response_error
// Обновление документа
document.getElementsByTagName('menu')[0].innerHTML = data.menu;
}
if (data.main !== undefined && document.getElementById('page_index') === null) {
main = document.getElementsByTagName('main')[0];
// Обновление документа
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
}
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
}
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
}
// Реинициализация панели поиска
// Перенести в отдельный файл который подгружается в зависимости от настроек
// search_panel_show();
// Обновление панели поиска
product_search();
},
error: function (data, status) {
if (data.responseJSON.main !== undefined) {
main = document.getElementsByTagName('main')[0];
// Обновление документа
main.innerHTML = data.responseJSON.main;
// Реинициализация
reinitialization(main);
}
if (data.responseJSON.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.responseJSON.redirect);
}
if (data.responseJSON._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data.responseJSON._csrf);
}
}
}); });
}; };
@ -98,36 +39,8 @@ function deauthentication() {
type: 'post', type: 'post',
dataType: 'json', dataType: 'json',
data: { '_csrf': yii.getCsrfToken() }, data: { '_csrf': yii.getCsrfToken() },
success: function (data) { success: account_response_success,
if (data.menu !== undefined) { error: account_response_error
// Обновление документа
document.getElementsByTagName('menu')[0].innerHTML = data.menu;
}
if (data.main !== undefined) {
main = document.getElementsByTagName('main')[0];
// Обновление документа
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
}
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
}
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
}
// Реинициализация панели поиска
// Перенести в отдельный файл который подгружается в зависимости от настроек
// search_panel_hide();
// Обновление панели поиска
product_search();
}
}); });
}; };
@ -266,6 +179,9 @@ function registration_start(form, type) {
function registration_end(form) { function registration_end(form) {
// Инициализация // Инициализация
$(form).yiiActiveForm('init');
// Проверка
$(form).yiiActiveForm('validate', true); $(form).yiiActiveForm('validate', true);
if (form == undefined) { if (form == undefined) {
@ -286,52 +202,66 @@ function registration_end(form) {
type: 'post', type: 'post',
dataType: 'json', dataType: 'json',
data: form, data: form,
success: function (data) { success: account_response_success,
if (data.menu !== undefined) { error: account_response_error
// Обновление документа
document.getElementsByTagName('menu')[0].innerHTML = data.menu;
}
// Разобраться нужна ли ещё првоерка на page_index, избавиться от неё
if (data.main !== undefined && document.getElementById('page_index') === null) {
main = document.getElementsByTagName('main')[0];
// Обновление документа
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
}
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
}
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
}
},
error: function (data) {
if (data.responseJSON.main !== undefined) {
main = document.getElementsByTagName('main')[0];
// Обновление документа
main.innerHTML = data.responseJSON.main;
// Реинициализация
reinitialization(main);
}
if (data.responseJSON.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.responseJSON.redirect);
}
if (data.responseJSON._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data.responseJSON._csrf);
}
}
}); });
return false; return false;
}; };
document.addEventListener('DOMContentLoaded', identification(), true); document.addEventListener('DOMContentLoaded', identification(), true);
function account_response(data, status, xhr) {
// Обработка ответов
// // Разобраться нужна ли ещё првоерка на page_index, избавиться от неё
// if (data.main !== undefined && document.getElementById('page_index') === null) {
// main = document.getElementsByTagName('main')[0];
// // Обновление документа
// main.innerHTML = data.main;
// // Реинициализация
// reinitialization(main);
// }
if (data !== undefined) {
// Получены данные с сервера
// Меню
if (data.menu !== undefined) {
// Инициализация
let menu = document.getElementsByTagName('menu')[0];
// Обновление документа
menu.innerHTML = data.menu;
// Реинициализация
reinitialization(menu);
}
}
main_response(data, status, xhr);
}
function account_response_success(data, status, xhr) {
// Обработка ответов от удавшихся запросов
// Реинициализация панели поиска
// Перенести в отдельный файл который подгружается в зависимости от настроек
// search_panel_show();
// Обновление панели поиска
product_search();
account_response(data, status, xhr);
}
function account_response_error(data, status, xhr) {
// Обработка ответов от неудавшихся запросов
// Инициализвация
data = data.responseJSON;
account_response(data, status, xhr);
}

View File

@ -7,7 +7,7 @@ function cart_write(supply_id, delivery_type, amount = 1) {
data['supply_id'] = supply_id; data['supply_id'] = supply_id;
data['amount'] = amount; data['amount'] = amount;
data['delivery_type'] = delivery_type; data['delivery_type'] = delivery_type;
data['_csrf'] = yii.getCsrfToken() data['_csrf'] = yii.getCsrfToken();
$.ajax({ $.ajax({
url: '/order/write', url: '/order/write',
@ -19,7 +19,7 @@ function cart_write(supply_id, delivery_type, amount = 1) {
}); });
return false; return false;
} };
/** /**
* Удалить корзину * Удалить корзину
@ -37,7 +37,7 @@ function cart_delete() {
}); });
return false; return false;
} };
/** /**
* Сформировать заказ * Сформировать заказ
@ -55,7 +55,7 @@ function cart_request() {
}); });
return false; return false;
} };
/** /**
* Управление чекбоксами * Управление чекбоксами
@ -72,7 +72,7 @@ function cart_list_checkbox(target) {
// Перебор всех выбранных элементов // Перебор всех выбранных элементов
elements[$i].getElementsByTagName('input')[0].checked = true; elements[$i].getElementsByTagName('input')[0].checked = true;
} };
target.checked = true; target.checked = true;
} else { } else {
@ -80,14 +80,14 @@ function cart_list_checkbox(target) {
// Перебор всех выбранных элементов // Перебор всех выбранных элементов
elements[$i].getElementsByTagName('input')[0].checked = false; elements[$i].getElementsByTagName('input')[0].checked = false;
} };
target.checked = false; target.checked = false;
} };
return false; return false;
} };
} };
/** /**
* Удалить из корзины * Удалить из корзины
@ -115,9 +115,9 @@ function cart_list_delete(target, amount = 0) {
if (checkbox.checked === true) { if (checkbox.checked === true) {
targets[reg.exec(checkbox.id)[1]] = 0; targets[reg.exec(checkbox.id)[1]] = 0;
} };
} };
} };
$.ajax({ $.ajax({
url: '/order/delete', url: '/order/delete',
@ -138,7 +138,7 @@ function cart_list_delete(target, amount = 0) {
cart_cost_calculate(); cart_cost_calculate();
return false; return false;
} };
/** /**
* Изменить количество товара в корзине * Изменить количество товара в корзине
@ -162,13 +162,13 @@ function cart_list_amount_update(target, input) {
success: cart_response_success, success: cart_response_success,
error: cart_response_error error: cart_response_error
}); });
} };
// Пересчитывание стоимости // Пересчитывание стоимости
cart_cost_calculate(); cart_cost_calculate();
return false; return false;
} };
/** /**
* Подсчёт стоимости * Подсчёт стоимости
@ -183,10 +183,10 @@ function cart_cost_calculate() {
let amount = elements[$i].getElementsByTagName('div')[5].children[0].value; let amount = elements[$i].getElementsByTagName('div')[5].children[0].value;
costs += +reg.exec(cost)[1] * amount; costs += +reg.exec(cost)[1] * amount;
} };
document.getElementById('cart_cost').innerHTML = costs; document.getElementById('cart_cost').innerHTML = costs;
} };
/** /**
* Изменить количество товара в корзине * Изменить количество товара в корзине
@ -246,10 +246,10 @@ function cart_list_comment_edit(catn, element) {
}); });
return false; return false;
} };
return true; return true;
} };
function cart_list_comment_save(catn, element) { function cart_list_comment_save(catn, element) {
if (catn !== null && catn !== undefined && element !== null && element !== undefined) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) {
@ -261,7 +261,7 @@ function cart_list_comment_save(catn, element) {
element.innerHTML = 'Комментарий к заказу'; element.innerHTML = 'Комментарий к заказу';
} else { } else {
element.innerHTML = text; element.innerHTML = text;
} };
// Деинициализация счетчика // Деинициализация счетчика
document.getElementById(element.id + '-textarea-counter').remove(); document.getElementById(element.id + '-textarea-counter').remove();
@ -277,7 +277,7 @@ function cart_list_comment_save(catn, element) {
'_csrf': yii.getCsrfToken(), '_csrf': yii.getCsrfToken(),
'text': text 'text': text
}, },
success: function (data, status) { success: function (data, status, xhr) {
// Заголовок // Заголовок
if (data.comm !== undefined) { if (data.comm !== undefined) {
// Обновление заголовка // Обновление заголовка
@ -287,55 +287,34 @@ function cart_list_comment_save(catn, element) {
element.setAttribute('onclick', 'return cart_list_comment_edit(\'' + catn + '\', this);'); element.setAttribute('onclick', 'return cart_list_comment_edit(\'' + catn + '\', this);');
}; };
cart_response_success(data, status); cart_response_success(data, status, xhr);
}, },
error: cart_response_error error: cart_response_error
}); });
return false; return false;
} };
return true; return true;
} };
function cart_response(data, status) { function cart_response(data, status, xhr) {
// Обработка ответов // Обработка ответов
// Основной блок main_response(data, status, xhr);
if (data.main !== undefined) { };
main = document.getElementsByTagName('main')[0];
// Обновление документа function cart_response_success(data, status, xhr) {
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
}
// Перенаправление
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
}
// CSRF-токен
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
}
}
function cart_response_success(data, status) {
// Обработка ответов от удавшихся запросов // Обработка ответов от удавшихся запросов
cart_response(data, status); cart_response(data, status, xhr);
} };
function cart_response_error(data, status) { function cart_response_error(data, status, xhr) {
// Обработка ответов от неудавшихся запросов // Обработка ответов от неудавшихся запросов
// Инициализвация // Инициализвация
data = data.responseJSON; data = data.responseJSON;
cart_response(data, status); cart_response(data, status, xhr);
} };

View File

@ -1,20 +1,37 @@
function writeinDevelopment(target) { function main_response(data, status, xhr) {
// Инициализация буфера // Обработка ответов
let buffer = target.innerText;
// Запись текста if (data !== undefined) {
target.innerText = target.innerText + ' (в разработке)'; // Получены данные с сервера
// Блокировка от повторного вызова // Основной блок
target.setAttribute('onclick', 'return false;'); if (data.main !== undefined) {
// Инициализация
main = document.getElementsByTagName('main')[0];
setTimeout(function () { // Обновление документа
// Возврат изначального текста из буфера main.innerHTML = data.main;
target.innerText = buffer;
// Разблокировка // Реинициализация
target.setAttribute('onclick', 'return writeinDevelopment(this);'); reinitialization(main);
}, 3000); };
return false; // Заголовок
if (data.title !== undefined) {
// Запись
document.title = data.title;
};
// Перенаправление
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
};
// CSRF-токен
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
};
};
}; };

View File

@ -10,10 +10,10 @@ function page_main() {
success: menu_success, success: menu_success,
error: menu_error error: menu_error
}); });
} };
return false; return false;
} };
function page_profile() { function page_profile() {
if (document.getElementById('page_profile') === null) { if (document.getElementById('page_profile') === null) {
@ -27,10 +27,10 @@ function page_profile() {
success: menu_success, success: menu_success,
error: menu_error error: menu_error
}); });
} };
return false; return false;
} };
function page_cart() { function page_cart() {
if (document.getElementById('page_cart') === null) { if (document.getElementById('page_cart') === null) {
@ -44,7 +44,7 @@ function page_cart() {
success: menu_success, success: menu_success,
error: menu_error error: menu_error
}); });
} };
return false; return false;
}; };
@ -61,7 +61,7 @@ function page_orders() {
success: menu_success, success: menu_success,
error: menu_error error: menu_error
}); });
} };
return false; return false;
}; };
@ -69,76 +69,25 @@ function page_orders() {
function notifications() { function notifications() {
return false; return false;
} };
function menu_responce(data, status, xhr) {
// Обработка ответов
function menu_success(data, status) { main_response(data, status, xhr);
};
function menu_success(data, status, xhr) {
// Обработка ответов от удавшихся запросов // Обработка ответов от удавшихся запросов
// Основной блок menu_responce(data, status, xhr);
if (data.main !== undefined) { };
// Инициализация
main = document.getElementsByTagName('main')[0];
// Обновление документа function menu_error(data, status, xhr) {
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
}
// Заголовок
if (data.title !== undefined) {
// Запись
document.title = data.title;
}
// Перенаправление
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
}
// CSRF-токен
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
}
}
function menu_error(data, status) {
// Обработка ответов от неудавшихся запросов // Обработка ответов от неудавшихся запросов
// Инициализация // Инициализация
data = data.responseJSON; data = data.responseJSON;
// Основной блок menu_responce(data, status, xhr);
if (data.main !== undefined) { };
// Инициализация
main = document.getElementsByTagName('main')[0];
// Обновление окна результатов поиска
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
}
// Заголовок
if (data.title !== undefined) {
// Запись
document.title = data.title;
}
// Перенаправление
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
}
// CSRF-токен
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
}
}

View File

@ -73,76 +73,63 @@ function notification_stream(preload = 0) {
// Предзагрузка уведомлений // Предзагрузка уведомлений
notification_stream(1); notification_stream(1);
function notification_response_success(data, status) { function notification_response(data, status, xhr) {
// Кнопка уведомлений // Обработка ответов
if (data.button !== undefined) {
// Инициализация
button_old = document.getElementById('notification_button');
// Запись main_response(data, status, xhr);
button_old.insertAdjacentHTML("beforebegin", data.button); };
// Запись function notification_response_success(data, status, xhr) {
button_old.remove(); // Обработка ответов от удавшихся запросов
// Реинициализация if (data !== undefined) {
$('#notification_button').dropdown().init(); // Получены данные с сервера
}
// Панель уведомлений // Кнопка уведомлений
if (data.panel !== undefined) { if (data.button !== undefined) {
// Инициализация // Инициализация
panel = document.getElementById('notification_button_panel'); button_old = document.getElementById('notification_button');
// Обновление документа // Запись
panel.innerHTML = data.panel; button_old.insertAdjacentHTML("beforebegin", data.button);
// Реинициализация // Запись
reinitialization(panel); button_old.remove();
}
// Всплывающее окно // Реинициализация
if (data.popup !== undefined && data.popup['html'] !== undefined && data.popup['id'] !== undefined) { $('#notification_button').dropdown().init();
// Инициализация };
popup = document.getElementById('notification_popup');
// Генерация // Панель уведомлений
notification_popup_create(data.popup['html'], data.popup['id']); if (data.panel !== undefined) {
} // Инициализация
panel = document.getElementById('notification_button_panel');
notification_response(data, status); // Обновление документа
} panel.innerHTML = data.panel;
// Реинициализация
reinitialization(panel);
};
// Всплывающее окно
if (data.popup !== undefined && data.popup['html'] !== undefined && data.popup['id'] !== undefined) {
// Инициализация
popup = document.getElementById('notification_popup');
// Генерация
notification_popup_create(data.popup['html'], data.popup['id']);
};
};
notification_response(data, status, xhr);
};
function notification_response_error(data, status, xhr) {
// Обработка ответов от неудавшихся запросов
function notification_response_error(data, status) {
// Инициализация // Инициализация
data = data.responseJSON; data = data.responseJSON;
notification_response(data, status); notification_response(data, status, xhr);
} };
function notification_response(data, status) {
// Основной блок
if (data.main !== undefined) {
// Инициализация
main = document.getElementsByTagName('main')[0];
// Обновление документа
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
};
// Перенаправление
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
};
// CSRF-токен
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
};
}

View File

@ -1,42 +1,20 @@
function orders_response(data, status, xhr) {
function orders_response(data, status) {
// Обработка ответов // Обработка ответов
// Основной блок main_response(data, status, xhr);
if (data.main !== undefined) { };
main = document.getElementsByTagName('main')[0];
// Обновление документа function orders_response_success(data, status, xhr) {
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
}
// Перенаправление
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
}
// CSRF-токен
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
}
}
function orders_response_success(data, status) {
// Обработка ответов от удавшихся запросов // Обработка ответов от удавшихся запросов
orders_response(data, status); orders_response(data, status, xhr);
} };
function orders_response_error(data, status) { function orders_response_error(data, status, xhr) {
// Обработка ответов от неудавшихся запросов // Обработка ответов от неудавшихся запросов
// Инициализвация // Инициализвация
data = data.responseJSON; data = data.responseJSON;
orders_response(data, status); orders_response(data, status, xhr);
} };

View File

@ -14,16 +14,16 @@ function order_init(order_key) {
if ((target === undefined || target.children[1] === undefined || target.children[1].children[0] === undefined) && !target.classList.contains('dropdown-divider')) { if ((target === undefined || target.children[1] === undefined || target.children[1].children[0] === undefined) && !target.classList.contains('dropdown-divider')) {
supplies_are_confirmed = false; supplies_are_confirmed = false;
} };
} };
if (supplies_are_confirmed) { if (supplies_are_confirmed) {
button.classList.remove('disabled'); button.classList.remove('disabled');
} };
return false; return false;
} };
function order_accept(order_key) { function order_accept(order_key) {
$.ajax({ $.ajax({
@ -38,7 +38,7 @@ function order_accept(order_key) {
}); });
return false; return false;
} };
function orders_supply_edit(supply_key, order_key) { function orders_supply_edit(supply_key, order_key) {
// Инициализация // Инициализация
@ -56,8 +56,8 @@ function orders_supply_edit(supply_key, order_key) {
// Если это кнопка конкретно с этого заказа // Если это кнопка конкретно с этого заказа
rows[i].classList.remove('row_supply_active'); rows[i].classList.remove('row_supply_active');
} };
} };
// Активация выбранной кнопки // Активация выбранной кнопки
supply.classList.add('row_supply_active'); supply.classList.add('row_supply_active');
@ -72,202 +72,205 @@ function orders_supply_edit(supply_key, order_key) {
data: { data: {
'_csrf': yii.getCsrfToken() '_csrf': yii.getCsrfToken()
}, },
success: function (data, status) { success: function (data, statu, xhrs) {
// Удаление индикатора загрузки // Удаление индикатора загрузки
panel.innerHTML = ''; panel.innerHTML = '';
// Идентификатор if (data !== undefined) {
if (document.getElementById(supply.getAttribute('id') + '_id') === null) { // Получены данные с сервера
// Инициализация контейнера // Идентификатор
let container = document.createElement('div'); if (document.getElementById(supply.getAttribute('id') + '_id') === null) {
container.setAttribute('id', supply.getAttribute('id') + '_id'); // Инициализация контейнера
container.setAttribute('class', 'row mb-1 px-3'); let container = document.createElement('div');
container.setAttribute('id', supply.getAttribute('id') + '_id');
container.setAttribute('class', 'row mb-1 px-3');
// Инициализация названия // Инициализация названия
let name = document.createElement('p'); let name = document.createElement('p');
name.setAttribute('id', supply.getAttribute('id') + '_id_name'); name.setAttribute('id', supply.getAttribute('id') + '_id_name');
name.setAttribute('class', 'col-auto px-0 ml-0 mr-2'); name.setAttribute('class', 'col-auto px-0 ml-0 mr-2');
name.innerText = 'Идентификатор:'; name.innerText = 'Идентификатор:';
// Инициализация идентификатора // Инициализация идентификатора
let text = document.createElement('p'); let text = document.createElement('p');
text.setAttribute('id', supply.getAttribute('id') + '_id_value'); text.setAttribute('id', supply.getAttribute('id') + '_id_value');
text.setAttribute('class', 'col-auto px-0 mx-0 font-weight-bold'); text.setAttribute('class', 'col-auto px-0 mx-0 font-weight-bold');
if (data.id !== undefined) { if (data.id !== undefined) {
text.innerText = '#' + data.id; text.innerText = '#' + data.id;
} else { } else {
text.innerText = 'Неизвестно'; text.innerText = 'Неизвестно';
} };
// Запись в документ // Запись в документ
panel.appendChild(container); panel.appendChild(container);
container.appendChild(name); container.appendChild(name);
container.appendChild(text); container.appendChild(text);
};
// // Разделитель статического информационного блока от блока с динамическими данными
// if (document.getElementById(supply.getAttribute('id') + '_info_divider') === null) {
// // Инициализация контейнера
// let divider = document.createElement('div');
// divider.setAttribute('id', supply.getAttribute('id') + '_info_divider');
// divider.setAttribute('class', 'dropdown-divider mb-2');;
// // Запись в документ
// panel.appendChild(divider);
// };
// Цена
if (document.getElementById(supply.getAttribute('id') + '_cost') === null) {
// Инициализация контейнера
let container = document.createElement('div');
container.setAttribute('id', supply.getAttribute('id') + '_cost');
container.setAttribute('class', 'row px-3');
// Инициализация названия
let name = document.createElement('p');
name.setAttribute('id', supply.getAttribute('id') + '_cost_name');
name.setAttribute('class', 'col-auto px-0 ml-0 mr-2');
name.innerText = 'Цена';
// Инициализация поля
let input = document.createElement('input');
input.setAttribute('id', supply.getAttribute('id') + '_cost_input');
input.setAttribute('class', 'col-2 text-center form-control-plaintext');
input.setAttribute('type', 'number');
input.setAttribute('onchange', 'return orders_supply_cost_edit(' + supply_key + ', this);')
if (data.cost !== undefined) {
input.setAttribute('value', data.cost);
} else {
input.setAttribute('value', 0);
};
input.setAttribute('aria-invalid', 'false');
// Инициализация дополнительных данных
let info = document.createElement('p');
info.setAttribute('class', 'col-auto px-0 ml-2 mr-0');
info.innerText = 'рублей';
// Запись в документ
panel.appendChild(container);
container.appendChild(name);
container.appendChild(input);
container.appendChild(info);
};
// Время доставки
if (document.getElementById(supply.getAttribute('id') + '_time') === null) {
// Инициализация контейнера
let container = document.createElement('div');
container.setAttribute('id', supply.getAttribute('id') + '_time');
container.setAttribute('class', 'row mb-2 px-3');
// Инициализация названия
let name = document.createElement('p');
name.setAttribute('id', supply.getAttribute('id') + '_time_name');
name.setAttribute('class', 'col-auto px-0 ml-0 mr-2');
name.innerText = 'Время';
// Инициализация поля
let input = document.createElement('input');
input.setAttribute('id', supply.getAttribute('id') + '_time_input');
input.setAttribute('class', 'col-1 text-center form-control-plaintext');
input.setAttribute('type', 'number');
input.setAttribute('onchange', 'return orders_supply_time_edit(' + supply_key + ', this);')
if (data.time !== undefined) {
input.setAttribute('value', data.time);
} else {
input.setAttribute('value', 0);
};
input.setAttribute('aria-invalid', 'false');
// Инициализация дополнительных данных
let info = document.createElement('p');
info.setAttribute('class', 'col-auto px-0 ml-2 mr-0');
info.innerText = 'дней';
// Запись в документ
panel.appendChild(container);
container.appendChild(name);
container.appendChild(input);
container.appendChild(info);
};
// Комментарий
if (document.getElementById(supply.getAttribute('id') + '_comm') === null) {
// Инициализация контейнера
let container = document.createElement('div');
container.setAttribute('id', supply.getAttribute('id') + '_comm');
container.setAttribute('class', 'row mb-3 px-3');
// Инициализация поля
let textarea = document.createElement('textarea');
textarea.setAttribute('id', supply.getAttribute('id') + '_comm_input');
textarea.setAttribute('class', 'col-12 form-control');
textarea.setAttribute('cols', '50');
textarea.setAttribute('rows', '3');
textarea.setAttribute('onchange', 'return orders_supply_comm_edit(' + supply_key + ', this);')
if (data.comm === undefined) {
textarea.value = 'Комментарий к заказу';
} else {
textarea.value = data.comm;
};
// Запись в документ
panel.appendChild(container);
container.appendChild(textarea);
};
// Статус подтверждения
if (document.getElementById(supply.getAttribute('id') + '_stts') === null) {
// Инициализация контейнера
let container = document.createElement('div');
container.setAttribute('id', supply.getAttribute('id') + '_stts');
container.setAttribute('class', 'row px-3');
// Инициализация индикатора
let span = document.createElement('span');
span.setAttribute('id', supply.getAttribute('id') + '_stts_indicator_icon');
span.setAttribute('class', 'ml-auto my-auto fas fa-check');
// Инициализация кнопки
let button = document.createElement('a');
button.setAttribute('id', supply.getAttribute('id') + '_stts_button');
button.setAttribute('type', 'button');
button.setAttribute('role', 'button');
button.setAttribute('onclick', 'return orders_supply_comm_write(this, \'' + supply_key + '\', \'' + order_key + '\');');
if (data.stts === undefined || data.stts == 0) {
button.setAttribute('class', 'col-12 btn button_blue button_clean');
button.innerText = 'Подтвердить';
} else {
button.setAttribute('class', 'col-12 btn button_blue button_clean disabled');
button.innerText = 'Подтверждено';
// Инициализация
let title = document.getElementById(supply.getAttribute('id') + '_stts_indicator');
if (title.children[0] === undefined) {
// Индикатор не найден
// Запись индикатора
title.appendChild(span);
};
};
// Запись в документ
panel.appendChild(container);
container.appendChild(button);
// Реинициализация
order_init(order_key);
};
}; };
// // Разделитель статического информационного блока от блока с динамическими данными orders_response_success(data, status, xhr);
// if (document.getElementById(supply.getAttribute('id') + '_info_divider') === null) {
// // Инициализация контейнера
// let divider = document.createElement('div');
// divider.setAttribute('id', supply.getAttribute('id') + '_info_divider');
// divider.setAttribute('class', 'dropdown-divider mb-2');;
// // Запись в документ
// panel.appendChild(divider);
// };
// Цена
if (document.getElementById(supply.getAttribute('id') + '_cost') === null) {
// Инициализация контейнера
let container = document.createElement('div');
container.setAttribute('id', supply.getAttribute('id') + '_cost');
container.setAttribute('class', 'row px-3');
// Инициализация названия
let name = document.createElement('p');
name.setAttribute('id', supply.getAttribute('id') + '_cost_name');
name.setAttribute('class', 'col-auto px-0 ml-0 mr-2');
name.innerText = 'Цена';
// Инициализация поля
let input = document.createElement('input');
input.setAttribute('id', supply.getAttribute('id') + '_cost_input');
input.setAttribute('class', 'col-2 text-center form-control-plaintext');
input.setAttribute('type', 'number');
input.setAttribute('onchange', 'return orders_supply_cost_edit(' + supply_key + ', this);')
if (data.cost !== undefined) {
input.setAttribute('value', data.cost);
} else {
input.setAttribute('value', 0);
}
input.setAttribute('aria-invalid', 'false');
// Инициализация дополнительных данных
let info = document.createElement('p');
info.setAttribute('class', 'col-auto px-0 ml-2 mr-0');
info.innerText = 'рублей';
// Запись в документ
panel.appendChild(container);
container.appendChild(name);
container.appendChild(input);
container.appendChild(info);
};
// Время доставки
if (document.getElementById(supply.getAttribute('id') + '_time') === null) {
// Инициализация контейнера
let container = document.createElement('div');
container.setAttribute('id', supply.getAttribute('id') + '_time');
container.setAttribute('class', 'row mb-2 px-3');
// Инициализация названия
let name = document.createElement('p');
name.setAttribute('id', supply.getAttribute('id') + '_time_name');
name.setAttribute('class', 'col-auto px-0 ml-0 mr-2');
name.innerText = 'Время';
// Инициализация поля
let input = document.createElement('input');
input.setAttribute('id', supply.getAttribute('id') + '_time_input');
input.setAttribute('class', 'col-1 text-center form-control-plaintext');
input.setAttribute('type', 'number');
input.setAttribute('onchange', 'return orders_supply_time_edit(' + supply_key + ', this);')
if (data.time !== undefined) {
input.setAttribute('value', data.time);
} else {
input.setAttribute('value', 0);
}
input.setAttribute('aria-invalid', 'false');
// Инициализация дополнительных данных
let info = document.createElement('p');
info.setAttribute('class', 'col-auto px-0 ml-2 mr-0');
info.innerText = 'дней';
// Запись в документ
panel.appendChild(container);
container.appendChild(name);
container.appendChild(input);
container.appendChild(info);
};
// Комментарий
if (document.getElementById(supply.getAttribute('id') + '_comm') === null) {
// Инициализация контейнера
let container = document.createElement('div');
container.setAttribute('id', supply.getAttribute('id') + '_comm');
container.setAttribute('class', 'row mb-3 px-3');
// Инициализация поля
let textarea = document.createElement('textarea');
textarea.setAttribute('id', supply.getAttribute('id') + '_comm_input');
textarea.setAttribute('class', 'col-12 form-control');
textarea.setAttribute('cols', '50');
textarea.setAttribute('rows', '3');
textarea.setAttribute('onchange', 'return orders_supply_comm_edit(' + supply_key + ', this);')
if (data.comm === undefined) {
textarea.value = 'Комментарий к заказу';
} else {
textarea.value = data.comm;
}
// Запись в документ
panel.appendChild(container);
container.appendChild(textarea);
};
// Статус подтверждения
if (document.getElementById(supply.getAttribute('id') + '_stts') === null) {
// Инициализация контейнера
let container = document.createElement('div');
container.setAttribute('id', supply.getAttribute('id') + '_stts');
container.setAttribute('class', 'row px-3');
// Инициализация индикатора
let span = document.createElement('span');
span.setAttribute('id', supply.getAttribute('id') + '_stts_indicator_icon');
span.setAttribute('class', 'ml-auto my-auto fas fa-check');
// Инициализация кнопки
let button = document.createElement('a');
button.setAttribute('id', supply.getAttribute('id') + '_stts_button');
button.setAttribute('type', 'button');
button.setAttribute('role', 'button');
button.setAttribute('onclick', 'return orders_supply_comm_write(this, \'' + supply_key + '\', \'' + order_key + '\');');
if (data.stts === undefined || data.stts == 0) {
button.setAttribute('class', 'col-12 btn button_blue button_clean');
button.innerText = 'Подтвердить';
} else {
button.setAttribute('class', 'col-12 btn button_blue button_clean disabled');
button.innerText = 'Подтверждено';
// Инициализация
let title = document.getElementById(supply.getAttribute('id') + '_stts_indicator');
if (title.children[0] === undefined) {
// Индикатор не найден
// Запись индикатора
title.appendChild(span);
}
}
// Запись в документ
panel.appendChild(container);
container.appendChild(button);
// Реинициализация
order_init(order_key);
};
orders_response_success(data, status);
}, },
error: orders_response_error error: orders_response_error
}); });
return false; return false;
} };
function orders_supply_comm_write(button, supply_key, order_key) { function orders_supply_comm_write(button, supply_key, order_key) {
// Инициализация // Инициализация
@ -281,7 +284,7 @@ function orders_supply_comm_write(button, supply_key, order_key) {
'_csrf': yii.getCsrfToken(), '_csrf': yii.getCsrfToken(),
'stts': 'accepted' 'stts': 'accepted'
}, },
success: function (data, status) { success: function (data, status, xhr) {
// Инициализация индикатора // Инициализация индикатора
let span = document.createElement('span'); let span = document.createElement('span');
span.setAttribute('id', supply.getAttribute('id') + '_stts_indicator_icon'); span.setAttribute('id', supply.getAttribute('id') + '_stts_indicator_icon');
@ -302,23 +305,24 @@ function orders_supply_comm_write(button, supply_key, order_key) {
// Запись индикатора // Запись индикатора
title.appendChild(span); title.appendChild(span);
} };
// Реинициализация // Реинициализация
order_init(order_key); order_init(order_key);
} };
orders_response_success(data, status); orders_response_success(data, status, xhr);
}, },
error: orders_response_error error: orders_response_error
}); });
return false; return false;
} };
/** /**
* Изменить цену товара в заказе * Изменить цену товара в заказе
*/ */
function orders_supply_cost_edit(supply_key, input) { function orders_supply_cost_edit(supply_key, input) {
if (supply_key !== undefined && input !== undefined) { if (supply_key !== undefined && input !== undefined) {
// Обработка входных параметров // Обработка входных параметров
@ -330,27 +334,27 @@ function orders_supply_comm_write(button, supply_key, order_key) {
'_csrf': yii.getCsrfToken(), '_csrf': yii.getCsrfToken(),
'cost': input.value 'cost': input.value
}, },
success: function (data, status) { success: function (data, status, xhr) {
if (data.cost !== undefined) { if (data.cost !== undefined) {
input.value = data.cost; input.value = data.cost;
} };
orders_response_success(data, status); orders_response_success(data, status, xhr);
}, },
error: orders_response_error error: orders_response_error
}); });
} };
// Пересчитывание стоимости // Пересчитывание стоимости
cart_cost_calculate(); cart_cost_calculate();
return false; return false;
} };
/** /**
* Изменить время доставки товара в заказе * Изменить время доставки товара в заказе
*/ */
function orders_supply_time_edit(supply_key, input) { function orders_supply_time_edit(supply_key, input) {
if (supply_key !== undefined && input !== undefined) { if (supply_key !== undefined && input !== undefined) {
// Обработка входных параметров // Обработка входных параметров
@ -362,27 +366,31 @@ function orders_supply_comm_write(button, supply_key, order_key) {
'_csrf': yii.getCsrfToken(), '_csrf': yii.getCsrfToken(),
'time': input.value 'time': input.value
}, },
success: function (data, status) { success: function (data, status, xhr) {
if (data.time !== undefined) { if (data !== undefined) {
input.value = data.time; // Получены данные с сервера
}
orders_response_success(data, status); if (data.time !== undefined) {
input.value = data.time;
};
};
orders_response_success(data, status, xhr);
}, },
error: orders_response_error error: orders_response_error
}); });
} };
// Пересчитывание стоимости // Пересчитывание стоимости
cart_cost_calculate(); cart_cost_calculate();
return false; return false;
} };
/** /**
* Изменить комментарий товара в заказе * Изменить комментарий товара в заказе
*/ */
function orders_supply_comm_edit(supply_key, input) { function orders_supply_comm_edit(supply_key, input) {
if (supply_key !== undefined && input !== undefined) { if (supply_key !== undefined && input !== undefined) {
// Обработка входных параметров // Обработка входных параметров
@ -395,18 +403,22 @@ function orders_supply_comm_write(button, supply_key, order_key) {
'comm': input.value 'comm': input.value
}, },
success: function (data, status) { success: function (data, status) {
if (data.comm !== undefined) { if (data !== undefined) {
input.value = data.comm; // Получены данные с сервера
}
if (data.comm !== undefined) {
input.value = data.comm;
};
};
orders_response_success(data, status); orders_response_success(data, status);
}, },
error: orders_response_error error: orders_response_error
}); });
} };
// Пересчитывание стоимости // Пересчитывание стоимости
cart_cost_calculate(); cart_cost_calculate();
return false; return false;
} };

View File

@ -16,44 +16,28 @@ function product_image_choose(key, wrap) {
} else { } else {
label.classList.remove('active'); label.classList.remove('active');
label.checked = 'false'; label.checked = 'false';
} };
} };
} };
} };
function product_response(data, status, xhr) {
// Обработка ответов
main_response(data, status, xhr);
};
function product_response_success(data, status, xhr) {
// Обработка ответов от удавшихся запросов
function product_response_success(data, status) {
product_response(data, status); product_response(data, status);
} };
function product_response_error(data, status, xhr) {
// Обработка ответов от неудавшихся запросов
function product_response_error(data, status) {
// Инициализация // Инициализация
data = data.responseJSON; data = data.responseJSON;
product_response(data, status); product_response(data, status, xhr);
} };
function product_response(data, status) {
// Основной блок
if (data.main !== undefined) {
// Инициализация
main = document.getElementsByTagName('main')[0];
// Обновление документа
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
};
// Перенаправление
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
};
// CSRF-токен
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
};
}

View File

@ -5,10 +5,10 @@ function product_panel_title_edit(catn, element) {
element.removeAttribute('onclick'); element.removeAttribute('onclick');
return false; return false;
} };
return true; return true;
} };
function product_panel_title_save(catn, element) { function product_panel_title_save(catn, element) {
if (catn !== null && catn !== undefined && element !== null && element !== undefined) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) {
@ -29,26 +29,31 @@ function product_panel_title_save(catn, element) {
'_csrf': yii.getCsrfToken(), '_csrf': yii.getCsrfToken(),
'text': text 'text': text
}, },
success: function (data, status) { success: function (data, status, xhr) {
// Заголовок
if (data.name !== undefined && element !== null && element !== undefined) {
// Обновление заголовка
element.innerHTML = data.name;
// Запись аттрибута if (data !== undefined) {
element.setAttribute('onclick', 'return product_panel_title_edit(\'' + catn + '\', this);'); // Получены данные с сервера
// Заголовок
if (data.name !== undefined && element !== null && element !== undefined) {
// Обновление заголовка
element.innerHTML = data.name;
// Запись аттрибута
element.setAttribute('onclick', 'return product_panel_title_edit(\'' + catn + '\', this);');
};
}; };
product_response_success(data, status); product_response_success(data, status, xhr);
}, },
error: product_response_error error: product_response_error
}); });
return false; return false;
} };
return true; return true;
} };
function product_panel_catn_edit(catn, element, redirect = false) { function product_panel_catn_edit(catn, element, redirect = false) {
if (catn !== null && catn !== undefined && element !== null && element !== undefined) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) {
@ -57,10 +62,10 @@ function product_panel_catn_edit(catn, element, redirect = false) {
element.removeAttribute('onclick'); element.removeAttribute('onclick');
return false; return false;
} };
return true; return true;
} };
function product_panel_catn_save(catn, element, redirect = false) { function product_panel_catn_save(catn, element, redirect = false) {
if (catn !== null && catn !== undefined && element !== null && element !== undefined) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) {
@ -81,25 +86,29 @@ function product_panel_catn_save(catn, element, redirect = false) {
'_csrf': yii.getCsrfToken(), '_csrf': yii.getCsrfToken(),
'text': text 'text': text
}, },
success: function (data, status) { success: function (data, status, xhr) {
// Заголовок if (data !== undefined) {
if (data.catn !== undefined && element !== null && element !== undefined) { // Получены данные с сервера
if (redirect) {
// Перенаправление // Заголовок
history.pushState({}, '/product/' + catn, '/product/' + data.catn); if (data.catn !== undefined && element !== null && element !== undefined) {
} if (redirect) {
// Перенаправление
history.pushState({}, '/product/' + catn, '/product/' + data.catn);
};
};
}; };
product_response_success(data, status); product_response_success(data, status, xhr);
}, },
error: product_response_error error: product_response_error
}); });
return false; return false;
} };
return true; return true;
} };
function product_panel_dimensions_edit(catn, element, dimension) { function product_panel_dimensions_edit(catn, element, dimension) {
if (catn !== null && catn !== undefined && element !== null && element !== undefined) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) {
@ -117,10 +126,10 @@ function product_panel_dimensions_edit(catn, element, dimension) {
product_panel_handler_save(product_panel_dimensions_save, catn, input, dimension); product_panel_handler_save(product_panel_dimensions_save, catn, input, dimension);
return false; return false;
} };
return true; return true;
} };
function product_panel_dimensions_save(catn, element, dimension) { function product_panel_dimensions_save(catn, element, dimension) {
if (catn !== null && catn !== undefined && element !== null && element !== undefined) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) {
@ -135,7 +144,7 @@ function product_panel_dimensions_save(catn, element, dimension) {
if (text.length === 0) { if (text.length === 0) {
text = '0'; text = '0';
} };
span.innerText = text; span.innerText = text;
@ -150,26 +159,30 @@ function product_panel_dimensions_save(catn, element, dimension) {
'text': text, 'text': text,
'dimension': dimension 'dimension': dimension
}, },
success: function (data, status) { success: function (data, status, xhr) {
// Заголовок if (data !== undefined) {
if (data.dimension !== undefined && span !== null && span !== undefined) { // Получены данные с сервера
// Обновление заголовка
span.innerText = data.dimension;
// Запись аттрибута // Заголовок
span.setAttribute('onclick', 'return product_panel_dimensions_edit(\'' + catn + '\', this, \'' + dimension + '\');'); if (data.dimension !== undefined && span !== null && span !== undefined) {
// Обновление заголовка
span.innerText = data.dimension;
// Запись аттрибута
span.setAttribute('onclick', 'return product_panel_dimensions_edit(\'' + catn + '\', this, \'' + dimension + '\');');
};
}; };
product_response_success(data, status); product_response_success(data, status, xhr);
}, },
error: product_response_error error: product_response_error
}); });
return false; return false;
} };
return true; return true;
} };
function product_panel_weight_edit(catn, element) { function product_panel_weight_edit(catn, element) {
@ -188,10 +201,10 @@ function product_panel_weight_edit(catn, element) {
product_panel_handler_save(product_panel_weight_save, catn, input); product_panel_handler_save(product_panel_weight_save, catn, input);
return false; return false;
} };
return true; return true;
} };
function product_panel_weight_save(catn, element) { function product_panel_weight_save(catn, element) {
if (catn !== null && catn !== undefined && element !== null && element !== undefined) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) {
@ -206,7 +219,7 @@ function product_panel_weight_save(catn, element) {
if (text.length === 0) { if (text.length === 0) {
text = '0'; text = '0';
} };
span.innerText = text; span.innerText = text;
@ -220,26 +233,30 @@ function product_panel_weight_save(catn, element) {
'_csrf': yii.getCsrfToken(), '_csrf': yii.getCsrfToken(),
'text': text 'text': text
}, },
success: function (data, status) { success: function (data, status, xhr) {
// Заголовок if (data !== undefined) {
if (data.weight !== undefined && span !== null && span !== undefined) { // Получены данные с сервера
// Обновление заголовка
span.innerText = data.weight;
// Запись аттрибута // Заголовок
span.setAttribute('onclick', 'return product_panel_weight_edit(\'' + catn + '\', this);'); if (data.weight !== undefined && span !== null && span !== undefined) {
// Обновление заголовка
span.innerText = data.weight;
// Запись аттрибута
span.setAttribute('onclick', 'return product_panel_weight_edit(\'' + catn + '\', this);');
};
}; };
product_response_success(data, status); product_response_success(data, status, xhr);
}, },
error: product_response_error error: product_response_error
}); });
return false; return false;
} };
return true; return true;
} };
function product_panel_description_edit(catn, element) { function product_panel_description_edit(catn, element) {
if (catn !== null && catn !== undefined && element !== null && element !== undefined) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) {
@ -248,10 +265,10 @@ function product_panel_description_edit(catn, element) {
element.removeAttribute('onclick'); element.removeAttribute('onclick');
return false; return false;
} };
return true; return true;
} };
function product_panel_description_save(catn, element) { function product_panel_description_save(catn, element) {
if (catn !== null && catn !== undefined && element !== null && element !== undefined) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) {
@ -272,26 +289,30 @@ function product_panel_description_save(catn, element) {
'_csrf': yii.getCsrfToken(), '_csrf': yii.getCsrfToken(),
'text': text 'text': text
}, },
success: function (data, status) { success: function (data, status, xhr) {
// Заголовок if (data !== undefined) {
if (data.description !== undefined && element !== null && element !== undefined) { // Получены данные с сервера
// Обновление заголовка
element.innerHTML = data.description;
// Запись аттрибута // Заголовок
element.setAttribute('onclick', 'return product_panel_description_edit(\'' + catn + '\', this);'); if (data.description !== undefined && element !== null && element !== undefined) {
// Обновление заголовка
element.innerHTML = data.description;
// Запись аттрибута
element.setAttribute('onclick', 'return product_panel_description_edit(\'' + catn + '\', this);');
};
}; };
product_response_success(data, status); product_response_success(data, status, xhr);
}, },
error: product_response_error error: product_response_error
}); });
return false; return false;
} };
return true; return true;
} };
function product_panel_images_write(catn, element) { function product_panel_images_write(catn, element) {
if (catn !== null && catn !== undefined && element !== null && element !== undefined) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) {
@ -301,7 +322,7 @@ function product_panel_images_write(catn, element) {
data.append('_csrf', yii.getCsrfToken()); data.append('_csrf', yii.getCsrfToken());
for (i = 0; i < element.files.length; i++) { for (i = 0; i < element.files.length; i++) {
data.append('images[' + i + ']', element.files[i]); data.append('images[' + i + ']', element.files[i]);
} };
$.ajax({ $.ajax({
url: '/product/' + catn + '/write/image', url: '/product/' + catn + '/write/image',
@ -315,10 +336,10 @@ function product_panel_images_write(catn, element) {
}); });
return false; return false;
} };
return true; return true;
} };
function product_panel_images_delete(catn, index) { function product_panel_images_delete(catn, index) {
if (catn !== null && catn !== undefined && index !== null && index !== undefined) { if (catn !== null && catn !== undefined && index !== null && index !== undefined) {
@ -335,10 +356,10 @@ function product_panel_images_delete(catn, index) {
}); });
return false; return false;
} };
return true; return true;
} };
function product_panel_images_cover_write(catn, index) { function product_panel_images_cover_write(catn, index) {
if (catn !== null && catn !== undefined && index !== null && index !== undefined) { if (catn !== null && catn !== undefined && index !== null && index !== undefined) {
@ -355,10 +376,10 @@ function product_panel_images_cover_write(catn, index) {
}); });
return false; return false;
} };
return true; return true;
} };
function product_panel_handler_save(save, catn, element, ...vars) { function product_panel_handler_save(save, catn, element, ...vars) {
if (save !== undefined && save !== null) { if (save !== undefined && save !== null) {
@ -366,9 +387,9 @@ function product_panel_handler_save(save, catn, element, ...vars) {
if (event.target.id !== element.id) { if (event.target.id !== element.id) {
save(catn, element, ...vars); save(catn, element, ...vars);
document.body.removeEventListener('click', product_panel_handler_save_function, true); document.body.removeEventListener('click', product_panel_handler_save_function, true);
} };
} };
document.body.addEventListener('click', product_panel_handler_save_function, true); document.body.addEventListener('click', product_panel_handler_save_function, true);
} };
} };

View File

@ -6,14 +6,14 @@ function page_profile_supplies(form, panel) {
if (panel !== undefined) { if (panel !== undefined) {
form.panel = panel; form.panel = panel;
} };
} else { } else {
form = new FormData(form); form = new FormData(form);
if (panel !== undefined) { if (panel !== undefined) {
form.append('panel', panel); form.append('panel', panel);
} };
} };
$.ajax({ $.ajax({
url: '/profile/supplies', url: '/profile/supplies',
@ -25,7 +25,7 @@ function page_profile_supplies(form, panel) {
}); });
return false; return false;
} };
function page_profile_supplies_import_excel(form, panel) { function page_profile_supplies_import_excel(form, panel) {
if (form === undefined) { if (form === undefined) {
@ -35,14 +35,14 @@ function page_profile_supplies_import_excel(form, panel) {
if (panel !== undefined) { if (panel !== undefined) {
form.panel = panel; form.panel = panel;
} };
} else { } else {
form = new FormData(form); form = new FormData(form);
if (panel !== undefined) { if (panel !== undefined) {
form.append('panel', panel); form.append('panel', panel);
} };
} };
$.ajax({ $.ajax({
url: '/profile/import', url: '/profile/import',
@ -66,7 +66,7 @@ function page_profile_settings(form, panel) {
if (panel !== undefined) { if (panel !== undefined) {
form.panel = panel; form.panel = panel;
} };
} else { } else {
form = $(form).serializeArray(); form = $(form).serializeArray();
@ -74,7 +74,7 @@ function page_profile_settings(form, panel) {
name: "panel", name: "panel",
value: panel value: panel
}); });
} };
$.ajax({ $.ajax({
url: '/profile', url: '/profile',
@ -89,7 +89,7 @@ function page_profile_settings(form, panel) {
initDropdownOem(); initDropdownOem();
return false; return false;
} };
function page_profile_monitoring(change = 1, panel) { function page_profile_monitoring(change = 1, panel) {
// Инициализация // Инициализация
@ -100,7 +100,7 @@ function page_profile_monitoring(change = 1, panel) {
search = 1; search = 1;
} else { } else {
search = +search + change; search = +search + change;
} };
// Предобработка // Предобработка
url.searchParams.set('search', search); url.searchParams.set('search', search);
@ -132,45 +132,34 @@ function page_profile_monitoring(change = 1, panel) {
return false; return false;
}; };
function page_profile_response_success(data, status) {
// Активная панель
if (data.panel_selected !== undefined) {
// Активация
document.getElementById(data.panel_selected).click()
}
// Перенаправление function page_profile_response(data, status, xhr) {
if (data.redirect !== undefined) { // Обработка ответов
// Перенаправление
history.pushState({}, document.title, data.redirect);
}
page_profile_response(data, status); main_response(data, status, xhr);
}; };
function page_profile_response_error(data, status) { function page_profile_response_success(data, status, xhr) {
// Обработка ответов от удавшихся запросов
if (data !== undefined) {
// Получены данные с сервера
// Активная панель
if (data.panel_selected !== undefined) {
// Активация
document.getElementById(data.panel_selected).click();
};
};
page_profile_response(data, status, xhr);
};
function page_profile_response_error(data, status, xhr) {
// Обработка ответов от неудавшихся запросов
// Инициализация // Инициализация
data = data.responseJSON; data = data.responseJSON;
page_profile_response(data, status); page_profile_response(data, status, xhr);
}; };
function page_profile_response(data, status) {
// Основной блок
if (data.main !== undefined) {
// Инициализация
main = document.getElementsByTagName('main')[0];
// Обновление окна результатов поиска
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
}
// CSRF-токен
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
}
}

View File

@ -4,8 +4,8 @@ function initDropdown(id) {
if (dropdown !== null && dropdown.length > 1) { if (dropdown !== null && dropdown.length > 1) {
dropdown.children[0].hidden = true; dropdown.children[0].hidden = true;
} };
} };
initDropdown('account-opts-import_sections_oem'); initDropdown('account-opts-import_sections_oem');
initDropdown('account-opts-delivery_from_terminal'); initDropdown('account-opts-delivery_from_terminal');

View File

@ -11,10 +11,10 @@ function page_profile_panel_notification_create(form, html = 0) {
name: 'Notification[html]', name: 'Notification[html]',
value: html value: html
}); });
} };
return page_profile_panel_write(form); return page_profile_panel_write(form);
} };
function page_profile_panel_settings(form, panel) { function page_profile_panel_settings(form, panel) {
if (form == undefined) { if (form == undefined) {
@ -24,7 +24,7 @@ function page_profile_panel_settings(form, panel) {
if (panel !== undefined) { if (panel !== undefined) {
form.panel = panel; form.panel = panel;
} };
} else { } else {
form = $(form).serializeArray(); form = $(form).serializeArray();
@ -32,10 +32,10 @@ function page_profile_panel_settings(form, panel) {
name: "panel", name: "panel",
value: panel value: panel
}); });
} };
return page_profile_panel_write(form); return page_profile_panel_write(form);
} };
function page_profile_panel_write (form) { function page_profile_panel_write (form) {
$.ajax({ $.ajax({
@ -48,4 +48,4 @@ function page_profile_panel_write (form) {
}); });
return false; return false;
} };

View File

@ -2,6 +2,8 @@ function reinitialization(target) {
// Уничтожает все внешние файлы загруженные внутри блока с переданным ID и загружает их в <head> и <body> // Уничтожает все внешние файлы загруженные внутри блока с переданным ID и загружает их в <head> и <body>
if (target !== undefined) { if (target !== undefined) {
// Цель обозначена
let links = target.getElementsByTagName('link'); let links = target.getElementsByTagName('link');
let scripts = target.getElementsByTagName('script'); let scripts = target.getElementsByTagName('script');
@ -12,7 +14,7 @@ function reinitialization(target) {
new_link.rel = "stylesheet"; new_link.rel = "stylesheet";
document.getElementsByTagName("head")[0].appendChild(new_link); document.getElementsByTagName("head")[0].appendChild(new_link);
link.remove(); link.remove();
} };
// Запись JS // Запись JS
for (script of scripts) { for (script of scripts) {
@ -22,13 +24,13 @@ function reinitialization(target) {
document.getElementsByTagName("body")[0].appendChild(new_script); document.getElementsByTagName("body")[0].appendChild(new_script);
} else { } else {
eval(script.innerText); eval(script.innerText);
} };
// script.remove(); По каким-то причинам не работает, надо бы доделать // script.remove(); По каким-то причинам не работает, надо бы доделать
} };
return true; return true;
} };
return false; return false;
}; };

View File

@ -12,19 +12,19 @@ function product_search(text = '', advanced = 0) {
'advanced': advanced, 'advanced': advanced,
'request': text 'request': text
}, },
success: function (data, status) { success: function (data, statu, xhrs) {
search_panel_success(text, advanced, data, status); search_panel_success(text, advanced, data, status, xhr);
}, },
error: function (data, status) { error: function (data, status) {
search_panel_error(text, advanced, data, status); search_panel_error(text, advanced, data, status, xhr);
}, },
statusCode: search_panel_statusCode() statusCode: search_panel_statusCode
}); });
} else { } else {
// Показ истории поиска // Показ истории поиска
product_search_history(); product_search_history();
} };
}; };
function product_search_history(text = '', advanced = 0) { function product_search_history(text = '', advanced = 0) {
@ -38,14 +38,14 @@ function product_search_history(text = '', advanced = 0) {
'history': true 'history': true
}, },
success: function (data, status) { success: function (data, status) {
search_panel_success(text, advanced, data, status); search_panel_success(text, advanced, data, status, xhr);
}, },
error: function (data, status) { error: function (data, status) {
search_panel_error(text, advanced, data, status); search_panel_error(text, advanced, data, status, xhr);
}, },
statusCode: search_panel_statusCode() statusCode: search_panel_statusCode
}); });
} };
function search_panel_show(line = 'search_line', panel = 'search_line_window') { function search_panel_show(line = 'search_line', panel = 'search_line_window') {
// Показ панели поиска // Показ панели поиска
@ -55,7 +55,7 @@ function search_panel_show(line = 'search_line', panel = 'search_line_window') {
// Открытие // Открытие
$('#' + line).dropdown('show'); $('#' + line).dropdown('show');
} };
function search_panel_hide(line = 'search_line', panel = 'search_line_window') { function search_panel_hide(line = 'search_line', panel = 'search_line_window') {
// Сокрытие панели поиска // Сокрытие панели поиска
@ -65,148 +65,81 @@ function search_panel_hide(line = 'search_line', panel = 'search_line_window') {
// Деактивация // Деактивация
document.getElementById(panel).style.display = 'none'; document.getElementById(panel).style.display = 'none';
};
function search_panel_response(text, advanced, data, status, xhr) {
if (data !== undefined) {
// Получены данные с сервера
// Окно поиска
if (data.panel !== undefined) {
panel = document.getElementById('search_line_window');
// Обновление окна результатов поиска
panel.innerHTML = data.panel;
// Отображение окна (потом надо переделать)
$('#search_line').dropdown('show');
// Реинициализация
reinitialization(panel);
};
// Таймер для повтора запроса
if (data.timer !== undefined) {
// Ожидание перед повторным запросом
if (getCookie('search') !== 'processing') {
// На данный момент нет других запросов поиска
// Запись о существовании запроса
search_panel_statusCode_progress();
// Запрос
setTimeout(product_search, data.timer + '000', text, advanced);
};
};
// Сокрытие окна поиска
if (data.search_line_window_hide === 1) {
search_panel_hide();
};
};
main_response(data, status, xhr);
} }
function search_panel_success(text, advanced, data, status) { function search_panel_success(text, advanced, data, status, xhr) {
// Обработка ответов от удавшихся запросов // Обработка ответов от удавшихся запросов
// Основной блок search_panel_response(text, advanced, data, status, xhr);
if (data.main !== undefined) { };
main = document.getElementsByTagName('main')[0];
// Обновление документа
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
}
// Окно поиска
if (data.panel !== undefined) {
panel = document.getElementById('search_line_window');
// Обновление окна результатов поиска
panel.innerHTML = data.panel;
// Отображение окна (потом надо переделать)
$('#search_line').dropdown('show');
// Реинициализация
reinitialization(panel);
}
// Таймер для повтора запроса
if (data.timer !== undefined) {
// Ожидание перед повторным запросом
if (getCookie('search') !== 'processing') {
// На данный момент нет других запросов поиска
// Запись о существовании запроса
search_panel_statusCode_progress();
// Запрос
setTimeout(product_search, data.timer + '000', text, advanced);
}
}
// Перенаправление
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
}
if (data.responseJSON.hide === 1) {
}
// Сокрытие окна поиска
if (data.search_line_window_hide === 1) {
search_panel_hide();
}
// CSRF-токен
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
}
}
function search_panel_error(text, advanced, data, status) { function search_panel_error(text, advanced, data, status) {
// Обработка ответов от неудавшихся запросов // Обработка ответов от неудавшихся запросов
// Основной блок // Инициализация
if (data.responseJSON.main !== undefined) { data = data.responseJSON;
main = document.getElementsByTagName('main')[0];
// Обновление окна результатов поиска search_panel_response(text, advanced, data, status, xhr);
main.innerHTML = data.main; };
// Реинициализация
reinitialization(main);
}
// Окно поиска
if (data.responseJSON.panel !== undefined) {
panel = document.getElementById('search_line_window');
// Обновление окна результатов поиска
panel.innerHTML = data.responseJSON.panel;
// Отображение окна (потом надо переделать)
$('#search_line').dropdown('show');
// Реинициализация
reinitialization(panel);
}
// Перенаправление
if (data.responseJSON.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.responseJSON.redirect);
}
// Таймер для повтора запроса
if (data.responseJSON.timer !== undefined) {
// Ожидание перед повторным запросом
if (getCookie('search') !== 'processing') {
// На данный момент нет других запросов поиска
// Запись о существовании запроса
search_panel_statusCode_progress();
// Запрос
setTimeout(product_search, data.responseJSON.timer + '000', text, advanced);
}
}
// Сокрытие окна поиска
if (data.responseJSON.hide === 1) {
search_panel_hide();
}
// CSRF-токен
if (data.responseJSON._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data.responseJSON._csrf);
}
}
function search_panel_statusCode() { function search_panel_statusCode() {
return { return {
200: search_panel_statusCode_waiting, 200: search_panel_statusCode_waiting,
404: search_panel_statusCode_waiting, 404: search_panel_statusCode_waiting,
}; };
} };
function search_panel_statusCode_waiting() { function search_panel_statusCode_waiting() {
// Ожидание нового запроса // Ожидание нового запроса
document.cookie = "search=waiting; path=/"; document.cookie = "search=waiting; path=/";
document.body.style.cursor = "unset"; document.body.style.cursor = "unset";
} };
function search_panel_statusCode_progress() { function search_panel_statusCode_progress() {
// Выполнение запроса // Выполнение запроса
document.cookie = "search=processing; path=/"; document.cookie = "search=processing; path=/";
document.body.style.cursor = "progress"; document.body.style.cursor = "progress";
} };

View File

@ -0,0 +1,20 @@
function writeInDevelopment(target) {
// Инициализация буфера
let buffer = target.innerText;
// Запись текста
target.innerText = target.innerText + ' (в разработке)';
// Блокировка от повторного вызова
target.setAttribute('onclick', 'return false;');
setTimeout(function () {
// Возврат изначального текста из буфера
target.innerText = buffer;
// Разблокировка
target.setAttribute('onclick', 'return writeinDevelopment(this);');
}, 3000);
return false;
};

View File

@ -9,19 +9,19 @@ function initTextarea(textarea_id, counter_current_id, counter_maximum_id, disab
if (characterCount < 70) { if (characterCount < 70) {
current.css('color', '#343a40'); current.css('color', '#343a40');
} };
if (characterCount > 160 && characterCount < 179) { if (characterCount > 160 && characterCount < 179) {
current.css('color', '#600000'); current.css('color', '#600000');
} };
if (characterCount > 180 && characterCount < 209) { if (characterCount > 180 && characterCount < 209) {
current.css('color', '#700000'); current.css('color', '#700000');
} };
if (characterCount > 210 && characterCount < 249) { if (characterCount > 210 && characterCount < 249) {
current.css('color', '#c00'); current.css('color', '#c00');
} };
if (characterCount > 250 && characterCount < 299) { if (characterCount > 250 && characterCount < 299) {
current.css('color', '#d00'); current.css('color', '#d00');
} };
if (characterCount > 300) { if (characterCount > 300) {
disable_callable(); disable_callable();
@ -31,10 +31,10 @@ function initTextarea(textarea_id, counter_current_id, counter_maximum_id, disab
current.css('color', '#e00'); current.css('color', '#e00');
} else { } else {
maximum.css('color', 'rgb(210, 0, 0)'); maximum.css('color', 'rgb(210, 0, 0)');
} };
} else { } else {
maximum.css('color', '#343a40'); maximum.css('color', '#343a40');
enable_callable(); enable_callable();
} };
}); });
} };

View File

@ -1,7 +1,7 @@
function tickerInit(target) { function tickerInit(target) {
if (target === undefined) { if (target === undefined) {
target = $('.ticker'); target = $('.ticker');
} };
target.bxSlider({ target.bxSlider({
ticker: true, ticker: true,
@ -21,4 +21,4 @@ function tickerInit(target) {
// } // }
}; };
document.addEventListener('DOMContentLoaded', tickerInit(), true); document.addEventListener('DOMContentLoaded', tickerInit(), true);

View File

@ -1,23 +1,25 @@
function url_var_insert(key, value) function url_var_insert(key, value) {
{ let key = encodeURI(key); value = encodeURI(value);
key = encodeURI(key); value = encodeURI(value);
var kvp = document.location.search.substr(1).split('&'); kvp = document.location.search.substr(1).split('&');
var i=kvp.length; var x; while(i--) let i = kvp.length;
{ let x;
while (i--) {
x = kvp[i].split('='); x = kvp[i].split('=');
if (x[0]==key) if (x[0] == key) {
{
x[1] = value; x[1] = value;
kvp[i] = x.join('='); kvp[i] = x.join('=');
break; break;
} };
} };
if(i<0) {kvp[kvp.length] = [key,value].join('=');} if (i < 0) {
kvp[kvp.length] = [key, value].join('=');
};
//this will reload the page, it's likely better to store this until finished // this will reload the page, it's likely better to store this until finished
document.location.search = kvp.join('&'); document.location.search = kvp.join('&');
} };

View File

@ -13,47 +13,26 @@
}); });
return false; return false;
} };
function verify_response(data, status) { function verify_response(data, status, xhr) {
// Обработка ответов // Обработка ответов
// Основной блок main_response(data, status, xhr);
if (data.main !== undefined) { };
main = document.getElementsByTagName('main')[0];
// Обновление документа function verify_response_success(data, status, xhr) {
main.innerHTML = data.main;
// Реинициализация
reinitialization(main);
}
// Перенаправление
if (data.redirect !== undefined) {
// Перенаправление
history.pushState({}, document.title, data.redirect);
}
// CSRF-токен
if (data._csrf !== undefined) {
// Обновление документа
$('meta[name=csrf-token]').prop("content", data._csrf);
}
}
function verify_response_success(data, status) {
// Обработка ответов от удавшихся запросов // Обработка ответов от удавшихся запросов
verify_response(data, status); verify_response(data, status, xhr);
} };
function verify_response_error(data, status) { function verify_response_error(data, status, xhr) {
// Обработка ответов от неудавшихся запросов // Обработка ответов от неудавшихся запросов
// Инициализвация // Инициализвация
data = data.responseJSON; data = data.responseJSON;
verify_response(data, status); verify_response(data, status, xhr);
} };