[miniShop2 4.0.0-beta] для MODX2

Представляю вашему вниманию Beta релиз любимого интернет-магазина miniShop2 4.0.0

Внимание. Установка компонента на действующий проект настоятельно не рекомендуется. Вы можете сломать проект.



Совсем недавно я рассказывал о планах на новую версию компонента. Спустя неделю готов сказать, что большинство планов уже реализовано, протестировано и внедрено в компонент.

В репозиториях modstore.pro и modx.com компонент пока не обновляли. Несмотря на все тесты — компонент пока не считается стабильным, о чем говорит постфикс Beta. Но уже можно тестировать компонент на копиях ваших проектов.
Приглашаю разработчиков компонентов, и опытных разработчиков сайтов всесторонне протестировать версию 4.0.0-beta. Нам нужна обратная связь для того, чтобы выпустить стабильную версию.

Где взять?

На странице компонента в github есть раздел релизы github.com/modx-pro/miniShop2/releases
Там доступны ВСЕ версии miniShop за последний год. В том числе можете скачать готовый транспортный архив версии 4.0.0-beta

Ну и конечно, вы можете собрать компонент из исходников. Все свежие наработки в master ветке здесь

Что тестировать?

На самом деле обновлений достаточно много и дабы не разводить кашу в одном посте, я по порядку последовательно опишу все наши наработки в отдельных заметках

Благодарности

В первую очередь хочу сказать спасибо и низко поклониться всем кто поддерживает нас финансово. Это происходит все активнее, и мы в свою очередь тоже все активнее выпускаем обновления.

С новым релизом у нас появилось два новых контрибьютера, каждый из которых реализовал два важных, долгожданных обновления.

@Артур Шевченко — реализовал новый набор JS файлов.
@Евгений Шеронов — реализовал создание нового заказа из админки

С почином вас Парни! Добро пожаловать в команду!

@Евгений Webinmd наш главный и самый опытный тестировщик. Не один релиз не проходит без его внимания и одобрения. Спасибо, что так часто бьешь по рукам. Без тебя было бы больше ошибок!

@Баха Волков наш JS ГУРУ-надзиратель. Без Бахи код и логика были бы существенно хуже.

@Иван Бочкарев — куда же без тебя. Именно Ваня нас всех собрал и не дает расслабиться

@Василий Наумкин — Вась ты по-прежнему нам всем Отец родной. Спасибо за то, что ты все это придумал.

Развитие MiniShop происходит исключительно благодаря Вам друзья!
Финансовая поддержка с вашей стороны, позволяет выделять больше времени на развитие сообщества и обновлять наши проекты, которые в свою очередь приносят пользу и вам.

Поддержать нас можно, используя следующие каналы для доната:
Огромное спасибо, всем кто поддерживает!
Николай Савин
17 сентября 2022, 11:10
modx.pro
1 274
+16
Поблагодарить автора Отправить деньги

Комментарии: 27

alex
17 сентября 2022, 11:27
0
Все празднично, но как быть к примеру с компонентами других разработчиков. После последних изменений часть из дополнений перестала работать. Не исключено, что и другие последуют их примеру. Хорошо бы чтоб и остальные разработчики делающие дополнения, как то участвовали в развитии.
    Николай Савин
    17 сентября 2022, 11:41
    +3
    Так я и публикую эту информацию в первую очередь для разработчиков компонентов. Уж в отсутствии своевременной информации — никто не обвинит, надеюсь.
    Да к сожалению весь ТОП разработчиков компонентов никак не участвует в жизни сообщества и развитии экосистемы (разве что анонимно).
    У нас есть планы и желания развивать компоненты, по мере возможностей будем изготавливать и поддерживать наиболее востребованные. Более того — есть планы по внедрению части платного функционала уже в комплект минишопа. Но это пока только планы.
    Это сотни и тысячи часов разработки и все упирается в финансирование.
      Артур Шевченко
      17 сентября 2022, 15:42
      0
      А можно больше конкретики, какие именно компоненты перестали работать и с какой версией minishop2?
        alex
        17 сентября 2022, 20:44
        0
        Ну вот этот точно msSetInCart, его начали ставить на новой версии 3.0.6 тогда была. Он в корзину ничего не отправляет. Потом на работающем проекте его протестили, при обновлении до 3.0.6 — аналогично себя ведёт. И были ещё пара каких то, уже и не помню точно. но один в процессе все же реанимировали. А вот с этим беда. Но вроде нашли ему замену в виде msAddLinked. Просто не все разработчики следят за своими решениями, и очень печально получается, когда обновил, и что то отваливается.
          Артур Шевченко
          17 сентября 2022, 21:47
          0
          Николай почти в каждом анонсе пишет, что если работает, лучше не обновлять, может сломаться.
            alex
            18 сентября 2022, 10:02
            0
            Ну не обновлять можно до какого то предела. потом захочется что то поставить и будет, что это работает с одной версией, а это с другой. Так можно всегда оставаться на первой версии да и все.
              Артур Шевченко
              18 сентября 2022, 10:48
              0
              Согласись, если разработчик не хочет обновлять свой компонент, который работает в MiniShop2, это не проблема MiniShop2. Мы стараемся сохранить обратную совместимость, но народ требует улучшений, и некоторые из них могут приводить к тому, что некоторые допы перестают работать. Если у компонентов, которые я использую на своих проектах, будут проблемы с JS, я будут их фиксить и выкладывать решения сюда, а так же буду слать PR разработчикам допов.
                alex
                18 сентября 2022, 10:53
                0
                Я не сказал, что это проблема именно minishop. Но согласитесь печально когда надо обновиться, а тебя не пускает компонент и ты просто ждёшь когда обновиться пхп и можно собирать проект заново.
                  Артур Шевченко
                  18 сентября 2022, 11:25
                  0
                  Если всё работает, то обновляться не надо, а если хочется новый функционал, тогда можно обновится, но стоит понимать возможные риски. Мы не Apple, мы не можешь указывать разработчикам как и когда им нужно обновлять свои компоненты.
                    alex
                    18 сентября 2022, 11:28
                    0
                    Да понятно) Но может имеет смысл забирать себе какие то брошенные компоненты. Было бы не так грустно)
                      Артур Шевченко
                      18 сентября 2022, 14:32
                      0
                      Есть идея лучше, писать свои и продавать)))
                        alex
                        18 сентября 2022, 15:35
                        0
                        Думал об этом (именно как компоненты), но пока нет времени. Возможно когда нить займусь)
    Антон А.
    28 января 2023, 06:49
    0
    Если включить новые скриптаы ms2_toggle_js_type, то после оформления заказа корзина очищается, а страница оформленного заказа типа /cart?msorder=1 не открывается. Если выключить новые скрипты, то все ок.
      Николай Савин
      28 января 2023, 11:26
      0
      Вероятно у вас настроена прослушка старые скриптов. Возможно какие то компоненты используют их.
        Антон А.
        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, 18:01
          0
          В любом случае спасибо за сигнал. Решение новое, мало кто его проверял и тестировал. Так что ошибки действительно могут быть. Проверим
            Николай Савин
            31 января 2023, 12:19
            0
            Поправили и зарелизили.
              Антон А.
              31 января 2023, 14:54
              +1
              Спасибо за ваш труд! Задонатил немножко в благодарность.
              Антон А.
              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();
                          }
                      };
                Артур Шевченко
                08 февраля 2023, 10:51
                0
                Спасибо, за обратную связь сейчас тестируем релиз 4.2 там этот баг будет исправлен.
          Артур Шевченко
          29 января 2023, 20:16
          +1
          Да, в обработчике заказа, почему-то вдруг вместо if-else оказался switch-case.
            Антон А.
            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();
                        }
                    };
              Антон А.
              30 января 2023, 09:53
              +1
              А нет, меняется. Спасибо за помощь!
                Артур Шевченко
                30 января 2023, 12:31
                0
                Нижний вариант не работает и моих знаний не хватает, чтобы понять как он вообще может работать. Насколько я понимаю в switch должна быть переменная, которая может принимать одно из значений указанных в case или будет выполнен код в блоке default. В switch у нас true, поэтому всегда выполняется код из блока default.
                  Антон А.
                  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.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          27