Здравствуйте!
Поставила скрипт подсчета баллов за активность каждого пользователя. Суммируется балл комментов, постов форума, репутации, наград и баллов, присвоенных админов. Там коэффициент на каждый из пунктов. МОжно посмотреть здесь:
http://k-fd.ru/index/8-1 (Баллы пользователя: и кликая по значению, видно, что за что накапало).
Помимо этого мне нужно, что бы учитывались все опубликованные материалы на сайте:
1. Новости - $_NEWS_ENTRIES$
2. Все каталоги - $_PUBL_ENTRIES$ $_LOAD_ENTRIES$ $_DIR_ENTRIES$
3. Доска объявлений - $_BOARD_ENTRIES$
4. Игры - $_STUFF_ENTRIES$
ну и конечно же
5. Комменты - $_COM_ENTRIES$
6. Посты форума - $_FORUM_ENTRIES$
7. Репутация - $_REPUTATION$
И не только считались, но и отображались в этой всплывающей табличке.
Вроде бы ничего сложного, но я сама не могу дописать скрипт... что-то делаю не так.
Вот код скрипта:
<script type="text/javascript">
balli = {
table: function (all) {
var res = "",
tt = ["балл", "балла", "баллов"];
for (var i = 0; i < all.length; i++) {
var n = all[i][0],
n2 = all[i][1],
t2 = all[i][2],
bans = all[i][3];
if (!bans) {
res += '<tr><td width="50%"><b>' + n2 + '</b> ' + all[i][2][n2 % 10 == 1 && n2 % 100 != 11 ? 0 : n2 % 10 >= 2 && n2 % 10 <= 4 && (n2 % 100 < 10 || n2 % 100 >= 20) ? 1 : 2] + '</td><td width="50%"><b>' + n + '</b> ' + tt[n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2] + '</td></tr>';
} else {
res += '<tr><td width="50%"><b>' + n2 + '</b> ' + all[i][2][n2 % 10 == 1 && n2 % 100 != 11 ? 0 : n2 % 10 >= 2 && n2 % 10 <= 4 && (n2 % 100 < 10 || n2 % 100 >= 20) ? 1 : 2] + '</td><td width="50%"><b>- ' + n + '%</b> ' + tt[n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2] + '</td></tr>';
}
};
return res;
},
open: function () {
var atbl = balli.table([
[ <? $_COM_ENTRIES$ * 1 ?> , $_COM_ENTRIES$, ["комментарий", "комментария", "комментариев"]],
[ <? $_FORUM_ENTRIES$ * 0.5 ?> , $_FORUM_ENTRIES$, ["сообщение на форуме", "сообщения на форуме", "сообщений на форуме"]],
[ <? $_REPUTATION$ * 0.5 ?> , $_REPUTATION$, ["единица репутации", "единицы репутации", "единиц репутации"]],
[ <? $AWARDS$ * 5 ?> , $AWARDS$, ["награда", "награды", "наград"]] <?
if ($_BAN_PERCENT$) ?> , [$_BAN_PERCENT$, <? $_BAN_PERCENT$ / 20 ?> , ["замечание", "замечания", "замечаний"], true] <? endif ?> ]),
ee = balli.edit ? '<tr><td width="50%">Изменено администрацией</td><td width="50%"><b>' + balli.edit + '</b> ' + ["балл", "балла", "баллов"][Math.abs(balli.edit) % 10 == 1 && Math.abs(balli.edit) % 100 != 11 ? 0 : Math.abs(balli.edit) % 10 >= 2 && Math.abs(balli.edit) % 10 <= 4 && (Math.abs(balli.edit) % 100 < 10 || Math.abs(balli.edit) % 100 >= 20) ? 1 : 2] + '</td></tr>' : '';
new _uWnd('b', 'Баллы', 360, 180, {
customButtons: { <?
if ($GROUP_ID$ = '4'
or $GROUP_ID$ = '3') ?> 'edit': [true, function () {
balli.changek();
}],
<? endif ?> 'log': [true, function () {
_uWnd.alert(balli.log ? balli.log : "Отсутствует", 'Лог изменения баллов', {
w: 300,
h: 100,
tm: 40000
});
}]
}
}, '<table id="tableball" width="100%" cellpadding="0" cellspacing="0"><tr><td width="50%">За что</td><td width="50%">Сколько</td></tr>' + atbl + ee + '</table>');
},
getEdit: function (num) { <?
if ($_BLOG_ENTRIES$) ?> $.get("$_BLOG_ACTIVITY_URL$?" + Math.random(), function (data) {
var plus = parseInt($("#bFast .ballEdit:first .plus", data).text() || 0);
var minus = parseInt($("#bFast .ballEdit:first .minus", data).text() || 0);
balli.log = $("#bFast .ballEdit:first .log", data).html().replace(/\n/g, "<br>");
$("#ballov").html(num + plus - minus);
balli.edit = plus - minus;
}); <?
else ?> $("#ballov").html(num);
balli.edit = 0; <? endif ?>
},
changek: function (type, numb, comment) {
new _uWnd('c', 'Изменить баллы', 390, 130, {
oncontent: function () {
setTimeout(function () {
_uWnd.getbyname('c').checksize();
}, 1000);
if (type && numb && comment) {
$("#commentChange").val(decodeURIComponent(comment));
$("#typechange option").eq(type == 'plus' ? 0 : 1).attr("selected", true);
$("#skolko").val(numb);
}
}
}, '<fieldset><div class="rdv"><div class="ldv">Тип:</div> <select id="typechange"><option value="1">Прибавить</option><option value="2">Отнять</option></select></div><div class="rdv"><div class="ldv">На сколько:</div> <input type="text" id="skolko"></div><div class="rdv"><div class="ldv">Комментарий:</div><textarea id="commentChange" style="height: 40px;"></textarea></div><div class="rdv"><div class="ldv" id="statusChange"> </div><input type="button" onclick="balli.changeBall();" value="Изменить"></div></fieldset>');
},
changeBall: function () {
$("#statusChange").html("");
if (!/^\d+$/.test($("#skolko").val())) {
$("#statusChange").html("<img src='/img/error.png' border='0' align='absmiddle'> Вы ввели не число");
return;
}
if (parseInt($("#ballov").text()) < parseInt($("#skolko").val()) && $("#typechange").val() == 2) {
$("#statusChange").html("<img src='http://rucoz.com/img/error.png' border='0' align='absmiddle'> Недостаточно баллов");
return;
}
$("#statusChange").html("<img src='/img/load.gif' border='0' align='absmiddle'> Загрузка...");
$.get("/blog/0-0-0-0-17-$_USER_ID$?" + Math.random(), function (data) {
var log = $("#bFast .ballEdit:first .log", data).text() || "",
plus = parseInt($("#bFast .ballEdit:first .plus", data).text() || 0),
minus = parseInt($("#bFast .ballEdit:first .minus", data).text() || 0);
typ = $("#typechange").val(), vv = parseInt($("#skolko").val() || 0);
if (typ == 1) {
plus = plus + vv;
} else {
minus = minus + vv;
}
$.get("/blog/0-0-0-0-1", function (addData) {
$.post("/blog", {
user: '$_USERNAME$',
other1: plus,
other2: minus,
brief: log.replace(/<br>/g, '\n') + '\n' + $("#commentChange").val(),
a: 2,
ssid: $("input[name='ssid']", addData).val()
}, function (re) {
if ($(re).text().indexOf("успешно") != -1) {
$("#statusChange").html("<img src='http://rucoz.com/img/ok-small.png' border='0' align='absmiddle'> Баллы изменены");
} else {
$("#statusChange").html("<img src='/img/error.png' border='0' align='absmiddle'> Error");
}
});
});
});
}
};
balli.getEdit( <? ifnot($_BAN_PERCENT$) ?> <? $_COM_ENTRIES$ * 1 + $_FORUM_ENTRIES$ * 0.5 + $_REPUTATION$ * 0.5 + $AWARDS$ * 5 ?> <?
else ?> <? ($_COM_ENTRIES$ * 1 + $_FORUM_ENTRIES$ * 0.5 + $_REPUTATION$ * 0.5 + $AWARDS$ * 5) / 100 * (100 - $_BAN_PERCENT$) ?> <? endif ?> );
(function (l) {
if (l) {
var typ = l.match(/type=(\S+?)\;/),
num = l.match(/num=(\d+?)\;/),
comm = l.match(/comm=(.+?)\&/);
if (l && num && comm) {
balli.changek(typ[1], num[1], decodeURIComponent(comm[1]));
}
}
})(location.search);
</script>
Помогите, пожалуйста, а то с моей внимательностью, я буду месяц сидеть)
Спасибо.