aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorre4k <re4k@re4k.info>2013-03-27 19:16:50 +0900
committerre4k <re4k@re4k.info>2013-03-27 19:16:50 +0900
commit613da69215bd72a1f04a6e2b5568151a87b9e37a (patch)
tree13c845626244c5ef13fb957dde732b2a05f9a427
parent828b71c4b68186b1e6e729a244544a19d54d5929 (diff)
downloadaclog-613da69215bd72a1f04a6e2b5568151a87b9e37a.tar.gz
Add given_favorites_to
Refactor
-rw-r--r--app/assets/stylesheets/_tweets.css.sass24
-rw-r--r--app/assets/stylesheets/application.css.sass16
-rw-r--r--app/assets/stylesheets/errors.css.scss3
-rw-r--r--app/controllers/application_controller.rb35
-rw-r--r--app/controllers/i_controller.rb52
-rw-r--r--app/controllers/main_controller.rb11
-rw-r--r--app/controllers/sessions_controller.rb14
-rw-r--r--app/controllers/users_controller.rb149
-rw-r--r--app/models/favorite.rb4
-rw-r--r--app/models/retweet.rb4
-rw-r--r--app/views/errors/error_500.html.haml1
-rw-r--r--app/views/i/_list.html.haml2
-rw-r--r--app/views/i/best.html.haml1
-rw-r--r--app/views/i/recent.html.haml1
-rw-r--r--app/views/i/show.html.haml1
-rw-r--r--app/views/i/timeline.html.haml1
-rw-r--r--app/views/layouts/application.html.haml26
-rw-r--r--app/views/main/index.html.haml64
-rw-r--r--app/views/shared/_tweet.html.haml5
-rw-r--r--app/views/shared/_user_nav.html.haml30
-rw-r--r--app/views/users/_list.html.haml7
-rw-r--r--app/views/users/best.html.haml1
-rw-r--r--app/views/users/best.json.jbuilder4
-rw-r--r--app/views/users/discovered.html.haml1
-rw-r--r--app/views/users/discovered.json.jbuilder4
-rw-r--r--app/views/users/from.html.haml10
-rw-r--r--app/views/users/info.html.haml40
-rw-r--r--app/views/users/recent.html.haml1
-rw-r--r--app/views/users/recent.json.jbuilder4
-rw-r--r--app/views/users/timeline.html.haml1
-rw-r--r--app/views/users/timeline.json.jbuilder4
-rw-r--r--config/routes.rb16
-rw-r--r--public/assets/application-8ad8039145e9fbab6b0de0f554e4487b.css106
-rw-r--r--public/assets/application-8ad8039145e9fbab6b0de0f554e4487b.css.gzbin767 -> 0 bytes
-rw-r--r--public/assets/manifest-b0844b10c48f9860d6b42a7d1918ff80.json1
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)&amp;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
deleted file mode 100644
index 1962472..0000000
--- a/public/assets/application-8ad8039145e9fbab6b0de0f554e4487b.css.gz
+++ /dev/null
Binary files differ
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