Commit 2baf97af04942b366203ae72e7ec2f456f66618b
1 parent
7c877fc3
Exists in
master
and in
23 other branches
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
Showing
4 changed files
with
56 additions
and
8 deletions
Show diff stats
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 < Test::Unit::TestCase | @@ -271,10 +271,42 @@ class ProfileEditorControllerTest < 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 < Test::Unit::TestCase | @@ -5,6 +5,7 @@ class ActsAsHavingSettingsTest < 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 < Test::Unit::TestCase | @@ -57,6 +58,10 @@ class ActsAsHavingSettingsTest < 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' |