Commit 79274989dfaae9697ff2253243c895284799e0aa

Authored by MoisesMachado
1 parent e445ecc3

ActionItem35: finished action item


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1858 3f533792-8f58-4932-b0fe-aaf55b0a4547
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
... ... @@ -322,7 +322,7 @@ module ApplicationHelper
322 322  
323 323 bt_submit = submit_tag(label, html_options.merge(:class => the_class))
324 324  
325   - bt_submit
  325 + bt_submit + bt_cancel
326 326 end
327 327  
328 328 def button_to_function(type, label, js_code, html_options = {})
... ...
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 &lt; 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 &lt; 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 &lt; 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 &quot;&quot;
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 &quot;Permissões&quot;
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 &lt; 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 &lt; 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
... ... @@ -839,5 +839,4 @@ class SearchControllerTest &lt; Test::Unit::TestCase
839 839 assert_not_includes assigns(:regions), r2
840 840 assert_no_tag :tag => 'ul', :descendant => { :tag => 'li', :content => r2.name }
841 841 end
842   -
843 842 end
... ...
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 &lt; 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 &lt; 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 &lt; 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 &lt; 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
... ...