diff options
author | re4k <re4k@re4k.info> | 2013-03-27 19:16:50 +0900 |
---|---|---|
committer | re4k <re4k@re4k.info> | 2013-03-27 19:16:50 +0900 |
commit | 613da69215bd72a1f04a6e2b5568151a87b9e37a (patch) | |
tree | 13c845626244c5ef13fb957dde732b2a05f9a427 | |
parent | 828b71c4b68186b1e6e729a244544a19d54d5929 (diff) | |
download | aclog-613da69215bd72a1f04a6e2b5568151a87b9e37a.tar.gz |
Add given_favorites_to
Refactor
35 files changed, 248 insertions, 396 deletions
diff --git a/app/assets/stylesheets/_tweets.css.sass b/app/assets/stylesheets/_tweets.css.sass index d5617f6..4d3b32d 100644 --- a/app/assets/stylesheets/_tweets.css.sass +++ b/app/assets/stylesheets/_tweets.css.sass @@ -1,6 +1,5 @@ .items :width 572px - :margin 15px 0 15px 18px .item :margin 15px 0 .tweet @@ -8,7 +7,6 @@ :background #ffffff :border 1px solid #c1c5cb :border-width 1px 0 - //:border-radius 4px 4px 0 0 :padding 15px .avatar :width 60px @@ -25,20 +23,19 @@ :width 473px .user :padding 0 5px 15px - :font-weight bold + a + :color #666666 .name :font-size 14px .screen_name :font-size 12px - a - :color #666666 .text :font-size 18px :line-height 25px :padding 0 5px 15px :word-wrap break-word .meta - :padding 0 5px 15px + :padding 0 5px :color #666666 :font-size 12px .twitter_bird @@ -55,17 +52,13 @@ :display block :float right .stats - //:border 1px solid #c1c5cb - //:border-width 0 1px 1px - //:border-radius 0 0 4px 4px + :background #ffffff :padding 15px - //:background #edf0f4 .dl-horizontal :margin 0 0 3px 0 - dt.info + dt :text-align left :width 60px - :float left .count, .type :color #666666 :display block @@ -73,17 +66,14 @@ :font-weight bold :font-size 14px .type + :font-weight normal :font-size 10px - .height_fix - :float left - :height 48px - :width 0 + :text-transform uppercase dd :margin 0 ul :margin 0 :float left - :list-style none :width 480px li :float left diff --git a/app/assets/stylesheets/application.css.sass b/app/assets/stylesheets/application.css.sass index 5f250b3..c2bd877 100644 --- a/app/assets/stylesheets/application.css.sass +++ b/app/assets/stylesheets/application.css.sass @@ -1,18 +1,10 @@ @import "bootstrap" @import "tweets" +@import "users" +@import "sidebar" -.sidebar - :margin-top 20px - .screen_name - :text-align center - :font-size larger - :margin 10px 0 - .avatar - :text-align center - .table - .data - :text-align right a :text-decoration none :color #3b5998 - +h1 + :font-size 32px diff --git a/app/assets/stylesheets/errors.css.scss b/app/assets/stylesheets/errors.css.scss deleted file mode 100644 index 5b23d97..0000000 --- a/app/assets/stylesheets/errors.css.scss +++ /dev/null @@ -1,3 +0,0 @@ -// Place all the styles related to the errors controller here. -// They will automatically be included in application.css. -// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 3edb6f0..ddd3b3b 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,5 +1,6 @@ class ApplicationController < ActionController::Base protect_from_forgery + before_filter :get_include_user after_filter :set_content_type def set_content_type @@ -7,4 +8,38 @@ class ApplicationController < ActionController::Base response.content_type = "application/xhtml+xml" end end + + def get_include_user + case params[:include_user] + when /^t/ + @include_user = true + end + @include_user ||= false + end + + def render_tweets(a = nil, &blk) + @items = (a || blk.call).page(page).per(count) + + render "shared/tweets" + end + + def page + if params[:page] + i = params[:page].to_i + if i > 0 + ret = i + end + end + ret || 1 + end + + def count + if params[:count] + i = params[:count].to_i + if (1..100) === i + ret = i + end + end + ret || Settings.page_per + end end diff --git a/app/controllers/i_controller.rb b/app/controllers/i_controller.rb index a27f4d7..e05935a 100644 --- a/app/controllers/i_controller.rb +++ b/app/controllers/i_controller.rb @@ -1,40 +1,44 @@ class IController < ApplicationController def best - @items = Tweet - .reacted - .order_by_reactions - .limit(Settings.page_per) + @title = "Best Tweets" + render_tweets do + Tweet + .reacted + .order_by_reactions + end end def recent - @items = Tweet - .recent - .reacted - .order_by_reactions - .limit(Settings.page_per) + @title = "Recent Best Tweets" + render_tweets do + Tweet + .recent + .reacted + .order_by_reactions + end end def timeline - @items = Tweet - .reacted - .order_by_id - .limit(Settings.page_per) + @title = "Public Timeline" + render_tweets do + Tweet + .reacted + .order_by_id + end end def show - tweet_id = Integer(params[:id]) + tweet_id = params[:id].to_i + if tweet_id == 0 + raise Exception.new # FIXME + end + items = Tweet.where(:id => tweet_id) + @user = items.first.user - @item = Tweet.find(tweet_id) - @user = @item.user helpers = ApplicationController.helpers - @title = "\"#{helpers.strip_tags(helpers.format_tweet_text(@item.text))[0...30]}\" from @#{@item.user.screen_name}" - - respond_to do |format| - format.html + @title = "\"#{helpers.strip_tags(helpers.format_tweet_text(items.text))[0...30]}\" from @#{@user.screen_name}" + @title_b = "@#{@user.screen_name}'s Tweet" - format.json do - @include_user = params[:include_user] == "true" - end - end + render_tweets(items) end end diff --git a/app/controllers/main_controller.rb b/app/controllers/main_controller.rb index e12f2aa..0daa55d 100644 --- a/app/controllers/main_controller.rb +++ b/app/controllers/main_controller.rb @@ -1,5 +1,14 @@ class MainController < ApplicationController def index - @title = "Aclog" + @title = "aclog" + render :layout => "index" + end + + def about + @title = "about" + end + + def api + @title = "api" end end diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 20afa15..0cfaf43 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -3,17 +3,17 @@ require "socket" class SessionsController < ApplicationController def callback auth = request.env["omniauth.auth"] - user = Account.find_or_initialize_by(:user_id => auth["uid"]) - user.oauth_token = auth["credentials"]["token"] - user.oauth_token_secret = auth["credentials"]["secret"] - user.consumer_version = Settings.consumer_version - user.save! - session[:user_id] = user.user_id + account = Account.find_or_initialize_by(:user_id => auth["uid"]) + account.oauth_token = auth["credentials"]["token"] + account.oauth_token_secret = auth["credentials"]["secret"] + account.consumer_version = Settings.consumer_version + account.save! + session[:user_id] = account.user_id session[:screen_name] = auth["info"]["nickname"] begin UNIXSocket.open(Settings.register_server_path) do |socket| - socket.write({:type => "register", :id => user.id, :user_id => user.user_id}.to_msgpack) + socket.write({:type => "register", :id => account.id, :user_id => account.user_id}.to_msgpack) end rescue Errno::ECONNREFUSED # receiver not started? diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 2701b71..6cf6285 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,9 +1,10 @@ class UsersController < ApplicationController before_filter :get_user + before_filter :get_user_b def best @title = "@#{@user.screen_name}'s Best Tweets" - render_page do + render_tweets do case params[:order] when /^fav/ @user.tweets.reacted.order_by_favorites @@ -17,7 +18,7 @@ class UsersController < ApplicationController def recent @title = "@#{@user.screen_name}'s Recent Best Tweets" - render_page do + render_tweets do case params[:order] when /^fav/ @user.tweets.recent.reacted.order_by_favorites @@ -33,7 +34,7 @@ class UsersController < ApplicationController raise Exception.new if @user.protected #FIXME @title = "@#{@user.screen_name}'s Newest Tweets" - render_page do + render_tweets do case params[:all] when /^(t|true|1)$/ @user.tweets.order_by_id @@ -45,7 +46,7 @@ class UsersController < ApplicationController def discovered @title = "@#{@user.screen_name}'s Recent Discoveries" - render_page do + render_tweets do case params[:tweets] when /^fav/ Tweet.favorited_by(@user).order_by_id @@ -73,45 +74,106 @@ class UsersController < ApplicationController end end - def from - hash = {} - @user.tweets.order_by_id.limit(100).each do |tweet| - case params[:event] - when /^fav/ - events = tweet.favorites - when /^re?t/ - events = tweet.retweets - else - raise Exception.new("Invalid event type") - end + def favorited_by + if @user_b + @title = "@#{@user.screen_name}'s Tweets" + render_tweets(@user.tweets.favorited_by(@user_b).order_by_id) + else + @title = "Who Favorited @#{@user.screen_name}" + @event_type = "favs" + render_users_by(:favorite) + end + end - events.each do |event| - hash[event.user_id] ||= 0 - hash[event.user_id] += 1 - end + def retweeted_by + if @user_b + @title = "@#{@user.screen_name}'s Tweets" + render_tweets(@user.tweets.retweeted_by(@user_b).order_by_id) + else + @title = "Who Retweeted @#{@user.screen_name}" + @event_type = "retweets" + render_users_by(:retweet) end + end - @usermap = hash.sort_by{|id, count| -count} - .take(50) - .map{|user, count| [User.cached(user), count]} + def given_favorites_to + if @user_b + @title = "@#{@user_b.screen_name}'s Tweets" + render_tweets(@user_b.tweets.favorited_by(@user).order_by_id) + else + @title = "@#{@user.screen_name}'s Favorites" + @event_type = "favs" + render_users_to(:favorite) + end + end + + def given_retweets_to + if @user_b + @title = "@#{@user_b.screen_name}'s Tweets" + render_tweets(@user_b.tweets.retweeted_by(@user).order_by_id) + else + @title = "@#{@user.screen_name}'s Retweets" + @event_type = "retweets" + render_users_to(:retweet) + end end private - def render_page(&blk) - @items = blk.call.page(page).per(count) + def render_users_by(event) + case event + when :favorite + pr = -> tweet{tweet.favorites} + when :retweet + pr = -> tweet{tweet.retweets} + else + raise Exception.new("Invalid event type") + end + @usermap = @user.tweets + .order_by_id + .limit(100) + .inject(Hash.new(0)){|hash, tweet| pr.call(tweet).each{|event| hash[event.user_id] += 1}; hash} + .sort_by{|id, count| -count} + .take(50) + .map{|user, count| [User.cached(user), count]} - respond_to do |format| - format.html - format.json + render "shared/users" + end + + def render_users_to(event) + case event + when :favorite + es = @user.favorites + when :retweet + es = @user.retweets end + + @usermap = es + .order_by_id + .limit(500) + .map{|e| Tweet.cached(e.tweet_id)} + .inject(Hash.new(0)){|hash, tweet| hash[tweet.user_id] += 1; hash} + .sort_by{|user_id, count| -count} + .take(50) + .map{|user_id, count| [User.cached(user_id), count]} + + render "shared/users" end def get_user + if params[:screen_name] == "me" + if session[:user_id] + params[:user_id] = session[:user_id] + else + # FIXME + # redirect? + end + end + if params[:user_id] @user = User.cached(params[:user_id].to_i) end - if !@user || params[:screen_name] + if !@user && params[:screen_name] @user = User.where(:screen_name => params[:screen_name]).first end @@ -121,31 +183,22 @@ class UsersController < ApplicationController end end - def page - if params[:page] - i = params[:page].to_i - if i > 0 - ret = i + def get_user_b + if params[:screen_name_b] == "me" + if session[:user_id] + params[:user_id_b] = session[:user_id] + else + # FIXME + # redirect? end end - ret || 1 - end - def count - if params[:count] - i = params[:count].to_i - if (1..100) === i - ret = i - end + if params[:user_id_b] + @user_b = User.cached(params[:user_id_b].to_i) end - ret || Settings.page_per - end - def include_user - case params[:include_user] - when /^t/ - ret = true + if !@user_b && params[:screen_name_b] + @user_b = User.where(:screen_name => params[:screen_name_b]).first end - ret || false end end diff --git a/app/models/favorite.rb b/app/models/favorite.rb index 6e15dc4..6270534 100644 --- a/app/models/favorite.rb +++ b/app/models/favorite.rb @@ -2,6 +2,10 @@ class Favorite < ActiveRecord::Base belongs_to :tweet, :counter_cache => true belongs_to :user + scope :order_by_id, -> do + order("id DESC") + end + def user User.cached(user_id) end diff --git a/app/models/retweet.rb b/app/models/retweet.rb index 296b877..1d4c8a3 100644 --- a/app/models/retweet.rb +++ b/app/models/retweet.rb @@ -2,6 +2,10 @@ class Retweet < ActiveRecord::Base belongs_to :tweet, :counter_cache => true belongs_to :user + scope :order_by_id, -> do + order("id DESC") + end + def user User.cached(user_id) end diff --git a/app/views/errors/error_500.html.haml b/app/views/errors/error_500.html.haml index e3712eb..ea7b168 100644 --- a/app/views/errors/error_500.html.haml +++ b/app/views/errors/error_500.html.haml @@ -1 +1,2 @@ %h2 500 +%p= @exception diff --git a/app/views/i/_list.html.haml b/app/views/i/_list.html.haml deleted file mode 100644 index 91a14b4..0000000 --- a/app/views/i/_list.html.haml +++ /dev/null @@ -1,2 +0,0 @@ -.items - = render :partial => "shared/tweet", :collection => @items, :as => :item diff --git a/app/views/i/best.html.haml b/app/views/i/best.html.haml deleted file mode 100644 index 1410df9..0000000 --- a/app/views/i/best.html.haml +++ /dev/null @@ -1 +0,0 @@ -= render :partial => "list" diff --git a/app/views/i/recent.html.haml b/app/views/i/recent.html.haml deleted file mode 100644 index 1410df9..0000000 --- a/app/views/i/recent.html.haml +++ /dev/null @@ -1 +0,0 @@ -= render :partial => "list" diff --git a/app/views/i/show.html.haml b/app/views/i/show.html.haml index 672b7e9..421e198 100644 --- a/app/views/i/show.html.haml +++ b/app/views/i/show.html.haml @@ -1,3 +1,2 @@ -= render :partial => "shared/user_nav", :locals => {:user => @user} .items = render :partial => "shared/tweet", :locals => {:item => @item} diff --git a/app/views/i/timeline.html.haml b/app/views/i/timeline.html.haml deleted file mode 100644 index 1410df9..0000000 --- a/app/views/i/timeline.html.haml +++ /dev/null @@ -1 +0,0 @@ -= render :partial => "list" diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 6655e44..0da35f7 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -1,21 +1,7 @@ -!!! xml -%html{xmlns: "http://www.w3.org/1999/xhtml"} - %head - %title= @title - = stylesheet_link_tag "application" - %body - .navbar.navbar-static-top - .navbar-inner - .container - .brand - = link_to "aclog", :controller => "main", :action => "index" - %ul.nav.pull-right - - if session[:screen_name] - %li= link_to "@#{session[:screen_name]}", :controller => "users", :action => "best", :screen_name => session[:screen_name] - %li= link_to "logout", :controller => "sessions", :action => "destroy" - - else - %li= link_to "login", "/i/login" - %li - = link_to "about", :controller => "main", :action => "about" - .container += render :layout => "layouts/base" do + .row + .span2 + .sidebar= render :partial => "shared/sidebar_#{params[:controller]}" + .span10 + %h1= @title_b || @title = yield diff --git a/app/views/main/index.html.haml b/app/views/main/index.html.haml index 106c5de..a0ab627 100644 --- a/app/views/main/index.html.haml +++ b/app/views/main/index.html.haml @@ -5,14 +5,17 @@ = link_to "@KOBA789", "https://twitter.com/KOBA789" さんにサーバーを貸していただけることになりました…!!ありがとうございます!ありがとうございます!!! .alert - 開発中ですので、新規登録を停止したりあまりにふぁぼられ・ふぁぼりが多いユーザーの登録を削除する可能性もあります。 + 開発中です。まだ不具合あるかもしれません。一応動いてるっぽいですが %p - 基本的に Favstar のパクリです。問題があったら私 - = link_to "re4k@re4k.info" + 基本的に Favstar のパクリです。トロフィー・50favs通知以外の機能は一応全部つけたつもり。 + トロフィー機能って必要ですかね、Favstar Pro じゃないし Favstar BAN されたしわかりません。 +%p + 不具合があったら私 + = link_to "re4k@re4k.info", "mailto:re4k@re4k.info" にメールするか、 = link_to "@sg4k", "https://twitter.com/sg4k" へリプライを飛ばしてくれるとありがたいです。 -%h3 URL 等 +%h3 URL %dl %dt best %dd= link_to "/sg4k", "/sg4k" @@ -20,14 +23,7 @@ %dd= link_to "/sg4k/recent", "/sg4k/recent" %dt timeline(Favstar の Recent) %dd= link_to "/sg4k/timeline", "/sg4k/timeline" - %dt timeline(ユーザータイムライン) - %dd= link_to "/sg4k/timeline/all", "/sg4k/timeline/all" - %dt discovered - %dd= link_to "/sg4k/discovered(/{favorite|retweet})", "/sg4k/discovered" - %dt favs_from - %dd= link_to "/sg4k/favs_from", "/sg4k/favs_from" - %dt rts_from - %dd= link_to "/sg4k/rts_from", "/sg4k/rts_from" +%p まだいろいろありますがユーザーのページを開くとサイドバーに一覧があるのでそちらからどうぞ %dl %dt 全体のbest %dd= link_to "/i/best", "/i/best" @@ -37,48 +33,4 @@ %dd= link_to "/i/timeline", "/i/timeline" %p Favstar のパスにアクセスされた場合リダイレクトするようになっているはず… -%h3 API 的な何か -%h4 URL -%dl - %dt ツイート表示 - %dd /i/show.json?id=(tweet_id) - %dt リスト - %dd /users/{best|recent|timeline|discovered}.json?user_id=(user_id)&screen_name=(screen_name) -%h4 パラメータ -%dl - %dt include_user - %dd - %p true or false - %p default: false - %p 共通。ふぁぼ/RTしたユーザー情報を含めるか - %dt screen_name or user_id - %dd - %p Twitter アカウントのもの - %p 必須 - %p リストのみ - %dt count - %dd - %p 1-100 - %p default: 10 - %p リストのみ。件数 - %dt page - %dd - %p 1- - %p default: 1 - %p リストのみ。ページ - %dt all - %dd - %p true or false - %p default: false - %p timeline のみ。反応がなかったツイートも含めるかどうか。 - %dt tweets - %dd - %p favorite or retweet or all - %p default: all - %p discovered のみ。意味は察して疲れた - %dt order - %dd - %p favorite or retweet or all - %p default: all - %p best, recent のみ。察して diff --git a/app/views/shared/_tweet.html.haml b/app/views/shared/_tweet.html.haml index ed2e703..1b75951 100644 --- a/app/views/shared/_tweet.html.haml +++ b/app/views/shared/_tweet.html.haml @@ -19,12 +19,11 @@ %span.source = raw format_source_text(item.source) .stats - - [["FAVS", item.favorites.order("id")], ["RETWEETS", item.retweets.order("id")]].select{|m| m[1].size > 0}.each do |type, actions| + - [["favs", item.favorites.order("id")], ["retweets", item.retweets.order("id")]].select{|m| m[1].size > 0}.each do |type, actions| %dl.dl-horizontal - %dt.info + %dt %span.count= actions.size %span.type= type - .height_fix %dd %ul.inline - actions.take(params[:controller] == "i" && params[:action] == "show" ? actions.size : 20).each do |a| | diff --git a/app/views/shared/_user_nav.html.haml b/app/views/shared/_user_nav.html.haml deleted file mode 100644 index 9e7d272..0000000 --- a/app/views/shared/_user_nav.html.haml +++ /dev/null @@ -1,30 +0,0 @@ -- tweets = @user.tweets.length -- faved = @user.tweets.inject(0){|s, m| s + m.favorites_count} -- rted = @user.tweets.inject(0){|s, m| s + m.retweets_count} -.sidebar - .avatar= image_tag @user.profile_image_url_original, :alt => @user.screen_name, :width => 64, :height => 64, :class => "icon img-rounded" - .screen_name= "@#{@user.screen_name}" - - if @user.registered? - %table.table.table-condensed.records - %caption records - %tr - %td faved - %td.data= faved - %tr - %td rted - %td.data= rted - %tr - %td avg. faved - %td.data= ((faved + 0.0) / tweets).round(2) - - else - .alert.alert-info user has never signed in to aclog. - .user_nav - %ul.nav.nav-tabs.nav-stacked - %li - = link_to "best", :controller => "users", :action => "best", :screen_name => @user.screen_name - %li - = link_to "recent", :controller => "users", :action => "recent", :screen_name => @user.screen_name - %li - = link_to "timeline", :controller => "users", :action => "timeline", :screen_name => @user.screen_name - %li - = link_to "discovered", :controller => "users", :action => "discovered", :screen_name => @user.screen_name diff --git a/app/views/users/_list.html.haml b/app/views/users/_list.html.haml deleted file mode 100644 index ad34007..0000000 --- a/app/views/users/_list.html.haml +++ /dev/null @@ -1,7 +0,0 @@ -.row - .span2= render :partial => "shared/user_nav" - .span10 - .items - = render :partial => "shared/tweet", :collection => @items, :as => :item - - if @items - = paginate @items diff --git a/app/views/users/best.html.haml b/app/views/users/best.html.haml deleted file mode 100644 index 1410df9..0000000 --- a/app/views/users/best.html.haml +++ /dev/null @@ -1 +0,0 @@ -= render :partial => "list" diff --git a/app/views/users/best.json.jbuilder b/app/views/users/best.json.jbuilder deleted file mode 100644 index d2637d3..0000000 --- a/app/views/users/best.json.jbuilder +++ /dev/null @@ -1,4 +0,0 @@ -json.array! @items do |json, item| - json.partial! "shared/tweet", :item => item -end - diff --git a/app/views/users/discovered.html.haml b/app/views/users/discovered.html.haml deleted file mode 100644 index 1410df9..0000000 --- a/app/views/users/discovered.html.haml +++ /dev/null @@ -1 +0,0 @@ -= render :partial => "list" diff --git a/app/views/users/discovered.json.jbuilder b/app/views/users/discovered.json.jbuilder deleted file mode 100644 index d2637d3..0000000 --- a/app/views/users/discovered.json.jbuilder +++ /dev/null @@ -1,4 +0,0 @@ -json.array! @items do |json, item| - json.partial! "shared/tweet", :item => item -end - diff --git a/app/views/users/from.html.haml b/app/views/users/from.html.haml deleted file mode 100644 index 52ba953..0000000 --- a/app/views/users/from.html.haml +++ /dev/null @@ -1,10 +0,0 @@ -.row - .span2= render :partial => "shared/user_nav" - .span10 - .items - .item - %ul.inline - - @usermap.each do |user, count| - %li - .avatar= image_tag user.profile_image_url, :alt => user.screen_name - %span= count diff --git a/app/views/users/info.html.haml b/app/views/users/info.html.haml index d686e82..1beb940 100644 --- a/app/views/users/info.html.haml +++ b/app/views/users/info.html.haml @@ -1,23 +1,17 @@ -.row - .span2= render :partial => "shared/user_nav" - .span10 - .items - .item - %h1= "@#{@user.screen_name}" - .avatar - = image_tag @user.profile_image_url_original, :alt => @user.screen_name - %dl.dl-horizontal - %dt Username - %dd= @user.screen_name - %dt Name - %dd= raw @twitter_user.name - %dt Tweets - %dd= @twitter_user.statuses_count - %dt Following - %dd= @twitter_user.friends_count - %dt Followers - %dd= @twitter_user.followers_count - %dt Favorites - %dd= @twitter_user.favourites_count - %dt Bio - %dd= raw @twitter_user.description +.avatar + = image_tag @user.profile_image_url_original, :alt => @user.screen_name +%dl.dl-horizontal + %dt Username + %dd= @user.screen_name + %dt Name + %dd= raw @twitter_user.name + %dt Tweets + %dd= @twitter_user.statuses_count + %dt Following + %dd= @twitter_user.friends_count + %dt Followers + %dd= @twitter_user.followers_count + %dt Favorites + %dd= @twitter_user.favourites_count + %dt Bio + %dd= raw @twitter_user.description diff --git a/app/views/users/recent.html.haml b/app/views/users/recent.html.haml deleted file mode 100644 index 1410df9..0000000 --- a/app/views/users/recent.html.haml +++ /dev/null @@ -1 +0,0 @@ -= render :partial => "list" diff --git a/app/views/users/recent.json.jbuilder b/app/views/users/recent.json.jbuilder deleted file mode 100644 index d2637d3..0000000 --- a/app/views/users/recent.json.jbuilder +++ /dev/null @@ -1,4 +0,0 @@ -json.array! @items do |json, item| - json.partial! "shared/tweet", :item => item -end - diff --git a/app/views/users/timeline.html.haml b/app/views/users/timeline.html.haml deleted file mode 100644 index 1410df9..0000000 --- a/app/views/users/timeline.html.haml +++ /dev/null @@ -1 +0,0 @@ -= render :partial => "list" diff --git a/app/views/users/timeline.json.jbuilder b/app/views/users/timeline.json.jbuilder deleted file mode 100644 index d2637d3..0000000 --- a/app/views/users/timeline.json.jbuilder +++ /dev/null @@ -1,4 +0,0 @@ -json.array! @items do |json, item| - json.partial! "shared/tweet", :item => item -end - diff --git a/config/routes.rb b/config/routes.rb index 88af30f..a5b6b85 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,6 +3,7 @@ Aclog::Application.routes.draw do :id => /[0-9]+/, :user_id => /[0-9]+/, :screen_name => /[a-zA-Z0-9_]{1,20}/, + :screen_name_b => /[a-zA-Z0-9_]{1,20}/, :page => /[0-9]+/, :count => /[0-9]+/, :tweets => /(all|fav(orite[sd]?|(or)?ed|s)?|re?t(weet(s|ed)?|s)?)/, @@ -11,6 +12,10 @@ Aclog::Application.routes.draw do root :to => "main#index" + # static + get "/about" => "main#about" + get "/about/api" => "main#api" + # internals get "/i" => redirect("/") get "/i/callback" => "sessions#callback" @@ -43,12 +48,19 @@ Aclog::Application.routes.draw do get "/:screen_name/discovered/:tweets(/:page)" => "users#discovered", :constraints => constraints get "/:screen_name/info" => "users#info", :constraints => constraints - get "/:screen_name/favs_from" => "users#from", :constraints => constraints, :defaults => {:event => "favorite"} - get "/:screen_name/rts_from" => "users#from", :constraints => constraints, :defaults => {:event => "retweet"} + get "/:screen_name/favorited_by(/:screen_name_b)" => "users#favorited_by", :constraints => constraints + get "/:screen_name/retweeted_by(/:screen_name_b)" => "users#retweeted_by", :constraints => constraints + get "/:screen_name/given_favorites_to(/:screen_name_b)" => "users#given_favorites_to", :constraints => constraints + get "/:screen_name/given_retweets_to(/:screen_name_b)" => "users#given_retweets_to", :constraints => constraints # redirects get "/(users)/:screen_name/status(es)/:id" => redirect("/i/%{id}") get "/users/:screen_name" => redirect("/%{screen_name}") + get "/users/:screen_name/most_favorited" => redirect("/%{screen_name}/favorite") + get "/users/:screen_name/most_retweeted" => redirect("/%{screen_name}/retweet") get "/users/:screen_name/discovered" => redirect("/%{screen_name}/discovered") get "/users/:screen_name/recent" => redirect("/%{screen_name}/timeline") + get "/users/:screen_name/favs_from(/:screen_name_b)" => redirect("/%{screen_name}/favorited_by/%{screen_name_b}") + get "/users/:screen_name/retweeted_by(/:screen_name_b)" => redirect("/%{screen_name}/retweeted_by/%{screen_name_b}") + get "/users/:screen_name/given_to(/:screen_name_b)" => redirect("/%{screen_name}/given_favorites_to/%{screen_name_b}") end diff --git a/public/assets/application-8ad8039145e9fbab6b0de0f554e4487b.css b/public/assets/application-8ad8039145e9fbab6b0de0f554e4487b.css deleted file mode 100644 index b75ad98..0000000 --- a/public/assets/application-8ad8039145e9fbab6b0de0f554e4487b.css +++ /dev/null @@ -1,106 +0,0 @@ -.items { - width: 572px; - margin: 15px 0 15px 18px; } - .items .item { - margin: 15px 0; } - .items .item .tweet { - overflow: hidden; - background: white; - border: 1px solid #c1c5cb; - border-width: 1px 0; - padding: 15px; } - .items .item .tweet .avatar { - width: 60px; - float: left; } - .items .item .tweet .avatar img { - width: 48px; - height: 48px; } - .items .item .tweet .tweet_content_fix { - float: left; - width: 0; - height: 85px; } - .items .item .tweet .tweet_content { - float: left; - width: 473px; } - .items .item .tweet .tweet_content .user { - padding: 0 5px 15px; - font-weight: bold; } - .items .item .tweet .tweet_content .user .name { - font-size: 14px; } - .items .item .tweet .tweet_content .user .screen_name { - font-size: 12px; } - .items .item .tweet .tweet_content .user a { - color: #666666; } - .items .item .tweet .tweet_content .text { - font-size: 18px; - line-height: 25px; - padding: 0 5px 15px; - word-wrap: break-word; } - .items .item .tweet .tweet_content .meta { - padding: 0 5px 15px; - color: #666666; - font-size: 12px; } - .items .item .tweet .tweet_content .meta .twitter_bird { - display: block; - float: left; } - .items .item .tweet .tweet_content .meta .twitter_bird img { - vertical-align: top; - margin-right: 2px; - margin-top: 1px; } - .items .item .tweet .tweet_content .meta .created_at { - display: block; - float: left; } - .items .item .tweet .tweet_content .meta .source { - display: block; - float: right; } - .items .item .stats { - clear: both; - padding: 15px; } - .items .item .stats .favs, .items .item .stats .retweets { - margin-bottom: 3px; } - .items .item .stats .favs .info, .items .item .stats .retweets .info { - width: 60px; - float: left; } - .items .item .stats .favs .info .count, - .items .item .stats .favs .info .type, .items .item .stats .retweets .info .count, - .items .item .stats .retweets .info .type { - color: #666666; - display: block; } - .items .item .stats .favs .info .count, .items .item .stats .retweets .info .count { - font-weight: bold; - font-size: 14px; } - .items .item .stats .favs .info .type, .items .item .stats .retweets .info .type { - font-size: 10px; } - .items .item .stats .favs .height_fix, .items .item .stats .retweets .height_fix { - float: left; - height: 48px; - width: 0; } - .items .item .stats .favs .favoriters, .items .item .stats .retweets .favoriters { - float: left; - list-style: none; - width: 480px; } - .items .item .stats .favs .favoriters li, .items .item .stats .retweets .favoriters li { - float: left; } - .items .item .stats .favs .favoriters li img, .items .item .stats .retweets .favoriters li img { - width: 48px; - height: 48px; - vertical-align: bottom; } - -* { - margin: 0; - padding: 0; - font-family: "Ubuntu", sans-serif; } - -a { - text-decoration: none; - color: #3b5998; } - -img { - border: none; } - -.clearfix:after { - content: "."; - visibility: hidden; - display: block; - height: 0; - clear: both; } diff --git a/public/assets/application-8ad8039145e9fbab6b0de0f554e4487b.css.gz b/public/assets/application-8ad8039145e9fbab6b0de0f554e4487b.css.gz Binary files differdeleted file mode 100644 index 1962472..0000000 --- a/public/assets/application-8ad8039145e9fbab6b0de0f554e4487b.css.gz +++ /dev/null diff --git a/public/assets/manifest-b0844b10c48f9860d6b42a7d1918ff80.json b/public/assets/manifest-b0844b10c48f9860d6b42a7d1918ff80.json deleted file mode 100644 index db1f481..0000000 --- a/public/assets/manifest-b0844b10c48f9860d6b42a7d1918ff80.json +++ /dev/null @@ -1 +0,0 @@ -{"files":{"bird_gray_16-93f51980875017e26744056b62aaac22.png":{"logical_path":"bird_gray_16.png","mtime":"2013-03-09T14:41:39+09:00","size":1106,"digest":"93f51980875017e26744056b62aaac22"},"missing_profile_image-d5d708680693a18615dfb8f5b1a5a96c.png":{"logical_path":"missing_profile_image.png","mtime":"2013-03-16T16:45:26+09:00","size":9350,"digest":"d5d708680693a18615dfb8f5b1a5a96c"},"rails-bc7d436ef8afbf0f88829742a43ba3a4.png":{"logical_path":"rails.png","mtime":"2013-02-25T21:20:52+09:00","size":6646,"digest":"bc7d436ef8afbf0f88829742a43ba3a4"},"application-c0feb24db0871514682a56320c7b2b2b.js":{"logical_path":"application.js","mtime":"2013-03-09T01:51:23+09:00","size":738,"digest":"c0feb24db0871514682a56320c7b2b2b"},"application-8ad8039145e9fbab6b0de0f554e4487b.css":{"logical_path":"application.css","mtime":"2013-03-16T18:11:28+09:00","size":3584,"digest":"8ad8039145e9fbab6b0de0f554e4487b"}},"assets":{"bird_gray_16.png":"bird_gray_16-93f51980875017e26744056b62aaac22.png","missing_profile_image.png":"missing_profile_image-d5d708680693a18615dfb8f5b1a5a96c.png","rails.png":"rails-bc7d436ef8afbf0f88829742a43ba3a4.png","application.js":"application-c0feb24db0871514682a56320c7b2b2b.js","application.css":"application-8ad8039145e9fbab6b0de0f554e4487b.css"}}
\ No newline at end of file |