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

Топ100 с чередованием фона строк и выделением под Мускуль.

 

1163
Денис @Анатолич
Хотел узнать. Можно ли под мускуль сделать такой же удобный и красивый топ 100 как Здесь предлагал ridz , для старого варианта

2615
Сергей @Pegass
Для этого нынче есть шаблон - верти как нравится))))

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

Для этого нынче есть шаблон - верти как нравится))))

Не умею)
Подсказал бы кто) Вас просить уже неловко и так много полезных скриптов допилили)

2615
Сергей @Pegass
В шаблоне уже полюбившийся кусок))))
Показать текст


собственно нас интересует лишь вывод строки document.write('<tr><td align=right>'+num+'.</td>'+wr+'</tr>');
мы будем назначать классы для TR, дабы потом стилизовать как нравится
нам понадобится ещё один счётчик, var stylenum = 0;

Итого
var count=0;
var stylenum = 0;
for(num in u) {
user=u[num]; wr='';
for(var i=0;i<only.length;i++) {
var field=only.charAt(i);
if(field=='1') wr+='<td><a href=?inc=info&userid='+user[0]+' target=_blank><font color='+user['color']+'>'+user[field]+'</font></a></td>';
else if(field=='2') {var hours=Math.floor(user[2]/60); var mins=user[2]%60; wr+='<td align=right>'+hours+' час. '+mins+' мин.</td>';}
else if(field=='4') {var activity=Math.round(user[4]*30); wr+='<td align=right>'+activity+'</td>';}
else wr+='<td align=right>'+user[field]+'</td>';
}

stylenum++;
document.write('<tr class=trcount'+stylenum+'><td align=right>'+num+'.</td>'+wr+'</tr>');
if (stylenum ==2) stylenum=0;
count++;
}

Ну вот, у нас есть классы trcount1 и trcount2, идем в стили и прописываем для них свойства.
Я не случайно в условии выделил цифру 2 красным, её можно поменять например на 3 и тогда будет 3 класса и в стилях можно будет нарисовать светофор, т.е. trcount1 красный фон , trcount2 - жёлтый и trcount3 зелёный, но это уже для таких извращенцев как я))))

Отредактировано Pegass - 18.04.2012
1163
Денис @Анатолич
то ли я дурак и где то ошибку допустил то ли скрипт нерабочий.

Скопировал все по шаблону. в файле стилей прописываю

.top100-body trcount1 { background: #d5d5d5; padding: 8px; border: 3px double #c7d0cc; -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; vertical-align: middle; }
Никакого эффекта.

Но если trcount1 заменить на tr или td то фон подсвечивается. естественно однотонно. Не пойму я где собака порылась, такое впечатление что новые классы не создались.

И второй вопрос.
А можно ли свой ник подсвечивать в топе? В скрипте от Ридза свой ник подсвечивался.

И третий вопрос.
Как добавить столбцы "Пункты" и "рефералы"

И четвертый вопрос.
Как вместо часов и минут, выводить месяцы и дни, из расчета 730 часов в месяце? а то 12921 час. 33 мин, как то совсем не информативно. Главное чтобы числа были целые, без дробей. Может кто то знает готовый шаблон?
Но если чило часов меньше 730 тогда должны выводится число дней и часов.

Понимаю, что вопросов слишком много и все они Дилетанские, но скрипты не мой конек. Если кто то знает ответ хотя бы на один вопрос из четырех, буду очень признателен за помощь.

2615
Сергей @Pegass
Блин чувак, ты в NetPolice попал))) поздравляю)))
Классы создались, убери стиль
.top100-body tr

И пропиши .top100-body .trcount1
Обрати внимание на точки)))))


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


С добавкой столбцов - там ссылка на топ должна быть хитровымудренная, где то на форуме была, искать некогда


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

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

Блин чувак, ты в NetPolice попал))) поздравляю)))
Классы создались, убери стиль
.top100-body tr

И пропиши .top100-body .trcount1
Обрати внимание на точки)))))


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


С добавкой столбцов - там ссылка на топ должна быть хитровымудренная, где то на форуме была, искать некогда


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

Вона че Михалыч. Точку я упустил оказывается. Спасибо большое щас все работает.

Со временем кстати сам разобрался методом научного тыка. не совсем так как хотел. Но тоже неплохо. сделал вывод по минутам, или часам , или дням или месяцам. У старожилов месяца идут у новичков минуты соответственно.
Добавил в свой топ 100 если кому интересно берите. Или могу сюда кинуть. Может потом допилю чтобы не одно число выводилось, а два. Хотя и так неплохо.
Вряд ли кому нужно знать сколько ты часов просидел, если например ты в чате уже 15 дней.


Остались актуальны 2 Вопроса.

1. Как подсветить свою строчку в топ 100 ( как получить инфу через кукисы) .
2. как вывести все параметры (если не ошибаюсь 7) в топ 100. какой урл нужен?

Отредактировано Анатолич - 18.04.2012
2615
Сергей @Pegass
index.php?inc=top100&all=100&only=12345678&sort=8

1163
Денис @Анатолич
Допилил скрипт с выводом времени. Метод научного тыка не позволяет писать оптимальные коды. Но вроде все работает. Выводятся и месяца и дни и часы и минуты. Для разного стажа, разные единицы времени.

Отредактировано Анатолич - 18.04.2012
1007
BETEPAH @BETEPAH
Анатолич пишет:

И четвертый вопрос.
Как вместо часов и минут, выводить месяцы и дни, из расчета 730 часов в месяце? а то 12921 час. 33 мин, как то совсем не информативно. Главное чтобы числа были целые, без дробей. Может кто то знает готовый шаблон?
Но если чило часов меньше 730 тогда должны выводится число дней и часов.

730 часов в месяц - это конечно сильно упрощает задачу, но можно и точнее количество месяцев и количество дней.
Недавно была аналогичная задача - https://vmeste.eu/forum?pid=290599#p290599

2615
Сергей @Pegass
BETEPAH, это в данной задаче не подходит))))

1007
BETEPAH @BETEPAH
Pegass пишет:

BETEPAH, это в данной задаче не подходит))))

Согласен. Просто я не заглядываю в ТОП, поэтому не учел, о каких часах идет речь, ступил. 😉
Тогда и в месяцы переводить бессмысленно, имхо. "Провел в чате 18 месяцев" - выглядит как "зарегистрировался полтора года назад".
Лучше научить скрипт сокращать - "12 тыс." Хотя те, для кого создан ТОП снова будут недовольны. Им же надо в догонялки играть, и каждая минута на счету 😉
Извиняюсь за оффтоп

1163
Денис @Анатолич
В общем остался последний вопрос.

Как подсветить свою строчку в топ 100 ( как получить инфу через кукисы) .

Может кто то знает решение?

1007
BETEPAH @BETEPAH
Анатолич пишет:

В общем остался последний вопрос.

Как подсветить свою строчку в топ 100 ( как получить инфу через кукисы) .

Может кто то знает решение?

Как получить кукисы, можно посмотреть на примере функции function getcookie(key){} в скриптах чата.
Может этого делать и не надо будет. Пробовали получить свой ник, как это сделано у ridz?
if(parent.mynick) dtd=parent.mynick;
if(window.opener) dtd=opener.parent.mynick;

Если все-таки решили через кукисы, то примерно так (не пробовал, так как не нашел шаблон, который влияет на отображение топа по ссылке /index.php?inc=top100 ). Поставьте в самый низ, перед </body>
<script>
var dtd = getcookie('здесь логин чата' + '_mpnick');
dtd = ">" + dtd + "<";
var trl = document.getElementsByTagName("tr");
for (var i=0; i< trl.length; i++){
var color = '#7FFFD4';//цвет нечётных строк
if (i%2==0)color = '#00BFFF';//цвет чётных строк
if (trl[i].innerHTML.split(dtd).length > 1){color = '#FFD700';};//цвет выделения ника
for (var k=0; k< trl[i].cells.length; k++){trl[i].cells[k].style.backgroundColor=color;};
}
function getcookie(key) {
str = document.cookie;
len = str.length;
if (len == 0) return "";
start = str.indexOf(key + "=");
if (start == -1) return "";
start = start + key.length + 1;
end = str.indexOf(";", start);
if (end == -1) end = len;
return unescape(str.substring(start, end));
}
</script>

1163
Денис @Анатолич
BETEPAH все некогда было опробовать скрипты. Готовый код подставил перед тегом </body> цвет строчек стал желтый (без чередования) цвет строчки с моим ником не выделялся.

со строчками
if(parent.mynick) dtd=parent.mynick;
if(window.opener) dtd=opener.parent.mynick;
делать ничего не пробовал. так как не понимаю я что они означают. А вы уверены что Ридз куки не использовал в своем скрипте?
Как же тогда он строчку подсвечивал ... откуда значения брал?

1007
BETEPAH @BETEPAH
Анатолич пишет:

со строчками
if(parent.mynick) dtd=parent.mynick;
if(window.opener) dtd=opener.parent.mynick;
делать ничего не пробовал. так как не понимаю я что они означают. А вы уверены что Ридз куки не использовал в своем скрипте?

Уверен.
Анатолич пишет:

Как же тогда он строчку подсвечивал ... откуда значения брал?

Вот, указанными выше строками и брал через XMLHttp-запрос. Переменная mynick присутствует в индекс-файле чата, а также на любой странице, где подключен информер. А строки означают следующее:
if(parent.mynick) dtd=parent.mynick; // Если ТОП открыт во фрейме чата, получить значение переменной из родительского окна.
if(window.opener) dtd=opener.parent.mynick;// Если ТОП открыт в новом окне, получить значение переменной из окна, в котором была ссылка на открытие ТОПа.

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

if(parent.mynick) dtd=parent.mynick; // Если ТОП открыт во фрейме чата, получить значение переменной из родительского окна.
if(window.opener) dtd=opener.parent.mynick;// Если ТОП открыт в новом окне, получить значение переменной из окна, в котором была ссылка на открытие ТОПа.

Весьма полезное объяснение, из которого я понял что dtd=Моему нику. а что длеать дальше.
как указать в таблице этот dtd?

20090
Dimitry @Dimitry
Да чё придумывать, проще вывести переменную, mynick, щас сделаю.
А вообще просто можно было информер вставить, но лучше без него по возможности.
Либо идеальный вариант через куки его взять.

1007
BETEPAH @BETEPAH
Dimitry пишет:

Либо идеальный вариант через куки его взять.

Я выше привел скрипт с получением через куки, но, к сожалению, не на чем опробовать и выявить, почему не работает как задумано, так как не имею пока чата на MySQL.
Анатолич,
Я готов поковыряться со скриптом на вашей площадке, если доверите ключ от шаблона 😉
Если нет, попробуйте после строчки
dtd = ">" + dtd + "<";
поставить
alert(dtd);
и загрузить страницу. Посмотрим, что попало в эту переменную. Желтым цветом должна выделяться только одна строка - с ником загрузившего. Цвета я взял из скрипта ridz, скриншот можно там посмотреть.

2615
Сергей @Pegass
Извращенцы))) Как вы получите ник я ХЗ а вот зная ник подсветить аще не проблема к тому что я писал ранее добавить красное (переменная с ником пусть будет ваша dtd - хотя я не понимаю принцип по которому ridz называл переменные)

UPD Дмитрий ввёл переменную, а значит немного исправлений))

СтильКласс строки с "вашим ником" обзовём trmynick

var count=0;
var stylenum = 0;
for(num in u) {
user=u[num]; wr='';
for(var i=0;i<only.length;i++) {
var field=only.charAt(i);
if(field=='1') wr+='<td><a href=?inc=info&userid='+user[0]+' target=_blank><font color='+user['color']+'>'+user[field]+'</font></a></td>';
else if(field=='2') {var hours=Math.floor(user[2]/60); var mins=user[2]%60; wr+='<td align=right>'+hours+' час. '+mins+' мин.</td>';}
else if(field=='4') {var activity=Math.round(user[4]*30); wr+='<td align=right>'+activity+'</td>';}
else wr+='<td align=right>'+user[field]+'</td>';
}

stylenum++;
if (mynick==user[1])
document.write('<tr class=trmynick><td align=right>'+num+'.</td>'+wr+'</tr>');
else

document.write('<tr class=trcount'+stylenum+'><td align=right>'+num+'.</td>'+wr+'</tr>');
if (stylenum ==2) stylenum=0;
count++;
}

Отредактировано Pegass - 24.04.2012