mCataloger | Каталогизатор для удобной работы с папками и файлами в MODx

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

По этой (и не только) причине я решил что необходимо структурировать работу менеджеров в файловой системе. Задача стоит не только в изоляции менеджеров от важных папок, но и обеспечить полную автоматизацию, чтобы менеджер не замечал работу пакета и в то же время в файловой структуре был порядок. Поразмыслив над реализацией, я составил небольшой roadmap.

Road Map пакета


  • Плагин работает только для контекста mgr.
  • Плагин работает только для типов ресурсов, которые будут указаны в системной настройке mcataloger_class_keys.
  • При удалении ресурса, удаляется и его папка со всем содержимым. Данная опция регулируется настройкой mcataloger_delete_folders.
  • Для каждого пользователя нужно создать источник файлов, название источника должно полностью совпадать с username пользователя.
  • В созданном источнике файлов, создаем 2 параметра:
    • sourceFilesPath — Путь уже существующей папки. Например assets/.

    • user_id — Идентификатор менеджера, для которого создается источник.
  • Каждый менеджер должен работать только в своем источнике файлов, чтобы не мешать другим менеджерам. Посему для каждого менеджера нужно переопределить системную настройку default_media_source. В ней нужно указать источник файлов, который вы создали для пользователя.

Настройки mCataloger


  • mcataloger_activate — Включает или отключает работу пакета.
  • mcataloger_class_keys — Список class_key ресурсов через запятую, которые будут обрабатываться плагином. По умолчанию включены: modDocument,TicketsSection,Ticket.
  • mcataloger_delete_folders — Если включить эту опцию, то при удалении ресурса будет удаляться папка, название которой совпадает с идентификатором ресурса. По умолчанию включена.
  • mcataloger_managers_id — Список идентификаторов менеджеров через запятую, у которых будет свой источник файлов и для которых будет функционировать плагин.
  • mcataloger_sources_name — Список названий источников файлов через запятую. Название источника файлов должно полностью совпадать с username пользователя (включая заглавные буквы), для которого этот источник будет установлен по умолчанию.
Пример использования и более подробная документация.

Минусы пакета
  1. Находясь в папке ресурса, менеджер не сможет зайти в другие папки в файловой структуре (хотя с моей стороны это скорее плюс). Т.к. идет жесткая привязка id ресурса = папка с id ресурса.
  2. Пакет завязан на id & username пользователя + источник файлов пользователя. Так что если изменить username пользователя, плагин перестанет для него работать.
  3. Необходимо произвести настройки на уровне создать источник файлов, два параметра в нем, системную настройку пользователя и системную настройку mCataloger (возможно в будущем я автоматизирую это)
mCataloger можно бесплатно скачать только в modstore.pro.

P.S.
Пакет уже две недели находится на трех (клиентских) сайтах и никаких проблем не обнаружилось, так же пакет протестировали 4-е человека (помимо меня). Но тем не менее, пока что mCataloger находится в alpha версии.
iWatchYouFromAfar
05 июня 2019, 14:59
modx.pro
1
603
+12
Поблагодарить автора Отправить деньги

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

Alexander V
05 июня 2019, 23:12
0
Не думали, что менеджеры иногда чужие материалы редактируют?
    iWatchYouFromAfar
    06 июня 2019, 00:07
    0
    Что вы имеете ввиду под «материалами» и «редактировать материалы»? 95% работы с файлами это загрузить / удалить файл. Мой пакет не нарушает эту логику, он лишь автоматически структуру создает.
      Alexander V
      06 июня 2019, 00:14
      0
      Ели менеджеру придется редактировать чужой материал, что с файлами будет? Не могу понять логику привязки файлов к пользователю. Логичней привязка к ресурсу, как в Tickets или msGallery.
        iWatchYouFromAfar
        06 июня 2019, 00:20
        0
        Моему пакету пофиг чужой материал или нет. Логика плагина примерно такая:

        1. Менеджер заходит в ресурс, с например, идентификатором 125
        2. Если по пути assets/resources/ еще нет папки 125, она создается (певая часть пути assets/, задается в источнике файлов пользователя)
        3. Если папка 125 уже есть (она создается в момент первого рендера ресурса), пользователь при попытке открыть файловый менеджер. попадает прямо в неё и видит там все файлы.
        4. Находясь в папке assets/resources/125/, пользователь не может перейти в другие папки, потому как идет привязка к id ресурса.
        P.S.
        Результат работы, вы можете увидеть на моем сайте, прямо в примере документации. Обратите внимание на пути изображений, они на всем сайте рассортированы по папкам с id ресурса. А в самом низу результат работы пакета.

        Если и так не понятно, то установите пакет на modhost и посмотрите его логику. Привязка идет к id ресурса.
    Ник
    16 сентября 2019, 02:38
    0
    Все сделал как в вашем подробном руководстве, но вот дальше-то что делать? Директории для ресурсов создаются. Как настроить TVшки? Прописать им источник одного менеджера?
    Запутался, помогите плиз.
      iWatchYouFromAfar
      16 сентября 2019, 09:10
      0
      А что вы хотите делать дальше? TV и так будет работать по настройкам моего компонента, если только вы не задали TV свой источник файлов.
        Ник
        16 сентября 2019, 19:35
        0
        У меня по умолчанию на tv ставится filesystem и mCataloger не работает. Только если принудительно ставить источник созданный для юзера.
          iWatchYouFromAfar
          16 сентября 2019, 20:27
          0
          После настройки плагина, необходимо" завершить все сеансы" а снова авторизироваться в админку. Если проблема сохраняется, пишите мне в личку и доступы дайте.
            iWatchYouFromAfar
            16 сентября 2019, 21:45
            0
            Да действительно, с TV мой компонент не работает, я у себя на сайте вручную менял источник файлов у TV. Проблема в том, что TV не работает с системной настройкой default_media_source и не подхватывает её переопределение. TV работает со своим источником файлов, который жестко ему задан, плагин конечно можно доработать и источник файлов будет меняться автоматически, но это создаст больше проблем (т.к. зачастую у TV должен быть именно свой источник файлов). К тому же, смену источника файлов у TV будут видеть все, а не только менеджер 3, что создаст еще больше проблем и нарушит логику работы компонента.

            Посему заключение врача: mCataloger работает только с источником файлов в самом ресурсе, работу с источником файлов у TV не подхватывает.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        9