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

Список разделов phpBBex 1.x (поддерживается) Мастерская 1.x

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

Сообщение #1 VEG » 02.06.2012, 20:05

Простой чат для phpBB3, вдохновлённый чатом сайта delphi.mastak.ru 2001 года. Подходит как для phpBB 3.0.x, так и для phpBBex 1.x.x. Если вам понравился этот чат, вы сделали какие-то модификации, или просто установили его на свой форум — пожалуйста, поделитесь этим здесь, укажите ссылку на ваш форум.

screenshot.png


Возможности

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

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

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

Установка

Для того, чтобы установить этот чат на свой форум, необходимо выполнить несколько простых операций:
  1. Скачайте
    phpbb3_simplechat.7z
    v2.1.2 [2023/11/19]
    (69.71 КБ) Скачиваний: 350
    .
  2. Скопируйте содержимое каталога root в корень вашего форума.
  3. Выполните содержимое install.sql в вашей базе.
  4. Пройдите по адресу http://example.com/forum/chat/ и удостоверьтесь что чат работает.
  5. Добавьте ссылку на чат там где вам это удобно.

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

phpBB Simple Chat v2.1.2 [2023/11/19]
  • Совместимость с phpBBex v1.9.7.
  • Поддержка emoji (при обновлении со старой версии надо пересоздать таблицы).
  • В подсказке ко времени сообщения отображается дата.
  • Формат даты и времени можно настроить.
  • Незначительные косметические изменения.
Скачать:
phpbb3_simplechat.7z
v2.1.2 [2023/11/19]
(69.71 КБ) Скачиваний: 350


phpBB Simple Chat v2.1.1 [2014/01/10]
  • При попадании в базу сообщения с переводом строки чат не перестаёт работать (спасибо Sumanai за замечание)
  • Настройки JOIN_MESSAGES и LEFT_MESSAGES позволяют отключать сообщения о том, что пользователи заходят в чат и покидают его
  • Настройки ANTIFLOOD_DURATION (продолжительность автоматической блокировки в секундах), ANTIFLOOD_SENSITIVITY (чувствительность, чем меньше значение, тем более чувствительна система) и ANTIFLOOD_EXTINCTION (скорость угасания, чем меньше значение, тем более чувствительна система) позволяют настраивать защиту от флуда
  • Лёгкий рефакторинг
  • Комментарии переведены на английский язык
  • Код для поддержки устаревшего IE8 удалён
Скачать:
phpbb3_simplechat.zip
v2.1.1 [2014/01/10]
(78 КБ) Скачиваний: 18811
(версия для 3.1 от Sumanai -
phpbb3_simplechat_3.1.zip
v2.1.1 для phpBB 3.1
(78.05 КБ) Скачиваний: 3665
)

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

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

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

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

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

Форумский бот для phpBB Simple Chat
Скачать:
phpbb3_simplechat_bot.zip
(19.87 КБ) Скачиваний: 3571


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

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


Ссылки

Русскоязычная поддержка на phpbbguru.net
Англоязычная поддержка на phpbb.com
Последний раз редактировалось VEG 19.11.2023, 20:28, всего редактировалось 18 раз(а).
Причина: phpBB Simple Chat v2.1.2
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев


Сообщение #61 VEG » 13.10.2012, 20:46

K--H, не наблюдаю такой проблемы, у меня нормально выделяется всё.
Girl, зайдите в шаблон chat_body.html, найдите в нём <select и там уберите соответствующую опцию.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #62 K--H.ru » 13.10.2012, 21:03

VEG, как обстоят дела с фильтрацией данных? Например с color - если кто-то начнёт слать всякую ерунду вместо кода цвета?
K--H.ru M
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #63 VEG » 13.10.2012, 21:21

K--H.ru, будет всё ок.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #64 K--H.ru » 13.10.2012, 21:47

Сделал иконку, при клике на которой открывается профиль пользователя:
Изображение
main.js
Код: Выделить всё
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
Код: Выделить всё
this.LockScroll = (o.scrollTop >= o.scrollHeight - o.clientHeight); // *1.20

Добавлено спустя 1 минуту 32 секунды:
VEG:K--H, не наблюдаю такой проблемы, у меня нормально выделяется всё.
В Mozilla Firefox 16.
K--H.ru M
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #65 VEG » 13.10.2012, 23:00

K--H.ru, у меня также Firefox 16. Может быть я вас не так как-то понял. Что именно у вас некорректно выделяется?
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #66 K--H.ru » 14.10.2012, 10:56

При попытке выделить одну строку сообщения, автоматически выделяется всё после курсора + список чатовцев.
Изображение
K--H.ru M
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #67 VEG » 14.10.2012, 11:59

K--H.ru, у меня такой проблемы не наблюдается. Попробуйте на оригинальной версии чата.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #68 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
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #69 VEG » 14.10.2012, 12:24

K--H.ru, вы можете ловить событие onkeydown у страницы и по нему устанавливать фокус.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #70 angst66 » 14.10.2012, 12:36

Вопрос про работу чата при выключенной конференции. Можно ли дать возможность людям общаться в чате, когда форум выключен?
angst66
Репутация: 13
С нами: 12 лет 2 месяца

Сообщение #71 K--H.ru » 14.10.2012, 12:39

VEG, изумительно :) почему раньше я об это не додумался. :smile:
Спасибо.
K--H.ru M
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #72 Girl » 14.10.2012, 13:02

Код: Выделить всё
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
Аватара
Репутация: 18
С нами: 12 лет 1 месяц

Сообщение #73 VEG » 14.10.2012, 13:04

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

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

В ./includes/session.php строку:
Код: Выделить всё
if ($config['board_disable'] && !defined('IN_LOGIN') && !$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_'))
замените на:
Код: Выделить всё
if ($config['board_disable'] && !defined('IN_LOGIN') && !defined('IN_CHAT') && !$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_'))
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #74 K--H.ru » 14.10.2012, 22:06

VEG, как бы корректнее организовать ссылку Ещё смайлики… для доступа ко всем смайлам, как в phpBB3? Боюсь, что не будет работать, т.к. названия полей для ввода текста разные...
K--H.ru M
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #75 Girl » 14.10.2012, 23:16

VEG, а где уменьшить историю хранения сообщений в чате ,чтоб не 60 было ? И было бы идеально конечно Вам сделать faq по чату -нтак ,для народа :smile:
K--H.ru так Вы подскажете насчёт подключения возможности просмотра профиля с чата или нет ?
С уважением
Girl
Аватара
Репутация: 18
С нами: 12 лет 1 месяц

Сообщение #76 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
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #77 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, но пока безрезультатно. Проблема имеет место быть не всегда. Иногда при многострочных сообщениях, иногда при однострочных. Единственная закономерность - наличие смайлика в сообщении. Подозреваю, что проблема из-за высоты смайла, большей, чем высота текста в сообщении. С другой стороны не все используют стандартные смайлы.
Изображение
VEG, может подскажите, с чем именно стоит поиграться в функции автоскроллинга?
K--H.ru M
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #78 VEG » 15.10.2012, 14:24

K--H.ru, думаю нужно через jQuery вешать обработчик события load на изображения смайлов, и по возникновению этого события вызывать код автопрокрутки. Навешивать события можно автоматом через jQuery on (бывший live). К сожалению, сейчас занят другим проектом, поэтому нет возможности реализовать самому.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #79 K--H.ru » 15.10.2012, 17:30

Если много общались в привате, то при удалении сообщений из таблицы бывает не видна история чата при следующем входе. Думаю над решением, чтобы удалялось не только по самым старым msg_id, но и проверялось по LIKE %private [%
K--H.ru M
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #80 VEG » 15.10.2012, 18:26

K--H.ru, вообще-то так было задумано :) Каждый пользователь видит только свой приват.
VEG M
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Пред.След.

Вернуться в Мастерская 1.x