Skip to content
Extraits de code Groupes Projets
Valider 22f63a4c rédigé par maxwell's avatar maxwell
Parcourir les fichiers

MS IZ added the move friend method

parent c9e64ae2
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -49,4 +49,9 @@ class GroupsController < ApplicationController
end
end
def move_person
current_user.move_friend( :friend_id => params[:person_id], :from => params[:old_group_id], :to => params[:new_group_id])
render :nothing => true
end
end
......@@ -19,5 +19,10 @@ class Group
def to_s
name
end
def posts_by_person_id( id )
id = ensure_bson id
posts.detect{|x| x.person.id == id }
end
end
......@@ -40,6 +40,28 @@ class User
Group.create(opts)
end
def move_friend( opts = {})
return true if opts[:to] == opts[:from]
friend = Person.first(:_id => opts[:friend_id])
if self.friend_ids.include?(friend.id)
from_group = self.group_by_id(opts[:from])
to_group = self.group_by_id(opts[:to])
if from_group && to_group
posts_to_move = from_group.posts.find_all_by_person_id(friend.id)
puts posts_to_move.inspect
to_group.people << friend
to_group.posts << posts_to_move
puts to_group.inspect
from_group.person_ids.delete(ensure_bson(friend.id))
posts_to_move.each{ |x| from_group.post_ids.delete(x.id)}
puts from_group.inspect
from_group.save
to_group.save
return true
end
end
false
end
######## Posting ########
def post(class_name, options = {})
options[:person] = self.person
......
......@@ -6,17 +6,15 @@
%h1.big_text
.back
= link_to "⇧ #{@group.name}", @group
= "Editing Groups"
%ul
- for group in @groups
%li.group
= group.name
%ul
-for person in group.people
%li..person
%li.person
= person.real_name
......
......@@ -17,6 +17,11 @@
%i= "friends since: #{how_long_ago(@person)}"
%li
="groups: #{@person_groups}"
= "edit"
= form_for Request.new do |f|
= f.select(:group_id, @groups_array)
= f.hidden_field :destination_url, :value => person.email
= f.submit "add friend"
%li
url:
= @person.url
......
$(function() {
$("li .person").draggable({
helper: 'clone',
cursor: 'move'
});
$("li .group").droppable({
drop: function(event, ui) {
//alert('dropped!');
$("<li class='person'></li>").text(ui.draggable.text()).appendTo(this);
}
});
});
......@@ -110,4 +110,59 @@ describe Group do
end
end
describe "group editing" do
before do
@group = @user.group(:name => 'losers')
@group2 = @user2.group(:name => 'failures')
friend_users(@user, @group, @user2, @group2)
@group.reload
@group3 = @user.group(:name => 'cats')
@user.reload
end
it 'should be able to move a friend from one of users existing groups to another' do
@user.move_friend(:friend_id => @user2.person.id, :from => @group.id, :to => @group3.id)
@group.reload
@group3.reload
@group.person_ids.include?(@user2.person.id).should be false
@group3.people.include?(@user2.person).should be true
end
it "should not move a person who is not a friend" do
@user.move_friend(:friend_id => @friend.id, :from => @group.id, :to => @group3.id)
@group.reload
@group3.reload
@group.people.include?(@friend).should be false
@group3.people.include?(@friend).should be false
end
it "should not move a person to a group that's not his" do
@user.move_friend(:friend_id => @user2.person.id, :from => @group.id, :to => @group2.id)
@group.reload
@group2.reload
@group.people.include?(@user2.person).should be true
@group2.people.include?(@user2.person).should be false
end
it 'should move all the by that user to the new group' do
message = @user2.post(:status_message, :message => "Hey Dude", :to => @group2.id)
@user.receive message.to_diaspora_xml
@group.reload
@group.posts.count.should be 1
@group3.posts.count.should be 0
@user.reload
@user.move_friend(:friend_id => @user2.person.id, :from => @group.id, :to => @group3.id)
@group.reload
@group3.reload
@group3.posts.count.should be 1
@group.posts.count.should be 0
end
end
end
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter