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

FAQ 2.0 - вопросы и ответы (не флудить!)

 

7094
Dim @Render
Князь_Пипецкий пишет:

Два вопроса:

В1
Возможно ли сконструировать чекбокс для выбора "отображать смайлы/запретить показ смайлов"
Если возможно, подскажите, как? Пожалуйста.
Выглядит возможно сей вопрос глупо, но есть пользователи категории "юзер-капризный", которым не нравится вся эта бижутерия.

<input type="checkbox" onclick="if(smileon) {smileon=0;} else {smileon=1;}" title="вкл/выкл звуки входящих сообщений"> - вкл/выкл смайлы

в скриптах после /* [НАСТРОЙКИ] */

/* Смайлы */
var smileon=0;

перед /* Добавление граф ников, градиента и формат времени */

/* Функция отключения смайлов */
if(smileon) {text=text.replace(/<.*\S+ title="(\s.*\s)" \S+.*>/gim,"<a href=#>$1</a>"); /*console.log(text);*/}

1007
BETEPAH @BETEPAH
ВУТ, код полон странностей.
Во-первых, для чего если подключаете jQuery использовать велосипеды с добавлением обработчиков.
Во-вторых, что дает это странное условие?
if (document.getElementById && document.createTextNode){
В-третьих, зачем на ровном месте использовать регулярку?
if (/\bautoHeight\b/.test(o[i].className)){
Ну, и так... в курсе ли что jquery 2.0.3 не поддерживается IE8, процент которого еще достаточно велик из-за невозможности обновить IE на WinXP?

2970
удалён @Foggy
Rafer пишет:

В: Когда пишешь человеку, его ник меняет цвет твоего текста. Как закрепить цвет ника, когда ему пишут?

Его ник? Меняет цвет твоего текста? 😲 Ссылку в студию или опиши подробней и точней, что происходит.

[spoiler=цитата ВУТ]
ВУТ пишет:

Есть инфрэйм с "резиновым" значением Height... всё работает и под всеми браузерами, но почему то под мозилой не пашет(((
а не пашет скорее всего из за того, что я неправильно прописал параметры именно здесь(см.ниже):

<script>document.write("<iframe class='autoHeight' allowtransparency='true' frameborder='no' width='200' scrolling='no' name=sml src=index.php?inc=smile&table=2-31-0&frame=1&cat=fav&"+parent.yourkey+"></iframe>");</script>

Очень прошу, помогите подружить эту функцию и для мозилы!

Вот сам скрипт, отвечающий за автоматическое растягивание инфрэйма по параметру Height:

<script src="http://yandex.st/jquery/2.0.3/jquery.min.js"></script>
<script>
function doIframe(){
o = document.getElementsByTagName('iframe');
for(i=0;i<o.length;i++){
if (/\bautoHeight\b/.test(o[i].className)){
setHeight(o[i]);
addEvent(o[i],'load', doIframe);
}
}
}

function setHeight(e){
if(e.contentDocument){
e.height = e.contentDocument.body.offsetHeight + 35;
} else {
e.height = e.contentWindow.document.body.scrollHeight;
}
}

function addEvent(obj, evType, fn){
if(obj.addEventListener)
{
obj.addEventListener(evType, fn,false);
return true;
} else if (obj.attachEvent){
var r = obj.attachEvent("on"+evType, fn);
return r;
} else {
return false;
}
}

if (document.getElementById && document.createTextNode){
addEvent(window,'load', doIframe);
}
</script>

Ну а это сам имфрэйм смайлов который должен по идее автоматически растягиваться по Height: (тут и кроеться ошибка)

<script>document.write("<iframe class='autoHeight' allowtransparency='true' frameborder='no' width='200' scrolling='no' name=sml src=index.php?inc=smile&table=2-31-0&frame=1&cat=fav&"+parent.yourkey+"></iframe>");</script>

[/spoiler]
ВУТ, всю эту жесть
if (/\bautoHeight\b/.test(o[i].className)){
сразу заменяйте на это
if (o[i].classList.contains('autoHeight')) {

а если больше одного фрейма смайлов не планируется, вместо класса задайте id с тем же именем, и это
o = document.getElementsByTagName('iframe');
for(i=0;i<o.length;i++){
if (/\bautoHeight\b/.test(o[i].className)){

сразу поменяйте на это
o = document.getElementById('autoHeight');
ну и скобки закрытия функции for и проверки if не забудьте убрать. ну и используйте вместо o[i] просто o
и забудьте про jQuery, если на голом js'е красивые функции знаете.

Блин. Вообще. Так не делается! Вы издеваетесь над посетителями, используя ресурсы не по назначению! У них же каждый раз при открытии мало того, что высчитывается всё это каждый раз, так ещё и фрейм перерисовывается много раз, так ещё и класс ищется по регулярке. А, и ещё всё это должно "дёргаться", ибо ширина меняется после onload.

Задайте стандартную ширину фрейму смайлов, а не e.contentDocument.body.offsetHeight + 35; И не делайте изменения ширины через js. Стандартному .autoHeight (который обычно #smilediv вообще-то у нас) задайте в стилях нужный width. И, если хотите позаботиться о посетителях, меняйте его в зависимости от ширины экрана, пропишите медиа-выражения.

p.s. ну да, напишите всё-таки, зачем там используется проверка наличия создания TextNode и обращения к эл-ту по id. Дико интересно и не понятно.

1163
Денис @Анатолич
djoker пишет:

скажите плиз , возможно ли в чат поставить дополнительный движок специально для тех у кого плохо со зрением . я такое видел на сайте **********

сделайте еще один файл стилей для тех у кого плохо со зрением. Пропишите там крупные буквы, на контрастном фоне, поставьте в чат кнопку переключения стилей.
или без файла стилей пропишите как тут. https://vmeste.eu/forum?tid=9914
Только кому это нужно? тот кто плохо видит, или очки носит, или знает как средствами ОС и браузера сделать крупный шрифт на сайтах.

Отредактировано Анатолич - 19.02.2014
1163
Денис @Анатолич
VoDka пишет:

В: Снял в магазине возможность покупки граф ника, но они остались в пользователей. Как убрать?

не проверял, но поставить минимальный срок на граф ники. или в скриптах попробуйте тут поковрыяться

/* Граф. ники: 0 - выкл, 1 - вкл, позиции в списке - это номера функций "cmd" от 0-10(11-никлист) */
var use_gn=1;
var gnok=new Array(1,1,1,0,0,0,1,0,0,0,0,1);

1 поменяйте на 0
еще много вариантов. но вроде скриптами убить Граф ники проще всего.

602
Ventage @new1
VipeR707 пишет:

Народ подскажите а то совсем туплю как сделать кнопку что бы ее только админы и модеры могли видеть? Заранее спасибо!

<script type="text/javascript">if(admin==1) document.write("кнопка");</script>

Отредактировано new1 - 20.02.2014
4619
Web3r @Web3r
ishkiniaev пишет:

Вопрос на счет базы данных.
Есть 3 файла sys
как их сохранить на пк? И как в случае каких-нибудь проблем с базой восстановить все?

Пользователи / База данных. Кликаешь но названию базы и она загружается тебе.
Там же в форме выше выбираешь базу с компа, нажимаешь загрузить, затем выбираешь её в списке "Резервные копии баз данных MySQL" и, собственно, "Установить базу".

4619
Web3r @Web3r
В: Код для определенного ника, как задать курсив или жиность нику? в этом коде

... set_nick="<a class=s-nick href=\"javascript:void(0);\" ...

В стили:
.s-nick {
font-style: italic; /* курсив */
font-weight: bold; /* начертание */
}

7094
Dim @Render
VoDka пишет:

Pegass, Хочу сделать себе выбор пола (неизвестный), но только для определенного статуса ну или ника.

В настройках анкеты нельзя определить статус, разве что по нику...

114
Romirios @Samy_Chiks
Можно ли как-то совместить 2 чата?Тоесть.Есть к примеру чат Тест и Тест1.В чате "Тест" в меню у меня есть раздел "тест1".Нажимая на него я перешёл в другой чат,со своим дизайном и скриптами,но при этом в чате "Тест1",лог сообщений тот же что в "тест" и юзеры сидят те же что и в "тест".

Я знаю что это делается через скрипты.Но просто Это можно сделать только на тарифе Владелец?Или возможно сделать на любом тарифе?

2615
Сергей @Pegass
Samy_Chiks пишет:

Можно ли как-то совместить 2 чата?Тоесть.Есть к примеру чат Тест и Тест1.В чате "Тест" в меню у меня есть раздел "тест1".Нажимая на него я перешёл в другой чат,со своим дизайном и скриптами,но при этом в чате "Тест1",лог сообщений тот же что в "тест" и юзеры сидят те же что и в "тест".

Я знаю что это делается через скрипты.Но просто Это можно сделать только на тарифе Владелец?Или возможно сделать на любом тарифе?

если я правильно понял, то вам может помочь версия разработчика, используйте её как вторую версию чата

114
Romirios @Samy_Chiks
Pegass пишет:

Samy_Chiks пишет:

Можно ли как-то совместить 2 чата?Тоесть.Есть к примеру чат Тест и Тест1.В чате "Тест" в меню у меня есть раздел "тест1".Нажимая на него я перешёл в другой чат,со своим дизайном и скриптами,но при этом в чате "Тест1",лог сообщений тот же что в "тест" и юзеры сидят те же что и в "тест".

Я знаю что это делается через скрипты.Но просто Это можно сделать только на тарифе Владелец?Или возможно сделать на любом тарифе?

если я правильно понял, то вам может помочь версия разработчика, используйте её как вторую версию чата

Спасибо.

114
Romirios @Samy_Chiks
Samy_Chiks пишет:

Pegass пишет:

Samy_Chiks пишет:

Можно ли как-то совместить 2 чата?Тоесть.Есть к примеру чат Тест и Тест1.В чате "Тест" в меню у меня есть раздел "тест1".Нажимая на него я перешёл в другой чат,со своим дизайном и скриптами,но при этом в чате "Тест1",лог сообщений тот же что в "тест" и юзеры сидят те же что и в "тест".

Я знаю что это делается через скрипты.Но просто Это можно сделать только на тарифе Владелец?Или возможно сделать на любом тарифе?

если я правильно понял, то вам может помочь версия разработчика, используйте её как вторую версию чата

Спасибо.

Я впервые работаю в режиме разработчика.Разобрался что к чему,но не разобрался как заходить собственно на ту версию чата которую я делаю в режиме разработчика.

2615
Сергей @Pegass
Samy_Chiks, chat.ru/?dev=0 chat.ru/?dev=1 chat.ru/?dev=2 chat.ru/?dev=3
0 - основная
1-3 - версии

114
Romirios @Samy_Chiks
Pegass пишет:

Samy_Chiks, chat.ru/?dev=0 chat.ru/?dev=1 chat.ru/?dev=2 chat.ru/?dev=3
0 - основная
1-3 - версии

Благодарю.

4619
Web3r @Web3r
Добрался опять-таки до мпчата... Господа, как задать вывод wr() в антифлуде только раз в 3 секунды? Мои скудные познания в js не помогли:

if(msg==oldmsg) {
setTimeout('wr("Пожалуйста, не флудите");', 3000);
return false;
}

7094
Dim @Render
Web3r,
Возможно так:

if(msg==oldmsg) {
window.setTimeout(function(){wr("Пожалуйста, не флудите");},3000);
return false;
}

Но не уверен, что wr() будет работать в /* Обрабатывает строку ввода текста для отправления */

1007
BETEPAH @BETEPAH
Web3r, а зачем это выводить в лог сообщений? Проще же аллертом или каким-нибудь плагином, выводящим сообщения.
У меня, например, alertify подключен для этого.
Ну и приведенный код просто через 3 секунды выведет сообщение о том, что есть повтор. Я не совсем понял, что требуется по задаче, но похоже не это.

2970
удалён @Foggy
Насколько я понял, нужно вывести не алертом, а просто в лог? И не через стандартное время, а через другое? Или в чём задача? Если так, то установить в параметрах чата в инпуте антифлудера 3 минуты, а в скриптах чата в функции msg_flood поменять alert на wr.

4619
Web3r @Web3r
Допустим, юзер пишет две фразы (одинаковые) подряд, на второй фразе, соответственно, появляется wr("Пожалуйста, не флудите"). Юзер пишет фразу в третий, четвертый раз и т.д; но wr() при этом будет выводиться только через каждые N-секунд, чтобы окно сообщений от него не зафлудилось.

Проще говоря, между выводами этого wr() надо сделать паузу в 3 секунды, хотя бы...

Отредактировано Web3r - 02.03.2014