Cómo reemplazar texto y actualizar dinámicamente

Necesitamos agregar un descargo de responsabilidad o divulgación a ciertas publicaciones (aproximadamente 100 y contando). La divulgación puede cambiar en el futuro, por lo que me gustaría agregar [DISCLOSURE-GOES-HERE] a cada una de las 100 publicaciones. Podemos agregarlo manualmente, eso no es problema. Pero cuando actualicemos nuestra divulgación en el futuro, solo quiero cambiarlo en un lugar.

Lo que he intentado:

  1. Palabras observadas. El problema es que las publicaciones existentes no muestran la divulgación actualizada hasta que editas la publicación. Eso frustra el propósito para este caso de uso.

  2. Javascript para reemplazar innerHTML del elemento. Debo haberlo hecho mal, esto causó errores sobre el reemplazo de un nodo hijo:

<script type="text/discourse-plugin" version="0.8">
    var disclosures = "• Divulgaciones importantes: No somos responsables, etc., etc."
    api.decorateCooked($elem => {
        var el = $elem[0];
        el.innerHTML = el.innerHTML.replace('[DISCLOSURE-GOES-HERE]', disclosures);
    });
</script>
  1. Componente temático Auto-linkify. Me encanta para otras cosas, pero quiero mostrar el texto de la divulgación, no un enlace a la divulgación.

  2. Sé que puedes reemplazar texto desde la consola de rails, pero quiero que los moderadores lo mantengan.

He hecho cosas similares basándome en el código del componente Linkify Words.

1 me gusta

Si no cambias el descargo de responsabilidad con frecuencia, entonces puedes Rehacer todas las publicaciones que coincidan con un patrón cuando lo cambies.

Esa solución tiene la ventaja de no volver a renderizar ese texto en cada publicación cada vez que se ve.

5 Me gusta

También existe un enfoque textual que ayudará: haz que el mensaje de divulgación sea “atemporal” y enlaza a los detalles de la advertencia. En lugar de…

Divulgaciones importantes: No somos responsables, ni tenemos responsabilidad, ni siquiera conocimiento de las afirmaciones de este tema.

…opta por algo como:

Divulgaciones importantes: este tema contiene contenido que puede necesitar más contexto, proporcionado en Lista de Divulgaciones

Entonces, la mayor parte de tu actualización puede ser esa página, ¡que también podría ser un tema en Discourse (fácil de editar/actualizar!). :slight_smile:

1 me gusta