1. опрос на сайте. предлагает проголосовать второй раз, голосует, но голос не учитывается. нужно прийти к какому-то логичному решению - либо учитывать все попытки проголосовать, либо выдавать "вы уже голосовали"
2. голосование в новости. имхо еще хуже - после голосования показывает результаты НО все еще висят две кнопки голосовать и результаты. здесь имхо лучше просто убрать эти две кнопки.
Правим обычные голосования
Открываем /engine/modules/vote.php
находим
/////////////////////////////////////////////////////////////////////////////
// Проверяем проголосовал ли текущий пользователь
/////////////////////////////////////////////////////////////////////////////
Code
$_IP = $db->safesql($_SERVER['REMOTE_ADDR']);
if (isset($member_id['name'])) $nick = $member_id['name'];
else
$nick = '';
if ($is_logged)
$row = $db->super_query("SELECT count(*) as count FROM ".PREFIX."_vote_result WHERE vote_id='$rid' AND name='$nick'");
else
$row = $db->super_query("SELECT count(*) as count FROM ".PREFIX."_vote_result WHERE vote_id='$rid' AND ip='$_IP'");
if ($row['count'] == 0) $is_voted = false;
else
$is_voted = true;
вырезаем и вставляем этот код над
if ($vote_action == "vote")
также над ним добавляем
if ($is_voted )
{
$flag = 1;
}
Единственный минус данного фикса, это - добавление дополнительного запроса!
Правим голосования в новостях
1. Открываем /engine/modules/poll.php, находим
ajax.sendAJAX(varsString);
ниже добавляем
document.getElementById('buttons').style.display = 'none';
находим
$tpl->compile('poll');
выше добавляем
if ( !$log['count'] == 0 )
{
$tpl->set ( '[hide-button]', '' );
$tpl->set ( '[/hide-button]', '' );
}
else
{
$tpl->set_block ( "'\[hide-button\](.*)\[/hide-button\]'si", "" );
}
2. В шаблоне poll.tpl находим код кнопок
<input type="button" onclick="doPoll('vote'); return false;" class="bbcodes_poll" value="Голосовать" /> <input type="button" onclick="doPoll('results'); return false;" class="bbcodes_poll" value="Результаты" />
и экранируем их
[hide-button]<div id="buttons">
<input type="button" onclick="doPoll('vote'); return false;" class="bbcodes_poll" value="Голосовать" /> <input type="button" onclick="doPoll('results'); return false;" class="bbcodes_poll" value="Результаты" />
</div>[/hide-button]