MainRadiotalkCustom
MPCHAT - CMS хостинг чатов для профессионалов
81   •   Посмотреть все темы

🔒 Готовые решения для чатов (старая версия с фреймами)

 

458
ridz @ridz
[b]Последовательный вывод одного фото через установленный интервал времени из общего числа случайных фото[/b]
Предварительно установите информер с параметром randfotos (возможное число 1-20)
Не ставьте второй информер если он уже у вас стоит!!! просто добавьте параметр
[quote]<script src=index.php?inc=informer&getmsg=1&inchat=1&lastreg=15&counter=1&birthday=1[color=red]&randfotos=20[/color]></script>[/quote]
Более подробно как ставить информер смотреть здесь [url]https://forum.vmeste.eu/viewtopic.php?pid=5680#p5680[/url]
После этого в нужное место поставьте код
[quote]<div id = "randfoto"></div>
<script>
html="";
time=5;// задержка смены фото в секундах
var i=0;
function randfotoshow()
{ foto=i_randfotos[i];
if(!i_randfotos.length) {html+="Нет фотографий!"} else {html="<a href=?inc=gallery&foto="+foto[0]+" target=_blank title='Дата: "+foto[1]+"\nГалерея: "+foto[2]+"\nПодпись: "+foto[3]+"'><img [color=red]height='90'[/color] src=gallery/trumb/"+foto[0]+".jpg border=0></a> ";
i++;}
if (i==i_randfotos.length) {i=0};
document.getElementById('randfoto').innerHTML=html;
if(i_randfotos.length) {window.setTimeout("randfotoshow()", 1000*time)}
}
randfotoshow();
</script>[/quote]
Желательно установить одинаковую высоту всех фото (отмечено [color=red]красным[/color])
[b]Вариант с небольшим эффектом появления и исчезновения фото и ник под фото со ссылкой на анкету[/b]
[quote]<div align="center" id="randfoto" ></div>
<script>
html="";
time=3;// задержка смены фото в секундах
[color=red]widthmax=180;//максимальная ширина фото
height=90;//высота фото [/color]
var i=0;
var width="";
function randfotoshow()
{ if (i==i_randfotos.length) {i=0};foto=i_randfotos[i];
if(!i_randfotos.length) {html+="Нет фотографий!"} else {html="<a href=?inc=gallery&foto="+foto[0]+" target=_blank title='Дата: "+foto[1]+"\nГалерея: "+foto[2]+"\nПодпись: "+foto[3]+"'><img id="+i+" height=[color=red]"+height+"[/color] onload=\"imgonload(this.id);\" style=\"visibility: hidden\" src=gallery/trumb/"+foto[0]+".jpg border=0></a><br /><a title='"+foto[2]+"\nАнкета' href=?inc=info&nick="+foto[2]+" target=_blank>"+foto[2]+"</a>";
}
document.getElementById('randfoto').innerHTML=html;}
function imgonload(id) {
width=document.getElementById(id).width;
[color=red]if (width>widthmax) width=widthmax;[/color]
document.getElementById(id).width=0 ;
document.getElementById(id).style.visibility = "visible";
imgshowplus(id);i++;}
function imgshowplus(id)
{ if (document.getElementById(id).width!=width) {
document.getElementById(id).width+=1;
window.setTimeout("imgshowplus("+id+")", 10) }
else {window.setTimeout("imgshowminus("+id+")",1000*time)}
}
function imgshowminus(id)
{ if (document.getElementById(id).width!=0) {
document.getElementById(id).width-=1;
window.setTimeout("imgshowminus("+id+")", 10) }
else {randfotoshow()}
}
randfotoshow();
</script>[/quote]
[color=black]Добавлено[/color] [color=red]красным[/color] ограничение ширины для слишком длинных фото и желаемая высота фоток
Как это работает можно посмотреть тут [url]http://russchat.com/buddha/fotoshow.html[/url]

2536
удалён @crigon
[b]Кнопки как в VOC[/b]
by [url=https://forum.vmeste.eu/profile.php?id=1759]admiral[/url]

I. вкл/откл скролинга - https://forum.vmeste.eu/viewtopic.php?pid=170797#p170797
===========
II. фильтр:
1. Где нибудь между <head> и </head> вставляем скрипт вывода и переключения кнопки:
[quote]<script language="JavaScript">
<!--
if (document.images)
{
chat_filter_on = new Image(24,24);
chat_filter_on.src ="ссылка на картинку отключеного фильтра";

chat_filter_off = new Image(24,24);
chat_filter_off.src ="ссылка на картинку включеного фильтра";;
}

ss=0;
function click_filter()
{
if (ss==0) {
alert('Фильтр [ВКЛЮЧЕН] - выключив его, в общем канале Вы будете получать все сообщения.');

document.all('filter_img').src = chat_filter_on.src;
document.all('filter_img').alt = 'Фильтр [ВКЛЮЧЕН] - выключив его, в общем канале Вы будете получать все сообщения.';

parent.symbols[0] = '<p style="display: none">';
ss=1;
parent.loadframes();
} else {
alert('Фильтр [выключен] - включив его, в общем канале Вы будете получать сообщения, адресованные ЛИЧНО вам.');

document.all('filter_img').src = chat_filter_off.src;
document.all('filter_img').alt = 'Фильтр [выключен] - включив его, в общем канале Вы будете получать сообщения, адресованные ЛИЧНО вам.';

parent.symbols[0]="";
ss=0;
parent.loadframes();
}
}
//-->
</script>[/quote]
2. В нужном месте фрейма вставляем саму кнопку:
[quote]<a href="#" onclick="click_filter();return false"><img border="0" name="filter_img" id="filter_img" alt="Фильтр [выключен] - включив его, в общем канале Вы будете получать сообщения, адресованные ЛИЧНО вам." src="ссылка на картинку отключеного фильтра" width="20" height="24"></a>[/quote]
===========
III. кнопка очистки окна сообщений:
вставляем туда где хотим видеть нашу кнопку очистки окна сообщений:
[quote]<a href="#" onClick="parent.left.document.getElementsByTagName('body')[0].innerHTML=''; return false;"><img src="ссылка на кнопку очистки окна сообщений" width="23" height="24" border="0" alt="Очистить общий канал?"></a>[/quote]
===========
IV. кнопка очистки привата в отдельном фрейме:
[quote]<a href="#" onClick="parent.privat.document.getElementsByTagName('body')[0].innerHTML=''; parent.privatframe=parent.mainframe; return false;"><img src="ссылка на кнопку очистки привата в отдельном фрейме" width="23" height="24" border="0" alt="Очистить приват?"></a>[/quote]

458
ridz @ridz
[b]Неразлучный бот ))) или бот всегда с вами в любой комнате[/b]
В скриптах чата добавьте [color=red]красное[/color]
[quote]/* Добавления в никлист бота-робота, ниже структура */
room_r=[color=red]myroom[/color];status_r=0;inchat_r=[color=red][b]'[/b][/color]1[color=red][b]'[/b][/color];
if(nick_r) {loaded=1; f(room_r,6,nick_r,'',inchat_r,'',color_r,'',mw_r,st_r,icon_r,status_r,love_r,clan_r);loaded=0;}
}[/quote]
Если Бот пропадает проверьте стоят ли кавычки вокруг единички

458
ridz @ridz
[b]Автоматическое уменьшение размера загружаемых изображений в чат через кнопку обзор[/b] (если размер превышает заданный вами)
[color=black][b]1часть[/b][/color] В скрипты чата
в /* [Функции - общие] */
добавить
[quote]/* Функция изменения загружаемой картинки */
[color=red]var id_img = 0; [/color]
function imgminimum(obj)
{var imgmax = 500; // максимальный размер картинки
var h = obj.height;
var w = obj.width;
if (h>imgmax||w>imgmax){if (h>w) {obj.height=imgmax}else {obj.width=imgmax}};
[color=red]if (!obj.id){var scr=parent.left.document.body;
if(parent.left.document.compatMode != 'BackCompat')
scr=parent.left.document.documentElement;
scr.scrollTop=scr.scrollHeight;
obj.id=id_img++;}[/color]}[/quote]
[color=red]Красным[/color] добавлен скролинг(прокрутка лога сообщений вниз) после загрузки картинки

[color=black][b]2 часть[/b][/color] И после
/* [Функция - вывода сообщений и команд] */

var pu = new Array;
var pt = new Array;
function f(room,cmd,nick,tonick,text,time,colornick,color,var9,var10,var11,var12,var13,var14) {
if(ign_ok(nick) && cmd!=6 && cmd!=7) return;
if(nick==nick_r && room!=room_r) return;

добавить строку

[quote]text=text.replace("<img src=tmp","<img onload=parent.imgminimum(this) src=tmp");[/quote]
Картинка будет в логе пропорциональна и размер по ширине и высоте не превысит указанный вами.

или добавить так

[quote]text=text.replace(/.br..img.src.(tmp.(.+\.jpg)).border.0..br./igm, "<img onload=parent.imgminimum(this) src=$1 border=0>");[/quote]
тогда картинка будет в одной строке с ником.

458
ridz @ridz
[b]Информер о входящих и выходящих из чата[/b] Если в чате несколько комнат информер поможет отследить кто в какое время и в какой комнате появился входя в чат или вышел из чата. [color=red][b]Внимание!!![/b][/color] обязательно добавьте [color=green]зелёное[/color] кто уже ставил скрипт.
Админка -=Фреймы=- Фрейм участников в удобное вам место добавить
[quote]<div id=addusers align=center></div>[/quote]
Затем админка -=Модерация=- Скрипты в чате в разделе /* [Функции - формирования никлиста] */ /* Функции добавления и удаления пользователей в массиве никлиста */ добавить отмеченное красным
[quote][color=red]var npvnick = 0;[/color]
function add(nick,colornick,st,mw,icon,status,inchat,time,room,love,clan){
if(loaded==0) return;
var l=us.length;
for(var i = 0;i<l;i++ ) if(us[i]!=null && us[i][0]==nick)break;
us[i]=new Array(nick,colornick,st,mw,icon,status,room,love,clan);
if (i==l) {uc++; update(room,1);}
[color=red]if (uc>npvnick[/color][color=green][b]&&nick!=nick_r[/b][/color][color=red]){var pvnick = " в комнате "+rooms[room][0]+" появилась ";
if(mw=='0') pvnick=" в комнате "+rooms[room][0]+" появился ";
if(mw=='') pvnick=" в комнате "+rooms[room][0]+" появилось ";
var pvobj=parent.users.document.getElementById("addusers"); if(pvobj) pvobj.innerHTML=time+pvnick+nick;
npvnick=uc;
}
[/color]
if(room==myroom) {
nickid="!"+nick;
obj=parent.users.document.getElementById(nickid);
ul=parent.users.document.getElementById('ul');
if(obj) ul.deleteRow(obj.rowIndex);
index=ul.rows.length;
seprules(1,st,mw);
var obj=ul.insertRow(index); obj.id=nickid;
format(i,obj);
}}

function del(nick,colornick,st,mw,icon,status,inchat,time,room) {
if(loaded==0) return;
for(var i=0; i<us.length; i++)
if( us[i] != null && us[i][0] == nick ) {uc--; update(us[i][6],-1); us[i] = null; break;}
[color=red]if (uc<npvnick){var pvinick = " из чата вышла ";
if(mw=='0') pvinick=" из чата вышел ";
if(mw=='') pvinick=" из чата вышло ";
var pviobj=parent.users.document.getElementById("addusers"); if(pviobj) pviobj.innerHTML=time+pvinick+nick;
npvnick=uc;
}
[/color]
if(room==myroom) {
nickid="!"+nick;
obj=parent.users.document.getElementById(nickid);
ul=parent.users.document.getElementById('ul');
ul.deleteRow(obj.rowIndex);
seprules(-1,st,mw);
}}[/quote]

458
ridz @ridz
[b][color=black]Музыкальные смайлы и (или) слова с возможностью отключения[/color][/b]
В админке -=Модерация=- Скрипты в чате после
/* [Функция - вывода сообщений и команд] */

var pu = new Array;
var pt = new Array;
function f(room,cmd,nick,tonick,text,time,colornick,color,var9,var10,var11,var12,var13,var14) {
if(ign_ok(nick) && cmd!=6 && cmd!=7) return;
if(nick==nick_r && room!=room_r) return;
добавить
[quote]/* Музыкальные смайлы, пример для добавления melodysm[номер по порядку]=new Array(" код_смайла_или_слово ","ссылка_на_звук_mp3"); */
var melodysm = new Array();
melodysm[0]=new Array(" *1 ","Ссылка_на_mp3");
melodysm[1]=new Array(" *2 ","Ссылка_на_mp3");

var vse = melodysm.length;
for (var i=0; i<vse; i++) {regsm = new RegExp(melodysm[i][0].replace(/([\$\^\*\(\)\+\[\]\{\}\|\.\/\?\\])/g, '\\$1')); if(regsm.test(text)&&loaded!=0[color=red]&&melodysmno==0[/color]) text+='<embed type="application/x-shockwave-flash" src="http://mpchat.com/blank/player.swf" allowfullscreen="false" flashvars="file='+melodysm[i][1]+'&autostart=true" width="0" height="0">';}[/quote]
[b][color=black]Кнопка отключения [/color][/b](ставиться по желанию если ненужна отмеченное выше [color=red]красным[/color] убрать!)
в нижний фрейм установка галочки отключает звук
[quote]<input type=checkbox onclick="if(this.checked) {parent.melodysmno=1;} else {parent.melodysmno=0;}" title="Вкл-выкл муз. смайлы">[/quote]
или второй вариант снимание галочки отключает звук
[quote]<input type=checkbox onclick="if(this.checked) {parent.melodysmno=0;} else {parent.melodysmno=1;}" title="Вкл-выкл муз. смайлы" checked>[/quote]
и в скрипты чата в раздел /* [НАСТРОЙКИ] */ добавить
[quote]/* Отмена муз.смайлов */
var melodysmno=0;[/quote]
Звуки желательно подбирать короткие на несколько секунд и с малым весом и сама ссылка должна прямая формата mp3

458
ridz @ridz
[b][color=black]Функция тотальный игнор[/color][/b] устанавливает игнор у всех находящихся в данный момент в чате на определённый ник. устанавливать могут только те кого вы назначите
В скриптах чата в разделе /* [НАСТРОЙКИ] */ добавить и прописать ники
[quote]/* Ники установщиков тотального игнора (/tignor): totalign['nick']=1; */
var totalign = new Array();
totalign['adm']=1;[/quote]
ниже после /* Проверка пользовательских команд для простого сообщения */
if(cmd==0) {
[quote]if(text.substr(0,7)=="/tignor" && totalign[nick]){if (tonick&&mynick!=tonick&&loaded==1) {ign_sel(tonick)};if(nick!=mynick||!tonick) return;
if(ign_ok(tonick)) {text="Вы поставили тотальный игнор на ник "+tonick} else {text="Вы сняли тотальный игнор на ник "+tonick;} }[/quote]
В нижний фрейм в селектор команд добавить
[quote]if(parent.totalign[parent.mynick]) document.write("<option value='/tignor '>заигнорировать ник");[/quote]
Повторная отправка этой же команды на заигноренный ник снимает игнор , проверить действительно ли установился игнор можно нажав кнопку обновления в чате - иконка игнора должна измениться. Сообщение об установке/снятии тотального игнора видит только человек его установивший.
У кого на титульнике выведены [b]последние сообщения[/b] и кто хочет скрыть строки об игноре добавьте в скрипт вывода последних сообщений [color=red]красное[/color]
[quote]<table width=100%><tr><td class=title> Последние сообщения в чате</td></tr>
<tr><td>
<script>
for(var i=i_lastmsgs.length-1;i>=0;i--) {
msg=i_lastmsgs[i];
[color=red]if (msg[4].substr(0,7)=="/tignor") continue;[/color]
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>
</td></tr>
</table>[/quote]

458
ridz @ridz
[b][color=black]Ограничение размера картинок загружаемых на форум[/color][/b]
Админка -=Шаблоны=- Форум добавить
[quote]/* Функция изменения размера загружаемой картинки */
function imgminimum(obj)
{var imgmax = 500; // максимальный размер картинки в пикселях
var h = obj.height;
var w = obj.width;
if (h>imgmax||w>imgmax){if (h>w) {obj.height=imgmax}else {obj.width=imgmax}}
}[/quote]
и [color=red]красное[/color] в /* Обработчик BB-тегов, ненужные закоментировать (шаблон, замена, повторно) */
[quote]etags[i]=new Array(/\[img\](https?:\/\/[^ "]+?)\[\/img\]/,'<img src="$1" [color=red]onload="imgminimum(this)"[/color] border=0 style="position:relative;">',1);i++;[/quote]

458
ridz @ridz
[b]Награды для галереи и гостевой[/b] награды для форума смотреть тут [url]https://forum.vmeste.eu/viewtopic.php?pid=181335#p181335[/url]
Для галереи добавить [color=red]красное[/color]
[quote]/* Подготовка коментариев и ссылок страниц */
var posts=new Array();
var all_posts="";
for(var i=0; i<g_p.length;i++) {
mod="";
if(g_p[i][8]) mod+="<i style='float:left;'>Оценка: "+g_p[i][8]+"</i>";
if(moderator==1) mod+="<input type=checkbox name='delpost["+g_p[i][9]+"]'><a href='?inc=gallery&gallery="+gallery+"&foto="+afoto[0]+"&site="+site+"&delpost="+g_p[i][9]+"' onclick='return confirm(\"Вы действительно хотите удалить это сообщение?\");'><font class=low>Удалить</font></a> | ";
mod+="<a href=# onclick='quote("+i+"); return false;'><font class=low>Цитировать</font></a>";
avator="";if(g_p[i][5]) avator="<img src='"+g_p[i][5]+"' style='margin-top:5px;margin-bottom:5px;'>";
message=filter(g_p[i][2],message_img_max);

[color=red]
var nagrada="";
var str = new Array();
str['Ник']='<img src="ссылка на награду" border="0" title="Пам пам пам">';
str['Ник_ещё']='<img src="ссылка на награду" border="0" title="Пам пам пам">';
if(str[g_p[i][1]]!=null) nagrada=str[g_p[i][1]];
[/color]

posts[i]="<table width=500 align=center style='table-layout:fixed;'><tr><td class=title width=150>"+g_p[i][3]+"<td class=title align=right> #"+g_p[i][0]+"</tr><tr><td width=150 valign=top style=padding:10px;padding-left:4px;><a href=# onclick='put(\""+g_p[i][1]+", \"); return false;'><font color='"+g_p[i][4]+"'>"+g_p[i][1]+"</font></a> [<a href=?inc=info&nick="+g_p[i][1]+" target=info>?</a>]<br>"+avator+"[color=red]<br>"+nagrada+"[/color]</td><td valign=top style='padding:10px;word-wrap:break-word;'>"+message+"<tr><td>"+g_p[i][6]+"<td align=right>"+mod+"</table><br>";
all_posts+=posts[i];
}
var links=genlinks("?inc=gallery&gallery="+gallery+"&foto="+afoto[0]+"&site=",sites,site,1);[/quote]
Для гостевой [color=red]красное[/color]

[quote]/* Подготовка сообщений и ссылок */
var posts=new Array();
var all_posts="";
for(var i=0; i<g_p.length;i++) {
mod="";
if(moderator==1) mod+="<input type=checkbox name='delpost["+g_p[i][9]+"]'><a href='?inc=gb&site="+site+"&delpost="+g_p[i][9]+"' onclick='return confirm(\"Вы действительно хотите удалить это сообщение?\");'><font class=low>Удалить</font></a> | ";
mod+="<a href=# onclick='quote("+i+"); return false;'><font class=low>Цитировать</font></a>";
avator="";if(g_p[i][5]) avator="<img src='"+g_p[i][5]+"' style='margin-top:5px;margin-bottom:5px;'>";
message=filter(g_p[i][2],message_img_max);

[color=red]
var nagrada="";
var str = new Array();
str['Ник']='<img src="ссылка на награду" border="0" title="Пам пам пам">';
str['Ник_ещё']='<img src="ссылка на награду" border="0" title="Пам пам пам">';
if(str[g_p[i][1]]!=null) nagrada=str[g_p[i][1]];
[/color]

posts[i]="<table width=500 align=center style='table-layout:fixed;'><tr><td class=title width=150>"+g_p[i][3]+"<td class=title align=right> #"+g_p[i][0]+"</tr><tr><td width=150 valign=top style=padding:10px;padding-left:4px;><a href=# onclick='put(\""+g_p[i][1]+", \"); return false;'><font color='"+g_p[i][4]+"'>"+g_p[i][1]+"</font></a> [<a href=?inc=info&nick="+g_p[i][1]+" target=info>?</a>]<br>"+avator+"[color=red]<br>"+nagrada+"[/color]</td><td valign=top style='padding:10px;word-wrap:break-word;'>"+message+"<tr><td>"+g_p[i][6]+"<td align=right>"+mod+"</table><br>";
all_posts+=posts[i];
}
var links=genlinks("?inc=gb&site=",sites,site,1);[/quote]
строки с массивами подарков для удобства можно перенести в отдельный файл
[quote]var str = new Array();
str['Ник']='<img src="ссылка на награду" border="0" title="Пам пам пам">';
str['Ник_ещё']='<img src="ссылка на награду" border="0" title="Пам пам пам">';[/quote]
поставив вверху страницы скрипт до тега </head>
[quote]<script src="ССЫЛКА_НА_ФАЙЛ" type="text/javascript"></script>[/quote]

458
ridz @ridz
[color=black][b]Skype - вывод ника плюс иконка состояния статуса скайпи в анкете[/b][/color]
При нажатии на кнопку [img]http://c.skype.com/i/legacy/images/share/buttons/anim_rectangle.gif[/img] открываеться скайпи-инфо этого человека -- плюс сама иконка показывает человек в скайпе или нет. Если ник не проставлен выводиться надпись [color=black]Нету[/color]

В настройки в таблицу добавить код
[quote]<tr><td>Ваш ник в Skype</td><td><input name=field8 class=text size="40" maxlength=100 value='%field8%'></td></tr>[/quote]
Код для анкеты
[quote]<tr><td>Мой ник в Skype</td><td>
<script type="text/javascript" src="http://download.skype.com/share/skypebuttons/js/skypeCheck.js"></script>
<script language="JavaScript">
if('%field8%'!=''&&'%field8%'!='-') {document.write('&nbsp;%field8%&nbsp;<a href="skype:%field8%?userinfo"><img src="http://mystatus.skype.com/smallclassic/%field8%" style="border: none;" width="114" height="20" alt="Мой статус" /></a>');}
else { document.write("Нету");}
</script>
</td></tr>[/quote]
Если вы использовали field8 замените на другой
Чтобы иконка отображала реальный статус -- в настройках скайпа у данного человека должно стоять разрешение
инструменты - настройки - безопастность - дополнительно - галку на против "Показывать мой сетевой статус в Интернете"

458
ridz @ridz
[color=black][b]Индивидуальные Приветствия для разных комнат [/b][/color] (можно для одной) или разные картинки в разных комнатах
В админке - -=Фреймы=- Фрейм сообщений найдите строку
[color=black]<center><font size=4><b>Мы приветствуем Вас в нашем чате!</b></font></center><br>[/color]
и замените на скрипт
[quote]<script language="JavaScript" type="text/javascript">
if (parent.myroom==0)document.write('<center><img src="Ссылка на картинку для нулевой комнаты" border="0" alt="" /></center><br />');
if (parent.myroom==1)document.write('<center><img src="Ссылка на картинку для первой комнаты" border="0" alt="" /></center><br />');
if (parent.myroom==2)document.write('<center><img src="Ссылка на картинку для второй комнаты" border="0" alt="" /></center><br />');
document.write("<center><b><font face='Monotype Corsiva' size=+3 color='blue'><font color=red>" + parent.mynick + "</font><br />Добро пожаловать в чат <font color=red>"+top.document.title+"</font>!</font></b></center><br />")
</script>[/quote]
Если комнат больше добавить строки
if (parent.myroom==НОМЕР_КОМНАТЫ)document.write('<center><img src="Ссылка на картинку" border="0" alt="" /></center><br />');
если меньше то ненужные убрать
Для каждой комнаты появится своя картинка и в приветствии будет ник вошедшего и название вашего чата .

458
ridz @ridz
[color=black][b]Автоматическое создание приватного фрейма или Функция плавного изменения размера высоты приватного фрейма плюс автоматическое переключение показа приватных сообщений или в приватном фрейме или в логе[/b][/color]
При установке этого кода человек в чате получает выбор пользоваться приватным фреймом и самостоятельно настроить размер привата или отключить приватный фрейм и получать все сообщения в общем логе
В то место где вы хотите что были кнопки увеличения/создания умешения/убирания фрейма их можно увидеть на прикреплённом скрине поставьте скрипт (в любой фрейм)
[b]Добавлено: [/b][color=blue]скорость[/color] изменения размера (кто ставил менять полностью)
[quote]<script>
/* Функция автоматического создания приватного фрейма и плавного изменения размера его высоты */
[color=red]document.write('<BUTTON onmousedown="privatbig(1)" onmouseup="privatbig()" onmouseout="privatbig()" title="увеличить или создать приват">&uarr;</BUTTON><BUTTON onmousedown="privatbig(-1)" onmouseup="privatbig()" onmouseout="privatbig()" title="уменьшить или убрать приват">&darr;</BUTTON>');[/color]
var timeprivat;
[color=blue]var step=10;//шаг прибавления(скорость)[/color]
function privatbig(x){
var obj=parent.document.getElementsByName('sets')[0];
var rows=obj.rows.split(',');
var newrow=Number(rows[rows.length-1]);
if (!x){clearTimeout(timeprivat);return}
newrow+=x*step;
if (newrow<5) {parent.privatok=0} else {parent.privatok=1};
var height=parent.left.document.body.clientHeight;
if (height-x*step<0){newrow+=height;rows[rows.length-1]=newrow;obj.rows=rows.join(',');return}
if (newrow<0){newrow=0;}
if (newrow>=0)
{rows[rows.length-1]=newrow;obj.rows=rows.join(',');timeprivat=setTimeout("privatbig("+x+")",5);}
};
</script>[/quote]
[b]Пояснение[/b]
Если высоту приватного фрейма уменьшить кнопкой [b]"меньше"[/b] до нуля произойдёт автоматическое переключение показа приватных сообщений на общий лог и наоборот увеличивая размер кнопкой [b]"больше"[/b] даже если у вас до этого небыло и вы устанавливали приватного фрейма он автоматически появиться и приватные сообщения пойдут в него.

Кто хочет может изменить кнопки отмечено [color=red]красным[/color] на картинки
[quote]document.write('<img src="ссылка на картинку вверх" border="0" onmousedown="privatbig(1)" onmouseup="privatbig()" onmouseout="privatbig()" ><img src="ссылка на картинку вниз" border="0" onmousedown="privatbig(-1)" onmouseup="privatbig()" onmouseout="privatbig()" >');[/quote]
[img]http://imgs.su/users/49702/1254150476.png[/img]

Отредактировано ridz - 09.01.2010
458
ridz @ridz
[color=black][b]Запрет на вызов при определённых статусах ICQ[/b][/color] Благодарю за идею [url=https://forum.vmeste.eu/profile.php?id=2564]Глебон[/url] !
Админка -=Модерация=- Скрипты в чате раздел /* [Функция - вывода сообщений и команд] */
найдите
[quote]/* Вывод сообщения о вызове и сам вызов окном с музыкой '/call nick' */
if(cmd==4) {
if(tonick==mynick && loaded==1) alert("Вас вызывает в чат "+nick+"!");
wr(set_time+"<i>"+set_nick+" вызывает "+tonick+".</i><br>");
}[/quote]
и замените полностью (или добавьте) на код
[quote]/* Вывод сообщения о вызове и сам вызов окном с музыкой '/call nick' */
if(cmd==4) {
stat2="";
for(var i=0;i<us.length;i++){if(us[i]!= null && us[i][0]==tonick)stat2=us[i][5];};
if(tonick==mynick && loaded==1&&stat2!=[color=red]1[/color]&&stat2!=[color=red]5[/color]) alert("Вас вызывает в чат "+nick+"!");
wr(set_time+"<i>"+set_nick+" вызывает "+tonick+".</i><br>");
if(stat2==[color=red]1[/color]||stat2==[color=red]5[/color])wr(set_time+"<i>"+tonick+" отвечает "+set_nick+" меня нельзя вызвать! я "+stn2[stat2]+".</i><br>");
}[/quote]
[b]Пояснение[/b] в местах отмеченных [color=red]красным[/color] поставьте свои номера статусов на которые хотите поставить запрет, также можно добавить ещё статусы через [b]&&stat2!=номер[/b] или [color=green]&&tonick!="НИК"[/color] для ника в первой отмеченной строке и так для статуса [b]||stat2==номер[/b] или для ника [b][color=green]||tonick=="НИК"[/color][/b]во второй
сами номера можно узнать в /* Сообщение о смене статусa ICQ */

458
ridz @ridz
[color=black][b]Способ загрузки индивидуальных аватаров для форума[/b][/color] (для гостевой и галереи также найдите avator=""; и добавьте код)
Админка -=Шаблоны=- Форум добавить красное
/* ЧАСТЬ ТРЕТЬЯ */
/* Отображение сообщений в теме */
....
avator="";
[quote][color=red]var avatores = new Array;
avatores['Ник']='Ссылка на картинку его аватара';
avatores['Ещё_ник']='Ссылка на картинку его аватара';
if (avatores[f_p[i][1]]) f_p[i][8]=avatores[f_p[i][1]];[/color]
if(f_p[i][8]) avator="<img [color=red]width='100'[/color] src="+f_p[i][8]+" style='margin-top:5px;margin-bottom:5px;'><br>";[/quote]
а так можно сделать на форуме стандартный аватар, для тех кто не загрузил свой заменив
[quote]avator="";[/quote]
на
[quote]avator="<img src='ССЫЛКА НА СТАНДАРТНЫЙ АВАТАР' style='margin-top:5px;margin-bottom:5px;'><br>";[/quote]
код со стандартным аватором и заменой целиком
[quote]avator="<img src='ССЫЛКА НА СТАНДАРТНЫЙ АВАТАР' style='margin-top:5px;margin-bottom:5px;'><br>";
var avatores = new Array;
avatores['Ник']='Ссылка на картинку его аватара';
avatores['Ещё_ник']='Ссылка на картинку его аватара';
if (avatores[f_p[i][1]]) f_p[i][8]=avatores[f_p[i][1]];
if(f_p[i][8]) avator="<img width='100' src="+f_p[i][8]+" style='margin-top:5px;margin-bottom:5px;'><br>";[/quote]

458
ridz @ridz
[color=red][b]Внимание![/b][/color] в данном сообщении надо убирать пропуск в теге тут [hi de] и [/hi de]
[b]Тег hide для форума [/b] скрытие информации от незарегистрированных и [b]Тег видео для форума [/b](для роликов с youtube) (тема тег видео перенесена перенесена и [color=red]обновлена!!![/color])
Добавлен тег [b][color=green][play][/color][/b] для проигрывания mp3 файлов

Для незарегистрированных вместо сообщения будет текст [b]→ Скрытый текст только для зарегистрированных[/b] в том месте сообщения, где Вы истользовали этот тег ,а у зарегистрированных ссылка открывающая скрытый блок.
Админка -=Шаблоны=- Форум
Кнопка для вставки тега в /* Для вывода кнопок BB-тегов */ добавить
Кнопка скрытого текста
[quote][color=red]tags+="<input title='скрытый текст' class=ok type=button value='hide' onclick=ftags('[hi de]','[/hi de]')> ";[/color][/quote]
или Кнопка скрытого текста только для указанных ников
[quote][color=purple]if (mynick=='Ник'||mynick=='Ник_ещё'||mynick=='И_ещё_Ник') tags+="<input title='скрытый текст' class=ok type=button value='hide' onclick=ftags('[hi de]','[/hi de]')> ";[/color][/quote]
Кнопка видео
[quote][color=blue]tags+="<input title='видеоролик с youtube' class=ok type=button value='Video' onclick=ftags('[video]','[/video]')> ";[/color][/quote]
Кнопка для плеера mp3 файлов (автозапуск отключен у песен)
[quote][color=green]tags+="<input title='Плеер для mp3' class=ok type=button value='Mp3' onclick=ftags('[play]','[/play]')> ";[/color][/quote]
В функцию /* Фильтрирует текст - смайлы, теги, ссылки, картинки */ добавить [color=red]красное[/color] ([color=blue]синим[/color] отмечена вставка тега видео cмотреть - ставить по желанию) [color=green]зелёным[/color] проигрыватель mp3 (ставить по желанию)
[quote]/* Фильтрирует текст - смайлы, теги, ссылки, картинки */
/* img_max - макс. картинок к отображению в одном сообщении вместо ссылок */
var message_img_max=10; /* сообщение */
var signature_img_max=0; /* подпись */
[color=red]var hide_div=0;[/color]
[color=blue]var video_max=3;//максимальное число видероликов в сообщении[/color]
function filter(text,img_max) { var img_c=0;[color=blue]var video_c=0;[/color]
....

text=" "+text+" "; text=text.replace(/( |>)((ftp|https?):\/\/[^ "]+?)(?= |<)/g,'$1<a href="$2" target=_blank>$2</a>'); //автозамена ссылок
a=text.split(" "); for(k=0;k<a.length;k++) {for(j=0;j<sm.length;j++) if(a[k]==sm[j][0]) a[k]='<img src='+smdir+sm[j][1]+'>';} text=a.join(' '); //замена смайлов

[color=red]while(text.search(/\[hi de\](.*?)\[\/hi de\]/g)>=0){ t=text.split('[hi de]'); if(t[1]) {t2=t[1].split('[/hi de]');hide_div++; if(t2[0][b]&&mynick[/b]) { text=text.replace('[hi de]'+t2[0]+'[/hi de]','<a href=# onclick="obj=document.getElementById(\'s'+hide_div+'\'); obj.style.display=(obj.style.display==\'none\')? \'block\':\'none\'; return false;">→ Скрытый текст</a><div id=s'+hide_div+' style="display:none;">'+t2[0]+'</div>') } else {text=text.replace('[hi de]'+t2[0]+'[/hi de]','→ Скрытый текст только для зарегистрированных');}}};[/color]

[color=blue]while(text.search(/\[video\](.*?)\[\/video\]/g)>=0){t=text.split('[video]'); if(t[1]) {t2=t[1].split('[/video]');video_c++; if(t2[0]&&video_max>=video_c) { var ss2009=t2[0].replace("watch?v=", "v/");ss400='src="'+ss2009+'&hl=ru&fs=1"';text=text.replace('[video]'+t2[0]+'[/video]','<embed '+ss400+' type=application/x-shockwave-flash allowscriptaccess=always allowfullscreen=true [b]width=300 height=250[/b]></embed>') } else {text=text.replace('[video]'+t2[0]+'[/video]','');}}};[/color]

[color=green]while(text.search(/\[play\](.*?)\[\/play\]/g)>=0){t=text.split('[play]'); if(t[1]) {t2=t[1].split('[/play]'); if(t2[0]) {var autostart='false'; text=text.replace('[play]'+t2[0]+'[/play]','<embed type="application/x-shockwave-flash" src="http://mpchat.com/blank/player.swf" allowfullscreen="false" flashvars="file='+t2[0]+'&autostart='+autostart+'" width="250" height="20">');} else text=text.replace('[play]'+t2[0]+'[/play]','')}};[/color]

return text;
}[/quote]
Кому нужен простой спойлер скрывающий информацию но доступный всем уберите [color=red][b]&&mynick[/b][/color] и → Скрытый текст только для зарегистрированных
[color=blue][b]width=300 height=250[/b][/color] - это размеры окна видео отрегулируйте сами если нужно

458
ridz @ridz
[b][color=black]Запрет на капс[/color][/b]
Мягкий запрет на капс для незарегистрированных (статусы можно добавить по желанию) плюс команда в нижнем фрейме на запрет капса
Мягкий - значит если первая буква в предложении заглавная она такой и остаёться всё остальное переводиться в нижний регистр.
Админка - скрипты чата - в раздел /* [НАСТРОЙКИ] */ добавить прописать ники установщиков запрета на Caps Losk
[quote]/* Ники установщиков запрета на Caps Losk(/caps): capser['nick']=1; */
var capslosk=0;
var capser = new Array();
capser['adm']=1;[/quote]
В раздел /* [Функция - вывода сообщений и команд] */ добавить в
/* Проверка пользовательских команд для простого сообщения */
if(cmd==0) {
[quote]if(text.substr(0,5)=="/caps" && capser[nick]){if (tonick&&mynick==tonick&&loaded==1) {capslosk=1};if(nick!=mynick||!tonick) return;
text="Вы поставили запрет на капс для ника "+tonick;}[/quote]
В раздел /* [Функции - нижнего фрейма] */ добавить после
/* Обрабатывает строку ввода текста для отправления */
var gettime=0;
var oldmsg="";
function msg_send(){
var form=parent.chat.document.fmsg;
var msg=form.text0.value;
[quote]var caps = /(\S)(.+)/g;
var ras = /\.|\!/;
function replacer(str, p1, p2, offset, s)
{ return p1+p2.toLowerCase()};
a=msg.split(ras);
if(capslosk==1||parent.regist != 1) {for(k=0;k<a.length;k++){nn=a[k].replace(caps, replacer);msg=msg.replace(a[k], nn);}};[/quote]
В нижний фрейм в селектор добавить
[quote]if(parent.capser[parent.mynick]) document.write("<option value='/caps '>запретить капс");[/quote]
[b]Примечание![/b] сообщение о запрете капсить видит только ник, который ставит запрет.

458
ridz @ridz
[b]Запрет показа более одного сообщения о бане если несколько модеров одновременно выкидывают\банят одного человека[/b]
Запрет действует в течении указанного вами времени (достаточно 1 -3 минут) отключается только вывод сообщения о бане, сами баны работают как обычно, плюс сообщения о банах не видят входящие по новой в чат , модератор посылающий бан после первого видит своё сообщение с пометкой [b]"Сообщение скрыто"[/b]
В скрипты чата в раздел /* [НАСТРОЙКИ] */ добавить
[quote]/* Запрет на одновременный вывод сообщения о бане несколькими модераторами */
var bantonick="";
var bantimer=1;//в течении скольких мин. баны одному и томуже нику не будут показываться
var bantimerId;
[color=green]var vihodban="";[/color][/quote]
В раздел /* [Функция - вывода сообщений и команд] */ добавить/изменить [color=red]красное[/color]
[quote]/* Вывод сообщения об удалении '/kill nick' и сам процесс */

if(cmd==5) {
if(tonick==mynick && loaded==1 && kill!=6 && kill!=7) {
if((kill==1)||(kill==2)||(kill==3)) {
act="kill";
setcookie(parent.chatlogin.replace("-","_")+"_mpban",tonick,timeout);
}
if(kill==4) act="window";
if(kill==5) act="prav";
parent.location.href="exit.html?"+parent.yourkey+"&act="+act+"&timeout="+timeout+"&grund="+text;
}
if(text.length>0) text=" Причина: "+text+". ";
if(timeout>0) {
if(timeout<61) timeout="На "+timeout+" минут.";
if(timeout==1440) timeout="На день!";
if(timeout==10080) timeout="На неделю!";
if(timeout==43200) timeout="На месяц!";
if(timeout>1000000) timeout="Навсегда!";
}

[color=green]if (kill!=6 && kill!=7) vihodban=tonick;[/color]
[color=red]if (bantonick==tonick)text="Сообщение скрыто";
if ((bantonick!=tonick||nick==mynick)&& loaded==1){[/color]wr(set_time+"<i><a href='' onclick=\"parent.tonick('"+nick+": '); return false;\"><font color="+colornick+">"+set_nick+"</font></a> "+deltxt[kill]+" "+tonick+".</i> "+timeout+text+"<br>");[color=red]}
if (bantonick!=tonick&& loaded==1){bantonick=tonick;clearTimeout(bantimerId);bantimerId=setTimeout("bantonick=null",1000*60*bantimer);};[/color]
}[/quote]
[quote]/* Вывод выхода юзера из чата и удаление из никлиста через del() */
if(cmd==7) {
if(inchat=='1' && room==myroom[color=green]&&nick!=vihodban[/color]) {
wr(set_time+"<font color=red>С нами прощается <b>"+set_nick+"</b> и уходит.</font><br>");
}
del(nick,colornick,st,mw,icon,status,inchat,time,room);
}[/quote]
[color=green]Зелёным[/color] добавлено отмена сообщения о выходе забаненного ника.

458
ridz @ridz
[color=black][b]Модерирование сообщений в общем логе чата[/b][/color]
[color=blue]Скрипт адаптирован под бесфреймовую версию чата[/color]
[color=red]Дополнено!!!
можно удалять все строки определённого ника или все строки указанные ссылками по времени или по указанным словам!!![/color]
Назначенные вами ники смогут удалять (скрывать) строки общего лога, без перезагрузки чата, удалённые строки при нажатии кнопки обновить или перезахода в чат непоявляются.
В скриптах чата в разделе /* [НАСТРОЙКИ] */ добавить и прописать ники
[quote]/* Ники удаляющих строки лога (/remove): remover['nick']=1; */
var remover = new Array();
remover['adm']=1;[/quote]
[color=red]Код[/color] поставить ниже после /* Проверка пользовательских команд для простого сообщения */
if(cmd==0) {
[quote]if(text.substr(0,7)=="/remove" && remover[nick]) {
var timeremovez;
text=text.replace("/remove", "");
timeremovez = text.match(/см\.\s(\d\d.\d\d.\d\d)|\S+/g);
if (timeremovez!=null) {
var obj=document.getElementById("leftdiv");var div=obj.getElementsByTagName('div');
for (var i=0; i<timeremovez.length; i++) {
for (var k=0; k<div.length; k++) {if (div[k].innerHTML.search(timeremovez[i])>=0){obj.removeChild(div[k]);k--;}}}};
if(nick!=mynick||timeremovez==null) return;
text='Вы удалили сообщение/я с '+timeremovez;
}[/quote]
В нижний фрейм в селектор команд добавить

[quote]if(remover[mynick]) document.write("<option value='/remove '>стереть");[/quote]
[b]Иструкция по использованию:[/b] В общем логе чата нажать на время той строки, корорую хотите стереть (должна произойти вставка в окно ввода текста вида [b][color=red] см. 08:22:33 [/color][/b] ), [color=red]укажите также все остальные строки какие хотите стереть[/color],затем в селекторе команд нижнего фрейма выберите команду стереть и отправьте сообщение.
[color=red]Если выбрать ник и отправить команду стереть сотрутся все сообщения этого ника!!![/color]
[color=red]Можно также просто написать слово или слова через пробел, удаляться все строки с этим словом/словами[/color]
Сообщение об удалении строки видит только человек отправивший команду на стирание, если время не вставлено или имеет в вашем чате иной формат, сообщения об удалении никто не увидит и само удаление не будет сделано.

458
ridz @ridz
[color=black][b]Модифицированный Топ100 с чередованием фона строк и выделением особым цветом строки с личным ником[/b][/color] (для удобства определения личного рейтинга)
Можно использовать как замену стандартного топ100.
Если ник находиться в чате или на титульнике с сохранённым паролём и открывает топ100 его ник будет подсвечен, чтобы можно было быстрее себя увидеть.
админка |-Дополнительно-| .::WebFTP::.' на фтп чата в корне создать файл с именем [b]top100.html[/b]
[b]Код содержимого файла [/b]
[quote]<html>
<head>
<META http-equiv=Content-Type content='text/html; charset=windows-1251'>
<link rel=STYLESHEET type=text/css href=style.css>
</head>
<body class=top100-body>
<center>
<div id="htmlsite" >Пожалуйста подождите, идёт загрузка!!!</div>
<script>
function doSomething(e) {
var targ;
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) targ = targ.parentNode;
return targ
}
document.getElementById('htmlsite').onclick=function(e){
if (doSomething(e).href.split('top100').length > 1 )
{ url=doSomething(e).href.replace("top100.html","") ;
include("htmlsite", url);return false}};

function include(id, url) {
var element = document.getElementById(id);
if (!element) {alert("Bad ID-element!");return;}
element.innerHTML ="Пожалуйста подождите, идёт загрузка!!!";
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!";
var dtd = "Участник";
if(parent.mynick) dtd=parent.mynick;
if(window.opener) dtd=opener.parent.mynick;
dtd=">"+dtd+"<";
var trl = element.getElementsByTagName("tr");
for (var i=0; i< trl.length; i++){
[color=red]var color = '#7FFFD4';//цвет нечётных строк
if (i%2==0)color = '#00BFFF';//цвет чётных строк
if (trl[i].innerHTML.split(dtd).length > 1){color = '#FFD700';};//цвет выделения ника[/color]
for (var k=0; k< trl[i].cells.length; k++){trl[i].cells[k].style.backgroundColor=color; [color=green]if (trl[i].cells[k].innerHTML==0) {trl[i].cells[k].innerHTML="0";} [/color] } };
}
[color=blue]var starturl="./?inc=top100&all=100&only=12345678&sort=3";//начальные параметры топ100[/color]
include("htmlsite", starturl);
</script>
</center>
</body>
</html>[/quote]
Измените цвета по своему вкусу отмечено [color=red]красным[/color] а также установите начальные параметры топ100 отмечено [color=blue]синим[/color] подробнее о параметрах и сортировке топ100 смотреть тут [url]https://forum.vmeste.eu/viewtopic.php?pid=48413#p48413[/url]
[color=green]Зелёным[/color] отмечена добавка нуля в пустые строки (ставить по желанию)

Код кнопки для использования модифицированной версии топ100 внутри чата или на титульнике для открытия модифицированной версии топ100 отдельным окном.
[quote]<a href=# onclick="window.open('top100.html','top100','width=700,height=500,resizable=yes,scrollbars=yes,status=yes');return false" target=top100 title=Топ100!>Топ100!</a>[/quote]
'700','500' размеры окна отрегулируйте сами если нужно.

Код кнопки для титульника (стандарт) открытие топ100 во фрейме титульника
[quote]<a href=top100.html target=iframe>Top100</a><br>[/quote]
как это может выглядеть смотрите скрин.
[img]http://imgs.su/users/49702/1256040347.png[/img]

458
ridz @ridz
[color=black][b]Прямые ссылки на статистику сообщений чата текущего года и месяца с возможностью бесконечного формирования ссылок на месяц << назад или вперёд >> [/b][/color]
Поставьте скрипт в то место где вы хотите увидеть ссылки
[quote]<script language="JavaScript" type="text/javascript">
document.write('<a href="#" onclick="write_today(-1);return false" title="месяц назад" ><<</a>');
document.write(' <font color="#B22222"><b>Статистика</b></font> ');
document.write('<a href="#" onclick="write_today(1);return false" title="месяц вперёд" >>></a>');
document.write('<div id="stat" align="center" ></div>');
var today = new Date();
var year = today.getFullYear();
var month = today.getMonth();
var month_rus = new Array('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
function write_today(x)
{ var month_new = month+x;
if (month_new>=0&&month_new<12) { month = month_new};
if (month_new==-1) { month = 11;year--};
if (month_new==12) { month = 0;year++};
document.getElementById('stat').innerHTML='<a href="./?inc=stat&date='+year+'-'+(month+1)+'" target="_blank" title="Статистика сообщений за '+month_rus[month]+' месяц '+year+'г.">'+month_rus[month]+'</a> <a href="./?inc=stat&date='+year+'" target="_blank" title="Статистика сообщений за '+year+'г.">'+year+'</a>';
}
write_today(0);
</script>[/quote]
скрин
[img]http://imgs.su/users/49702/1256118695.png[/img]


В закрытой теме нельзя отправлять сообщения.