phpBB Simple Chat v2.1.1 — AJAX чат с оповещениями о новых темах и ответах

Board index phpBBex 1.x Мастерская

Description: Только готовые решения! Статьи, заметки, моды и другие полезности для phpBBex 1.x и phpBB 3.0.x.
Moderator: Поддержка

Post #1by VEG » 02.06.2012, 20:05

Простой чат для phpBB3 в стиле чата сайта delphimaster.ru. Подходит как для phpBB, так и для phpBBex. Если вам понравился этот чат, вы сделали какие-то модификации, или просто установили его на свой форум — обязательно напишите об этом здесь, укажите ссылку на ваш форум. Мне будет очень приятно.

screenshot.png


Возможности

  • Всё AJAX
  • Приватные сообщения
  • Звуковое оповещение
  • Выбор цвета сообщений
  • Поддержка смайликов
  • Автоопределение ссылок
  • Автоблокировка флуда

Демонстрация работы

http://phpbbex.com/chat/
Имя: demo_ru
Пароль: demo_ru

Установка

Для того, чтобы установить этот чат на свой форум, необходимо выполнить несколько простых операций:
  • Скачайте
    phpbb3_simplechat.zip
    (78 KiB) Downloaded 16395 times
    (версия для 3.1-
    phpbb3_simplechat_3.1.zip
    Исправленная версия для работы на 3.1
    (78.05 KiB) Downloaded 1399 times
    )
  • Скопируйте содержимое каталога root в корень вашего форума
  • Выполните содержимое install.sql в вашей базе
  • Пройдите по адресу http://example.com/forum/chat/ и удостоверьтесь что чат работает
  • Добавьте ссылку на чат там где вам это удобно

История версий

phpBB Simple Chat v2.1.1 [10.01.2014]
  • При попадании в базу сообщения с переводом строки чат не перестаёт работать (спасибо Sumanai за замечание)
  • Настройки JOIN_MESSAGES и LEFT_MESSAGES позволяют отключать сообщения о том, что пользователи заходят в чат и покидают его
  • Настройки ANTIFLOOD_DURATION (продолжительность автоматической блокировки в секундах), ANTIFLOOD_SENSITIVITY (чувствительность, чем меньше значение, тем более чувствительна система) и ANTIFLOOD_EXTINCTION (скорость угасания, чем меньше значение, тем более чувствительна система) позволяют настраивать защиту от флуда
  • Лёгкий рефакторинг
  • Комментарии переведены на английский язык
  • Код для поддержки устаревшего IE8 удалён

phpBB Simple Chat v2.1 [03.09.2012]
  • HTML5 шаблон
  • HTML5 <audio> для уведомлений
  • Настройки хранятся в локальном хранилище (а не в куках как было раньше)
  • Свежий jQuery из Google CDN
  • Код для поддержки устаревших IE6-IE7 удалён

phpBB Simple Chat v2.0 [27.05.2011] (не публиковалась)
  • Отображение времени в корректном часовом поясе (что выбрал пользователь в профиле)
  • Счётчик количества сообщений за всё время и счётчик количества обновлений за сеанс
  • Когда кто-то переписывается в привате другие не пользователи не слышат звуковое уведомление
  • Хранение 100 последних сообщений вместо 30
  • Сессия длится 3 минуты вместо 1.5
  • Максимальная длина сообщения 250 символов вместо 200
  • По умолчанию звук включен

phpBB Simple Chat v2.0b [18.01.2009]
  • Портирован на phpBB 3
  • Без пасхальных яиц и гостевого входа

phpBB Simple Chat v1.0a [21.03.2008]
  • Стабильная версия для phpBB 2
  • Полная совместимость с IE6
  • Звуковые уведомления через Flash
  • Было несколько забавных пасхальных яиц (робот отвечал на приветствие и слово «упячка»)
  • Была отдельная версия с гостевым входом без регистрации

phpBB Simple Chat v0.0 [23.03.2006] (не публиковалась)
  • Первые наброски

Форумский бот для phpBB Simple Chat
Скачать:
phpbb3_simplechat_bot.zip
(19.87 KiB) Downloaded 1772 times


Небольшой аддон к phpBB Simple Chat, который оповещает в чате о новых темах и ответах в форуме.
Image
Установка требует всего 2 небольшие модификации в одном файле. Пока что все строковые переменные находятся прямо в коде. Все это не сложно перевести на другой язык, изменить имя бота и т.д. В следующей версии постараюсь вынести все это в языковые переменные.

Дополнительные правки


Ссылки

Русскоязычная поддержка на phpbbguru.net
Англоязычная поддержка на phpbb.com
Last edited by Sumanai on 03.12.2015, 20:07, edited 5 times in total.
Reason: Дополнения для чата
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 6 months


Post #61by VEG » 13.10.2012, 20:46

K--H, не наблюдаю такой проблемы, у меня нормально выделяется всё.
Girl, зайдите в шаблон chat_body.html, найдите в нём <select и там уберите соответствующую опцию.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 6 months

Post #62by K--H.ru » 13.10.2012, 21:03

VEG, как обстоят дела с фильтрацией данных? Например с color - если кто-то начнёт слать всякую ерунду вместо кода цвета?
K--H.ru M
Новичок
Age: 30
Reputation: 13
With us: 5 years

Post #63by VEG » 13.10.2012, 21:21

K--H.ru, будет всё ок.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 6 months

Post #64by K--H.ru » 13.10.2012, 21:47

Сделал иконку, при клике на которой открывается профиль пользователя:
Image
main.js
Code: Select all
obj.innerHTML+="<a href='#' onclick=\"return!MessageEdit.To('"+addslashes(users[i].name)+"')\">"+users[i].name+"</a> <a href='#' onclick=\"return!window.open('/memberlist.php?mode=viewprofile&amp;u="+users[i].id+"')\"><img src='media/info.gif' width='12' height='14' title='{L_VIEWING_MEMBER_PROFILE}'/></a>";
Добавлено "грубо", но можно это сделать корректнее с учётом путей и расширения для php.

+ очередные заметки:
В <img src убрать border=0 т.к. это уже прописано в CSS.
В папку template добавить .htaccess с содержимым deny from all

Добавлено спустя 1 час 6 минут 26 секунд:
При img{vertical-align:middle} иногда бывает так, что новое сообщение со смайлом показывается наполовину (т.е. половина нижней части смайла скрыта).
Похоже, проблема решилась в main.js
Code: Select all
this.LockScroll = (o.scrollTop >= o.scrollHeight - o.clientHeight); // *1.20

Добавлено спустя 1 минуту 32 секунды:
VEG wrote:K--H, не наблюдаю такой проблемы, у меня нормально выделяется всё.
В Mozilla Firefox 16.
K--H.ru M
Новичок
Age: 30
Reputation: 13
With us: 5 years

Post #65by VEG » 13.10.2012, 23:00

K--H.ru, у меня также Firefox 16. Может быть я вас не так как-то понял. Что именно у вас некорректно выделяется?
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 6 months

Post #66by K--H.ru » 14.10.2012, 10:56

При попытке выделить одну строку сообщения, автоматически выделяется всё после курсора + список чатовцев.
Image
K--H.ru M
Новичок
Age: 30
Reputation: 13
With us: 5 years

Post #67by VEG » 14.10.2012, 11:59

K--H.ru, у меня такой проблемы не наблюдается. Попробуйте на оригинальной версии чата.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 6 months

Post #68by K--H.ru » 14.10.2012, 12:03

Действительно, на http://phpbbex.com/chat/ такой проблемы нет. Попробую сейчас оригинальный дистрибутив.

Добавлено спустя 6 минут 2 секунды:
Во всём виноваты <div id="main" onclick="message.focus()" onmousemove="message.focus()"> поэтому придётся искать другое решение постоянного сохранения фокуса в поле message.
K--H.ru M
Новичок
Age: 30
Reputation: 13
With us: 5 years

Post #69by VEG » 14.10.2012, 12:24

K--H.ru, вы можете ловить событие onkeydown у страницы и по нему устанавливать фокус.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 6 months

Post #70by angst66 » 14.10.2012, 12:36

Вопрос про работу чата при выключенной конференции. Можно ли дать возможность людям общаться в чате, когда форум выключен?
angst66
Бывалый
Reputation: 13
With us: 5 years 1 month

Post #71by K--H.ru » 14.10.2012, 12:39

VEG, изумительно :) почему раньше я об это не додумался. :smile:
Спасибо.
K--H.ru M
Новичок
Age: 30
Reputation: 13
With us: 5 years

Post #72by Girl » 14.10.2012, 13:02

Code: Select all
obj.innerHTML+="<a href='#' onclick=\"return!MessageEdit.To('"+addslashes(users[i].name)+"')\">"+users[i].name+"</a> <a href='#' onclick=\"return!window.open('/memberlist.php?mode=viewprofile&amp;u="+users[i].id+"')\"><img src='media/info.gif' width='12' height='14' title='{L_VIEWING_MEMBER_PROFILE}'/></a>";
K--H.ru а чтоб так возможность просмотра профиля была как Вы пишете ,то это куда между чем и кем нужно вставить этот код чтоб правильно ? :smile:
Girl
Мастер
Avatar
Reputation: 18
With us: 5 years

Post #73by VEG » 14.10.2012, 13:04

angst66, форум отключается в ядре phpBB. Для подобного финта нужно будет переделывать ядро, чтобы оно не блокировало свою работу в чате.

В ./chat/index.php после:
Code: Select all
define("IN_PHPBB", true);
добавьте:
Code: Select all
define('IN_CHAT', true);

В ./includes/session.php строку:
Code: Select all
if ($config['board_disable'] && !defined('IN_LOGIN') && !$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_'))
замените на:
Code: Select all
if ($config['board_disable'] && !defined('IN_LOGIN') && !defined('IN_CHAT') && !$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_'))
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 6 months

Post #74by K--H.ru » 14.10.2012, 22:06

VEG, как бы корректнее организовать ссылку Ещё смайлики… для доступа ко всем смайлам, как в phpBB3? Боюсь, что не будет работать, т.к. названия полей для ввода текста разные...
K--H.ru M
Новичок
Age: 30
Reputation: 13
With us: 5 years

Post #75by Girl » 14.10.2012, 23:16

VEG, а где уменьшить историю хранения сообщений в чате ,чтоб не 60 было ? И было бы идеально конечно Вам сделать faq по чату -нтак ,для народа :smile:
K--H.ru так Вы подскажете насчёт подключения возможности просмотра профиля с чата или нет ?
С уважением
Girl
Мастер
Avatar
Reputation: 18
With us: 5 years

Post #76by K--H.ru » 14.10.2012, 23:57

Girl, не спешите. Думаю, VEG, если сочтёт нужным, добавит эти возможности в новую версию. Пока что я делаю только заметки здесь. Не в обиду, но вам пока лучше не менять ничего в коде. :)

P.S. img{vertical-align:middle} убрал, т.к. в чате автопрокрутка иногда скрывала половину смайла в последнем сообщении.
this.LockScroll = (o.scrollTop >= o.scrollHeight - o.clientHeight*1.20); при этом трогать не нужно.
K--H.ru M
Новичок
Age: 30
Reputation: 13
With us: 5 years

Post #77by K--H.ru » 15.10.2012, 12:48

Проблема с Data too long for column 'text' at row 1 при использовании бота-оповещалки. В колонку text можно вставить 255 символов, а с учётом названия тем и разделов, а также тегов и ссылок, в большинстве случаев в таблицу пытается вставиться куда больше символов. Пока сделал для `text` varchar(500).

Также в functions_posting.php в chat_notification заменил:
$topic_url = generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&t=$topic_id&p=$post_id&e=$post_id";
на:
$topic_url = generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&t=$topic_id&p=$post_id#p$post_id";
А зачем лишний редирект только из-за якоря?

Не могу решить проблему с недопрокруткой новых сообщений. Уже пробовал кое-что менять в AutoScroll, но пока безрезультатно. Проблема имеет место быть не всегда. Иногда при многострочных сообщениях, иногда при однострочных. Единственная закономерность - наличие смайлика в сообщении. Подозреваю, что проблема из-за высоты смайла, большей, чем высота текста в сообщении. С другой стороны не все используют стандартные смайлы.
Image
VEG, может подскажите, с чем именно стоит поиграться в функции автоскроллинга?
K--H.ru M
Новичок
Age: 30
Reputation: 13
With us: 5 years

Post #78by VEG » 15.10.2012, 14:24

K--H.ru, думаю нужно через jQuery вешать обработчик события load на изображения смайлов, и по возникновению этого события вызывать код автопрокрутки. Навешивать события можно автоматом через jQuery on (бывший live). К сожалению, сейчас занят другим проектом, поэтому нет возможности реализовать самому.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 6 months

Post #79by K--H.ru » 15.10.2012, 17:30

Если много общались в привате, то при удалении сообщений из таблицы бывает не видна история чата при следующем входе. Думаю над решением, чтобы удалялось не только по самым старым msg_id, но и проверялось по LIKE %private [%
K--H.ru M
Новичок
Age: 30
Reputation: 13
With us: 5 years

Post #80by VEG » 15.10.2012, 18:26

K--H.ru, вообще-то так было задумано :) Каждый пользователь видит только свой приват.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 30
Location: Минск, Беларусь
Reputation: 1574
With us: 5 years 6 months

PreviousNext

Return to Мастерская



cron