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

любимые смайлы 4версия

 

83
Елена @svetlaya
Вопрос такой;
искала на форуме, но всё что нашла не подходит.
Возможно ли в 4й версии зделать так что бы любимые смайлы открывались под таблицей участников или над строкой ввода сообщений?

2970
удалён @Foggy
возможно.
прежде, чем устанавливать, сделйте бэкапы всего.
под таблицей участников:
после <div id=users></div> создайте див смайлов и внутри него пропишите ифрейм вот так:
<div id="smilediv"><iframe name="smileframe" src="mleft.html"></iframe></div>
в стилях укажите, что див смайлов по умолчанию скрыт вот так
.smilediv {display:none}
и в скриптах (у меня в конце скриптов) разместите код
// блок смайлов
var smile=0; // устанавливает переменную и начальное значение - смайлы скрыты
function smileblock(){ // функция работы с дивом смайлов
if(smile==0){ // если смайлы скрыты, то
document.getElementById("smilediv").style.display="block"; // они открываются
parent.smileframe.location.href='index.php?inc=smile&table=1-50-0&frame=1&cat=fav&'+parent.yourkey; // в фрейме смайлов открываются любимые смайлы
smile=1; // переменная меняет значение на 1, то есть смайлы открыты
document.fmsg.text0.focus(); // курсор падает в строку ввода
}
else { // иначе, то есть когда смайлы уже открыты
document.getElementById("smilediv").style.display="none"; // они скрываются
parent.smileframe.location.href='mleft.html'; // возвращает фрейм в исходное состояние
smile=0; // возвращает переменной смайлов значение 0, то есть скрывает их
document.fmsg.text0.focus(); // и снова курсор падает в строку ввода
}
}

если хотите над строкой ввода сообщений, тоже самое, только разместите див и ифрейм над ней, а не под никлистом.

остальное (ширина блока, ифрейма, их высота, бордюры и прочее настраивайте в стилях на свой вкус)
данный скрипт не тестировал, ибо он - переписанный мой, а мой (работает у меня) - переписанный скрипт викторины. но всё расписал комментариями, должно быть понятно. надеюсь, не допустил ошибок.

в нужное место ссылку, которая будет открывать сие чудо
<a href="javascript:parent.smileblock();" title="Смайлы" class="smile">Смайлы</a>
как оно у меня?
Показать текст

Отредактировано Foggy - 15.09.2011
83
Елена @svetlaya
Foggy ; Огромное спасибо! Всё получилось.

83
Елена @svetlaya
ээх сейчас попробовала с эксплорера и с мазилы, айфрейм не открывается, только с гугл хрома. В чём может быть проблема?

1007
BETEPAH @BETEPAH
svetlaya пишет:

ээх сейчас попробовала с эксплорера и с мазилы, айфрейм не открывается, только с гугл хрома. В чём может быть проблема?

Адрес чата не дадите?
А еще можно без введения переменной var smile=0 сделать. Просто проверять в условии
document.getElementById("smilediv").style.display=="block"

2970
удалён @Foggy
BETEPAH, проверок многовасто тогда, код дольше выполняется. в таком случае можно эту переменную сделать аргументом функции, если уж сокращать.
svetlaya, у меня вначале была такая проблема тоже, попробуйте задать, как у меня максимальную ширину и высоту ифрейма. Если не поможет, то да, нужна ссылка.
ещё, возможно, у вас нет документа mleft.html (хотя должен быть по стандарту). Если нет - создайте его. Хотя по идее это не должно влиять.

Отредактировано Foggy - 26.08.2011
596
Сергей @Князь_Пипецкий
Странный эффект получил при установке данного кода.

При открытии блока смайлов - на секунду показывается содержимое файла mleft.html и сразу же внутри блока показываются страницы основных смайлов.

А когда вместо parent.smileframe.location.href='index.php?inc=smile&table=1-50-0&frame=1&'+parent.yourkey;
написал parent.smileframe.location.href='mleft.html';

получил то, чего хотел - скрывающийся блок быстрых смайлов 😀

2970
удалён @Foggy
Князь_Пипецкий, речь о разном. svetlaya просила ЛЮБИМЫЕ смайлы, а вам нужны БЫСТРЫЕ. Это разный функционал. В вашем случае эти две строки, которые вы указали, не нужны вовсе.

596
Сергей @Князь_Пипецкий
Ну вот добрел я до платного чата. Поставил код любимых смайлов. Все встало как родное за единственным исключением.
Никак не могу блок любимых смайлов приютить.
Вернее не так. Расположить то его я понял как в нужном месте. Но вот размер ифрейма никак не могу сделать как мне нужно.
А нужно, что бы он был прилеплен в правому краю окна сообщений, размер по вертикали как и само окно сообщений, а ширина 70px
Ну никак не соображу...что только не делал.
Помогите, люди добрыя?

2615
Сергей @Pegass
а нахрена так запариваться?

<a href="#" onclick="obj=document.getElementById('lovesmail'); if(obj.style.display=='none') obj.style.display='inline'; else obj.style.display='none'; return false;">любимые рожицы</a>
<div id="lovesmail"><script>document.write("<iframe allowtransparency='true' frameborder='no' name=sml src=index.php?inc=smile&table=1-50-0&frame=1&cat=fav&"+parent.yourkey+" style='position:relative; width:100%; height:8000px; overflow:hidden; border:0px;'></iframe>");</script></div>

Значения высоты у iframe это большая проблема, особенно когда ваши смайлы не одинаковы по высоте - мучайтесь, у себя я сильно выпендрился со смайлами в юзербаре - можете зайти посмотреть

Отредактировано Pegass - 13.09.2011
2970
удалён @Foggy
Pegass, разница только в том, что курсор падает в поле ввода после щелчка, но это можно сделать и в вашем коде. но вообще, я написал то, что просили. вместо того, чтобы встраивать смайлы туда, куда получится, хочется встроить туда, куда хочется.
но если уж на то пошло, в разы короче сделать с помощью toggle jquery. если уж решили сокращать, то давайте оснавательно. в вашем чате, Pegass, подключен jQuery, а значит можно и вот так ссылку сделать
<p onclick="$('#lovesmail').toggle()">Показать/Скрыть блок</p>
а вторую строку вписать в скрипты, оставив див пустым, опять же не без jQuery (куда уж вам там угодно)
$('#lovesmail').html="<iframe allowtransparency='true' frameborder='no' name=sml src=index.php?inc=smile&table=1-50-0&frame=1&cat=fav&"+parent.yourkey+" style='position:relative; width:100%; height:8000px; overflow:hidden; border:0px;'></iframe>");</script>";
но вообще, я всё сокращаю скрипты чата, а этой мелочи так и не использовал. спасибо за мысль сократить это)
p.s. давайте уже использовать элементы по их семантическому назначению? тег <a> - переход на другую страницу, а не то "по чему нужно кликать". onclick можно навесить почти любому элементу. хотя тут я призываю не только вас. и себя и всех остальных.

Отредактировано Foggy - 13.09.2011
596
Сергей @Князь_Пипецкий
svetlaya пишет:

ээх сейчас попробовала с эксплорера и с мазилы, айфрейм не открывается, только с гугл хрома. В чём может быть проблема?

В Опере тоже самое 🙁

Это что, же, пользователям браузер из-за любимых смайлов менять?

Ведь работает только в хроме.

596
Сергей @Князь_Пипецкий
BETEPAH пишет:

svetlaya пишет:

ээх сейчас попробовала с эксплорера и с мазилы, айфрейм не открывается, только с гугл хрома. В чём может быть проблема?

Адрес чата не дадите?
А еще можно без введения переменной var smile=0 сделать. Просто проверять в условии
document.getElementById("smilediv").style.display=="block"

Не помогло. 🙁

2970
удалён @Foggy
Князь_Пипецкий, дайте адрес чата. По идее всё должно работать.

596
Сергей @Князь_Пипецкий
Foggy пишет:

Князь_Пипецкий, дайте адрес чата. По идее всё должно работать.

**********

2970
удалён @Foggy
Князь_Пипецкий,
// блок смайлов
var smile=0; // устанавливает переменную и начальное значение - смайлы скрыты
function smileblock(){ // функция работы с дивом смайлов
if(smile==0){ // если смайлы скрыты, то
document.getElementById("smilediv").style.display="block"; // они открываются
document.getElementById("leftdiv").style.left="110px";
document.getElementById("privatdiv").style.left="110px";
parent.smileframe.location.href='index.php?inc=smile&table=1-50-0&frame=1&cat=fav&'+parent.yourkey; // в фрейме смайлов открываются любимые смайлы
smile=1; // переменная меняет значение на 1, то есть смайлы открыты
document.fmsg.text0.focus(); // курсор падает в строку ввода
}
else { // иначе, то есть когда смайлы уже открыты
document.getElementById("smilediv").style.display="none"; // они скрываются
document.getElementById("leftdiv").style.left="0";
document.getElementById("privatdiv").style.left="0";
parent.smileframe.location.href='mleft.html'; // возвращает фрейм в исходное состояние
smile=0; // возвращает переменной смайлов значение 0, то есть скрывает их
document.fmsg.text0.focus(); // и снова курсор падает в строку ввода
}
}

Почему у тебя не открывается в опере - вопрос. Этот код по идее везде должен работать. Но у тебя в скриптах куча ошибок (4 минимум). Скорее всего из-за какой-то другой ошибки и это не работает. В моём чате, к примеру, в опере всё работает. А все ошибки в твоём чате чинить, знаешь ли, не резонно, прости уж.

596
Сергей @Князь_Пипецкий
Спасибо огромное за помощь!

230
serega18 @serega18
Foggy пишет:

возможно.
прежде, чем устанавливать, сделйте бэкапы всего.
под таблицей участников:
после <div id=users></div> создайте див смайлов и внутри него пропишите ифрейм вот так:
<div id="smilediv"><iframe name="smileframe" src="mleft.html"></iframe></div>
в стилях укажите, что див смайлов по умолчанию скрыт вот так
.smilediv {display:none}
и в скриптах (у меня в конце скриптов) разместите код
// блок смайлов
var smile=0; // устанавливает переменную и начальное значение - смайлы скрыты
function smileblock(){ // функция работы с дивом смайлов
if(smile==0){ // если смайлы скрыты, то
document.getElementById("smilediv").style.display="block"; // они открываются
parent.smileframe.location.href='index.php?inc=smile&table=1-50-0&frame=1&cat=fav&'+parent.yourkey; // в фрейме смайлов открываются любимые смайлы
smile=1; // переменная меняет значение на 1, то есть смайлы открыты
document.fmsg.text0.focus(); // курсор падает в строку ввода
}
else { // иначе, то есть когда смайлы уже открыты
document.getElementById("smilediv").style.display="none"; // они скрываются
parent.smileframe.location.href='mleft.html'; // возвращает фрейм в исходное состояние
smile=0; // возвращает переменной смайлов значение 0, то есть скрывает их
document.fmsg.text0.focus(); // и снова курсор падает в строку ввода
}
}

если хотите над строкой ввода сообщений, тоже самое, только разместите див и ифрейм над ней, а не под никлистом.

остальное (ширина блока, ифрейма, их высота, бордюры и прочее настраивайте в стилях на свой вкус)
данный скрипт не тестировал, ибо он - переписанный мой, а мой (работает у меня) - переписанный скрипт викторины. но всё расписал комментариями, должно быть понятно. надеюсь, не допустил ошибок.

в нужное место ссылку, которая будет открывать сие чудо
<a href="javascript:parent.smileblock();" title="Смайлы" class="smile">Смайлы</a>
как оно у меня?
Показать текст

касаемо данной темы:
Как в стилях прописать,чтобы слово "смайлы",селектор выбора смайлов и сам ряд смайлов шёл строго по центру в smileframe,пробывал так width: 110px align:center; - центрируеться,но при этом блок смайлов "залезает" на сообщения и занимает не 110 пикселей,а гораздо больше в поле сообщений(

Отредактировано serega18 - 08.11.2012
596
Сергей @Князь_Пипецкий
вот что у меня в стилях:

/* стиль быстрых смайлов */
.smilediv { display:none }
#smilediv
{
display:none;
position: absolute;
width: 110px;
left: 0;
bottom: 70px;
top: 0;
z-index: 1;
border: 0;
}

#smilediv iframe
{
outline: none;
margin: 0;
padding: 0;
border: 0;
width:100%;
height:100%;
}

div > .delete {
color: #CCCCCC;
cursor: pointer;
display: block;
float: right;
font: 14px Verdana;
height: 6px;
margin: -3px 5px;
text-decoration: none;
visibility: hidden;
}
div > .delete span {
color: #AAAAAA;
font: bold 14px "Arial Black";
}
div > .delete:hover {
color: #666666;
font: 14px Verdana;
text-decoration: none;
}
div > .delete:hover span {
color: #666666;
font: bold 14px "Arial Black";
text-decoration: none;
}

1390
Ванья @ВанькаRU
Князь_Пипецкий, че это за порнография ? 🐱‍👤

div >