Commit 79274989dfaae9697ff2253243c895284799e0aa
1 parent
e445ecc3
Exists in
master
and in
29 other branches
ActionItem35: finished action item
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1858 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
16 changed files
with
67 additions
and
30 deletions
Show diff stats
app/controllers/my_profile/profile_members_controller.rb
... | ... | @@ -23,7 +23,7 @@ class ProfileMembersController < MyProfileController |
23 | 23 | end |
24 | 24 | |
25 | 25 | def change_role |
26 | - @roles = Role.find(:all).select{ |r| r.has_kind?(:profile) } | |
26 | + @roles = profile.roles | |
27 | 27 | @member = Person.find(params[:id]) |
28 | 28 | @associations = @member.find_roles(@profile) |
29 | 29 | end | ... | ... |
app/helpers/application_helper.rb
app/helpers/forms_helper.rb
1 | 1 | module FormsHelper |
2 | 2 | |
3 | 3 | def generate_form( name, obj, fields={} ) |
4 | - | |
5 | 4 | labelled_form_for name, obj do |f| |
6 | - | |
7 | 5 | f.text_field(:name) |
8 | - | |
9 | 6 | end |
10 | - | |
11 | 7 | end |
12 | 8 | |
13 | 9 | def labelled_radio_button( human_name, name, value, checked = false, options = {} ) |
14 | - options[:id] ||= 'radio-' + rand.to_s | |
10 | + options[:id] ||= 'radio-' + FormsHelper.next_id_number | |
15 | 11 | radio_button_tag( name, value, checked, options ) + |
16 | 12 | content_tag( 'label', human_name, :for => options[:id] ) |
17 | 13 | end |
18 | 14 | |
19 | 15 | def labelled_check_box( human_name, name, value = "1", checked = false, options = {} ) |
20 | - options[:id] ||= 'checkbox-' + rand.to_s | |
16 | + options[:id] ||= 'checkbox-' + FormsHelper.next_id_number | |
21 | 17 | check_box_tag( name, value, checked, options ) + |
22 | 18 | content_tag( 'label', human_name, :for => options[:id] ) |
23 | 19 | end |
24 | 20 | |
21 | +protected | |
22 | + def self.next_id_number | |
23 | + if defined? @@id_num | |
24 | + @@id_num.next! | |
25 | + else | |
26 | + @@id_num = '0' | |
27 | + end | |
28 | + end | |
25 | 29 | end | ... | ... |
app/models/environment.rb
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 | # domains. |
4 | 4 | class Environment < ActiveRecord::Base |
5 | 5 | |
6 | - PERMISSIONS[:environment] = { | |
6 | + PERMISSIONS['Environment'] = { | |
7 | 7 | 'view_environment_admin_panel' => N_('View environment admin panel'), |
8 | 8 | 'edit_environment_features' => N_('Edit environment features'), |
9 | 9 | 'edit_environment_design' => N_('Edit environment design'), | ... | ... |
app/models/person.rb
... | ... | @@ -66,7 +66,7 @@ class Person < Profile |
66 | 66 | def is_admin? |
67 | 67 | role_assignments.map{|ra|ra.role.permissions}.any? do |ps| |
68 | 68 | ps.any? do |p| |
69 | - ActiveRecord::Base::PERMISSIONS[:environment].keys.include?(p) | |
69 | + ActiveRecord::Base::PERMISSIONS['Environment'].keys.include?(p) | |
70 | 70 | end |
71 | 71 | end |
72 | 72 | end | ... | ... |
app/models/profile.rb
... | ... | @@ -13,9 +13,15 @@ class Profile < ActiveRecord::Base |
13 | 13 | def self.moderator |
14 | 14 | ::Role.find_by_key('profile_moderator') |
15 | 15 | end |
16 | + def self.owner | |
17 | + ::Role.find_by_key('profile_owner') | |
18 | + end | |
19 | + def self.editor | |
20 | + ::Role.find_by_key('profile_editor') | |
21 | + end | |
16 | 22 | end |
17 | 23 | |
18 | - PERMISSIONS[:profile] = { | |
24 | + PERMISSIONS['Profile'] = { | |
19 | 25 | 'edit_profile' => N_('Edit profile'), |
20 | 26 | 'destroy_profile' => N_('Destroy profile'), |
21 | 27 | 'manage_memberships' => N_('Manage memberships'), |
... | ... | @@ -26,7 +32,7 @@ class Profile < ActiveRecord::Base |
26 | 32 | 'validate_enterprise' => N_('Validate enterprise'), |
27 | 33 | 'peform_task' => N_('Peform task'), |
28 | 34 | } |
29 | - | |
35 | + | |
30 | 36 | acts_as_accessible |
31 | 37 | |
32 | 38 | acts_as_having_boxes | ... | ... |
app/views/profile_members/change_role.rhtml
1 | -<%= _('Changing role of %s') % @member.name %> | |
1 | +<h3> <%= _('Changing role of %s') % @member.name %> </h3> | |
2 | 2 | |
3 | 3 | <% labelled_form_for :member, @member, :url => {:action => 'update_roles'} do |f| %> |
4 | 4 | |
5 | 5 | <%= _('Roles:') %> <br> |
6 | 6 | <% @roles.each do |r| %> |
7 | - <%= check_box_tag "roles[]", r.id, @associations.map(&:role).include?(r) %> | |
8 | - <%= r.name.capitalize %><br/> | |
7 | + <%= labelled_check_box(r.name, 'roles[]', r.id, @associations.map(&:role).include?(r) ) %><br/> | |
9 | 8 | <% end %> |
10 | 9 | <%= hidden_field_tag 'person', @member.id %> |
11 | 10 | ... | ... |
app/views/profile_members/index.rhtml
... | ... | @@ -2,12 +2,20 @@ |
2 | 2 | |
3 | 3 | <%= link_to _('Affiliate yourself'), :action => 'add_role', :person => current_user.person, :role => @member_role if @member_role %> |
4 | 4 | |
5 | -<ul> | |
5 | +<table> | |
6 | + <tr> | |
7 | + <th><%= _('Member') %></th> | |
8 | + <th><%= _('Actions') %></th> | |
9 | + </tr> | |
6 | 10 | <% @members.each do |m| %> |
7 | - <li> <%= m.name %> | |
8 | - <%= link_to _('Edit member role'), :action => 'change_role', :id => m %> | |
9 | - <%= link_to _('Remove member'), :action => 'unassociate', :id => m %></li> | |
11 | + <tr> | |
12 | + <td><%= m.name %> </td> | |
13 | + <td> | |
14 | + <%= button :edit, _('Edit'), :action => 'change_role', :id => m %> | |
15 | + <%= button :delete, _('Remove'), :action => 'unassociate', :id => m %> | |
16 | + </td> | |
17 | + </tr> | |
10 | 18 | <% end %> |
11 | -</ul> | |
19 | +</table> | |
12 | 20 | |
13 | 21 | <%= link_to _('Back'), :controller => 'profile_editor' %> | ... | ... |
app/views/role/_form.rhtml
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | |
7 | 7 | <%= _('Permissions:') %> <br> |
8 | 8 | <% permissions.keys.each do |p| %> |
9 | - <%= labelled_form_field(permission_name(p), (check_box_tag "role[permissions][]", p, @role.has_permission?(p))) %> | |
9 | + <%= labelled_check_box(permission_name(p), (check_box_tag "role[permissions][]", p, @role.has_permission?(p))) %> <br/> | |
10 | 10 | <% end %> |
11 | 11 | |
12 | 12 | <% button_bar do %> | ... | ... |
app/views/role/new.rhtml
1 | 1 | <h2> <%= _('New Role') %> </h2> |
2 | 2 | |
3 | 3 | <% ActiveRecord::Base::PERMISSIONS.keys.each do |perm_class| %> |
4 | - <h3> <%= perm_class %> </h3> | |
4 | + <h3> <%= gettext(perm_class.downcase).capitalize %> </h3> | |
5 | 5 | <%= render :partial => 'form', :locals => { :mode => :new, :permissions => ActiveRecord::Base::PERMISSIONS[perm_class] } %> |
6 | 6 | <% end %> | ... | ... |
po/pt_BR/noosfero.po
... | ... | @@ -10,7 +10,7 @@ msgid "" |
10 | 10 | msgstr "" |
11 | 11 | "Project-Id-Version: noosfero 0.9.0\n" |
12 | 12 | "POT-Creation-Date: 2008-04-29 08:47-0300\n" |
13 | -"PO-Revision-Date: 2008-05-24 13:59-0300\n" | |
13 | +"PO-Revision-Date: 2008-05-29 13:04-0300\n" | |
14 | 14 | "Last-Translator: Joenio Costa <joenio@colivre.coop.br>\n" |
15 | 15 | "Language-Team: \n" |
16 | 16 | "MIME-Version: 1.0\n" |
... | ... | @@ -2816,7 +2816,7 @@ msgstr "Permissões" |
2816 | 2816 | |
2817 | 2817 | #: app/views/role/new.rhtml:1 |
2818 | 2818 | msgid "New Role" |
2819 | -msgstr "Nova papel" | |
2819 | +msgstr "Novo Papel" | |
2820 | 2820 | |
2821 | 2821 | #: app/views/role/_form.rhtml:7 |
2822 | 2822 | msgid "Permissions:" | ... | ... |
test/functional/profile_members_controller_test.rb
... | ... | @@ -55,6 +55,8 @@ class ProfileMembersControllerTest < Test::Unit::TestCase |
55 | 55 | assert_response :success |
56 | 56 | assert_equal member, assigns('member') |
57 | 57 | assert_template 'change_role' |
58 | + assert_tag :tag => 'input', :attributes => { :type => 'checkbox', :name => 'roles[]'} | |
59 | + assert_tag :tag => 'label', :content => role.name | |
58 | 60 | end |
59 | 61 | |
60 | 62 | should 'update roles' do |
... | ... | @@ -73,7 +75,5 @@ class ProfileMembersControllerTest < Test::Unit::TestCase |
73 | 75 | member.reload |
74 | 76 | assert member.find_roles(ent).map(&:role).include?(orole) |
75 | 77 | assert !member.find_roles(ent).map(&:role).include?(role) |
76 | - | |
77 | - | |
78 | 78 | end |
79 | 79 | end | ... | ... |
test/functional/search_controller_test.rb
vendor/plugins/access_control/lib/acts_as_accessible.rb
... | ... | @@ -27,5 +27,11 @@ class ActiveRecord::Base |
27 | 27 | def members |
28 | 28 | role_assignments.map(&:accessor).uniq |
29 | 29 | end |
30 | + | |
31 | + def roles | |
32 | + Role.find(:all).select do |r| | |
33 | + r.permissions.any?{ |p| PERMISSIONS[self.class.base_class.name].include?(p) } | |
34 | + end | |
35 | + end | |
30 | 36 | end |
31 | 37 | end | ... | ... |
vendor/plugins/access_control/lib/role.rb
... | ... | @@ -10,6 +10,14 @@ class Role < ActiveRecord::Base |
10 | 10 | super(*args) |
11 | 11 | end |
12 | 12 | |
13 | + def key=(value) | |
14 | + if self[:key] && system | |
15 | + raise ArgumentError, 'Can\'t change key of system role' | |
16 | + else | |
17 | + self[:key] = value | |
18 | + end | |
19 | + end | |
20 | + | |
13 | 21 | def permissions |
14 | 22 | self[:permissions] ||= [] |
15 | 23 | end |
... | ... | @@ -19,7 +27,7 @@ class Role < ActiveRecord::Base |
19 | 27 | end |
20 | 28 | |
21 | 29 | def has_kind?(k) |
22 | - permissions.any?{|p| perms[k].keys.include?(p)} | |
30 | + perms[k] && permissions.any?{|p| perms[k].keys.include?(p)} | |
23 | 31 | end |
24 | 32 | |
25 | 33 | def kind | ... | ... |
vendor/plugins/access_control/test/role_test.rb
... | ... | @@ -59,13 +59,11 @@ class RoleTest < Test::Unit::TestCase |
59 | 59 | end |
60 | 60 | |
61 | 61 | def test_should_not_allow_to_remove_system_defined_roles |
62 | - | |
63 | 62 | role = Role.create!(:name => 'not to be removed', :permissions => [], :system => true) |
64 | 63 | |
65 | 64 | count = Role.count |
66 | 65 | role.destroy |
67 | 66 | assert_equal count, Role.count |
68 | - | |
69 | 67 | end |
70 | 68 | |
71 | 69 | def test_should_have_an_empty_array_as_permissions_by_default |
... | ... | @@ -91,4 +89,13 @@ class RoleTest < Test::Unit::TestCase |
91 | 89 | assert_equal 'another_key', role.key |
92 | 90 | end |
93 | 91 | |
92 | + def test_should_have_kind | |
93 | + role = Role.create!(:name => 'a test role', :permissions => ['perm1']) | |
94 | + role.stubs(:perms).returns({'kind1' => {'perm1' => 'perm1 name', 'perm2' => 'perm2 name'}, 'kind2' => {'perm3' => 'perm3 name'}}) | |
95 | + | |
96 | + assert role.has_kind?('kind1') | |
97 | + assert ! role.has_kind?('kind2') | |
98 | + assert ! role.has_kind?('kind3') | |
99 | + end | |
100 | + | |
94 | 101 | end | ... | ... |