Try fb from override and generated page

This commit is contained in:
Christophe Vilayphiou 2012-08-08 05:40:50 +08:00
parent 3cb182ff8e
commit fc560f4205
6 changed files with 79 additions and 3 deletions

View File

@ -0,0 +1,34 @@
window.SocialShareButton =
openUrl : (url) ->
window.open(url)
false
share : (el) ->
site = $(el).data('site')
title = encodeURIComponent($(el).parent().data('title'))
img = encodeURIComponent($(el).parent().data("img"))
fb_url = encodeURIComponent($(el).parent().data("fb_url"))
url = encodeURIComponent(location.href)
fb_full_url = encodeURIComponent("#{fb_url}?orig_url=#{location.href}")
switch site
when "weibo"
SocialShareButton.openUrl("http://v.t.sina.com.cn/share/share.php?url=#{url}&pic=#{img}&title=#{title}&content=utf-8")
when "twitter"
SocialShareButton.openUrl("https://twitter.com/home?status=#{title}: #{url}")
when "douban"
SocialShareButton.openUrl("http://www.douban.com/recommend/?url=#{url}&title=#{title}&image=#{img}")
when "facebook"
SocialShareButton.openUrl("http://www.facebook.com/sharer.php?t=#{title}&u=#{fb_full_url}")
when "qq"
SocialShareButton.openUrl("http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=#{url}&title=#{title}&pics=#{img}")
when "tqq"
SocialShareButton.openUrl("http://share.v.t.qq.com/index.php?c=share&a=index&url=#{url}&title=#{title}&pic=#{img}")
when "baidu"
SocialShareButton.openUrl("http://apps.hi.baidu.com/share/?url=#{url}&title=#{title}&content=")
when "kaixin001"
SocialShareButton.openUrl("http://www.kaixin001.com/rest/records.php?url=#{url}&content=#{title}&style=11&pic=#{img}")
when "renren"
SocialShareButton.openUrl("http://widget.renren.com/dialog/share?resourceUrl=#{url}&title=#{title}&description=")
when "google_plus"
SocialShareButton.openUrl("https://plus.google.com/share?url=#{url}&t=#{title}")
false

View File

@ -106,6 +106,13 @@ class ApplicationController < ActionController::Base
render :text => '404 Not Found' render :text => '404 Not Found'
end end
end end
def render_share
object_class = params[:model].classify.constantize
@object = object_class.find(params[:id])
@orig_url = params[:orig_url]
render 'shared/render_share', :layout => false
end
protected protected

View File

@ -162,7 +162,8 @@ module ApplicationHelper
end end
javascripts << "<script type='text/javascript' src='/static/jquery.cycle.all.latest.js'></script>\n" javascripts << "<script type='text/javascript' src='/static/jquery.cycle.all.latest.js'></script>\n"
javascripts << "<script type='text/javascript' src='/static/kernel.js'></script>\n" javascripts << "<script type='text/javascript' src='/static/kernel.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/social-share-button.js'></script>\n" # javascripts << "<script type='text/javascript' src='/assets/social-share-button.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/lib/social-share-button.coffee'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/event.js'></script>\n" javascripts << "<script type='text/javascript' src='/assets/event.js'></script>\n"
page.design.javascripts.each do |js| page.design.javascripts.each do |js|
# javascripts << "<script type='text/javascript' src='#{js.file.url}'></script>" # javascripts << "<script type='text/javascript' src='#{js.file.url}'></script>"
@ -220,8 +221,8 @@ module ApplicationHelper
js << "<meta property='og:description' content='#{object.subtitle}' />\n" rescue '' js << "<meta property='og:description' content='#{object.subtitle}' />\n" rescue ''
js << "<meta property='og:image' content='#{object.image.url}' />\n" rescue '' js << "<meta property='og:image' content='#{object.image.url}' />\n" rescue ''
content_tag :div, :class => 'fb' do content_tag :div, :class => 'fb' do
concat social_share_button_tag concat social_share_button_tag(object.title, :fb_url => "http://#{request.env['HTTP_HOST']}/share/#{object.class.to_s.underscore}/#{object.id}", :image => "http://#{request.env['HTTP_HOST']}#{object.image.url}")
concat javascript_tag "$('head').append('#{j js}');" # concat javascript_tag "$('head').append('#{j js}');"
end end
end end

View File

@ -0,0 +1,11 @@
<!DOCTYPE HTML>
<html>
<head>
<meta property="og:title" content="<%= @object.title %>" />
<meta property="og:description" content="<%= @object.subtitle %>" />
<meta property="og:url" content="<%= @orig_url %>" />
<meta property="og:image" content="<%= 'http://' + request.env['HTTP_HOST'] + @object.image.url %>" />
</head>
<body>
</body>
</html>

View File

@ -3,3 +3,24 @@ Integer.class_eval do
!self.zero? !self.zero?
end end
end end
module SocialShareButton
module Helper
def social_share_button_tag(title = "", opts = {})
rel = opts[:rel]
html = []
html << "<div class='social-share-button' data-title='#{title}' data-img='#{opts[:image]}' data-fb_url='#{opts[:fb_url]}'>"
SocialShareButton.config.allow_sites.each do |name|
link_title = t "social_share_button.share_to", :name => t("social_share_button.#{name.downcase}")
html << link_to("","#", :rel => "nofollow #{rel}",
"data-site" => name,
:class => "social-share-button-#{name}",
:onclick => "return SocialShareButton.share(this);",
:title => h(link_title))
end
html << "</div>"
raw html.join("\n")
end
end
end

View File

@ -140,6 +140,8 @@ Orbit::Application.routes.draw do
match '/panel/:app_name/front_end/:app_action' => 'pages#index_from_link', :constraints => lambda { |request| match '/panel/:app_name/front_end/:app_action' => 'pages#index_from_link', :constraints => lambda { |request|
!request.query_string.include?("inner=true") !request.query_string.include?("inner=true")
} }
match '/share/:model/:id' => 'application#render_share'
# routes for gridfs files # routes for gridfs files
match "/gridfs/*path" => "gridfs#serve" match "/gridfs/*path" => "gridfs#serve"