-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgtm.js
94 lines (81 loc) · 3.72 KB
/
gtm.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*
Copyright (C) 2015 Careerbuilder, LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
module.exports = function GoogleTagManagerModule(pb){
/**
* GoogleTagManager - A sample for exemplifying what the main module file should
* look like.
*
* @author Ben Tidwell <ben.tidwell@careerbuilder.com>
*/
function GoogleTagManager(){}
/**
* Called when the application is being installed for the first time.
*
* @param cb A callback that must be called upon completion. cb(err, result).
* The result is ignored
*/
GoogleTagManager.onInstall = function(cb) {
cb(null, true);
};
/**
* Called when the application is uninstalling this plugin. The plugin should
* make every effort to clean up any plugin-specific DB items or any in function
* overrides it makes.
*
* @param cb A callback that must be called upon completion. cb(err, result).
* The result is ignored
*/
GoogleTagManager.onUninstall = function(cb) {
cb(null, true);
};
/**
* Called when the application is starting up. The function is also called at
* the end of a successful install. It is guaranteed that all core PB services
* will be available including access to the core DB.
*
* @param cb A callback that must be called upon completion. cb(err, result).
* The result is ignored
*/
GoogleTagManager.onStartupWithContext = function(context, cb) {
pb.AnalyticsManager.registerProvider('google_tag_manager', context.site, function(req, session, ls, cb){
var siteId = pb.RequestHandler.sites[req.headers.host] ? pb.RequestHandler.sites[req.headers.host].uid : null;
var pluginService = new pb.PluginService({site: pb.SiteService.getCurrentSite(siteId)});
pluginService.getSettingsKV('gtm', function(err, settings) {
if (pb.util.isError(err)) {
return cb(err, '');
}
else if (!settings || !settings.google_tag_manager_id || settings.google_tag_manager_id.length === 0) {
pb.log.warn('GoogleTagManager: Settings have not been initialized!');
return cb(null, '');
}
var gtmId = settings.google_tag_manager_id;
var script = '<!-- Google Tag Manager --><noscript><iframe src="//www.googletagmanager.com/ns.html?id='+gtmId +'"height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({"gtm.start":new Date().getTime(),event:"gtm.js"});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!="dataLayer"?"&l="+l:"";j.async=true;j.src="//www.googletagmanager.com/gtm.js?id="+i+dl;f.parentNode.insertBefore(j,f);})(window,document,"script","dataLayer","'+ gtmId +'");</script><!-- End Google Tag Manager -->';
cb(null, script);
});
});
cb(null, true);
};
/**
* Called when the application is gracefully shutting down. No guarantees are
* provided for how much time will be provided the plugin to shut down.
*
* @param cb A callback that must be called upon completion. cb(err, result).
* The result is ignored
*/
GoogleTagManager.onShutdown = function(cb) {
cb(null, true);
};
//exports
return GoogleTagManager;
};