Объединение wysiwyg image upload и image editor

Главные вкладки

Аватар пользователя ivanus ivanus 27 мая 2011 в 22:37

Здравствуйте!

Существует ли решение, как можно объединить wysiwyg image upload и image editor ,
т.е. чтобы картинку можно было загружать через wysiwyg редактор и тут же ее править, если надо: что-то подправить, дорисовать и т.д.?

Спасибо за ответы!

Комментарии

Аватар пользователя duozersk duozersk 27 июня 2011 в 14:10

Как автор модуля Image Editor могу сказать, что интеграции с визивигами сейчас нет. Она может появиться, но пока что было не до этого (там есть несколько нюансов, которые пока не решены, требуют много кода, тестов и будут неизбежно глюкавить Smile смотрите ниже).

Что касается решения проблемы в лоб - есть несколько вариантов:
1. Имеется интеграция open-source редактора изображений PaintWeb в TinyMCE - скорее всего, это можно прикрутить к Друпалу (конечно, если возможностей PaintWeb вам будет достаточно).
2. Можно посмотреть на модули типа Picnik (http://drupal.org/project/picnik) или Aviary Image Editor (http://drupal.org/node/1084922). Они позволяют редактировать любое изображение на странице (если у пользователя есть пермишены). То есть не в визивиге, а когда нода уже сохранена - можно подправить изображение при просмотре ноды.

Ну а теперь о нюансах... или почему был выбран подход интеграции с Imagefield:
1. Filefield и Imagefield создают записи о файлах в табличке files - таким образом файл становится не просто мусором на диске, а объектом, которым можно управлять, выводить во вьюсах, присоединять к другим нодам и так далее.
2. Интеграция с этими модулями позволила отлично вписаться в их функциональность и не получить файловую помойку.
3. Если идти по пути редактирования любой картинки в визивиге, то возникают несколько проблем - в визивиге я имею доступ только к юрлу картинки, иногда даже только к её imagecache образу (в конечном итоге можно вычислить юрл оригинальной картинки), и тут надо понять, что это за картинка (либо это просто файл, загруженный через аплоадер типа IMCE; либо это файл, прикрепленный к ноде через Imagefield; либо это файл, прикрепленный к другой ноде, и просто вставленный сюда через IMCE). Это все требует аяксовых запросов к серверу (и к базе данных) и довольно сложной логики. Затем надо правильно обработать сохранение отредактированной картинки, что является совсем нетривиальной задачей (особенно если надо сделать эту картинку Imagefield-ом) и заменить ссылку в визивиге на ссылку такого же типа (imagecache)... Если просто перезаписать файл оригинальной картинки - то будет не очень верно для случая с Imagefield, ибо запись в таблице files сама не поменятся...

В общем, есть масса тонкостей если все делать правильно... Если требование правильности не стоит, то можно, конечно, накодить туеву хучу непонятно чего, которое будет решать проблему в лоб (и потом напарываться на неприятности типа файловой помойки, в которой неизвестно, какие файлы ещё используются в контенте сайта, а какие нет; или сложностей с миграцией, если вдруг понадобится переносить контент на другую систему).

Поэтому я вам рекомендую все-таки пересмотреть задачу и использовать связку Imagefield + Image Editor + Insert (для вставки картинок). Либо кодировать под конкретную задачу и идти на риски, связанные с кастомным кодом, его поддержкой и возможными граблями в будущем.

Спасибо
AndyB