Галерея: сортировка по имени после пакетной загрузки - #643
Conversation
Conflict resolution: PR 640 supersedes merged modx-pro#621 rework (same author, same intent) — took PR side for 36 files; manually preserved modx-pro#631 useConfirm grids, modx-pro#623 datefield dialog styles, modx-pro#643 gallery bits, modx-pro#605 order entry; ProductData sections rebuilt on groupProductDataSections (keeps modx-pro#611/modx-pro#620 sort_order) under PR 640 Panel layout.
|
Этот PR включён в тестовую интеграционную сборку всех открытых PR MiniShop3: AgelxNash/MiniShop3, ветка Сборка нужна, чтобы проверить совместимость взаимозависимых серий PR до их мержа — при последовательном слиянии они конфликтуют друг с другом. Это не ревью и не конкурирующий PR: авторство сохранено (1 PR = 1 коммит с исходным автором), ветка пересобирается по мере обновления PR. Как вошёл в сборку: Слился чисто. (Правки сохранены при последующем #640.) |
|
Отличная работа! Желаю этому PR быстрого мержа и ни одного конфликта 🙌 |
|
Проверил — механика хорошая, но одна вещь не выполняется, и как раз для основного нашего сценария. Что подтвердилось
Локально: Что просьба поправитьЗаявленная в описании регистронезависимость не работает для кириллицы. Прогнал напрямую, воспроизводится стабильно. Для латиницы всё в порядке — проблема именно в многобайтных символах. Смущает то, что это не край, а основной случай: аудитория у нас русская, имена загружаемых фотографий сплошь кириллические, и разный регистр первой буквы в пачке — обычное дело. Фича называется «сортировка по имени», и на типичной галерее она даст не тот порядок, которого ждёт пользователь. Правка — И заодно тест: Кстати, это ровно тот же класс, что мы сегодня чинили в #618/#619: байтовые операции над UTF-8 без учёта многобайтности. Возможно, стоит поискать такие места системно. Мелочи, не блокеры
После правки с |
After Uppy upload-complete, re-rank product gallery files by strnatcasecmp on name so numbered batches match ms2-style order without manual drag.
usort already reindexes the list; array_values was a no-op warning.
mb_strtolower so Cyrillic mixed-case batches sort like ASCII; add a regression test that strnatcasecmp alone would fail.
|
Адрес ревью:
Rebase на актуальную #660В этот PR не включал: |
0e7d7a4 to
ad3e993
Compare
Описание
После завершения пакетной загрузки в Uppy позиции файлов галереи пересчитываются natural sort по имени (
strnatcasecmpнаname, fallback наfile). Пакет01.jpg…10.jpgвстаёт в ожидаемый порядок без ручного drag-sort.Логика в
ProductImageService, тонкий процессорGallery/SortByName, вызов изProductGalleryнаupload-complete.Upload.phpи drag-sort (Sort.php) не менялись.Тип изменений
Связанные Issues
Refs #616 (только пункт 2 — Variant A: сортировка по имени). Компактный uploader и layout остаются вне этого PR.
Как это было протестировано?
composer test -- --filter ProductImageService, ESLint на изменённых Vue/JS)Конфигурация тестирования:
feat/issue-616-gallery-sort-by-nameСкриншоты (если применимо)
Чеклист
composer stan/ CI jobPHPStan)Дополнительные заметки
SortByNameтолько если есть успешные uploads. Очередь в одной вкладке сериализует overlappingcompleteприallowMultipleUploadBatches.product_id/parent_id = 0после загрузки может перезаписать предыдущий ручной drag-порядок (ожидаемое ms2-like поведение).gallerySortOnUpload), замена Uppy.Ручная проверка
01.jpg…10.jpg.