%PDF- %PDF-
Direktori : /home/eirtvhdf/makkitrust.org/wp-content/plugins/trx_addons/js/ |
Current File : /home/eirtvhdf/makkitrust.org/wp-content/plugins/trx_addons/js/trx_addons.options.js |
//------------------------------------------- // Options handlers //------------------------------------------- /* global jQuery:false */ /* global TRX_ADDONS_STORAGE:false */ jQuery(document).ready(function() { "use strict"; // Init fields trx_addons_options_init_fields(); jQuery(document).on('action.init_hidden_elements', trx_addons_options_init_fields); // Check fields dependencies jQuery('.trx_addons_options .trx_addons_options_section').each(function () { trx_addons_options_check_dependencies(jQuery(this)); }); jQuery('.trx_addons_options .trx_addons_options_item_field [name^="trx_addons_options_field_"]').on('change', function () { trx_addons_options_check_dependencies(jQuery(this).parents('.trx_addons_options_section')); }); // Init fields at first run and after clone group function trx_addons_options_init_fields(e, container) { if (container === undefined) container = jQuery('.trx_addons_options '); // Init jQuery Tabs if (jQuery.ui && jQuery.ui.tabs) { container.find('#trx_addons_options_tabs:not(.inited)').addClass('inited').tabs({ create: function( event, ui ) { if (ui.panel.length > 0) jQuery(document).trigger('admin_action.init_hidden_elements', [ui.panel]); }, activate: function( event, ui ) { if (ui.newPanel.length > 0) jQuery(document).trigger('admin_action.init_hidden_elements', [ui.newPanel]); } }); } // Init jQuery Accordion if (jQuery.ui && jQuery.ui.accordion) { container.find('.trx_addons_options_panels:not(.inited)').addClass('inited').accordion({ 'header': '.trx_addons_options_panel_title', 'heightStyle': 'content', create: function( event, ui ) { if (ui.panel.length > 0) jQuery(document).trigger('admin_action.init_hidden_elements', [ui.panel]); }, activate: function( event, ui ) { if (ui.newPanel.length > 0) jQuery(document).trigger('admin_action.init_hidden_elements', [ui.newPanel]); } }); } // Init checklist container.find('.trx_addons_options_item_choises:not(.inited)').addClass('inited') .on('change', 'input[type="checkbox"]', function() { var choises = ''; var cont = jQuery(this).parents('.trx_addons_options_item_choises'); cont.find('input[type="checkbox"]').each(function() { choises += (choises ? '|' : '') + jQuery(this).data('name') + '=' + (jQuery(this).get(0).checked ? jQuery(this).val() : '0'); }); cont.find('input[type="hidden"]').eq(0).val(choises).trigger('change'); }) .each(function() { if (jQuery.ui.sortable && jQuery(this).hasClass('trx_addons_options_sortable')) { var id = jQuery(this).attr('id'); if (id === undefined) jQuery(this).attr('id', 'trx_addons_options_sortable_'+(''+Math.random()).replace('.', '')); jQuery(this).sortable({ items: ".trx_addons_options_item_sortable", placeholder: ' trx_addons_options_item_label trx_addons_options_sortable_placeholder', update: function(event, ui) { var choises = ''; ui.item.parent().find('input[type="checkbox"]').each(function() { choises += (choises ? '|' : '') + jQuery(this).data('name') + '=' + (jQuery(this).get(0).checked ? jQuery(this).val() : '0'); }); ui.item.siblings('input[type="hidden"]').eq(0).val(choises).trigger('change'); } }) .disableSelection(); } }); // Init Select2 if (jQuery.fn && jQuery.fn.select2) container.find('.trx_addons_options_item_select2 select:not(.inited)').addClass('inited').select2(); // Init datepicker if (jQuery.ui.datepicker) { container.find('.trx_addons_options_item_date input[type="text"]:not(.inited)').addClass('inited') .each(function () { var curDate = jQuery(this).val(); jQuery(this).datepicker({ dateFormat: jQuery(this).data('format'), numberOfMonths: jQuery(this).data('months'), gotoCurrent: true, changeMonth: true, changeYear: true, defaultDate: curDate, onSelect: function (text, ui) { ui.input.trigger('change'); } }); }); } // Init masked input container.find('.trx_addons_options_item input[data-mask]:not(.inited)').addClass('inited') .each(function () { if (jQuery.fn && jQuery.fn.mask) jQuery(this).mask(''+jQuery(this).data('mask')); }); // Button with action container.find('.trx_addons_options_item_button input[type="button"]:not(.inited)').addClass('inited') .on('click', function(e) { jQuery.post(TRX_ADDONS_STORAGE['ajax_url'], { action: jQuery(this).data('action'), nonce: TRX_ADDONS_STORAGE['ajax_nonce'], }).done(function(response) { var rez = {}; if (response=='' || response==0) { rez = { error: TRX_ADDONS_STORAGE['msg_ajax_error'] }; } else { try { rez = JSON.parse(response); } catch (e) { rez = { error: TRX_ADDONS_STORAGE['msg_ajax_error'] }; console.log(response); } } alert(rez.error ? rez.error : rez.success); }); e.preventDefault(); return false; }); // Init cloned fields trx_addons_options_clone_toggle_buttons(container); container.find('.trx_addons_options_group:not(.inited)').addClass('inited').each(function() { jQuery(this) // Button 'Clone' .on('click', '.trx_addons_options_clone > .trx_addons_options_clone_control_add', function (e) { var clone_obj = jQuery(this).parents('.trx_addons_options_clone'), group = clone_obj.parents('.trx_addons_options_group'); // Clone fields trx_addons_options_clone(clone_obj); // Enable/Disable clone buttons trx_addons_options_clone_toggle_buttons(group); // Prevent bubble event e.preventDefault(); return false; }) // Button 'Delete' .on('click', '.trx_addons_options_clone > .trx_addons_options_clone_control_delete', function (e) { var clone_obj = jQuery(this).parents('.trx_addons_options_clone'), clone_idx = clone_obj.index(), group = clone_obj.parents('.trx_addons_options_group'); // Delete clone clone_obj.remove(); // Change fields index trx_addons_options_clone_change_index(group, clone_idx); // Enable/Disable clone buttons trx_addons_options_clone_toggle_buttons(group); // Prevent bubble event e.preventDefault(); return false; }); // Sort clones if (jQuery.ui.sortable) { var id = jQuery(this).attr('id'); if (id === undefined) jQuery(this).attr('id', 'trx_addons_options_sortable_'+(''+Math.random()).replace('.', '')); jQuery(this) .sortable({ items: '.trx_addons_options_clone', handle: '.trx_addons_options_clone_control_move', placeholder: ' trx_addons_options_clone trx_addons_options_clone_placeholder', start: function (event, ui) { // Make the placeholder has the same height as dragged item ui.placeholder.height(ui.item.height()); }, update: function(event, ui) { // Change fields index trx_addons_options_clone_change_index(ui.item.parents('.trx_addons_options_group'), 0); } }); } }); // Check clone controls for enable/disable function trx_addons_options_clone_toggle_buttons(container) { if (!container.hasClass('trx_addons_options_group')) container = container.find('.trx_addons_options_group'); container.each(function() { var group = jQuery(this); if (group.find('.trx_addons_options_clone').length > 1) group.find('.trx_addons_options_clone_control_delete,.trx_addons_options_clone_control_move').show(); else group.find('.trx_addons_options_clone_control_delete,.trx_addons_options_clone_control_move').hide(); }); } // Replace number in the param's name like 'floor_plans[0][image]' function trx_addons_options_clone_replace_index(name, idx_new) { name = name.replace(/\[\d\]/, '['+idx_new+']'); return name; } // Change index in each field in the clone function trx_addons_options_clone_change_index(group, from_idx) { group.find('.trx_addons_options_clone').each(function(idx) { if (idx < from_idx) return; jQuery(this).find('.trx_addons_options_item_field').each(function() { var field = jQuery(this); field.attr('data-param', trx_addons_options_clone_replace_index(field.data('param'), idx)); field.find('> :input').each(function() { var input = jQuery(this), id = input.attr('id'), name = input.attr('name'); if (!name) return; name = trx_addons_options_clone_replace_index(name, idx); input.attr('name', name); if (id) { var id_new = name.replace(/\[/g, '_').replace(/\]/g, ''); input.attr('id', id_new); var linked_field = field.find('[data-linked-field="'+id+'"]'); if (linked_field.length > 0) { linked_field.attr('data-linked-field', id_new); if (linked_field.attr('id')) linked_field.attr('id', linked_field.attr('id').replace(id, id_new)); } } }); }); }); } // Clone set of the fields function trx_addons_options_clone(obj) { var group = obj.parent(), clones = group.find('.trx_addons_options_clone'), clone = obj.clone(), inputs = clone.find('.trx_addons_options_item_field > :input'), obj_idx = obj.index(); // Remove class 'inited' from all elements clone.find('.inited').removeClass('inited'); // Reset value for fields inputs.each(function() { var input = jQuery(this); if (input.is(':radio') || input.is(':checkbox')) { input.prop('checked', false); } else if (input.is('select')) { input.prop('selectedIndex', -1); } else { input.val(''); } // Remove image preview input.parents('.trx_addons_options_item_field').find('.trx_addons_media_selector_preview').empty(); // Remove class 'inited' from selectors input.next('[class*="_selector"].inited').removeClass('inited'); }); // Insert Clone clone.insertAfter(obj); // Change fields index. Must run before trigger clone event trx_addons_options_clone_change_index(group, obj_idx); // Fire init actions for cloned fields jQuery(document).trigger('action.init_hidden_elements', [clone.parents('.trx_addons_options')]); } } // Check for dependencies function trx_addons_options_check_dependencies(cont) { if (typeof TRX_ADDONS_DEPENDENCIES == 'undefined') return; cont.find('.trx_addons_options_item_field').each(function() { var id = jQuery(this).data('param'); if (id == undefined) return; var depend = false; for (var fld in TRX_ADDONS_DEPENDENCIES) { if (fld == id) { depend = TRX_ADDONS_DEPENDENCIES[id]; break; } } if (depend) { var dep_cnt = 0, dep_all = 0; var dep_cmp = typeof depend.compare != 'undefined' ? depend.compare.toLowerCase() : 'and'; var dep_strict = typeof depend.strict != 'undefined'; var fld=null, val='', name='', subname=''; var parts = '', parts2 = ''; for (var i in depend) { if (i == 'compare' || i == 'strict') continue; dep_all++; name = i; subname = ''; if (name.indexOf('[') > 0) { parts = name.split('['); name = parts[0]; subname = parts[1].replace(']', ''); } if (name.charAt(0)=='#') { fld = jQuery(name); if (fld.length > 0 && !fld.hasClass('trx_addons_inited')) { fld.addClass('trx_addons_inited').on('change', function () { jQuery('.trx_addons_options .trx_addons_options_section').each(function () { trx_addons_options_check_dependencies(jQuery(this)); }); }); } } else fld = cont.find('[name="trx_addons_options_field_'+name+'"]'); if (fld.length > 0) { val = fld.attr('type')=='checkbox' || fld.attr('type')=='radio' ? (fld.parents('.trx_addons_options_item_field').find('[name^="trx_addons_options_field_"]:checked').length>0 ? fld.parents('.trx_addons_options_item_field').find('[name^="trx_addons_options_field_"]:checked').val() : 0 ) : fld.val(); if (val===undefined) val = ''; if (subname!='') { parts = val.split('|'); for (var p=0; p<parts.length; p++) { parts2 = parts[p].split('='); if (parts2[0]==subname) { val = parts2[1]; } } } for (var j in depend[i]) { if ( (depend[i][j]=='not_empty' && val!='') // Main field value is not empty - show current field || (depend[i][j]=='is_empty' && val=='') // Main field value is empty - show current field || (val!=='' && (!isNaN(depend[i][j]) // Main field value equal to specified value - show current field ? val==depend[i][j] : (dep_strict ? val==depend[i][j] : (''+val).indexOf(depend[i][j])==0 ) ) ) || (val!=='' && (""+depend[i][j]).charAt(0)=='^' && (''+val).indexOf(depend[i][j].substr(1))==-1) // Main field value not equal to specified value - show current field ) { dep_cnt++; break; } } } if (dep_cnt > 0 && dep_cmp == 'or') break; } if ((dep_cnt > 0 && dep_cmp == 'or') || (dep_cnt == dep_all && dep_cmp == 'and')) { jQuery(this).parents('.trx_addons_options_item').show().removeClass('trx_addons_options_no_use'); } else { jQuery(this).parents('.trx_addons_options_item').hide().addClass('trx_addons_options_no_use'); } } }); } });