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

Список "присутствующих" на Ajax


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

Вот что хотелось бы видеть :

список "Кто сейчас на форуме" (который внизу главной страницы) обновлялся на Ajax-е (ну положим каждый промежуток времени, который настраивается в админке) Если такого мода нет, может быть кто- нибудь напишет ?

версия форума 2.3

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

А не боишься что нагрузка возрастёт если у тебя скажем 500 челов в онлйне?! Или ты собираешься это каждые 5 минут обнавлять?! Тогда есть ли вообще смысл делать это на Ajax'e если проще и быстрее самому обновить страницу!
Ссылка на комментарий
Поделиться на других сайтах

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

В изначальном состоянии нужно показывать этот список? Какие-то настройки, требуются, или просто кнопка "обновить" рядом со списком?
Ссылка на комментарий
Поделиться на других сайтах

Попробую поточней описать ТЗ:

Заменить стандартный список (или модернизировать существующий) чтобы он обновлялся сам.

Клиентская часть: тот же список что и сейчас :

http://i050.radikal.ru/0801/b1/f9edb1db87fd.jpg

Только сам список должен обновляться сам , соответственно надписи о кол-ве пользователей, гостей и т.д. также. В момент обновления в шапке списка справа появляется надпись (Обновление...)

Админка:

Настройка периода обновления (вроде в других настройках необходимости нет)

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

А не боишься что нагрузка возрастёт, если у тебя скажем 500 челов в онлайне?!

Т.е. скрывать ничего не надо, так? Просто фишка для тех кому надо, сидеть на главной и просматривать присутствующих? Видимость скрытых админам тоже нужна тогда?

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

Т.е. скрывать ничего не надо, так? Просто фишка для тех кому надо, сидеть на главной и просматривать присутствующих? Видимость скрытых админам тоже нужна тогда?

Немного не понял смысла фразы

Идея в том чтобы был стандартный функционал блока только с автоматическим обновлением )

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

Зато я понял, напишу.

 

Пробуйте...

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

Установил.

При нажатии на "Обновить" Opera говорит ошибку JS:

<br />

<b>Parse error</b>: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in <b>/usr/local/www/pavel/romahi.net.ru/sources/action_public/xmlout.php</b> on line <b>593</b><br />

 

 

Кусок xmlout , на который происходит ругань:

 

 

//-----------------------------------------

// Load member

//-----------------------------------------

 

$this->ipsclass->DB->build_query( array( 'select' => 'm.*',

'from' => array( 'members' => 'm' ),

'where' => 'm.id='.$member_id,

'add_join' => array( 0 => array( 'select' => 'me.*',

'from' => array( 'member_extra' => 'me' ),

'where' => 'me.id=m.id',

'type' => 'left' ),

1 => array( 'select' => 'pp.*',

'from' => array( 'profile_portal' => 'pp' ),

'where' => 'pp.pp_member_id=m.id',

'type' => 'left' ),

2 => array( 'select' => 'g.*',

'from' => array( 'groups' => 'g' ),

'where' => 'g.g_id=m.mgroup',

'type' => 'left' ) ) ) );

$this->ipsclass->DB->exec_query();

 

$member = $this->ipsclass->DB->fetch_row();

 

if ( ! $member['id'] )

{

$this->class_ajax->print_nocache_headers();

$this->class_ajax->return_string( 'error' );

}

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

На этот кусок приходиться не может. Не так отредактировали файл значит, пришлите мне его на мойник@mail.ru
Ссылка на комментарий
Поделиться на других сайтах

Отправил, на всякий случай еще раз перепроверил изменения согласно твоей инструкции, тоже самое (
Ссылка на комментарий
Поделиться на других сайтах

Спасибо, за исправления в файле, теперь по нажатию на обновить JS отвечает:

 

var return_total = "3 посетителей за последние 15 минут";

var return_guests = parseInt("2");

var return_members = parseInt("1");

var return_anon = parseInt("0");

var return_names = "<img src='style_images/browser_icons/b_opera.png' border='0' alt='' title='Opera' /> <a href='http://romahi.ru/index.php?showuser=1' title='21:49'>Квэнди</a><{ACTIVE_LIST_SEP}>

<img src='style_images/browser_icons/b_unknown.png' border='0' alt='' title='' /> Google.com<{ACTIVE_LIST_SEP}>";

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

Неправ, оставил в инструкции строку для дебага :D

В js файле функцию замените на:

//--------------------------------------
// (SnS) AJAX Update online users list
//--------------------------------------
function ajax_update_online_list()
{
//----------------------------------
// Using fancy js?
//----------------------------------

if ( !use_enhanced_js )
{
	return;
}

//----------------------------------
// Make data for request
//----------------------------------

var url	= ipb_var_base_url+'act=xmlout&do=sns-update-online-list&md5check=' + ipb_md5_check;

//----------------------------------
// Request done function
//----------------------------------

do_request_function = function()
{
	if (!xmlobj.readystate_ready_and_ok())
	{
		xmlobj.show_loading();
		return;
	}

	xmlobj.hide_loading();
	var ret_str = xmlobj.xmlhandler.responseText;

	if( ret_str != 'error')
	{
		eval(ret_str);

		document.getElementById('online-total').innerHTML   = return_total;
		document.getElementById('online-guests').innerHTML  = return_guests;
		document.getElementById('online-members').innerHTML = return_members;
		document.getElementById('online-anon').innerHTML	= return_anon;
		document.getElementById('online-names').innerHTML   = return_names;
	}
}

xmlobj = new ajax_request();
xmlobj.onreadystatechange(do_request_function);
var xmlreturn = xmlobj.process(url, 'GET');

return;
}

И очистите кеш браузера. Теперь вроде всё ;) Если что я в icq появляюсь.

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

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

Гость
Эта тема закрыта для публикации сообщений.
×
×
  • Создать...

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

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