facebook_rails 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,6 +9,26 @@ module FacebookRailsController
9
9
  FACEBOOK['f8app_callback'].to_s + path
10
10
  end
11
11
 
12
+ def microsite_href(path = '/')
13
+ FACEBOOK['microsite_home'].to_s + path
14
+ end
15
+
16
+ def smart_href(path = '/')
17
+ if in_facebook_app?
18
+ direct_href(path)
19
+ else
20
+ microsite_href(path)
21
+ end
22
+ end
23
+
24
+ def in_facebook_app?
25
+ FACEBOOK['f8app_host'].blank? or request.host == FACEBOOK['f8app_host']
26
+ end
27
+
28
+ def in_microsite?
29
+ !in_facebook_app?
30
+ end
31
+
12
32
  def facebook_api
13
33
  @facebook_api ||= Koala::Facebook::API.new(session[:access_token])
14
34
  end
@@ -136,7 +156,8 @@ module FacebookRailsController
136
156
  #First check we received the call with a signed_request parameter, as that means a fresh token
137
157
  if params[:signed_request]
138
158
  fb_oauth = Koala::Facebook::OAuth.new
139
- f8_params = fb_oauth.parse_signed_request(params.delete(:signed_request))
159
+ @f8_params = f8_params = fb_oauth.parse_signed_request(params.delete(:signed_request))
160
+ session[:fan_page_id] = f8_params["page"]["id"] if f8_params["page"]
140
161
  session[:f8_locale] = (f8_params and f8_params["user"]) ? f8_params["user"]["locale"] : nil
141
162
  #puts "request params: #{ f8_params.inspect }"
142
163
  if f8_params["oauth_token"]
@@ -3,17 +3,31 @@ module FacebookRailsHelper
3
3
  return '<script>' +
4
4
  'if (top == self)' +
5
5
  '{' +
6
- "top.location = '#{facebook_href(url_for( { :controller => controller.controller_name, :action => controller.action_name}.merge params.reject {|k,v| k == 'signed_request'}))}';" +
6
+ "top.location = '#{facebook_href(url_for({ :controller => controller.controller_name, :action => controller.action_name }.merge params.reject{ |k,v| k == 'signed_request' }))}';" +
7
7
  '}' +
8
8
  '</script>'
9
9
  end
10
10
 
11
- def facebook_initialization resize = :auto, app_id = FACEBOOK['app_id'], user_f8id = nil
11
+ def reload_back_to_microsite_if_needed_js
12
+ return '<script>' +
13
+ 'if (top != self)' +
14
+ '{' +
15
+ "top.location = '#{microsite_href(url_for({ :controller => controller.controller_name, :action => controller.action_name }.merge params.reject{ |k,v| k == 'signed_request' }))}';" +
16
+ '}' +
17
+ '</script>'
18
+ end
19
+
20
+ def facebook_initialization options = {}
21
+ options[:resize] = :auto unless options.has_key?(:resize)
22
+ options[:init] ||= {}
23
+ options[:init][:appId] ||= FACEBOOK['app_id'].to_s
24
+ options[:init][:status] = true unless options.has_key?(:status)
25
+ options[:init][:cookie] = true unless options.has_key?(:cookie)
12
26
  begin
13
- user ||= current_user_f8id
27
+ options[:user_f8id] = current_user_f8id
14
28
  rescue Exception => e
15
29
  logger.info "current_user_f8id exception #{ e.to_s }"
16
- end
30
+ end unless options.has_key?(:user_f8id)
17
31
  onload_resize = %{
18
32
  var domLoaded = false;
19
33
  var facebookLoaded = false;
@@ -48,11 +62,11 @@ module FacebookRailsHelper
48
62
  });
49
63
  }
50
64
 
51
- login_status = if user_f8id
65
+ login_status = if options[:user_f8id]
52
66
  %{
53
67
  FB.getLoginStatus(function(response) {
54
- if ((response.authResponse && response.authResponse.userID == '#{ user_f8id }') ||
55
- (response.session && response.session.uid == '#{ user_f8id }')) {
68
+ if ((response.authResponse && response.authResponse.userID == '#{ options[:user_f8id] }') ||
69
+ (response.session && response.session.uid == '#{ options[:user_f8id] }')) {
56
70
  // logged in and connected user - continue
57
71
  $(document).trigger('got_facebook_status');
58
72
  } else {
@@ -72,15 +86,12 @@ module FacebookRailsHelper
72
86
  %{
73
87
  <div id="fb-root"></div>
74
88
  <script type="text/javascript">
75
- #{ onload_resize if resize == :onload }
89
+ #{ onload_resize if options[:resize] == :onload }
76
90
  window.fbAsyncInit = function() {
77
- FB.init({ appId: '#{ app_id }',
78
- status: true,
79
- cookie: true,
80
- xfbml: true });
91
+ FB.init({ #{ options[:init].collect{ |key, value| "#{ key }: #{ value }" }.join(', ') } });
81
92
  $(document).trigger('facebook_init');
82
- #{ 'facebookLoaded = true; pageLoad();' if resize == :onload }
83
- #{ 'FB.Canvas.setAutoGrow();' if resize == :auto }
93
+ #{ 'facebookLoaded = true; pageLoad();' if options[:resize] == :onload }
94
+ #{ 'FB.Canvas.setAutoGrow();' if options[:resize] == :auto }
84
95
  #{ login_status }
85
96
  };
86
97
 
@@ -59,6 +59,11 @@ module FacebookRails
59
59
 
60
60
  ActionController::Base.send :helper_method, :facebook_href
61
61
  ActionController::Base.send :helper_method, :direct_href
62
+ ActionController::Base.send :helper_method, :microsite_href
63
+ ActionController::Base.send :helper_method, :smart_href
64
+ ActionController::Base.send :helper_method, :in_facebook_app?
65
+ ActionController::Base.send :helper_method, :in_microsite?
66
+ ActionController::Base.send :helper_method, :authenticated_by_facebook?
62
67
  ActionController::Base.send :helper_method, :current_user_f8id
63
68
  ActionController::Base.send :helper_method, :get_facebook_locale
64
69
  end
@@ -1,3 +1,3 @@
1
1
  module FacebookRails
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,4 +1,4 @@
1
- #require 'rails/generators'
1
+ require 'rails/generators'
2
2
 
3
3
  class FacebookRailsGenerator < Rails::Generators::Base
4
4
  def self.source_root
@@ -7,6 +7,8 @@ development:
7
7
  #Slijede drap dodaci
8
8
  f8app_home: http://apps.facebook.com/CANVAS_NAME #bez zadnjeg '/'
9
9
  f8app_callback: CALLBACK_URL #bez zadnjeg '/'
10
+ #f8app_host: HOST_NAME #needed only when microsite exists
11
+ #microsite_home: http://microsite.com #bez zadnjeg '/'
10
12
  #server_subdir:
11
13
  timeout: 3
12
14
 
@@ -16,6 +18,8 @@ test:
16
18
  #Slijede drap dodaci
17
19
  f8app_home: CANVAS_URL #bez zadnjeg '/'
18
20
  f8app_callback: CALLBACK_URL #bez zadnjeg '/'
21
+ #f8app_host: HOST_NAME #needed only when microsite exists
22
+ #microsite_home: http://microsite.com #bez zadnjeg '/'
19
23
  #server_subdir:
20
24
  timeout: 3
21
25
 
@@ -25,5 +29,7 @@ production:
25
29
  #Slijede drap dodaci
26
30
  f8app_home: CANVAS_URL #bez zadnjeg '/'
27
31
  f8app_callback: CALLBACK_URL #bez zadnjeg '/'
32
+ #f8app_host: HOST_NAME #needed only when microsite exists
33
+ #microsite_home: http://microsite.com #bez zadnjeg '/'
28
34
  #server_subdir:
29
35
  timeout: 3
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facebook_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-04 00:00:00.000000000Z
12
+ date: 2012-05-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70284682468040 !ruby/object:Gem::Requirement
16
+ requirement: &70276425465420 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70284682468040
24
+ version_requirements: *70276425465420
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: koala
27
- requirement: &70284682467360 !ruby/object:Gem::Requirement
27
+ requirement: &70276425464920 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.4.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70284682467360
35
+ version_requirements: *70276425464920
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sqlite3
38
- requirement: &70284682466860 !ruby/object:Gem::Requirement
38
+ requirement: &70276425464540 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70284682466860
46
+ version_requirements: *70276425464540
47
47
  description: Manages collecting of facebook authentication and provides helpers. It
48
48
  uses koala and is built for Rails 3.
49
49
  email: