Перейти к контенту

[2.3.x]Чат ElfChat 4.2.1


Elfet

Рекомендуемые сообщения

  • Ответы 367
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Elfet попробуйте в АЦ установить префикс для куков, и тогда при переходе с форума в чат вы чата не увидите, т.к. $in_pass_hash будет неизвестен, поэтому те у кого стоит префикс вынуждены будут убрать его в настройках кукей АЦ.

также домен кукей указанный в чате и в АЦ форума должны совпадать

------------------

Elfet можно попросить ссылку на ваш пусть и тестовый форум ipb, чтобы видеть с чем работаете Вы и корректировать вопросы при их задании.

Изменено пользователем vizavi
Ссылка на комментарий
Поделиться на других сайтах

После того как убрал префикс, всё заработало!

Сейчас вроде бы полет нормальный!

Изменено пользователем dengol
Ссылка на комментарий
Поделиться на других сайтах

vizavi, нет, этот форум у меня на локалке стоит. Спасибо за заметку о префиксах, нужно будет добавить их в модуль.
Ссылка на комментарий
Поделиться на других сайтах

купил полную версию, старый чат снёс

Приступить к установке:

шаг 1 Основные настройки

Хост

Пользователь БД

Пароль БД

Имя базы данных

Всё прописал , нажимаю далее

Настройки сохранены!

Далее Создание таблиц в БД

Нажимаю и всё больше ничего нет, только верхняя строчка Установка ElfChat

Почему нет продолжения?

 

 

Но вот установить создается проблема, когда перехожу ко второму шагу

 

http://forums.ibresource.ru/index.php?show...st&p=322962 здесь читал.

Автор прошу помощи.

Ссылка на комментарий
Поделиться на других сайтах

Вованчик,

Посмотрите пожалуйста в логах какая ошибка выходит при создании таблиц?

Ещё есть вариант - создать таблицы вручную.

Изменено пользователем Elfet
Ссылка на комментарий
Поделиться на других сайтах

заметил глюк, выкидывание на форум и автоперезагрузка страницы чата форумом.

бывает либо снустя какое-то время прибывания в чате, просто сам выкидывает на форум, причём вариант выход по таймауту негодится, я в чате могу что-то писать.

также при попытке зайти в чат он начинает загружаться в этом окне и после того как загружается каркас, он не грузит сообщения, онлайн и список комнат а тутже восстанавливает окно форума и так может несколько раз.

 

незнаю как отследить что возвращает в окно команду на редирект, вроде на форуме не висит никакого скрипта который с опозданием выбрасывает данные в окно форума.

---------------------------------------

также хочу добавить несколько улучшений в код чата, не думаю что автор будет против, но если так удалю свои выкладки

 

делаем принудительное обрезание длинных строк (даже если какой-то идиот печатает буквы слитно)

файл: /chat/kernel/chat.php

меняем строку

$text = nl2br($text);

на

$text = nl2br(wordwrap($text,160," \n",1));

где 160 - это кол-во символов после которых вставляется перенос, при этом если есть длинное слово, то перед началом этого слова вставляется перевод строки и само слово режется на куски указанной длины, также замечу что эта функция не знает разницы между кодировками, и поэтому если у Вас UTF-8, то каждый русский символ хранится в 2-х байтах, а английские или знаки хранятся в одном, поэтому 160 хватит на 80 русских букв или 160 английских, так что сами выбираете.

 

для определённого ID делаем вывод всех сообщений чата со всех комнат (можно перечислить комнаты по желанию), это удобно например для супермодераторов, которые помимо тех модеров которых Вы добавили в АЦ чата, смогут быть глобальными модераторами (супермодераторами :D) т.к. не нужно бегать по комнатам и искать кто же где что написал, т.е. у пользователей с этими ID будет слив сообщений в одном окне

файл: /chat/chat.php

меняем строку

$result = Elfchat::Db()->load(Elfchat::User("room"), $_REQUEST['lid']

на

$result = Elfchat::Db()->load(Elfchat::User("room"), $_REQUEST['lid'], Elfchat::User("det"));

это добавляется передача ID в функцию загрузки сообщений из базы

файл: /chat/kernel/db.php

находим код

		else
	{
		$room = mysql_escape_string($room);
		$from = "(room = '".$room."' OR room = 'global')";
	}

дописываем после него

		$lim_desc=50; // лимит выборки кол-ва сообщений из базы и отображения в чате, причём всех - вход, выход, переход и прочий мусор
	if ( ($moder_id==1) || ($moder_id==2) )
	{	$from = "(room != 'privat')"; // можно добавить внутри скобок перечень комнат - "AND room=='komnata1' AND room=='komnata2' " и так далее дописывая "AND room=='' " и название комнаты в одинарных кавычках, таким образом перечислив комнаты из которых будут сливаться сообщения для супермодера.
		$lim_desc=150;
	}

при этом можете добавить "|| ($moder_id==2)" со своими ID пользователей берущихся с форума или другого места авторизации

 

ниже идёт строка

$q = mysql_query("SELECT * FROM ".Elfchat::Prefix()."_messages WHERE ( ".$from." AND id > '".$lid."' ) ORDER BY id DESC LIMIT 50", $this->id);

меняем на

$q = mysql_query("SELECT * FROM ".Elfchat::Prefix()."_messages WHERE ( ".$from." AND id > '".$lid."') ORDER BY id DESC LIMIT ".$lim_desc, $this->id);

либо

if ( ($moder_id==1) || ($moder_id==2) )
{	$q = mysql_query("SELECT * FROM ".Elfchat::Prefix()."_messages WHERE ( ".$from." AND id > '".$lid."' AND type != 'chroom' AND type != 'enter') ORDER BY id DESC LIMIT ".$lim_desc, $this->id);
}
else
{	$q = mysql_query("SELECT * FROM ".Elfchat::Prefix()."_messages WHERE ( ".$from." AND id > '".$lid."') ORDER BY id DESC LIMIT ".$lim_desc, $this->id);
}

разница в том, что в первом варианте супермодеру будут сыпаться сообщения входа-выхода и переходов из всех комнат, а кол-во запросов в базу имеет лимит (стандартно стоит 50, в коде выше при проверки принадлежности к модератору ему выставляется 150)

а во втором если модератор, то из базы не будут браться запросы входа, и перехода в комнату из другой, т.е. чат для супермодера станет почище.

и ещё 1 нюанс: выделение сообщений которые сваливаются в чат модератору, чтобы он знал где это написали, а не созерцал кучу хлама, хотя это по желанию и мере любви к супермодераторам чата...

в этом же файле db.php после блока где Вы меняли запросы к базе идёт

		while($row = mysql_fetch_array($q))
	{
		$result[] = $row;
	}

его заменяем на

		while($row = mysql_fetch_array($q))
	{
		if (
			( ($moder_id==1) ||($moder_id==2) )		// здесь аналогично как и в блоке Выше, перечисляете ID модераторов
			&& ($row['room']!=$room) && ($row['type']=='msg')
		)
		{	$row['msg']=$row['room']."<span style='background-color: #F0F0F0;'> > ".$row['msg']." </span>";
		}
		$result[] = $row;
	}

$row['msg']=$row['room']."<span style='background-color: #F0F0F0;'> > ".$row['msg']." </span>";

сообщения делается фон, можете в style='background-color: #F0F0F0;' добавить свои раскраски фона и цвета, при этом будет небольшое неудобство, если пользователи будут писать цветные сообщения, но не думаю что 7 букв помешают особо.

В моём примере будет писаться ID комнаты (main, komnata1 и т.д.) а далее сообщение с серым фоном, что выделит сообщения не из той комнаты где модератор и напишет название этой комнаты в начале сообщения.

 

также те кто хочет погасить вывод сообщений типа "вход в чат", "переход в комнату" и т.д. на стороне пользователя, можете отредактировать файл htmljs.js лежащий в папке скина, например - chat\skin\elfskin

в нём находите условные проверки

else if(type == 'enter')

и в "return" ставите "false;" вместо обработки сообщения, например вместо

	  else if(type == 'enter')
  {
	  return '<i class="time">'+time+'</i> <b class="info">В чат входит '+htmlname+'</b>.';
  }

ставите так, и убиваете вывод сообщений входа в чат

	  else if(type == 'enter')
  {
	  return false;
  }

----------------------------------------------------------------------------

обработка файлов по расширению, на подобии мультимедиа тегов

открываем chat\kernel\chat.php

в конце файла находим

	else
{
	// Формируем ссылку.
	return "<a href=\"$href\" target=\"_blank\">$name</a>";
}

заменяем на

	else
{	switch ($exe)
	{
	case "mp3":	{
return "<img src='smiles/60.gif'> <object type='application/x-shockwave-flash' width='300' height='16' align='middle' wmode='transparent'
data='http://Ваш сайт/forum/public/flashrmp3/xspf_player_slim.swf?song_url=".$href."'>
<param name='movie' wmode='transparent'
	value='http://Ваш сайт/forum/public/flashrmp3/xspf_player_slim.swf?song_url=".$href."' />
</object>";
		break; }
	default :	{	// Формируем ссылку.
				return "<a href=\"$href\" target=\"_blank\">$name</a>";
		break; }
	}
}

http://Ваш сайт/forum/public/flashrmp3/xspf_player_slim.sw заменяете на путь к файлу с mp3 плеером, при этом не забывайте проверить откроется ли этот файл просто введя адрес в браузер!

xspf_player_slim.zip

 

блоками case "mp3": Вы можете сделать обработку и других форматов.

 

Вот в общем основные модификации, которые мне показались уместны для чата, чтобы немного его улучшить...

Изменено пользователем vizavi
Ссылка на комментарий
Поделиться на других сайтах

Если на форуме включены ЧПУ, то кол-во человек находящихся в чате отображается только на главной. Для того чтобы отображалось на всех страницах необходимо путь к файлу count.php прописать полностью!

<if><li class='left'><a href='http://www.site.ru/elfchat.php'>Чат <script type="text/javascript" src="http://www.site.ru/chat/count.php"></script></a></li></if>

Ссылка на комментарий
Поделиться на других сайтах

на мои вопросы так и нет ответа.

куплена лицензия.

В привате не работае цвет.

Когда юзеру приватно пишешь - @personal(4255)

 

Приходят такие сообщения - "#B200FF а приват работает?"

 

 

Проблема с цветом ещё не решена - в следующей версии(4.3) - будет решена.

 

Покажите на примере где не работают, мне нужно на такое самому посмотреть.

вот тут такая проблема с цветом

И если загружают картинки то расползается чат, где можно это поправить?

 

пробовал этот вариант не подошёл с расползанием тема открыта, так же и с цветом пока не ясно почему иногда пишет #B200FF или что то в этом роде.

Ссылка на комментарий
Поделиться на других сайтах

новомодные браузеры поддерживают функцию горячего продолжения прерванной или остановленной сессии, т.е. Мазила например при ё убивании и следующем запуске спрашивает восстановить?, Опера может сохранять и октрывать окна с последнего оконченного места, насчёт других не искал, функция дибильная, но юзерам нравится, разработчики клепают...

 

Всёбы ничего, но в этой функции есть неучтённый нюанс: во время попытки браузером восстановить сессию, на сервер отправляется дамп данных в числе которых ключ сессии, если почитать нормальный стандарт эта сессия сбрасывается при переподключении клиента, т.к. она создаётся на оснвоании серверной части, а не то что захочет подсунуть клиент, в итоге в чате в модуле авторизации (потому как просто форумная страница восстанавливается без проблем) видимо происходит проверка сессии, в итоге когда чат не может понять то что ему подсовывают, он отправляет на выход, в итоге повторял несколько раз один и тот же случай - заходил мазилой или оперой в чат, после этого убивал браузер и спустя некоторое время запускал браузер с функцией восстановления, в итоге чат выкидывал на форум, иногда правдо мозила если быстро происходит перезапуск или вместо окна чата было открыто окно форума всётаки заходит в чат, но спустя несколько секунд выкидывает на выход автоматом.

В итоге конечно не очень криично, но если на форум после восстановления сессии заходит нормально, то для входа в чат без выкидываний из него прийдётся нормально закрывать браузер и открывать форум с чистого листа...

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
$text = nl2br(wordwrap($text,160," \n",1));

а я тут целую функцию на яве накатал, а тут все одной строчкой решается оказывается ))

 

для определённого ID делаем вывод всех сообщений чата со всех комнат

я для себя на php написал простенький модуль для просмотра логов

 

сообщения делается фон

а вот это зло, имхо, чат будет похож на радугу. Разве что для детского сада пойдет )

 

_____________________________________

1 вопрос к разработчику: можно ли платную версию организовать, не снося старую ? Я там столько всего перепрограммировал, что сносить точно не буду, а приваты вот нужны стали .... только приваты ...

 

2 вопрос ко всем: после того, как я кого-нить забаню, окошко банов не закрывается - при нажатии на красный крестик, браузер отображает белую страницу со строчкой

 

[object Object]

 

при этом в адресной строке браузера -

 

java script:$('#modbox').hide();

 

и из чата выкидывает, соответсвенно.

 

 

 

 

 

Ну и на последок - что я сделал надавно:

 

1) показ причины бана

а) всем пользователям в чате в момент бана (а-ля: "пользователь Х был забанен на 365 дней по причине: идиот")

б) самому забаненому при попытке входа в чат (а-ля: "вы были за банены в чате по причине: идиот, срок истекает через ... ...")

 

2) введена кнопка "очистить окно чата" (полезно, чтобы стереть логи в своем браузере)

 

Планирую сделать сохранение цвета шрифта пользователя в куки. Чтобы при входе в чат каждый раз цвет не сбрасывался в дефолт. Правда с куками на яве не работал никогда, поэтому если кто подскажет, как проще сделать - пишите )

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

спасибо..разобрался...тока после установки пишет "Не удалось выполнить вход в чат из-за того что сессия не была найдена.

Попробуйте выполнить вход ещё раз. "

Ссылка на комментарий
Поделиться на других сайтах


×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.