Inner poll для Drupal 7. Прикрепляйте опросы к любому документу ;)

Аватар пользователя Irbis Irbis 21 января 2012 в 18:53

День добрый.

Портировал Inner poll для Drupal 7, для моего любимого www.drupal.ru. Прикрепляйте опросы к любому документу ;).

При портировании кое-где немного изменил логику и вывел количество воздержавшихся.
Поля в БД совместимы с версией для Drupal 6, только добавились новые индексы.
Перевод модуля содержится в архиве модуля.

Модуль размещен на drupal.org - inner_poll sandbox

Особенности модуля

  1. Все действия пользователей сохраняются без перезагрузки страницы (хмм, возможно, пора уже перестать считать AJAX фишкой);
  2. автор опроса может разрешить (или не разрешить) пользователям отменять свои голоса голоса;
  3. автор опроса может открывать/закрывать опрос, а так же устанавливать дату автоматического закрытия опроса;
  4. автор опроса может разрешить/запретить множественный выбор;
  5. автор опроса, если он не является модератором, может править вопрос опроса только до тех пор, пока в опросе нет ни одного голоса;
  6. автор опроса, если он не является модератором, может править ответ на вопрос только до тех пор, пока за этот ответ нет ни одного голоса;
  7. опрос может содержать до 999 вариантов ответа;
  8. пользователи не могут просматривать результаты опроса до тех пор пока не проголосуют, для неопределившихся с решением есть кнопка "Воздержаться", после нажатия которой будут показаны результаты, но при этом пользователь потеряет возможность голосовать в этом опросе;
  9. администратор сайта может раздавать права на голосование, создание опросов, редактирование опросов, редактирование опросов даже в случае если в них уже есть голоса;

Пояснение к пунктам 5 и 6. Они нужны для того, чтобы авторы не вносили кардинальных изменений в опрос тогда, когда другие юзеры уже отдали в них свои голоса. Например, был опрос "Любите ли вы клубнику", на который получены ответы "Да" — 95%, "Нет" — 5%, а затем ушлый автор сменил вопрос на "Смотрите ли вы порнографию".

Примечания

  1. Не стал прикручивать кэш, так как в кэш можно класть всю страницу сторонними средствами при необходимости (обработка AJAX живёт на своих URL).
  2. Не реализован файл тестов, если кто напишет, буду благодарен.
  3. Отсутствует шаблон вывода контента так как количество выводимых данных мало и многое можно темизировать с помощью *.css.

Загрузка

Ссылка: Модуль размещен и дорабатывается на drupal.org - inner_poll sandbox

ВложениеРазмер
Иконка пакета inner_poll.zip21.54 КБ
0 Thanks

Комментарии

Аватар пользователя Irbis Irbis 21 января 2012 в 19:44
"RxB" wrote:

Главный косяк версии для шестёрки пофикшен?
Когда анонимы могут голосовать, когда им голосовать нельзя?

У меня на D7 всё работает корректно, если у Вас на D7 удастся воспроизвести такую ситуацию, то просто отпишите мне сюда и я поправлю.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 21 января 2012 в 22:23

Ага, судя по коду бага есть.
Функция inner_poll_vote_js(), туда треба добавить проверку user_access('vote on inner polls') для анонима или, что наверно будет более правильным, переписать hook_menu() вот так:

  $items['inner_poll/vote_js'] = array(
    'title' => 'Inner poll vote js',
    'page callback' => 'inner_poll_vote_js',
    'access arguments' => array('vote on inner polls'),
    'type' => MENU_CALLBACK,
  );

Иначе даже при закрытой возможности анонимного голосования - голосование анонимом посылом специальных запросов возможно.

Аватар пользователя Irbis Irbis 22 января 2012 в 0:06
"RxB" wrote:

Ага, судя по коду бага есть.

Упс, проглядел. Поправил, обновил архивы. Спасибо.

Аватар пользователя mavr mavr 10 ноября 2015 в 11:48

Поставил для пробы! Вылезла куча ошибок:
1. После включения постоянно выдает (кеш чистил, тему менял)

2. Когда создал опрос, и пробую проголосовать:

Пишет "Вы воздержались", хотя я голосовал.

Аватар пользователя Irbis Irbis 22 января 2012 в 23:34
"mavr" wrote:

Поставил для пробы! Вылезла куча ошибок

Извиняюсь, не тот билд разместил после добавления проверки: user_access('vote on inner polls') для анонима, выходные блин :(.

Перезалил, потестил, проверил - всё работает. Прошу попробовать :).

Аватар пользователя mavr mavr 23 января 2012 в 1:37

Значит мне не повезло)))
Теперь все как должно!
Еще пожелание:
Заменить фиксированную ширину, та что у настройках "Ширина блока с опросом" на 100%, чтоб было красиво на разных темах с разной шириной блока выводить! Ну и ширину полос гистограммы тоже вычислять у процентах! Как у стандартного модуля "Poll"
Еще как по мне то текст К материалу прикреплен опрос на тему «Чи подобаєтся вам це опитування?»: нужно чтоб выглядел как К материалу прикреплен опрос на тему: «Чи подобаєтся вам це опитування?»

Аватар пользователя andypost@drupal.org andypost@drupal.org 23 января 2012 в 2:13

Думаю, что стоит завести проект, так как у меня в загашниках есть версия под 5ку :)
Заодно может кто-нить начнет пользоваться модулем да и багрепорты с патчами проще принимать.

PS: inner poll sandbox

Аватар пользователя Irbis Irbis 23 января 2012 в 2:24
"mavr" wrote:

Еще пожелание

Спасибо за пожелания, постараемся в будущем сделать :).

"<a href="mailto:andypost@drupal.org">andypost@drupal.org</a>" wrote:

стоит завести проект

Андрей, спасибо за помощь ;).

Аватар пользователя UksusoFF UksusoFF 25 февраля 2012 в 1:12

andypost@drupal.org, вы не подскажите как сделать мульти выбор, но ограничить его 3 значениями, и в то же время сделать обязательными выбор трех значений?

UPD: Собственно вот это решение с некоторыми модификациями вполне подойдет для этого...
http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=71919&page=0#p...

Аватар пользователя UksusoFF UksusoFF 29 февраля 2012 в 19:40

Почему-то после голосования у всех вариантов результаты не меняются... и остаются равными 1

Аватар пользователя volgoweb volgoweb 6 марта 2012 в 22:43

Вместо прибавления количества голосов проставляется 1 потому что ошибка в коде:
В файле inner_poll.module в функции function inner_poll_vote_js() должно быть

<?phpdb_update('inner_poll_dk_choices')
          ->
expression('chvotes''chvotes + 1')
          ->
condition('nid'$nid)
          ->
condition('chorder'$votes[$i])
          ->
execute(); ?>

вместо

<?phpdb_update('inner_poll_dk_choices')
          ->
fields(array('chvotes' => 'chvotes' 1))
          ->
condition('nid'$nid)
          ->
condition('chorder'$votes[$i])
          ->
execute();   ?>
Аватар пользователя UksusoFF UksusoFF 23 марта 2012 в 15:36

В идеале еще бы разбить права доступа для ролей:
Просмотр результатов закрытых голосований
Просмотр результатов открытых голосований

Добавить возможность копировать голосования
И вынести шаблоны из модуля

Аватар пользователя UksusoFF UksusoFF 21 мая 2012 в 22:39

Скажите что и где подправить чтобы выводилось допустим 10 вариантов сразу при создании нового голосования?

Аватар пользователя Irbis Irbis 3 июня 2012 в 17:18
UksusoFF wrote:

Скажите что и где подправить чтобы выводилось допустим 10 вариантов сразу при создании нового голосования?

242 строка: $counter = 1; сделайте 9, это в function inner_poll_form_alter(&$form, $form_state, $form_id);

Аватар пользователя UksusoFF UksusoFF 4 июня 2012 в 1:00
"Irbis" wrote:

242 строка: $counter = 1; сделайте 9, это в function inner_poll_form_alter(&$form, $form_state, $form_id);

спасибо, только у меня почемуто там был ноль :)

Аватар пользователя masyanka masyanka 6 июня 2012 в 7:16

Как открепить ранее созданный опрос от ноды? Если убрать варианты значений, в ноде выводится тайтл опроса, без тайтла нода не сохраняется с ошибкой: If you want to create poll you must enter question and minimum to choices. 2

Аватар пользователя iNFerNo iNFerNo 6 июня 2012 в 8:35

никак. это не предусмотрено. было бы конечно хорошо. закрыть скрыть удалить опрос. варианты вывода. и список ответов по пользователям и даты ответов.

Аватар пользователя masyanka masyanka 6 июня 2012 в 11:03
"iNFerNo" wrote:

никак. это не предусмотрено. было бы конечно хорошо. закрыть скрыть удалить опрос. варианты вывода. и список ответов по пользователям и даты ответов.

Надеюсь, разработчики примут к сведению.

Аватар пользователя masyanka masyanka 7 июня 2012 в 23:59

Не появляется ссылка на отмену выбора, хотя в разрешениях ролей галки стоят. В коде появляется див с классом cancel_votes, но он пустой

Аватар пользователя masyanka masyanka 8 июня 2012 в 0:04
"masyanka" wrote:

Не появляется ссылка на отмену выбора, хотя в разрешениях ролей галки стоят. В коде появляется див с классом cancel_votes, но он пустой

По невнимательности недоглядела галку при добавлении опроса.

Аватар пользователя iNFerNo iNFerNo 1 октября 2012 в 21:49

что со всременем? еще бы со вьюс бы скрестить что бы результаты выводить...

Аватар пользователя iNFerNo iNFerNo 2 октября 2012 в 16:02

а добавить в вертикале табс можно засунуть вопрос? и добавить несколько опросов?

Аватар пользователя iNFerNo iNFerNo 2 октября 2012 в 16:55

Добавьте в модуль следующий функционал:

1. Сделать для гостей нормальное отображение и возможность показывать опросы/показывать результаты (вывод результатов как и у зарегистрированных юзеров), возможность убрать фразу - зарегистрируйтесь или войдите для голосования.

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

2. Добавить в типы материалов возможность добавить опрос/опросы для каждой созданной ноды этого типа, без возможности редактирования настроек, но с возможностью для каждой ноды выбирать добавлять его в ноду или нет.

3. Добавлять автору ноду дополнительные опросы к ноде

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

5. Возможность удаления/скрытия опросов из ноды

6. Взаимодействие с модулем Views 3 - для вывода в ноде результатов опроса.

7. Возможность для каждого типа материала писать свой вариант фразы - К материалу добавлен опрос на тему (использование токенов).

8. Убрать все настройки в вертикальные табы

Аватар пользователя iNFerNo iNFerNo 20 ноября 2012 в 10:20

Было бы очень здорово что бы как поле - опрос был, что бы его можно было в табы закинуть, как и другие поля ноды (когда заполняешь форму ноды).

Т.е. не выбирать тип материала в настройках а задавать поле.

Вообще развитие будет у модуля?

Аватар пользователя andypost@drupal.org andypost@drupal.org 2 декабря 2012 в 20:55

Походу голосовалки вообще всё реже требуются сайтам, да и есть вероятность, что модуль голосований вообще выкинут из ядра http://drupal.org/node/61285

Так что есть большой смысл развивать модуль и объединить уилия с http://drupal.org/sandbox/sumsi/1074206

Аватар пользователя PVasili PVasili 3 апреля 2016 в 2:50

Сейчас модуль вешает страницу. Даже в garland.
Есть ли что-то похожее работающее?