Режим частичного только для чтения

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

Однако крайне раздражает, что режим «только для чтения» также блокирует внесение изменений в конфигурацию, синхронизацию SSO и вход в систему.

Было бы здорово, если бы существовал какой-то частичный режим «только для чтения», при котором только сообщения и действия с ними были бы недоступны для редактирования.

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

Есть ли у кого-нибудь идеи, как лучше всего решить эту задачу?
Вероятно, это область плагинов, но всё же: какой подход был бы наиболее оптимальным?

14 лайков

Настройка плагина в сочетании с настройкой сайта должна решить проблему.

Попробуйте, возможно, использовать хук validate_post и добавить пользовательскую валидацию, которая возвращает «недопустимо», если настройка сайта установлена в режим только для чтения.

6 лайков

Я использовал NewPostManager.add_handler, но, похоже, событие :validate_post лишь уведомляет и не предоставляет возможности вернуть результат и отклонить пост.

Вот плагин, который отключает возможность публикации одним нажатием кнопки: GitHub - communiteq/discourse-prevent-posting · GitHub

Настройка

Перейдите в Администрирование — Плагины — discourse-prevent-posting — Настройки.

prevent posting enabled : включите плагин, чтобы запретить создание новых постов.

prevent posting message : сообщение, которое будет отображаться как глобальное уведомление при включении плагина.

prevent posting allow pms : если включено, личные сообщения (ЛС) будут разрешены.

7 лайков

Думаю, нам стоит добавить это в наш план разработки @sam

7 лайков

Конечно!

Хотя я бы хотел чётко определить настройки: в идеале всё это должно умещаться в одной настройке сайта с несколькими вариантами.

Сначала нужно составить хорошее техническое задание. Несколько вопросов:

  • Как быть с реакциями и плагинами?
  • Как быть с профилями пользователей?
  • Как быть с регистрацией новых аккаунтов?

Также меня беспокоит возможность предоставления слишком большой гибкости здесь.

Возможно, простого переключателя режим обслуживания (вкл/выкл) и возможности для администраторов всегда его обходить будет достаточно?

8 лайков

FYI/FWIW —

Для нашего сообщества этот плагин предоставляет режим «Суббота». Его основная идея — побудить участников сообщества применить полученный в онлайн-среде опыт и с любовью служить своим ближним в местных сообществах.

Ключевые компоненты, реализованные Ричардом:

  • Возможность планировать как регулярные, так и периодические интервалы, когда публикация сообщений отключена и снова включается. Можно отключать публикацию на выходные (постоянно), а также на основные праздники (периодически).

  • Возможность синхронизировать это с пользовательским глобальным баннером, чтобы не вводить участников в заблуждение («почему сайт не работает?!»). Вместо этого мы можем чётко объяснить посетителям и участникам, почему публикация временно отключена.

Что касается другой активности:

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

  • Я не думаю, что этот плагин влияет на другие плагины.

  • Создание новых аккаунтов возможно — отключена только публикация сообщений.

Он работает безупречно. Я рад, что эта возможность может быть включена в дорожную карту.

3 лайка

@outofthebox На самом деле планирование не входит в состав этого плагина; это плагин scheduled-readonly, который тесно взаимодействует с плагином prevent-posting.

5 лайков

Я признаю свою ошибку! :slight_smile:

4 лайка

Я очень рад это услышать, так как я экспериментировал с идеей режима «шаббат» или отпуска, поскольку мне может понадобиться время на отдых, особенно если я управляю своим сайтом Discourse параллельно с проведением курса.

Думаю, я попробую оба плагина, спасибо!

РЕДАКТИРОВАНИЕ: Я только что протестировал это, и у меня всё заработало на одном из моих сайтов, но когда я попытался отредактировать плагин, чтобы отключить его, система сообщила, что он находится в режиме только для чтения, и я не мог изменить настройку. Я попробовал нажать «отключить режим только для чтения» в разделе Администрирование > Резервные копии, но, похоже, плагин переопределял эту настройку.

Когда плагин включён и находится в периоде режима только для чтения, есть ли способ его отключить?

РЕДАКТИРОВАНИЕ 2: Мне пришлось пересобрать систему без этого плагина, так как он застрял и принудительно включил режим только для чтения даже после истечения времени. Не знаю, мог ли я сам вызвать это, нажав кнопку «отключить режим только для чтения». Кроме того, по какой-то причине праздничный период не включался даже на другом экземпляре Discourse, так что я в полном недоумении :slight_smile:

2 лайка

Что-то похожее на то, что описал OP, теперь возможно.

Недавно мы добавили режим «только для сотрудников» — это режим только для чтения, который влияет только на пользователей, не являющихся сотрудниками. Он позволяет сотрудникам входить в систему, публиковать сообщения, изменять настройки и т. д., в то время как другие пользователи видят сайт, фактически находящийся в режиме только для чтения.

Использование

Чтобы включить, выполните в консоли:

Discourse.enable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY)

А чтобы отключить:

Discourse.disable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY)

Надеюсь, это будет вам полезно! Дайте знать, если у вас возникнут вопросы.

14 лайков

Есть ли шанс реализовать ADMIN_WRITES_ONLY_MODE_KEY, чтобы также предотвращать действия модерации?

У меня есть сценарий использования, при котором я переводю форум в режим только для чтения, выполняю резервное копирование, а затем оставляю форум онлайн и доступным для просмотра, пока новый VPS пересоздается с нуля, резервная копия восстанавливается, а затем IP-адрес безотказно переключается на новый сервер.

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

В настоящее время я использую полный режим только для чтения, но это неудобно, так как это также предотвращает изменения администратора через веб-интерфейс.

3 лайка

Эта тема была автоматически закрыта через 13 дней. Новые ответы больше не принимаются.

Теперь, когда эта функция добавлена, планируется ли включить её как опцию в плагин «Scheduled Read Only»?

3 лайка

Отличная идея. Я добавлю это в свой список интересных проектов, а тем временем приветствуются и PR :slight_smile:

3 лайка

На всякий случай для тех, кто тестирует плагин Scheduled Read-Only: я запустил тестовый сценарий примерно на 2 минуты и не мог понять, почему он не отключился — оказалось, что проверка происходит только раз в 5 минут.

2 лайка

Если администратор сможет отправлять сообщения в чате даже в режиме только для чтения, это было бы отлично.