From 19e8aa5c352bb200dfc29b536df0079c23e282bc Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 11:06:35 -0700 Subject: [PATCH 03/47] Refactored view js --- app/views/albums/index.html.haml | 6 ++++++ app/views/albums/show.html.haml | 5 +---- app/views/layouts/application.html.haml | 2 -- public/javascripts/photos.js | 24 ++++++++++++++++++++++++ public/javascripts/view.js | 22 ++++------------------ 5 files changed, 35 insertions(+), 24 deletions(-) create mode 100644 public/javascripts/photos.js diff --git a/app/views/albums/index.html.haml b/app/views/albums/index.html.haml index 47d2f68a9..2be320629 100644 --- a/app/views/albums/index.html.haml +++ b/app/views/albums/index.html.haml @@ -1,3 +1,9 @@ +- content_for :head do + :javascript + $(document).ready(function(){ + $("#add_album_button").fancybox(); + }); + .back= link_to "⇧ home", root_path %h1.big_text Albums diff --git a/app/views/albums/show.html.haml b/app/views/albums/show.html.haml index f67fb5d33..18e042ad9 100644 --- a/app/views/albums/show.html.haml +++ b/app/views/albums/show.html.haml @@ -1,8 +1,5 @@ - content_for :head do - :javascript - $(document).ready(function(){ - reset_photo_fancybox(); - }); + = javascript_include_tag 'photos', 'jquery.html5_upload' .album_id{:id => @album.id, :style => "display:hidden;"} .back= link_to '⇧ albums', albums_path diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 328ab1650..cd3579319 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -23,8 +23,6 @@ = csrf_meta_tag = yield(:head) - = javascript_include_tag 'jquery.html5_upload' - %body - flash.each do |name, msg| = content_tag :div, msg, :id => "flash_#{name}" diff --git a/public/javascripts/photos.js b/public/javascripts/photos.js new file mode 100644 index 000000000..b04585402 --- /dev/null +++ b/public/javascripts/photos.js @@ -0,0 +1,24 @@ +$(document).ready(function(){ + reset_photo_fancybox(); + + $("#add_photo_button").fancybox({ + 'onClosed' : function(){ + if($("#add_photo_button").hasClass("uploading_complete")){ + $("#add_photo_button").removeClass("uploading_complete"); + reset_photo_fancybox(); + } + } + }); + + $(".image_thumb img").load( function() { + $(this).fadeIn("slow"); + }); + +});//end document ready + +function reset_photo_fancybox(){ + album_id = $(".album_id")[0].id; + ajax = $.get("/photos/new?album_id=" + album_id, function(){ + $("#new_photo_pane").html(ajax.responseText) + }); +} diff --git a/public/javascripts/view.js b/public/javascripts/view.js index c50439768..f9fa6d194 100644 --- a/public/javascripts/view.js +++ b/public/javascripts/view.js @@ -20,25 +20,16 @@ $(document).ready(function(){ //buttons////// - $("#add_album_button").fancybox(); $("#add_group_button").fancybox(); $("#add_request_button").fancybox({ 'titleShow': false }); - $("#add_photo_button").fancybox({ - 'onClosed' : function(){ - if($("#add_photo_button").hasClass("uploading_complete")){ - $("#add_photo_button").removeClass("uploading_complete"); - reset_photo_fancybox(); - } - } - }); + + //pane_toggler_button("photo"); $("input[type='submit']").addClass("button"); - $(".image_thumb img").load( function() { - $(this).fadeIn("slow"); - }); + $(".image_cycle img").load( function() { $(this).fadeIn("slow"); @@ -48,12 +39,7 @@ $(document).ready(function(){ });//end document ready -function reset_photo_fancybox(){ - album_id = $(".album_id")[0].id; - ajax = $.get("/photos/new?album_id=" + album_id, function(){ - $("#new_photo_pane").html(ajax.responseText) - }); -} + function pane_toggler_button( name ) { From a29a1bec3ee8044f1932acbd9fefd8b22eb89b3b Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 11:07:26 -0700 Subject: [PATCH 04/47] Add some logging to comments --- .gitignore | 2 +- app/models/comment.rb | 5 +++++ spec/models/user/receive_spec.rb | 14 ++++++++++++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index dafc5e44d..d57f5a338 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ *~ .bundle db/*.sqlite3 -log/*.log +log/* tmp/**/* Gemfile.lock gpg/diaspora-development/*.gpg diff --git a/app/models/comment.rb b/app/models/comment.rb index b4f2fb2d9..bd72721ee 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -57,6 +57,11 @@ class Comment verify_signature(post_creator_signature, post.person) end + def signature_valid? + Rails.logger.warn "Received comment has person #{person.inspect}" + Rails.logger.warn "Received comment has person key #{person.serialized_key}" if person + verify_signature(creator_signature, person) && verify_signature(post_creator_signator, post.person) + end protected def sign_if_my_post diff --git a/spec/models/user/receive_spec.rb b/spec/models/user/receive_spec.rb index bd2afb6dd..2a08ba76a 100644 --- a/spec/models/user/receive_spec.rb +++ b/spec/models/user/receive_spec.rb @@ -8,6 +8,10 @@ describe User do @user2 = Factory.create(:user) @group2 = @user2.group(:name => 'losers') + + @user3 = Factory.create(:user) + @group3 = @user3.group(:name => 'heroes') + friend_users(@user, @group, @user2, @group2) end @@ -36,11 +40,17 @@ describe User do @user.groups.size.should == num_groups end + describe 'comments' do + it 'should receive comments from unknown users' do + friend_users(@user, @group, @user2, @group2) + + status_message = @user.post, :status_message, :message => 'message', :to => @group.id + end + end describe 'post refs' do before do - @user3 = Factory.create(:user) - @group3 = @user3.group(:name => 'heroes') + end it "should add the post to that user's posts when a user posts it" do From 39551a0162b539f56b297f9caec323de9c2a319b Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 26 Aug 2010 11:08:03 -0700 Subject: [PATCH 05/47] fixed comments not showing for photos in stream --- app/views/photos/_photo.haml | 32 +++++++++---------- .../status_messages/_status_message.html.haml | 2 +- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/views/photos/_photo.haml b/app/views/photos/_photo.haml index caeae5c99..d44c056ba 100644 --- a/app/views/photos/_photo.haml +++ b/app/views/photos/_photo.haml @@ -1,20 +1,20 @@ %li.message{:id => post.id} + = person_image_tag(post.person) - %span.from - = link_to post.person.real_name, post.person - %b - posted a new photo to - = link_to post.album.name, object_path(post.album) + .content + %span.from + = link_to post.person.real_name, post.person + %b + posted a new photo to + = link_to post.album.name, object_path(post.album) - %br - - = render "albums/album", :post => post.album, :current_user => current_user - - = link_to (image_tag post.url(:thumb_medium)), object_path(post) - - %div.time - = link_to(how_long_ago(post), photo_path(post)) - \-- - = link_to "show comments (#{post.comments.count})", '#', :class => "show_post_comments" - = render "comments/comments", :post => post + %br + = render "albums/album", :post => post.album, :current_user => current_user + = link_to (image_tag post.url(:thumb_medium)), object_path(post) + + .info + = link_to(how_long_ago(post), photo_path(post)) + \-- + = link_to "show comments (#{post.comments.count})", '#', :class => "show_post_comments" + = render "comments/comments", :post => post diff --git a/app/views/status_messages/_status_message.html.haml b/app/views/status_messages/_status_message.html.haml index 7217d3ec8..5c8f041c0 100644 --- a/app/views/status_messages/_status_message.html.haml +++ b/app/views/status_messages/_status_message.html.haml @@ -7,7 +7,7 @@ = link_to post.person.real_name, post.person = auto_link sanitize post.message - %div.info + .info = link_to(how_long_ago(post), object_path(post)) \-- = link_to "show comments (#{post.comments.count})", '#', :class => "show_post_comments" From 36f265fa2fc5daedaf21ce08f2aa5047960d4dc5 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 11:11:30 -0700 Subject: [PATCH 07/47] Log safely --- app/models/comment.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index bd72721ee..7b0c2b62e 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -58,8 +58,12 @@ class Comment end def signature_valid? - Rails.logger.warn "Received comment has person #{person.inspect}" - Rails.logger.warn "Received comment has person key #{person.serialized_key}" if person + if person + Rails.logger.warn "Received comment has person #{person.inspect}" if person + Rails.logger.warn "Received comment has person key #{person.serialized_key}" if person + else + Rails.logger.warn "Received comment has no person" + end verify_signature(creator_signature, person) && verify_signature(post_creator_signator, post.person) end From f186dd98c844b91849bfd25afc1a429b028f8501 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 11:13:44 -0700 Subject: [PATCH 08/47] SIGNATOR --- app/models/comment.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index 7b0c2b62e..50e970d8a 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -64,7 +64,7 @@ class Comment else Rails.logger.warn "Received comment has no person" end - verify_signature(creator_signature, person) && verify_signature(post_creator_signator, post.person) + verify_signature(creator_signature, person) && verify_signature(post_creator_signature, post.person) end protected From a65f512fa3af49901c831006d483ca6f7cac618e Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 11:29:06 -0700 Subject: [PATCH 09/47] verify post creator signature in receive --- app/models/comment.rb | 2 +- app/models/user.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index 50e970d8a..ce119f62c 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -64,7 +64,7 @@ class Comment else Rails.logger.warn "Received comment has no person" end - verify_signature(creator_signature, person) && verify_signature(post_creator_signature, post.person) + verify_signature(creator_signature, person) end protected diff --git a/app/models/user.rb b/app/models/user.rb index 409e964e3..a825864ed 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -195,6 +195,7 @@ class User person.save elsif object.is_a?(Comment) + raise "Signature was not valid on: #{object.inspect}" unless post.person == self || object.verify_post_creator_signature dispatch_comment object unless owns?(object) object.socket_to_uid(id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) else From 958627cc1c55517f6dc4b4c6d08378d1d102d67f Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 11:32:33 -0700 Subject: [PATCH 10/47] RS IZ object.post --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index a825864ed..b56064e9b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -195,7 +195,7 @@ class User person.save elsif object.is_a?(Comment) - raise "Signature was not valid on: #{object.inspect}" unless post.person == self || object.verify_post_creator_signature + raise "Signature was not valid on: #{object.inspect}" unless object.post.person == self || object.verify_post_creator_signature dispatch_comment object unless owns?(object) object.socket_to_uid(id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) else From 7feb30e3e1cfa74466a400f398e22e7c945bc8c7 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 11:41:16 -0700 Subject: [PATCH 11/47] RS, IZ, try saving the comment --- app/models/user.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/user.rb b/app/models/user.rb index b56064e9b..cd071492b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -196,6 +196,7 @@ class User elsif object.is_a?(Comment) raise "Signature was not valid on: #{object.inspect}" unless object.post.person == self || object.verify_post_creator_signature + object.save dispatch_comment object unless owns?(object) object.socket_to_uid(id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) else From 9f11a474d8c13d96f2cafddc686ed334e8758e0c Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 11:46:04 -0700 Subject: [PATCH 12/47] Take out some logging, put in log user on receive --- app/controllers/publics_controller.rb | 1 - app/models/comment.rb | 7 +------ app/models/user.rb | 4 ++-- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/app/controllers/publics_controller.rb b/app/controllers/publics_controller.rb index e7b994ff5..011996829 100644 --- a/app/controllers/publics_controller.rb +++ b/app/controllers/publics_controller.rb @@ -29,7 +29,6 @@ class PublicsController < ApplicationController Rails.logger.error("Received post #{params[:xml]} for nonexistent person #{params[:id]}") return end - Rails.logger.debug "PublicsController has received: #{params[:xml]}" @user.receive params[:xml] if params[:xml] end diff --git a/app/models/comment.rb b/app/models/comment.rb index ce119f62c..1b5be0077 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -58,12 +58,7 @@ class Comment end def signature_valid? - if person - Rails.logger.warn "Received comment has person #{person.inspect}" if person - Rails.logger.warn "Received comment has person key #{person.serialized_key}" if person - else - Rails.logger.warn "Received comment has no person" - end + Rails.logger.warn "Received comment has no person" unless person verify_signature(creator_signature, person) end diff --git a/app/models/user.rb b/app/models/user.rb index cd071492b..0e57d0601 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -166,7 +166,7 @@ class User def receive xml object = Diaspora::Parser.from_xml(xml) Rails.logger.debug("Receiving object:\n#{object.inspect}") - raise "Signature was not valid on: #{object.inspect}" unless object.signature_valid? + raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.signature_valid? if object.is_a? Retraction if object.type == 'Person' && object.signature_valid? @@ -195,7 +195,7 @@ class User person.save elsif object.is_a?(Comment) - raise "Signature was not valid on: #{object.inspect}" unless object.post.person == self || object.verify_post_creator_signature + raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.post.person == self || object.verify_post_creator_signature object.save dispatch_comment object unless owns?(object) object.socket_to_uid(id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) From c3fe3bf4433dae02a153019d5621302d078dc274 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 11:48:34 -0700 Subject: [PATCH 13/47] RS, IZ, check against self.person, not self in user receive --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 0e57d0601..e43f44f51 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -195,7 +195,7 @@ class User person.save elsif object.is_a?(Comment) - raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.post.person == self || object.verify_post_creator_signature + raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.post.person == self.person || object.verify_post_creator_signature object.save dispatch_comment object unless owns?(object) object.socket_to_uid(id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) From c7974f804663b444b888005796353ecac0c8d483 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 11:53:32 -0700 Subject: [PATCH 14/47] Save comment's person in receive --- app/models/user.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/user.rb b/app/models/user.rb index e43f44f51..bd3ddfa61 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -195,6 +195,7 @@ class User person.save elsif object.is_a?(Comment) + object.person.save raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.post.person == self.person || object.verify_post_creator_signature object.save dispatch_comment object unless owns?(object) From f3c20bf3c037a080c52f1ef82392a79399e64ac8 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 12:01:11 -0700 Subject: [PATCH 15/47] accept comments from strangers --- app/models/comment.rb | 3 +-- app/models/user.rb | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index 1b5be0077..23dad39e9 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -58,8 +58,7 @@ class Comment end def signature_valid? - Rails.logger.warn "Received comment has no person" unless person - verify_signature(creator_signature, person) + person ? verify_signature(creator_signature, person) : true end protected diff --git a/app/models/user.rb b/app/models/user.rb index bd3ddfa61..e43f44f51 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -195,7 +195,6 @@ class User person.save elsif object.is_a?(Comment) - object.person.save raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.post.person == self.person || object.verify_post_creator_signature object.save dispatch_comment object unless owns?(object) From 5a92f9e8a834c319a5f568af3ff486dbcf9fd032 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 12:07:35 -0700 Subject: [PATCH 16/47] Do some logging --- app/models/comment.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/models/comment.rb b/app/models/comment.rb index 23dad39e9..29a82b243 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -58,6 +58,8 @@ class Comment end def signature_valid? + Rails.logger.warn "Validating signature on comment from: #{person.inspect}" + Rails.logger.warn "#{person.real_name}" if person person ? verify_signature(creator_signature, person) : true end From 6a48c07c90f77b02b2eefe2893e93001de298a2d Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 12:10:22 -0700 Subject: [PATCH 17/47] Return if nil --- app/models/comment.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index 29a82b243..b77a918f5 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -58,9 +58,8 @@ class Comment end def signature_valid? - Rails.logger.warn "Validating signature on comment from: #{person.inspect}" - Rails.logger.warn "#{person.real_name}" if person - person ? verify_signature(creator_signature, person) : true + return true if person.nil? + verify_signature(creator_signature, person) end protected From 1d69b88e2ecf852c2db51fdf4d7d7f93d07a5851 Mon Sep 17 00:00:00 2001 From: ilya Date: Thu, 26 Aug 2010 12:17:35 -0700 Subject: [PATCH 18/47] to id so that change of group works --- app/models/group.rb | 2 +- app/models/user.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/group.rb b/app/models/group.rb index 432ff697c..ae33ada7b 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -21,7 +21,7 @@ class Group end def posts_by_person_id( id ) - id = ensure_bson id + id = id.to_id posts.detect{|x| x.person.id == id } end end diff --git a/app/models/user.rb b/app/models/user.rb index e43f44f51..53a5e4a32 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -51,7 +51,7 @@ class User puts posts_to_move.inspect to_group.people << friend to_group.posts << posts_to_move - from_group.person_ids.delete(ensure_bson(friend.id)) + from_group.person_ids.delete(friend.id.to_id) posts_to_move.each{ |x| from_group.post_ids.delete(x.id)} from_group.save to_group.save From 3554de48d858fbc19b6ac7000510ea5db3743153 Mon Sep 17 00:00:00 2001 From: ilya Date: Thu, 26 Aug 2010 12:24:53 -0700 Subject: [PATCH 19/47] trying image url --- app/views/groups/edit.html.haml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/groups/edit.html.haml b/app/views/groups/edit.html.haml index d6e227b5f..9ccdd3a65 100644 --- a/app/views/groups/edit.html.haml +++ b/app/views/groups/edit.html.haml @@ -16,6 +16,7 @@ stuff -for person in group.people %li.person + = image_tag person.profile.image_url unless person.profile.image_url.nil? = person.real_name From df74020a16dc2e7f33ad03792511906a050848c7 Mon Sep 17 00:00:00 2001 From: ilya Date: Thu, 26 Aug 2010 12:27:10 -0700 Subject: [PATCH 20/47] small thumbnail --- app/views/groups/edit.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/groups/edit.html.haml b/app/views/groups/edit.html.haml index 9ccdd3a65..e3547a827 100644 --- a/app/views/groups/edit.html.haml +++ b/app/views/groups/edit.html.haml @@ -16,7 +16,7 @@ stuff -for person in group.people %li.person - = image_tag person.profile.image_url unless person.profile.image_url.nil? + = image_tag person.profile.image_url(:thumb_small) unless person.profile.image_url.nil? = person.real_name From 915144e08b120fdec98b8a3f86c0ba9957e91b45 Mon Sep 17 00:00:00 2001 From: ilya Date: Thu, 26 Aug 2010 12:32:14 -0700 Subject: [PATCH 21/47] size 30 by 30 --- app/views/groups/edit.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/groups/edit.html.haml b/app/views/groups/edit.html.haml index e3547a827..c8e3e4fc4 100644 --- a/app/views/groups/edit.html.haml +++ b/app/views/groups/edit.html.haml @@ -16,7 +16,7 @@ stuff -for person in group.people %li.person - = image_tag person.profile.image_url(:thumb_small) unless person.profile.image_url.nil? + = image_tag (person.profile.image_url(:thumb_small),:size => "30x30") unless person.profile.image_url.nil? = person.real_name From 31f79be06834ca426df671ae1a3e84b68669c76b Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 14:38:06 -0700 Subject: [PATCH 22/47] Save the person on receiving a comment --- app/models/comment.rb | 1 - app/models/user.rb | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index b77a918f5..3057b98e4 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -58,7 +58,6 @@ class Comment end def signature_valid? - return true if person.nil? verify_signature(creator_signature, person) end diff --git a/app/models/user.rb b/app/models/user.rb index e43f44f51..dcb4d3c2f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -166,6 +166,8 @@ class User def receive xml object = Diaspora::Parser.from_xml(xml) Rails.logger.debug("Receiving object:\n#{object.inspect}") + Rails.logger.debug("From: #{object.person.inspect}") if object.person + object.person.save if object.is_a? Comment && Person.find_by_id(object.person_id).nil? raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.signature_valid? if object.is_a? Retraction if object.type == 'Person' && object.signature_valid? From 1ce34bc6fc7f5fafad6dc3392999edc3be843975 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 14:42:16 -0700 Subject: [PATCH 23/47] Parenthases --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 2594065a1..c12730dba 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -167,7 +167,7 @@ class User object = Diaspora::Parser.from_xml(xml) Rails.logger.debug("Receiving object:\n#{object.inspect}") Rails.logger.debug("From: #{object.person.inspect}") if object.person - object.person.save if object.is_a? Comment && Person.find_by_id(object.person_id).nil? + object.person.save if object.is_a?(Comment) && Person.find_by_id(object.person_id).nil? raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.signature_valid? if object.is_a? Retraction if object.type == 'Person' && object.signature_valid? From 239ae048ccd48cf1c9e11f5ee5e4ab79948cb03d Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 26 Aug 2010 15:02:13 -0700 Subject: [PATCH 24/47] group names are now editable --- app/controllers/groups_controller.rb | 2 +- app/views/shared/_group_nav.haml | 3 +- public/javascripts/view.js | 54 +++++++++++++++++++----- public/stylesheets/application.css | 8 +++- public/stylesheets/sass/application.sass | 9 ++-- 5 files changed, 59 insertions(+), 17 deletions(-) diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index b3abcf607..8b1cd73af 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -42,7 +42,7 @@ class GroupsController < ApplicationController def update @group = Group.first(:id => params[:id]) if @group.update_attributes(params[:group]) - flash[:notice] = "Successfully updated group." + #flash[:notice] = "Successfully updated group." redirect_to @group else render :action => 'edit' diff --git a/app/views/shared/_group_nav.haml b/app/views/shared/_group_nav.haml index 2d959b70b..88995f9b5 100644 --- a/app/views/shared/_group_nav.haml +++ b/app/views/shared/_group_nav.haml @@ -4,7 +4,8 @@ = link_to "All Groups", root_url - for group in @groups %li{:id => group.id, :class => ("selected" if current_group?(group))} - = link_for_group group + %span.group_name + = link_for_group group %span{:class => '⚙'} = link_to "⚙", "#", :class => "edit_group_button" diff --git a/public/javascripts/view.js b/public/javascripts/view.js index f9fa6d194..782a1bdad 100644 --- a/public/javascripts/view.js +++ b/public/javascripts/view.js @@ -8,8 +8,6 @@ $(document).ready(function(){ $('#flash_notice, #flash_error, #flash_alert').delay(2500).slideUp(130); - - $("div.image_cycle").cycle({ fx: 'fade', random: 1, @@ -18,24 +16,60 @@ $(document).ready(function(){ }); //buttons////// - - $("#add_group_button").fancybox(); $("#add_request_button").fancybox({ 'titleShow': false }); - - - //pane_toggler_button("photo"); - $("input[type='submit']").addClass("button"); - - $(".image_cycle img").load( function() { $(this).fadeIn("slow"); }); + $(".edit_group_button").click(function() { + + var element = $(this).closest("li").children(".group_name").children("a"); + var oldHTML = element.html(); + + var link = element.attr("href"); + + element.toggleClass("editing"); + + if( element.hasClass("editing") ) { + + element.attr("contentEditable", true); + element.focus(); + + + + //remove newline action + $(element).keypress(function(e) { + if (e.which == 13) { + e.preventDefault(); + element.attr("contentEditable", false); + element.toggleClass("editing"); + element.blur(); + + //save changes + $.ajax({ + type: "PUT", + url: link, + data: {"group" : {"name" : element.text() }} + }); + } + }); + + //update all other group links + $(element).keyup(function(e) { + $("a[href='"+link+"']").not(element).text(element.text()); + }); + + } else { + element.attr("contentEditable", false); + } + + }); + });//end document ready diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 18c040055..3b9b768f5 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -11,12 +11,10 @@ body { margin: 0; } a { - color: #018790; color: #556270; text-decoration: none; } a:hover { color: white; - background-color: #018790; background-color: #556270; } .avatar { @@ -473,6 +471,8 @@ h1.big_text { color: #999999; } #group_nav ul > li a:hover { background: none; } + #group_nav ul > li a.editable:hover { + background: yellow; } #group_nav ul .⚙ { margin-left: 4px; } #group_nav ul .⚙ a { @@ -569,3 +569,7 @@ h1.big_text { #global_search form label { font-size: 12px; margin-top: -3px; } + +.editing, .editing:hover { + background-color: yellow; + border: 1px #666666 solid; } diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 6c5c0c117..9ac21c096 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -10,14 +10,12 @@ body :padding 2em :margin 0 a - :color #018790 :color #556270 :text :decoration none &:hover :color #fff :background - :color #018790 :color #556270 .avatar @@ -601,6 +599,8 @@ h1.big_text :color #999 &:hover :background none + &.editable:hover + :background yellow .⚙ :margin @@ -738,4 +738,7 @@ h1.big_text :margin :top -3px - +.editing, .editing:hover + :background + :color yellow + :border 1px #666 solid From 94bb754c3405223df4a336ad24352b4ba1721772 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 15:06:39 -0700 Subject: [PATCH 25/47] Changed parseing person from xml a little, using it for comments. --- app/models/user.rb | 5 ++--- lib/diaspora/parser.rb | 7 +++---- spec/models/user/receive_spec.rb | 7 ------- spec/spec_helper.rb | 2 +- spec/user_encryption_spec.rb | 4 ++-- 5 files changed, 8 insertions(+), 17 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index c12730dba..ab07e4322 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -48,7 +48,6 @@ class User 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 from_group.person_ids.delete(friend.id.to_id) @@ -167,7 +166,6 @@ class User object = Diaspora::Parser.from_xml(xml) Rails.logger.debug("Receiving object:\n#{object.inspect}") Rails.logger.debug("From: #{object.person.inspect}") if object.person - object.person.save if object.is_a?(Comment) && Person.find_by_id(object.person_id).nil? raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.signature_valid? if object.is_a? Retraction if object.type == 'Person' && object.signature_valid? @@ -183,7 +181,7 @@ class User } end elsif object.is_a? Request - person = Diaspora::Parser.get_or_create_person_object_from_xml( xml ) + person = Diaspora::Parser.parse_or_find_person_from_xml( xml ) person.serialized_key ||= object.exported_key object.person = person object.person.save @@ -197,6 +195,7 @@ class User person.save elsif object.is_a?(Comment) + Diaspora::Parser.parse_or_find_person_from_xml( xml ).save if object.person.nil? raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.post.person == self.person || object.verify_post_creator_signature object.save dispatch_comment object unless owns?(object) diff --git a/lib/diaspora/parser.rb b/lib/diaspora/parser.rb index 650c4a4e4..51523724d 100644 --- a/lib/diaspora/parser.rb +++ b/lib/diaspora/parser.rb @@ -6,10 +6,10 @@ module Diaspora Person.first(:id => id) end - def self.get_or_create_person_object_from_xml(xml) + def self.parse_or_find_person_from_xml(xml) doc = Nokogiri::XML(xml) { |cfg| cfg.noblanks } - person_xml = doc.xpath("//request/person").to_s - person_id = doc.xpath("//request/person/_id").text.to_s + person_xml = doc.xpath("//person").to_s + person_id = doc.xpath("//person/_id").text.to_s person = Person.first(:_id => person_id) person ? person : Person.from_xml( person_xml) end @@ -36,6 +36,5 @@ module Diaspora raise e end end - end end diff --git a/spec/models/user/receive_spec.rb b/spec/models/user/receive_spec.rb index 2a08ba76a..980789318 100644 --- a/spec/models/user/receive_spec.rb +++ b/spec/models/user/receive_spec.rb @@ -40,14 +40,7 @@ describe User do @user.groups.size.should == num_groups end - describe 'comments' do - it 'should receive comments from unknown users' do - friend_users(@user, @group, @user2, @group2) - - status_message = @user.post, :status_message, :message => 'message', :to => @group.id - end - end describe 'post refs' do before do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 548c7867d..3b80d4c50 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -43,7 +43,7 @@ end def stub_signature_verification (get_models.map{|model| model.camelize.constantize} - [User]).each do |model| - model.any_instance.stubs(:signature_valid?).returns(true) + model.any_instance.stubs(:verify_signature).returns(true) end end diff --git a/spec/user_encryption_spec.rb b/spec/user_encryption_spec.rb index 47433b80f..de21c343f 100644 --- a/spec/user_encryption_spec.rb +++ b/spec/user_encryption_spec.rb @@ -52,7 +52,7 @@ describe 'user encryption' do remote_user.destroy person_count = Person.all.count - proc {@user.receive xml}.should_not raise_error /Signature was not valid/ + proc {@user.receive xml}.should_not raise_error /ignature was not valid/ Person.all.count.should == person_count + 1 new_person = Person.first(:id => id) new_person.export_key.should == original_key @@ -125,7 +125,7 @@ describe 'user encryption' do xml = message.to_diaspora_xml message.destroy Post.count.should be 0 - proc {@user.receive xml}.should raise_error /Signature was not valid/ + proc {@user.receive xml}.should raise_error /ignature was not valid/ Post.count.should be 0 end From 0e36d89711d4444a1ced3ec09bf67468386fb9e4 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 15:09:54 -0700 Subject: [PATCH 26/47] Also set object.person --- app/models/user.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index ab07e4322..ceaf9f564 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -195,7 +195,9 @@ class User person.save elsif object.is_a?(Comment) - Diaspora::Parser.parse_or_find_person_from_xml( xml ).save if object.person.nil? + object.person = Diaspora::Parser.parse_or_find_person_from_xml( xml ).save if object.person.nil? + object.person.save + Rails.logger.debug("From: #{object.person.inspect}") if object.person raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.post.person == self.person || object.verify_post_creator_signature object.save dispatch_comment object unless owns?(object) From a886b8ddbc8f6089926869041c5fa8643c8e9ad7 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 26 Aug 2010 15:13:33 -0700 Subject: [PATCH 27/47] made photos for album previews 200x200, small thumbnails now at 50x50 --- app/uploaders/image_uploader.rb | 4 ++-- public/stylesheets/application.css | 7 +++++-- public/stylesheets/sass/application.sass | 8 ++++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/uploaders/image_uploader.rb b/app/uploaders/image_uploader.rb index 732367ffa..0ae5ce446 100644 --- a/app/uploaders/image_uploader.rb +++ b/app/uploaders/image_uploader.rb @@ -16,7 +16,7 @@ class ImageUploader < CarrierWave::Uploader::Base end version :thumb_small do - process :resize_to_fill => [30,30] + process :resize_to_fill => [50,50] end version :thumb_medium do @@ -24,7 +24,7 @@ class ImageUploader < CarrierWave::Uploader::Base end version :thumb_large do - process :resize_to_fill => [300,300] + process :resize_to_fill => [200,200] end version :scaled_full do diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 3b9b768f5..f1b9f7945 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -379,9 +379,12 @@ label { /* cycle it! */ .album { position: relative; - height: 300px; - width: 300px; + height: 200px; + width: 200px; display: inline-block; } + .album img { + width: 200px; + height: 200px; } .album .name { position: absolute; z-index: 6; diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 9ac21c096..552049c8e 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -478,10 +478,14 @@ label /* cycle it! */ .album :position relative - :height 300px - :width 300px + :height 200px + :width 200px :display inline-block + img + :width 200px + :height 200px + .name :position absolute :z-index 6 From c3e199a00a81410ec624a6ef0c948dd227886d42 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 15:09:54 -0700 Subject: [PATCH 28/47] Also set object.person --- app/models/user.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index ab07e4322..ceaf9f564 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -195,7 +195,9 @@ class User person.save elsif object.is_a?(Comment) - Diaspora::Parser.parse_or_find_person_from_xml( xml ).save if object.person.nil? + object.person = Diaspora::Parser.parse_or_find_person_from_xml( xml ).save if object.person.nil? + object.person.save + Rails.logger.debug("From: #{object.person.inspect}") if object.person raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.post.person == self.person || object.verify_post_creator_signature object.save dispatch_comment object unless owns?(object) From 3ed191e97279c0351bdcd92ecc79498ddf1ac844 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 16:27:01 -0700 Subject: [PATCH 29/47] MS IZ testing on remote --- app/models/user.rb | 4 +--- spec/models/user/receive_spec.rb | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index ceaf9f564..bbbbd772f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -166,6 +166,7 @@ class User object = Diaspora::Parser.from_xml(xml) Rails.logger.debug("Receiving object:\n#{object.inspect}") Rails.logger.debug("From: #{object.person.inspect}") if object.person + raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.signature_valid? if object.is_a? Retraction if object.type == 'Person' && object.signature_valid? @@ -195,9 +196,6 @@ class User person.save elsif object.is_a?(Comment) - object.person = Diaspora::Parser.parse_or_find_person_from_xml( xml ).save if object.person.nil? - object.person.save - Rails.logger.debug("From: #{object.person.inspect}") if object.person raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.post.person == self.person || object.verify_post_creator_signature object.save dispatch_comment object unless owns?(object) diff --git a/spec/models/user/receive_spec.rb b/spec/models/user/receive_spec.rb index 980789318..9480dd60c 100644 --- a/spec/models/user/receive_spec.rb +++ b/spec/models/user/receive_spec.rb @@ -133,4 +133,37 @@ describe User do Post.count.should be 1 end end + + describe 'comments' do + it 'should correctly marshal to the downstream user' do + + + @user3 = Factory.create(:user) + @group3 = @user3.group(:name => 'heroes') + + puts @user.inspect + puts @group.inspect + friend_users(@user, @group, @user3, @group3) + + + status_message = @user.post :status_message, :message => 'store this!', :to => @group.id + + @user2.receive status_message.to_diaspora_xml + @user3.receive status_message.to_diaspora_xml + + comment = @user2.comment('tada',:on => status_message) + @user.receive comment.to_diaspora_xml + @user.reload + + @user.raw_visible_posts.first.comments.first.nil?.should be false + upstream_comment = @user.raw_visible_posts.first.comments.first + + @user2.person.delete + @user3.receive upstream_comment.to_diaspora_xml + @user3.reload + + @user3.raw_visible_posts.first.comments.first.nil?.should be false + + end + end end From 977786aa654c789986b827898f22be1908dfcde0 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 16:31:57 -0700 Subject: [PATCH 30/47] remove the raise from the top of user receive --- app/models/user.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 79c77f05e..cde7f7012 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -167,7 +167,6 @@ class User Rails.logger.debug("Receiving object:\n#{object.inspect}") Rails.logger.debug("From: #{object.person.inspect}") if object.person - raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.signature_valid? if object.is_a? Retraction if object.type == 'Person' && object.signature_valid? From 81edef9b8aae1fb83b9c42a223500e58d66154fb Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 26 Aug 2010 17:00:45 -0700 Subject: [PATCH 31/47] Fading out every form tag on photo upload was a bad idea --- app/views/photos/_new_photo.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/photos/_new_photo.haml b/app/views/photos/_new_photo.haml index 5bc6d6882..270fc7609 100644 --- a/app/views/photos/_new_photo.haml +++ b/app/views/photos/_new_photo.haml @@ -20,7 +20,7 @@ $("#add_photo_button").html( "Uploading Photos" ); $("#add_photo_loader").fadeIn(400); - $("form").fadeOut(0); + $("form.new_photo").fadeOut(0); $("#progress_report").fadeIn(0); $("#photo_title_status").text("Uploading..."); return true; From 36342db7a8a863ec596ac105323e2bd53f541a7d Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 17:04:40 -0700 Subject: [PATCH 32/47] logging statement in the user receive after parsing the person --- app/models/user.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/user.rb b/app/models/user.rb index cde7f7012..072fd006e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -196,6 +196,7 @@ class User elsif object.is_a?(Comment) object.person = Diaspora::Parser.parse_or_find_person_from_xml( xml ).save if object.person.nil? + Rails.logger.debug("The person parsed from comment xml is #{object.person.inspect}") unless object.person.nil? object.person.save Rails.logger.debug("From: #{object.person.inspect}") if object.person raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.post.person == self.person || object.verify_post_creator_signature From 81438678cde6567611f5459c97520c3d286a9270 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 26 Aug 2010 17:10:19 -0700 Subject: [PATCH 33/47] Refactored more photo js out to photos.js. That should be it for that refactor --- app/views/photos/_new_photo.haml | 30 ------------------------------ public/javascripts/photos.js | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 30 deletions(-) diff --git a/app/views/photos/_new_photo.haml b/app/views/photos/_new_photo.haml index 270fc7609..32fd2a3e8 100644 --- a/app/views/photos/_new_photo.haml +++ b/app/views/photos/_new_photo.haml @@ -1,33 +1,3 @@ -:javascript - $(function() { - $("#photo_image").html5_upload({ - // WE INSERT ALBUM_ID PARAM HERE - url: "/photos?album_id=#{@album.id}", - sendBoundary: window.FormData || $.browser.mozilla, - setName: function(text) { - $("#progress_report_name").text(text); - }, - onFinish: function(event, total){ - $("#add_photo_button").html( "Add Photos" ); - $("#add_photo_loader").fadeOut(400); - - $("#photo_title_status").text("Done!"); - $("#progress_report").html("Good job me!"); - - $("#add_photo_button").addClass("uploading_complete"); - }, - onStart: function(event, total){ - $("#add_photo_button").html( "Uploading Photos" ); - $("#add_photo_loader").fadeIn(400); - - $("form.new_photo").fadeOut(0); - $("#progress_report").fadeIn(0); - $("#photo_title_status").text("Uploading..."); - return true; - } - }); - }); - %h1 %span{:id=>"photo_title_status"} Add photos to diff --git a/public/javascripts/photos.js b/public/javascripts/photos.js index b04585402..3980c008e 100644 --- a/public/javascripts/photos.js +++ b/public/javascripts/photos.js @@ -22,3 +22,30 @@ function reset_photo_fancybox(){ $("#new_photo_pane").html(ajax.responseText) }); } + +$("#photo_image").html5_upload({ + // WE INSERT ALBUM_ID PARAM HERE + url: "/photos?album_id="+$(".album_id")[0].id, + sendBoundary: window.FormData || $.browser.mozilla, + setName: function(text) { + $("#progress_report_name").text(text); + }, + onFinish: function(event, total){ + $("#add_photo_button").html( "Add Photos" ); + $("#add_photo_loader").fadeOut(400); + + $("#photo_title_status").text("Done!"); + $("#progress_report").html("Good job me!"); + + $("#add_photo_button").addClass("uploading_complete"); + }, + onStart: function(event, total){ + $("#add_photo_button").html( "Uploading Photos" ); + $("#add_photo_loader").fadeIn(400); + + $("form.new_photo").fadeOut(0); + $("#progress_report").fadeIn(0); + $("#photo_title_status").text("Uploading..."); + return true; + } +}); From 84e2800c7d0bcbc822690e6c1277c314de359e24 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 17:16:11 -0700 Subject: [PATCH 34/47] added a logger statement to the diaspora person parser --- lib/diaspora/parser.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/diaspora/parser.rb b/lib/diaspora/parser.rb index 51523724d..40c439f86 100644 --- a/lib/diaspora/parser.rb +++ b/lib/diaspora/parser.rb @@ -9,6 +9,7 @@ module Diaspora def self.parse_or_find_person_from_xml(xml) doc = Nokogiri::XML(xml) { |cfg| cfg.noblanks } person_xml = doc.xpath("//person").to_s + Rails.logger.debug("We're in the parser: #{person_xml}") person_id = doc.xpath("//person/_id").text.to_s person = Person.first(:_id => person_id) person ? person : Person.from_xml( person_xml) From 435db1ecb1c60f7182e45264b8f25955d9d661a1 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 26 Aug 2010 17:23:23 -0700 Subject: [PATCH 35/47] Pass the right url in websocketed photo json --- app/models/photo.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/photo.rb b/app/models/photo.rb index 5fcb0ea70..153aee214 100644 --- a/app/models/photo.rb +++ b/app/models/photo.rb @@ -63,6 +63,6 @@ class Photo < Post end def thumb_hash - {:thumb_url => image.url(:thumb_medium), :id => id, :album_id => album_id} + {:thumb_url => url(:thumb_medium), :id => id, :album_id => album_id} end end From 390bf24e14fe78634d9f7335b4c2ea66033414dd Mon Sep 17 00:00:00 2001 From: danielvincent Date: Thu, 26 Aug 2010 17:34:06 -0700 Subject: [PATCH 36/47] Don't try to put yourself in any groups --- app/controllers/people_controller.rb | 6 ++---- app/views/people/show.html.haml | 20 +++++++++----------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb index 0a6a44dfc..c4ea5c044 100644 --- a/app/controllers/people_controller.rb +++ b/app/controllers/people_controller.rb @@ -14,11 +14,9 @@ class PeopleController < ApplicationController def show @person = current_user.visible_person_by_id(params[:id]) @profile = @person.profile - @person_groups = current_user.groups_with_person(@person) - - - @groups_array = current_user.groups.collect{|x| [x.to_s, x.id]} + @groups_with_person = current_user.groups_with_person(@person) + @all_groups = current_user.groups.collect{|x| [x.to_s, x.id]} @posts = Post.where(:person_id => @person.id, :_id.in => current_user.visible_post_ids).paginate :page => params[:page], :order => 'created_at DESC' diff --git a/app/views/people/show.html.haml b/app/views/people/show.html.haml index 76fc3acef..df4b94e59 100644 --- a/app/views/people/show.html.haml +++ b/app/views/people/show.html.haml @@ -13,17 +13,15 @@ -unless @posts.first.nil? %li %i= "last seen: #{how_long_ago(@posts.first)}" - %li - %i= "friends since: #{how_long_ago(@person)}" - %li - ="groups: #{@person_groups}" - = "edit" - = @groups_array.inspect - = form_tag move_person_path - = select :to, :to, @groups_array - = hidden_field_tag :from, :from, :value => @person_groups.first.id - = hidden_field_tag :friend_id, :friend_id, :value => @person.id - = submit_tag "save" + - unless @person == current_user.person + %li + %i= "friends since: #{how_long_ago(@person)}" + %li + = form_tag move_person_path + = select :to, :to, @all_groups + = hidden_field_tag :from, :from, :value => @groups_with_person.first.id + = hidden_field_tag :friend_id, :friend_id, :value => @person.id + = submit_tag "save" %li url: = @person.url From 5ba2fec5c593e16246d44d38e02618ce6660f06f Mon Sep 17 00:00:00 2001 From: Daniel Grippi & Raphael Sofaer Date: Thu, 26 Aug 2010 17:55:09 -0700 Subject: [PATCH 37/47] Adding a .pairs file --- .pairs | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .pairs diff --git a/.pairs b/.pairs new file mode 100644 index 000000000..3930858be --- /dev/null +++ b/.pairs @@ -0,0 +1,8 @@ +pairs: + dg: Daniel Grippi; daniel + rs: Raphael Sofaer; raphael + iz: Ilya Zhitomirskiy; ilya + ms: Maxwell Salzberg; maxwell +email: + prefix: pair + domain: joindiaspora.com From 2dd2f384422ea3024ffc8c51489bccd97f0be375 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 26 Aug 2010 19:15:22 -0700 Subject: [PATCH 38/47] Attempting to make comments from unknown users save --- app/models/person.rb | 8 +++++- lib/diaspora/parser.rb | 1 - spec/lib/diaspora_parser_spec.rb | 19 ++++++++++++++- spec/models/comments_spec.rb | 19 ++++++++++++--- spec/models/user/receive_spec.rb | 42 +++++++++++++++----------------- 5 files changed, 59 insertions(+), 30 deletions(-) diff --git a/app/models/person.rb b/app/models/person.rb index 84edbed3d..8003e8520 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -6,6 +6,7 @@ class Person xml_accessor :email xml_accessor :url xml_accessor :profile, :as => Profile + xml_reader :serialized_key key :email, String, :unique => true @@ -51,6 +52,12 @@ class Person serialized_key = new_key.export end + def serialized_key= new_key + raise "Don't change a key" if serialized_key + + @serialized_key = new_key + end + def public_key_hash Base64.encode64 OpenSSL::Digest::SHA256.new(self.export_key).to_s end @@ -59,7 +66,6 @@ class Person encryption_key.public_key.export end - def owns?(post) self.id == post.person.id end diff --git a/lib/diaspora/parser.rb b/lib/diaspora/parser.rb index 40c439f86..51523724d 100644 --- a/lib/diaspora/parser.rb +++ b/lib/diaspora/parser.rb @@ -9,7 +9,6 @@ module Diaspora def self.parse_or_find_person_from_xml(xml) doc = Nokogiri::XML(xml) { |cfg| cfg.noblanks } person_xml = doc.xpath("//person").to_s - Rails.logger.debug("We're in the parser: #{person_xml}") person_id = doc.xpath("//person/_id").text.to_s person = Person.first(:_id => person_id) person ? person : Person.from_xml( person_xml) diff --git a/spec/lib/diaspora_parser_spec.rb b/spec/lib/diaspora_parser_spec.rb index d57ccc8ce..5197080dc 100644 --- a/spec/lib/diaspora_parser_spec.rb +++ b/spec/lib/diaspora_parser_spec.rb @@ -18,7 +18,7 @@ describe Diaspora::Parser do @xml = Factory.build(:status_message).to_diaspora_xml end - it 'should be able to correctly handle comments' do + it 'should be able to correctly handle comments with person in db' do person = Factory.create(:person, :email => "test@testing.com") post = Factory.create(:status_message, :person => @user.person) comment = Factory.build(:comment, :post => post, :person => person, :text => "Freedom!") @@ -29,6 +29,23 @@ describe Diaspora::Parser do comment.person.should == person comment.post.should == post end + + it 'should be able to correctly handle person on a comment with person not in db' do + commenter = Factory.create(:user) + commenter_group = commenter.group :name => "bruisers" + friend_users(@user, @group, commenter, commenter_group) + post = @user.post :status_message, :message => "hello", :to => @group.id + comment = commenter.comment "Fool!", :on => post + + xml = comment.to_diaspora_xml + commenter.delete + commenter.person.delete + + parsed_person = Diaspora::Parser::parse_or_find_person_from_xml(xml) + parsed_person.save.should be true + parsed_person.email.should == commenter.person.email + parsed_person.profile.should_not be_nil + end it 'should marshal retractions' do person = Factory.create(:person) diff --git a/spec/models/comments_spec.rb b/spec/models/comments_spec.rb index a9066f6d0..95d2c977c 100644 --- a/spec/models/comments_spec.rb +++ b/spec/models/comments_spec.rb @@ -4,7 +4,10 @@ describe Comment do describe "user" do before do @user = Factory.create :user - @user.person.save + @group = @user.group(:name => "Doofuses") + + @user2 = Factory.create(:user) + @group2 = @user2.group(:name => "Lame-faces") end it "should be able to comment on his own status" do status = Factory.create(:status_message, :person => @user.person) @@ -31,10 +34,7 @@ describe Comment do describe 'comment propagation' do before do - @group = @user.group(:name => "Doofuses") - @user2 = Factory.create(:user) - @group2 = @user2.group(:name => "Lame-faces") request = @user.send_friend_request_to(@user2.receive_url, @group.id) reversed_request = @user2.accept_friend_request( request.id, @group2.id ) @@ -79,5 +79,16 @@ describe Comment do @user.receive(comment.to_diaspora_xml) end end + describe 'serialization' do + it 'should serialize the commenter' do + commenter = Factory.create(:user) + commenter_group = commenter.group :name => "bruisers" + friend_users(@user, @group, commenter, commenter_group) + post = @user.post :status_message, :message => "hello", :to => @group.id + comment = commenter.comment "Fool!", :on => post + comment.person.should_not == @user.person + comment.to_diaspora_xml.include?(commenter.person.id.to_s).should be true + end + end end end diff --git a/spec/models/user/receive_spec.rb b/spec/models/user/receive_spec.rb index 9480dd60c..46943512f 100644 --- a/spec/models/user/receive_spec.rb +++ b/spec/models/user/receive_spec.rb @@ -136,34 +136,30 @@ describe User do describe 'comments' do it 'should correctly marshal to the downstream user' do + + friend_users(@user, @group, @user3, @group3) + post = @user.post :status_message, :message => "hello", :to => @group.id - - @user3 = Factory.create(:user) - @group3 = @user3.group(:name => 'heroes') + @user2.receive post.to_diaspora_xml + @user3.receive post.to_diaspora_xml - puts @user.inspect - puts @group.inspect - friend_users(@user, @group, @user3, @group3) + comment = @user2.comment('tada',:on => post) + @user.receive comment.to_diaspora_xml + @user.reload + @user2.person.delete + @user2.delete + comment_id = comment.id - status_message = @user.post :status_message, :message => 'store this!', :to => @group.id - - @user2.receive status_message.to_diaspora_xml - @user3.receive status_message.to_diaspora_xml - - comment = @user2.comment('tada',:on => status_message) - @user.receive comment.to_diaspora_xml - @user.reload - - @user.raw_visible_posts.first.comments.first.nil?.should be false - upstream_comment = @user.raw_visible_posts.first.comments.first - - @user2.person.delete - @user3.receive upstream_comment.to_diaspora_xml - @user3.reload - - @user3.raw_visible_posts.first.comments.first.nil?.should be false + comment.delete + @user3.receive comment.to_diaspora_xml + @user3.reload + new_comment = Comment.find_by_id(comment_id) + new_comment.should_not be_nil + new_comment.person.should_not be_nil + new_comment.person.profile.should_not be_nil + end end end From c629c23232136379e21e1a5e716d564255ebf13c Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 27 Aug 2010 10:05:14 -0700 Subject: [PATCH 39/47] Tests now pass, export_key changed to exported_key, profile.person changed to _parent_document --- app/models/person.rb | 20 +++++++++++--------- app/models/profile.rb | 2 +- app/models/request.rb | 4 ++-- app/models/user.rb | 1 + spec/lib/salmon_salmon_spec.rb | 4 ++-- spec/user_encryption_spec.rb | 6 +++--- 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/app/models/person.rb b/app/models/person.rb index 8003e8520..8c44ca60b 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -6,7 +6,7 @@ class Person xml_accessor :email xml_accessor :url xml_accessor :profile, :as => Profile - xml_reader :serialized_key + xml_reader :exported_key key :email, String, :unique => true @@ -52,20 +52,19 @@ class Person serialized_key = new_key.export end - def serialized_key= new_key - raise "Don't change a key" if serialized_key - - @serialized_key = new_key - end - def public_key_hash - Base64.encode64 OpenSSL::Digest::SHA256.new(self.export_key).to_s + Base64.encode64 OpenSSL::Digest::SHA256.new(self.exported_key).to_s end - def export_key + def exported_key encryption_key.public_key.export end + def exported_key= new_key + raise "Don't change a key" if serialized_key + @serialized_key = new_key + end + def owns?(post) self.id == post.person.id end @@ -83,6 +82,7 @@ class Person end protected + def clean_url self.url ||= "http://localhost:3000/" if self.class == User if self.url @@ -90,7 +90,9 @@ class Person self.url = self.url + '/' if self.url[-1,1] != '/' end end + private + def remove_all_traces Post.all(:person_id => id).each{|p| p.delete} Album.all(:person_id => id).each{|p| p.delete} diff --git a/app/models/profile.rb b/app/models/profile.rb index 8ba7b4def..9bea4fdb0 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -21,7 +21,7 @@ class Profile end def person - Person.first(:id => self.person_id) + self._parent_document end ##this needs to go once we move to Salmon diff --git a/app/models/request.rb b/app/models/request.rb index 5289c757a..d8dd322e0 100644 --- a/app/models/request.rb +++ b/app/models/request.rb @@ -30,13 +30,13 @@ class Request self.new(:destination_url => options[:to], :callback_url => person.receive_url, :person => person, - :exported_key => person.export_key, + :exported_key => person.exported_key, :group_id => options[:into]) end def reverse_for accepting_user self.person = accepting_user.person - self.exported_key = accepting_user.export_key + self.exported_key = accepting_user.exported_key self.destination_url = self.callback_url self.save end diff --git a/app/models/user.rb b/app/models/user.rb index 072fd006e..d9c361efd 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -166,6 +166,7 @@ class User object = Diaspora::Parser.from_xml(xml) Rails.logger.debug("Receiving object:\n#{object.inspect}") Rails.logger.debug("From: #{object.person.inspect}") if object.person + raise "In receive for #{self.real_name}, signature was not valid on: #{object.inspect}" unless object.signature_valid? if object.is_a? Retraction if object.type == 'Person' && object.signature_valid? diff --git a/spec/lib/salmon_salmon_spec.rb b/spec/lib/salmon_salmon_spec.rb index 273762a41..49ffa483d 100644 --- a/spec/lib/salmon_salmon_spec.rb +++ b/spec/lib/salmon_salmon_spec.rb @@ -22,8 +22,8 @@ describe Salmon do x.magic_sig.signable_string.should == z.magic_sig.signable_string - x.verified_for_key?(OpenSSL::PKey::RSA.new(@user.export_key)).should be true - z.verified_for_key?(OpenSSL::PKey::RSA.new(@user.export_key)).should be true + x.verified_for_key?(OpenSSL::PKey::RSA.new(@user.exported_key)).should be true + z.verified_for_key?(OpenSSL::PKey::RSA.new(@user.exported_key)).should be true end diff --git a/spec/user_encryption_spec.rb b/spec/user_encryption_spec.rb index de21c343f..9432ac07b 100644 --- a/spec/user_encryption_spec.rb +++ b/spec/user_encryption_spec.rb @@ -33,7 +33,7 @@ describe 'user encryption' do it 'should send over a public key' do message_queue.stub!(:add_post_request) request = @user.send_friend_request_to("http://example.com/", @group.id) - request.to_diaspora_xml.include?( @user.export_key).should be true + request.to_diaspora_xml.include?( @user.exported_key).should be true end it 'should receive and marshal a public key from a request' do @@ -41,7 +41,7 @@ describe 'user encryption' do remote_user.encryption_key.nil?.should== false #should move this to friend request, but i found it here id = remote_user.person.id - original_key = remote_user.export_key + original_key = remote_user.exported_key request = remote_user.send_friend_request_to( @user.receive_url, remote_user.group(:name => "temp").id) @@ -55,7 +55,7 @@ describe 'user encryption' do proc {@user.receive xml}.should_not raise_error /ignature was not valid/ Person.all.count.should == person_count + 1 new_person = Person.first(:id => id) - new_person.export_key.should == original_key + new_person.exported_key.should == original_key end end From 831609ad158ecf2117a8b38202916e7ebf6692f2 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 27 Aug 2010 10:19:10 -0700 Subject: [PATCH 40/47] Make a stranger that you receive a comment from visible --- app/models/user.rb | 7 ++++++- spec/models/user/receive_spec.rb | 5 ++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index d9c361efd..bbf9c9bd5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -9,10 +9,12 @@ class User key :friend_ids, Array key :pending_request_ids, Array key :visible_post_ids, Array + key :visible_person_ids, Array one :person, :class_name => 'Person', :foreign_key => :owner_id many :friends, :in => :friend_ids, :class_name => 'Person' + many :visible_people, :in => :visible_person_ids, :class_name => 'Person' # One of these needs to go many :pending_requests, :in => :pending_request_ids, :class_name => 'Request' many :raw_visible_posts, :in => :visible_post_ids, :class_name => 'Post' @@ -197,6 +199,8 @@ class User elsif object.is_a?(Comment) object.person = Diaspora::Parser.parse_or_find_person_from_xml( xml ).save if object.person.nil? + self.visible_people << object.person + self.save Rails.logger.debug("The person parsed from comment xml is #{object.person.inspect}") unless object.person.nil? object.person.save Rails.logger.debug("From: #{object.person.inspect}") if object.person @@ -244,7 +248,8 @@ class User def visible_person_by_id( id ) id = id.to_id return self.person if id == self.person.id - friends.detect{|x| x.id == id } + result = friends.detect{|x| x.id == id } + result = visible_people.detect{|x| x.id == id } unless result end def group_by_id( id ) diff --git a/spec/models/user/receive_spec.rb b/spec/models/user/receive_spec.rb index 46943512f..74ddfb882 100644 --- a/spec/models/user/receive_spec.rb +++ b/spec/models/user/receive_spec.rb @@ -135,7 +135,7 @@ describe User do end describe 'comments' do - it 'should correctly marshal to the downstream user' do + it 'should correctly marshal a stranger for the downstream user' do friend_users(@user, @group, @user3, @group3) post = @user.post :status_message, :message => "hello", :to => @group.id @@ -147,6 +147,8 @@ describe User do @user.receive comment.to_diaspora_xml @user.reload + commenter_id = @user2.person.id + @user2.person.delete @user2.delete comment_id = comment.id @@ -160,6 +162,7 @@ describe User do new_comment.person.should_not be_nil new_comment.person.profile.should_not be_nil + @user3.visible_person_by_id(commenter_id).should_not be_nil end end end From 39380c3c06a1c1b0a09af5ae4550618adf7ac9e4 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 27 Aug 2010 10:22:58 -0700 Subject: [PATCH 41/47] check if you are friends before displaying group list --- app/views/people/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/people/show.html.haml b/app/views/people/show.html.haml index df4b94e59..472d6a9dd 100644 --- a/app/views/people/show.html.haml +++ b/app/views/people/show.html.haml @@ -13,7 +13,7 @@ -unless @posts.first.nil? %li %i= "last seen: #{how_long_ago(@posts.first)}" - - unless @person == current_user.person + - unless @person == current_user.person || not current_user.friends.include?(@person) %li %i= "friends since: #{how_long_ago(@person)}" %li From e1d6c9ce03f4757b314d00e2419049a4296e984a Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 27 Aug 2010 10:24:42 -0700 Subject: [PATCH 42/47] fixing person show on stranger --- app/views/people/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/people/show.html.haml b/app/views/people/show.html.haml index 472d6a9dd..1c7dd2368 100644 --- a/app/views/people/show.html.haml +++ b/app/views/people/show.html.haml @@ -13,7 +13,7 @@ -unless @posts.first.nil? %li %i= "last seen: #{how_long_ago(@posts.first)}" - - unless @person == current_user.person || not current_user.friends.include?(@person) + - if @person != current_user.person && current_user.friends.include?(@person) %li %i= "friends since: #{how_long_ago(@person)}" %li From f309299e22dd7e286c8e2ba7e05ac0e2a408fdb5 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 27 Aug 2010 10:26:03 -0700 Subject: [PATCH 43/47] Take out remove friend button on stranger, there should be an add friend --- app/views/people/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/people/show.html.haml b/app/views/people/show.html.haml index 1c7dd2368..b0e568799 100644 --- a/app/views/people/show.html.haml +++ b/app/views/people/show.html.haml @@ -5,7 +5,7 @@ %h1 = @person.real_name - - unless @person.id == current_user.person.id + - if @person != current_user.person && current_user.friends.include?(@person) .right = link_to 'remove friend', @person, :confirm => 'Are you sure?', :method => :delete, :class => "button" From 5ef442d93f95aa31821e382a12a06f2541612dfa Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 27 Aug 2010 10:48:14 -0700 Subject: [PATCH 44/47] RS, IZ; Socket spec now more realistic, visible_person_by_id fixed --- app/models/user.rb | 6 ++---- spec/controllers/groups_controller_spec.rb | 2 +- spec/controllers/people_controller_spec.rb | 1 - spec/controllers/publics_controller_spec.rb | 2 +- spec/controllers/sockets_controller_spec.rb | 6 +----- spec/spec_helper.rb | 14 ++++++-------- 6 files changed, 11 insertions(+), 20 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index bbf9c9bd5..db4de26a5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -250,6 +250,7 @@ class User return self.person if id == self.person.id result = friends.detect{|x| x.id == id } result = visible_people.detect{|x| x.id == id } unless result + result end def group_by_id( id ) @@ -272,7 +273,7 @@ class User end def setup_person - self.person.serialized_key ||= generate_key.export + self.person.serialized_key ||= User.generate_key.export self.person.email ||= email self.person.save! end @@ -281,9 +282,6 @@ class User self.groups.all.collect{|x| x.id} end protected - def generate_key - OpenSSL::PKey::RSA::generate 1024 - end def self.generate_key OpenSSL::PKey::RSA::generate 1024 diff --git a/spec/controllers/groups_controller_spec.rb b/spec/controllers/groups_controller_spec.rb index 36773fd98..590739e6a 100644 --- a/spec/controllers/groups_controller_spec.rb +++ b/spec/controllers/groups_controller_spec.rb @@ -6,7 +6,7 @@ describe GroupsController do @user = Factory.create(:user) @user.group(:name => "lame-os") @person = Factory.create(:person) - request.env['warden'] = mock_model(Warden, :authenticate? => @user, :authenticate! => @user, :authenticate => @user) + sign_in :user, @user end it "on index sets a variable containing all a user's friends when a user is signed in" do diff --git a/spec/controllers/people_controller_spec.rb b/spec/controllers/people_controller_spec.rb index 0bca73e18..bc5348052 100644 --- a/spec/controllers/people_controller_spec.rb +++ b/spec/controllers/people_controller_spec.rb @@ -4,7 +4,6 @@ describe PeopleController do render_views before do @user = Factory.create(:user) - request.env['warden'] = mock_model(Warden, :authenticate? => @user, :authenticate! => @user, :authenticate => @user) sign_in :user, @user @user.group(:name => "lame-os") diff --git a/spec/controllers/publics_controller_spec.rb b/spec/controllers/publics_controller_spec.rb index dfe1e461b..cc6bd85b5 100644 --- a/spec/controllers/publics_controller_spec.rb +++ b/spec/controllers/publics_controller_spec.rb @@ -6,7 +6,7 @@ describe PublicsController do before do @user = Factory.create(:user) @user.person.save - request.env['warden'] = mock_model(Warden, :authenticate? => @user, :authenticate! => @user, :authenticate => @user) + sign_in :user, @user end describe 'receive endpoint' do diff --git a/spec/controllers/sockets_controller_spec.rb b/spec/controllers/sockets_controller_spec.rb index 23a02d61e..26318dad6 100644 --- a/spec/controllers/sockets_controller_spec.rb +++ b/spec/controllers/sockets_controller_spec.rb @@ -6,15 +6,11 @@ class SocketsController end end -describe 'SocketsController' do +describe SocketsController do render_views before do @user = Factory.create(:user) - SocketsController.unstub!(:new) @controller = SocketsController.new - @controller.request = mock_model(Request, :env => - {'warden' => mock_model(Warden, :authenticate? => @user, :authenticate! => @user, :authenticate => @user)}) - stub_sockets_controller end it 'should unstub the websockets' do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 3b80d4c50..ff5cb46f3 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -21,24 +21,22 @@ RSpec.configure do |config| config.before(:suite) do DatabaseCleaner.clean_with(:truncation) stub_signature_verification + end config.before(:each) do DatabaseCleaner.start - stub_sockets_controller + stub_sockets end config.after(:each) do DatabaseCleaner.clean end end - def stub_sockets_controller - mock_sockets_controller = mock('sockets mock') - mock_sockets_controller.stub!(:incoming).and_return(true) - mock_sockets_controller.stub!(:new_subscriber).and_return(true) - mock_sockets_controller.stub!(:outgoing).and_return(true) - mock_sockets_controller.stub!(:delete_subscriber).and_return(true) - SocketsController.stub!(:new).and_return(mock_sockets_controller) + def stub_sockets + Diaspora::WebSocket.stub!(:push_to_user).and_return(true) + Diaspora::WebSocket.stub!(:subscribe).and_return(true) + Diaspora::WebSocket.stub!(:unsubscribe).and_return(true) end def stub_signature_verification From 5ff1bdae904fc700762a59fb12d2e685ca61bd1b Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 27 Aug 2010 12:23:20 -0700 Subject: [PATCH 45/47] Groups can now be batch edited --- app/controllers/groups_controller.rb | 24 +++++++++++++++--------- app/controllers/people_controller.rb | 2 +- app/views/groups/edit.html.haml | 18 ++++++++++-------- app/views/people/show.html.haml | 4 ++-- config/routes.rb | 2 +- public/javascripts/group-edit.js | 13 +++++++++++++ 6 files changed, 42 insertions(+), 21 deletions(-) diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 8b1cd73af..3bd27c72b 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -49,15 +49,21 @@ class GroupsController < ApplicationController end end - def move_person - unless current_user.move_friend( :friend_id => params[:friend_id], :from => params[:from], :to => params[:to][:to]) - flash[:error] = "didn't work #{params.inspect}" - end - if group = Group.first(:id => params[:to][:to]) - redirect_to group - else - redirect_to Person.first(:id => params[:friend_id]) - end + def move_friends + pp params + + params[:moves].each{ |move| + move = move[1] + unless current_user.move_friend(move) + flash[:error] = "Group editing failed for friend #{Person.find_by_id( move[:friend_id] ).real_name}." + redirect_to Group.first, :action => "edit" + return + end + } + + flash[:notice] = "Groups edited successfully." + redirect_to Group.first, :action => "edit" + end end diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb index c4ea5c044..861eb0817 100644 --- a/app/controllers/people_controller.rb +++ b/app/controllers/people_controller.rb @@ -16,7 +16,7 @@ class PeopleController < ApplicationController @profile = @person.profile @groups_with_person = current_user.groups_with_person(@person) - @all_groups = current_user.groups.collect{|x| [x.to_s, x.id]} + @groups_dropdown_array = current_user.groups.collect{|x| [x.to_s, x.id]} @posts = Post.where(:person_id => @person.id, :_id.in => current_user.visible_post_ids).paginate :page => params[:page], :order => 'created_at DESC' diff --git a/app/views/groups/edit.html.haml b/app/views/groups/edit.html.haml index c8e3e4fc4..b7a9da65d 100644 --- a/app/views/groups/edit.html.haml +++ b/app/views/groups/edit.html.haml @@ -3,22 +3,24 @@ = javascript_include_tag 'group-edit.js' -%h1.big_text +%h1{:class => 'big_text', :id => 'group_title'} .back = link_to "⇧ #{@group.name}", @group = "Editing Groups" -%ul +%ul#group_list - for group in @groups - %li.group + %li{:class => 'group'} = group.name - %ul - stuff + %ul{:id => group.id} + dummy person for dropping onto -for person in group.people - %li.person - = image_tag (person.profile.image_url(:thumb_small),:size => "30x30") unless person.profile.image_url.nil? + %li{:class => 'person', :id => person.id, :from_group_id => group.id} + = image_tag(person.profile.image_url(:thumb_small),:size => "30x30") unless person.profile.image_url.nil? = person.real_name - +%p + %br + = link_to 'Update Groups', '#', :class => 'button', :id => "move_friends_link" #content_bottom .back diff --git a/app/views/people/show.html.haml b/app/views/people/show.html.haml index b0e568799..eab323e83 100644 --- a/app/views/people/show.html.haml +++ b/app/views/people/show.html.haml @@ -17,8 +17,8 @@ %li %i= "friends since: #{how_long_ago(@person)}" %li - = form_tag move_person_path - = select :to, :to, @all_groups + = form_tag move_friends_path + = select :to, :to, @groups_dropdown_array, :selected_value => @groups_with_person.first.id = hidden_field_tag :from, :from, :value => @groups_with_person.first.id = hidden_field_tag :friend_id, :friend_id, :value => @person.id = submit_tag "save" diff --git a/config/routes.rb b/config/routes.rb index e3c5b352a..663dc9785 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -20,7 +20,7 @@ Diaspora::Application.routes.draw do match 'login', :to => 'devise/sessions#new', :as => "new_user_session" match 'logout', :to => 'devise/sessions#destroy', :as => "destroy_user_session" match 'get_to_the_choppa', :to => 'devise/registrations#new', :as => "new_user_registration" - match 'groups/move_person', :to => 'groups#move_person', :as => 'move_person' + match 'groups/move_friends', :to => 'groups#move_friends', :as => 'move_friends' #public routes # match 'webfinger', :to => 'publics#webfinger' diff --git a/public/javascripts/group-edit.js b/public/javascripts/group-edit.js index e92cadb75..94ca47cfd 100644 --- a/public/javascripts/group-edit.js +++ b/public/javascripts/group-edit.js @@ -1,3 +1,10 @@ +$('#move_friends_link').live( 'click', + function(){ + $.post('/groups/move_friends', + {'moves' : $('#group_list').data()}, + function(){ $('#group_title').html("Groups edited successfully!");}); + }); + $(function() { $("li .person").draggable({ revert: true @@ -7,8 +14,14 @@ $(function() { drop: function(event, ui) { $(this).closest("ul").append(ui.draggable) //$("
  • ").text(ui.draggable.text()).appendTo(this).draggable(); + var move = {}; + move[ 'friend_id' ] = ui.draggable[0].id + move[ 'to' ] = $(this)[0].id; + move[ 'from' ] = ui.draggable[0].getAttribute('from_group_id'); + $('#group_list').data( ui.draggable[0].id, move); } }); + }); From 7223d2172117a98ee6e8dc5725a789d907ceaa50 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 27 Aug 2010 12:27:16 -0700 Subject: [PATCH 46/47] Add singular move friend route, it must be eliminated later --- app/controllers/groups_controller.rb | 11 ++++++++++- app/views/people/show.html.haml | 2 +- config/routes.rb | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 3bd27c72b..145db190c 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -65,5 +65,14 @@ class GroupsController < ApplicationController redirect_to Group.first, :action => "edit" end - + def move_friend + unless current_user.move_friend( :friend_id => params[:friend_id], :from => params[:from], :to => params[:to][:to]) + flash[:error] = "didn't work #{params.inspect}" + end + if group = Group.first(:id => params[:to][:to]) + redirect_to group + else + redirect_to Person.first(:id => params[:friend_id]) + end + end end diff --git a/app/views/people/show.html.haml b/app/views/people/show.html.haml index eab323e83..0fc753524 100644 --- a/app/views/people/show.html.haml +++ b/app/views/people/show.html.haml @@ -17,7 +17,7 @@ %li %i= "friends since: #{how_long_ago(@person)}" %li - = form_tag move_friends_path + = form_tag move_friend_path = select :to, :to, @groups_dropdown_array, :selected_value => @groups_with_person.first.id = hidden_field_tag :from, :from, :value => @groups_with_person.first.id = hidden_field_tag :friend_id, :friend_id, :value => @person.id diff --git a/config/routes.rb b/config/routes.rb index 663dc9785..11904a654 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -21,6 +21,7 @@ Diaspora::Application.routes.draw do match 'logout', :to => 'devise/sessions#destroy', :as => "destroy_user_session" match 'get_to_the_choppa', :to => 'devise/registrations#new', :as => "new_user_registration" match 'groups/move_friends', :to => 'groups#move_friends', :as => 'move_friends' + match 'groups/move_friend', :to => 'groups#move_friend', :as => 'move_friend' #public routes # match 'webfinger', :to => 'publics#webfinger' From 7b36ae70098612bcb2497a9e4f48e262d372232a Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 27 Aug 2010 12:28:39 -0700 Subject: [PATCH 47/47] Move back link out of big_text --- app/views/groups/edit.html.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/groups/edit.html.haml b/app/views/groups/edit.html.haml index b7a9da65d..2f87b23f1 100644 --- a/app/views/groups/edit.html.haml +++ b/app/views/groups/edit.html.haml @@ -2,10 +2,10 @@ = javascript_include_tag 'jquery-ui-1.8.4.custom.min.js' = javascript_include_tag 'group-edit.js' +.back + = link_to "⇧ #{@group.name}", @group %h1{:class => 'big_text', :id => 'group_title'} - .back - = link_to "⇧ #{@group.name}", @group = "Editing Groups" %ul#group_list