Commit fcf765cfd4de3aba2d77c17a5e5a0ebdc754908e

Authored by Eduardo Passos
1 parent 320bcfbb

statistics-block: add products counter

plugins/statistics/lib/statistics_block.rb
@@ -3,13 +3,14 @@ class StatisticsBlock < Block @@ -3,13 +3,14 @@ class StatisticsBlock < Block
3 settings_items :community_counter, :default => false 3 settings_items :community_counter, :default => false
4 settings_items :user_counter, :default => true 4 settings_items :user_counter, :default => true
5 settings_items :enterprise_counter, :default => false 5 settings_items :enterprise_counter, :default => false
  6 + settings_items :product_counter, :default => false
6 settings_items :category_counter, :default => false 7 settings_items :category_counter, :default => false
7 settings_items :tag_counter, :default => true 8 settings_items :tag_counter, :default => true
8 settings_items :comment_counter, :default => true 9 settings_items :comment_counter, :default => true
9 settings_items :hit_counter, :default => false 10 settings_items :hit_counter, :default => false
10 settings_items :templates_ids_counter, Hash, :default => {} 11 settings_items :templates_ids_counter, Hash, :default => {}
11 12
12 - attr_accessible :comment_counter, :community_counter, :user_counter, :enterprise_counter, :category_counter, :tag_counter, :hit_counter, :templates_ids_counter 13 + attr_accessible :comment_counter, :community_counter, :user_counter, :enterprise_counter, :product_counter, :category_counter, :tag_counter, :hit_counter, :templates_ids_counter
13 14
14 USER_COUNTERS = [:community_counter, :user_counter, :enterprise_counter, :tag_counter, :comment_counter, :hit_counter] 15 USER_COUNTERS = [:community_counter, :user_counter, :enterprise_counter, :tag_counter, :comment_counter, :hit_counter]
15 COMMUNITY_COUNTERS = [:user_counter, :tag_counter, :comment_counter, :hit_counter] 16 COMMUNITY_COUNTERS = [:user_counter, :tag_counter, :comment_counter, :hit_counter]
@@ -91,6 +92,16 @@ class StatisticsBlock < Block @@ -91,6 +92,16 @@ class StatisticsBlock < Block
91 end 92 end
92 end 93 end
93 94
  95 + def products
  96 + if owner.kind_of?(Environment)
  97 + owner.products.where("profiles.enabled = 't' and profiles.visible = 't'").count
  98 + elsif owner.kind_of?(Enterprise)
  99 + owner.products.count
  100 + else
  101 + 0
  102 + end
  103 + end
  104 +
94 def communities 105 def communities
95 if owner.kind_of?(Environment) || owner.kind_of?(Person) 106 if owner.kind_of?(Environment) || owner.kind_of?(Person)
96 owner.communities.visible.count 107 owner.communities.visible.count
plugins/statistics/test/functional/statistics_plugin_environment_design_controller_test.rb
@@ -42,18 +42,19 @@ class EnvironmentDesignControllerTest < ActionController::TestCase @@ -42,18 +42,19 @@ class EnvironmentDesignControllerTest < ActionController::TestCase
42 @block.user_counter = true 42 @block.user_counter = true
43 @block.community_counter = true 43 @block.community_counter = true
44 @block.enterprise_counter = true 44 @block.enterprise_counter = true
  45 + @block.product_counter = true
45 @block.category_counter = true 46 @block.category_counter = true
46 @block.tag_counter = true 47 @block.tag_counter = true
47 @block.comment_counter = true 48 @block.comment_counter = true
48 @block.hit_counter = true 49 @block.hit_counter = true
49 @block.save! 50 @block.save!
50 get :edit, :id => @block.id 51 get :edit, :id => @block.id
51 - post :save, :id => @block.id, :block => {:user_counter => '0', :community_counter => '0', :enterprise_counter => '0',  
52 - :category_counter => '0', :tag_counter => '0', :comment_counter => '0', :hit_counter => '0' } 52 + post :save, :id => @block.id, :block => {:user_counter => '0', :community_counter => '0', :enterprise_counter => '0', :product_counter => '0', :category_counter => '0', :tag_counter => '0', :comment_counter => '0', :hit_counter => '0'}
53 @block.reload 53 @block.reload
54 any_checked = @block.is_visible?('user_counter') || 54 any_checked = @block.is_visible?('user_counter') ||
55 @block.is_visible?('community_counter') || 55 @block.is_visible?('community_counter') ||
56 @block.is_visible?('enterprise_counter') || 56 @block.is_visible?('enterprise_counter') ||
  57 + @block.is_visible?('product_counter') ||
57 @block.is_visible?('category_counter') || 58 @block.is_visible?('category_counter') ||
58 @block.is_visible?('tag_counter') || 59 @block.is_visible?('tag_counter') ||
59 @block.is_visible?('comment_counter') || 60 @block.is_visible?('comment_counter') ||
@@ -66,18 +67,20 @@ class EnvironmentDesignControllerTest < ActionController::TestCase @@ -66,18 +67,20 @@ class EnvironmentDesignControllerTest < ActionController::TestCase
66 @block.user_counter = false 67 @block.user_counter = false
67 @block.community_counter = false 68 @block.community_counter = false
68 @block.enterprise_counter = false 69 @block.enterprise_counter = false
  70 + @block.product_counter = false
69 @block.category_counter = false 71 @block.category_counter = false
70 @block.tag_counter = false 72 @block.tag_counter = false
71 @block.comment_counter = false 73 @block.comment_counter = false
72 @block.hit_counter = false 74 @block.hit_counter = false
73 @block.save! 75 @block.save!
74 get :edit, :id => @block.id 76 get :edit, :id => @block.id
75 - post :save, :id => @block.id, :block => {:user_counter => '1', :community_counter => '1', :enterprise_counter => '1', 77 + post :save, :id => @block.id, :block => {:user_counter => '1', :community_counter => '1', :enterprise_counter => '1', :product_counter => '1',
76 :category_counter => '1', :tag_counter => '1', :comment_counter => '1', :hit_counter => '1' } 78 :category_counter => '1', :tag_counter => '1', :comment_counter => '1', :hit_counter => '1' }
77 @block.reload 79 @block.reload
78 all_checked = @block.is_visible?('user_counter') && 80 all_checked = @block.is_visible?('user_counter') &&
79 @block.is_visible?('community_counter') && 81 @block.is_visible?('community_counter') &&
80 @block.is_visible?('enterprise_counter') && 82 @block.is_visible?('enterprise_counter') &&
  83 + @block.is_visible?('product_counter') &&
81 @block.is_visible?('category_counter') && 84 @block.is_visible?('category_counter') &&
82 @block.is_visible?('tag_counter') && 85 @block.is_visible?('tag_counter') &&
83 @block.is_visible?('comment_counter') && 86 @block.is_visible?('comment_counter') &&
@@ -128,14 +131,21 @@ class EnvironmentDesignControllerTest < ActionController::TestCase @@ -128,14 +131,21 @@ class EnvironmentDesignControllerTest < ActionController::TestCase
128 assert_no_tag :input, :attributes => {:id => 'block_enterprise_counter', :checked => 'checked'} 131 assert_no_tag :input, :attributes => {:id => 'block_enterprise_counter', :checked => 'checked'}
129 end 132 end
130 133
131 - should 'not input category counter be checked by default' do 134 + should 'not input product counter be checked by default' do
  135 + get :edit, :id => @block.id
  136 +
  137 + assert_tag :input, :attributes => {:id => 'block_product_counter'}
  138 + assert_no_tag :input, :attributes => {:id => 'block_product_counter', :checked => 'checked'}
  139 + end
  140 +
  141 + should 'not input category counter be checked by default' do
132 get :edit, :id => @block.id 142 get :edit, :id => @block.id
133 143
134 assert_tag :input, :attributes => {:id => 'block_category_counter'} 144 assert_tag :input, :attributes => {:id => 'block_category_counter'}
135 assert_no_tag :input, :attributes => {:id => 'block_category_counter', :checked => 'checked'} 145 assert_no_tag :input, :attributes => {:id => 'block_category_counter', :checked => 'checked'}
136 end 146 end
137 147
138 - should 'input tag counter be checked by default' do 148 + should 'input tag counter be checked by default' do
139 get :edit, :id => @block.id 149 get :edit, :id => @block.id
140 150
141 assert_tag :input, :attributes => {:id => 'block_tag_counter', :checked => 'checked'} 151 assert_tag :input, :attributes => {:id => 'block_tag_counter', :checked => 'checked'}
@@ -152,4 +162,4 @@ class EnvironmentDesignControllerTest < ActionController::TestCase @@ -152,4 +162,4 @@ class EnvironmentDesignControllerTest < ActionController::TestCase
152 162
153 assert_no_tag :input, :attributes => {:id => 'block_hit_counter', :checked => 'checked'} 163 assert_no_tag :input, :attributes => {:id => 'block_hit_counter', :checked => 'checked'}
154 end 164 end
155 -end 165 -end
  166 +end
156 \ No newline at end of file 167 \ No newline at end of file
plugins/statistics/test/functional/statistics_plugin_home_controller_test.rb
@@ -74,6 +74,20 @@ class HomeControllerTest < ActionController::TestCase @@ -74,6 +74,20 @@ class HomeControllerTest < ActionController::TestCase
74 assert_no_tag :tag => 'div', :attributes => {:class => 'statistics-block-data'}, :descendant => { :tag => 'li', :attributes => {:class => 'enterprises'} } 74 assert_no_tag :tag => 'div', :attributes => {:class => 'statistics-block-data'}, :descendant => { :tag => 'li', :attributes => {:class => 'enterprises'} }
75 end 75 end
76 76
  77 + should 'display products class in statistics-block-data block' do
  78 + @block.product_counter = true
  79 + @block.save!
  80 + get :index
  81 +
  82 + assert_tag :tag => 'div', :attributes => {:class => 'statistics-block-data'}, :descendant => { :tag => 'li', :attributes => {:class => 'products'} }
  83 + end
  84 +
  85 + should 'not display products class in statistics-block-data block' do
  86 + get :index
  87 +
  88 + assert_no_tag :tag => 'div', :attributes => {:class => 'statistics-block-data'}, :descendant => { :tag => 'li', :attributes => {:class => 'products'} }
  89 + end
  90 +
77 should 'display categories class in statistics-block-data block' do 91 should 'display categories class in statistics-block-data block' do
78 @block.category_counter = true 92 @block.category_counter = true
79 @block.save! 93 @block.save!
plugins/statistics/test/unit/statistics_block_test.rb
@@ -8,7 +8,7 @@ class StatisticsBlockTest < ActiveSupport::TestCase @@ -8,7 +8,7 @@ class StatisticsBlockTest < ActiveSupport::TestCase
8 end 8 end
9 end 9 end
10 10
11 - ['community_counter', 'enterprise_counter', 'category_counter', 'hit_counter'].map do |counter| 11 + ['community_counter', 'enterprise_counter', 'product_counter', 'category_counter', 'hit_counter'].map do |counter|
12 should "#{counter} be false by default" do 12 should "#{counter} be false by default" do
13 b = StatisticsBlock.new 13 b = StatisticsBlock.new
14 assert !b.is_visible?(counter) 14 assert !b.is_visible?(counter)
@@ -139,6 +139,40 @@ class StatisticsBlockTest < ActiveSupport::TestCase @@ -139,6 +139,40 @@ class StatisticsBlockTest < ActiveSupport::TestCase
139 assert_equal 2, b.enterprises 139 assert_equal 2, b.enterprises
140 end 140 end
141 141
  142 + should 'return the amount of visible environment products' do
  143 + b = StatisticsBlock.new
  144 + e = fast_create(Environment)
  145 +
  146 + e1 = fast_create(Enterprise, :visible => true, :enabled => true, :environment_id => e.id)
  147 + e2 = fast_create(Enterprise, :visible => true, :enabled => false, :environment_id => e.id)
  148 + e3 = fast_create(Enterprise, :visible => false, :enabled => true, :environment_id => e.id)
  149 +
  150 + fast_create(Product, :profile_id => e1.id)
  151 + fast_create(Product, :profile_id => e1.id)
  152 + fast_create(Product, :profile_id => e2.id)
  153 + fast_create(Product, :profile_id => e2.id)
  154 + fast_create(Product, :profile_id => e3.id)
  155 + fast_create(Product, :profile_id => e3.id)
  156 +
  157 + b.expects(:owner).at_least_once.returns(e)
  158 +
  159 + assert_equal 2, b.products
  160 + end
  161 +
  162 + should 'return the amount of visible enterprise products' do
  163 + b = StatisticsBlock.new
  164 +
  165 + e = fast_create(Enterprise)
  166 +
  167 + fast_create(Product, :profile_id => e.id)
  168 + fast_create(Product, :profile_id => e.id)
  169 + fast_create(Product, :profile_id => nil)
  170 +
  171 + b.expects(:owner).at_least_once.returns(e)
  172 +
  173 + assert_equal 2, b.products
  174 + end
  175 +
142 should 'categories return the amount of categories of the Environment' do 176 should 'categories return the amount of categories of the Environment' do
143 b = StatisticsBlock.new 177 b = StatisticsBlock.new
144 e = fast_create(Environment) 178 e = fast_create(Environment)
plugins/statistics/views/box_organizer/_statistics_block.html.erb
1 <%= labelled_form_field check_box(:block, :user_counter) + _('Show user counter'), '' %> 1 <%= labelled_form_field check_box(:block, :user_counter) + _('Show user counter'), '' %>
2 2
3 <% if @block.is_counter_available?(:community_counter) %> 3 <% if @block.is_counter_available?(:community_counter) %>
4 -<%= labelled_form_field check_box(:block, :community_counter) + _('Show community counter'), '' %> 4 + <%= labelled_form_field check_box(:block, :community_counter) + _('Show community counter'), '' %>
5 <% end %> 5 <% end %>
6 6
7 <% if @block.is_counter_available?(:enterprise_counter) %> 7 <% if @block.is_counter_available?(:enterprise_counter) %>
8 -<%= labelled_form_field check_box(:block, :enterprise_counter) + _('Show enterprise counter'), '' %> 8 + <%= labelled_form_field check_box(:block, :enterprise_counter) + _('Show enterprise counter'), '' %>
  9 +<% end %>
  10 +
  11 +<% if @block.is_counter_available?(:product_counter) %>
  12 + <%= labelled_form_field check_box(:block, :product_counter) + _('Show product counter'), '' %>
9 <% end %> 13 <% end %>
10 14
11 <% if @block.is_counter_available?(:category_counter) %> 15 <% if @block.is_counter_available?(:category_counter) %>
12 -<%= labelled_form_field check_box(:block, :category_counter) + _('Show category counter'), '' %> 16 + <%= labelled_form_field check_box(:block, :category_counter) + _('Show category counter'), '' %>
13 <% end %> 17 <% end %>
14 18
15 <% if @block.is_counter_available?(:tag_counter) %> 19 <% if @block.is_counter_available?(:tag_counter) %>
16 -<%= labelled_form_field check_box(:block, :tag_counter) + _('Show tag counter'), '' %> 20 + <%= labelled_form_field check_box(:block, :tag_counter) + _('Show tag counter'), '' %>
17 <% end %> 21 <% end %>
18 22
19 <% if @block.is_counter_available?(:comment_counter) %> 23 <% if @block.is_counter_available?(:comment_counter) %>
20 -<%= labelled_form_field check_box(:block, :comment_counter) + _('Show comment counter'), '' %> 24 + <%= labelled_form_field check_box(:block, :comment_counter) + _('Show comment counter'), '' %>
21 <% end %> 25 <% end %>
22 26
23 <% if @block.is_counter_available?(:hit_counter) %> 27 <% if @block.is_counter_available?(:hit_counter) %>
24 -<%= labelled_form_field check_box(:block, :hit_counter) + _('Show hit counter'), '' %> 28 + <%= labelled_form_field check_box(:block, :hit_counter) + _('Show hit counter'), '' %>
25 <% end %> 29 <% end %>
26 30
27 <% if @block.is_counter_available?(:templates_ids_counter) %> 31 <% if @block.is_counter_available?(:templates_ids_counter) %>
28 -<% @block.templates.map do |item|%>  
29 - <%= hidden_field_tag("block[templates_ids_counter][#{item.id}]", false)%>  
30 - <%= labelled_form_field check_box_tag("block[templates_ids_counter][#{item.id}]", true, @block.is_template_counter_active?(item.id)) + _("Show counter for communities with template %s" % item.name), '' %>  
31 -<% end %> 32 + <% @block.templates.map do |item|%>
  33 + <%= hidden_field_tag("block[templates_ids_counter][#{item.id}]", false)%>
  34 + <%= labelled_form_field check_box_tag("block[templates_ids_counter][#{item.id}]", true, @block.is_template_counter_active?(item.id)) + _("Show counter for communities with template %s" % item.name), '' %>
  35 + <% end %>
32 <% end %> 36 <% end %>
plugins/statistics/views/statistics_block.html.erb
@@ -9,6 +9,9 @@ @@ -9,6 +9,9 @@
9 <% if block.is_visible?('enterprise_counter') && !block.environment.enabled?('disable_asset_enterprises') %> 9 <% if block.is_visible?('enterprise_counter') && !block.environment.enabled?('disable_asset_enterprises') %>
10 <li class="enterprises"><span class="amount"><%= block.enterprises%> </span><span class="label"><%= _('enterprises')%></span></li> 10 <li class="enterprises"><span class="amount"><%= block.enterprises%> </span><span class="label"><%= _('enterprises')%></span></li>
11 <% end %> 11 <% end %>
  12 + <% if block.is_visible?('product_counter') && !block.environment.enabled?('disable_asset_products') %>
  13 + <li class="products"><span class="amount"><%= block.products%> </span><span class="label"><%= _('products')%></span></li>
  14 + <% end %>
12 <% if block.is_visible?('community_counter') %> 15 <% if block.is_visible?('community_counter') %>
13 <li class="communities"><span class="amount"><%= block.communities%> </span><span class="label"><%= _('communities')%></span></li> 16 <li class="communities"><span class="amount"><%= block.communities%> </span><span class="label"><%= _('communities')%></span></li>
14 <% end %> 17 <% end %>