• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Поиск [ищу] Голосование: измененый мод

Статус
В этой теме нельзя размещать новые ответы.

Moroznui

Создатель
Регистрация
2 Июл 2008
Сообщения
43
Реакции
2
Ищу что-нибудь сторонее для проведения опросов.
Что не устраивает в стандарте:
1. Если человек проголосовал, ему все равно показываетя это голосование.
2. Даже если он проголосовал ему дают еще раз список ответов, хотя голос уже не учитывается
3. При нажатии на Результаты появляется результаты рандомного опроса, а не того, который был в данный момент на странице.
4. В админке нет данных по каждому голосованию
5. нет возможности использовать аякс, если такой не включен в основных настройках.

Мб есть у кого-нить мод, который решает хотя бы некоторые проблемы из списка сверху? Буду признателен
 
Есть хак который если человек проголосовал, будет выводить результат, а не список вариантов...
Сразу говорю название не помню, попробуй через поиск или на 4дле там был...
 
Если найдёш выложи сдесть ссылку чтоб народ не искал.
 
  • Заблокирован
  • #4
Есть хак который если человек проголосовал, будет выводить результат, а не список вариантов...
Сразу говорю название не помню, попробуй через поиск или на 4дле там был...

Что бы не искать выложу сдесь, заранее извиняюсь, если уже размещено...

=====================

Решает 2 вопроса:

1. опрос на сайте. предлагает проголосовать второй раз, голосует, но голос не учитывается. нужно прийти к какому-то логичному решению - либо учитывать все попытки проголосовать, либо выдавать "вы уже голосовали"

2. голосование в новости. имхо еще хуже - после голосования показывает результаты НО все еще висят две кнопки голосовать и результаты. здесь имхо лучше просто убрать эти две кнопки.


Правим обычные голосования

Открываем /engine/modules/vote.php

находим
Код:
/////////////////////////////////////////////////////////////////////////////
  //  Проверяем проголосовал ли текущий пользователь
  /////////////////////////////////////////////////////////////////////////////
  <font color=#000080><strong>$_IP</strong></font><font color=#000000> = </font><font color=#000080><strong>$db</strong></font>->safesql(<font color=#000080><strong>$_SERVER</strong></font>['REMOTE_ADDR']);

  <font color=#000000><strong>if</strong></font> (<font color=#008080><strong>isset</strong></font>(<font color=#000080><strong>$member_id</strong></font>['name'])) <font color=#000080><strong>$nick</strong></font><font color=#000000> = </font><font color=#000080><strong>$member_id</strong></font>['name']; <font color=#000000><strong>else</strong></font> <font color=#000080><strong>$nick</strong></font><font color=#000000> = </font>'';

  <font color=#000000><strong>if</strong></font> (<font color=#000080><strong>$is_logged</strong></font>)
  <font color=#000080><strong>$row</strong></font>  = <font color=#000080><strong>$db</strong></font>->super_query("SELECT <font color=#008080><strong>count</strong></font>(*) <font color=#000000><strong>as</strong></font> <font color=#008080><strong>count</strong></font> FROM ".PREFIX."_vote_result WHERE vote_id='<font color=#000080><strong>$rid</strong></font>' AND name='<font color=#000080><strong>$nick</strong></font>'");
  <font color=#000000><strong>else</strong></font>
  <font color=#000080><strong>$row</strong></font>  = <font color=#000080><strong>$db</strong></font>->super_query("SELECT <font color=#008080><strong>count</strong></font>(*) <font color=#000000><strong>as</strong></font> <font color=#008080><strong>count</strong></font> FROM ".PREFIX."_vote_result WHERE vote_id='<font color=#000080><strong>$rid</strong></font>' AND ip='<font color=#000080><strong>$_IP</strong></font>'");

  <font color=#000000><strong>if</strong></font> (<font color=#000080><strong>$row</strong></font>['<font color=#008080><strong>count</strong></font>']<font color=#000000> == </font>0) <font color=#000080><strong>$is_voted</strong></font><font color=#000000> = </font><font color=#000000><strong>false</strong></font>;
  <font color=#000000><strong>else</strong></font> <font color=#000080><strong>$is_voted</strong></font><font color=#000000> = </font><font color=#000000><strong>true</strong></font>;

вырезаем и вставляем этот код над
Код:
<font color=#000000><strong>if</strong></font> (<font color=#000080><strong>$vote_action</strong></font><font color=#000000> == </font>"vote")

также над ним добавляем
Код:
  <font color=#000000><strong>if</strong></font> ( <font color=#000080><strong>$is_voted</strong></font> )
  {
       <font color=#000080><strong>$flag</strong></font><font color=#000000> = </font>1;
  }

Единственный минус данного фикса, это - добавление дополнительного запроса!

Правим голосования в новостях

1. Открываем /engine/modules/poll.php, находим
Код:
ajax.sendAJAX(varsString);

ниже добавляем

Код:
document.getElementById('buttons').style.display<font color=#000000> = </font>'none';


находим

Код:
<font color=#000080><strong>$tpl</strong></font>->compile('poll');


выше добавляем

Код:
    <font color=#000000><strong>if</strong></font> ( !<font color=#000080><strong>$log</strong></font>['<font color=#008080><strong>count</strong></font>']<font color=#000000> == </font>0 )
    {
          <font color=#000080><strong>$tpl</strong></font>->set ( '[hide-button]', '' );
          <font color=#000080><strong>$tpl</strong></font>->set ( '[/hide-button]', '' );
    }
    <font color=#000000><strong>else</strong></font>
    {
          <font color=#000080><strong>$tpl</strong></font>->set_block ( "'\[hide-button\](.*)\[/hide-button\]'si", "" );
    }


2. В шаблоне poll.tpl находим код кнопок

Код:
<input type="button" onclick="doPoll('vote'); <font color=#000000><strong>return</strong></font> <font color=#000000><strong>false</strong></font>;" <font color=#000000><strong>class</strong></font>="bbcodes_poll" value="Голосовать" />&nbsp;<input type="button" onclick="doPoll('results'); <font color=#000000><strong>return</strong></font> <font color=#000000><strong>false</strong></font>;" <font color=#000000><strong>class</strong></font>="bbcodes_poll" value="Результаты" />


и экранируем их

Код:
[hide-button]<div id="buttons">
<input type="button" onclick="doPoll('vote'); <font color=#000000><strong>return</strong></font> <font color=#000000><strong>false</strong></font>;" <font color=#000000><strong>class</strong></font>="bbcodes_poll" value="Голосовать" />&nbsp;<input type="button" onclick="doPoll('results'); <font color=#000000><strong>return</strong></font> <font color=#000000><strong>false</strong></font>;" <font color=#000000><strong>class</strong></font>="bbcodes_poll" value="Результаты" />
</div>[/hide-button]

Автор: nickon
Источник: Для просмотра ссылки Войди или Зарегистрируйся
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху