[msOrderFiles] Файлы к заказам miniShop2


Небольшой компонент, предназначенный для прикрепления файлов к заказу miniShop2. Нет ни сниппетов, ни чанков, ни отдельной страницы компонента. Есть только вкладка, встроенная в окошко редактирования заказа miniShop2, и свой Источник файлов.

За идею компонента спасибо Михаилу Воеводскому!

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


Чтобы вывести список файлов определённого заказа (например, в личном кабинете юзера), нужно воспользоваться сниппетом 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 — позиция новых файлов в списке. Другими словами, куда загружать новые файлы: в начало или в конец.

Купить пакет в modStore.pro
Павел Гвоздь
08 сентября 2016, 21:16
modx.pro
1
5 597
+6
Поблагодарить автора Отправить деньги

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

Воеводский Михаил
09 сентября 2016, 00:57
+2
Павел, для упрощения добавь сниппет-обертку над pdoResources, который добавит свои особые параметры и заменит некоторые стандартные. Сделать его не долго, но снимет огромное количество вопросов по ошибочному вызову pdoResources.
    Павел Гвоздь
    09 сентября 2016, 10:42
    +1
    Да, ты прав. Пожалуй, вскоре сделаю именно так.
    ck
    ck
    12 сентября 2016, 11:32
    0
    Можно ли с помощью этого компонента автоматически высылать файлы в зависимости от приобретённого товара?
      Воеводский Михаил
      12 сентября 2016, 11:34
      0
      Нет. Это дополнение для ручного прикрепления файлов к заказу в целом. Например, скан счета или акта.
        ck
        ck
        12 сентября 2016, 11:36
        0
        Спасибо. А есть на сторе дополнение, позволяющее отправлять файл после оплаты?
          Воеводский Михаил
          12 сентября 2016, 12:39
          0
          Готового дополнения с таким функционалом не видел.
          Можно использовать это modstore.pro/packages/photos-and-files/fileattach и добавить плагин отправки на почту списка ссылок на скачивание файлов, прикрепленных к товарам в заказе, после смены статуса заказа на «Оплачен».
            Павел Гвоздь
            12 сентября 2016, 15:30
            0
            Можно пример, что за файл нужно отправлять юзеру после оплаты заказа? Это какой-то конкретный файл, заточенный для определённого юзера или общий файл для каждого?
              ck
              ck
              05 октября 2016, 18:34
              0
              Это общий файл. Например mp3-файл (музыка, перевод и т.д.).
              Ниже ребята об этом и говорят.
          but1head
          12 сентября 2016, 18:50
          0
          Как вариант modstore.pro/packages/integration/msdigitaloffers
          код = ссылка на файл
            Евгений
            12 сентября 2016, 19:00
            0
            1. Есть возможность автоматической генерации уникальной ссылки с ограничением времени жизни?
            2. Кода будет работать с новым минишопом?
              but1head
              12 сентября 2016, 19:02
              0
              1. Нет, ибо создавался компонент под продажу игровых ключей и тд, т.е. «кодов» того, что уже есть.
              2. В процессе, по срокам не сориентирую, но скоро.
                Евгений
                12 сентября 2016, 19:07
                0
                Может сделаете отдельное приложение для покупки файлов?
                  but1head
                  12 сентября 2016, 19:10
                  0
                  Контакты в профиле.
                  Вообще был какой-то компонент, который умел генерировать ссылку на файл и доступ к ней на * кол-во времени, но не могу вспомнить его название.
          Stan Ezersky
          23 сентября 2016, 13:51
          0
          Может сделаете отдельное приложение для покупки файлов?
          Тоже интересен аддон с продажей файлов (знаю ещё человек 5, которым это интересно).
            Павел Гвоздь
            23 сентября 2016, 13:53
            0
            Опишите подробнее функционал пакета. Думаю, реализую.
              Stan Ezersky
              23 сентября 2016, 14:01
              0
              Думаю, всё просто

              К товару прикрепляется файл, после покупки файл доступен в истории заказов
              В идеале, отсылать ссылку на скачивание после оплаты заказа на почту.

              Хранение

              1. при загрузке к товару опционально сделать вариант переименовывать или нет в настройках
              2. скачанные файлы должны храниться в личном кабинете, в истории заказов

              Безопасность

              Даже имея ссылку файл скачать нельзя, скачать его может только оплативший покупку.

              Это с ходу, так можно многое развить
                ck
                ck
                05 октября 2016, 18:35
                +1
                Присоединяюсь к Stan Ezersky. Нужен такой копонент.
              Андрей
              01 февраля 2017, 12:03
              0
              Приветствую. Подскажите пожалуйста, как изменить шаблон вывода загруженных файлов в дропзоне. И еще как добавить функцию удаления каждому файлу при выводе уже сохраненных файлов через pdoResources.
              Андрей
              01 февраля 2017, 12:33
              0
              Извините. Отписался уже.
                Юрий
                28 марта 2017, 10:35
                0
                Подскажите, возможно ли привязать кол-во товара и кол-во загружаемых файлов? Т.Е. необходимо сделать товаром — именно загружаемый файл пользователем!
                  Дмитрий
                  20 октября 2017, 14:41
                  0
                  Подскажите как настроить политику доступа msOrderFilesPolicy для анонимов
                    Павел Гвоздь
                    20 октября 2017, 19:12
                    +1
                    Добавить группе анонимов данную политику доступа.

                    Последнее время очень часто звучит данный вопрос в ТП modstore… суть в том, что установив политику доступа и не указав параметр сниппета anonym = true, для анонимов форма даже показываться не будет…
                    Поэтому сниппет необходимо вызывать примерно так:
                    {'!msofForm' | snippet : [
                        'anonym' => true,
                    ]}
                      Дмитрий
                      21 октября 2017, 11:22
                      0
                      вопрос снят, почистил кеш админки политика применилась. С false понятно что он не выводит прикрепление файла.
                    Гущин Сергей
                    Гущин Сергей
                    04 апреля 2018, 09:10
                    0
                    Отмечу очень низкую поддержку автора для тех кто купил пакет. Если у кого-то есть проблемы с политиками, то от автора ответа вы не получите, на мои вопросы о политиках автор ответил что не собирается меня учить ModX ) Вот это поддержка!!! В отличие от того же Володи Володина, который не оставит нерешенным ни один вопрос.
                      Павел Гвоздь
                      04 апреля 2018, 10:34
                      0
                      Ну давайте попробуем разобраться…

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

                      Вы:
                      подскажите как правильно создать политику безопасности для анонима чтобы она работала. Как я делаю я: захожу в «контроль доступа» -> «Группы пользователей и пользователи» -> аноним -> редактировать группу пользователей
                      Делаю доступ к контекстам и доступ к данному источнику файлов и прописываю 'anonym' => true, в сниппете и все равно вылетает alert — доступ запрещен. Подскажите пожалуйста что делаю не так?
                      Я:
                      Теперь:
                      — Управление => Перезагрузить права доступа
                      — Управление => Завершить все сеансы
                      Вы:
                      Можете объяснить почему когда политики применяются, тогда слетает русский язык, и например, вместо надписи Перетащите файлы имеется надпись msorderfiles_frontend_message, и если я меняю политку доступа то выводится доступ запрещен
                      Да и в редактировании заказа не появилось вкладки с файлами, так файл загрузился, но вкладки нет
                      Извиняюсь, вроде все поправилось после очередной очистки кэша
                      но все равно мало инфы о политиках, вам же несложно сделать инструкцию по этим политкам, какие контексты использовать например, web или mgr — напишите и меньше вопросов вам будет идти. Спасибо.
                      Я:
                      Что вам написать? Как пользоваться MODX? Думаю, это не ко мне. Раз уж решили использовать данный инструмент, поизучайте на просторах сети. Полно информации.

                      Извините, конечно, если грубо получилось. Устал от вопросов, которые по сути дела не ко мне нужно направлять. Я ведь не вызывался обучать вас использованию MODX. Я оказываю поддержку моего компонента. Ваш вопрос был решён?
                        Гущин Сергей
                        Гущин Сергей
                        04 апреля 2018, 10:42
                        0
                        В принципе мой вопрос был мною же и решен, единственная ваша подсказка это вот это:

                        — Управление => Перезагрузить права доступа
                        — Управление => Завершить все сеансы

                        Что в общем-то я и без вас делал, но при добавлении политики доступа вы могли бы написать разъяснения, на какие контексты они должны распространяться, хотя бы например, какие указывать права для аннонимов, admin или user, ну хотя бы это, потому что пришлось пробовать все варианты.
                        Вы же этого ничего не объясняете ссылаясь на то что это к вам не относится, а я считаю что разъяснение все-таки нужно по данному пункту, и это относится к данному решению.
                        Ну в общем свою позицию высказал, как я понял я такой не один столкнулся с такой проблемой и обратился к вам, но вы данную проблему не считаете нужным объяснять. Вот и все, вот и поддержка, о чем я и написал.
                          Павел Гвоздь
                          04 апреля 2018, 13:02
                          0
                          на какие контексты они должны распространяться
                          какие указывать права для аннонимов, admin или user
                          Если вы этого не понимаете, может всё таки стоит что-нибудь почитать про систему с которой работаете?
                            Дмитрий
                            11 апреля 2018, 04:06
                            0
                            Тут сидят не только матерые программисты, но и люди которые только учатся работать с системой. Да и не у всех есть время разбираться с деталями работы компонента, а требуется его только корректно запустить. Да и сама суть покупки готового компонента говорит о том, что человек хочет получить готовое решение. Да и если вы опытный разработчик, то вам не составит труда написать что-то подробнее «Чтобы пользователь мог загружать файлы из фронт-энда, добавьте его группе политику доступа msOrderFilesPolicy. Тоже касается и анонимов»
                              Павел Гвоздь
                              11 апреля 2018, 09:26
                              0
                              Да и если вы опытный разработчик, то вам не составит труда написать что-то подробнее «Чтобы пользователь мог загружать файлы из фронт-энда, добавьте его группе политику доступа msOrderFilesPolicy. Тоже касается и анонимов»
                              В смысле «написать»? Это написано с первый дней существования компонента!

                              Тут сидят не только матерые программисты
                              То есть, только «матёрый программист» способен разобраться с тем, какие права анониму назначить, админские или юзерские?.. Может изучение тогда лучше начать с чего-то, вроде Логики? Жаль, что её исключили из школьной программы. :(

                              Да и не у всех есть время разбираться с деталями работы компонента
                              Да и не у всех есть время разбираться с деталями работы MODX, вы хотели сказать?

                              Если вы ещё не поняли, то данный спор упёрся в то, что Гущин Сергей просто не захотел изучать, как работают Политики доступа в системе, которую он выбрал в качестве инструмента. Он захотел, чтобы я ему объяснил во всех подробностях, что это такое, как это настраивать (вплоть до цвета кнопочки, на которую надо нажать), а заодно ещё и прихватил объяснение того, что такое Контексты в MODX, и кто такие админы с юзерами.
                                Дмитрий
                                11 апреля 2018, 16:46
                                -3
                                В смысле «написать»? Это написано с первый дней существования компонента!
                                написать подробнее

                                То есть, только «матёрый программист» способен разобраться с тем, какие права анониму назначить, админские или юзерские?.. Может изучение тогда лучше начать с чего-то, вроде Логики? Жаль, что её исключили из школьной программы. :(
                                Причем тут логика? Непонятно что компоненту надо, если я делаю все по вашим инструкциям, а он работать не хочет. Ни с юзерскими, не с админскими правами — ни с какими! Нужна информация подробнее, чтобы понять что делается не так.

                                Да и не у всех есть время разбираться с деталями работы MODX, вы хотели сказать?
                                нет, именно ВАШЕГО компонента. Как работают политики доступа в ModX я знаю и пользуюсь, но ВАШ компонент, в код которого у меня нет ни времени, ни желания лезть с указанными параметрами работать не хочет. Сколько раз еще повторить?

                                Мы сейчас тратим время на то, что бы вы сняли корону и написали простым смертным (каким вы себя видимо не считаете) как заставить этот долбанный компонент работать без тыканий по 3 часа с разными комбинациями параметров.

                                Что такое контексты и политики доступа от вас объяснять не требую. Я хочу узнать необходимые параметры, которые нужны для работы компонента.

                                Каждый из нас специалист в своем деле и если каждый с умным видом будет говорить «иди почитай, я не должен ничего объяснять», то ничем хорошим это не закончится.

                                Если есть столько вопросов по этой теме, то может стоит все-таки спустится с небес на землю и наконец решить этот вопрос?
                                  Павел Гвоздь
                                  11 апреля 2018, 17:00
                                  0
                                  Стоп стоп стоп!

                                  1) Давайте без истерик.

                                  2) Нет никакой секретной инфы о том, как настроить данный компонент. Я всё описал уже тысячу раз.

                                  3) Если всё сделано по моим инструкциям и не работает, то я уже написал вам в ТП Modstore:
                                  Кидайте доступы к сайту
                                  Или мне опять включать экстрасенсорные способности?

                                  Вообще забавно так наблюдать, как человек не хочет ни предоставить доступы, ни разобраться в работе компонента, а только обвинять разработчика в ношении какой-то короны и утаивании секретной настройки компонента. Ещё раз: прекратите истерить и поймите, что это у вас что-то не получается, а я не из-за вредности не говорю, как его настроить, а потому что банально не экстрасенс.
                                    Дмитрий
                                    11 апреля 2018, 17:18
                                    0
                                    Чтобы пользователь мог загружать файлы из фронт-энда, добавьте его группе политику доступа msOrderFilesPolicy. Тоже касается и анонимов.
                                    После этого не забудьте сделать:
                                    — Управление => Перезагрузить права доступа
                                    — Управление => Завершить все сеансы
                                    И сбросить кеш, на всякий случай!
                                    На чистом modx с указанными вами параметрами ваш компонент не работает. Что тут еще сказать?
                                      Дмитрий
                                      11 апреля 2018, 17:29
                                      0
                                      Видимо, надо настроить еще и доступ к источнику файлов, но про это ни слова не написано.
                                        Павел Гвоздь
                                        11 апреля 2018, 17:33
                                        0
                                        Не обязательно. У меня только «Доступ к контекстам» указан «msOrderFilesPolicy».
                                      Павел Гвоздь
                                      11 апреля 2018, 17:29
                                      0
                                      Можно сказать доступы. :)
                                        Павел Гвоздь
                                        11 апреля 2018, 19:25
                                        +3
                                        Что и требовалось доказать! Компонент тут не при чём…
                                        У админа нет прав доступа, указанных в документации к компоненту. Из под него он авторизован в админке и думает, что проверяет из под анонима.

                                        Как проверить:
                                        — Открываем сайт в Режиме инкогнито, проверяем анонимом — всё работает.
                                        — Открываем сайт в браузере, в котором авторизованы админом, у которого нет нужной политики доступа — не работает.

                                        Это к тому, как банальная невнимательность порождает проблемы…
                                        Павел Гвоздь
                                        11 апреля 2018, 20:46
                                        0
                                        По ходу дела выявилась локальная проблема, при чём довольно специфическая. У Дмитрия на сервере PHP настроен таким образом, что кеширует состояния файлов. Пришлось добавить функцию сброса кеша состояния:
                                        clearstatcache();
                                        Проблема локальная, компонент до сих пор настраивается без всякой магии. Хотя, ходят слухи, что моя корона не позволяет мне выдавать секреты настройки моих компонентов… :)

                                        P.S. Буду благодарен, если администрация удалит срач в комментах!
                                  Павел Гвоздь
                                  11 апреля 2018, 17:02
                                  +1
                                  Вот так вот один пустил сплетни о том, что разработчик что-то утаил. А второй подхватил и начал истерику на ровном месте. Завтра уже пол сообщества будет думать, что я вредный и скрываю ценную информацию по использованию моих платных компонентов. =)
                      Гущин Сергей
                      Гущин Сергей
                      04 апреля 2018, 13:09
                      -1
                      Ладно, уровень тех поддержки по пакету думаю стал понятен всем. Можно тему закрыть
                        Дмитрий Суворов
                        05 апреля 2018, 14:24
                        +1
                        Да, уровень поддержки стал понятен. А еще стало понятно с какими людьми порой приходится работать авторам
                        Евгений
                        09 сентября 2018, 17:49
                        0
                        Народ, кто то разобрался с политиками доступа? я купил компонент, и никак не могу понять как настроить, что бы у меня в корзине все работало…
                          Евгений
                          09 сентября 2018, 18:12
                          0
                          Разобрался наконец то. Вот что необходимо сделать что бы все заработало во фронте для анонимов:
                          1) Открываем в админке «Контроль доступа»
                          2) Кликаем правой кнопкой мыши на «аноним» и выбираем «Редактировать группу пользователей»
                          3) Жмем «Добавить контекст»
                          4) далее заполняем поля: контекст -web, Минимальная роль — Member — 9999, Политика доступа — msOrderFilesPolicy
                          5) Сохраняем все это дело

                          Уже после всех этих манипуляций делаем это:
                          — Управление => Перезагрузить права доступа
                          — Управление => Завершить все сеансы

                          И все готово.

                          Я думаю если бы автор не поленился и написал бы эту инструкцию, то здесь не было бы портянки с недовольными комментами
                            Павел Гвоздь
                            09 сентября 2018, 19:49
                            +3
                            А это для кого вот тут?


                            «Поленился», «не поленился»… Если бы вы также хорошо старались при изучении системы, с которой работаете, не было бы таких вопросов.
                            Может вам ещё по пунктам написать, как компонент скачать и установить? А потом написать, как сниппет вызвать с примерами на все случаи жизни?

                            Не нужно на автора дополнения сбрасывать ответственность, которую вы берёте на себя, когда соглашаетесь на ту или иную работу!

                            P.S. Это всё, что я могу сказать вам. Больше отвечать не стану.
                          Айдар
                          02 октября 2018, 22:09
                          0
                          А можно как-то выводить превью файла в письме, а не просто ссылку на файл?
                            exist17
                            14 февраля 2019, 14:33
                            0
                            Друзья, а есть у кого-то живой пример реализации на функционирующем сайте?
                            Интересует именно клиентская часть — отправка файла при оформлении заказа в корзине. Хочу купить компонент. По описанию вроде все подходит, но хотелось бы увидеть товар лицом, как говорится.
                              Андрей
                              14 февраля 2019, 15:00
                              +1
                              На modhost.pro можно протестировать любое платное дополнение на тестовом тарифе.
                                exist17
                                14 февраля 2019, 20:22
                                0
                                Да, я в курсе, но суть в другом. Суть — сэкономить время предполагаемой разработки, увидев пример реализации на живом проекте.
                            Владимир Ребров
                            25 марта 2020, 16:21
                            0
                            Здравствуйте.

                            Подскажите, пожалуйста, должно ли формироваться превью загруженного файла и почему его может не быть?

                            И второй вопрос: после обновления страницы в сером блоке превью название файла меняется на хэш. Можно ли всегда отображать имя файла?

                              Sergey (Sentinel)
                              21 октября 2021, 13:15
                              0
                              С быстрым заказом не робит! Как подружить его с msOneClick?
                                vrm13
                                18 декабря 2021, 12:28
                                0
                                тот же вопрос, крутил и так и этак, что-то не заводится. Например msOneClick с yandexdiskuploader получилось, там нужно было подключить css и js от yandexdiskuploader непосредственно в модальном окне и всё заработало, здесь тоже подключаю скрипты и стили, но всё равно дропзона не активна, может есть у кого решение?
                                  Sergey (Sentinel)
                                  20 декабря 2021, 11:34
                                  0
                                  Т.к. это платный компонент, думаю решений нет ни у кого. И пока у автора тоже :(((
                                    Павел Гвоздь
                                    20 декабря 2021, 12:02
                                    +1
                                    Тут как минимум вопросы нужно задавать в ТП на Modstore. А вообще, этой совместимости в описании компонента не заявлено, поэтому это платная доработка. И есть у меня подозрение, что решение надо писать на стороне второго компонента.
                                      vrm13
                                      22 декабря 2021, 09:39
                                      0
                                      согласен, но я не могу в поддержку более года прошло на оба компонента, поэтому сам ковырял. У msoneclick даже есть события типа «msoneclick_after_init» только всё рано не получилось, в консоли вижу только одну разницу в вызовах на странице и в модальном окне: на странице когда всё работает подключается actions.php от msOrderFiles, а в модальном окне его не появляется, а как он запускается я так не понял.
                                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                58