Благодарность и антиблагодарность
|
|
Бармалей | Дата: 13 Августа 2008, 09:14 | Сообщение # 1 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | Итак, как вы наверно уже заметили на Хелпере стоит новая версия скрипта благодарностей. Настало время поделиться им с вами Переписал код работы с содержимым окна. никаких интервалов и прочей малопривлекательной лабуды 1. Закидываем себе на хост этот файл и вставляем его в общий вид форума, после </head> Code <script type="text/javascript" src="/js/reputation.js"></script> Или же берем код тут:reputation.js:Code rep = {}; callback.success = function(o){ var block = ( (document.getElementById('layerContentRh')?document.getElementById('layerContentRh').getElementsByTagName('TBODY')[0]:false) || document.getElementById('frm981') ) ; ParseXML(o.responseXML); if( document.getElementById('frm981') && !block ){ if(rep.type=='minus'){ document.getElementById('a1').checked=true; document.getElementById('frm981').reason.value='Тьфу на тебя, за твой ответ в теме: '+eval('url'+rep.pid); }; if(rep.type=='plus'){ document.getElementById('a2').checked=true; document.getElementById('frm981').reason.value='Спасибо за ответ в теме: '+eval('url'+rep.pid); }; if(confirm('Вы уверены?')) document.getElementById('submfrm981').click(); } if( document.getElementById('layerContentRh').getElementsByTagName('TBODY')[0] && !block ){ var tds = document.getElementById('layerContentRh').getElementsByTagName('td'); for(i=0; i<tds.length; i++){ if(tds[i].getAttribute('id') && tds[i].getAttribute('colspan') && (tds[i].innerHTML.indexOf('http://') != -1) ) { tUrl = tds[i].innerHTML.substring(tds[i].innerHTML.indexOf('http://')); tds[i].innerHTML = tds[i].innerHTML.replace( tUrl, '<a href="'+tUrl+'">[ просмотреть тему ]</a>' ); } } } } - Вид материалов (форум)
Code <?if($READ_REP_URL$)?><div class="reputation"> <?if($DO_REP_URL$)?><a href="$DO_REP_URL$"><img onclick="rep.type = 'minus'; rep.pid='$ID$'" title="Понизить" align="absmiddle" src="http://src.ucoz.net/img/icon/minus.png" border="0" alt="-" /></a><?endif?> <a href="$READ_REP_URL$">« $REP_RATING$ »</a> <?if($DO_REP_URL$)?><a href="$DO_REP_URL$"><img onclick="rep.type = 'plus'; rep.pid='$ID$'" align="absmiddle" title="Повысить" src="http://src.ucoz.net/img/icon/plus.png" border="0" alt="+" /></a> <script type="text/javascript"> //<![CDATA[ var a = document.getElementsByTagName('a') || document.links; for(i=0;i<a.length;i++){ if(a[i].getAttribute('name')=='$ID$') { var fc = a[i].getAttribute('onclick').toString(); url$ID$ = fc.substring(fc.indexOf('http'),fc.lastIndexOf('\'')); } } //]]> </script><?endif?> </div><?endif?> - Персональная страница пользователя:
Изменения не требуются Данный скрипт проверен и работает в следующих браузерах: Opera 9.52, FireFox 3.0.1, Safari 3.1.2, IE8 Beta 2. Работа в других браузерах / версиях не гарантируется!
| | |
|
anger | Дата: 14 Августа 2008, 15:27 | Сообщение # 2 | ● ● ● ● ● 530 сообщений Статус: Offline | Бармалей, аха версия кул твоя, но я переделал в лучшую, потомучто у тя на минус жмёшь и знаешь такой рандом бегает, + - + - + - + - + - + -, жесть, я там каплю подровнял, убрал нафиг авто ответ, за что спасибо Vanofuture, и минус с плюсом не бегают туда сюда...Добавлено (2008-08-14, 15:27) ---------------------------------------------
Code <?if($DO_REP_URL$)?><a href="$DO_REP_URL$"><img onclick="time = setInterval('checkajax(\'minus\',$ID$)',500);" title="Понизить" align="absmiddle" src="http://src.ucoz.net/img/icon/minus.png" border="0" alt="-" /></a><?endif?> <span onclick="timeRep = setInterval('searchWin()',500);"><a href="$READ_REP_URL$">« $REP_RATING$ »</a></span> <?if($DO_REP_URL$)?><a href="$DO_REP_URL$"><img onclick="time = setInterval('checkajax(\'plus\',$ID$)',500);" align="absmiddle" title="Повысить" src="http://src.ucoz.net/img/icon/plus.png" border="0" alt="+" /></a><?endif?> <script type="text/javascript"> //<![CDATA[ var a = document.links || document.getElementsByTagName('a') for(i=0;i<a.length;i++){ if(a[i].getAttribute('name')=='$ID$') { var fc = a[i].getAttribute('onclick').toString(); url$ID$ = fc.substring(fc.indexOf('http'),fc.lastIndexOf('\'')); } } //]]> </script> </div> Это кароче в вид сообщений форума заменять вместо того, что в 1 посте для форума дал бармалей =)) А в файле что скачиваешь нада удалить у строку Code if(confirm('А может не стоит?')) document.getElementById('submfrm981').click(); И тогда всё будет как тут, но репа не будет ставится автоматом, а просто открыватся с (назавём это шаблоном репы кароче ) | | |
|
Бармалей | Дата: 14 Августа 2008, 17:38 | Сообщение # 3 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | anger, код, приведенный вами для поста полностью идентичен моему из первого поста. только там нет одного условия
| | |
|
anger | Дата: 14 Августа 2008, 17:42 | Сообщение # 4 | ● ● ● ● ● 530 сообщений Статус: Offline | Бармалей, я взял пост что был перваначально выложен и стёр один эндив и попросил Vanofuture, чтобы он рассказал что сделать стобы добится просто шаблона репы без её изминения, т.к. это тут на форуме в таком виде можно говорить спасибо, а на других форумах тоже хочется такой вид, но и сказать хочется в + спс своими словами а не так ... ПыСы этого я и хотел вместе с Severus, так что мы чётко знали чего хотели а не как сказал какой то там наглый глобус | | |
|
samsung-mobile | Дата: 14 Августа 2008, 17:48 | Сообщение # 5 | ● ● ● ● ● 106 сообщений Статус: Offline | Бармалей, как видишь изза этого условия и непа | | |
|
Бармалей | Дата: 14 Августа 2008, 17:51 | Сообщение # 6 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | samsung-mobile, нет. из-за этого условия у вас бы вообще скрипт не установился
| | |
|
Vanofuture | Дата: 15 Августа 2008, 15:43 | Сообщение # 7 | ● ● ● ● ● Все админы едят апельсины 1650 сообщений Статус: Offline | Бармалей, у меня иногда странный глюк появляется. Смотрим видео: | | |
|
Бармалей | Дата: 24 Августа 2008, 09:08 | Сообщение # 8 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | Vanofuture, наконец-то догнял что за глюк. хотя видео так и не посмотрел при клике почему-то устанавливается не один таймаут, а сразу несколько. причем один из них (первый) позже убирается с помощью clearInterval, а остальные никак не убираются Поэтому исправленная версия:- В вид сообщений:
Code <?if($READ_REP_URL$)?><div class="reputation"> <?if($DO_REP_URL$)?><a href="$DO_REP_URL$"><img onclick="if(typeof time=='undefined' || time==null)time = setInterval('checkajax(\'minus\',$ID$)',500);" title="Понизить" align="absmiddle" src="http://src.ucoz.net/img/icon/minus.png" border="0" alt="-" /></a><?endif?> <span onclick="if(typeof timeRep=='undefined' || timeRep==null) timeRep = setInterval('searchWin()',500);"><a href="$READ_REP_URL$">« $REP_RATING$ »</a></span> <?if($DO_REP_URL$)?><a href="$DO_REP_URL$"><img onclick="if(typeof time=='undefined' || time==null)time = setInterval('checkajax(\'plus\',$ID$)',500);" align="absmiddle" title="Повысить" src="http://src.ucoz.net/img/icon/plus.png" border="0" alt="+" /></a> <script type="text/javascript"> //<![CDATA[ var a = document.getElementsByTagName('a') || document.links; for(i=0;i<a.length;i++){ if(a[i].getAttribute('name')=='$ID$') { var fc = a[i].getAttribute('onclick').toString(); url$ID$ = fc.substring(fc.indexOf('http'),fc.lastIndexOf('\'')); } } //]]> </script><?endif?> </div><?endif?> - reputation.js:
Code function checkajax(type, pid){ if(document.getElementById('frm981')){ if(type=='minus'){ document.getElementById('a1').checked=true; document.getElementById('frm981').reason.value='Тьфу на тебя, за твой ответ в теме: '+eval('url'+pid); }else if(type=='plus'){ document.getElementById('a2').checked=true; document.getElementById('frm981').reason.value='Спасибо за ответ в теме: '+eval('url'+pid); } if(confirm('А может не стоит?')) document.getElementById('submfrm981').click(); clearInterval(time); time = null; } } function searchWin(){ if( !document.getElementById('layerContentRh') ) return; if( document.getElementById('layerContentRh').getElementsByTagName('TBODY')[0] ){ var tds = document.getElementById('layerContentRh').getElementsByTagName('td'); for(i=0; i<tds.length; i++){ if(tds[i].getAttribute('id') && tds[i].getAttribute('colspan') && (tds[i].innerHTML.indexOf('http://') != -1) ) { tUrl = tds[i].innerHTML.substring(tds[i].innerHTML.indexOf('http://')); tds[i].innerHTML = tds[i].innerHTML.replace( tUrl, '<a href="'+tUrl+'">[ просмотреть тему ]</a>' ); } } clearInterval(timeRep); timeRep = null; } } - профиль:
Code <?if($_REP_READ_URL$)?> <div id="block4" class="udtb"><div class="udtlb">Репутация:</div> <span onclick="if(typeof timeRep=='undefined' || timeRep==null)timeRep = setInterval('searchWin()',500);"><a title="Смотреть историю репутации" class="repHistory" href="$_REP_READ_URL$"><b>$_REPUTATION$</b> [$_REPUTATION_PERCENT$%]</a></span><?if($_REP_DO_URL$)?> <a href="$_REP_DO_URL$"><img style="margin:0;padding:0;border:0;" title="Изменить репутацию" src="http://src.ucoz.ru/img/fr/wm.gif" width="10" height="9" /></a><img style="margin:0;padding:0;border:0;" src="http://src.ucoz.ru/img/fr/w$_REPUTATION_NUM$.gif" width="49" height="9" /><a href="$_REP_DO_URL$"><img style="margin:0;padding:0;border:0;" title="Изменить репутацию" src="http://src.ucoz.ru/img/fr/wp.gif" width="10" height="9" /></a><?endif?></div> <?endif?>
| | |
|
mob_dp | Дата: 12 Октября 2008, 23:34 | Сообщение # 9 | ● ● ● ● ● 4112 сообщений Статус: Offline | Бармалей, сделал по 8 посту - при клике на или не выставляется переключатель на [+] или [-], соотв не засчитывается изменение репутации. | | |
|