diff --git a/app/controllers/my_profile/profile_members_controller.rb b/app/controllers/my_profile/profile_members_controller.rb index 07c440b..7487695 100644 --- a/app/controllers/my_profile/profile_members_controller.rb +++ b/app/controllers/my_profile/profile_members_controller.rb @@ -6,11 +6,6 @@ class ProfileMembersController < MyProfileController @member_role = Role.find_by_name('member') end - def change_roles - @member = Person.find(params[:id]) - @roles = Role.find(:all).select{ |r| r.has_kind?(:profile) } - end - def update_roles @roles = params[:roles] ? Role.find(params[:roles]) : [] @roles = @roles.select{|r| r.has_kind?('Profile') } diff --git a/app/models/add_member.rb b/app/models/add_member.rb index 33af6a2..c3363e3 100644 --- a/app/models/add_member.rb +++ b/app/models/add_member.rb @@ -12,8 +12,11 @@ class AddMember < Task alias :enterprise :target alias :enterprise= :target= + acts_as_having_settings :roles, :field => :data + def perform - target.affiliate(requestor, Profile::Roles.member) + self.roles ||= [Profile::Roles.member.id] + target.affiliate(requestor, self.roles.map{|i| Role.find(i)}) end # FIXME should send email to community admin? diff --git a/app/views/tasks/_add_friend.rhtml b/app/views/tasks/_add_friend.rhtml index 08be9c2..9bf04e4 100644 --- a/app/views/tasks/_add_friend.rhtml +++ b/app/views/tasks/_add_friend.rhtml @@ -3,7 +3,7 @@ <%= link_to( profile_image(task.requestor, :minor, :border => 0), task.requestor.public_profile_url ) %> <%= _('%s wants to connect to you as a friend.') % - content_tag('b', link_to( task.requestor.name, task.requestor.public_profile_url ) ) %> + content_tag('strong', link_to( task.requestor.name, task.requestor.public_profile_url ) ) %> <% form_for('task', task, :url => { :action => 'close', :id => task.id } ) do |f| %> diff --git a/app/views/tasks/_add_member.rhtml b/app/views/tasks/_add_member.rhtml new file mode 100644 index 0000000..c0b1916 --- /dev/null +++ b/app/views/tasks/_add_member.rhtml @@ -0,0 +1,38 @@ +

<%= _('New member') %>

+ +<%= link_to( profile_image(task.requestor, :minor, :border => 0), task.requestor.public_profile_url ) %> + +<%= _('%s wants to be a member of %s.') % + [content_tag('strong', link_to( task.requestor.name, task.requestor.public_profile_url ) ), + content_tag('strong', link_to( task.target.name, task.target.public_profile_url ) )] %> + +<% form_for('task', task, :url => { :action => 'close', :id => task.id } ) do |f| %> + +
+ <%= radio_button_tag(:decision, 'finish', true, + :id => "decision-finish-#{task.id}", + :onclick => "Element.show('group-for-friend-#{task.id}')") %> + + +     + + <%= radio_button_tag(:decision, 'cancel', false, + :id => "decision-cancel-#{task.id}", + :onclick => "Element.hide('group-for-friend-#{task.id}')") %> + + +

+ <%= _('Roles:') %>
+ <% + @roles = Role.find(:all).select{ |r| r.has_kind?('Profile') } + %> + <% @roles.each do |r| %> + <%= labelled_check_box(r.name, 'task[roles][]', r.id, true) %>
+ <% end %> +

+
+ + <% button_bar do %> + <%= submit_button(:ok, _('Ok!')) %> + <% end %> +<% end %> diff --git a/test/functional/tasks_controller_test.rb b/test/functional/tasks_controller_test.rb index aa0d698..93581a4 100644 --- a/test/functional/tasks_controller_test.rb +++ b/test/functional/tasks_controller_test.rb @@ -62,4 +62,6 @@ class TasksControllerTest < Test::Unit::TestCase ok('task should be cancelled') { t.status == Task::Status::CANCELLED } end + should 'affiliate roles to user after finish add member task' + end diff --git a/test/unit/add_member_test.rb b/test/unit/add_member_test.rb index 8df19bc..38b7315 100644 --- a/test/unit/add_member_test.rb +++ b/test/unit/add_member_test.rb @@ -71,4 +71,24 @@ class AddMemberTest < ActiveSupport::TestCase assert_equal :manage_memberships, t.permission end + should 'have roles' do + p = create_user('testuser1').person + c = Community.create!(:name => 'community_test') + task = AddMember.create!(:roles => [1,2,3], :person => p, :community => c) + assert_equal [1,2,3], task.roles + end + + should 'put member with the right roles' do + p = create_user('testuser1').person + c = Community.create!(:name => 'community_test') + + roles = [Profile::Roles.member, Profile::Roles.admin] + task = AddMember.create!(:roles => roles.map(&:id), :person => p, :community => c) + task.finish + + current_roles = p.find_roles(c).map(&:role) + assert_includes current_roles, roles[0] + assert_includes current_roles, roles[1] + end + end -- libgit2 0.21.2