$17 GRAYBYTE WORDPRESS FILE MANAGER $69

SERVER : premium134.web-hosting.com #1 SMP Thu Mar 13 14:29:12 UTC 2025
SERVER IP : 162.0.232.104 | ADMIN IP 216.73.216.80
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/home/raydofqv/ctdatabase.work/wp-content/plugins/woocommerce/assets/js/admin/

HOME
Current File : /home/raydofqv/ctdatabase.work/wp-content/plugins/woocommerce/assets/js/admin//wc-shipping-zones.js
/* global shippingZonesLocalizeScript, ajaxurl */
( function( $, data, wp, ajaxurl ) {
	$( function() {
		if ( 
			! document.getElementById( 'tmpl-wc-shipping-zone-row' ) || 
			! document.getElementById( 'tmpl-wc-shipping-zone-row-blank' ) 
		) {
			return;
		}
		
		var $table          = $( '.wc-shipping-zones' ),
			$tbody          = $( '.wc-shipping-zone-rows' ),
			$save_button    = $( '.wc-shipping-zone-save' ),
			$row_template   = wp.template( 'wc-shipping-zone-row' ),
			$blank_template = wp.template( 'wc-shipping-zone-row-blank' ),

			// Backbone model
			ShippingZone       = Backbone.Model.extend({
				changes: {},
				logChanges: function( changedRows ) {
					var changes = this.changes || {};

					_.each( changedRows, function( row, id ) {
						changes[ id ] = _.extend( changes[ id ] || { zone_id : id }, row );
					} );

					this.changes = changes;
					this.trigger( 'change:zones' );
				},
				discardChanges: function( id ) {
					var changes      = this.changes || {},
						set_position = null,
						zones        = _.indexBy( this.get( 'zones' ), 'zone_id' );

					// Find current set position if it has moved since last save
					if ( changes[ id ] && changes[ id ].zone_order !== undefined ) {
						set_position = changes[ id ].zone_order;
					}

					// Delete all changes
					delete changes[ id ];

					// If the position was set, and this zone does exist in DB, set the position again so the changes are not lost.
					if ( set_position !== null && zones[ id ] && zones[ id ].zone_order !== set_position ) {
						changes[ id ] = _.extend( changes[ id ] || {}, { zone_id : id, zone_order : set_position } );
					}

					this.changes = changes;

					// No changes? Disable save button.
					if ( 0 === _.size( this.changes ) ) {
						shippingZoneView.clearUnloadConfirmation();
					}
				},
				save: function() {
					if ( _.size( this.changes ) ) {
						$.post( ajaxurl + ( ajaxurl.indexOf( '?' ) > 0 ? '&' : '?' ) + 'action=woocommerce_shipping_zones_save_changes', {
							wc_shipping_zones_nonce : data.wc_shipping_zones_nonce,
							changes                 : this.changes
						}, this.onSaveResponse, 'json' );
					} else {
						shippingZone.trigger( 'saved:zones' );
					}
				},
				onSaveResponse: function( response, textStatus ) {
					if ( 'success' === textStatus ) {
						if ( response.success ) {
							shippingZone.set( 'zones', response.data.zones );
							shippingZone.trigger( 'change:zones' );
							shippingZone.changes = {};
							shippingZone.trigger( 'saved:zones' );
						} else {
							window.alert( data.strings.save_failed );
						}
					}
				}
			} ),

			// Backbone view
			ShippingZoneView = Backbone.View.extend({
				rowTemplate: $row_template,
				initialize: function() {
					this.listenTo( this.model, 'change:zones', this.setUnloadConfirmation );
					this.listenTo( this.model, 'saved:zones', this.clearUnloadConfirmation );
					this.listenTo( this.model, 'saved:zones', this.render );
					$tbody.on( 'change', { view: this }, this.updateModelOnChange );
					$tbody.on( 'sortupdate', { view: this }, this.updateModelOnSort );
					$( window ).on( 'beforeunload', { view: this }, this.unloadConfirmation );
					$( document.body ).on( 'click', '.wc-shipping-zone-add', { view: this }, this.onAddNewRow );
				},
				onAddNewRow: function() {
					var $link = $( this );
					window.location.href = $link.attr( 'href' );
				},
				block: function() {
					$( this.el ).block({
						message: null,
						overlayCSS: {
							background: '#fff',
							opacity: 0.6
						}
					});
				},
				unblock: function() {
					$( this.el ).unblock();
				},
				render: function() {
					var zones = _.indexBy( this.model.get( 'zones' ), 'zone_id' ),
						view  = this;

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

					if ( _.size( zones ) ) {
						// Sort zones
						zones = _( zones )
							.chain()
							.sortBy( function ( zone ) { return parseInt( zone.zone_id, 10 ); } )
							.sortBy( function ( zone ) { return parseInt( zone.zone_order, 10 ); } )
							.value();

						// Populate $tbody with the current zones
						$.each( zones, function( id, rowData ) {
							view.renderRow( rowData );
						} );
					} else {
						view.$el.append( $blank_template );
					}

					view.initRows();
				},
				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.zone_id + '"]');

					// List shipping methods
					view.renderShippingMethods( rowData.zone_id, rowData.shipping_methods );
					$tr.find( '.wc-shipping-zone-delete' ).on( 'click', { view: this }, this.onDeleteRow );
				},
				initRows: function() {
					const isEven = 0 !== ( $( 'tbody.wc-shipping-zone-rows tr' ).length % 2 );
					const tfoot = $( 'tfoot.wc-shipping-zone-rows-tfoot' );

					// Stripe
					if ( isEven ) {
						tfoot.find( 'tr' ).addClass( 'even' );
					} else {
						tfoot.find( 'tr' ).removeClass( 'even' );
					}
					// Tooltips
					$( '#tiptip_holder' ).removeAttr( 'style' );
					$( '#tiptip_arrow' ).removeAttr( 'style' );
					$( '.tips' ).tipTip({ 'attribute': 'data-tip', 'fadeIn': 50, 'fadeOut': 50, 'delay': 50 });
				},
				renderShippingMethods: function( zone_id, shipping_methods ) {
					var $tr          = $( '.wc-shipping-zones tr[data-id="' + zone_id + '"]');
					var $method_list = $tr.find('.wc-shipping-zone-methods ul');

					$method_list.find( '.wc-shipping-zone-method' ).remove();

					if ( _.size( shipping_methods ) ) {
						shipping_methods = _.sortBy( shipping_methods, function( method ) {
							return parseInt( method.method_order, 10 );
						} );

						_.each( shipping_methods, function( shipping_method ) {
							var class_name = 'method_disabled';

							if ( 'yes' === shipping_method.enabled ) {
								class_name = 'method_enabled';
							}

							$method_list.append(
								'<li data-id="' + 
									shipping_method.instance_id + 
									'" class="wc-shipping-zone-method ' + 
									class_name + 
									'">' + 
									shipping_method.title + 
								'</li>'
							);
						} );
					} else {
						$method_list.append( '<li class="wc-shipping-zone-method">' + data.strings.no_shipping_methods_offered + '</li>' );
					}
				},
				onDeleteRow: function( event ) {
					var view    = event.data.view,
						model   = view.model,
						zones   = _.indexBy( model.get( 'zones' ), 'zone_id' ),
						changes = {},
						row     = $( this ).closest('tr'),
						zone_id = row.data('id');

					event.preventDefault();

					if ( window.confirm( data.strings.delete_confirmation_msg ) ) {
						if ( zones[ zone_id ] ) {
							delete zones[ zone_id ];
							changes[ zone_id ] = _.extend( changes[ zone_id ] || {}, { deleted : 'deleted' } );
							model.set( 'zones', zones );
							model.logChanges( changes );
							event.data.view.block();
							event.data.view.model.save();
						}
					}
				},
				setUnloadConfirmation: function() {
					this.needsUnloadConfirm = true;
					$save_button.prop( 'disabled', false );
				},
				clearUnloadConfirmation: function() {
					this.needsUnloadConfirm = false;
					$save_button.prop( 'disabled', true );
				},
				unloadConfirmation: function( event ) {
					if ( event.data.view.needsUnloadConfirm ) {
						event.returnValue = data.strings.unload_confirmation_msg;
						window.event.returnValue = data.strings.unload_confirmation_msg;
						return data.strings.unload_confirmation_msg;
					}
				},
				updateModelOnChange: function( event ) {
					var model     = event.data.view.model,
						$target   = $( event.target ),
						zone_id   = $target.closest( 'tr' ).data( 'id' ),
						attribute = $target.data( 'attribute' ),
						value     = $target.val(),
						zones   = _.indexBy( model.get( 'zones' ), 'zone_id' ),
						changes = {};

					if ( ! zones[ zone_id ] || zones[ zone_id ][ attribute ] !== value ) {
						changes[ zone_id ] = {};
						changes[ zone_id ][ attribute ] = value;
					}

					model.logChanges( changes );
				},
				updateModelOnSort: function( event ) {
					var view    = event.data.view,
						model   = view.model,
						zones   = _.indexBy( model.get( 'zones' ), 'zone_id' ),
						rows    = $( 'tbody.wc-shipping-zone-rows tr' ),
						changes = {};

					// Update sorted row position
					_.each( rows, function( row ) {
						var zone_id = $( row ).data( 'id' ),
							old_position = null,
							new_position = parseInt( $( row ).index(), 10 );

						if ( zones[ zone_id ] ) {
							old_position = parseInt( zones[ zone_id ].zone_order, 10 );
						}

						if ( old_position !== new_position ) {
							changes[ zone_id ] = _.extend( changes[ zone_id ] || {}, { zone_order : new_position } );
						}
					} );

					if ( _.size( changes ) ) {
						model.logChanges( changes );
						event.data.view.block();
						event.data.view.model.save();
					}
				}
			} ),
			shippingZone = new ShippingZone({
				zones: data.zones
			} ),
			shippingZoneView = new ShippingZoneView({
				model:    shippingZone,
				el:       $tbody
			} );

		shippingZoneView.render();

		$tbody.sortable({
			items: 'tr',
			cursor: 'move',
			axis: 'y',
			handle: 'td.wc-shipping-zone-sort',
			scrollSensitivity: 40
		});
	});
})( jQuery, shippingZonesLocalizeScript, wp, ajaxurl );

Current_dir [ WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0755
.htaccess
1.994 KB
29 Apr 2026 5.43 AM
raydofqv / raydofqv
0444
api-keys.js
3.893 KB
18 May 2021 9.00 PM
raydofqv / raydofqv
0644
api-keys.min.js
2.227 KB
18 Jul 2023 11.53 PM
raydofqv / raydofqv
0644
backbone-modal.js
4.354 KB
27 Dec 2023 12.45 AM
raydofqv / raydofqv
0644
backbone-modal.min.js
2.771 KB
27 Dec 2023 12.45 AM
raydofqv / raydofqv
0644
marketplace-suggestions.js
16.839 KB
1 Sep 2025 11.44 PM
raydofqv / raydofqv
0644
marketplace-suggestions.min.js
6.659 KB
1 Sep 2025 11.44 PM
raydofqv / raydofqv
0644
meta-boxes-coupon.js
2.985 KB
1 Apr 2025 3.51 PM
raydofqv / raydofqv
0644
meta-boxes-coupon.min.js
1.611 KB
1 Apr 2025 3.51 PM
raydofqv / raydofqv
0644
meta-boxes-order.js
54.511 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
meta-boxes-order.min.js
33.121 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
meta-boxes-product-variation.js
42.265 KB
12 May 2025 9.07 PM
raydofqv / raydofqv
0644
meta-boxes-product-variation.min.js
22.549 KB
12 May 2025 9.07 PM
raydofqv / raydofqv
0644
meta-boxes-product.js
34.687 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
meta-boxes-product.min.js
18.241 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
meta-boxes.js
4.95 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
meta-boxes.min.js
3.02 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
network-orders.js
2.338 KB
23 May 2018 7.30 PM
raydofqv / raydofqv
0644
network-orders.min.js
1.251 KB
18 Jul 2023 11.53 PM
raydofqv / raydofqv
0644
order-attribution-admin.js
1.157 KB
27 Dec 2023 12.45 AM
raydofqv / raydofqv
0644
order-attribution-admin.min.js
0.713 KB
27 Dec 2023 12.45 AM
raydofqv / raydofqv
0644
product-editor.js
0.68 KB
29 Jul 2025 12.34 PM
raydofqv / raydofqv
0644
product-editor.min.js
0.291 KB
29 Jul 2025 12.34 PM
raydofqv / raydofqv
0644
product-ordering.js
2.604 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
product-ordering.min.js
1.664 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
quick-edit.js
7.062 KB
3 Mar 2025 10.28 PM
raydofqv / raydofqv
0644
quick-edit.min.js
4.581 KB
3 Mar 2025 10.28 PM
raydofqv / raydofqv
0644
reports.js
5.389 KB
14 Nov 2024 1.17 AM
raydofqv / raydofqv
0644
reports.min.js
2.7 KB
14 Nov 2024 1.17 AM
raydofqv / raydofqv
0644
settings-views-html-settings-tax.js
12.035 KB
3 Mar 2025 10.28 PM
raydofqv / raydofqv
0644
settings-views-html-settings-tax.min.js
6.085 KB
3 Mar 2025 10.28 PM
raydofqv / raydofqv
0644
settings.js
11.946 KB
12 May 2025 9.07 PM
raydofqv / raydofqv
0644
settings.min.js
6.252 KB
12 May 2025 9.07 PM
raydofqv / raydofqv
0644
system-status.js
5.382 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
system-status.min.js
3.077 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
term-ordering.js
4.619 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
term-ordering.min.js
2.52 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
users.js
3.784 KB
18 May 2021 9.00 PM
raydofqv / raydofqv
0644
users.min.js
1.87 KB
18 Jul 2023 11.53 PM
raydofqv / raydofqv
0644
wc-brands-enhanced-select.js
4.063 KB
23 Sep 2024 8.44 PM
raydofqv / raydofqv
0644
wc-brands-enhanced-select.min.js
1.592 KB
23 Sep 2024 8.44 PM
raydofqv / raydofqv
0644
wc-clipboard.js
0.849 KB
18 May 2021 9.00 PM
raydofqv / raydofqv
0644
wc-clipboard.min.js
0.328 KB
18 May 2021 9.00 PM
raydofqv / raydofqv
0644
wc-customer-stock-notifications.js
1.612 KB
1 Sep 2025 11.44 PM
raydofqv / raydofqv
0644
wc-customer-stock-notifications.min.js
1.127 KB
1 Sep 2025 11.44 PM
raydofqv / raydofqv
0644
wc-enhanced-select.js
13.58 KB
16 Aug 2023 12.05 AM
raydofqv / raydofqv
0644
wc-enhanced-select.min.js
7.707 KB
16 Aug 2023 12.05 AM
raydofqv / raydofqv
0644
wc-orders.js
1.977 KB
19 Oct 2022 12.34 AM
raydofqv / raydofqv
0644
wc-orders.min.js
1.167 KB
18 Jul 2023 11.53 PM
raydofqv / raydofqv
0644
wc-product-export.js
3.789 KB
12 May 2025 9.07 PM
raydofqv / raydofqv
0644
wc-product-export.min.js
2.091 KB
12 May 2025 9.07 PM
raydofqv / raydofqv
0644
wc-product-import.js
2.925 KB
24 May 2023 3.17 AM
raydofqv / raydofqv
0644
wc-product-import.min.js
1.701 KB
18 Jul 2023 11.53 PM
raydofqv / raydofqv
0644
wc-recent-reviews-widget-async.js
1.435 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
wc-recent-reviews-widget-async.min.js
0.623 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
wc-setup.js
10.049 KB
18 May 2021 9.00 PM
raydofqv / raydofqv
0644
wc-setup.min.js
6.35 KB
18 Jul 2023 11.53 PM
raydofqv / raydofqv
0644
wc-shipping-classes.js
6.567 KB
3 Mar 2025 10.28 PM
raydofqv / raydofqv
0644
wc-shipping-classes.min.js
3.565 KB
3 Mar 2025 10.28 PM
raydofqv / raydofqv
0644
wc-shipping-providers.js
7.042 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
wc-shipping-providers.min.js
3.902 KB
30 Mar 2026 5.12 PM
raydofqv / raydofqv
0644
wc-shipping-zone-methods.js
35.427 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
wc-shipping-zone-methods.min.js
17.098 KB
19 Jan 2026 2.46 PM
raydofqv / raydofqv
0644
wc-shipping-zones.js
9.23 KB
3 Mar 2025 10.28 PM
raydofqv / raydofqv
0644
wc-shipping-zones.min.js
4.854 KB
3 Mar 2025 10.28 PM
raydofqv / raydofqv
0644
wc-status-widget-async.js
1.332 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
wc-status-widget-async.min.js
0.561 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
wc-status-widget.js
1.781 KB
14 Nov 2024 1.17 AM
raydofqv / raydofqv
0644
wc-status-widget.min.js
1.049 KB
14 Nov 2024 1.17 AM
raydofqv / raydofqv
0644
woocommerce_admin.js
22.321 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644
woocommerce_admin.min.js
11.928 KB
23 Feb 2026 5.58 PM
raydofqv / raydofqv
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF Static GIF