rplatform-rails 0.0.2

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.
@@ -0,0 +1,93 @@
1
+ # AUTHORS:
2
+ # - Curtis Edmond (www.okwithfailure.com)
3
+ # thanks to matt for rfacebook
4
+ # - Matt Pizzimenti (www.livelearncode.com)
5
+
6
+ # LICENSE:
7
+ # Redistribution and use in source and binary forms, with or without modification,
8
+ # are permitted provided that the following conditions are met:
9
+ #
10
+ # Redistributions of source code must retain the above copyright notice,
11
+ # this list of conditions and the following disclaimer.
12
+ #
13
+ # Redistributions in binary form must reproduce the above copyright notice,
14
+ # this list of conditions and the following disclaimer in the documentation
15
+ # and/or other materials provided with the distribution.
16
+ #
17
+ # Neither the name of the original author nor the names of contributors
18
+ # may be used to endorse or promote products derived from this software
19
+ # without specific prior written permission.
20
+ #
21
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
+
32
+ module RPlatform
33
+ module Rails
34
+ module ViewExtensions
35
+
36
+ # returns true if the user is viewing the canvas
37
+ def self.shit
38
+ p 'AAIIEEE'
39
+ end
40
+
41
+ def in_facebook_canvas?
42
+ @controller.in_facebook_canvas?
43
+ end
44
+
45
+ # returns true if the user is in an iframe
46
+ def in_facebook_frame?
47
+ @controller.in_facebook_frame?
48
+ end
49
+
50
+ # returns true if the render is using mock ajax
51
+ def in_mock_ajax?
52
+ @controller.in_mock_ajax?
53
+ end
54
+
55
+ # returns true if the render is using mock ajax
56
+ def in_ajax?
57
+ @controller.in_ajax?
58
+ end
59
+
60
+ # returns the current fb_sig_params (only if they validated properly)
61
+ def fbparams
62
+ @controller.fbparams
63
+ end
64
+
65
+ # returns the current user's Facebook session (an instance of FacebookWebSession)
66
+ def fbsession
67
+ @controller.fbsession
68
+ end
69
+
70
+ # overrides the path_to_image method to ensure that all images are written
71
+ # with absolute paths
72
+ def image_path(*params)
73
+ path = super(*params)
74
+ if ((in_facebook_canvas? or in_mock_ajax? or in_ajax?) and !(/(\w+)(\:\/\/)([\w0-9\.]+)([\:0-9]*)(.*)/.match(path)))
75
+ path = "#{request.protocol}#{request.host_with_port}#{path}"
76
+ end
77
+ return path
78
+ end
79
+
80
+ # Aliases to path_to_image for Rails 1.0 backwards compatibility
81
+ # def image_path(*params)
82
+ # path_to_image(*params)
83
+ # end
84
+
85
+ # renders the RFacebook debug panel
86
+ def facebook_debug_panel(options={}) # :nodoc:
87
+ RAILS_DEFAULT_LOGGER.info "** RFACEBOOK DEPRECATION WARNING: 'facebook_debug_panel' is deprecated in ActionViews"
88
+ return @controller.facebook_debug_panel(options)
89
+ end
90
+
91
+ end
92
+ end
93
+ end
data/tasks/all.rake ADDED
@@ -0,0 +1,176 @@
1
+ # AUTHORS:
2
+ # - Matt Pizzimenti (www.livelearncode.com)
3
+ # - Evan Weaver (http://blog.evanweaver.com)
4
+
5
+ # LICENSE:
6
+ # Redistribution and use in source and binary forms, with or without modification,
7
+ # are permitted provided that the following conditions are met:
8
+ #
9
+ # Redistributions of source code must retain the above copyright notice,
10
+ # this list of conditions and the following disclaimer.
11
+ #
12
+ # Redistributions in binary form must reproduce the above copyright notice,
13
+ # this list of conditions and the following disclaimer in the documentation
14
+ # and/or other materials provided with the distribution.
15
+ #
16
+ # Neither the name of the original author nor the names of contributors
17
+ # may be used to endorse or promote products derived from this software
18
+ # without specific prior written permission.
19
+ #
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ # Rake tasks modified from Evan Weaver's article
32
+ # http://blog.evanweaver.com/articles/2007/07/13/developing-a-facebook-app-locally
33
+
34
+ namespace "facebook" do
35
+
36
+ ######################################################################################
37
+ ######################################################################################
38
+ desc "Sets up the RFacebook Rails Plugin. Right now, this simply copies facebook.yml into your config directory."
39
+ task "setup" do
40
+
41
+ filename = "#{RAILS_ROOT}/config/facebook.yml"
42
+ puts "======================================================"
43
+ puts "Setting up RFacebook on Rails Plugin"
44
+
45
+ ###### Install sample facebook.yml
46
+ file = File.new(filename, "w")
47
+ file <<
48
+ "
49
+ development:
50
+ facebook:
51
+ key: YOUR_API_KEY_HERE
52
+ secret: YOUR_API_SECRET_HERE
53
+ canvas_path: /yourfbAppName/
54
+ callback_path: /path/to/your/fbcallback/
55
+ tunnel:
56
+ username: yourLoginName
57
+ host: www.yourexternaldomain.com
58
+ port: 1234
59
+ local_port: 5678
60
+ bebo:
61
+ key: YOUR_API_KEY_HERE
62
+ secret: YOUR_API_SECRET_HERE
63
+ canvas_path: /yourbeboAppName/
64
+ callback_path: /path/to/your/bebocallback/
65
+ tunnel:
66
+ username: yourLoginName
67
+ host: www.yourexternaldomain.com
68
+ port: 1234
69
+ local_port: 5678
70
+
71
+ test:
72
+ facebook:
73
+ key: YOUR_API_KEY_HERE
74
+ secret: YOUR_API_SECRET_HERE
75
+ canvas_path: /yourfbAppName/
76
+ callback_path: /path/to/your/fbcallback/
77
+ tunnel:
78
+ username: yourLoginName
79
+ host: www.yourexternaldomain.com
80
+ port: 1234
81
+ local_port: 5678
82
+ bebo:
83
+ key: YOUR_API_KEY_HERE
84
+ secret: YOUR_API_SECRET_HERE
85
+ canvas_path: /yourbeboAppName/
86
+ callback_path: /path/to/your/bebocallback/
87
+ tunnel:
88
+ username: yourLoginName
89
+ host: www.yourexternaldomain.com
90
+ port: 1234
91
+ local_port: 5678
92
+
93
+ production:
94
+ facebook:
95
+ key: YOUR_API_KEY_HERE
96
+ secret: YOUR_API_SECRET_HERE
97
+ canvas_path: /yourfbAppName/
98
+ callback_path: /path/to/your/fbcallback/
99
+ tunnel:
100
+ username: yourLoginName
101
+ host: www.yourexternaldomain.com
102
+ port: 1234
103
+ local_port: 5678
104
+ bebo:
105
+ key: YOUR_API_KEY_HERE
106
+ secret: YOUR_API_SECRET_HERE
107
+ canvas_path: /yourbeboAppName/
108
+ callback_path: /path/to/your/bebocallback/
109
+ tunnel:
110
+ username: yourLoginName
111
+ host: www.yourexternaldomain.com
112
+ port: 1234
113
+ local_port: 5678
114
+ "
115
+ file.close_write
116
+ puts " [1] Created config/facebook.yml <-- BE SURE TO CHANGE THE API KEY AND SECRET"
117
+
118
+ ###### Finished
119
+ puts "Done."
120
+ puts "======================================================"
121
+ end
122
+
123
+
124
+ namespace "tunnel" do
125
+
126
+ ######################################################################################
127
+ ######################################################################################
128
+ ## TODO: let this take in a network, like "facebook" or "bebo"
129
+ desc "Start a reverse tunnel to develop from localhost. Please ensure that you have a properly configured config/facebook.yml file."
130
+ task "start" => "environment" do
131
+ puts FACEBOOK.inspect
132
+ remoteUsername = FACEBOOK['facebook']['tunnel']['username']
133
+ remoteHost = FACEBOOK['facebook']['tunnel']['host']
134
+ remotePort = FACEBOOK['facebook']['tunnel']['port']
135
+ localPort = FACEBOOK['facebook']['tunnel']['local_port']
136
+ sshPort = FACEBOOK['facebook']['tunnel']['ssh_port'] || "22"
137
+
138
+ puts "======================================================"
139
+ puts "Tunneling #{remoteHost}:#{remotePort} to 0.0.0.0:#{localPort}"
140
+
141
+ puts
142
+ puts "NOTES:"
143
+ puts "* ensure that you have Rails running on your local machine at port #{localPort}"
144
+ puts "* once logged in to the tunnel, you can visit http://#{remoteHost}:#{remotePort} to view your site"
145
+ puts "* use ctrl-c to quit the tunnel"
146
+ puts "* if you have problems creating the tunnel, you may need to add the following to /etc/ssh/sshd_config on your server:"
147
+ puts "
148
+ GatewayPorts clientspecified
149
+
150
+ "
151
+ puts "* if you have problems with #{remoteHost} timing out your ssh connection, add the following lines to your '~/.ssh/config' file:"
152
+ puts "
153
+ Host #{remoteHost}
154
+ ServerAliveInterval 120
155
+
156
+ "
157
+ puts "======================================================"
158
+ exec "ssh -p #{sshPort} -nNT -g -R *:#{remotePort}:0.0.0.0:#{localPort} #{remoteUsername}@#{remoteHost}"
159
+ end
160
+
161
+ ######################################################################################
162
+ ######################################################################################
163
+ desc "Check if reverse tunnel is running"
164
+ task "status" => "environment" do
165
+ sshPort = FACEBOOK['tunnel']['ssh_port'] || "22"
166
+ if `ssh -p #{sshPort} #{FACEBOOK['tunnel']['username']}@#{FACEBOOK['tunnel']['host']} netstat -an |
167
+ egrep "tcp.*:#{FACEBOOK['tunnel']['port']}.*LISTEN" | wc`.to_i > 0
168
+ puts "Tunnel still running"
169
+ else
170
+ puts "Tunnel is down"
171
+ end
172
+ end
173
+ end
174
+
175
+
176
+ end
@@ -0,0 +1,220 @@
1
+ <style type="text/css">
2
+
3
+ .RFacebook .environment
4
+ {
5
+ padding: 30px;
6
+
7
+ background: #F7F7F7;
8
+ border-bottom: 1px solid #B7B7B7;
9
+ }
10
+
11
+ .RFacebook .environment a
12
+ {
13
+ color: #3F5A95;
14
+ }
15
+
16
+ .RFacebook .environment table
17
+ {
18
+ margin: 0px auto 5px auto;
19
+ width: 100%;
20
+
21
+ border-collapse: collapse;
22
+ }
23
+
24
+ .RFacebook .environment td
25
+ {
26
+ padding: 5px;
27
+ padding-left: 10px;
28
+ border-width: 1px 0px 1px 0px;
29
+
30
+ border-color: #ccc;
31
+ border-style: solid;
32
+ font-size: 0.9em;
33
+ }
34
+
35
+ .RFacebook .environment td.value
36
+ {
37
+ width: 100%;
38
+
39
+ color: #777;
40
+ }
41
+
42
+ .RFacebook .environment td.header
43
+ {
44
+ padding-top: 10px;
45
+ padding-left: 0px;
46
+ border-top-width: 0px;
47
+
48
+ font-weight: bold;
49
+ font-size: 1.3em;
50
+ }
51
+
52
+ .RFacebook .environment h1
53
+ {
54
+ margin: 0px 0px 5px 0px;
55
+ padding: 0px;
56
+
57
+ color: #3F5A95;
58
+ font-size: 1.6em;
59
+ }
60
+
61
+ .RFacebook .environment p
62
+ {
63
+ padding: 5px;
64
+ margin: 0px 0px 20px 0px;
65
+
66
+ color: #777;
67
+ }
68
+
69
+ .RFacebook .error
70
+ {
71
+ color: red;
72
+ margin: 0px;
73
+ padding: 2px;
74
+ color: #FF9A8D;
75
+ background-color: #900;
76
+ }
77
+
78
+ .RFacebook .valid
79
+ {
80
+ margin: 0px;
81
+ padding: 2px;
82
+ color: #B2FE8C;
83
+ background-color: #06B012;
84
+ }
85
+
86
+ .RFacebook table.details
87
+ {
88
+ border-collapse: collapse;
89
+ width: auto;
90
+ }
91
+
92
+ .RFacebook table.details td
93
+ {
94
+ border: none;
95
+ padding: 0px;
96
+ color: #777;
97
+ }
98
+
99
+ .RFacebook table.details td.value
100
+ {
101
+ width: 100%;
102
+ padding-left: 10px;
103
+ color: black;
104
+ }
105
+
106
+ .RFacebook .backtrace
107
+ {
108
+ border-collapse: collapse;
109
+ background-color: #3B5998;
110
+ color: white;
111
+ }
112
+
113
+ .RFacebook .backtrace
114
+ {
115
+ padding: 30px;
116
+ background: #3B5998;
117
+ }
118
+
119
+ .RFacebook .backtrace h1
120
+ {
121
+ margin: 0px 0px 5px 0px;
122
+ padding: 0px;
123
+
124
+ color: white;
125
+ font-size: 1.6em;
126
+ }
127
+
128
+ /*
129
+ .RFacebook table.backtrace td
130
+ {
131
+ padding: 10px 2px 10px 2px;
132
+ border-width: 1px 0px 1px 0px;
133
+
134
+ border-style: solid;
135
+ border-color: #ccc;
136
+ }
137
+ */
138
+
139
+ .RFacebook .backtrace div.summary
140
+ {
141
+ font-size: 1.2em;
142
+ padding: 2px;
143
+ color: white;
144
+ }
145
+
146
+ .RFacebook .backtrace div.rawsummary
147
+ {
148
+ font-size: 0.7em;
149
+ color: #6D84B4;
150
+ padding-left: 5px;
151
+ }
152
+
153
+ .RFacebook ul
154
+ {
155
+ margin: 0px;
156
+ padding: 0px;
157
+ list-style-type: none;
158
+ }
159
+
160
+ .RFacebook ul li
161
+ {
162
+ list-style-type: none;
163
+ padding: 5px;
164
+ }
165
+
166
+ </style>
167
+
168
+ <div class="RFacebook">
169
+
170
+ <div class="environment">
171
+
172
+ <h1>RFacebook <span style="font-weight: normal; color: #777">environment information</span></h1>
173
+ <p>
174
+ This shows you at a glance the information that RFacebook has populated
175
+ for you.
176
+ <br/>
177
+ More information at <a href="http://rfacebook.rubyforge.org">rfacebook.rubyforge.org</a>.
178
+ Please report RFacebook bugs <a href="http://rubyforge.org/tracker/?func=add&group_id=3607&atid=13796">here</a>.
179
+
180
+ </p>
181
+
182
+ <table>
183
+
184
+ <!-- ####################### ActionController ####################### -->
185
+ <tr>
186
+ <td colspan="3" class="header"><%= self.class %></td>
187
+ </tr>
188
+
189
+ <% facebook_status_manager.each_status_check do |statusCheck| %>
190
+ <tr>
191
+ <td class="title"><%= statusCheck.title %></td>
192
+ <td class="rstatus">
193
+ <% if statusCheck.valid? %>
194
+ <span class="valid">OK</span>
195
+ <% else %>
196
+ <span class="error">PROBLEM</span>
197
+ <% end %>
198
+ </td>
199
+ <td class="value">
200
+ <% if statusCheck.message.is_a? String %>
201
+ <%= statusCheck.message %>
202
+ <% elsif statusCheck.message.is_a? Hash %>
203
+ <table class="details">
204
+ <% statusCheck.message.each do |k,v| %>
205
+ <tr>
206
+ <td><%= k %></td>
207
+ <td class="value"><%= v %></td>
208
+ </tr>
209
+ <% end %>
210
+ </table>
211
+ <% end %>
212
+ </td>
213
+ </tr>
214
+ <% end %>
215
+
216
+
217
+ </table>
218
+
219
+ </div>
220
+ </div>