Skip to content

fix(options): массовое назначение опций категориям#187

Merged
biz87 merged 3 commits intobetafrom
fix/gh-184-bulk-assign-options-categories
Apr 12, 2026
Merged

fix(options): массовое назначение опций категориям#187
biz87 merged 3 commits intobetafrom
fix/gh-184-bulk-assign-options-categories

Conversation

@Ibochkarev
Copy link
Copy Markdown
Member

@Ibochkarev Ibochkarev commented Apr 6, 2026

Описание

Исправлено массовое назначение опций категориям товаров: вызывался несуществующий процессор Delivery\\Assign вместо Option\\Assign. Дополнительно исправлена логика ветки assign (сравнение метода до ucfirst), обработка ответов вложенных процессоров, валидация массивов из JSON и симметричное «Выбрать всё» / «Снять всё» в дереве категорий с полным раскрытием поддерева.

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите):

Связанные Issues

Closes #184

Как это было протестировано?

Сценарий из issue: несколько опций → «Назначить» → контекстное меню «Выбрать всё» на родительских категориях → сохранить; проверить связи опция–категория. Автотесты в PR не запускались.

  • Ручное тестирование
  • Автоматические тесты (PHPStan, ESLint)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: ветка PR
  • MODX: по окружению ревьюера
  • PHP: по окружению ревьюера

Скриншоты (если применимо)

До После

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en)
  • PHPStan проходит без новых ошибок
  • ESLint проходит без ошибок (для JS/Vue изменений)
  • Обновлён CHANGELOG.md (для значимых изменений)

Дополнительные заметки

  • Повторное назначение уже существующей пары опция–категория по-прежнему может возвращать ошибку из Option\\Assign (_err_ae) — это поведение вложенного процессора; при необходимости идемпотентность можно обсудить отдельно.
  • bulkToggleChecks защищён от отсутствия root.expand.

- Call Option\\Assign instead of non-existent Delivery\\Assign when
  mass-assigning options to categories.
- After context-menu "select all", expand subtree fully then cascade-check
  nodes and run checkchange once so hidden category ids match selection.

Fixes #184
- Fix assign branch: compare method before ucfirst (Assign !== assign).
- Run assign before empty(ids) early return; extract processAssign().
- Propagate ProcessorResponse errors from nested runProcessor (Vendor pattern).
- DRY tree context menu: bulkToggleChecks for select/clear all (symmetric lazy subtree).

Fixes #184
- Validate json_decode results as arrays; cast assign ids to int.
- failureFromProcessorResponse: guard non-ProcessorResponse from runProcessor.
- bulkToggleChecks: no-op if root missing or expand unavailable.

Refs #184
@Ibochkarev Ibochkarev requested a review from biz87 April 6, 2026 03:56
@Ibochkarev Ibochkarev changed the title fix(options): массовое назначение опций категориям (#184) fix(options): массовое назначение опций категориям Apr 6, 2026
@Ibochkarev Ibochkarev marked this pull request as ready for review April 6, 2026 03:56
@biz87 biz87 merged commit 12f8097 into beta Apr 12, 2026
@Ibochkarev Ibochkarev deleted the fix/gh-184-bulk-assign-options-categories branch April 13, 2026 01:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Некорректное массовое присвоение опций категориям

2 participants