Работа над сайтом 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://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'
];
}

View File

@ -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;

View File

@ -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';
// Отправка в базу данных

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]);

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);
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> -->
</div>
</div>
<?= JsManager::include($this, ['yii\widgets\ActiveFormAsset']);?>

View File

@ -49,10 +49,10 @@ $this->title = 'SkillParts';
</div>
<div class="p-3 px-md-4 category_block">
<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>
</div>
</div>
@ -62,7 +62,7 @@ $this->title = 'SkillParts';
</div>
<div class="p-3 px-md-4 category_block">
<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>
</div>
</div>
@ -72,9 +72,9 @@ $this->title = 'SkillParts';
</div>
<div class="p-3 px-md-4 category_block">
<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>
</div>
</div>
@ -83,4 +83,4 @@ $this->title = 'SkillParts';
</div>
<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>
<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-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>
<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>

View File

@ -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);
}

View File

@ -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);
};

View File

@ -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);
};
};
};

View File

@ -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);
};

View File

@ -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);
};

View File

@ -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);
};

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')) {
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;
}
};

View File

@ -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);
};
}
product_response(data, status, xhr);
};

View File

@ -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);
}
}
};
};

View File

@ -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);
}
}

View File

@ -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');

View File

@ -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;
}
};

View File

@ -2,6 +2,8 @@ function reinitialization(target) {
// Уничтожает все внешние файлы загруженные внутри блока с переданным ID и загружает их в <head> и <body>
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;
};

View File

@ -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";
}
};

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) {
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();
}
};
});
}
};

View File

@ -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);
document.addEventListener('DOMContentLoaded', tickerInit(), true);

View File

@ -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('&');
}
};

View File

@ -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);
};