Commit 53e85962c80011f8aa9b311079e9037c2665ffbb

Authored by Victor Costa
1 parent 2620604b

community_track: added background color to track card

app/helpers/categories_helper.rb
... ... @@ -11,15 +11,6 @@ module CategoriesHelper
11 11 labelled_form_field(_('Type of category'), select_tag('type', options_for_select(TYPES, value)))
12 12 end
13 13  
14   - def display_color_for_category(category)
15   - color = category.display_color
16   - if color.nil?
17   - ""
18   - else
19   - "[" + gettext(CategoriesHelper::COLORS.find {|item| item[1] == color}.first) + "]"
20   - end
21   - end
22   -
23 14 def category_color_style(category)
24 15 return '' if category.display_color.blank?
25 16 'background-color: #'+category.display_color+';'
... ... @@ -40,14 +31,4 @@ module CategoriesHelper
40 31 {:id => category_id ? "select-category-#{category_id}-link" : nil, :remote => true, :class => 'select-subcategory-link'}.merge(html_options)
41 32 end
42 33  
43   - protected
44   -
45   - def search_category_tree_for_color(category)
46   - if category.display_color.blank?
47   - category.parent.nil? ? nil : search_category_tree_for_color(category.parent)
48   - else
49   - category.display_color
50   - end
51   - end
52   -
53 34 end
... ...
app/models/category.rb
... ... @@ -105,4 +105,12 @@ class Category < ActiveRecord::Base
105 105 self.children.find(:all, :conditions => {:display_in_menu => true}).empty?
106 106 end
107 107  
  108 + def with_color
  109 + if display_color.blank?
  110 + parent.nil? ? nil : parent.with_color
  111 + else
  112 + self
  113 + end
  114 + end
  115 +
108 116 end
... ...
plugins/community_track/lib/community_track_plugin/track_helper.rb
1 1 module CommunityTrackPlugin::TrackHelper
2 2  
  3 + include CategoriesHelper
  4 +
3 5 def category_class(track)
4 6 'category_' + (track.categories.empty? ? 'not_defined' : track.categories.first.name.to_slug)
5 7 end
... ... @@ -9,4 +11,8 @@ module CommunityTrackPlugin::TrackHelper
9 11 excerpt(lead_stripped, lead_stripped.first(3), track.image ? 180 : 300)
10 12 end
11 13  
  14 + def track_color_style(track)
  15 + category_color_style(track.categories.first.with_color) if !track.categories.empty?
  16 + end
  17 +
12 18 end
... ...
plugins/community_track/test/unit/community_track_plugin/track_helper_test.rb
... ... @@ -52,4 +52,10 @@ class TrackHelperTest < ActiveSupport::TestCase
52 52 assert_equal 186, track_card_lead(@track).length
53 53 end
54 54  
  55 + should 'return category color if its defined' do
  56 + category1 = fast_create(Category, :name => 'education', :display_color => 'fbfbfb')
  57 + @track.categories << category1
  58 + assert_equal 'background-color: #fbfbfb;', track_color_style(@track)
  59 + end
  60 +
55 61 end
... ...
plugins/community_track/views/blocks/_track_card.html.erb
... ... @@ -2,7 +2,7 @@
2 2 <div class="item_card <%= category_class(track_card) %>">
3 3 <a href="<%= url_for track_card.url %>">
4 4 <div class="track_content">
5   - <div class="title">
  5 + <div class="title" style="<%= track_color_style(track_card) %>">
6 6 <%= track_card.category_name %>
7 7 </div>
8 8 <div class="image">
... ...
test/unit/category_test.rb
... ... @@ -505,4 +505,28 @@ class CategoryTest &lt; ActiveSupport::TestCase
505 505 assert_includes Category.on_level(parent.id), category
506 506 end
507 507  
  508 + should 'return self if the category has display_color defined' do
  509 + c1 = fast_create(Category)
  510 + c2 = fast_create(Category, :parent_id => c1)
  511 + c3 = fast_create(Category, :parent_id => c2, :display_color => 'FFFFFF')
  512 + c4 = fast_create(Category, :parent_id => c3, :display_color => '000000')
  513 + assert_equal c4, c4.with_color
  514 + end
  515 +
  516 + should 'return first category on hierarchy with display_color defined' do
  517 + c1 = fast_create(Category, :display_color => '111111')
  518 + c2 = fast_create(Category, :parent_id => c1)
  519 + c3 = fast_create(Category, :parent_id => c2)
  520 + c4 = fast_create(Category, :parent_id => c3)
  521 + assert_equal c1, c4.with_color
  522 + end
  523 +
  524 + should 'return nil if no category on hierarchy has display_color defined' do
  525 + c1 = fast_create(Category)
  526 + c2 = fast_create(Category, :parent_id => c1)
  527 + c3 = fast_create(Category, :parent_id => c2)
  528 + c4 = fast_create(Category, :parent_id => c3)
  529 + assert_equal nil, c4.with_color
  530 + end
  531 +
508 532 end
... ...