Module: Facebooker::Rails::Helpers::FbConnect
- Includes:
- StreamPublish
- Included in:
- Facebooker::Rails::Helpers
- Defined in:
- lib/facebooker/rails/helpers/fb_connect.rb
Instance Method Summary collapse
- #fb_bookmark_link(text, url, *args) ⇒ Object
- #fb_connect_javascript_tag(options = {}) ⇒ Object
- #fb_connect_stream_publish(stream_post, user_message_prompt = nil, callback = nil, auto_publish = false, actor = nil) ⇒ Object
-
#fb_login_and_redirect(url, options = {}) ⇒ Object
Render an <fb:login-button> element, similar to fb_login_button.
-
#fb_login_button(*args) ⇒ Object
Render an <fb:login-button> element.
- #fb_logout_link(text, url, *args) ⇒ Object
- #fb_unconnected_friends_count ⇒ Object
- #fb_user_action(action, user_message = nil, prompt = "", callback = nil) ⇒ Object
-
#init_fb_connect(*required_features, &proc) ⇒ Object
For information on the :app_settings argument see wiki.developers.facebook.com/index.php/JS_API_M_FB.Facebook.Init_2 While it would be nice to treat :app_settings as a hash, some of the arguments do different things if they are a string vs a javascript function and Rails’ Hash#to_json always quotes strings so there is no way to indicate when the value should be a javascript function.
Methods included from StreamPublish
Instance Method Details
#fb_bookmark_link(text, url, *args) ⇒ Object
140 141 142 143 144 145 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 140 def fb_bookmark_link(text,url,*args) js = update_page do |page| page.call "FB.Connect.showBookmarkDialog",url end link_to_function text, js, *args end |
#fb_connect_javascript_tag(options = {}) ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 6 def fb_connect_javascript_tag( = {}) # accept both Rails and Facebook locale formatting, i.e. "en-US" and "en_US". lang = "/#{[:lang].to_s.gsub('-', '_')}" if [:lang] # dont use the javascript_include_tag helper since it adds a .js at the end if request.ssl? "<script src=\"https://ssl.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php#{lang}\" type=\"text/javascript\"></script>" else "<script src=\"http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php#{lang}\" type=\"text/javascript\"></script>" end.html_safe end |
#fb_connect_stream_publish(stream_post, user_message_prompt = nil, callback = nil, auto_publish = false, actor = nil) ⇒ Object
154 155 156 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 154 def fb_connect_stream_publish(stream_post,=nil,callback=nil,auto_publish=false,actor=nil) stream_publish("FB.Connect.streamPublish",stream_post,,callback,auto_publish,actor) end |
#fb_login_and_redirect(url, options = {}) ⇒ Object
Render an <fb:login-button> element, similar to fb_login_button. Adds a js redirect to the onlogin event via rjs.
Examples
fb_login_and_redirect '/other_page'
=> <fb:login-button onlogin="window.location.href = "/other_page";"></fb:login-button>
Like #fb_login_button, this also supports the :text option
fb_login_and_redirect '/other_page', :text => "Login with Facebook", :v => '2'
=> <fb:login-button onlogin="window.location.href = "/other_page";" v="2">Login with Facebook</fb:login-button>
119 120 121 122 123 124 125 126 127 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 119 def fb_login_and_redirect(url, = {}) js = update_page do |page| page.redirect_to url end text = .delete(:text) content_tag("fb:login-button",text,.merge(:onlogin=>js)) end |
#fb_login_button(*args) ⇒ Object
Render an <fb:login-button> element
Examples
<%= fb_login_button%>
=> <fb:login-button></fb:login-button>
Specifying a javascript callback
<%= fb_login_button 'update_something();'%>
=> <fb:login-button onlogin='update_something();'></fb:login-button>
Adding options See: wiki.developers.facebook.com/index.php/Fb:login-button
<%= fb_login_button 'update_something();', :size => :small, :background => :dark%>
=> <fb:login-button background='dark' onlogin='update_something();' size='small'></fb:login-button>
:text option allows you to set the text value of the button. *A note!* This will only do what you expect it to do if you set :v => 2 as well.
<%= fb_login_button 'update_somethign();',
:text => 'Loginto Facebook', :v => 2 %>
=> <fb:login-button v='2' onlogin='update_something();'>Login to Facebook</fb:login-button>
94 95 96 97 98 99 100 101 102 103 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 94 def (*args) callback = args.first = args[1] || {} .merge!(:onlogin=>callback) if callback text = .delete(:text) content_tag("fb:login-button",text, ) end |
#fb_logout_link(text, url, *args) ⇒ Object
133 134 135 136 137 138 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 133 def fb_logout_link(text,url,*args) js = update_page do |page| page.call "FB.Connect.logoutAndRedirect",url end link_to_function text, js, *args end |
#fb_unconnected_friends_count ⇒ Object
129 130 131 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 129 def fb_unconnected_friends_count content_tag "fb:unconnected-friends-count",nil end |
#fb_user_action(action, user_message = nil, prompt = "", callback = nil) ⇒ Object
147 148 149 150 151 152 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 147 def fb_user_action(action, = nil, prompt = "", callback = nil) defaulted_callback = callback || "null" update_page do |page| page.call("FB.Connect.showFeedDialog",action.template_id,action.data,action.target_ids,action.body_general,nil,page.literal("FB.RequireConnect.promptConnect"),page.literal(defaulted_callback),prompt,.nil? ? nil : {:value=>}) end end |
#init_fb_connect(*required_features, &proc) ⇒ Object
For information on the :app_settings argument see wiki.developers.facebook.com/index.php/JS_API_M_FB.Facebook.Init_2 While it would be nice to treat :app_settings as a hash, some of the arguments do different things if they are a string vs a javascript function and Rails’ Hash#to_json always quotes strings so there is no way to indicate when the value should be a javascript function. For this reason :app_settings needs to be a string that is valid JSON (including the {}‘s).
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 23 def init_fb_connect(*required_features,&proc) additions = "" if block_given? additions = capture(&proc) end # Yes, app_settings is set to a string of an empty JSON element. That's intentional. = {:js => :prototype, :app_settings => '{}'} if required_features.last.is_a?(Hash) .merge!(required_features.pop.symbolize_keys) end if request.ssl? init_string = "FB.init('#{Facebooker.api_key}','#{root_url(:locale => nil)}/xd_receiver_ssl.html', #{[:app_settings]});" else init_string = "FB.init('#{Facebooker.api_key}', '#{root_url(:locale => nil)}/xd_receiver.html', #{[:app_settings]});" end unless required_features.blank? init_string = <<-FBML #{case [:js] when :jquery then "jQuery(document).ready(" when :mootools then "window.addEvent('domready'," when :dojo then "dojo.addOnLoad(" else "Element.observe(window,'load'," end} function() { if (typeof FB_RequireFeatures != 'undefined') FB_RequireFeatures(#{required_features.to_json}, function() { #{init_string} #{additions} }); }); FBML end # block_is_within_action_view? is rails 2.1.x and has been # deprecated. rails >= 2.2.x uses block_called_from_erb? block_tester = respond_to?(:block_is_within_action_view?) ? :block_is_within_action_view? : :block_called_from_erb? if block_given? && send(block_tester, proc) versioned_concat(javascript_tag(init_string),proc.binding) else javascript_tag init_string end end |