Commit 424b795e83a802992aadeedddc06403979d30eea

Authored by Rafael Martins
1 parent 6dcb2e05

Zoomable product images on catalog

* New method on display helper to create a product image link
* Tweaks on catalog/index to show the zoomable images
* Small fix on browse_catalogs.feature
* Fixes on application.css to correctly show the images
app/helpers/display_helper.rb
... ... @@ -8,6 +8,14 @@ module DisplayHelper
8 8 opts
9 9 end
10 10  
  11 + def image_link_to_product(product, opts={})
  12 + return _('No product') unless product
  13 + target = product_path(product)
  14 + link_to image_tag(product.default_image(:big), :alt => product.name),
  15 + target,
  16 + opts
  17 + end
  18 +
11 19 def price_span(price, options = {})
12 20 content_tag 'span',
13 21 number_to_currency(price, :unit => environment.currency_unit, :delimiter => environment.currency_delimiter, :separator => environment.currency_separator),
... ...
app/views/catalog/index.rhtml
... ... @@ -11,7 +11,12 @@
11 11 <li class="product <%= "not-available" unless product.available %>">
12 12 <ul>
13 13 <% if product.image %>
14   - <li id="product-image-link"><%= link_to_product product, :class => 'product-big', :style => 'background-image:url(%s)' % product.default_image(:big) %></li>
  14 + <li id="product-image-link">
  15 + <div class="zoomable-image">
  16 + <%= image_link_to_product product, :class => 'product-big' %>
  17 + <a href='<%= product.default_image(:big).gsub('_big','') %>' class="zoomify-image"><span><%= _('Zoom in') %></span></a>
  18 + </div>
  19 + </li>
15 20 <% else %>
16 21 <li class="product-big no-image"><%= _('No image') %></li>
17 22 <% end %>
... ... @@ -88,3 +93,13 @@
88 93 </ul>
89 94  
90 95 <%= pagination_links @products, :params => {:controller => :catalog, :action => :index, :profile => profile.identifier} %>
  96 +
  97 +<link href="/stylesheets/fancybox.css?1323903734" media="screen" rel="stylesheet" type="text/css" /><script src="/javascripts/jquery.fancybox-1.3.4.pack.js?1323903734" type="text/javascript"></script><script type="text/javascript">
  98 +//<![CDATA[
  99 +jQuery(function($) {
  100 + $(window).load( function() {
  101 + $('.zoomify-image').fancybox();
  102 + });
  103 + });
  104 +//]]>
  105 +</script>
... ...
features/browse_catalogs.feature
... ... @@ -95,6 +95,14 @@ Feature: browse catalogs
95 95 And I should not see "qualifiers"
96 96 And I should not see "price composition"
97 97  
  98 + Scenario: display "zoom in" button
  99 + Given the following products
  100 + | owner | category | name | price | img |
  101 + | artebonito | categ1 | Agrotox | 12.34 | agrotox |
  102 + And I am on /catalog/artebonito
  103 + And I should not see "No image"
  104 + And I should see "Zoom in" within ".zoomify-image"
  105 +
98 106 Scenario: image links to product page
99 107 Given the following products
100 108 | owner | category | name | price | img |
... ... @@ -122,6 +130,7 @@ Feature: browse catalogs
122 130 | owner | category | name | price | description |
123 131 | artebonito | categ1 | Produto2 | 12.34 | A small description for a product that doesn't exist. |
124 132 And I am on /catalog/artebonito
  133 + And I reload and wait for the page
125 134 Then I should see "Produto2" within "li.product-link"
126 135 And I should see "12.34" within "span.product-price"
127 136 And I should see "description" within "#product-description-button"
... ...
public/stylesheets/application.css
... ... @@ -1075,10 +1075,12 @@ code input {
1075 1075 text-align: left;
1076 1076 background: transparent url(/images/black-alpha-pixel.png);
1077 1077 border-bottom: 1px solid #333;
  1078 + text-decoration: none;
1078 1079 }
1079 1080  
1080 1081 .zoomable-image:hover .zoomify-image {
1081 1082 display: block;
  1083 + text-decoration: none;
1082 1084 }
1083 1085  
1084 1086 #article .zoomify-image {
... ... @@ -1093,6 +1095,7 @@ code input {
1093 1095 border-bottom: 1px solid #eee;
1094 1096 display: block;
1095 1097 background: transparent url(/images/zoom.png) left center no-repeat;
  1098 + color: #fff;
1096 1099 }
1097 1100  
1098 1101 #article pre {
... ... @@ -2980,7 +2983,7 @@ div#activation_enterprise div {
2980 2983 }
2981 2984 #product-list li.product {
2982 2985 width: 200px;
2983   - min-height: 260px;
  2986 + min-height: 280px;
2984 2987 float: left;
2985 2988 padding: 10px 30px 10px 0;
2986 2989 margin-bottom: 10px;
... ... @@ -3122,11 +3125,14 @@ div#activation_enterprise div {
3122 3125 #product-list .product-big {
3123 3126 display: block;
3124 3127 width: 200px;
3125   - height: 140px;
  3128 + height: 160px;
3126 3129 border: 1px solid #BFBFBF;
3127   - background-repeat: no-repeat;
3128   - background-position: 50% 50%;
  3130 +/* background-repeat: no-repeat;
  3131 + background-position: 50% 50%; */
3129 3132 position: relative; /* work arround msie bug */
  3133 + text-align: center;
  3134 + display: table-cell;
  3135 + vertical-align: middle;
3130 3136 }
3131 3137 #product-list .product-big.no-image {
3132 3138 line-height: 145px;
... ...