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 КБ) Скачиваний: 355
    .
  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 КБ) Скачиваний: 355


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 КБ) Скачиваний: 18821
(версия для 3.1 от Sumanai -
phpbb3_simplechat_3.1.zip
v2.1.1 для phpBB 3.1
(78.05 КБ) Скачиваний: 3671
)

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 КБ) Скачиваний: 3576


Небольшой аддон к 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 месяцев


Сообщение #41 VEG » 05.10.2012, 18:05

angst66, судя по инструкции нужно вставить в нужное место шаблона следующий код:
Код: Выделить всё
<script type='text/javascript' src='vkb/vkb_load.js' charset='windows-1251'></script>
<button id="vkb_callVirt" onclick="blur(); vkb_start(event);" class="vkb_IEbutton" title="Окно Клавиатуры: выбор раскладки; ввод с клавиатуры или мышкой">Виртуальная Клавиатура</button>
При этом проверьте, чтобы путь к скрипту был правильный (можете указать от корня сайта, начиная от слэша, /forum/vkb/vkb_load.js).
Ну и судя по всему это не обязательно может быть кнопка.
VEG M Онлайн
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #42 angst66 » 05.10.2012, 21:47

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

Сообщение #43 angst66 » 07.10.2012, 20:02

Что это? /viewtopic.php?t=41&start=40

Добавлено спустя 1 минуту 14 секунд:
Появляется когда перехожу на 3 страницу в этой теме
angst66
Репутация: 13
С нами: 12 лет 2 месяца

Предложения

Сообщение #44 K--H.ru » 07.10.2012, 20:10

  1. Сделать так, чтобы focus() не пропадал из поля ввода, не зависимо от того, где совершён клик в чате. Будь то ссылка или просто клик на пустом месте, или выбор времени рефреша, или прокрутка сообщений. Т.е. всё время фокус должен быть в поле ввода для удобства. Пока временно решил <body onmousemove="message.focus()" onclick="message.focus()"> Не подходит, т.к. невозможно переключить время рефреша (при движении мыши раскрывающийся список закрывается), нужно придумать что-то ещё.
  2. $user->session_begin(false); # чтобы не обновлялись данные о последней посещённой странице форума при нахождении в чате. Хотя у меня почему-то не работает так.
  3. В CSS добавить в img { vertical-align:middle } - не будут "разъезжаться" строки текста при нестандартных смайлах. Например, "колобки" qip отлично смотрятся.
K--H.ru M
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #45 VEG » 07.10.2012, 20:33

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

Лог сообщений и решение проблемы с потерей фокуса в строке ввода сообщения

Сообщение #46 K--H.ru » 07.10.2012, 22:30

Если кому нужен лог сообщений - скопируйте структуру таблицы phpbb_chat_messages в phpbb_chat_logs.
Код: Выделить всё
# Перемещаем сообщения в лог перед удалением
      $sql = "INSERT INTO phpbb_chat_logs SELECT * FROM " . CHAT_MESSAGES_TABLE . " WHERE msg_id < " . ($last_id - MESSAGES_LIMIT);
      $db->sql_query($sql);

// Удаляем устаревшие сообщения

Добавлено спустя 1 час 21 минуту 15 секунд:
Решение проблемы с потерей фокуса в строке ввода сообщения
Итак, я решил эту проблему "в лоб". Если кто найдёт решение изящнее - отпишитесь. Заключается в установке фокуса в поле ввода при событиях клика или движения мыши.

  1. При загрузке чата устанавливается фокус в поле ввода: <body onload="message.focus()">
  2. При движении или клике мыши во всех блоках, кроме блока controlbox, устанавливается фокус в поле ввода (иначе изменить время рефреша будет невозможно):
    <div id="main" onclick="message.focus()" onmousemove="message.focus()">
    <div id="users" onclick="message.focus()" onmousemove="message.focus()">
    <div id="smiles" onclick="message.focus()" onmousemove="message.focus()">
    <div id="footer" onclick="message.focus()" onmousemove="message.focus()">
  3. При подведении мыши к полю ввода, в него устанавливается курсор: <input id="message" onmouseover="this.focus()"
  4. При выборе времени рефреша устанавливается фокус в поле ввода: <select id="refresh" onchange="SetDelay(this.options[this.selectedIndex].value);message.focus()">
  5. При изменении звуковых настроек устанавливается фокус в поле ввода: <a id="btn-sound" onclick="message.focus()"
    Кстати, style="background-image:url('media/sound.png')" вполне можно перенести в .btn-link
  6. В рисовалке таблицы с цветами (main.js) при клике на ячейку устанавливается фокус в поле ввода: onclick='MessageEdit.SetColor(\""+grad[j]+"\");message.focus()'
  7. <div id="header"></div> не используется, можно удалить.
K--H.ru M
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #47 Girl » 08.10.2012, 12:05

У меня Ваш чат не хочет ставится в phpbb3 . Пыталась выполнить SQl запрос , в пшп майадмин пишет
Код: Выделить всё
CREATE TABLE IF NOT EXISTS `phpbb_chat_messages` (
   `msg_id` int(11) unsigned NOT NULL auto_increment,
   `user_id` mediumint(8) unsigned NOT NULL default '0',
   `username` varchar(255) collate utf8_bin NOT NULL default '',
   `time` int(11) unsigned NOT NULL default '0',
   `text` varchar(255) collate utf8_bin NOT NULL default '',
   `color` varchar(6) collate utf8_bin NOT NULL default '',
   PRIMARY KEY  (`msg_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=0;# MySQL вернула пустой результат (т.е. ноль строк).
# MySQL вернула пустой результат (т.е. ноль строк).
# MySQL вернула пустой результат (т.е. ноль строк).


CREATE TABLE IF NOT EXISTS `phpbb_chat_sessions` (
   `user_id` mediumint(8) unsigned NOT NULL default '0',
   `username` varchar(255) collate utf8_bin NOT NULL default '',
   `last_active` int(11) unsigned NOT NULL default '0',
   `user_status` tinyint(3) unsigned NOT NULL default '0',
   `user_activity` smallint(6) NOT NULL default '0',
   `user_blocked` tinyint(1) NOT NULL default '0',
   UNIQUE KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;# MySQL вернула пустой результат (т.е. ноль строк).
# MySQL вернула пустой результат (т.е. ноль строк).
# MySQL вернула пустой результат (т.е. ноль строк).

Потом попробовала сгенерировать установочный db_update.php - выбираю на сайте http://mdyug.ru/chat/db_update.php

И при заходе на страницу пишет это :
Код: Выделить всё
Warning: include(./common.php) [function.include]: failed to open stream: No such file or directory in /home/bh45831/public_html/chat/db_update.php on line 16

Warning: include(./common.php) [function.include]: failed to open stream: No such file or directory in /home/bh45831/public_html/chat/db_update.php on line 16

Warning: include() [function.include]: Failed opening './common.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/bh45831/public_html/chat/db_update.php on line 16

Fatal error: Call to a member function session_begin() on a non-object in /home/bh45831/public_html/chat/db_update.php on line 19

В php я как-то чайник :weirdface: ,пожалуйста поясните по русски как это исправить ?
Girl
Аватара
Репутация: 18
С нами: 12 лет 1 месяц

Сообщение #48 VEG » 08.10.2012, 12:13

Girl:в пшп майадмин пишет
Ошибки там нет, запросы создания страниц не должны возвращать какой-то особый результат. Загружайте файлы чата — должно работать.
VEG M Онлайн
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #49 Girl » 08.10.2012, 13:04

VEG:Ошибки там нет, запросы создания страниц не должны возвращать какой-то особый результат. Загружайте файлы чата — должно работать.
неа :sad: не работает Изображение атрибуты на все вложения чата поставила пока 755
Girl
Аватара
Репутация: 18
С нами: 12 лет 1 месяц

Сообщение #50 VEG » 08.10.2012, 13:47

Girl, судя по ошибке у вас префикс phpbb_c вместо обычного phpbb_. Значит в запросах измените префикс таблиц и заново выполните.
VEG M Онлайн
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #51 Girl » 08.10.2012, 14:44

вау работает :smile: спасибо! :clap: а что нужно поправить чтобы по умолчанию звук был выключен ?
Girl
Аватара
Репутация: 18
С нами: 12 лет 1 месяц

Сообщение #52 VEG » 08.10.2012, 16:43

Girl, в файле main.js находим:
Код: Выделить всё
Sound =
{
   Enabled: 1,
И меняем 1 на 0.
VEG M Онлайн
Автор темы, Администратор
Аватара
Откуда: Finland
Репутация: 1668
С нами: 12 лет 7 месяцев

Сообщение #53 K--H.ru » 08.10.2012, 19:48

Заметил, что сообщения удаляются как зря и при следующем входе в чат история идёт вразброс. Удалять из базы необходимо при ORDER BY msg_id - тогда всё корректно.
K--H.ru M
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #54 Girl » 08.10.2012, 21:22

а как сделать чтоб гости только могли видеть форум на главной ? Т.е. сейчас если гостем заходить то чата не видно ,вместо него размещается главная страница , т.е. главная в главной получается
Изображение
Girl
Аватара
Репутация: 18
С нами: 12 лет 1 месяц

Сообщение #55 VEG » 09.10.2012, 18:09

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

Сообщение #56 K--H.ru » 09.10.2012, 20:11

VEG, есть ли какая-нибудь функция выхода, чтобы её можно было поставить в <body OnUnload=? Или только тайм-аут?
Последний раз редактировалось K--H.ru 09.10.2012, 20:14, всего редактировалось 1 раз.
K--H.ru M
Репутация: 13
С нами: 12 лет 1 месяц

Сообщение #57 VEG » 09.10.2012, 20:12

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

Сообщение #58 Girl » 13.10.2012, 17:40

Это снова я :smile:
Подскажите пож-ста что убрать в коде , чтобы с чата убрать вариант выбора обновления чата в 5 сек . ? Хотелось бы хоть немного снизить нагрузку на сервер при обновлениях.
C уважением
Girl
Аватара
Репутация: 18
С нами: 12 лет 1 месяц

Сообщение #59 K--H » 13.10.2012, 17:53

VEG, что делать с выделением текста в сообщениях? При попытке выделить, автоматически выделяется весь текст от текущей позиции курсора до самого конца. Пока решение не нашёл, скорее всего, что-то надо скормить jquery.js.
K--H
Гость

Сообщение #60 K--H.ru » 13.10.2012, 20:42

Упорядочивание списка чатовцев в алфавитном порядке:
Код: Выделить всё
// Выводим список пользователей
$sql = "SELECT * FROM " . CHAT_SESSIONS_TABLE . ' ORDER BY username';

Всплывающая подсказка на приватных репликах (у меня обращение переделано на @[ник] а приват на #[ник] ).
Код: Выделить всё
$text = "<span class=\"private\" title=\"Приватное сообщение\">" . $msgpriv . "</span> " . $tmp;
Последний раз редактировалось K--H.ru 13.10.2012, 20:58, всего редактировалось 2 раз(а).
K--H.ru M
Репутация: 13
С нами: 12 лет 1 месяц

Пред.След.

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