asyncomni 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.rdoc +38 -0
- data/Rakefile +29 -0
- data/app/assets/javascripts/omniture.js +10 -0
- data/app/assets/javascripts/s_code.js +277 -0
- data/app/controllers/omniture_controller.rb +6 -0
- data/app/helpers/omniture_helper.rb +39 -0
- data/app/models/omniture.rb +28 -0
- data/app/views/omniture/_omniture.haml +17 -0
- data/config/initializers/omniture.rb +7 -0
- data/config/omniture.yml +18 -0
- data/config/routes.rb +3 -0
- data/lib/asyncomni.rb +7 -0
- data/lib/asyncomni/version.rb +3 -0
- data/lib/generators/asyncomni/install/install_generator.rb +14 -0
- data/lib/tasks/asyncomni_tasks.rake +4 -0
- data/spec/controllers/omniture_controller_spec.rb +13 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +56 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/omniture.yml +18 -0
- data/spec/dummy/config/routes.rb +58 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/dummy/README.rdoc +261 -0
- data/spec/dummy/dummy/Rakefile +7 -0
- data/spec/dummy/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/dummy/config.ru +4 -0
- data/spec/dummy/dummy/config/application.rb +56 -0
- data/spec/dummy/dummy/config/boot.rb +10 -0
- data/spec/dummy/dummy/config/database.yml +25 -0
- data/spec/dummy/dummy/config/environment.rb +5 -0
- data/spec/dummy/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/dummy/config/routes.rb +58 -0
- data/spec/dummy/dummy/public/404.html +26 -0
- data/spec/dummy/dummy/public/422.html +26 -0
- data/spec/dummy/dummy/public/500.html +25 -0
- data/spec/dummy/dummy/public/favicon.ico +0 -0
- data/spec/dummy/dummy/script/rails +6 -0
- data/spec/dummy/log/development.log +0 -0
- data/spec/dummy/log/test.log +28 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/helpers/omniture_helper_spec.rb +34 -0
- data/spec/spec_helper.rb +15 -0
- metadata +252 -0
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2012 Gourav Tiwari
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
= Asyncomni
|
2
|
+
Omniture integration could be painful in rails application. This project uses simple concept of using iframe to make asynchronus calls (not ajax!) to omniture to send usage tracking information.
|
3
|
+
|
4
|
+
= Disclaimer
|
5
|
+
This gem is currenly in early beta version but provides support of tracking user id and page names for user visits.
|
6
|
+
|
7
|
+
= Pre-requisites:
|
8
|
+
For rails 3.1.x applications:
|
9
|
+
|
10
|
+
gem install asyncomni
|
11
|
+
|
12
|
+
or in application's Gemfile add:
|
13
|
+
|
14
|
+
gem 'asyncomni'
|
15
|
+
gem 'haml' //this is for the time being!
|
16
|
+
|
17
|
+
= How to use:
|
18
|
+
|
19
|
+
run:
|
20
|
+
|
21
|
+
rails g asyncomni:install
|
22
|
+
|
23
|
+
Add below line to the layout, e.g. layout/aplication.html.erb
|
24
|
+
|
25
|
+
<iframe id ="omnitureFrame" name="omnitureFrame" width="0" height="0" style="visibility:hidden" data-page-name="<%=page_name %>" data-omniture-url="<%= omniture_url %>"> </iframe>
|
26
|
+
|
27
|
+
In case you are haml fan, add this to layout/application.html.haml:
|
28
|
+
|
29
|
+
%iframe#omnitureFrame{:name => "omnitureFrame", :width => "0", :height => "0", :style => '"visibility:hidden"', 'data-page-name' => page_name, 'data-omniture-url' => omniture_url}
|
30
|
+
|
31
|
+
|
32
|
+
Also, add omniture.js to asset pipeline. In application.js:
|
33
|
+
|
34
|
+
//= require omniture
|
35
|
+
|
36
|
+
That's it!
|
37
|
+
|
38
|
+
This project uses MIT-LICENSE.
|
data/Rakefile
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'Asyncomni'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
Bundler::GemHelper.install_tasks
|
24
|
+
|
25
|
+
require 'rspec/core/rake_task'
|
26
|
+
RSpec::Core::RakeTask.new(:spec)
|
27
|
+
|
28
|
+
# RSpec as default
|
29
|
+
task :default => :spec
|
@@ -0,0 +1,10 @@
|
|
1
|
+
$(document).ready(function() {
|
2
|
+
try{
|
3
|
+
updateOmnitureFrame();
|
4
|
+
} catch(e){}
|
5
|
+
});
|
6
|
+
function updateOmnitureFrame() {
|
7
|
+
var omnitureFrame = $("iframe#omnitureFrame")
|
8
|
+
var url = omnitureFrame.attr('data-omniture-url');
|
9
|
+
$("iframe#omnitureFrame").attr('src', url);
|
10
|
+
}
|
@@ -0,0 +1,277 @@
|
|
1
|
+
/* SiteCatalyst code version: H.1.
|
2
|
+
Copyright 1997-2005 Omniture, Inc. More info available at
|
3
|
+
http://www.omniture.com */
|
4
|
+
|
5
|
+
/* Specify the Report Suite ID(s) to track here */
|
6
|
+
var s=s_gi(s_account)
|
7
|
+
/************************** CONFIG SECTION **************************/
|
8
|
+
/* You may add or alter any code config here. */
|
9
|
+
s.charSet="UTF-8"
|
10
|
+
/* E-commerce Config */
|
11
|
+
s.currencyCode="USD"
|
12
|
+
/* Link Tracking Config */
|
13
|
+
// s.trackDownloadLinks=true
|
14
|
+
// s.trackExternalLinks=true
|
15
|
+
// s.trackInlineStats=true
|
16
|
+
// s.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mpg,avi,wmv,doc,pdf,xls,ppt"
|
17
|
+
// s.linkLeaveQueryString=false
|
18
|
+
s.linkTrackVars="None"
|
19
|
+
s.linkTrackEvents="None"
|
20
|
+
|
21
|
+
/* WARNING: Changing the visitor namespace will cause drastic changes
|
22
|
+
to how your visitor data is collected. Changes should only be made
|
23
|
+
when instructed to do so by your account manager.*/
|
24
|
+
// s.visitorNamespace="visiornamespace"
|
25
|
+
|
26
|
+
/* Application specific code starts here */
|
27
|
+
|
28
|
+
// function track_custom_links(link_obj, category, link_name) {
|
29
|
+
// var s=s_gi(s_account);
|
30
|
+
// s.linkTrackVars="prop1,prop6,prop7,prop8";
|
31
|
+
// // s.linkTrackEvents='None';
|
32
|
+
// // s.tl(link_obj, 'o', link_name);
|
33
|
+
// }
|
34
|
+
|
35
|
+
// function trackDownload(name, obj){
|
36
|
+
// trakSpecialLink(name, obj, 'd', "event1");
|
37
|
+
// }
|
38
|
+
|
39
|
+
// function trackHtmlMailToLink(name, obj) {
|
40
|
+
// trakSpecialLink(name, obj, 'o', "event2");
|
41
|
+
// }
|
42
|
+
|
43
|
+
// function trackExit(name, obj){
|
44
|
+
// trakSpecialLink(name, obj, 'e', "event1");
|
45
|
+
// }
|
46
|
+
|
47
|
+
// function trackCustomLink(name, obj) {
|
48
|
+
// trakSpecialLink(name, obj, 'o', "event1");
|
49
|
+
// }
|
50
|
+
/* Application specific code ends here */
|
51
|
+
|
52
|
+
/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
|
53
|
+
var s_objectID;function s_c2fe(f){var x='',s=0,e,a,b,c;while(1){e=
|
54
|
+
f.indexOf('"',s);b=f.indexOf('\\',s);c=f.indexOf("\n",s);if(e<0||(b>=
|
55
|
+
0&&b<e))e=b;if(e<0||(c>=0&&c<e))e=c;if(e>=0){x+=(e>s?f.substring(s,e):
|
56
|
+
'')+(e==c?'\\n':'\\'+f.substring(e,e+1));s=e+1}else return x
|
57
|
+
+f.substring(s)}return f}function s_c2fa(f){var s=f.indexOf('(')+1,e=
|
58
|
+
f.indexOf(')'),a='',c;while(s>=0&&s<e){c=f.substring(s,s+1);if(c==',')
|
59
|
+
a+='","';else if(("\n\r\t ").indexOf(c)<0)a+=c;s++}return a?'"'+a+'"':
|
60
|
+
a}function s_c2f(cc){cc=''+cc;var fc='var f=new Function(',s=
|
61
|
+
cc.indexOf(';',cc.indexOf('{')),e=cc.lastIndexOf('}'),o,a,d,q,c,f,h,x
|
62
|
+
fc+=s_c2fa(cc)+',"var s=new Object;';c=cc.substring(s+1,e);s=
|
63
|
+
c.indexOf('function');while(s>=0){d=1;q='';x=0;f=c.substring(s);a=
|
64
|
+
s_c2fa(f);e=o=c.indexOf('{',s);e++;while(d>0){h=c.substring(e,e+1);if(
|
65
|
+
q){if(h==q&&!x)q='';if(h=='\\')x=x?0:1;else x=0}else{if(h=='"'||h=="'"
|
66
|
+
)q=h;if(h=='{')d++;if(h=='}')d--}if(d>0)e++}c=c.substring(0,s)
|
67
|
+
+'new Function('+(a?a+',':'')+'"'+s_c2fe(c.substring(o+1,e))+'")'
|
68
|
+
+c.substring(e+1);s=c.indexOf('function')}fc+=s_c2fe(c)+';return s");'
|
69
|
+
eval(fc);return f}function s_gi(un,pg,ss){var c="function s_c(un,pg,s"
|
70
|
+
+"s){var s=this;s.wd=window;if(!s.wd.s_c_in){s.wd.s_c_il=new Array;s."
|
71
|
+
+"wd.s_c_in=0;}s._il=s.wd.s_c_il;s._in=s.wd.s_c_in;s._il[s._in]=s;s.w"
|
72
|
+
+"d.s_c_in++;s.m=function(m){return (''+m).indexOf('{')<0};s.fl=funct"
|
73
|
+
+"ion(x,l){return x?(''+x).substring(0,l):x};s.co=function(o){if(!o)r"
|
74
|
+
+"eturn o;var n=new Object,x;for(x in o)if(x.indexOf('select')<0&&x.i"
|
75
|
+
+"ndexOf('filter')<0)n[x]=o[x];return n};s.num=function(x){x=''+x;for"
|
76
|
+
+"(var p=0;p<x.length;p++)if(('0123456789').indexOf(x.substring(p,p+1"
|
77
|
+
+"))<0)return 0;return 1};s.rep=function(x,o,n){var i=x.indexOf(o),l="
|
78
|
+
+"n.length>0?n.length:1;while(x&&i>=0){x=x.substring(0,i)+n+x.substri"
|
79
|
+
+"ng(i+o.length);i=x.indexOf(o,i+l)}return x};s.ape=function(x){var s"
|
80
|
+
+"=this,i;x=x?s.rep(escape(''+x),'+','%2B'):x;if(x&&s.charSet&&s.em=="
|
81
|
+
+"1&&x.indexOf('%u')<0&&x.indexOf('%U')<0){i=x.indexOf('%');while(i>="
|
82
|
+
+"0){i++;if(('89ABCDEFabcdef').indexOf(x.substring(i,i+1))>=0)return "
|
83
|
+
+"x.substring(0,i)+'u00'+x.substring(i);i=x.indexOf('%',i)}}return x}"
|
84
|
+
+";s.epa=function(x){var s=this;return x?unescape(s.rep(''+x,'+',' ')"
|
85
|
+
+"):x};s.pt=function(x,d,f,a){var s=this,t=x,z=0,y,r;while(t){y=t.ind"
|
86
|
+
+"exOf(d);y=y<0?t.length:y;t=t.substring(0,y);r=s.m(f)?s[f](t,a):f(t,"
|
87
|
+
+"a);if(r)return r;z+=y+d.length;t=x.substring(z,x.length);t=z<x.leng"
|
88
|
+
+"th?t:''}return ''};s.isf=function(t,a){var c=a.indexOf(':');if(c>=0"
|
89
|
+
+")a=a.substring(0,c);if(t.substring(0,2)=='s_')t=t.substring(2);retu"
|
90
|
+
+"rn (t!=''&&t==a)};s.fsf=function(t,a){var s=this;if(s.pt(a,',','isf"
|
91
|
+
+"',t))s.fsg+=(s.fsg!=''?',':'')+t;return 0};s.fs=function(x,f){var s"
|
92
|
+
+"=this;s.fsg='';s.pt(x,',','fsf',f);return s.fsg};s.c_d='';s.c_gdf=f"
|
93
|
+
+"unction(t,a){var s=this;if(!s.num(t))return 1;return 0};s.c_gd=func"
|
94
|
+
+"tion(){var s=this,d=s.wd.location.hostname,n=s.cookieDomainPeriods,"
|
95
|
+
+"p;if(d&&!s.c_d){n=n?parseInt(n):2;n=n>2?n:2;p=d.lastIndexOf('.');wh"
|
96
|
+
+"ile(p>=0&&n>1){p=d.lastIndexOf('.',p-1);n--}s.c_d=p>0&&s.pt(d,'.','"
|
97
|
+
+"c_gdf',0)?d.substring(p):''}return s.c_d};s.c_r=function(k){var s=t"
|
98
|
+
+"his;k=s.ape(k);var c=' '+s.d.cookie,i=c.indexOf(' '+k+'='),e=i<0?i:"
|
99
|
+
+"c.indexOf(';',i),v=i<0?'':s.epa(c.substring(i+2+k.length,e<0?c.leng"
|
100
|
+
+"th:e));return v!='[[B]]'?v:''};s.c_w=function(k,v,e){var s=this,d=s"
|
101
|
+
+".c_gd(),l=s.cookieLifetime,t;v=''+v;l=l?(''+l).toUpperCase():'';if("
|
102
|
+
+"e&&l!='SESSION'&&l!='NONE'){t=(v!=''?parseInt(l?l:0):-60);if(t){e=n"
|
103
|
+
+"ew Date;e.setTime(e.getTime()+(t*1000))}}if(k&&l!='NONE'){s.d.cooki"
|
104
|
+
+"e=k+'='+s.ape(v!=''?v:'[[B]]')+'; path=/;'+(e&&l!='SESSION'?' expir"
|
105
|
+
+"es='+e.toGMTString()+';':'')+(d?' domain='+d+';':'');return s.c_r(k"
|
106
|
+
+")==v}return 0};s.eh=function(o,e,r,f){var s=this,b='s_'+e+'_'+s._in"
|
107
|
+
+",n=-1,l,i,x;if(!s.ehl)s.ehl=new Array;l=s.ehl;for(i=0;i<l.length&&n"
|
108
|
+
+"<0;i++){if(l[i].o==o&&l[i].e==e)n=i}if(n<0){n=i;l[n]=new Object}x=l"
|
109
|
+
+"[n];x.o=o;x.e=e;f=r?x.b:f;if(r||f){x.b=r?0:o[e];x.o[e]=f}if(x.b){x."
|
110
|
+
+"o[b]=x.b;return b}return 0};s.cet=function(f,a,t,o,b){var s=this,r;"
|
111
|
+
+"if(s.isie&&a.apv>=5)eval('try{r=s.m(f)?s[f](a):f(a)}catch(e){r=s.m("
|
112
|
+
+"t)?s[t](e):t(e)}');else{if(s.ismac&&s.u.indexOf('MSIE 4')>=0)r=s.m("
|
113
|
+
+"b)?s[b](a):b(a);else{s.eh(s.wd,'onerror',0,o);r=s.m(f)?s[f](a):f(a)"
|
114
|
+
+";s.eh(s.wd,'onerror',1)}}return r};s.gtfset=function(e){var s=this;"
|
115
|
+
+"return s.tfs};s.gtfsoe=new Function('e','var s=s_c_il['+s._in+'];s."
|
116
|
+
+"eh(window,\"onerror\",1);s.etfs=1;var c=s.t();if(c)s.d.write(c);s.e"
|
117
|
+
+"tfs=0;return true');s.gtfsfb=function(a){return window};s.gtfsf=fun"
|
118
|
+
+"ction(w){var s=this,p=w.parent,l=w.location;s.tfs=w;if(p&&p.locatio"
|
119
|
+
+"n!=l&&p.location.host==l.host){s.tfs=p;return s.gtfsf(s.tfs)}return"
|
120
|
+
+" s.tfs};s.gtfs=function(){var s=this;if(!s.tfs){s.tfs=s.wd;if(!s.et"
|
121
|
+
+"fs)s.tfs=s.cet('gtfsf',s.tfs,'gtfset',s.gtfsoe,'gtfsfb')}return s.t"
|
122
|
+
+"fs};s.ca=function(){var s=this,imn='s_i_'+s.fun;if(s.d.images&&s.ap"
|
123
|
+
+"v>=3&&!s.isopera&&(s.ns6<0||s.apv>=6.1)){s.ios=1;if(!s.d.images[imn"
|
124
|
+
+"]&&(!s.isns||(s.apv<4||s.apv>=5))){s.d.write('<im'+'g name=\"'+imn+"
|
125
|
+
+"'\" height=1 width=1 border=0 alt=\"\">');if(!s.d.images[imn])s.ios"
|
126
|
+
+"=0}}};s.mr=function(sess,q,ta){var s=this,ns=s.visitorNamespace,unc"
|
127
|
+
+"=s.rep(s.fun,'_','-'),imn='s_i_'+s.fun,im,b,e,rs='http'+(s.ssl?'s':"
|
128
|
+
+"'')+'://'+(ns?ns:(s.ssl?'102':unc))+'.122.2O7.net/b/ss/'+s.un+'/1/H"
|
129
|
+
+".1-pdv-2/'+sess+'?[AQB]&ndh=1'+(q?q:'')+(s.q?s.q:'')+'&[AQE]';if(s."
|
130
|
+
+"isie&&!s.ismac){if(s.apv>5.5)rs=s.fl(rs,4095);else rs=s.fl(rs,2047)"
|
131
|
+
+"}if(s.ios){im=s.wd[imn]?s.wd[imn]:s.d.images[imn];if(!im)im=s.wd[im"
|
132
|
+
+"n]=new Image;im.src=rs;if(rs.indexOf('&pe=')>=0&&(!ta||ta=='_self'|"
|
133
|
+
+"|ta=='_top'||(s.wd.name&&ta==s.wd.name))){b=e=new Date;while(e.getT"
|
134
|
+
+"ime()-b.getTime()<500)e=new Date}return ''}return '<im'+'g sr'+'c="
|
135
|
+
+"\"'+rs+'\" width=1 height=1 border=0 alt=\"\">'};s.gg=function(v){v"
|
136
|
+
+"ar s=this;return s.wd['s_'+v]};s.glf=function(t,a){if(t.substring(0"
|
137
|
+
+",2)=='s_')t=t.substring(2);var s=this,v=s.gg(t);if(v)s[t]=v};s.gl=f"
|
138
|
+
+"unction(v){var s=this;s.pt(v,',','glf',0)};s.gv=function(v){var s=t"
|
139
|
+
+"his;return s['vpm_'+v]?s['vpv_'+v]:s[v]};s.havf=function(t,a){var s"
|
140
|
+
+"=this,b=t.substring(0,4),x=t.substring(4),n=parseInt(x),k='g_'+t,m="
|
141
|
+
+"'vpm_'+t,q=t,v=s.linkTrackVars,e=s.linkTrackEvents;s[k]=s.gv(t);if("
|
142
|
+
+"s.lnk||s.eo){v=v?v+','+s.vl_l:'';if(v&&!s.pt(v,',','isf',t))s[k]=''"
|
143
|
+
+";if(t=='events'&&e)s[k]=s.fs(s[k],e)}s[m]=0;if(t=='pageURL')q='g';e"
|
144
|
+
+"lse if(t=='referrer')q='r';else if(t=='charSet'){q='ce';if(s[k]&&s."
|
145
|
+
+"em==2)s[k]='UTF-8'}else if(t=='visitorNamespace')q='ns';else if(t=="
|
146
|
+
+"'cookieDomainPeriods')q='cdp';else if(t=='cookieLifetime')q='cl';el"
|
147
|
+
+"se if(t=='visitVariableProvider')q='vvp';else if(t=='currencyCode')"
|
148
|
+
+"q='cc';else if(t=='channel')q='ch';else if(t=='campaign')q='v0';els"
|
149
|
+
+"e if(s.num(x)) {if(b=='prop')q='c'+n;else if(b=='eVar')q='v'+n;else"
|
150
|
+
+" if(b=='hier'){q='h'+n;s[k]=s.fl(s[k],255)}}if(s[k]&&t!='linkName'&"
|
151
|
+
+"&t!='linkType')s.qav+='&'+q+'='+s.ape(s[k]);return ''};s.hav=functi"
|
152
|
+
+"on(){var s=this;s.qav='';s.pt(s.vl_t,',','havf',0);return s.qav};s."
|
153
|
+
+"lnf=function(t,h){t=t?t.toLowerCase():'';h=h?h.toLowerCase():'';var"
|
154
|
+
+" te=t.indexOf('=');if(t&&te>0&&h.indexOf(t.substring(te+1))>=0)retu"
|
155
|
+
+"rn t.substring(0,te);return ''};s.ln=function(h){var s=this,n=s.lin"
|
156
|
+
+"kNames;if(n)return s.pt(n,',','lnf',h);return ''};s.ltdf=function(t"
|
157
|
+
+",h){t=t?t.toLowerCase():'';h=h?h.toLowerCase():'';var qi=h.indexOf("
|
158
|
+
+"'?');h=qi>=0?h.substring(0,qi):h;if(t&&h.substring(h.length-(t.leng"
|
159
|
+
+"th+1))=='.'+t)return 1;return 0};s.ltef=function(t,h){t=t?t.toLower"
|
160
|
+
+"Case():'';h=h?h.toLowerCase():'';if(t&&h.indexOf(t)>=0)return 1;ret"
|
161
|
+
+"urn 0};s.lt=function(h){var s=this,lft=s.linkDownloadFileTypes,lef="
|
162
|
+
+"s.linkExternalFilters,lif=s.linkInternalFilters;lif=lif?lif:s.wd.lo"
|
163
|
+
+"cation.hostname;h=h.toLowerCase();if(s.trackDownloadLinks&&lft&&s.p"
|
164
|
+
+"t(lft,',','ltdf',h))return 'd';if(s.trackExternalLinks&&(lef||lif)&"
|
165
|
+
+"&(!lef||s.pt(lef,',','ltef',h))&&(!lif||!s.pt(lif,',','ltef',h)))re"
|
166
|
+
+"turn 'e';return ''};s.lc=new Function('e','var s=s_c_il['+s._in+'],"
|
167
|
+
+"b=s.eh(this,\"onclick\");s.lnk=s.co(this);s.t();s.lnk=0;if(b)return"
|
168
|
+
+" this[b](e);return true');s.bc=new Function('e','var s=s_c_il['+s._"
|
169
|
+
+"in+'];if(s.d&&s.d.all&&s.d.all.cppXYctnr)return;s.eo=e.srcElement?e"
|
170
|
+
+".srcElement:e.target;s.t();s.eo=0');s.ot=function(o){var a=o.type,b"
|
171
|
+
+"=o.tagName;return (a&&a.toUpperCase?a:b&&b.toUpperCase?b:o.href?'A'"
|
172
|
+
+":'').toUpperCase()};s.oid=function(o){var s=this,t=s.ot(o),p=o.prot"
|
173
|
+
+"ocol,c=o.onclick,n='',x=0;if(!o.s_oid){if(o.href&&(t=='A'||t=='AREA"
|
174
|
+
+"')&&(!c||!p||p.toLowerCase().indexOf('javascript')<0))n=o.href;else"
|
175
|
+
+" if(c){n=s.rep(s.rep(s.rep(s.rep(''+c,\"\\r\",''),\"\\n\",''),\"\\t"
|
176
|
+
+"\",''),' ','');x=2}else if(o.value&&(t=='INPUT'||t=='SUBMIT')){n=o."
|
177
|
+
+"value;x=3}else if(o.src&&t=='IMAGE')n=o.src;if(n){o.s_oid=s.fl(n,10"
|
178
|
+
+"0);o.s_oidt=x}}return o.s_oid};s.rqf=function(t,un){var s=this,e=t."
|
179
|
+
+"indexOf('='),u=e>=0?','+t.substring(0,e)+',':'';return u&&u.indexOf"
|
180
|
+
+"(','+un+',')>=0?s.epa(t.substring(e+1)):''};s.rq=function(un){var s"
|
181
|
+
+"=this,c=un.indexOf(','),v=s.c_r('s_sq'),q='';if(c<0)return s.pt(v,'"
|
182
|
+
+"&','rqf',un);return s.pt(un,',','rq',0)};s.sqp=function(t,a){var s="
|
183
|
+
+"this,e=t.indexOf('='),q=e<0?'':s.epa(t.substring(e+1));s.sqq[q]='';"
|
184
|
+
+"if(e>=0)s.pt(t.substring(0,e),',','sqs',q);return 0};s.sqs=function"
|
185
|
+
+"(un,q){var s=this;s.squ[un]=q;return 0};s.sq=function(q){var s=this"
|
186
|
+
+",k='s_sq',v=s.c_r(k),x,c=0;s.sqq=new Object;s.squ=new Object;s.sqq["
|
187
|
+
+"q]='';s.pt(v,'&','sqp',0);s.pt(s.un,',','sqs',q);v='';for(x in s.sq"
|
188
|
+
+"u)s.sqq[s.squ[x]]+=(s.sqq[s.squ[x]]?',':'')+x;for(x in s.sqq)if(x&&"
|
189
|
+
+"s.sqq[x]&&(x==q||c<2)){v+=(v?'&':'')+s.sqq[x]+'='+s.ape(x);c++}retu"
|
190
|
+
+"rn s.c_w(k,v,0)};s.wdl=new Function('e','var s=s_c_il['+s._in+'],r="
|
191
|
+
+"true,b=s.eh(s.wd,\"onload\"),i,o,oc;if(b)r=this[b](e);for(i=0;i<s.d"
|
192
|
+
+".links.length;i++){o=s.d.links[i];oc=o.onclick?\"\"+o.onclick:\"\";"
|
193
|
+
+"if((oc.indexOf(\"s_gs(\")<0||oc.indexOf(\".s_oc(\")>=0)&&oc.indexOf"
|
194
|
+
+"(\".tl(\")<0)s.eh(o,\"onclick\",0,s.lc);}return r');s.wds=function("
|
195
|
+
+"){var s=this;if(s.apv>3&&(!s.isie||!s.ismac||s.apv>=5)){if(s.b&&s.b"
|
196
|
+
+".attachEvent)s.b.attachEvent('onclick',s.bc);else if(s.b&&s.b.addEv"
|
197
|
+
+"entListener)s.b.addEventListener('click',s.bc,false);else s.eh(s.wd"
|
198
|
+
+",'onload',0,s.wdl)}};s.vs=function(x){var s=this,v=s.visitorSamplin"
|
199
|
+
+"g,g=s.visitorSamplingGroup,k='s_vsn_'+s.un+(g?'_'+g:''),n=s.c_r(k),"
|
200
|
+
+"e=new Date,y=e.getYear();e.setYear(y+10+(y<1900?1900:0));if(v){v*=1"
|
201
|
+
+"00;if(!n){if(!s.c_w(k,x,e))return 0;n=x}if(n%10000>v)return 0}retur"
|
202
|
+
+"n 1};s.dyasmf=function(t,m){if(t&&m&&m.indexOf(t)>=0)return 1;retur"
|
203
|
+
+"n 0};s.dyasf=function(t,m){var s=this,i=t?t.indexOf('='):-1,n,x;if("
|
204
|
+
+"i>=0&&m){var n=t.substring(0,i),x=t.substring(i+1);if(s.pt(x,',','d"
|
205
|
+
+"yasmf',m))return n}return 0};s.uns=function(){var s=this,x=s.dynami"
|
206
|
+
+"cAccountSelection,l=s.dynamicAccountList,m=s.dynamicAccountMatch,n,"
|
207
|
+
+"i;s.un.toLowerCase();if(x&&l){if(!m)m=s.wd.location.host;if(!m.toLo"
|
208
|
+
+"werCase)m=''+m;l=l.toLowerCase();m=m.toLowerCase();n=s.pt(l,';','dy"
|
209
|
+
+"asf',m);if(n)s.un=n}i=s.un.indexOf(',');s.fun=i<0?s.un:s.un.substri"
|
210
|
+
+"ng(0,i)};s.t=function(){var s=this,trk=1,tm=new Date,sed=Math&&Math"
|
211
|
+
+".random?Math.floor(Math.random()*10000000000000):tm.getTime(),sess="
|
212
|
+
+"'s'+Math.floor(tm.getTime()/10800000)%10+sed,yr=tm.getYear(),vt=tm."
|
213
|
+
+"getDate()+'/'+tm.getMonth()+'/'+(yr<1900?yr+1900:yr)+' '+tm.getHour"
|
214
|
+
+"s()+':'+tm.getMinutes()+':'+tm.getSeconds()+' '+tm.getDay()+' '+tm."
|
215
|
+
+"getTimezoneOffset(),tfs=s.gtfs(),ta='',q='',qs='';s.uns();if(!s.q){"
|
216
|
+
+"var tl=tfs.location,x='',c='',v='',p='',bw='',bh='',j='1.0',k=s.c_w"
|
217
|
+
+"('s_cc','true',0)?'Y':'N',hp='',ct='',pn=0,ps;if(s.apv>=4)x=screen."
|
218
|
+
+"width+'x'+screen.height;if(s.isns||s.isopera){if(s.apv>=3){j='1.1';"
|
219
|
+
+"v=s.n.javaEnabled()?'Y':'N';if(s.apv>=4){j='1.2';c=screen.pixelDept"
|
220
|
+
+"h;bw=s.wd.innerWidth;bh=s.wd.innerHeight;if(s.apv>=4.06)j='1.3'}}s."
|
221
|
+
+"pl=s.n.plugins}else if(s.isie){if(s.apv>=4){v=s.n.javaEnabled()?'Y'"
|
222
|
+
+":'N';j='1.2';c=screen.colorDepth;if(s.apv>=5){bw=s.d.documentElemen"
|
223
|
+
+"t.offsetWidth;bh=s.d.documentElement.offsetHeight;j='1.3';if(!s.ism"
|
224
|
+
+"ac&&s.b){s.b.addBehavior('#default#homePage');hp=s.b.isHomePage(tl)"
|
225
|
+
+"?\"Y\":\"N\";s.b.addBehavior('#default#clientCaps');ct=s.b.connecti"
|
226
|
+
+"onType}}}else r=''}if(s.pl)while(pn<s.pl.length&&pn<30){ps=s.fl(s.p"
|
227
|
+
+"l[pn].name,100)+';';if(p.indexOf(ps)<0)p+=ps;pn++}s.q=(x?'&s='+s.ap"
|
228
|
+
+"e(x):'')+(c?'&c='+s.ape(c):'')+(j?'&j='+j:'')+(v?'&v='+v:'')+(k?'&k"
|
229
|
+
+"='+k:'')+(bw?'&bw='+bw:'')+(bh?'&bh='+bh:'')+(ct?'&ct='+s.ape(ct):'"
|
230
|
+
+"')+(hp?'&hp='+hp:'')+(p?'&p='+s.ape(p):'')}if(s.usePlugins)s.doPlug"
|
231
|
+
+"ins(s);var l=s.wd.location,r=tfs.document.referrer;if(!s.pageURL)s."
|
232
|
+
+"pageURL=s.fl(l?l:'',255);if(!s.referrer)s.referrer=s.fl(r?r:'',255)"
|
233
|
+
+";if(s.lnk||s.eo){var o=s.eo?s.eo:s.lnk;if(!o)return '';var p=s.gv('"
|
234
|
+
+"pageName'),w=1,t=s.ot(o),n=s.oid(o),x=o.s_oidt,h,l,i,oc;if(s.eo&&o="
|
235
|
+
+"=s.eo){while(o&&!n&&t!='BODY'){o=o.parentElement?o.parentElement:o."
|
236
|
+
+"parentNode;if(!o)return '';t=s.ot(o);n=s.oid(o);x=o.s_oidt}oc=o.onc"
|
237
|
+
+"lick?''+o.onclick:'';if((oc.indexOf(\"s_gs(\")>=0&&oc.indexOf(\".s_"
|
238
|
+
+"oc(\")<0)||oc.indexOf(\".tl(\")>=0)return ''}ta=o.target;h=o.href?o"
|
239
|
+
+".href:'';i=h.indexOf('?');h=s.linkLeaveQueryString||i<0?h:h.substri"
|
240
|
+
+"ng(0,i);l=s.linkName?s.linkName:s.ln(h);t=s.linkType?s.linkType.toL"
|
241
|
+
+"owerCase():s.lt(h);if(t&&(h||l))q+='&pe=lnk_'+(t=='d'||t=='e'?s.ape"
|
242
|
+
+"(t):'o')+(h?'&pev1='+s.ape(h):'')+(l?'&pev2='+s.ape(l):'');else trk"
|
243
|
+
+"=0;if(s.trackInlineStats){if(!p){p=s.gv('pageURL');w=0}t=s.ot(o);i="
|
244
|
+
+"o.sourceIndex;if(s.gg('objectID')){n=s.gg('objectID');x=1;i=1}if(p&"
|
245
|
+
+"&n&&t)qs='&pid='+s.ape(s.fl(p,255))+(w?'&pidt='+w:'')+'&oid='+s.ape"
|
246
|
+
+"(s.fl(n,100))+(x?'&oidt='+x:'')+'&ot='+s.ape(t)+(i?'&oi='+i:'')}}if"
|
247
|
+
+"(!trk&&!qs)return '';var code='';if(trk&&s.vs(sed))code=s.mr(sess,("
|
248
|
+
+"vt?'&t='+s.ape(vt):'')+s.hav()+q+(qs?qs:s.rq(s.un)),ta);s.sq(trk?''"
|
249
|
+
+":qs);s.lnk=s.eo=s.linkName=s.linkType=s.wd.s_objectID='';return cod"
|
250
|
+
+"e};s.tl=function(o,t,n){var s=this;s.lnk=s.co(o);s.linkType=t;s.lin"
|
251
|
+
+"kName=n;s.t()};s.ssl=(s.wd.location.protocol.toLowerCase().indexOf("
|
252
|
+
+"'https')>=0);s.d=document;s.b=s.d.body;s.n=navigator;s.u=s.n.userAg"
|
253
|
+
+"ent;s.ns6=s.u.indexOf('Netscape6/');var apn=s.n.appName,v=s.n.appVe"
|
254
|
+
+"rsion,ie=v.indexOf('MSIE '),i;if(v.indexOf('Opera')>=0||s.u.indexOf"
|
255
|
+
+"('Opera')>=0)apn='Opera';s.isie=(apn=='Microsoft Internet Explorer'"
|
256
|
+
+");s.isns=(apn=='Netscape');s.isopera=(apn=='Opera');s.ismac=(s.u.in"
|
257
|
+
+"dexOf('Mac')>=0);if(ie>0){s.apv=parseInt(i=v.substring(ie+5));if(s."
|
258
|
+
+"apv>3)s.apv=parseFloat(i)}else if(s.ns6>0)s.apv=parseFloat(s.u.subs"
|
259
|
+
+"tring(s.ns6+10));else s.apv=parseFloat(v);s.em=0;if(String.fromChar"
|
260
|
+
+"Code){i=escape(String.fromCharCode(256)).toUpperCase();s.em=(i=='%C"
|
261
|
+
+"4%80'?2:(i=='%U0100'?1:0))}s.un=un;s.uns();s.vl_l='charSet,visitorN"
|
262
|
+
+"amespace,cookieDomainPeriods,cookieLifetime,visitVariableProvider,p"
|
263
|
+
+"ageName,pageURL,referrer,currencyCode,purchaseID';s.vl_t=s.vl_l+',c"
|
264
|
+
+"hannel,server,pageType,campaign,state,zip,events,products,linkName,"
|
265
|
+
+"linkType';for(var n=1;n<51;n++)s.vl_t+=',prop'+n+',eVar'+n+',hier'+"
|
266
|
+
+"n;s.vl_g=s.vl_t+',trackDownloadLinks,trackExternalLinks,trackInline"
|
267
|
+
+"Stats,linkLeaveQueryString,linkDownloadFileTypes,linkExternalFilter"
|
268
|
+
+"s,linkInternalFilters,linkNames';if(pg)s.gl(s.vl_g);if(!ss){s.wds()"
|
269
|
+
+";s.ca()}}",
|
270
|
+
l=window.s_c_il,n=navigator,u=n.userAgent,v=n.appVersion,e=v.indexOf(
|
271
|
+
'MSIE '),m=u.indexOf('Netscape6/'),a,i,s;if(l)for(i=0;i<l.length;i++){
|
272
|
+
s=l[i];s.uns();if(s.un==un)return s;else if(s.pt(s.un,',','isf',un)){
|
273
|
+
s=s.co(s);s.un=un;s.uns();return s}}if(e>0){a=parseInt(i=v.substring(e
|
274
|
+
+5));if(a>3)a=parseFloat(i)}else if(m>0)a=parseFloat(u.substring(m+10)
|
275
|
+
);else a=parseFloat(v);if(a>=5&&v.indexOf('Opera')<0&&u.indexOf(
|
276
|
+
'Opera')<0){eval(c);return new s_c(un,pg,ss)}else s=s_c2f(c);return s(
|
277
|
+
un,pg,ss)}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module OmnitureHelper
|
2
|
+
def omniture_url
|
3
|
+
url = omniture_index_url
|
4
|
+
param_pair = omniture_trackable_properties.collect{|p| omniture_query_param(p)}
|
5
|
+
"#{url}?#{param_pair.join('&')}"
|
6
|
+
end
|
7
|
+
|
8
|
+
def omniture_trackable_properties
|
9
|
+
[:page_name, :user_id, :application_name]
|
10
|
+
end
|
11
|
+
|
12
|
+
def omniture_query_param(prop)
|
13
|
+
"#{prop}=#{self.send(prop)}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def application_name
|
17
|
+
Omniture.application_name
|
18
|
+
end
|
19
|
+
|
20
|
+
def user_id
|
21
|
+
begin
|
22
|
+
current_user.id
|
23
|
+
rescue
|
24
|
+
"unknown"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def page_name
|
29
|
+
name = []
|
30
|
+
name << application_name
|
31
|
+
name << controller_name.gsub('/','_').camelize
|
32
|
+
name << action_name.gsub('/','_').camelize
|
33
|
+
name.join('_')
|
34
|
+
end
|
35
|
+
|
36
|
+
def omniture_formatted_time
|
37
|
+
Time.now.strftime('%m/%d/%Y %I:%M:%S %p')
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Omniture
|
2
|
+
def initialize(params)
|
3
|
+
@params = params
|
4
|
+
end
|
5
|
+
|
6
|
+
# read attributes from the params or return blank if not available.
|
7
|
+
def method_missing(method)
|
8
|
+
if @params.include?(method.to_s)
|
9
|
+
@params[method.to_s]
|
10
|
+
else
|
11
|
+
''
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class << self
|
16
|
+
attr_accessor :sprop_mappings, :application_name, :tracking_account
|
17
|
+
|
18
|
+
def sprop_for property
|
19
|
+
sprop = sprop_mappings[property]
|
20
|
+
|
21
|
+
Exception.log_and_raise("No sprop has been configured for enabling tracking of #{property}") do
|
22
|
+
raise(NotConfiguredException)
|
23
|
+
end if sprop.nil?
|
24
|
+
|
25
|
+
return sprop.to_s
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|