В CustisWiki есть возможность проводить различные опросы и голосования, с целью оценить популярность продуктов или для выбора разумного решения.
Опросы бывают следующих основных типов:
Режимы
CHECKS
Возможность отметки любого предложенного варианта (по одному разу). Пример:
<poll>
Какие программы и системы, вы используете в повседневной работе:
[[{{SITENAME}}]]
[[Bugzilla]]
[[Bonsai]]
[[TeX]]
[[CVS]]
[[Oracle]]
[[Python]]
Erwin
Open Office
</poll>
«Ключевая» строка в этом примере, задающая нужный режим — «POINTS 7».
Можно использовать ключевую строку «ALTERNATIVE»
для задания режима «POINTS 1», то есть выбора только одного варианта из предложенных.
Авторизация
Опрос можно сделать авторизованным, то есть запретить голосование анонимным пользователям, которые учитываются по IP-адресам. Для этого используется ключевая строка «AUTHORIZED». Анонимные пользователи увидят только список вариантов и строку «вы должны войти в систему, чтобы участвовать в голосовании». Зарегистрированные пользователи CustisWiki увидят форму голосования и/или результаты.
Есть ещё более жёсткий вариант, полностью скрывающий и голосование, и варианты ответов от анонимных пользователей — «AUTHORIZED_DISPLAY».
<poll>
AUTHORIZED
ALTERNATIVE
Вам нравится работать в нашей компании?
Да
Нет
</poll>
Вы должны войти в систему, чтобы участвовать в этом голосовании.
Ограничение по IP-адресам
Обычно при голосовании не учитываются IP-адреса, то есть вы можете проголосовать несколько раз с одного компьютера и разных учётных записей. Чтобы запретить это, служит опция «RESTRICT_IP», аналогично прочим указываемая в начале опроса.
Работа
Сценарий работы очень простой — любой пользователь, пока не исчерпал свои возможности по голосованию (чтобы текущие результаты опроса не влияли на его выбор), видит интерфейс выбора для опроса (при этом, ему указывают, сколько голосов для этого опроса у него осталось). Как только пользователь «исчерпал» свои голоса, он видит общую статистику по голосованию в виде таблицы, с ленточной диаграммой, количеством голосов и процентным распределением.
Опрос идентифицируется своим текстом — то есть с момента запуска опроса в голосование,
в тексте опроса нельзя менять ни буквы (иначе это будет другой опрос, для которого подсчет голосов начнется заново).
Конец опроса
Обычно опрос не имеет конца, то есть информация собирается и показывается, пока в ней есть потребность.
Если опрос стал не нужен — его можно удалить с CustisWiki-страницы, а результаты зафиксировать — например, в виде Ленточной диаграммы.
Тем не менее, существует опция «END_POLL YYYY-MM-DD», где YYYY-MM-DD — дата (YYYY — год, MM — месяц, DD — день), позволяющая автоматически закончить опрос, начиная с даты YYYY-MM-DD. То есть, начиная с этой даты, все пользователи, вне зависимости от того, голосовали они или нет, увидят только результаты и не увидят формы голосования.
Скрытие результатов
Специально для спецагентов и «секретных» опросов существует опция «HIDE_RESULTS», позволяющая скрывать результаты голосования от рядовых пользователей, по крайней мере, до конца опроса. Проголосовавшие пользователи увидят только сообщение «Вы уже проголосовали, всего проголосовало столько-то человек, а результаты будут (или не будут) доступны после даты YYYY-MM-DD». Результаты не будут показаны никогда, если опрос не имеет конца, то есть, если не указана опция END_POLL. В базе данных они, естественно, будут сохранены, и могут быть извлечены оттуда любым человеком, имеющим прямой доступ к БД.
Разрешение переголосования
Чтобы разрешить отозвать свой голос и проголосовать заново, нужно добавить опцию «REVOTE», она же кому как больше нравится — ALLOW_REVOTE, ALLOW_RECALL.
Нецелостный («тупой», «небезопасный») режим
Опция UNSAFE ID=УникальнаяСтрока даёт вашему голосованию идентификатор, равный этой уникальной строке, после чего в голосование можно добавлять/удалять вопросы, менять заголовок и опции. Голосовалка будет вести себя тупо — считать количества по НОМЕРАМ ответов и показывать их всегда для этого голосования. То есть если вы удалите ответ из середины, все голоса за ответы, стоящие ниже него, собьются. Также всегда любой может подсмотреть результаты небезопасного голосования, даже если они скрыты, добавив соответствующую опцию и даже не сохраняя страницу, а делая предпросмотр. В то же время путём указания UNSAFE ID=ID реального (безопасного) голосования подсмотреть его результаты невозможно.
Привязка к названию страницы
Иногда может возникать желание включать один и тот же опрос на разные страницы посредством шаблона. Однако, так как его ID генерируется из оригинального текста, без применения шаблонных преобразований, получится, что на всех этих страницах опрос покажет одинаковые результаты. Чтобы такого не происходило, нужно добавить опцию UNIQUE — она привязывает результаты голосования к странице, на которой оно показывается.
Открытые голосования
Иногда возникает необходимость делать открытые для всех, неанонимные, голосования — например, в опросах по реализации каких-нибудь фич. Для этого нужно указать опцию OPEN_VOTERS — тогда для тех, кто ещё не проголосовал, будет показано предупреждение о том, что их голос будет показан всем, а те, кто проголосовал, увидят имена/IP всех проголосовавших рядом с каждой опцией.
Также есть опция OPEN_RESULTS, которая совмещает форму голосования с результатами и показывает их всем, даже ещё не проголосовавшим, пользователям.
Email-оповещение
Для голосования можно указать опцию VOTES_TO_EMAIL=N (N — неотрицательное число). Если она указана, то при наборе как минимум N голосов все пользователи, следящие за страницей с голосованием (обычное вики-слежение, или «наблюдение»), будут получать результаты голосования на свои email-адреса (адреса для этого должны быть подтверждены). Смысл такого слежения — асинхронность: забросил голосовалку, следишь за страницей и ждёшь, пока начнёт работать закон больших чисел, то есть результаты голосования начнут что-то значить.
Синтаксис
Синтаксис опросов построчный (то есть каждый элемент — строка), и представлен на этом графе.
В вопросах и вариантах ответа можно ограниченно использовать вики-разметку (все, что можно выразить одной строчкой).
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».