Плагин Comment Watcher



Представляю плагин, без которого пользователи моих проектов (особенно активные пользователи) уже не представляют себе жизни. :)

Плагин называется Comment Watcher – слежение за комментами. Служит он для того, чтобы оперативно и наглядно получать информацию о новых комментариях в интересующих вас топиках, об ответах лично вам, о новых сообщениях и комментариях в личной почте. И все это моментально и наглядно, с удобной возможностью перехода к нужному топику или комментарию.

Рассмотрим несколько ситуаций, где проявляется удобство этого плагина.

1) За время вашего отсутствия на сайте, вам ответили на несколько ваших комментариев. Хорошо, если у вас настроены оповещения по имейл и зайдя в почту, вы можете ткнуть соответствующую ссылку в письмах. Хотя тоже не очень удобно. А если, по какой-то причине, уведомления не настроены или письма не дошли? У вас все шансы даже не узнать об этих ответах в комментариях. Используя же Comment Watcher и зайдя на сайт, вы тут же увидите число этих ответов вам на специальной закрепленной панели, а кликнув по этому числу перейдете прямо к топику с первым таким комментарием, прямо к ответу. Если есть еще топики с ответами, то кликнув еще раз вы перейдете к следующему топику и так по кругу. Для того, чтобы убрать комментарий с панели активности вы должны будете либо на него ответить, либо нажать специальное действие «не буду отвечать».

2) Вы прочитали интересный топик с комментариями и хотели бы быть в курсе, когда в этом топике появляются новые комментарии. С этим плагином вам достаточно добавить топик в избранное и тогда при новом комментарии в этом топике на вашей панели активности появится циферка, кликнув по которой вы перейдете в топик.

3) Вы прочитали какой-то комментарий и хотели бы на него ответить, но сейчас у вас нет времени для ответа, нужной информации и т.д. и т.п. И вот чтобы не потерять этот комментарий и не забыть про него вы нажимаете специальное действие «ответить позже» и комментарий попадает в специальный список для отложенных ответов, а на вашей панели появляется еще циферка.

И все это работает оперативно – т.е. пока вы бродите по сайту, отвечаете на чей-то комментарий, то как только появляется какая-то активность в комментариях, вы тут же видите ее на панели активности – таким образом, повышается оперативность общения. Так же доступен список «контейнеров» (топиков, разговоров) в которых есть активность по адресу сайт/commentwatcher/логин/. Меню для доступа туда в большинстве случаев автоматически доступно со страницы сайт/profile/логин/.

Плагин идет в комплекте с двумя «контейнерами» слежения: топики и личная почта, но авторы плагинов легко могут добавить свой «контейнер» комментариев – например, стена пользователя, или изображения в галереях. Делается это специальными плагинами-модами. На самом деле в комплекте плагина идет три плагина – ядро для слежения, мод для топиков и мод для личной почты. Сначала активируется ядро, а потом моды.

Для установки и работы, Comment Watcher требует версии LiveStreet 0.5.1 с шаблоном на jQuery и сконструирован так, чтобы «встраиваться» практически в любой шаблон самостоятельно, если у ссылки-действия комментария «ответить» стоит класс ‘reply-link’. Однако без «работы руками», пока, все же не обойтись, хотя она и сводится к вставлению по одной строчке в три места файла comments.js вашего шаблона. С выходом LS 1.0 и введением хуков для скриптов эта работа руками будет не нужна. В комплекте с плагином идут уже модифицированные файлы comments.js для бесплатных шаблонов 0.5.1 и для social-jquery. Как модифицировать другие шаблоны описано ниже.

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

Демосайт доступен по адресу demo.kerbystudio.ru регистрация свободная, т.ч. можете создавать по нескольку аккаунтов, чтобы себя комментировать :) Контент будет периодически перезаписываться.

Установка плагина
Скопировать содержимое папки архива plugins в директорию plugins вашего сайта, зайти в админку вашсайт/admin/plugins и активировать сначала Comment Watcher: The Core, а потом остальные моды.

Настройка шаблона
Если у вас один из шаблонов Womack-Mail, new-jquery, developer-jquery, simple, social-jquery, street-spirit, то в комплекте идут модифицированные файлы comments.js для каждого из этих шаблонов по пути /plugins/cwcore/templates/skin/шаблон/js/comments.js. И если вы не модифицировали этот файл в вашем шаблоне, то просто скопируйте его по пути /templates/skin/шаблон/js/comments.js вместо старого. Если же вы модифицировали или у вас другой шаблон, то из файлика /plugins/cwcore/insert.js надо вставить по одной сточки кода в функции объекта add, load и toggle по успешному завершению операции. Места, куда вставить можно как раз увидеть «сличив» оригинальную версию comments.js из шаблона developer-jquery с файлом для этого шаблона из плагина. Так же, если у вас вдруг есть плагины, которые переопределяют эти функции у себя, то надо вставить соответствующие строчки туда. Вот эти строчки:
if (typeof(ls.hook)!='undefined') ls.hook.run('ls_comments_add_after',[formObj, targetId, targetType, result]);

if (typeof(ls.hook)!='undefined') ls.hook.run('ls_comments_load_after',[idTarget, typeTarget, selfIdComment, bNotFlushNew, result]);

if (typeof(ls.hook)!='undefined') ls.hook.run('ls_comments_toggle_after',[obj,commentId,result]);


Огромное спасибо 1d10t за класс хуков, ну очень ожидаемая и нужная вещь :)

НЕ ЗАБУДЬТЕ ОЧИСТИТЬ КЭШ!


Настройки плагина
В настройке плагина в 99% случаев интересны всего две строчки:

$config['template_actions']=false;

Которая указывает как в комментарий вставлять действия «не буду отвечать» и «отвечу позже». Если значение false, то плагин пытается сам динамически вставить эти действия, если значение true то эти действия формируются по шаблонному хуку comment_action на основании шаблонов /plugins/cwcore/templates/skin/шаблон/action_wont_reply.tpl и /plugins/cwcore/templates/skin/шаблон/action_reply_later.tpl.

Вторая строчка это расположение панели активности:
$config['panel_position']='right bottom vertical';


Задается комбинация положения панели:
top — верх
bottom — низ
left — слева
right — справа
и ориентации
horizontal — горизонтальная
vertical — вертикальная
например: top left horizonal — горизонтальная панель в левом верхнем углу страницы
по умолчанию стоит правый нижний вертикальный
при этом если будет указано просто horizontal, то будет правый нижний горизонтальный,
если просто top — то правый верхний вертикальный и т.п.

Информация для плагиностроителей
Существует четыре основных типа активности комментариев для топиков:
— прямой (direct) — ответ лично вам либо на ваш комментарий, либо в виде «корневого» комментария в вашем топике
— не прямой (indirect) – ответ кому-то, но в вашем топике
— в избранном (favority) — комментарий в топиках, добавленных вами в избранное
— к ответу позже (later) – комментарий, который вы помечаете для ответа «когда-нибудь».

Для мода личной почты добавляется пятый тип активности – новый разговор (newtalk), который создается когда вам присылают новое письмо или когда приглашают вас в уже существующий разговор.

Итак, что нам нужно сделать, чтобы добавить свой мод обработки нового «контейнера»?

Рассмотрим все на примере мода для топиков.

Первым делом надо добавить свой тип контейнера в вашем новоиспеченном моде. Делается это в двух местах:
1) В файле плагина задаем переменную класса $sModType значение должно совпадать со значением из поля target_type таблицы comments, т.е. для топиков — ‘topic’
2) В файле конфигурации параметр $config['mod_type']

Затем начинается обработка по событиям.

Надо обработать событие получения списка новых комментов по AJAX, как правило это метод AjaxResponseComment экшена, где добавляются комменты.

Надо обработать показ вашего контейнера, чтобы очистить непрямую активность и активность в избранном, т.е. ту активность, которая должна «исчезать» с панельки при просмотре вашего «контейнера». Для топиков у меня это сделано через хук topic_show. Там же задаются глобальные переменные $sCWCurContainerType и $iCWCurContainerId, которые служат для осуществления цикличного перехода по клику на цифрах активности.

Конечно же, надо обработать удаление объектов активности при удалении вашего контейнера

И основной модуль вашего плагина Worker, наследуемый из соответствующего класса ядра. В нем три метода:
1) ProcessAddComment который, собственно, и обрабатывается при добавлении нового коммента, вызывающийся из метода AddComment модуля Comment – при каких условиях что добавлять лежит целиком на вашей совести – можно посмотреть исходник мода для топиков

2) GetUrl – возвращает url по которому надо перейти при клике на соответсвующую цифру в панеле активности

3) GetContainerForListHTML – должно возвращать HTML код для показа одного объекта контейнера в списке контейнеров с активностью в профиле пользователя по адресу сайт/commentwatcher/логин/ опять же за примерами – в исходник плагина.

Ну вот как-то так. Конечно, основную информацию можно почерпнуть из исходников. Готов их предоставить разработчикам при условии наличия работающего плагина для которого нужен мод слежения и без права распространения кода, естественно.

Что касается разработчиков шаблонов – можем посотрудничать вместе на пример адаптации плагина к вашему шаблону.

17 комментариев

avatar
еще круче!
avatar
Если честно, отсутствие подобного функционала на соц.сайтах и форумах меня уже конкретно напрягает, обленился я :)
avatar
Классный плагин
avatar
Вот это да, самый полезный плагин для социальной!

(для социальной сети в смысле место где люди реально общаются, а не заходят прочитать пару статей и сваливают))
avatar
Плагин несомненно очень крутой!
Хочется только немного поковыряться с интерфейсом. пока 2 мысли появились
1. при нажатии Отвечу позже обратная ссылка Не буду отвечать появляется только после перезагрузки страницы. мелочь но всё же
2. при нажатии на Отвечу позже неплохо бы какую то анимацию сделать позаметнее в панели, чтобы новые пользователи понимали глазами, куда оно добавилось.
в остальном всё супер, идея вообще вызывает восхищение.
avatar
Спасибо :)

1. при нажатии Отвечу позже обратная ссылка Не буду отвечать появляется только после перезагрузки страницы. мелочь но всё же
Ну идея в том, что раз позже, то — не сейчас, в следующий раз… Но — подумаю.

2. при нажатии на Отвечу позже неплохо бы какую то анимацию сделать позаметнее в панели, чтобы новые пользователи понимали глазами, куда оно добавилось.
Ммм. Вопрос дизайна — больной для меня вопрос и что в этом плане делать — вопрос. Вот такой каламбурчик :)
avatar
насчёт первого — я имел ввиду что если по ошибке например нажал ответить позже — «отписаться» от него можно только после перезагрузки страницы
avatar
Ясно… В общем да — неприятно. Будем лечить :)
avatar
насчет дизайна — можно сделать стрелку анимированную, которая указывает куда надо. Стрелка может двигаться слева направо, с эффектом затухания — возникла, анимация вправо на 5 пикселей, и затухла. При быстрой анимации будет выглядеть прикольно и не напрягать.

Были бы навыки анимации — помог бы с удовольствием. Пока могу лишь в тексте свое представление описать.
avatar
кстати стрелку можно активировать только для первого случая, потом не вызывать. Человек то уже понял, что к чему.
avatar
Что-то кажется мне, что это лишнее — стоит единственный раз понять и дальше это скорее будет раздражать.
avatar
Хороший плагин, но не понравилось как реализовано оповещение. Как то оно там не в тему

Может перенести в блок инфы пользователя?
avatar
Вообще не понял :)

Что конкретно где не в тему и что значит «перенести в блок инфы пользователя»?

Типа куда-то сюда:

Вообще идея в том, что этот блок зафиксирован на странице и виден всегда, не важно, где вы сейчас находитесь. Очень удобно, когда у вас есть несколько ответов или активности — вы, скажем, ответили на какой-то коммент и тыт-же можете нажать следующую циферку не прокручивая страницу никуда.

А вообще-то, это дело дизайна шаблона куда это все засовывать. Никакая религия не запрещает вам вывести эту информацию где ВАМ угодно :)
avatar
Kerby, скажите, а плагин совместим с модулями DAO. Допустим при комментировании в видео-каталоге. Спасибо.
avatar
Планируется ли адаптация под 1.0.1?
avatar
Очень хочется под 1.0.1
avatar
не нашёл в каталоге этого плагина.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.