Commit e8d3191c8c41f9c4973535f404c6e5887eff78f1
1 parent
bb67cc9e
Exists in
staging
and in
42 other branches
ActionItem252: added the display_in_menu column to categories table and made the check in the helper
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1959 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
5 changed files
with
31 additions
and
17 deletions
Show diff stats
app/models/category.rb
| ... | ... | @@ -54,12 +54,19 @@ class Category < ActiveRecord::Base |
| 54 | 54 | end |
| 55 | 55 | |
| 56 | 56 | def display_in_menu? |
| 57 | - if ENV['RAILS_ENV'] == 'development' | |
| 58 | - return true | |
| 57 | + display_in_menu | |
| 58 | + end | |
| 59 | + | |
| 60 | + def children_for_menu | |
| 61 | + results = [] | |
| 62 | + pending = children.find(:all, :conditions => { :display_in_menu => true}) | |
| 63 | + while !pending.empty? | |
| 64 | + cat = pending.shift | |
| 65 | + results << cat | |
| 66 | + pending += cat.children.find(:all, :conditions => { :display_in_menu => true} ) | |
| 59 | 67 | end |
| 60 | 68 | |
| 61 | - # FIXME don't hardcode like this. Should be a setting of the environment, maybe | |
| 62 | - total_items >= 10 | |
| 69 | + results | |
| 63 | 70 | end |
| 64 | 71 | |
| 65 | 72 | end | ... | ... |
app/views/shared/categories_menu.rhtml
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <li id="category<%= item.display_color %>"<%= ' class="active"' if (@category && (@category.top_ancestor == item)) %>> |
| 5 | 5 | <%= item.name %> |
| 6 | 6 | <ul> |
| 7 | - <% item.all_children.select{|i| i.display_in_menu?}.each do |child| %> | |
| 7 | + <% item.children_for_menu.each do |child| %> | |
| 8 | 8 | <% if (@controller.controller_name == 'search') && (@controller.action_name == 'assets') %> |
| 9 | 9 | <li><%= link_to(content_tag('span', child.name), :controller => 'search', :action => 'assets', :asset => params[:asset], :category_path => child.explode_path) %></li> |
| 10 | 10 | <% else %> | ... | ... |
script/anhetegua
| ... | ... | @@ -14,13 +14,13 @@ Product.destroy_all |
| 14 | 14 | Article.destroy_all |
| 15 | 15 | |
| 16 | 16 | def new_category(parent, name, color = nil) |
| 17 | - category = Environment.default.categories.build(:name => name, :display_color => color, :parent_id => (parent ? parent.id: nil)) | |
| 17 | + category = Environment.default.categories.build(:name => name, :display_color => color, :parent_id => (parent ? parent.id: nil), :display_in_menu => true) | |
| 18 | 18 | category.save! |
| 19 | 19 | category |
| 20 | 20 | end |
| 21 | 21 | |
| 22 | 22 | def new_region(parent, name, color = nil) |
| 23 | - region = Environment.default.regions.build(:name => name, :display_color => color, :parent_id => (parent ? parent.id: nil)) | |
| 23 | + region = Environment.default.regions.build(:name => name, :display_color => color, :parent_id => (parent ? parent.id: nil), :display_in_menu => true) | |
| 24 | 24 | region.save! |
| 25 | 25 | region |
| 26 | 26 | end | ... | ... |
test/unit/category_test.rb
| ... | ... | @@ -385,16 +385,14 @@ class CategoryTest < Test::Unit::TestCase |
| 385 | 385 | end |
| 386 | 386 | end |
| 387 | 387 | |
| 388 | - should 'display in menu' do | |
| 389 | - c = Category.create!(:name => 'test category1', :environment => Environment.default) | |
| 390 | - c.expects(:total_items).returns(10) | |
| 391 | - assert c.display_in_menu? | |
| 392 | - end | |
| 393 | - | |
| 394 | - should 'not display in menu' do | |
| 395 | - c = Category.create!(:name => 'test category1', :environment => Environment.default) | |
| 396 | - c.expects(:total_items).returns(1) | |
| 397 | - assert !c.display_in_menu? | |
| 388 | + should 'display in menu only if have display_menu setted to true' do | |
| 389 | + c = Category.create!(:name => 'test category top', :environment => Environment.default, :display_in_menu => true) | |
| 390 | + c1 = Category.create!(:name => 'test category 1', :environment => Environment.default, :display_in_menu => true, :parent => c) | |
| 391 | + c11 = Category.create!(:name => 'test category 11', :environment => Environment.default, :display_in_menu => true, :parent => c1) | |
| 392 | + c2 = Category.create!(:name => 'test category 2', :environment => Environment.default, :display_in_menu => true, :parent => c) | |
| 393 | + c3 = Category.create!(:name => 'test category 3', :environment => Environment.default, :parent => c) | |
| 394 | + | |
| 395 | + assert_equivalent [c1, c11, c2], c.children_for_menu | |
| 398 | 396 | end |
| 399 | 397 | |
| 400 | 398 | end | ... | ... |