Skip to content

Commit d32c225

Browse files
committed
Merge pull request #33 from dominikmatt/develop
v0.4.4
2 parents 46a4f88 + 0d79b19 commit d32c225

File tree

5 files changed

+114
-9
lines changed

5 files changed

+114
-9
lines changed

example/bundles/callback.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"data": {}
3+
}

example/bundles/form-ajax.html

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head lang="en">
4+
<meta charset="UTF-8">
5+
<title></title>
6+
</head>
7+
<body>
8+
<form data-form-name="Formular name" id="form">
9+
<div class="input-wrap">
10+
<label for="firstname">Firstname</label>
11+
<input type="text" name="firstname" id="firstname" />
12+
</div>
13+
<div class="input-wrap">
14+
<label for="Lastname">Lastname*</label>
15+
<input type="text" name="lastname" id="lastname" />
16+
</div>
17+
<label><input type="checkbox" name="newsletter1" data-form-newsletter data-form-newsletter-name="Newsletter 1" /> Signup Newsletter1</label>
18+
<label><input type="checkbox" name="newsletter2" data-form-newsletter data-form-newsletter-name="Newsletter 2" /> Signup Newsletter2</label>
19+
<br />
20+
<input type="submit" value="Submit" />
21+
</form>
22+
23+
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
24+
<script src="/js/bind.js"></script>
25+
<script src="/scripts/adapter/ua.js"></script>
26+
<script src="/scripts/tracking.js"></script>
27+
<script src="/scripts/eventBundle/formBundle.js"></script>
28+
29+
<script type="text/javascript">
30+
var tracking = new trackingJS({
31+
namespace: 'formBundle',
32+
type: 'ua',
33+
analyticsCode: 'UA-57009541-1',
34+
url: 'auto',
35+
pageview: false,
36+
anonymizeIp: true,
37+
debug: true,
38+
eventBundles: ['form']
39+
});
40+
41+
var $form = $('#form');
42+
43+
$('form').on('submit', function(event) {
44+
45+
if($form.find('#lastname').val() == '') {
46+
tracking.bundles.form.sendFailed($form);
47+
} else {
48+
$.getJSON('/example/bundles/callback.json')
49+
.success(function() {
50+
tracking.bundles.form.send($form, function() {
51+
alert('sended');
52+
});
53+
})
54+
.error(function() {
55+
tracking.bundles.form.sendFailed($form);
56+
})
57+
}
58+
59+
event.preventDefault();
60+
return false;
61+
});
62+
63+
</script>
64+
</body>
65+
</html>

example/bundles/form.html

+5-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<title></title>
66
</head>
77
<body>
8-
<form data-form-name="Formular name" id="form">
8+
<form data-form-auto-track data-form-name="Formular name" id="form">
99
<div class="input-wrap">
1010
<label for="firstname">Firstname</label>
1111
<input type="text" name="firstname" id="firstname" />
@@ -35,7 +35,10 @@
3535
pageview: false,
3636
anonymizeIp: true,
3737
debug: true,
38-
eventBundles: ['form']
38+
eventBundles: ['form'],
39+
formBundle: {
40+
formEnableDataName: 'form-auto-track' //Default
41+
}
3942
});
4043

4144
var $form = $('#form');

scripts/eventBundle/formBundle.js

+34-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,19 @@
66
trackingJS.prototype.eventBundles.form = function() {
77
this.bundleName = 'form';
88

9+
var tracking,
10+
settings = {};
11+
12+
913
/**
1014
* @method init
1115
*
1216
* @param tracking
1317
*/
14-
this.init = function init(t) {
15-
tracking = t;
18+
this.init = function init(origTracking, origSettings) {
19+
tracking = origTracking;
20+
settings = origSettings;
21+
setDefaultSettings();
1622
bindEvents();
1723
};
1824

@@ -23,6 +29,14 @@ trackingJS.prototype.eventBundles.form = function() {
2329
$( document ).delegate( 'form', 'submit', formSendHandler);
2430
};
2531

32+
var setDefaultSettings = function() {
33+
if(!settings.formBundle) {
34+
settings.formBundle = {
35+
formEnableDataName: 'form-auto-track'
36+
}
37+
}
38+
};
39+
2640
/**
2741
* @method formSendHandler
2842
*
@@ -33,8 +47,10 @@ trackingJS.prototype.eventBundles.form = function() {
3347
var $form = $(event.currentTarget),
3448
data = getFormData($form);
3549

36-
trackNewsletterHandler($form);
37-
tracking.event(data.name, data.name + ' - Send success', 'Form: ' + data.name + ' send success');
50+
if(typeof data.enabled != 'undefined') {
51+
trackNewsletterHandler($form);
52+
tracking.event(data.name, data.name + ' - Send success', 'Form: ' + data.name + ' send success');
53+
}
3854
};
3955

4056
/**
@@ -58,6 +74,19 @@ trackingJS.prototype.eventBundles.form = function() {
5874
}
5975
}.bind(this);
6076

77+
/**
78+
* @method send
79+
*
80+
* @param $form
81+
*/
82+
this.send = function($form, callback) {
83+
var data = getFormData($form),
84+
done = callback || function() {};
85+
86+
trackNewsletterHandler($form);
87+
tracking.event(data.name, data.name + ' - Send success', 'Form: ' + data.name + ' send success', null, done);
88+
};
89+
6190
/**
6291
* @method sendFailed
6392
*
@@ -116,6 +145,7 @@ trackingJS.prototype.eventBundles.form = function() {
116145
*/
117146
var getFormData = function($form) {
118147
var data = {
148+
enabled: $form.data(settings.formBundle.formEnableDataName),
119149
name: $form.data('form-name')
120150
};
121151

scripts/tracking.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ var trackingJS = function (options) {
3131
checkDebug();
3232

3333
loadAdapter();
34-
loadEventBundels();
34+
loadEventBundles();
3535
if (this.tracking && typeof this.tracking == 'object') {
3636
this.tracking.appendAnalyticsJs();
3737
this.tracking.init(settings.namespace, settings.analyticsCode, settings.url, settings.pageview);
@@ -153,13 +153,17 @@ var trackingJS = function (options) {
153153
}.bind(this));
154154
}.bind(this);
155155

156-
var loadEventBundels = function() {
156+
/**
157+
* @method loadEventBundles
158+
* @type {*|function(this:trackingJS)}
159+
*/
160+
var loadEventBundles = function() {
157161
if(settings.eventBundles && typeof settings.eventBundles == 'object' && settings.eventBundles.length > 0) {
158162
for(var key in settings.eventBundles) {
159163
var bundleName = settings.eventBundles[key];
160164
if(this.eventBundles[bundleName]) {
161165
var bundle = new this.eventBundles[bundleName]();
162-
bundle.init(this.tracking);
166+
bundle.init(this.tracking, settings);
163167
this.bundles[bundleName] = bundle;
164168
}
165169
}

0 commit comments

Comments
 (0)