msOrderReceiver

Управление заказами miniShop2 с других сайтов в одной админке
Автор дополнения
Артур Шевченко
Пакетов
31
Закачек
3 502
Обычно отвечает в течение суток
Автор дополнения
Пакетов
31
Закачек
3 502
Обычно отвечает в течение суток
Версия 0.4.0-pl
Дата выпуска 05.08.2026
Загрузки 0
Просмотры 137
Внимание, этот компонент несовместим с MODX 3.
Задача
Менеджерам нужен доступ к заказам боевого магазина, но пускать их в его админку нельзя.
Что делает
  • Ставится на отдельный сайт и показывает заказы miniShop2 с одного или нескольких удалённых магазинов — привычной сеткой заказов, как в родной админке.
  • Позволяет менять статусы, редактировать заказ и его состав, работать со справочниками — все действия уходят на удалённый сайт по API.
  • Заказы не копируются в локальную базу: приёмник ничего не хранит и не расходится с источником.
Безопасность
  • Доступ выдаётся группам пользователей MODX, а на стороне магазина действия ограничены правами miniShop2.
  • Обмен идёт по токенам, а не по общему паролю: токен получают автоматически и обновляют по истечении.
Требования
  • MODX Revolution 2.x, PHP 7.4+
  • miniShop2 4+
  • На стороне магазина — пакет msOrderTranslator и mxApi

msOrderReceiver changelog

0.4.0-pl

  • Приёмник ходит на передатчик через mxApi, а не через собственный Basic Auth. TranslatorClient заменён на MxApiClient: токен по client_credentials, кэш токена до истечения (минус минута запаса), один повтор при 401 и заголовок X-MxApi-Actor с логином менеджера stage — без него в аудите прода все действия сливались бы в одну служебную учётку.
  • Коннектор описывает клиента mxApi: поля auth_user/auth_pass переименованы в client_key/client_secret (колонки переименовываются при апгрейде, реквизиты не теряются), endpoint_path по умолчанию — assets/components/mxapi/index.php.
  • Адаптер конверта: mxApi отдаёт {success, data, meta.total}, гриды ExtJS ждут {results, total}. Списки уходят строкой JSON, объекты и записи — массивом: modConnectorResponse достраивает форменный конверт только для тела-массива, и на строке форма падала на JSONReader.readRecords (инцидент 2026-05-22).
  • Смещение страницы: гриды присылают start, публичный контракт mxApi ждёт offset. Незаявленные свойства эндпоинт отбрасывает, поэтому без переименования пагинация молча схлопывалась на первую страницу.
  • Справочники ходят на именованные маршруты /ms2/refs/*, режим «прислать имя процессора» удалён. Операции с позицией заказа адресуются внутри заказа (/ms2/orders/{order_id}/products/{id}), поэтому грид товаров передаёт order_id и для get/remove.
  • Исправлен буквальный баг в ConnectorService::buildUrl: в паттерне '#index.php($|[?#])#' символ # из класса [?#] закрывал разделитель регулярки, вызов валился с «Unknown modifier ']'» и писал предупреждение в error log на каждый запрос. Разделитель заменён на ~.
  • Поля meta, кроме total/limit/offset, разворачиваются в корень списочного ответа: сводку над гридом (num, sum, month_total, month_sum) панель читает оттуда, как у штатного getlist miniShop2.
  • Контроллер страницы заказов переведён на MxApiClient: он тянул удалённый TranslatorClient и страница падала с Fatal error (нашлось только браузерной проверкой — runProcessor-smoke этот путь не задействует).
  • Настройки Basic Auth (auth_user, auth_pass) удаляются из базы при установке: они больше не читаются, но выглядели рабочими реквизитами и хранили старый пароль открытым. Области настроек подписаны, описание базового URL приведено к точке входа mxApi.
  • Требуется mxApi на передатчике и настроенный клиент интеграции (scopes ms2.orders.read/write/delete + ms2.refs.read, contexts ["mgr"]).

0.3.1-pl

  • Product picker is filtered by the order context.

0.3.0-pl

  • Reference data (statuses, deliveries, payments, users) and products are read from the active transmitter instead of the local stage: generic mgr/refs/proxy
    • combo override over ms2.combo.js.
  • Order/product grids no longer save column state (stateful:false) so the column order always follows the transmitter config.

0.2.2-pl

  • Grid columns follow the transmitter list exactly; helper fields stay store-only.
  • Row action titles re-localized via the receiver lexicon (no raw keys in the context menu); column header fallback labels (RU/EN); customer and product cells are plain text (no cross-site links).

0.2.1-pl

  • Guard the connector URL against a corrupted endpoint path.

0.2.0-pl

  • Connector form: clearer hints, required fields, no placeholder saved.

0.1.0

  • Manager orders page (list/card/log/products, mass actions) proxied to the transmitter; local stage permissions (msorder_*) gate every action.
  • Multi-connector: msorConnector table, CRUD page (Передатчики), per-group ACL, active connector in session, transmitter switcher; legacy single-connector settings as fallback.
  • Configurable columns fetched from the transmitter; clearing order fields via update; assorted form-submit and i18n fixes (RU/EN lexicons).

Последние обсуждения в сообществе MODX.pro