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

Utilizziamo questo componente del tema da un po’ di tempo e oggi si è rotto.

Ecco il codice del componente (common, head_tag.html)

<!-- NECESSARIA RISPOSTA -->
<script type="text/discourse-plugin" version="0.8.18">
    if (I18n.translations.en) {
        I18n.translations.en.js.filters.needsreply = {title: "Richiede Risposta", help: "Argomenti senza risposta"};
    }

    // PERSONALIZZA QUESTI VALORI
    // Imposta la query di ricerca
    let search_query = '?ascending=false&max_posts=1';
    // Escludi determinate categorie dalla visualizzazione della voce di menu "Richiede Risposta"
    let excludeList = ['pitches', 'weekly-recap', 'staff'];


    // Aggiungi la classe active al pulsante "Richiede Risposta"
    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'));
            }
        }),
    });

    // Rimuovi il filtro max_posts e il filtro dei tag
    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) { // non ha una categoria
                needsreplyHref = tag ? '/latest/' + search_query + '&tags=' + tag : '/latest/' + search_query; // se c'è un tag, costruisci l'href con il tag, altrimenti torna alla visualizzazione più recente e alla query di ricerca
            }
            else if (excludeList.indexOf(category.slug) != -1) { // la categoria è nella lista di esclusione, non fare nulla
                return list; // restituisci la lista senza creare la voce di navigazione personalizzata
            }
            else if (!category.parentCategory) { // non è una sottocategoria
                needsreplyHref = tag ? '/c/' + category.slug + search_query + '&tags=' + tag : '/c/' + category.slug + search_query; // se c'è un tag, costruisci l'href con i tag e la categoria, altrimenti torna alla query di ricerca, ecc.
            } else { // è una sottocategoria
                needsreplyHref = tag ? '/c/' + category.parentCategory.slug + '/' + category.slug + search_query + '&tags=' + tag :
                    '/c/' + category.parentCategory.slug + '/' + category.slug + search_query; // se c'è un tag, costruisci l'href con i tag, la sottocategoria e la categoria, altrimenti torna alla query di ricerca, ecc.
            }
            list.push(Discourse.ExternalNavItem.create({href: needsreplyHref, name: 'needsreply'}));
            return list;
        }
    });
</script>

C’è un errore nella console JS:

E approfondendo un po’, ho trovato questo post che parla della deprecazione di Discourse.NavItem:

Qualche suggerimento per riscrivere questo codice senza la classe NavItem deprecata?

2 Mi Piace