![]() 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/www/wp-content/themes/dt-the7/inc/extensions/meta-box/js/ |
jQuery( document ).ready( function( $ ) { toggle_remove_buttons(); function add_cloned_fields( $input ) { var $clone_last = $input.find( '.the7-mb-clone:last' ), $clone = $clone_last.clone(), $input, name; $clone.insertAfter( $clone_last ); $input = $clone.find( ':input[class|="rwmb"]' ); // Reset value $input.val( '' ); // Get the field name, and increment name = $input.attr( 'name' ).replace( /\[(\d+)\]/, function( match, p1 ) { return '[' + ( parseInt( p1 ) + 1 ) + ']'; } ); // Update the "name" attribute $input.attr( 'name', name ); // Toggle remove buttons toggle_remove_buttons( $input ); //Trigger custom clone event $input.trigger( 'clone' ); } // Add more clones $( '.add-clone' ).on( 'click', function( e ) { e.stopPropagation(); var $input = $( this ).parents( '.the7-mb-input' ), $clone_group = $( this ).parents( '.the7-mb-field' ).attr( "clone-group" ); // If the field is part of a clone group, get all fields in that // group and itterate over them if ( $clone_group ) { // Get the parent metabox and then find the matching // clone-group elements inside var $metabox = $( this ).parents( '.inside' ); var $clone_group_list = $metabox.find( 'div[clone-group="' + $clone_group + '"]' ); $.each( $clone_group_list.find( '.the7-mb-input' ), function( key, value ) { add_cloned_fields( $( value ) ); } ); } else add_cloned_fields( $input ); toggle_remove_buttons( $input ); return false; } ); // Remove clones $( '.the7-mb-input' ).on( 'click', '.remove-clone', function() { var $this = $( this ), $input = $this.parents( '.the7-mb-input' ), $clone_group = $( this ).parents( '.the7-mb-field' ).attr( 'clone-group' ); // Remove clone only if there're 2 or more of them if ( $input.find( '.the7-mb-clone' ).length <= 1 ) return false; if ( $clone_group ) { // Get the parent metabox and then find the matching // clone-group elements inside var $metabox = $( this ).parents( '.inside' ); var $clone_group_list = $metabox.find( 'div[clone-group="' + $clone_group + '"]' ); var $index = $this.parent().index(); $.each( $clone_group_list.find( '.the7-mb-input' ), function( key, value ) { $( value ).children( '.the7-mb-clone' ).eq( $index ).remove(); // Toggle remove buttons toggle_remove_buttons( $( value ) ); } ); } else { $this.parent().remove(); // Toggle remove buttons toggle_remove_buttons( $input ); } return false; } ); /** * Hide remove buttons when there's only 1 of them * * @param $el jQuery element. If not supplied, the function will applies for all fields * * @return void */ function toggle_remove_buttons( $el ) { var $button; if ( !$el ) $el = $( '.the7-mb-field' ); $el.each( function() { $button = $( this ).find( '.remove-clone' ); $button.length < 2 ? $button.hide() : $button.show(); } ); } } );