Аплоад коммент (comment_upload) модуль для Drupal 6.*

Аватар пользователя olk olk 16 июля 2008 в 23:37

Ждал когда же, кто надумает конвертнуть достаточно полезный модуль comment_upload для Drupal 6.*. Не дождался Smile .
Решил занятся сам. В результате получилось то, что получилось.
Предлагаю оттестить, и довести до ума (путем обсуждения, и совместной доработкой).
Данный модуль это некая декомпозиция с последующей компиляцией одноименного модуля от версии 5.*,
модуля upload от Drupal 6.*, и найденного в интернете патча.

Отличия от версии для Drupal 5.*. и особенности ...

  • Убрал (по моему бесполезную) опцию прикреплять не более одного файла.
  • Лимиты на размер и объем файла берутся из настроек модуля upload (ну в принципе и раньше так было)
  • Добавлена "фича" , теперь можно для каждого прикрепленного файла указать опцию "В контент", при этом если прикреплена "пикча", то она будет выведена в контент комментария как изображение,
    иначе (если не "пикча"), то будет выведена ссылка на закаченный файл. При этом опция "Список" осталась, т.е. файл может быть одновременно выведен как в контент, так и в список.
  • Разрешение на возможность прикрепления файлов к комментариям настраиваются, через настройку типов материала (admin/content/types), в секции настройки комментариев.

Замеченные "глюки"
При атаче нового файла (если аттач идет через ahah-т.е. когда включена поддержка JavaScript) нельзя сразу указать опции Список(List) и В Контент(Inline img), вернее указать то можно :), но они не сохранятся. Изменение данных опций возможно, только в процессе редактирования коммента.
Пока не разобрался в чем там дело, буду бороться Smile

Оригинал материала как всегда на моем сайте

Комментарии

Аватар пользователя olk olk 17 июля 2008 в 9:34

Еще одна "Бага", не работает нормально предпросмотр, буду мучать его дальше Smile

Аватар пользователя olk olk 22 июля 2008 в 16:26

Работаем Smile к сожалению в выходные не получилось добить (по объективным причинам был угнан на дачу:), но надеюсь на этой неделе все же закончить...

Аватар пользователя olk olk 18 июля 2008 в 1:18

Ну именно оттуда я патч и брал, но поверьте он очень сырой Smile К тому же последние телодвижения там еще апрельские и что то дальнейшего продвижения не видно Sad

Аватар пользователя olk olk 18 июля 2008 в 1:10

Да мне не жалко, конечно отправлю Smile Но думаю, проще будет выложить сам модуль, так как там код, достаточно отличается от 5.*, и патч будет из себя представлять -80% строк из исходного кода и соответствененно +80% нового кода Smile
Правда его (в смысле модуль) еще до ума довести надо ...
За выходные попробую добить....
Кстати вопрос, можно ли выложить под тем же традемарком (в смысле comment_upload), или нужно согласовывать с автором ? или проще новое название придумать ? Smile

Аватар пользователя andypost@drupal.org andypost@drupal.org 18 июля 2008 в 1:20

Правильнее сравнить с тем, что уже наваяли в указаной мной ветке, а выложить можно и запом, авторы которые тормозят в созданием 6x веток обычно заняты, но выкладываение в issues дает дополнительных тестеров и возможную помощь в доведении! Очень рекомендую выложить прямо гтовую реализацию.

Аватар пользователя olk olk 30 июля 2008 в 0:31

[color=red]Модуль в dev-версии, не рекомендован к установке на промо-сайты, и доступен только для ознакомления и тестирования![/color]
Перед инсталляцией рекомендую сделать или полный бэкап базы или таблиц {files} и {upload}, если сохранность информации в них для вас критична
Ну чтож, вот и новая версия (полностью переработанная) и вроде как работает Smile
Фактически это не переработка и не продолжение модуля 5-ой версии , а новый модуль основанный на стандартных для 6-ки модулях comment и upload.
Модуль не создает своих таблиц а использует стандартные {files} и {upload}, в последнюю при инсталяции добавляется поле cid (при удалении модуля таблица возвращается в первоначальный вид).
По максимуму использованы уже готовый функционал реализованый в модуле upload.
Отличия от версии comment_upload 5-ой версии:
Не реализована так называемая сингл мода (особо просто не вижу в ней смысла).
Не создаются свои таблицы (о чем было указано выше).
Пока нет инлайн моды (т.е. возможности показать вместо ссылки сам файл в контенте комментария).
Отличия от моей старой версии comment_upload:
Не создаются свои таблицы (о чем было указано выше).
Пока нет инлайн моды (т.е. возможности показать вместо ссылки сам файл в контенте комментария).

Прошу тестировать, оставлять пожелания и критику Smile

Исправлено несколько не значительных багов.

1. Если к комментарию прикреплялся файл а сам комментарий затем не был сохранен, то в сессии сохраняись ранее прикрепленные файлы, и при вводе или редактировании ноды или комментария файлы из этой сессии попадали в редактируемый материал как прикрепленные файлы
2. Если не включен JavaScript, то при создании нового комментария, при прикреплении файла, очищался контент самого комментария.
3. Сделано более корректное отображение прикрепленных файлов при Предпросмотре.

Оригинал данного материала как всегда на моем сайте

исправленный архив ниже по комментам

Аватар пользователя andypost@drupal.org andypost@drupal.org 29 июля 2008 в 19:32

Порадовал, спасибо! А вот создание своей таблицы желательно, так как если каждый модуль будет модифицировать таблицы ядра - как в них потом разбираться?
Ниличие таблицы comment_upload (cid,fid) не слишком нагрузит систему, но сохранит преемственность, да и удаление таблицы это более простая задача нежели удаление поля.

Аватар пользователя olk olk 29 июля 2008 в 20:52

Кхм ... может ты и прав, подумаю Smile правда там cid fid не обойдешься придется практически продублировать таблицу upload , но может в смысле расширения функционала так и правильней ....
Просто изначально была мысль расширить функционал модуля upload (добавить к свойствам загруженного файла свойства inline и float, добавляющие к прикрепленному свойству дополнительные "фичи" показывать в контенте и расположение в контенте, и сделать добавление к ноде и комменту аналогичными), ладно будем думать Smile

Аватар пользователя andypost@drupal.org andypost@drupal.org 29 июля 2008 в 21:05

Имхо все тривиальнее...

старая
comment_upload_files: fid, nid, cid, filename, filepath, filemime, filesize, description, list

новые
files :fid, uid, filename, filepath, filemime, filesize, status, timestamp
comments: cid, pid, nid, uid и тд

вытекает просто связь cid fid list description можно еще nid для оптимизации nodeapi (delete) хотя при удалении комента он грохает файлы по своему хуку...

Аватар пользователя olk olk 29 июля 2008 в 21:47

Так я о чем и говорю Smile просто таблица upload практически и повторяет приведенную тобой структуру ... Smile
{upload} - fid, nid , vid, description, list, weight т.е. выбрасываем nid, vid и добавляем cid ...

Аватар пользователя olk olk 30 июля 2008 в 12:19

И еще маленькие исправления:
Все это касается режима загрузки без AHAH (когда при аплоаде файла происходит перезагрузка станицы).
Бага та же что и в предыдущем посте, т.е. очищаются поля ввода при аплоаде файлов
1. Забыл про анонимусов вернее про поля Имя, Е-майл и Домашняя станица, которые появляются только у незарегистрированных пользователей.
2. Сбрасывался выбранный формат ввода в формат по умолчанию

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

Аватар пользователя olk olk 30 июля 2008 в 17:48

Ну и еще маленькие переделки.
По совету andypost@drupal.org все таки вынес данные в отдельную таблицу {comment_upload}.
Все остальное, вроде работает более менее корректно.
с капчей не стал заморачиваться, так как посмотрел, что стандартный upload при работе с капчей (в режиме с отключенным JavaScript) ведет себя точно так-же, так что, для так сказать единообразия, ничего менять не стал.
(Если вы устанавливали, предыдущую версию этого модуля, то перед установкой текущей версии, надо отключить и удалить предыдущую версию, что бы корректно восстановились системные таблицы)

Аватар пользователя olk olk 30 июля 2008 в 12:25

Ps. Кстати кто плотненько работает с drupal.org как "корректно" выложить туда модуль на issues ?
И может кто поможет сделать небольшое описание на английском ( а то я как собака понимать все понимаю, а разговаривать не могу Lol

Аватар пользователя olk olk 30 июля 2008 в 17:47

выявлена маленькая ошибочка Smile
в файле comment_upload.module в функции в строке 269, не правильно обозвал таблицу {comment} надо заменить на {comments}

function comment_upload_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  if ($op == 'delete') {
    $result = db_query("SELECT f.* FROM {comment} c INNER JOIN {comment_upload} u ON u.cid=c.cid AND c.nid=%d INNER JOIN {files} f ON f.fid=u.fid", $node->nid);
    while ($file = db_fetch_object($result)) {
        file_delete($file->filepath);
        db_query("DELETE FROM {comment_upload} WHERE fid = %d", $file->fid);
        db_query("DELETE FROM {files} WHERE fid = %d", $file->fid);
    }
    // Delete all comments
  }
}
Аватар пользователя andypost@drupal.org andypost@drupal.org 8 августа 2008 в 22:24

Появилась первая еще сырая версия для 6ки. Слить можно только из релизов, можно сравнить с кодом olk

Аватар пользователя olk olk 12 августа 2008 в 22:50

Решил прекратить доработку и тестирование "своего модуля" comment_upload, так как появилась вполне "рабочая" dev-версия на drupal.org comment_upload 6.x-1.x-dev, а у меня особо времени на разработку нет, лучше буду помогать в тестировании существующей, в принципе по коду модули очень похожи, но есть и некоторые различия (в частности в структуре таблицы {comment_upload}. Надеюсь автор все же посмотрел мой код, и очень надеюсь, что это ему хоть в чем то помогло Smile

Аватар пользователя olk olk 12 августа 2008 в 21:17

<a href="mailto:andypost@drupal.org">andypost@drupal.org</a> wrote:
Вышла dev весия, которая уже работает на drupal.ru - можно сравнить код!

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