2011-09-19 16:53:08 +00:00
/* Modifided script from the simple-page-ordering plugin */
2014-01-31 02:44:17 +00:00
jQuery ( function ( $ ) {
2011-09-19 16:53:08 +00:00
$ ( 'table.widefat.wp-list-table tbody th, table.widefat tbody td' ) . css ( 'cursor' , 'move' ) ;
2014-01-31 02:44:17 +00:00
2011-11-18 15:03:29 +00:00
$ ( "table.widefat.wp-list-table" ) . sortable ( {
items : 'tbody tr:not(.inline-edit-row)' ,
2011-09-19 16:53:08 +00:00
cursor : 'move' ,
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' ) ;
ui . item . css ( 'outline' , '1px solid #aaa' ) ;
} ,
2014-01-31 02:44:17 +00:00
stop : function ( event , ui ) {
2011-09-19 16:53:08 +00:00
ui . item . removeAttr ( 'style' ) ;
2014-01-31 02:44:17 +00:00
ui . item . children ( 'td,th' ) . css ( 'border-bottom-width' , '1px' ) ;
2011-09-19 16:53:08 +00:00
} ,
2014-01-31 02:44:17 +00:00
update : function ( event , ui ) {
2011-09-19 16:53:08 +00:00
var termid = ui . item . find ( '.check-column input' ) . val ( ) ; // this post id
var termparent = ui . item . find ( '.parent' ) . html ( ) ; // post parent
2014-01-31 02:44:17 +00:00
2011-09-19 16:53:08 +00:00
var prevtermid = ui . item . prev ( ) . find ( '.check-column input' ) . val ( ) ;
var nexttermid = ui . item . next ( ) . find ( '.check-column input' ) . val ( ) ;
2014-01-31 02:44:17 +00:00
2011-09-19 16:53:08 +00:00
// can only sort in same tree
var prevtermparent = undefined ;
if ( prevtermid != undefined ) {
var prevtermparent = ui . item . prev ( ) . find ( '.parent' ) . html ( ) ;
if ( prevtermparent != termparent ) prevtermid = undefined ;
}
2014-01-31 02:44:17 +00:00
2011-09-19 16:53:08 +00:00
var nexttermparent = undefined ;
if ( nexttermid != undefined ) {
nexttermparent = ui . item . next ( ) . find ( '.parent' ) . html ( ) ;
if ( nexttermparent != termparent ) nexttermid = undefined ;
2014-01-31 02:44:17 +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
2011-09-19 16:53:08 +00:00
if ( ( prevtermid == undefined && nexttermid == undefined ) || ( nexttermid == undefined && nexttermparent == prevtermid ) || ( nexttermid != undefined && prevtermparent == termid ) ) {
2012-04-10 18:06:12 +00:00
$ ( "table.widefat.wp-list-table" ) . sortable ( 'cancel' ) ;
2011-09-19 16:53:08 +00:00
return ;
}
2014-01-31 02:44:17 +00:00
2011-09-19 16:53:08 +00:00
// show spinner
ui . item . find ( '.check-column input' ) . hide ( ) . after ( '<img alt="processing" src="images/wpspin_light.gif" class="waiting" style="margin-left: 6px;" />' ) ;
2014-01-31 02:44:17 +00:00
2011-09-19 16:53:08 +00:00
// go do the sorting stuff via ajax
2014-01-31 02:44:17 +00:00
$ . post ( ajaxurl , { action : 'woocommerce_term_ordering' , id : termid , nextid : nexttermid , thetaxonomy : woocommerce _term _ordering _params . taxonomy } , function ( response ) {
2011-09-19 16:53:08 +00:00
if ( response == 'children' ) window . location . reload ( ) ;
else {
ui . item . find ( '.check-column input' ) . show ( ) . siblings ( 'img' ) . remove ( ) ;
}
} ) ;
2014-01-31 02:44:17 +00:00
2011-09-19 16:53:08 +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' ) ;
} ) ;
}
} ) ;
} ) ;