Sprinx
Пользователь
#############################################################
## Название мода: Мини Чат на аякс / Mini Chat [ajax]
##Описание: это миничат который написанн на PHP и JavaScript , с использованием технологий Ajax для обмена данными,
## без необходимости перезагружать страницу.
## Используется база MySQL. Минимальная нагрузка на сервер (всё кешируется) поддержка смайлов, всех ббкодов и окраска ников.Аватарок,и отправка писем в личку.
##Сложность: легко
##Время установки: 3 мин
#############################################################
Продолжение этой темы http://torrentpier.com/threads/full-Мини-Чат-на-аякс-mini-chat-ajax.42/
SQL
index.php
Найти
Ниже вставить
Открываем и добавляем Ajax.php
Найти
Ниже вставить
Найти
Ниже вставить
Перед последней скобкой }
index.tpl
Найти
Ниже вставить
Main.css
В конец
language/lang_russian/lang_main.php
И закинуть картинки.
Скрин как выглядит.
## Название мода: Мини Чат на аякс / Mini Chat [ajax]
##Описание: это миничат который написанн на PHP и JavaScript , с использованием технологий Ajax для обмена данными,
## без необходимости перезагружать страницу.
## Используется база MySQL. Минимальная нагрузка на сервер (всё кешируется) поддержка смайлов, всех ббкодов и окраска ников.Аватарок,и отправка писем в личку.
##Сложность: легко
##Время установки: 3 мин
#############################################################
Продолжение этой темы http://torrentpier.com/threads/full-Мини-Чат-на-аякс-mini-chat-ajax.42/
SQL
PHP:
CREATE TABLE IF NOT EXISTS `bb_shout` (
`shout_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`shout_username` varchar(25) CHARACTER SET cp1251 NOT NULL DEFAULT '',
`shout_user_id` mediumint(8) NOT NULL DEFAULT '0',
`shout_session_time` int(11) NOT NULL DEFAULT '0',
`shout_ip` char(8) CHARACTER SET cp1251 NOT NULL DEFAULT '',
`shout_text` varchar(1000) CHARACTER SET cp1251 NOT NULL,
KEY `shout_id` (`shout_id`)
);
index.php
Найти
PHP:
$page_cfg['load_tpl_vars'] = array(
'post_icons',
);
PHP:
$page_cfg['include_bbcode_js'] = true;
Открываем и добавляем Ajax.php
Найти
PHP:
case 'view_post':
require(INC_DIR .'bbcode.php');
break;
Ниже вставить
PHP:
case 'chat_message':
require(INC_DIR .'functions_post.php');
require(INC_DIR .'bbcode.php');
break;
Найти
PHP:
'view_post' => array('guest'),
Ниже вставить
PHP:
'shout_del' => array('mod'),
'chat_message' => array('user'),
Перед последней скобкой }
PHP:
function chat_message()
{
global $bb_cache, $userdata, $bb_cfg, $lang;
$mode = (int) $this->request['mode'];
$message = (string) @$this->request['message'];
if($mode==1)
{
if(!$message) $this->ajax_die($lang['shoutbox_err']);
$bbcode_on = $bb_cfg['allow_bbcode'];
$smilies_on = $bb_cfg['allow_smilies'];
if(!IS_ADMIN)
{
$chk = DB()->fetch_row('SELECT MAX(shout_session_time) AS last_post_time FROM bb_shout WHERE shout_user_id = '.$userdata['user_id']);
if ( $chk['last_post_time'] > 0 && ( time() - $chk['last_post_time'] ) < $bb_cfg['flood_interval'] ) $this->ajax_die($lang['flood_error']);
}
if (!empty($message))
{
DB()->query('INSERT INTO bb_shout (shout_text, shout_session_time, shout_user_id, shout_ip, shout_username) VALUES ("'.DB()->escape($message).'", '.time().', '.$userdata['user_id'].', "'.USER_IP.'", "'.DB()->escape($userdata['username']).'")');
CACHE('bb_cache')->rm('shout_data', 60);
}
}
if(!$shout_data = CACHE('bb_cache')->get('shout_data', 60))
{
$shout_rows = DB()->fetch_rowset("SELECT s.*, u.username, u.user_level, u.user_rank, u.user_avatar, u.user_avatar_type
FROM bb_shout s, ".BB_USERS." u
WHERE s.shout_user_id=u.user_id AND u.user_id = u.user_id
ORDER BY s.shout_session_time DESC LIMIT 50");
$i=0;
$shout_data = '';
foreach ($shout_rows AS $shout_row)
{
$row_class = !($i % 2) ? 'row1' : 'row2';
$user_level = $shout_row['user_level'];
if($user_level) $username = profile_url($shout_row);
else $username = '<span>'.$shout_row['username'].'</span>';
$post_delete =($userdata['user_level'] == ADMIN || $userdata['user_level'] == IS_AM) ? '<img src="templates/default/images/shout/shout_delete.png" title="Удалить сообщение" class="clickable" onclick="ajax.shout_del('.$shout_row['shout_id'].'); ajax.chat_message(2); return false;" style="float:right"> ' : '';
$pm_link = '<a href="privmsg.php?mode=post&u='.$shout_row['shout_user_id'].'" target="_blank"><img title="Послать личное сообщение" align="absmiddle" src="templates/default/images/shout/shout_mail.png" /></a>';
$shout = (!$shout_row['shout_active']) ? $shout_row['shout_text'] : $lang['Shout_censor'];
$shout = str_replace("\n", "\n<br />\n", $shout);
$shout = ($user_level == ADMIN) ? '<span>'.$shout.'</span>' : $shout;
$shout_data .= '<div id="shout_'.$shout_row['shout_id'].'" class="chat-comment '.$row_class.'">
<div style="min-height:55px; min-width: 150px; float: left; border-right: 1px solid #AED7FF;; margin-right: 6px;">
<a href="profile.php?mode=viewprofile&u='.$shout_row['shout_user_id'].'" target="_blank" title="Посмотреть профиль">'.get_avatar($shout_row['user_avatar'], $shout_row['user_avatar_type'], !bf($userdata['user_opt'], 'user_opt', 'allow_avatar'), 32, 32).'</a>
<span><a class="bold" title="'.$lang['shoutbox_insert_name'].'" style="text-decoration: none;" href="javascript:add_nick(\'[b]'.addslashes($shout_row['shout_username']).'[/b]\')">'.$username.' </a></span>
'.$pm_link.'
<div class="small" style="font-size: 9px; padding-left: 3px;">'.bb_date($shout_row['shout_session_time'], $bb_cfg['last_post_date_format']).'</div>
</div>
<div style="float: right;">'.$post_delete.'</div>
<span style="font-size: 11px;">'.bbcode2html($shout).'</span>
</div>
</div>';
++$i;
}
CACHE('bb_cache')->set('shout_data', $shout_data);
}
$this->response['message'] = $shout_data;
}
function shout_del()
{
global $bb_cache;
$id = (int) $this->request['id'];
DB()->query("DELETE FROM bb_shout WHERE shout_id = $id");
$this->response['id'] = $id;
CACHE('bb_cache')->rm('shout_data');
}
index.tpl
Найти
PHP:
<!-- IF TORHELP_TOPICS -->
<!-- INCLUDE torhelp.tpl -->
<div class="spacer_6"></div>
<!-- ENDIF / TORHELP_TOPICS -->
Ниже вставить
PHP:
<!-- IF LOGGED_IN -->
<script type="text/javascript">
ajax.chat_message = function(mode) {
ajax.exec({
action : 'chat_message',
mode : mode,
message : $('#message').val()
});
};
ajax.callback.chat_message = function(data) {
if(data.message)
{
$('#chat').show();
$('#chat').html(data.message);
initPostBBCode('#chat');
}
};
function submit_click(e) {
e = e || window.event;
if (e.keyCode == 13 && e.ctrlKey) {
submit_chat();
};
}
function add_nick(text){
$('#message').attr('value', $('#message').val() + text +' ');
$('#message').focus();
}
$(document).ready(function(){ajax.chat_message(2);});
setInterval(function(){ajax.chat_message(2);}, 60000);
ajax.shout_del = function(id) {
ajax.exec({
action : 'shout_del',
id : id
});
};
ajax.callback.shout_del = function(data) {
var id = data.id;
$('td#shout_'+id).hide("slow");
};
</script>
<div class="category">
<div class="cat_title"><b>{L_MINI_CHAT}</b></div>
<div class="f_tbl_wrap pad_4 tCenter">
<form name="post">
<textarea onkeydown="submit_click(event)" id="message" class="chat_message"></textarea>
<div class="buttons mrg_4 tLeft">
<input class="button" type="button" value=" B " name="codeB" title="Bold (Ctrl+B)" />
<input class="button" type="button" value=" i " name="codeI" title="Italic (Ctrl+I)" style="font-style: italic;" />
<input class="button" type="button" value=" u " name="codeU" title="Underline (Ctrl+U)" style="text-decoration: underline;" />
<input type="button" value="{L_QUOTE}" name="codeQuote" title="Quote (Ctrl+Q)" style="width: 60px;" />
<input type="button" value="Img" name="codeImg" title="Image (Ctrl+R)" style="width: 40px;" />
<select name="codeColor" class="text_color">
<option style="color: black; background: #fff;" value="black" selected="selected">{L_QR_COLOR_SEL}:</option>
<option style="color: darkred;" value="darkred">{L_COLOR_DARK_RED}</option>
<option style="color: brown;" value="brown"> {L_COLOR_BROWN}</option>
<option style="color: #996600;" value="#996600"> {L_COLOR_ORANGE}</option>
<option style="color: red;" value="red"> {L_COLOR_RED}</option>
<option style="color: #993399;" value="#993399"> {L_COLOR_VIOLET}</option>
<option style="color: green;" value="green"> {L_COLOR_GREEN}</option>
<option style="color: darkgreen;" value="darkgreen"> {L_COLOR_DARK_GREEN}</option>
<option style="color: gray;" value="gray"> {L_COLOR_GRAY}</option>
<option style="color: olive;" value="olive"> {L_COLOR_OLIVE}</option>
<option style="color: blue;" value="blue"> {L_COLOR_BLUE}</option>
<option style="color: darkblue;" value="darkblue"> {L_COLOR_DARK_BLUE}</option>
<option style="color: indigo;" value="indigo"> {L_COLOR_INDIGO}</option>
<option style="color: #006699;" value="#006699"> {L_COLOR_STEEL_BLUE}</option>
</select>
<input type="submit" name="usersubmit" class="lite" value="{L_UPDATE}" onclick="ajax.chat_message(2); return false;" title="{L_CHAT_UPDATE}"/>
<input type="button" name="usersubmit" class="lite" value="X" onclick="$('#message').attr('value', ''); $('#message').focus();" title="{L_MINI_CHAT_DROP}" />
<input type="button" name="usersubmit" class="lite" value="{L_EMOTICONS}"
onclick="window.open('posting.php?mode=smilies', '_phpbbsmilies', 'height=540, resizable=yes, scrollbars=yes ,width=620'); return false;" />
<input type="submit" name="preview" class="lite" value="{L_SUBMIT}" onclick="ajax.chat_message(1); $('#message').attr('value', '');return false;" title="{L_SUBMIT}" />
</div>
<div class="clear"></div>
<div class="spacer_2"></div>
<div id="chat" class="tLeft hidden"></div>
</form>
</div>
<div class="cat_footer"></div>
<script type="text/javascript">
var bbcode = new BBCode("message");
var ctrl = "ctrl";
bbcode.addTag("codeB", "b", null, "B", ctrl);
bbcode.addTag("codeI", "i", null, "I", ctrl);
bbcode.addTag("codeU", "u", null, "U", ctrl);
bbcode.addTag("codeQuote", "quote", null, "Q", ctrl);
bbcode.addTag("codeImg", "img", null, "R", ctrl);
bbcode.addTag("codeColor", function(e) { var v=e.value; e.selectedIndex=0; return "color="+v }, "/color");
</script>
</div>
<div class="spacer" style="height:5px"> </div>
<!-- ENDIF / LOGGED_IN-->
Main.css
В конец
PHP:
/*-- Чат --*/
#chat { overflow: auto; width: 100%; height: 350px; }
.chat-comment {
min-height: 55px;
height: auto;
margin: 3px;
padding: 4px;
border: solid 1px #AED7FF;
background-color: #F9FCFF;
}
textarea.chat_message {
height: 40px; width: 98%;
border-radius: 5px;
-moz-border-radius: 5px;
font-size: 11px;
}
/*-- Чат конец--*/
language/lang_russian/lang_main.php
PHP:
$lang['shoutbox_insert_name'] = 'Вставить имя пользователя';
$lang['shoutbox_err'] = 'Нужно ввести сообщение';
$lang['flood_error'] = 'Флуд запрещен!';
$lang['MINI_CHAT'] = 'Мини чат';
$lang['MINI_CHAT_DROP'] = 'Отчистить поле ввода';
$lang['CHAT_UPDATE'] = 'Обновить чат';
И закинуть картинки.
Скрин как выглядит.