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

Отметка (маркировка) сообщений пользователя

 

596
Сергей @Князь_Пипецкий
Установил себе вот такое: https://vmeste.eu/forum?pid=263165#p263165

При включении какому либо пользователю маркировки его сообщений (при нажатии на кнопку) перезагружается окно сообщений.

Хотел этого избежать.

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();\">";

для чего убрал выделенное красным.

При этом кнопка перестает работать. Не переключается, и сообщения не выделяются.
Подскажите пожалуйста, можно ли все таки как то это дело поправить?

1007
BETEPAH @BETEPAH
По идее должно работать без красного. Только уже загруженные сообщения не будут выделены, а те, которые будут отправлены после нажатия кнопки, должны выделяться.
Может что-то лишнее захватили когда убирали выделенное?

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

По идее должно работать без красного. Только уже загруженные сообщения не будут выделены, а те, которые будут отправлены после нажатия кнопки, должны выделяться.
Может что-то лишнее захватили когда убирали выделенное?

Я тоже думал что должно. В других вариантах (например чекбоксы для отключения иконок и т.д.) прокатывало.
А в данном случае просто кнопочка становится неактивной. 🙁

1007
BETEPAH @BETEPAH
Князь_Пипецкий пишет:

BETEPAH пишет:

По идее должно работать без красного. Только уже загруженные сообщения не будут выделены, а те, которые будут отправлены после нажатия кнопки, должны выделяться.
Может что-то лишнее захватили когда убирали выделенное?

Я тоже думал что должно. В других вариантах (например чекбоксы для отключения иконок и т.д.) прокатывало.
А в данном случае просто кнопочка становится неактивной. 🙁

Т.е. все-таки переключается? 😀
Тогда надо смотреть на месте. В каком чате устанавливаете?

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

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

BETEPAH пишет:

По идее должно работать без красного. Только уже загруженные сообщения не будут выделены, а те, которые будут отправлены после нажатия кнопки, должны выделяться.
Может что-то лишнее захватили когда убирали выделенное?

Я тоже думал что должно. В других вариантах (например чекбоксы для отключения иконок и т.д.) прокатывало.
А в данном случае просто кнопочка становится неактивной. 🙁

Т.е. все-таки переключается? 😀
Тогда надо смотреть на месте. В каком чате устанавливаете?

**********

1007
BETEPAH @BETEPAH
Попробуйте заменить
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();\">";

на
var ign_img_no = "ССЫЛКА НА КАРТИНКУ ВЫДЕЛЕНИЕ СООБЩЕНИЙ ОТКЛЮЧЕНО";
var ign_img_yes = "ССЫЛКА НА КАРТИНКУ ВЫДЕЛЕНИЕ СООБЩЕНИЙ ВКЛЮЧЕНО";
var ign_img = (mark().indexOf(nick+'|') >= 0) ? ign_img_yes : ign_img_no;
set_mark = " <img src=" + ign_img + " style='border:0px; cursor:pointer;' title='Выделить сообщения " + nick + "' onclick=\"this.src = (this.src == ign_img_yes) ? ign_img_no : ign_img_yes; parent.mark('" + nick + "')\">";

596
Сергей @Князь_Пипецкий
К сожалению - не работает вообще.

Ни с parent.loadframes();

Ни без parent.loadframes();

Кнопки цвет не меняют, рамки не выводятся 🙁

2615
Сергей @Pegass
Князь_Пипецкий, То что стоит у тебя сейчас прекрасно работает

1) с перезагрузкой - отлично работает,
2) без перезагрузки - не подсвечиваются предыдущие сообщения и цвет кнопки не меняется

Собственно от обоих вариантов пользы никакой ибо подсветить вероятно надо то что в логе уже есть

итак, смену цвета кнопки можно скоммуниздить с кнопки игнора или из сообщения Жени (выше)

скрипт сейчас писать не буду, времени нет опишу идею

при нажатии на кнопку должна выполниться сначала новая функция, а потом имеющаяся на текущий момент

Итак новая функция должна пробежаться по всем строкам сообщений в поисках ника сразу после времени и в случае если найдёт нарисовать подсветку, если никто не напишет, то поковыряюсь сам на неделе

1007
BETEPAH @BETEPAH
Pegass пишет:

2) без перезагрузки - не подсвечиваются предыдущие сообщения и цвет кнопки не меняется

Ну, да. И я об этом же говорил. Если не перезагружать фреймы (как у ridz), cообщения, которые были до нажатия, не будут подсвечиваться этой функцией. Сообщения, которые будут после нажатия, будут подсвечиваться (и подсвечиваются в вашем чате сейчас без перезагрузки фреймов). Иконку кнопки менять надо отдельным кодом, через this.src.

2615
Сергей @Pegass
Ух
начнем
Стили
добавляем
.show_msg_on {border: 2px solid red;}
.show_msg_off {border: none;}

-=Скрипты в чате=- [Функции общие]
добавляем синее

/* Подсветка сообщений ника */
var mark_img_no = "http://mpchat.com/serhio64/img/on_mark.png";
var mark_img_yes = "http://mpchat.com/serhio64/img/off_mark.png";
var mark_class_no = "show_msg_off";
var mark_class_yes = "show_msg_on";
var m_show_msg = new Array();
function add_del_show_nick(nick) { var tmp=true; for (var i=0; i<m_show_msg.length; i++) if(m_show_msg[i]==nick){m_show_msg.splice(i,1); tmp=false; i--;} if (tmp) m_show_msg.splice(0,0,nick); }
function ins_nick(txt) { var temp = new Array(); var tmp=false; temp = txt.split('tonick(')[1]; if(temp) { temp=temp.split(': ')[0].replace(/((?:\"|\'))/mig, '').replace(/\s+/g,''); for (var i=0; i<m_show_msg.length; i++) if(m_show_msg[i]==temp) tmp=true; } return tmp; }

function show_msg(nick) { add_del_show_nick(nick); var obj=document.getElementById("leftdiv");var div=obj.getElementsByTagName('div'); for (var k=0; k<div.length; k++) { if(ins_nick(div[k].innerHTML)) div[k].className=mark_class_yes; else if(div[k].className==mark_class_yes) div[k].className=mark_class_no; } }



/* Удаляет старое сообщ. печатает новое и прокручивает вниз */
function wr(text) {
var leftdiv=document.getElementById("leftdiv");
if(loaded==1 && maxmsgs>0) {
var count=leftdiv.getElementsByTagName('div').length;
if(maxmsgs<count) leftdiv.removeChild(leftdiv.getElementsByTagName('div')[0]);
}
var div=document.createElement('div'); div.innerHTML=text;
if(ins_nick(text)) div.className=mark_class_yes; else if(div.className==mark_class_yes) div.className=mark_class_no;
leftdiv.appendChild(div);
if(loaded==1) up();
}

ну и кнопку в никлист

var mark_img = mark_img_no;
for (var i=0; i<m_show_msg.length; i++) if(m_show_msg[i]==nick) mark_img = mark_img_yes;
var set_mark = " <img src=" + mark_img + " style='border:0px; cursor:pointer;' title='Выделить сообщения " + nick + "' onclick=\"this.src = (this.src == mark_img_yes) ? mark_img_no : mark_img_yes; parent.show_msg('"+ nick+ "');\">";

Отредактировано Pegass - 23.01.2013
596
Сергей @Князь_Пипецкий
Кнопки меняют цвет без перезагрузки окна сообщений.
В окно сообщений сообщения вообще не отправляются.
В приват отправляются.

2615
Сергей @Pegass
у меня всё чудно

596
Сергей @Князь_Пипецкий
Да, все отлично!
Эт я протупил видимо где то.
Все работает!
Спасибо огромное!

2615
Сергей @Pegass
Обнаружен косячок в кнопке, UP

плюс надо ещё подумать над кнопкой снять все выделения, ждите ещё обновления(нужна на случай если пользователь вышел)