codice:
$cfg['db']['dsn'] = 'mysql://root:1231977@localhost/nestedset';
/**
* Set template path
*/
$cfg['tpl']['path'] = 'tpl/';
/**
* here wo go
*/
$tpl = new Template_PHPLIB($cfg['tpl']['path']);
$tpl->setFile(
array(
"page" => "TreeManager.tpl"
)
);
$tree = new NestedSet;
$tree->connect($cfg['db']['dsn']);
/**
* manipulating the tree
*/
$tpl->setBlock("page","explain","ph_explain");
$tpl->setBlock("explain","explain_row","ph_explain_row");
if ($_REQUEST["cmd"]=="node_new") {
// inserting a node
$node=(int)$_REQUEST["node"];
$tpl->setVar('code', '$new_id = $tree->nodeNew('.$node.');');
$tpl->parse("ph_explain_row","explain_row",true);
$new_id = $tree->nodeNew($node);
if (!$tree->isError($new_id)) {
$tpl->setVar('code', "// New node inserted: ".$new_id);
$tpl->parse("ph_explain_row","explain_row",true);
$tree->setNode($new_id, array("name"=>$_REQUEST["name"]));
$tpl->setVar('code', '$tree->setNode($new_id,array("name"=>"'.$_REQUEST["name"].'"));');
$tpl->parse("ph_explain_row","explain_row",true);
} else {
$tpl->setVar('code', "Error: ".$new_id->getMessage());
$tpl->parse("ph_explain_row","explain_row",true);
}
$tpl->parse("ph_explain","explain",true);
} elseif ($_REQUEST["cmd"]=="node_del") {
// deleting a node
$node=(int)$_REQUEST["node"];
if ($_REQUEST["del_childs"]=="yes") {
$tpl->setVar('code', '$tree->nodeDel('.$node.',TRUE);');
$tpl->parse("ph_explain_row","explain_row",true);
$res = $tree->nodeDel($node,TRUE);
if (!$tree->isError($res)) {
$tpl->setVar('code', "Node deleted (incl. Childs): ".$node);
$tpl->parse("ph_explain_row","explain_row",true);
} else {
$tpl->setVar('code', "Error: ".$res->getMessage());
$tpl->parse("ph_explain_row","explain_row",true);
}
} else {
$tpl->setVar('code', '$tree->nodeDel('.$node.');');
$tpl->parse("ph_explain_row","explain_row",true);
$res = $tree->nodeDel($_REQUEST["node"]);
if (!$tree->isError($res)) {
$tpl->setVar('code', "Node deleted: ".$node);
$tpl->parse("ph_explain_row","explain_row",true);
} else {
$tpl->setVar('code', "Error: ".$res->getMessage());
$tpl->parse("ph_explain_row","explain_row",true);
}
}
$tpl->parse("ph_explain","explain",true);
} elseif ($_REQUEST["cmd"]=="node_move") {
// moving a node (and its childs)
$node=(int)$_REQUEST["node"];
$tpl->setVar('code', '$tree->nodeMove('.$node.',"up");');
$tpl->parse("ph_explain_row","explain_row",true);
$res = $tree->nodeMove($_REQUEST["node"],"up");
if (!$tree->isError($res)) {
$tpl->setVar('code', "Node moved: ".$node);
$tpl->parse("ph_explain_row","explain_row",true);
} else {
$tpl->setVar('code', "Error: ".$res->getMessage());
$tpl->parse("ph_explain_row","explain_row",true);
}
$tpl->parse("ph_explain","explain",true);
}
/**
* read tree from database
*/
$treeItems = $tree->getNodes();
/**
* building forms for inserting an deleting nodes
*/
$tpl->setBlock("page","form","ph_form");
$tpl->setBlock("form","node_list","ph_node_list1");
$tpl->setBlock("form","form_del","ph_form_del");
$tpl->setVar('action', $_SERVER["PHP_SELF"]);
if (is_array($treeItems) && count($treeItems)) {
foreach($treeItems AS $item) {
$indent="";
for($i=0;$i<$item["level"];$i++) {
$indent.="";
}
$tpl->setVar('id', $item["id"]);
$tpl->setVar('name', $indent.$item["name"]);
//$tpl->setBlock('page',stampaDivMenu(0),'stampa');
$tpl->parse("ph_node_list1","node_list",TRUE);
$tpl->parse("ph_node_list2","node_list",TRUE);
}
$tpl->parse("ph_form_del","form_del");
}
$tpl->parse("ph_form","form");
/**
* building table
*/
$tpl->setBlock("page","table","ph_table");
$tpl->setBlock("table","table_row","ph_table_row");
$tpl->setBlock("table_row","struct","ph_struct");
$tpl->setBlock("struct","struct_l","ph_struct_l");
$tpl->setBlock("struct","struct_e","ph_struct_e");
$tpl->setBlock("struct","struct_b","ph_struct_b");
$tpl->setBlock("struct","struct_nb","ph_struct_nb");
$tpl->setBlock("table_row","delete","ph_delete");
$tpl->setBlock("delete","del_single","ph_del_single");
$tpl->setBlock("delete","del_childs","ph_del_childs");
$tpl->setBlock("table_row","move","ph_move");
$tpl->setBlock("move","move_up","ph_move_up");
$tpl->setBlock("move","move_not","ph_move_not");
if (is_array($treeItems)) {
foreach($treeItems AS $key=>$item) {
if ($key%2) {
$tpl->setVar("col","#EEEEEE");
} else {
$tpl->setVar("col","#FFFFFF");
}
$tpl->setVar($item);
// Build the structure
$tpl->parse("ph_struct","");
if (($item["level"] == 1))
$parent = array();
if ( ($item["level"] >= $last["level"]))
$parent[$last["level"]] = $last;
for ($i=2;$i<$item["level"];$i++) {
if ($parent[$i]["lower"]) {
$tpl->parse("ph_struct","struct_l",true);
} else {
$tpl->parse("ph_struct","struct_e",true);
}
}
if ( ($item["level"] > 1) )
if ($item["lower"]) {
$tpl->parse("ph_struct","struct_b",true);
} else {
$tpl->parse("ph_struct","struct_nb",true);
}
// to move or not to move
$tpl->parse("ph_move","");
if ( $item["upper"] ) {
$tpl->parse("ph_move","move_up");
} else {
$tpl->parse("ph_move","move_not");
}
// childs ?
$tpl->parse("ph_delete","");
if ($item["childs"]) {
$tpl->parse("ph_delete","del_childs");
} else {
$tpl->parse("ph_delete","del_single");
}
$tpl->parse("ph_table_row","table_row",true);
$last=$item;
}
$tpl->parse("ph_table","table",true);
}
$tpl->pparse("out","page",true);
$cfg['db']['dsn'] = 'mysql://root:Pixel1977@localhost/nestedset';
$tree1 = new NestedSet;
$tree1->connect($cfg['db']['dsn']);
e il template: