Commit 2baf97af04942b366203ae72e7ec2f456f66618b

Authored by AntonioTerceiro
1 parent 7c877fc3

ActionItem612: enhancing group joining moderation

    * added new wording
    * enhanced formatting
    * fixed a bug in acts_as_having_settings that was making boolean
      settings with false as default not return false!

git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@2444 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/views/profile_editor/_organization.rhtml
@@ -13,7 +13,18 @@ @@ -13,7 +13,18 @@
13 <%= f.text_area(:management_information, :rows => 5) %> 13 <%= f.text_area(:management_information, :rows => 5) %>
14 <%= f.text_area(:description, :rows => 5) if @profile.kind_of?(Community) %> 14 <%= f.text_area(:description, :rows => 5) if @profile.kind_of?(Community) %>
15 <h1><%= _('Moderation options') %></h1> 15 <h1><%= _('Moderation options') %></h1>
16 - <p>  
17 - <%= check_box 'profile_data', 'closed' %>  
18 - <%= _("New members must be approved by an administrator before joining this group?") %>  
19 - </p> 16 + <div style='margin-bottom: 1em'>
  17 + <%= _('New members must be approved:')%>
  18 + </div>
  19 + <div style='margin-bottom: 0.5em'>
  20 + <%= radio_button 'profile_data', 'closed', 'true', :style => 'float: left' %>
  21 + <div style='margin-left: 30px'>
  22 + <%= _('<strong>Before</strong> joining this group (a moderator has to accept the member in pending request before member can access the intranet and/or the website).') %>
  23 + </div>
  24 + </div>
  25 + <div>
  26 + <%= radio_button 'profile_data', 'closed', 'false', :style => 'float: left' %>
  27 + <div style='margin-left: 30px'>
  28 + <%= _('<strong>After</strong> joining this group (a moderator can always desactivate access for users later).') %>
  29 + </div>
  30 + </div>
lib/acts_as_having_settings.rb
@@ -21,7 +21,7 @@ module ActsAsHavingSettings @@ -21,7 +21,7 @@ module ActsAsHavingSettings
21 def settings_items(*names) 21 def settings_items(*names)
22 22
23 options = names.last.is_a?(Hash) ? names.pop : {} 23 options = names.last.is_a?(Hash) ? names.pop : {}
24 - default = options[:default] ? options[:default].inspect : "val" 24 + default = (!options[:default].nil?) ? options[:default].inspect : "val"
25 data_type = options[:type] || :string 25 data_type = options[:type] || :string
26 26
27 names.each do |setting| 27 names.each do |setting|
test/functional/profile_editor_controller_test.rb
@@ -271,10 +271,42 @@ class ProfileEditorControllerTest &lt; Test::Unit::TestCase @@ -271,10 +271,42 @@ class ProfileEditorControllerTest &lt; Test::Unit::TestCase
271 assert_not_nil assigns(:profile).image 271 assert_not_nil assigns(:profile).image
272 end 272 end
273 273
274 - should 'show field to set closed organization' do  
275 - org = Organization.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact') 274 + should 'display closed attribute for organizations when it is set' do
  275 + org = Organization.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact', :closed => true)
  276 + get :edit, :profile => 'testorg'
  277 +
  278 + assert_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'profile_data[closed]', :value => 'true', :checked => 'checked' }
  279 + assert_no_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'profile_data[closed]', :value => 'false', :checked => 'checked' }
  280 + end
  281 +
  282 + should 'display closed attribute for organizations when it is set to false' do
  283 + org = Organization.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact', :closed => false)
  284 + get :edit, :profile => 'testorg'
  285 + assert_no_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'profile_data[closed]', :value => 'true', :checked => 'checked' }
  286 + assert_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'profile_data[closed]', :value => 'false', :checked => 'checked' }
  287 + end
  288 +
  289 + should 'display closed attribute for organizations when it is set to nothing at all' do
  290 + org = Organization.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact', :closed => nil)
276 get :edit, :profile => 'testorg' 291 get :edit, :profile => 'testorg'
277 - assert_tag :tag => 'input', :attributes => { :type => 'checkbox', :name => 'profile_data[closed]' } 292 + assert_no_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'profile_data[closed]', :value => 'true', :checked => 'checked' }
  293 + assert_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'profile_data[closed]', :value => 'false', :checked => 'checked' }
  294 + end
  295 +
  296 + should 'set closed attribute correctly' do
  297 + org = Organization.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact', :closed => false)
  298 +
  299 + post :edit, :profile => 'testorg', :profile_data => { :closed => 'true' }
  300 + org.reload
  301 + assert org.closed
  302 + end
  303 +
  304 + should 'unset closed attribute correctly' do
  305 + org = Organization.create!(:name => 'test org', :identifier => 'testorg', :contact_person => 'my contact', :closed => true)
  306 +
  307 + post :edit, :profile => 'testorg', :profile_data => { :closed => 'false' }
  308 + org.reload
  309 + assert !org.closed
278 end 310 end
279 311
280 should 'display manage members options if has permission' do 312 should 'display manage members options if has permission' do
test/unit/acts_as_having_settings_test.rb
@@ -5,6 +5,7 @@ class ActsAsHavingSettingsTest &lt; Test::Unit::TestCase @@ -5,6 +5,7 @@ class ActsAsHavingSettingsTest &lt; Test::Unit::TestCase
5 # using Block class as a sample user of the module 5 # using Block class as a sample user of the module
6 class TestClass < Block 6 class TestClass < Block
7 settings_items :flag, :type => :boolean 7 settings_items :flag, :type => :boolean
  8 + settings_items :flag_disabled_by_default, :type => :boolean, :default => false
8 end 9 end
9 10
10 should 'store settings in a hash' do 11 should 'store settings in a hash' do
@@ -57,6 +58,10 @@ class ActsAsHavingSettingsTest &lt; Test::Unit::TestCase @@ -57,6 +58,10 @@ class ActsAsHavingSettingsTest &lt; Test::Unit::TestCase
57 assert_equal false, obj.flag 58 assert_equal false, obj.flag
58 end 59 end
59 60
  61 + should 'return false by default when the default is false' do
  62 + assert_equal false, TestClass.new.flag_disabled_by_default
  63 + end
  64 +
60 should 'be able to specify type of atrributes (boolean)' do 65 should 'be able to specify type of atrributes (boolean)' do
61 obj = TestClass.new 66 obj = TestClass.new
62 obj.flag = 'true' 67 obj.flag = 'true'