Могут ли плагины обеспечить выборочную видимость ответов в темах и как создать такой плагин?

Привет, сообщество!

Discourse — отличная платформа с богатым функционалом. Меня интересует, есть ли способ позволить пользователям вручную выбирать аудиторию для своих ответов в конкретной теме. Я знаю о замечательном плагине «discourse-private-reply», который ограничивает видимость ответа только автором темы, но ищу более тонкое решение.

Для уточнения: допустим, я пишу ответ в теме и хочу иметь возможность создать белый список пользователей, которые смогут увидеть мой ответ до нажатия кнопки «ОТПРАВИТЬ». По сути, я хочу гарантировать, что мой ответ увидят только выбранные мной пользователи, а остальные — нет.

Лично я разработчик с некоторыми навыками программирования, но никогда не занимался созданием плагинов для Discourse. Если существующих плагинов или инструментов, обеспечивающих необходимый уровень контроля, нет, буду очень благодарен за любые советы или рекомендации по подходу к разработке: например, к каким «процессам» нужно подключаться или какие API вызывать для реализации желаемого функционала.

Буду признателен за любые предложения или идеи. Спасибо за ваше время и помощь!

5 лайков

Учитывая необходимость такого детального контроля доступа, возможно, стоит задуматься, является ли обычная публичная тема лучшим решением. Может быть, вы могли бы немного подробнее рассказать о вашем конкретном случае использования?

Хорошей отправной точкой действительно станет мой плагин private-replies. В нём есть функция под названием can_see_post_if_author_among, которая в настоящее время принимает тему. Вам следует изменить её так, чтобы она принимала пост. Вы должны хранить список разрешённых пользователей в пользовательском поле, привязанном к посту, и затем проверять просматривающего пользователя относительно этого списка.

Плагин также переопределяет логику контроля доступа для сырых постов, поиска, просмотра тем и активности профиля пользователя.

Тем не менее, я ожидаю, что вы столкнётесь с рядом проблем как с точки зрения производительности, так и с точки зрения пользовательского опыта, особенно если у вас нет опыта разработки плагинов для Discourse. Это может оказаться довольно сложной задачей, поэтому я ещё раз рекомендую вам подумать, является ли это наилучшим подходом для вашего случая использования.

7 лайков

Спасибо за ваш оперативный ответ и за то, что поделились своими мыслями по этому вопросу. Я хотел бы привести пример использования, когда учитель assigns разные задания каждому ученику и требует, чтобы они публиковали свои ответы (отчеты) на форуме Discourse. В этом сценарии: 1) учитель должен иметь возможность видеть ответ каждого ученика, и 2) некоторые ученики могут хотеть сохранить свои ответы в тайне, в то время как другие ищут комментарии, обратную связь и взаимодействие. Кроме того, 3) учителя могут оставлять комментарии, которые не подходят для публичного просмотра.

Такая потребность в контроле над постами может также применяться в других ситуациях, например, когда сотрудники пишут ежемесячные отчеты или пациенты ведут журналы восстановления. Если обобщить, речь идет о выполнении запросов пользователей на контроль, а не о том, чтобы модераторы всё планировали заранее. Это особенно важно для небольших сообществ, ориентированных на создание высококачественного контента.

Хотя Discourse является отличной платформой для крупных сообществ с тысячами пользователей, это также отличный вариант для создания небольших, утонченных сообществ, которые поощряют глубокое мышление и подробные обсуждения. Пользователи должны иметь больше контроля над своими хорошо написанными постами.

Что касается разработки плагина для этой функции, я ценю ваше беспокойство о балансе между производительностью и пользовательским опытом. Вместо того чтобы сразу создавать сложный плагин, лучшим подходом будет максимально использовать существующие возможности. Например, можно создать категорию с несколькими подкатегориями, каждая из которых соответствует заданию, и попросить студентов отправлять свои работы в соответствующую подкатегорию. Это позволяет контролировать каждый топик, и создатели могут выбрать, сделать ли свои темы публичными или видимыми только для определенных групп пользователей. Такие небольшие шаги помогут снизить нагрузку и упростят проверку эффективности функции.

Короче говоря, предоставление пользователям большего контроля над их постами необходимо для создания нишевых сообществ с высококачественным контентом и вовлеченностью. Это не только поддержит эти сообщества, но и расширит потенциальное использование Discourse. Это новый способ исследовать возможности Discourse.

Спасибо за возможность обсудить это с вами. :slightly_smiling_face:

2 лайка

Именно для этого и создан этот плагин. Вам просто нужно реализовать пункты 2 и 3 с помощью личных сообщений или чата.

Создатели уже могут выбирать, будут ли ответы видимыми или нет, а плагин также можно настроить так, чтобы ответы были видны людям из той же основной группы, что и создатель.
Используя разные категории с различными правами доступа, вы можете дополнительно контролировать, кто может просматривать всю тему, а кто — нет.

Ещё раз: нет необходимости создавать дополнительную, сложную и ненадёжную функциональность, когда это уже можно достичь, немного изменив подход к работе.

Короче говоря, вы не убедили меня, что эти изменения необходимы. Они лишь добавят сложности как для пользователей, так и для поддержки плагина.

Я хочу уточнить, что моя цель не заключалась в предложении каких-либо изменений для discourse-private-reply. Я понимаю, что этот плагин предоставляет ценный функционал для управления видимостью постов. Спасибо за обсуждение этого вопроса.

2 лайка

Да, ты прав, я сформулировал это неправильно, извини. Но мой совет остаётся в силе: не решай это с помощью сложных технологий, а немного измени процесс.