PluginProbe
Boxzilla – WordPress Popup Builder / 3.2.4
Boxzilla – WordPress Popup Builder v3.2.4
3.4.11 3.4.10 3.4.9 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 trunk 3.0 3.0.1 3.0.2 3.0.3 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 All 72 releases
boxzilla / assets / browserify / script.js

script.js in Boxzilla – WordPress Popup Builder 3.2.4, at assets/browserify/script.js

138 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function() {
2 'use strict';
3
4 var Boxzilla = require('boxzilla');
5 var options = window.boxzilla_options;
6
7 // expose Boxzilla object to window
8 window.Boxzilla = Boxzilla;
9
10 // helper function for setting CSS styles
11 function css(element, styles) {
12 if( styles.background_color ) {
13 element.style.background = styles.background_color;
14 }
15
16 if( styles.color ) {
17 element.style.color = styles.color;
18 }
19
20 if( styles.border_color ) {
21 element.style.borderColor = styles.border_color;
22 }
23
24 if( styles.border_width ) {
25 element.style.borderWidth = parseInt(styles.border_width) + "px";
26 }
27
28 if( styles.border_style ) {
29 element.style.borderStyle = styles.border_style;
30 }
31
32 if( styles.width ) {
33 element.style.maxWidth = parseInt(styles.width) + "px";
34 }
35 }
36
37 function createBoxesFromConfig() {
38
39 // failsafe against including script twice.
40 if( options.inited ) {
41 return;
42 }
43
44 // create boxes from options
45 for( var i=0; i < options.boxes.length; i++ ) {
46 // get opts
47 var boxOpts = options.boxes[i];
48 boxOpts.testMode = isLoggedIn && options.testMode;
49
50 // find box content element, bail if not found
51 var boxContentElement = document.getElementById('boxzilla-box-'+ boxOpts.id +'-content');
52 if( ! boxContentElement) {
53 continue;
54 }
55
56 // use element as content option
57 boxOpts.content = boxContentElement;
58
59 // create box
60 var box = Boxzilla.create(boxOpts.id, boxOpts);
61
62 // add box slug to box element as classname
63 box.element.className = box.element.className + ' boxzilla-' + boxOpts.post.slug;
64
65 // add custom css to box
66 css(box.element, boxOpts.css);
67
68 box.element.firstChild.firstChild.className += " first-child";
69 box.element.firstChild.lastChild.className += " last-child";
70
71 // maybe show box right away
72 if( box.fits() && locationHashRefersBox(box) ) {
73 box.show();
74 }
75 }
76
77 // set flag to prevent initialising twice
78 options.inited = true;
79
80 // trigger "done" event.
81 Boxzilla.trigger('done');
82
83 // maybe open box with MC4WP form in it
84 maybeOpenMailChimpForWordPressBox();
85 }
86
87 function locationHashRefersBox(box) {
88 if( ! window.location.hash || 0 === window.location.hash.length ) {
89 return false;
90 }
91
92 var elementId = window.location.hash.substring(1);
93
94 // only attempt on strings looking like an ID
95 var regex = /^[a-zA-Z\-\_0-9]+$/;
96 if( ! regex.test(elementId) ) {
97 return false;
98 }
99
100 if( elementId === box.element.id ) {
101 return true;
102 } else if( box.element.querySelector('#' + elementId) ) {
103 return true;
104 }
105
106 return false;
107 }
108
109 function maybeOpenMailChimpForWordPressBox() {
110 if( typeof(window.mc4wp_forms_config) !== "object" || ! window.mc4wp_forms_config.submitted_form ) {
111 return;
112 }
113
114 var selector = '#' + window.mc4wp_forms_config.submitted_form.element_id;
115 var boxes = Boxzilla.boxes;
116 for( var boxId in boxes ) {
117 if(!boxes.hasOwnProperty(boxId)) { continue; }
118 var box = boxes[boxId];
119 if( box.element.querySelector(selector)) {
120 box.show();
121 return;
122 }
123 }
124 }
125
126 // print message when test mode is enabled
127 var isLoggedIn = document.body.className.indexOf('logged-in') > -1;
128 if( isLoggedIn && options.testMode ) {
129 console.log( 'Boxzilla: Test mode is enabled. Please disable test mode if you\'re done testing.' );
130 }
131
132 // init boxzilla
133 Boxzilla.init();
134
135 // on window.load, create DOM elements for boxes
136 window.addEventListener('load', createBoxesFromConfig);
137 })();
138