Решаем вместе
Не убран снег, яма на дороге, не горит фонарь? Столкнулись с проблемой — сообщите о ней!

ГРАФИК кап ремонта кровель

В статье предложен патч для модуля Webform, часто используемого в CMF Drupal для создания опросников и анкет. Патч позволяет через административный интерфейс указывать несколько условий для компонентов формы, а также управлять логикой их совместной работы.

Введение.

 Я считаю, что любой веб-разработчик рано или поздно сталкивается с задачей создания опросника или анкеты. Конечно, в наше время не так уж и трудно подыскать какое-нибудь готовое решение, и благо, что вариантов здесь у нас предостаточно: 
Можно найти и использовать какой-нибудь мощный и самостоятельный продукт, где, по сути, в сайт интегрируется готовая система.
Вторым вариантом является использование какого-нибудь одного из широкого множества тематических сервисов, например SurveyMonkey или Wufoo.
У каждого из перечисленных выше вариантов есть свои достоинства и недостатки, на которых я заострять внимание не буду, а предложу рассмотреть решение, на мой взгляд, полезное всем разработчикам, использующим в своем труде Drupal.

Динамичное анкетирование.

 Предположим, что перед нами поставлена задача создания нескольких сложных и динамичных опросников, в которых сами задаваемые вопросы зависят от пользовательских ответов на предыдущих страницах, и где нужно предоставить конечному администратору сайта удобный интерфейс для редактирования самих вопросов и логики их работы. 
 Обозначим требования к продукту:
Необходим механизм создания и редактирования опросников через административный интерфейс;
Необходима возможность выводить вопросы постепенно на нескольких страницах;
Необходима возможность выводить вопросы только при выполнении некоторых условий;
Условия могут быть следующих типов: «выбрано некоторое из перечисленных значений», «не выбрано некоторое из перечисленных значений»;
Условий может быть сразу несколько;
При комбинировании условий могут использовать операторы И/ИЛИ.

 Приведём пример такого опросника:

 

 Имеется три страницы с вопросами и одна – с результатами. Страница 2 может быть вовсе не показана пользователю, если на первые два вопроса он ответил «ДА». Количество вопросов на третьей странице, куда пользователь попадает всегда, варьируется в зависимости от ответов на первые два вопроса, только условия уже комбинируется через «ИЛИ». На странице результатов всегда выводится текстовое сообщение с благодарностью. Также, если пользователю была отображена страница 2, и он ответил на третий вопрос положительно, то выводится некоторый дополнительный текст.

Прикрепленные файлы: