Собственно меня, как и многих, удручает ситуация невозможности удалять свои комментарии (вернее в коробочном варианте заложено либо все/всё либо ничего).
Как-то это негоже в движке претендующем на звание "строитель блогов и соцсетей" не иметь такой функции, тем более, что уже вышла 6-я версия продукта.
Есть какие-то самописные решения для Drupal 5.*, а на .org уже попадаются разработки для Drupal 7.*, но для 6-ки я так и не нашел (если пропустил, то бросьте в меня ссылкой).
Насколько понял, единственный аргумент против удаления - древовидная структура комментариев в Drupal, т.е. при удалении коммента автоматически удаляются и все его потомки (что действительно не есть хорошо).
Но мне почему-то древовидные комментарии всегда не нравились. Мне больше по душе комменты с цитированием (правда там есть другое зло - излишнее цитирование, как бороться хз).
Появился модуль delete_comments, смотрите в комментариях ниже!!!
Комментарии
Для древовидных комментариев можно было бы оставлять заглушки типа (комментарий удален). Тогда иерархия не нарушается и понятно, что нечто выпилено.
Удалено автором
Все-еще хакаем код в 2-х местах. Drupal 6.15. Суперадмин удаляет все комментарии, зарегистрированные пользователи - только свои, а гости - ничьи.
comment.module
было:
'title' => 'Delete comment',
'page callback' => 'comment_delete',
'access arguments' => array('administer comments'),
стало:
'title' => 'Delete comment',
'page callback' => 'comment_delete',
'access arguments' => array('post comments'),
было:
if (user_access('administer comments') && user_access('post comments')) {
стало:
if (user_access('administer comments') && user_access('post comments') || ($comment->uid != 0 && $user->uid == $comment->uid)) {
У меня примерно так получилось.
Спасибо, как раз понадобилось.
небольшие замечания по коду: лишние строчки
$comment = $node;
,?>
и пару раз использовано %s вместо %d; в t() заворачиваются только строки на английском.Эм, и cache_clear_all() лишне.
Сегодня потестил модуль на свеже установленный Drupal 6.15
1) Древовидная структура комментариев:
Гость - может только оставлять комментарий.
Зарегеный - может оставлять и удалять свои комментарии. Причем, если на его коммент был написан ответ-потомок, то вместо комментария появляется надпись "Комментарий удалён автором", а древовидная структура сохраняется.
Суперадмин - может удалить всю ветку комментария под корень.
Недочет: когда зарегеный пользователь удаляет свой коммент и были потомки на него (комментарий удален автором), то к его логину прибавляется надпись (не проверено), т.е. как будто комментарий был оставлен Гостем.
2) Плоская структура комментариев (достигается модулями flatcomments + buquote/quote):
Гость - может только оставлять комментарий.
Зарегеный - может оставлять и удалять свой комментарий.
Суперадмин - может удалять любые комментарии
Общий косячок - если Суперадмин вдруг захочет оставить комментарий, то на своем комменте он будет иметь 2 кнопки "удалить". Но это уже наверное мелочь.
Вывод: если бы не недочет, когда удаленный коммент зарегеного юзера превращается в гостевой, то можно было-бы рекомендовать его как "иметь обязательно".
Спасибо chili, это наверное первый модуль на эту тему.
Исправил "общий косячок")
Постараюсь прикрутить форму администрирования и сделать настройки.
Спасибо за подробное описание)
Простите, я что-то туплю. А как установить этот модуль? *смущенно*Решено путем создания info-Файла.
Спасибо, писал очень по быстрому, на выходных постараю выложить нормальную версию)
To chili
А можно ли подправить Недочет:? Чтобы к логину не добавлялась надпись "не проверено" (к примеру, у себя заменил ее на "гость"). Визуально смотрится, как-будто ее оставил гость, что неверно.
Да можно, но не раньше выходных.
а можно его назвать попроще delete_comments вместо deliting_comments?
Serg_M я это исправил
vb мда, с названием я скосячил)
chili спасибо еще раз за выложенный модуль, я только пофиксил недочеты которые нашел
Спасибо разработчикам!
Очень модуль помог!
T-34, Serg_M, chili спасибо.
Ёклмн! "Гвозди бы делать из этих людей - не было б крепче гвоздей!"
Неужели написать модуль легче, чем поискать на д.орг?
время поиска ~15 сек
Comment Delete - не фонтан, свое лучше.
В вашем модуле нет:
- прав доступа. то есть модуль не подразумевает таких людей как модераторы
- выбор действия при удалении - весть тред или один коммент, то есть поддрежки дерева комментов нет
- если нет предыдущих пунктов, то конечно нельзать задать действие по умолчанию, со скрытием выбора у пользователя.
Так чем лучше-то?
Итак, кто за то чтоб модуль довести до ума? Или модераторы закройте комменты!
Dan, в comment_delete нет возможности удалить только текст комментария, плюс к этому при удалении комментария с поднятием ответов на уровень выше не вызывается [ru-api=_comment_update_node_statistics]_comment_update_node_statistics()[/ru-api] (патч тут: http://drupal.org/node/654274). А также само это поднятие на уровень выше рушит древообразную структуру ответов.
Так что я добавил возможность удалить комментарий, если на него нет ответов, и удалить только текст комментария при наличии оных. Патчи: http://drupal.org/node/735210#comment-2687502 (сюда включено и добавление вызова _comment_update_node_statistics()).
Мейнтейнер скорее мертв, чем жив, так что если используете модуль, настоятельно рекомендую накатить хотя бы первый патч.
Жаль. Тогда может имеет смысл выложить здесь пропатченный модуль? Это будет удобно для тех кто не знает что такое патч и как с ним обращаться.
выкладываю
Добрый день. Подскажите как это реализовать на 5 версии? Все способы приведенные выше перепробовал, не работает
Мейнтейнер comment_delete все же живой, закоммитил патчи.
Не работает с ajax comments, может быть кто-нибудь напишет патчик? Проблема лишь в том, что в адресе удаляемого комментария (например http://site.ru/comment/delete/?token=5a3d9076a101d4badc616b6fe452a8bf) пропущен id комментария вот здесь http://site.ru/comment/delete/637?token=5a3d9076a101d4badc616b6fe452a8bf
Не работает только с advanced_forum
У меня не работает нигде ну по крайней мере к коментриям размещённым например в блоге. Остальное не проверял, но у комментария в ссылке удаления почему-то отстутствует id комментария (если его доставить вручуню - всё работает).
Под суперюзером удаляет всё прекрасно (почемуто под суперюзером, да и вообще под всеми пользователями с админскими правами в ссылке есть id комментария), но под обычным ссылка на удаление есть а само удаление не работает (отсутствует id коммента).