From e4300da218f100bd558296958d9355585af5d544 Mon Sep 17 00:00:00 2001 From: Nick Poulden Date: Wed, 1 Jun 2011 14:21:15 -0700 Subject: [PATCH] Analytics tracking on classes and guides --- Rakefile | 12 ++++++++++++ template/app.js | 2 +- template/app/Application.js | 4 ++++ template/app/controller/Classes.js | 12 ++++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 3488dda6..7eb0bc2e 100644 --- a/Rakefile +++ b/Rakefile @@ -85,6 +85,18 @@ task :export do var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); + + Docs.afterLaunch = function() { + Docs.App.getController('Classes').addListener('showClass', function(cls, member) { + _gaq.push(['_trackEvent', 'Classes', 'Show', cls]); + if (member) { + _gaq.push(['_trackEvent', 'Classes', 'Member', cls + ' - ' + member]); + } + }); + Docs.App.getController('Classes').addListener('showGuide', function(guide) { + _gaq.push(['_trackEvent', 'Guides', 'Show', cls]); + }); + } EOHTML diff --git a/template/app.js b/template/app.js index 575aa54a..5bf8169e 100644 --- a/template/app.js +++ b/template/app.js @@ -10,6 +10,6 @@ Ext.Loader.setConfig({ Ext.require('Docs.Application'); -Ext.onReady(function() { +Ext.onReady(function() { Ext.create('Docs.Application'); }); diff --git a/template/app/Application.js b/template/app/Application.js index e979ce3c..f39ba3ba 100644 --- a/template/app/Application.js +++ b/template/app/Application.js @@ -26,5 +26,9 @@ Ext.define('Docs.Application', { Docs.Favorites.init(); Docs.History.init(); Docs.Settings.init(); + + if (Docs.afterLaunch) { + Docs.afterLaunch(); + } } }); diff --git a/template/app/controller/Classes.js b/template/app/controller/Classes.js index d9e2d277..1eeb8e56 100644 --- a/template/app/controller/Classes.js +++ b/template/app/controller/Classes.js @@ -3,6 +3,7 @@ */ Ext.define('Docs.controller.Classes', { extend: 'Ext.app.Controller', + requires: [ 'Docs.History', 'Docs.Syntax' @@ -36,6 +37,12 @@ Ext.define('Docs.controller.Classes', { ], init: function() { + + this.addEvents({ + "showClass" : true, + "showGuide" : true + }); + Ext.getBody().addListener('click', function(cmp, el) { this.loadClass(el.rel); }, this, { @@ -134,6 +141,9 @@ Ext.define('Docs.controller.Classes', { }, showClass: function(cls, anchor) { + + this.fireEvent('showClass', cls.name, anchor); + if (this.currentCls != cls) { var container = Ext.getCmp('container'), showClass = container.down('showclass'), @@ -162,6 +172,8 @@ Ext.define('Docs.controller.Classes', { showGuide: function(name, noHistory) { noHistory || Docs.History.push("/guide/" + name); + + this.fireEvent('showGuide', name); Ext.data.JsonP.request({ url: this.getBaseUrl() + "/guides/" + name + "/README.js", -- GitLab