Module: Facebooker::Rails::Helpers::FbConnect
- Defined in:
- lib/facebooker/rails/helpers/fb_connect.rb
Instance Method Summary collapse
- #fb_connect_javascript_tag(options = {}) ⇒ Object
-
#fb_login_button(*args) ⇒ Object
Render an <fb:login-button> element.
-
#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
Instance Method Details
#fb_connect_javascript_tag(options = {}) ⇒ Object
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 5 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_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>
97 98 99 100 101 102 103 104 105 106 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 97 def (*args) callback = args.first = args[1] || {} .merge!(:onlogin=>callback) if callback text = .delete(:text) content_tag("fb:login-button",text, ) 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).
22 23 24 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 22 def init_fb_connect(*required_features, &proc) ({},*required_features, &proc) end |
#init_fb_connect_with_options(options = {}, *required_features, &proc) ⇒ Object
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 68 69 70 |
# File 'lib/facebooker/rails/helpers/fb_connect.rb', line 26 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 "Element.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 |