Commit cb4e3d39af25f2638e850f1fb913bb16cb222632

Authored by Michel Felipe
Committed by Victor Costa
1 parent 8b44517e

New hotspot to add custom buttons on content manager page

app/views/cms/_view_items.html.erb
... ... @@ -13,6 +13,7 @@
13 13 <%= time_ago_in_words article.updated_at %>
14 14 </td>
15 15 <td class="article-controls">
  16 + <%= @plugins.dispatch(:extra_content_actions, article).collect { |content| instance_exec(&content) }.join("") %>
16 17 <%= expirable_button article, :edit, _('Edit'), {:action => 'edit', :id => article.id} if !remove_content_button(:edit, article) %>
17 18 <%= button_without_text :eyes, _('Public view'), article.view_url %>
18 19 <%= display_spread_button(article) unless remove_content_button(:spread, article) %>
... ...
lib/noosfero/plugin.rb
... ... @@ -213,6 +213,13 @@ class Noosfero::Plugin
213 213 end.select {|const| const.is_a?(Class) && const < Noosfero::Plugin::Macro}
214 214 end
215 215  
  216 + # New buttons actions with icons in each article on content manager page
  217 + # returns = proc block that creates html code to custom buttons
  218 + #
  219 + def extra_content_actions(article)
  220 + nil
  221 + end
  222 +
216 223 # Here the developer may specify the events to which the plugins can
217 224 # register and must return true or false. The default value must be false.
218 225 # Must also explicitly define its returning variables.
... ...
test/unit/plugin_test.rb
... ... @@ -567,4 +567,16 @@ class PluginTest &lt; ActiveSupport::TestCase
567 567 assert_equal [], p.article_extra_toolbar_buttons(nil)
568 568 end
569 569  
  570 + should 'get extra buttons actions on content manager grid' do
  571 + class Plugin1 < Noosfero::Plugin
  572 + def extra_content_actions
  573 + proc do
  574 + '<a href="#" class="icon">Btn</a>'
  575 + end
  576 + end
  577 + end
  578 + p = Plugin1.new
  579 + assert_tag_in_string p.extra_content_actions.call(), :tag => 'a', :content => 'Btn'
  580 + end
  581 +
570 582 end
... ...