Estoy tratando de averiguar cómo deshacer solo un nodo de carpeta que no se movió correctamente. El siguiente código es un ejemplo de lo que intento hacer. El problema surge cuando seleccionas un par de carpetas y las mueves a otra carpeta. Si uno de los directorios no se puede mover, quiero poder retrotraerlo a su padre original. Desafortunadamente $.jstree.rollback(data.rlbk);
cancela todas las carpetas que se seleccionaron en sus ubicaciones anteriores.Cómo deshacer nodos que no se pudieron mover en jstree
$("#tree").jstree({...}).bind("move_node.jstree", function (e, data) {
// process all selected nodes directory
data.rslt.o.each(function (i) {
// Send request.
var move = $.parseJSON($.ajax({
url: "./jstree.php",
type: 'post',
async: false,
data: {
operation: "move_dir",
....
}
}).responseText);
// When everything's ok, the reponseText will be {success: true}
// In all other cases it won't exist at all.
if(move.success == undefined){
// Here I want to rollback the CURRENT failed node.
// $.jstree.rollback(data.rlbk); will rollback all
// of the directories that have been moved.
}
}
});
¿Hay alguna manera de hacerlo?
Lamentablemente, no puedo aceptar esta respuesta, porque para cuando se publicó ya he escrito un plugin de jquery similar que tenía todo lo que necesitaba. Perdón por mi respuesta tardía, pero veo que la gente está votando y, por lo tanto, creo que debería decir por qué no acepté ninguna respuesta. Dejo esta pregunta abierta, así que si alguien encuentra útil la respuesta de @ DaveF, ¡por favor hágala votar! – tftd
@tftd Ayudaría si pudieras compartir tu complemento, si no te importa, por supuesto. – alejosoft