De acuerdo, tomé una dirección diferente a la de intentar usar los plugins de portafolio. No estoy seguro de si debería publicar esto aquí o en un nuevo hilo; si es así, ¡por favor házmelo saber!
¿Alguien puede echar un vistazo a esto y decirme qué estoy haciendo mal (y, con suerte, por qué / cómo solucionarlo)? He pasado horas y horas leyendo tutoriales, escribiendo y editando esto, pero soy muy principiante y he llegado a un punto en el que no sé qué intentar a continuación.
El objetivo: mostrar una lista de temas de una categoría específica en la página de resumen de un usuario.
En este caso de uso, es para un foro de RPG donde los usuarios crearán personajes para publicar historias. Quiero que este plugin muestre qué personajes ha creado un usuario para que nadie tenga que buscar demasiado. Todas las hojas de personaje se almacenarán en el mismo foro. Por lo tanto, creo que solo tengo que crear una lista de temas que obtenga temas del usuario y el foro correctos.
He estado usando lo siguiente como referencia:
https://meta.discourse.org/t/add-a-featured-topic-list-to-your-discourse-homepage/132949
Aquí está mi intento. Hasta ahora, el encabezado de la lista de temas (tema/respuestas/actividad) se muestra en el lugar correcto, pero no se está poblando con temas.
<script type="text/discourse-plugin" version="0.8">
const ajax = require('discourse/lib/ajax').ajax;
const Topic = require('discourse/models/topic').default;
const User = require('discourse/models/user').default;
// Se necesita ajax, Topic y User
api.registerConnectorClass('above-user-summary-stats', 'character-list', {
// above-user-summary-stats es el outlet del plugin, character-list es el nombre del componente personalizado
setupComponents(args, component) {
const store = getOwner(this).lookup("service:store");
return ajax(userPath(`/topics/created-by/${this.username_lower}.json`)).then(function (result) {
// líneas tomadas de summary() en el modelo user.js; intentando encontrar el nombre de usuario del perfil del usuario que estamos viendo para poder acceder al json de los temas que han creado
let characterList = [];
// array vacío para agregar temas
result.topic_list.topics.forEach.category_id(4)(function(topic){
// temas solo de la categoría específica que queremos
// por aquí el tutorial de kris tenía algunas líneas para asociar usuarios con el tema. Lo ignoré porque no necesito que se muestren usuarios aparte del creador original con el tema. ¿Es esto importante?
//topic.posters.forEach(function(poster){
//poster.user = $.grep(featuredUsers, function(e){ return e.id == poster.user_id; })[0];
//});
characterList.push(Topic.create(topic));
// agregar temas a la lista de temas
});
component.set('characterList', characterList);
// Configurar nuestro componente con los temas del array
}); // fin ajax
} // fin setupComponents
});
</script>
<script type="text/x-handlebars" data-template-name="/connectors/above-user-summary-stats/character-list">
<div class="custom-character-list-wrapper">
{{topic-list topics=characterList showPosters=false}}
</div>
</script>