<?
/** 可折叠大纲
* 类名 tree
* 存放位置 xzn/html/tree.php
*/
/** 节点类
* 用于在树中保存相关参数
*
* @param $id 节点号
* @param $text 节点标题
* @param $value 节点参数,一般为url
* @param $image 节点图片
*/
class treenode {
var $id;
var $text;
var $value;
var $image;
function treenode($id,$text,$value,$image) {
$this->id = $id;
$this->text = $text;
$this->value = $value;
$this->image = $image;
}
}
/** 树类
* 用于保存和输出可折叠大纲
* 可折叠大纲使用frontpage 2000的javascript脚本
*
* 方法
* set()
* 设置节点,节点编号采用1.2.3.4或1-2-3-4的形式。
* 无层次限制。输入次序不限。
* @param $id 节点号
* @param $text 节点标题
* @param $value 节点参数,一般为url
* @param $image 节点图片
*
* display()
* 向页面输出可折叠大纲
*
* 属性
* @public $node 数组,用于保存节点
* @public $jspath 脚本outline.js存放位置
*/
class tree {
var $node;
var $jspath;
function set($id,$text,$value="",$image="plus.gif") {
$d = split("[.-]",$id);
$e = "";
for($i=0;$i<count($d);$i++)
$e .= "[".$d][$i]."]";
$n = new treenode($id,$text,$value,$image);
eval("\$p=&\$this->node$e;");
$p[node] = $n;
}
function display() {
echo <script language="javascript" fptype="dynamicoutline">."\n";
echo <!–."\n";
echo function dynoutline() {}."\n";
echo //–>."\n";
echo </script>."\n";
echo <script language="javascript1.2" fptype="dynamicoutline" src=".$jspath.outline.js">."\n";
echo </script>."\n";
echo <script language="javascript1.2" fptype="dynamicoutline" for="document" event="onreadystatechange()">."\n";
echo <!–."\n";
echo initoutline()."\n";
echo //–>."\n";
echo </script>."\n";
echo <table dynamicoutline initcollapsed border="0" cellpadding="0" cellspacing="0" onclick="dynoutline()">."\n";
ksort($this->node);
reset($this->node);
while(list($key,$value) = each($this->node)) {
$this->next($value,0);
}
echo "</table>\n";
}
function next($node,$level) {
if(! is_array($node))
return;
if(isset($node[node])) {
// echo $level.",".$node[node]->id.",".$node[node]->text.",".$node[node]->value.",".$node[node]->image."\n";
echo <tr>."\n";
echo <td valign="baseline" width="42"><img src=".$node[node]->image."></td>."\n";
echo <td valign="top" width="100%">;
if(empty($node[node]->value))
echo $node[node]->text."\n";
else
echo <a href=".$node[node]->value.">.$node[node]->text."</a>\n";
echo <table border="0" cellpadding="0" cellspacing="0" width="100%">."\n";
}
if(count($node) == 1) {
echo "</td></tr>\n</table>\n";
return;
}
ksort($node);
reset($node);
while(list($key,$value) = each($node)) {
$this->next($value,$level+1);
}
echo "</td></tr>\n</table>\n";
}
}
?>
