Написал чат как мне надо было. Выкладываю может пригодится кому.
для установки делаем изменения
и загружаем файлы из upload архива на сервер
- весь обмен с сервером через ajax, проверка новых сообщений даже авторизацию не вызывает
- есть приватные сообщения
- чат выводится из memcache что уменьшает нагрузку (без memcache не работает!)
- прокрутка идет снизу вверх как везде, а не по ....
- пользователи могут удалять свои сообщения, админы и модеры любые
- отключение чата в своем профиле (просили многие - добавил)
- добавлен bbcode (b,s,i,u)
для установки делаем изменения
PHP:
CREATE TABLE `nschat` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`name` varchar(25) NOT NULL default '',
`user_id` mediumint(8) NOT NULL,
`privto` varchar(25) NOT NULL default '',
`s_time` int(11) NOT NULL default '0',
`msg` varchar(1000) NOT NULL,
`lev` tinyint unsigned not null default '0',
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ALTER table bb_users add column nschat_on tinyint(1) not null default 1;
---open
templates/default/css/main.css
---find
.row6, .row6 td { background: #E9E9E6; }
---add after
.row9, .row9 td { background: #FFB0B0; }
---open language/lang_russian/lang_main.php
---add at end
$lang['NSCHAT'] = 'Мини-чат';
$lang['NSchat_refresh'] = 'Обновить';
$lang['NSchat_smiles'] = 'Смайлы';
$lang['NSchat_text'] = 'Сообщение';
$lang['NSchat_delmsg'] = 'удалить это сообщение';
$lang['NSchat_prof'] = 'профиль пользователя';
$lang['NSchat_priv'] = 'ник в чат или приватное сообщение';
---open
includes/ucp/usercp_viewprofile.php
---find
'GENDER' => ($bb_cfg['gender'] && $profiledata['user_gender']) ? $lang['GENDER_SELECT'][$profiledata['user_gender']] : '',
---add after
'L_NSCHAT' => $lang['NSCHAT'],
'NSCHAT' => $profiledata['nschat_on'] ? $lang['YES'] : $lang['NO'],
---open
includes/ucp/usercp_register.php
---find
'user_gender' => true,
---add after
'nschat_on' => true,
---find
case 'user_gender':
---add before
case 'nschat_on':
$nschaten=isset($_POST['nschat_on']) ? 1 : 0;
if ($submit && $nschaten!=$pr_data['nschat_on'])
{
$pr_data['nschat_on']=$nschaten;
$db_data['nschat_on']=$nschaten;
}
$tp_data['NSCHAT']=$pr_data['nschat_on'] ? " checked":"";
break;
---open
templates/default/usercp_register.tpl
---find
<!-- IF $bb_cfg['pm_notify_enabled'] -->
---add before
<td>{L_NSCHAT}:</td>
<td><label><input type="checkbox" value="1" name="nschat_on"{NSCHAT}></label></td>
---open templates/default/index.tpl
---find <!-- IF LOGGED_IN -->
---add after
<!-- IF NSCHAT_ON -->
<table width="100%" cellspacing="0" border="0" align="center" cellpadding="2" class="forumline">
<tr><td align="center" nowrap="nowrap" class="catHead"><span class="cattitle">{NSCHAT}</span></td></tr>
<tr><td class="row2">
<iframe src="./nschat.php" scrolling="NO" width="100%" height="200" frameborder="0" marginheight="0" id="69427" marginwidth="0" allowtransparency="true"></iframe></td></tr>
</table><br/>
<!-- ENDIF -->
---open index.php
---find 'FORUM_LOCKED_IMG' => $images['forum_locked'],
---add after
'NSCHAT_ON' => ($userdata['nschat_on'] != 0) ? true : false,
'NSCHAT' => $lang['NSCHAT'],
и загружаем файлы из upload архива на сервер