Синхронизация/кросспостинг тем на разных сайтах Discourse

Я снова обдумывал этот вопрос.

Плагин мог бы добавить пользовательское поле темы для URL-адреса источника основного документа. (Полагаю, также потребовались бы поля для удалённого имени пользователя и API-ключа, если основной документ должен быть скрыт, как, кажется, требуется в вашем случае, но эту часть можно отложить. Или, возможно, они могли бы находиться в пользовательском поле профиля. Ответственность за обеспечение того, чтобы API-ключ имел права только на чтение, лежала бы на том, кто его создал).

При создании темы вы вводили бы что-то вроде «remote: https://meta.discourse.org/t/synchronising-crossposting-topics-across-different-discourse-sites/263269», и при создании темы Discourse извлекал бы исходный текст удалённой темы, вставлял его в поле raw как правку и создавал запись в topic_custom_field с удалённым URL, возможно, добавляя вверху фразу «скопировано с url».

На этом этапе вы скопировали удалённую тему локально и сохранили запись о ней.

Затем могла бы появиться кнопка «Проверить источник», которая извлекала бы удалённую тему и сохраняла значение updated_at удалённой темы, а возможно, и её raw, в других пользовательских полях (это также мог бы делать фоновый процесс периодически, что немного улучшило бы UX). Затем можно было бы добавить кнопку «Обновить», которая заменяла бы существующее поле raw на удалённое, оформляя это как правку.

Если основной сайт общедоступен, то эта часть реализуется очень легко. Добавление API-ключа для доступа к приватному сайту усложняет задачу, а управление набором API-ключей на нескольких сайтах — ещё больше. Если нужно было бы заменить первоисточник, возможно, это можно было бы сделать с помощью задачи remap в rake, или добавить возможность редактирования пользовательского поля с удалённым URL при необходимости.

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

Верно. И можно добавить ссылку обратно на сайт-источник, чтобы люди могли перейти туда и посмотреть эти комментарии, или, возможно, даже встроить их через Embed comments from Discourse in your single page app.

Если у вас есть хоть какой-то бюджет на это, не стесняйтесь связаться со мной.

1 лайк