ОсновноеRadiotalkПользовательское
MPCHAT - CMS хостинг чатов для профессионалов
83   •   Посмотреть все темы

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

 

458
ridz @ridz
Вывод подарков из магазина в анкете с возможностью постраничного перехода и скрытим/показом (основной вариант вывода подарков тут https://vmeste.eu/forum?pid=54760#p54760)
<script>
var shop = "Подарки"; // название кнопки
var shop_color = "#FF0000" // цвет кнопки
document.write("<div id=smail align=center ><font color='"+shop_color+"' onclick=printsmail(0) style='cursor: pointer'>"+shop+"</font><br /></div>")
var div_smail=document.getElementById('smail');
var td=5;//сколько колонок в таблице
var max=15;//максимальное количество подарков на странице
items.reverse();//убрать если нужно выводить подарки с начала
function printsmail(page) {
var pages="<font color='"+shop_color+"' style='cursor: pointer' onclick=smile_net()>"+shop+"</font><br />";
var is=n=0; if(items.length==0) return;
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>";
wr+="<td align=center style='cursor: pointer;' ><img src='data/shop/"+items[i][0]+".jpg' title='"+items[i][1]+"\n"+items[i][2]+" "+items[i][3]+"\n"+items[i][4]+"'></td>";
is++; if(is==td) {is=0;wr+='</tr>'}};
if(i%max==0) {n++;if ((n-1)==page) {color="#FF0000"} else {color="#0000CD"};//цвет ссылки для выбранной страницы
pages+="<a href=# onclick='printsmail("+(n-1)+"); return false;' style='cursor: pointer; color: "+color+" ' >"+n+"</a> ";}};
wr=pages+wr+'</table>';
div_smail.innerHTML=wr;
}
function smile_net()
{div_smail.innerHTML="<font color='"+shop_color+"' onclick=printsmail(0) style='cursor: pointer'>"+shop+"</font><br />";}
printsmail(0); //убрать если нужно первоначально скрыть подарки
</script>

Всё на скриншоте или в скрипте

458
ridz @ridz
Скрытие разделитей по полу или статусу в никлисте при отсутсвии всех чатлан данного пола или статуса(для тех у кого стоит разделение никлиста https://vmeste.eu/forum?pid=46840#p46840)
1. Добавить стиль в строки таблицы style='display: none'
/* [Подготовка фреймов и загрузка сообщений] */
var userlist="<table id=ul width=100%>"+
"<tr id=woman style='display: none'><td colspan=5>Деффки</td><td id=womanc>0</td></tr>"+
"<tr id=man style='display: none'><td colspan=5>Пацаны</td><td id=manc>0</td></tr>"+
"<tr id=noman style='display: none'><td colspan=5>Нечто</td><td id=nomanc>0</td></tr>"+
"</table>";

точно также для таблицы без счётчиков в разделителе
2. Добавить красное в /* Функции добавления и удаления пользователей в массиве никлиста */
function separate(obj,c) {
if(ucc[obj+"c"]==null) ucc[obj+"c"]=c; else ucc[obj+"c"]+=c;
parent.users.document.getElementById(obj).style.display="";
parent.users.document.getElementById(obj+"c").innerHTML=ucc[obj+"c"];
if(ucc[obj+"c"]==0)parent.users.document.getElementById(obj).style.display="none";
if(c==1) return parent.users.document.getElementById(obj).rowIndex+1;
}

Строка отмеченная синим у тех кто неиспользует счётчиков должна отсутствовать!!!

458
ridz @ridz
Автоматическая смена стиля внутри чата в указанные часы
Можно использовать для изменения дизайна чата в зависимости от времени суток (днём один дизайн, вечером другой , ночью третий )
Всего дизайнов можно установить 24, от 0 до 23.
Прежде чем установить скрипт создайте файлы на фтп чата с разными стилями style1.css, style2.css и т.д.
Затем в скриптах чата в разделе /* [Функции - общие] */ добавьте
/* Функция автоматической смены стиля */
var timer_style;
function style_change(){
if(timer_style) window.clearTimeout(timer_style);
var style = new Array();
style[0]="style.css";//данный стиль сработает в полночь и будет в чате до 6 утра
style[6]="style1.css";//этот с 6 утра и до полуночи

//сюда остальные стили если нужно
var now = new Date();
var hours = now.getHours();
var url='';
for (i in style ){if(i<=hours&&style[i]) url=style[i]};
if(url=='') url=style[i];
mystyle=url;
setstyle(mystyle);
var next = new Date();
next.setHours(+1,0,0,0);
timer_style=window.setTimeout(arguments.callee, next.getTime()- now.getTime())
}

В скрипте пропишите часы и ссылки на файлы стилей - шаблон: style[ЧАС]="ссылка на стиль";
Затем добавьте красное тамже в /* [Функции - общие] */
/* Дозагрузка - выполняется после загрузки фрейма сообщений */
function onloaded() {
style_change();
window.setTimeout('scrolled=1;',5000);
if(interval) window.clearTimeout(interval);
if(topic) wr(topic);
for(var i = 0;i<rooms.length;i++) update(i,0);
/* Запретить правую кнопку мышки и ставить курсор в текстовое поле */
for(i=0; i<parent.frames.length; i++) {
if(setcursor) parent.frames[i].document.onkeydown = function(){parent.chat.document.fmsg.text0.focus();}
if(nomousemenu) {
parent.frames[i].document.oncontextmenu = function(){return false;}
if(document.layers) parent.frames[i].document.captureEvents(Event.MOUSEDOWN);
parent.frames[i].document.onmousedown = function(e){if(e && e.type == "contextmenu") return false;}
}
}

Пояснение: стиль установится согласно вашему выбору при входе в чат и будет меняться автоматически без перезахода в установленное вами время

458
ridz @ridz
Автоматическая смена картинки в зависимости от часа
В картинке прописать id id="top_img" ниже поставить скрипт и прописать часы и ссылки на другие картинки которые её будут заменять.
<img src="Ссылка на картинку" border="0" alt="" id="top_img"/>
<script language="JavaScript" type="text/javascript">
var timer_img;
function img_change(){
var pic = document.getElementById('top_img');
if(!pic)return;
if(timer_img) window.clearTimeout(timer_img);
var img = new Array();
img[0]="Ссылка на картинку1";
img[6]="Ссылка на картинку2";
img[10]="Ссылка на картинку3";
img[12]="Ссылка на картинку4";
img[16]="Ссылка на картинку5";
var now = new Date();
var hours = now.getHours();
var url='';
for (i in img ){if(i<=hours&&img[i]) url=img[i]};
if(url=='') url=img[i];
pic.src=url;
var next = new Date();
next.setHours(+1,0,0,0);
timer_img=window.setTimeout(arguments.callee, next.getTime()- now.getTime())
}
img_change();
</script>

Меняет любую картинку в которой вы установите id и пропишите в скрипте по шаблону время и ссылку после которого картинка должна поменяться
Шаблон img[Час]="Ссылка на картинку замены"; час от 0 до 23
Пояснение: Картинка будет той что вы установили для данного промежутка суток при открытии страницы и поменяеться автоматически в установленные вами часы, без перезагрузки страницы

458
ridz @ridz
Автоматическая смена дизайна титульной страницы чата в зависимости от времени пользователя
Подготовить файлы с разными стилями style1.css, style2.css и т.д.
Админка -=Шаблоны=- Титульник --- Скрипт разместить в head страницы титульника
<script language="JavaScript" type="text/javascript">
window.onload = style_change;
var old_css = '';
function style_change() {
var a = [],
c = new Date,
d = c.getHours(),
b = "";
a[0]="style.css";//данный стиль сработает в полночь и будет в чате до 6 утра
a[6]="Ссылка на style6.css";//этот с 6 утра и до полудня
a[12]="Ссылка на style12.css";//этот с полудня и до полуночи
for (var i=0; i<a.length; i++) {
if (i <= d && a[i]!=undefined) b=a[i];
}
if (b=="")b=a[a.length-1];
if (parent.frames.length) for (i = 0; i < parent.frames.length; i++) if (obj = parent.frames[i].document.getElementsByTagName("head")[0]) {
a = parent.frames[i].document.createElement("link");
a.href = b;
a.type = "text/css";
a.rel = "stylesheet";
obj.appendChild(a)
}
if (obj = document.getElementsByTagName("head")[0]) if(old_css!=b){
a = document.createElement("link");
a.href = b;
a.type = "text/css";
a.rel = "stylesheet";
obj.appendChild(a)
}
old_css=b;
a = new Date;
a.setHours(+1, 0, 0, 0);
window.setTimeout(arguments.callee, a.getTime() - c.getTime())
};

</script>

Ссылки прописывать по примеру в скрипте в порядке возрастания часов , пропуская ненужные часы - всего от 0 до 23
P.S. Новый стиль накладывается на основной поэтому достаточно в подгружаемых ксс описать только изменяемое
P.S.S. Чтобы страницы погружаемые на титульнике через iframe имели всегда погружаемый дизайн титульника необходимо добавить красное
<iframe onload="style_change()" src=news.html name=iframe frameborder=0 width="100%" style="height:100%;" scrolling=yes></iframe>

458
ridz @ridz
Запоминание состояния чекбокса через куки для установки прежних значений при входе в чат.
Первый вариант.
Если чекбокс не управляет ещё каким-то например скрытым полем , то берём имя этого чекбокса и сам чекбокс меняем на скрипт
<script language="JavaScript" type="text/javascript">
var checked=parent.getcookie("test")==1?"checked":"";
document.write('<input type=checkbox name="test" onclick="if(this.checked) {parent.setcookie(this.name,1)} else {parent.setcookie(this.name,0)}" title="Вкл-выкл" '+checked+'>')
</script>

test это имя чекбокса, подставьте своё.
Если в onclick уже что-то было прописано, добавьте onclick="if(this.checked) {parent.setcookie(this.name,1) ;ТУТ} else {parent.setcookie(this.name,0); И ТУТ}"
Учитывайте Кавычки при добавлении!!!
Пример для второго варианта.
В нижнем фрейме есть чекбокс на транслит
<input type=checkbox onclick="fmsg.trans.value=1; if(!this.checked) fmsg.trans.value=0;">
В нём нету имени.
Управляет скрытым полем:
<input type=hidden name=trans value=0>
Добавляем имя например trans0 и делаем установку скрытого поля в зависимости от кук
Заменяем чекбокс на скрипт
<script language="JavaScript" type="text/javascript">
var checked=parent.getcookie("trans0")==1?"checked":"";// установка выбран-невыбран для самого чекбокса
document.forms.fmsg.trans.value=parent.getcookie("trans0")==1?1:0;//установка значения для скрытого поля
document.write('<input name=trans0 '+checked+' type=checkbox onclick="if(this.checked){fmsg.trans.value=1;parent.setcookie(this.name,1)} else{fmsg.trans.value=0;parent.setcookie(this.name,0)}">')
</script>

458
ridz @ridz
Запрет на Ввод большего числа смайлов чем разрешено и длинные пропуски (для смайлов вида *1 *2 и т.д. и таких пробелов между словами)
Для гостевой
Админка -=Шаблоны=- Гостевая /* Вывод сообщений */
Ниже находим строку
<TEXTAREA name=message wrap=virtual rows=5 style='width:100%;'></TEXTAREA>

заменяем на
<textarea onkeyup="zamena()" onfocus="zamena()" name="message" wrap="virtual" rows="5" style='width:100%;'></textarea>
<script language="JavaScript" type="text/javascript">
function zamena()
{ var img_max=3; /*максимальное количество смайлов */
var text=document.form.message.value
a=text.split(" ");
for(k=0;k<a.length;k++) {if (/\*([0-9]{1,3})/.test(a[k])) {img_max--};
if(img_max<0) {a[k] = a[k].replace(/\*([0-9]{1,3})/,'')} };
text=a.join(' ');
text=text.replace(/\s+/gm,' ');
document.form.message.value=text }
</script>

Для форума
Админка -=Шаблоны=- Форум /* Отображение формы для создания тем, сообщений и их редактирования */
находим строку
wr("<tr><td>Текст сообщения<br>"+tags+"<textarea style='width:100%;' rows=10 name=message class=text>"+editmessage+"</textarea><div id=smiles align=center></div>");

добавляем красное
wr("<tr><td>Текст сообщения<br>"+tags+"<textarea onkeyup='zamena()' onfocus='zamena()' style='width:100%;' rows=10 name=message class=text>"+editmessage+"</textarea><div id=smiles align=center></div>");

В верху шаблона форума где расположены основные функции добавить
/* Запрет на Ввод большего числа смайлов чем разрешено и длинные пропуски */
function zamena()
{ var img_max=3; /*максимальное количество смайлов */
var text=document.form.message.value
a=text.split(" ");
for(k=0;k<a.length;k++) {if (/\*([0-9]{1,3})/.test(a[k])) {img_max--};
if(img_max<0) {a[k] = a[k].replace(/\*([0-9]{1,3})/,'')} };
text=a.join(' ');
text=text.replace(/\s+/gm,' ');
document.form.message.value=text }

Для галереи
Админка -=Шаблоны=- Галерея /* Форма для коментариев к выбранной фотографии */
находим строку
wr("<TEXTAREA name=message wrap=virtual rows=5 style='width:100%;'></TEXTAREA><div id=smiles></div>");

заменяем на
wr("<textarea name=message onkeyup='zamena()' onfocus='zamena()' wrap=virtual rows=5 style='width:100%;'></textarea><div id=smiles></div>");

В верху шаблона галереи где расположены основные функции добавить
/* Запрет на Ввод большего числа смайлов чем разрешено и длинные пропуски */
function zamena()
{ var img_max=3; /*максимальное количество смайлов */
var text=document.form.message.value
a=text.split(" ");
for(k=0;k<a.length;k++) {if (/\*([0-9]{1,3})/.test(a[k])) {img_max--};
if(img_max<0) {a[k] = a[k].replace(/\*([0-9]{1,3})/,'')} };
text=a.join(' ');
text=text.replace(/\s+/gm,' ');
document.form.message.value=text }

P.S. можно использовать приём запрета вывода большего количества смайлов на уже сделанные сообщения
Найдите в шаблонах /* Фильтрирует текст - смайлы, теги, ссылки, картинки */ строку
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(' '); //замена смайлов

и замените на
var img_max=3; /*максимальное количество смайлов */
a=text.split(" "); for(k=0;k<a.length;k++) {for(j=0;j<sm.length;j++) {if(a[k]==sm[j][0]) {img_max--}; if(img_max>0) {a[k]='<img src='+smdir+sm[j][1]+'>'} else {a[k]=''}}} text=a.join(' '); //замена смайлов

458
ridz @ridz
Функция сколько фраз написано вам пока вы молчали
Количество фраз отображается в названии (title) страницы - [число]+Название чата
Админка - -=Модерация=- Скрипты в чате - /* [Функции - общие] */ - добавить
/* Функция сколько фраз написано вам пока вы молчали */
var title_zip=document.title;
function str_plus(a) {
if (!this.b) {
this.b = 0
};
if (a==1) {document.title = "[" + ++this.b + "] " + title_zip}
else {
document.title = title_zip;
this.b = 0
}
};

Затем в /* [Функция - вывода сообщений и команд] */ добавить красное
/* [Функция - вывода сообщений и команд] */

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;
if(tonick==mynick && loaded==1)str_plus(1);

Потом в /* [Функции - нижнего фрейма] */ добавить красное
/* Обрабатывает строку ввода текста для отправления */
var gettime=0;
var oldmsg="";
function msg_send(){
str_plus(0);

458
ridz @ridz
Отключение/включение графников(ставить в любое удобное место)
Вариант ссылкой
<a href=# onclick="parent.chat.document.fmsg.text0.focus();parent.use_gn^=1;parent.loadframes();return false" title="Вкл-выкл графические ники" >Вкл/выкл граф.ники</a>

Вариант кнопкой
<input type=button onclick='parent.chat.document.fmsg.text0.focus();parent.use_gn^=1;parent.loadframes();' value='Вкл/выкл граф.ники' title="Вкл-выкл графические ники" class=ok>

Вариант чекбоксом
<input type=checkbox onclick='parent.chat.document.fmsg.text0.focus();parent.use_gn^=1;parent.loadframes();' title="Вкл-выкл графические ники" class=ok>

458
ridz @ridz
Скрипт для выбора только существующих дат для дня рождения (например 31 февраля уже не установить)
Админка -=Шаблоны=- Настройки - заменить полностью соотвествующий блок
<tr><td>День рожд. <br />Для выбора даты дня рождения в начале выбрать год и месяц<br />(после год сохранять по желанию) </td><td>
<script language="JavaScript" type="text/javascript">
function check_data() {
var b = document.set.year.options[document.set.year.selectedIndex].value,
a = document.set.month.options[document.set.month.selectedIndex].value;
if (Number(b)) for (i = 1; i < document.set.month.options.length; i++) document.set.month.options[i].disabled = false;
else for (i = 1; i < document.set.month.options.length; i++) if (!document.set.month.options[i].selected) document.set.month.options[i].disabled = true;
if (Number(b) && Number(a)) {
b = (new Date(Number(b), Number(a), 0)).getDate();
for (a = document.set.day.options.length =
1; a <= b; a++) {
document.set.day.options[a] = new Option(String(a).replace(/^(\d)$/, "0$1"), a);
if ("%day%" == a) document.set.day.options[a].selected = true
}
} else for (a = 1; a < document.set.day.options.length; a++) if (!document.set.day.options[a].selected) document.set.day.options[a].disabled = true
};
var print='<select name=day class=text><option value="\">--</option><option value="%day%" selected >'+String('%day%').replace(/^(\d)$/,'0$1')+'</option>';
print+='</select> . <select name=month class=text onchange="check_data()"><option value="\">--</option>';

for (i = 1; i < 13; i++) {
i0 = i < 10 ? "0" + i : i;
if ("%month%" == i) { sel = "selected"; dis = ""} else {sel = "";dis = "disabled"}
print += "<option value=" + i + " " + sel + " " + dis + ">" + i0 + "</option>"
};
print+='</select> . <select name=year class=text onchange="check_data()"><option value="\">----</option>';

for(i=1951;i<2000;i++){
if('%year%'==i) sel='selected'; else sel='';
print+='<option value='+i+' '+sel+'>'+i+'</option>';
}
print+='</select>';

document.write(print);
</script>

</td></tr>

Отредактировано ridz - 11.09.2010
458
ridz @ridz
Дополнительные смайлы
Код для отображения смайла (установить для всех добавочных смайлов в любой из фреймов - по желанию):
<a href=# onclick="top.sendto(' Код смайла со звёздочкой '); return false;"><img src="Ссылка на картинку" border=0 title=" Название смайла или его код "></a>

Скрипт в -=Модерация=- Скрипты в чате /* [Функция - вывода сообщений и команд] */ перед /* Присвоение переменных */
вставить код:
var smile_vip = {
'*2': 'Ссылка на картинку смайла',
'*3': 'Ссылка на картинку смайла',
'*привет': 'Ссылка на картинку смайла'
//код смайла в кавычках двоеточие ссылка в кавычках, запятую в последней строке не ставить!!!
};
text=text.replace(/\*[^\s]+/mig, function (s) { return smile_vip[s]?'<img src='+smile_vip[s]+' onclick=parent.sendto(this.title) title=" '+smile_vip[s]+' " style=cursor:pointer>':s; });

458
ridz @ridz
Присутствие данного ника в чате (скрипт для таблицы в шаблоне анкеты)
Обязательно наличие информера с параметром &inchat=1 Что такое информер и как его устанавливать смотрите тут
<tr>
<td>Присутствие в чате</td>
<td><script type="text/javascript">
var rooms=new Array('Главная','Викторина','Мероприятия');
var html = "Вне чата";
for(i=0;i<i_inusers.length;i++) {
i_nick=i_inusers[i][0]; i_color=i_inusers[i][1];i_room= i_inusers[i][4];
if (i_nick=='%nick%')html="<font color=#"+i_color+">"+i_nick+"<\/font> в комнате "+rooms[i_room];
}
document.write(html);
</script></td>
</tr>

var rooms=new Array('Главная','Викторина','Мероприятия'); -- это дано для примера тут нужно прописать свои названия комнат

458
ridz @ridz
Вывод статусов ICQ в зависимости от пола новый вариант
В скриптах чата /* [Настройки - никлиста и статусов] */
прописать три массива для бесполых для этого можно использовать основной массив icqtxt
и два дополнительных: для девушек icqtxt_w и для юношей icqtxt_m
количество элементов в массивах должно быть одинаково
Пример ниже
/* Сообщение о смене статусa ICQ */
var icqtxt= new Array();//для бесполых
icqtxt[0]='меняю статус на -> "свободно"';
icqtxt[1]='меняю статус на -> "работаю"';
icqtxt[2]='меняю статус на -> "в привате"';
icqtxt[3]='меняю статус на -> "читаю"';
icqtxt[4]='меняю статус на -> "скоро буду"';
icqtxt[5]='меняю статус на -> "меня нет"';

var icqtxt_w= new Array();//для девушек
icqtxt_w[0]='меняю статус на -> "свободна"';
icqtxt_w[1]='меняю статус на -> "работаю"';
icqtxt_w[2]='меняю статус на -> "в привате"';
icqtxt_w[3]='меняю статус на -> "читаю"';
icqtxt_w[4]='меняю статус на -> "скоро буду"';
icqtxt_w[5]='меняю статус на -> "меня нет"';

var icqtxt_m= new Array();//для юношей
icqtxt_m[0]='меняю статус на -> "свободен"';
icqtxt_m[1]='меняю статус на -> "работаю"';
icqtxt_m[2]='меняю статус на -> "в привате"';
icqtxt_m[3]='меняю статус на -> "читаю"';
icqtxt_m[4]='меняю статус на -> "скоро буду"';
icqtxt_m[5]='меняю статус на -> "меня нет"';

В каждой строке нужно выделить двойными кавычками короткое слово или фразу,
которое будет потом отображено в селекторе фрейма участников
icqtxt_m[0]='меняю статус на -> "свободен"';

Если вы используите в строке вывода картинки,
то тег картинки должен быть прописан без двойных кавычек или с использованием одинарных и слеша
Для примера
icqtxt_w[0]='меняю статус на -> "свободна" <img src=http://mpchat.com/blank/img/status/0.gif>';

или так
icqtxt_w[0]='меняю статус на -> "свободна" <img src=\'http://mpchat.com/blank/img/status/0.gif\'>';

Затем тамже в скриптах /* [Функция - вывода сообщений и команд] */
находим и заменяем полностью
/* Сообщение о смене статуса участника и его изменение */
if(cmd==8) {
status=text;
for(var i=0;i<us.length;i++)
if(us[i]!= null && us[i][0]==nick){
us[i][5]=status;
var ops = icqtxt;
icqtxt_w&&us[i][3]=='1'&&(ops = icqtxt_w);
icqtxt_m&&us[i][3]=='0'&&(ops = icqtxt_m);

if(ops[status]) wr(set_time+"<font size=2 color="+colornick+"><b>"+set_nick+":</b></font> <i>"+ops[status]+"</i><br>");
var obj=parent.users.document.getElementById("!"+nick);
while(obj.cells.length) obj.deleteCell(0);format(i,obj);
}}

Либо меняем/дополняем участки отмеченные зелёным
Переходим на фрейм участников ищем селектор name=setstatus
убираем аккуратно его содержимое и ниже ставим скрипт
должно получиться так:
<select name=setstatus onchange="parent.gettime=new Date().getTime();parent.setstatus(this.value);">
</select>
<script type="text/javascript">
var ops = parent.icqtxt;
parent.icqtxt_w&&parent.mymw=='1'&&(ops = parent.icqtxt_w);
parent.icqtxt_m&&parent.mymw=='0'&&(ops = parent.icqtxt_m);
var sel = document.getElementsByName("setstatus")[0];
for (var a = 0; a < ops.length; a++) {
if(a==0){ var opt= document.createElement("optgroup");
opt.label="Стандартные";
sel.appendChild(opt)
};
if(a==3){ var opt= document.createElement("optgroup");
opt.label="Дополнительные";
sel.appendChild(opt)
};

sel.options.length = a + 1;
sel.options[a].text = ops[a].replace(/.*"(.*?)".*/gi,"$1");
sel.options[a].value = a;
}
</script>

Отмеченное синим ставится опционально и дано просто для примера !!!
Если вы всё сделали правильно то у каждого пола будет свой селектор в фрейме участников и свои сообщения для лога чата о смене статуса.

458
ridz @ridz
Вывод статусов ICQ в зависимости от пола в никлисте (продолжение, начало смотреть в предыдущем посте)
1.
Админка -=Модерация=- - Скрипты в чате- /* [Настройки - никлиста и статусов] */
Создать три массива картинок для бесполых (используем stn2) для девушек stn2_w для юношей stn2_m
Пример:
/* Вывод статусов ICQ */
var stn2= new Array();//картинки для бесполых
stn2[0] ='<img src=http://mpchat.com/blank/img/status/0.gif>';
stn2[1] ='<img src=http://mpchat.com/blank/img/status/1.gif>';
stn2[2] ='<img src=http://mpchat.com/blank/img/status/2.gif>';
stn2[3] ='<img src=http://mpchat.com/blank/img/status/3.gif>';
stn2[4] ='<img src=http://mpchat.com/blank/img/status/4.gif>';
stn2[5] ='<img src=http://mpchat.com/blank/img/status/5.gif>';

var stn2_w= new Array();//картинки для девушек
stn2_w[0] ='<img src=http://mpchat.com/blank/img/status/0.gif>';
stn2_w[1] ='<img src=http://mpchat.com/blank/img/status/1.gif>';
stn2_w[2] ='<img src=http://mpchat.com/blank/img/status/2.gif>';
stn2_w[3] ='<img src=http://mpchat.com/blank/img/status/3.gif>';
stn2_w[4] ='<img src=http://mpchat.com/blank/img/status/4.gif>';
stn2_w[5] ='<img src=http://mpchat.com/blank/img/status/5.gif>';

var stn2_m= new Array();//картинки для юношей
stn2_m[0] ='<img src=http://mpchat.com/blank/img/status/0.gif>';
stn2_m[1] ='<img src=http://mpchat.com/blank/img/status/1.gif>';
stn2_m[2] ='<img src=http://mpchat.com/blank/img/status/2.gif>';
stn2_m[3] ='<img src=http://mpchat.com/blank/img/status/3.gif>';
stn2_m[4] ='<img src=http://mpchat.com/blank/img/status/4.gif>';
stn2_m[5] ='<img src=http://mpchat.com/blank/img/status/5.gif>';

Не забудьте поменять ссылки на картинки.
2. тамже в скриптах чата /* [Функции - формирования никлиста] */ /* Добавление ника в таблицу участников */
добавить красное
if(stn[stat]==null) st=''; else st=stn[stat];
if(stn2[stat2]==null) icqst=''; else icqst=stn2[stat2];

stn2_w&&stn2_w[stat2]&&mw_u=='1'&&(icqst=stn2_w[stat2]);
stn2_m&&stn2_m[stat2]&&mw_u=='0'&&(icqst=stn2_m[stat2]);


mw=mw_n;
if(mw_u=='0') mw=mw_m;
if(mw_u=='1') mw=mw_w;

458
ridz @ridz
Антифлудер или пауза на отправку сообщений для незарегистрированных
Админка - -=Модерация=- Скрипты в чате - добавить
/* [Функции - общие] */
/* Пауза на отправку сообщений для незарегистрированных */
var no_reg_time=0;
function no_reg_timer(a) {no_reg_time=1;
window.setTimeout(function () {
if (a == 0) {parent.chat.document.fmsg.text0.value = "";parent.chat.document.fmsg.text0.focus();no_reg_time=0;
}
else {
parent.chat.document.fmsg.text0.value = "Отправка следующего сообщения через "+a+" сек. Зарегистрируйтесь!!!";
a--;
window.setTimeout(arguments.callee, 1E3)
}
}, 10)
};

ниже /* [Функции - нижнего фрейма] */ добавить ТОЛЬКО красное

/* Обрабатывает строку ввода текста для отправления */
var gettime=0;
var oldmsg="";
function msg_send(){
if(regist != 1&&no_reg_time) return false;
regist != 1&&no_reg_timer(5);

var form=parent.chat.document.fmsg;....

5 это величина паузы в секундах

458
ridz @ridz
Вход в чат через 88 порт или обычно
добавить на титульник
<select name="act" size="1" onchange="document.gochat.action=(this.value==1)?'http://'+location.hostname+':88'+location.pathname+'index.php':'http://'+location.hostname+location.pathname+'index.php'">
<option value="0">обычный вход</option>
<option value="1">порт 88</option>
</select>
<script type="text/javascript">
if(location.port==88) document.getElementsByName('act')[0].value=1
</script>

458
ridz @ridz
Выделение сообщений любого ника в общем логе
В никлисте устанавливается кнопка в строке ника при нажатии на которую сообщения данного ника выделяются (в примере выделяется рамкой цвета ника)
Сама кнопка меняет своё изображение, поэтому вам понадобиться 2 небольших картинки выделено/ не выделено.
Скрипт состоит из 3 частей все три части в админке -=Модерация=- .Скрипты в чате
1. Добавить в Функции - общие
/* [Функции - общие] */

/* Выделение сообщений */
function mark( b ) {
var a = arguments.callee.b;
!a && (a = "");
if ( b ) if (a.indexOf(b + "|") >= 0) a = a.replace(b + "|", "");
else a += b + "|";
return arguments.callee.b = a
};

2. /* [Функции - формирования никлиста] */ - добавить красное
ign_img="ССЫЛКА НА КАРТИНКУ ВЫДЕЛЕНИЕ СООБЩЕНИЙ ОТКЛЮЧЕНО";
if(mark().indexOf(nick+'|') >= 0)ign_img="ССЫЛКА НА КАРТИНКУ ВЫДЕЛЕНИЕ СООБЩЕНИЙ ВКЛЮЧЕНО";
set_mark=" <img src="+ign_img+" style='border:0px; cursor:pointer;' title='Выделить сообщения "+nick+"' onclick=\" parent.mark('"+nick+"');parent.loadframes();\">";

/* Добавление ячеек в таблицу */
tr.insertCell(0).innerHTML=set_privat;
tr.insertCell(1).innerHTML=set_nick+set_mark; tr.cells[1].width="100%";
tr.insertCell(2).innerHTML=set_st;
tr.insertCell(3).innerHTML=set_icqst;
tr.insertCell(4).innerHTML=set_ign;
tr.insertCell(5).innerHTML=set_mw;
}

Примечание: переменную set_mark можно добавить в любую из ячеек в нужное вам место.
3. /* [Функция - вывода сообщений и команд] */ добавить красное
/* Вывод простого сообщения */
if(cmd==0) {
symbol=symbols[0];if(nick==mynick) symbol=symbols[1];if(tonick==mynick || text.split(" "+mynick+":").length>1) symbol=symbols[2];
if(mark().indexOf(nick+'|') >= 0) symbol="<p style='margin-top:5px; border:1px solid "+colornick+";'>";

set_nick=" <a href='' onclick=\"parent.tonick('"+nick+": '); return false;\"><font size="+sizenick+" color="+colornick+" face='"+facenick+"'>"+set_nick+":</font></a> ";
set_text=" <font size="+size+" color="+color+" face='"+face+"'>" +set_text+"</font> ";
towr=set_time+symbol+set_nick+set_text+"<br>";
if(nick==mynick || tonick==mynick) myhistory+=towr;
wr(towr);
}

Примечание: оформить выделение <p style='margin-top:5px; border:1px solid "+colornick+";'> можно на свой вкус, ориентируясь на
параметры symbols в /* [НАСТРОЙКИ] */ - /* Отметка сообщений: 0-обычные, 1-мои, 2-мне, 3-приват_мой, 4-приват_мне, 5-приват_мой2, 6-приват_мне2 */
P.S. Для лучшего выделения требуется переставить symbol в строке towr=set_time+symbol+set_nick+set_text+"<br>";
на первое место: towr=symbol+set_time+set_nick+set_text+"<br>";

458
ridz @ridz
Музыка при входе в чат избранных ников
1. Добавить в Функции - общие
/* [Функции - общие] */
/* Музыка для любого ника входящего в чат */
var welcome = {
n: [],
get: function (a) {
for (var b = this.n.length; b--;) if (a.search(this.n[b]) != -1) return true;
return false
},
set: function (a) {
if (!a) return this.n = [];
for (var b = this.n.length, c = b; c--;) this.n[c] == a && this.n.splice(c, 1);
b == this.n.length && this.n.push(a);
return this.n
}
};

2. /* [Функции - нижнего фрейма] */ -- /* Обрабатывает строку ввода текста для отправления */ - найдите строку
var msg=form.text0.value; и ниже добавьте
var re = /\[welcome\](.*?)\[\/welcome\]/g;
if (re.test(msg)) {
msg.replace(re, function (a, b) {
welcome.set(b);
return ''
});
msg = welcome.n.length ? "Вы ждёте: " + welcome.n : "Вы никого не ждёте";
form.text0.value = msg;
return false;
};

3. /* [Функция - вывода сообщений и команд] */ добавить красное
/* Вывод входа юзера в чат и добавление в нклист через add() */
if(cmd==6) {
if(inchat=='0' && room==myroom) {
set_nick="<a href='' onclick=\"parent.tonick('"+nick+": '); return false;\"><font color="+colornick+">"+set_nick+"</font></a>";
tadd="К нам приходит %nick%. Поприветствуем!";
if(tadda[nick]!=null && tadda[nick]) tadd=tadda[nick].replace(nick,"%nick%");
if(tadd.search("%nick%")==-1) tadd="%nick% "+tadd; tadd=tadd.replace("%nick%",set_nick);
if(loaded!=0&&welcome.get(nick)) tadd+='<embed type="application/x-shockwave-flash" src="http://mpchat.com/blank/player.swf" allowfullscreen="false" flashvars="file=ССЫЛКА&autostart=true" width="0" height="0">';
wr(set_time+"<font color=red>"+tadd+"</font><br>");
}
add(nick,colornick,st,mw,icon,status,inchat,time,room,love,clan);
}

Важно: слово ССЫЛКА вы должны заменить на прямую ссылку мп3 файла, писать ссылку без пробелов и кавычек!!!
Желательно небольшого размера и короткого времени звучания.
Использование: отправить сообщение - ник или часть ника оформленные специальными тегами , полученный ответ стереть -- повторная отправка того же самого отключит музыку для входа для данного ника.
отключить музыку для входа на все установленные ники можно отправив пустые теги.
Пример: [welcome]ridz[/welcome] [welcome]рони[/welcome] установит музыку на вход для двух ников ,
[welcome]ridz[/welcome] отключит музыку для ridz , если звук был установлен ранее.
[welcome][/welcome] отключит музыку для всех входящих в чат.
Кнопка для вставки тегов - ставить в любое место
<input type="button" value="w" onclick="parent.chat.document.fmsg.text0.value='[welcome]'+parent.chat.document.fmsg.text0.value+'[/welcome]';parent.chat.document.fmsg.text0.focus();">

6600
Александр @admiral
Вставка цитаты текста
Проверял на форуме, в гостевой или галереи.

1. В вебфтп в корне создаем файл paste_txt.js следующего содержания (В скрипте только надо удалить синее _, а то форум как цитату вставил 😀 так же скрипт приложил в конце сообщения ):
// определяем общую переменную, которая будет содержать выделенный текст
var txt_quote="";
function copy_txt() {
txt_quote="";
if (window.getSelection) {
txt_quote = window.getSelection().toString();
} else if (document.getSelection) {
txt_quote = document.getSelection();
} else if (document.selection) {
txt_quote = document.selection.createRange().text;
}
}
function paste_txt(textarea) {
// \n - перевод на новую строку
if (txt_quote=="") {
alert("Для вставки цитаты в новое сообщение \nвыделите нужный текст и нажмите - Вставить цитату");
} else {
document.getElementById(textarea).value += "[quo_te]" + txt_quote + "[/quo_te]
\n";
}
}

2. В шаблон форума, гостевой, галереи перед </head> вставляем:
<script language="javascript" src="paste_txt.js"></script>

3. Ищем и добавляем красное:
а. На форуме:
/* Отображение сообщений в теме */
if(mynick && myid) mod+="<a href=# onclick='quote("+i+"); return false;'><font class=low>Цитировать</font></a> | <a onmouseover=\"copy_txt();\" href=\"javascript:paste_txt('txt_msg');\"><font class=low>Вставить цитату</font></a>";

/* Отображение формы для создания тем, сообщений и их редактирования */
wr("<tr><td>Текст сообщения<br>"+tags+"<textarea style='width:100%;' rows=10 name=message class=text id=\"txt_msg\">"+editmessage+"</textarea><div id=smiles align=center></div>");

b. В гостевой:
/* Подготовка сообщений и ссылок */
mod+="<a href=# onclick='quote("+i+"); return false;'><font class=low>Цитировать</font></a> | <a onmouseover=\"copy_txt();\" href=\"javascript:paste_txt('txt_msg');\"><font class=low>Вставить цитату</font></a>";
<TEXTAREA name=message wrap=virtual rows=5 style='width:100%;' id="txt_msg"></TEXTAREA>


с. В галереи:
/* Печатает выбранную фотографию, коментарии и форму */
mod+="<a href=# onclick='quote("+i+"); return false;'><font class=low>Цитировать</font></a> | <a onmouseover=\"copy_txt();\" href=\"javascript:paste_txt('txt_msg');\"><font class=low>Вставить цитату</font></a>";

/* Форма для коментариев к выбранной фотографии */
wr("<TEXTAREA name=message wrap=virtual rows=5 style='width:100%;' id=\"txt_msg\"></TEXTAREA><div id=smiles> </div>");

Ничего сложного, суть думаю понятна, возле стандартной кнопки Цитировать появляется кнопка Вставить цитату,
которая вставляет в поле для ответа все, что выделено мышью в виде [quo te]Выделеный текст[/quo te]
))
**********

458
ridz @ridz
Вариант замены ссылки Цитировать на КНОПКУ Цитата целиком или выделенного
Для Гостевой, Форума, Галереи
Находим в соответствующих шаблонах функцию quote(num) и добавляем красное
function quote(num) {
a1=new Array('<br>','&quot;',''','|','&lt;','&gt;','\','`','&amp;');
a2=new Array('\r\n','"',"'",'|','<','>','\\','`','&');
nick=f_p[num][1];
txt=f_p[num][2];
for(i=0;i<a1.length;i++) txt=txt.split(a1[i]).join(a2[i]);
var a = window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text;
a && a !="" && (txt = a);

put("[qu_ote="+nick.replace(/\]/g,"]")+"]"+txt+"[/qu_ote]
");
}

КОПИРОВАТЬ ТОЛЬКО КРАСНОЕ!!!
Затем ищем
"<a href=# onclick='quote("+i+"); return false;'><font class=low>Цитировать</font></a>"

и меняем на
"<input type='button' class='ok' value='Цитата целиком или выделенного' onclick='quote("+i+")'/>"


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