Показать сообщение отдельно
  #1 (permalink)  
Старый 13.02.2012, 01:51
Аватар для Eleazara
Интересующийся
Отправить личное сообщение для Eleazara Посмотреть профиль Найти все сообщения от Eleazara
 
Регистрация: 08.02.2012
Сообщений: 10

Скрипт подсчета баллов пользователей. Помогите исправить
Здравствуйте!

Поставила скрипт подсчета баллов за активность каждого пользователя. Суммируется балл комментов, постов форума, репутации, наград и баллов, присвоенных админов. Там коэффициент на каждый из пунктов. МОжно посмотреть здесь: 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>


Помогите, пожалуйста, а то с моей внимательностью, я буду месяц сидеть)
Спасибо.

Последний раз редактировалось Eleazara, 13.02.2012 в 11:29.
Ответить с цитированием