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.
- #init_fb_connect_with_options(options = {}, *required_features, &proc) ⇒ Object
Methods included from StreamPublish
Instance Method Details
#fb_bookmark_link(text, url, *args) ⇒ Object
144 145 146 147 148 149 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 144 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 end |
#fb_connect_stream_publish(stream_post, user_message_prompt = nil, callback = nil, auto_publish = false, actor = nil) ⇒ Object
158 159 160 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 158 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>
123 124 125 126 127 128 129 130 131 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 123 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>
98 99 100 101 102 103 104 105 106 107 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 98 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
137 138 139 140 141 142 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 137 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
133 134 135 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 133 def fb_unconnected_friends_count content_tag "fb:unconnected-friends-count",nil end |
#fb_user_action(action, user_message = nil, prompt = "", callback = nil) ⇒ Object
151 152 153 154 155 156 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 151 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 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 23 def init_fb_connect(*required_features, &proc) ({},*required_features, &proc) end |
#init_fb_connect_with_options(options = {}, *required_features, &proc) ⇒ Object
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 68 69 70 71 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 27 def ( = {},*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. = .merge({: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}','/xd_receiver_ssl.html', #{[:app_settings]});" else init_string = "FB.init('#{Facebooker.api_key}','/xd_receiver.html', #{[:app_settings]});" end unless required_features.blank? init_string = <<-FBML #{case [:js] when :jquery then "jQuery(document).ready(" when :dojo then "dojo.addOnLoad(" when :mootools then "window.addEvent('domready'," else "Event.observe(window,'load'," end} function() { 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 |