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 */
|
2015-06-04 12:21:39 +00:00
|
|
|
jQuery( function( $ ) {
|
2011-09-19 16:53:08 +00:00
|
|
|
|
2018-02-01 14:46:04 +00:00
|
|
|
var table_selector = 'table.wp-list-table',
|
|
|
|
item_selector = 'tbody tr:not(.inline-edit-row)',
|
2018-04-26 13:11:00 +00:00
|
|
|
term_id_selector = '.column-handle input[name="term_id"]',
|
|
|
|
column_handle = '<td class="column-handle"></td>';
|
2018-02-01 14:46:04 +00:00
|
|
|
|
|
|
|
if ( 0 === $( table_selector ).find( '.column-handle' ).length ) {
|
2018-04-26 13:11:00 +00:00
|
|
|
$( table_selector ).find( 'tr:not(.inline-edit-row)' ).append( column_handle );
|
2018-02-01 14:46:04 +00:00
|
|
|
|
|
|
|
term_id_selector = '.check-column input';
|
|
|
|
}
|
2014-01-31 02:44:17 +00:00
|
|
|
|
2018-01-31 20:17:06 +00:00
|
|
|
$( table_selector ).find( '.column-handle' ).show();
|
2018-01-31 13:34:55 +00:00
|
|
|
|
2018-04-26 13:11:00 +00:00
|
|
|
$.wc_add_missing_sort_handles = function() {
|
|
|
|
var all_table_rows = $( table_selector ).find('tbody > tr');
|
|
|
|
var rows_with_handle = $( table_selector ).find('tbody > tr > td.column-handle').parent();
|
|
|
|
if ( all_table_rows.length !== rows_with_handle.length ) {
|
|
|
|
all_table_rows.each(function(index, elem){
|
|
|
|
if ( ! rows_with_handle.is( elem ) ) {
|
|
|
|
$( elem ).append( column_handle );
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
$( table_selector ).find( '.column-handle' ).show();
|
|
|
|
};
|
|
|
|
|
2018-02-21 13:34:07 +00:00
|
|
|
$( document ).ajaxComplete( function( event, request, options ) {
|
2020-05-05 03:49:29 +00:00
|
|
|
if (
|
|
|
|
request &&
|
|
|
|
4 === request.readyState &&
|
|
|
|
200 === request.status &&
|
|
|
|
options.data &&
|
|
|
|
( 0 <= options.data.indexOf( '_inline_edit' ) || 0 <= options.data.indexOf( 'add-tag' ) )
|
|
|
|
) {
|
2018-04-26 13:11:00 +00:00
|
|
|
$.wc_add_missing_sort_handles();
|
2018-02-21 13:34:07 +00:00
|
|
|
$( document.body ).trigger( 'init_tooltips' );
|
|
|
|
}
|
2018-02-08 12:35:57 +00:00
|
|
|
} );
|
|
|
|
|
2018-01-31 13:34:55 +00:00
|
|
|
$( table_selector ).sortable({
|
|
|
|
items: item_selector,
|
2011-09-19 16:53:08 +00:00
|
|
|
cursor: 'move',
|
2017-05-18 14:22:12 +00:00
|
|
|
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,
|
2015-06-04 12:21:39 +00:00
|
|
|
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' );
|
|
|
|
},
|
2015-06-04 12:21:39 +00:00
|
|
|
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
|
|
|
},
|
2015-06-04 12:21:39 +00:00
|
|
|
update: function( event, ui ) {
|
2018-02-01 14:46:04 +00:00
|
|
|
var termid = ui.item.find( term_id_selector ).val(); // this post id
|
2015-06-04 12:21:39 +00:00
|
|
|
var termparent = ui.item.find( '.parent' ).html(); // post parent
|
2014-01-31 02:44:17 +00:00
|
|
|
|
2018-02-01 14:46:04 +00:00
|
|
|
var prevtermid = ui.item.prev().find( term_id_selector ).val();
|
|
|
|
var nexttermid = ui.item.next().find( term_id_selector ).val();
|
2014-01-31 02:44:17 +00:00
|
|
|
|
2015-06-04 12:21:39 +00:00
|
|
|
// Can only sort in same tree
|
2015-06-04 12:23:07 +00:00
|
|
|
var prevtermparent, nexttermparent;
|
2015-06-04 12:21:39 +00:00
|
|
|
if ( prevtermid !== undefined ) {
|
2015-06-04 12:33:49 +00:00
|
|
|
prevtermparent = ui.item.prev().find( '.parent' ).html();
|
2015-06-04 12:21:39 +00:00
|
|
|
if ( prevtermparent !== termparent) {
|
|
|
|
prevtermid = undefined;
|
|
|
|
}
|
2011-09-19 16:53:08 +00:00
|
|
|
}
|
2014-01-31 02:44:17 +00:00
|
|
|
|
2015-06-04 12:21:39 +00:00
|
|
|
if ( nexttermid !== undefined ) {
|
|
|
|
nexttermparent = ui.item.next().find( '.parent' ).html();
|
|
|
|
if ( nexttermparent !== termparent) {
|
|
|
|
nexttermid = undefined;
|
|
|
|
}
|
2014-01-31 02:44:17 +00:00
|
|
|
}
|
|
|
|
|
2020-05-05 03:49:29 +00:00
|
|
|
// 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 )
|
|
|
|
) {
|
2018-01-31 13:34:55 +00:00
|
|
|
$( table_selector ).sortable( 'cancel' );
|
2011-09-19 16:53:08 +00:00
|
|
|
return;
|
|
|
|
}
|
2014-01-31 02:44:17 +00:00
|
|
|
|
2015-06-04 12:21:39 +00:00
|
|
|
// Show Spinner
|
2018-01-31 20:17:06 +00:00
|
|
|
ui.item.find( '.check-column input' ).hide();
|
2020-05-05 03:49:29 +00:00
|
|
|
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 {
|
|
|
|
ui.item.find( '.check-column input' ).show();
|
|
|
|
ui.item.find( '.check-column' ).find( 'img' ).remove();
|
|
|
|
}
|
2011-09-19 16:53:08 +00:00
|
|
|
}
|
2020-05-05 03:49:29 +00:00
|
|
|
);
|
2014-01-31 02:44:17 +00:00
|
|
|
|
2015-06-04 12:33:49 +00:00
|
|
|
// Fix cell colors
|
2015-06-04 12:21:39 +00:00
|
|
|
$( '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
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|