Компонент "Опросы" для InstantCMS 2.x

3048

Приветствую любителей InstantCMS!

После реализации закладок (для которых думаю немного допилить функционал) встала необходимость расширить типы контента возможностью добавления пользовательских опросов.



Компонент опросы

Основная идея функционала компонента взята на сайте habrahabr.ru. Пользователи при публикации своих статей могут добавлять к ним один или несколько опросов. Эта функция пользуется достаточной популярностью и позволяет получать фидбек от сообщества портала.

Установка компонента стандартна для InstantCMS 2.x в автоматическом или ручном режиме.

После успешной инсталляции компонента в системе появятся 3 новых "модуля" - компонент Опросы в разделе компонентов, поле Опросы и 2 виджета. Чтобы расширить функционал какого-либо типа контента и позволить пользователям устраивать опросы в рамках данного типа контента, необходимо добавить поле "Опросы".

Рассмотрим пример на основе типа контента блог с записями постами (posts)
Завершив настройку нужного нам типа контента компонент Опросы готов к работе! Теперь при добавлении новой записи или редактировании существующей мы можем наблюдать добавленное нами поле:


Поле выводит менеджер опросов для текущей (или вновь создаваемой) записи типа контента.

В рамках интуитивно-понятного интерфейса не трудно догадаться куда следует нажать чтобы добавить опрос к текущей записи типа контента =).
Кликаем на пимпу "Добавить" и перед нами появляется форма редактирования опроса:



На форме мы можем лицезреть следующие поля:

"Вопрос" - сюда необходимо написать вопрос, который будет содержать в себе тему самого опроса =);
"Можно голосовать за несколько вариантов" - при установке галочки в это поле, пользователи смогут выбрать несколько вариантов ответов, а не только один единственный. Максимально возможное количество вариантов выбора прописывается в поле "Максимальное количество вариантов".
"Установить дату окончания опроса" - если мы желаем ограничить голосование во времени, то устанавливаем галочку и в открывшемся поле "Дата завершения" указываем какого числа опрос перестанет принимать ответы. Пользователи будут видеть только результаты опроса. Указанная дата будет последним днем включительно (до 23:59:59 в зависимости от настроек сервера, реальное время может незначительно отличаться), когда можно будет проголосовать.
"Варианты ответов" - это группа полей где необходимо вписать возможные варианты ответов на указанный вопрос выше. По умолчанию отображается 2 поля для ответов, но их количество легко увеличить нажатием кнопки "Добавить ответ" или нажатием комбинации клавиш "Ctrl+Enter".
Если количество ответов больше двух, справа от поля появляются кнопки удаления, а слева "держатель" перемещения конкретного варианта ответа. Таким образом, можно достаточно легко настроить последовательность ответов и удалить лишние или ошибочные варианты.
По завершению редактирования опроса, необходимо нажать кнопку "Добавить" внизу формы.

Необходимо заполнить поле "Вопрос" и минимум 2 варианта ответа на него, остальные поля заполняются пользователем по желанию.

После создания нового опроса в менеджере опросов добавляется строка с заголовком опроса и кнопками редактирования и удаления текущего опроса. Таким образом, пользователь может добавить необходимое количество опросов в создаваемую им запись и отредактировать каждый опрос в отдельности. Однако, после публикации записи, включающей опросы, на сайте редактирование текста вопроса и вариантов ответов ограничено! Но все ещё остается возможность изменения времени голосования опроса и добавление новых опросов.

Следует отметить, что при создании и редактировании записи типа контента может возникнуть ситуация, когда пользователь добавил некоторое количество опросов, но затем не сохранил запись (нажатием кнопки Сохранить в меню действий справа или такой же кнопки внизу записи). При этом созданные опросы сохраняются в базе данных и выводятся пользователю при следующем добавлении или редактировании записи в этом типе контента.

Вывод опроса/опросов в теле записи происходит в том месте куда было установлено поле "Опросы". Голосование происходит стандартным способом: нужно выбрать желаемый вариант ответа из предложенных и нажать на кнопку "Голосовать". Также есть возможность посмотреть на результаты опроса без голосования, для этого нужно нажать "Воздержаться" (нажатие "Голосовать" без выбора ни одного варианта ответа, равносильно нажатию кнопки "Воздержаться"). Результаты опроса выводятся в виде линейной диаграммы с указанием количества проголосовавших людей и их процентным отношением. Для упорядочивания вариантов ответов по количеству набравших голосов можно воспользоваться кнопкой-переключателем внизу блока голосования.

Виджеты

В комплекте с компонентом есть 2 виджета: "Виджет опроса" - позволяет вывести один конкретно-указанный опрос и "Случайный опрос" - показывает один случайно-выбранный опрос из списка всех опросов определенного типа контента. Виджеты могут устанавливаться в специально отведенные места на сайте, как любой стандартный виджет InstantCMS 2.x.

С помощью параметров виджета "Случайный опрос" - "Категория" и "Набор" можно достаточно гибко настроить вывод желаемых опросов.
Еще, на заметку сайтоделам, возможен следующий use case:

Более подробную документацию можно изучить здесь.
Демо компонента смотрим здесь http://icms-demo.e3w.ru/posts/6-demo-post-testirovanija-komponenta-oprosy.html
login: [email protected], [email protected], [email protected] и т.д. до [email protected]
password: 123456
кто не успеет воспользоваться одним из демо-пользователей чтобы протестировать голосование, может зарегать нового или попробовать создать новый опрос при публикации нового поста в блоге (прошу вас только соблюдать приличие)) ).

Как приобрести компонент Опросы
Два по цене одного! | Ещё один виджет бегущей строки для InstantCMS 2.x
Комментарии (30)
MegaRostov 27 марта 2015 в 00:35 +8
Интересный компонент! +++
HostelB 27 марта 2015 в 09:10 +6
Большой жирный плюс! Покупаю однозначно!
Evanescence 27 марта 2015 в 09:15 +7
Однозначно плюс smile очень нужный компонент, и на сайте смотрится красиво!!!
AndroS 27 марта 2015 в 09:50 +7
Супер! Нужная вещь!
Val 27 марта 2015 в 10:57 +8
Всем комментаторам выше - большое спасибо за ваши отзывы! smile
Нэттинел 27 марта 2015 в 12:34 +8
+1. После отлично сделанных "закладок", покупаю не задумываясь! Спасибо за новый компонент smile
platon 27 марта 2015 в 15:10 +4
Супер, отличная вещь! Сделано на совесть!
Alteste 27 марта 2015 в 15:39 +4
Круто, но меня заинтересовал больше последний спойлер - как защитить свои разработаки подобным образом.
Shuma 27 марта 2015 в 17:00 +3
Плюс и покупка. Большое спасибо
Колёк 27 марта 2015 в 18:12 +2
Большой плюс, жду, когда придёт...
MegaRostov 27 марта 2015 в 19:09 +4
БлиННН!! Я в восторге!!! +++++. Все бы так!!! .. купил, установил, красиво, работает.. Все просто и понятно! Еще рас спасибо!
Колёк 27 марта 2015 в 19:33 0
Всё здорово... но один момент, добавил поле опросы в новости, теперь во всех новостях вот это безобразие (я обвёл красным):

Как вернуть в нормальный вид?
Val 27 марта 2015 в 19:55 +3
в файле ../templates/portal/css/theme-gui.css добавьте в #breadcrumbs ul li (1651 строка) background: none;
должно получиться так:
Код CSS:
  1. #breadcrumbs ul li {
  2. height: 32px;
  3. line-height: 32px;
  4. float: left;
  5. font-size: 12px;
  6. color: #ccc;
  7. background: none;
  8. }
и тоже самое в #breadcrumbs ul li a (1658 строка)

Код CSS:
  1. #breadcrumbs ul li a {
  2. color: #fff;
  3. background: none;
  4. }
Колёк 27 марта 2015 в 20:40 +1
Валентин спасибо, с подправленными шаблонами опросов всё стало гут...
VonKruger 28 марта 2015 в 14:54 +2
Очень нужный компонент спасибо и ++
nmsk 29 марта 2015 в 20:51 -1
Ещё не хватает возможности создавать анонимные опросы..
Val 29 марта 2015 в 20:55 +1
Это больше вопрос к типам контента! Если в записи не будет выводиться автор, то и не понять кто создавал опросы )))
nmsk 30 марта 2015 в 11:23 0
Я о самом результате голосования, ведь по логике, можно просматривать списки тех кто проголосовал?
По-этому и нужен выбор (видеть кто и за что голосовал, и не видеть, выводить только саму диаграму без ников.

Кто там минусует? Кого отшлёпать? laugh
Val 30 марта 2015 в 11:45 +2
На фронтенд не выводится какой пользователь за что проголосовал, а в БД результаты конечно же сохраняются. По этому параметру потом определяется можно ли юзеру голосовать или выводить ему результаты голосования.
А в результатах показывается только количество людей отдавших свой голос за тот или иной вариант ответа. Тоже не вижу здесь чего то "страшного".
nmsk 30 марта 2015 в 14:25 +1
Понятно, я думал что есть возможность видеть список кто голосовал...
Sergey Necr 23 января 2016 в 13:22 0
У меня вот какой вопрос, я что то не понимаю или не правильно считает проценты?
""
Изображение уменьшено. Щелкните, чтобы увидеть оригинал.

Отвечали 4 человека, все 4 отметили два пункта и один пункт не выбрал ни кто, выдает 50%. не 21-23 примерно разве должно быть? Я что то путаю?
Val 23 января 2016 в 17:48 0
В настройках опроса установлена возможность голосовать за несколько вариантов ответов. Всего проголосовало 4 человека, при этом за вариант "Вакцинация", например, проголосовало 2 человека, т.е. 50%, также и для других вариантов ответов - по два человека из четырех, т.е. 50%. В чем проблема?
Если есть предложения другого подсчета голосов напишите здесь или в личке, я рассмотрю ваш вариант.
Sergey Necr 23 января 2016 в 18:12 0
дело не в проблеме, но по логике (может у меня с ней плохо) 4 вопроса это 25%, выбирая один человек один ответ получаем 100%, один человек на два ответа 50%, два человека на два одинаковых 50%, два человека на один одинаково и один разный 50% и по 25% соответственно, три человека на все три одинаковых ответа получаем 33% и далее... Это моя логика...
А так получается, 5 ответов по одному = 100%, а выбрав 4 ответа получили 200%.
Я где то не прав?
Val 23 января 2016 в 18:19 0
Т.е. вы предлагаете за 100% брать количество отданных голосов а не проголосовавших людей?
Sergey Necr 23 января 2016 в 18:46 0
т.е. сейчас выводит 4 человека = 100%, а за ответ 2 отдали свой голос вот и 50%.
С этой точки все нормально получается.
Val 23 января 2016 в 19:06 0
Я руководствовался следующей логикой: опрос создается чтобы получить какой-либо фидбек от аудитории, соответственно узнать что у людей является приоритетней из представленных вариантов ответов. Т.е упор на количество людей))
Нужно у пользователей узнать как кто считает правильно? smile Внести изменения в код труда не составит)))
Sergey Necr 23 января 2016 в 19:28 0
а может есть смысл сделать переключалку при создании голосования, на голоса или на людей?
AndroS 10 ноября 2016 в 17:42 0
Виджет "Случайный опрос" почему-то иногда ничего не выдает
fincheck 15 июня 2017 в 12:42 0
Приветствую, ребята подскажите как данный компонент будет работать на последней версии InstantCMS (2.7.2). Спасибо.
Val 15 июня 2017 в 17:11 +1
Последняя версия этого компонента работает на 2.7.2 без проблем.