В текущей публичной версии JComments для подписки на уведомления о новых комментариях необходимо при отправке комментария поставить галочку в форме добавления и после успешной отправки комментария пользователь окажется подписанным. Для того чтобы отписаться от комментариев, необходимо перейти по ссылке, которая присутствует в каждом уведомлении (про существование в JComments 1.4.0.9 ошибки с функцией отписки я знаю, и вчера опубликовал
патч).
Физически информация о подписке хранилась в той же таблице что и сам комментарий, в той же самой записи. При этом было несколько проблем:
1. Для того чтобы подписаться на комментарии необходимо было оставить комментарий
2. При удалении комментария в котором была подписка, подписка прекращалась
3. Была возможность многократно подписаться на уведомления (письмо-то уходило одно, но отписываться можно было долго)
Из преимуществ данного способа можно отметить только один - простота (никаких доп. запросов к БД делать не нужно было).
В разрабатываемой версии я изменил способ хранения информации о подписке, выделив для этого отдельную таблицу в БД. При этом в процессе сохранения комментария добавилось 2 запроса к БД (проверка на уже существовании подписки на комментарии к данному материалу - на всякий случай и непосредственно сохранение информации о подписке в таблицу БД).
После этого появилась возможность не показывать галочку "Уведомлять меня о новых комментариях" в форме добавления комментариев для авторизованных пользователей, у которых уже есть подписка.
Но вот теперь возникло несколько вопросов, имеющих отношение и интерфейсу и к логике работы, которые хотелось бы обсудить с сообществом.
1. Нужно ли предоставлять авторизованным пользователям возможность отменить подписку на уведомления со страницы комментариев? И если нужно, то как это должно выглядеть? Я пока вижу 2 варианта:
1.1. В форме добавления редактирования все-таки показывать "Уведомлять меня о новых комментариях" с установленной галочкой, и при ее снятии - удалять подписку.
1.2 Добавить где-либо на странице комментариев ссылку "Отказаться от уведомлений о новых комментариях" по клику на которой отписывать пользователя.
При реализации варианта 1.1, возможна путаница пользователей, которые добавляя второй комментарий решат, что второй раз подписываться им не нужно, и снимут галку, и подписка удалится.
При реализации варианта 1.2 есть другой недостаток - механизм подписки и отписки как бы отличаются - в первом случае в одном месте формы ставится галочка, во-втором - где в другом месте нажимается ссылка (или кнопка).
Отсюда появляется второй вопрос.
2. Каким образом пользователям предоставлять возможность подписки на комментарии?
Как я уже писал, сейчас пока по-прежнему нужно оставить комментарий не забыв установить галочку про получение уведомлений. Однако, по идее, для авторизованных пользователей это несколько излишне. Объясню почему. Чтобы оформить подписку нужен e-mail и, желательно, имя пользователя. Для авторизованных эта информация и так доступна, поэтому им по идее достаточно просто кнопки "Подписаться на уведомления о новых комментариях". А для гостей - нужно еще 2 поля и такая же кнопка.
У меня появилась мысль реализовать все это следующим образом.
Для авторизованных пользователей. Сразу под списком комментариев (там где сейчас ссылки на RSS и обновление списка), добавить ссылку "Подписаться на получение уведомлений о новых комментариях", по клику на которой автоматически будет осуществлена подписка. Если же пользователь уже подписан - показывать "Отказаться от получения уведомлений о новых комментариях". И, помимо этого, оставить привычную галочку в форме отправки комментариев. Чтобы не забирать у пользователей то, к чему они привыкли.
Для гостей (неавторизованных пользователей). Точно так же, как для авторизованных, оставляем в форме добавления комментария галочку, посредством которой он может подписаться. А вот что делать для случая, когда пользователь хочет подписаться на уведомление не добавляя комментарий сходу придумать не могу. Был вариант, точно так же как для авторизованных показать под списком ссылку "Подписаться на получение уведомлений о новых комментариях", но в отличие от авторизованных, по клику на этой ссылке не сразу выполнять подписку, а показывать форму в которой нужно ввести e-mail, имя и нажать кнопку.
Вот как-то так...
Интересует общественное мнение по данному вопросу. Не перемудрил ли я, не слишком ли усложняю... Может какие-то есть другие варианты решения данных вопросов?