Commit 31719255f669d69bd6d7cf82e84e0a513ebe9544

Authored by MoisesMachado
1 parent 1bbebba9

ActionItem501: fixed the tracking of the number of item per page


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@2167 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/controllers/public/search_controller.rb
... ... @@ -88,14 +88,16 @@ class SearchController < ApplicationController
88 88  
89 89 def load_product_categories_menu(asset)
90 90 @results[asset].uniq!
  91 + # REFACTOR DUPLICATED CODE inner loop doing the same thing that outter loop
91 92 @categories_menu = ProductCategory.menu_categories(@product_category, environment).map do |cat|
92 93 hits = @finder.count(asset, @filtered_query, calculate_find_options(asset, nil, nil, cat, @region, params[:radius], nil, nil))
93 94 childs = []
94   - # REFACTOR DUPLICATED CODE inner loop doing the same thing that outter loop
95   - childs = cat.children.map do |child|
96   - child_hits = @finder.count(asset, @filtered_query, calculate_find_options(asset, nil, nil, child, @region, params[:radius], nil, nil))
97   - [child, child_hits]
98   - end.select{|child, child_hits| child_hits > 0 }
  95 + if hits > 0
  96 + childs = cat.children.map do |child|
  97 + child_hits = @finder.count(asset, @filtered_query, calculate_find_options(asset, nil, nil, child, @region, params[:radius]))
  98 + [child, child_hits]
  99 + end.select{|child, child_hits| child_hits > 0 }
  100 + end
99 101 [cat, hits, childs]
100 102 end.select{|cat, hits| hits > 0 }
101 103 end
... ... @@ -117,7 +119,8 @@ class SearchController < ApplicationController
117 119 # limit the number of results per page
118 120 # TODO: dont hardcore like this
119 121 def limit
120   - (@searching.size == 1) ? 10 : 6
  122 + searching = @searching.values.select{|v|v}
  123 + (searching.size == 1) ? 10 : 6
121 124 end
122 125  
123 126 public
... ... @@ -173,6 +176,7 @@ class SearchController < ApplicationController
173 176 end
174 177  
175 178 render :action => 'index'
  179 + render :text => 'bla'
176 180 end
177 181  
178 182 alias :assets :index
... ...
app/models/product_category.rb
... ... @@ -3,15 +3,11 @@ class ProductCategory < Category
3 3 has_many :consumptions
4 4 has_many :consumers, :through => :consumptions, :source => :profile
5 5  
6   - def tree
7   - children.inject([]){|all,c| all + c.tree } << self
8   - end
9   -
10 6 def all_products
11   - Product.find(:all, :conditions => { :product_category_id => tree.map(&:id) })
  7 + Product.find(:all, :conditions => { :product_category_id => (all_children << self).map(&:id) })
12 8 end
13 9  
14 10 def self.menu_categories(top_category, env)
15   - top_category ? top_category.children : top_level_for(env)
  11 + top_category ? top_category.children : top_level_for(env).select{|c|c.kind_of?(ProductCategory)}
16 12 end
17 13 end
... ...
test/unit/product_category_test.rb
... ... @@ -18,27 +18,6 @@ class ProductCategoryTest &lt; Test::Unit::TestCase
18 18 assert !c3.errors.invalid?(:type)
19 19 end
20 20  
21   - def test_tree
22   - c0 = ProductCategory.create!(:name => 'base_cat', :environment => Environment.default)
23   - assert ! c0.new_record?
24   - assert_equivalent [c0], c0.tree
25   -
26   - c1 = ProductCategory.create!(:name => 'cat_1', :parent => c0, :environment => Environment.default)
27   - c0.reload
28   - assert_equivalent [c1], c1.tree
29   - assert_equivalent [c0, c1], c0.tree
30   -
31   - c2 = ProductCategory.create!(:name => 'cat_2', :parent => c0, :environment => Environment.default)
32   - c0.reload; c1.reload;
33   - assert_equivalent [c0,c1,c2] , c0.tree
34   -
35   - c3 = ProductCategory.create!(:name => 'cat_3', :parent => c2, :environment => Environment.default)
36   - c0.reload; c1.reload; c2.reload
37   - assert_equivalent [c0,c1,c2,c3], c0.tree
38   - assert_equivalent [c2,c3], c2.tree
39   -
40   - end
41   -
42 21 def test_all_products
43 22 c0 = ProductCategory.create!(:name => 'base_cat', :environment => Environment.default)
44 23 assert_equivalent [], c0.all_products
... ...