woocommerce/assets/js/admin/term-ordering.js

88 lines
3.0 KiB
JavaScript
Raw Normal View History

2015-07-10 04:32:30 +00:00
/*global ajaxurl, woocommerce_term_ordering_params */
2011-09-19 16:53:08 +00:00
/* Modifided script from the simple-page-ordering plugin */
jQuery( function( $ ) {
2011-09-19 16:53:08 +00:00
var table_selector = 'table.wp-list-table',
2018-01-31 20:17:06 +00:00
item_selector = 'tbody tr:not(.inline-edit-row)';
2018-01-31 20:17:06 +00:00
$( table_selector ).find( '.column-handle' ).show();
$( table_selector ).sortable({
items: item_selector,
2011-09-19 16:53:08 +00:00
cursor: 'move',
handle: '.column-handle',
2011-09-19 16:53:08 +00:00
axis: 'y',
2012-04-10 18:06:12 +00:00
forcePlaceholderSize: true,
helper: 'clone',
opacity: 0.65,
2011-09-19 16:53:08 +00:00
placeholder: 'product-cat-placeholder',
scrollSensitivity: 40,
start: function( event, ui ) {
if ( ! ui.item.hasClass( 'alternate' ) ) {
ui.item.css( 'background-color', '#ffffff' );
}
ui.item.children( 'td, th' ).css( 'border-bottom-width', '0' );
2011-09-19 16:53:08 +00:00
ui.item.css( 'outline', '1px solid #aaa' );
},
stop: function( event, ui ) {
ui.item.removeAttr( 'style' );
ui.item.children( 'td, th' ).css( 'border-bottom-width', '1px' );
2011-09-19 16:53:08 +00:00
},
update: function( event, ui ) {
2018-01-31 20:17:06 +00:00
var termid = ui.item.find( '.column-handle input[name="term_id"]' ).val(); // this post id
var termparent = ui.item.find( '.parent' ).html(); // post parent
2018-01-31 20:17:06 +00:00
var prevtermid = ui.item.prev().find( '.column-handle input[name="term_id"]' ).val();
var nexttermid = ui.item.next().find( '.column-handle input[name="term_id"]' ).val();
// Can only sort in same tree
var prevtermparent, nexttermparent;
if ( prevtermid !== undefined ) {
2015-06-04 12:33:49 +00:00
prevtermparent = ui.item.prev().find( '.parent' ).html();
if ( prevtermparent !== termparent) {
prevtermid = undefined;
}
2011-09-19 16:53:08 +00:00
}
if ( nexttermid !== undefined ) {
nexttermparent = ui.item.next().find( '.parent' ).html();
if ( nexttermparent !== termparent) {
nexttermid = undefined;
}
}
// If previous and next not at same tree level, or next not at same tree level and the previous is the parent of the next, or just moved item beneath its own children
if ( ( prevtermid === undefined && nexttermid === undefined ) || ( nexttermid === undefined && nexttermparent === prevtermid ) || ( nexttermid !== undefined && prevtermparent === termid ) ) {
$( table_selector ).sortable( 'cancel' );
2011-09-19 16:53:08 +00:00
return;
}
// Show Spinner
2018-01-31 20:17:06 +00:00
ui.item.find( '.check-column input' ).hide();
ui.item.find( '.check-column' ).append( '<img alt="processing" src="images/wpspin_light.gif" class="waiting" style="margin-left: 6px;" />' );
// Go do the sorting stuff via ajax
$.post( ajaxurl, { action: 'woocommerce_term_ordering', id: termid, nextid: nexttermid, thetaxonomy: woocommerce_term_ordering_params.taxonomy }, function(response){
if ( response === 'children' ) {
window.location.reload();
} else {
2018-01-31 20:17:06 +00:00
ui.item.find( '.check-column input' ).show();
ui.item.find( '.check-column' ).find( 'img' ).remove();
2011-09-19 16:53:08 +00:00
}
});
2015-06-04 12:33:49 +00:00
// Fix cell colors
$( 'table.widefat tbody tr' ).each( function() {
var i = jQuery( 'table.widefat tbody tr' ).index( this );
if ( i%2 === 0 ) {
jQuery( this ).addClass( 'alternate' );
} else {
jQuery( this ).removeClass( 'alternate' );
}
2011-09-19 16:53:08 +00:00
});
}
});
});