Trådstart 1 jan. 2004 09:54 #1 Jag tänkte använda HTML_TreeMenu-1.1.9 för att bygga upp en katalogstruktur. Problemet jag har är bara att komma på hur jag ska kunna bygga upp menyn.
Någon som har nått bra sätt att lista alla kataloger som finns under en viss katalog. Alltså även dom kataloger som ligger under en annan katalog.
Hoppas någon fattar vad jag menar.
Matte Medlem sedan aug. 2000 2 975 inlägg Ta en titt på readdir () i manualen.
I Example 2 har du ett bra exempel på hur man kan lista en katalog.
Detta kan du sedan kombinera med is_dir () och is_file ().
Jo så långt hade jag kommit innan också. Jag har hittat info på nätet om hur man kunde lista kataloger i kataloger så att säga. Just nu håller jag bara på med att lära mig hur jag ska bygga en meny av resultatet.
function recursive_listdir($base) {
static $dirlist = array();
if(is_dir($base)) {
$dh = opendir($base);
while (false !== ($dir = readdir($dh))) {
if (is_dir($base ."/". $dir) && $dir !== '.' && $dir !== '..') {
$subbase = $base ."/". $dir;
$dirlist[] = $subbase;
$subdirlist = recursive_listdir($subbase);
}
}
closedir($dh);
}
return $dirlist;
}
Så här blev det:
$menu = new HTML_TreeMenu();
$tmpArray = recursive_listdir("/home/httpd/data/");
$tmpNode = array();
usort($tmpArray, 'SortbyName');
foreach ($tmpArray as $val) {
$tmpSplit = array();
$tmpSplit = split("/", strstr($val[0], $Username));
$tmpName = $tmpSplit[count($tmpSplit) - 1];
if (array_key_exists($tmpSplit[count($tmpSplit) - 2], $tmpNode)) {
$tmpNode[$tmpName] = &$tmpNode[$tmpSplit[count($tmpSplit) - 2]]->addItem(new HTML_TreeNode(array('text' => $tmpName, 'link' => "test.php", 'icon' => $icon, 'expandedIcon' => $expandedIcon)));
} else {
$tmpNode[$tmpName] = new HTML_TreeNode(array('text' => $tmpName, 'link' => "test.php", 'icon' => $icon, 'expandedIcon' => $expandedIcon));
$menu->addItem($tmpNode[$tmpName]);
$last = $tmpName;
}
}
$treeMenu = &new HTML_TreeMenu_DHTML($menu, array('images' => 'images', 'defaultClass' => 'treeMenuDefault'));
$treeMenu->printMenu();