読者です 読者をやめる 読者になる 読者になる

PEAR::HTML_TreeMenuでディレクトリツリーを生成

Wikiの一覧ってカテゴリー別に分けれたらいいよねみたいな話があったのと,
それをWindowsのエクスプローラみたいに操作できたらいいよねなんて思ったので書いてみた。

WebブラウザでWidowsのエクスプローラみたいなことをしようと思ったら
それなりにJavaScriptの知識がないといけないんだけど, HTML_TreeMenuを使うとそのへんを
うまくカバーしてくれるのでかなり便利。というかJavaScript勉強しないとなあ。

function printTree($root_path){
    $root = new HTML_TreeMenu();
    $root = createHtmlTree($root_path, $root);
    $tree = new HTML_TreeMenu_DHTML($root);
    print($tree->toHTML());
}

function createHtmlTree($dir, $root){

    $i = 0;
    if($handle = opendir($dir)){
    	while(false !== $file = readdir($handle)){
    	    if($file != "." && $file != ".."){
                if(is_dir($dir."/".$file)){
                    $top_nodes[$i] = createNodes($dir."/".$file);
                    $root->addItem($top_nodes[$i++]);
                }
                else{
                    $root->addItem(new HTML_TreeNode(array('text' => $dir."/".$file, 
                                                           'link' => $dir."/".$file)));
                }
            }
        }
        closedir($handle);
    }

    return $root;
}

function createNodes($dir){

    $node = new HTML_TreeNode(new HTML_TreeNode(array('text' => $dir, 'link' => '')));
	
    if($handle = opendir($dir)){
	while(false !== $file = readdir($handle)){
	    if($file != "." && $file != ".."){
	        if(is_dir($dir."/".$file)){
                    $node->addItem(createNodes($dir."/".$file));
                }
                else{
                    $node->addItem(new HTML_TreeNode(array('text' => $dir."/".$file, 
                                                     'link' => $dir."/".$file)));
                }
            }
        }
        closedir($handle);
    }
    return $node;
}