facebook_app 0.0.3
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/Gemfile +4 -0
- data/Gemfile.lock +158 -0
- data/README.textile +52 -0
- data/Rakefile +1 -0
- data/app/assets/images/shared/ajax-loader.gif +0 -0
- data/app/assets/images/single_pixel.png +0 -0
- data/app/assets/javascripts/facebook_app.js +9 -0
- data/app/assets/javascripts/pages.coffee.erb +18 -0
- data/app/assets/stylesheets/admin.sass +13 -0
- data/app/assets/stylesheets/configurables.sass +11 -0
- data/app/assets/stylesheets/facebook_app.css +9 -0
- data/app/assets/stylesheets/layout.css.scss +280 -0
- data/app/assets/stylesheets/yui-3.4.1.css +7 -0
- data/app/controllers/facebook_app/achievements_controller.rb +21 -0
- data/app/controllers/facebook_app/admin_controller.rb +42 -0
- data/app/controllers/facebook_app/external_trackings_controller.rb +21 -0
- data/app/controllers/facebook_app/facebook_app_controller.rb +59 -0
- data/app/controllers/facebook_app/oauth_controller.rb +46 -0
- data/app/controllers/facebook_app/pages_controller.rb +14 -0
- data/app/helpers/facebook_app/application_helper.rb +55 -0
- data/app/mailers/.gitkeep +0 -0
- data/app/models/.gitkeep +0 -0
- data/app/models/facebook_app/conversion.rb +50 -0
- data/app/models/facebook_app/conversion_summary.rb +58 -0
- data/app/models/facebook_app/facebook_credentials.rb +56 -0
- data/app/models/facebook_app/infographic_server_communicator.rb +21 -0
- data/app/views/facebook_app/achievements/show.html.slim +12 -0
- data/app/views/facebook_app/admin/_conversion_stage.html.slim +5 -0
- data/app/views/facebook_app/admin/_spamalytics.html.slim +16 -0
- data/app/views/facebook_app/admin/new_fb_credentials.html.slim +10 -0
- data/app/views/facebook_app/admin/show.html.slim +28 -0
- data/app/views/facebook_app/external_trackings/test.html.slim +3 -0
- data/app/views/facebook_app/pages/privacy_policy.html.slim +49 -0
- data/app/views/facebook_app/pages/terms_of_service.html.slim +49 -0
- data/app/views/layouts/facebook_app.html.slim +17 -0
- data/config/routes.rb +31 -0
- data/db/migrate/20111024214949_add_facebook_app.rb +29 -0
- data/facebook_app.gemspec +33 -0
- data/lib/facebook_app/engine.rb +15 -0
- data/lib/facebook_app/recipes.rb +39 -0
- data/lib/facebook_app/version.rb +3 -0
- data/lib/facebook_app.rb +15 -0
- data/lib/generators/facebook_app/install_generator.rb +19 -0
- data/lib/generators/facebook_app/templates/configurable.yml +79 -0
- data/lib/generators/facebook_app/templates/delayed_job +5 -0
- data/lib/generators/facebook_app/templates/seeds.rb +7 -0
- data/script/infographic.py +180 -0
- metadata +180 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
facebook_app (0.0.2)
|
|
5
|
+
configurable_engine
|
|
6
|
+
delayed_job (~> 2.1.0)
|
|
7
|
+
formtastic
|
|
8
|
+
koala
|
|
9
|
+
rails (>= 3.1)
|
|
10
|
+
rubber (= 1.15.0)
|
|
11
|
+
slim-rails
|
|
12
|
+
state_machine
|
|
13
|
+
|
|
14
|
+
GEM
|
|
15
|
+
remote: http://rubygems.org/
|
|
16
|
+
specs:
|
|
17
|
+
actionmailer (3.1.0)
|
|
18
|
+
actionpack (= 3.1.0)
|
|
19
|
+
mail (~> 2.3.0)
|
|
20
|
+
actionpack (3.1.0)
|
|
21
|
+
activemodel (= 3.1.0)
|
|
22
|
+
activesupport (= 3.1.0)
|
|
23
|
+
builder (~> 3.0.0)
|
|
24
|
+
erubis (~> 2.7.0)
|
|
25
|
+
i18n (~> 0.6)
|
|
26
|
+
rack (~> 1.3.2)
|
|
27
|
+
rack-cache (~> 1.0.3)
|
|
28
|
+
rack-mount (~> 0.8.2)
|
|
29
|
+
rack-test (~> 0.6.1)
|
|
30
|
+
sprockets (~> 2.0.0)
|
|
31
|
+
activemodel (3.1.0)
|
|
32
|
+
activesupport (= 3.1.0)
|
|
33
|
+
bcrypt-ruby (~> 3.0.0)
|
|
34
|
+
builder (~> 3.0.0)
|
|
35
|
+
i18n (~> 0.6)
|
|
36
|
+
activerecord (3.1.0)
|
|
37
|
+
activemodel (= 3.1.0)
|
|
38
|
+
activesupport (= 3.1.0)
|
|
39
|
+
arel (~> 2.2.1)
|
|
40
|
+
tzinfo (~> 0.3.29)
|
|
41
|
+
activeresource (3.1.0)
|
|
42
|
+
activemodel (= 3.1.0)
|
|
43
|
+
activesupport (= 3.1.0)
|
|
44
|
+
activesupport (3.1.0)
|
|
45
|
+
multi_json (~> 1.0)
|
|
46
|
+
addressable (2.2.6)
|
|
47
|
+
amazon-ec2 (0.9.17)
|
|
48
|
+
xml-simple (>= 1.0.12)
|
|
49
|
+
arel (2.2.1)
|
|
50
|
+
aws-s3 (0.6.2)
|
|
51
|
+
builder
|
|
52
|
+
mime-types
|
|
53
|
+
xml-simple
|
|
54
|
+
bcrypt-ruby (3.0.1)
|
|
55
|
+
builder (3.0.0)
|
|
56
|
+
capistrano (2.9.0)
|
|
57
|
+
highline
|
|
58
|
+
net-scp (>= 1.0.0)
|
|
59
|
+
net-sftp (>= 2.0.0)
|
|
60
|
+
net-ssh (>= 2.0.14)
|
|
61
|
+
net-ssh-gateway (>= 1.1.0)
|
|
62
|
+
configurable_engine (0.2.9)
|
|
63
|
+
activerecord (~> 3)
|
|
64
|
+
rails (~> 3)
|
|
65
|
+
daemons (1.1.4)
|
|
66
|
+
delayed_job (2.1.4)
|
|
67
|
+
activesupport (~> 3.0)
|
|
68
|
+
daemons
|
|
69
|
+
erubis (2.7.0)
|
|
70
|
+
faraday (0.7.5)
|
|
71
|
+
addressable (~> 2.2.6)
|
|
72
|
+
multipart-post (~> 1.1.3)
|
|
73
|
+
rack (< 2, >= 1.1.0)
|
|
74
|
+
formtastic (2.0.0)
|
|
75
|
+
rails (~> 3.0)
|
|
76
|
+
highline (1.6.2)
|
|
77
|
+
hike (1.2.1)
|
|
78
|
+
httpclient (2.2.2)
|
|
79
|
+
i18n (0.6.0)
|
|
80
|
+
json (1.6.1)
|
|
81
|
+
koala (1.2.1)
|
|
82
|
+
faraday (~> 0.7.0)
|
|
83
|
+
multi_json (~> 1.0)
|
|
84
|
+
mail (2.3.0)
|
|
85
|
+
i18n (>= 0.4.0)
|
|
86
|
+
mime-types (~> 1.16)
|
|
87
|
+
treetop (~> 1.4.8)
|
|
88
|
+
mime-types (1.17.1)
|
|
89
|
+
multi_json (1.0.3)
|
|
90
|
+
multipart-post (1.1.3)
|
|
91
|
+
mumboe-soap4r (1.5.8.4)
|
|
92
|
+
httpclient (>= 2.1.1)
|
|
93
|
+
net-scp (1.0.4)
|
|
94
|
+
net-ssh (>= 1.99.1)
|
|
95
|
+
net-sftp (2.0.5)
|
|
96
|
+
net-ssh (>= 2.0.9)
|
|
97
|
+
net-ssh (2.2.1)
|
|
98
|
+
net-ssh-gateway (1.1.0)
|
|
99
|
+
net-ssh (>= 1.99.1)
|
|
100
|
+
nettica (0.4.0)
|
|
101
|
+
mumboe-soap4r
|
|
102
|
+
polyglot (0.3.2)
|
|
103
|
+
rack (1.3.5)
|
|
104
|
+
rack-cache (1.0.3)
|
|
105
|
+
rack (>= 0.4)
|
|
106
|
+
rack-mount (0.8.3)
|
|
107
|
+
rack (>= 1.0.0)
|
|
108
|
+
rack-ssl (1.3.2)
|
|
109
|
+
rack
|
|
110
|
+
rack-test (0.6.1)
|
|
111
|
+
rack (>= 1.0)
|
|
112
|
+
rails (3.1.0)
|
|
113
|
+
actionmailer (= 3.1.0)
|
|
114
|
+
actionpack (= 3.1.0)
|
|
115
|
+
activerecord (= 3.1.0)
|
|
116
|
+
activeresource (= 3.1.0)
|
|
117
|
+
activesupport (= 3.1.0)
|
|
118
|
+
bundler (~> 1.0)
|
|
119
|
+
railties (= 3.1.0)
|
|
120
|
+
railties (3.1.0)
|
|
121
|
+
actionpack (= 3.1.0)
|
|
122
|
+
activesupport (= 3.1.0)
|
|
123
|
+
rack-ssl (~> 1.3.2)
|
|
124
|
+
rake (>= 0.8.7)
|
|
125
|
+
rdoc (~> 3.4)
|
|
126
|
+
thor (~> 0.14.6)
|
|
127
|
+
rake (0.9.2.2)
|
|
128
|
+
rdoc (3.11)
|
|
129
|
+
json (~> 1.4)
|
|
130
|
+
rubber (1.15.0)
|
|
131
|
+
amazon-ec2 (>= 0.9.17)
|
|
132
|
+
aws-s3
|
|
133
|
+
capistrano (>= 2.4.0)
|
|
134
|
+
nettica
|
|
135
|
+
slim (1.0.3)
|
|
136
|
+
temple (~> 0.3.4)
|
|
137
|
+
tilt (~> 1.3.2)
|
|
138
|
+
slim-rails (0.2.1)
|
|
139
|
+
slim (>= 0.9.2)
|
|
140
|
+
sprockets (2.0.3)
|
|
141
|
+
hike (~> 1.2)
|
|
142
|
+
rack (~> 1.0)
|
|
143
|
+
tilt (!= 1.3.0, ~> 1.1)
|
|
144
|
+
state_machine (1.0.2)
|
|
145
|
+
temple (0.3.4)
|
|
146
|
+
thor (0.14.6)
|
|
147
|
+
tilt (1.3.3)
|
|
148
|
+
treetop (1.4.10)
|
|
149
|
+
polyglot
|
|
150
|
+
polyglot (>= 0.3.1)
|
|
151
|
+
tzinfo (0.3.30)
|
|
152
|
+
xml-simple (1.1.1)
|
|
153
|
+
|
|
154
|
+
PLATFORMS
|
|
155
|
+
ruby
|
|
156
|
+
|
|
157
|
+
DEPENDENCIES
|
|
158
|
+
facebook_app!
|
data/README.textile
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
h1. Facebook App Engine
|
|
2
|
+
|
|
3
|
+
Everything you need to quickly build and deploy Facebook apps.
|
|
4
|
+
|
|
5
|
+
h2. Features
|
|
6
|
+
|
|
7
|
+
h3. Tracking at permissions dialogue various stages, along viral and regular marketing methods
|
|
8
|
+
|
|
9
|
+
h3. Infographic generation and tagging server communication
|
|
10
|
+
|
|
11
|
+
h3. Comments and liking viral hooks.
|
|
12
|
+
|
|
13
|
+
h3. Achievements viral hooks.
|
|
14
|
+
|
|
15
|
+
h3. Thorough authenitcation solution using OAUTH2
|
|
16
|
+
|
|
17
|
+
h3. Admin backend for cranking up or down various virality hooks.
|
|
18
|
+
|
|
19
|
+
Visit admin/configurable
|
|
20
|
+
|
|
21
|
+
h3. Helper methods to help non technical users test the app.
|
|
22
|
+
|
|
23
|
+
Visit /admin
|
|
24
|
+
|
|
25
|
+
h3. Namespaced models and method names to avoid clashes
|
|
26
|
+
|
|
27
|
+
h3. Terms of service and privacy policy
|
|
28
|
+
|
|
29
|
+
Automatically modified to account for app name
|
|
30
|
+
|
|
31
|
+
Key methods:
|
|
32
|
+
|
|
33
|
+
Controller
|
|
34
|
+
before_filter :ensure_logged_in, :load_graph
|
|
35
|
+
|
|
36
|
+
begin_tracking
|
|
37
|
+
(start tracking at stage 1)
|
|
38
|
+
|
|
39
|
+
login_as_app
|
|
40
|
+
(you can log in as the app or as a user)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
h2. Installation Instructions
|
|
44
|
+
|
|
45
|
+
gem "facebook_app"
|
|
46
|
+
rake facebook_app:install:migrations
|
|
47
|
+
rake db:migrate
|
|
48
|
+
rake facebook_app:install
|
|
49
|
+
rake db:migrate
|
|
50
|
+
|
|
51
|
+
#routes in main app
|
|
52
|
+
mount FacebookApp::Engine => "/"
|
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// This is a manifest file that'll be compiled into including all the files listed below.
|
|
2
|
+
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
|
|
3
|
+
// be included in the compiled file accessible from http://example.com/assets/application.js
|
|
4
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
|
5
|
+
// the compiled file.
|
|
6
|
+
//
|
|
7
|
+
//= require jquery
|
|
8
|
+
//= require jquery_ujs
|
|
9
|
+
//= require_tree .
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Place all the behaviors and hooks related to the matching controller here.
|
|
2
|
+
# All this logic will automatically be available in application.js.
|
|
3
|
+
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
|
4
|
+
|
|
5
|
+
# Fix bug where Facebook platform added snippet to url
|
|
6
|
+
|
|
7
|
+
if (window.location.hash == '#_=_')
|
|
8
|
+
window.location.hash = ''
|
|
9
|
+
|
|
10
|
+
click_anywhere_redirect = (redirect_link) ->
|
|
11
|
+
$(document).ready(
|
|
12
|
+
() -> $("*").each($(this).click(() -> window.location = redirect_link))
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
if window.location.href.match(/infographic/)
|
|
16
|
+
identified_link = "http://www.identified.com/?fbg=1"
|
|
17
|
+
click_anywhere_redirect(identified_link)
|
|
18
|
+
setTimeout((() -> window.location = identified_link), 12000)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This is a manifest file that'll automatically include all the stylesheets available in this directory
|
|
3
|
+
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
|
|
4
|
+
* the top of the compiled file, but it's generally better to create a new file per style scope.
|
|
5
|
+
*= require yui-3.4.1.css
|
|
6
|
+
*= require formtastic
|
|
7
|
+
*= require_self
|
|
8
|
+
*= require_tree .
|
|
9
|
+
*/
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
body{
|
|
2
|
+
padding:0px;
|
|
3
|
+
margin:0px auto;
|
|
4
|
+
font-family:"Lucida Grande", Verdana, Arial;
|
|
5
|
+
font-size:13px;
|
|
6
|
+
width:760px;
|
|
7
|
+
line-height:1.5em;
|
|
8
|
+
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
a {
|
|
12
|
+
cursor: pointer;
|
|
13
|
+
color: #3B5998;
|
|
14
|
+
text-decoration: none;
|
|
15
|
+
&:hover{
|
|
16
|
+
text-decoration:underline
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
h1, h2{
|
|
21
|
+
font-family:"HelveticaNeue", "Helvetica", Arial;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
h1{
|
|
25
|
+
font-weight:800;
|
|
26
|
+
font-size:40px;
|
|
27
|
+
padding:40px 0px 20px 0px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
h2{
|
|
31
|
+
font-weight:200;
|
|
32
|
+
font-size:24px;
|
|
33
|
+
color:#646464;
|
|
34
|
+
padding-bottom:40px;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
#privacy {
|
|
38
|
+
p {
|
|
39
|
+
margin-bottom: 10px;
|
|
40
|
+
}
|
|
41
|
+
h2 {
|
|
42
|
+
padding-bottom: 10px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
div#header{
|
|
48
|
+
text-align:center;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
div#content{
|
|
52
|
+
|
|
53
|
+
div.row{
|
|
54
|
+
width:680px;
|
|
55
|
+
margin:0px auto;
|
|
56
|
+
margin-bottom:20px;
|
|
57
|
+
zoom: 1;
|
|
58
|
+
&:after {
|
|
59
|
+
clear: both;
|
|
60
|
+
content: ".";
|
|
61
|
+
display: block;
|
|
62
|
+
height: 0;
|
|
63
|
+
visibility: hidden;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.split1,
|
|
67
|
+
.split2{
|
|
68
|
+
float:left;
|
|
69
|
+
margin-right:40px;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.split3{
|
|
73
|
+
float:left;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
a.big.button{
|
|
77
|
+
width:578px;
|
|
78
|
+
text-align:center;
|
|
79
|
+
img{
|
|
80
|
+
margin-top: -8px;
|
|
81
|
+
margin-bottom: -2px;
|
|
82
|
+
margin-right: 5px;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
div.widget{
|
|
87
|
+
width:200px;
|
|
88
|
+
.title{
|
|
89
|
+
font-family:"HelveticaNeue-Medium", "Helvetica", Arial;
|
|
90
|
+
font-size:26px;
|
|
91
|
+
font-weight:800;
|
|
92
|
+
padding:10px 5px;
|
|
93
|
+
color:white;
|
|
94
|
+
-webkit-border-top-left-radius: 6px;
|
|
95
|
+
-webkit-border-top-right-radius: 6px;
|
|
96
|
+
-moz-border-radius-topleft: 6px;
|
|
97
|
+
-moz-border-radius-topright: 6px;
|
|
98
|
+
border-top-left-radius: 6px;
|
|
99
|
+
border-top-right-radius: 6px;
|
|
100
|
+
text-align:center;
|
|
101
|
+
text-shadow:0px 0px 1px black;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.photo{
|
|
105
|
+
width:200px;
|
|
106
|
+
height:200px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.photo img{
|
|
110
|
+
clip: rect(0px 200px 200px 0px);
|
|
111
|
+
position:absolute;
|
|
112
|
+
width:210px;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.badge{
|
|
116
|
+
position: relative;
|
|
117
|
+
top: -80px;
|
|
118
|
+
left: 120px;
|
|
119
|
+
margin-bottom: -100px;
|
|
120
|
+
width:100px;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.description{
|
|
124
|
+
border:1px solid #AAA;
|
|
125
|
+
background:#FFFFFF;
|
|
126
|
+
|
|
127
|
+
span.badge-area{
|
|
128
|
+
display: block;
|
|
129
|
+
width: 70px;
|
|
130
|
+
float: right;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
p{
|
|
134
|
+
padding:6px;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
ul li{
|
|
138
|
+
padding:6px;
|
|
139
|
+
color:#909090;
|
|
140
|
+
border-top:1px solid #DDD;
|
|
141
|
+
span{
|
|
142
|
+
float:right;
|
|
143
|
+
font-weight:bold;
|
|
144
|
+
text-align: right;
|
|
145
|
+
font-family:"HelveticaNeue-Medium", "Helvetica", Arial;
|
|
146
|
+
font-size:30px;
|
|
147
|
+
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
&.winner{
|
|
151
|
+
background: #FFFCCC;
|
|
152
|
+
color: #333;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
ul.placeholder{
|
|
157
|
+
display:none;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
&.award-1{
|
|
162
|
+
.title{
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
&.award-2{
|
|
167
|
+
.title{
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
&.award-3{
|
|
172
|
+
.title{
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
&.award-4{
|
|
177
|
+
.title{
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
&.award-5{
|
|
182
|
+
.title{
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
&.award-6{
|
|
187
|
+
.title{
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
&.award-7{
|
|
192
|
+
.title{
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
&.award-8{
|
|
197
|
+
.title{
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
&.award-9{
|
|
202
|
+
.title{
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
&.disabled{
|
|
207
|
+
.title{
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.photo{
|
|
211
|
+
width:200px;
|
|
212
|
+
height:200px;
|
|
213
|
+
background-position:50% 50%;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
&.loading{
|
|
218
|
+
background:#F2F2F2 url('shared/ajax-loader.gif') no-repeat 50% 45%;
|
|
219
|
+
|
|
220
|
+
& > div.photo{
|
|
221
|
+
visibility:hidden;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
& > div.description ul.table{
|
|
225
|
+
display:none;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
& > div.description ul.placeholder{
|
|
229
|
+
display:block;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
.button{
|
|
238
|
+
display:inline-block;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.button.primary {
|
|
242
|
+
color:white;
|
|
243
|
+
border:1px solid #3b6e22;
|
|
244
|
+
box-shadow: 0px 1px 0px #dcdde1;
|
|
245
|
+
text-shadow:0px -1px 0px #3b6e22;
|
|
246
|
+
background-image: -webkit-gradient(
|
|
247
|
+
linear,
|
|
248
|
+
left bottom,
|
|
249
|
+
left top,
|
|
250
|
+
color-stop(0, #67a54b),
|
|
251
|
+
color-stop(0.97, #75ae5c),
|
|
252
|
+
color-stop(0.98, #98c286)
|
|
253
|
+
);
|
|
254
|
+
background-image: -moz-linear-gradient(
|
|
255
|
+
center bottom,
|
|
256
|
+
#67a54b 0%,
|
|
257
|
+
#75ae5c 97%,
|
|
258
|
+
#98c286 98%
|
|
259
|
+
);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.button.primary:active{
|
|
263
|
+
background:#609946;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
.button.big{
|
|
268
|
+
font-size:18px;
|
|
269
|
+
padding-top:11px;
|
|
270
|
+
padding-bottom:11px;
|
|
271
|
+
padding-left:50px;
|
|
272
|
+
padding-right:50px;
|
|
273
|
+
font-weight:bold;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
a.button{
|
|
277
|
+
text-decoration:none;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*
|
|
2
|
+
YUI 3.4.1 (build 4118)
|
|
3
|
+
Copyright 2011 Yahoo! Inc. All rights reserved.
|
|
4
|
+
Licensed under the BSD License.
|
|
5
|
+
http://yuilibrary.com/license/
|
|
6
|
+
*/
|
|
7
|
+
html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea,select{*font-size:100%}legend{color:#000}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module FacebookApp
|
|
2
|
+
class AchievementsController < FacebookAppController
|
|
3
|
+
|
|
4
|
+
before_filter :login_as_app, :except => :show
|
|
5
|
+
|
|
6
|
+
def show
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def create
|
|
10
|
+
@user_uid = AwardSet.find_by_uid(params[:id])
|
|
11
|
+
app_graph.graph_call("#{user_uid}/achievements", {:achievement => achievement_url(1)}, :post)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# needs to be done once per Facebook app.
|
|
15
|
+
# make sure your app is set as a Game
|
|
16
|
+
def register_with_fb
|
|
17
|
+
@app_graph.graph_call("#{FB.app_id}/achievements", {:achievement => achievement_url(1), :display_order => 1 }, :post)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module FacebookApp
|
|
2
|
+
class AdminController < FacebookAppController
|
|
3
|
+
layout "facebook_app"
|
|
4
|
+
http_basic_authenticate_with :name => 'identified', :password => 'identified'
|
|
5
|
+
before_filter :ensure_logged_in, :only => :log_me_out
|
|
6
|
+
before_filter :load_graph, :only => :log_me_out
|
|
7
|
+
|
|
8
|
+
def show
|
|
9
|
+
@conversion_summary = FacebookApp::ConversionSummary.new
|
|
10
|
+
|
|
11
|
+
@fb = FacebookApp::FacebookCredentials.current_credentials
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def new_fb_credentials
|
|
15
|
+
@fb = FacebookApp::FacebookCredentials.new
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def clear_conversion_data
|
|
19
|
+
FacebookApp::Conversion.destroy_all
|
|
20
|
+
redirect_to facebook_app.admin_path
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def log_me_out
|
|
24
|
+
@graph.graph_call("#{@graph.get_object('me')['id']}/permissions", {}, :delete)
|
|
25
|
+
|
|
26
|
+
session[:at] = nil
|
|
27
|
+
session[:uid] = nil
|
|
28
|
+
cookies.delete(:conversion_id)
|
|
29
|
+
flash[:notice] = "You logged out as a Facebook user"
|
|
30
|
+
redirect_to facebook_app.admin_path
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def create_fb_credentials
|
|
34
|
+
@fb = FacebookApp::FacebookCredentials.new(params[:facebook_app_fb])
|
|
35
|
+
if @fb.save
|
|
36
|
+
redirect_to facebook_app.admin_path, :notice => "Successful updated facebok credentials"
|
|
37
|
+
else
|
|
38
|
+
render :new_fb_credentials
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module FacebookApp
|
|
2
|
+
class ExternalTrackingsController < FacebookAppController
|
|
3
|
+
|
|
4
|
+
def identified_signup
|
|
5
|
+
Conversion.find_by_id(cookies[:conversion_id]).try(:sign_up_on_identified)
|
|
6
|
+
show_single_pixel
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# show the pixel
|
|
10
|
+
def test
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def show_single_pixel
|
|
16
|
+
single_pixel = File.read(File.join(Rails.root, "app", "assets", "images", "single_pixel.png"), :mode => "rb")
|
|
17
|
+
send_data single_pixel, :filename => 'single_pixel.png', :type => 'image/gif'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|