Нужна помощь в разработке AssetsTV custom input

Привет.

Я пытаюсь сделать custom TV input для работы с файлами в админке. Такая смесь файлового менеджера и галереи + работа с TinyMCE. Что-то типа Assets Manager, который есть в репозитории но для TV. Проблема в том, что я дизайнер, а не программист, и чтобы сделать всё по уму, нужна помощь труъ программиста.






Сейчас есть кастомный TV. Внутри dropzone.js и jquery. Можно загружать файлы в указанную папку, удалять их, просматривать загруженные. Есть мультизагрузка. Файлы можно сортировать, добавлять к ним описание – эта инфа хранится в TV в JSON'е.




В настройках ТВ можно указать папку с использованием плейсхолдеров [year], [month], [day], [id]. То есть вы можете создать несколько ТВ, которые будут грузить файлы в разные папки. Например: /assets/lib/[id]/images/ и /assets/lib/[id]/files/. Там же задаются типы файлов для загрузки, максимальный размер файла и настройки для ещё одной фишки: вставки в TinyMCE (собираюсь прикрутить и другие редакторы). По двойному клику на загруженном файле он вставляется в TinyMCE по заданному шаблону. Шаблоны разные для разных типов документов.

Идею со вставкой в TinyMCE я собираюсь развивать. Думаю прикрутить возможность вставки изображений с каким-нибудь лайтбоксом или в виде слайд-шоу. По идее, AssetsTV должен стать чем-то типа «медиа-панели», дополняющей TinyMCE. Я хочу сделать не альтернативу файловому менеджеру, а основной инструмент работы с файлами для редактора сайта: загрузка драг'н'дропом, вставка двойным кликом, отсутствие кучи модальных окон, которые используются сейчас (диалог вставки изображения TinyMCE, файловый менеджер, окно загрузки и т. д.). Бонусом получаем что-то типа галереи или filelister'а.

Есть сниппет для вывода файлов и чанк шаблона для этого сниппета. Сниппет отображает прикреплённые файлы и умеет отображать их в том порядке, в котором они отсортированы в админке. Все его параметры прописаны в коде сниппета.

Всё работает, кроме одного и главного. Assetstv.tpl (шаблон TV) посылает запросы upload.php. Upload.php грузит, удаляет и отображает существующие файлы, но он НЕ ИМЕЕТ НИКАКОЙ ЗАЩИТЫ.

Насколько я понял, нужно копать в сторону коннкторов и процессоров. Так же вроде как есть процессор browser, который может быть полезен. Может быть есть какая-то дельная статья про процессоры и коннкторы, в идеале на русском. Могу ли я как-то использовать стандартные средства MODX для загрузки/удаления файлов? Как создать коннектор/процессор? Особенно про коннекторы мало инфы. Какие проверки производить кроме прав пользоваетеля на загрузку/удаление файлов?

По-моему, штуковина получается довольно полезная, но раз дело касается безопасности, вероятно, дилетант должен уступить место профи. Очень надеюсь на помощь тех, кто может допилить мой код или просто посоветовать куда и как копать дальше. Кроме того, было бы неплохо услышать какие-то отзывы о том, что получилось. Не фигнёй ли я страдаю? :-)

dyranov.ru/assetstv-0.2-alpha.transport.zip — это то, что мне удалось собрать с помощью PacMan'а. Если вы скачали, установили этот пакет, и у вас ничего не работает/что-то глючит — сообщите мне.
Денис Дыранов
09 апреля 2015, 10:49
modx.pro
1 668
+2

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

Василий Наумкин
09 апреля 2015, 19:01
+1
Мне не очень нравится использовать ТВ, потому что это строки в БД c типом text. В них можно хранить много данных как JSON, но в нём трудно искать и сортировать.

Поэтому для работы с файлами в miniShop2 была разработана специальная галерея, продвинутая версия которой давно доступна отдельным дополнением.

По моему, она уже умеет всё, что ты хочешь, и гораздо больше сверх того.

Нет только интеграции с редакторами, но это потому, что их я тоже не очень люблю, и предпочитаю вставлять в текст плейсхолдеры ручками.

В общем, ты уверен, что делать работу с файлами при помощи ТВ это вообще хорошая затея?
    Денис Дыранов
    09 апреля 2015, 19:55
    0
    Если я правильно понял, то ваша галерея — именно галерея. Может ли она работат с архивами, например?

    Редакторы я тоже не особо жалую, чего не скажешь о обычных менеджерах, которые в плейсхолдерах разбираться не хотят, а хотят чтобы «как в ворде». Это дополнение для них. Кроме того, хорошо настроенный TinyMCE пока что ведёт себя вполне адекватно. И подключенный к нему типограф — полезная вещь.

    Что касается ТВ. Нет, я не уверен, что это хорошая затея. Но это проще, а я не вижу смысла усложнять. В ТВ у меня хранятся:
    — заголовок для файла,
    — описание,
    — тип (изображение, архив, документ и т. д.)
    — порядковый номер, который устанавливается в админе простым перетаскиванием.
    Сниппет, который выводит список файлов, вполне работоспособен даже без этого JSON'а — для него главное — файлы на диске. Ну, и путь к папке он берёт из настроек ТВ. Сколько тут запросов к базе? 2? Наверное больше, но не сильно больше. Будет ли оно работать быстрее, если для каждого файла создавать запись в базе? Какие бонусы я получу от записей в БД?

    И сниппет — не единственное для чего это дополнение разрабатывается. Куда важнее как раз работа с TinyMCE. То есть это «сделать редакторам сайта удобно», а не «ещё одна галерея для MODX». Это, по сути, и не галерея вовсе. Я всё никак не найду эту статью, описывающую админку какого-то популярного новостного сайта. Менеджер пишет текст в WYSIWYG-редакторе. В определённом месте вставляет шаблон для ввода в несколько колонок, в одну из них вставляет изображение, в другой продолжает писать текст, потом обратно переходит к одной колонке. И всё делается драг'н'дропом, без строчки кода, в одном окне. Что-то отдалённо похожее сделано в Медузе siliconrus.com/2015/01/meduza-how-it-works/ (раздел фоторедактор).

    ТВ, на мой взгляд, самый простой способ. В зависимости от шаблона документа, подключается одна или несколько дропзон, каждая со своими параметрами. У каждой дропзоны своя папка. У каждого шаблона своя папка. И где эта папка находится — это я решил, а не дополнене, как в случае с Asset Manager. Можно картинки для новостей хранить в /assets/images/news/[year]/[month]/[id]/, а фото продукции и прикрепленные файлы в /assets/products/[id]/. Эти файлы легко загрузить (без лишних кликов), легко удалить, легко вставить в редактор и можно отобразить списком при помощи сниппета. Кроме того, у каждого можно просто скопировать ссылку и вставить в контет и без TinyMCE. Для этого я заморочился с этим дополнением.
      Василий Наумкин
      09 апреля 2015, 20:01
      +1
      ms2Gallery работает с любыми файлами, если они разрешены в настройках источника медиа. То есть, он может работать с локальной файловой системой или удаленными сервисами, типа Amazon S3.

      Со всем остальным спорить не буду. Если тебе так проще и удобнее — на здоровье.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3