FIX: tags index should show all tags belonging to a category even if they have never been used

This commit is contained in:
Neil Lalonde 2016-07-26 16:02:01 -04:00
parent 5ba8612fa8
commit 3c0df3510a
2 changed files with 10 additions and 2 deletions

View File

@ -6,7 +6,11 @@
{{/if}} {{/if}}
{{#each sortedTags as |tag|}} {{#each sortedTags as |tag|}}
<div class='tag-box'> <div class='tag-box'>
{{discourse-tag tag.id}} <span class='tag-count'>x {{tag.count}}</span> {{#if tag.count}}
{{discourse-tag tag.id}} <span class='tag-count'>x {{tag.count}}</span>
{{else}}
{{discourse-tag tag.id}}
{{/if}}
</div> </div>
{{/each}} {{/each}}
<div class="clearfix" /> <div class="clearfix" />

View File

@ -15,7 +15,11 @@ class TagsController < ::ApplicationController
categories = Category.where("id in (select category_id from category_tags)") categories = Category.where("id in (select category_id from category_tags)")
.where("id in (?)", guardian.allowed_category_ids) .where("id in (?)", guardian.allowed_category_ids)
.preload(:tags) .preload(:tags)
category_tag_counts = categories.map { |c| {id: c.id, tags: self.class.tag_counts_json(Tag.category_tags_by_count_query(c, limit: 300).count)} } category_tag_counts = categories.map do |c|
h = Tag.category_tags_by_count_query(c, limit: 300).count
h.merge!(c.tags.where.not(name: h.keys).inject({}) { |sum,t| sum[t.name] = 0; sum }) # unused tags
{id: c.id, tags: self.class.tag_counts_json(h)}
end
tag_counts = self.class.tags_by_count(guardian, limit: 300).count tag_counts = self.class.tags_by_count(guardian, limit: 300).count
@tags = self.class.tag_counts_json(tag_counts) @tags = self.class.tag_counts_json(tag_counts)