From 96319775977a27a6550fc6c646976242bfc5a1aa Mon Sep 17 00:00:00 2001 From: maxwell Date: Wed, 30 Jun 2010 17:29:32 -0700 Subject: [PATCH 1/6] RS MS comments propagate, and show up IN REAL TIME --- app/models/comment.rb | 8 +++++++- app/views/comments/_comment.html.haml | 8 ++++---- app/views/comments/_comments.html.haml | 6 +++--- app/views/js/_websocket_js.haml | 10 ++++++++-- app/views/layouts/application.html.haml | 4 ++-- lib/socket_render.rb | 13 ++++++++++++- 6 files changed, 36 insertions(+), 13 deletions(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index 6aa5049ba..98b0300fc 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -9,7 +9,6 @@ class Comment xml_accessor :post_id key :text, String - key :target, String timestamps! key :post_id, ObjectId @@ -19,6 +18,8 @@ class Comment belongs_to :person, :class_name => "Person" after_save :send_friends_comments_on_my_posts + after_save :send_to_view + def ==(other) (self.message == other.message) && (self.person.email == other.person.email) @@ -32,4 +33,9 @@ class Comment self.push_to(self.post.friends_with_permissions) end end + + + def send_to_view + WebSocket.update_clients(self) + end end \ No newline at end of file diff --git a/app/views/comments/_comment.html.haml b/app/views/comments/_comment.html.haml index eb97c4123..6ae6e41a4 100644 --- a/app/views/comments/_comment.html.haml +++ b/app/views/comments/_comment.html.haml @@ -1,6 +1,6 @@ -%li.comment{:id => comment.id} +%li.comment{:id => post.id} %span.from - = link_to_person comment.person - = auto_link comment.text + = link_to_person post.person + = auto_link post.text %div.time - = "#{time_ago_in_words(comment.updated_at)} ago" + = "#{time_ago_in_words(post.updated_at)} ago" diff --git a/app/views/comments/_comments.html.haml b/app/views/comments/_comments.html.haml index 89237d1d7..9bcef1291 100644 --- a/app/views/comments/_comments.html.haml +++ b/app/views/comments/_comments.html.haml @@ -1,7 +1,7 @@ %div.comments - %ul.comment_set + %ul.comment_set{:id => post.id} - for comment in post.comments - = render "comments/comment", :comment => comment + = render 'comments/comment', :post => comment %li.comment - = render "comments/new_comment", :post => post + = render 'comments/new_comment', :post => post diff --git a/app/views/js/_websocket_js.haml b/app/views/js/_websocket_js.haml index 00d130029..1fc933a25 100644 --- a/app/views/js/_websocket_js.haml +++ b/app/views/js/_websocket_js.haml @@ -11,7 +11,13 @@ ws.onmessage = function(evt) { var obj = jQuery.parseJSON(evt.data); debug("got a " + obj['class']); - if((location.href.indexOf(obj['class']) != -1 ) || (location.pathname == '/')) { + + if (obj['class']=="comments"){ + var post_id = obj['post_id'] + $('#'+ obj['post_id'] + ' .comment_set li:last' ).before( + $(obj['html']).fadeIn("fast", function(){}) + ) + }else if((location.href.indexOf(obj['class']) != -1 ) || (location.pathname == '/')) { $("#stream").prepend( $(obj['html']).fadeIn("fast", function(){ $("#stream label:first").inFieldLabels(); @@ -24,4 +30,4 @@ ws.onopen = function() { ws.send(location.pathname); debug("connected..."); - };}); \ No newline at end of file + };}); diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 94b5b87dc..0f604ef70 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -12,8 +12,8 @@ /= javascript_include_tag"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" = javascript_include_tag 'jquery142', 'rails', 'view', 'publisher' = javascript_include_tag 'tiny_mce/tiny_mce.js','jquery.infieldlabel' - = render "js/google_a_js" - = render "js/websocket_js" + = render 'js/google_a_js' + = render 'js/websocket_js' = csrf_meta_tag = yield(:head) diff --git a/lib/socket_render.rb b/lib/socket_render.rb index 0f3c8dd8b..eb88613b7 100644 --- a/lib/socket_render.rb +++ b/lib/socket_render.rb @@ -22,11 +22,22 @@ module SocketRenderer puts e.message raise e end - {:class =>object.class.to_s.underscore.pluralize, :html => v} + + {:class =>object.class.to_s.underscore.pluralize, :html => v, :post_id => obj_id(object)} end def self.view_for(object) + puts object.inspect + puts @view.type_partial(object) + @view.render @view.type_partial(object), :post => object end + def self.obj_id(object) + if object.is_a? Post + object.id + else + object.post.id + end + end end From da59078b647e98d0b7c5c69d9f64bc40f00533fd Mon Sep 17 00:00:00 2001 From: maxwell Date: Wed, 30 Jun 2010 17:49:45 -0700 Subject: [PATCH 2/6] fixed small js bug so it only adds to the base route (or page 1 on pagination) --- app/views/js/_websocket_js.haml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/views/js/_websocket_js.haml b/app/views/js/_websocket_js.haml index 1fc933a25..bd7818824 100644 --- a/app/views/js/_websocket_js.haml +++ b/app/views/js/_websocket_js.haml @@ -11,13 +11,20 @@ ws.onmessage = function(evt) { var obj = jQuery.parseJSON(evt.data); debug("got a " + obj['class']); - + + + function onPageOne() { + var c = document.location.search.charAt(document.location.search.length-1); + return ((c =='') || (c== '1')) + } + + if (obj['class']=="comments"){ var post_id = obj['post_id'] $('#'+ obj['post_id'] + ' .comment_set li:last' ).before( $(obj['html']).fadeIn("fast", function(){}) ) - }else if((location.href.indexOf(obj['class']) != -1 ) || (location.pathname == '/')) { + }else if(((location.href.indexOf(obj['class']) != -1 ) || (location.pathname == '/')) && onPageOne()) { $("#stream").prepend( $(obj['html']).fadeIn("fast", function(){ $("#stream label:first").inFieldLabels(); From 12bbdb38a7c8a7db54d0e439f3dfab81a026ada9 Mon Sep 17 00:00:00 2001 From: danielvincent Date: Wed, 30 Jun 2010 18:03:25 -0700 Subject: [PATCH 3/6] DG IZ deploying with correct names --- db/seeds/backer.rb | 2 +- db/seeds/tom.rb | 4 ++-- lib/tasks/db.rake | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/db/seeds/backer.rb b/db/seeds/backer.rb index 9e9a22ec3..40698cac9 100644 --- a/db/seeds/backer.rb +++ b/db/seeds/backer.rb @@ -30,7 +30,7 @@ def create(backer_number, password) ] # Create seed user - user = User.create( :email => "b#{backer_number}@joindiaspora.com", :password => "#{password}", :profile => Profile.create( :first_name => names[backer_number][0], :last_name => names[backer_number][1] )) + user = User.create( :email => "#{names[backer_number][1]}@joindiaspora.com", :password => "#{password}", :profile => Profile.create( :first_name => names[backer_number][0], :last_name => names[backer_number][1] )) # Make friends with Diaspora Tom Friend.create( :email => "tom@joindiaspora.com", :url => "http://tom.joindiaspora.com/", :profile => Profile.create(:first_name => "Diaspora", :last_name => "Tom")) diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index 7ed50cd10..4c29b312e 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -30,8 +30,8 @@ names = [ ["George", "Washington"], ] # Make friends -(1..10).each { |n| - Friend.create( :email => "b#{n}@joindiaspora.com", :url => "http://b#{n}.joindiaspora.com/", :profile => Profile.create(:first_name => names[n-1][0], :last_name => names[n-1][1])) +(0..9).each { |n| + Friend.create( :email => "#{names[n][1]}@joindiaspora.com", :url => "http://#{names[n][1]}.joindiaspora.com/", :profile => Profile.create(:first_name => names[n][0], :last_name => names[n][1])) } # Populate feed diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 6f1a47c2c..22a9d8c37 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -20,7 +20,9 @@ namespace :db do # Specifiy what models to remove Post.delete_all - Person.delete_all + #Person.delete_all + User.delete_all + Friend.delete_all Profile.delete_all end From 8038fb85858eff8ec55b7a06a25364ec9409aa3a Mon Sep 17 00:00:00 2001 From: danielvincent Date: Wed, 30 Jun 2010 18:43:51 -0700 Subject: [PATCH 4/6] DG IZ MS; eventmachine in tom's seed script --- db/seeds/tom.rb | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index 4c29b312e..405c9f0ee 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -35,17 +35,21 @@ names = [ ["George", "Washington"], } # Populate feed -StatusMessage.create(:message => "There's a bomb in the lasagna!?", :person => user) -Bookmark.create(:title => "xkcd", :link => "http://xkcd.com/743/", :person => user ) -StatusMessage.create(:message => "I switched to Motoroi today, a Motorola Android-based phone, in Korea. Now, I am using Android phones in both the U.S. and Korea", :person => user, :created_at => Time.now-930) -StatusMessage.create(:message => "I had 5 hours to study for it :-( GREs on Thursday. Wunderbar.", :person => user, :created_at => Time.now-43990) -StatusMessage.create(:message => "Spotted in toy story 3: google maps, OSX, and windows XP. Two out of three isn't bad.", :person => user, :created_at => Time.now-4390) -Bookmark.create( :title => "Reddit", :link => "http://reddit.com", :person => user, :created_at => Time.now-54390) -Blog.create(:title => "I Love Rock'N'Roll - Joan Jett & The Blackhearts", :body => "

The loudspeakers played this song as we walked into the city pool for the first time this summer. Those loudspeakers make every song sound fresh even if I have heard it a thousand times and their effect on this song was no different. Joan sounded young and strong and ready, and for a moment I forgot where or when I was.

also i can tell it won’t be long and also happy summer imaginary constructs -mumblelard

", :person => user, :created_at => Time.now-3090) -StatusMessage.create(:message => "Commercials for IE make me SO MAD and my friends just don't get why.", :person => user, :created_at => Time.now-30900) -Bookmark.create(:title => "Zombo.com", :link => "http://zombo.com", :person => user, :created_at => Time.now-9090) -StatusMessage.create(:message => "Why do I have \"No More Heroes\" by Westlife on repeat all day?", :person => user, :created_at => Time.now-590000) -StatusMessage.create(:message => "Mmm. Friday night. Acknowledged.", :person => user, :created_at => Time.now-503900) -StatusMessage.create(:message => "Getting a universal remote is the epitome of laziness, I do declare.", :person => user, :created_at => Time.now-4400) -StatusMessage.create(:message => "Does anyone know how to merge two Skype contact entries of the same person? (i.e. one Skype ID and one mobile number)", :person => user, :created_at => Time.now-400240) -StatusMessage.create(:message => "A cool, cool morning for once.", :person => user, :created_at => Time.now-150000) +EventMachine::run{ + StatusMessage.create(:message => "There's a bomb in the lasagna!?", :person => user) + Bookmark.create(:title => "xkcd", :link => "http://xkcd.com/743/", :person => user ) + StatusMessage.create(:message => "I switched to Motoroi today, a Motorola Android-based phone, in Korea. Now, I am using Android phones in both the U.S. and Korea", :person => user, :created_at => Time.now-930) + StatusMessage.create(:message => "I had 5 hours to study for it :-( GREs on Thursday. Wunderbar.", :person => user, :created_at => Time.now-43990) + StatusMessage.create(:message => "Spotted in toy story 3: google maps, OSX, and windows XP. Two out of three isn't bad.", :person => user, :created_at => Time.now-4390) + Bookmark.create( :title => "Reddit", :link => "http://reddit.com", :person => user, :created_at => Time.now-54390) + Blog.create(:title => "I Love Rock'N'Roll - Joan Jett & The Blackhearts", :body => "

The loudspeakers played this song as we walked into the city pool for the first time this summer. Those loudspeakers make every song sound fresh even if I have heard it a thousand times and their effect on this song was no different. Joan sounded young and strong and ready, and for a moment I forgot where or when I was.

also i can tell it won’t be long and also happy summer imaginary constructs -mumblelard

", :person => user, :created_at => Time.now-3090) + StatusMessage.create(:message => "Commercials for IE make me SO MAD and my friends just don't get why.", :person => user, :created_at => Time.now-30900) + Bookmark.create(:title => "Zombo.com", :link => "http://zombo.com", :person => user, :created_at => Time.now-9090) + StatusMessage.create(:message => "Why do I have \"No More Heroes\" by Westlife on repeat all day?", :person => user, :created_at => Time.now-590000) + StatusMessage.create(:message => "Mmm. Friday night. Acknowledged.", :person => user, :created_at => Time.now-503900) + StatusMessage.create(:message => "Getting a universal remote is the epitome of laziness, I do declare.", :person => user, :created_at => Time.now-4400) + StatusMessage.create(:message => "Does anyone know how to merge two Skype contact entries of the same person? (i.e. one Skype ID and one mobile number)", :person => user, :created_at => Time.now-400240) + StatusMessage.create(:message => "A cool, cool morning for once.", :person => user, :created_at => Time.now-150000) + + EventMachine::stop +} From 44362ee15418fbf0df9f1472841265798707c43f Mon Sep 17 00:00:00 2001 From: danielvincent Date: Wed, 30 Jun 2010 18:53:29 -0700 Subject: [PATCH 5/6] DG IZ MS; fixing tom's seed script --- db/seeds/tom.rb | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index 405c9f0ee..1a470ca9c 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -35,21 +35,21 @@ names = [ ["George", "Washington"], } # Populate feed -EventMachine::run{ - StatusMessage.create(:message => "There's a bomb in the lasagna!?", :person => user) - Bookmark.create(:title => "xkcd", :link => "http://xkcd.com/743/", :person => user ) - StatusMessage.create(:message => "I switched to Motoroi today, a Motorola Android-based phone, in Korea. Now, I am using Android phones in both the U.S. and Korea", :person => user, :created_at => Time.now-930) - StatusMessage.create(:message => "I had 5 hours to study for it :-( GREs on Thursday. Wunderbar.", :person => user, :created_at => Time.now-43990) - StatusMessage.create(:message => "Spotted in toy story 3: google maps, OSX, and windows XP. Two out of three isn't bad.", :person => user, :created_at => Time.now-4390) - Bookmark.create( :title => "Reddit", :link => "http://reddit.com", :person => user, :created_at => Time.now-54390) - Blog.create(:title => "I Love Rock'N'Roll - Joan Jett & The Blackhearts", :body => "

The loudspeakers played this song as we walked into the city pool for the first time this summer. Those loudspeakers make every song sound fresh even if I have heard it a thousand times and their effect on this song was no different. Joan sounded young and strong and ready, and for a moment I forgot where or when I was.

also i can tell it won’t be long and also happy summer imaginary constructs -mumblelard

", :person => user, :created_at => Time.now-3090) - StatusMessage.create(:message => "Commercials for IE make me SO MAD and my friends just don't get why.", :person => user, :created_at => Time.now-30900) - Bookmark.create(:title => "Zombo.com", :link => "http://zombo.com", :person => user, :created_at => Time.now-9090) - StatusMessage.create(:message => "Why do I have \"No More Heroes\" by Westlife on repeat all day?", :person => user, :created_at => Time.now-590000) - StatusMessage.create(:message => "Mmm. Friday night. Acknowledged.", :person => user, :created_at => Time.now-503900) - StatusMessage.create(:message => "Getting a universal remote is the epitome of laziness, I do declare.", :person => user, :created_at => Time.now-4400) - StatusMessage.create(:message => "Does anyone know how to merge two Skype contact entries of the same person? (i.e. one Skype ID and one mobile number)", :person => user, :created_at => Time.now-400240) - StatusMessage.create(:message => "A cool, cool morning for once.", :person => user, :created_at => Time.now-150000) - - EventMachine::stop +EM.next_tick { + EM.add_timer(100) do + StatusMessage.create(:message => "There's a bomb in the lasagna!?", :person => user) + Bookmark.create(:title => "xkcd", :link => "http://xkcd.com/743/", :person => user ) + StatusMessage.create(:message => "I switched to Motoroi today, a Motorola Android-based phone, in Korea. Now, I am using Android phones in both the U.S. and Korea", :person => user, :created_at => Time.now-930) + StatusMessage.create(:message => "I had 5 hours to study for it :-( GREs on Thursday. Wunderbar.", :person => user, :created_at => Time.now-43990) + StatusMessage.create(:message => "Spotted in toy story 3: google maps, OSX, and windows XP. Two out of three isn't bad.", :person => user, :created_at => Time.now-4390) + Bookmark.create( :title => "Reddit", :link => "http://reddit.com", :person => user, :created_at => Time.now-54390) + Blog.create(:title => "I Love Rock'N'Roll - Joan Jett & The Blackhearts", :body => "

The loudspeakers played this song as we walked into the city pool for the first time this summer. Those loudspeakers make every song sound fresh even if I have heard it a thousand times and their effect on this song was no different. Joan sounded young and strong and ready, and for a moment I forgot where or when I was.

also i can tell it won’t be long and also happy summer imaginary constructs -mumblelard

", :person => user, :created_at => Time.now-3090) + StatusMessage.create(:message => "Commercials for IE make me SO MAD and my friends just don't get why.", :person => user, :created_at => Time.now-30900) + Bookmark.create(:title => "Zombo.com", :link => "http://zombo.com", :person => user, :created_at => Time.now-9090) + StatusMessage.create(:message => "Why do I have \"No More Heroes\" by Westlife on repeat all day?", :person => user, :created_at => Time.now-590000) + StatusMessage.create(:message => "Mmm. Friday night. Acknowledged.", :person => user, :created_at => Time.now-503900) + StatusMessage.create(:message => "Getting a universal remote is the epitome of laziness, I do declare.", :person => user, :created_at => Time.now-4400) + StatusMessage.create(:message => "Does anyone know how to merge two Skype contact entries of the same person? (i.e. one Skype ID and one mobile number)", :person => user, :created_at => Time.now-400240) + StatusMessage.create(:message => "A cool, cool morning for once.", :person => user, :created_at => Time.now-150000) + end } From 4153b7f38715c345ee865a78d8b2e82139dfaa1e Mon Sep 17 00:00:00 2001 From: danielvincent Date: Wed, 30 Jun 2010 19:31:25 -0700 Subject: [PATCH 6/6] commented out evenmachine for now --- db/seeds/tom.rb | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index 1a470ca9c..4389e9106 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -35,21 +35,21 @@ names = [ ["George", "Washington"], } # Populate feed -EM.next_tick { - EM.add_timer(100) do - StatusMessage.create(:message => "There's a bomb in the lasagna!?", :person => user) - Bookmark.create(:title => "xkcd", :link => "http://xkcd.com/743/", :person => user ) - StatusMessage.create(:message => "I switched to Motoroi today, a Motorola Android-based phone, in Korea. Now, I am using Android phones in both the U.S. and Korea", :person => user, :created_at => Time.now-930) - StatusMessage.create(:message => "I had 5 hours to study for it :-( GREs on Thursday. Wunderbar.", :person => user, :created_at => Time.now-43990) - StatusMessage.create(:message => "Spotted in toy story 3: google maps, OSX, and windows XP. Two out of three isn't bad.", :person => user, :created_at => Time.now-4390) - Bookmark.create( :title => "Reddit", :link => "http://reddit.com", :person => user, :created_at => Time.now-54390) - Blog.create(:title => "I Love Rock'N'Roll - Joan Jett & The Blackhearts", :body => "

The loudspeakers played this song as we walked into the city pool for the first time this summer. Those loudspeakers make every song sound fresh even if I have heard it a thousand times and their effect on this song was no different. Joan sounded young and strong and ready, and for a moment I forgot where or when I was.

also i can tell it won’t be long and also happy summer imaginary constructs -mumblelard

", :person => user, :created_at => Time.now-3090) - StatusMessage.create(:message => "Commercials for IE make me SO MAD and my friends just don't get why.", :person => user, :created_at => Time.now-30900) - Bookmark.create(:title => "Zombo.com", :link => "http://zombo.com", :person => user, :created_at => Time.now-9090) - StatusMessage.create(:message => "Why do I have \"No More Heroes\" by Westlife on repeat all day?", :person => user, :created_at => Time.now-590000) - StatusMessage.create(:message => "Mmm. Friday night. Acknowledged.", :person => user, :created_at => Time.now-503900) - StatusMessage.create(:message => "Getting a universal remote is the epitome of laziness, I do declare.", :person => user, :created_at => Time.now-4400) - StatusMessage.create(:message => "Does anyone know how to merge two Skype contact entries of the same person? (i.e. one Skype ID and one mobile number)", :person => user, :created_at => Time.now-400240) - StatusMessage.create(:message => "A cool, cool morning for once.", :person => user, :created_at => Time.now-150000) - end -} +#EventMachine::run{ + StatusMessage.create(:message => "There's a bomb in the lasagna!?", :person => user) + Bookmark.create(:title => "xkcd", :link => "http://xkcd.com/743/", :person => user ) + StatusMessage.create(:message => "I switched to Motoroi today, a Motorola Android-based phone, in Korea. Now, I am using Android phones in both the U.S. and Korea", :person => user, :created_at => Time.now-930) + StatusMessage.create(:message => "I had 5 hours to study for it :-( GREs on Thursday. Wunderbar.", :person => user, :created_at => Time.now-43990) + StatusMessage.create(:message => "Spotted in toy story 3: google maps, OSX, and windows XP. Two out of three isn't bad.", :person => user, :created_at => Time.now-4390) + Bookmark.create( :title => "Reddit", :link => "http://reddit.com", :person => user, :created_at => Time.now-54390) + Blog.create(:title => "I Love Rock'N'Roll - Joan Jett & The Blackhearts", :body => "

The loudspeakers played this song as we walked into the city pool for the first time this summer. Those loudspeakers make every song sound fresh even if I have heard it a thousand times and their effect on this song was no different. Joan sounded young and strong and ready, and for a moment I forgot where or when I was.

also i can tell it won’t be long and also happy summer imaginary constructs -mumblelard

", :person => user, :created_at => Time.now-3090) + StatusMessage.create(:message => "Commercials for IE make me SO MAD and my friends just don't get why.", :person => user, :created_at => Time.now-30900) + Bookmark.create(:title => "Zombo.com", :link => "http://zombo.com", :person => user, :created_at => Time.now-9090) + StatusMessage.create(:message => "Why do I have \"No More Heroes\" by Westlife on repeat all day?", :person => user, :created_at => Time.now-590000) + StatusMessage.create(:message => "Mmm. Friday night. Acknowledged.", :person => user, :created_at => Time.now-503900) + StatusMessage.create(:message => "Getting a universal remote is the epitome of laziness, I do declare.", :person => user, :created_at => Time.now-4400) + StatusMessage.create(:message => "Does anyone know how to merge two Skype contact entries of the same person? (i.e. one Skype ID and one mobile number)", :person => user, :created_at => Time.now-400240) + StatusMessage.create(:message => "A cool, cool morning for once.", :person => user, :created_at => Time.now-150000) + +# EventMachine::stop +#}