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