Корзина пуста
Войти О магазине FAQ Авторы Хостинг Сообщество
Прикрепление файлов к заказу miniShop2 из бек-энда
Войдите, чтобы оформить заказ.
Загрузите дополнение из админки вашего сайта. Как?

Внимание, этот компонент требует версию PHP не ниже 5.3!
Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.


Компонент предназначен для прикрепления файлов к заказу miniShop2, как из бек-энда, так и из фронт-энда.
В бек-энде файлы отображаются на вкладке, встроенной в окошко редактирования заказа miniShop2.

Как известно, после оформления заказа анонимом, на указанный email при заказе создаётся пользователь. Так вот этот пользователь прикрепляется и к файлам, которые были загружены при оформлении заказа.


Вывод формы загрузки файлов

Сниппет лучше всего размещать в чанке tpl.msOrder, чтобы в пустой корзине форма не отображалась.

Параметры сниппета msofForm:

  • tpl — Шаблон вызова формы,
  • order — ID заказа. По-умолчанию 0,
  • user — ID пользователя. По-умолчанию текущий,
  • source — Источник файлов. По-умолчанию указывается из настройки msof_source,
  • anonym — Позволять ли анонимам пользоваться формой,
  • dropzone — Массив параметров Dropzone, можно JSON,
  • maxFiles — Максимальное кол-во файлов. По-умолчанию 2,
  • maxFilesize — Максимальный размер файла в MB. По-умолчанию 2.

Пример вызова:

{'!msofForm' | snippet : [
    'maxFiles' => 20,
    'maxFilesize' => 10,
    'anonym' => false,
]}

Важно

Чтобы пользователь мог загружать файлы из фронт-энда, добавьте его группе политику доступа msOrderFilesPolicy. Тоже касается и анонимов.


Вывод файлов в письме пользователю/менеджеру

В нужном месте шаблона письма пишем вызов сниппета pdoResources с нашей моделью msOrderFiles:

{'!pdoResources' | snippet : [
    'class' => 'msOrderFile',
    'loadModels' => 'msOrderFiles',
    'where' => [
        'order_id' => $order['id'],
        'active' => 1,
    ],
    'sortby' => '{"rank":"ASC"}',
    'tplWrapper' => '@INLINE <ul>{$output}</ul>',
    'tpl' => '@INLINE <li><a href="{("site_url" | option) ~ $url}">{$name}</a></li>',
]}

Важно учитывать, что это решение 100% работает для miniShop2 >= 2.4, т.к. проверялось только на нём. Хотя можно попытаться совместить и с более ранними версиями магазина, скорее всего, даже без существенных правок.


Вывод списка файлов заказа

Чтобы вывести список файлов определённого заказа (например, в личном кабинете юзера), нужно воспользоваться сниппетом pdoResources:
{'!pdoResources' | snippet : [
    'class' => 'msOrderFile',
    'loadModels' => 'msOrderFiles',
    'where' => [
        'active' => 1,
        'order_id' => 10,
    ],
    'sortby' => '{"rank":"ASC"}',
    'tplWrapper' => '@INLINE <ul>{$output}</ul>',
    'tpl' => '@INLINE
        <li><a href="{$url}">{$name}</a></li>
    ',
]}


Плейсхолдеры для параметра tpl

  • id — id файла заказа,
  • order_id — id заказа в ms2,
  • source — id источника файлов,
  • name — название файла,
  • description — описание файла,
  • file — имя файла с расширением,
  • url — путь до файла, начиная от корня сайта,
  • mime — тип файла, по стандарту MIME,
  • ext — расширение файла,
  • hash — хеш, который используется для сравнения уникальности загружаемого файла,
  • size — размер файла в байтах,
  • createdon — дата загрузки файла,
  • createdby — id юзера, который загрузил файл,
  • rank — номер позиции файла в списке,
  • active — является ли файл активным.


Источник файлов msOrderFiles

В источнике файлов, помимо стандартных настроек (basePath, baseUrl), можно указать и такие:

  • allowedFileTypes — список расширений файлов, которые разрешается загружать,
  • fileNameType — знакома многим из ms2Gallery, означает метод переименования файла,
  • positionNewFiles — позиция новых файлов в списке. Другими словами, куда загружать новые файлы: в начало или в конец.


Автор выражает благодарность Михаилу Воеводскому за идею дополнения.
Обсуждение компонента в сообществе MODX.PRO.

Задавайте вопросы по настройке и эксплуатации платных дополнений.
1.1.0-beta2 (26.12.2016)
==============
- Поправлен баг на MODX ниже 2.5.2, когда из фронт-энда ключ сортировки не передавался и SQL запрос из-за этого крашился

1.1.0-beta (26.12.2016)
==============
- Добавлена загрузка файлов из фронт-энда
- Рефакторинг кода
- Стилизация внешнего вида в бек-энде

1.0.2-beta2 (23.12.2016)
==============
- Поправлена совместимость с PHP 5.3

1.0.2-beta (20.12.2016)
==============
- Добавлено удаление файлов из базы при удалении связанного заказа
- Подкорректирован внешний вид таблицы файлов заказа в бек-энде

1.0.1-beta3 (29.10.2016)
==============
- Поправлен тип поля rank в базе

1.0.1-beta2 (28.10.2016)
==============
- Поправлена подстановка базового пути в файл при аплоаде
- При обновлении файла через процессор mgr/file/update добавлена возможность заменить файл новой версией

1.0.1-beta (28.10.2016)
==============
- Добавлена возможность добавлять файлы, не загруженные методом HTTP POST, через процессор mgr/file/upload

1.0.0-beta (09.09.2016)
==============
- Start
    Войдите на сайт, чтобы прокомментировать.
    График скачиваний дополнения за последние 30 дней. Серым фоном отмечены выходные.
    Название
    msOrderFiles
    Сайт дополнения
    Версия
    1.1.0-beta2
    Дата выпуска
    26.12.2016
    Автор выпуска
    Павел
    Цена
    367.5 a
    Загрузок
    19
    Версия MODX
    от 2.3
    Теги
    Другие дополнения автора
    CurrencyCalc, xParser, Compiler, msDeliveryOnMap, tvSuperSelect, ms2GalleryBabelCopying, msPromoCode, imgArea, msKuponator, getQRcode, videoGallery, YandexMaps, phpThumbOn
    Поделиться