-
-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Description
Проблема: Неконтролируемое удаление компонента через Package Manager
Текущая ситуация
При удалении MiniShop3 через стандартный Package Manager MODX возникает несколько проблем:
-
Неправильный порядок операций
- MODX сначала удаляет файлы компонента
- Потом пытается выполнить resolvers, которые используют эти файлы
- Результат: PHP deprecated ошибки и невозможность корректно очистить данные
-
Отсутствие контроля
- Нет возможности выбрать, что удалять (только файлы, или данные тоже)
- Нет опции отката миграций БД
- Пользователь не может контролировать процесс удаления
-
Данные остаются в БД
- Таблицы с заказами, товарами остаются после удаления
- Это правильно по умолчанию (безопасность данных)
- Но нет удобного способа удалить всё полностью, если нужно
Предлагаемое решение
Создать собственную страницу удаления компонента в разделе Utilities:
MiniShop3 → Utilities → Uninstall Component
На этой странице пользователь сможет:
- Выбрать, что именно удалять (чекбоксы):
- ☐ Откатить миграции БД (удалить таблицы)
- ☐ Очистить данные (заказы, товары)
- ☐ Удалить медиа-файлы
- Ввести подтверждение (защита от случайного удаления)
- Выполнить контролируемое удаление в правильном порядке
Преимущества:
- Полный контроль над процессом удаления
- Правильная последовательность операций (откат миграций → очистка данных → удаление файлов)
- Не ломает стандартный workflow (кто хочет удалить через Package Manager — пусть удаляет как обычно)
- Профессиональный подход (как у коммерческих компонентов MODX)
Не меняется:
- Стандартное удаление через Package Manager продолжает работать (данные сохраняются)
- Мы добавляем возможности, а не убираем существующие
Технические детали
Страница удаления будет:
- Выполнять операции в правильном порядке (пока файлы ещё существуют)
- Удалять запись о пакете из таблицы
modx_transport_packages
- Очищать кэш
- Перенаправлять пользователя на главную страницу админки
Приоритет
- Low - можно сделать в будущих версиях
- Medium - желательно добавить для удобства пользователей
- High - критично для стабильности
Metadata
Metadata
Assignees
Labels
No labels