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..bd7818824 100644 --- a/app/views/js/_websocket_js.haml +++ b/app/views/js/_websocket_js.haml @@ -11,7 +11,20 @@ ws.onmessage = function(evt) { var obj = jQuery.parseJSON(evt.data); debug("got a " + obj['class']); - if((location.href.indexOf(obj['class']) != -1 ) || (location.pathname == '/')) { + + + 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 == '/')) && onPageOne()) { $("#stream").prepend( $(obj['html']).fadeIn("fast", function(){ $("#stream label:first").inFieldLabels(); @@ -24,4 +37,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/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..4389e9106 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -30,22 +30,26 @@ 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 -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 +#} 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 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