diff --git a/mirzaev/skillparts/system/assets/AppAsset.php b/mirzaev/skillparts/system/assets/AppAsset.php index a1e2792..2f07432 100644 --- a/mirzaev/skillparts/system/assets/AppAsset.php +++ b/mirzaev/skillparts/system/assets/AppAsset.php @@ -38,6 +38,7 @@ class AppAsset extends AssetBundle 'https://cdn.jsdelivr.net/bxslider/4.1.1/jquery.bxslider.min.js', 'https://unpkg.com/cookielib/src/cookie.min.js', 'js/menu.js', + 'js/main.js', 'js/account.js', 'js/search.js', 'js/notification.js', @@ -47,7 +48,7 @@ class AppAsset extends AssetBundle // 'position' => View::POS_HEAD ]; public $depends = [ - 'yii\web\YiiAsset', + 'yii\web\YiiAsset' // 'yii\bootstrap\BootstrapAsset' ]; } diff --git a/mirzaev/skillparts/system/controllers/CartController.php b/mirzaev/skillparts/system/controllers/CartController.php index 0bd79e4..2f5e1ac 100644 --- a/mirzaev/skillparts/system/controllers/CartController.php +++ b/mirzaev/skillparts/system/controllers/CartController.php @@ -77,7 +77,7 @@ class CartController extends Controller * * @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; diff --git a/mirzaev/skillparts/system/controllers/SearchController.php b/mirzaev/skillparts/system/controllers/SearchController.php index 7c77e9e..12c8af5 100644 --- a/mirzaev/skillparts/system/controllers/SearchController.php +++ b/mirzaev/skillparts/system/controllers/SearchController.php @@ -198,22 +198,22 @@ class SearchController extends Controller $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 { // Инициализация инстанции продукта в базе данных $product = Product::searchByCatn($connection['product']['catn']); // Инициализация доставки Dellin (автоматическая) - $product->bffr = ($product->bffr ?? []) + [ + $product->bffr = [ "$from-$to" => [ 'data' => $connection['delivery'] = Dellin::calcDeliveryAdvanced( $from, @@ -225,7 +225,7 @@ class SearchController extends Controller ), 'expires' => time() + 86400 ] - ]; + ] + ($product->bffr ?? []); $connection['delivery']['type'] = 'auto'; // Отправка в базу данных @@ -248,7 +248,7 @@ class SearchController extends Controller // Инициализация версии для рассчета доставки по воздуху $buffer = $connection; - try {// Инициализация данных геолокации + try { // Инициализация данных геолокации try { $from = (int) $connection['account']['opts']['delivery_from_terminal'] ?? Settings::search()->delivery_from_default ?? 36; } catch (Exception $e) { @@ -261,22 +261,22 @@ class SearchController extends Controller $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 { // Инициализация инстанции продукта в базе данных $product = Product::searchByCatn($connection['product']['catn']); // Инициализация доставки Dellin (автоматическая) - $product->bffr = ($product->bffr ?? []) + [ + $product->bffr = [ "$from-$to-avia" => [ 'data' => $connection['delivery'] = Dellin::calcDeliveryAdvanced( $from, @@ -289,7 +289,7 @@ class SearchController extends Controller ), 'expires' => time() + 86400 ] - ]; + ] + ($product->bffr ?? []); $connection['delivery']['type'] = 'avia'; // Отправка в базу данных diff --git a/mirzaev/skillparts/system/models/Order.php b/mirzaev/skillparts/system/models/Order.php index 87702a0..a115185 100644 --- a/mirzaev/skillparts/system/models/Order.php +++ b/mirzaev/skillparts/system/models/Order.php @@ -446,7 +446,10 @@ class Order extends Document implements DocumentInterface // Если стоимость не найдена или равна нулю (явная ошибка) // Удаление из базы данных - $this->deleteSupply($connection['supply']->readId()); + $this->deleteSupply($connection['supply']['_id']); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // Добавить уведомление об ошибочном товаре // Удаление из списка unset($connections[$key]); diff --git a/mirzaev/skillparts/system/models/helpers/JsManager.php b/mirzaev/skillparts/system/models/helpers/JsManager.php new file mode 100644 index 0000000..3d1cc73 --- /dev/null +++ b/mirzaev/skillparts/system/models/helpers/JsManager.php @@ -0,0 +1,59 @@ + элементы из данных 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; + } + } + + return $buffer; + } +} diff --git a/mirzaev/skillparts/system/views/account/panel/deauthenticated.php b/mirzaev/skillparts/system/views/account/panel/deauthenticated.php index 66dc7a1..8b3aff9 100644 --- a/mirzaev/skillparts/system/views/account/panel/deauthenticated.php +++ b/mirzaev/skillparts/system/views/account/panel/deauthenticated.php @@ -3,6 +3,7 @@ declare(strict_types=1); use yii; +use app\models\helpers\JsManager; ?> @@ -16,3 +17,5 @@ use yii; + + diff --git a/mirzaev/skillparts/system/views/index.php b/mirzaev/skillparts/system/views/index.php index 39dbba1..e142326 100644 --- a/mirzaev/skillparts/system/views/index.php +++ b/mirzaev/skillparts/system/views/index.php @@ -49,10 +49,10 @@ $this->title = 'SkillParts';
-
Масла моторные
-
Масла трансмиссионные
-
Масла гидравлические
-
Смазки
+
Масла моторные
+
Масла трансмиссионные
+
Масла гидравлические
+
Смазки
@@ -62,7 +62,7 @@ $this->title = 'SkillParts';
-
Фары и свет
+
Фары и свет
@@ -72,9 +72,9 @@ $this->title = 'SkillParts';
-
Шприцы для смазки
-
Ключи, съёмники
-
Наборы инструментов
+
Шприцы для смазки
+
Ключи, съёмники
+
Наборы инструментов
@@ -83,4 +83,4 @@ $this->title = 'SkillParts'; - + diff --git a/mirzaev/skillparts/system/views/search/index.php b/mirzaev/skillparts/system/views/search/index.php index 4fd5e19..5e4ce14 100644 --- a/mirzaev/skillparts/system/views/search/index.php +++ b/mirzaev/skillparts/system/views/search/index.php @@ -161,7 +161,7 @@
$index $amount - $delivery_icon ~$delivery дн + $delivery_icon $delivery дн $price diff --git a/mirzaev/skillparts/system/web/js/account.js b/mirzaev/skillparts/system/web/js/account.js index 07cb8c3..e19116a 100644 --- a/mirzaev/skillparts/system/web/js/account.js +++ b/mirzaev/skillparts/system/web/js/account.js @@ -4,20 +4,8 @@ function identification() { type: 'post', dataType: 'json', data: { '_csrf': yii.getCsrfToken() }, - success: function (data) { - if (data.menu !== undefined) { - // Обновление документа - 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); - } - } + success: account_response_success, + error: account_response_error }); }; @@ -40,55 +28,8 @@ function authentication(form) { type: 'post', dataType: 'json', data: form, - success: function (data, status) { - if (data.menu !== undefined) { - // Обновление документа - 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); - } - } + success: account_response_success, + error: account_response_error }); }; @@ -98,36 +39,8 @@ function deauthentication() { type: 'post', dataType: 'json', data: { '_csrf': yii.getCsrfToken() }, - success: function (data) { - if (data.menu !== undefined) { - // Обновление документа - 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(); - } + success: account_response_success, + error: account_response_error }); }; @@ -266,6 +179,9 @@ function registration_start(form, type) { function registration_end(form) { // Инициализация + $(form).yiiActiveForm('init'); + + // Проверка $(form).yiiActiveForm('validate', true); if (form == undefined) { @@ -286,52 +202,66 @@ function registration_end(form) { type: 'post', dataType: 'json', data: form, - success: function (data) { - if (data.menu !== undefined) { - // Обновление документа - 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); - } - } + success: account_response_success, + error: account_response_error }); return false; }; 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); +} diff --git a/mirzaev/skillparts/system/web/js/cart.js b/mirzaev/skillparts/system/web/js/cart.js index 718d733..4c740ad 100644 --- a/mirzaev/skillparts/system/web/js/cart.js +++ b/mirzaev/skillparts/system/web/js/cart.js @@ -7,7 +7,7 @@ function cart_write(supply_id, delivery_type, amount = 1) { data['supply_id'] = supply_id; data['amount'] = amount; data['delivery_type'] = delivery_type; - data['_csrf'] = yii.getCsrfToken() + data['_csrf'] = yii.getCsrfToken(); $.ajax({ url: '/order/write', @@ -19,7 +19,7 @@ function cart_write(supply_id, delivery_type, amount = 1) { }); return false; -} +}; /** * Удалить корзину @@ -37,7 +37,7 @@ function cart_delete() { }); return false; -} +}; /** * Сформировать заказ @@ -55,7 +55,7 @@ function cart_request() { }); return false; -} +}; /** * Управление чекбоксами @@ -72,7 +72,7 @@ function cart_list_checkbox(target) { // Перебор всех выбранных элементов elements[$i].getElementsByTagName('input')[0].checked = true; - } + }; target.checked = true; } else { @@ -80,14 +80,14 @@ function cart_list_checkbox(target) { // Перебор всех выбранных элементов elements[$i].getElementsByTagName('input')[0].checked = false; - } + }; target.checked = false; - } + }; return false; - } -} + }; +}; /** * Удалить из корзины @@ -115,9 +115,9 @@ function cart_list_delete(target, amount = 0) { if (checkbox.checked === true) { targets[reg.exec(checkbox.id)[1]] = 0; - } - } - } + }; + }; + }; $.ajax({ url: '/order/delete', @@ -138,7 +138,7 @@ function cart_list_delete(target, amount = 0) { cart_cost_calculate(); return false; -} +}; /** * Изменить количество товара в корзине @@ -162,13 +162,13 @@ function cart_list_amount_update(target, input) { success: cart_response_success, error: cart_response_error }); - } + }; // Пересчитывание стоимости cart_cost_calculate(); return false; -} +}; /** * Подсчёт стоимости @@ -183,10 +183,10 @@ function cart_cost_calculate() { let amount = elements[$i].getElementsByTagName('div')[5].children[0].value; costs += +reg.exec(cost)[1] * amount; - } + }; document.getElementById('cart_cost').innerHTML = costs; -} +}; /** * Изменить количество товара в корзине @@ -246,10 +246,10 @@ function cart_list_comment_edit(catn, element) { }); return false; - } + }; return true; -} +}; function cart_list_comment_save(catn, element) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) { @@ -261,7 +261,7 @@ function cart_list_comment_save(catn, element) { element.innerHTML = 'Комментарий к заказу'; } else { element.innerHTML = text; - } + }; // Деинициализация счетчика document.getElementById(element.id + '-textarea-counter').remove(); @@ -277,7 +277,7 @@ function cart_list_comment_save(catn, element) { '_csrf': yii.getCsrfToken(), 'text': text }, - success: function (data, status) { + success: function (data, status, xhr) { // Заголовок 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);'); }; - cart_response_success(data, status); + cart_response_success(data, status, xhr); }, error: cart_response_error }); return false; - } + }; return true; -} +}; -function cart_response(data, status) { +function cart_response(data, status, xhr) { // Обработка ответов - // Основной блок - if (data.main !== undefined) { - main = document.getElementsByTagName('main')[0]; + main_response(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) { +function cart_response_success(data, status, xhr) { // Обработка ответов от удавшихся запросов - 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; - cart_response(data, status); -} + cart_response(data, status, xhr); +}; diff --git a/mirzaev/skillparts/system/web/js/main.js b/mirzaev/skillparts/system/web/js/main.js index 2fb60b7..eb52f97 100644 --- a/mirzaev/skillparts/system/web/js/main.js +++ b/mirzaev/skillparts/system/web/js/main.js @@ -1,20 +1,37 @@ -function writeinDevelopment(target) { - // Инициализация буфера - let buffer = target.innerText; +function main_response(data, status, xhr) { + // Обработка ответов - // Запись текста - target.innerText = target.innerText + ' (в разработке)'; + if (data !== undefined) { + // Получены данные с сервера - // Блокировка от повторного вызова - target.setAttribute('onclick', 'return false;'); + // Основной блок + if (data.main !== undefined) { + // Инициализация + main = document.getElementsByTagName('main')[0]; - setTimeout(function () { - // Возврат изначального текста из буфера - target.innerText = buffer; + // Обновление документа + main.innerHTML = data.main; - // Разблокировка - target.setAttribute('onclick', 'return writeinDevelopment(this);'); - }, 3000); + // Реинициализация + reinitialization(main); + }; - 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); + }; + }; }; diff --git a/mirzaev/skillparts/system/web/js/menu.js b/mirzaev/skillparts/system/web/js/menu.js index 0cff50b..91a2538 100644 --- a/mirzaev/skillparts/system/web/js/menu.js +++ b/mirzaev/skillparts/system/web/js/menu.js @@ -10,10 +10,10 @@ function page_main() { success: menu_success, error: menu_error }); - } + }; return false; -} +}; function page_profile() { if (document.getElementById('page_profile') === null) { @@ -27,10 +27,10 @@ function page_profile() { success: menu_success, error: menu_error }); - } + }; return false; -} +}; function page_cart() { if (document.getElementById('page_cart') === null) { @@ -44,7 +44,7 @@ function page_cart() { success: menu_success, error: menu_error }); - } + }; return false; }; @@ -61,7 +61,7 @@ function page_orders() { success: menu_success, error: menu_error }); - } + }; return false; }; @@ -69,76 +69,25 @@ function page_orders() { function notifications() { return false; -} +}; +function menu_responce(data, status, xhr) { + // Обработка ответов -function menu_success(data, status) { + main_response(data, status, xhr); +}; + +function menu_success(data, status, xhr) { // Обработка ответов от удавшихся запросов - // Основной блок - if (data.main !== undefined) { - // Инициализация - main = document.getElementsByTagName('main')[0]; + menu_responce(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) { +function menu_error(data, status, xhr) { // Обработка ответов от неудавшихся запросов // Инициализация data = data.responseJSON; - // Основной блок - 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); - } -} + menu_responce(data, status, xhr); +}; diff --git a/mirzaev/skillparts/system/web/js/notification.js b/mirzaev/skillparts/system/web/js/notification.js index 621f633..6dd78b6 100644 --- a/mirzaev/skillparts/system/web/js/notification.js +++ b/mirzaev/skillparts/system/web/js/notification.js @@ -73,76 +73,63 @@ function notification_stream(preload = 0) { // Предзагрузка уведомлений notification_stream(1); -function notification_response_success(data, status) { - // Кнопка уведомлений - if (data.button !== undefined) { - // Инициализация - button_old = document.getElementById('notification_button'); +function notification_response(data, status, xhr) { + // Обработка ответов - // Запись - button_old.insertAdjacentHTML("beforebegin", data.button); + main_response(data, status, xhr); +}; - // Запись - button_old.remove(); +function notification_response_success(data, status, xhr) { + // Обработка ответов от удавшихся запросов - // Реинициализация - $('#notification_button').dropdown().init(); - } + if (data !== undefined) { + // Получены данные с сервера - // Панель уведомлений - if (data.panel !== undefined) { - // Инициализация - panel = document.getElementById('notification_button_panel'); + // Кнопка уведомлений + if (data.button !== undefined) { + // Инициализация + 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) { - // Инициализация - popup = document.getElementById('notification_popup'); + // Реинициализация + $('#notification_button').dropdown().init(); + }; - // Генерация - 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; - notification_response(data, status); -} - -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); - }; -} - + notification_response(data, status, xhr); +}; diff --git a/mirzaev/skillparts/system/web/js/orders.js b/mirzaev/skillparts/system/web/js/orders.js index 548d777..30777c7 100644 --- a/mirzaev/skillparts/system/web/js/orders.js +++ b/mirzaev/skillparts/system/web/js/orders.js @@ -1,42 +1,20 @@ - -function orders_response(data, status) { +function orders_response(data, status, xhr) { // Обработка ответов - // Основной блок - if (data.main !== undefined) { - main = document.getElementsByTagName('main')[0]; + main_response(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) { +function orders_response_success(data, status, xhr) { // Обработка ответов от удавшихся запросов - 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; - orders_response(data, status); -} + orders_response(data, status, xhr); +}; diff --git a/mirzaev/skillparts/system/web/js/orders_panel.js b/mirzaev/skillparts/system/web/js/orders_panel.js index 975a5b5..c13b9a8 100644 --- a/mirzaev/skillparts/system/web/js/orders_panel.js +++ b/mirzaev/skillparts/system/web/js/orders_panel.js @@ -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')) { supplies_are_confirmed = false; - } - } + }; + }; if (supplies_are_confirmed) { button.classList.remove('disabled'); - } + }; return false; -} +}; function order_accept(order_key) { $.ajax({ @@ -38,7 +38,7 @@ function order_accept(order_key) { }); return false; -} +}; 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'); - } - } + }; + }; // Активация выбранной кнопки supply.classList.add('row_supply_active'); @@ -72,202 +72,205 @@ function orders_supply_edit(supply_key, order_key) { data: { '_csrf': yii.getCsrfToken() }, - success: function (data, status) { + success: function (data, statu, xhrs) { // Удаление индикатора загрузки panel.innerHTML = ''; - // Идентификатор - if (document.getElementById(supply.getAttribute('id') + '_id') === null) { - // Инициализация контейнера - let container = document.createElement('div'); - container.setAttribute('id', supply.getAttribute('id') + '_id'); - container.setAttribute('class', 'row mb-1 px-3'); + if (data !== undefined) { + // Получены данные с сервера + // Идентификатор + if (document.getElementById(supply.getAttribute('id') + '_id') === null) { + // Инициализация контейнера + 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'); - name.setAttribute('id', supply.getAttribute('id') + '_id_name'); - name.setAttribute('class', 'col-auto px-0 ml-0 mr-2'); - name.innerText = 'Идентификатор:'; + // Инициализация названия + let name = document.createElement('p'); + name.setAttribute('id', supply.getAttribute('id') + '_id_name'); + name.setAttribute('class', 'col-auto px-0 ml-0 mr-2'); + name.innerText = 'Идентификатор:'; - // Инициализация идентификатора - let text = document.createElement('p'); - text.setAttribute('id', supply.getAttribute('id') + '_id_value'); - text.setAttribute('class', 'col-auto px-0 mx-0 font-weight-bold'); - if (data.id !== undefined) { - text.innerText = '#' + data.id; - } else { - text.innerText = 'Неизвестно'; - } + // Инициализация идентификатора + let text = document.createElement('p'); + text.setAttribute('id', supply.getAttribute('id') + '_id_value'); + text.setAttribute('class', 'col-auto px-0 mx-0 font-weight-bold'); + if (data.id !== undefined) { + text.innerText = '#' + data.id; + } else { + text.innerText = 'Неизвестно'; + }; - // Запись в документ - panel.appendChild(container); - container.appendChild(name); - container.appendChild(text); + // Запись в документ + panel.appendChild(container); + container.appendChild(name); + 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); + }; }; - // // Разделитель статического информационного блока от блока с динамическими данными - // 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); + orders_response_success(data, status, xhr); }, error: orders_response_error }); return false; -} +}; 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(), 'stts': 'accepted' }, - success: function (data, status) { + success: function (data, status, xhr) { // Инициализация индикатора let span = document.createElement('span'); 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); - } + }; + // Реинициализация order_init(order_key); - } + }; - orders_response_success(data, status); + orders_response_success(data, status, xhr); }, error: orders_response_error }); return false; -} +}; /** * Изменить цену товара в заказе */ - function orders_supply_cost_edit(supply_key, input) { +function orders_supply_cost_edit(supply_key, input) { if (supply_key !== undefined && input !== undefined) { // Обработка входных параметров @@ -330,27 +334,27 @@ function orders_supply_comm_write(button, supply_key, order_key) { '_csrf': yii.getCsrfToken(), 'cost': input.value }, - success: function (data, status) { + success: function (data, status, xhr) { if (data.cost !== undefined) { input.value = data.cost; - } + }; - orders_response_success(data, status); + orders_response_success(data, status, xhr); }, error: orders_response_error }); - } + }; // Пересчитывание стоимости cart_cost_calculate(); return false; -} +}; /** * Изменить время доставки товара в заказе */ - function orders_supply_time_edit(supply_key, input) { +function orders_supply_time_edit(supply_key, input) { if (supply_key !== undefined && input !== undefined) { // Обработка входных параметров @@ -362,27 +366,31 @@ function orders_supply_comm_write(button, supply_key, order_key) { '_csrf': yii.getCsrfToken(), 'time': input.value }, - success: function (data, status) { - if (data.time !== undefined) { - input.value = data.time; - } + success: function (data, status, xhr) { + if (data !== undefined) { + // Получены данные с сервера - orders_response_success(data, status); + if (data.time !== undefined) { + input.value = data.time; + }; + }; + + orders_response_success(data, status, xhr); }, error: orders_response_error }); - } + }; // Пересчитывание стоимости cart_cost_calculate(); return false; -} +}; /** * Изменить комментарий товара в заказе */ - function orders_supply_comm_edit(supply_key, input) { +function orders_supply_comm_edit(supply_key, input) { if (supply_key !== undefined && input !== undefined) { // Обработка входных параметров @@ -395,18 +403,22 @@ function orders_supply_comm_write(button, supply_key, order_key) { 'comm': input.value }, success: function (data, status) { - if (data.comm !== undefined) { - input.value = data.comm; - } + if (data !== undefined) { + // Получены данные с сервера + + if (data.comm !== undefined) { + input.value = data.comm; + }; + }; orders_response_success(data, status); }, error: orders_response_error }); - } + }; // Пересчитывание стоимости cart_cost_calculate(); return false; -} +}; diff --git a/mirzaev/skillparts/system/web/js/product.js b/mirzaev/skillparts/system/web/js/product.js index d10cbab..440a4ec 100644 --- a/mirzaev/skillparts/system/web/js/product.js +++ b/mirzaev/skillparts/system/web/js/product.js @@ -16,44 +16,28 @@ function product_image_choose(key, wrap) { } else { label.classList.remove('active'); 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); -} +}; + +function product_response_error(data, status, xhr) { + // Обработка ответов от неудавшихся запросов -function product_response_error(data, status) { // Инициализация data = data.responseJSON; - product_response(data, status); -} - -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); - }; -} \ No newline at end of file + product_response(data, status, xhr); +}; diff --git a/mirzaev/skillparts/system/web/js/product_panel.js b/mirzaev/skillparts/system/web/js/product_panel.js index 57d3d8b..1610455 100644 --- a/mirzaev/skillparts/system/web/js/product_panel.js +++ b/mirzaev/skillparts/system/web/js/product_panel.js @@ -5,10 +5,10 @@ function product_panel_title_edit(catn, element) { element.removeAttribute('onclick'); return false; - } + }; return true; -} +}; function product_panel_title_save(catn, element) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) { @@ -29,26 +29,31 @@ function product_panel_title_save(catn, element) { '_csrf': yii.getCsrfToken(), 'text': text }, - success: function (data, status) { - // Заголовок - if (data.name !== undefined && element !== null && element !== undefined) { - // Обновление заголовка - element.innerHTML = data.name; + success: function (data, status, xhr) { - // Запись аттрибута - element.setAttribute('onclick', 'return product_panel_title_edit(\'' + catn + '\', this);'); + if (data !== undefined) { + // Получены данные с сервера + + // Заголовок + 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 }); return false; - } + }; return true; -} +}; function product_panel_catn_edit(catn, element, redirect = false) { 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'); return false; - } + }; return true; -} +}; function product_panel_catn_save(catn, element, redirect = false) { 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(), 'text': text }, - success: function (data, status) { - // Заголовок - if (data.catn !== undefined && element !== null && element !== undefined) { - if (redirect) { - // Перенаправление - history.pushState({}, '/product/' + catn, '/product/' + data.catn); - } + 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); + }; + }; }; - product_response_success(data, status); + product_response_success(data, status, xhr); }, error: product_response_error }); return false; - } + }; return true; -} +}; function product_panel_dimensions_edit(catn, element, dimension) { 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); return false; - } + }; return true; -} +}; function product_panel_dimensions_save(catn, element, dimension) { 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) { text = '0'; - } + }; span.innerText = text; @@ -150,26 +159,30 @@ function product_panel_dimensions_save(catn, element, dimension) { 'text': text, 'dimension': dimension }, - success: function (data, status) { - // Заголовок - if (data.dimension !== undefined && span !== null && span !== undefined) { - // Обновление заголовка - span.innerText = data.dimension; + success: function (data, status, xhr) { + if (data !== undefined) { + // Получены данные с сервера - // Запись аттрибута - 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 }); return false; - } + }; return true; -} +}; 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); return false; - } + }; return true; -} +}; function product_panel_weight_save(catn, element) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) { @@ -206,7 +219,7 @@ function product_panel_weight_save(catn, element) { if (text.length === 0) { text = '0'; - } + }; span.innerText = text; @@ -220,26 +233,30 @@ function product_panel_weight_save(catn, element) { '_csrf': yii.getCsrfToken(), 'text': text }, - success: function (data, status) { - // Заголовок - if (data.weight !== undefined && span !== null && span !== undefined) { - // Обновление заголовка - span.innerText = data.weight; + success: function (data, status, xhr) { + if (data !== undefined) { + // Получены данные с сервера - // Запись аттрибута - 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 }); return false; - } + }; return true; -} +}; function product_panel_description_edit(catn, element) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) { @@ -248,10 +265,10 @@ function product_panel_description_edit(catn, element) { element.removeAttribute('onclick'); return false; - } + }; return true; -} +}; function product_panel_description_save(catn, element) { if (catn !== null && catn !== undefined && element !== null && element !== undefined) { @@ -272,26 +289,30 @@ function product_panel_description_save(catn, element) { '_csrf': yii.getCsrfToken(), 'text': text }, - success: function (data, status) { - // Заголовок - if (data.description !== undefined && element !== null && element !== undefined) { - // Обновление заголовка - element.innerHTML = data.description; + success: function (data, status, xhr) { + if (data !== undefined) { + // Получены данные с сервера - // Запись аттрибута - 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 }); return false; - } + }; return true; -} +}; function product_panel_images_write(catn, element) { 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()); for (i = 0; i < element.files.length; i++) { data.append('images[' + i + ']', element.files[i]); - } + }; $.ajax({ url: '/product/' + catn + '/write/image', @@ -315,10 +336,10 @@ function product_panel_images_write(catn, element) { }); return false; - } + }; return true; -} +}; function product_panel_images_delete(catn, index) { if (catn !== null && catn !== undefined && index !== null && index !== undefined) { @@ -335,10 +356,10 @@ function product_panel_images_delete(catn, index) { }); return false; - } + }; return true; -} +}; function product_panel_images_cover_write(catn, index) { if (catn !== null && catn !== undefined && index !== null && index !== undefined) { @@ -355,10 +376,10 @@ function product_panel_images_cover_write(catn, index) { }); return false; - } + }; return true; -} +}; function product_panel_handler_save(save, catn, element, ...vars) { if (save !== undefined && save !== null) { @@ -366,9 +387,9 @@ function product_panel_handler_save(save, catn, element, ...vars) { if (event.target.id !== element.id) { save(catn, element, ...vars); document.body.removeEventListener('click', product_panel_handler_save_function, true); - } - } + }; + }; document.body.addEventListener('click', product_panel_handler_save_function, true); - } -} + }; +}; diff --git a/mirzaev/skillparts/system/web/js/profile.js b/mirzaev/skillparts/system/web/js/profile.js index aa9d00d..47decc0 100644 --- a/mirzaev/skillparts/system/web/js/profile.js +++ b/mirzaev/skillparts/system/web/js/profile.js @@ -6,14 +6,14 @@ function page_profile_supplies(form, panel) { if (panel !== undefined) { form.panel = panel; - } + }; } else { form = new FormData(form); if (panel !== undefined) { form.append('panel', panel); - } - } + }; + }; $.ajax({ url: '/profile/supplies', @@ -25,7 +25,7 @@ function page_profile_supplies(form, panel) { }); return false; -} +}; function page_profile_supplies_import_excel(form, panel) { if (form === undefined) { @@ -35,14 +35,14 @@ function page_profile_supplies_import_excel(form, panel) { if (panel !== undefined) { form.panel = panel; - } + }; } else { form = new FormData(form); if (panel !== undefined) { form.append('panel', panel); - } - } + }; + }; $.ajax({ url: '/profile/import', @@ -66,7 +66,7 @@ function page_profile_settings(form, panel) { if (panel !== undefined) { form.panel = panel; - } + }; } else { form = $(form).serializeArray(); @@ -74,7 +74,7 @@ function page_profile_settings(form, panel) { name: "panel", value: panel }); - } + }; $.ajax({ url: '/profile', @@ -89,7 +89,7 @@ function page_profile_settings(form, panel) { initDropdownOem(); return false; -} +}; function page_profile_monitoring(change = 1, panel) { // Инициализация @@ -100,7 +100,7 @@ function page_profile_monitoring(change = 1, panel) { search = 1; } else { search = +search + change; - } + }; // Предобработка url.searchParams.set('search', search); @@ -132,45 +132,34 @@ function page_profile_monitoring(change = 1, panel) { return false; }; -function page_profile_response_success(data, status) { - // Активная панель - if (data.panel_selected !== undefined) { - // Активация - document.getElementById(data.panel_selected).click() - } - // Перенаправление - if (data.redirect !== undefined) { - // Перенаправление - history.pushState({}, document.title, data.redirect); - } +function page_profile_response(data, status, xhr) { + // Обработка ответов - 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; - 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); - } -} diff --git a/mirzaev/skillparts/system/web/js/profile.samples.js b/mirzaev/skillparts/system/web/js/profile.samples.js index 6bbfec5..9fd370f 100644 --- a/mirzaev/skillparts/system/web/js/profile.samples.js +++ b/mirzaev/skillparts/system/web/js/profile.samples.js @@ -4,8 +4,8 @@ function initDropdown(id) { if (dropdown !== null && dropdown.length > 1) { dropdown.children[0].hidden = true; - } -} + }; +}; initDropdown('account-opts-import_sections_oem'); initDropdown('account-opts-delivery_from_terminal'); diff --git a/mirzaev/skillparts/system/web/js/profile_panel.js b/mirzaev/skillparts/system/web/js/profile_panel.js index 9968fe6..2454653 100644 --- a/mirzaev/skillparts/system/web/js/profile_panel.js +++ b/mirzaev/skillparts/system/web/js/profile_panel.js @@ -11,10 +11,10 @@ function page_profile_panel_notification_create(form, html = 0) { name: 'Notification[html]', value: html }); - } + }; return page_profile_panel_write(form); -} +}; function page_profile_panel_settings(form, panel) { if (form == undefined) { @@ -24,7 +24,7 @@ function page_profile_panel_settings(form, panel) { if (panel !== undefined) { form.panel = panel; - } + }; } else { form = $(form).serializeArray(); @@ -32,10 +32,10 @@ function page_profile_panel_settings(form, panel) { name: "panel", value: panel }); - } + }; return page_profile_panel_write(form); -} +}; function page_profile_panel_write (form) { $.ajax({ @@ -48,4 +48,4 @@ function page_profile_panel_write (form) { }); return false; -} +}; diff --git a/mirzaev/skillparts/system/web/js/reinitialization.js b/mirzaev/skillparts/system/web/js/reinitialization.js index f88f328..a7cc8f3 100644 --- a/mirzaev/skillparts/system/web/js/reinitialization.js +++ b/mirzaev/skillparts/system/web/js/reinitialization.js @@ -2,6 +2,8 @@ function reinitialization(target) { // Уничтожает все внешние файлы загруженные внутри блока с переданным ID и загружает их в и if (target !== undefined) { + // Цель обозначена + let links = target.getElementsByTagName('link'); let scripts = target.getElementsByTagName('script'); @@ -12,7 +14,7 @@ function reinitialization(target) { new_link.rel = "stylesheet"; document.getElementsByTagName("head")[0].appendChild(new_link); link.remove(); - } + }; // Запись JS for (script of scripts) { @@ -22,13 +24,13 @@ function reinitialization(target) { document.getElementsByTagName("body")[0].appendChild(new_script); } else { eval(script.innerText); - } + }; // script.remove(); По каким-то причинам не работает, надо бы доделать - } + }; return true; - } + }; return false; }; diff --git a/mirzaev/skillparts/system/web/js/search.js b/mirzaev/skillparts/system/web/js/search.js index 238635d..8b0fc6b 100644 --- a/mirzaev/skillparts/system/web/js/search.js +++ b/mirzaev/skillparts/system/web/js/search.js @@ -12,19 +12,19 @@ function product_search(text = '', advanced = 0) { 'advanced': advanced, 'request': text }, - success: function (data, status) { - search_panel_success(text, advanced, data, status); + success: function (data, statu, xhrs) { + search_panel_success(text, advanced, data, status, xhr); }, 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 { // Показ истории поиска product_search_history(); - } + }; }; function product_search_history(text = '', advanced = 0) { @@ -38,14 +38,14 @@ function product_search_history(text = '', advanced = 0) { 'history': true }, success: function (data, status) { - search_panel_success(text, advanced, data, status); + search_panel_success(text, advanced, data, status, xhr); }, 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') { // Показ панели поиска @@ -55,7 +55,7 @@ function search_panel_show(line = 'search_line', panel = 'search_line_window') { // Открытие $('#' + line).dropdown('show'); -} +}; 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'; +}; + +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) { // Обработка ответов от удавшихся запросов - // Основной блок - 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); - } -} + search_panel_response(text, advanced, data, status, xhr); +}; function search_panel_error(text, advanced, data, status) { // Обработка ответов от неудавшихся запросов - // Основной блок - if (data.responseJSON.main !== undefined) { - main = document.getElementsByTagName('main')[0]; + // Инициализация + data = data.responseJSON; - // Обновление окна результатов поиска - 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); - } -} + search_panel_response(text, advanced, data, status, xhr); +}; function search_panel_statusCode() { return { 200: search_panel_statusCode_waiting, 404: search_panel_statusCode_waiting, }; -} +}; function search_panel_statusCode_waiting() { // Ожидание нового запроса document.cookie = "search=waiting; path=/"; document.body.style.cursor = "unset"; -} +}; function search_panel_statusCode_progress() { // Выполнение запроса document.cookie = "search=processing; path=/"; document.body.style.cursor = "progress"; -} \ No newline at end of file +}; diff --git a/mirzaev/skillparts/system/web/js/text.js b/mirzaev/skillparts/system/web/js/text.js new file mode 100644 index 0000000..6668ab2 --- /dev/null +++ b/mirzaev/skillparts/system/web/js/text.js @@ -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; +}; diff --git a/mirzaev/skillparts/system/web/js/textarea.js b/mirzaev/skillparts/system/web/js/textarea.js index de562d0..63b36f3 100644 --- a/mirzaev/skillparts/system/web/js/textarea.js +++ b/mirzaev/skillparts/system/web/js/textarea.js @@ -9,19 +9,19 @@ function initTextarea(textarea_id, counter_current_id, counter_maximum_id, disab if (characterCount < 70) { current.css('color', '#343a40'); - } + }; if (characterCount > 160 && characterCount < 179) { current.css('color', '#600000'); - } + }; if (characterCount > 180 && characterCount < 209) { current.css('color', '#700000'); - } + }; if (characterCount > 210 && characterCount < 249) { current.css('color', '#c00'); - } + }; if (characterCount > 250 && characterCount < 299) { current.css('color', '#d00'); - } + }; if (characterCount > 300) { disable_callable(); @@ -31,10 +31,10 @@ function initTextarea(textarea_id, counter_current_id, counter_maximum_id, disab current.css('color', '#e00'); } else { maximum.css('color', 'rgb(210, 0, 0)'); - } + }; } else { maximum.css('color', '#343a40'); enable_callable(); - } + }; }); -} +}; diff --git a/mirzaev/skillparts/system/web/js/ticker.js b/mirzaev/skillparts/system/web/js/ticker.js index 21b81b4..c0e399c 100644 --- a/mirzaev/skillparts/system/web/js/ticker.js +++ b/mirzaev/skillparts/system/web/js/ticker.js @@ -1,7 +1,7 @@ function tickerInit(target) { if (target === undefined) { target = $('.ticker'); - } + }; target.bxSlider({ ticker: true, @@ -21,4 +21,4 @@ function tickerInit(target) { // } }; -document.addEventListener('DOMContentLoaded', tickerInit(), true); \ No newline at end of file +document.addEventListener('DOMContentLoaded', tickerInit(), true); diff --git a/mirzaev/skillparts/system/web/js/url_manager.js b/mirzaev/skillparts/system/web/js/url_manager.js index 1091a5e..4d0508b 100644 --- a/mirzaev/skillparts/system/web/js/url_manager.js +++ b/mirzaev/skillparts/system/web/js/url_manager.js @@ -1,23 +1,25 @@ -function url_var_insert(key, value) -{ - key = encodeURI(key); value = encodeURI(value); +function url_var_insert(key, value) { + let 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('='); - if (x[0]==key) - { + if (x[0] == key) { x[1] = value; kvp[i] = x.join('='); 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('&'); -} \ No newline at end of file +}; diff --git a/mirzaev/skillparts/system/web/js/verify.js b/mirzaev/skillparts/system/web/js/verify.js index a182181..7b67d6d 100644 --- a/mirzaev/skillparts/system/web/js/verify.js +++ b/mirzaev/skillparts/system/web/js/verify.js @@ -13,47 +13,26 @@ }); return false; -} +}; -function verify_response(data, status) { +function verify_response(data, status, xhr) { // Обработка ответов - // Основной блок - if (data.main !== undefined) { - main = document.getElementsByTagName('main')[0]; + main_response(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) { +function verify_response_success(data, status, xhr) { // Обработка ответов от удавшихся запросов - 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; - verify_response(data, status); -} + verify_response(data, status, xhr); +};