xzn_html_tree(1.0) 可折叠大纲 - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- xzn_html_tree(1.0) 可折叠大纲 (http://www.webasp.net/article/6/5911.htm) |
| -- 作者:未知 -- 发布日期: 2003-07-26 |
| <? /** 可折叠大纲 * 类名 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"; } } ?> |
| webasp.net |