[PAID] Meu botão de Tópicos no menu superior

O que você gostaria que fosse feito?
Preciso de um botão no menu superior, semelhante ao posted, que mostre todas as postagens que você criou, mas não inclua os tópicos de outros usuários nos quais você respondeu, como faz o posted.

Seria ótimo se eu pudesse renomeá-lo para ‘Minhas Fotos’ em certas categorias também.

Isso precisa funcionar com o plugin de Pré-visualização de Tópicos, para que os resultados tenham miniaturas, o que o código abaixo já faz funcionar.

Quando você precisa que seja feito?
Sem pressa, mas seria bom ter pronto dentro de um mês.

Qual é o seu orçamento, em $ USD, que você pode oferecer para esta tarefa?
Espero que o código abaixo possa ser usado como ponto de partida (este é para um botão que mostra postagens que não têm resposta) e que seja uma tarefa bastante simples, então oferecerei $100.

O maior problema que estou enfrentando ao modificar isso sozinho é que não consigo encontrar uma maneira de usar uma variável de nome de usuário na consulta de pesquisa, para que mostre apenas os tópicos do usuário atual.

<!-- PRECISA DE RESPOSTA -->
<script type="text/discourse-plugin" version="0.8.18">
    if (I18n.translations.en) {
        I18n.translations.en.js.filters.needsreply = {title: "Sem Respostas", help: "Tópicos sem respostas"};
    }

    // PERSONALIZE ESSES VALORES
    // Defina a consulta de pesquisa
    let search_query = '?max_posts=1';
    // Exclua certas categorias de mostrar o item de menu de "precisa de resposta"
    let excludeList = ['classifieds', 'workshops', 'staff', 'wiki','site-discussions', 'site-feedback', 'announcements', 'site-tips', 'site-support'];


    // Adiciona classe ativa ao botão Precisa de Resposta
    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'));
            }
        }),
    });

    // Remove o filtro max_posts e o filtro de 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ão possui uma categoria
                needsreplyHref = tag ? '/latest/' + search_query + '&tags=' + tag : '/latest/' + search_query; // se houver uma tag, construa o href com a tag, caso contrário, retorne à visualização mais recente e à consulta de pesquisa
            }
            else if (excludeList.indexOf(category.slug) != -1) { // a categoria está na lista de exclusão, não faça nada
                return list; // retorna a lista sem criar o item de navegação personalizado
            }
            else if (!category.parentCategory) { // não é uma subcategoria
                needsreplyHref = tag ? '/c/' + category.slug + search_query + '&tags=' + tag : '/c/' + category.slug + search_query; // se houver uma tag, construa o href com tags e a categoria, caso contrário, retorne à consulta de pesquisa, etc.
            } else { // é uma subcategoria
                needsreplyHref = tag ? '/c/' + category.parentCategory.slug + '/' + category.slug + search_query + '&tags=' + tag :
                    '/c/' + category.parentCategory.slug + '/' + category.slug + search_query; // se houver uma tag, construa o href com tags, subcategoria e categoria, caso contrário, retorne à consulta de pesquisa, etc.
            }
            list.push(Discourse.ExternalNavItem.create({href: needsreplyHref, name: 'needsreply'}));
            return list;
        }
    });
</script>
6 curtidas

@merefield você acha que isso pode se relacionar um pouco com o que estamos fazendo?

3 curtidas

Sim, muito provável. David, vou adicioná-lo a uma conversa.

4 curtidas

Ainda procurando ajuda sobre isso…

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.