PluginProbe
Boxzilla – WordPress Popup Builder / 3.0.2
Boxzilla – WordPress Popup Builder v3.0.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
boxzilla / assets / browserify / admin / _admin.js

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

122 lines 3.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 'use strict';
2
3 var $ = window.jQuery;
4 var Option = require('./_option.js');
5 var optionControls = document.getElementById('boxzilla-box-options-controls');
6 var $optionControls = $(optionControls);
7
8 // sanity check, are we on the correct page?
9 if( $optionControls.length === 0 ) {
10 return;
11 }
12
13 var EventEmitter = require('wolfy87-eventemitter');
14 var events = new EventEmitter();
15 var Designer = require('./_designer.js')($, Option, events);
16 var rowTemplate = wp.template('rule-row-template');
17 var i18n = boxzilla_i18n;
18
19 // events
20 $optionControls.on('click', ".boxzilla-add-rule", addRuleFields);
21 $optionControls.on('click', ".boxzilla-remove-rule", removeRule);
22 $optionControls.on('change', ".boxzilla-rule-condition", setContextualHelpers);
23 $optionControls.find('.boxzilla-auto-show-trigger').on('change', toggleTriggerOptions );
24
25 $(window).load(function() {
26 if( typeof(window.tinyMCE) === "undefined" ) {
27 document.getElementById('notice-notinymce').style.display = '';
28 }
29 });
30
31 // call contextual helper method for each row
32 $('.boxzilla-rule-row').each(setContextualHelpers);
33
34 function toggleTriggerOptions() {
35 $optionControls.find('.boxzilla-trigger-options').toggle( this.value !== '' );
36 }
37
38 function removeRule() {
39 $(this).parents('tr').remove();
40 }
41
42 function setContextualHelpers() {
43
44 var context = ( this.tagName.toLowerCase() === "tr" ) ? this : $(this).parents('tr').get(0);
45 var condition = context.querySelector('.boxzilla-rule-condition').value;
46 var valueInput = context.querySelector('.boxzilla-rule-value');
47 var qualifierInput = context.querySelector('.boxzilla-rule-qualifier');
48 var betterInput = valueInput.cloneNode(true);
49 var $betterInput = $(betterInput);
50
51 // remove previously added helpers
52 $(context.querySelectorAll('.boxzilla-helper')).remove();
53
54 // prepare better input
55 betterInput.removeAttribute('name');
56 betterInput.className = betterInput.className + ' boxzilla-helper';
57 valueInput.parentNode.insertBefore(betterInput, valueInput.nextSibling);
58 $betterInput.change(function() { valueInput.value = this.value; });
59
60 betterInput.style.display = '';
61 valueInput.style.display = 'none';
62 qualifierInput.style.display = '';
63
64 // change placeholder for textual help
65 switch(condition) {
66 default:
67 betterInput.placeholder = i18n.enterCommaSeparatedValues;
68 break;
69
70 case '':
71 case 'everywhere':
72 qualifierInput.value = '1';
73 valueInput.value = '';
74 betterInput.style.display = 'none';
75 qualifierInput.style.display = 'none';
76 break;
77
78 case 'is_single':
79 case 'is_post':
80 betterInput.placeholder = i18n.enterCommaSeparatedPosts;
81 $betterInput.suggest(ajaxurl + "?action=boxzilla_autocomplete&type=post", {multiple:true, multipleSep: ","});
82 break;
83
84 case 'is_page':
85 betterInput.placeholder = i18n.enterCommaSeparatedPages;
86 $betterInput.suggest(ajaxurl + "?action=boxzilla_autocomplete&type=page", {multiple:true, multipleSep: ","});
87 break;
88
89 case 'is_post_type':
90 betterInput.placeholder = i18n.enterCommaSeparatedPostTypes;
91 $betterInput.suggest(ajaxurl + "?action=boxzilla_autocomplete&type=post_type", {multiple:true, multipleSep: ","});
92 break;
93
94 case 'is_url':
95 betterInput.placeholder = i18n.enterCommaSeparatedRelativeUrls;
96 break;
97
98 case 'is_post_in_category':
99 $betterInput.suggest(ajaxurl + "?action=boxzilla_autocomplete&type=category", {multiple:true, multipleSep: ","});
100 break;
101
102 case 'is_post_with_tag':
103 $betterInput.suggest(ajaxurl + "?action=boxzilla_autocomplete&type=post_tag", {multiple:true, multipleSep: ","});
104 break;
105 }
106 }
107
108 function addRuleFields() {
109 var data = {
110 'key': optionControls.querySelectorAll('.boxzilla-rule-row').length
111 };
112 var html = rowTemplate(data);
113 $(document.getElementById('boxzilla-box-rules')).after(html);
114 return false;
115 }
116
117 module.exports = {
118 'Designer': Designer,
119 'Option': Option,
120 'events': events
121 };
122