mmangino-facebooker 1.0.3 → 1.0.4
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.
- data/lib/facebooker/adapters/adapter_base.rb +1 -1
- data/lib/facebooker/adapters/bebo_adapter.rb +5 -3
- data/lib/facebooker/models/friend_list.rb +2 -2
- data/lib/facebooker/models/user.rb +1 -2
- data/lib/facebooker/rails/helpers.rb +1 -1
- data/lib/facebooker/rails/publisher.rb +5 -0
- data/test/publisher_test.rb +1 -1
- metadata +1 -2
- data/lib/facebooker/rails/facebook_url_helper.rb +0 -191
@@ -2,7 +2,7 @@ module Facebooker
|
|
2
2
|
|
3
3
|
class AdapterBase
|
4
4
|
class UnableToLoadAdapter < Exception; end
|
5
|
-
require 'active_support'
|
5
|
+
require 'active_support/inflector'
|
6
6
|
include ActiveSupport::CoreExtensions::String::Inflections
|
7
7
|
def facebook_path_prefix
|
8
8
|
"/" + (@facebook_path_prefix || canvas_page_name || ENV['FACEBOOK_CANVAS_PATH'] || ENV['FACEBOOKER_RELATIVE_URL_ROOT'])
|
@@ -43,7 +43,8 @@ module Facebooker
|
|
43
43
|
set_profile_fbml_without_bebo_adapter(profile_fbml,mobile_fbml, profile_action_fbml, profile_main)
|
44
44
|
end
|
45
45
|
end
|
46
|
-
|
46
|
+
alias_method :set_profile_fbml_without_bebo_adapter, :set_profile_fbml
|
47
|
+
alias_method :set_profile_fbml, :set_profile_fbml_with_bebo_adapter
|
47
48
|
|
48
49
|
private
|
49
50
|
|
@@ -67,7 +68,8 @@ module Facebooker
|
|
67
68
|
process_without_bebo_adapter(data)
|
68
69
|
end
|
69
70
|
end
|
70
|
-
|
71
|
+
alias_method :process_without_bebo_adapter, :process
|
72
|
+
alias_method :process, :process_with_bebo_adapter
|
71
73
|
end
|
72
74
|
end
|
73
|
-
end
|
75
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'facebooker/model'
|
2
2
|
module Facebooker
|
3
3
|
##
|
4
|
-
# A simple representation of a
|
4
|
+
# A simple representation of a friend list.
|
5
5
|
class FriendList
|
6
6
|
include Model
|
7
7
|
attr_accessor :flid, :name
|
@@ -11,4 +11,4 @@ module Facebooker
|
|
11
11
|
@flid= ( f.nil? ? nil : f.to_i)
|
12
12
|
end
|
13
13
|
end
|
14
|
-
end
|
14
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'facebooker/model'
|
2
2
|
require 'facebooker/models/affiliation'
|
3
3
|
require 'facebooker/models/work_info'
|
4
|
-
require 'active_support'
|
5
4
|
module Facebooker
|
6
5
|
#
|
7
6
|
# Holds attributes and behavior for a Facebook User
|
@@ -307,7 +306,7 @@ module Facebooker
|
|
307
306
|
ret.each do |hash|
|
308
307
|
user_map.delete(hash)
|
309
308
|
end
|
310
|
-
unless user_map.
|
309
|
+
unless user_map.empty?
|
311
310
|
e=Facebooker::Session::UserRegistrationFailed.new
|
312
311
|
e.failed_users = user_map.values
|
313
312
|
raise e
|
@@ -111,7 +111,7 @@ module Facebooker
|
|
111
111
|
# <em> Note: </em> I don't think the block is used here.
|
112
112
|
def fb_multi_friend_selector(message,options={},&block)
|
113
113
|
options = options.dup
|
114
|
-
tag("fb:multi-friend-selector",stringify_vals(
|
114
|
+
tag("fb:multi-friend-selector",stringify_vals({:showborder=>false,:actiontext=>message,:max=>20}.merge(options)))
|
115
115
|
end
|
116
116
|
|
117
117
|
# Render a condensed <fb:multi-friend-selector> with the passed in welcome message
|
@@ -404,6 +404,11 @@ module Facebooker
|
|
404
404
|
def protect_against_forgery?
|
405
405
|
@paf ||= ActionController::Base.new.send(:protect_against_forgery?)
|
406
406
|
end
|
407
|
+
|
408
|
+
# url_for calls in publishers tend to want full paths
|
409
|
+
def url_for(options = {})
|
410
|
+
super(options.kind_of?(Hash) ? {:only_path => false}.update(options) : options)
|
411
|
+
end
|
407
412
|
end
|
408
413
|
ActionController::Routing::Routes.named_routes.install(self.master_helper_module)
|
409
414
|
include self.master_helper_module
|
data/test/publisher_test.rb
CHANGED
@@ -391,7 +391,7 @@ class PublisherTest < Test::Unit::TestCase
|
|
391
391
|
assert_equal({:src => '/images/image.png', :href => 'raw_string' },
|
392
392
|
TestPublisher.new.image('image.png', 'raw_string'))
|
393
393
|
assert_equal({:src => '/images/image.png', :href => 'http://apps.facebook.com/mike/pokes/do/1' },
|
394
|
-
TestPublisher.new.image('image.png', {:
|
394
|
+
TestPublisher.new.image('image.png', {:controller => :pokes, :action => :do, :id => 1}))
|
395
395
|
end
|
396
396
|
|
397
397
|
def test_action_link
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mmangino-facebooker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chad Fowler
|
@@ -115,7 +115,6 @@ files:
|
|
115
115
|
- lib/facebooker/rails/facebook_pretty_errors.rb
|
116
116
|
- lib/facebooker/rails/facebook_request_fix.rb
|
117
117
|
- lib/facebooker/rails/facebook_session_handling.rb
|
118
|
-
- lib/facebooker/rails/facebook_url_helper.rb
|
119
118
|
- lib/facebooker/rails/facebook_url_rewriting.rb
|
120
119
|
- lib/facebooker/rails/helpers.rb
|
121
120
|
- lib/facebooker/rails/profile_publisher_extensions.rb
|
@@ -1,191 +0,0 @@
|
|
1
|
-
# Extends the ActionView::Helpers::UrlHelper module. See it for details on
|
2
|
-
# the usual url helper methods: url_for, link_to, button_to, etc.
|
3
|
-
#
|
4
|
-
# Mostly, the changes sanitize javascript into facebook javascript.
|
5
|
-
# It sanitizes link_to solely by altering the private methods:
|
6
|
-
# convert_options_to_javascript!, confirm_javascript_function, and
|
7
|
-
# method_javascript_function. For button_to, it alters button_to
|
8
|
-
# itself, as well as confirm_javascript_function. No other methods
|
9
|
-
# need to be changed because of Facebook javascript.
|
10
|
-
#
|
11
|
-
# For button_to and link_to, adds alternate confirm options for facebook.
|
12
|
-
# ==== Options
|
13
|
-
# * <tt>:confirm => 'question?'</tt> - This will add a JavaScript confirm
|
14
|
-
# prompt with the question specified.
|
15
|
-
#
|
16
|
-
# Example:
|
17
|
-
# # Generates: <a href="http://rubyforge.org/projects/facebooker" onclick="
|
18
|
-
# # var dlg = new Dialog().showChoice('Please Confirm', 'Go to Facebooker?').setStyle();
|
19
|
-
# # var a=this;dlg.onconfirm = function() {
|
20
|
-
# # document.setLocation(a.getHref());
|
21
|
-
# # }; return false;">Facebooker</a>
|
22
|
-
# link_to("Facebooker", "http://rubyforge.org/projects/facebooker", :confirm=>"Go to Facebooker?")
|
23
|
-
#
|
24
|
-
# Alternatively, options[:confirm] may be specified.
|
25
|
-
# See the Facebook page http://wiki.developers.facebook.com/index.php/FBJS.
|
26
|
-
# These options are:
|
27
|
-
# <tt>:title</tt>:: Specifies the title of the Facebook dialog. Default is "Please Confirm".
|
28
|
-
# <tt>:content</tt>:: Specifies the title of the Facebook dialog. Default is "Are you sure?".
|
29
|
-
#
|
30
|
-
# Example:
|
31
|
-
# # Generates: <a href="http://rubyforge.org/projects/facebooker" onclick="
|
32
|
-
# # var dlg = new Dialog().showChoice('the page says:', 'Go to Facebooker?').setStyle();
|
33
|
-
# # var a=this;dlg.onconfirm = function() {
|
34
|
-
# # document.setLocation(a.getHref());
|
35
|
-
# # }; return false;">Facebooker</a>
|
36
|
-
# link_to("Facebooker", "http://rubyforge.org/projects/facebooker", :confirm=>{:title=>"the page says:", :content=>"Go to Facebooker?"})
|
37
|
-
#
|
38
|
-
# Any other options passed are assumed to be css styles.
|
39
|
-
# Again, see the Facebook page http://wiki.developers.facebook.com/index.php/FBJS.
|
40
|
-
#
|
41
|
-
# Example:
|
42
|
-
# # Generates: <a href="http://rubyforge.org/projects/facebooker" onclick="
|
43
|
-
# # var dlg = new Dialog().showChoice('the page says:', 'Are you sure?').setStyle({color: 'pink', width: '200px'});
|
44
|
-
# # var a=this;dlg.onconfirm = function() {
|
45
|
-
# # document.setLocation(a.getHref());
|
46
|
-
# # }; return false;">Facebooker</a>
|
47
|
-
# link_to("Facebooker", "http://rubyforge.org/projects/facebooker", :confirm=>{:title=>"the page says:, :color=>"pink", :width=>"200px"})
|
48
|
-
module ActionView
|
49
|
-
module Helpers
|
50
|
-
module UrlHelper
|
51
|
-
# Alters one and only one line of the Rails button_to. See below.
|
52
|
-
def button_to_with_facebooker(name, options={}, html_options = {})
|
53
|
-
if !request_comes_from_facebook?
|
54
|
-
button_to_without_facebooker(name,options,html_options)
|
55
|
-
else
|
56
|
-
html_options = html_options.stringify_keys
|
57
|
-
convert_boolean_attributes!(html_options, %w( disabled ))
|
58
|
-
|
59
|
-
method_tag = ''
|
60
|
-
if (method = html_options.delete('method')) && %w{put delete}.include?(method.to_s)
|
61
|
-
method_tag = tag('input', :type => 'hidden', :name => '_method', :value => method.to_s)
|
62
|
-
end
|
63
|
-
|
64
|
-
form_method = method.to_s == 'get' ? 'get' : 'post'
|
65
|
-
|
66
|
-
request_token_tag = ''
|
67
|
-
if form_method == 'post' && protect_against_forgery?
|
68
|
-
request_token_tag = tag(:input, :type => "hidden", :name => request_forgery_protection_token.to_s, :value => form_authenticity_token)
|
69
|
-
end
|
70
|
-
|
71
|
-
if confirm = html_options.delete("confirm")
|
72
|
-
# this line is the only change => html_options["onclick"] = "return #{confirm_javascript_function(confirm)}"
|
73
|
-
html_options["onclick"] = "#{confirm_javascript_function(confirm, 'a.getForm().submit();')}return false;"
|
74
|
-
end
|
75
|
-
|
76
|
-
url = options.is_a?(String) ? options : self.url_for(options)
|
77
|
-
name ||= url
|
78
|
-
|
79
|
-
html_options.merge!("type" => "submit", "value" => name)
|
80
|
-
|
81
|
-
"<form method=\"#{form_method}\" action=\"#{escape_once url}\" class=\"button-to\"><div>" +
|
82
|
-
method_tag + tag("input", html_options) + request_token_tag + "</div></form>"
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
alias_method_chain :button_to, :facebooker
|
87
|
-
|
88
|
-
private
|
89
|
-
|
90
|
-
# Altered to throw an error on :popup and sanitize the javascript
|
91
|
-
# for Facebook.
|
92
|
-
def convert_options_to_javascript_with_facebooker!(html_options, url ='')
|
93
|
-
if !request_comes_from_facebook?
|
94
|
-
convert_options_to_javascript_without_facebooker!(html_options,url)
|
95
|
-
else
|
96
|
-
confirm, popup = html_options.delete("confirm"), html_options.delete("popup")
|
97
|
-
|
98
|
-
method, href = html_options.delete("method"), html_options['href']
|
99
|
-
|
100
|
-
html_options["onclick"] = case
|
101
|
-
when popup
|
102
|
-
raise ActionView::ActionViewError, "You can't use :popup"
|
103
|
-
when method # or maybe (confirm and method)
|
104
|
-
"#{method_javascript_function(method, url, href, confirm)}return false;"
|
105
|
-
when confirm # and only confirm
|
106
|
-
"#{confirm_javascript_function(confirm)}return false;"
|
107
|
-
else
|
108
|
-
html_options["onclick"]
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
alias_method_chain :convert_options_to_javascript!, :facebooker
|
114
|
-
|
115
|
-
|
116
|
-
# Overrides a private method that link_to calls via convert_options_to_javascript! and
|
117
|
-
# also, button_to calls directly. For Facebook, confirm can be a hash of options to
|
118
|
-
# stylize the Facebook dialog. Takes :title, :content, :style options. See
|
119
|
-
# the Facebook page http://wiki.developers.facebook.com/index.php/FBJS for valid
|
120
|
-
# style formats like "color: 'black', background: 'white'" or like "'color','black'".
|
121
|
-
#
|
122
|
-
# == Examples ==
|
123
|
-
#
|
124
|
-
# link_to("Facebooker", "http://rubyforge.org/projects/facebooker", :confirm=>"Go to Facebooker?")
|
125
|
-
# link_to("Facebooker", "http://rubyforge.org/projects/facebooker", :confirm=>{:title=>"the page says:, :content=>"Go to Facebooker?"})
|
126
|
-
# link_to("Facebooker", "http://rubyforge.org/projects/facebooker", :confirm=>{:title=>"the page says:, :content=>"Go to Facebooker?", :color=>"pink"})
|
127
|
-
def confirm_javascript_function_with_facebooker(confirm, fun = nil)
|
128
|
-
if !request_comes_from_facebook?
|
129
|
-
confirm_javascript_function_without_facebooker(confirm)
|
130
|
-
else
|
131
|
-
if(confirm.is_a?(Hash))
|
132
|
-
confirm_options = confirm.stringify_keys
|
133
|
-
title = confirm_options.delete("title") || "Please Confirm"
|
134
|
-
content = confirm_options.delete("content") || "Are you sure?"
|
135
|
-
style = confirm_options.empty? ? "" : convert_options_to_css(confirm_options)
|
136
|
-
else
|
137
|
-
title,content,style = 'Please Confirm', confirm, ""
|
138
|
-
end
|
139
|
-
|
140
|
-
"var dlg = new Dialog().showChoice('#{escape_javascript(title.to_s)}','#{escape_javascript(content.to_s)}').setStyle(#{style});"+
|
141
|
-
"var a=this;dlg.onconfirm = function() { #{fun ? fun : 'document.setLocation(a.getHref());'} };"
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
alias_method_chain :confirm_javascript_function, :facebooker
|
146
|
-
|
147
|
-
def convert_options_to_css(options)
|
148
|
-
key_pair = options.shift
|
149
|
-
style = "{#{key_pair[0]}: '#{key_pair[1]}'"
|
150
|
-
for key in options.keys
|
151
|
-
style << ", #{key}: '#{options[key]}'"
|
152
|
-
end
|
153
|
-
style << "}"
|
154
|
-
end
|
155
|
-
|
156
|
-
# Dynamically creates a form for link_to with method. Calls confirm_javascript_function if and
|
157
|
-
# only if (confirm && method) for link_to
|
158
|
-
def method_javascript_function_with_facebooker(method, url = '', href = nil, confirm = nil)
|
159
|
-
if !request_comes_from_facebook?
|
160
|
-
method_javascript_function_without_facebooker(method,url,href)
|
161
|
-
else
|
162
|
-
action = (href && url.size > 0) ? "'#{url}'" : 'a.getHref()'
|
163
|
-
submit_function =
|
164
|
-
"var f = document.createElement('form'); f.setStyle('display','none'); " +
|
165
|
-
"a.getParentNode().appendChild(f); f.setMethod('POST'); f.setAction(#{action});"
|
166
|
-
|
167
|
-
unless method == :post
|
168
|
-
submit_function << "var m = document.createElement('input'); m.setType('hidden'); "
|
169
|
-
submit_function << "m.setName('_method'); m.setValue('#{method}'); f.appendChild(m);"
|
170
|
-
end
|
171
|
-
|
172
|
-
if protect_against_forgery?
|
173
|
-
submit_function << "var s = document.createElement('input'); s.setType('hidden'); "
|
174
|
-
submit_function << "s.setName('#{request_forgery_protection_token}'); s.setValue('#{escape_javascript form_authenticity_token}'); f.appendChild(s);"
|
175
|
-
end
|
176
|
-
submit_function << "f.submit();"
|
177
|
-
|
178
|
-
if(confirm)
|
179
|
-
confirm_javascript_function(confirm, submit_function)
|
180
|
-
else
|
181
|
-
"var a=this;" + submit_function
|
182
|
-
end
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
|
-
alias_method_chain :method_javascript_function, :facebooker
|
187
|
-
|
188
|
-
end
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|