From 42ce3b277b85e94f068de9fbc2d12e99da41a2f9 Mon Sep 17 00:00:00 2001 From: danielgrippi Date: Tue, 29 Nov 2011 14:19:56 -0800 Subject: [PATCH] backbone all the streams, besides user. don't use the acts_as_api way for now. --- app/controllers/application_controller.rb | 5 +++-- app/controllers/aspects_controller.rb | 13 +++++++++--- app/controllers/comment_stream_controller.rb | 10 +++++++++- app/controllers/mentions_controller.rb | 10 +++++++++- app/controllers/multis_controller.rb | 4 ++-- app/controllers/people_controller.rb | 1 - app/controllers/tag_followings_controller.rb | 9 ++++++++- app/controllers/tags_controller.rb | 15 ++++++++++---- app/views/aspects/index.html.haml | 7 +------ app/views/layouts/application.html.haml | 4 ++++ .../shared/_stream_element.html.underscore | 20 ++++++++++--------- app/views/tags/show.haml | 13 ++++++------ public/javascripts/collections/stream.js | 6 ++++-- public/javascripts/models/post.js | 2 +- 14 files changed, 80 insertions(+), 39 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index e6a42867a..b0fbad915 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -146,12 +146,13 @@ class ApplicationController < ActionController::Base end def stream(stream_klass) + authenticate_user! + save_sort_order + stream_klass.new(current_user, :max_time => max_time, :order => sort_order) end def default_stream_action(stream_klass) - authenticate_user! - save_sort_order @stream = stream(stream_klass) if params[:only_posts] diff --git a/app/controllers/aspects_controller.rb b/app/controllers/aspects_controller.rb index d9268c7e9..27967bf39 100644 --- a/app/controllers/aspects_controller.rb +++ b/app/controllers/aspects_controller.rb @@ -11,16 +11,23 @@ class AspectsController < ApplicationController before_filter :ensure_page, :only => :index respond_to :html, :js - respond_to :json, :only => [:show, :create] + respond_to :json, :only => [:show, :create, :index] def index + #@backbone = true + aspect_ids = (session[:a_ids] ? session[:a_ids] : []) @stream = Stream::Aspect.new(current_user, aspect_ids, :order => sort_order, :max_time => params[:max_time].to_i) - if params[:only_posts] - render :partial => 'shared/stream', :locals => {:posts => @stream.stream_posts} + respond_with do |format| + format.html do + if params[:only_posts] + render :partial => 'shared/stream', :locals => {:posts => @stream.stream_posts} + end + end + format.json{ render :json => @stream.stream_posts.to_json(:include => {:author => {:include => :profile}}) } end end diff --git a/app/controllers/comment_stream_controller.rb b/app/controllers/comment_stream_controller.rb index e35579087..a7c759f7a 100644 --- a/app/controllers/comment_stream_controller.rb +++ b/app/controllers/comment_stream_controller.rb @@ -5,7 +5,15 @@ require File.join(Rails.root, 'lib','stream', 'comments') class CommentStreamController < ApplicationController + + respond_to :html, :json + def index - default_stream_action(Stream::Comments) + @backbone = true + + respond_with do |format| + format.html{ default_stream_action(Stream::Comments) } + format.json{ render :json => stream(Stream::Comments).stream_posts.to_json(:include => {:author => {:include => :profile}}) } + end end end diff --git a/app/controllers/mentions_controller.rb b/app/controllers/mentions_controller.rb index 2efbebe3a..ff8eec734 100644 --- a/app/controllers/mentions_controller.rb +++ b/app/controllers/mentions_controller.rb @@ -5,7 +5,15 @@ require File.join(Rails.root, 'lib','stream', 'mention') class MentionsController < ApplicationController + + respond_to :html, :json + def index - default_stream_action(Stream::Mention) + @backbone = true + + respond_with do |format| + format.html{ default_stream_action(Stream::Mention) } + format.json{ render :json => stream(Stream::Mention).stream_posts.to_json(:include => {:author => {:include => :profile}}) } + end end end diff --git a/app/controllers/multis_controller.rb b/app/controllers/multis_controller.rb index 2bf913ce1..fe921dbd6 100644 --- a/app/controllers/multis_controller.rb +++ b/app/controllers/multis_controller.rb @@ -13,8 +13,8 @@ class MultisController < ApplicationController respond_with do |format| format.html{ default_stream_action(Stream::Multi) } - #format.json{ render :json => stream(Stream::Multi).stream_posts.to_json(:include => {:author => {:include => :profile}}) } - format.json{ render_for_api :backbone, :json => stream(Stream::Multi).stream_posts } + format.json{ render :json => stream(Stream::Multi).stream_posts.to_json(:include => {:author => {:include => :profile}}) } + #format.json{ render_for_api :backbone, :json => stream(Stream::Multi).stream_posts } end end end diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb index ac9c708d2..f0d614f1c 100644 --- a/app/controllers/people_controller.rb +++ b/app/controllers/people_controller.rb @@ -133,7 +133,6 @@ class PeopleController < ApplicationController } end end - end def retrieve_remote diff --git a/app/controllers/tag_followings_controller.rb b/app/controllers/tag_followings_controller.rb index 4a98720fb..f2f7c17d0 100644 --- a/app/controllers/tag_followings_controller.rb +++ b/app/controllers/tag_followings_controller.rb @@ -7,8 +7,15 @@ require File.join(Rails.root, 'lib', 'stream', 'followed_tag') class TagFollowingsController < ApplicationController before_filter :authenticate_user! + respond_to :html, :json + def index - default_stream_action(Stream::FollowedTag) + @backbone = true + + respond_with do |format| + format.html{ default_stream_action(Stream::FollowedTag) } + format.json{ render :json => stream(Stream::FollowedTag).stream_posts.to_json(:include => {:author => {:include => :profile}}) } + end end # POST /tag_followings diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index 6289469ce..090503547 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -12,7 +12,7 @@ class TagsController < ApplicationController helper_method :tag_followed? respond_to :html, :only => [:show] - respond_to :json, :only => [:index] + respond_to :json, :only => [:index, :show] def index if params[:q] && params[:q].length > 1 && request.format.json? @@ -35,11 +35,18 @@ class TagsController < ApplicationController end def show + @backbone = true + @stream = Stream::Tag.new(current_user, params[:name], :max_time => max_time, :page => params[:page]) - if params[:only_posts] - render :partial => 'shared/stream', :locals => {:posts => @stream.stream_posts} - return + respond_with do |format| + format.html do + if params[:only_posts] + render :partial => 'shared/stream', :locals => {:posts => @stream.stream_posts} + return + end + end + format.json{ render :json => @stream.stream_posts.to_json(:include => {:author => {:include => :profile}}) } end end diff --git a/app/views/aspects/index.html.haml b/app/views/aspects/index.html.haml index 6aa5fd3e1..0645f6cdb 100644 --- a/app/views/aspects/index.html.haml +++ b/app/views/aspects/index.html.haml @@ -6,11 +6,6 @@ - content_for :head do = include_javascripts :home - - if @backbone - :javascript - window.useBackbone = true; - - - if current_user.getting_started? #welcome-to-diaspora .container{:style => "position: relative;"} @@ -68,6 +63,6 @@ = render 'aspects/aspect_stream', :stream => @stream .span-5.rightBar.last - = render 'aspects/selected_contacts', :stream => @stream + /= render 'aspects/selected_contacts', :stream => @stream = render 'shared/right_sections' diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index c152f47cb..72fb456b6 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -44,6 +44,10 @@ Diaspora.I18n.loadLocale(#{get_javascript_strings_for(I18n.locale).to_json}, "#{I18n.locale}"); Diaspora.Page = "#{params[:controller].camelcase}#{params[:action].camelcase}"; + - if @backbone + :javascript + window.useBackbone = true; + = yield(:head) -unless Rails.env == "production" diff --git a/app/views/shared/_stream_element.html.underscore b/app/views/shared/_stream_element.html.underscore index d0757bcf9..8a7be0157 100644 --- a/app/views/shared/_stream_element.html.underscore +++ b/app/views/shared/_stream_element.html.underscore @@ -1,4 +1,6 @@ -
+<% var post = typeof(status_message) === "undefined" ? (typeof(reshare) === "undefined" ? photo : reshare) : status_message; %> + +
@@ -13,32 +15,32 @@
- - + +
- - <%= author.profile.full_name %> + + <%= post.author.profile.full_name %> - - - +

- <%= text %> + <%= post.text %>

- via <%= provider_display_name %> + via <%= post.provider_display_name %>
diff --git a/app/views/tags/show.haml b/app/views/tags/show.haml index 8d8ca74d8..3b563fec4 100644 --- a/app/views/tags/show.haml +++ b/app/views/tags/show.haml @@ -67,10 +67,11 @@ %hr #main_stream.stream - - if @stream.stream_posts.length > 0 - = render 'shared/stream', :posts => @stream.stream_posts - #pagination - =link_to(t('more'), next_page_path, :class => 'paginate') - - else - = t('.nobody_talking', :tag => @stream.display_tag_name) + - if !@backbone + - if @stream.stream_posts.length > 0 + = render 'shared/stream', :posts => @stream.stream_posts + #pagination + =link_to(t('more'), next_page_path, :class => 'paginate') + - else + = t('.nobody_talking', :tag => @stream.display_tag_name) diff --git a/public/javascripts/collections/stream.js b/public/javascripts/collections/stream.js index e21e8fe1a..27ad23d46 100644 --- a/public/javascripts/collections/stream.js +++ b/public/javascripts/collections/stream.js @@ -1,10 +1,12 @@ var BackboneStream = Backbone.Collection.extend({ url: function() { + var path = document.location.pathname; + if(this.models.length) { - return "stream.json?max_time=" + _.last(this.models).intTime() / 1000; + return path + ".json?max_time=" + _.last(this.models).intTime(); } else { - return "stream.json"; + return path + ".json"; } }, diff --git a/public/javascripts/models/post.js b/public/javascripts/models/post.js index f5adc7767..8d933e030 100644 --- a/public/javascripts/models/post.js +++ b/public/javascripts/models/post.js @@ -1,7 +1,7 @@ var Post = Backbone.Model.extend({ url: "/posts/:id", intTime: function(){ - return +new Date(this.postAttributes().created_at); + return +new Date(this.postAttributes().created_at) / 1000; }, postAttributes: function() {