Страница 1 из 11
Модератор форума: Yuri_G 
Сообщество uCoz » Вебмастеру » Общие вопросы от вебмастеров » Таймаут на вручение наград
Таймаут на вручение наград
Мыдаров
Сообщений: 50
Репутация: 1

Сообщение # 1 | 20:06:44
Здравствуйте. Можно ли как то установить таймаут на вручение наград так же как это делается с репутацией? Чёт не могу найти такую настройку.
webanet
Личный менеджер
Сообщений: 23015
Репутация: 4865

Сообщение # 2 | 20:38:12
Мыдаров, панель управления - инструменты - награды - в списке наград надо жать на разводной ключ напротив каждой - в открывшемся окне будет тайм аут на вручение

ТУТ можно оставить своё мнение по любому вопросу
https://webanetlabs.net/
Мыдаров
Сообщений: 50
Репутация: 1

Сообщение # 3 | 20:46:53
webanet, в общем, либо тогда это баг, либо так и задумано.
Этот таймаут действует только на один подарок, т.е. одному и тому же пользователю можно надарить все имеющиеся подарки в один день.
Вот пример - http://onlinecomics.ru/index/8-5374
Этот человек зарегал ещё один аккаунт и за сегодня надарил сам себе все эти подарки, тем самым накрутил баллы за которые можно кое что приобрести на сайте.
Можно ли как то установить таймаут на все подарки разом? Чтобы одному пользователю можно было подарить только один подарок в день, а не все сразу?
udevlife
Сообщений: 272
Репутация: 60

Сообщение # 4 | 23:34:45
Мыдаров, Простейшее решение на JQuery, Вам осталось лишь воткнуть куки, сами сможете?
Сообщение отредактировал udevlife - Воскресенье, 06 Дек 2015, 23:35:43
Мыдаров
Сообщений: 50
Репутация: 1

Сообщение # 5 | 23:42:49
udevlife, привязать на нажатие по кнопке "Вручить награду"? Но если пользователь не завершит действие, т.е ему вдруг под конец приспичит сменить награду на другую и он закроет ajax окно, то повторно он уже этого сделать не сможет, а награду так и не вручил. Но всё равно спасибо, одно из решений.
udevlife
Сообщений: 272
Репутация: 60

Сообщение # 6 | 23:44:27
Мыдаров, Повесить отмену куков по клику на закрытие окна + если мы уже заговорили о куках, вырезать условие "Вы уже скачали", оно не потребуется и будет только мешать с куками.
Сообщение отредактировал udevlife - Воскресенье, 06 Дек 2015, 23:45:57
Мыдаров
Сообщений: 50
Репутация: 1

Сообщение # 7 | 23:52:15
udevlife, я не на столько силён в куках, но попробую. А что насчёт url? Т.е. вручив одному пользователю, другому уже нельзя будет?
udevlife
Сообщений: 272
Репутация: 60

Сообщение # 8 | 15:58:59
Мыдаров, Хороший вопрос, скоро вернусь... happy

Добавлено (07 Дек 2015, 15:56:29)
---------------------------------------------
Мыдаров, Словно часы. Скрипт после нажатия на кнопку добавляет куку с первыми 4 буквами email адреса пользователя(чтобы каждому можно было поблагодарить), если нажать в модальке крестик то куки удаляются и ссылка на добавление появляется обратно. После добавления награды страница перезагружается чтобы применить изменения в структуре кода и полностью изъять ссылку из кода. В общем, вот.

Код
<?if($AWARDS_READ_URL$ || $_REP_READ_URL$)?>
<div id="block25" class="udtb"><div class="udtlb">Поощрения:</div> <?if($AWARDS_READ_URL$)?><a href="$AWARDS_READ_URL$" title="Список наград">Награды (<b>$AWARDS$</b>)</a>
    <?if($AWARDS_DO_URL$)?><a href="$AWARDS_DO_URL$" id="awardLink">+</a><?endif?><?endif?>
    
<script>
$(document).ready(function() {
var x = get_cookie ( "<?substr($_EMAIL$,0,4)?>" );
if (x == "true") {
document.getElementById('awardLink').remove();
}
$("#awardLink").click(function() {
$(this).hide(500);
var date = new Date(new Date().getTime() + 86400 * 1000);     
document.cookie = "<?substr($_EMAIL$,0,4)?>=true; expires=" + date.toUTCString();
});
$(document).on('click', '.xt-close', function(){
$("#awardLink").show(500);
var date = new Date(0);
document.cookie = "<?substr($_EMAIL$,0,4)?>=true; expires=" + date.toUTCString();
});
$(document).on('click', '.myBtnCenter', function(){
location.reload();
});
});

function get_cookie (cookie_name) {
var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
if (results)
return (unescape (results[2] ));
else
return null;
}
</script>

Добавлено (07 Дек 2015, 15:58:59)
---------------------------------------------
P.S. Пример

Мыдаров
Сообщений: 50
Репутация: 1

Сообщение # 9 | 22:59:56
udevlife, ого, не ожидал что вы напишите готовый скрипт, это круто, спасибо. Вот только он не работает, даже на вашей тестовой странице, я не смог вручить награду этому пользователю - http://ulife-testzone.ucoz.com/index/8-2

После нажатия добавить, окошко закрывается и всё, но награда так и не вручается.
И ещё один минус, после того как кнопка + пропадает, можно открыть окно со списком всех наград и закрыть его, таким образом куки затирается, и после обновления страницы кнопка + снова появляется.

Добавлено (07 Дек 2015, 22:59:56)
---------------------------------------------
И кстати если email адрес скрыт, то вот что получается в скрипте:


Код
document.cookie = "Адре=true; expires=" + date.toUTCString();
"Адре" для всех у кого адрес будет скрыт =) Может тогда использовать Логин или ID пользователя, а не Email?
udevlife
Сообщений: 272
Репутация: 60

Сообщение # 10 | 23:57:38
Мыдаров, Поправил, кажется всё идеально.
Код
<script>
$(document).ready(function() {
var x = get_cookie ( "user$_USER_ID$" );
if (x == "true") {
document.getElementById('awardLink').remove();
}
$("#awardLink").click(function() {
$(this).hide(500);
var date = new Date(new Date().getTime() + 86400 * 1000);
document.cookie = "user$_USER_ID$=true; expires=" + date.toUTCString();
});
if (document.getElementById('awardLink') != null) {
        $(document).on('click', '.xt-close', function(){
  $("#awardLink").show(500);
  var date = new Date(0);
  document.cookie = "user$_USER_ID$=true; expires=" + date.toUTCString();
  });
    $(document).on('click', '.myBtnCenter', function(){
  setTimeout(function() { location.reload(); }, 2000)
  });
}
});

function get_cookie (cookie_name) {
var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
if (results)
return (unescape (results[2] ));
else
return null;
}
</script>

Добавлено (07 Дек 2015, 23:50:29)
---------------------------------------------
P.S. Пример тоже рабочий, указал после добавить таймаут в 2 секунды, лично мне хватает чтобы добавить награду, если вам не хватит установите на 3 или 4.

Добавлено (07 Дек 2015, 23:57:38)
---------------------------------------------
P.P.S. Эта строчка

Код
var date = new Date(new Date().getTime() + 86400 * 1000);
где 86400 это сутки в секундах.
Мыдаров
Сообщений: 50
Репутация: 1

Сообщение # 11 | 02:52:06
Цитата udevlife ()
Поправил, кажется всё идеально.
Да, теперь действительно идеально!
Огромнейшее вам спасибо, скрипт просто супер.
Теперь простой среднестатистический пользователь не сможет накрутить.
Сообщество uCoz » Вебмастеру » Общие вопросы от вебмастеров » Таймаут на вручение наград
Страница 1 из 11
Поиск: