В чате прозвучал вопрос: Можно ли устанавливать на юкоз бонусы для
покупки безделух (услуг)? Вот я пошарился в инете и нашел скрипт баллов
для сайтов юкоз с возможностью их обмена. С помощью скрипта баллы можно
передавать другому пользователю, создавать заявки на смену ника и т.д, а
так же пополнить свой счет создав и оплатив заявку.
Заработать баллы можно оставляя комментарии, посты на форуме, добавляя
материалы в каталоге файлов, увеличением наград и репутации.
Посмотреть количество заработанных баллов и осуществлять манипуляции с ними вы можете в своем профиле.
В скрипте баллов есть проверка на правильность ввода данных, пример указан в скрине ниже.
Изменение количества баллов выполняется в пару кликов, пользователь
создает заявку и вам приходит личное сообщение. Вам всего лишь нужно
перейти по ссылке и сделать один клик, после чего у пользователя
прибавятся или убавятся баллы.
Настройка: Для баллов мы используем модуль блог, активируем его и переходим к настройке, делаем все как на скрине:
Отключаем каптчу для всех групп перейдя: ПУ > Пользователи >
Группы пользователей > Установка прав для всех групп > Разное >
Не показывать код безопасности - ставим галочки возле всех групп и
сохраняем.
Установка: Файлы архива закачайте в папку ball файл менеджера. (Скачать архив) В вид материалов блога ставим
<span
class="ballEdit"><span
class="plus">$OTHER1$</span><span
class="minus">$OTHER2$</span><span
class="log">$MESSAGE$</span></span>$MODER_PANEL$
На странице архива материалов модуля блог заменяем $BODY$ на:
<div id="bFast">$BODY$</div>
В персональной странице пользователя, перед /body ставим:
<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$*2?-->, $_COM_ENTRIES$,
["комментарий", "комментария", "комментариев"]],
[<!--?$_FORUM_ENTRIES$*2?-->, $_FORUM_ENTRIES$, ["сообщение на
форуме", "сообщения на форуме", "сообщений на форуме"]],
[<!--?$_LOAD_ENTRIES$*4?-->, $_LOAD_ENTRIES$, ["файл", "файла",
"файлов"]], [<!--?$_REPUTATION$*3?-->, $_REPUTATION$, ["единица
репутации", "единицы репутации", "единиц репутации"]],
[<!--?$AWARDS$*3?-->, $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='/ball/error.png' border='0' align='absmiddle'> Вы ввели не
число");return;} if
(parseInt($("#ballov").text())<parseInt($("#skolko").val())
&& $("#typechange").val()==2) {$("#statusChange").html("<img
src='/ball/error.png' border='0' align='absmiddle'> Недостаточно
баллов");return;} $("#statusChange").html("<img src='/ball/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='/ball/ok.png' border='0'
align='absmiddle'> Баллы изменены");}else {
$("#statusChange").html("<img src='/ball/error.png' border='0'
align='absmiddle'> Error");}});});});}};
balli.getEdit(<!--?if(not($_BAN_PERCENT$))?--><!--?$_COM_ENTRIES$*2
+ $_FORUM_ENTRIES$*2 + $_LOAD_ENTRIES$*4 + $_REPUTATION$*3 +
$AWARDS$*3?--><!--?else?--><?($_COM_ENTRIES$*2 +
$_FORUM_ENTRIES$*2 + $_LOAD_ENTRIES$*4 + $_REPUTATION$*3 +
$AWARDS$*3)/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>
На этой же странице, в место где хотите чтоб выводилось количество баллов ставим:
<div class="udtb"><div class="udtlb">Баллы
пользователя:</div><a href="#" onclick="balli.open();return
false;" id="ballov">…</a></div>
На этой же странице в head ставим:
<style
type="text/css">.gold1 {text-align:left;padding:3px;} .gold2
{clear:left;float:left;width:150px;} #goldI {display: none} .etitle{background:#f1f1f1;border:1px solid #cdcbcb;text-shadow: 0.1em 0.1em 0.05em #FFF;padding:7px;}
#tableball tr td{background: #fafafa; border: 1px solid #bdbdbd;
padding: 4px 10px;} .xt-edit{background-position:0 -90px;}
.xt-edit-over{background-position:-15px -90px;}
.xt-log{background-position:0 -315px;}
.xt-log-over{background-position:-15px -315px;} .rdv
{text-align:left;padding:6px;} .ldv
{clear:left;float:left;width:150px;} </style>
В нужное место ставим скрипт услуг предоставляемых за баллы
<style
type="text/css">.ulb{text-align:left; margin: 2px;}
.lbl{clear:left;float:left;width:170px;} .field_Y{width:145px;} #infa_y
{display: none; font-size: 9px;} #infa_y label {cursor: pointer;
font-size: 9px;}</style> <script type="text/javascript" src="/ball/yslygi.js"></script> <script type="text/javascript"> _y.href = "$HOME_PAGE_LINK$"; _y.idSender = "$USER_ID$"; _y.date = "$DAY$.$MONTH$.$YEAR$"; _y.admin = "Bogggdan"; </script> <a href="javascript:_y.all();">Услуги сайта</a>
Замените Bogggdan на свой ник на сайте. |