Проверка голосования.

InstantCMS 2.X

Как не давать голосовать юзеру, который уже проголосовал?

#1 25 мая 2017 в 14:26
Выяснилась одна непонятная мне вещь.
Если пользователь уже проголосовал за контент, то ему не разрешается голосовать двумя способами различной степени извращенности.
1. Кнопки виджета рейтинга неактивны, при ховере "Вы уже голосовали".
2. Кнопки активны, но при попытке голосовать вылетает алерт "Вы уже голосовали".

В файле \system\controllers\rating\frontend.php имееются такие строки:
  1. [code=php]// эта кука ставится только если общий рейтинг не показывается до голосования
  2. // все проверки на стороне сервера делает экшн vote
  3. // т.е. просто улучшение юзабилити
  4. $is_voted = cmsUser::getCookie($this->target_subject.$target_id.$this->target_controller);[/code]
А в \system\controllers\rating\actions\vote.php следующие:
  1. // если куки нет, ставим
  2. if(!empty($this->options['is_hidden']) && !cmsUser::getCookie($cookie_key)){
  3. cmsUser::setCookie($cookie_key, 1, 2628000); // год
  4. }
То есть кука ставится только в случае, если отключен показ результатов до голосования.

Так вот мне непонятно, зачем зачем заставлять пользователя жать кнопки рейтинга, а потом закрывать всплывающий алерт. Это выглядит как издевательство. Пользователи недовольны.

Пробовал убрать проверку на !empty($this->options['is_hidden']) — кука ставится, но только со второго раза. То есть после всплывающего окна.
Отсюда вопрос. Как сделать, чтобы даже при включенном отображении результатов, не разрешать пользователю ткнуть повторно?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.