Commit fcf765cfd4de3aba2d77c17a5e5a0ebdc754908e
1 parent
320bcfbb
Exists in
master
and in
27 other branches
statistics-block: add products counter
Showing
6 changed files
with
94 additions
and
18 deletions
Show diff stats
plugins/statistics/lib/statistics_block.rb
... | ... | @@ -3,13 +3,14 @@ class StatisticsBlock < Block |
3 | 3 | settings_items :community_counter, :default => false |
4 | 4 | settings_items :user_counter, :default => true |
5 | 5 | settings_items :enterprise_counter, :default => false |
6 | + settings_items :product_counter, :default => false | |
6 | 7 | settings_items :category_counter, :default => false |
7 | 8 | settings_items :tag_counter, :default => true |
8 | 9 | settings_items :comment_counter, :default => true |
9 | 10 | settings_items :hit_counter, :default => false |
10 | 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 | 15 | USER_COUNTERS = [:community_counter, :user_counter, :enterprise_counter, :tag_counter, :comment_counter, :hit_counter] |
15 | 16 | COMMUNITY_COUNTERS = [:user_counter, :tag_counter, :comment_counter, :hit_counter] |
... | ... | @@ -91,6 +92,16 @@ class StatisticsBlock < Block |
91 | 92 | end |
92 | 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 | 105 | def communities |
95 | 106 | if owner.kind_of?(Environment) || owner.kind_of?(Person) |
96 | 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 | 42 | @block.user_counter = true |
43 | 43 | @block.community_counter = true |
44 | 44 | @block.enterprise_counter = true |
45 | + @block.product_counter = true | |
45 | 46 | @block.category_counter = true |
46 | 47 | @block.tag_counter = true |
47 | 48 | @block.comment_counter = true |
48 | 49 | @block.hit_counter = true |
49 | 50 | @block.save! |
50 | 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 | 53 | @block.reload |
54 | 54 | any_checked = @block.is_visible?('user_counter') || |
55 | 55 | @block.is_visible?('community_counter') || |
56 | 56 | @block.is_visible?('enterprise_counter') || |
57 | + @block.is_visible?('product_counter') || | |
57 | 58 | @block.is_visible?('category_counter') || |
58 | 59 | @block.is_visible?('tag_counter') || |
59 | 60 | @block.is_visible?('comment_counter') || |
... | ... | @@ -66,18 +67,20 @@ class EnvironmentDesignControllerTest < ActionController::TestCase |
66 | 67 | @block.user_counter = false |
67 | 68 | @block.community_counter = false |
68 | 69 | @block.enterprise_counter = false |
70 | + @block.product_counter = false | |
69 | 71 | @block.category_counter = false |
70 | 72 | @block.tag_counter = false |
71 | 73 | @block.comment_counter = false |
72 | 74 | @block.hit_counter = false |
73 | 75 | @block.save! |
74 | 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 | 78 | :category_counter => '1', :tag_counter => '1', :comment_counter => '1', :hit_counter => '1' } |
77 | 79 | @block.reload |
78 | 80 | all_checked = @block.is_visible?('user_counter') && |
79 | 81 | @block.is_visible?('community_counter') && |
80 | 82 | @block.is_visible?('enterprise_counter') && |
83 | + @block.is_visible?('product_counter') && | |
81 | 84 | @block.is_visible?('category_counter') && |
82 | 85 | @block.is_visible?('tag_counter') && |
83 | 86 | @block.is_visible?('comment_counter') && |
... | ... | @@ -128,14 +131,21 @@ class EnvironmentDesignControllerTest < ActionController::TestCase |
128 | 131 | assert_no_tag :input, :attributes => {:id => 'block_enterprise_counter', :checked => 'checked'} |
129 | 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 | 142 | get :edit, :id => @block.id |
133 | 143 | |
134 | 144 | assert_tag :input, :attributes => {:id => 'block_category_counter'} |
135 | 145 | assert_no_tag :input, :attributes => {:id => 'block_category_counter', :checked => 'checked'} |
136 | 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 | 149 | get :edit, :id => @block.id |
140 | 150 | |
141 | 151 | assert_tag :input, :attributes => {:id => 'block_tag_counter', :checked => 'checked'} |
... | ... | @@ -152,4 +162,4 @@ class EnvironmentDesignControllerTest < ActionController::TestCase |
152 | 162 | |
153 | 163 | assert_no_tag :input, :attributes => {:id => 'block_hit_counter', :checked => 'checked'} |
154 | 164 | end |
155 | 165 | -end |
166 | +end | |
156 | 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 | 74 | assert_no_tag :tag => 'div', :attributes => {:class => 'statistics-block-data'}, :descendant => { :tag => 'li', :attributes => {:class => 'enterprises'} } |
75 | 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 | 91 | should 'display categories class in statistics-block-data block' do |
78 | 92 | @block.category_counter = true |
79 | 93 | @block.save! | ... | ... |
plugins/statistics/test/unit/statistics_block_test.rb
... | ... | @@ -8,7 +8,7 @@ class StatisticsBlockTest < ActiveSupport::TestCase |
8 | 8 | end |
9 | 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 | 12 | should "#{counter} be false by default" do |
13 | 13 | b = StatisticsBlock.new |
14 | 14 | assert !b.is_visible?(counter) |
... | ... | @@ -139,6 +139,40 @@ class StatisticsBlockTest < ActiveSupport::TestCase |
139 | 139 | assert_equal 2, b.enterprises |
140 | 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 | 176 | should 'categories return the amount of categories of the Environment' do |
143 | 177 | b = StatisticsBlock.new |
144 | 178 | e = fast_create(Environment) | ... | ... |
plugins/statistics/views/box_organizer/_statistics_block.html.erb
1 | 1 | <%= labelled_form_field check_box(:block, :user_counter) + _('Show user counter'), '' %> |
2 | 2 | |
3 | 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 | 5 | <% end %> |
6 | 6 | |
7 | 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 | 13 | <% end %> |
10 | 14 | |
11 | 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 | 17 | <% end %> |
14 | 18 | |
15 | 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 | 21 | <% end %> |
18 | 22 | |
19 | 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 | 25 | <% end %> |
22 | 26 | |
23 | 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 | 29 | <% end %> |
26 | 30 | |
27 | 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 | 36 | <% end %> | ... | ... |
plugins/statistics/views/statistics_block.html.erb
... | ... | @@ -9,6 +9,9 @@ |
9 | 9 | <% if block.is_visible?('enterprise_counter') && !block.environment.enabled?('disable_asset_enterprises') %> |
10 | 10 | <li class="enterprises"><span class="amount"><%= block.enterprises%> </span><span class="label"><%= _('enterprises')%></span></li> |
11 | 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 | 15 | <% if block.is_visible?('community_counter') %> |
13 | 16 | <li class="communities"><span class="amount"><%= block.communities%> </span><span class="label"><%= _('communities')%></span></li> |
14 | 17 | <% end %> | ... | ... |