FEATURE: Subcategory list on parent subcategory page.

This commit is contained in:
Robin Ward
2014-07-02 15:10:39 -04:00
parent 4592916026
commit 462dcadd01
13 changed files with 119 additions and 43 deletions

View File

@@ -58,6 +58,10 @@ class CategoryList
.includes(:featured_users, subcategories: [:topic_only_relative_url])
.secured(@guardian)
if @options[:parent_category_id].present?
@categories = @categories.where('categories.parent_category_id = ?', @options[:parent_category_id].to_i)
end
if SiteSetting.fixed_category_positions
@categories = @categories.order('position ASC').order('id ASC')
else
@@ -72,21 +76,23 @@ class CategoryList
end
@categories = @categories.to_a
subcategories = {}
to_delete = Set.new
@categories.each do |c|
if c.parent_category_id.present?
subcategories[c.parent_category_id] ||= []
subcategories[c.parent_category_id] << c.id
to_delete << c
end
end
if subcategories.present?
if @options[:parent_category_id].blank?
subcategories = {}
to_delete = Set.new
@categories.each do |c|
c.subcategory_ids = subcategories[c.id]
if c.parent_category_id.present?
subcategories[c.parent_category_id] ||= []
subcategories[c.parent_category_id] << c.id
to_delete << c
end
end
if subcategories.present?
@categories.each do |c|
c.subcategory_ids = subcategories[c.id]
end
@categories.delete_if {|c| to_delete.include?(c) }
end
@categories.delete_if {|c| to_delete.include?(c) }
end
if latest_post_only?