diff --git a/.gitignore b/.gitignore index c83515ec..8af93ce6 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ tmp/ *~.nib local.properties .classpath +.ideanpg .settings/ .loadpath @@ -217,3 +218,5 @@ pip-log.txt node_modules/ assets/vendor/ +package-lock.json +.idea \ No newline at end of file diff --git a/assets/js/um-conditional.js b/assets/js/um-conditional.js index 11a58835..6bef3111 100644 --- a/assets/js/um-conditional.js +++ b/assets/js/um-conditional.js @@ -1,597 +1,387 @@ +function condition_fields() { + var first_group = 0, + state_array = [], + count = state_array.length, + state = 'show'; + + jQuery('.um-profile-body .um-field, .um-profile-body .um-field').each(function () { + var conds = jQuery(this).attr('data-conds'); + + if ( conds ){ + var array = JSON.parse(conds); + + jQuery.each(array, function() { + var action = this[0], + field = this[1], + op = this[2], + val = this[3], + group = this[5], + depend_field; + + var input = jQuery('.um-profile-body .um-field[data-key="'+field+'"] .um-field-area input'), + select = jQuery('.um-profile-body .um-field[data-key="'+field+'"] .um-field-area>select'), + textarea = jQuery('.um-profile-body .um-field[data-key="'+field+'"] .um-field-area>textarea'), + content_block = jQuery('.um-profile-body .um-field[data-key="'+field+'"] .um-field-block'); + + if( input.length > 0 && select.length === 0 ){ + + if( input.is(':checkbox') ){ + var checked = jQuery('.um-profile-body .um-field[data-key="'+field+'"] input:checked'); + checked.each(function () { + var checked_vals = jQuery(this).val(); + + if( checked_vals === val ){ + depend_field = val; + } + + }); + } else if( input.is(':radio')) { + depend_field = jQuery('.um-profile-body .um-field[data-key="'+field+'"] input:checked').val(); + } else { + depend_field = input.val(); + } + + } else if( select.length > 0 ){ + + if( jQuery.inArray( val, select.val() ) > 0 ){ + depend_field = val; + } else { + depend_field = select.val() + } + + } else if( textarea.length > 0 ){ + + depend_field = textarea.val(); + + } else if( content_block.length > 0 ){ + + depend_field = content_block.text(); + + } + + if( parseInt(group) !== first_group ){ + + if ( action === 'show') { + + switch (op) { + case 'equals to': + if( depend_field == val ){ + state = 'show'; + } else { + state = 'hide'; + } + break; + + case 'not equals': + if( depend_field != val ){ + state = 'show'; + } else { + state = 'hide'; + } + break; + + case 'empty': + if( !depend_field || depend_field === '' ){ + state = 'show'; + } else { + state = 'hide'; + } + break; + + case 'not empty': + if( depend_field && depend_field !== '' ){ + state = 'show'; + } else { + state = 'hide'; + } + break; + + case 'greater than': + if( jQuery.isNumeric(val) && jQuery.isNumeric(depend_field) ){ + if( val > depend_field ){ + state = 'show' + } else { + state = 'hide' + } + } else { + state = 'hide'; + } + break; + + case 'less than': + if( jQuery.isNumeric(val) && jQuery.isNumeric(depend_field) ){ + if( val < depend_field ){ + state = 'show' + } else { + state = 'hide' + } + } else { + state = 'hide'; + } + break; + + case 'contains': + if( depend_field.search(val) >= 0 ){ + state = 'show'; + } else { + state = 'hide'; + } + break; + + } + + } else { // if hide + + switch (op) { + case 'equals to': + if (depend_field == val) { + state = 'hide'; + } else { + state = 'show'; + } + break; + + case 'not equals': + if (depend_field != val) { + state = 'hide'; + } else { + state = 'show'; + } + break; + + case 'empty': + if (!depend_field || depend_field === '') { + state = 'hide'; + } else { + state = 'show'; + } + break; + + case 'not empty': + if (depend_field && depend_field !== '') { + state = 'hide'; + } else { + state = 'show'; + } + break; + + case 'greater than': + if (jQuery.isNumeric(val) && jQuery.isNumeric(depend_field)) { + if (val > depend_field) { + state = 'hide' + } else { + state = 'show' + } + } else { + state = 'show'; + } + break; + + case 'less than': + if (jQuery.isNumeric(val) && jQuery.isNumeric(depend_field)) { + if (val < depend_field) { + state = 'hide' + } else { + state = 'show' + } + } else { + state = 'show'; + } + break; + + case 'contains': + if (depend_field.search(val) >= 0) { + state = 'hide'; + } else { + state = 'show'; + } + break; + + } + + } + first_group++; + state_array.push(state); + } else { + + if ( action === 'show') { + + switch (op) { + case 'equals to': + if( depend_field == val ){ + state = 'show'; + } else { + state = 'not_show'; + } + break; + + case 'not equals': + if( depend_field != val ){ + state = 'show'; + } else { + state = 'not_show'; + } + break; + + case 'empty': + if( !depend_field || depend_field === '' ){ + state = 'show'; + } else { + state = 'not_show'; + } + break; + + case 'not empty': + if( depend_field && depend_field !== '' ){ + state = 'show'; + } else { + state = 'not_show'; + } + break; + + case 'greater than': + if( jQuery.isNumeric(val) && jQuery.isNumeric(depend_field) ){ + if( val > depend_field ){ + state = 'show' + } else { + state = 'not_show' + } + } else { + state = 'not_show'; + } + break; + + case 'less than': + if( jQuery.isNumeric(val) && jQuery.isNumeric(depend_field) ){ + if( val < depend_field ){ + state = 'show' + } else { + state = 'not_show' + } + } else { + state = 'not_show'; + } + break; + + case 'contains': + if( depend_field.search(val) >= 0 ){ + state = 'show'; + } else { + state = 'not_show'; + } + break; + + } + + } else { // if hide + + switch (op) { + case 'equals to': + if (depend_field == val) { + state = 'hide'; + } else { + state = 'not_hide'; + } + break; + + case 'not equals': + if (depend_field != val) { + state = 'hide'; + } else { + state = 'not_hide'; + } + break; + + case 'empty': + if (!depend_field || depend_field === '') { + state = 'hide'; + } else { + state = 'not_hide'; + } + break; + + case 'not empty': + if (depend_field && depend_field !== '') { + state = 'hide'; + } else { + state = 'not_hide'; + } + break; + + case 'greater than': + if (jQuery.isNumeric(val) && jQuery.isNumeric(depend_field)) { + if (val > depend_field) { + state = 'hide' + } else { + state = 'not_hide' + } + } else { + state = 'not_hide'; + } + break; + + case 'less than': + if (jQuery.isNumeric(val) && jQuery.isNumeric(depend_field)) { + if (val < depend_field) { + state = 'hide' + } else { + state = 'not_hide' + } + } else { + state = 'not_hide'; + } + break; + + case 'contains': + if (depend_field.search(val) >= 0) { + state = 'hide'; + } else { + state = 'not_hide'; + } + break; + + } + + } + if( state_array[count] ){ + if( state_array[count] === 'show' || state_array[count] === 'not_hide' ){ + if ( state === 'show' || state === 'not_hide' ){ + state_array[count] = 'show'; + } else { + state_array[count] = 'hide'; + } + } else { + state_array[count] = 'hide'; + } + } else { + if ( state === 'show' || state === 'not_hide' ){ + state_array[count] = 'show'; + } else { + state_array[count] = 'hide'; + } + } + } + + }); + + if( jQuery.inArray( 'show', state_array ) < 0 ){ + jQuery(this).hide(); + } else { + jQuery(this).show(); + } + } + + }); +} jQuery(document).ready( function (){ - var arr_all_conditions = []; //raw - var um_field_conditions = {}; // filtered - var um_field_default_values = {}; + condition_fields(); - /** - * Get field default value - * @param object $dom - * @return string - */ - function um_get_field_default_value( $dom ) { - var default_value = ''; - var type = um_get_field_type($dom); - switch ( type ) { - - case 'text': - case 'number': - case 'date': - case 'textarea': - case 'select': - default_value = $dom.find('input:text,input[type=number],textarea,select').val(); - break; - - case 'multiselect': - default_value = $dom.find('select').val(); - break; - - case 'radio': - if ($dom.find('input[type=radio]:checked').length >= 1) { - default_value = $dom.find('input[type=radio]:checked').val(); - } - - break; - case 'checkbox': - - if ($dom.find('input[type=checkbox]:checked').length >= 1) { - - if ($dom.find('input[type=checkbox]:checked').length > 1) { - $dom.find('input[type=checkbox]:checked').each(function () { - default_value = default_value + jQuery(this).val() + ' '; - }); - } else { - default_value = $dom.find('input[type=checkbox]:checked').val(); - } - - } - break; - } - - return {type: type, value: default_value}; - } - - /** - * Get field element by field wrapper - * @param object $dom - * @return object - */ - function um_get_field_element( $dom ) { - var default_value = ''; - var type = um_get_field_type($dom); - - switch ( type ) { - - case 'text': - case 'number': - case 'date': - case 'textarea': - case 'select': - case 'multiselect': - case 'radio': - case 'checkbox': - return $dom.find('input,textarea,select'); - break; - - - } - - return ''; - } - - /** - * Get field type - * @param object $dom - * @return string - */ - function um_get_field_type($dom) { - var type = ''; - var classes = $dom.attr( 'class' ); - jQuery.each( classes.split(' '), function (i, d) { - if (d.indexOf('um-field-type') != -1) { - type = d.split('_')[1]; - } - }); - - return type; - - } - - /** - * Get field siblings/chidren conditions - * @param string field_key - * @return array - */ - function um_get_field_children(field_key) { - var arr_conditions = []; - jQuery.each(arr_all_conditions, function (ii, condition) { - if (condition.field.parent == field_key) { - arr_conditions.push(condition.field.condition); - } - }); - - return arr_conditions; - - } - - /** - * Split single array to multi-dimensional array - * @param array arr - * @param integer n - * @return array - */ - function um_splitup_array(arr, n) { - var rest = arr.length % n, - restUsed = rest, - partLength = Math.floor(arr.length / n), - result = []; - - for (var i = 0; i < arr.length; i += partLength) { - var end = partLength + i, - add = false; - - if (rest !== 0 && restUsed) { - end++; - restUsed--; - add = true; - } - - result.push(arr.slice(i, end)); - - if (add) { - i++; - } - } - - var obj_result = []; - jQuery.each(result, function (ii, dd) { - obj_result.push({ - action: dd[0], - if_field: dd[1], - operator: dd[2], - value: dd[3] - }) - }); - - return obj_result; - } - - /** - * Get field live value - * @param object $dom - * @return mixed - */ - function um_get_field_data($dom) { - um_live_field = $dom.parents('.um-field').data('key'); - um_live_value = $dom.val(); - - if ($dom.is(':checkbox')) { - - um_live_value = ''; - - if ($dom.parents('.um-field').find('input:checked').length > 1) { - $dom.parents('.um-field').find('input:checked').each(function () { - um_live_value = um_live_value + jQuery(this).val() + ' '; - }); - } else { - if ($dom.parents('.um-field').find('input:checked').length >= 1) { - um_live_value = $dom.parents('.um-field').find('input:checked').val(); - } - } - - } - - if ($dom.is(':radio')) { - um_live_value = $dom.parents('.um-field').find('input[type=radio]:checked').val(); - } - - return um_live_value; - - } - - function um_in_array(needle, haystack, strict){ - var found = false, key, strict = !!strict; - for (key in haystack) { - if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) { - found = true; - break; - } - } - - return found; - } - - /** - * Apply field conditions - * @param object $dom - * @param boolean is_single_update - */ - function um_apply_conditions($dom, is_single_update) { - var operators = ['empty', 'not empty', 'equals to', 'not equals', 'greater than', 'less than', 'contains']; - var key = $dom.parents('.um-field[data-key]').data('key'); - var conditions = um_field_conditions[key]; - - var live_field_value = um_get_field_data($dom); - - var $owners = {}; - var $owners_values = {}; - var $owner_conditions = {}; - - jQuery.each(conditions, function (index, condition) { - if (typeof $owners_values[condition.owner] == 'undefined') { - $owners_values[condition.owner] = []; - $owner_conditions[condition.owner] = {} - } - $owners_values[condition.owner].push(condition.value); - $owner_conditions[condition.owner] = condition; - }); - - jQuery.each(conditions, function (index, condition) { - if (typeof $owners[condition.owner] == 'undefined') { - $owners[condition.owner] = {}; - } - if (condition.operator == 'empty') { - if (!live_field_value || live_field_value == '' && um_in_array(live_field_value, $owners_values[condition.owner])) { - $owners[condition.owner][index] = true; - } else { - $owners[condition.owner][index] = false; - } - } - - if (condition.operator == 'not empty') { - if (live_field_value && live_field_value != '' && !um_in_array(live_field_value, $owners_values[condition.owner])) { - $owners[condition.owner][index] = true; - } else { - $owners[condition.owner][index] = false; - } - } - - if (condition.operator == 'equals to') { - if (condition.value == live_field_value && um_in_array(live_field_value, $owners_values[condition.owner])) { - $owners[condition.owner][index] = true; - } else { - $owners[condition.owner][index] = false; - } - } - - if (condition.operator == 'not equals') { - if (jQuery.isNumeric(condition.value) && parseInt(live_field_value) != parseInt(condition.value) && live_field_value && !um_in_array(live_field_value, $owners_values[condition.owner])) { - $owners[condition.owner][index] = true; - } else if (condition.value != live_field_value && !um_in_array(live_field_value, $owners_values[condition.owner])) { - $owners[condition.owner][index] = true; - } else { - $owners[condition.owner][index] = false; - } - } - - if (condition.operator == 'greater than') { - if (jQuery.isNumeric(condition.value) && parseInt(live_field_value) > parseInt(condition.value)) { - $owners[condition.owner][index] = true; - } else { - $owners[condition.owner][index] = false; - } - } - - if (condition.operator == 'less than') { - if (jQuery.isNumeric(condition.value) && parseInt(live_field_value) < parseInt(condition.value)) { - $owners[condition.owner][index] = true; - } else { - $owners[condition.owner][index] = false; - } - } - - if ( condition.operator == 'contains' ) { - if ( 'multiselect' == um_get_field_type( $dom.parents('.um-field[data-key]') ) ) { - if ( live_field_value && live_field_value.indexOf( condition.value ) >= 0 && um_in_array( condition.value, live_field_value ) ) { - $owners[condition.owner][index] = true; - } else { - $owners[condition.owner][index] = false; - } - } else if ( 'checkbox' == um_get_field_type( $dom.parents('.um-field[data-key]') ) ) { - if ( live_field_value && live_field_value.indexOf( condition.value ) >= 0 ) { - $owners[condition.owner][index] = true; - } else { - $owners[condition.owner][index] = false; - } - } else { - if ( live_field_value && live_field_value.indexOf( condition.value ) >= 0 && um_in_array( live_field_value, $owners_values[ condition.owner ] ) ) { - $owners[condition.owner][index] = true; - } else { - $owners[condition.owner][index] = false; - } - } - } - - }); // end foreach `conditions` - jQuery.each($owners, function (index, field) { - if (um_in_array(true, field)) { - um_field_apply_action($dom, $owner_conditions[index], true); - } else { - um_field_apply_action($dom, $owner_conditions[index], false); - } - }); - $dom.trigger('um_fields_change'); - - } - - /** - * Apply condition's action - * @param object $dom - * @param string condition - * @param boolean is_true - */ - function um_field_apply_action($dom, condition, is_true) { - var child_dom = jQuery('div.um-field[data-key="' + condition.owner + '"]'); - - if (condition.action == 'show' && is_true /*&& child_dom.is(':hidden')*/) { - child_dom.show(); - _show_in_ie( child_dom ); - um_field_restore_default_value(child_dom); - } - - if (condition.action == 'show' && !is_true /*&& child_dom.is(':visible') */) { - child_dom.hide(); - _hide_in_ie( child_dom ); - } - - if (condition.action == 'hide' && is_true /*&& child_dom.is(':visible')*/) { - child_dom.hide(); - _hide_in_ie( child_dom ); - } - - if (condition.action == 'hide' && !is_true /*&& child_dom.is(':hidden')*/) { - child_dom.show(); - _show_in_ie( child_dom ); - um_field_restore_default_value( child_dom ); - - } - $dom.removeClass('um-field-has-changed'); - } - - /** - * Restores default field value - * @param object $dom - */ - function um_field_restore_default_value( $dom ) { - //um_field_default_values - - var type = um_get_field_type( $dom ); - var key = $dom.data('key'); - var field = um_field_default_values[key]; - switch ( type ) { - - case 'text': - case 'number': - case 'date': - case 'textarea': - $dom.find('input:text,input[type=number],textareas').val(field.value); - break; - - case 'select': - $dom.find('select').find('option').prop('selected', false); - $dom.find('select').val(field.value); - $dom.find('select').trigger('change'); - break; - - case 'multiselect': - $dom.find('select').find('option').prop('selected', false); - jQuery.each(field.value, function (i, value) { - $dom.find('select').find('option[value="' + value + '"]').attr('selected', true); - }); - $dom.find('select').trigger('change'); - break; - - case 'checkbox': - - if ( $dom.find('input[type=checkbox]:checked').length >= 1 ) { - - $dom.find('input[type=checkbox]:checked').removeAttr('checked'); - $dom.find('span.um-field-checkbox-state i').removeClass('um-icon-android-checkbox-outline'); - $dom.find('span.um-field-checkbox-state i').addClass('um-icon-android-checkbox-outline-blank'); - $dom.find('.um-field-checkbox.active').removeClass('active'); - - if (jQuery.isArray(field.value)) { - jQuery.each(field.value, function (i, value) { - var cbox_elem = $dom.find('input[type=checkbox][value="' + value + '"]'); - cbox_elem.attr('checked', true); - cbox_elem.closest('.um-field-checkbox').find('i').removeClass('um-icon-android-checkbox-outline-blank'); - cbox_elem.closest('.um-field-checkbox').find('i').addClass('um-icon-android-checkbox-outline'); - cbox_elem.closest('.um-field-checkbox').addClass('active'); - }); - } else { - var cbox_elem = $dom.find('input[type=checkbox][value="' + field.value + '"]'); - cbox_elem.attr('checked', true); - cbox_elem.closest('.um-field-checkbox').find('i').removeClass('um-icon-android-checkbox-outline-blank'); - cbox_elem.closest('.um-field-checkbox').find('i').addClass('um-icon-android-checkbox-outline'); - cbox_elem.closest('.um-field-checkbox').addClass('active'); - } - - } - - break; - case 'radio': - - if ( $dom.find('input[type=radio]:checked').length >= 1 ) { - - setTimeout(function () { - - $dom.find('input[type=radio]:checked').removeAttr('checked'); - - $dom.find('span.um-field-radio-state i').removeClass('um-icon-android-radio-button-on'); - $dom.find('span.um-field-radio-state i').addClass('um-icon-android-radio-button-off'); - $dom.find('.um-field-radio.active').removeClass('active'); - - var radio_elem = $dom.find("input[type=radio][value='" + field.value + "']"); - radio_elem.attr('checked', true); - radio_elem.closest('.um-field-radio').find('i').removeClass('um-icon-android-radio-button-off'); - radio_elem.closest('.um-field-radio').find('i').addClass('um-icon-android-radio-button-on'); - radio_elem.closest('.um-field-radio').addClass('active'); - - }, 100); - } - - break; - - - } // end switch type - - - if ( ! $dom.hasClass( 'um-field-has-changed' ) ) { - var me = um_get_field_element( $dom ); - - if ( type == 'radio' || type == 'checkbox' ) { - me = me.find( ':checked' ); - } - - if ( me ) { - me.trigger( 'change' ); - $dom.addClass( 'um-field-has-changed' ); - } - - /* - maybe future fix - if ( me ) { - if ( type == 'radio' || type == 'checkbox' ) { - me.each( function() { - if ( jQuery(this).is(':checked') ) { - jQuery(this).trigger('change'); - } - }); - } else { - me.trigger( 'change' ); - } - - $dom.addClass( 'um-field-has-changed' ); - }*/ - } - } - - /** - * Hides sibling/child field when parent field is hidden - */ - function um_field_hide_siblings() { - - jQuery.each(um_field_conditions, function (index, conditions) { - if (jQuery('.um-field[data-key="' + index + '"]:hidden').length >= 1 || jQuery('.um-field[data-key="' + index + '"]').css('display') == 'none') { - jQuery.each(conditions, function (key, condition) { - jQuery('.um-field[data-key="' + condition.owner + '"]').hide(); - }); - } - - }); - - } - - /** - * Hides div for IE browser - * @param object $dom - */ - function _hide_in_ie( $dom ){ - if ( typeof( jQuery.browser ) != 'undefined' && jQuery.browser.msie ) { - $dom.css({"visibility":"hidden"}); - } - } - - /** - * Shows div for IE browser - * @param object $dom - */ - function _show_in_ie( $dom ){ - if ( typeof( jQuery.browser ) != 'undefined' && jQuery.browser.msie ) { - $dom.css({"visibility":"visible"}); - } - } - - jQuery(document).on('change', '.um-field select, .um-field input[type="radio"], .um-field input[type="checkbox"]', function () { - var me = jQuery(this); - um_apply_conditions(me, false); + jQuery('.um-profile-body .um-field input, .um-profile-body .um-field textarea').on('change keyup', function () { + condition_fields(); + }); + jQuery('.um-profile-body .um-field select').on('change', function () { + condition_fields(); }); - jQuery(document).on('input change', '.um-field input[type="text"]', function () { - var me = jQuery(this); - um_apply_conditions(me, false); - }); - - jQuery(document).on('input change', '.um-field input[type="number"]', function () { - var me = jQuery(this); - um_apply_conditions(me, false); - }); - - jQuery(document).on('input change', '.um-field input[type="password"]', function () { - var me = jQuery(this); - um_apply_conditions(me, false); - }); - - jQuery(document).on('um_fields_change', function () { - um_field_hide_siblings(); - um_field_hide_siblings(); // dupes, issue with false field wrapper's visiblity validations. requires optimization. - }); - - - /** - * UM Conditional fields Init - */ - function um_init_field_conditions() { - var arr_field_keys = []; - - jQuery( '.um-field[data-key]' ).each( function() { - - var key = jQuery(this).data( 'key' ); - - arr_field_keys.push( key ); - - var parse_attrs = {}; - jQuery.each( jQuery(this)[0].attributes, function ( index, attribute ) { - if ( attribute.name.indexOf( 'data-cond' ) != -1 ) { - // replace "data-cond-" - var cond_field_id_and_attr = attribute.name.slice( 10 ); - // return "n" - var cond_field_id = cond_field_id_and_attr.substring( 1, 0 ); - //replace "n-" - var cond_field_attr = cond_field_id_and_attr.slice( 2 ); - - if ( typeof parse_attrs[cond_field_id] == 'undefined' ) - parse_attrs[cond_field_id] = {}; - - parse_attrs[cond_field_id][cond_field_attr] = attribute.value; - } - }); - - jQuery.each( parse_attrs, function ( ii, dd ) { - var obj = {'field' :{ - owner: key, - action: dd.action, - parent: dd.field, - operator: dd.operator, - value: dd.value, - condition: { - owner: key, - action: dd.action, - operator: dd.operator, - value: dd.value - } - }}; - - arr_all_conditions.push(obj); - }); - - um_field_default_values[jQuery(this).data('key')] = um_get_field_default_value( jQuery(this) ); - }); - - jQuery.each( arr_field_keys, function ( i, field_key ) { - um_field_conditions[field_key] = um_get_field_children( field_key ); - }); - - jQuery( '.um-field[data-key]:visible' ).each( function() { - var $wrap_dom = jQuery(this); - var me = um_get_field_element( $wrap_dom ); - if ( typeof me.trigger !== 'undefined' ) { - me.trigger( 'change' ); - } - }); - - } - - - um_init_field_conditions(); }); \ No newline at end of file diff --git a/assets/js/um-conditional.min.js b/assets/js/um-conditional.min.js index 4b9c8602..1ef35f85 100644 --- a/assets/js/um-conditional.min.js +++ b/assets/js/um-conditional.min.js @@ -1 +1 @@ -jQuery(document).ready(function(){var e,t=[],d={},o={};function r(e){switch(s(e)){case"text":case"number":case"date":case"textarea":case"select":case"multiselect":case"radio":case"checkbox":return e.find("input,textarea,select")}return""}function s(e){var n="",i=e.attr("class");return jQuery.each(i.split(" "),function(e,i){-1!=i.indexOf("um-field-type")&&(n=i.split("_")[1])}),n}function l(e,i,n){var a,t=!1;n=!!n;for(a in i)if(n&&i[a]===e||!n&&i[a]==e){t=!0;break}return t}function i(n,e){var i,a=n.parents(".um-field[data-key]").data("key"),t=d[a],c=(i=n,um_live_field=i.parents(".um-field").data("key"),um_live_value=i.val(),i.is(":checkbox")&&(um_live_value="",1parseInt(i.value)?o[i.owner][e]=!0:o[i.owner][e]=!1),"less than"==i.operator&&(jQuery.isNumeric(i.value)&&parseInt(c)select'),u=jQuery('.um-profile-body .um-field[data-key="'+s+'"] .um-field-area>textarea'),c=jQuery('.um-profile-body .um-field[data-key="'+s+'"] .um-field-block');0").get(0).files,C.formdata=void 0!==window.FormData,S.fn.uploadFile=function(e){var p=S.extend({url:"",method:"POST",enctype:"multipart/form-data",formData:null,returnType:null,allowedTypes:"*",fileName:"file",formData:{},dynamicFormData:function(){return{}},maxFileSize:-1,maxFileCount:-1,multiple:!0,dragDrop:!0,autoSubmit:!0,showCancel:!0,showAbort:!0,showDone:!0,showDelete:!1,showError:!0,showStatusAfterSuccess:!0,showStatusAfterError:!0,showFileCounter:!0,fileCounterStyle:"). ",showProgress:!1,onSelect:function(e){return!0},onSubmit:function(e,r){},onSuccess:function(e,r,t){},onError:function(e,r,t){},deleteCallback:!1,afterUploadAll:!1,uploadButtonClass:"upload",dragDropStr:"",abortStr:"Abort",cancelStr:"Cancel",deletelStr:"Delete",doneStr:"Done",multiDragErrorStr:"Multiple File Drag & Drop is not allowed.",extErrorStr:"",sizeErrorStr:"",uploadErrorStr:"Upload is not allowed",maxFileCountErrorStr:""},e);this.fileCounter=1,this.selectedFiles=0,this.fCounter=0,this.sCounter=0,this.tCounter=0;var s="upload-"+(new Date).getTime();this.formGroup=s,this.hide(),this.errorLog=S("
"),this.after(this.errorLog),this.responses=[],C.formdata||(p.dragDrop=!1),C.formdata||(p.multiple=!1);var c=this,i=S("
"+S(this).html()+"
");S(i).addClass(p.uploadButtonClass),function e(){if(S.fn.ajaxForm){if(p.dragDrop){var r=S('
');S(c).before(r),S(r).append(i),S(r).prepend(S(p.dragDropStr)),t=c,o=p,(a=r).on("dragenter",function(e){e.stopPropagation(),e.preventDefault(),S(this).css("border","2px dashed #ddd")}),a.on("dragover",function(e){e.stopPropagation(),e.preventDefault()}),a.on("drop",function(e){S(this).css("border","2px dashed #ddd"),e.preventDefault(),t.errorLog.html("");var r=e.originalEvent.dataTransfer.files;!o.multiple&&1"+o.multiDragErrorStr+"").appendTo(t.errorLog):0!=o.onSelect(r)&&m(o,t,r)}),S(document).on("dragenter",function(e){e.stopPropagation(),e.preventDefault()}),S(document).on("dragover",function(e){e.stopPropagation(),e.preventDefault(),a.css("border","2px dashed #ddd")}),S(document).on("drop",function(e){e.stopPropagation(),e.preventDefault(),a.css("border","2px dashed #ddd")})}else S(c).before(i);!function l(n,d,u,p){var e="ajax-upload-id-"+(new Date).getTime();var c=S("
");var r="";u.multiple&&(u.fileName.indexOf("[]")!=u.fileName.length-2&&(u.fileName+="[]"),r="");var t=S(r).appendTo(c);t.change(function(){n.errorLog.html("");u.allowedTypes.toLowerCase().split(",");var e=[];if(this.files){for(s=0;s"+u.extErrorStr+"").appendTo(n.errorLog));if(t.push({name:r,size:"NA"}),0==u.onSelect(t))return}if(g(u,n),p.unbind("click"),c.hide(),l(n,d,u,p),c.addClass(d),C.fileapi&&C.formdata){c.removeClass(d);var o=this.files;m(u,n,o)}else{for(var a="",s=0;s":a+=e[s]+"
",n.fileCounter++;if(-1!=u.maxFileCount&&n.selectedFiles+e.length>u.maxFileCount)return void(u.showError&&S("
"+u.maxFileCountErrorStr+"
").appendTo(n.errorLog));n.selectedFiles+=e.length;var i=new b(n,u);i.filename.html(a),w(c,u,i,e,n)}});c.css({margin:0,padding:0});var o=S(p).width()+10;10==o&&(o=120);var a=p.height()+10;10==a&&(a=35);p.css({position:"relative",overflow:"hidden",cursor:"default"});t.css({position:"absolute",cursor:"pointer",top:"0px",width:"100%",height:"34px",left:"0px","z-index":"100",opacity:"0.0",filter:"alpha(opacity=0)","-ms-filter":"alpha(opacity=0)","-khtml-opacity":"0.0","-moz-opacity":"0.0"});c.appendTo(p)}(c,s,p,i)}else window.setTimeout(e,10);var t,o,a}(),this.startUpload=function(){S("."+this.formGroup).each(function(e,r){S(this).is("form")&&S(this).submit()})},this.stopUpload=function(){S(".upload-red").each(function(e,r){S(this).hasClass(c.formGroup)&&S(this).click()})};var h=!(this.getResponses=function(){return this.responses});function f(e){var r,t,o=[],a=(o="string"==jQuery.type(e)?e.split("&"):S.param(e).split("&")).length,s=[];for(r=0;re.maxFileSize)e.showError&&S("
"+e.sizeErrorStr+"
").appendTo(r.errorLog);else if(-1!=e.maxFileCount&&r.selectedFiles>=e.maxFileCount)e.showError&&S("
"+e.maxFileCountErrorStr+"
").appendTo(r.errorLog);else{r.selectedFiles++;var a=e,s=new FormData,i=e.fileName.replace("[]","");s.append(i,t[o]);var l=e.formData;if(l)for(var n=f(l),d=0;d");c.appendTo("body");var h=[];h.push(t[o].name),w(c,a,u,h,r),r.fileCounter++}else e.showError&&S("
"+e.extErrorStr+"
").appendTo(r.errorLog)}function v(e,r,t){var o=r.allowedTypes.toLowerCase().split(","),a=t.split(".").pop().toLowerCase();return!("*"!=r.allowedTypes&&jQuery.inArray(a,o)<0)}function g(a,e){if(a.showFileCounter){var s=S(".upload-filename").length;e.fileCounter=s+1,S(".upload-filename").each(function(e,r){var t=S(this).html().split(a.fileCounterStyle),o=(parseInt(t[0]),s+a.fileCounterStyle+t[1]);S(this).html(o),s--})}}function b(e,r){return this.statusbar=S("
"),this.filename=S("
").appendTo(this.statusbar),this.progressDiv=S("
").appendTo(this.statusbar).hide(),this.progressbar=S("
").appendTo(this.progressDiv),this.abort=S("
"+r.abortStr+"
").appendTo(this.statusbar).hide(),this.cancel=S("
"+r.cancelStr+"
").appendTo(this.statusbar).hide(),this.done=S("
"+r.doneStr+"
").appendTo(this.statusbar).hide(),this.del=S("
"+r.deletelStr+"
").appendTo(this.statusbar).hide(),e.errorLog.after(this.statusbar),this}function w(i,l,n,d,u){var e={cache:!1,contentType:!1,processData:!1,forceSync:!1,data:l.formData,formData:l.fileData,dataType:l.returnType,beforeSubmit:function(e,r,t){if(0!=l.onSubmit.call(this,d)){var o=l.dynamicFormData();if(o){var a=f(o);if(a)for(var s=0;s"+l.uploadErrorStr+"
"),n.cancel.show(),i.remove(),n.cancel.click(function(){n.statusbar.remove()}),!1},beforeSend:function(e,r){n.progressDiv.show(),n.cancel.hide(),n.done.hide(),l.showAbort&&(n.abort.show(),n.abort.click(function(){e.abort(),u.selectedFiles-=d.length})),C.formdata?n.progressbar.width("1%"):n.progressbar.width("5%")},uploadProgress:function(e,r,t,o){98ERROR: "+t+"")):(n.statusbar.hide(),n.statusbar.remove()),u.selectedFiles-=d.length),i.remove(),u.fCounter+=d.length}};l.autoSubmit?i.ajaxSubmit(e):(l.showCancel&&(n.cancel.show(),n.cancel.click(function(){i.remove(),n.statusbar.remove(),u.selectedFiles-=d.length,g(l,u)})),i.ajaxForm(e))}return this}}(jQuery); \ No newline at end of file +!function(S){S.fn.ajaxForm;var C={};C.fileapi=void 0!==S("").get(0).files,C.formdata=void 0!==window.FormData,S.fn.uploadFile=function(e){var p=S.extend({url:"",method:"POST",enctype:"multipart/form-data",formData:null,returnType:null,allowedTypes:"*",fileName:"file",formData:{},dynamicFormData:function(){return{}},maxFileSize:-1,maxFileCount:-1,multiple:!0,dragDrop:!0,autoSubmit:!0,showCancel:!0,showAbort:!0,showDone:!0,showDelete:!1,showError:!0,showStatusAfterSuccess:!0,showStatusAfterError:!0,showFileCounter:!0,fileCounterStyle:"). ",showProgress:!1,onSelect:function(e){return!0},onSubmit:function(e,r){},onSuccess:function(e,r,t){},onError:function(e,r,t){},deleteCallback:!1,afterUploadAll:!1,uploadButtonClass:"upload",dragDropStr:"",abortStr:"Abort",cancelStr:"Cancel",deletelStr:"Delete",doneStr:"Done",multiDragErrorStr:"Multiple File Drag & Drop is not allowed.",extErrorStr:"",sizeErrorStr:"",uploadErrorStr:"Upload is not allowed",maxFileCountErrorStr:""},e);this.fileCounter=1,this.selectedFiles=0,this.fCounter=0,this.sCounter=0,this.tCounter=0;var s="upload-"+(new Date).getTime();this.formGroup=s,this.hide(),this.errorLog=S("
"),this.after(this.errorLog),this.responses=[],C.formdata||(p.dragDrop=!1),C.formdata||(p.multiple=!1);var c=this,i=S("
"+S(this).html()+"
");S(i).addClass(p.uploadButtonClass),function e(){if(S.fn.ajaxForm){if(p.dragDrop){var r=S('
');S(c).before(r),S(r).append(i),S(r).prepend(S(p.dragDropStr)),t=c,o=p,(a=r).on("dragenter",function(e){e.stopPropagation(),e.preventDefault(),S(this).css("border","2px dashed #ddd")}),a.on("dragover",function(e){e.stopPropagation(),e.preventDefault()}),a.on("drop",function(e){S(this).css("border","2px dashed #ddd"),e.preventDefault(),t.errorLog.html("");var r=e.originalEvent.dataTransfer.files;!o.multiple&&1"+o.multiDragErrorStr+"").appendTo(t.errorLog):0!=o.onSelect(r)&&m(o,t,r)}),S(document).on("dragenter",function(e){e.stopPropagation(),e.preventDefault()}),S(document).on("dragover",function(e){e.stopPropagation(),e.preventDefault(),a.css("border","2px dashed #ddd")}),S(document).on("drop",function(e){e.stopPropagation(),e.preventDefault(),a.css("border","2px dashed #ddd")})}else S(c).before(i);!function l(n,d,u,p){var e="ajax-upload-id-"+(new Date).getTime();var c=S("
");var r="";u.multiple&&(u.fileName.indexOf("[]")!=u.fileName.length-2&&(u.fileName+="[]"),r="");var t=S(r).appendTo(c);t.change(function(){n.errorLog.html("");u.allowedTypes.toLowerCase().split(",");var e=[];if(this.files){for(s=0;s"+u.extErrorStr+"").appendTo(n.errorLog));if(t.push({name:r,size:"NA"}),0==u.onSelect(t))return}if(g(u,n),p.unbind("click"),c.hide(),l(n,d,u,p),c.addClass(d),C.fileapi&&C.formdata){c.removeClass(d);var o=this.files;m(u,n,o)}else{for(var a="",s=0;s":a+=e[s]+"
",n.fileCounter++;if(-1!=u.maxFileCount&&n.selectedFiles+e.length>u.maxFileCount)return void(u.showError&&S("
"+u.maxFileCountErrorStr+"
").appendTo(n.errorLog));n.selectedFiles+=e.length;var i=new b(n,u);i.filename.html(a),w(c,u,i,e,n)}});c.css({margin:0,padding:0});var o=S(p).width()+10;10==o&&(o=120);var a=p.height()+10;10==a&&(a=35);p.css({position:"relative",overflow:"hidden",cursor:"default"});t.css({position:"absolute",cursor:"pointer",top:"0px",width:"100%",height:"34px",left:"0px","z-index":"100",opacity:"0.0",filter:"alpha(opacity=0)","-ms-filter":"alpha(opacity=0)","-khtml-opacity":"0.0","-moz-opacity":"0.0"});c.appendTo(p)}(c,s,p,i)}else window.setTimeout(e,10);var t,o,a}(),this.startUpload=function(){S("."+this.formGroup).each(function(e,r){S(this).is("form")&&S(this).submit()})},this.stopUpload=function(){S(".upload-red").each(function(e,r){S(this).hasClass(c.formGroup)&&S(this).click()})};var h=!(this.getResponses=function(){return this.responses});function f(e){var r,t,o=[],a=(o="string"==jQuery.type(e)?e.split("&"):S.param(e).split("&")).length,s=[];for(r=0;re.maxFileSize)e.showError&&S("
"+e.sizeErrorStr+"
").appendTo(r.errorLog);else if(-1!=e.maxFileCount&&r.selectedFiles>=e.maxFileCount)e.showError&&S("
"+e.maxFileCountErrorStr+"
").appendTo(r.errorLog);else{r.selectedFiles++;var a=e,s=new FormData,i=e.fileName.replace("[]","");s.append(i,t[o]);var l=e.formData;if(l)for(var n=f(l),d=0;d");c.appendTo("body");var h=[];h.push(t[o].name),w(c,a,u,h,r),r.fileCounter++}else e.showError&&S("
"+e.extErrorStr+"
").appendTo(r.errorLog)}function v(e,r,t){var o=r.allowedTypes.toLowerCase().split(","),a=t.split(".").pop().toLowerCase();return!("*"!=r.allowedTypes&&jQuery.inArray(a,o)<0)}function g(a,e){if(a.showFileCounter){var s=S(".upload-filename").length;e.fileCounter=s+1,S(".upload-filename").each(function(e,r){var t=S(this).html().split(a.fileCounterStyle),o=(parseInt(t[0]),s+a.fileCounterStyle+t[1]);S(this).html(o),s--})}}function b(e,r){return this.statusbar=S("
"),this.filename=S("
").appendTo(this.statusbar),this.progressDiv=S("
").appendTo(this.statusbar).hide(),this.progressbar=S("
").appendTo(this.progressDiv),this.abort=S("
"+r.abortStr+"
").appendTo(this.statusbar).hide(),this.cancel=S("
"+r.cancelStr+"
").appendTo(this.statusbar).hide(),this.done=S("
"+r.doneStr+"
").appendTo(this.statusbar).hide(),this.del=S("
"+r.deletelStr+"
").appendTo(this.statusbar).hide(),e.errorLog.after(this.statusbar),this}function w(i,l,n,d,u){var e={cache:!1,contentType:!1,processData:!1,forceSync:!1,data:l.formData,formData:l.fileData,dataType:l.returnType,beforeSubmit:function(e,r,t){if(0==l.onSubmit.call(this,d))return n.statusbar.append("
"+l.uploadErrorStr+"
"),n.cancel.show(),i.remove(),n.cancel.click(function(){n.statusbar.remove()}),!1;var o=l.dynamicFormData();if(o){var a=f(o);if(a)for(var s=0;sERROR: "+t+"")):(n.statusbar.hide(),n.statusbar.remove()),u.selectedFiles-=d.length),i.remove(),u.fCounter+=d.length}};l.autoSubmit?i.ajaxSubmit(e):(l.showCancel&&(n.cancel.show(),n.cancel.click(function(){i.remove(),n.statusbar.remove(),u.selectedFiles-=d.length,g(l,u)})),i.ajaxForm(e))}return this}}(jQuery); \ No newline at end of file diff --git a/assets/js/um-jquery-form.min.js b/assets/js/um-jquery-form.min.js index bdef9d18..ec3b11c9 100644 --- a/assets/js/um-jquery-form.min.js +++ b/assets/js/um-jquery-form.min.js @@ -1 +1 @@ -!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):e("undefined"!=typeof jQuery?jQuery:window.Zepto)}(function(X){"use strict";var b={};b.fileapi=void 0!==X("").get(0).files,b.formdata=void 0!==window.FormData;var C=!!X.fn.prop;function r(e){var t=e.data;e.isDefaultPrevented()||(e.preventDefault(),X(e.target).ajaxSubmit(t))}function a(e){var t=e.target,r=X(t);if(!r.is("[type=submit],[type=image]")){var a=r.closest("[type=submit]");if(0===a.length)return;t=a[0]}var n=this;if("image"==(n.clk=t).type)if(void 0!==e.offsetX)n.clk_x=e.offsetX,n.clk_y=e.offsetY;else if("function"==typeof X.fn.offset){var i=r.offset();n.clk_x=e.pageX-i.left,n.clk_y=e.pageY-i.top}else n.clk_x=e.pageX-t.offsetLeft,n.clk_y=e.pageY-t.offsetTop;setTimeout(function(){n.clk=n.clk_x=n.clk_y=null},100)}function _(){if(X.fn.ajaxSubmit.debug){var e="[jquery.form] "+Array.prototype.join.call(arguments,"");window.console&&window.console.log?window.console.log(e):window.opera&&window.opera.postError&&window.opera.postError(e)}}X.fn.attr2=function(){if(!C)return this.attr.apply(this,arguments);var e=this.prop.apply(this,arguments);return e&&e.jquery||"string"==typeof e?e:this.attr.apply(this,arguments)},X.fn.ajaxSubmit=function(E){if(!this.length)return _("ajaxSubmit: skipping submit process - no element selected"),this;var M,e,t,F=this;"function"==typeof E?E={success:E}:void 0===E&&(E={}),M=E.type||this.attr2("method"),(t=(t="string"==typeof(e=E.url||this.attr2("action"))?X.trim(e):"")||window.location.href||"")&&(t=(t.match(/^([^#]+)/)||[])[1]),E=X.extend(!0,{url:t,success:X.ajaxSettings.success,type:M||X.ajaxSettings.type,iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},E);var r={};if(this.trigger("form-pre-serialize",[this,E,r]),r.veto)return _("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),this;if(E.beforeSerialize&&!1===E.beforeSerialize(this,E))return _("ajaxSubmit: submit aborted via beforeSerialize callback"),this;var a=E.traditional;void 0===a&&(a=X.ajaxSettings.traditional);var n,O=[],i=this.formToArray(E.semantic,O);if(E.data&&(E.extraData=E.data,n=X.param(E.data,a)),E.beforeSubmit&&!1===E.beforeSubmit(i,this,E))return _("ajaxSubmit: submit aborted via beforeSubmit callback"),this;if(this.trigger("form-submit-validate",[i,this,E,r]),r.veto)return _("ajaxSubmit: submit vetoed via form-submit-validate trigger"),this;var o=X.param(i,a);n&&(o=o?o+"&"+n:n),"GET"==E.type.toUpperCase()?(E.url+=(0<=E.url.indexOf("?")?"&":"?")+o,E.data=null):E.data=o;var s=[];if(E.resetForm&&s.push(function(){F.resetForm()}),E.clearForm&&s.push(function(){F.clearForm(E.includeHidden)}),!E.dataType&&E.target){var u=E.success||function(){};s.push(function(e){var t=E.replaceTarget?"replaceWith":"html";X(E.target)[t](e).each(u,arguments)})}else E.success&&s.push(E.success);if(E.success=function(e,t,r){for(var a=E.context||this,n=0,i=s.length;n')).css({position:"absolute",top:"-1000px",left:"-1000px"}),p=m[0],d={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(e){var t="timeout"===e?"timeout":"aborted";_("aborting upload... "+t),this.aborted=1;try{p.contentWindow.document.execCommand&&p.contentWindow.document.execCommand("Stop")}catch(e){}m.attr("src",l.iframeSrc),d.error=t,l.error&&l.error.call(l.context,d,t,e),f&&X.event.trigger("ajaxError",[d,l,t]),l.complete&&l.complete.call(l.context,d,t)}},(f=l.global)&&0==X.active++&&X.event.trigger("ajaxStart"),f&&X.event.trigger("ajaxSend",[d,l]),l.beforeSend&&!1===l.beforeSend.call(l.context,d,l))return l.global&&X.active--,g.reject(),g;if(d.aborted)return g.reject(),g;(a=o.clk)&&(n=a.name)&&!a.disabled&&(l.extraData=l.extraData||{},l.extraData[n]=a.value,"image"==a.type&&(l.extraData[n+".x"]=o.clk_x,l.extraData[n+".y"]=o.clk_y));var x=1,b=2;function y(t){var r=null;try{t.contentWindow&&(r=t.contentWindow.document)}catch(e){_("cannot get iframe.contentWindow document: "+e)}if(r)return r;try{r=t.contentDocument?t.contentDocument:t.document}catch(e){_("cannot get iframe.contentDocument: "+e),r=t.document}return r}var s=X("meta[name=csrf-token]").attr("content"),u=X("meta[name=csrf-param]").attr("content");function c(){var e=F.attr2("target"),t=F.attr2("action"),r=F.attr("enctype")||F.attr("encoding")||"multipart/form-data";o.setAttribute("target",i),M&&!/post/i.test(M)||o.setAttribute("method","POST"),t!=l.url&&o.setAttribute("action",l.url),l.skipEncodingOverride||M&&!/post/i.test(M)||F.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"}),l.timeout&&(v=setTimeout(function(){h=!0,D(x)},l.timeout));var a=[];try{if(l.extraData)for(var n in l.extraData)l.extraData.hasOwnProperty(n)&&(X.isPlainObject(l.extraData[n])&&l.extraData[n].hasOwnProperty("name")&&l.extraData[n].hasOwnProperty("value")?a.push(X('').val(l.extraData[n].value).appendTo(o)[0]):a.push(X('').val(l.extraData[n]).appendTo(o)[0]));l.iframeTarget||m.appendTo("body"),p.attachEvent?p.attachEvent("onload",D):p.addEventListener("load",D,!1),setTimeout(function e(){try{var t=y(p).readyState;_("state = "+t),t&&"uninitialized"==t.toLowerCase()&&setTimeout(e,50)}catch(e){_("Server abort: ",e," (",e.name,")"),D(b),v&&clearTimeout(v),v=void 0}},15);try{o.submit()}catch(e){document.createElement("form").submit.apply(o)}}finally{o.setAttribute("action",t),o.setAttribute("enctype",r),e?o.setAttribute("target",e):F.removeAttr("target"),X(a).remove()}}u&&s&&(l.extraData=l.extraData||{},l.extraData[u]=s),l.forceSync?c():setTimeout(c,10);var T,j,w,S=50;function D(e){if(!d.aborted&&!w){if((j=y(p))||(_("cannot access response document"),e=b),e===x&&d)return d.abort("timeout"),void g.reject(d,"timeout");if(e==b&&d)return d.abort("server abort"),void g.reject(d,"error","server abort");if(j&&j.location.href!=l.iframeSrc||h){p.detachEvent?p.detachEvent("onload",D):p.removeEventListener("load",D,!1);var t,r="success";try{if(h)throw"timeout";var a="xml"==l.dataType||j.XMLDocument||X.isXMLDoc(j);if(_("isXml="+a),!a&&window.opera&&(null===j.body||!j.body.innerHTML)&&--S)return _("requeing onLoad callback, DOM not available"),void setTimeout(D,250);var n=j.body?j.body:j.documentElement;d.responseText=n?n.innerHTML:null,d.responseXML=j.XMLDocument?j.XMLDocument:j,a&&(l.dataType="xml"),d.getResponseHeader=function(e){return{"content-type":l.dataType}[e.toLowerCase()]},n&&(d.status=Number(n.getAttribute("status"))||d.status,d.statusText=n.getAttribute("statusText")||d.statusText);var i=(l.dataType||"").toLowerCase(),o=/(json|script|text)/.test(i);if(o||l.textarea){var s=j.getElementsByTagName("textarea")[0];if(s)d.responseText=s.value,d.status=Number(s.getAttribute("status"))||d.status,d.statusText=s.getAttribute("statusText")||d.statusText;else if(o){var u=j.getElementsByTagName("pre")[0],c=j.getElementsByTagName("body")[0];u?d.responseText=u.textContent?u.textContent:u.innerText:c&&(d.responseText=c.textContent?c.textContent:c.innerText)}}else"xml"==i&&!d.responseXML&&d.responseText&&(d.responseXML=k(d.responseText));try{T=L(d,i,l)}catch(e){r="parsererror",d.error=t=e||r}}catch(e){_("error caught: ",e),r="error",d.error=t=e||r}d.aborted&&(_("upload aborted"),r=null),d.status&&(r=200<=d.status&&d.status<300||304===d.status?"success":"error"),"success"===r?(l.success&&l.success.call(l.context,T,"success",d),g.resolve(d.responseText,"success",d),f&&X.event.trigger("ajaxSuccess",[d,l])):r&&(void 0===t&&(t=d.statusText),l.error&&l.error.call(l.context,d,r,t),g.reject(d,"error",t),f&&X.event.trigger("ajaxError",[d,l,t])),f&&X.event.trigger("ajaxComplete",[d,l]),f&&!--X.active&&X.event.trigger("ajaxStop"),l.complete&&l.complete.call(l.context,d,r),w=!0,l.timeout&&clearTimeout(v),setTimeout(function(){l.iframeTarget?m.attr("src",l.iframeSrc):m.remove(),d.responseXML=null},100)}}}var k=X.parseXML||function(e,t){return window.ActiveXObject?((t=new ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e)):t=(new DOMParser).parseFromString(e,"text/xml"),t&&t.documentElement&&"parsererror"!=t.documentElement.nodeName?t:null},A=X.parseJSON||function(e){return window.eval("("+e+")")},L=function(e,t,r){var a=e.getResponseHeader("content-type")||"",n="xml"===t||!t&&0<=a.indexOf("xml"),i=n?e.responseXML:e.responseText;return n&&"parsererror"===i.documentElement.nodeName&&X.error&&X.error("parsererror"),r&&r.dataFilter&&(i=r.dataFilter(i,t)),"string"==typeof i&&("json"===t||!t&&0<=a.indexOf("json")?i=A(i):("script"===t||!t&&0<=a.indexOf("javascript"))&&X.globalEval(i)),i};return g}},X.fn.ajaxForm=function(e){if((e=e||{}).delegation=e.delegation&&X.isFunction(X.fn.on),!e.delegation&&0===this.length){var t={s:this.selector,c:this.context};return!X.isReady&&t.s?(_("DOM not ready, queuing ajaxForm"),X(function(){X(t.s,t.c).ajaxForm(e)})):_("terminating; zero elements found by selector"+(X.isReady?"":" (DOM not ready)")),this}return e.delegation?(X(document).off("submit.form-plugin",this.selector,r).off("click.form-plugin",this.selector,a).on("submit.form-plugin",this.selector,e,r).on("click.form-plugin",this.selector,e,a),this):this.ajaxFormUnbind().bind("submit.form-plugin",e,r).bind("click.form-plugin",e,a)},X.fn.ajaxFormUnbind=function(){return this.unbind("submit.form-plugin click.form-plugin")},X.fn.formToArray=function(e,t){var r=[];if(0===this.length)return r;var a,n,i,o,s,u,c,l,f=this[0],m=this.attr("id"),p=e?f.getElementsByTagName("*"):f.elements;if(p&&!/MSIE [678]/.test(navigator.userAgent)&&(p=X(p).get()),m&&(a=X(':input[form="'+m+'"]').get()).length&&(p=(p||[]).concat(a)),!p||!p.length)return r;for(n=0,c=p.length;n").get(0).files,b.formdata=void 0!==window.FormData;var C=!!X.fn.prop;function r(e){var t=e.data;e.isDefaultPrevented()||(e.preventDefault(),X(e.target).ajaxSubmit(t))}function a(e){var t=e.target,r=X(t);if(!r.is("[type=submit],[type=image]")){var a=r.closest("[type=submit]");if(0===a.length)return;t=a[0]}var n=this;if("image"==(n.clk=t).type)if(void 0!==e.offsetX)n.clk_x=e.offsetX,n.clk_y=e.offsetY;else if("function"==typeof X.fn.offset){var i=r.offset();n.clk_x=e.pageX-i.left,n.clk_y=e.pageY-i.top}else n.clk_x=e.pageX-t.offsetLeft,n.clk_y=e.pageY-t.offsetTop;setTimeout(function(){n.clk=n.clk_x=n.clk_y=null},100)}function _(){if(X.fn.ajaxSubmit.debug){var e="[jquery.form] "+Array.prototype.join.call(arguments,"");window.console&&window.console.log?window.console.log(e):window.opera&&window.opera.postError&&window.opera.postError(e)}}X.fn.attr2=function(){if(!C)return this.attr.apply(this,arguments);var e=this.prop.apply(this,arguments);return e&&e.jquery||"string"==typeof e?e:this.attr.apply(this,arguments)},X.fn.ajaxSubmit=function(E){if(!this.length)return _("ajaxSubmit: skipping submit process - no element selected"),this;var M,e,t,F=this;"function"==typeof E?E={success:E}:void 0===E&&(E={}),M=E.type||this.attr2("method"),(t=(t="string"==typeof(e=E.url||this.attr2("action"))?X.trim(e):"")||window.location.href||"")&&(t=(t.match(/^([^#]+)/)||[])[1]),E=X.extend(!0,{url:t,success:X.ajaxSettings.success,type:M||X.ajaxSettings.type,iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},E);var r={};if(this.trigger("form-pre-serialize",[this,E,r]),r.veto)return _("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),this;if(E.beforeSerialize&&!1===E.beforeSerialize(this,E))return _("ajaxSubmit: submit aborted via beforeSerialize callback"),this;var a=E.traditional;void 0===a&&(a=X.ajaxSettings.traditional);var n,O=[],i=this.formToArray(E.semantic,O);if(E.data&&(E.extraData=E.data,n=X.param(E.data,a)),E.beforeSubmit&&!1===E.beforeSubmit(i,this,E))return _("ajaxSubmit: submit aborted via beforeSubmit callback"),this;if(this.trigger("form-submit-validate",[i,this,E,r]),r.veto)return _("ajaxSubmit: submit vetoed via form-submit-validate trigger"),this;var o=X.param(i,a);n&&(o=o?o+"&"+n:n),"GET"==E.type.toUpperCase()?(E.url+=(0<=E.url.indexOf("?")?"&":"?")+o,E.data=null):E.data=o;var s=[];if(E.resetForm&&s.push(function(){F.resetForm()}),E.clearForm&&s.push(function(){F.clearForm(E.includeHidden)}),!E.dataType&&E.target){var u=E.success||function(){};s.push(function(e){var t=E.replaceTarget?"replaceWith":"html";X(E.target)[t](e).each(u,arguments)})}else E.success&&s.push(E.success);if(E.success=function(e,t,r){for(var a=E.context||this,n=0,i=s.length;n')).css({position:"absolute",top:"-1000px",left:"-1000px"}),p=m[0],d={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(e){var t="timeout"===e?"timeout":"aborted";_("aborting upload... "+t),this.aborted=1;try{p.contentWindow.document.execCommand&&p.contentWindow.document.execCommand("Stop")}catch(e){}m.attr("src",l.iframeSrc),d.error=t,l.error&&l.error.call(l.context,d,t,e),f&&X.event.trigger("ajaxError",[d,l,t]),l.complete&&l.complete.call(l.context,d,t)}},(f=l.global)&&0==X.active++&&X.event.trigger("ajaxStart"),f&&X.event.trigger("ajaxSend",[d,l]),l.beforeSend&&!1===l.beforeSend.call(l.context,d,l))return l.global&&X.active--,g.reject(),g;if(d.aborted)return g.reject(),g;(a=o.clk)&&(n=a.name)&&!a.disabled&&(l.extraData=l.extraData||{},l.extraData[n]=a.value,"image"==a.type&&(l.extraData[n+".x"]=o.clk_x,l.extraData[n+".y"]=o.clk_y));var x=1,b=2;function y(t){var r=null;try{t.contentWindow&&(r=t.contentWindow.document)}catch(e){_("cannot get iframe.contentWindow document: "+e)}if(r)return r;try{r=t.contentDocument?t.contentDocument:t.document}catch(e){_("cannot get iframe.contentDocument: "+e),r=t.document}return r}var s=X("meta[name=csrf-token]").attr("content"),u=X("meta[name=csrf-param]").attr("content");function c(){var e=F.attr2("target"),t=F.attr2("action"),r=F.attr("enctype")||F.attr("encoding")||"multipart/form-data";o.setAttribute("target",i),M&&!/post/i.test(M)||o.setAttribute("method","POST"),t!=l.url&&o.setAttribute("action",l.url),l.skipEncodingOverride||M&&!/post/i.test(M)||F.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"}),l.timeout&&(v=setTimeout(function(){h=!0,D(x)},l.timeout));var a=[];try{if(l.extraData)for(var n in l.extraData)l.extraData.hasOwnProperty(n)&&(X.isPlainObject(l.extraData[n])&&l.extraData[n].hasOwnProperty("name")&&l.extraData[n].hasOwnProperty("value")?a.push(X('').val(l.extraData[n].value).appendTo(o)[0]):a.push(X('').val(l.extraData[n]).appendTo(o)[0]));l.iframeTarget||m.appendTo("body"),p.attachEvent?p.attachEvent("onload",D):p.addEventListener("load",D,!1),setTimeout(function e(){try{var t=y(p).readyState;_("state = "+t),t&&"uninitialized"==t.toLowerCase()&&setTimeout(e,50)}catch(e){_("Server abort: ",e," (",e.name,")"),D(b),v&&clearTimeout(v),v=void 0}},15);try{o.submit()}catch(e){document.createElement("form").submit.apply(o)}}finally{o.setAttribute("action",t),o.setAttribute("enctype",r),e?o.setAttribute("target",e):F.removeAttr("target"),X(a).remove()}}u&&s&&(l.extraData=l.extraData||{},l.extraData[u]=s),l.forceSync?c():setTimeout(c,10);var T,j,w,S=50;function D(e){if(!d.aborted&&!w){if((j=y(p))||(_("cannot access response document"),e=b),e===x&&d)return d.abort("timeout"),void g.reject(d,"timeout");if(e==b&&d)return d.abort("server abort"),void g.reject(d,"error","server abort");if(j&&j.location.href!=l.iframeSrc||h){p.detachEvent?p.detachEvent("onload",D):p.removeEventListener("load",D,!1);var t,r="success";try{if(h)throw"timeout";var a="xml"==l.dataType||j.XMLDocument||X.isXMLDoc(j);if(_("isXml="+a),!a&&window.opera&&(null===j.body||!j.body.innerHTML)&&--S)return _("requeing onLoad callback, DOM not available"),void setTimeout(D,250);var n=j.body?j.body:j.documentElement;d.responseText=n?n.innerHTML:null,d.responseXML=j.XMLDocument?j.XMLDocument:j,a&&(l.dataType="xml"),d.getResponseHeader=function(e){return{"content-type":l.dataType}[e.toLowerCase()]},n&&(d.status=Number(n.getAttribute("status"))||d.status,d.statusText=n.getAttribute("statusText")||d.statusText);var i=(l.dataType||"").toLowerCase(),o=/(json|script|text)/.test(i);if(o||l.textarea){var s=j.getElementsByTagName("textarea")[0];if(s)d.responseText=s.value,d.status=Number(s.getAttribute("status"))||d.status,d.statusText=s.getAttribute("statusText")||d.statusText;else if(o){var u=j.getElementsByTagName("pre")[0],c=j.getElementsByTagName("body")[0];u?d.responseText=u.textContent?u.textContent:u.innerText:c&&(d.responseText=c.textContent?c.textContent:c.innerText)}}else"xml"==i&&!d.responseXML&&d.responseText&&(d.responseXML=k(d.responseText));try{T=L(d,i,l)}catch(e){r="parsererror",d.error=t=e||r}}catch(e){_("error caught: ",e),r="error",d.error=t=e||r}d.aborted&&(_("upload aborted"),r=null),d.status&&(r=200<=d.status&&d.status<300||304===d.status?"success":"error"),"success"===r?(l.success&&l.success.call(l.context,T,"success",d),g.resolve(d.responseText,"success",d),f&&X.event.trigger("ajaxSuccess",[d,l])):r&&(void 0===t&&(t=d.statusText),l.error&&l.error.call(l.context,d,r,t),g.reject(d,"error",t),f&&X.event.trigger("ajaxError",[d,l,t])),f&&X.event.trigger("ajaxComplete",[d,l]),f&&!--X.active&&X.event.trigger("ajaxStop"),l.complete&&l.complete.call(l.context,d,r),w=!0,l.timeout&&clearTimeout(v),setTimeout(function(){l.iframeTarget?m.attr("src",l.iframeSrc):m.remove(),d.responseXML=null},100)}}}var k=X.parseXML||function(e,t){return window.ActiveXObject?((t=new ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e)):t=(new DOMParser).parseFromString(e,"text/xml"),t&&t.documentElement&&"parsererror"!=t.documentElement.nodeName?t:null},A=X.parseJSON||function(e){return window.eval("("+e+")")},L=function(e,t,r){var a=e.getResponseHeader("content-type")||"",n="xml"===t||!t&&0<=a.indexOf("xml"),i=n?e.responseXML:e.responseText;return n&&"parsererror"===i.documentElement.nodeName&&X.error&&X.error("parsererror"),r&&r.dataFilter&&(i=r.dataFilter(i,t)),"string"==typeof i&&("json"===t||!t&&0<=a.indexOf("json")?i=A(i):("script"===t||!t&&0<=a.indexOf("javascript"))&&X.globalEval(i)),i};return g}},X.fn.ajaxForm=function(e){if((e=e||{}).delegation=e.delegation&&X.isFunction(X.fn.on),e.delegation||0!==this.length)return e.delegation?(X(document).off("submit.form-plugin",this.selector,r).off("click.form-plugin",this.selector,a).on("submit.form-plugin",this.selector,e,r).on("click.form-plugin",this.selector,e,a),this):this.ajaxFormUnbind().bind("submit.form-plugin",e,r).bind("click.form-plugin",e,a);var t={s:this.selector,c:this.context};return!X.isReady&&t.s?(_("DOM not ready, queuing ajaxForm"),X(function(){X(t.s,t.c).ajaxForm(e)})):_("terminating; zero elements found by selector"+(X.isReady?"":" (DOM not ready)")),this},X.fn.ajaxFormUnbind=function(){return this.unbind("submit.form-plugin click.form-plugin")},X.fn.formToArray=function(e,t){var r=[];if(0===this.length)return r;var a,n,i,o,s,u,c,l,f=this[0],m=this.attr("id"),p=e?f.getElementsByTagName("*"):f.elements;if(p&&!/MSIE [678]/.test(navigator.userAgent)&&(p=X(p).get()),m&&(a=X(':input[form="'+m+'"]').get()).length&&(p=(p||[]).concat(a)),!p||!p.length)return r;for(n=0,c=p.length;n 0 ){ + jQuery(".um-s1").each(function () { + var select = jQuery(this); + if( select.val() === '' && select.attr('data-default') ) { + select.val(select.attr('data-default')); + } + }); + } + jQuery(".um-s1").select2({ allowClear: true, diff --git a/assets/js/um-scripts.min.js b/assets/js/um-scripts.min.js index 82a00880..23236125 100644 --- a/assets/js/um-scripts.min.js +++ b/assets/js/um-scripts.min.js @@ -1 +1 @@ -jQuery(document).ready(function(){jQuery(document).on("click",".um-dropdown a",function(e){return!1}),jQuery(document).on("click",".um-dropdown a.real_url",function(e){window.location=jQuery(this).attr("href")}),jQuery(document).on("click",".um-trigger-menu-on-click",function(e){return jQuery(".um-dropdown").hide(),menu=jQuery(this).find(".um-dropdown"),menu.show(),!1}),jQuery(document).on("click",".um-dropdown-hide",function(e){UM_hide_menus()}),jQuery(document).on("click","a.um-manual-trigger",function(){var e=jQuery(this).attr("data-child"),t=jQuery(this).attr("data-parent");jQuery(this).parents(t).find(e).trigger("click")}),jQuery(".um-tip-n").tipsy({gravity:"n",opacity:1,live:"a.live",offset:3}),jQuery(".um-tip-w").tipsy({gravity:"w",opacity:1,live:"a.live",offset:3}),jQuery(".um-tip-e").tipsy({gravity:"e",opacity:1,live:"a.live",offset:3}),jQuery(".um-tip-s").tipsy({gravity:"s",opacity:1,live:"a.live",offset:3}),jQuery(document).on("change",".um-field-area input[type=radio]",function(){var e=jQuery(this).parents(".um-field-area"),t=jQuery(this).parents("label");e.find(".um-field-radio").removeClass("active"),e.find(".um-field-radio").find("i").removeAttr("class").addClass("um-icon-android-radio-button-off"),t.addClass("active"),t.find("i").removeAttr("class").addClass("um-icon-android-radio-button-on")}),jQuery(document).on("change",".um-field-area input[type=checkbox]",function(){jQuery(this).parents(".um-field-area");var e=jQuery(this).parents("label");e.hasClass("active")?(e.removeClass("active"),e.find("i").removeAttr("class").addClass("um-icon-android-checkbox-outline-blank")):(e.addClass("active"),e.find("i").removeAttr("class").addClass("um-icon-android-checkbox-outline"))}),jQuery(".um-datepicker").each(function(){if(elem=jQuery(this),""!=elem.attr("data-disabled_weekdays"))var e=JSON.parse(elem.attr("data-disabled_weekdays"));else e=!1;var t=elem.attr("data-years"),a=elem.attr("data-date_min"),i=elem.attr("data-date_max"),r=a.split(","),n=i.split(","),u=r.length?new Date(r):null,o=r.length?new Date(n):null;if(u&&"Invalid Date"==u.toString()&&3==r.length){var d=r[1]+"/"+r[2]+"/"+r[0];u=new Date(Date.parse(d))}if(o&&"Invalid Date"==o.toString()&&3==n.length){var s=n[1]+"/"+n[2]+"/"+n[0];o=new Date(Date.parse(s))}elem.pickadate({selectYears:t,min:u,max:o,disable:e,format:elem.attr("data-format"),formatSubmit:"yyyy/mm/dd",hiddenName:!0,onOpen:function(){elem.blur()},onClose:function(){elem.blur()}})}),jQuery(".um-timepicker").each(function(){elem=jQuery(this),elem.pickatime({format:elem.attr("data-format"),interval:parseInt(elem.attr("data-intervals")),formatSubmit:"HH:i",hiddenName:!0,onOpen:function(){elem.blur()},onClose:function(){elem.blur()}})}),jQuery(".um-rating").um_raty({half:!1,starType:"i",number:function(){return jQuery(this).attr("data-number")},score:function(){return jQuery(this).attr("data-score")},scoreName:function(){return jQuery(this).attr("data-key")},hints:!1,click:function(e,t){live_field=this.id,live_value=e,um_conditional()}}),jQuery(".um-rating-readonly").um_raty({half:!1,starType:"i",number:function(){return jQuery(this).attr("data-number")},score:function(){return jQuery(this).attr("data-score")},scoreName:function(){return jQuery(this).attr("data-key")},hints:!1,readOnly:!0}),jQuery(document).on("click",".um .um-single-image-preview a.cancel",function(e){e.preventDefault();var t=jQuery(this).parents(".um-field"),a=jQuery(this).parents(".um-field").find(".um-single-image-preview img").attr("src");return t.find(".um-single-image-preview img").attr("src",""),t.find(".um-single-image-preview").hide(),t.find(".um-btn-auto-width").html("Upload"),t.find("input[type=hidden]").val("empty_file"),jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_remove_file",src:a}}),!1}),jQuery(document).on("click",".um .um-single-file-preview a.cancel",function(e){e.preventDefault();var t=jQuery(this).parents(".um-field"),a=jQuery(this).parents(".um-field").find(".um-single-fileinfo a").attr("href");return t.find(".um-single-file-preview").hide(),t.find(".um-btn-auto-width").html("Upload"),t.find("input[type=hidden]").val("empty_file"),jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_remove_file",src:a}}),!1}),jQuery(".um-s1,.um-s2").css({display:"block"}),jQuery(".um-s1").select2({allowClear:!0}),jQuery(".um-s2").select2({allowClear:!1,minimumResultsForSearch:10}),jQuery(document).on("click",".um-field-group-head:not(.disabled)",function(){var e=jQuery(this).parents(".um-field-group"),t=e.data("max_entries");e.find(".um-field-group-body").is(":hidden")?e.find(".um-field-group-body").show():e.find(".um-field-group-body:first").clone().appendTo(e),increase_id=0,e.find(".um-field-group-body").each(function(){increase_id++,jQuery(this).find("input").each(function(){var e=jQuery(this);e.attr("id",e.data("key")+"-"+increase_id),e.attr("name",e.data("key")+"-"+increase_id),e.parent().parent().find("label").attr("for",e.data("key")+"-"+increase_id)})}),0n[0].parent().height()?B.call(this):(G(e,i[0].toString(),{dir:"y",dur:0,overwrite:"none"}),t.contentReset.y=null):(B.call(this),"y"===o.axis?k.call(this):"yx"===o.axis&&t.overflowed[1]&&G(e,i[1].toString(),{dir:"x",dur:0,overwrite:"none"}))),"y"!==o.axis&&(t.overflowed[1]?n[1].width()>n[1].parent().width()?B.call(this):(G(e,i[1].toString(),{dir:"x",dur:0,overwrite:"none"}),t.contentReset.x=null):(B.call(this),"x"===o.axis?k.call(this):"yx"===o.axis&&t.overflowed[0]&&G(e,i[0].toString(),{dir:"y",dur:0,overwrite:"none"}))),r&&t&&(2===r&&o.callbacks.onImageLoad&&"function"==typeof o.callbacks.onImageLoad?o.callbacks.onImageLoad.call(this):3===r&&o.callbacks.onSelectorChange&&"function"==typeof o.callbacks.onSelectorChange?o.callbacks.onSelectorChange.call(this):o.callbacks.onUpdate&&"function"==typeof o.callbacks.onUpdate&&o.callbacks.onUpdate.call(this)),Q.call(this)}})},scrollTo:function(l,s){if(void 0!==l&&null!=l){var e=c.call(this);return E(e).each(function(){var e=E(this);if(e.data(W)){var t=e.data(W),o=t.opt,a={trigger:"external",scrollInertia:o.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},n=E.extend(!0,{},a,s),i=N.call(this,l),r=0
","
"],i="yx"===o.axis?"mCSB_vertical_horizontal":"x"===o.axis?"mCSB_horizontal":"mCSB_vertical",r="yx"===o.axis?n[0]+n[1]:"x"===o.axis?n[1]:n[0],l="yx"===o.axis?"
":"",s=o.autoHideScrollbar?" "+w[6]:"",c="x"!==o.axis&&"rtl"===t.langDir?" "+w[7]:"";o.setWidth&&e.css("width",o.setWidth),o.setHeight&&e.css("height",o.setHeight),o.setLeft="y"!==o.axis&&"rtl"===t.langDir?"989999px":o.setLeft,e.addClass(f+" _"+W+"_"+t.idx+s+c).wrapInner("
");var d=E("#mCSB_"+t.idx),u=E("#mCSB_"+t.idx+"_container");"y"===o.axis||o.advanced.autoExpandHorizontalScroll||u.css("width",g(u.children())),"outside"===o.scrollbarPosition?("static"===e.css("position")&&e.css("position","relative"),e.css("overflow","visible"),d.addClass("mCSB_outside").after(r)):(d.addClass("mCSB_inside").append(r),u.wrap(l)),_.call(this);var h=[E("#mCSB_"+t.idx+"_dragger_vertical"),E("#mCSB_"+t.idx+"_dragger_horizontal")];h[0].css("min-height",h[0].height()),h[1].css("min-width",h[1].width())},g=function(e){return Math.max.apply(Math,e.map(function(){return E(this).outerWidth(!0)}).get())},x=function(){var e=E(this),t=e.data(W),o=t.opt,a=E("#mCSB_"+t.idx+"_container");o.advanced.autoExpandHorizontalScroll&&"y"!==o.axis&&a.css({position:"absolute",width:"auto"}).wrap("
").css({width:Math.ceil(a[0].getBoundingClientRect().right+.4)-Math.floor(a[0].getBoundingClientRect().left),position:"relative"}).unwrap()},_=function(){var e=E(this),t=e.data(W),o=t.opt,a=E(".mCSB_"+t.idx+"_scrollbar:first"),n=ae(o.scrollButtons.tabindex)?"tabindex='"+o.scrollButtons.tabindex+"'":"",i=["","","",""],r=["x"===o.axis?i[2]:i[0],"x"===o.axis?i[3]:i[1],i[2],i[3]];o.scrollButtons.enable&&a.prepend(r[0]).append(r[1]).next(".mCSB_scrollTools").prepend(r[2]).append(r[3])},S=function(){var e=E(this),t=e.data(W),o=E("#mCSB_"+t.idx),a=e.css("max-height")||"none",n=-1!==a.indexOf("%"),i=e.css("box-sizing");if("none"!==a){var r=n?e.parent().height()*parseInt(a)/100:parseInt(a);"border-box"===i&&(r-=e.innerHeight()-e.height()+(e.outerHeight()-e.innerHeight())),o.css("max-height",Math.round(r))}},b=function(){var e=E(this),t=e.data(W),o=E("#mCSB_"+t.idx),a=E("#mCSB_"+t.idx+"_container"),n=[E("#mCSB_"+t.idx+"_dragger_vertical"),E("#mCSB_"+t.idx+"_dragger_horizontal")],i=[o.height()/a.outerHeight(!1),o.width()/a.outerWidth(!1)],r=[parseInt(n[0].css("min-height")),Math.round(i[0]*n[0].parent().height()),parseInt(n[1].css("min-width")),Math.round(i[1]*n[1].parent().width())],l=p&&r[1]o.height(),i>o.width()]},B=function(){var e=E(this),t=e.data(W),o=t.opt,a=E("#mCSB_"+t.idx),n=E("#mCSB_"+t.idx+"_container"),i=[E("#mCSB_"+t.idx+"_dragger_vertical"),E("#mCSB_"+t.idx+"_dragger_horizontal")];if(Z(e),("x"!==o.axis&&!t.overflowed[0]||"y"===o.axis&&t.overflowed[0])&&(i[0].add(n).css("top",0),G(e,"_resetY")),"y"!==o.axis&&!t.overflowed[1]||"x"===o.axis&&t.overflowed[1]){var r=dx=0;"rtl"===t.langDir&&(r=a.width()-n.outerWidth(!1),dx=Math.abs(r/t.scrollRatio.x)),n.css("left",r),i[1].css("left",dx),G(e,"_resetX")}},M=function(){var t,o=E(this),e=o.data(W),a=e.opt;e.bindEvents||(r.call(this),a.contentTouchScroll&&I.call(this),D.call(this),a.mouseWheel.enable&&function e(){t=setTimeout(function(){E.event.special.mousewheel?(clearTimeout(t),R.call(o[0])):e()},100)}(),X.call(this),U.call(this),a.advanced.autoScrollOnFocus&&Y.call(this),a.scrollButtons.enable&&j.call(this),a.keyboard.enable&&q.call(this),e.bindEvents=!0)},k=function(){var e=E(this),t=e.data(W),o=t.opt,a=W+"_"+t.idx,n=".mCSB_"+t.idx+"_scrollbar",i=E("#mCSB_"+t.idx+",#mCSB_"+t.idx+"_container,#mCSB_"+t.idx+"_container_wrapper,"+n+" ."+w[12]+",#mCSB_"+t.idx+"_dragger_vertical,#mCSB_"+t.idx+"_dragger_horizontal,"+n+">a"),r=E("#mCSB_"+t.idx+"_container");o.advanced.releaseDraggableSelectors&&i.add(E(o.advanced.releaseDraggableSelectors)),t.bindEvents&&(E(document).unbind("."+a),i.each(function(){E(this).unbind("."+a)}),clearTimeout(e[0]._focusTimeout),ee(e[0],"_focusTimeout"),clearTimeout(t.sequential.step),ee(t.sequential,"step"),clearTimeout(r[0].onCompleteTimeout),ee(r[0],"onCompleteTimeout"),t.bindEvents=!1)},O=function(e){var t=E(this),o=t.data(W),a=o.opt,n=E("#mCSB_"+o.idx+"_container_wrapper"),i=n.length?n:E("#mCSB_"+o.idx+"_container"),r=[E("#mCSB_"+o.idx+"_scrollbar_vertical"),E("#mCSB_"+o.idx+"_scrollbar_horizontal")],l=[r[0].find(".mCSB_dragger"),r[1].find(".mCSB_dragger")];"x"!==a.axis&&(o.overflowed[0]&&!e?(r[0].add(l[0]).add(r[0].children("a")).css("display","block"),i.removeClass(w[8]+" "+w[10])):(a.alwaysShowScrollbar?(2!==a.alwaysShowScrollbar&&l[0].css("display","none"),i.removeClass(w[10])):(r[0].css("display","none"),i.addClass(w[10])),i.addClass(w[8]))),"y"!==a.axis&&(o.overflowed[1]&&!e?(r[1].add(l[1]).add(r[1].children("a")).css("display","block"),i.removeClass(w[9]+" "+w[11])):(a.alwaysShowScrollbar?(2!==a.alwaysShowScrollbar&&l[1].css("display","none"),i.removeClass(w[11])):(r[1].css("display","none"),i.addClass(w[11])),i.addClass(w[9]))),o.overflowed[0]||o.overflowed[1]?t.removeClass(w[5]):t.addClass(w[5])},P=function(e){var t=e.type;switch(t){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return e.target.ownerDocument!==document?[e.originalEvent.screenY,e.originalEvent.screenX,!1]:[e.originalEvent.pageY,e.originalEvent.pageX,!1];case"touchstart":case"touchmove":case"touchend":var o=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a=e.originalEvent.touches.length||e.originalEvent.changedTouches.length;return e.target.ownerDocument!==document?[o.screenY,o.screenX,1-i*y.scrollRatio.y&&(2*R[3]-l*y.scrollRatio.x&&(2*R[2]d.height()&&n("on",40)),"y"!==l.axis&&r.overflowed[1]&&(a<0?n("on",37):a>d.width()&&n("on",39)))}}).bind("mouseup."+e,function(){L||(i&&(i=0,n("off",null)),A=!1)})},R=function(){function o(e,t){if(Z(d),!H(d,e.target)){var o="auto"!==h.mouseWheel.deltaFactor?parseInt(h.mouseWheel.deltaFactor):p&&e.deltaFactor<100?100:e.deltaFactor||100;if("x"===h.axis||"x"===h.mouseWheel.axis)var a="x",n=[Math.round(o*u.scrollRatio.x),parseInt(h.mouseWheel.scrollAmount)],i="auto"!==h.mouseWheel.scrollAmount?n[1]:n[0]>=f.width()?.9*f.width():n[0],r=Math.abs(E("#mCSB_"+u.idx+"_container")[0].offsetLeft),l=m[1][0].offsetLeft,s=m[1].parent().width()-m[1].width(),c=e.deltaX||e.deltaY||t;else var a="y",n=[Math.round(o*u.scrollRatio.y),parseInt(h.mouseWheel.scrollAmount)],i="auto"!==h.mouseWheel.scrollAmount?n[1]:n[0]>=f.height()?.9*f.height():n[0],r=Math.abs(E("#mCSB_"+u.idx+"_container")[0].offsetTop),l=m[0][0].offsetTop,s=m[0].parent().height()-m[0].height(),c=e.deltaY||t;"y"===a&&!u.overflowed[0]||"x"===a&&!u.overflowed[1]||(h.mouseWheel.invert&&(c=-c),h.mouseWheel.normalizeDelta&&(c=c<0?-1:1),(0o.offset().left?-1:1,i=Math.abs(s[0].offsetLeft)-.9*n*c.width()}else{if(!l.overflowed[0])return;var a="y",n=e.pageY>o.offset().top?-1:1,i=Math.abs(s[0].offsetTop)-.9*n*c.height()}G(r,i.toString(),{dir:a,scrollEasing:"mcsEaseInOut"})}})},Y=function(){var i=E(this),e=i.data(W),r=e.opt,t=W+"_"+e.idx,l=E("#mCSB_"+e.idx+"_container"),s=l.parent();l.bind("focusin."+t,function(){var n=E(document.activeElement),e=l.find(".mCustomScrollBox").length;n.is(r.advanced.autoScrollOnFocus)&&(Z(i),clearTimeout(i[0]._focusTimeout),i[0]._focusTimer=e?17*e:0,i[0]._focusTimeout=setTimeout(function(){var e=[ne(n)[0],ne(n)[1]],t=[l[0].offsetTop,l[0].offsetLeft],o=[0<=t[0]+e[0]&&t[0]+e[0]a");o.bind("mousedown."+e+" touchstart."+e+" pointerdown."+e+" MSPointerDown."+e+" mouseup."+e+" touchend."+e+" pointerup."+e+" MSPointerUp."+e+" mouseout."+e+" pointerout."+e+" MSPointerOut."+e+" click."+e,function(e){function t(e,t){r.scrollAmount=i.snapAmount||i.scrollButtons.scrollAmount,F(a,e,t)}if(e.preventDefault(),te(e)){var o=E(this).attr("class");switch(r.type=i.scrollButtons.scrollType,e.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if("stepped"===r.type)return;A=!0,n.tweenRunning=!1,t("on",o);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if("stepped"===r.type)return;A=!1,r.dir&&t("off",o);break;case"click":if("stepped"!==r.type||n.tweenRunning)return;t("on",o)}}})},q=function(){function t(e){function t(e,t){d.type=c.keyboard.scrollType,d.scrollAmount=c.snapAmount||c.keyboard.scrollAmount,"stepped"===d.type&&s.tweenRunning||F(l,e,t)}switch(e.type){case"blur":s.tweenRunning&&d.dir&&t("off",null);break;case"keydown":case"keyup":var o=e.keyCode?e.keyCode:e.which,a="on";if("x"!==c.axis&&(38===o||40===o)||"y"!==c.axis&&(37===o||39===o)){if((38===o||40===o)&&!s.overflowed[0]||(37===o||39===o)&&!s.overflowed[1])return;"keyup"===e.type&&(a="off"),E(document.activeElement).is(f)||(e.preventDefault(),e.stopImmediatePropagation(),t(a,o))}else if(33===o||34===o){if((s.overflowed[0]||s.overflowed[1])&&(e.preventDefault(),e.stopImmediatePropagation()),"keyup"===e.type){Z(l);var n=34===o?-1:1;if("x"===c.axis||"yx"===c.axis&&s.overflowed[1]&&!s.overflowed[0])var i="x",r=Math.abs(u[0].offsetLeft)-.9*n*h.width();else var i="y",r=Math.abs(u[0].offsetTop)-.9*n*h.height();G(l,r.toString(),{dir:i,scrollEasing:"mcsEaseInOut"})}}else if((35===o||36===o)&&!E(document.activeElement).is(f)&&((s.overflowed[0]||s.overflowed[1])&&(e.preventDefault(),e.stopImmediatePropagation()),"keyup"===e.type)){if("x"===c.axis||"yx"===c.axis&&s.overflowed[1]&&!s.overflowed[0])var i="x",r=35===o?Math.abs(h.width()-u.outerWidth(!1)):0;else var i="y",r=35===o?Math.abs(h.height()-u.outerHeight(!1)):0;G(l,r.toString(),{dir:i,scrollEasing:"mcsEaseInOut"})}}}var l=E(this),s=l.data(W),c=s.opt,d=s.sequential,e=W+"_"+s.idx,o=E("#mCSB_"+s.idx),u=E("#mCSB_"+s.idx+"_container"),h=u.parent(),f="input,textarea,select,datalist,keygen,[contenteditable='true']",a=u.find("iframe"),n=["blur."+e+" keydown."+e+" keyup."+e];a.length&&a.each(function(){E(this).load(function(){z(this)&&E(this.contentDocument||this.contentWindow.document).bind(n[0],function(e){t(e)})})}),o.attr("tabindex","0").bind(n[0],function(e){t(e)})},F=function(u,e,t,h,f){function m(e){var t="stepped"!==g.type,o=f||(e?t?x/1.5:_:1e3/60),a=e?t?7.5:40:2.5,n=[Math.abs(v[0].offsetTop),Math.abs(v[0].offsetLeft)],i=[10=w[1]?S=[w[0],w[1]]:S[0]=-S[0],n[0].mcs||(o(),t("onInit")&&c.callbacks.onInit.call(n[0])),clearTimeout(f[0].onCompleteTimeout),(s.tweenRunning||!(0===_&&0<=S[0]||_===w[0]&&S[0]<=w[0]))&&(J(v[0],x,Math.round(S[1]),u[1],i.scrollEasing),J(f[0],x,Math.round(S[0]),u[0],i.scrollEasing,i.overwrite,{onStart:function(){i.callbacks&&i.onStart&&!s.tweenRunning&&(t("onScrollStart")&&(o(),c.callbacks.onScrollStart.call(n[0])),s.tweenRunning=!0,T(v),s.cbOffsets=[c.callbacks.alwaysTriggerOffsets||_>=w[0]+b,c.callbacks.alwaysTriggerOffsets||_<=-C])},onUpdate:function(){i.callbacks&&i.onUpdate&&t("whileScrolling")&&(o(),c.callbacks.whileScrolling.call(n[0]))},onComplete:function(){if(i.callbacks&&i.onComplete){"yx"===c.axis&&clearTimeout(f[0].onCompleteTimeout);var e=f[0].idleTimer||0;f[0].onCompleteTimeout=setTimeout(function(){t("onScroll")&&(o(),c.callbacks.onScroll.call(n[0])),t("onTotalScroll")&&S[1]>=w[1]-y&&s.cbOffsets[0]&&(o(),c.callbacks.onTotalScroll.call(n[0])),t("onTotalScrollBack")&&S[1]<=B&&s.cbOffsets[1]&&(o(),c.callbacks.onTotalScrollBack.call(n[0])),s.tweenRunning=!1,f[0].idleTimer=0,T(v,"hide")},e)}}}))}},J=function(e,t,o,a,n,i,r){function l(){x.stop||(p||u.call(),p=K()-m,s(),p>=x.time&&(x.time=p>x.time?p+c-(p-x.time):p+c-1,x.timen[0].parent().height()?B.call(this):(G(e,i[0].toString(),{dir:"y",dur:0,overwrite:"none"}),t.contentReset.y=null):(B.call(this),"y"===o.axis?k.call(this):"yx"===o.axis&&t.overflowed[1]&&G(e,i[1].toString(),{dir:"x",dur:0,overwrite:"none"}))),"y"!==o.axis&&(t.overflowed[1]?n[1].width()>n[1].parent().width()?B.call(this):(G(e,i[1].toString(),{dir:"x",dur:0,overwrite:"none"}),t.contentReset.x=null):(B.call(this),"x"===o.axis?k.call(this):"yx"===o.axis&&t.overflowed[0]&&G(e,i[0].toString(),{dir:"y",dur:0,overwrite:"none"}))),r&&t&&(2===r&&o.callbacks.onImageLoad&&"function"==typeof o.callbacks.onImageLoad?o.callbacks.onImageLoad.call(this):3===r&&o.callbacks.onSelectorChange&&"function"==typeof o.callbacks.onSelectorChange?o.callbacks.onSelectorChange.call(this):o.callbacks.onUpdate&&"function"==typeof o.callbacks.onUpdate&&o.callbacks.onUpdate.call(this)),Q.call(this)}})},scrollTo:function(l,s){if(void 0!==l&&null!=l){var e=c.call(this);return L(e).each(function(){var e=L(this);if(e.data(A)){var t=e.data(A),o=t.opt,a={trigger:"external",scrollInertia:o.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},n=L.extend(!0,{},a,s),i=N.call(this,l),r=0
","
"],i="yx"===o.axis?"mCSB_vertical_horizontal":"x"===o.axis?"mCSB_horizontal":"mCSB_vertical",r="yx"===o.axis?n[0]+n[1]:"x"===o.axis?n[1]:n[0],l="yx"===o.axis?"
":"",s=o.autoHideScrollbar?" "+w[6]:"",c="x"!==o.axis&&"rtl"===t.langDir?" "+w[7]:"";o.setWidth&&e.css("width",o.setWidth),o.setHeight&&e.css("height",o.setHeight),o.setLeft="y"!==o.axis&&"rtl"===t.langDir?"989999px":o.setLeft,e.addClass(f+" _"+A+"_"+t.idx+s+c).wrapInner("
");var d=L("#mCSB_"+t.idx),u=L("#mCSB_"+t.idx+"_container");"y"===o.axis||o.advanced.autoExpandHorizontalScroll||u.css("width",g(u.children())),"outside"===o.scrollbarPosition?("static"===e.css("position")&&e.css("position","relative"),e.css("overflow","visible"),d.addClass("mCSB_outside").after(r)):(d.addClass("mCSB_inside").append(r),u.wrap(l)),_.call(this);var h=[L("#mCSB_"+t.idx+"_dragger_vertical"),L("#mCSB_"+t.idx+"_dragger_horizontal")];h[0].css("min-height",h[0].height()),h[1].css("min-width",h[1].width())},g=function(e){return Math.max.apply(Math,e.map(function(){return L(this).outerWidth(!0)}).get())},v=function(){var e=L(this),t=e.data(A),o=t.opt,a=L("#mCSB_"+t.idx+"_container");o.advanced.autoExpandHorizontalScroll&&"y"!==o.axis&&a.css({position:"absolute",width:"auto"}).wrap("
").css({width:Math.ceil(a[0].getBoundingClientRect().right+.4)-Math.floor(a[0].getBoundingClientRect().left),position:"relative"}).unwrap()},_=function(){var e=L(this),t=e.data(A),o=t.opt,a=L(".mCSB_"+t.idx+"_scrollbar:first"),n=ae(o.scrollButtons.tabindex)?"tabindex='"+o.scrollButtons.tabindex+"'":"",i=["","","",""],r=["x"===o.axis?i[2]:i[0],"x"===o.axis?i[3]:i[1],i[2],i[3]];o.scrollButtons.enable&&a.prepend(r[0]).append(r[1]).next(".mCSB_scrollTools").prepend(r[2]).append(r[3])},S=function(){var e=L(this),t=e.data(A),o=L("#mCSB_"+t.idx),a=e.css("max-height")||"none",n=-1!==a.indexOf("%"),i=e.css("box-sizing");if("none"!==a){var r=n?e.parent().height()*parseInt(a)/100:parseInt(a);"border-box"===i&&(r-=e.innerHeight()-e.height()+(e.outerHeight()-e.innerHeight())),o.css("max-height",Math.round(r))}},b=function(){var e=L(this),t=e.data(A),o=L("#mCSB_"+t.idx),a=L("#mCSB_"+t.idx+"_container"),n=[L("#mCSB_"+t.idx+"_dragger_vertical"),L("#mCSB_"+t.idx+"_dragger_horizontal")],i=[o.height()/a.outerHeight(!1),o.width()/a.outerWidth(!1)],r=[parseInt(n[0].css("min-height")),Math.round(i[0]*n[0].parent().height()),parseInt(n[1].css("min-width")),Math.round(i[1]*n[1].parent().width())],l=p&&r[1]o.height(),i>o.width()]},B=function(){var e=L(this),t=e.data(A),o=t.opt,a=L("#mCSB_"+t.idx),n=L("#mCSB_"+t.idx+"_container"),i=[L("#mCSB_"+t.idx+"_dragger_vertical"),L("#mCSB_"+t.idx+"_dragger_horizontal")];if(Z(e),("x"!==o.axis&&!t.overflowed[0]||"y"===o.axis&&t.overflowed[0])&&(i[0].add(n).css("top",0),G(e,"_resetY")),"y"!==o.axis&&!t.overflowed[1]||"x"===o.axis&&t.overflowed[1]){var r=dx=0;"rtl"===t.langDir&&(r=a.width()-n.outerWidth(!1),dx=Math.abs(r/t.scrollRatio.x)),n.css("left",r),i[1].css("left",dx),G(e,"_resetX")}},M=function(){var t,o=L(this),e=o.data(A),a=e.opt;e.bindEvents||(r.call(this),a.contentTouchScroll&&I.call(this),D.call(this),a.mouseWheel.enable&&function e(){t=setTimeout(function(){L.event.special.mousewheel?(clearTimeout(t),R.call(o[0])):e()},100)}(),X.call(this),U.call(this),a.advanced.autoScrollOnFocus&&Y.call(this),a.scrollButtons.enable&&j.call(this),a.keyboard.enable&&q.call(this),e.bindEvents=!0)},k=function(){var e=L(this),t=e.data(A),o=t.opt,a=A+"_"+t.idx,n=".mCSB_"+t.idx+"_scrollbar",i=L("#mCSB_"+t.idx+",#mCSB_"+t.idx+"_container,#mCSB_"+t.idx+"_container_wrapper,"+n+" ."+w[12]+",#mCSB_"+t.idx+"_dragger_vertical,#mCSB_"+t.idx+"_dragger_horizontal,"+n+">a"),r=L("#mCSB_"+t.idx+"_container");o.advanced.releaseDraggableSelectors&&i.add(L(o.advanced.releaseDraggableSelectors)),t.bindEvents&&(L(document).unbind("."+a),i.each(function(){L(this).unbind("."+a)}),clearTimeout(e[0]._focusTimeout),ee(e[0],"_focusTimeout"),clearTimeout(t.sequential.step),ee(t.sequential,"step"),clearTimeout(r[0].onCompleteTimeout),ee(r[0],"onCompleteTimeout"),t.bindEvents=!1)},O=function(e){var t=L(this),o=t.data(A),a=o.opt,n=L("#mCSB_"+o.idx+"_container_wrapper"),i=n.length?n:L("#mCSB_"+o.idx+"_container"),r=[L("#mCSB_"+o.idx+"_scrollbar_vertical"),L("#mCSB_"+o.idx+"_scrollbar_horizontal")],l=[r[0].find(".mCSB_dragger"),r[1].find(".mCSB_dragger")];"x"!==a.axis&&(o.overflowed[0]&&!e?(r[0].add(l[0]).add(r[0].children("a")).css("display","block"),i.removeClass(w[8]+" "+w[10])):(a.alwaysShowScrollbar?(2!==a.alwaysShowScrollbar&&l[0].css("display","none"),i.removeClass(w[10])):(r[0].css("display","none"),i.addClass(w[10])),i.addClass(w[8]))),"y"!==a.axis&&(o.overflowed[1]&&!e?(r[1].add(l[1]).add(r[1].children("a")).css("display","block"),i.removeClass(w[9]+" "+w[11])):(a.alwaysShowScrollbar?(2!==a.alwaysShowScrollbar&&l[1].css("display","none"),i.removeClass(w[11])):(r[1].css("display","none"),i.addClass(w[11])),i.addClass(w[9]))),o.overflowed[0]||o.overflowed[1]?t.removeClass(w[5]):t.addClass(w[5])},z=function(e){var t=e.type;switch(t){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return e.target.ownerDocument!==document?[e.originalEvent.screenY,e.originalEvent.screenX,!1]:[e.originalEvent.pageY,e.originalEvent.pageX,!1];case"touchstart":case"touchmove":case"touchend":var o=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a=e.originalEvent.touches.length||e.originalEvent.changedTouches.length;return e.target.ownerDocument!==document?[o.screenY,o.screenX,1-i*y.scrollRatio.y&&(2*E[3]-l*y.scrollRatio.x&&(2*E[2]d.height()&&n("on",40)),"y"!==l.axis&&r.overflowed[1]&&(a<0?n("on",37):a>d.width()&&n("on",39)))}}).bind("mouseup."+e,function(){W||(i&&(i=0,n("off",null)),P=!1)})},R=function(){function o(e,t){if(Z(d),!E(d,e.target)){var o="auto"!==h.mouseWheel.deltaFactor?parseInt(h.mouseWheel.deltaFactor):p&&e.deltaFactor<100?100:e.deltaFactor||100;if("x"===h.axis||"x"===h.mouseWheel.axis)var a="x",n=[Math.round(o*u.scrollRatio.x),parseInt(h.mouseWheel.scrollAmount)],i="auto"!==h.mouseWheel.scrollAmount?n[1]:n[0]>=f.width()?.9*f.width():n[0],r=Math.abs(L("#mCSB_"+u.idx+"_container")[0].offsetLeft),l=m[1][0].offsetLeft,s=m[1].parent().width()-m[1].width(),c=e.deltaX||e.deltaY||t;else var a="y",n=[Math.round(o*u.scrollRatio.y),parseInt(h.mouseWheel.scrollAmount)],i="auto"!==h.mouseWheel.scrollAmount?n[1]:n[0]>=f.height()?.9*f.height():n[0],r=Math.abs(L("#mCSB_"+u.idx+"_container")[0].offsetTop),l=m[0][0].offsetTop,s=m[0].parent().height()-m[0].height(),c=e.deltaY||t;"y"===a&&!u.overflowed[0]||"x"===a&&!u.overflowed[1]||(h.mouseWheel.invert&&(c=-c),h.mouseWheel.normalizeDelta&&(c=c<0?-1:1),(0o.offset().left?-1:1,i=Math.abs(s[0].offsetLeft)-.9*n*c.width()}else{if(!l.overflowed[0])return;var a="y",n=e.pageY>o.offset().top?-1:1,i=Math.abs(s[0].offsetTop)-.9*n*c.height()}G(r,i.toString(),{dir:a,scrollEasing:"mcsEaseInOut"})}})},Y=function(){var i=L(this),e=i.data(A),r=e.opt,t=A+"_"+e.idx,l=L("#mCSB_"+e.idx+"_container"),s=l.parent();l.bind("focusin."+t,function(){var n=L(document.activeElement),e=l.find(".mCustomScrollBox").length;n.is(r.advanced.autoScrollOnFocus)&&(Z(i),clearTimeout(i[0]._focusTimeout),i[0]._focusTimer=e?17*e:0,i[0]._focusTimeout=setTimeout(function(){var e=[ne(n)[0],ne(n)[1]],t=[l[0].offsetTop,l[0].offsetLeft],o=[0<=t[0]+e[0]&&t[0]+e[0]a");o.bind("mousedown."+e+" touchstart."+e+" pointerdown."+e+" MSPointerDown."+e+" mouseup."+e+" touchend."+e+" pointerup."+e+" MSPointerUp."+e+" mouseout."+e+" pointerout."+e+" MSPointerOut."+e+" click."+e,function(e){function t(e,t){r.scrollAmount=i.snapAmount||i.scrollButtons.scrollAmount,F(a,e,t)}if(e.preventDefault(),te(e)){var o=L(this).attr("class");switch(r.type=i.scrollButtons.scrollType,e.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if("stepped"===r.type)return;P=!0,n.tweenRunning=!1,t("on",o);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if("stepped"===r.type)return;P=!1,r.dir&&t("off",o);break;case"click":if("stepped"!==r.type||n.tweenRunning)return;t("on",o)}}})},q=function(){function t(e){function t(e,t){d.type=c.keyboard.scrollType,d.scrollAmount=c.snapAmount||c.keyboard.scrollAmount,"stepped"===d.type&&s.tweenRunning||F(l,e,t)}switch(e.type){case"blur":s.tweenRunning&&d.dir&&t("off",null);break;case"keydown":case"keyup":var o=e.keyCode?e.keyCode:e.which,a="on";if("x"!==c.axis&&(38===o||40===o)||"y"!==c.axis&&(37===o||39===o)){if((38===o||40===o)&&!s.overflowed[0]||(37===o||39===o)&&!s.overflowed[1])return;"keyup"===e.type&&(a="off"),L(document.activeElement).is(f)||(e.preventDefault(),e.stopImmediatePropagation(),t(a,o))}else if(33===o||34===o){if((s.overflowed[0]||s.overflowed[1])&&(e.preventDefault(),e.stopImmediatePropagation()),"keyup"===e.type){Z(l);var n=34===o?-1:1;if("x"===c.axis||"yx"===c.axis&&s.overflowed[1]&&!s.overflowed[0])var i="x",r=Math.abs(u[0].offsetLeft)-.9*n*h.width();else var i="y",r=Math.abs(u[0].offsetTop)-.9*n*h.height();G(l,r.toString(),{dir:i,scrollEasing:"mcsEaseInOut"})}}else if((35===o||36===o)&&!L(document.activeElement).is(f)&&((s.overflowed[0]||s.overflowed[1])&&(e.preventDefault(),e.stopImmediatePropagation()),"keyup"===e.type)){if("x"===c.axis||"yx"===c.axis&&s.overflowed[1]&&!s.overflowed[0])var i="x",r=35===o?Math.abs(h.width()-u.outerWidth(!1)):0;else var i="y",r=35===o?Math.abs(h.height()-u.outerHeight(!1)):0;G(l,r.toString(),{dir:i,scrollEasing:"mcsEaseInOut"})}}}var l=L(this),s=l.data(A),c=s.opt,d=s.sequential,e=A+"_"+s.idx,o=L("#mCSB_"+s.idx),u=L("#mCSB_"+s.idx+"_container"),h=u.parent(),f="input,textarea,select,datalist,keygen,[contenteditable='true']",a=u.find("iframe"),n=["blur."+e+" keydown."+e+" keyup."+e];a.length&&a.each(function(){L(this).load(function(){H(this)&&L(this.contentDocument||this.contentWindow.document).bind(n[0],function(e){t(e)})})}),o.attr("tabindex","0").bind(n[0],function(e){t(e)})},F=function(u,e,t,h,f){function m(e){var t="stepped"!==g.type,o=f||(e?t?x/1.5:_:1e3/60),a=e?t?7.5:40:2.5,n=[Math.abs(v[0].offsetTop),Math.abs(v[0].offsetLeft)],i=[10=w[1]?S=[w[0],w[1]]:S[0]=-S[0],n[0].mcs||(o(),t("onInit")&&c.callbacks.onInit.call(n[0])),clearTimeout(f[0].onCompleteTimeout),(s.tweenRunning||!(0===_&&0<=S[0]||_===w[0]&&S[0]<=w[0]))&&(J(v[0],x,Math.round(S[1]),u[1],i.scrollEasing),J(f[0],x,Math.round(S[0]),u[0],i.scrollEasing,i.overwrite,{onStart:function(){i.callbacks&&i.onStart&&!s.tweenRunning&&(t("onScrollStart")&&(o(),c.callbacks.onScrollStart.call(n[0])),s.tweenRunning=!0,T(v),s.cbOffsets=[c.callbacks.alwaysTriggerOffsets||_>=w[0]+b,c.callbacks.alwaysTriggerOffsets||_<=-C])},onUpdate:function(){i.callbacks&&i.onUpdate&&t("whileScrolling")&&(o(),c.callbacks.whileScrolling.call(n[0]))},onComplete:function(){if(i.callbacks&&i.onComplete){"yx"===c.axis&&clearTimeout(f[0].onCompleteTimeout);var e=f[0].idleTimer||0;f[0].onCompleteTimeout=setTimeout(function(){t("onScroll")&&(o(),c.callbacks.onScroll.call(n[0])),t("onTotalScroll")&&S[1]>=w[1]-y&&s.cbOffsets[0]&&(o(),c.callbacks.onTotalScroll.call(n[0])),t("onTotalScrollBack")&&S[1]<=B&&s.cbOffsets[1]&&(o(),c.callbacks.onTotalScrollBack.call(n[0])),s.tweenRunning=!1,f[0].idleTimer=0,T(v,"hide")},e)}}}))}},J=function(e,t,o,a,n,i,r){function l(){x.stop||(p||u.call(),p=K()-m,s(),p>=x.time&&(x.time=p>x.time?p+c-(p-x.time):p+c-1,x.time
'); jQuery('#' + id).prependTo('.um-admin-modal'); jQuery('#' + id).show(); jQuery('.um-admin-modal').show(); - + jQuery('.um-admin-modal-head').append(''); if ( ajax == true ) { @@ -34,23 +39,23 @@ function um_admin_new_modal( id, ajax, size ){ } else { um_admin_modal_responsive(); } - + } function um_admin_modal_ajaxcall( act_id, arg1, arg2, arg3 ) { - + var count = jQuery('.um-admin-builder .um-admin-drag-fld').length; in_row = ''; in_sub_row = ''; in_column = ''; in_group = ''; - + if ( jQuery('.um-col-demon-settings').data('in_column') ) { in_row = jQuery('.um-col-demon-settings').data('in_row'); in_sub_row = jQuery('.um-col-demon-settings').data('in_sub_row'); in_column = jQuery('.um-col-demon-settings').data('in_column'); in_group = jQuery('.um-col-demon-settings').data('in_group'); } - + jQuery.ajax({ url: wp.ajax.settings.url, type: 'POST', @@ -62,10 +67,10 @@ function um_admin_modal_ajaxcall( act_id, arg1, arg2, arg3 ) { success: function(data){ jQuery('.um-admin-modal').find('.um-admin-modal-body').html( data ); - + um_responsive(); - - um_admin_live_update_scripts(); + + um_admin_live_update_scripts(count); jQuery( "#_custom_dropdown_options_source" ).trigger('blur'); @@ -76,11 +81,11 @@ function um_admin_modal_ajaxcall( act_id, arg1, arg2, arg3 ) { tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor_edit'); jQuery('.um-admin-editor:visible').html( jQuery('.um-hidden-editor-edit').contents() ); tinyMCE.execCommand('mceAddEditor', true, 'um_editor_edit'); - + jQuery('.switch-html').trigger('click'); jQuery('.switch-html').trigger('click'); jQuery('.switch-tmce').trigger('click'); - + jQuery('#um_editor_edit_ifr').height(200); var editor = tinyMCE.get('um_editor_edit'); @@ -92,19 +97,19 @@ function um_admin_modal_ajaxcall( act_id, arg1, arg2, arg3 ) { tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor_new'); jQuery('.um-admin-editor:visible').html( jQuery('.um-hidden-editor-new').contents() ); tinyMCE.execCommand('mceAddEditor', true, 'um_editor_new'); - + jQuery('.switch-html').trigger('click'); jQuery('.switch-html').trigger('click'); jQuery('.switch-tmce').trigger('click'); - + jQuery('#um_editor_new_ifr').height(200); - + } - + } um_init_tooltips(); - + }, error: function(data){ @@ -121,23 +126,23 @@ function um_admin_modal_responsive() { function um_admin_remove_modal(){ if ( jQuery('.um-admin-editor:visible').length > 0 ) { - + if ( jQuery('.um-admin-modal:visible').find('form').parent().attr('id') == 'UM_edit_field' ) { - + tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor_edit'); jQuery('.um-hidden-editor-edit').html( jQuery('.um-admin-editor:visible').contents() ); tinyMCE.execCommand('mceAddEditor', true, 'um_editor_edit'); - + } else { - + tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor_new'); jQuery('.um-hidden-editor-new').html( jQuery('.um-admin-editor:visible').contents() ); tinyMCE.execCommand('mceAddEditor', true, 'um_editor_new'); - + } - + } - + jQuery('body').removeClass('um-admin-modal-open'); jQuery('.um-admin-modal div[id^="UM_"]').hide().appendTo('body'); jQuery('.um-admin-modal,.um-admin-overlay').remove(); @@ -165,7 +170,7 @@ function um_admin_modal_add_attr( id, value ) { **/ jQuery(document).ready(function() { - + /** disable link **/ @@ -173,11 +178,22 @@ jQuery(document).ready(function() { e.preventDefault(); return false; }); - + /** toggle area **/ jQuery(document).on('click', '.um-admin-btn-toggle a', function(e){ + + jQuery('.condition-wrap .um-admin-cur-condition').each(function () { + var cond_operator = jQuery(this).find('[id^="_conditional_operator"]').val(); + var cond_value = jQuery(this).find('[id^="_conditional_value"]'); + if( cond_operator === 'empty' || cond_operator === 'not empty' ){ + cond_value.attr('disabled','disabled'); + } else { + cond_value.removeAttr('disabled'); + } + }); + var content = jQuery(this).parent().find('.um-admin-btn-content'); var link = jQuery(this); if ( content.is(':hidden') ) { @@ -192,73 +208,128 @@ jQuery(document).ready(function() { um_admin_modal_responsive(); }); - + /** + check if empty/not empty + **/ + jQuery(document).on('change', 'select[id^="_conditional_operator"]', function(){ + var cond_operator = jQuery(this).val(); + var cond_value = jQuery(this).closest('.um-admin-cur-condition').find('[id^="_conditional_value"]'); + if( cond_operator === 'empty' || cond_operator === 'not empty' ){ + cond_value.attr('disabled','disabled'); + } else { + cond_value.removeAttr('disabled'); + } + }); /** clone a condition **/ jQuery(document).on('click', '.um-admin-new-condition', function() { - if ( jQuery(this).hasClass('disabled') ) - return false; + if ( jQuery(this).hasClass('disabled') ) + return false; - var content = jQuery(this).parents('.um-admin-btn-content'), - length = content.find('.um-admin-cur-condition').length; + var content = jQuery(this).parents('.um-admin-btn-content'), + length = content.find('.um-admin-cur-condition').length; - if ( length < 5 ) { - //content.find('select').select2('destroy'); + if ( length < 5 ) { - var template = jQuery('.um-admin-btn-content').find('.um-admin-cur-condition-template').clone(); - template.find('input[type=text]').val(''); - template.find('select').val(''); + if( jQuery('#UM_add_field .um-admin-btn-content .um-admin-cur-condition-template').length>0 ){ + var template = jQuery('#UM_add_field .um-admin-btn-content').find('.um-admin-cur-condition-template').clone(); + } else { + var template = jQuery('#UM_edit_field .um-admin-btn-content').find('.um-admin-cur-condition-template').clone(); + } - template.appendTo( content ); - jQuery(template).removeClass("um-admin-cur-condition-template"); - jQuery(template).addClass("um-admin-cur-condition"); + template.find('input[type=text]').val(''); + template.find('select').val(''); - um_admin_live_update_scripts(); - um_admin_modal_responsive(); - } else { - jQuery(this).addClass('disabled'); - alert( 'You already have 5 rules' ); - } - //need fields refactor + if ( jQuery(this).hasClass('um-admin-new-condition-compare-and') ){ + + template.find('#_conditional_compare').val('and'); + var group = jQuery(this).prev('.um-admin-cur-condition').find('[id^="_conditional_group"]').val(); + + template.find('#_conditional_group').val(group); + var templatehtml = template.html(); + template.insertBefore( jQuery(this) ); + + } else { + + template.find('#_conditional_compare').val('or'); + var group = jQuery('.condition-wrap .um-admin-cur-condition').last().find('[id^="_conditional_group"]').val(); + template.find('#_conditional_group').val(parseInt(group)+1); + var button = jQuery('.um-admin-new-condition-compare-and:first').clone(); + jQuery('
').insertBefore( jQuery(this) ); + template.insertBefore( jQuery(this) ); + button.addClass('for-remove-on-reset').insertBefore( jQuery(this) ); + + } + + jQuery(template).removeClass("um-admin-cur-condition-template"); + jQuery(template).addClass("um-admin-cur-condition"); + + um_admin_live_update_scripts(); + um_admin_modal_responsive(); + } else { + jQuery(this).addClass('disabled'); + alert( 'You already have 5 rules' ); + } + //need fields refactor var conditions = jQuery('.um-admin-cur-condition'); - jQuery(conditions).each( function ( i ) { - id = i === 0 ? '' : i; - jQuery( this ).find('[id^="_conditional_action"]').attr('name', '_conditional_action' + id); - jQuery( this ).find('[id^="_conditional_action"]').attr('id', '_conditional_action' + id); - jQuery( this ).find('[id^="_conditional_field"]').attr('name', '_conditional_field' + id); - jQuery( this ).find('[id^="_conditional_field"]').attr('id', '_conditional_field' + id); - jQuery( this ).find('[id^="_conditional_operator"]').attr('name', '_conditional_operator' + id); - jQuery( this ).find('[id^="_conditional_operator"]').attr('id', '_conditional_operator' + id); - jQuery( this ).find('[id^="_conditional_value"]').attr('name', '_conditional_value' + id); - jQuery( this ).find('[id^="_conditional_value"]').attr('id', '_conditional_value' + id); + + jQuery(conditions).each( function ( i ) { + // var value = jQuery( this ) + + id = i === 0 ? '' : i; + jQuery( this ).find('[id^="_conditional_action"]').attr('name', '_conditional_action' + id); + jQuery( this ).find('[id^="_conditional_action"]').attr('id', '_conditional_action' + id); + jQuery( this ).find('[id^="_conditional_field"]').attr('name', '_conditional_field' + id); + jQuery( this ).find('[id^="_conditional_field"]').attr('id', '_conditional_field' + id); + jQuery( this ).find('[id^="_conditional_operator"]').attr('name', '_conditional_operator' + id); + jQuery( this ).find('[id^="_conditional_operator"]').attr('id', '_conditional_operator' + id); + jQuery( this ).find('[id^="_conditional_value"]').attr('name', '_conditional_value' + id); + jQuery( this ).find('[id^="_conditional_value"]').attr('id', '_conditional_value' + id); + jQuery( this ).find('[id^="_conditional_compare"]').attr('name', '_conditional_compare' + id); + jQuery( this ).find('[id^="_conditional_compare"]').attr('id', '_conditional_compare' + id); + jQuery( this ).find('[id^="_conditional_group"]').attr('name', '_conditional_group' + id); + jQuery( this ).find('[id^="_conditional_group"]').attr('id', '_conditional_group' + id); } ); }); - + /** reset conditions **/ jQuery(document).on('click', '.um-admin-reset-conditions a', function(){ - var content = jQuery(this).parents('.um-admin-btn-content'); - content.find('.um-admin-cur-condition').slice(1).remove(); - content.find('input[type=text]').val(''); - content.find('select').val(''); - jQuery('.um-admin-new-condition').removeClass('disabled'); - um_admin_live_update_scripts(); - um_admin_modal_responsive(); + var content = jQuery(this).parents('.um-admin-btn-content'); + content.find('.um-admin-cur-condition').slice(1).remove(); + content.find('input[type=text]').val(''); + content.find('select').val(''); + jQuery('.um-admin-new-condition').removeClass('disabled'); + jQuery('.condition-wrap hr').remove(); + jQuery('.condition-wrap .for-remove-on-reset').remove(); + + um_admin_live_update_scripts(); + um_admin_modal_responsive(); }); - + /** remove a condition **/ jQuery(document).on('click', '.um-admin-remove-condition', function(){ - var condition = jQuery(this).parents('.um-admin-cur-condition'); - jQuery('.um-admin-new-condition').removeClass('disabled'); - jQuery('.tipsy').remove(); - condition.remove(); + var condition = jQuery(this).parents('.um-admin-cur-condition'); + jQuery('.um-admin-new-condition').removeClass('disabled'); + jQuery('.tipsy').remove(); + var compare = condition.find('input[type=hidden]').val(); + if( compare == 'or' ){ + condition.next().find('input[type=hidden]').val(compare); + } + + if( condition.prev().is('hr') && condition.next().is('.um-admin-new-condition-compare-and') ){ + condition.next().remove(); + condition.prev().remove(); + } + condition.remove(); + //need fields refactor var conditions = jQuery('.um-admin-cur-condition'); jQuery(conditions).each( function ( i ) { @@ -271,48 +342,52 @@ jQuery(document).ready(function() { jQuery( this ).find('[id^="_conditional_operator"]').attr('id', '_conditional_operator' + id); jQuery( this ).find('[id^="_conditional_value"]').attr('name', '_conditional_value' + id); jQuery( this ).find('[id^="_conditional_value"]').attr('id', '_conditional_value' + id); + jQuery( this ).find('[id^="_conditional_compare"]').attr('name', '_conditional_compare' + id); + jQuery( this ).find('[id^="_conditional_compare"]').attr('id', '_conditional_compare' + id); + jQuery( this ).find('[id^="_conditional_group"]').attr('name', '_conditional_group' + id); + jQuery( this ).find('[id^="_conditional_group"]').attr('id', '_conditional_group' + id); } ); - um_admin_live_update_scripts(); - um_admin_modal_responsive(); + um_admin_live_update_scripts(); + um_admin_modal_responsive(); }); - + /** remove modal via action **/ jQuery(document).on('click', '.um-admin-overlay, a[data-action="UM_remove_modal"]', function(){ um_admin_remove_modal(); }); - + /** fire new modal **/ jQuery(document).on('click', 'a[data-modal^="UM_"], span[data-modal^="UM_"]', function(e){ - + e.preventDefault(); var modal_id = jQuery(this).attr('data-modal'); if ( jQuery(this).attr('data-back') ) { - + jQuery('#UM_fonticons').find('a.um-admin-modal-back').attr("data-modal", jQuery(this).attr('data-back') ); var current_icon = jQuery( '#' + jQuery(this).attr('data-back') ).find('input#_icon').val(); if ( current_icon == '' ) { jQuery('#UM_fonticons').find('.um-admin-icons span').removeClass('highlighted'); } - + } - + if ( jQuery(this).data('dynamic-content') ) { um_admin_new_modal( modal_id, true, jQuery(this).data('modal-size') ); um_admin_modal_ajaxcall( jQuery(this).data('dynamic-content'), jQuery(this).data('arg1'), jQuery(this).data('arg2'), jQuery(this).data('arg3') ); } else { um_admin_new_modal( modal_id ); } - + return false; }); - + /** choose font icon **/ @@ -322,7 +397,7 @@ jQuery(document).ready(function() { jQuery(this).addClass('highlighted'); jQuery('#UM_fonticons').find('a.um-admin-modal-back').attr("data-code", icon); }); - + /** submit font icon **/ @@ -344,7 +419,7 @@ jQuery(document).ready(function() { um_admin_remove_modal(); } }); - + /** restore font icon **/ @@ -359,7 +434,7 @@ jQuery(document).ready(function() { element.find('.um-admin-icon-value').html('No Icon'); jQuery(this).hide(); }); - + /** search font icons **/ @@ -373,14 +448,14 @@ jQuery(document).ready(function() { um_admin_modal_responsive(); }); - + /** * Retrieve options from a callback function */ jQuery(document).on('blur',"#_custom_dropdown_options_source", function(){ var me = jQuery(this); var _options = jQuery('textarea[id=_options]'); - + if( me.val() != '' ){ var um_option_callback = me.val(); jQuery.ajax({ @@ -388,17 +463,17 @@ jQuery(document).ready(function() { type: 'POST', data: { action:'populate_dropdown_options',um_option_callback: um_option_callback }, complete: function(){ - + }, success: function( response ){ var arr_opts = []; - + for (var key in response.data ){ arr_opts.push( response.data[ key ] ); } _options.val( arr_opts.join('\n') ); - + } }); } diff --git a/includes/admin/core/class-admin-builder.php b/includes/admin/core/class-admin-builder.php index 366e52e3..7f280250 100644 --- a/includes/admin/core/class-admin-builder.php +++ b/includes/admin/core/class-admin-builder.php @@ -168,27 +168,27 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) { unset( $array['conditions'] ); if ( isset($array['conditional_field']) && !empty( $array['conditional_action'] ) && !empty( $array['conditional_operator'] ) ) { $array['conditional_value'] = isset( $array['conditional_value'] ) ? $array['conditional_value'] : ''; - $array['conditions'][] = array( $array['conditional_action'], $array['conditional_field'], $array['conditional_operator'], $array['conditional_value'] ); + $array['conditions'][] = array( $array['conditional_action'], $array['conditional_field'], $array['conditional_operator'], $array['conditional_value'], $array['conditional_compare'], $array['conditional_group'] ); } if ( isset($array['conditional_field1']) && !empty( $array['conditional_action1'] ) && !empty( $array['conditional_operator1'] ) ) { $array['conditional_value1'] = isset( $array['conditional_value1'] ) ? $array['conditional_value1'] : ''; - $array['conditions'][] = array( $array['conditional_action1'], $array['conditional_field1'], $array['conditional_operator1'], $array['conditional_value1'] ); + $array['conditions'][] = array( $array['conditional_action1'], $array['conditional_field1'], $array['conditional_operator1'], $array['conditional_value1'], $array['conditional_compare1'], $array['conditional_group1'] ); } if ( isset($array['conditional_field2']) && !empty( $array['conditional_action2'] ) && !empty( $array['conditional_operator2'] ) ) { $array['conditional_value2'] = isset( $array['conditional_value2'] ) ? $array['conditional_value2'] : ''; - $array['conditions'][] = array( $array['conditional_action2'], $array['conditional_field2'], $array['conditional_operator2'], $array['conditional_value2'] ); + $array['conditions'][] = array( $array['conditional_action2'], $array['conditional_field2'], $array['conditional_operator2'], $array['conditional_value2'], $array['conditional_compare2'], $array['conditional_group2'] ); } if ( isset($array['conditional_field3']) && !empty( $array['conditional_action3'] ) && !empty( $array['conditional_operator3'] ) ) { $array['conditional_value3'] = isset( $array['conditional_value3'] ) ? $array['conditional_value3'] : ''; - $array['conditions'][] = array( $array['conditional_action3'], $array['conditional_field3'], $array['conditional_operator3'], $array['conditional_value3'] ); + $array['conditions'][] = array( $array['conditional_action3'], $array['conditional_field3'], $array['conditional_operator3'], $array['conditional_value3'], $array['conditional_compare3'], $array['conditional_group3'] ); } if ( isset($array['conditional_field4']) && !empty( $array['conditional_action4'] ) && !empty( $array['conditional_operator4'] ) ) { $array['conditional_value4'] = isset( $array['conditional_value4'] ) ? $array['conditional_value4'] : ''; - $array['conditions'][] = array( $array['conditional_action4'], $array['conditional_field4'], $array['conditional_operator4'], $array['conditional_value4'] ); + $array['conditions'][] = array( $array['conditional_action4'], $array['conditional_field4'], $array['conditional_operator4'], $array['conditional_value4'], $array['conditional_compare4'], $array['conditional_group4'] ); } return $array; @@ -236,52 +236,65 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) { field_input( '_conditional_field', $form_id ); ?> field_input( '_conditional_operator', $form_id ); ?> field_input( '_conditional_value', $form_id ); ?> + field_input( '_conditional_compare', $form_id ); ?> + field_input( '_conditional_group', $form_id ); ?>

-

+

*/ ?>

+
+ $arr ) { - foreach ( $edit_array['conditions'] as $k => $arr ) { + if ( $k == 0 ) $k = ''; ?> + + - if ( $k == 0 ) $k = ''; ?> +
+ +
-
+ field_input( '_conditional_action' . $k, $form_id ); ?> + field_input( '_conditional_field' . $k , $form_id ); ?> + field_input( '_conditional_operator' . $k, $form_id ); ?> + field_input( '_conditional_value' . $k, $form_id ); ?> + field_input( '_conditional_compare' . $k, $form_id ); ?> + field_input( '_conditional_group' . $k, $form_id ); ?> - field_input( '_conditional_action' . $k, $form_id ); ?> - field_input( '_conditional_field' . $k , $form_id ); ?> - field_input( '_conditional_operator' . $k, $form_id ); ?> - field_input( '_conditional_value' . $k, $form_id ); ?> +

+ +
+
+ + +
+ + field_input( '_conditional_action', $form_id ); ?> + field_input( '_conditional_field', $form_id ); ?> + field_input( '_conditional_operator', $form_id ); ?> + field_input( '_conditional_value', $form_id ); ?> + field_input( '_conditional_compare', $form_id ); ?> + field_input( '_conditional_group', $form_id ); ?>

-
-
+
+
- + + - } else { ?> - -
- - field_input( '_conditional_action', $form_id ); ?> - field_input( '_conditional_field', $form_id ); ?> - field_input( '_conditional_operator', $form_id ); ?> - field_input( '_conditional_value', $form_id ); ?> - -

- -
-
- - -
+
+
form_data = $data; + return $this; + } + + /** * Render form * @@ -247,7 +253,6 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) { $html .= call_user_func( array( &$this, 'render_' . $data['type'] ), $data ); } else { - $html .= $this->render_field_by_hook( $data ); } @@ -304,6 +309,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) { $for_attr = ' for="' . $id . '" '; $label = $data['label']; + if ( isset( $data['required'] ) && $data['required'] ) + $label = $label . '*'; + $tooltip = ! empty( $data['tooltip'] ) ? UM()->tooltip( $data['tooltip'], false, false ) : ''; return ""; diff --git a/includes/admin/core/class-admin-metabox.php b/includes/admin/core/class-admin-metabox.php index 5aabaee3..f9440548 100644 --- a/includes/admin/core/class-admin-metabox.php +++ b/includes/admin/core/class-admin-metabox.php @@ -1346,7 +1346,30 @@ if ( ! class_exists( 'um\admin\core\Admin_Metabox' ) ) {

+ +

+ +

+ +

+ +

classes['admin_forms_' . $data['class']] ) ) { $this->classes['admin_forms_' . $data['class']] = new um\admin\core\Admin_Forms( $data ); } @@ -869,7 +869,7 @@ if ( ! class_exists( 'UM' ) ) { * @param $data array * @return um\admin\core\Admin_Forms_Settings() */ - function admin_forms_settings( $data ) { + function admin_forms_settings( $data = false ) { if ( empty( $this->classes['admin_forms_settings_' . $data['class']] ) ) { $this->classes['admin_forms_settings_' . $data['class']] = new um\admin\core\Admin_Forms_Settings( $data ); } diff --git a/includes/core/class-builtin.php b/includes/core/class-builtin.php index 6870eceb..b7c73ef1 100644 --- a/includes/core/class-builtin.php +++ b/includes/core/class-builtin.php @@ -1292,8 +1292,6 @@ if ( ! class_exists( 'um\core\Builtin' ) ) { $all = UM()->fields()->array_sort_by_column( $all, 'title'); - $all = array( 0 => '') + $all; - return $all; } diff --git a/includes/core/class-enqueue.php b/includes/core/class-enqueue.php index d35eb286..7b48796b 100644 --- a/includes/core/class-enqueue.php +++ b/includes/core/class-enqueue.php @@ -430,10 +430,10 @@ if ( ! class_exists( 'um\core\Enqueue' ) ) { /** * Load responsive styles */ - function load_responsive(){ + function load_responsive() { - wp_register_script('um_responsive', um_url . 'assets/js/um-responsive' . $this->suffix . '.js' ); - wp_enqueue_script('um_responsive'); + wp_register_script( 'um_responsive', um_url . 'assets/js/um-responsive' . $this->suffix . '.js', array( 'um_crop' ), ultimatemember_version, true ); + wp_enqueue_script( 'um_responsive' ); wp_register_style('um_responsive', um_url . 'assets/css/um-responsive.css', array( 'um_profile' ) ); wp_enqueue_style('um_responsive'); diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php index 56dbe7b8..a87f19bf 100644 --- a/includes/core/class-fields.php +++ b/includes/core/class-fields.php @@ -202,12 +202,16 @@ if ( ! class_exists( 'um\core\Fields' ) ) { unset( $condition_fields[ $key ][ $deleted_field ] ); unset( $condition_fields[ $key ][ 'conditional_operator' . $deleted_field_id ] ); unset( $condition_fields[ $key ][ 'conditional_value' . $deleted_field_id ] ); + unset( $condition_fields[ $key ][ 'conditional_compare' . $deleted_field_id ] ); + unset( $condition_fields[ $key ][ 'conditional_group' . $deleted_field_id ] ); unset( $condition_fields[ $key ]['conditions'][ $arr_id ] ); unset( $fields[ $key ][ 'conditional_action' . $deleted_field_id ] ); unset( $fields[ $key ][ $deleted_field ] ); unset( $fields[ $key ][ 'conditional_operator' . $deleted_field_id ] ); unset( $fields[ $key ][ 'conditional_value' . $deleted_field_id ] ); + unset( $fields[ $key ][ 'conditional_compare' . $deleted_field_id ] ); + unset( $fields[ $key ][ 'conditional_group' . $deleted_field_id ] ); unset( $fields[ $key ]['conditions'][ $arr_id ] ); } } @@ -259,6 +263,40 @@ if ( ! class_exists( 'um\core\Fields' ) ) { } } + $keys = array_keys($fields); + $last_key = end($keys); + unset($fields[$last_key]['conditions']); + unset($fields[$last_key]['conditional_action']); + unset($fields[$last_key]['conditional_action1']); + unset($fields[$last_key]['conditional_action2']); + unset($fields[$last_key]['conditional_action3']); + unset($fields[$last_key]['conditional_action4']); + unset($fields[$last_key]['conditional_field']); + unset($fields[$last_key]['conditional_field1']); + unset($fields[$last_key]['conditional_field2']); + unset($fields[$last_key]['conditional_field3']); + unset($fields[$last_key]['conditional_field4']); + unset($fields[$last_key]['conditional_operator']); + unset($fields[$last_key]['conditional_operator1']); + unset($fields[$last_key]['conditional_operator2']); + unset($fields[$last_key]['conditional_operator3']); + unset($fields[$last_key]['conditional_operator4']); + unset($fields[$last_key]['conditional_value']); + unset($fields[$last_key]['conditional_value1']); + unset($fields[$last_key]['conditional_value2']); + unset($fields[$last_key]['conditional_value3']); + unset($fields[$last_key]['conditional_value4']); + unset($fields[$last_key]['conditional_group']); + unset($fields[$last_key]['conditional_group1']); + unset($fields[$last_key]['conditional_group2']); + unset($fields[$last_key]['conditional_group3']); + unset($fields[$last_key]['conditional_group4']); + unset($fields[$last_key]['conditional_compare']); + unset($fields[$last_key]['conditional_compare1']); + unset($fields[$last_key]['conditional_compare2']); + unset($fields[$last_key]['conditional_compare3']); + unset($fields[$last_key]['conditional_compare4']); + // add field to form UM()->query()->update_attr( 'custom_fields', $form_id, $fields ); @@ -1245,9 +1283,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) { if (isset( $array['conditions'] ) && is_array( $array['conditions'] ) && !$this->viewing) { $array['conditional'] = ''; - foreach ($array['conditions'] as $cond_id => $cond) { - $array['conditional'] .= ' data-cond-' . $cond_id . '-action="' . $cond[0] . '" data-cond-' . $cond_id . '-field="' . $cond[1] . '" data-cond-' . $cond_id . '-operator="' . $cond[2] . '" data-cond-' . $cond_id . '-value="' . $cond[3] . '"'; - } + $cond_data = json_encode($array['conditions']); + $array['conditional'] .= " data-conds='".$cond_data."'"; $array['classes'] .= ' um-is-conditional'; @@ -2533,7 +2570,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) { $placeholder = strip_tags( $placeholder ); } - $output .= ''; /** * UM hook diff --git a/includes/core/um-actions-form.php b/includes/core/um-actions-form.php index 74d18759..d0983a3a 100644 --- a/includes/core/um-actions-form.php +++ b/includes/core/um-actions-form.php @@ -327,63 +327,63 @@ function um_submit_form_errors_hook_( $args ) { } } elseif ( $op == 'not empty' ) { if ( ! empty( $cond_value ) ) { - continue 2; + continue; } } elseif ( $op == 'equals to' ) { if ( $cond_value == $parent_value ) { - continue 2; + continue; } } elseif ( $op == 'not equals' ) { if ( $cond_value != $parent_value ) { - continue 2; + continue; } } elseif ( $op == 'greater than' ) { if ( $cond_value > $parent_value ) { - continue 2; + continue; } } elseif ( $op == 'less than' ) { if ( $cond_value < $parent_value ) { - continue 2; + continue; } } elseif ( $op == 'contains' ) { if ( is_string( $cond_value ) && strstr( $cond_value, $parent_value ) ) { - continue 2; + continue; } if( is_array( $cond_value ) && in_array( $parent_value, $cond_value ) ) { - continue 2; + continue; } } } elseif ( $visibility == 'show' ) { if ( $op == 'empty' ) { if ( ! empty( $cond_value ) ) { - continue 2; + continue; } } elseif ( $op == 'not empty' ) { if ( empty( $cond_value ) ) { - continue 2; + continue; } } elseif ( $op == 'equals to' ) { if ( $cond_value != $parent_value ) { - continue 2; + continue; } } elseif ( $op == 'not equals' ) { if ( $cond_value == $parent_value ) { - continue 2; + continue; } } elseif ( $op == 'greater than' ) { if ( $cond_value <= $parent_value ) { - continue 2; + continue; } } elseif ( $op == 'less than' ) { if ( $cond_value >= $parent_value ) { - continue 2; + continue; } } elseif ( $op == 'contains' ) { if ( is_string( $cond_value ) && ! strstr( $cond_value, $parent_value ) ) { - continue 2; + continue; } if( is_array( $cond_value ) && !in_array( $parent_value, $cond_value ) ) { - continue 2; + continue; } } } diff --git a/includes/core/um-filters-fields.php b/includes/core/um-filters-fields.php index d0018551..a7d5a43c 100644 --- a/includes/core/um-filters-fields.php +++ b/includes/core/um-filters-fields.php @@ -10,7 +10,6 @@ * @return string */ function um_edit_label_all_fields( $label, $data ) { - $asterisk = UM()->options()->get( 'form_asterisk' ); if ( $asterisk && isset( $data['required'] ) && $data['required'] == 1 ) $label = $label . '*'; diff --git a/includes/um-short-functions.php b/includes/um-short-functions.php index 7dfb0d46..b8e8e8c2 100644 --- a/includes/um-short-functions.php +++ b/includes/um-short-functions.php @@ -288,142 +288,288 @@ function um_user_ip() { * @return bool */ function um_field_conditions_are_met( $data ) { + + + if (!isset( $data['conditions'] )) return true; - $state = 1; + $state = ( $data['conditional_action'] == 'show' ) ? 1 : 0; - foreach ($data['conditions'] as $k => $arr) { - if ($arr[0] == 'show') { - $val = $arr[3]; - $op = $arr[2]; + $first_group = 0; + $state_array = array(); + $count = count($state_array); + foreach ($data['conditions'] as $k => $arr){ - if (strstr( $arr[1], 'role_' )) - $arr[1] = 'role'; + $val = $arr[3]; + $op = $arr[2]; - $field = um_profile( $arr[1] ); + if (strstr($arr[1], 'role_')) + $arr[1] = 'role'; - switch ($op) { - case 'equals to': + $field = um_profile($arr[1]); - $field = maybe_unserialize( $field ); - if (is_array( $field )) - $state = in_array( $val, $field ) ? 1 : 0; - else - $state = ( $field == $val ) ? 1 : 0; + if( $arr[5] != $first_group ){ - break; - case 'not equals': - $field = maybe_unserialize( $field ); + if ($arr[0] == 'show') { - if (is_array( $field )) - $state = !in_array( $val, $field ) ? 1 : 0; - else - $state = ( $field != $val ) ? 1 : 0; + switch ($op) { + case 'equals to': - break; - case 'empty': + $field = maybe_unserialize( $field ); - $state = ( !$field ) ? 1 : 0; + if (is_array( $field )) + $state = in_array( $val, $field ) ? 'show' : 'hide'; + else + $state = ( $field == $val ) ? 'show' : 'hide'; - break; - case 'not empty': + break; + case 'not equals': - $state = ( $field ) ? 1 : 0; + $field = maybe_unserialize( $field ); - break; - case 'greater than': - if ($field > $val) { - $state = 1; - } else { - $state = 0; - } - break; - case 'less than': - if ($field < $val) { - $state = 1; - } else { - $state = 0; - } - break; - case 'contains': - if (strstr( $field, $val )) { - $state = 1; - } else { - $state = 0; - } - break; - } - } else if ($arr[0] == 'hide') { + if (is_array( $field )) + $state = !in_array( $val, $field ) ? 'show' : 'hide'; + else + $state = ( $field != $val ) ? 'show' : 'hide'; - $state = 1; - $val = $arr[3]; - $op = $arr[2]; + break; + case 'empty': - if (strstr( $arr[1], 'role_' )) - $arr[1] = 'role'; + $state = ( !$field ) ? 'show' : 'hide'; - $field = um_profile( $arr[1] ); + break; + case 'not empty': - switch ($op) { - case 'equals to': + $state = ( $field ) ? 'show' : 'hide'; - $field = maybe_unserialize( $field ); + break; + case 'greater than': + if ($field > $val) { + $state = 'show'; + } else { + $state = 'hide'; + } + break; + case 'less than': + if ($field < $val) { + $state = 'show'; + } else { + $state = 'hide'; + } + break; + case 'contains': + if (strstr( $field, $val )) { + $state = 'show'; + } else { + $state = 'hide'; + } + break; + } + } else if ($arr[0] == 'hide') { - if (is_array( $field )) - $state = in_array( $val, $field ) ? 0 : 1; - else - $state = ( $field == $val ) ? 0 : 1; + switch ($op) { + case 'equals to': - break; - case 'not equals': + $field = maybe_unserialize( $field ); - $field = maybe_unserialize( $field ); + if (is_array( $field )) + $state = in_array( $val, $field ) ? 'hide' : 'show'; + else + $state = ( $field == $val ) ? 'hide' : 'show'; - if (is_array( $field )) - $state = !in_array( $val, $field ) ? 0 : 1; - else - $state = ( $field != $val ) ? 0 : 1; + break; + case 'not equals': - break; - case 'empty': + $field = maybe_unserialize( $field ); - $state = ( !$field ) ? 0 : 1; + if (is_array( $field )) + $state = !in_array( $val, $field ) ? 'hide' : 'show'; + else + $state = ( $field != $val ) ? 'hide' : 'show'; - break; - case 'not empty': + break; + case 'empty': - $state = ( $field ) ? 0 : 1; + $state = ( !$field ) ? 'hide' : 'show'; - break; - case 'greater than': - if ($field <= $val) { - $state = 0; - } else { - $state = 1; - } - break; - case 'less than': - if ($field >= $val) { - $state = 0; - } else { - $state = 1; - } - break; - case 'contains': - if (strstr( $field, $val )) { - $state = 0; - } else { - $state = 1; - } - break; - } - } - } + break; + case 'not empty': - return ( $state ) ? true : false; + $state = ( $field ) ? 'hide' : 'show'; + + break; + case 'greater than': + if ($field <= $val) { + $state = 'hide'; + } else { + $state = 'show'; + } + break; + case 'less than': + if ($field >= $val) { + $state = 'hide'; + } else { + $state = 'show'; + } + break; + case 'contains': + if (strstr( $field, $val )) { + $state = 'hide'; + } else { + $state = 'show'; + } + break; + } + } + $first_group++; + array_push($state_array, $state); + } else { + + if ($arr[0] == 'show') { + + switch ($op) { + case 'equals to': + + $field = maybe_unserialize( $field ); + + if (is_array( $field )) + $state = in_array( $val, $field ) ? 'show' : 'not_show'; + else + $state = ( $field == $val ) ? 'show' : 'not_show'; + + break; + case 'not equals': + + $field = maybe_unserialize( $field ); + + if (is_array( $field )) + $state = !in_array( $val, $field ) ? 'show' : 'not_show'; + else + $state = ( $field != $val ) ? 'show' : 'not_show'; + + break; + case 'empty': + + $state = ( !$field ) ? 'show' : 'not_show'; + + break; + case 'not empty': + + $state = ( $field ) ? 'show': 'not_show'; + + break; + case 'greater than': + if ($field > $val) { + $state = 'show'; + } else { + $state = 'not_show'; + } + break; + case 'less than': + if ($field < $val) { + $state = 'show'; + } else { + $state = 'not_show'; + } + break; + case 'contains': + if (strstr( $field, $val )) { + $state = 'show'; + } else { + $state = 'not_show'; + } + break; + } + } else if ($arr[0] == 'hide') { + + switch ($op) { + case 'equals to': + + $field = maybe_unserialize( $field ); + + if (is_array( $field )) + $state = in_array( $val, $field ) ? 'hide' : 'not_hide'; + else + $state = ( $field == $val ) ? 'hide' : 'not_hide'; + + break; + case 'not equals': + + $field = maybe_unserialize( $field ); + + if (is_array( $field )) + $state = !in_array( $val, $field ) ? 'hide' : 'not_hide'; + else + $state = ( $field != $val ) ? 'hide' : 'not_hide'; + + break; + case 'empty': + + $state = ( !$field ) ? 'hide' : 'not_hide'; + + break; + case 'not empty': + + $state = ( $field ) ? 'hide' : 'not_hide'; + + break; + case 'greater than': + if ($field <= $val) { + $state = 'hide'; + } else { + $state = 'not_hide'; + } + break; + case 'less than': + if ($field >= $val) { + $state = 'hide'; + } else { + $state = 'not_hide'; + } + break; + case 'contains': + if (strstr( $field, $val )) { + $state = 'hide'; + } else { + $state = 'not_hide'; + } + break; + } + } + if( isset($state_array[$count]) ){ + if( $state_array[$count] == 'show' || $state_array[$count] == 'not_hide' ){ + if ( $state == 'show' || $state == 'not_hide' ){ + $state_array[$count] = 'show'; + } else { + $state_array[$count] = 'hide'; + } + } else { + if ( $state == 'hide' || $state == 'not_show' ){ + $state_array[$count] = 'hide'; + } else { + $state_array[$count] = 'hide'; + } + } + } else { + if ( $state == 'show' || $state == 'not_hide' ){ + $state_array[$count] = 'show'; + } else { + $state_array[$count] = 'hide'; + } + } + } + + + } + $result = array_unique($state_array); + if( !in_array("show", $result) ){ + return $state = false; + } else { + return $state = true; + } } diff --git a/package.json b/package.json index eb279a8e..84fe1409 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,13 @@ "grunt-contrib-watch": "~0.6.1", "grunt-modernizr": "~0.6.0", "grunt-wp-assets": "~0.2.6", + "gulp": "^3.9.1", "gulp-rename": "^1.2.2", + "gulp-uglify": "^3.0.1", "load-grunt-tasks": "~1.0.0", "time-grunt": "~1.0.0" + }, + "dependencies": { + "gulp-install": "^1.1.0" } } diff --git a/templates/profile/comments-single.php b/templates/profile/comments-single.php index 7f48dc54..01588ecf 100644 --- a/templates/profile/comments-single.php +++ b/templates/profile/comments-single.php @@ -1,18 +1,28 @@ shortcodes()->loop as $comment ) { ?> - + comment_post_ID ); + if( $post_type == 'um_groups_discussion' ){ + $comment_id = $comment->comment_post_ID; + $group_id = get_post_meta( $comment_id, '_group_id', true); + $comment_title = get_the_title($group_id); + $link = site_url().'/groups/'.$comment_title.'/?tab=discussion'.'#commentid-'.$comment_id; + } else { + $comment_title = get_the_title($comment->comment_post_ID); + $link = get_permalink($comment->comment_post_ID); + } + ?>
- %2$s','ultimate-member'), get_permalink($comment->comment_post_ID), get_the_title($comment->comment_post_ID) ); ?> + %2$s','ultimate-member'), $link, $comment_title ); ?>
- + - + shortcodes()->modified_args) && count(UM()->shortcodes()->loop) >= 10 ) { ?> - +
- + \ No newline at end of file