| Краткое описание | Плагин Discourse Surveys позволяет создавать опросы непосредственно в постах вашего форума Discourse, используя простой синтаксис Markdown. | |
| Ссылка на репозиторий | https://github.com/discourse/discourse-surveys | |
| Руководство по установке | Как установить плагины в Discourse |
Плагин Discourse Surveys позволяет создавать опросы непосредственно в постах вашего форума Discourse, используя простой синтаксис Markdown. В настоящее время плагин поддерживает различные типы вопросов, такие как переключатели (radio buttons), флажки (checkboxes), выпадающие списки, числовые поля, текстовые области, рейтинги звездами и рейтинги «палец вверх/вниз».
Возможности
-
7 различных типов полей: Переключатели, флажки, выпадающие списки, текстовые области, выбор числа, рейтинги звездами и рейтинги «палец вверх/вниз»
-
Обязательные/необязательные поля: Отметьте поля как обязательные, чтобы обеспечить заполнение
-
Поддержка эмодзи: Используйте эмодзи в вариантах ответов вашего опроса
-
Поддержка Markdown: Форматирование текста в вопросах и вариантах ответов
-
Аутентификация пользователей: Автоматические запросы на вход для анонимных пользователей
-
Отслеживание ответов: Предотвращение дублирования отправлений от одного и того же пользователя
-
Учет разрешений: Соблюдение прав доступа к темам и категориям
-
Адаптивность для мобильных устройств: Безупречная работа на всех устройствах
Использование
Базовая структура опроса
Все опросы должны быть обернуты в теги [survey]:
[survey name="my-survey" title="Опрос обратной связи от клиентов"]
<!-- Поля опроса размещаются здесь -->
[/survey]
Атрибуты опроса
-
name: Уникальный идентификатор опроса (по умолчанию «survey») -
title: Необязательный заголовок, отображаемый в верхней части опроса -
public: Установка видимости (будущая функция) -
status: Статус опроса (будущая функция)
Типы полей
1. Переключатели (один выбор)
[radio question="Какой ваш любимый цвет?"]
- Красный
- Синий
- Зеленый
- Желтый
[/radio]
2. Флажки (несколько выборов)
[checkbox question="Какими функциями вы пользуетесь? (Выберите все подходящие)"]
- Уведомления по электронной почте
- Мобильное приложение
- Уведомления на рабочем столе
- Доступ к API
[/checkbox]
3. Выпадающий список
[dropdown question="К какой возрастной группе вы относитесь?"]
- До 18 лет
- 18–24
- 25–34
- 35–44
- 45–54
- 55+
[/dropdown]
4. Текстовая область (развернутый текст)
[textarea question="Пожалуйста, предоставьте подробную обратную связь:" required="false"]
[/textarea]
5. Выбор числа
[number question="Оцените эту функцию от 1 до 10:" min="1" max="10"]
[/number]
6. Рейтинг звездами
[star question="Как бы вы оценили свой общий опыт?"]
[/star]
7. Палец вверх/вниз
[thumbs question="Порекомендовали бы вы это другим?"]
[/thumbs]
Атрибуты полей
Все типы полей поддерживают следующие атрибуты:
-
question: Текст вопроса (обязательно) -
required: Должно ли поле быть заполнено (true/false, по умолчаниюtrue) -
min: Минимальное значение для числовых полей -
max: Максимальное значение для числовых полей
Полный пример
Базовый Markdown опроса
Вот базовый пример Markdown опроса, включающий все доступные поля:
[survey name="awesome-survey-thumbs" title="Удивительный опрос"]
[radio question="Выберите любой один вариант:"]
- кошка
- собака
[/radio]
[checkbox question="Выберите несколько вариантов:"]
- красный
- синий
- зеленый
[/checkbox]
[dropdown question="Пол:"]
- Мужской
- Женский
[/dropdown]
[number question="Оцените этот опрос от 1 до 10:"]
[/number]
[textarea question="Что вы думаете о xyz?" required="false"]
[/textarea]
[star question="Как бы вы оценили общий опыт?"]
[/star]
[thumbs question="Вы были довольны нашими услугами?"]
[/thumbs]
[/survey]
Отрисовка опроса
Ниже приведен пример того, как вышеуказанный Markdown отображается в Discourse:
Продвинутое использование
Использование эмодзи в вариантах ответов
[radio question="Выберите ваше любимое животное:"]
- 🐈 Кошка
- 🐶 Собака
- 🐦 Птица
- 🐠 Рыба
[/radio]
Форматирование Markdown в вопросах
[radio question="Какой **язык программирования** вы предпочитаете?"]
- JavaScript
- Python
- Ruby
- Go
[/radio]
[checkbox question="Выберите свои *любимые* функции:"]
- Скорость
- Безопасность
- Простота использования
[/checkbox]
[textarea question="Пожалуйста, прочитайте наши [правила](https://example.com) и предоставьте обратную связь:"]
[/textarea]
Поддерживаемое форматирование:
- Жирный:
**текст** - Курсив:
*текст* Зачеркнутый:~~текст~~Встроенный код:`код`- Ссылки:
[текст](url)
Смешанные обязательные и необязательные поля
[survey name="mixed-survey"]
[radio question="Какова ваша роль?" required="true"]
- Разработчик
- Дизайнер
- Менеджер
- Другое
[/radio]
[textarea question="Есть ли дополнительные мысли?" required="false"]
[/textarea]
[/survey]
Результаты опроса
В настоящее время у этого плагина нет интерфейса на стороне сервера для просмотра результатов опроса напрямую. Вместо этого вы можете использовать запросы Data Explorer для получения и анализа ответов на опросы. Вот пример запроса:
-- [params]
-- text :survey_name = survey
SELECT
s.id,
s.name,
s.post_id,
sf.question,
COALESCE(sr.value, sfo.html) AS value,
sr.user_id,
sr.created_at AS responded_at
FROM
surveys s
JOIN survey_fields sf ON sf.survey_id = s.id
JOIN survey_responses sr ON sr.survey_field_id = sf.id
LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE
s.name = :survey_name
ORDER BY
s.id DESC
Разрешения и безопасность
-
Требуется вход: Анонимные пользователи должны войти в систему перед отправкой ответов
-
Один ответ на пользователя: Каждый пользователь может отправить только один ответ на опрос
-
Разрешения по темам: Пользователи должны иметь право на чтение темы, чтобы просматривать опросы
-
Разрешения на публикацию: Пользователи должны иметь право на публикацию в теме, чтобы отправлять ответы
-
Архивированные темы: Опросы в архивированных темах не могут принимать новые ответы
-
Удаленные посты: Опросы в удаленных постах больше недоступны
Ограничения
-
В одном посте разрешен только один опрос
-
Структура опроса не может быть изменена после получения ответов
-
Все вопросы полей опроса должны быть уникальными в рамках одного опроса
-
Вопросы полей опроса не могут быть пустыми
Технические детали
Схема базы данных
Плагин создает четыре основные таблицы базы данных:
-
surveys: Основные записи опросов -
survey_fields: Отдельные поля внутри опросов -
survey_field_options: Варианты ответов для полей с выбором -
survey_responses: Ответы пользователей на поля опроса
Стилизация
Плагин включает адаптивные CSS-стили, которые подстраиваются под вашу тему. Пользовательские стили можно добавить, нацелившись на следующие CSS-классы:
-
.survey- Основной контейнер опроса -
.survey-field- Обертка отдельного поля -
.field-[type]- Контейнеры для конкретных типов полей -
.submit-response- Кнопка отправки
