He vuelto a pensar en esto.
Un plugin podría añadir un campo de tema personalizado para la URL de la fuente del documento principal. (Supongo que también necesitaría campos para un nombre de usuario remoto y una clave API si el documento principal debe ocultarse, como creo que es tu caso, pero esa parte podría esperar. O quizás podrían vivir en un campo personalizado de usuario. Dependería de quien generara la clave ver que la clave API tiene privilegios de solo lectura).
Al crear un tema, introducirías algo como “remote: https://meta.discourse.org/t/synchronising-crossposting-topics-across-different-discourse-sites/263269” y cuando se creara el tema, Discourse extraerá el texto sin formato del tema remoto, lo insertará en raw como una edición e instanciará el topic_custom_field con la URL remota, quizás añadiendo un “copiado de url” en la parte superior.
En este punto, has copiado el tema remoto localmente y tienes un registro del mismo.
Luego podría haber un botón “comprobar fuente” que extraería el tema remoto y guardaría el updated_at del tema remoto e incluso el raw en otros campos personalizados (un trabajo también podría hacer esto periódicamente, ahorrando un poco de UX). Luego podrías tener un botón de actualización que reemplazaría el raw existente con el remoto como una edición.
Si el sitio principal es público, entonces esta parte es realmente fácil. Añadir una clave API para extraer de un sitio privado complica las cosas, gestionar un conjunto de claves API en múltiples sitios, lo complica aún más. Si la fuente original necesitara ser reemplazada, podrías hacerlo con la tarea rake de reasignación, o añadir la capacidad de editar el campo personalizado con la URL remota cuando lo necesites.
Esta parte viene gratis, ya que esta solución tiene los sitios secundarios extrayendo los datos del principal.
Correcto. Y puede haber un enlace de vuelta al sitio de origen, para que la gente pueda ir al origen para ver esos comentarios, o quizás incluso incrustarlos a través de Embed comments from Discourse in your single page app.
Si tienes algún presupuesto para esto, no dudes en contactarme.