TL;DR:
Estoy intentando añadir algunas cosas al resumen. Solía sobrescribir la plantilla, pero ahora no puedo hacerlo, por razones poco claras.
Debido a que sobrescribir plantillas es malo, hay algunos lugares en el resumen que se reemplazan con digest_custom_html, pero inserta el texto, por lo que necesitan que se les añada .html_safe. Al menos uno está en el lugar equivocado (tiene “above” en el nombre, pero en realidad está debajo).
Creo que tengo las habilidades para una PR en esto, a menos que, debido a que es tan simple, sea más fácil que lo haga otra persona.
La historia más larga y dolorosa.
Lo hice aquí: GitHub - pfaffman/discourse-add-to-summary: Add text to summary before and after title pero eso parece haber dejado de funcionar.
Creo que lo que quiero hacer, sin cambios en el núcleo, es sobrescribir la plantilla digest.html.erb. Solía poder hacerlo poniendo el archivo en app/views/user_notifications/digest.html.erb y ese archivo se procesaría en lugar del del núcleo. Eso ya no parece funcionar.
Ahora, tenemos algo genial como digest_custom_html como esto:
El lector perspicaz notará que los temas populares comienzan alrededor de la línea 78, mucho antes de la línea 277. No estoy seguro de cuánto tiempo perdí pensando que no estaba pasando nada porque estaba mirando en el lugar equivocado. Pero me desvío.
Logré hacer esto en plugin.rb after_initialize.
require_dependency "user_notifications"
module ::UserNotificationsHelperOverride
def digest_custom_html(position_key)
puts "doing improved the digest: #{position_key}"
if position_key == "below_popular_topics"
puts "doing the custom html for above_popular_topics"
# Custom HTML for the popular topics position
"<div>MY COOOOOOOL TEXT</div>"
else
puts "doing the super for #{position_key}"
super
end
end
end
Y de hecho está añadiendo texto en el lugar donde esperaría que se cambiara en la plantilla.
Por desgracia, no se trata como HTML, sino como texto. Así que. . . .
Miré en all_the_plugins y no encontré ejemplos de nadie usando este código.
¿Sería una PR-welcome si cambiara las líneas como
<%= digest_custom_html("below_popular_topics") %>
y las reemplazara con
<%= digest_custom_html("below_popular_topics").html_safe %>
Y, ya que estoy en ello, ¿quizás asegurarme de que los nombres de las position_key se parezcan más a su posición?