€
$
₴
₽
EN
RU
Ribbon
Catalog
Files
Forums
Services
Page
MPCHAT - CMS хостинг чатов для профессионалов
79 •
Посмотреть все темы
ОБНОВЛЕНИЯ и НОВЫЕ ФУНКЦИИ!
1
2
3
19905
Dimitry
@Dimitry
10.01.2004
[color=red][b]Внимание!!! Некоторые сообщения в этой теме с течением времени могут быть обновлены.[/b][/color]
19905
Dimitry
@Dimitry
29.09.2004
[b]Функция: Меню во фрейм участников.[/b]
Вот кому надо меню справа , можете посмотреть в главном чате как оно работает, вот код:
[code]<div id=news></div>
<div id=userslist>Загрузка...</div>
<div id=reklama></div>
<div align=center>
<a href=# onclick="load(1); return false;">Новости</a><br>
<a href=# onclick="load(2); return false;">Участники</a><br>
<a href=# onclick="load(3); return false;">Реклама</a><br>
</div>
<script>
var width='97%';
var bordercolor='gray';
var namealign='center';
var namecolor='white';
var namebgcolor='336699';
var textalign='left';
var textcolor='black';
var textbgcolor='white';
h_news='название';
t_news='текст';
h_users='<table><tr><td><font color='+namecolor+' face=Arial size=2><b>В чате:</td><td><font color='+namecolor+' face=Arial size=2><b><div id=count>0</div></td></tr></table>';
t_users='<div id=users>Загрузка...</div>';
h_reklama='назв. рекламы';
t_reklama='тут реклама';
function menu(id,name,text)
{
document.getElementById(id).innerHTML='<table align=center width='+width+' cellspacing=1 cellpadding=0 border=1 bordercolor='+bordercolor+'><tr><td width=100% height=19 bgcolor='+namebgcolor+' ><table border=0 width=100% cellspacing=0 cellpadding=0><tr><td width=99%><p align=center><b><font color='+namecolor+' face=Arial size=2><b>'+name+'</b></td><td><a href=# onclick="document.getElementById('+"'"+id+"'"+').innerHTML='+"''"+'; return false;"><img src=../blank/img/del.png border=0></a></td></tr></table></td></tr><tr><td><table border=0 width=100% cellspacing=3 cellpadding=0 bgcolor='+textbgcolor+' ><tr><td> <font color='+textcolor+' face=Arial, Helvetica, sans-serif size=2 >'+text+'</font> </td></tr></table></td></tr> </table><br>';
}
function load(n)
{
if (n==1) menu('news',h_news,t_news);
if (n==2) menu('userslist',h_users ,t_users);
if (n==3) menu('reklama',h_reklama,t_reklama);
}
load(1);
load(2);
load(3);
</script>[/code]
Для установки сотрите старые дивы.
Сначало вы определяете менюшки с ID
[code]<div id=news></div>
<div id=userslist>Загрузка...</div>
<div id=reklama></div>[/code]
Затем ниже ссылки на них с функцией load
[code]<div align=center>
<a href=# onclick="load(1); return false;">Новости</a><br>
<a href=# onclick="load(2); return false;">Участники</a><br>
<a href=# onclick="load(3); return false;">Реклама</a><br>
</div>[/code]
Потом начинается часть Явы скрипт это настройка дизайна менюшек, потом текста(для вывода участников всё настроенно) и пару функций которых трогать ненадо.
Чтобы добавить новое меню, нужно добавть див, например: <div id=menu></div>
потом ссылку: <a href=# onclick="load(4); return false;">Меню</a><br>
затем:
h_menu='название';
t_menu='текст';
ну и наконец в функцию load : if (n==4) menu('menu',h_menu,t_menu);
Для того чтобы менюшки загружались сразу в самом нижу есть функции load() с номером меню. Т.е. если вы хотите чтобы ваше меню загрузилось просто добавьте ниже load(4);
Ну вот и всё, будут проблемы, спрашивайте!
19905
Dimitry
@Dimitry
28.12.2004
[b]Информер - выводит различную информацию о чате и его состоянии используя JS[/b]
Главный плюс этого стрипта, это то что информацию можно выводить не только на страницах чата, но и к примеру на главной странице вашего сайта, т.е. где угодно!
[u]Рекомендуется использовать загрузку информера не более 1 раза на странице[/u]!
Код загрузчика расположите как можно выше на вашей странице, желательно сразу после или до тега <body>.
Пример загрузчика информера:
[quote]<script src=index.php?inc=informer[color=red]&[/color]getmsg=[b]1[/b][color=red]&[/color]inchat=[b]1[/b][color=red]&[/color]lastreg=[b]15[/b][color=red]&[/color]lastregok=[b]1[/b][color=red]&[/color]counter=[b]1[/b][color=red]&[/color]birthday=[b]1[/b]></script>[/quote]
- [color=red]красным[/color] указан разделитель [color=red][b]&[/b][/color] параметров, а [b]жирным[/b] цифровые значения параметров.
Все доступные параметры которые вы можете использовать, указываете только те параметры, что необходимы:
[b]getmsg=[/b] (1-запрос на вывод кол-ва написаных сообщений за день, 0-выключить)
[b]inchat=[/b] (1-запрос на вывод ников в чате, 0-выключить)
[b]counter=[/b] (1-запрос на включение счётчика, 0-выключить)
[b]birthday=[/b] (1-запрос на вывод именинников,0-выключить)
[b]lastreg=[/b] (n-число послед. зарегистр. ников, 1-для вывода кол-ва зарег-ных, 0-выключить)
[b]lastregok=[/b] (1-выводить только подтвержденные последние зарегист. ники, 0-выключить)
[b]lastban=[/b] (n-число последних строк из банлиста, 0-выключить)
[b]lastmsgs=[/b] (n-число последних строк из истории сообщений, 0-выключить)
[b]lastfotos=[/b] (n-число последних фото из галереи, 0-выключить)
[b]randfotos=[/b] (n-число произвольных фото из галереи, 0-выключить)
[b]lasttopics=[/b] (n-число последних тем форума)
[b]forum=[/b] (ID-для вывода последних тем определённого форума, 0-вывод со всех форумов)
[b][color=red]Если вам не нужна какая либо информация, не используйте эти параметры - [u]это ускорит загрузку страницы[/u]![/color][/b]
(чтобы не использовать параметр уберите его из загрузчика, либо установить значение равное 0)
Всё что находится ниже, это код предназначенный для вывода информации из информера.
Вы можете менять код и вид как хотите!!!
[b]Выводит основные показатели статистики[/b]
(требуются параметры информера: inchat=1,counter=1,lastreg=1)
[quote]<script>
html=
"IP адрес: "+i_ip+"<br>"+
"Создано за: "+i_runtime+" сек<br>"+
"Сообщений сегодня: "+i_msg+"<br>"+
"Всего пользователей: "+i_users+"<br>"+
"Сейчас в чате: "+i_inchat+"<br>"+
"Хостов сегодня: "+i_hosts1+"<br>"+
"Хостов всего: "+i_hosts+"<br>"+
"Хитов сегодня: "+i_hits1+"<br>"+
"Хитов всего: "+i_hits+"<br>"+
"";
document.write(html);
</script>[/quote]
К примеру для удобства, так можно вывести число зарегистрированных:
[quote]Всего пользователей: <script>document.write(i_users);</script>[/quote]
[b]Выводит участников в чате[/b] (выводит разсортировав по полу в переменные uw,um,un)
(требуемые параметры информера: inchat=1)
[quote]<script>
uw="";um="";un="";uwc=0;umc=0;unc=0;
for(i=0;i<i_inusers.length;i++)
{
i_nick=i_inusers[i][0]; i_color=i_inusers[i][1]; i_mw=i_inusers[i][2]; i_stat= i_inusers[i][3]; i_room= i_inusers[i][4]; i_userid=i_inusers[i][5];
if(i_mw=='1') {uw+="<tr><td><a href=?inc=info&userid="+i_userid+" target=_blank><font color="+i_color+">"+i_nick+"</font></a>";uwc++;}
else if(i_mw=='0') {um+="<tr><td><a href=?inc=info&userid="+i_userid+" target=_blank><font color="+i_color+">"+i_nick+"</font></a>";umc++;}
else {un+="<tr><td><a href=?inc=info&userid="+i_userid+" target=_blank><font color="+i_color+">"+i_nick+"</font></a>";unc++;}
}
if(!uw) uw="<tr><td>нет таких</td></tr>";
if(!um) um="<tr><td>нет таких</td></tr>";
if(!un) un="<tr><td>нет таких</td></tr>";
html="<table> <tr><td align=center>Девушки "+uwc+"</td></tr> "+uw+"<tr><td align=center>Парни "+umc+"</td></tr>"+um+"<tr><td align=center>Неизвестно "+unc+"</td></tr>"+un+"</table>";
document.write(html);
</script>[/quote]
[b]Выводит последних 10 зарегистрированных[/b] (можно выводить от 1-20)
(требуемые параметры информера: lastreg=10)
[quote]<script>
html="Новички:<table>";
for(i=0;i<i_lastreg.length;i++)
{
i_nick=i_lastreg[i][0]; i_color=i_lastreg[i][1]; i_mw=i_lastreg[i][2]; i_stat= i_lastreg[i][3]; i_userid=i_lastreg[i][4];
html+="<tr><td><a href=?inc=info&userid="+i_userid+" target=_blank><font color="+i_color+">"+i_nick+"</font></a>";
}
html+="</table>";
document.write(html);
</script>[/quote]
[b]Выводит сегодняшних именинников[/b]
(требуемые параметры информера: birthday=1)
[quote]<script>
html="Именинники:<table>";
for(i=0;i<i_birthday.length;i++)
{
i_nick=i_birthday[i][0]; i_color=i_birthday[i][1]; i_mw=i_birthday[i][2]; i_stat= i_birthday[i][3]; i_userid=i_birthday[i][4];
html+="<tr><td><a href=?inc=info&userid="+i_userid+" target=_blank><font color="+i_color+">"+i_nick+"</font></a>";
}
html+="</table>";
document.write(html);
</script>[/quote]
[b]Выводит последние 10 сообщений в чате[/b] (возможно от 1-100)
(требуемые параметры информера: lastmsgs=10)
Используются номера переменных такие же как позиции в функции f() в скриптах чата начиная с 0.
[quote]<script>
[color=blue]for(var i=i_lastmsgs.length-1;i>=0;i--) {[/color]
msg=i_lastmsgs[i];if(!msg[6]) msg[6]="gray";if(!msg[7]) msg[7]="black";
document.write("<font color="+msg[6]+"><b>"+msg[2]+":</b></font> <font color="+msg[7]+">"+msg[4]+"</font> ("+msg[5]+") <br>");
}
</script>[/quote]
- для вывода в другом порядке замените синее на [u]for(var i=0; i<i_lastmsgs.length;i++) {[/u]
[b]Выводит последние 10 строк забаненных[/b] (возможно любое положительное число)
(требуемые параметры информера: lastban=10)
[quote]<script>
html="<table><tr><td>Где<td>Выполнил<td>Заблокирован<td>Причина<td>Время<td>Осталось</tr>";
if(!i_lastban.length) html+="<tr><td colspan=6 align=center>Ничего не найдено!</td></tr>";
[color=blue]for(var i=i_lastban.length-1;i>=0;i--) {[/color]
ban=i_lastban[i];
html+="<tr><td>"+ban[0]+"<td><a href=?inc=info&userid="+ban[6]+" target=_blank>"+ban[1]+"</a><td><a href=?inc=info&userid="+ban[7]+" target=_blank>"+ban[2]+"</a><td>"+ban[3]+"<td>"+ban[4]+"<td>"+ban[5]+" мин</tr>";
}
html+="</table>";
document.write(html);
</script>[/quote]
- для вывода в другом порядке замените синее на [u]for(var i=0; i<i_lastban.length;i++) {[/u]
[b]Выводит 10 последних фотографий из галереи[/b] (возможное число 1-20)
(требуемые параметры информера: lastfotos=10)
[quote]<script>
html="";
if(!i_lastfotos.length) html+="Нет фотографий!";
[color=blue]for(var i=i_lastfotos.length-1;i>=0;i--) {[/color]
foto=i_lastfotos[i];
html+="<a href=?inc=gallery&foto="+foto[0]+" target=_blank title='Дата: "+foto[1]+"\nГалерея: "+foto[2]+"\nПодпись: "+foto[3]+"'><img src=gallery/trumb/"+foto[0]+".jpg border=0></a> ";
}
document.write(html);
</script>[/quote]
- для вывода в другом порядке замените синее на [u]for(var i=0; i<i_lastfotos.length;i++) {[/u]
[b]Выводит 10 произвольных фотографий из галереи[/b] (возможное число 1-20)
(требуемые параметры информера: randfotos=10)
[quote]<script>
html="";
if(!i_randfotos.length) html+="Нет фотографий!";
for(var i=0; i<i_randfotos.length;i++) {
foto=i_randfotos[i];
html+="<a href=?inc=gallery&foto="+foto[0]+" target=_blank title='Дата: "+foto[1]+"\nГалерея: "+foto[2]+"\nПодпись: "+foto[3]+"'><img src=gallery/trumb/"+foto[0]+".jpg border=0></a> ";
}
document.write(html);
</script>[/quote]
- произвольные фотографии в целях экономии [u]выбираются из последних 100[/u], а не из всей галлереи
[b]Выводит 10 последних активных тем форума[/b] (возможен вывод до 100 последних тем)
(требуемые параметры информера: lasttopics=10, forum=[color=red]ID[/color])
Вы можете вывести последние темы одного из разделов форума указав forum=[color=red]ID[/color].
Укажите вместо forum=0 - чтобы выводить последние темы со всего форума.
[quote]<script>
var html="<table width=90%><tr><td colspan=2 class=title>Последние активные темы на форуме</td><td width=100 class=title>Автор</td><td width=60 class=title align=center>Ответов</td><td width=150 class=title>Обновления</td></tr>";
for(var i=0;i<i_lasttopic.length;i++) html+="<tr><td>"+(i+1)+".</td><td><a href=?inc=forum&forum="+i_lasttopic[i][11]+"&topic="+i_lasttopic[i][0]+">"+i_lasttopic[i][1]+"</a><br>"+i_lasttopic[i][3]+"</td><td><a href=?inc=info&userid="+i_lasttopic[i][12]+" target=_blank>"+i_lasttopic[i][2]+"</a></td><td align=center>"+i_lasttopic[i][6]+"</td><td><a href=?inc=info&userid="+i_lasttopic[i][10]+" target=_blank>"+i_lasttopic[i][4]+"</a><br>"+i_lasttopic[i][5]+"</td></tr>";
html+="</table>";
document.write(html);
</script>[/quote]
[b]Загрузка скриптов в отдельный фаил[/b]
Вы можете создать любой HTML фаил и загрузив в него информер добавить любой из скриптов вывода, например список последних зарегистрированных или список кто в чате. Учтите что если вы создали фаил на другом домене, то для загрузки информера нужно указвать полный путь к нему, например: [quote]<script src=http://mpchat.com/chat/index.php?inc=informer></script>[/quote]
19905
Dimitry
@Dimitry
23.08.2005
[b]Скриптик идеальной установки тегов в чате[/b]
В фильтрацию необходимо добавить ([color=red]удалите пробелы из BB кодов[/color])
#[b ]^<b>^
#[u ]^<u>^
#[i ]^<i>^
потом, это вставляется в нижний фрейм:
[code]<script>
function mptags(t1,t2) {
var obj=document.getElementsByName("text0")[0]; obj.focus();
var pos1 = obj.selectionStart, pos2 = obj.selectionEnd;
if(typeof(pos1)=="number") {
obj.value = obj.value.substring(0, pos1) + t1 + obj.value.substring(pos1, pos2) + t2 + obj.value.substring(pos2, obj.value.length);
var pos3=pos2+t1.length+t2.length; obj.setSelectionRange(pos3,pos3);
}
else if(document.selection) {
var range=document.selection.createRange();
range.text=t1+range.text+t2; range.select();
}
else obj.value += t1 + t2;
obj.focus();
}
</script>[/code]
а это кнопки для вставки тегов в поле ввода сообщения(ес-но, можно изменять по своему вкусу). Вставлять их можно куда угодно. Я вставил в фрейм участников:
[code]<a href=javascript:mptags('[b]','[/b]'); target=chat>[b]</a>
<a href=javascript:mptags('[u]','[/u]'); target=chat>[u]</a>
<a href=javascript:mptags('[i]','[/i]'); target=chat>[i]</a>[/code]
или
[code]<input type=button onclick="mptags('[b]','[/b]');" value=[b]>
<input type=button onclick="mptags('[u]','[/u]');" value=[u]>
<input type=button onclick="mptags('[i]','[/i]');" value=[i]>[/code]
Вопрос: Нафига это надо, ведь есть же встроенная функция SendTo() ?
Ответ: при использовании вышеприведенной функции, теги вставляются в ту часть сообщения, куда вы тыкнули мышкой, а не в конец. Так же, можно выделить часть сообщения и, нажатием одной кнопки, эта часть обрамится тегами.
Работает везде.
19905
Dimitry
@Dimitry
17.12.2005
[b]Полезные функции[/b]
[b]Получение переменных методом GET(через URL) в HTML[/b]
К примеру: index.html?chat=mychat&nick=mynick&id=a6d7e8c8a8d7f66d78s8a7
[quote]<script>
//GET viriables
var query=unescape(location.search.substr(1));
var badstr=new Array('<','>','"',"'",'`','%','#','\\');
for(i=0;i<badstr.length;i++) query=query.split(badstr[i]).join();
var get=new Array();
var a=query.split("&");
for(var i=0; i<a.length;i++) {var j=a[i].split("="); get[j[0]]=j[1];}
var chat=get['chat'];
var nick=get['nick'];
var id=get['id'];
</script>[/quote]
[b]Cookie через Javascript - запись и чтение[/b]
[quote]/* Функции чтения Cookie */
function getcookie(key) {
str=document.cookie;len=str.length; if(len==0) return "";
start=str.indexOf(key + "="); if(start==-1) return "";
start=start+key.length+1;
end=str.indexOf(";",start); if(end==-1) end=len;
return unescape(str.substring(start,end));
}
/* Функции записи Cookie */
function setcookie(key,str,min) {
if(!key) return;
if(!min) min=60*24*365;
var date = new Date();
date.setTime(date.getTime()+(min*60*1000));
document.cookie = key+"="+str+"; expires="+date.toGMTString()+"; path=/";
}[/quote]
[b]HTML include - в хтмл фаил вставляет другой хтмл или пхп фаил.[/b]
Работает как include() в пхп, но если данные функции отключенны у юзера работать не будет 😒
[code]<script>
function include(id, url) {
var element = document.getElementById(id);
if (!element) {alert("Bad ID-element!");return;}
var req = false;
// For Safari, Firefox, and other non-MS browsers
if (window.XMLHttpRequest) {try {req = new XMLHttpRequest();} catch (e) {req = false;}}
// For Internet Explorer on Windows
else if (window.ActiveXObject) {try {req = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try {req = new ActiveXObject("Microsoft.XMLHTTP");} catch (e) { req = false;}}}
// If active supported
if (req) {req.open('GET', url, false); req.send(null);element.innerHTML = req.responseText;}
else element.innerHTML ="Include not supported!";
}
</script>
<span id="htmlsite">
<script>include("htmlsite", "file.html");</script>
</span>[/code]
19905
Dimitry
@Dimitry
28.08.2006
[b]Форум для чатов[/b]
http://mpchat.com/chat/?inc=forum
На данный момент проходит разработка форума и для лучшего обозрения решил сделать сводку инфы о форуме.
Файлы и директории:
style.css - используется форумом для настройки стиля - без особых стилей форум будет отображаться неверно!
forum.inc - Шаблон форума, всё что выводится настраивается именно там через JS .. до любых мелочей (полная настройка)
forum/
forum/pid.sys - последний номер сообщения
forum/tid.sys - посл. номер темы
forum/forum.sys - список форумов
forum/online.sys - список ОНЛАЙН
forum/FID/forum.sys - список тем форума FID
forum/FID/TID.sys - список сообщений темы TID форума FID (хоть и .dat редактировать вручную несоветуется - ещё не решено)
forum/avator/ - аваторы участников
FID - номер форума, TID - номер темы
Функции:
В главной админке - добавление и удаление форумов (номер, название, описание, модераторы) также необходимо сразу удалить или добавить форум в нужное место в шаблоне!
wr(forums[1]);
wr(forums[2]);
...
Модераторские возможности:
- удаление тем в форуме
- удаление сообщений в темах
- редактирование всех сообщений/тем форума (оставляется сообщение отредактированно)
- закрытие и открытие тем форума
- закрепление(выделение) тем форума
- перенос тем
- настройка доступов к форумам
Обычные функции:
- возможны теги, смайлы и цитирование
- редактирование своей темы или сообщения
Отображения:
- отображение иконок у форумов и тем (новые, закрытые, закреплённые)
- аваторы
- участники онлаин и их расположение (форум, тема)
- общяя статистика кол-во сообщений и тем
- в форумах отображаются модераторы и кол. тем, сообщений, обновления (автор и дата)
- в темах кол. сообщений, автор, обновления
- в сообщениях время, номер, ссылка на пост, автор (кол. сообщений, ранг, аватор, ссылки), меню модерирования
Общая инфа о движке:
- обработчик forum.php 250 строк (8кб) - время обработки 0.006-0.01 сек
- шаблон forum.inc 200 строк (10кб) - время вывода от 0.01 (зависит от модема ( 😀 )
- форум не использует картинок, несмотря на это выглядит довольно таки хорошо.
[b]Настройки[/b]
В шаблоне форума для настроек тега [b][img][/b] вы можете найти следующие параметры:
[quote]/* img_max - макс. картинок к отображению в одном сообщении вместо ссылок */
var message_img_max=10; /* сообщение */
var signature_img_max=0; /* подпись */[/quote]
19905
Dimitry
@Dimitry
15.11.2006
[b]Функция меняет стиль всех документов и фреймов - мгновенно.[/b]
Если вы хотите менять общий стиль внутри всего чата и в скриптах чата уже есть функция [b]setstyle()[/b]:
(например установите этот код в фрейм участников)
[quote]<select onchange="mystyle=this.value; setstyle(mystyle);">
<option value='style.css'>-=стандарт=-</option>
<option value='style1.css'>Стиль 1</option>
<option value='style2.css'>Стиль 2</option>
</select>[/quote]
Если вы хотите менять стиль не внутри чата, а на других страницах:
[quote]function setstyle(cssfile) {
if(!cssfile) return;
var obj=document.getElementsByTagName("link"); if(obj && obj[0]) obj[0].href=cssfile;
}
<select onchange="setstyle(this.value)">
<option value='style.css'>-=стандарт=-</option>
<option value='style1.css'>Стиль 1</option>
<option value='style2.css'>Стиль 2</option>
</select>[/quote]
Нужно создавать стили с различными расцветками и фонами, например как в данном примере это файлы: style1.css и style2.css
19905
Dimitry
@Dimitry
11.03.2007
[b]Галерея - что-то новое и невероятное 😀 (новый релиз)[/b]
[b]Описание ([color=red]просьба прочитать всё[/color])[/b]
[b]Параметры[/b]
- разрешение загрузки фотографий и указание макс. числа (у каждого пользователя своя галерея под названием его ника)
- установка максимальных размеров для фото и мини-фото (автоизменение)
- установка числа к отображению минифоток на одной странице
- назначение модераторов
- указание автоподписи фото (например в фото внизу справа будет пропечатываться адрес чата) - [u]работает также и на фото в анкетах[/u]
[b]Функции в главной админке[/b]
- галереи создаются и автоматически при добавлении фото
- добавление фото с подписью и указанием категории (галереи)
- редактирование фото, подписи и изменение галереи для неё
- удаление фото
- возможность переименовать и удалить галерею и всего содержимого
- обзор галерей с кол-вом фотографий
- обзор фотографий в галереи (мини-изображение и информация о фото)
- удобное модерирование (всегда находитесь в активной галерее)
[b]Сама галерея[/b]
+ полная настройка вида через шаблон gallery.inc
- отображение последних фоток минифотками (отображение разделов)
- при просмотре фото - отображение пред. и след. минифотки, отображение подписи, оценки и коментариев со всеми наворотами
- добавление коментариев и оценки (оценить может каждый ник 1 раз при добавлении коментария)
- модерирование галереи при авторизации (удаление фото и коментариев по отдельности)
- загрузка пользователями фото(если включенно) с подписью , просмотр своей галереи и удаление своих фото каждым пользователем
[b]Режимы загрузки и их различия (в параметрах)[/b]
[i]1. Загрузка только админом[/i]
- отображаются все галереи
- отсутствие формы загрузки пользователями
[i]2. Разрешенна загрузка пользователями[/i]
- список ВСЕХ галерей неотображается
- отображается АЛФАВИТ (по названиям галерей)
- отображается форма загрузки пользователями
- появляется модераторские возможности для пользователей к своим фотографиям
[b]Ресурсоёмкость[/b]
Теоретически галерея не образует особой нагрузки и должна выдержать 10 000 фотографий. НО рекомендуется ограничиться 1000 (чтобы было всё стабильно) и не засорять её. [u]1000 фотографий 640х480 занимают примерно 50мб.[/u]
[b]Установка[/b] - [u]Если вы уже установили новую галерею [/u] - просто востановите стандартный шаблон gallery.inc чтобы небыло ошибок.
Новая установка:
1. Удалите вашу старую галерею gallery/ через webftp
2. Зайдите в главной админке в шаблон галереи и востановите стандартный фаил gallery.inc
3. В модерировании галереи нажмите установить.
4. Настройте параметры для галереи
[b]Советы[/b]
1. Если у вас мало места делайте размеры фотографий меньше, запретите загрузку пользователями или просто оплатите чат для получения 100mb.
2. Если вы используете загрузку фотографий пользователями - можно запретить загрузку фото в анкету(убрав форму из шаблона) удалить эти фотографии и в анкете поставить ссылку на галереб пользователя (<a href=?inc=gallery&gallery=%nick%>Фотографии пользователя</a>)
[b]Отображение числа фотографий в галереи у пользователей[/b]
Для отображения достаточно отредактировать шаблон анкеты info.inc
1. Составим вывод информации
Между <script> </script> добавим
[quote]gallery='%gallery%';
if(gallery>0) gallery='<a href=?inc=gallery&gallery=%nick% target=gallery>Моя галерея ('+gallery+')</a>'; else gallery="";[/quote]
2. Отредактируем строку с обычной фотогр. , сообщение о фотках в галереии будет ниже (foto+"<br>"+gallery)
[quote]<tr><td>Фотографии</td><td><script>document.write(foto+"<br>"+gallery); </script></td></tr>[/quote]
[b]!!! Примечание !!![/b]
Если загрузка пользователями выключенна, то число сразу приравнивается 0.
Следовательно строка: Моя галерея (число) - показанна не будет! (показывается только если есть фото)
Обновление счётчика числа фотографий происходит после загрузки пользователем или удаления его фотографии.
(Но не после удаления в админке админом, удаляйте под модератором в самой галерее!)
[color=red]Чтобы счётчик у пользователя обновился он должен провести какие либо действия в галереи![/color]
Всё - теперь можно приступить к заполнению галереи)
19905
Dimitry
@Dimitry
27.05.2007
[b]Загрузка иконок пользователями и использование в качестве граф. ников[/b]
Чтобы [u]использовать загрузку граф. ников через иконки[/u] в параметрах для иконок выберите подходящий размер, а в начале функции F() в скриптах нужно поставить:
if(cmd==6) gna[nick]=icon;
А до этой функции:
var icon_on=0;
[quote][color=red]var icon_on=0;[/color]
var pu = new Array;
function f(room,cmd,nick,tonick,text,time,colornick,color,var9,var10,var11,var12) {
if(ign_ok(nick) && cmd!=6 && cmd!=7) return 0;
/* Присвоение переменных */
if(cmd==5) {kill=var9; timeout=var10;}
else if(cmd==6 || cmd==7) {
inchat=text; mw=var9; st=var10; icon=var11; status=var12;
if(colornick=='') colornick=fontnick[0];
if(color=='') color=fonttext[0];
/* скрыть ник невидимки */
if(invisible[nick]) return;
}
else {
sizenick=var9;size=var10;facenick=var11;face=var12;
if(colornick=='') colornick=fontnick[0];
if(sizenick=='') sizenick=fontnick[1];
if(facenick=='') facenick=fontnick[2];
if(color=='') color=fonttext[0];
if(size=='') size=fonttext[1];
if(face=='') face=fonttext[2];
}
[color=red]if(cmd==6) gna[nick]=icon;[/color]
...[/quote]
[b]Отключение граф. ников для пользователей[/b]
[quote]<input type=checkbox onclick="if(this.checked) parent.use_gn=1; else parent.use_gn=0;" checked> - граф. ники[/quote]
19905
Dimitry
@Dimitry
08.07.2007
[b]Функция скрытия/раскрытия отображения любого ХТМЛ[/b]
Для скрытия кода пользуемся стилями display:none; (скрыть) и display:block; (раскрыть)
[quote]<div id=[color=red]hide1[/color] style="display:none;">
Тут любой ХТМЛ код который поумолчанию скрытый
</div>
<a href=# onclick="obj=document.getElementById('[color=red]hide1[/color]'); if(obj.style.display=='none') obj.style.display='block'; else obj.style.display='none'; return false;">показать/скрыть</a>[/quote]
hide1 - это ID элемента который должен быть скрыт!
19905
Dimitry
@Dimitry
03.08.2007
[b]Никлист - разделение по полам и статусам[/b] ([color=red]обновлено для 4й версии[/color])
Сейчас я раскажу подробно как сортировать никлист по полу и по статусам.
[b]Пояснение:[/b]
if(mw=='0') - это мальчики
if(mw=='1') - это девочки
if(mw=='') - это пол невыбран
if(st=='1') - это статус 1 (обычно админ)
if(st=='2') - это статус 2 (обычно модератор)
[b]Вступление:[/b]
Если Вы используете скрипты чата от 23.07.2013, то Вам можно активировать разделение по полам в редактировании скриптов в самом верху:
var useseparate=[b]1[/b];
[color=green]А теперь для старых скриптов и для более тонкой настройки![/color]
[b][1]. [/b][b]Обновление:[/b] Главная админка -> Скрипты в чате -> находим /* [Функции формирования никлиста] */
Раскоментируем строки убрав [color=red]//[/color]
[quote]/* Функции добавления и удаления пользователей в массиве никлиста */
var uc = 0;
var us = new Array();
var ucc=new Array();
var index=0;
function separate(obj,c) {
if(ucc[obj+"c"]==null) ucc[obj+"c"]=c; else ucc[obj+"c"]+=c;
document.getElementById(obj+"c").innerHTML=ucc[obj+"c"];
if(c==1) return document.getElementById(obj).rowIndex+1;
}
function seprules(type,st,mw) {
if(!usesep) return;
[color=red]//[/color]if(mw=='0') index=separate("man",type);
[color=red]//[/color]else if(mw=='1') index=separate("woman",type);
[color=red]//[/color]else if(mw=='') index=separate("noman",type);
}[/quote]
[b][2].[/b][b]Установка[/b]
[quote]userlist="<table id=ul width=100%></table>";[/quote]
[b]меняем на [/b] (пример для разделения по полу)
[quote]userlist="<table id=ul width=100%>"+
"<tr id=[color=red]woman[/color]><td colspan=5>Деффки</td><td id=[color=red]womanc[/color]>0</td></tr>"+
"<tr id=[color=red]man[/color]><td colspan=5>Пацаны</td><td id=[color=red]manc[/color]>0</td></tr>"+
"<tr id=[color=red]noman[/color]><td colspan=5>Нечто</td><td id=[color=red]nomanc[/color]>0</td></tr>"+
"</table>";[/quote]
У вас наверное возник вопрос, а что такое [color=red]красное[/color] - это [color=red]ID[/color](может быть любое слово кроме users и ul), которое присваевается полю разделителя в таблице пользователей. [b]Важно [/b]чтобы ID сортировки к примеру [color=red]man[/color] имело счётчик [color=red]manc[/color].(т.е. всегда добавляется "c") И эти поля в функции [color=blue]seprules[/color] должны соответствовать ID в табличке! Настройте условия в этой финкции!!!
[b][3]. [/b] [b]Дополнительно:[/b] Как использовать разделение без счётчиков?
Также как описанно выше, но из функции separate() нужно убрать строку:
[quote]document.getElementById(obj+"c").innerHTML=ucc[obj+"c"];[/quote]
И табличка в функции loadframes() будет выглядит так:
[quote]userlist="<table id=ul width=100%>"+
"<tr id=[color=red]woman[/color]><td colspan=6>Деффки</td></tr>"+
"<tr id=[color=red]man[/color]><td colspan=6>Пацаны</td></tr>"+
"<tr id=[color=red]noman[/color]><td colspan=6>Нечто</td></tr>"+
"</table>";[/quote]
[b][4]. [/b] [b]Дополнительно: [/b]Как использовать разделение по статусам или вместе?
Со статусами нужно прописать примерно так:
[quote]if(st=='1') index=separate("adm",type);
else if(st=='2') index=separate("mod",type);
else index=separate("other",type);[/quote]
Последняя строка без if() чтобы все остальные статусы попали в поле other.
Совместное разделение:
[quote]if(st=='1') index=separate("adm",type);
else if(st=='2') index=separate("mod",type);
else if(mw=='0') index=separate("man",type);
else if(mw=='1') index=separate("woman",type);
else if(mw=='') index=separate("noman",type);[/quote]
Также незабудьте настроить табличку около функции loadframes(), так чтобы все поля используемые в [color=blue]separate[/color] условиях там были!
Отредактировано Dimitry -
04.08.2007
19905
Dimitry
@Dimitry
22.08.2007
[b]Модификация TOP-100[/b]
Редактирование рейтинга посетителей остаётся пока невозможным, но появились [u]новые возможности[/u]!
1. Возможность вывода рейтинга по рефералам
2. Возможность выбора отображения некоторых параметров, в определённой последовательности.
[b]Изменённые и нововведённые переменные[/b]
http://mpchat.com/chat/?inc=top100&[color=orange]all=100[/color]&[color=green]only=12345678[/color]&[color=red]sort=ref[/color]
Оранжевое: all и означает максимальное число пользователей выводимое в рейтинге (all=1 - все пользователи)
Зелёное: новая переменная only(только) означает какие параметры и в какой последовательности выводить (1 указывать необязательно, автоматически первое, это ники)
Красное: sort и означает название поля по которому будет сортировка.
[u]Значения по умолчанию[/u] для ссылки ?inc=top100
[i]sort=onlinetime all=100 only=12345[/i]
[b]Номера и имена полей[/b]
1 - [b]nick[/b] - ники, всегда в первой колонке
2 - [b]onlinetime[/b]- время онлайн
3 - [b]msg[/b] - число сообщений
4 - [b]activity[/b] - активность (высчитывается из 2 и 3)
5 - [b]views[/b] - число просмотров анкеты
6 - [b]ref[/b] - число приведённых пользователей (реф)
7 - [b]gamewins[/b] - число отгаданных вопросов в викторине
8 - [b]points[/b] - число набранных очков, за активность
[b]Примеры ссылок[/b]
Лучшие 10 рефералов
?inc=top100&all=10&only=6
20 самых активных пользователя (с доп. выводом времени и числа сообщений)
?inc=top100&all=20&only=423&sort=activity
20 умнейших в викторине
?inc=top100&all=20&only=7
50 самых богатых по очкам
?inc=top100&all=50&only=8
19905
Dimitry
@Dimitry
23.08.2007
[b]Звуковой сигнал при получении сообщения[/b] (обновлено 23.09.2016)
Разместите этот код в шаблоне чат внутри [b]chat.inc[/b] и загрузите звук в sound1.mp3 в корень чата, или укажите другой путь к файлу.
[quote]<script>function sound(num) {var obj=document.getElementById("sound"+num); if(obj) obj.play();}</script>
<audio id=[color=red]sound[b]1[/b][/color] src='[color=blue]sound1.mp3[/color]' style='display:none;'></audio>[/quote]
Тут первая строка это сам скрипт включающий звук, втокая сам проигрыватель с загруженным звуком.
Вы можете использовать несколько звуков установив несколько таких проигрывателей с id=sound[b]1[/b], sound[b]2[/b] и т.д.
Включение звуков выполняется функций [b]sound([color=red]1[/color]);[/b] где номер это номер идентификатора звука.
Теперь осталось только пройти в скрипты и добавить строчку в функцию f() куданибуть до [color=blue]if(cmd==0) { [/color]
[quote]//включение звука для всех сообщений обращённых вам
if(tonick==mynick && loaded==1) sound([color=red]1[/color]);[/quote]
или
[quote]//включение звука для всех приватных сообщений обращённых к вам
if(tonick==mynick && loaded==1 && (cmd==1 || cmd==2)) sound([color=red]1[/color]);[/quote]
19905
Dimitry
@Dimitry
27.08.2007
[b]Комнаты(и их использование) - редактирование через главную админку[/b]
Теперь настройка комнат проходит в главной админке в удобной форме!
Можно установить доступ по статусам а также разрешить только определённым модераторам модерирование в опред. комнатах!
[b]Установка - если этого нет в фрейме участников[/b]
[u]Для установки выбора комнат при входе в чат[/u], код генерируется в главной админке автоматически!
[u]Чтобы добавить форму выбора комнат в чате[/u], добавим например в фрейм участников такой скрипт:
[quote]<script>
/* Форма для перехода по комнатам (видна если есть комнаты) */
if(parent.rooms.length>1) {
document.write("<center><select class=ok name=setroom onchange=\"parent.setmyroom(this.value);\">");
for(var i=0;i<parent.rooms.length;i++) {if(i==parent.myroom) sel="selected"; else sel="";
document.write("<option value="+i+" "+sel+">"+parent.rooms[i][0]+" (0)");
}
document.write("</select></center><br>");
}
</script>[/quote]
- также в скриптах чата должна быть функция setmyroom!
19905
Dimitry
@Dimitry
31.10.2007
[b]Переход автостатуса в онлайн - при написании сообщения[/b]
Если включен автостатус и вы напишете в чате, можно опятя автоматически поставить статус онлайн, но с задержкой в пару секунд!
Чтобы установить, найдите в Скриптах чата в разделе функции нижнего фрейма, функцию msg_send!
В конец этой функции просто добавьте:
[quote]if(away[laststatus]) window.setTimeout("setstatus([color=red]0[/color]);",2000);[/quote]
- красным номер статуса онлайн, обычно 0
19905
Dimitry
@Dimitry
29.12.2007
[b]Виртуальный магазин [/b]
(только для платных чатов)
Виртуальный магазин позволяет покупать и продавать вещи в виде картинок используя в виде валюты
заработанные пункты. Пункты назначаются за активное участие в чате, написанные сообщения,
проведённое время в чате и другое. Купленные вещи можно также дарить используя коментарий от своего имени.
Магазин ещё не протестирован на то какую нагрузку он вызывает поэтому [u]число покупаемых предметов ограниченно[/u] до [b]100[/b] для каждого пользователя. Админам и модераторам рекомендутся ставить высокие цены на вещи, чтобы их было купить труднее и интереснее - без захламления! Вирт. магазин вместе с вашей фантазией - сделают чат невероятно интересным. Если у вас есть вопросы и предложения, задавайте их на форуме.
Установка ссылки на магазин внутри чата
[quote]<a href=# onclick="parent.wo('index.php?inc=shop&'+parent.yourkey,'Магазин','700','500','yes');return false">Магазин</a>[/quote]
Установка преобретённых вещей в анкету
[quote]<div id=shoptable align=center>У вас нет вещей из магазина!</div>
<script>
var obj=document.getElementById('shoptable');
var td=[b]2[/b]; var max=[b]10[/b]; var reverse=[b]1[/b];
function printitems(page) {
var is=0; if(items.length==0) return;
var wr="<table align=center>";
for(var i=0;i<items.length;i++) {
if(page*max<=i && (page+1)*max>i) {
if(is==0) wr+="<tr>";
var k=i; if(reverse) k=items.length-1-i;
wr+="<td align=center><img src=data/shop/"+items[k][0]+".jpg title='"+items[k][1]+"\n"+items[k][2]+" "+items[k][3]+"\n"+items[k][4]+"'></td>";
is++; if(is==td) is=0;
}}
wr+='</table>';
if(page>0) wr+="<a href=# onclick='printitems("+(page-1)+"); return false;'>Назад</a> ";
if(i>(page+1)*max) wr+="<a href=# onclick='printitems("+(page+1)+"); return false;'>Дальше</a>";
obj.innerHTML=wr;
}
printitems(0);
</script>[/quote]
- где [b]td[/b] это число вещей в ряду, [b]max[/b] это число вещей к отображению на одной странице, а [b]reverse[/b] (0-выкл, 1-вкл) отображение сначало новых вещей!
19905
Dimitry
@Dimitry
28.08.2008
[b]Кланы[/b] - [i]вот оно, долгожданное[/i] ([u]только для платных чатов[/u])
[b]Функции администрации[/b]
- в параметрах можно установить стоимость создания клана в пунктах
- и минимальную стоимость для вступления в один из кланов
- в модерации новая ссылка на вирт. кланы
- через эту ссылку можно выбрать любого главу клана, удалить его клан или просто отредактировать
[b]Функции пользователей[/b]
- набрав допущенное число пунктов каждый пользователь может основать свой клан
- он может указать своё число пунктов для вступления в клан
- он может редактировать название, описание, а также загружать иконку (до 20х20) и логотип (до 160х160) клана
- при загрузке изображений они автоматически уменьшаются, нет необходимости подбирать размеры
- каждый пользователь который не состоит в клане может вступить в любой клан заплатив взнос, а также покинуть его в любое время бесплатно
[b]Отображение[/b]
- на главной странице отображается список/рейтинг всех кланов отсортированных по количиству народа в клане
- каждому клану при вступлении нового соклановца приписывается число пунктов взноса
- возможно сортировать каны по любым параметрам, название, дате, по админам, по взносам, пунктам, и людям
- на странице списка кланов доступны такие фенкции как удалить свой клан или вступить/покинуть другой клан
- при нажатии на клан отображается вся информация о клане включая лого, описание и ники всех соклановцев
- в АНКЕТЕ пользователя возможно отображать всю информацию о клане, кроме описания и ников соклановцев
PS. на данный момент никлист добавлению новых компанентов не поддаётся, т.е. установить иконку клана в никлист нельзя!
[b]Установка и настройка кланов[/b]
1. Настроить в главной админке параметры пунктов для создания и вступления в кланы
2. Установите ссылку на кланы, например в нижний фрейм
[quote]<a href=# onclick="parent.wo('index.php?inc=clan&'+parent.yourkey,'Кланы','700','500','yes');return false" target=setting title=Кланы>Кланы</a>[/quote]
3. Установите отображение клана в анкете участника. Для этого необходимо в "Шаблоны -> Анкета" добавить скрипт вывода информации о клане.
[quote]<tr><td>Клан:</td><td>
<script>
var wr='';
if(!clans.length) wr='нет';
for(var i=0;i<clans.length;i++) {clan=clans[i];
if(clan[7]) wr+='<img src=data/clan/'+clan[0]+'.gif> ';
wr+='<a href=?inc=clan&clan='+clan[0]+' target=_blank>'+clan[1]+' ('+clan[6]+')</a> ';
if(clan[3]=='%nick%') wr+='(админ)';
wr+='<br>';
[color=red]break;[/color]
}
document.write(wr);
</script>
</td></tr>[/quote]
- тут идёт определение являтся ли он админом, потом есть ли иконка у клана, потом выводит это всё вместе с названием, или пишет нет в случае если участник не состоит в клане! Если хотите [u]выводить более одного клана[/u], уберите [color=red]красное[/color]!
[b]Дополнительно: описание параметров выводимых в анкету[/b] - ([u]для профи[/u])
В анкету выводится массив clan, если участник не в клане, то он пустой.
Элементами массива: например clan[0] - это ID-номер клана.
0 - ID-номер клана
1 - название клана
2 - дата создания
3 - админ клана
4 - взнос клана
5 - пункты клана
6 - число соклановцев
7 - означает что есть иконка (clan/ID.gif)
8 - означает что есть лого (clan/ID.jpg)
При этом если проверить присутствие лого, то при желании можно вывести и его
if(clan[8]) document.write("<img src=data/clan/"+clan[0]+".jpg>");
На этом всё! Наслаждайтесь новой функцией сервиса - Кланы.
Если у вас есть обосновынные улучшения по кланам, скрипт может быть усовершенствован!
[img]http://imgs.su/users/1/1219880361.jpg[/img]
19905
Dimitry
@Dimitry
08.12.2008
[b]Движок новостей на JS с выводом в фрейм сообщений[/b]
Данный движок информирует пользователя о новых новостях с помощью alert() и выводит только новые новости!
В скриптах чата находим данный участок:
[quote]/* Дозагрузка - выполняется после загрузки фрейма сообщений */
function onloaded() {
window.setTimeout('scrolled=1;',5000);
if(interval) window.clearTimeout(interval);
[color=red]if(topic) wr(topic);[/color][/quote]
вместо красной строчки вставим движок новостей )
[quote]wr("<"+"script src=news.js?"+Math.random()+"></"+"script>");[/quote]
А это сам фаил движка с новостями news.js
[quote]/* Не храните много строк с новостями (не более 10), удаляйте строки со старыми новостями, номер новости должен всегда увеличиваться */
var news=new Array();
news[3]="01.12.06 первая новость<br>";
news[4]="02.12.06 вторая новость<br>";
var lastnew=getcookie("lastnew");
var c=0;
for(var i in news) if(i>lastnew) {wr(news[i]);lastnew=i;c++;}
setcookie('lastnew',lastnew,10000000000);
if(c>0) alert('Для вас есть '+c+' новых новости!');[/quote]
PS. в скриптах должны быть функции getcookie и setcookie (просто не у всех есть)
Также можно выводить эти новости для определённого статуса или ника, добавляем красное:
[quote]только для одного ника
for(var i in news) if(i>lastnew [color=red]&& mynick=='НИК'[/color]) {wr(news[i]);lastnew=i;c++;}
или status==1 - только для админов
for(var i in news) if(i>lastnew [color=red]&& status==1[/color]) {wr(news[i]);lastnew=i;c++;}[/quote]
19905
Dimitry
@Dimitry
16.05.2011
[b][color=red]ПЕРЕХОД на безфреймовую версию ЧАСТЬ 1[/color][/b] (часть 2 ниже)
[b]Новая безфреймовая 4я версия мпчата[/b]
(при проблемах пишем в эту тему https://forum.vmeste.eu/viewtopic.php?id=14524)
Давно хотел избавиться от фреймов в мпчате и вот добрался. На данный момент старая версия остаётся полностью рабочей и
если вы не удалите старые файлы, то даже после перехода вы всё ещё сможете переключиться на неё! (не рекомендуется)
[b]Преимущества[/b]
- отсутствие рекламного фрейма в бесплатных чатах (вместо него появится спойлер по центру который можно сразу закрыть)
- никаких фреймов кроме ифрейма сообщений и викторины, положение полей настраивается стилями
- весь дизайн внутри чата в одном шаблоне
- дизайн совместим с новым DOCTYPE за счёт которого во всех бразуерах всё отображается одинаково
- возможно удобное использование и добавление любых блоков (спойлеров) в любое место окна, также с наложением слоями
- удобная интеграция вебкамер (для платных чатов)
- все обновления будут проводиться только для новой версии
[b]Переход на новую версию[/b]
[b]1.[/b] Включить новую версию можно в параметрах в общих настройках.
Стандартные файлы необходимые для работы новой версии, шаблон чата ([color=blue]chat.inc[/color]) и новые Скрипты чата ([color=blue]jscripts.dat[/color]) уже созданы автоматически. Заходим в чат, всё работает!
[b]Переход со старой версии[/b]
[b]2.[/b] В указанные места шаблона чата chat.inc, убрав код по умолчанию, можно просто вставить свой код фреймов:
[quote]<!-- USERS FRAME -->
<div id=usersdiv style='position:absolute; overflow-y:auto; width:270px; top:45px; right:0px; bottom:65px; padding:10px; border:1px gray solid;'>
[color=blue]тут вставляется содержимое вашего фрейма участников users.html от <body> до </body>[/color]
</div>
<!-- CHAT FRAME -->
<div id=chatdiv style='position:absolute; width:100%; height:60px; left:0px; bottom:0px; padding-left:10px; border:1px gray solid;'>
[color=blue]тут вставляется содержимое вашего нижнего фрейма chat.html от <body> до </body>[/color]
</div>[/quote]
[b]3.[/b] Далее производим изменения вашего кода в вашблоне чата chat.inc:
- изменить в созданном chat.inc write на hidden, в строке должно получиться так:
[quote]<form action='index.php?inc=write' method=post target="[color=blue]hidden[/color]" name="fmsg" enctype="multipart/form-data" onsubmit="return (parent.msg_send());">[/quote]
- изменить в chat.inc setroom на selectroom, в строке должно получиться так:
[quote]document.write("<select class=ok name=[color=blue]selectroom[/color] onchange=\"parent.setmyroom(this.value);\">");[/quote]
[b]4.[/b] Теперь скопируем содержимое ваших скриптов из scripts.dat в jscripts.dat (новый фаил скриптов) например через WebFTP
[b]5.[/b] Далее производим изменения в jscripts.dat:
- найти и вырезать из скриптов все "parent.users." и "parent.chat."
- найти и изменить в скриптах все "write." на "hidden."
- находим функцию loadframes() и заменим 3 строки:
[quote]if(parent.users&&parent.left&&parent.privat&&parent.chat)
if(parent.users.document&&parent.left.document&&parent.privat.document&&parent.chat.document)
if(parent.users.document.getElementById('users')&&parent.chat.document.getElementsByName('text0')[0]){[/quote]
на одну
[quote][color=blue]if(parent.left && parent.left.document && document.getElementById('users') && document.getElementsByName('text0')[0]){[/color][/quote]
- чуть ниже находится код:
[quote]/* Подготовка фрейма привата */
if(parent.privatok==1) {
parent.privat.document.write(privatframe);
parent.privat.document.body.innerHTML='';}[/quote]
меняем его на
[quote]/* Подготовка фрейма привата */
if(parent.privatok==1) {document.getElementById("privatdiv").innerHTML='';}[/quote]
- теперь находим этот коментарий и обновляем строчку
[quote]/* - cmd=1 для обычного привата, фрейм или общее окно, cmd=2 приват в новом окне */
if(cmd==1 && privatok==1) [color=blue]{var obj=document.getElementById("privatdiv"); obj.innerHTML+="<div>"+towr+"</div>";obj.scrollTop=1000000;}[/color][/quote]
[b]6.[/b] Дополнительные исправления в скриптах (также обязательные)
- для перехода по комнатам, в одном месте нужно изменить в скриптах setroom на selectroom, в строке должно получиться так:
[quote]obj=document.getElementsByName("[color=blue]selectroom[/color]")[0];[/quote]
- исправление загрузки никлиста в IE, добавить [u]в 2х местах [/u]"var" перед строкой ul=document.getElementById('ul'); чтобы получилось так:
[quote][color=blue]var[/color] ul=document.getElementById('ul');[/quote]
- исправляем включение викторины, обновите функцию startgame в скриптах
[quote][color=blue]/* Загружаем викторину в верхушку чата */
var gameon=0;
function startgame(){
if(gameon==0){
parent.gameframe.location.href='http://'+domain+':7777/?chat='+chatlogin;
gameon=1; document.getElementById('gamediv').style.display="block";
}
else {
parent.gameframe.location.href='start.html';
gameon=0; document.getElementById('gamediv').style.display="none";
}
}[/color][/quote]
- исправляем скрол совместимость с DOCTYPE для IE, в скриптах находим функцию up и производим изменения синим:
[quote]/* Функции плавной прокрутки и включение дозагрузки */
var loaded=0;
var scrolled=0;
function up() {
if(loaded==0) onloaded();
var scr=parent.left.document.body;
if(parent.left.document.compatMode != 'BackCompat')
scr=parent.left.document.documentElement;
scr1=scr.scrollTop;
[color=blue]scr2=parent.left.innerHeight;
if(scr2==undefined) scr2=scr.clientHeight;[/color]
scr3=scr.scrollHeight;
if (scr1+scr2>=scr3) return;
if (scrolled==1) {if (scr1+scr2+250<scr3) return;}
parent.left.scroll (0, scr =1+Math.round (scr1+1*(scr3-scr2-scr1)/(1+slowscroll)));
setTimeout ('up()', 20);
}[/quote]
(при обнаружении новых, список пополнится)
- исправление функции смены дизайнов для смены дизайна самого документа
[quote]/* Устанавливает другой стиль(дизайн) для всех фреймов чата */
function setstyle(cssfile) { if(!cssfile) return;
var obj=document.getElementsByTagName("link"); if(obj && obj[0]) obj[0].href=cssfile;
if(parent.frames.length) {for(i=0; i<parent.frames.length; i++) {obj=parent.frames[i].document.getElementsByTagName("link")[0];if(obj) obj.href=cssfile;}}
}[/quote]
- исправление работы привата в отдельно-открытом окне, в шаблоне privat.inc в строчке изменяем на синее
[quote]<form name=fmsg action=index.php?inc=write&nick=%nick%&id=%id% method=post target=[color=blue]hidden[/color] onSubmit='leer_rus(text0.value);'>[/quote]
[b]7.[/b] Если всё работает и файлы [color=blue]mleft.html top.html chat.html users.html frames.inc[/color] вам ненужны, их можно удалить
19905
Dimitry
@Dimitry
21.05.2012
[b][color=red]ПЕРЕХОД на безфреймовую версию ЧАСТЬ 2[/color][/b] (часть 1 выше)
[b]Скрываем iframe с сообщениями left и выводим сообщения сразу в DIV (leftdiv)[/b]
Данное обновление только для чатов [u]безфреймовой версии[/u] - исправляет баг google chrome,
при котором если поступают новые сообщения и вы производите выбор в select, то поле выбора сбрасывается.
Обновление затронет только 3 файла: [b]irc.html[/b](фрейм сообщений), [b]chat.inc[/b](шаблон внутри чата) и [b]jscripts.dat[/b](скрипты внутри чата)
1. В файле [b]irc.html[/b] изменений немного, так как теперь этот фрейм скрыт, вывод информации перед сообщениями будет чуть иначе.
Просто добавляем синюю строку для очистки фрейма сообщений и начальной загрузки содержимого, ниже из HTML её можно убрать:
[quote]<!DOCTYPE html>
<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<link rel=STYLESHEET type="text/css" href="style.css">
</head>
<script>
/* Функция - перенаправитель команд */
function f(var1,var2,var3,var4,var5,var6,var7,var8,var9,var10,var11,var12,var13,var14) {
parent.f(var1,var2,var3,var4,var5,var6,var7,var8,var9,var10,var11,var12,var13,var14);
}
[color=blue]/* Задаём изначальное содержимое перед сообщениями */
parent.document.getElementById("leftdiv").innerHTML="<center><font size=4><b>Мы приветствуем Вас в нашем чате!</b></font></center><br>";[/color]
</script>
<body onload="if(confirm('Извините, связь прервалась! Перезагрузить чат?')) parent.loadframes();">
<!--Этот фаил должен быть не больше 1кб, ниже будет загрузка JS-сообщений-->[/quote]
2. Теперь в файле [b]chat.inc[/b] вынесем iframe left наверх в скрытой форме и обновим DIV сообщений leftdiv, изменения показаны синим:
[quote]<!-- HIDDEN FRAMES -->
<iframe name=hidden width=0 height=0 style="display:none;"></iframe>
[color=blue]<iframe name=left width=0 height=0 style="display:none;"></iframe>[/color]
<!-- TOP FRAME -->
<div id=topdiv style="position:absolute; height:40px; left:0px; right:0px; top:0px; padding-left:10px; border:1px gray solid;">
</div>
<!-- GAME FRAME -->
<div id=gamediv style="position:absolute; height:60px; left:0px; right:295px; top:45px; display:none; z-index:1; border:1px gray solid;">
<iframe name=gameframe src=start.html style="position:absolute; width:100%; height:100%; border:0px;"></iframe>
</div>
<!-- LEFT FRAME -->
<div id=leftdiv style="position:absolute; [color=blue]overflow-y:scroll; padding-left:10px;[/color] left:0px; right:295px; top:45px; bottom:65px; border:1px gray solid;">
</div>[/quote]
3. Ну и скрипты чата [b]jscripts.dat[/b], тут работы побольше, сначала находим функции up() и wr() и обновим их полностью:
[quote][color=blue]/* Функции плавной прокрутки и включение дозагрузки */
var loaded=0;
var scrolled=0;
function up() {
if(loaded==0) onloaded();
var leftdiv=document.getElementById("leftdiv");
var left=leftdiv.scrollHeight-leftdiv.clientHeight-leftdiv.scrollTop;
if(left<=0 || (scrolled==1 && left>250)) return;
leftdiv.scrollTop=Math.ceil(leftdiv.scrollTop+left/(1+slowscroll));
setTimeout('up()',20);
}
/* Удаляет старое сообщ. печатает новое и прокручивает вниз */
function wr(text) {
var leftdiv=document.getElementById("leftdiv");
if(loaded==1 && maxmsgs>0) {
var count=leftdiv.getElementsByTagName('div').length;
if(maxmsgs<count) leftdiv.removeChild(leftdiv.getElementsByTagName('div')[0]);
}
var div=document.createElement('div'); div.innerHTML=text;
leftdiv.appendChild(div);
if(loaded==1) up();
}[/color][/quote]
Далее в функции f() находим красное и меняем на [color=blue]document.getElementById("leftdiv")[/color]
[quote]почти в начале функции
if(loaded==1) [color=red]parent.left.document.getElementsByTagName("body")[0][/color].innerHTML="";text="очищаю фрейм сообщений";}
почти в самом нижу
[color=red]parent.left.document.body[/color].innerHTML="Подождите, осуществляется переход в другую комнату ...";
ещё чуть ниже
[color=red]parent.left.document.body[/color].innerHTML="";[/quote]
в результате получаем такие строки
[quote]if(loaded==1) document.getElementById("leftdiv").innerHTML="";text="очищаю фрейм сообщений";}
...
document.getElementById("leftdiv").innerHTML="Подождите, осуществляется переход в другую комнату ...";
...
document.getElementById("leftdiv").innerHTML="";[/quote]
Ну и на последок нужно обновить пару строк в функциях loadframes() и ajax() - они находятся в самом низу скриптов, изменения синим:
[color=blue]if(ajaxon) {ajax(1); return;}[/color] - этот код был просто перемещён выше
[quote]/* [Подготовка фреймов и загрузка сообщений] */
var userlist="<table id=ul width=100%></table>";
function loadframes() {
[color=blue]if(document && parent.left && parent.left.document && document.getElementById('users') && document.getElementsByName('text0')[0]){[/color]
/* Последняя стадия загрузки */
if(interval) window.clearInterval(interval);
/* Подготовка фрейма привата */
if(parent.privatok==1) {document.getElementById("privatdiv").innerHTML='';}
/* Обнуление переменных */
loaded=0;
scrolled=0;
myhistory=myhistory1;
for(var i=0;i<rooms.length;i++) rooms[i][1]=0;
/* Подготовка таблицы никлиста */
uc = 0;
us = new Array();
ucc= new Array();
document.getElementById('users').innerHTML=userlist;
[color=blue]/* Загрузка движка сообщений */
document.getElementById("leftdiv").innerHTML='Загрузка ...';
if(ajaxon) {ajax(1); return;}[/color]
parent.left.location.href='irc.html?'+myid+'&r='+Math.random();
/* Загрузка актуального стиля, если был изменён */
if(mystyle) window.setTimeout("setstyle(mystyle);",3000);
/* Проверка непрерывного соединения */
interval=window.setTimeout(
'if(location.port!=88 && confirm("Проблема потокового соединение через стандартный порт. Нажмите ОК для перехода на другой порт или Отмена для дальнейших действий.")) location.href="http://"+location.hostname+":88"+location.pathname+"?"+yourkey; '+
'else if(confirm("Нажмите OK если хотите перейти на ажакс движок чата или Отмена для продолжения загрузки.")) ajax(1); '
,1000*15); /* Время для проверки потокового движка 15 сек */
}}
var interval=window.setInterval("loadframes()",100);
var ajaxon=0;
var http = null;
var ajaxreq=0;
function ajax(start) {
if(ajaxreq) return; ajaxreq=1;
var file="./ajax.html?sess="+myid+"&r="+Math.random(1);
if(start) {ajaxon=1; file+="&start=1";
[color=blue] document.getElementById("leftdiv").innerHTML=""; [/color]
window.setInterval("ajax()",15000);
}
//Mozilla, Opera, Safari, IE7, else IE6
if (typeof XMLHttpRequest != 'undefined') {http = new XMLHttpRequest();}
else {
try {http = new ActiveXObject("Msxml2.XMLHTTP");}
catch(e) {try {http = new ActiveXObject("Microsoft.XMLHTTP");} catch(e) {http = null;}}
}
if (http) {
http.open('GET', file, true);
http.onreadystatechange = new Function("if(http.readyState != 4) return;parent.left.document.write(http.responseText);ajaxreq=0;");
http.send(null);
}}[/quote]
Это закрытая тема - нельзя отправлять сообщения.