![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/gg.corals.io/wp-content/plugins/trx_addons/js/ |
/** * Admin utilities (for internal use only!) * * @package WordPress * @subpackage ThemeREX Addons * @since v1.0 */ /* global jQuery:false */ /* global TRX_ADDONS_STORAGE:false */ (function() { "use strict"; if (typeof TRX_ADDONS_STORAGE == 'undefined') window.TRX_ADDONS_STORAGE = {}; jQuery(document).ready(function() { // Trigger 'admin_action.init_hidden_elements' on meta box hide and show jQuery(document).on('postbox-toggled', function() { jQuery(document).trigger('admin_action.init_hidden_elements'); }); // Trigger 'admin_action.init_hidden_elements' on sorting meta boxes jQuery('.meta-box-sortables').on( 'sortstop', function() { jQuery(document).trigger('admin_action.init_hidden_elements'); }); // Check fields dependencies in widgets //----------------------------------------------------------------------------------- // Check dependencies in widgets in admin menu jQuery( '.widget-liquid-right form,.widgets-holder-wrap form,.edit-widgets-block-editor') .each( function () { trx_addons_admin_check_dependencies(jQuery(this)); } ); jQuery('.widget-liquid-right form,.widgets-holder-wrap form,.edit-widgets-block-editor') .on( 'change', '[data-param-name]', function() { trx_addons_admin_check_dependencies(jQuery(this).parents('form')); } ); // Check dependencies in widgets inside Customize sections (before open for dinamically created sections) jQuery( '#customize-theme-controls .control-section' ).on( 'click', '.widget-title', function() { var widget = jQuery( this ).parents('.widget').eq(0).find('.form'); if (widget.length > 0) { trx_addons_admin_check_dependencies( widget ); } } ); jQuery('#customize-theme-controls .control-section') .on( 'change', '[data-param-name]', function() { trx_addons_admin_check_dependencies(jQuery(this).parents('.form').eq(0)); } ); // Check for dependencies function trx_addons_admin_check_dependencies(cont) { cont.find('[data-param-name]').each(function() { var ctrl = jQuery(this), id = ctrl.data('param-name'), depend = ctrl.data('param-dependency'); if ( !id || !depend) return; 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='', i; var parts = '', parts2 = ''; for (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(']', ''); } fld = cont.find('[data-param-name="'+name+'"]'); if (fld.length > 0) { val = trx_addons_admin_get_field_value(fld); 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')) { ctrl.parents('[class^="widget_field_type_"]').show().removeClass('trx_addons_field_no_use'); } else { ctrl.parents('[class^="widget_field_type_"]').hide().addClass('trx_addons_field_no_use'); } } }); } function trx_addons_admin_get_field_value(fld) { var ctrl = fld.parents('[class^="widget_field_type_"]'); var val = fld.attr('type')=='checkbox' || fld.attr('type')=='radio' ? (ctrl.find('input[type="'+fld.attr('type')+'"]:checked').length > 0 ? (ctrl.find('input[type="'+fld.attr('type')+'"]:checked').val() !== '' && ''+ctrl.find('input[type="'+fld.attr('type')+'"]:checked').val() !== '0' ? ctrl.find('input[type="'+fld.attr('type')+'"]:checked').val() : 1 ) : 0 ) : fld.val(); if (val===undefined || val===null) val = ''; return val; } // Refresh taxonomies and terms lists when post type is changed //----------------------------------------------------------------------------------- // In widgets mode jQuery('.widget-liquid-right,.widgets-holder-wrap,.customize-control-widget_form,.edit-widgets-block-editor,.customize-control-sidebar_block_editor') .on('change', '.trx_addons_post_type_selector,.trx_addons_taxonomy_selector', function() { var field = jQuery(this), num = 0; field .parent() .nextAll() .find( field.attr('class').indexOf('_post_type_selector') > 0 ? 'select[class*="_taxonomy_selector"]' : 'select[class*="_terms_selector"]') .each(function() { var cat_fld = jQuery(this); var cat_lbl = cat_fld.prev('label'); setTimeout(function(){ trx_addons_refresh_list(cat_fld.attr('class').indexOf('_taxonomy_selector') > 0 ? 'taxonomies' : 'terms', field.val(), cat_fld, cat_lbl); }, 300*num); num++; }); return false; }); // In ThemeREX Addons Options jQuery('.trx_addons_options') .on('change', '.trx_addons_post_type_selector,.trx_addons_taxonomy_selector', function() { var field_container = jQuery(this).parents('.trx_addons_options_item'); var cat_fld = field_container.next().find('[class*="_selector"]'); var cat_lbl = field_container.next().find('.trx_addons_options_item_title'); if (cat_fld.length > 0) { trx_addons_refresh_list(cat_fld.hasClass('trx_addons_taxonomy_selector') ? 'taxonomies' : 'terms', jQuery(this).val(), cat_fld, cat_lbl); } return false; }); // In VC editor // Attention! Code of this handler is moved to the api/js_composer/js_composer.admin.js // In Elementor editor // Attention! Code of this handler is moved to the api/elementor/elementor.editor.js // Refresh link on the post editor when select with layout is changed // in Theme Options, VC editor or Elementor editor //-------------------------------------------------------------------- jQuery('body').on('change', 'select', function () { var selector = jQuery(this), parent = selector.data('setting') !== undefined ? selector.closest('.elementor-control-content').eq(0) : selector.parent(); var a = parent.find('a.trx_addons_post_editor'); if (a.length > 0) trx_addons_layout_selector_refresh_link(a); }); window.trx_addons_layout_selector_refresh_link = function(a) { var parent = a.closest('.elementor-control-content').length > 0 ? a.closest('.elementor-control-content').eq(0) : a.parent().parent(); var selector = parent.find('select'); if (selector.length > 0) { var id = Number(selector.val()); if (isNaN(id)) id = 0; a.attr('href', a.attr('href').replace(/post=[0-9]{1,5}/, "post="+id)); if (id == 0) { a.addClass('trx_addons_hidden'); } else { a.removeClass('trx_addons_hidden'); } } }; // Prepare media selector params TRX_ADDONS_STORAGE['media_id'] = ''; TRX_ADDONS_STORAGE['media_frame'] = []; TRX_ADDONS_STORAGE['media_link'] = []; // First run init fields trx_addons_admin_init_fields(); jQuery(document).on('action.init_hidden_elements', trx_addons_admin_init_fields); jQuery(document).on( 'widget-added', function () { trx_addons_admin_init_fields(); }); }); // Init fields at first run and after clone group // ------------------------------------------------------------------------------------- function trx_addons_admin_init_fields(e, container) { if (container === undefined) container = jQuery('body'); // Init jQuery Tabs if (jQuery.ui && jQuery.ui.tabs) { container.find('.trx_addons_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]); } }); // Check hash and open tab var hash = window.location.hash; if (hash && jQuery('a[href="'+hash+'"]').length > 0) { setTimeout(function() { jQuery('a[href="'+hash+'"]').trigger('click'); }, 10); } } // Init jQuery Accordion if (jQuery.ui && jQuery.ui.accordion) { container.find('.trx_addons_panels:not(.inited)').addClass('inited').accordion({ 'header': '.trx_addons_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]); } }); } // Standard WP Color Picker if (container.find('.trx_addons_color_selector:not(.inited)').length > 0) { container.find('.trx_addons_color_selector:not(.inited)').addClass('inited').wpColorPicker({ // you can declare a default color here, // or in the data-default-color attribute on the input //defaultColor: false, // a callback to fire whenever the color changes to a valid color change: function(e, ui){ jQuery(e.target).val(ui.color).trigger('change'); }, // a callback to fire when the input is emptied or an invalid color clear: function(e) { jQuery(e.target).prev().trigger('change'); }, // hide the color picker controls on load //hide: true, // show a group of common colors beneath the square // or, supply an array of colors to customize further //palettes: true }); } // Icon selector // Attention! Init container, because icon_selector appear in a cloneable blocks if (!container.hasClass('trx_addons_icon_selector_inited')) { container.addClass('trx_addons_icon_selector_inited') .on('click', '.trx_addons_icon_selector', function(e) { var selector = jQuery(this); var list = selector.next('.trx_addons_list_icons'); if (list.length > 0) { if (list.css('display') == 'block') { list.slideUp(); } else { var css_obj = {}; if (selector.parents('#trx_addons_meta_box').length > 0) { css_obj = { 'position': 'relative', 'left': 'auto', 'top': 'auto' }; } else { var pos = selector.position(); css_obj = { 'position': 'absolute', 'left': pos.left, 'top': pos.top+selector.height()+4 }; } list.find('.trx_addons_list_icons_search').val(''); list.find('span').removeClass('trx_addons_list_hidden'); list.css(css_obj).slideDown(function() { list.find('.trx_addons_list_icons_search').focus(); }); } } e.preventDefault(); return false; }) .on('keyup', '.trx_addons_list_icons_search', function(e) { var list = jQuery(this).parent(), val = jQuery(this).val(); list.find('span').removeClass('trx_addons_list_hidden'); if (val !== '') list.find('span:not([data-icon*="'+val+'"])').addClass('trx_addons_list_hidden'); }) .on('click', '.trx_addons_list_icons > span', function(e) { var list = jQuery(this).parent(); list.find('.trx_addons_active').removeClass('trx_addons_active'); var selector = list.prev('.trx_addons_icon_selector'); var input = selector.length==1 ? selector.prev('input') : list.prev('input'); var icon = jQuery(this).addClass('trx_addons_active').data('icon'); input.val(icon).trigger('change'); if (selector.length > 0) { if (selector.data('style') == 'icons') selector.attr('class', trx_addons_chg_icon_class(selector.attr('class'), icon)); else selector.css('background-image', jQuery(this).css('background-image')); list.fadeOut(); } e.preventDefault(); return false; }); } // Media selector container.find('#customize-theme-controls:not(.inited)' +',.widget-liquid-right:not(.inited)' +',.widgets-holder-wrap:not(.inited)' +',.widget_field_type_image:not(.inited)' +',.form-field:not(.inited)' +',.trx_addons_options_item_field:not(.inited)' +',.edit-widgets-block-editor:not(.inited)' ) .addClass('inited') .on('click', '.trx_addons_media_selector', function(e) { trx_addons_show_media_manager(this); e.preventDefault(); return false; }) .on('click', '.trx_addons_media_selector_preview > span', function(e) { var image = jQuery(this); var button = image.parent().prev('.trx_addons_media_selector'); var field = jQuery('#'+button.data('linked-field')); if (field.length == 0) return; if (button.data('multiple')==1) { var val = field.val().split('|'); val.splice(image.index(), 1); field.val(val.join('|')); image.remove(); } else { field.val(''); image.remove(); } e.preventDefault(); return false; }); } // Show WP Media manager to select image // ------------------------------------------------------------------------------------- function trx_addons_show_media_manager(el) { TRX_ADDONS_STORAGE['media_id'] = jQuery(el).attr('id'); TRX_ADDONS_STORAGE['media_link'][TRX_ADDONS_STORAGE['media_id']] = jQuery(el); // If the media frame already exists, reopen it. if ( TRX_ADDONS_STORAGE['media_frame'][TRX_ADDONS_STORAGE['media_id']] ) { TRX_ADDONS_STORAGE['media_frame'][TRX_ADDONS_STORAGE['media_id']].open(); return false; } // Create the media frame var type = TRX_ADDONS_STORAGE['media_link'][TRX_ADDONS_STORAGE['media_id']].data('type') ? TRX_ADDONS_STORAGE['media_link'][TRX_ADDONS_STORAGE['media_id']].data('type') : 'image'; var args = { // Set the title of the modal. title: TRX_ADDONS_STORAGE['media_link'][TRX_ADDONS_STORAGE['media_id']].data('choose'), // Multiple choise multiple: TRX_ADDONS_STORAGE['media_link'][TRX_ADDONS_STORAGE['media_id']].data('multiple')==1 ? 'add' : false, // Customize the submit button. button: { // Set the text of the button. text: TRX_ADDONS_STORAGE['media_link'][TRX_ADDONS_STORAGE['media_id']].data('update'), // Tell the button not to close the modal, since we're // going to refresh the page when the image is selected. close: true } }; // Allow sizes and filters for the images if (type == 'image') { args['frame'] = 'post'; } // Tell the modal to show only selected post types if (type == 'image' || type == 'audio' || type == 'video') { args['library'] = { type: type }; } TRX_ADDONS_STORAGE['media_frame'][TRX_ADDONS_STORAGE['media_id']] = wp.media(args); // When an image is selected, run a callback. TRX_ADDONS_STORAGE['media_frame'][TRX_ADDONS_STORAGE['media_id']].on( 'insert select', function(selection) { // Grab the selected attachment. var field = jQuery("#"+TRX_ADDONS_STORAGE['media_link'][TRX_ADDONS_STORAGE['media_id']].data('linked-field')).eq(0); var attachment = null, attachment_url = ''; if (TRX_ADDONS_STORAGE['media_link'][TRX_ADDONS_STORAGE['media_id']].data('multiple')==1) { TRX_ADDONS_STORAGE['media_frame'][TRX_ADDONS_STORAGE['media_id']].state().get('selection').map( function( att ) { attachment_url += (attachment_url ? "|" : "") + att.toJSON().url; }); var val = field.val(); attachment_url = val + (val ? "|" : '') + attachment_url; } else { attachment = TRX_ADDONS_STORAGE['media_frame'][TRX_ADDONS_STORAGE['media_id']].state().get('selection').first().toJSON(); attachment_url = attachment.url; var sizes_selector = jQuery('.media-modal-content .attachment-display-settings select.size'); if (sizes_selector.length > 0) { var size = trx_addons_get_listbox_selected_value(sizes_selector.get(0)); if (size !== '') attachment_url = attachment.sizes[size].url; } } // Display images in the preview area var preview = field.siblings('.trx_addons_media_selector_preview'); if (preview.length == 0) { jQuery('<span class="trx_addons_media_selector_preview"></span>').insertAfter(field); preview = field.siblings('.trx_addons_media_selector_preview'); } if (preview.length != 0) preview.empty(); var images = attachment_url.split("|"); for (var i=0; i < images.length; i++) { if (preview.length != 0) { var ext = trx_addons_get_file_ext(images[i]); preview.append('<span>' + (ext=='gif' || ext=='jpg' || ext=='jpeg' || ext=='png' ? '<img src="'+images[i]+'">' : '<a href="'+images[i]+'">'+trx_addons_get_file_name(images[i])+'</a>' ) + '</span>'); } } // Update field field.val(attachment_url).trigger('change'); }); // Finally, open the modal. TRX_ADDONS_STORAGE['media_frame'][TRX_ADDONS_STORAGE['media_id']].open(); return false; } })();