Node_images для drupal 6.0

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

Аватар пользователя tdg tdg 28 апреля 2008 в 12:12

Поиски решения задачи прикреплять картинки к нодам привели к замечательному модулю node_images.
К сожалению его пока не портировали под шестую версию. На выходных сделал это самостоятельно - результат прилагается.

Из изменений:
1. Возможность таскать картинки мышкой
2. Возможность задать %type в настройках пути - заменяется на тип материала. Класть все картинки в общую кучу имхо неудобно.
3. Для MD5 имени используется весь хэш. Хэш считается от исходного имени + времени закачки, т.ч. имена получаются практически случайные.
4. Для управления закачкой используются функции метода upload
5. При удалении файлы помечаются как удаленные и будут удалены кроном (подтвердждения удаления нет)
6. Несколько переделал права доступа - но надо еще потестировать, могут быть косяки

Что думаю еще сделать:
1. Возможность накладывать "водяные" знаки на картинку. Может есть для этого модуль подшестерку?
2. Располагать превьюшку в отдельной подпапке. Один раз я наступил на грабли с ограниченным количеством файлов в одной папке, теперь опасаюсь Smile

Если это кому-то интерестно и нужно - пробуйте, пишите о проблемах Wink

ВложениеРазмер
Файл node_images-6.x-1.x-beta1.tgz23.98 КБ

Комментарии

Аватар пользователя chup chup 29 апреля 2008 в 12:45

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

Аватар пользователя Covax Covax 30 апреля 2008 в 18:38

Привет! Скачал доработанный тобой node_images, все круто но:
1. не пойму, для чего требуется поле URL?
2. было бы просто супер, если бы удалось скрестить все плюсы node_images и простого upload, плюсы которого в том, что доступ к нему там же где и основное поле ввода текста, а не в отдельной закладке Images; вот было бы в форме upload'a такая фича - кликнул по ссылке, где файл загруженный находится и сразу бы вставлялся соответсвующий код в textarea, цены бы ему не было...

Аватар пользователя tdg tdg 30 апреля 2008 в 23:17

1. URL - просто возможность задать еще один параметр для картинки. У себя использую для ссылки на сайт, где взял эту картинку.
2. Это очень спорный момент. Мне кажется, что отдельная закладка для картинок это плюс. Форма ввода для ноды итак достаточно нагруженная...

Аватар пользователя Covax Covax 7 мая 2008 в 0:28

А если 10 картинок надо вставить в текст, ты как это делаешь? Если не хочется чтобы картинки были перед или после текста, а красиво?
Как пользоваться фичей "Manually set in node template by variable $node->node_images"?

Аватар пользователя tdg tdg 8 мая 2008 в 19:53

Covax wrote:
А если 10 картинок надо вставить в текст, ты как это делаешь? Если не хочется чтобы картинки были перед или после текста, а красиво?
Как пользоваться фичей "Manually set in node template by variable $node->node_images"?

Если надо уставить много картинок в текст, то их можно спрятать из списка (не показывать) и добавить в виде тегов < img > или [ img ] в зависимости от формата ввода.

Manually set in node template by variable - очень просто, в своей теме для node.tpl.php можно пользоываться этой переменной для вывода приаттаченных картинок в произвольном порядке.
Параметры узнаются так:
<?php
print "

".print_r($node->node_images, TRUE)."

";
?>

Аватар пользователя andypost@drupal.org andypost@drupal.org 1 мая 2008 в 1:16

Третий вариант портирования ... где же тестеров-то набрать? Мне вот интересно, а почему сначала не взять например мой порт или btsukuda, он правда обратно не совместим. Вот и получается, что есть несколько вариантов портирования и ни одного, который люди могли бы проверить Sad Такими методами никогда не появится нормлаьного модуля , доступного сообществу. Обратите внимание, что автор модуля давно не поддерживает свое произведение и все что производит сообщество выкладывается в виде патчей! Есть определенные правила, по которым происходит развитие проектов - лучше их придерживаться...

PS: в целом порадовало, что модуль получил развитие! Респект

Аватар пользователя andypost@drupal.org andypost@drupal.org 4 мая 2008 в 16:45

Проблема в том, что у модуля нет линии развития - рзработчики решили делать универсальный модуль http://drupal.org/project/node_media но там как-то дело завязло. Ну и старый модуль не довели до ума. По хорошему нужно договариваться о co-maintain и делать релиз, но времени не хватает.

Аватар пользователя tdg tdg 4 мая 2008 в 22:19

<a href="mailto:andypost@drupal.org">andypost@drupal.org</a> wrote:
Третий вариант портирования ... где же тестеров-то набрать?

Посмотрел твой модель, написал миниотчет в твоем посте на drupal.org (http://drupal.org/node/232890#comment-831434).
На всякий случай повторю здесь:

В целом все работает замечательно, но есть несколько замечаний:
1. Архив. Лучше паковать вместе с папкой. Все модули, что я видел так упаковывают, это действительно удобно. А то распакуешь такой архив на сервере в папку с парой десятков модулей, а потом перености все в отдельную папку... Wink
2. Иногда бывает удобно делить картинки по типам нод. Поэтому было бы здорово иметь переменную %type. (Кстати, превьюшки тоже можно отдельно складывать)
3. Думаю, что лучше иметь одну кнопку для загрузить/сохранить. Сам на эти грабли наступил - написал описания, а потом ткнул на "загрузить" и все пропало.
4. Иногда удобно иметь возможность временно (или постоянно) прятать некоторые картинки из галереи. Например можно их вручную всавить в тело сообщения. Или разделить к ним дступ на обычный и продвинутый - применений для этого масса.
5. Права доступа:
- Мне в моем проекте надо запретить пользователям самостоятельно удалять их картинки. Думаю, что такое достаточно часто нужно.
- Админам надо дать возможность видеть спрятанные картинки (п. 4)
6. Нет подтверждения удаления картинки. Причем картинка сразу удаляется с диска. У меня она момечаеся удаленной и удаляется кроном (это фича аплоада). Хорошо бы хотябы подтверждение сделать...
7. Не получилось загрузить картинку в которой только русские буквы в имени (расширений jpg) - выдал "The selected file jpg. could not be uploaded. Only files with the following extensions are allowed: jpg jpeg gif png.". Картинка с одной русской буквой загрузилась нормально.

Вобщем большинство замечаний касается юзабилити, только один баг.

Отличеная работа!

Если не возражаешь, я могу помочь довести твой вариант портирования. Хочу доделать то, что здесь перечислил, заодно потестирую получше. Времени тоже немного, но всеравно для моего проекта надо Wink
Только надо как-то организоваться. В идеале - выложить на CVS (или что там у них), чтобы нормально поддерживать разработку...

Аватар пользователя andypost@drupal.org andypost@drupal.org 5 мая 2008 в 2:59

Спасибо, почитал вначале на орг Smile
Абсолютно согласен по всем пунктам! На самом деле есть несколько ошибок, которые требуют доработки.
Добавил в скайп - можно завтра списаться и довести до ума!
Для скрытия картинок уже предусмотрено поле статуса, оно просто не отображается - кстати раскладку формы редактирования лучше взять из порта чела с нечитаемым ником Smile Он весьма грамотно раскидал поля!
Когда я делал порт - у меня тоже очень насущьно стояла задача перехода с 5, поэтому было быстро сделано и естественно с недоработками...
Ошибки:
- с правами был косяк
ilyazarov, 01.05.2008 0:37:01:
if ( (user_access('create node images') && ($user->uid == $node->uid) ) || !empty($may_add)) {
--
ilyazarov, 01.05.2008 0:37:19:
было if ( user_access('create node images') || !empty($may_add)) {
далее
- нужно убирать или менять ahah загрузку - смысла нет кешировать форму, так она меняется при загрузках/сохранениях, имеется ввиду, что наверно должна быть одна форма, а не 2 как в 5ке (1я список, 2я форма загрузки) мне кажется лучше объединить их в одну - тогда можно сохранение и загрузку делать одновременно, но куда тогда лепить запрос на удаление?
- дополнить галку видимости (поле status )
- изменить вывод списка картинок (взять из второго порта)

фичи:
- стоит ли загружать все прикрепленные изображения к ноде, если вывод осуществляется в тизер или есть ограничение на кол-во?

Это может и не все, но это так на память... в скайпе спишемся...
Для синхронизации на время разаботки лучше пользоваться http://pastebin.com/ - очень удобно при совместной работе через чат...

Аватар пользователя tdg tdg 5 мая 2008 в 10:33

Второй порт еще не смотрел. Сейчас гляну Wink

Про ahah несовсем тебя понял. Зачем ее убирать? Можно наоборот всю форму в ней обрабатывать - и новые картинки и параметры старых. Тогда и удаление в ней обрабатывать.

По удалению. Может быть добавить флаг "удаленные" и просто не грузить картинки с эти флагом.
Очистку можно сделать по крону с задержкой (лучше настраиваемой). Тогда если фотка удалена по ошибке ее можно будет спасти, хотя бы в ручном режиме. Что скажешь?

Другой вариант - js подтверждение, правда не знаю, как это с ahah увязать.

Еще вариант - при установки галки "удалить" добавлять в форму еще одну галку - "подтвердить удаление" - и уже после этого удалть.

Кэшировать форму действительно нет смысла. В оригинальном upload это сделано, т.к. сохранение в базу идет только при финальном коммите. А т.к. мы сразу все сохраняем, то все упрощается.

Думаю, что загружать стоит все картинки, которые имеет право смотреть пользователь. Как ты будешь определять, для чего загружают ноду?

http://pastebin.com/ - никогда этим не пользовался, посмотрю Smile
В принципе я могу временно дома SVN поднять, 90% времени он будет доступен.

Аватар пользователя tdg tdg 4 мая 2008 в 11:52

Да я бы рад взять чей-нибудь готовый, только вот что-то найти их быстро не получилось... Конечно плохо искал, и поторопился... Свой порт я изготовил часа за 2...

Жалко, что на официальной странице модуля нет никакой информации, что кто-то занимается портировакнием. Модуль то простой, но весьма удобный в некоторых ситуациях...

Твой модуль я посмотрю чуть позже. Отчет о тестировании напишу в твоей теме.

Аватар пользователя B.X B.X 4 мая 2008 в 15:35

Если интересует, то вместо портирования одного модуля три раза, посмотрите на другие модули, которые также нуждаются в этом... например, хороший модуль: http://drupal.org/project/comment_page

http://drupal.ru/node/7642 - описание модуля...

Аватар пользователя kiev1 kiev1 8 мая 2008 в 6:10

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

Аватар пользователя tdg tdg 8 мая 2008 в 19:49

просто когда их ОЧЕНЬ много (численно уже не помню, надо поискать) новые вайлы перестают в нее добавляться. Тормоза при поиске тоже наблюдаются и индекс не спасает Sad

Кстати, а что народ думает про хранение картинок в БД? Чем этот вариант плох?
Даже MySQL уже с этим справляется (правда только на маленьких проектах пробовал).

Аватар пользователя B.X B.X 10 мая 2008 в 12:13

Кстати, node image до сих пор не работает с комментариями? Или вы это уже исправили? Помню его автор говорил, что такое будет... просто upload comment работает, но не делает превьюшки, а только ссылка или полная картинка...

Аватар пользователя tdg tdg 18 мая 2008 в 21:28

B.X wrote:
Кстати, node image до сих пор не работает с комментариями? Или вы это уже исправили? Помню его автор говорил, что такое будет... просто upload comment работает, но не делает превьюшки, а только ссылка или полная картинка...

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

Аватар пользователя tdg tdg 18 мая 2008 в 21:23

<a href="mailto:fasdalf@fasdalf.ru">fasdalf@fasdalf.ru</a> wrote:
>> Третий вариант портирования ... где же тестеров-то набрать?

А где же первые два, можно ссылочку? Обязуюсь посмотреть!

Они здесь, см. присоединенные файлы:
http://drupal.org/node/232890#comment-831434

Аватар пользователя kiev1 kiev1 13 августа 2008 в 13:18

mysql и так с друпалом еле живет, а если в нее еще и картинки добавлять - то вряд ли это хостеру/серверу понравится

Аватар пользователя andypost@drupal.org andypost@drupal.org 15 августа 2008 в 8:48

kiev1 wrote:

mysql и так с друпалом еле живет, а если в нее еще и картинки добавлять - то вряд ли это хостеру/серверу понравится

К чему это было сказано?

[module=node_images] и развивающийся [module=node_media] достаточно оптимальны с точки зрения быстродействия.

Аватар пользователя sergej-serov sergej-serov 15 августа 2008 в 9:32

"tdg" wrote:
Кстати, а что народ думает про хранение картинок в БД? Чем этот вариант плох?
Даже MySQL уже с этим справляется (правда только на маленьких проектах пробовал).

видимо к этому...

Аватар пользователя andypost@drupal.org andypost@drupal.org 15 августа 2008 в 9:47

Модуль [module=node_media] уже вменяемо работает на 6ке, проверял правда только для изображений, многие косяки переехали из старого, но вроде как разработка двигается. Все изменения пока в issues.

Аватар пользователя tdg tdg 9 сентября 2008 в 9:47

На днях выложу обновленную и исправленную версию node_images.
Сейчас обкатывается на новом сайте.
Что сделано:
- поддержка многоязычности - картинки достаточно загружать в одну из версий ноды
- связь с LightBox2
- интеграция с View
- водяные знаки - можно накладывать png
- подтверждение удаления картинки - необходимо поставить вторую галку

Аватар пользователя kiev1 kiev1 11 сентября 2008 в 18:09

а комментарии и рейтинги для каждой картинки там есть? а то в друпале или нет массового импорта или нет комментариев и рейтингов пофотково

Аватар пользователя andypost@drupal.org andypost@drupal.org 18 сентября 2008 в 3:42

А как оно совместимо с предыдущими версиями? Под 6ку автор сделал порт, который работает...
Также интересует миграция из 5й версии в 6ю, в частности drupal.ru использовал ni5, пока не включаем ввиду отсутствия миграции.

Аватар пользователя Alexwin Alexwin 15 ноября 2009 в 2:38

А почему прикрепленные изображения выстраиваются колонкой? Где нужно поменять (и что?), чтобы они выстраивались горизонтально? Можно ли?

Аватар пользователя Alexwin Alexwin 15 ноября 2009 в 3:20

Все, въехал.
Нужно в желаемом месте node.tpl.php
Вставить:

  <?php if ($node->node_images) { ?>
   <span class="picture"><?php print $node_images?></span>
  <?php }; ?>

У меня изображение получилось в теле статьи. Гуд.