Рейтинг материала
Имеется следующий скрипт:
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, даже после отрицательной оценки. Если возможно, буду премного благодарен за решение данной проблемы. |
я не спец но в коде 1+2=+3 за 1 оценку плюс, значит в (c!=1&&c!=-1) должно быть (c!=1&&c!=-2)=0 при оценки минус,что потом разделится на кол-во голосов.. как-то так вроде..
|
Присоединяюсь к просьбе. Очень нужная весчь!!!
Так тоже есть сайты на юкозе. Давно ищу такую примочку, но безрезультатно. |
Если я тебя правильно понял, то как то так.
Т.е. условие, что b != 100500 выполняется всегда => рейтинг всегда положительный ('positiveRate'). //Вот это a.html(b).addClass(b > 0 ? 'positiveRate' : (b == 0 ? 'nullRate' : 'negativeRate')); //Заменить на это a.html(b).addClass(b != 100500 ? 'positiveRate' : (b == 0 ? 'nullRate' : 'negativeRate')); |
Часовой пояс GMT +3, время: 01:23. |