Reply reminder - Remind users to reply to new users topics with zero replies

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 ?

2 « J'aime »