Nous utilisons ce composant de thème depuis un certain temps, et aujourd’hui il ne fonctionne plus.
Voici le code du composant (common, head_tag.html)
<!-- REQUIERT UNE RÉPONSE -->
<script type="text/discourse-plugin" version="0.8.18">
if (I18n.translations.en) {
I18n.translations.en.js.filters.needsreply = {title: "Needs Reply", help: "Unanswered Topics"};
}
// PERSONNALISEZ CES VALEURS
// Définir la requête de recherche
let search_query = '?ascending=false&max_posts=1';
// Exclure certaines catégories de l'affichage de l'élément de menu "Needs Reply"
let excludeList = ['pitches', 'weekly-recap', 'staff'];
// Ajouter la classe active au bouton "Needs Reply"
api.modifyClass('component:navigation-item', {
active: Ember.computed("contentFilterMode", "filterMode", function () {
let contentFilterMode = this.get('content').get('filterMode');
if (window.location.search && window.location.search.split('&')[0] === search_query.split('&')[0]) {
return contentFilterMode === "needsreply";
} else {
return this._super(contentFilterMode, this.get('filterMode'));
}
}),
});
// Supprimer le filtre max_posts et le filtre des tags
api.modifyClass('controller:discovery/topics', {
resetParams: function () {
this.setProperties({max_posts: null});
this.setProperties({tags: null});
this._super();
}
});
Discourse.ExternalNavItem = Discourse.NavItem.extend({
href: function () {
return this.get('href');
}.property("href")
});
Discourse.NavItem.reopenClass({
buildList: function (category, args) {
let list = this._super(category, args),
tag = args.tagId,
needsreplyHref;
if (!category) { // n'a pas de catégorie
needsreplyHref = tag ? '/latest/' + search_query + '&tags=' + tag : '/latest/' + search_query; // s'il y a un tag, construire le href avec le tag, sinon revenir à la vue la plus récente et à la requête de recherche
}
else if (excludeList.indexOf(category.slug) != -1) { // la catégorie est dans la liste d'exclusion, ne rien faire
return list; // retourner la liste sans créer l'élément de navigation personnalisé
}
else if (!category.parentCategory) { // n'est pas une sous-catégorie
needsreplyHref = tag ? '/c/' + category.slug + search_query + '&tags=' + tag : '/c/' + category.slug + search_query; // s'il y a un tag, construire le href avec les tags et la catégorie, sinon revenir à la requête de recherche, etc.
} else { // est une sous-catégorie
needsreplyHref = tag ? '/c/' + category.parentCategory.slug + '/' + category.slug + search_query + '&tags=' + tag :
'/c/' + category.parentCategory.slug + '/' + category.slug + search_query; // s'il y a un tag, construire le href avec les tags, la sous-catégorie et la catégorie, sinon revenir à la requête de recherche, etc.
}
list.push(Discourse.ExternalNavItem.create({href: needsreplyHref, name: 'needsreply'}));
return list;
}
});
</script>
Une erreur apparaît dans la console JS :
En creusant un peu plus, j’ai trouvé ce post qui mentionne que Discourse.NavItem est obsolète :
Des suggestions pour réécrire cela sans la classe NavItem obsolète ?
