Ограничения веб-формы - одна анкета и правка результата
Настраиваем форму так, чтобы человек прислал одну анкету, видел её статус и мог поправить её по замечанию модератора. Задача типична для конкурсов, заявок на участие и внутренних согласований.
Решение
Статусы первыми, ограничения потом
Описываем путь анкеты статусами:
Статус «На проверке» - «присваивать по умолчанию» = ДАСтатус «Принято» - по умолчанию = НЕТСтатус «На исправление» - по умолчанию = НЕТ, здесь анкету правит её создательСтатусы и права по ним живут только в расширенном режиме редактирования форм. Ровно один статус помечается назначаемым по умолчанию, и его получают все поступившие анкеты.
Соблюдаем порядок настройки формы:
1. статусы результата2. права групп на каждый статус3. вкладка «Ограничения»: от одного пользователя принимается одна анкетаВкладка ограничений работает поверх статусов, поэтому её заполняют последней. Ограничение, выставленное до создания статусов, - типовая причина того, что анкеты продолжают приходить пачками.
Права групп на статус
Раздаём права по группам пользователей:
Статус «На проверке» Зарегистрированные [15] - создателю: просмотр своей анкеты Редакторы сайта [20] - по всем результатам: просмотр, смена статусаСтатус «На исправление» Зарегистрированные [15] - создателю: просмотр и редактированиеПрава на статус задаются отдельно для создателя результата и отдельно для прочих пользователей. На этой паре и держится модерация: посетитель распоряжается только своей анкетой.
Публикация со списком результатов
Выводим форму и связываем её страницы:
$APPLICATION->IncludeComponent('bitrix:form.result.new', '', [ 'WEB_FORM_ID' => 'ANKETA', // ID или символьный код формы 'LIST_URL' => '/form/list.php', // список анкет посетителя 'EDIT_URL' => '/form/edit.php', // страница правки анкеты 'VIEW_URL' => '/form/view.php', // просмотр анкеты 'SUCCESS_URL' => '?WEB_FORM_ID=#FORM_ID#',]);Для формы с модерацией начальной страницей выбирают «Список результатов», а не страницу добавления. Тогда после отправки посетитель видит статус своей анкеты и попадает с него на правку.
Правка анкеты посетителем
Ставим страницу редактирования результата:
$APPLICATION->IncludeComponent('bitrix:form.result.edit', '', [ 'WEB_FORM_ID' => 'ANKETA', 'LIST_URL' => '/form/list.php', // возврат к списку своих анкет 'SUCCESS_URL' => '/form/list.php',]);// адрес именно этой страницы указывают параметром EDIT_URL у приёма анкетКомпонент правки открывает анкету только в том статусе, где группе посетителя выдано право редактирования. В остальных статусах анкета остаётся доступной исключительно на просмотр.
Возврат анкеты на исправление
Замыкаем цикл модерации на автора анкеты:
Редактор ставит анкете статус «На исправление» -> создатель получает право редактирования в этом статусе -> исправленную анкету он сам переводит обратно в «На проверке»Право на смену статуса создателю выдают хотя бы для возврата анкеты в проверку. Без него исправленная анкета застревает в статусе исправления и до редактора уже не доходит.
Проверка ограничения
Считаем принятые анкеты по пользователям:
SELECT USER_ID, COUNT(*) AS cnt FROM b_form_resultWHERE FORM_ID = 3 GROUP BY USER_ID ORDER BY cnt DESC LIMIT 5;-- вторая анкета у того же пользователя означает, что ограничение не работаетПроверяем под обычной учётной записью, а не под администратором сайта. Права на модуль форм перекрывают права отдельной формы, и картина доступа у администратора получается другая.
Типичные проблемы
От одного человека приходят три анкеты подряд.
Ограничение включили раньше, чем у формы появились статусы результата. Вкладка ограничений работает поверх статусов, поэтому её заполняют последней.
Сотрудник меняет статус, но саму заявку открыть не может.
Группе выдано право смены статуса и не выдано право просмотра результатов в нём. Просмотр и смена статуса - два разных права одного и того же статуса.
Публичный список показывает не все анкеты формы.
Посетитель не видит результаты в тех статусах, где у его группы нет права просмотра. Счётчик в административном разделе и список на сайте расходятся именно поэтому.
Посетитель отправил анкету и больше её не нашёл.
Начальной страницей формы оставлена страница добавления результата, а не их список. Для формы с модерацией начальной страницей ставят список результатов.
Анкета вернулась на исправление, а правка недоступна.
В статусе возврата создателю результата не выдано право редактирования. Права на статус задаются отдельно для создателя и отдельно для прочих групп.
Частые вопросы
Как принять от одного человека только одну анкету?
Вкладкой «Ограничения» у формы: там задаётся приём одной анкеты от пользователя. Заполняют эту вкладку после того, как у формы созданы статусы результата, иначе ограничение настраивают вхолостую.
Может ли посетитель сам исправить отправленную анкету?
Да, компонентом bitrix:form.result.edit в публичной части сайта. Анкета открывается на правку только в том статусе, где группе посетителя выдано право редактирования результата.
Почему в списке на сайте анкет меньше, чем в админке?
Список отдаёт только результаты в тех статусах, что доступны группе на просмотр. Права на статус различаются для создателя результата и для остальных пользователей.
Где вообще включаются статусы и права по ним?
В расширенном режиме редактирования форм. В упрощённом режиме нет ни статусов, ни прав по ним, а обратное переключение режима повреждает структуру формы.
Как вернуть анкету автору на доработку?
Отдельным статусом вроде «На исправление», в котором создателю выдано право редактирования. Оттуда исправленная анкета возвращается автором в статус проверки.
Смежное
- Форма обратной связи - оглавление подтемы
- Веб-формы - устройство модуля целиком
- Настройка веб-формы: вопросы, статусы результатов, права - вопрос против поля и выгрузка ответов, а не публичная правка
- Форма обратной связи: веб-форма, письма, свой обработчик - постановка формы на страницу и письма
- Заявка с формы не сохранилась: разбор причин - когда анкеты нет в результатах вообще
- Письмо с заявкой приходит пустым: разбор причин - подстановки в шаблоне уведомления
- Опрос на сайте: голосование, результаты, повторное участие - ограничение повторов в голосовании
- Комментарии и отзывы к контенту: форум как движок, модерация - модерация пользовательского контента
- Роли менеджеров: что видит и что может в админке - права групп на разделы административной части