msOrderFiles

Прикрепление файлов к заказу ms2
Автор дополнения
Павел
Пакетов
33
Закачек
45 554
Обычно отвечает в течение нескольких дней
Автор дополнения
Пакетов
33
Закачек
45 554
Обычно отвечает в течение нескольких дней
Версия 1.1.7-beta
Дата выпуска 26.06.2020
Загрузки 222
Просмотры 14 760


Компонент предназначен для прикрепления файлов к заказу 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.7-beta (26.06.2020)

  • Добавлено удаление пустой папки из под файлов

1.1.6-beta (18.06.2020)

  • Добавлен сниппет msofList

1.1.5-beta2 (20.09.2018)

  • Поправлена передача параметра &timeout в JS

1.1.5-beta (20.09.2018)

  • Добавлен параметр &timeout у сниппета msofForm для указания ожидания запроса на загрузку файла, по-умолчанию 90000

1.1.4-beta (15.08.2018)

  • Добавлена работа с облаком
  • Поправлена ошибка подгрузки файлов при наличии нескольких форм компонента на странице

1.1.3-beta (15.08.2018)

  • Исправлен способ инициализации JS класса для копии формы, теперь напрямую в JS передаётся propkey

1.1.2-beta (11.04.2018)

  • Добавлен сброс кеша состояния файлов

1.1.1-beta (02.08.2017)

  • Поправлен баг на фронте, когда список файлов не очищался после оформления заказа
  • Поправлено удаление объектов файлов заказа при удалении связанного объекта msOrder
  • Небольшой рефакторинг

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

Последние обсуждения в сообществе MODX.pro