В настоящее время используется механизм, аналогичный экспорту пользователей, который предоставляет:
ZIP-файл через личное сообщение тем, у кого есть права на редактирование этого сообщения;
следующие поля: username status first_answered_at last_updated_at
Предложение 1
Предоставить прямую загрузку .csv из модального окна.
Это было бы гораздо проще для пользователя.
Предложение 2
Указывать основные адреса электронной почты в этой загрузке (или предоставить такую возможность).
Это позволит легко экспортировать участников при необходимости для других целей, связанных с мероприятием.
У меня сейчас есть запрос для Data Explorer, который работает вполне хорошо, но требует значительных усилий, чтобы предоставить организаторам мероприятия (то есть автору исходного сообщения) к нему доступ:
-- [params]
-- int :post_id
WITH e AS (
SELECT email, user_id
FROM user_emails u
WHERE u.primary = true
)
SELECT dpei.user_id, email, status, notified
FROM discourse_post_event_invitees dpei
JOIN e ON e.user_id = dpei.user_id
WHERE dpei.post_id = :post_id
ORDER BY status, email
Сегодня снова столкнулся с этим, когда один из наших администраторов спросил, как посмотреть, кто нажал «Пойду».
Проблема с UX заключалась в том, что нажатие на «Экспорт события» не давало никакой видимой реакции (то есть отсутствовала обратная связь). Я понял, что функция сработала, только когда заметил несколько новых сообщений (поскольку нажимал несколько раз, пытаясь найти ошибки в консоли).
Архивация файла, похоже, лишь добавляет лишние сложности без какой-либо пользы. Любой CSV-файл, скорее всего, будет довольно небольшим.
Было бы неплохо немного доработать этот момент, так как функционал довольно полезен (после того как разберёшься, как он работает).
Мы используем синтаксис [event] Discourse (через плагин Calendar) для планирования и координации официальных заседаний совета — каждое событие размещается в отдельной теме, и мы рекомендуем участникам подтверждать участие через встроенный интерфейс.
Проблема в том, что у нас сейчас нет удобного способа извлечь эти данные о подтверждении участия в пригодном для использования формате. Для открытых сессий по вовлечению общественности, исполнительных заседаний и внутренних брифингов было бы невероятно полезно экспортировать:
Заголовок темы события + URL
Отображаемое имя / имя пользователя подтвердивших участников
Статус подтверждения (пойду / интересно / не пойду)
Адрес электронной почты (только для администраторов, для журналов посещаемости или прямой обратной связи)
Временную метку подтверждения (если возможно)
Наши секретари и председатели часто сами не используют Discourse, поэтому возможность скачать CSV-файл и поделиться данными о посещаемости с ними является критически важной.
Понятно, что видимость адресов электронной почты должна быть ограничена правами доступа для сотрудников сайта или модераторов групп, но без этого экспорт теряет большую часть своей административной ценности.
Такой структурированный экспорт значительно повысит полезность плагина для реальных организаций, использующих Discourse для координации очных встреч.
Готовы предоставить пример структуры .csv, если это будет полезно!
Этот запрос для Data Explorer во многом поможет вам получить所需ные данные:
-- [params]
-- int :topic_id
WITH user_emails AS (
SELECT
ue.user_id,
ue.email
FROM
user_emails ue
WHERE
ue.primary = true
),
forum_timezone AS (
SELECT
value AS timezone
FROM
site_settings
WHERE
name = 'discourse_local_dates_email_timezone'
)
SELECT
u.name AS display_name,
u.username,
ue.email,
CASE dpei.status
WHEN 0 THEN 'Going'
WHEN 1 THEN 'Interested'
WHEN 2 THEN 'Not Going'
END AS status,
to_char(dpei.created_at AT TIME ZONE 'UTC' AT TIME ZONE ft.timezone, 'YYYY-MM-DD HH24:MI:SS') AS rsvp_timestamp
FROM
discourse_post_event_invitees dpei
JOIN
posts p ON p.id = dpei.post_id
JOIN
users u ON u.id = dpei.user_id
JOIN
user_emails ue ON ue.user_id = dpei.user_id
JOIN
forum_timezone ft ON true
WHERE
p.topic_id = :topic_id
ORDER BY
dpei.status, ue.email
Если вы создадите группу для ваших администраторов и предоставите им доступ к этому запросу, это, скорее всего, отлично справится с задачей. Возможно, вам потребуется настроить параметр «Discourse Local Dates Email Timezone» (или изменить запрос, чтобы игнорировать его).
Вам нужно научить их использовать ID темы и объяснить, что это означает с точки зрения URL-адреса. Но это, вероятно, выполнимо.
Да, но ваш административный персонал, вероятно, не должен быть администратором вашего сайта Discourse, если им действительно не требуется такой уровень доступа.
Так что вы можете либо сделать их полными администраторами и использовать @admins, либо создать новую группу, в которую их включите. Затем просто назначьте запрос Data Explorer этой группе (они смогут получить к нему доступ во вкладке Отчёты).