FEATURE: Filter by solved
This commit is contained in:
parent
895fd41f39
commit
6eb3c7574d
|
@ -8,6 +8,7 @@ module KnowledgeExplorer
|
|||
filters = {
|
||||
tags: params[:tags],
|
||||
category: params[:category],
|
||||
solved: params[:solved],
|
||||
search_term: params[:search],
|
||||
ascending: params[:ascending],
|
||||
order: params[:order],
|
||||
|
|
|
@ -22,6 +22,7 @@ export default Ember.Controller.extend({
|
|||
ascending: "ascending",
|
||||
filterCategories: "category",
|
||||
filterTags: "tags",
|
||||
filterSolved: "solved",
|
||||
orderColumn: "order",
|
||||
searchTerm: "search",
|
||||
selectedTopic: "topic"
|
||||
|
@ -35,6 +36,7 @@ export default Ember.Controller.extend({
|
|||
tags: Ember.computed.readOnly("model.tags"),
|
||||
filterTags: null,
|
||||
filterCategories: null,
|
||||
filterSolved: false,
|
||||
searchTerm: null,
|
||||
selectedTopic: null,
|
||||
topic: null,
|
||||
|
@ -74,6 +76,11 @@ export default Ember.Controller.extend({
|
|||
|
||||
emptySearchResults: Ember.computed.equal("searchCount", 0),
|
||||
|
||||
@discourseComputed
|
||||
canFilterSolved() {
|
||||
return this.siteSettings.solved_enabled;
|
||||
},
|
||||
|
||||
@discourseComputed("filterTags")
|
||||
filtered(filterTags) {
|
||||
return !!filterTags;
|
||||
|
@ -94,6 +101,11 @@ export default Ember.Controller.extend({
|
|||
});
|
||||
},
|
||||
|
||||
onChangeFilterSolved(solvedFilter) {
|
||||
this.set("filterSolved", solvedFilter);
|
||||
this.send("refreshModel");
|
||||
},
|
||||
|
||||
updateSelectedTags(tag) {
|
||||
let filter = this.filterTags;
|
||||
if (filter && filter.includes(tag.id)) {
|
||||
|
@ -192,6 +204,7 @@ export default Ember.Controller.extend({
|
|||
const params = this.getProperties(
|
||||
"filterCategories",
|
||||
"filterTags",
|
||||
"filterSolved",
|
||||
"searchTerm",
|
||||
"ascending",
|
||||
"orderColumn"
|
||||
|
|
|
@ -11,6 +11,7 @@ export default {
|
|||
if (params.filterCategories)
|
||||
filters.push(`category=${params.filterCategories}`);
|
||||
if (params.filterTags) filters.push(`tags=${params.filterTags}`);
|
||||
if (params.filterSolved) filters.push(`solved=${params.filterSolved}`);
|
||||
if (params.searchTerm) filters.push(`search=${params.searchTerm}`);
|
||||
if (params.ascending) filters.push("ascending=true");
|
||||
if (params.orderColumn) filters.push(`order=${params.orderColumn}`);
|
||||
|
|
|
@ -15,6 +15,19 @@
|
|||
{{/if}}
|
||||
<div class="knowledge-explorer-filters">
|
||||
{{#if expandedFilters}}
|
||||
{{#if canFilterSolved}}
|
||||
<div class="knowledge-explorer-items knowledge-explorer-solved">
|
||||
<label class="checkbox-label knowledge-explorer-item">
|
||||
{{input
|
||||
type="checkbox"
|
||||
checked=(readonly filterSolved)
|
||||
change=(action "onChangeFilterSolved" value="target.checked")
|
||||
}}
|
||||
{{i18n "knowledge_explorer.filter_solved"}}
|
||||
</label>
|
||||
</div>
|
||||
|
||||
{{/if}}
|
||||
{{#if categories}}
|
||||
<div class="knowledge-explorer-items knowledge-explorer-categories">
|
||||
<h3>{{i18n 'knowledge_explorer.categories'}}</h3>
|
||||
|
|
|
@ -17,3 +17,4 @@ en:
|
|||
back: "Go back"
|
||||
navigate_to_topic: "View the discussion on this topic"
|
||||
filter_button: "Filters"
|
||||
filter_solved: "Topic Solved?"
|
||||
|
|
|
@ -45,6 +45,15 @@ module KnowledgeExplorer
|
|||
end
|
||||
end
|
||||
|
||||
if @filters[:solved].present?
|
||||
results = results.where("topics.id IN (
|
||||
SELECT tc.topic_id
|
||||
FROM topic_custom_fields tc
|
||||
WHERE tc.name = 'accepted_answer_post_id' AND
|
||||
tc.value IS NOT NULL
|
||||
)")
|
||||
end
|
||||
|
||||
# filter results by search term
|
||||
if @filters[:search_term].present?
|
||||
term = Search.prepare_data(@filters[:search_term])
|
||||
|
@ -153,6 +162,7 @@ module KnowledgeExplorer
|
|||
|
||||
filters.push("tags=#{@filters[:tags]}") if @filters[:tags].present?
|
||||
filters.push("category=#{@filters[:category]}") if @filters[:category].present?
|
||||
filters.push("solved=#{@filters[:solved]}") if @filters[:solved].present?
|
||||
filters.push("search=#{@filters[:search_term]}") if @filters[:search_term].present?
|
||||
filters.push("sort=#{@filters[:sort]}") if @filters[:sort].present?
|
||||
|
||||
|
|
Loading…
Reference in New Issue