PluginProbe
Boxzilla – WordPress Popup Builder / 3.2.14
Boxzilla – WordPress Popup Builder v3.2.14
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 / admin / _admin.js

_admin.js in Boxzilla – WordPress Popup Builder 3.2.14, at assets/browserify/admin/_admin.js

174 lines 6.3 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 $ = window.jQuery;
5 var Option = require('./_option.js');
6 var optionControls = document.getElementById('boxzilla-box-options-controls');
7 var $optionControls = $(optionControls);
8 var tnLoggedIn = document.createTextNode(' logged in');
9
10 // sanity check, are we on the correct page?
11 if ($optionControls.length === 0) {
12 return;
13 }
14
15 var EventEmitter = require('wolfy87-eventemitter');
16 var events = new EventEmitter();
17 var Designer = require('./_designer.js')($, Option, events);
18 var rowTemplate = wp.template('rule-row-template');
19 var i18n = boxzilla_i18n;
20 var ruleComparisonEl = document.getElementById('boxzilla-rule-comparison');
21 var rulesContainerEl = document.getElementById('boxzilla-box-rules');
22
23 // events
24 $optionControls.on('click', ".boxzilla-add-rule", addRuleFields);
25 $optionControls.on('click', ".boxzilla-remove-rule", removeRule);
26 $optionControls.on('change', ".boxzilla-rule-condition", setContextualHelpers);
27 $optionControls.find('.boxzilla-auto-show-trigger').on('change', toggleTriggerOptions);
28 $(ruleComparisonEl).change(toggleAndOrTexts);
29
30 $(window).load(function () {
31 if (typeof(window.tinyMCE) === "undefined") {
32 document.getElementById('notice-notinymce').style.display = '';
33 }
34 });
35
36 // call contextual helper method for each row
37 $('.boxzilla-rule-row').each(setContextualHelpers);
38
39 function toggleAndOrTexts() {
40 var newText = ruleComparisonEl.value === 'any' ? i18n.or : i18n.and;
41 $('.boxzilla-andor').text(newText);
42 }
43
44 function toggleTriggerOptions() {
45 $optionControls.find('.boxzilla-trigger-options').toggle(this.value !== '');
46 }
47
48 function removeRule() {
49 var row = $(this).parents('tr');
50
51 // delete andor row
52 row.prev().remove();
53
54 // delete rule row
55 row.remove();
56 }
57
58 function setContextualHelpers() {
59 var context = ( this.tagName.toLowerCase() === "tr" ) ? this : $(this).parents('tr').get(0);
60 var condition = context.querySelector('.boxzilla-rule-condition').value;
61 var valueInput = context.querySelector('.boxzilla-rule-value');
62 var qualifierInput = context.querySelector('.boxzilla-rule-qualifier');
63 var betterInput = valueInput.cloneNode(true);
64 var $betterInput = $(betterInput);
65
66 // remove previously added helpers
67 $(context.querySelectorAll('.boxzilla-helper')).remove();
68
69 // prepare better input
70 betterInput.removeAttribute('name');
71 betterInput.className = betterInput.className + ' boxzilla-helper';
72 valueInput.parentNode.insertBefore(betterInput, valueInput.nextSibling);
73 $betterInput.change(function () {
74 valueInput.value = this.value;
75 });
76
77 betterInput.style.display = '';
78 valueInput.style.display = 'none';
79 qualifierInput.style.display = '';
80 qualifierInput.querySelector('option[value="not_contains"]').style.display = 'none';
81 qualifierInput.querySelector('option[value="contains"]').style.display = 'none';
82 if (tnLoggedIn.parentNode) {
83 tnLoggedIn.parentNode.removeChild(tnLoggedIn);
84 }
85
86 // change placeholder for textual help
87 switch (condition) {
88 default:
89 betterInput.placeholder = i18n.enterCommaSeparatedValues;
90 break;
91
92 case '':
93 case 'everywhere':
94 qualifierInput.value = '1';
95 valueInput.value = '';
96 betterInput.style.display = 'none';
97 qualifierInput.style.display = 'none';
98 break;
99
100 case 'is_single':
101 case 'is_post':
102 betterInput.placeholder = i18n.enterCommaSeparatedPosts;
103 $betterInput.suggest(ajaxurl + "?action=boxzilla_autocomplete&type=post", {
104 multiple: true,
105 multipleSep: ","
106 });
107 break;
108
109 case 'is_page':
110 betterInput.placeholder = i18n.enterCommaSeparatedPages;
111 $betterInput.suggest(ajaxurl + "?action=boxzilla_autocomplete&type=page", {
112 multiple: true,
113 multipleSep: ","
114 });
115 break;
116
117 case 'is_post_type':
118 betterInput.placeholder = i18n.enterCommaSeparatedPostTypes;
119 $betterInput.suggest(ajaxurl + "?action=boxzilla_autocomplete&type=post_type", {
120 multiple: true,
121 multipleSep: ","
122 });
123 break;
124
125 case 'is_url':
126 qualifierInput.querySelector('option[value="contains"]').style.display = '';
127 qualifierInput.querySelector('option[value="not_contains"]').style.display = '';
128 betterInput.placeholder = i18n.enterCommaSeparatedRelativeUrls;
129 break;
130
131 case 'is_post_in_category':
132 $betterInput.suggest(ajaxurl + "?action=boxzilla_autocomplete&type=category", {
133 multiple: true,
134 multipleSep: ","
135 });
136 break;
137
138 case 'is_post_with_tag':
139 $betterInput.suggest(ajaxurl + "?action=boxzilla_autocomplete&type=post_tag", {
140 multiple: true,
141 multipleSep: ","
142 });
143 break;
144
145 case 'is_user_logged_in':
146 betterInput.style.display = 'none';
147 valueInput.parentNode.insertBefore(tnLoggedIn, valueInput.nextSibling);
148 break;
149
150 case 'is_referer':
151 qualifierInput.querySelector('option[value="contains"]').style.display = '';
152 qualifierInput.querySelector('option[value="not_contains"]').style.display = '';
153 break;
154
155 }
156 }
157
158 function addRuleFields() {
159 var data = {
160 'key': optionControls.querySelectorAll('.boxzilla-rule-row').length,
161 'andor': ruleComparisonEl.value === 'any' ? i18n.or : i18n.and,
162 };
163 var html = rowTemplate(data);
164 $(rulesContainerEl).append(html);
165 return false;
166 }
167
168 module.exports = {
169 'Designer': Designer,
170 'Option': Option,
171 'events': events
172 };
173 })();
174