ru-se.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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 // });