On reordering products the cells of the placeholder need to match the attributes of the original row cells, otherwise the width gets messed up

This commit is contained in:
Gustavo Bordoni 2014-08-02 21:05:44 -03:00
parent 72fff668d4
commit c4082c6867
1 changed files with 61 additions and 44 deletions

View File

@ -3,53 +3,70 @@
* *
* Modified - products have no children (non hierarchical) * Modified - products have no children (non hierarchical)
*/ */
jQuery('table.widefat tbody th, table.widefat tbody td').css('cursor','move'); ( function( $ ){
$( document ).ready(function(){
$('table.widefat tbody th, table.widefat tbody td').css('cursor','move');
jQuery("table.widefat tbody").sortable({ $("table.widefat tbody").sortable({
items: 'tr:not(.inline-edit-row)', items: 'tr:not(.inline-edit-row)',
cursor: 'move', cursor: 'move',
axis: 'y', axis: 'y',
containment: 'table.widefat', containment: 'table.widefat',
scrollSensitivity: 40, scrollSensitivity: 40,
helper: function(e, ui) { helper: function(event, ui) {
ui.children().each(function() { jQuery(this).width(jQuery(this).width()); }); ui.each(function() { $(this).width($(this).width()); });
return ui; return ui;
}, },
start: function(event, ui) { start: function(event, ui) {
if ( ! ui.item.hasClass('alternate') ) ui.item.css( 'background-color', '#ffffff' ); ui.placeholder.children().each(function(){
ui.item.children('td,th').css('border-bottom-width','0'); var $original = ui.item.children().eq( ui.placeholder.children().index(this) ),
ui.item.css( 'outline', '1px solid #dfdfdf' ); $this = $( this );
},
stop: function(event, ui) {
ui.item.removeAttr('style');
ui.item.children('td,th').css('border-bottom-width','1px');
},
update: function(event, ui) {
jQuery('table.widefat tbody th, table.widefat tbody td').css('cursor','default');
jQuery("table.widefat tbody").sortable('disable');
var postid = ui.item.find('.check-column input').val(); // this post id $.each( $original[0].attributes, function( k, attr ){
var postparent = ui.item.find('.post_parent').html(); // post parent $this.attr( attr.name, attr.value );
} );
});
if ( ! ui.item.hasClass('alternate') ) {
ui.item.css( 'background-color', '#ffffff' );
}
ui.item.children('td,th').css('border-bottom-width','0');
ui.item.css( 'outline', '1px solid #dfdfdf' );
},
stop: function(event, ui) {
ui.item.removeAttr('style');
ui.item.children('td,th').css('border-bottom-width','1px');
},
update: function(event, ui) {
$('table.widefat tbody th, table.widefat tbody td').css('cursor','default');
$("table.widefat tbody").sortable('disable');
var prevpostid = ui.item.prev().find('.check-column input').val(); var postid = ui.item.find('.check-column input').val(); // this post id
var nextpostid = ui.item.next().find('.check-column input').val(); var postparent = ui.item.find('.post_parent').html(); // post parent
// show spinner var prevpostid = ui.item.prev().find('.check-column input').val();
ui.item.find('.check-column input').hide().after('<img alt="processing" src="images/wpspin_light.gif" class="waiting" style="margin-left: 6px;" />'); var nextpostid = ui.item.next().find('.check-column input').val();
// go do the sorting stuff via ajax // show spinner
jQuery.post( ajaxurl, { action: 'woocommerce_product_ordering', id: postid, previd: prevpostid, nextid: nextpostid }, function(response){ ui.item.find('.check-column input').hide().after('<img alt="processing" src="images/wpspin_light.gif" class="waiting" style="margin-left: 6px;" />');
jQuery.each(response, function(key,value) { jQuery('#inline_'+key+' .menu_order').html(value); });
ui.item.find('.check-column input').show().siblings('img').remove();
jQuery('table.widefat tbody th, table.widefat tbody td').css('cursor','move');
jQuery("table.widefat tbody").sortable('enable');
});
// fix cell colors // go do the sorting stuff via ajax
jQuery( 'table.widefat tbody tr' ).each(function(){ $.post( ajaxurl, { action: 'woocommerce_product_ordering', id: postid, previd: prevpostid, nextid: nextpostid }, function(response){
var i = jQuery('table.widefat tbody tr').index(this); $.each(response, function(key,value) { $('#inline_'+key+' .menu_order').html(value); });
if ( i%2 == 0 ) jQuery(this).addClass('alternate'); ui.item.find('.check-column input').show().siblings('img').remove();
else jQuery(this).removeClass('alternate'); $('table.widefat tbody th, table.widefat tbody td').css('cursor','move');
}); $("table.widefat tbody").sortable('enable');
} });
});
// fix cell colors
$( 'table.widefat tbody tr' ).each(function(){
var i = $('table.widefat tbody tr').index(this);
if ( i%2 === 0 ){
$(this).addClass('alternate');
} else {
$(this).removeClass('alternate');
}
});
}
});
});
}( jQuery ) );