Commit 1e02838ed50861b9ed63821ebc6f400361f4166f

Authored by Larissa Reis
1 parent fe689782

social-share: hotspot to show social buttons in content view

  Plugins can provide social share buttons in content view page.

(ActionItem3238)
app/views/content_viewer/view_page.html.erb
... ... @@ -42,6 +42,7 @@
42 42  
43 43 <%= render :partial => 'shared/disabled_enterprise' %>
44 44  
  45 +<%= @plugins.dispatch(:social_buttons_contents).collect { |content| instance_exec(&content) }.join("") %>
45 46 <% if NOOSFERO_CONF['addthis_enabled'] %>
46 47 <%= render :partial => 'addthis' %>
47 48 <% end %>
... ...
lib/noosfero/plugin.rb
... ... @@ -394,6 +394,12 @@ class Noosfero::Plugin
394 394 nil
395 395 end
396 396  
  397 + # -> Adds social networks share buttons to content
  398 + # returns = proc that creates html code
  399 + def social_buttons_contents
  400 + nil
  401 + end
  402 +
397 403 # -> Adds fields to the signup form
398 404 # returns = proc that creates html code
399 405 def signup_extra_contents
... ...
test/functional/content_viewer_controller_test.rb
... ... @@ -1391,4 +1391,29 @@ class ContentViewerControllerTest &lt; ActionController::TestCase
1391 1391 assert_tag :tag => 'meta', :attributes => { :property => 'og:image', :content => /\/images\/x.png/ }
1392 1392 end
1393 1393  
  1394 + should 'add social content on content view page from plugins' do
  1395 + class Plugin1 < Noosfero::Plugin
  1396 + def social_buttons_contents
  1397 + proc {"<strong>Plugin1 text</strong>"}
  1398 + end
  1399 + end
  1400 + class Plugin2 < Noosfero::Plugin
  1401 + def social_buttons_contents
  1402 + proc {"<div class='social-buttons'></div>"}
  1403 + end
  1404 + end
  1405 + Noosfero::Plugin.stubs(:all).returns([Plugin1.name, Plugin2.name])
  1406 +
  1407 + Environment.default.enable_plugin(Plugin1.name)
  1408 + Environment.default.enable_plugin(Plugin2.name)
  1409 +
  1410 + page = profile.articles.build(:name => 'test')
  1411 + page.save!
  1412 +
  1413 + get :view_page, :profile => profile.identifier, :page => ['test']
  1414 +
  1415 + assert_tag :tag => 'strong', :content => 'Plugin1 text'
  1416 + assert_tag :tag => 'div', :attributes => {:class => 'social-buttons'}
  1417 + end
  1418 +
1394 1419 end
... ...