diff --git a/app/controllers/my_profile/profile_members_controller.rb b/app/controllers/my_profile/profile_members_controller.rb
index b71e5ce..df30604 100644
--- a/app/controllers/my_profile/profile_members_controller.rb
+++ b/app/controllers/my_profile/profile_members_controller.rb
@@ -23,7 +23,7 @@ class ProfileMembersController < MyProfileController
end
def change_role
- @roles = Role.find(:all).select{ |r| r.has_kind?(:profile) }
+ @roles = profile.roles
@member = Person.find(params[:id])
@associations = @member.find_roles(@profile)
end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index bf955cb..a71237f 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -322,7 +322,7 @@ module ApplicationHelper
bt_submit = submit_tag(label, html_options.merge(:class => the_class))
- bt_submit
+ bt_submit + bt_cancel
end
def button_to_function(type, label, js_code, html_options = {})
diff --git a/app/helpers/forms_helper.rb b/app/helpers/forms_helper.rb
index a986af4..af686d8 100644
--- a/app/helpers/forms_helper.rb
+++ b/app/helpers/forms_helper.rb
@@ -1,25 +1,29 @@
module FormsHelper
def generate_form( name, obj, fields={} )
-
labelled_form_for name, obj do |f|
-
f.text_field(:name)
-
end
-
end
def labelled_radio_button( human_name, name, value, checked = false, options = {} )
- options[:id] ||= 'radio-' + rand.to_s
+ options[:id] ||= 'radio-' + FormsHelper.next_id_number
radio_button_tag( name, value, checked, options ) +
content_tag( 'label', human_name, :for => options[:id] )
end
def labelled_check_box( human_name, name, value = "1", checked = false, options = {} )
- options[:id] ||= 'checkbox-' + rand.to_s
+ options[:id] ||= 'checkbox-' + FormsHelper.next_id_number
check_box_tag( name, value, checked, options ) +
content_tag( 'label', human_name, :for => options[:id] )
end
+protected
+ def self.next_id_number
+ if defined? @@id_num
+ @@id_num.next!
+ else
+ @@id_num = '0'
+ end
+ end
end
diff --git a/app/models/environment.rb b/app/models/environment.rb
index 7bdc6f9..42e67d1 100644
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -3,7 +3,7 @@
# domains.
class Environment < ActiveRecord::Base
- PERMISSIONS[:environment] = {
+ PERMISSIONS['Environment'] = {
'view_environment_admin_panel' => N_('View environment admin panel'),
'edit_environment_features' => N_('Edit environment features'),
'edit_environment_design' => N_('Edit environment design'),
diff --git a/app/models/person.rb b/app/models/person.rb
index 8d7c966..2756bac 100644
--- a/app/models/person.rb
+++ b/app/models/person.rb
@@ -66,7 +66,7 @@ class Person < Profile
def is_admin?
role_assignments.map{|ra|ra.role.permissions}.any? do |ps|
ps.any? do |p|
- ActiveRecord::Base::PERMISSIONS[:environment].keys.include?(p)
+ ActiveRecord::Base::PERMISSIONS['Environment'].keys.include?(p)
end
end
end
diff --git a/app/models/profile.rb b/app/models/profile.rb
index 598efe2..dd456f3 100644
--- a/app/models/profile.rb
+++ b/app/models/profile.rb
@@ -13,9 +13,15 @@ class Profile < ActiveRecord::Base
def self.moderator
::Role.find_by_key('profile_moderator')
end
+ def self.owner
+ ::Role.find_by_key('profile_owner')
+ end
+ def self.editor
+ ::Role.find_by_key('profile_editor')
+ end
end
- PERMISSIONS[:profile] = {
+ PERMISSIONS['Profile'] = {
'edit_profile' => N_('Edit profile'),
'destroy_profile' => N_('Destroy profile'),
'manage_memberships' => N_('Manage memberships'),
@@ -26,7 +32,7 @@ class Profile < ActiveRecord::Base
'validate_enterprise' => N_('Validate enterprise'),
'peform_task' => N_('Peform task'),
}
-
+
acts_as_accessible
acts_as_having_boxes
diff --git a/app/views/profile_members/change_role.rhtml b/app/views/profile_members/change_role.rhtml
index 7f14e9c..207e172 100644
--- a/app/views/profile_members/change_role.rhtml
+++ b/app/views/profile_members/change_role.rhtml
@@ -1,11 +1,10 @@
-<%= _('Changing role of %s') % @member.name %>
+
<%= _('Changing role of %s') % @member.name %>
<% labelled_form_for :member, @member, :url => {:action => 'update_roles'} do |f| %>
<%= _('Roles:') %>
<% @roles.each do |r| %>
- <%= check_box_tag "roles[]", r.id, @associations.map(&:role).include?(r) %>
- <%= r.name.capitalize %>
+ <%= labelled_check_box(r.name, 'roles[]', r.id, @associations.map(&:role).include?(r) ) %>
<% end %>
<%= hidden_field_tag 'person', @member.id %>
diff --git a/app/views/profile_members/index.rhtml b/app/views/profile_members/index.rhtml
index 0293c56..1c5412f 100644
--- a/app/views/profile_members/index.rhtml
+++ b/app/views/profile_members/index.rhtml
@@ -2,12 +2,20 @@
<%= link_to _('Affiliate yourself'), :action => 'add_role', :person => current_user.person, :role => @member_role if @member_role %>
-
+
+
+ <%= _('Member') %> |
+ <%= _('Actions') %> |
+
<% @members.each do |m| %>
- - <%= m.name %>
- <%= link_to _('Edit member role'), :action => 'change_role', :id => m %>
- <%= link_to _('Remove member'), :action => 'unassociate', :id => m %>
+
+ <%= m.name %> |
+
+ <%= button :edit, _('Edit'), :action => 'change_role', :id => m %>
+ <%= button :delete, _('Remove'), :action => 'unassociate', :id => m %>
+ |
+
<% end %>
-
+
<%= link_to _('Back'), :controller => 'profile_editor' %>
diff --git a/app/views/role/_form.rhtml b/app/views/role/_form.rhtml
index 66225a7..b49d4ce 100644
--- a/app/views/role/_form.rhtml
+++ b/app/views/role/_form.rhtml
@@ -6,7 +6,7 @@
<%= _('Permissions:') %>
<% permissions.keys.each do |p| %>
- <%= labelled_form_field(permission_name(p), (check_box_tag "role[permissions][]", p, @role.has_permission?(p))) %>
+ <%= labelled_check_box(permission_name(p), (check_box_tag "role[permissions][]", p, @role.has_permission?(p))) %>
<% end %>
<% button_bar do %>
diff --git a/app/views/role/new.rhtml b/app/views/role/new.rhtml
index e13d636..86e1c9f 100644
--- a/app/views/role/new.rhtml
+++ b/app/views/role/new.rhtml
@@ -1,6 +1,6 @@
<%= _('New Role') %>
<% ActiveRecord::Base::PERMISSIONS.keys.each do |perm_class| %>
- <%= perm_class %>
+ <%= gettext(perm_class.downcase).capitalize %>
<%= render :partial => 'form', :locals => { :mode => :new, :permissions => ActiveRecord::Base::PERMISSIONS[perm_class] } %>
<% end %>
diff --git a/po/pt_BR/noosfero.po b/po/pt_BR/noosfero.po
index f7751e7..bcf7efe 100644
--- a/po/pt_BR/noosfero.po
+++ b/po/pt_BR/noosfero.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: noosfero 0.9.0\n"
"POT-Creation-Date: 2008-04-29 08:47-0300\n"
-"PO-Revision-Date: 2008-05-24 13:59-0300\n"
+"PO-Revision-Date: 2008-05-29 13:04-0300\n"
"Last-Translator: Joenio Costa \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -2816,7 +2816,7 @@ msgstr "Permissões"
#: app/views/role/new.rhtml:1
msgid "New Role"
-msgstr "Nova papel"
+msgstr "Novo Papel"
#: app/views/role/_form.rhtml:7
msgid "Permissions:"
diff --git a/test/functional/profile_members_controller_test.rb b/test/functional/profile_members_controller_test.rb
index b3b8ac9..0a9ff59 100644
--- a/test/functional/profile_members_controller_test.rb
+++ b/test/functional/profile_members_controller_test.rb
@@ -55,6 +55,8 @@ class ProfileMembersControllerTest < Test::Unit::TestCase
assert_response :success
assert_equal member, assigns('member')
assert_template 'change_role'
+ assert_tag :tag => 'input', :attributes => { :type => 'checkbox', :name => 'roles[]'}
+ assert_tag :tag => 'label', :content => role.name
end
should 'update roles' do
@@ -73,7 +75,5 @@ class ProfileMembersControllerTest < Test::Unit::TestCase
member.reload
assert member.find_roles(ent).map(&:role).include?(orole)
assert !member.find_roles(ent).map(&:role).include?(role)
-
-
end
end
diff --git a/test/functional/search_controller_test.rb b/test/functional/search_controller_test.rb
index 932cbfa..41ca128 100644
--- a/test/functional/search_controller_test.rb
+++ b/test/functional/search_controller_test.rb
@@ -839,5 +839,4 @@ class SearchControllerTest < Test::Unit::TestCase
assert_not_includes assigns(:regions), r2
assert_no_tag :tag => 'ul', :descendant => { :tag => 'li', :content => r2.name }
end
-
end
diff --git a/vendor/plugins/access_control/lib/acts_as_accessible.rb b/vendor/plugins/access_control/lib/acts_as_accessible.rb
index 9cba588..82f8c4e 100644
--- a/vendor/plugins/access_control/lib/acts_as_accessible.rb
+++ b/vendor/plugins/access_control/lib/acts_as_accessible.rb
@@ -27,5 +27,11 @@ class ActiveRecord::Base
def members
role_assignments.map(&:accessor).uniq
end
+
+ def roles
+ Role.find(:all).select do |r|
+ r.permissions.any?{ |p| PERMISSIONS[self.class.base_class.name].include?(p) }
+ end
+ end
end
end
diff --git a/vendor/plugins/access_control/lib/role.rb b/vendor/plugins/access_control/lib/role.rb
index a6d2df0..0822436 100644
--- a/vendor/plugins/access_control/lib/role.rb
+++ b/vendor/plugins/access_control/lib/role.rb
@@ -10,6 +10,14 @@ class Role < ActiveRecord::Base
super(*args)
end
+ def key=(value)
+ if self[:key] && system
+ raise ArgumentError, 'Can\'t change key of system role'
+ else
+ self[:key] = value
+ end
+ end
+
def permissions
self[:permissions] ||= []
end
@@ -19,7 +27,7 @@ class Role < ActiveRecord::Base
end
def has_kind?(k)
- permissions.any?{|p| perms[k].keys.include?(p)}
+ perms[k] && permissions.any?{|p| perms[k].keys.include?(p)}
end
def kind
diff --git a/vendor/plugins/access_control/test/role_test.rb b/vendor/plugins/access_control/test/role_test.rb
index 1894e7f..f978eae 100644
--- a/vendor/plugins/access_control/test/role_test.rb
+++ b/vendor/plugins/access_control/test/role_test.rb
@@ -59,13 +59,11 @@ class RoleTest < Test::Unit::TestCase
end
def test_should_not_allow_to_remove_system_defined_roles
-
role = Role.create!(:name => 'not to be removed', :permissions => [], :system => true)
count = Role.count
role.destroy
assert_equal count, Role.count
-
end
def test_should_have_an_empty_array_as_permissions_by_default
@@ -91,4 +89,13 @@ class RoleTest < Test::Unit::TestCase
assert_equal 'another_key', role.key
end
+ def test_should_have_kind
+ role = Role.create!(:name => 'a test role', :permissions => ['perm1'])
+ role.stubs(:perms).returns({'kind1' => {'perm1' => 'perm1 name', 'perm2' => 'perm2 name'}, 'kind2' => {'perm3' => 'perm3 name'}})
+
+ assert role.has_kind?('kind1')
+ assert ! role.has_kind?('kind2')
+ assert ! role.has_kind?('kind3')
+ end
+
end
--
libgit2 0.21.2