No se puede reemplazar topic-list-item.raw.hbs / topic-list-item.hbr en móvil

Hola a todos,

Estoy creando un tema para personalizar varios aspectos del Discourse predeterminado. Con esto en mente, una de las cosas que necesito personalizar es el topic-list-item, que parece ser bastante sencillo. Agrego un archivo en mi tema bajo la ruta javascripts/discourse/templates/components/topic-list-item.hbs y puedo colocar mi código allí. Sin embargo, es aquí donde comienzan a surgir las preguntas.

Existe un método en el componente para esa plantilla llamado renderTopicListItem, que es el que establece una propiedad topicListItemContents, la cual se renderiza de forma predeterminada. Verifiquen:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/templates/components/topic-list-item.hbs

La primera pregunta es ¿POR QUÉ? ¿Por qué necesitamos hacer eso? ¿Por qué no simplemente tener el código de Handlebars como de costumbre?

Para no interferir demasiado con el código principal, decidí dejar topic-list-item así y reemplazar topic-list-item.raw.hbs en mi tema, y eso funciona sin problemas.

Sin embargo, esperaba que al agregar un archivo como javascripts/discourse/templates/mobile/list/topic-list-item.raw.hbs en mi tema se reemplazara la vista móvil, pero no sucede.

El método findRawTemplate sigue devolviendo la plantilla móvil predeterminada de Discourse, que contiene:

Incluso haciendo ediciones manuales dentro de mi proyecto local de Discourse, no logro que la versión móvil se actualice con los cambios.

Espero que la explicación tenga sentido y que alguien tenga conocimiento sobre esto. Parece realmente defectuoso por ahora y quizás queramos arreglarlo SI realmente está roto (puedo hacerlo si entiendo un poco más lo que está sucediendo).

Mientras tanto, seguiré buscando una respuesta yo mismo y actualizaré cualquier novedad. A continuación, un pequeño GIF de lo que tengo en mi entorno local.

http://g.recordit.co/AtOJlltJ8o

ACTUALIZACIÓN: También he actualizado raw a .hbr debido a un commit reciente que cambió los archivos, pero aún no logro que funcione.

Acabo de probarlo y estoy viendo el mismo problema… No puedo sobrescribir esa plantilla en absoluto. Parece que ha ocurrido en el último día o dos. ¿Podría estar relacionado con el cambio a hbr @markvanlan?

Cuando creé este tema, mi Discourse local era de la versión del 17 de enero, si no recuerdo mal. Dicho esto, tuve el problema con esa versión y, tras actualizar con los últimos cambios y renombrar raw.hbs a hbr, sigo teniendo los mismos problemas.

Por ahora, lo que he hecho es personalizar desde javascripts/discourse/templates/components/topic-list-item.hbs, pero idealmente las plantillas raw deberían comportarse como las demás plantillas (en términos de sustitución y personalización).

@awesomerobot si revisas el commit justo antes del cambio de hbr, ¿funciona?

Ah, sí, gracias por la fecha, @duranmla… es un problema un poco antiguo, @markvanlan, lo estoy rastreando ahora mismo.

FYI no he visto que este problema afecte a Topic List Previews (legacy), que sí anula el elemento de lista de temas en bruto para móviles. https://github.com/paviliondev/discourse-topic-previews/tree/master/assets/javascripts/discourse/templates/mobile/list Solo lo he probado en tests-passed.

Ok, tuve un poco de dificultad para localizarlo porque, tras revertir, tuve que eliminar y luego volver a aplicar la personalización para reproducir el problema.

Creo que en realidad se trata del commit de hbr de @markvanlan (DEV: Use .hbr for raw template file extension (#8883) · discourse/discourse@3e89774 · GitHub), disculpa por haber dudado al respecto.

Para probarlo, agregué lo siguiente al del tema actual mediante la sección de personalización en el panel de administración:

<script type='text/x-handlebars' data-template-name='mobile/list/topic-list-item.raw'>
  prueba
</script>

En el commit anterior a este, funciona perfectamente; pero una vez que aplico ese commit y luego vuelvo a aplicar la personalización, la plantilla se ignora.

Tal vez me confundí después de todo, pensé que era más antiguo que eso. De todos modos, seguiré de cerca este hilo. Gracias por la rápida respuesta para rastrear esto, @awesomerobot.

Ya hay una corrección si actualizas a la última versión

Mark va a realizar más trabajo para averiguar por qué las pruebas pasaban a pesar de que esto estaba roto.

Sin embargo, he actualizado y el error persiste al trabajar con la estructura de proyecto de temas (que probablemente es la más utilizada para proyectos medianos y grandes). Aquí dejo este video mío mostrando el error: https://www.loom.com/share/d3f437347c8f4d5aa4dd1c7ce08e1bf9

PD: Mantendré el video disponible por un tiempo, por si es útil para que alguien entienda el problema y pueda reproducirlo. Tendré que eliminar el video en unas pocas semanas :grimacing:

NOTA: También intenté renombrarlo de nuevo a topic-list-item.raw.hbs en lugar de topic-list-item.hbr, y el problema es el mismo.

Para mí funciona con el directorio javascripts (con la extensión antigua o la nueva).

Una cosa que me surgió anoche es que es posible que necesites editar el archivo y guardarlo, o eliminar el archivo y volver a agregarlo (las plantillas se compilan al guardar, así que es posible que estés temporalmente atrapado en el estado con errores.).