public function actionMoveCopy() { $moved_node_id = $_POST['moved_node']; $new_parent_id = $_POST['new_parent']; $new_parent_root_id = $_POST['new_parent_root']; $previous_node_id = $_POST['previous_node']; $next_node_id = $_POST['next_node']; $copy = $_POST['copy']; //the following is additional info about the operation provided by // the jstree.It's there if you need it.See documentation for jstree. // $old_parent_id=$_POST['old_parent']; //$pos=$_POST['pos']; // $copied_node_id=$_POST['copied_node']; // $replaced_node_id=$_POST['replaced_node']; //the moved,copied node $moved_node = $this->loadModel($moved_node_id); //if we are not moving as a new root... if ($new_parent_root_id != 'root') { //the new parent node $new_parent = $this->loadModel($new_parent_id); //the previous sibling node (after the move). if ($previous_node_id != 'false') { $previous_node = $this->loadModel($previous_node_id); } //if we move if ($copy == 'false') { if ($moved_node->moveAsFirst($new_parent)) { echo json_encode(array('success' => true)); exit; } //if the moved node is only child of new parent node if ($previous_node_id == 'false' && $next_node_id == 'false') { if ($moved_node->moveAsFirst($new_parent)) { echo json_encode(array('success' => true)); exit; } } else { if ($previous_node_id == 'false' && $next_node_id != 'false') { if ($moved_node->moveAsFirst($new_parent)) { echo json_encode(array('success' => true)); exit; } } else { if ($previous_node_id != 'false' && $next_node_id == 'false') { if ($moved_node->moveAsLast($new_parent)) { echo json_encode(array('success' => true)); exit; } } else { if ($previous_node_id != 'false' && $next_node_id != 'false') { if ($moved_node->moveAfter($previous_node)) { echo json_encode(array('success' => true)); exit; } } } } } } else { //create the copied Classroom model $copied_node = new Classroom(); //copy the attributes (only safe attributes will be copied). $copied_node->attributes = $moved_node->attributes; //remove the primary key $copied_node->id = null; if ($copied_node->appendTo($new_parent)) { echo json_encode(array('success' => true, 'id' => $copied_node->primaryKey)); exit; } } } else { //if moved/copied node is not Root if (!$moved_node->isRoot()) { if ($moved_node->moveAsRoot()) { echo json_encode(array('success' => true)); } else { echo json_encode(array('success' => false)); } } else { echo json_encode(array('success' => false, 'message' => 'Node is already a Root.Roots are ordered by id.')); } } }