diff --git a/app/views/account/_signup_form.rhtml b/app/views/account/_signup_form.rhtml
index a572583..61af872 100644
--- a/app/views/account/_signup_form.rhtml
+++ b/app/views/account/_signup_form.rhtml
@@ -73,6 +73,8 @@
<%= render :partial => 'profile_editor/person_form', :locals => {:f => f} %>
<% end %>
+ <%= @plugins.map(:signup_extra_contents).collect { |content| instance_eval(&content) }.join("") %>
+
<% unless @terms_of_use.blank? %>
<%= labelled_check_box(_('I accept the %s') % link_to(_('terms of use'), {:controller => 'home', :action => 'terms'}, :target => '_blank'), 'user[terms_accepted]') %>
diff --git a/lib/noosfero/plugin.rb b/lib/noosfero/plugin.rb
index e2c06e5..9479278 100644
--- a/lib/noosfero/plugin.rb
+++ b/lib/noosfero/plugin.rb
@@ -238,4 +238,10 @@ class Noosfero::Plugin
def comment_saved(comment)
end
+ # -> Adds fields to the signup form
+ # returns = lambda block that creates a html code
+ def signup_extra_contents
+ nil
+ end
+
end
diff --git a/test/functional/account_controller_test.rb b/test/functional/account_controller_test.rb
index 3480ef0..d59c3b0 100644
--- a/test/functional/account_controller_test.rb
+++ b/test/functional/account_controller_test.rb
@@ -737,6 +737,27 @@ class AccountControllerTest < ActionController::TestCase
end
end
+ should 'add extra content on signup forms from plugins' do
+ class Plugin1 < Noosfero::Plugin
+ def signup_extra_contents
+ lambda {"Plugin1 text"}
+ end
+ end
+ class Plugin2 < Noosfero::Plugin
+ def signup_extra_contents
+ lambda {"Plugin2 text"}
+ end
+ end
+
+ Environment.default.enable_plugin(Plugin1.name)
+ Environment.default.enable_plugin(Plugin2.name)
+
+ get :signup
+
+ assert_tag :tag => 'strong', :content => 'Plugin1 text'
+ assert_tag :tag => 'strong', :content => 'Plugin2 text'
+ end
+
protected
def new_user(options = {}, extra_options ={})
data = {:profile_data => person_data}
--
libgit2 0.21.2