notifications.js (5647B)
1 function kirkiNotifications(settingName, type, configID) { 2 3 wp.customize(settingName, function (setting) { 4 setting.bind(function (value) { 5 var code = 'long_title', 6 subs = {}, 7 message; 8 9 // Dimension fields. 10 if ('kirki-dimension' === type) { 11 12 message = window.kirki.l10n[configID]['invalid-value']; 13 14 if (false === kirkiValidateCSSValue(value)) { 15 kirkiNotificationsWarning(setting, code, message); 16 } else { 17 setting.notifications.remove(code); 18 } 19 20 } 21 22 // Spacing fields. 23 if ('kirki-spacing' === type) { 24 25 setting.notifications.remove(code); 26 if ('undefined' !== typeof value.top) { 27 if (false === kirkiValidateCSSValue(value.top)) { 28 subs.top = window.kirki.l10n[configID].top; 29 } else { 30 delete subs.top; 31 } 32 } 33 34 if ('undefined' !== typeof value.bottom) { 35 if (false === kirkiValidateCSSValue(value.bottom)) { 36 subs.bottom = window.kirki.l10n[configID].bottom; 37 } else { 38 delete subs.bottom; 39 } 40 } 41 42 if ('undefined' !== typeof value.left) { 43 if (false === kirkiValidateCSSValue(value.left)) { 44 subs.left = window.kirki.l10n[configID].left; 45 } else { 46 delete subs.left; 47 } 48 } 49 50 if ('undefined' !== typeof value.right) { 51 if (false === kirkiValidateCSSValue(value.right)) { 52 subs.right = window.kirki.l10n[configID].right; 53 } else { 54 delete subs.right; 55 } 56 } 57 58 if (!_.isEmpty(subs)) { 59 message = window.kirki.l10n[configID]['invalid-value'] + ' (' + _.values(subs).toString() + ') '; 60 kirkiNotificationsWarning(setting, code, message); 61 } else { 62 setting.notifications.remove(code); 63 } 64 65 } 66 67 }); 68 69 }); 70 71 } 72 73 function kirkiNotificationsWarning(setting, code, message) { 74 75 setting.notifications.add(code, new wp.customize.Notification( 76 code, 77 { 78 type: 'warning', 79 message: message 80 } 81 )); 82 83 } 84 85 86 // jQuery(document).ready(function () { 87 88 function isConditionMet(activeCallback) { 89 var show = null; 90 switch (activeCallback.operator) { 91 case "=": 92 case "==": 93 show = wp.customize(activeCallback.setting).get() == activeCallback.value; 94 break; 95 96 case"===": 97 show = wp.customize(activeCallback.setting).get() === activeCallback.value; 98 break; 99 100 case "!=": 101 show = wp.customize(activeCallback.setting).get() != activeCallback.value; 102 break; 103 104 case "!==": 105 show = wp.customize(activeCallback.setting).get() !== activeCallback.value; 106 break; 107 108 case ">": 109 show = wp.customize(activeCallback.setting).get() > activeCallback.value; 110 break; 111 112 case ">=": 113 show = wp.customize(activeCallback.setting).get() >= activeCallback.value; 114 break; 115 116 case "<": 117 show = wp.customize(activeCallback.setting).get() < activeCallback.value; 118 break; 119 120 case "<=": 121 show = wp.customize(activeCallback.setting).get() <= activeCallback.value; 122 break; 123 124 case "in": 125 show = activeCallback.value.indexOf(wp.customize(activeCallback.setting).get()) !== -1; 126 break; 127 128 } 129 130 131 return show; 132 } 133 134 // var bindsAdded = 135 136 wp.customize.bind('pane-contents-reflowed', function () { 137 138 jQuery.each(wp.customize.settings.controls, function (control, options) { 139 140 if (options.active_callback) { 141 142 var activeCallbacks = options.active_callback; 143 var modifiedControl = control; 144 145 var onChange = function (newValue, oldValue) { 146 var control = wp.customize(modifiedControl).findControls()[0]; 147 148 for (var i = 0; i < activeCallbacks.length; i++) { 149 var ac = activeCallbacks[i]; 150 var conditionMet = isConditionMet(ac); 151 152 // condition not met 153 if (conditionMet === false) { 154 // control.active.set(false); 155 control.deactivate(); 156 return; 157 158 } else { 159 160 // condition undetermined 161 if (conditionMet === null) { 162 return; 163 } 164 } 165 } 166 167 // control.active.set(true); 168 169 control.activate(); 170 // if (control.setting.transport === 'postMessage') { 171 // control.setting.callbacks.fireWith(control.setting, [control.setting.get(), control.params.default]) 172 // } 173 }; 174 175 for (var i = 0; i < activeCallbacks.length; i++) { 176 var ac = activeCallbacks[i]; 177 if (!_.isObject(ac)) { 178 continue; 179 } 180 wp.customize(ac['setting']).bind(onChange); 181 } 182 } 183 }); 184 185 }); 186 // });