callpixelsjs-rails 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/callpixelsjs/rails/version.rb +1 -1
- data/src/callpixels/base/base64.js +126 -0
- data/src/callpixels/base/cookies.js +59 -0
- data/src/callpixels/base/data.js +81 -0
- data/src/callpixels/base/helpers.js +55 -0
- data/src/callpixels/base/model.js +113 -0
- data/src/callpixels/base/request.js +215 -0
- data/src/callpixels/base/request_number.js +193 -0
- data/src/callpixels/cache.js +1 -0
- data/src/callpixels/campaign.js +98 -0
- data/src/callpixels/number.js +206 -0
- data/vendor/documentation/javascript/v1/Callpixels.Campaign.html +145 -151
- data/vendor/documentation/javascript/v1/Callpixels.Number.html +482 -498
- data/vendor/documentation/javascript/v1/campaign.js.html +7 -7
- data/vendor/documentation/javascript/v1/global.html +73 -77
- data/vendor/documentation/javascript/v1/index.html +4 -4
- data/vendor/documentation/javascript/v1/number.js.html +5 -5
- data/vendor/documentation/javascript/v1/scripts/linenumber.js +11 -19
- data/vendor/documentation/javascript/v1/styles/jsdoc-default.css +87 -130
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6a41733ab787f91ab95a3855af0b2e5544acaf6
|
4
|
+
data.tar.gz: 21a4460eeab8a0f36c9a18665e1c4efdb468601b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53756d5317a7b60b72d0b235e81d2dbc6da46a0c668b7fbf6ffb48322b65600cf8726dbe61b2e32998518aef4e97b53864bf385e1668194bf1724853e5bb2da3
|
7
|
+
data.tar.gz: 32683275156731330c843f267b49342af2edb88c653feaf9f9dc47b2a7935b7868031310aeb770ed1f1e87208af1fb70afe1b632ee293d168a373bef1e10eff6
|
@@ -0,0 +1,126 @@
|
|
1
|
+
// http://www.webtoolkit.info/javascript-base64.html#.U-qwzYBdUwQ
|
2
|
+
(function () {
|
3
|
+
var Base64 = {
|
4
|
+
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
5
|
+
};
|
6
|
+
// public method for encoding
|
7
|
+
Base64.encode = function (input) {
|
8
|
+
var output = "";
|
9
|
+
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
|
10
|
+
var i = 0;
|
11
|
+
|
12
|
+
input = Base64._utf8_encode(input);
|
13
|
+
|
14
|
+
while (i < input.length) {
|
15
|
+
|
16
|
+
chr1 = input.charCodeAt(i++);
|
17
|
+
chr2 = input.charCodeAt(i++);
|
18
|
+
chr3 = input.charCodeAt(i++);
|
19
|
+
|
20
|
+
enc1 = chr1 >> 2;
|
21
|
+
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
|
22
|
+
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
|
23
|
+
enc4 = chr3 & 63;
|
24
|
+
|
25
|
+
if (isNaN(chr2)) {
|
26
|
+
enc3 = enc4 = 64;
|
27
|
+
} else if (isNaN(chr3)) {
|
28
|
+
enc4 = 64;
|
29
|
+
}
|
30
|
+
output = output +
|
31
|
+
Base64._keyStr.charAt(enc1) + Base64._keyStr.charAt(enc2) +
|
32
|
+
Base64._keyStr.charAt(enc3) + Base64._keyStr.charAt(enc4);
|
33
|
+
|
34
|
+
}
|
35
|
+
return output;
|
36
|
+
};
|
37
|
+
Base64.decode = function (input) {
|
38
|
+
var output = "";
|
39
|
+
var chr1, chr2, chr3;
|
40
|
+
var enc1, enc2, enc3, enc4;
|
41
|
+
var i = 0;
|
42
|
+
|
43
|
+
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
44
|
+
|
45
|
+
while (i < input.length) {
|
46
|
+
|
47
|
+
enc1 = Base64._keyStr.indexOf(input.charAt(i++));
|
48
|
+
enc2 = Base64._keyStr.indexOf(input.charAt(i++));
|
49
|
+
enc3 = Base64._keyStr.indexOf(input.charAt(i++));
|
50
|
+
enc4 = Base64._keyStr.indexOf(input.charAt(i++));
|
51
|
+
|
52
|
+
chr1 = (enc1 << 2) | (enc2 >> 4);
|
53
|
+
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
54
|
+
chr3 = ((enc3 & 3) << 6) | enc4;
|
55
|
+
|
56
|
+
output = output + String.fromCharCode(chr1);
|
57
|
+
|
58
|
+
if (enc3 != 64) {
|
59
|
+
output = output + String.fromCharCode(chr2);
|
60
|
+
}
|
61
|
+
if (enc4 != 64) {
|
62
|
+
output = output + String.fromCharCode(chr3);
|
63
|
+
}
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
output = Base64._utf8_decode(output);
|
68
|
+
|
69
|
+
return output;
|
70
|
+
};
|
71
|
+
Base64._utf8_encode = function (string) {
|
72
|
+
//REGEX_2: /\r\n/g NEWLINE: "\n"
|
73
|
+
string = string.replace(eval("/\\r\\n/g"),eval("String('\\n')"));
|
74
|
+
var utftext = "";
|
75
|
+
|
76
|
+
for (var n = 0; n < string.length; n++) {
|
77
|
+
|
78
|
+
var c = string.charCodeAt(n);
|
79
|
+
|
80
|
+
if (c < 128) {
|
81
|
+
utftext += String.fromCharCode(c);
|
82
|
+
}
|
83
|
+
else if ((c > 127) && (c < 2048)) {
|
84
|
+
utftext += String.fromCharCode((c >> 6) | 192);
|
85
|
+
utftext += String.fromCharCode((c & 63) | 128);
|
86
|
+
}
|
87
|
+
else {
|
88
|
+
utftext += String.fromCharCode((c >> 12) | 224);
|
89
|
+
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
|
90
|
+
utftext += String.fromCharCode((c & 63) | 128);
|
91
|
+
}
|
92
|
+
|
93
|
+
}
|
94
|
+
|
95
|
+
return utftext;
|
96
|
+
};
|
97
|
+
Base64._utf8_decode = function (utftext) {
|
98
|
+
var string = "";
|
99
|
+
var i = 0;
|
100
|
+
var c = c1 = c2 = 0;
|
101
|
+
|
102
|
+
while (i < utftext.length) {
|
103
|
+
|
104
|
+
c = utftext.charCodeAt(i);
|
105
|
+
|
106
|
+
if (c < 128) {
|
107
|
+
string += String.fromCharCode(c);
|
108
|
+
i++;
|
109
|
+
}
|
110
|
+
else if ((c > 191) && (c < 224)) {
|
111
|
+
c2 = utftext.charCodeAt(i + 1);
|
112
|
+
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
|
113
|
+
i += 2;
|
114
|
+
}
|
115
|
+
else {
|
116
|
+
c2 = utftext.charCodeAt(i + 1);
|
117
|
+
c3 = utftext.charCodeAt(i + 2);
|
118
|
+
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
|
119
|
+
i += 3;
|
120
|
+
}
|
121
|
+
|
122
|
+
}
|
123
|
+
return string;
|
124
|
+
};
|
125
|
+
Callpixels.Base.Base64 = Base64;
|
126
|
+
})();
|
@@ -0,0 +1,59 @@
|
|
1
|
+
// https://github.com/evertton/cookiejs
|
2
|
+
(function (f) {
|
3
|
+
var a = function (b, c, d) {
|
4
|
+
return 1 === arguments.length ? a.get(b) : a.set(b, c, d)
|
5
|
+
};
|
6
|
+
a._document = document;
|
7
|
+
a._navigator = navigator;
|
8
|
+
a.defaults = {path: "/"};
|
9
|
+
a.get = function (b) {
|
10
|
+
a._cachedDocumentCookie !== a._document.cookie && a._renewCache();
|
11
|
+
return a._cache[b]
|
12
|
+
};
|
13
|
+
a.set = function (b, c, d) {
|
14
|
+
d = a._getExtendedOptions(d);
|
15
|
+
a._document.cookie = a._generateCookieString(b, c, d);
|
16
|
+
return a
|
17
|
+
};
|
18
|
+
a._getExtendedOptions = function (b) {
|
19
|
+
return{path: b && b.path || a.defaults.path, domain: b && b.domain || a.defaults.domain, secure: b && b.secure !== f ? b.secure :
|
20
|
+
a.defaults.secure}
|
21
|
+
};
|
22
|
+
a._isValidDate = function (a) {
|
23
|
+
return"[object Date]" === Object.prototype.toString.call(a) && !isNaN(a.getTime())
|
24
|
+
};
|
25
|
+
a._generateCookieString = function (a, c, d) {
|
26
|
+
a = encodeURIComponent(a);
|
27
|
+
c = (c + "").replace(/[^!#$&-+\--:<-\[\]-~]/g, encodeURIComponent);
|
28
|
+
d = d || {};
|
29
|
+
a = a + "=" + c + (d.path ? ";path=" + d.path : "");
|
30
|
+
a += d.domain ? ";domain=" + d.domain : "";
|
31
|
+
return a += d.secure ? ";secure" : ""
|
32
|
+
};
|
33
|
+
a._getCookieObjectFromString = function (b) {
|
34
|
+
var c = {};
|
35
|
+
b = b ? b.split("; ") : [];
|
36
|
+
for (var d = 0; d < b.length; d++) {
|
37
|
+
var e = a._getKeyValuePairFromCookieString(b[d]);
|
38
|
+
c[e.key] === f && (c[e.key] = e.value)
|
39
|
+
}
|
40
|
+
return c
|
41
|
+
};
|
42
|
+
a._getKeyValuePairFromCookieString = function (a) {
|
43
|
+
var c = a.indexOf("="), c = 0 > c ? a.length : c;
|
44
|
+
return{key: decodeURIComponent(a.substr(0, c)), value: decodeURIComponent(a.substr(c + 1))}
|
45
|
+
};
|
46
|
+
a._renewCache = function () {
|
47
|
+
a._cache = a._getCookieObjectFromString(a._document.cookie);
|
48
|
+
a._cachedDocumentCookie = a._document.cookie
|
49
|
+
};
|
50
|
+
a._areEnabled = function () {
|
51
|
+
return a._navigator.cookieEnabled || "1" === a.set("cookies.js", 1).get("cookies.js")
|
52
|
+
};
|
53
|
+
a.enabled = a._areEnabled();
|
54
|
+
"function" === typeof define &&
|
55
|
+
define.amd ? define(function () {
|
56
|
+
return a
|
57
|
+
}) : "undefined" !== typeof exports ? ("undefined" !== typeof module && module.exports && (exports = module.exports = a), exports.Cookies = a) : a;
|
58
|
+
Callpixels.Base.Cookies = a;
|
59
|
+
})();
|
@@ -0,0 +1,81 @@
|
|
1
|
+
(function () {
|
2
|
+
// Dependencies
|
3
|
+
var Base = Callpixels.Base;
|
4
|
+
/**
|
5
|
+
* @constructor
|
6
|
+
* @memberof Callpixels.Base
|
7
|
+
* @param {Object} config - Configuration hash
|
8
|
+
* @param {String} config.type - The data type
|
9
|
+
* @param {Numeric} config.primary_key - The primary_key
|
10
|
+
*/
|
11
|
+
var Data = function (config) {
|
12
|
+
|
13
|
+
function initialize() {
|
14
|
+
Base.assert_required_keys(config, 'type', 'primary_key');
|
15
|
+
if (typeof Callpixels.Base.Data._store[config.type] === 'undefined') {
|
16
|
+
Callpixels.Base.Data._store[config.type] = {};
|
17
|
+
}
|
18
|
+
if (typeof Callpixels.Base.Data._store[config.type][config.primary_key] === 'undefined') {
|
19
|
+
Callpixels.Base.Data._store[config.type][config.primary_key] = {};
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
var self = this;
|
24
|
+
|
25
|
+
/**
|
26
|
+
* Request data from the host
|
27
|
+
* @memberOf Callpixels.Base.Data
|
28
|
+
* @function get
|
29
|
+
* @instance
|
30
|
+
* @param {String} key - The key to retrieve
|
31
|
+
* @returns {*}
|
32
|
+
*/
|
33
|
+
self.get = function () {
|
34
|
+
var output = {};
|
35
|
+
if (typeof arguments[0] === 'undefined') {
|
36
|
+
output = Callpixels.Base.Data._store[config.type][config.primary_key];
|
37
|
+
} else if (arguments.length === 1) {
|
38
|
+
output = Callpixels.Base.Data._store[config.type][config.primary_key][arguments[0]];
|
39
|
+
} else {
|
40
|
+
for (var i = 0; i < arguments.length; i++) {
|
41
|
+
var key = arguments[i];
|
42
|
+
output[key] = Callpixels.Base.Data._store[config.type][config.primary_key][key];
|
43
|
+
}
|
44
|
+
}
|
45
|
+
return output;
|
46
|
+
};
|
47
|
+
|
48
|
+
/**
|
49
|
+
* Request data from the host
|
50
|
+
* @memberOf Callpixels.Base.Data
|
51
|
+
* @function set
|
52
|
+
* @instance
|
53
|
+
* @param {String} key - The key to retrieve
|
54
|
+
* @param {String} value - The value to assign
|
55
|
+
* @returns {*}
|
56
|
+
*/
|
57
|
+
self.set = function (key, value) {
|
58
|
+
Callpixels.Base.Data._store[config.type][config.primary_key][key] = value;
|
59
|
+
return value;
|
60
|
+
};
|
61
|
+
|
62
|
+
/**
|
63
|
+
* Merge data
|
64
|
+
* @memberOf Callpixels.Base.Data
|
65
|
+
* @function set
|
66
|
+
* @instance
|
67
|
+
* @param {String} object - The object to merge
|
68
|
+
* @returns {*}
|
69
|
+
*/
|
70
|
+
self.merge = function (object) {
|
71
|
+
for (var key in object) {
|
72
|
+
Callpixels.Base.Data._store[config.type][config.primary_key][key] = object[key];
|
73
|
+
}
|
74
|
+
return object;
|
75
|
+
};
|
76
|
+
|
77
|
+
initialize();
|
78
|
+
};
|
79
|
+
Data._store = {};
|
80
|
+
Callpixels.Base.Data = Data;
|
81
|
+
})();
|
@@ -0,0 +1,55 @@
|
|
1
|
+
(function () {
|
2
|
+
// ensure namespace is present
|
3
|
+
if (typeof window.Callpixels === 'undefined') window.Callpixels = {};
|
4
|
+
var Base = {};
|
5
|
+
// define helpers
|
6
|
+
Base.assert_required_keys = function () {
|
7
|
+
var args = Array.prototype.slice.call(arguments);
|
8
|
+
var object = args.shift();
|
9
|
+
for (var i = 0; i < args.length; i++) {
|
10
|
+
var key = args[i];
|
11
|
+
if (typeof object === 'undefined' || typeof object[key] === 'undefined') {
|
12
|
+
throw "ArgumentError: Required keys are not defined: " + args.join(', ');
|
13
|
+
}
|
14
|
+
}
|
15
|
+
return object;
|
16
|
+
};
|
17
|
+
Base.merge = function (obj1, obj2) {
|
18
|
+
for (var p in obj2) {
|
19
|
+
try {
|
20
|
+
if (obj2[p].constructor == Object) {
|
21
|
+
obj1[p] = Base.merge(obj1[p], obj2[p]);
|
22
|
+
} else {
|
23
|
+
obj1[p] = obj2[p];
|
24
|
+
}
|
25
|
+
} catch (e) {
|
26
|
+
obj1[p] = obj2[p];
|
27
|
+
}
|
28
|
+
}
|
29
|
+
return obj1;
|
30
|
+
};
|
31
|
+
Base.isArray = function (arg) {
|
32
|
+
return Object.prototype.toString.call(arg) === '[object Array]';
|
33
|
+
};
|
34
|
+
Base.ieVersion = function () {
|
35
|
+
if (Base._ieVersion == null) {
|
36
|
+
Base._ieVersion = (function () {
|
37
|
+
var v = 3,
|
38
|
+
div = document.createElement('div'),
|
39
|
+
all = div.getElementsByTagName('i');
|
40
|
+
|
41
|
+
while (
|
42
|
+
div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
|
43
|
+
all[0]
|
44
|
+
) {
|
45
|
+
}
|
46
|
+
return v > 4 ? v : false;
|
47
|
+
}());
|
48
|
+
}
|
49
|
+
if (Base._ieVersion == 6 || Base._ieVersion == 7) {
|
50
|
+
if (Callpixels['easyxdm_loaded'] == null) Callpixels['easyxdm_loaded'] = false;
|
51
|
+
}
|
52
|
+
return Base._ieVersion;
|
53
|
+
};
|
54
|
+
Callpixels.Base = Base;
|
55
|
+
})();
|
@@ -0,0 +1,113 @@
|
|
1
|
+
(function () {
|
2
|
+
// Dependencies
|
3
|
+
var Base = Callpixels.Base;
|
4
|
+
var Data = Callpixels.Base.Data;
|
5
|
+
|
6
|
+
/**
|
7
|
+
* @constructor
|
8
|
+
* @memberof Callpixels.Base
|
9
|
+
*/
|
10
|
+
var Model = function () {
|
11
|
+
|
12
|
+
this.api_host_uri = '/api/v1/';
|
13
|
+
this.type = 'model';
|
14
|
+
|
15
|
+
this.primary_key = function (primary_key) {
|
16
|
+
return Model.primary_key(this.type, primary_key);
|
17
|
+
};
|
18
|
+
|
19
|
+
this.store = function (data) {
|
20
|
+
// do we have data to store?
|
21
|
+
if (typeof(data) !== 'undefined') {
|
22
|
+
// does the data contain the required primary_key?
|
23
|
+
var key = this.primary_key();
|
24
|
+
if (typeof(data[key]) === 'undefined') {
|
25
|
+
throw("ArgumentError: Expected to receive primary_key " + key);
|
26
|
+
}
|
27
|
+
// has a store been initialized?
|
28
|
+
else if (typeof(this._store) === 'undefined') {
|
29
|
+
this._store = new Callpixels.Base.Data({type: this.type, primary_key: data[key] });
|
30
|
+
}
|
31
|
+
// merge the data
|
32
|
+
this._store.merge(data);
|
33
|
+
// update visitor is token present
|
34
|
+
Model.update_visitor_id(data);
|
35
|
+
}
|
36
|
+
return this._store;
|
37
|
+
};
|
38
|
+
|
39
|
+
this.get_data = function (path, callback) {
|
40
|
+
return this.connection().getJSON(this.api_host_uri + path, null, [Model.update, callback], this);
|
41
|
+
};
|
42
|
+
|
43
|
+
this.post_data = function (path, data, callback) {
|
44
|
+
return this.connection().postJSON(this.api_host_uri + path, data, [Model.update, callback], this);
|
45
|
+
};
|
46
|
+
|
47
|
+
this.set = function () {
|
48
|
+
if (typeof(this["set_" + arguments[0]]) === 'function') {
|
49
|
+
arguments[1] = this["set_" + arguments[0]].apply(this, [arguments[1]]);
|
50
|
+
}
|
51
|
+
return this._store.set.apply(this, arguments);
|
52
|
+
};
|
53
|
+
this.get = function () {
|
54
|
+
return this._store.get.apply(this, arguments);
|
55
|
+
};
|
56
|
+
this.connection = function () {
|
57
|
+
return Callpixels.Base.Request.connection();
|
58
|
+
};
|
59
|
+
};
|
60
|
+
Model.inflections = {
|
61
|
+
'number': 'numbers',
|
62
|
+
'campaign': 'campaigns'
|
63
|
+
};
|
64
|
+
Model.update = function (data) {
|
65
|
+
for (var key in data) {
|
66
|
+
var type = key;
|
67
|
+
var value = data[key];
|
68
|
+
if (typeof Model.inflections[key] !== 'undefined') {
|
69
|
+
type = Model.inflections[key];
|
70
|
+
}
|
71
|
+
if (typeof Data._store[type] !== 'undefined') {
|
72
|
+
if (Base.isArray(value)) {
|
73
|
+
for (var i = 0; i < value.length; i++) {
|
74
|
+
Model.update_record(type, value[i]);
|
75
|
+
}
|
76
|
+
} else {
|
77
|
+
Model.update_record(type, value[i]);
|
78
|
+
}
|
79
|
+
}
|
80
|
+
}
|
81
|
+
return data;
|
82
|
+
};
|
83
|
+
Model.update_record = function (type, record) {
|
84
|
+
// update visitor is token present
|
85
|
+
Model.update_visitor_id(record);
|
86
|
+
// update data store
|
87
|
+
if (typeof record.id !== 'undefined') {
|
88
|
+
var primary_key = Model.primary_key(type);
|
89
|
+
for (var key in record) {
|
90
|
+
Callpixels.Base.Data._store[type][record[primary_key]][key] = record[key];
|
91
|
+
}
|
92
|
+
return true
|
93
|
+
} else {
|
94
|
+
return false
|
95
|
+
}
|
96
|
+
return record;
|
97
|
+
};
|
98
|
+
Model.update_visitor_id = function (record) {
|
99
|
+
if (typeof(record) !== 'undefined' && typeof(record.visitor_id) !== 'undefined') {
|
100
|
+
Callpixels.Base.Cookies.set('CallPixels-vid', record.visitor_id);
|
101
|
+
}
|
102
|
+
};
|
103
|
+
Model.primary_key = function (type, primary_key) {
|
104
|
+
if (typeof(Model.primary_keys) === 'undefined') Model.primary_keys = {};
|
105
|
+
// default key
|
106
|
+
if (typeof(Model.primary_keys[type]) === 'undefined') Model.primary_keys[type] = 'id';
|
107
|
+
// assign key if passed
|
108
|
+
if (typeof(primary_key) !== 'undefined') Model.primary_keys[type] = primary_key;
|
109
|
+
// return value
|
110
|
+
return Model.primary_keys[type];
|
111
|
+
}
|
112
|
+
Callpixels.Base.Model = Model;
|
113
|
+
})();
|