Показать сообщение отдельно
  #1 (permalink)  
Старый 26.02.2013, 23:51
Новичок на форуме
Отправить личное сообщение для also Посмотреть профиль Найти все сообщения от also
 
Регистрация: 26.02.2013
Сообщений: 1

Рейтинг материала
Имеется следующий скрипт:
rateForm=function(c,d,f,g)
{if(typeof d=='undefined'||typeof c=='undefined'||(c!=1&&c!=-1))return false;c+=2;if(!f)f=location.pathname.match(/[^\\\/]+/i)+'';if(!f)return false;var h=$('#rate_'+d);g=$.extend({'before':function(a){a.prev('a').remove();a.next('a').remove()},'after-success':function(a,b){a.html(b).addClass(b>0?'positiveRate':(b==0?'nullRate':'negativeRate'));_uWnd.alert('Оценка засчитана!<br>lol-lol.ru')},'after-error':function(a){try{eval(a)}catch(e){}}},g||{});g.before(h);$.post('/'+f+'/',{'a':'65','id':d,'mark':c,'mod':f,'ajax':'2'},function(a){a=$('cmd:first',a).text();var b=a.match(/рейтинг:\s*([\d.]+)\/(\d+)/i);if(!b)return g['after-error'](a);b=Math.round(b[1]*b[2])-2*b[2];g['after-success'](h,b)})}


Сразу извиняюсь за этот "ужас", такой код мне был предоставлен, сам я в JS полный ноль, поэтому и пишу здесь.

Данный скрипт является решением для юкоз сайтов. Он делает из обычной пяти-звёздочной системы оценивания "Рейтинг + -". Он манипулирует данными "Сумма баллов", "Количество проголосовавших", "Результат" и выводит свой собственный рейтинг. Проблема в следующем:
1) Для того, чтобы можно было выводить топ материалов исходя из этого рейтинга, "Результат" должен быть равен 3. Так собственно и происходит, пока кто-то не поставит "минус" - отрицательную оценку. То есть:
- 1 пользователь ставит +: Сумма - 3; Кол-во проголосовавших - 1; Результат: 3.0
- 2 пользователь ставит +: Сумма - 6; Кол-во проголосовавших - 2; Результат: 3.0
- 3 пользователь ставит -: Сумма - 7; Кол-во проголосовавших - 3; Результат: 2.3

Вопрос: Можно ли изменить алгоритм подсчёта так, что-бы результат всегда был равен 3, даже после отрицательной оценки. Если возможно, буду премного благодарен за решение данной проблемы.
Ответить с цитированием