Оцени это! - 30 Декабря 2009 - Блог almlex'a

Оцени это!

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

Он на самом деле довольной простенький, но зато в отличие от стандартного скрипта выполняет ожидаемое действие — выводит обновлённую оценку не в _uWnd.alert, а заменяя устаревшую оценку в коде.

Начнём мы с описания классов и id которые нужны для нормальной работы:

#cRating$ID$ — элемент в котором должен быть весь блок с оценкой.
#comRate$ID$ — элемент в котором записана оценка.
  .cRpositive — класс для #comRate$ID$ при позитивной оценке.
  .cRnegative — класс для #comRate$ID$ при негативной оценке.
  .cRzero — класс для #comRate$ID$ при нулевой оценке.
.RateUp и .RateDn — классы для плюса и минуса, соответственно.
  .inactive — класс, который добавляется к .RateUp и .RateDn обозначая невозможность оценки

Сама функция вызывается так:
comVote(true, 123)

Первая переменная: true если оценка — плюс и false если минус.
Вторая переменная: цифровой id блока в котором совершается оценка. u.код — $ID$

Html после небольших добавлений должен выглядеть так:
<div class="cRaiting" id="cRating$ID$">
<span id="comRate$ID$" class="<?if($COMMENT_RATING$<0)?>cRnegative"><?else?><?if($COMMENT_RATING$=0||!$COMMENT_RATING$)?>cRzero"><?else?>cRpositive">+<?endif?><?endif?><?if(!$COMMENT_RATING$)?>0<?else?>$COMMENT_RATING$<?endif?></span>

<a href="javascript://" <?if($GOOD_COMMENT_URL$)?>onclick="comVote(true, $ID$)"<?endif?>class="RateUp<?if(!$GOOD_COMMENT_URL$)?> inactive<?endif?>" title="Хороший комментарий"> </a>

<a href="javascript://" <?if($GOOD_COMMENT_URL$)?>onclick="comVote(false, $ID$)"<?endif?> class="RateDn<?if(!$GOOD_COMMENT_URL$)?> inactive<?endif?>" title="Плохой комментарий"> </a>
</div>
Ну и наконец сам JS код, который нужно вставить либо в тег <script> в шаблоне «Страница материала и комментариев к нему» либо в подключаемый в коде страницы .js файл.
function comVote(a,b){var r=parseInt($('#comRate'+b).html());$('#cRating'+b+' a').addClass('inactive').removeAttr('onclick').unbind('click').click(function(){_uWnd.alert('Повторное голосование запрещено.','',{w:230,h:80,tm:2300})})
_uPostForm('',{url:'/index/60-'+b+(a?'-1':'-2'),success:function(){a?r++:r--;_uWnd.alert('Оценка засчитана','',{w:230,h:80,tm:4000});$('#comRate'+b).removeClass().addClass((r>0?'cRpositive':(r<0?'cRnegative':'cRzero'))).html((r>0?'+':'')+r);}});return false}

С новым годом! Всего-всего вам и шоб не болели!

30.12.2009
Скрипты
Добавлено 10 комментариев. Написать свой.
# 30.12.2009 в 05:46 (Ответить)
+22    
Буду краток... Спасибо!
# 30.12.2009 в 09:51 (Ответить)
+9    
Almlex, не в этом скрипте была забавная переменная, которую ты категорически отказывался переименовывать ? :)
# 30.12.2009 в 11:37 (Ответить)
+11    
В этом, но она была яростно сжата ;)
# 30.12.2009 в 12:42 (Ответить)
+5    
Понятно-понятно, я то думал ты изменился ))))
Дезмаск
# 30.12.2009 в 11:48 (Ответить)
+10    
О, пасиба, клас!
ЗЫ: Шабик крут!
# 03.01.2010 в 09:56 (Ответить)
+5    
Ребят, я тут выкладываю свои решения не для того чтобы вы потом ещё выдирали исходники из моего css и вставляли себе.

Да, да @KIMMI это я тебе.

Ykrop
# 04.01.2010 в 14:48 (Ответить)
+7    
Привет almlex! Очень красивый дизайн, молодец. Не мог бы ты написать статейку про дизайн форм =))) Очень нравится как у тебя они оформлены, оранжевая обводка просто превосходна!!!

Да и выдирать исходник из твоего кода не будут))) По крайней мере я ... =))

# 29.01.2010 в 15:01 (Ответить)
+1    
Спасибо ;)
# 20.07.2010 в 02:59 (Ответить)
-2    
я-полнейший нуб, куда нужно пихать ХТМЛ и в какую часть?
В вид комментариев? Как подключить джава скрипт? куда класть ссылку на него? объясните пожалуйста! :)
den
# 19.08.2010 в 04:04 (Ответить)
-2    
Я что то не понял куда все это вставлять, в вид коментов или я ошибаюсь?

Авторизация — это круто!
Анонимусы тихо курят в сторонке перед bb-кодами ;)