mixedImage - custom TV
mixedImage — modx custom TV
Версия 2.0:

— Изменен внешний вид
— Добавлены новые возможности:
Возможность руками вписать путь к файлу
Новая настройка при создании TV: Удаление файла, если выставлено «Да», то при очистке поля файл физически удаляется с сервера
Открывает сразу папку указаную в настройках TV (от корня источника файлов)
— Поправлено несколько небольших багов:
работа системной настройки «Загружать только при редактировании»
опечатки в лексиконах
правильный текст ошибок
ошибка транслитерации если файл уже существует
_______________________________ _________________________________
Добавлена опция для ресайза загружаемого изображения
Добавляет новый тип TV поля: Смешанная загрузка файла/Mixed Image Input

Является сместью FastUploadTV и стандартной загрузки файлов, часть кода взята из FastUploadTV
Скачать пакет из modstore
Данный тип поля позволяет прикреплять изображения к ресурсам используя стандартный менеджер файлов, либо напрямую с компьютера пользователя, минуя все остальные шаги. Предназначен для загрузки изображений, но может загружать и другие типы файлов, разрешенные для загрузки в системных настройках сайта, но в данном случае необходимо отключить показ миниатюр, чтобы не было битой картинки.
Вот так это выглядит в ресурсе:

А вот при настройке TV поля


Скачать пакет из modstore
Ссылка на github
Версия 2.0:

— Изменен внешний вид
— Добавлены новые возможности:
Возможность руками вписать путь к файлу
Новая настройка при создании TV: Удаление файла, если выставлено «Да», то при очистке поля файл физически удаляется с сервера
Открывает сразу папку указаную в настройках TV (от корня источника файлов)
— Поправлено несколько небольших багов:
работа системной настройки «Загружать только при редактировании»
опечатки в лексиконах
правильный текст ошибок
ошибка транслитерации если файл уже существует
_______________________________ _________________________________
Добавлена опция для ресайза загружаемого изображения
Добавляет новый тип TV поля: Смешанная загрузка файла/Mixed Image Input
Является сместью FastUploadTV и стандартной загрузки файлов, часть кода взята из FastUploadTV
Скачать пакет из modstore
Данный тип поля позволяет прикреплять изображения к ресурсам используя стандартный менеджер файлов, либо напрямую с компьютера пользователя, минуя все остальные шаги. Предназначен для загрузки изображений, но может загружать и другие типы файлов, разрешенные для загрузки в системных настройках сайта, но в данном случае необходимо отключить показ миниатюр, чтобы не было битой картинки.
Вот так это выглядит в ресурсе:
А вот при настройке TV поля
Скачать пакет из modstore
Ссылка на github
Комментарии: 166
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Я имел ввиду функционал, похожий на convertio.co/ru/. Понимаю, что сделать подобное — дело не пары минут.
Если Вы не против, попробую в свободное время на основе исходников прикрутить подобную загрузку, хоть и одного файла. Если получится — отпишусь здесь.
Когда в modstore.pro ждать?
Странно, в отличии от fastuploadTV не использует указанный в ТВшке (и в конфиге) источник файлов. В свою очередь, fastuploadTV не использует mediasource в контексте отличном от web, в отличии от встроенного модексовского TV тип ввода изображение, который всех уважает и всё использует, только не нужен.
Поменял FastUploadTV на mixedImage. Нашел такую особенность.
Если выводим TV от FastUploadTV, то адрес на файл указывается от корня, например:
/assets/uploads/каталог (если прописан в настройках TV)/имя_файла.jpg
В mixedImage выводится только имя файла и каталога, если она есть, т.е. без /assets/uploads/, сразу:
каталог (если прописан в настройках TV)/имя_файла.jpg
Обновил дополнение, но пути остались прежние.
Вывод значения TV идет без assets/uploads/
Источник файлов свой, с директорией: assets/uploads/
Файл лежит в папке: assets/uploads/articles/
При выводе TV выводится: articles/filename.jpg
В параметрах ввода TV, путь сохранения: assets/uploads/articles/
Я может что-то не так сделал. Подскажите.
Если использовать прикрепление файла из загруженных, то выводится опять же без assets/uploads/
или оставьте свои контакты, будем разбираться
Пример поля Вкладки формы:
прописывал так
Спасибо
В общем решил и я протестировать. Есть одна тв-ка она используются в более чем 3000 ресурсов.
Это тв было стандартное Тип — изображение, а у него источник файлов свой, не filesystem.
Попробовал просто переключить на новый тип ТВ.
В общем получил такое:
Потом попробовал в ручную выбрать картинку.
И всё стало нормально. Может у меня что не так конечно, но ТВ стояла стандартная, просто так сменить не получится, автор подскажи пожалуйста в чём может быть дело, спасибо.
Когда стандартная ТВ стоит — такой путь в базе
Когда меняю на новый тип ТП и выбираю картинку сам
В общем он ещё записывает путь источника, при выборе вашей ТВ.
В моём случае путь источника:
В общем если я циклом пройдусь и уберу то всё норм. А что будет если я вдруг хочу поменять путь моего источника файлов? Наврятли в базе у каждой ТВ ресурса в базе путь автоматом поменяется. Автор поясни если я не прав.
Попробую чет придумать к следующей версии
2 момента заметил:
1. При загрузке с компа изображение, которое содержит пробелы и нежелательные символы, сохраняется на диск без пробелов. Но mixedImage указывает в пути старое название файла. Вот joxi.ru/5mdYb1gtkepbj2 А на диске изображение сохранилось под именем htmlimage-20.jpg
2. В списке изображений превью не показываются joxi.ru/Q2KYKgzt4wdVzr
Путь до картинки такой:
Если убрать на конце source=3, то превью выводится.
Сейчас поставил компонент, все нормально. Фото загружаются по пути, но попробовал загрузить фото с русским названием и облом. Фото то загрузилось, но в названии абра-катабра. Видимо слетела кодировка. С латиницей все в порядке. Подскажите, где посмотреть. Спасибо!
P.S. mixedimage.translit отключен
P.P.S у fastuploadTV такая же фигня
mixedimage1 = MODx.load({
устанавливаются почему-то
,showPreview: false
,showValue: false
$this->setPlaceholder('showValue', ($opts['showValue']==$this->modx->lexicon('yes')? 'true': 'false'));
а этот $this->modx->lexicon('yes') был записан в базу в другом лексиконе — если русский, то «Да»/«Нет» если английский то «Yes»/«No». Вообще странное поведение для modx-combo-boolean отправлять данные в базу в виде строки, да ещё на языке лексикона, но оно походу такое.
В общем, в качестве решения, думаю надо писать в базу boolean и проверять так же, может вообще чекбоксами. Глянул где это пишется, а там smarty, даже не знал, что в модекс smarty встроен. К сожалению, не разобрался там где поправить, как временная мера захардкодил в mixedimage.tpl переменные как true.
После обновления ver. 1.1.2-beta, все поломалось.
Изображения выводятся во фронте, если загружать с компа, но не выводятся в бэкэнде.
С источника наоборот — в бэкэнде выводятся, но не выводятся во фронте.
в старой работало по своему принципу и подходило только для новых сайтов, пришлось привести к стандарту
Если обновлюсь не поломается ничего?
Вопрос такой: прежде, чем загружать изображение, ресурс должен быть обязательно сохранён? При создании ресурса не даёт картинку загрузить. Так и должно быть? Если нет, что смотреть?
Путь сохранения:
assets/images/novostroyki/{palias}/{alias}/
Префикс имени файла:
logo-{alias}-{i}{s}
Сохранятся так
assets/images/novostroyki/zao-stroitel/logo-0941.png
не могу понять в чем причина
При наведении на кнопки всплывает undefined:
И можно ли сделать так чтобы когда включена настройка mixedimage.check_resid, при попытке загрузки изображения всплывал алерт с сообщением о том что сначала нужно сохранить ресурс?
по второму вопросу, посмотрю, но пока не обещаю
На версии MODX Revolution 2.5.4-pl — все работает хорошо, все отображается и алерт с сообщением о том что сначала нужно сохранить ресурс выводится.
На версии MODX Revolution 2.5.7-pl — такая же ошибка.
Думаю дело в версии MODX. Разработчик глянь на досуге, плиз))
Подскажите, пожалуйста, как это можно исправить?
file_upload
save_tv
Попробуйте поиграться с галочками для всех значений с именем file_
Лично не тестировал особо
НУ и не стоит забывать про то что необходимо «Перезагрузить все права доступа» и перезалогиниться
ВикторВикторРазработчик, обрати внимание modx.pro/help/12158/
Не работает с pdoPage
Спасибо вам за отличный компонент!
Будет круто если еще добавите возможность удаления изображений.
Где-то что-то делаю не так?
PS а еще для уже сохраненного документа было бы недурно ссылку под кнопками в админке — открыть папку с изображениями ( сразу с путем указанным в настройках)
Использую ваше приложение вместе с MIGX, очень нравится. Но проблема в том, что в путях теряется — uploads/assets… И соответственно картинки теряются…
Интересный момент, есть вариант решения вопроса, но, кривой…
Если в источнике файлов убираю assets/images в base_path, и выставляю в TV путь загрузки — assets/images/ то загрузка идет куда надо, все и в бекенде и во фронтенде показывается и отображается, как и надо, но это плохо тем, что менеджер в этом случае имеет путь к корню сайта…
Выше видела эта же проблема была. Как ее могла бы решить? Может подставить как-то в чанке путь? Или как-то еще. Спасибо. Я уже замучалась с этим :(
1) создаю отдельный источник файлов, ему пишу путь assets/images/
2) в TV параметре путь оставляю пустым, но назначаю созданный источник файлов
3) getImageList сам всё нормально подставляет, pdoTools сниппеты с помощью параметра processTVs тоже хорошо подхватывают путь. Для других вариантов в чанк проставляю путь.
Есть желание переписать это расширение с нуля, оно малость со своими приколами, но всё времени нет. Так что пока так, либо пользуйтесь стандартным полем. Хотел отключить модуль из modstore, но коллеги пока против.
Почему предположил, что именно эта ошибка, потому что в исходном коде в окошке, где должен быть текст с ошибкой, заметил тег переноса br,
в файле — \core\components\mixedimage\lexicon\ru\default.inc.php данный тег встречается только у $_lang['mixedimage.error_tvid_invalid']
Адблок не стоит?
Может кеш необходимо почистить.
Ещё проверил работу mixedImage на только что установленном сайте MODX Revolution 2.5.7-pl, то есть на чистом, из коробки, без всяких дополнений, результат тот же.
А на MODX Revolution 2.5.2-pl изображение загрузилось без проблем. Повторюсь на всякий случай — проблема загрузки картинки возникает при создании нового ресурса, при редактировании ресурса проблем нет.
на MODX Revolution 2.5.7-pl
на MODX Revolution 2.5.2-pl
Используйте стандартный тип поля, может в следующем году созрею переделать
Было бы круто добавить в возможности компонента обрезку изображений, как например в Image+.
Тогда компоненту точно не будет равных!!!
Установил последнюю версию mixedImage.
Не загружает изображения, постоянно выходит ошибка:
Ресурс сохранен. В чем может быть проблема? Выбор из существующих изображений работает корректно.
Проверьте чтобы для вашей роли были нужные галки
(у меня вот эти + там есть еще другая кучка, но она не может повлиять на поле)
file_list
file_manager
file_remove
list
load
source_view
view
+ если используется Источник файлов, то на него тоже должны быть права.
Так что по большому счету проблема в правах, а не в компоненте.
Хотя можно попробовать поставить стандартный тип поля Изображение и проверить.
При загрузке фото на amazon s3 адрес фото подставляется относительный (без url амазона). А само фото грузится правильно. Приходится его повторно уже выбирать и тогда подставляется полный путь.
Такая же проблема с источником файлов Selectel через компонент Swift.
Первая загрузка:
Второй раз выбираю:
Что касается ключа контекста, тоже постараюсь добавить в следующей версии.
Но код есть на гитхабе, если знания позволяют, вносите изменения, с радостью их приму.
При настройке ТВ есть поле, для указание MIME типа. И в качестве примеров дается
И я частенько (и думаю не только я) бессовестно копирую строку из примеров. Но есть одна неувязка. Типа image/png нет в природе, если верить сайту
www.lifewire.com/file-extensions-and-mime-types-3469109
и получается ошибка. Если указать в поле тип image/png и пытаться загрузить изображение в формате png то нельзя сохранить ТВ, будет постоянно уведомление — необходимо сохранить ресурс.
В общем, наверное просто нужно убрать image/png из строки с примерами.
Mozilla
Но раз ошибка возникает, проверю
Создал отдельную группу «Менеджеры» скопировав доступы с «Content Editor» и расширил её, с помощью манулов.
У менеджера есть доступ к файлам (через вкладку «Файлы»), он может загружать их, удалять и т.д. вот когда загружаешь через mixedImage пишет «Нет доступа» — можете посоветовать в какой стороне смотреть?
А так можно перезагрузить права и почистить кеш на всякий случай, может новые права не установились
А вот с mixedImage joxi.ru/L21QVzPiRzqZ72 ошибка.
Права перезагружал (обязательно), кеш чистил конечно
Стало сразу все ок!
Создал источник файлов: Менеджеры
baseUrl: image/
basePath: image/
В настройках TV image, путь сохранения: {id}
Заливаю картинку и получаю путь:
{id}/картинка.jpg
вместо
image/{id}/картинка.jpg
Вопрос: как получить полный путь от корня источника указанного в настройках не прибегая к манипуляции шаблоне?
/image/[[+image]]
basePath: image/
Вот путь image/ не сохраняется.
Чтобы в чанке использовать полный путь, указывайте параметр processTVs
В самом шаблоне модх сам подставляет нужный путь от источника файлов
К примеру, загрузили картинку и вставляют её в тело статьи вот так: joxi.ru/52abVz7ibWk39A и что бы картинка появилась нужно в путь дописать image/
Если взять картинку из того же CKEditor, то при клике мы видим то что положено пользователю (только содержимое папки /image/), но выбирая картинку в поле подставляется полный путь (/image/{id}/картинка.jpg).
Подскажите, где искать проблему?
В настройках поля есть пункт:
Путь сохранения:
(Путь для сохранения относительно корня медиа-ресурса)
Указываю там путь: assets/images/res/{id}
А при добавлении фото открывается корень сайта.
В источнике стоит Filesystem
Спасибо!
Upd: При полном удалении, и новой установке, при попытке загрузить файл, вылазит ошибка
Но в новой версии mixedImage нет папки browser, проверил на чистой установке на modhost (когда сразу новая версия грузится, файлы загружаются нормально). Ошибка получается (возможно) при обновлении каких то совсем старых версий mixedImage. На относительно свежих сайтах mixedImage обновился до последней версии и все работает нормально. Причем папка browser остается при обновлении и там два процессора upload и url
У меня просто заполняется поле ссылкой, но обработка не происходит.
Как бы урегулировать этот момент?
В консоли браузера только ошибки лупит, а в modx вроде бы тихо
может быть я что то не учел? или этот функционал просто не был продуман?
создал ТВ, в нем определенный путь хранения (/img/upload/*resid*/). Через админку все ок, закинул — загрузилось.
А как через апи это делать? Смотрел в сторону runProcessor, посмотрел upload, но что-то не сообразил какие параметры передавать
modx 2.8.6
php 8.2.11
Ошибки в консоли:
Failed to load resource: the server responded with a status of 500 () /assets/components/mixedimage/connector.php:1
В журнале ошибок:
[2023-12-05 16:35:59] (ERROR @ /home/867487654/www/site.ru/core/components/mixedimage/elements/tv/input/mixedimage.class.php: 44) PHP warning: Undefined array key «showValue»
Возможно проблема еще в версии PHP — на 8 версии не тестировалось
Проблемма была в параметре ресайза
Было: w=1920&h=1440&zc=1&q=85&fltr=wmi|/assets/img/wt-big.png|C|30
Стало: w=1920&h=1440&zc=1&q=85&fltr[]=wmi|/assets/img/wt-big.png|C|30
Теперь всё работает!