[msOrderFiles] 1.1.0 - Загрузка файлов к заказу из фронт-энда

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


Как известно, после оформления заказа анонимом, на указанный 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, т.к. проверялось только на нём. Хотя можно попытаться совместить и с более ранними версиями магазина, скорее всего, даже без существенных правок.

P.S.



Новая версия уже в репозитории

Павел Гвоздь
26 декабря 2016, 10:36
modx.pro
1
2 960
+9
Поблагодарить автора Отправить деньги

Комментарии: 1

Дмитрий
26 декабря 2016, 16:44
+1
Спасибо Павлу за оперативность и нужный компонент. Тут уже несколько раз поднималась подобная тема, но все они оказывались без решения. Уже запущен в работу на одном из моих проектов.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1