Commit 08480dd52ab842eb70f16eea8e20d4477e131729
1 parent
0b0ad50d
Exists in
master
and in
22 other branches
New hotspot to add extra content at article header
Showing
3 changed files
with
34 additions
and
0 deletions
Show diff stats
app/views/content_viewer/_article_toolbar.rhtml
| ... | ... | @@ -53,6 +53,7 @@ |
| 53 | 53 | </div> |
| 54 | 54 | <div id="article-header"> |
| 55 | 55 | <%= link_to(image_tag('icons-mime/rss-feed.png'), @page.feed.url, :class => 'blog-feed-link') if @page.has_posts? && @page.feed %> |
| 56 | + <%= @plugins.dispatch(:article_header_extra_contents, @page).collect { |content| instance_eval(&content) }.join("") %> | |
| 56 | 57 | <%= article_title(@page, :no_link => true) %> |
| 57 | 58 | <%= article_translations(@page) %> |
| 58 | 59 | </div> | ... | ... |
lib/noosfero/plugin.rb
| ... | ... | @@ -449,6 +449,12 @@ class Noosfero::Plugin |
| 449 | 449 | nil |
| 450 | 450 | end |
| 451 | 451 | |
| 452 | + # -> Adds adicional content to article header | |
| 453 | + # returns = lambda block that creates html code | |
| 454 | + def article_header_extra_contents(article) | |
| 455 | + nil | |
| 456 | + end | |
| 457 | + | |
| 452 | 458 | # -> Finds objects by their contents |
| 453 | 459 | # returns = {:results => [a, b, c, ...], ...} |
| 454 | 460 | # P.S.: The plugin might add other informations on the return hash for its | ... | ... |
test/functional/content_viewer_controller_test.rb
| ... | ... | @@ -1270,5 +1270,32 @@ class ContentViewerControllerTest < ActionController::TestCase |
| 1270 | 1270 | get :view_page, :profile => profile.identifier, :page => [blog.path] |
| 1271 | 1271 | assert_tag :tag => 'strong', :content => /bold/ |
| 1272 | 1272 | end |
| 1273 | + | |
| 1274 | + should 'add extra content on article header from plugins' do | |
| 1275 | + class Plugin1 < Noosfero::Plugin | |
| 1276 | + def article_header_extra_contents(args) | |
| 1277 | + lambda { | |
| 1278 | + content_tag('div', '', :class => 'plugin1') | |
| 1279 | + } | |
| 1280 | + end | |
| 1281 | + end | |
| 1282 | + class Plugin2 < Noosfero::Plugin | |
| 1283 | + def article_header_extra_contents(args) | |
| 1284 | + lambda { | |
| 1285 | + content_tag('div', '', :class => 'plugin2') | |
| 1286 | + } | |
| 1287 | + end | |
| 1288 | + end | |
| 1289 | + | |
| 1290 | + Environment.default.enable_plugin(Plugin1.name) | |
| 1291 | + Environment.default.enable_plugin(Plugin2.name) | |
| 1292 | + | |
| 1293 | + page = profile.articles.create!(:name => 'myarticle', :body => 'the body of the text') | |
| 1294 | + | |
| 1295 | + xhr :get, :view_page, :profile => profile.identifier, :page => [ 'myarticle' ], :toolbar => true | |
| 1296 | + | |
| 1297 | + assert_tag :tag => 'div', :attributes => {:class => 'plugin1'} | |
| 1298 | + assert_tag :tag => 'div', :attributes => {:class => 'plugin2'} | |
| 1299 | + end | |
| 1273 | 1300 | |
| 1274 | 1301 | end | ... | ... |