msOrderFiles

Прикрепление файлов к заказу ms2
Автор дополнения
Павел
Пакетов
14
Закачек
4 133
Автор дополнения
Пакетов
14
Закачек
4 133
Версия 1.1.0-beta2
Дата выпуска 26.12.2016
Загрузки 23
Просмотры 31
Внимание, этот компонент требует версию PHP 5.3 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.3 !


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

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