Изменение репутации на форуме - Страница 2 - Скрипты и коды для юкоз - Форум аццкого кодера
Страница 2 из 2«12
Модератор форума: Admin, Cибиря4ка, Komoff, Diana 
Скрипты и коды для юкоз - Форум аццкого кодера » Раздел для начинающих » Если вы пришли за помощью, то Вам сюда... » Изменение репутации на форуме
Изменение репутации на форуме
Дата: Среда, 16.10.2013, 22:40 |
pssergey
Рядовой
Группа: Зарегистрированные
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline


Цитата likbezz, Ср, 16.10.2013, 21:34:18
вообще-то этот скрипт просто ставит галочку на пункте «повысить репутацию» и все.. ничего он не заменяет и тем более внешний вид окна.

Спасибо!
- это понятно, но и галочка не ставилась...
В общем, по примерам в сети вставил ещё вот такое в "общий вид страниц форума"
Цитата
<script type="text/javascript">
function repchange(val,id){
repval=val;
ajaxtime=setInterval('checkajax'+id+'()',500);}
</script>

и заменил в "кнопке" checkajax$ID$(); - на - repchange('plus','$ID$')();
и заработало всё.

Добавлено (16.10.2013, 22:40)
---------------------------------------------
Но тот, "автоматический" скрипт тоже интересный.
Не нравится в нём:
1. Ссылка прописыватся не на пост, а на страницу.
В идеале, для меня, было бы не плохо переделать скрипт:
1. Ссылку убрать совсем, как не нужную т.к. и так в истории есть ссылка "источник". - пока не понимаю, как туда ссылка попадает.
2. А нельзя сразу команду дать на обновление страницы?

Цитата
<script type="text/javascript">
function checkajax$ID$(){
forms=document.getElementsByTagName('form');
for(f=0;f<forms.length;f++){
if(forms[f].id=='frm981'){
if(repval=='minus'){document.getElementById('a1').checked='true';
forms[f].reason.value='Плохой пост:'+window.location.href;
document.getElementById('submfrm981').click();
document.getElementById('sbt981').onclick=null;
clearInterval(ajaxtime);}// by Vanofuture
else{document.getElementById('a2').checked='true';
forms[f].reason.value='Хороший пост:'+window.location.href;
document.getElementById('submfrm981').click();
document.getElementById('sbt981').onclick=null;
clearInterval(ajaxtime);}}}}
</script>


Сообщение отредактировал pssergey - Среда, 16.10.2013, 22:42
 
Дата: Среда, 16.10.2013, 22:51 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9096
Награды: 23
Репутация: 457
Статус: Unknown


pssergey,
Цитата pssergey, Ср, 16.10.2013, 22:40:24
1. Ссылка прописыватся не на пост, а на страницу.

1. - брать ссылку с поста - с номера сообщения или собирать операторами - форум_id + тема_id + пост_id

2. убрать:
Код
forms[f].reason.value='Хороший пост:'+window.location.href;


3. можно на событие субмит повесить релоад.


 
Дата: Воскресенье, 20.10.2013, 23:14 |
pssergey
Рядовой
Группа: Зарегистрированные
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline


Цитата likbezz, Ср, 16.10.2013, 22:51:40
можно на событие субмит повесить релоад.


likbezz, Спасибо большущее!
Пошёл убирать... и вешать релоад...

Добавлено (17.10.2013, 00:45)
---------------------------------------------
likbezz, СПАСИБО, за подсказки.
Ура! Получилось.
Посмотреть, опробовать можно тут http://volkodav-vluki.ucoz.ru/forum/2-15-1 К сожалению, гости кнопку "Спасибо" не видят.
Выглядит вот так:

В итоге:
1. Имеем кнопку "Спасибо" работающую действительно в ОДИН клик... жмём кнопку, появляется окошко репутации на мгновение и страница обновляется с +1 в репутацию.
Просто таким образом благодарим собеседника или присоединяемся к его мнению без лишних телодвижений - удобно это.
2. Репутацию так же можно изменять стандартным способом - это если хочется понаписать стихов, хозяин - барин...

Сложу по порядку действия, может поможет кому-то:
управление дизайном модуля/ общий вид страниц форума, после <head> вставляем вот это:
Код
<script type="text/javascript">   
function repchange(val,id){   
repval=val;   
ajaxtime=setInterval('checkajax'+id+'()',500);}   
</script>

В вид материалов после $USER_DETAILS_ICON_BAR$ вставляем:
Код

<script type="text/javascript">   
function checkajax$ID$(){   
forms=document.getElementsByTagName('form');   
for(f=0;f<forms.length;f++){   
if(forms[f].id=='frm981'){   
if(repval=='minus'){document.getElementById('a1').checked='true';
document.getElementById('submfrm981').click();   
document.getElementById('sbt981').onclick=null;   
clearInterval(ajaxtime);}// by Vanofuture   
else{document.getElementById('a2').checked='true';
forms[f].reason.value='СПАСИБО'   
document.getElementById('submfrm981').click();   
document.getElementById('sbt981').onclick=location.reload();
clearInterval(ajaxtime);}}}}   
</script>

Следом за этим вставляем саму кнопку:
Код
<?if($DO_REP_URL$)?><a href="$DO_REP_URL$"><img onclick="repchange('plus','$ID$')();" height="22" title="Сказать спасибо" src="ссылка на картинку кнопки" border="0" /></a> <?endif?>

Прошу проверить по ссылке работоспособность, может глюк какой вылезет.

Добавлено (20.10.2013, 23:14)
---------------------------------------------
Цитата pssergey, Чт, 17.10.2013, 00:45:22
Прошу проверить по ссылке работоспособность, может глюк какой вылезет.

Приветствую.
В общем, вроде бы работает. Только добавил ещё задержку перед обновлением страницы, без неё не всегда обновляется с уже добавленной репутацией.
В коде, который вставляется в вид материалов вот это:
Код
location.reload();

заменил на это:
Код
setTimeout(function() {window.location.reload();}, 1200);

1200 - время в миллисекундах.
Проверял в броузерах: мозила, хром, яндекс, опера мини на простом телефоне - пока глюков не наблюдаю.
Есть недостаток. т.к. тайм-аут на повторное изменение репутации отключен, хотелось бы закрыть возможность повторного повышения репутации в конкретном сообщении...
Прошу подсказать, есть такая возможность?


Сообщение отредактировал pssergey - Воскресенье, 20.10.2013, 23:31
 
Дата: Суббота, 23.08.2014, 13:18 |
волчара
Рядовой
Группа: Зарегистрированные
Сообщений: 1
Награды: 0
Репутация: 0
Статус: Offline


Спасибо все работает, правда время я уменьшил до 1000

 
Скрипты и коды для юкоз - Форум аццкого кодера » Раздел для начинающих » Если вы пришли за помощью, то Вам сюда... » Изменение репутации на форуме
Страница 2 из 2«12
Поиск: