Commit c90b8e63ac3b9700b9c23242f391244ed4181181

Authored by Joenio Costa
1 parent 7af9fa59

Highlight the products in listing

(ActionItem2439)
app/helpers/display_helper.rb
@@ -8,6 +8,14 @@ module DisplayHelper @@ -8,6 +8,14 @@ module DisplayHelper
8 opts 8 opts
9 end 9 end
10 10
  11 + def themed_path(file)
  12 + if File.exists?(File.join(Rails.root, 'public', theme_path, file))
  13 + File.join(theme_path, file)
  14 + else
  15 + file
  16 + end
  17 + end
  18 +
11 def image_link_to_product(product, opts={}) 19 def image_link_to_product(product, opts={})
12 return _('No product') unless product 20 return _('No product') unless product
13 target = product_path(product) 21 target = product_path(product)
app/views/catalog/index.rhtml
@@ -8,9 +8,12 @@ @@ -8,9 +8,12 @@
8 <% extra_content = @plugins.dispatch(:catalog_item_extras, product).collect { |content| instance_eval(&content) } %> 8 <% extra_content = @plugins.dispatch(:catalog_item_extras, product).collect { |content| instance_eval(&content) } %>
9 <% extra_content_list = @plugins.dispatch(:catalog_list_item_extras, product).collect { |content| instance_eval(&content) } %> 9 <% extra_content_list = @plugins.dispatch(:catalog_list_item_extras, product).collect { |content| instance_eval(&content) } %>
10 10
11 - <li class="product <%= "not-available" unless product.available %>"> 11 + <li class="product<%= " not-available" unless product.available %><%= ' highlighted-product' if product.highlighted? %>">
12 <ul> 12 <ul>
13 <li class="product-image-link"> 13 <li class="product-image-link">
  14 + <% if product.highlighted? %>
  15 + <%= link_to image_tag(themed_path('/images/star.png'), :class => 'star', :alt => _('Highlighted product')), product_path(product) %>
  16 + <% end %>
14 <% if product.image %> 17 <% if product.image %>
15 <div class="zoomable-image"> 18 <div class="zoomable-image">
16 <%= link_to_product product, :class => 'product-big', :style => "background-image: url(#{product.default_image(:big)})" %> 19 <%= link_to_product product, :class => 'product-big', :style => "background-image: url(#{product.default_image(:big)})" %>
app/views/search/_product.rhtml
1 <% extra_content = @plugins.dispatch(:asset_product_extras, product, product.enterprise).collect { |content| instance_eval(&content) } %> 1 <% extra_content = @plugins.dispatch(:asset_product_extras, product, product.enterprise).collect { |content| instance_eval(&content) } %>
2 <% extra_properties = @plugins.dispatch(:asset_product_properties, product)%> 2 <% extra_properties = @plugins.dispatch(:asset_product_properties, product)%>
3 3
4 -<li class="search-product-item"> 4 +<li class="search-product-item <%= 'highlighted-product' if product.highlighted? %>">
5 5
6 <div class="search-product-item-first-column"> 6 <div class="search-product-item-first-column">
7 <%= render :partial => 'search/image', :object => product %> 7 <%= render :partial => 'search/image', :object => product %>
public/designs/themes/noosfero/images/rails.png 0 → 100644

1.75 KB

public/images/star.png 0 → 100644

3.58 KB

public/stylesheets/application.css
@@ -6146,3 +6146,10 @@ li.profile-activity-item.upload_image .activity-gallery-images-count-1 img { @@ -6146,3 +6146,10 @@ li.profile-activity-item.upload_image .activity-gallery-images-count-1 img {
6146 width: 100px; 6146 width: 100px;
6147 text-align: center; 6147 text-align: center;
6148 } 6148 }
  6149 +
  6150 +#product-list .highlighted-product img.star {
  6151 + position: absolute;
  6152 + top: 2px;
  6153 + right: 2px;
  6154 + z-index: 10;
  6155 +}
test/functional/catalog_controller_test.rb
@@ -109,4 +109,22 @@ class CatalogControllerTest &lt; ActionController::TestCase @@ -109,4 +109,22 @@ class CatalogControllerTest &lt; ActionController::TestCase
109 assert_tag :tag => 'span', :content => 'This is Plugin2 speaking!', :attributes => {:id => 'plugin2'} 109 assert_tag :tag => 'span', :content => 'This is Plugin2 speaking!', :attributes => {:id => 'plugin2'}
110 end 110 end
111 111
  112 + should 'add highlighted-product CSS class around a highlighted product' do
  113 + prod = @enterprise.products.create!(:name => 'Highlighted Product', :product_category => @product_category, :highlighted => true)
  114 + get :index, :profile => @enterprise.identifier
  115 + assert_tag :tag => 'li', :attributes => { :class => 'product highlighted-product' }, :content => /Highlighted Product/
  116 + end
  117 +
  118 + should 'do not add highlighted-product CSS class around an ordinary product' do
  119 + prod = @enterprise.products.create!(:name => 'Ordinary Product', :product_category => @product_category, :highlighted => false)
  120 + get :index, :profile => @enterprise.identifier
  121 + assert_no_tag :tag => 'li', :attributes => { :class => 'product highlighted-product' }, :content => /Ordinary Product/
  122 + end
  123 +
  124 + should 'display star image in highlighted product' do
  125 + prod = @enterprise.products.create!(:name => 'The Eyes Are The Light', :product_category => @product_category, :highlighted => true)
  126 + get :index, :profile => @enterprise.identifier
  127 + assert_tag :tag => 'img', :attributes => { :class => 'star', :src => /star.png/ }
  128 + end
  129 +
112 end 130 end
test/functional/search_controller_test.rb
@@ -926,6 +926,20 @@ class SearchControllerTest &lt; ActionController::TestCase @@ -926,6 +926,20 @@ class SearchControllerTest &lt; ActionController::TestCase
926 end 926 end
927 end 927 end
928 928
  929 + should 'add highlighted-product CSS class around a highlighted product' do
  930 + enterprise = fast_create(Enterprise)
  931 + product = Product.create!(:name => 'Enter Sandman', :enterprise_id => enterprise.id, :product_category_id => @product_category.id, :highlighted => true)
  932 + get :products
  933 + assert_tag :tag => 'li', :attributes => { :class => 'search-product-item highlighted-product' }, :content => /Enter Sandman/
  934 + end
  935 +
  936 + should 'do not add highlighted-product CSS class around an ordinary product' do
  937 + enterprise = fast_create(Enterprise)
  938 + product = Product.create!(:name => 'Holier Than Thou', :enterprise_id => enterprise.id, :product_category_id => @product_category.id, :highlighted => false)
  939 + get :products
  940 + assert_no_tag :tag => 'li', :attributes => { :class => 'search-product-item highlighted-product' }, :content => /Holier Than Thou/
  941 + end
  942 +
929 ################################################################## 943 ##################################################################
930 ################################################################## 944 ##################################################################
931 945
test/unit/display_helper_test.rb
@@ -44,4 +44,14 @@ class DisplayHelperTest &lt; ActiveSupport::TestCase @@ -44,4 +44,14 @@ class DisplayHelperTest &lt; ActiveSupport::TestCase
44 assert_equal 'go to <a href="http://www.noosfero.org" onclick="return confirm(\'Are you sure you want to visit this web site?\')" rel="nofolow" target="_blank">www.&#x200B;noos&#x200B;fero&#x200B;.org</a> yeah!', html 44 assert_equal 'go to <a href="http://www.noosfero.org" onclick="return confirm(\'Are you sure you want to visit this web site?\')" rel="nofolow" target="_blank">www.&#x200B;noos&#x200B;fero&#x200B;.org</a> yeah!', html
45 end 45 end
46 46
  47 + should 'return path to file under theme dir if theme has that file' do
  48 + stubs(:theme_path).returns('/designs/themes/noosfero')
  49 + assert_equal '/designs/themes/noosfero/images/rails.png', themed_path('/images/rails.png')
  50 + end
  51 +
  52 + should 'return path to file under public dir if theme hasnt that file' do
  53 + stubs(:theme_path).returns('/designs/themes/noosfero')
  54 + assert_equal '/images/invalid-file.png', themed_path('/images/invalid-file.png')
  55 + end
  56 +
47 end 57 end