Баллы за заслуги на uCoz Скрипт для ucoz: Баллы за заслуги на uCoz - этот скрипт автоматически ведет статистику каждого активного пользователя, показывая сколько он добавил файлов, новостей, постов, комментариев и т.д..., и после чего автоматически начисляются баллы за активность пользователя на сайте!
Баллы добавляются за:
# Репутацию [1 балл за 1 единицу репутации]
# Комментарии [0.15 баллов за комментарий]
# Посты на форуме [0.2 балла за 1 сообщение]
# Файлы [0.5 баллов за файл]
# Награды [0.1 балл за награду]
# Если у пользователя есть замечания, то баллы уменьшатся [например: 20% замечаний уменьшают количество баллов на 20%].
# Произвольное повышение/понижение количества баллов за определенные заслуги или нарушения. [Функция для админов].
# Все это гибко настраивается. Расценки можно менять.
Требования:
# Свободный модуль [Каталог статей].
# 3-5 минут для установки скрипта.
Установка:
Скриншот настроек модуля Каталог статей.
Далее идем Админка » Пользователи » Группы пользователей » Установка прав для всех групп и убеждаемся, что функции Просматривать историю замечаний пользователей и Просматривать историю репутации пользователей разрешено для всех групп.
Страница поиска и рейтинга материалов:
Code
<html><head></head><body style="margin: 5%; font-family: verdana,arial,helvetica; font-size:8pt;"><h1>403: Forbidden</h1>$BODY$<div style="padding-top:70%; text-align:right">$POWERED_BY$</div></body></html>
Страница добавления/редактирования материалов:
Code
<head></head><body>$BODY$$POWERED_BY$</body></html>
Вид материалов:
Code
<input type="hidden" value="$TITLE$" class="pts">
Шаблон персональная страница пользователя, ищем:
Code
<?if($_NAME$)?>
<div id="block5" class="udtb"><div class="udtlb">Имя:</div> $_NAME$ <?if($_GENDER_NAME$)?>[ $_GENDER_NAME$ ]<?endif?></div>
<?endif?>
После пишем:
Code
<div class="udtb"><div class="udtlb">Баллы:</div> <a href="#" onclick="points('$_USERNAME$', $_USER_ID$);return false;" id="points">...</a></div>
, и после ставим код:
Code
<script type="text/javascript">$(document).ready(function () {
$.get("/publ/0-0-$_USER_ID$-0-17", function (w) {ch_ng = $("input.pts:first", w).val(); if (!ch_ng) {ch_ng = 0;} pt = (Number(ch_ng) + Number(<?if($_BAN_PERCENT$)?><? ($_REPUTATION$ + $_COM_ENTRIES$*0.15 + $_FORUM_ENTRIES$*0.2 + $_LOAD_ENTRIES$*0.5 + $AWARDS$*0.1) - (($_REPUTATION$ + $_COM_ENTRIES$*0.15 + $_FORUM_ENTRIES$*0.2 + $_LOAD_ENTRIES$*0.5 + $AWARDS$*0.1)*$_BAN_PERCENT$/100) ?><?else?><? $_REPUTATION$ + $_COM_ENTRIES$*0.15 + $_FORUM_ENTRIES$*0.2 + $_LOAD_ENTRIES$*0.5 + $AWARDS$*0.1 ?><?endif?>)).toFixed(2);$("#points").html(pt);});}); function inajax(){if (ch_ng == "-0") {$('#thechanges').html("0");} else {$('#thechanges').html(ch_ng);}} function points(name, id) { new _uWnd('points', 'Баллы ' + name, 200, 300, {icon: '/.s/img/icon/dtl.png',autosize: 1,fadespeed: 500,fadeclosespeed: 500,fadetype: 1,fadeclosetype: 1,align: 0,oncontent: function () { inajax() }}, '<fieldset><legend>Баллы <?if($MODER_PANEL$)?>[<a href="#" onclick="change();return false;">Изменить</a>]<?endif?></legend><div style="text-align:left"><?if($_COM_ENTRIES$)?>Комментарии: <b title="0.15 баллов за 1 комментарий" style="cursor:help"><?$_COM_ENTRIES$*0.15?></b><br><?endif?><?if($_FORUM_ENTRIES$)?>Посты на форуме: <b title="0.2 баллов за 1 пост" style="cursor:help"><?$_FORUM_ENTRIES$*0.2?></b><br><?endif?><?if($_REPUTATION$)?>Репутация: <b title="1 балл за 1 единицу репутации" style="cursor:help"><?$_REPUTATION$?></b><br><?endif?><?if($_FORUM_ENTRIES$)?>Файлы: <b title="0.5 баллов за 1 файл" style="cursor:help"><?$_LOAD_ENTRIES$*0.5?></b><br><?endif?><?if($AWARDS$)?>Награды: <b title="0.1 балла за 1 награду" style="cursor:help"><?$AWARDS$*0.1?></b><br><?endif?><?if($_BAN_PERCENT$)?>Штраф: <b style="cursor:help" title="Минус $_BAN_PERCENT$% из-за замечаний"><? ($_REPUTATION$ + $_COM_ENTRIES$*0.15 + $_FORUM_ENTRIES$*0.2 + $_LOAD_ENTRIES$*0.5 + $AWARDS$*0.1)*$_BAN_PERCENT$/100 ?></b><?endif?> <?if($_PUBL_ENTRIES$)?><br>Изменения: <b title="Количество ваших баллов изменила администрация. Возможные причины: наказание (за нарушение правил), поощрения (за заслуги), просто так (администрация имеет право)" style="cursor:help" id="thechanges">...</b><?endif?></div></fieldset>');}; <?if($MODER_PANEL$)?>function change() {new _uWnd('change', 'Изменить количество баллов $_USERNAME$', 350, 350, { icon: '/.s/img/icon/edt.png', autosize: 1, fadespeed: 500, modal: 1, fadeclosespeed: 500, fadetype: 1, fadeclosetype: 1, align: 0},'<fieldset><legend>Изменить</legend><div style="text-align:left"><div id="changeType"><input type="radio" name="chng" value="minus" id="minus"><label style="cursor:pointer" for="minus"><img src="http://s40.ucoz.net/img/icon/minus.png" height="13" border="0" align="absmiddle"> Уменьшить</label><br><input type="radio" name="chng" value="plus" id="plus"><label for="plus" style="cursor:pointer"><img src="http://s40.ucoz.net/img/icon/plus.png" height="13" border="0" align="absmiddle"> Увеличить</label><br><div style="text-align:right"><br><br><input type="button" value="Далее" onclick="dalee()"></div></div> <div id="changeNum" style="display:none">Введите число, на сколько нужно изменить количество баллов.<br><input type="text" id="changeTheNum" maxlength="7" style="width:100%"><input type="button" value="Готово" onclick="fChange();"></div> </div></fieldset>');}; function dalee() {if ($('input[name="chng"]').is(':checked')) {$('#changeType').hide();$('#changeNum').show();$("#changeTheNum").focus();}} function fChange() { if ($("#changeTheNum").val().match(/\D/) || $("#changeTheNum").val().match(/\s/) || $("#changeTheNum").val() == '') {alert('Введите числовое значение');return;} else {var type = $('input[name="chng"]:checked').val(); $.get("/publ/0-0-$_USER_ID$-0-17", function (l) {var now = $("input.pts:first", l).val(); if (!now) {var now = 0;} if (type == 'plus') {ress = (Number(now) + Number($("#changeTheNum").val()));} else {ress = (Number(now) - Number($("#changeTheNum").val()));}if (ress == 0) {ress = "-0";}$.get("/publ/0-0-0-0-1", function (b) {$.post("/publ/", {a: 12,jkd428: 1,jkd498: 1,ocat: 1,title: ress,user: '$_USERNAME$',ssid: $("input[name='ssid']", b).val()}, function(){_uWnd.close('change');});});});}}<?endif?></script>
P.S. - Внимание! Если вы воспользовались функцией "Произвольное повышение/понижение количества баллов", а после обновления страницы баллы не пересчитались - не расстраивайтесь, а подождите 1 минуту и обновите страницу снова.