Commit b6a3b701b57abd10ca822ca4c519d58c9bbbd46b
Committed by
Daniela Feitosa
1 parent
45b0f5da
Exists in
master
and in
29 other branches
Adding a new button to assets
Showing
4 changed files
with
34 additions
and
2 deletions
Show diff stats
app/views/search/_product.rhtml
... | ... | @@ -5,9 +5,10 @@ product_item_pos = 0 if ! product_item_pos |
5 | 5 | product_item_pos += 1 |
6 | 6 | %> |
7 | 7 | |
8 | +<% extra_content = @plugins.map(:asset_product_extras, product, product.enterprise).collect { |content| instance_eval(&content) } %> | |
9 | + | |
8 | 10 | <li class="product-item <%= ( pos % 2 == 0 ) ? 'odd' : 'even' %>"> |
9 | - <%= link_to_product product, :class => 'product-pic', :style => 'background-image:url(%s)' % | |
10 | - ( product.image ? product.image.public_filename(:minor) : '/images/icons-app/product-default-pic-minor.png' ) %> | |
11 | + <%= link_to_product product, :class => 'product-pic', :style => 'background-image:url(%s)' % product.default_image(:minor) %> | |
11 | 12 | <strong> |
12 | 13 | <%= link_to_product product %> |
13 | 14 | </strong> |
... | ... | @@ -18,4 +19,7 @@ product_item_pos += 1 |
18 | 19 | <% end %> |
19 | 20 | <li> <%=_('Category:') + ' ' + link_to_product_category(product.product_category) %> </li> |
20 | 21 | </ul> |
22 | + | |
23 | + <%= extra_content.join('\n') %> | |
24 | + | |
21 | 25 | </li> | ... | ... |
lib/noosfero/plugin.rb
... | ... | @@ -103,6 +103,12 @@ class Noosfero::Plugin |
103 | 103 | nil |
104 | 104 | end |
105 | 105 | |
106 | + # -> Adds content to products on asset list | |
107 | + # returns = lambda block that creates a html code | |
108 | + def asset_product_extras(product, enterprise) | |
109 | + nil | |
110 | + end | |
111 | + | |
106 | 112 | # -> Adds content to the beginning of the page |
107 | 113 | # returns = lambda block that creates html code or raw rhtml/html.erb |
108 | 114 | def body_beginning | ... | ... |
public/stylesheets/application.css
test/functional/search_controller_test.rb
... | ... | @@ -289,6 +289,27 @@ class SearchControllerTest < Test::Unit::TestCase |
289 | 289 | assert_equal [prod1], assigns(:results)[:products] |
290 | 290 | end |
291 | 291 | |
292 | + should 'include extra content supplied by plugins on product asset' do | |
293 | + enterprise = fast_create(Enterprise) | |
294 | + product = fast_create(Product, :enterprise_id => enterprise.id) | |
295 | + plugin1_local_variable = "Plugin1" | |
296 | + plugin1_content = lambda {"<span id='plugin1'>This is #{plugin1_local_variable} speaking!</span>"} | |
297 | + plugin2_local_variable = "Plugin2" | |
298 | + plugin2_content = lambda {"<span id='plugin2'>This is #{plugin2_local_variable} speaking!</span>"} | |
299 | + contents = [plugin1_content, plugin2_content] | |
300 | + | |
301 | + plugins = mock() | |
302 | + plugins.stubs(:enabled_plugins).returns([]) | |
303 | + plugins.stubs(:map).with(:body_beginning).returns([]) | |
304 | + plugins.stubs(:map).with(:asset_product_extras, product, enterprise).returns(contents) | |
305 | + Noosfero::Plugin::Manager.stubs(:new).returns(plugins) | |
306 | + | |
307 | + get :assets, :asset => 'products' | |
308 | + | |
309 | + assert_tag :tag => 'span', :content => 'This is ' + plugin1_local_variable + ' speaking!', :attributes => {:id => 'plugin1'} | |
310 | + assert_tag :tag => 'span', :content => 'This is ' + plugin2_local_variable + ' speaking!', :attributes => {:id => 'plugin2'} | |
311 | + end | |
312 | + | |
292 | 313 | should 'paginate enterprise listing' do |
293 | 314 | @controller.expects(:limit).returns(1) |
294 | 315 | ent1 = create_profile_with_optional_category(Enterprise, 'teste 1') | ... | ... |