Антон А.

Антон А.

С нами с 03 ноября 2016; Место в рейтинге пользователей: #529
Антон А.
08 февраля 2023, 09:56
+1
Я до релиза версии 4.1 сам подправил у себя этот кусок кода, сейчас протестил ваш, кажется он также перегружает корзину пустой без вывода чанка об успешном заказе.
Было до 4.0:
callbacks.submit.response.success = function (response) {
                if (response.data['redirect']) {
                    document.location.href = response.data['redirect'];
                } else if (response.data['msorder']) {
                    document.location.href = document.location.origin + document.location.pathname
                        + (document.location.search ? document.location.search + '&' : '?')
                        + 'msorder=' + response.data['msorder'];
                } else {
                    location.reload();
                }
            };
стало в 4.0:
this.callbacks.submit.response.success = response => {
            switch (true) {
                case response.data.redirect:
                    document.location.href = response.data.redirect;
                    break;
                case response.data.msorder:
                    document.location.href = document.location.origin + document.location.pathname
                    + (document.location.search ? document.location.search + '&' : '?')
                    + 'msorder=' + response.data.msorder;
                    break;
                default:
                    location.reload();
            }
        };

стало в 4.1:
this.callbacks.submit.response.success = response => {
            if (response.data.redirect) {
                document.location.href = response.data.redirect;
            }
            if (response.data.msorder) {
                document.location.href = document.location.origin + document.location.pathname
                    + (document.location.search ? document.location.search + '&' : '?')
                    + 'msorder=' + response.data.msorder;
            }
            location.reload();
        };
Мой вариант:
this.callbacks.submit.response.success = response => {
            if (response.data.redirect) {
                document.location.href = response.data.redirect;
            }
            else if (response.data.msorder) {
                document.location.href = document.location.origin + document.location.pathname
                    + (document.location.search ? document.location.search + '&' : '?')
                    + 'msorder=' + response.data.msorder;
            } else {
                location.reload();
            }
        };
Антон А.
31 января 2023, 14:54
+1
Спасибо за ваш труд! Задонатил немножко в благодарность.
Антон А.
31 января 2023, 14:35
+3
Разобрался. Надо переименовать настройку ms2_notify_js_class_name с msIziToast на MsIziToast после обновления с 4.0 на 4.1.
Антон А.
31 января 2023, 14:24
0
После обновления с 4.0.0 до 4.1.0 появилась ошибка
Uncaught (in promise) Error: Произошла ошибка при загрузке модуля.
Антон А.
30 января 2023, 13:42
0
Нижний вариант бы работал, если бы response.data.redirect и response.data.msorder были boolean, тогда можно было бы заменить исходную конструкцию с if на эту. Но response.data.msorder это id.
Может, при рефакторинге заменили на switch, предположив что response.data.redirect и response.data.msorder булевы, ну чисто на автомате раз они проверяются в if.
Антон А.
30 января 2023, 09:53
+1
А нет, меняется. Спасибо за помощь!
Антон А.
30 января 2023, 09:30
0
Ну от замены конструкции логика работы кода не поменялась же.
было
callbacks.submit.response.success = function (response) {
                if (response.data['redirect']) {
                    document.location.href = response.data['redirect'];
                } else if (response.data['msorder']) {
                    document.location.href = document.location.origin + document.location.pathname
                        + (document.location.search ? document.location.search + '&' : '?')
                        + 'msorder=' + response.data['msorder'];
                } else {
                    location.reload();
                }
            };
стало
this.callbacks.submit.response.success = response => {
            switch (true) {
                case response.data.redirect:
                    document.location.href = response.data.redirect;
                    break;
                case response.data.msorder:
                    document.location.href = document.location.origin + document.location.pathname
                    + (document.location.search ? document.location.search + '&' : '?')
                    + 'msorder=' + response.data.msorder;
                    break;
                default:
                    location.reload();
            }
        };
Антон А.
28 января 2023, 12:26
0
Для проверки установил чистый MODX Revolution 2.8.4-pl и только pdoTools и minishop2.
Товар redstudio.tmweb.ru/index.php?id=3
Корзина redstudio.tmweb.ru/index.php?id=4

Включаешь новые скрипты вот так как сейчас, выключаешь все ок. Могу дать доступ в админку.
Антон А.
28 января 2023, 06:49
0
Если включить новые скриптаы ms2_toggle_js_type, то после оформления заказа корзина очищается, а страница оформленного заказа типа /cart?msorder=1 не открывается. Если выключить новые скрипты, то все ок.
Антон А.
29 июля 2019, 09:22
0
Ну в вообще, если особо не разбираться в проблеме, то просто при вызове сниппета указывайте значение параметра loginResourceId. Например [[*id]], и будет Вам перенаправление на текущую страницу.
Антон А.
27 июля 2019, 14:14
0
Тоже столкнулся с проблемой редиректа на текущую страницу после аутентификации.
Как я понял, если указан loginResourceId, то все хорошо и вы перенаправляетесь на нужную страницу.
Но если этот параметр не указан или 0, то url для редиректа будет формироваться из $_SERVER['REQUEST_URI'].
Но в тот момент когда в HybridAuth генерируетя url для редиректа, в $_SERVER['REQUEST_URI'] уже нет того первоначального адреса, возможно потому что провайдер после аутентификации перенаправляет нас на
https://domen.site/?hauth.done=Yandex
из параметра Callback URL. Я прав? Кто подскажет?
Антон А.
17 декабря 2016, 22:52
0
Я думаю manager это переменная в которой хранится путь к файлу который расширяет админку, поэтому не нужно указывать ваше имя папки вместо manager, просто проверьте что путь верен и нужный js файл лежит где надо.
Антон А.
10 ноября 2016, 10:31
0
Вопрос решен. Оказалось всё дело в том, что была установлена не самая свежая версия минишопа.
Антон А.
04 ноября 2016, 08:19
0
Это я допустил опечатку тут в посте, проверил в базе по умолчанию значние — 0, как в мапе.
Вот моя таблица сейчас:
CREATE TABLE IF NOT EXISTS `modx_ms2_products` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `article` varchar(50) DEFAULT NULL,
  `price` decimal(12,2) DEFAULT '0.00',
  `old_price` decimal(12,2) DEFAULT '0.00',
  `weight` decimal(13,3) DEFAULT '0.000',
  `image` varchar(255) DEFAULT NULL,
  `thumb` varchar(255) DEFAULT NULL,
  `vendor` int(10) UNSIGNED DEFAULT '0',
  `made_in` varchar(100) DEFAULT '',
  `new` tinyint(1) UNSIGNED DEFAULT '0',
  `popular` tinyint(1) UNSIGNED DEFAULT '0',
  `favorite` tinyint(1) UNSIGNED DEFAULT '0',
  `tags` text,
  `color` text,
  `size` text,
  `source` int(10) UNSIGNED DEFAULT '1',
  `volume` int(10) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `article` (`article`),
  KEY `price` (`price`),
  KEY `old_price` (`old_price`),
  KEY `vendor` (`vendor`),
  KEY `new` (`new`),
  KEY `favorite` (`favorite`),
  KEY `popular` (`popular`),
  KEY `made_in` (`made_in`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;