facebook_app 0.0.19 → 0.0.20
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/app/assets/javascripts/javascript_sdk.js.coffee +24 -0
- data/app/assets/stylesheets/admin.sass +4 -1
- data/app/controllers/facebook_app/facebook_app_controller.rb +0 -12
- data/app/controllers/facebook_app/facebook_sdk_controller.rb +6 -0
- data/app/controllers/facebook_app/trackings_controller.rb +11 -0
- data/app/helpers/facebook_app/facebook_sdk_helper.rb +63 -0
- data/app/models/facebook_app/conversion.rb +0 -4
- data/app/models/facebook_app/conversion_summary.rb +6 -4
- data/app/views/facebook_app/admin/_conversion_stage.html.slim +3 -3
- data/app/views/facebook_app/admin/_funnel.html.slim +6 -0
- data/app/views/facebook_app/admin/_spamalytics.html.slim +9 -4
- data/app/views/facebook_app/admin/show.html.slim +2 -1
- data/app/views/facebook_app/facebook_sdk/channel.html +1 -0
- data/config/initializers/quiet_asset_pipeline_log.rb +10 -0
- data/config/routes.rb +4 -0
- data/lib/facebook_app/tracking_helper.rb +16 -0
- data/lib/facebook_app/version.rb +1 -1
- data/lib/facebook_app.rb +1 -0
- metadata +11 -3
@@ -0,0 +1,24 @@
|
|
1
|
+
track = (conversion_state) ->
|
2
|
+
$.post('/trackings', {conversion_state: conversion_state})
|
3
|
+
|
4
|
+
window.removeAppPermissions = () ->
|
5
|
+
FB.api("/me/permissions", "delete", {}, () -> alert("Removed App Permission From Facebook"))
|
6
|
+
|
7
|
+
window.facebookLogin = (redirectUrl, permissions) ->
|
8
|
+
FB.getLoginStatus (status) ->
|
9
|
+
if status.authResponse
|
10
|
+
console.log "User already logged in"
|
11
|
+
window.location = redirectUrl
|
12
|
+
else
|
13
|
+
console.log "User isn't logged in. Trying to log in now"
|
14
|
+
FB.login (response) ->
|
15
|
+
# track("see_permissions_dialogue")
|
16
|
+
if response.authResponse # user has logged in
|
17
|
+
track("accept_permissions")
|
18
|
+
console.log "User accepted permissions"
|
19
|
+
window.location = redirectUrl
|
20
|
+
else
|
21
|
+
track("deny_permissions")
|
22
|
+
console.log "User denied permissions"
|
23
|
+
, {scope: permissions}
|
24
|
+
|
@@ -32,18 +32,6 @@ module FacebookApp
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
def begin_tracking
|
36
|
-
conversion = Conversion.find_or_create(cookies[:conversion_id],params[:marketing_mode])
|
37
|
-
cookies[:conversion_id] = conversion.id
|
38
|
-
end
|
39
|
-
|
40
|
-
def track_conversion(conversion_state)
|
41
|
-
Rails.logger.debug "Attempting to track #{conversion_state}"
|
42
|
-
Conversion.track(cookies[:conversion_id], conversion_state)
|
43
|
-
rescue
|
44
|
-
|
45
|
-
end
|
46
|
-
|
47
35
|
# loads the graph from the users point of view
|
48
36
|
def load_graph
|
49
37
|
@graph ||= Koala::Facebook::API.new(session[:at])
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module FacebookApp
|
2
|
+
module FacebookSdkHelper
|
3
|
+
|
4
|
+
def add_facebook_sdk
|
5
|
+
%Q{
|
6
|
+
<div id="fb-root"></div>
|
7
|
+
<script>
|
8
|
+
window.fbAsyncInit = function() {
|
9
|
+
FB.init({
|
10
|
+
appId : '#{FacebookApp::FacebookCredentials.app_id}',
|
11
|
+
channelURL : '#{facebook_app.facebook_channel_url}',
|
12
|
+
status : true, // check login status
|
13
|
+
cookie : true, // enable cookies to allow the server to access the session
|
14
|
+
oauth : true, // enable OAuth 2.0
|
15
|
+
xfbml : true // parse XFBML
|
16
|
+
});
|
17
|
+
// Additional initialization code here
|
18
|
+
};
|
19
|
+
|
20
|
+
// Load the SDK Asynchronously
|
21
|
+
(function(d){
|
22
|
+
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
|
23
|
+
js = d.createElement('script'); js.id = id; js.async = true;
|
24
|
+
js.src = "//connect.facebook.net/en_US/all.js";
|
25
|
+
d.getElementsByTagName('head')[0].appendChild(js);
|
26
|
+
}(document));
|
27
|
+
</script>
|
28
|
+
}.html_safe
|
29
|
+
end
|
30
|
+
|
31
|
+
def uid
|
32
|
+
javascript_tag("FB.getUserID()")
|
33
|
+
end
|
34
|
+
|
35
|
+
# Configurable[:facebook_permissions]
|
36
|
+
def facebook_login(text, permissions, log_in_url)
|
37
|
+
link_to(text, "#", :onclick => "facebookLogin('#{permissions}', '#{log_in_url}'").html_safe
|
38
|
+
end
|
39
|
+
|
40
|
+
def uninstall_facebook_app_button
|
41
|
+
button_to_function("Uninstall This Facebook App", "removeAppPermissions()")
|
42
|
+
end
|
43
|
+
|
44
|
+
def facebook_logout_button
|
45
|
+
button_to_function("Log out of App", "FB.logout()")
|
46
|
+
end
|
47
|
+
|
48
|
+
def comments_box
|
49
|
+
%Q{
|
50
|
+
<script>(function(d, s, id) {
|
51
|
+
var js, fjs = d.getElementsByTagName(s)[0];
|
52
|
+
if (d.getElementById(id)) {return;}
|
53
|
+
js = d.createElement(s); js.id = id;
|
54
|
+
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=225198020866871";
|
55
|
+
fjs.parentNode.insertBefore(js, fjs);
|
56
|
+
}(document, 'script', 'facebook-jssdk'));</script>
|
57
|
+
|
58
|
+
<div class="fb-comments" data-href="http://apps.facebook.com/myprofilereport/" data-num-posts="20" data-width="700"></div>
|
59
|
+
}.html_safe
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
@@ -16,10 +16,6 @@ module FacebookApp
|
|
16
16
|
transition :permissions_dialogue => :denied_permissions
|
17
17
|
end
|
18
18
|
|
19
|
-
event :deny_extended_permissions do
|
20
|
-
transition [:deny_permissions, :permissions_dialogue] => :denied_extended_permissions
|
21
|
-
end
|
22
|
-
|
23
19
|
event :accept_permissions do
|
24
20
|
transition [:denied_permissions, :denied_extended_permissions, :permissions_dialogue] => :installed
|
25
21
|
end
|
@@ -11,6 +11,12 @@ module FacebookApp
|
|
11
11
|
"Cannot compute yet"
|
12
12
|
end
|
13
13
|
|
14
|
+
def funnel(from_state, to_state, marketing_type=:all)
|
15
|
+
state_count(from_state, marketing_type)/ state_count(to_state, marketing_type)
|
16
|
+
rescue ZeroDivisionError
|
17
|
+
"Cannot compute yet"
|
18
|
+
end
|
19
|
+
|
14
20
|
def splash_page_state_count(marketing_mode)
|
15
21
|
state_count(:splash_page, marketing_mode).to_s
|
16
22
|
end
|
@@ -27,10 +33,6 @@ module FacebookApp
|
|
27
33
|
state_count(:denied_permissions, marketing_mode).to_s
|
28
34
|
end
|
29
35
|
|
30
|
-
def denied_extended_state_count(marketing_mode)
|
31
|
-
state_count(:denied_extended_permissions, marketing_mode).to_s
|
32
|
-
end
|
33
|
-
|
34
36
|
def infographic_state_count(marketing_mode)
|
35
37
|
state_count(:generated_infographic, marketing_mode).to_s
|
36
38
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
+
h4 Basic Numbers
|
2
|
+
hr
|
1
3
|
ul
|
2
4
|
li = "Advertising: " + conversion_summary.send(state, :advertising)
|
3
5
|
li = "Viral: " + conversion_summary.send(state, :viral)
|
4
6
|
li = "Unknown or testing: " + conversion_summary.send(state, nil)
|
5
|
-
li = "
|
6
|
-
li = "Ratio of all advertised visitors that reach this stage: " + conversion_summary.percentage_of_total(state, :advertising)
|
7
|
-
li = "Ratio of all viral visitors that reach this stage: " + conversion_summary.percentage_of_total(state, :viral)
|
7
|
+
li = "Total visitors: " + conversion_summary.send(state, :all)
|
8
8
|
li.virality= "Virality: " + number_to_percentage(conversion_summary.virality_coefficient(state))
|
9
9
|
|
@@ -0,0 +1,6 @@
|
|
1
|
+
h4.title Funnel Information
|
2
|
+
hr
|
3
|
+
p Percentage of all #{from_stage.to_s.humanize} users reaching this stage: #{conversion_summary.funnel(from_stage, to_stage)}
|
4
|
+
p Percentage of viral #{from_stage.to_s.humanize} users reaching this stage: #{conversion_summary.funnel(from_stage, to_stage, :viral)}
|
5
|
+
p Percentage of advertised #{from_stage.to_s.humanize} users reaching this stage: #{conversion_summary.funnel(from_stage, to_stage, :advertising)}
|
6
|
+
hr
|
@@ -1,18 +1,23 @@
|
|
1
1
|
h1 Spamalytics
|
2
2
|
h2 Unique users who reached splash page
|
3
3
|
= render :partial => 'conversion_stage', :locals => {:state => :splash_page_state_count, :conversion_summary => conversion_summary }
|
4
|
+
|
4
5
|
h2 Unique users who saw permissions dialogue for this app
|
5
6
|
= render :partial => 'conversion_stage', :locals => {:state => :permissions_state_count, :conversion_summary => conversion_summary }
|
7
|
+
= render :partial => "funnel", :locals => {:from_stage => :splash_page, :to_stage => :permission_dialogue, :conversion_summary => conversion_summary}
|
8
|
+
|
6
9
|
h2 Unique users who installed this facebook app (accepted permissions)
|
7
10
|
= render :partial => 'conversion_stage', :locals => {:state => :installed_state_count, :conversion_summary => conversion_summary }
|
8
|
-
|
11
|
+
= render :partial => "funnel", :locals => {:from_stage => :permissions_dialogue, :to_stage => :accept_infographics, :conversion_summary => conversion_summary}
|
12
|
+
|
13
|
+
h2 Unique users who denied permissions for this app
|
9
14
|
p Note that these users are all redirected to Identified.com, so it's not a complete loss
|
10
15
|
= render :partial => 'conversion_stage', :locals => {:state => :denied_state_count, :conversion_summary => conversion_summary }
|
11
|
-
h2 Unique users who denied extended permissions for this app (publish rights etc)
|
12
|
-
p Note that these users are all redirected to Identified.com, so it's not a complete loss
|
13
|
-
= render :partial => 'conversion_stage', :locals => {:state => :denied_extended_state_count, :conversion_summary => conversion_summary }
|
14
16
|
h2 Unique users who sent an infographic
|
15
17
|
= render :partial => 'conversion_stage', :locals => {:state => :infographic_state_count, :conversion_summary => conversion_summary }
|
18
|
+
= render :partial => "funnel", :locals => {:from_stage => :accept_permissions, :to_stage => :generate_infographic, :conversion_summary => conversion_summary}
|
19
|
+
|
16
20
|
h2 Unique users who installed Identified app after coming through here
|
17
21
|
p Installed the Identified Facebook app (success)
|
18
22
|
= render :partial => 'conversion_stage', :locals => {:state => :signed_up_identified_state_count, :conversion_summary => conversion_summary }
|
23
|
+
= render :partial => "funnel", :locals => {:from_stage => :generate_infographic, :to_stage => :signed_up_identified, :conversion_summary => conversion_summary}
|
@@ -1,10 +1,11 @@
|
|
1
|
+
= add_facebook_sdk
|
1
2
|
#spamalytics
|
2
3
|
= render :partial => 'spamalytics', :locals => {:conversion_summary => @conversion_summary}
|
3
4
|
h2 Testing
|
4
5
|
p Delete all stored conversion data. Useful for testing conversions are working.
|
5
6
|
= button_to "Delete Data", facebook_app.clear_conversion_data_path, :confirm => "Are you sure you want to permanently delete all conversion data?"
|
6
7
|
p Remove app permission. Useful for checking if permissions dialogue shows at right time. Will log you in if you are logged out.
|
7
|
-
=
|
8
|
+
= uninstall_facebook_app_button
|
8
9
|
p Register Achievements With Facebook(must be done with each new app)
|
9
10
|
= button_to "Register Achivements", facebook_app.register_with_fb_achievement_path(1)
|
10
11
|
|
@@ -0,0 +1 @@
|
|
1
|
+
<script src="//connect.facebook.net/en_US/all.js"></script>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# The asset pipeline logger is messy and destroys the ability to debug
|
2
|
+
|
3
|
+
Rails.application.assets.logger = Logger.new('/dev/null')
|
4
|
+
Rails::Rack::Logger.class_eval do
|
5
|
+
def before_dispatch_with_quiet_assets(env)
|
6
|
+
before_dispatch_without_quiet_assets(env) unless env['PATH_INFO'].index("/assets/") == 0
|
7
|
+
end
|
8
|
+
alias_method_chain :before_dispatch, :quiet_assets
|
9
|
+
end
|
10
|
+
|
data/config/routes.rb
CHANGED
@@ -7,6 +7,10 @@ FacebookApp::Engine.routes.draw do
|
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
+
get "/channel" => "facebook_sdk#channel", :as => :facebook_channel
|
11
|
+
|
12
|
+
post "/trackings" => "trackings#create", :as => :trackings
|
13
|
+
|
10
14
|
match "/oauth_callback" => "oauth#create", :as => :oauth_callback
|
11
15
|
match "/denied" => "oauth#denied", :as => :denied
|
12
16
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module FacebookApp
|
2
|
+
module TrackingHelper
|
3
|
+
|
4
|
+
def begin_tracking
|
5
|
+
conversion = Conversion.find_or_create(cookies[:conversion_id],params[:marketing_mode])
|
6
|
+
cookies[:conversion_id] = conversion.id
|
7
|
+
end
|
8
|
+
|
9
|
+
def track_conversion(conversion_state)
|
10
|
+
Rails.logger.debug "Attempting to track #{conversion_state}"
|
11
|
+
Conversion.track(cookies[:conversion_id], conversion_state)
|
12
|
+
rescue
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
data/lib/facebook_app/version.rb
CHANGED
data/lib/facebook_app.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: facebook_app
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.20
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jack Kinsella
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-11-
|
13
|
+
date: 2011-11-08 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -118,6 +118,7 @@ files:
|
|
118
118
|
- app/assets/images/shared/ajax-loader.gif
|
119
119
|
- app/assets/images/single_pixel.png
|
120
120
|
- app/assets/javascripts/facebook_app.js
|
121
|
+
- app/assets/javascripts/javascript_sdk.js.coffee
|
121
122
|
- app/assets/javascripts/pages.coffee.erb
|
122
123
|
- app/assets/stylesheets/admin.sass
|
123
124
|
- app/assets/stylesheets/configurables.sass
|
@@ -128,9 +129,12 @@ files:
|
|
128
129
|
- app/controllers/facebook_app/admin_controller.rb
|
129
130
|
- app/controllers/facebook_app/external_trackings_controller.rb
|
130
131
|
- app/controllers/facebook_app/facebook_app_controller.rb
|
132
|
+
- app/controllers/facebook_app/facebook_sdk_controller.rb
|
131
133
|
- app/controllers/facebook_app/oauth_controller.rb
|
132
134
|
- app/controllers/facebook_app/pages_controller.rb
|
135
|
+
- app/controllers/facebook_app/trackings_controller.rb
|
133
136
|
- app/helpers/facebook_app/application_helper.rb
|
137
|
+
- app/helpers/facebook_app/facebook_sdk_helper.rb
|
134
138
|
- app/mailers/.gitkeep
|
135
139
|
- app/models/.gitkeep
|
136
140
|
- app/models/facebook_app/conversion.rb
|
@@ -139,19 +143,23 @@ files:
|
|
139
143
|
- app/models/facebook_app/infographic_server_communicator.rb
|
140
144
|
- app/views/facebook_app/achievements/show.html.slim
|
141
145
|
- app/views/facebook_app/admin/_conversion_stage.html.slim
|
146
|
+
- app/views/facebook_app/admin/_funnel.html.slim
|
142
147
|
- app/views/facebook_app/admin/_spamalytics.html.slim
|
143
148
|
- app/views/facebook_app/admin/new_fb_credentials.html.slim
|
144
149
|
- app/views/facebook_app/admin/show.html.slim
|
145
150
|
- app/views/facebook_app/external_trackings/test.html.slim
|
151
|
+
- app/views/facebook_app/facebook_sdk/channel.html
|
146
152
|
- app/views/facebook_app/pages/privacy_policy.html.slim
|
147
153
|
- app/views/facebook_app/pages/terms_of_service.html.slim
|
148
154
|
- app/views/layouts/facebook_app.html.slim
|
155
|
+
- config/initializers/quiet_asset_pipeline_log.rb
|
149
156
|
- config/routes.rb
|
150
157
|
- db/migrate/20111024214949_add_facebook_app.rb
|
151
158
|
- facebook_app.gemspec
|
152
159
|
- lib/facebook_app.rb
|
153
160
|
- lib/facebook_app/engine.rb
|
154
161
|
- lib/facebook_app/recipes.rb
|
162
|
+
- lib/facebook_app/tracking_helper.rb
|
155
163
|
- lib/facebook_app/version.rb
|
156
164
|
- lib/generators/facebook_app/install_generator.rb
|
157
165
|
- lib/generators/facebook_app/templates/configurable.yml
|
@@ -182,7 +190,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
190
|
requirements: []
|
183
191
|
|
184
192
|
rubyforge_project: facebook_app
|
185
|
-
rubygems_version: 1.8.
|
193
|
+
rubygems_version: 1.8.11
|
186
194
|
signing_key:
|
187
195
|
specification_version: 3
|
188
196
|
summary: Base Facebook for rapid development of future Facebook applications
|