Мод для голосовалки

У вас есть идея для расширения функциональности phpBB 3.0.x? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
skv
phpBB 1.2.1
Сообщения: 24
Стаж: 17 лет 5 месяцев
Поблагодарили: 1 раз

Re: Мод для голосовалки

Сообщение skv »

ну и чтобы добить голосование до конца, добавляем опцию ограничения голосующих по количеству сообщений
добавляем поле в таблицу topic

Код: Выделить всё

ALTER TABLE `ПРЕФИКС_topics` ADD `poll_min_post` INT NOT NULL DEFAULT '1';

редактируем
viewtopic.php
search

Код: Выделить всё


                                $message = 'VOTE_CONVERTED';
                        }

                        $message = $user->lang[$message] . '<br /><br />' . sprintf($user->lang['RETURN_TOPIC'], '<a href="' . $redirect_url . '">', '</a>');
                        trigger_error($message);
                 }
after

Код: Выделить всё

                 if ($user->data['user_posts'] < $topic_data['poll_min_post'] )
                   {
                    trigger_error('Голосовать могут пользователи, у которых не менее '. $topic_data['poll_min_post'].' сообщений');
                     }



posting.php

search

Код: Выделить всё

                        $topic_sql = array(
                                'poll_title'            => '',
                                'poll_start'            => 0,
                                'poll_length'           => 0,
                                'poll_last_vote'        => 0,
                                'poll_max_options'      => 0,
                     

after

Код: Выделить всё

  'poll_min_post'         => 0,
search

Код: Выделить всё

              $post_data['poll_title']                = utf8_normalize_nfc(request_var('poll_title', '', true));
                $post_data['poll_length']               = request_var('poll_length', 0);
                $post_data['poll_option_text']  = utf8_normalize_nfc(request_var('poll_option_text', '', true));
                $post_data['poll_max_options']  = request_var('poll_max_options', 1);
after

Код: Выделить всё

        $post_data['poll_min_post']     = request_var('poll_min_post', 1);

search

Код: Выделить всё

               $poll = array(
                        'poll_title'            => $post_data['poll_title'],
                        'poll_length'           => $post_data['poll_length'],
                        'poll_max_options'      => $post_data['poll_max_options'],
after

Код: Выделить всё

                   'poll_min_post'         => $post_data['poll_min_post'],

search

Код: Выделить всё

                'POLL_MAX_OPTIONS'              => (isset($post_data['poll_max_options'])) ? (int) $post_data['poll_max_options'] : 1,
after

Код: Выделить всё

                'POLL_MIN_POST'                 => (isset($post_data['poll_min_post'])) ? (int) $post_data['poll_min_post'] : 1,

include/function_posting.php

search

Код: Выделить всё

                                    'poll_vote_change'      => $poll['poll_vote_change'])
                                );
after

Код: Выделить всё

$sql_data[TOPICS_TABLE]['sql']['poll_min_post'] = $poll['poll_min_post'];

Код: Выделить всё

        'topic_attachment'                      => (!empty($data['attachment_data'])) ? 1 : (isset($data['topic_attachment']) ? $data['topic_attachment'] : 0),
                        );

Код: Выделить всё

   $sql_data[TOPICS_TABLE]['sql']['poll_min_post'] = (isset($poll['poll_min_post'])) ? $poll['poll_min_post']: 1;


subsilver2

posting_poll_body.html


search

Код: Выделить всё

<!-- IF S_POLL_DELETE -->
       
Before

Код: Выделить всё

<tr>
        <td class="row1"><b class="genmed">Ограничение:</b><br /><span class="gensmall">Минимальное количество сообщений для голосования</span></td>
        <td class="row2"><input class="post" type="text" name="poll_min_post" size="3" maxlength="3" value="{POLL_MIN_POST}" /></td>
</tr>
ФИНИШ
poll.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось skv 09.11.2009 14:45, всего редактировалось 1 раз.
bagros
phpBB 1.0.0
Сообщения: 3
Стаж: 18 лет 1 месяц

Re: Мод для голосовалки

Сообщение bagros »

Народ, где взять полностью готовый код для голосовалки, чтобы
1. было видно кто голосвал (админу/юзерам).
2. Кол-во вариантов ответов увеличить.

Собрал коды с первой страницы по ссылке и с кодов СКВ, видать накосячил где то или что то лишнее впихнул, не робит
Есть ли готовый мод?
Аватара пользователя
GSC
phpBB 1.4.4
Сообщения: 116
Стаж: 17 лет 6 месяцев

Re: Мод для голосовалки

Сообщение GSC »

Как настроить что бы видно было кто и за что проголосовал, только администраторам.
Аватара пользователя
TSV
phpBB 1.4.2
Сообщения: 56
Стаж: 18 лет 3 месяца
Откуда: Чита
Поблагодарили: 2 раза

Re: Мод для голосовалки

Сообщение TSV »

Не хочу создавать новую тему, поэтому спрошу здесь:

Как сделать, чтобы можно было выставлять не только максимальное количество вариантов ответа, но и минимальное? Типа диапазон от 3-х до 5 ответов. Чтобы, если пользователь выбрал меньше положенного, выскакивало сообщение "Выберите количество ответов от 3 до 5", ну или что-то в этом роде.

Заранее СПАСИБО!
Аватара пользователя
UksusoFF
phpBB 1.4.2
Сообщения: 63
Стаж: 18 лет 4 месяца
Откуда: Самара
Благодарил (а): 2 раза

Re: Мод для голосовалки

Сообщение UksusoFF »

ну и чтобы добить голосование до конца, добавляем опцию ограничения голосующих по количеству сообщений
добавляем поле в таблицу topic

Код: Выделить всё

$sql_data[TOPICS_TABLE]['sql']['poll_min_postl'] = $poll['poll_min_post'];
тут ошибка

'poll_min_postl'='poll_min_post'
Последний раз редактировалось UksusoFF 21.11.2009 21:41, всего редактировалось 1 раз.
skv
phpBB 1.2.1
Сообщения: 24
Стаж: 17 лет 5 месяцев
Поблагодарили: 1 раз

Re: Мод для голосовалки

Сообщение skv »

UksusoFF писал(а):тут ошибка

'poll_min_postl'='poll_min_post'
спасибо исправил , это скорее не ошибка а опечатка :)

Добавлено спустя 1 минуту 22 секунды:
TSV
TSV писал(а):Не хочу создавать новую тему, поэтому спрошу здесь:

Как сделать, чтобы можно было выставлять не только максимальное количество вариантов ответа, но и минимальное? Типа диапазон от 3-х до 5 ответов. Чтобы, если пользователь выбрал меньше положенного, выскакивало сообщение "Выберите количество ответов от 3 до 5", ну или что-то в этом роде.

Заранее СПАСИБО!
ну логично предположить что в таблице постов надо создать еще одно поле по аналогии с количеством ответов . заполнять это поле при создании голосования

а во время голосования проверять попал в диапазон или нет(это если диапазон нужен) если хочешь жестко по количеству, то проверку поставь на минимальное количество голосов, такую же как и на превышение
поищи где стоит условие, которое выдает вот такой результат:
"Вы выбрали слишком много вариантов ответа при голосовании."
там скорее всего стоит, если ответов больше, то ошибка, поправь его на" если ответов больше или меньше, то ошибка" ....
ЖИВЕТ ВСЕ ЭТО ВО viewtopic.php
tantany
phpBB 1.0.0
Сообщения: 2
Стаж: 16 лет 9 месяцев

Re: Мод для голосовалки

Сообщение tantany »

Все установила - частично работает. огромное спасибо!(не работает то, что мне не очень нужно - можно проголосовать за кол-во эл-тов, меньше минимальнодопустимого) причиной этого является следующее:


Добавлено спустя 3 минуты 47 секунд:
и еще - не смогла выполнить следующие действия. поиск указанных строк - не успешный.
skv писал(а):include/function_posting.php

search

Код: Выделить всё

                                    'poll_vote_change'      => $poll['poll_vote_change'])
                                );
after

Код: Выделить всё

$sql_data[TOPICS_TABLE]['sql']['poll_min_post'] = $poll['poll_min_post'];

Код: Выделить всё

        'topic_attachment'                      => (!empty($data['attachment_data'])) ? 1 : (isset($data['topic_attachment']) ? $data['topic_attachment'] : 0),
                        );

Код: Выделить всё

   $sql_data[TOPICS_TABLE]['sql']['poll_min_post'] = (isset($poll['poll_min_post'])) ? $poll['poll_min_post']: 1;


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

можете реализовать такое?
Аватара пользователя
qwinter
phpBB 1.2.0
Сообщения: 12
Стаж: 16 лет 8 месяцев
Откуда: Саратов

Re: Мод для голосовалки

Сообщение qwinter »

Ссылка на мод пропала(( Выложите кто нить у кого он остался. Или дайте новую ссылку.
Enkil
phpBB 1.0.0
Сообщения: 7
Стаж: 15 лет 10 месяцев

Re: Мод для голосовалки

Сообщение Enkil »

мод не возможно скачать, но он нужен(((
может кто поделиться?
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Мод для голосовалки

Сообщение Палыч »

Enkil
Вы бы читали по-внимательнее
Sam писал(а):Reason: Mod marked as Abandoned. If the original MOD author wishes to continue development of this Modification, please PM any MOD Team Member to have it unlocked.
Перевожу: МОД помечен, как заброшенный.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Enkil
phpBB 1.0.0
Сообщения: 7
Стаж: 15 лет 10 месяцев

Re: Мод для голосовалки

Сообщение Enkil »

я это читал, спасибо!
но тем не менее в последнем своем варианте он работает и его функционал мне достаточен. Поэтому и родился вопрос "может ли кто поделиться", т.е. может кто то его устанавливал и у него сохранился архив мода.
velo
phpBB 2.0.1
Сообщения: 252
Стаж: 19 лет
Благодарил (а): 10 раз
Поблагодарили: 26 раз

Re: Мод для голосовалки

Сообщение velo »

Надеюсь что не ошибся темой, более подходящей вроде не увидел

Собственно возник вопрос: При голосовании записываются в БД IP проголосовавших, но... потом как я не искал, так и не нашёл, где же этот АйПи используется? Может быть ошибаюсь, но пока что вижу, что он только информационный, и никакой нагрузки не несёт. Если это не так, тыкните носом в часть кода, где он потом используется.

А если он не используется, то почему бы не написать маленькую проверку при голосовании?
Мои мысли по этому поводу:

OPEN viewtopic.php

FIND

Код: Выделить всё

	$cur_voted_id = array();
ADD AFTER

Код: Выделить всё

	$cur_voted_ip = array();
FIND

Код: Выделить всё

		while ($row = $db->sql_fetchrow($result))
		{
			$cur_voted_id[] = $row['poll_option_id'];
		}
		$db->sql_freeresult($result);
ADD AFTER

Код: Выделить всё


		$sql = 'SELECT vote_user_ip
			FROM ' . POLL_VOTES_TABLE . '
			WHERE topic_id = ' . $topic_id;
		$result = $db->sql_query($sql);

		while ($row = $db->sql_fetchrow($result))
		{
			if( (string)$user->ip == $row['vote_user_ip'])
			{
				$cur_voted_ip[] = $row['vote_user_ip'];
			}
		}
		$db->sql_freeresult($result);
FIND

Код: Выделить всё

			$message = $user->lang[$message] . '<br /><br />' . sprintf($user->lang['RETURN_TOPIC'], '<a href="' . $redirect_url . '">', '</a>');
			trigger_error($message);
		}
ADD AFTER

Код: Выделить всё

		if((sizeof($cur_voted_ip) + sizeof($voted_id)) > $topic_data['poll_max_options'])
		{
			$redirect_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id" . (($start == 0) ? '' : "&start=$start"));
			$message =  sprintf($user->lang['IP_VOTE_ALREADY'], $topic_id, $user->ip). '<br /><br />' . sprintf($user->lang['RETURN_TOPIC'], '<a href="' . $redirect_url . '">', '</a>');
			trigger_error($message);
		}
OPEN language/ru/viewtopic.php (аналогично для других языков)
FIND ADD BEFORE

Код: Выделить всё

	'IP_VOTE_ALREADY' 		=> 'С Вашего IP уже произведено голосование в данном опросе. Если Вы считаете это ошибкой, сообщите об этом Администратору, указав следующие данные: TID - %s, IP - %s',
WORK: phpBB3 3.0.8 + Portal XL 5.0 + MODs + Custom,
PHP Version 5.3.3-7+squeeze25, Apache/2.2.9 (Debian), MySQL(i) 5.1.73-1+deb6u1-log
Аватара пользователя
Di_Mok
Former team member
Сообщения: 814
Стаж: 16 лет 6 месяцев
Откуда: Родной Гондурас ;)
Благодарил (а): 147 раз
Поблагодарили: 118 раз

Re: Мод для голосовалки

Сообщение Di_Mok »

А как быть пользователям с серым айпишником?
velo
phpBB 2.0.1
Сообщения: 252
Стаж: 19 лет
Благодарил (а): 10 раз
Поблагодарили: 26 раз

Re: Мод для голосовалки

Сообщение velo »

Скажите, а никто не пытался Капчу прикрутить к голосовалке?
WORK: phpBB3 3.0.8 + Portal XL 5.0 + MODs + Custom,
PHP Version 5.3.3-7+squeeze25, Apache/2.2.9 (Debian), MySQL(i) 5.1.73-1+deb6u1-log
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Мод для голосовалки

Сообщение Booker »

Подниму темку. Актуальный мод для открытого голосования с возможностью выбора (сделать опрос открытым или нет) не появился? Или возможно у кого-то сохранился старый рабочий (ссылки не работают)?

Вернуться в «Запросы модов для phpBB 3.0.x»