Ждал когда же, кто надумает конвертнуть достаточно полезный модуль comment_upload для Drupal 6.*. Не дождался .
Решил занятся сам. В результате получилось то, что получилось.
Предлагаю оттестить, и довести до ума (путем обсуждения, и совместной доработкой).
Данный модуль это некая декомпозиция с последующей компиляцией одноименного модуля от версии 5.*,
модуля upload от Drupal 6.*, и найденного в интернете патча.
Отличия от версии для Drupal 5.*. и особенности ...
- Убрал (по моему бесполезную) опцию прикреплять не более одного файла.
- Лимиты на размер и объем файла берутся из настроек модуля upload (ну в принципе и раньше так было)
- Добавлена "фича" , теперь можно для каждого прикрепленного файла указать опцию "В контент", при этом если прикреплена "пикча", то она будет выведена в контент комментария как изображение,
иначе (если не "пикча"), то будет выведена ссылка на закаченный файл. При этом опция "Список" осталась, т.е. файл может быть одновременно выведен как в контент, так и в список. - Разрешение на возможность прикрепления файлов к комментариям настраиваются, через настройку типов материала (admin/content/types), в секции настройки комментариев.
Замеченные "глюки"
При атаче нового файла (если аттач идет через ahah-т.е. когда включена поддержка JavaScript) нельзя сразу указать опции Список(List) и В Контент(Inline img), вернее указать то можно :), но они не сохранятся. Изменение данных опций возможно, только в процессе редактирования коммента.
Пока не разобрался в чем там дело, буду бороться
Оригинал материала как всегда на моем сайте
Комментарии
Еще одна "Бага", не работает нормально предпросмотр, буду мучать его дальше
Как продвигается процесс?
Работаем к сожалению в выходные не получилось добить (по объективным причинам был угнан на дачу:), но надеюсь на этой неделе все же закончить...
А вы патч на друпал.орг для этого модуля отправите?
Один из модулей тормозящих портирование drupal.ru на 6ку, посмотрите здесь - там практически работа доведена!
Ну именно оттуда я патч и брал, но поверьте он очень сырой К тому же последние телодвижения там еще апрельские и что то дальнейшего продвижения не видно
Да мне не жалко, конечно отправлю Но думаю, проще будет выложить сам модуль, так как там код, достаточно отличается от 5.*, и патч будет из себя представлять -80% строк из исходного кода и соответствененно +80% нового кода
Правда его (в смысле модуль) еще до ума довести надо ...
За выходные попробую добить....
Кстати вопрос, можно ли выложить под тем же традемарком (в смысле comment_upload), или нужно согласовывать с автором ? или проще новое название придумать ?
Правильнее сравнить с тем, что уже наваяли в указаной мной ветке, а выложить можно и запом, авторы которые тормозят в созданием 6x веток обычно заняты, но выкладываение в issues дает дополнительных тестеров и возможную помощь в доведении! Очень рекомендую выложить прямо гтовую реализацию.
[color=red]Модуль в dev-версии, не рекомендован к установке на промо-сайты, и доступен только для ознакомления и тестирования![/color]
Перед инсталляцией рекомендую сделать или полный бэкап базы или таблиц {files} и {upload}, если сохранность информации в них для вас критична
Ну чтож, вот и новая версия (полностью переработанная) и вроде как работает
Фактически это не переработка и не продолжение модуля 5-ой версии , а новый модуль основанный на стандартных для 6-ки модулях comment и upload.
Модуль не создает своих таблиц а использует стандартные {files} и {upload}, в последнюю при инсталяции добавляется поле cid (при удалении модуля таблица возвращается в первоначальный вид).
По максимуму использованы уже готовый функционал реализованый в модуле upload.
Отличия от версии comment_upload 5-ой версии:
Не реализована так называемая сингл мода (особо просто не вижу в ней смысла).
Не создаются свои таблицы (о чем было указано выше).
Пока нет инлайн моды (т.е. возможности показать вместо ссылки сам файл в контенте комментария).
Отличия от моей старой версии comment_upload:
Не создаются свои таблицы (о чем было указано выше).
Пока нет инлайн моды (т.е. возможности показать вместо ссылки сам файл в контенте комментария).
Прошу тестировать, оставлять пожелания и критику
Исправлено несколько не значительных багов.
1. Если к комментарию прикреплялся файл а сам комментарий затем не был сохранен, то в сессии сохраняись ранее прикрепленные файлы, и при вводе или редактировании ноды или комментария файлы из этой сессии попадали в редактируемый материал как прикрепленные файлы
2. Если не включен JavaScript, то при создании нового комментария, при прикреплении файла, очищался контент самого комментария.
3. Сделано более корректное отображение прикрепленных файлов при Предпросмотре.
Оригинал данного материала как всегда на моем сайте
исправленный архив ниже по комментам
Порадовал, спасибо! А вот создание своей таблицы желательно, так как если каждый модуль будет модифицировать таблицы ядра - как в них потом разбираться?
Ниличие таблицы comment_upload (cid,fid) не слишком нагрузит систему, но сохранит преемственность, да и удаление таблицы это более простая задача нежели удаление поля.
Кхм ... может ты и прав, подумаю правда там cid fid не обойдешься придется практически продублировать таблицу upload , но может в смысле расширения функционала так и правильней ....
Просто изначально была мысль расширить функционал модуля upload (добавить к свойствам загруженного файла свойства inline и float, добавляющие к прикрепленному свойству дополнительные "фичи" показывать в контенте и расположение в контенте, и сделать добавление к ноде и комменту аналогичными), ладно будем думать
Имхо все тривиальнее...
старая
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) хотя при удалении комента он грохает файлы по своему хуку...
Так я о чем и говорю просто таблица upload практически и повторяет приведенную тобой структуру ...
{upload} - fid, nid , vid, description, list, weight т.е. выбрасываем nid, vid и добавляем cid ...
И еще маленькие исправления:
Все это касается режима загрузки без AHAH (когда при аплоаде файла происходит перезагрузка станицы).
Бага та же что и в предыдущем посте, т.е. очищаются поля ввода при аплоаде файлов
1. Забыл про анонимусов вернее про поля Имя, Е-майл и Домашняя станица, которые появляются только у незарегистрированных пользователей.
2. Сбрасывался выбранный формат ввода в формат по умолчанию
Еще бы надо в этом режиме проверить капчу (почти уверен что в режиме с AHAH загрузкой все будет ok, а вот без нее надо проверять, хотя если заполнять поле капчи уже после после аплоада всех файлов, что вполне естественно, то думаю тоже все будет нормально, боюсь правда что при каждом аплоаде файла капча будет перерендерится и сообщать об ошибке, ну да ладно проверим позже и что нибудь придумаем )
Ну и еще маленькие переделки.
По совету andypost@drupal.org все таки вынес данные в отдельную таблицу {comment_upload}.
Все остальное, вроде работает более менее корректно.
с капчей не стал заморачиваться, так как посмотрел, что стандартный upload при работе с капчей (в режиме с отключенным JavaScript) ведет себя точно так-же, так что, для так сказать единообразия, ничего менять не стал.
(Если вы устанавливали, предыдущую версию этого модуля, то перед установкой текущей версии, надо отключить и удалить предыдущую версию, что бы корректно восстановились системные таблицы)
Ps. Кстати кто плотненько работает с drupal.org как "корректно" выложить туда модуль на issues ?
И может кто поможет сделать небольшое описание на английском ( а то я как собака понимать все понимаю, а разговаривать не могу
выявлена маленькая ошибочка
в файле comment_upload.module в функции в строке 269, не правильно обозвал таблицу {comment} надо заменить на {comments}
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
}
}
Ну вроде все работает
Выложи в http://drupal.org/node/197015 - новым коментом, напиши, что вроде все работает и поставь Status - code needs review
Там народ пооперативнее тестирует!
Появилась первая еще сырая версия для 6ки. Слить можно только из релизов, можно сравнить с кодом olk
Решил прекратить доработку и тестирование "своего модуля" comment_upload, так как появилась вполне "рабочая" dev-версия на drupal.org comment_upload 6.x-1.x-dev, а у меня особо времени на разработку нет, лучше буду помогать в тестировании существующей, в принципе по коду модули очень похожи, но есть и некоторые различия (в частности в структуре таблицы {comment_upload}. Надеюсь автор все же посмотрел мой код, и очень надеюсь, что это ему хоть в чем то помогло
Вышла dev весия, которая уже работает на drupal.ru - можно сравнить код!
Да я уже сравнил (где то коды пересекаются, где то у него получше, где то некоторая избыточность), но голандец вроде активно к этому подошел, даже сегодня новая версия вышла, а у меня честно говоря сейчас не очень много времени, что бы эти заниматься, да и не вижу смысла вести вторую "ветку"...
Кстати у себя тоже поставил его версию
Мужики, как снять ограничение на один файл?