acts_as_opengraph 0.0.2.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -118,6 +118,18 @@ But that's not the Rails way, so instead of doing that, you can pass an `href` o
118
118
 
119
119
  See the complete list of allowed attributes and options [here](http://developers.facebook.com/docs/reference/plugins/like/).
120
120
 
121
+ ### Using the XFBML version
122
+
123
+ The XFBML version is more versatile, but requires use of the JavaScript SDK.
124
+
125
+ # app/views/movies/show.html.erb
126
+
127
+ # You can use the following helper method to load the JavaScript SDK
128
+ <%= fb_javascript_include_tag YOUR_APP_ID %>
129
+
130
+ # Now you can pass the :xfbml option to the like button helper
131
+ <%= like_button_for @movie, :xfbml => true %>
132
+
121
133
  ## Note on Patches/Pull Requests
122
134
 
123
135
  * Fork the project.
@@ -128,6 +140,7 @@ See the complete list of allowed attributes and options [here](http://developers
128
140
  ## Contributors
129
141
 
130
142
  * [Eric Hill](https://github.com/rhizome) - Updated the meta attribute to reflect the current OG spec
143
+ * [Timo Göllner](https://github.com/TeaMoe) - Integrated Like Button via facebook XFBML tag
131
144
 
132
145
  ## Copyright
133
146
 
@@ -14,7 +14,7 @@ module ActsAsOpengraphHelper
14
14
  tags = tags.join("\n")
15
15
  tags.respond_to?(:html_safe) ? tags.html_safe : tags
16
16
  end
17
-
17
+
18
18
  # Displays the Facebook Like Button in your views.
19
19
  #
20
20
  # @param [Object, #opengraph_data] obj An instance of your ActiveRecord model that responds to opengraph_data
@@ -30,10 +30,10 @@ module ActsAsOpengraphHelper
30
30
  raise(ArgumentError.new, "You need to call acts_as_opengraph on your #{obj.class} model") unless obj.respond_to?(:opengraph_data)
31
31
  href = options[:href] ? options[:href] : obj.opengraph_url
32
32
  return unless href.present?
33
-
33
+
34
34
  config = { :layout => :standard, :show_faces => false, :width => 450, :action => :like, :colorscheme => :light }
35
35
  config.update(options) if options.is_a?(Hash)
36
-
36
+
37
37
  o_layout = config[:layout].to_sym
38
38
  if o_layout == :standard
39
39
  config[:height] = config[:show_faces].to_s.to_sym == :true ? 80 : 35
@@ -42,7 +42,35 @@ module ActsAsOpengraphHelper
42
42
  elsif o_layout == :box_count
43
43
  config[:height] = 65
44
44
  end
45
-
46
- %(<iframe src="http://www.facebook.com/plugins/like.php?href=#{CGI.escape(href)}&amp;layout=#{config[:layout]}&amp;show_faces=#{config[:show_faces]}&amp;width=#{config[:width]}&amp;action=#{config[:action]}&amp;colorscheme=#{config[:colorscheme]}&amp;height=#{config[:height]}" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:#{config[:width]}px; height:#{config[:height]}px;" allowTransparency="true"></iframe>)
45
+ config[:locale] ||= 'en_US'
46
+
47
+ if config[:xfbml]
48
+ unless @fb_sdk_included
49
+ content_for :javascripts, fb_javascript_include_tag( config[:locale], config[:appid] )
50
+ end
51
+ %(<fb:like href="#{CGI.escape(href)}" layout="#{config[:layout]}" show_faces="#{config[:show_faces]}" action="#{config[:action]}" colorscheme="#{config[:colorscheme]}" width="#{config[:width]}" height="#{config[:height]}" font="#{config[:font]}"></fb:like>)
52
+ else
53
+ %(<iframe src="http://www.facebook.com/plugins/like.php?href=#{CGI.escape(href)}&amp;layout=#{config[:layout]}&amp;show_faces=#{config[:show_faces]}&amp;width=#{config[:width]}&amp;action=#{config[:action]}&amp;colorscheme=#{config[:colorscheme]}&amp;height=#{config[:height]}" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:#{config[:width]}px; height:#{config[:height]}px;" allowTransparency="true"></iframe>)
54
+ end
55
+ end
56
+
57
+ def fb_javascript_include_tag(appid='', locale='en_US')
58
+ @fb_sdk_included = true
59
+ async_fb = <<-END
60
+ <div id="fb-root"></div>
61
+ <script>
62
+ window.fbAsyncInit = function() {
63
+ FB.init({appId: '#{ appid }', status: true, cookie: true,
64
+ xfbml: true});
65
+ };
66
+ (function() {
67
+ var e = document.createElement('script'); e.async = true;
68
+ e.src = document.location.protocol +
69
+ '//connect.facebook.net/#{locale}/all.js';
70
+ document.getElementById('fb-root').appendChild(e);
71
+ }());
72
+ </script>
73
+ END
74
+ async_fb.html_safe
47
75
  end
48
- end
76
+ end
@@ -1,3 +1,3 @@
1
1
  module ActsAsOpengraph
2
- VERSION = "0.0.2.1"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -43,6 +43,7 @@ class MovieTest < Test::Unit::TestCase
43
43
 
44
44
  GENERATED_LIKE_BUTTON = %(<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.imdb.com%2Ftitle%2Ftt0117500%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=35" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:35px;" allowTransparency="true"></iframe>)
45
45
  GENERATED_LIKE_BUTTON_CUSTOM_URL = %(<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fexample.com%2Fmovies%2F6&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=35" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:35px;" allowTransparency="true"></iframe>)
46
+ GENERATED_LIKE_BUTTON_FBXML = %(<fb:like href=\"http%3A%2F%2Fwww.imdb.com%2Ftitle%2Ftt0117500%2F\" layout=\"standard\" show_faces=\"false\" action=\"like\" colorscheme=\"light\" width=\"450\" height=\"35\" font=\"\"></fb:like>)
46
47
  def setup
47
48
  setup_db
48
49
  assert @movie = Movie.create!(:title => MOVIE_NAME, :description => MOVIE_DESCRIPTION, :imdb => MOVIE_URL)
@@ -99,6 +100,9 @@ class MovieTest < Test::Unit::TestCase
99
100
  assert_equal GENERATED_LIKE_BUTTON, like_button_for(@movie)
100
101
  assert_equal GENERATED_LIKE_BUTTON_CUSTOM_URL, like_button_for(@movie, :href => "http://example.com/movies/6")
101
102
 
103
+ @fb_sdk_included = true # Tells our helper we've already included the facebook JS SDK
104
+ assert_equal GENERATED_LIKE_BUTTON_FBXML, like_button_for(@movie, :xfbml => true)
105
+
102
106
  # There's no way of getting the href attribute for this Book, so it returns nil
103
107
  assert_nil like_button_for(@book)
104
108
 
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_opengraph
3
3
  version: !ruby/object:Gem::Version
4
- hash: 69
5
- prerelease:
4
+ hash: 25
5
+ prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- - 1
11
- version: 0.0.2.1
9
+ - 3
10
+ version: 0.0.3
12
11
  platform: ruby
13
12
  authors:
14
13
  - Ruben Ascencio
@@ -16,7 +15,7 @@ autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
17
 
19
- date: 2011-04-02 00:00:00 -07:00
18
+ date: 2011-04-18 00:00:00 -07:00
20
19
  default_executable:
21
20
  dependencies:
22
21
  - !ruby/object:Gem::Dependency
@@ -85,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
84
  requirements: []
86
85
 
87
86
  rubyforge_project: acts_as_opengraph
88
- rubygems_version: 1.5.0
87
+ rubygems_version: 1.3.7
89
88
  signing_key:
90
89
  specification_version: 3
91
90
  summary: ActiveRecord extension that turns your models into graph objects