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 15573 times
    (версия для 3.1-
    phpbb3_simplechat_3.1.zip
    Исправленная версия для работы на 3.1
    (78.05 KiB) Downloaded 1267 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 1684 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: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 2 months


Post #41by VEG » 05.10.2012, 18:05

angst66, судя по инструкции нужно вставить в нужное место шаблона следующий код:
Code: Select all
<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
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 2 months

Post #42by angst66 » 05.10.2012, 21:47

На чистой htlm странице получается, а если вставлять в шаблон чата, кнопка появляется, а форма клавиатуры по клику нет. Возможно потому что негде этой форме появиться, места мало.
angst66
Бывалый
Reputation: 13
With us: 4 yaers 9 months

Post #43by angst66 » 07.10.2012, 20:02

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

Добавлено спустя 1 минуту 14 секунд:
Появляется когда перехожу на 3 страницу в этой теме
angst66
Бывалый
Reputation: 13
With us: 4 yaers 9 months

Предложения

Post #44by 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
Новичок
Age: 30
Reputation: 13
With us: 4 yaers 8 months

Post #45by VEG » 07.10.2012, 20:33

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

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

Post #46by K--H.ru » 07.10.2012, 22:30

Если кому нужен лог сообщений - скопируйте структуру таблицы phpbb_chat_messages в phpbb_chat_logs.
Code: Select all
# Перемещаем сообщения в лог перед удалением
      $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
Новичок
Age: 30
Reputation: 13
With us: 4 yaers 8 months

Post #47by Girl » 08.10.2012, 12:05

У меня Ваш чат не хочет ставится в phpbb3 . Пыталась выполнить SQl запрос , в пшп майадмин пишет
Code: Select all
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

И при заходе на страницу пишет это :
Code: Select all
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
Мастер
Avatar
Reputation: 18
With us: 4 yaers 8 months

Post #48by VEG » 08.10.2012, 12:13

Girl wrote:в пшп майадмин пишет
Ошибки там нет, запросы создания страниц не должны возвращать какой-то особый результат. Загружайте файлы чата — должно работать.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 2 months

Post #49by Girl » 08.10.2012, 13:04

VEG wrote:Ошибки там нет, запросы создания страниц не должны возвращать какой-то особый результат. Загружайте файлы чата — должно работать.
неа :sad: не работает Image атрибуты на все вложения чата поставила пока 755
Girl
Мастер
Avatar
Reputation: 18
With us: 4 yaers 8 months

Post #50by VEG » 08.10.2012, 13:47

Girl, судя по ошибке у вас префикс phpbb_c вместо обычного phpbb_. Значит в запросах измените префикс таблиц и заново выполните.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 2 months

Post #51by Girl » 08.10.2012, 14:44

вау работает :smile: спасибо! :clap: а что нужно поправить чтобы по умолчанию звук был выключен ?
Girl
Мастер
Avatar
Reputation: 18
With us: 4 yaers 8 months

Post #52by VEG » 08.10.2012, 16:43

Girl, в файле main.js находим:
Code: Select all
Sound =
{
   Enabled: 1,
И меняем 1 на 0.
С наилучшими пожеланиями, Евгений
VEG M
Topic author, Администратор
Avatar
Age: 29
Location: Минск, Беларусь
Reputation: 1573
With us: 5 years 2 months

Post #53by K--H.ru » 08.10.2012, 19:48

Заметил, что сообщения удаляются как зря и при следующем входе в чат история идёт вразброс. Удалять из базы необходимо при ORDER BY msg_id - тогда всё корректно.
K--H.ru M
Новичок
Age: 30
Reputation: 13
With us: 4 yaers 8 months

Post #54by Girl » 08.10.2012, 21:22

а как сделать чтоб гости только могли видеть форум на главной ? Т.е. сейчас если гостем заходить то чата не видно ,вместо него размещается главная страница , т.е. главная в главной получается
Image
Girl
Мастер
Avatar
Reputation: 18
With us: 4 yaers 8 months

Post #55by VEG » 09.10.2012, 18:09

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

Post #56by K--H.ru » 09.10.2012, 20:11

VEG, есть ли какая-нибудь функция выхода, чтобы её можно было поставить в <body OnUnload=? Или только тайм-аут?
Last edited by K--H.ru on 09.10.2012, 20:14, edited 1 time in total.
K--H.ru M
Новичок
Age: 30
Reputation: 13
With us: 4 yaers 8 months

Post #57by VEG » 09.10.2012, 20:12

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

Post #58by Girl » 13.10.2012, 17:40

Это снова я :smile:
Подскажите пож-ста что убрать в коде , чтобы с чата убрать вариант выбора обновления чата в 5 сек . ? Хотелось бы хоть немного снизить нагрузку на сервер при обновлениях.
C уважением
Girl
Мастер
Avatar
Reputation: 18
With us: 4 yaers 8 months

Post #59by K--H » 13.10.2012, 17:53

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

Post #60by K--H.ru » 13.10.2012, 20:42

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

Всплывающая подсказка на приватных репликах (у меня обращение переделано на @[ник] а приват на #[ник] ).
Code: Select all
$text = "<span class=\"private\" title=\"Приватное сообщение\">" . $msgpriv . "</span> " . $tmp;
Last edited by K--H.ru on 13.10.2012, 20:58, edited 2 times in total.
K--H.ru M
Новичок
Age: 30
Reputation: 13
With us: 4 yaers 8 months

PreviousNext

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



cron