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>