Hi ihr alle
Beim Basteln mit der Tree Component hab ich eben ein nettes kleines Script gebastelt - was vielen von euch das Handling mit der Tree Component versüßen dürfte
Das Script stammt in der Orinalform hier aus dem Flashforum und wurde von mir um die XML Output Methode erweitert...
Vorher konnte das Script einen Ordner rekursiv auslesen und darstellen...
nun kann er das ganze auch in eine XML verpacken..so das die tree komponente es direkt verarbeiten kann...
Ihr müsst im Script lediglich den Pfad zum Ordner angeben...
und in Flash dann anstatt beim laden des xml`s
ActionScript:
myXML.load(nameDieserPHPDatei)
danach
ActionScript:
myTree.dataProvider(this.firstChild.firstChild)
das wars auch schon

sagt wie es euch gefällt !
PHP-Code:
<?php
/**
* show_dir_array: rekursive ausgabe aller elemente einer verzeichnisstruktur.
* @author: [url]http://www.axolander.de[/url]
* @param string myDir: ordner, der durchsucht werden soll.
* @param int indent: kontrollvariable, um zu bestimmen, wie
* viele einrueckungen benoetigt werden.
* @return: mehrdimensionales array mit allen files.
* hinweis: aufruf eines ordners bitte IMMER OHNE slash dahinter, sonst
* funktioniert das ganze nicht richtig.
* wenn die integrität des ersten aufrufs sichergestellt werden kann,
* kann die funktion beschleunigt werden, indem
* die zwei bedingungen if(substr...) und if(!is_dir...)
* auskommentiert werden.
*/
function show_dir_array($myDir = ".")
{
// diese bedingung auskommentieren, falls o.g.
// bedingung sichergestellt werden kann,
// koennte bei großen ordnern zeit sparen.
//rausgemacht wegen Performance
if(substr($myDir,-1) == "/") $myDir = substr($myDir,0,-1);
if(!is_dir($myDir)) return array();
$dir = opendir($myDir);
$foo = array();
while($file = readdir($dir))
{
$newDir = $myDir . "/" . $file;
if($file == "." || $file == "..") continue;
if(is_dir($newDir)) $foo[] = show_dir_array($newDir . "/");
$foo[] = $newDir;
}
return $foo;
}
//****************************************************************************************
/**
* show_dir_string: rekursive ausgabe aller elemente einer verzeichnisstruktur.
* @author: [url]http://www.axolander.de[/url]
* @param string myDir: ordner, der durchsucht werden soll.
* @param int indent: kontrollvariable, um zu bestimmen, wie viele einrueckungen
* benoetigt werden.
* @return: string, eingerueckt
* hinweis: aufruf eines ordners bitte IMMER OHNE slash dahinter, sonst
* funktioniert das ganze nicht richtig.
* wenn dieser aufruf sichergestellt werden kann, kann die
* funktion beschleunigt werden, indem die zwei bedingungen
* if(substr...) und if(!is_dir...) auskommentiert werden.
*/
function show_dir_string($myDir = ".", $indent = 0)
{
// diese bedingung auskommentieren, falls o.g.bedingung sichergestellt werden kann,koennte bei großen ordnern zeit sparen.
if(substr($myDir,-1) == "/")
$myDir = substr($myDir,0,-1);
if(!is_dir($myDir))
return "";
$dir = opendir($myDir);
$einrueckung = str_repeat(" ", $indent * 4);
$foo = "";
while($file = readdir($dir))
{
$newDir = $myDir . "/" . $file;
if($file == "." || $file == "..")
continue;
if(is_dir($newDir))
$foo .= show_dir_string($newDir . "/", ++$indent);
$foo .= $einrueckung . $newDir . "<br />\n";
}
return $foo;
}
//****************************************************************************************
/**
* show_dir_xml: rekursive ausgabe aller elemente einer verzeichnisstruktur in flash konformem xml format
* @author: [url]http://nkylab.de/blog[/url]
* @param string myDir: ordner, der durchsucht werden soll.
* @param int indent: kontrollvariable, um zu bestimmen, wie
* viele einrueckungen benoetigt werden.
* @return: xml string
* hinweis: aufruf eines ordners bitte IMMER OHNE slash dahinter, sonst
* funktioniert das ganze nicht richtig.
* wenn die integrität des ersten aufrufs sichergestellt werden kann,
* kann die funktion beschleunigt werden, indem
* die zwei bedingungen if(substr...) und if(!is_dir...)
* auskommentiert werden.
*/
function show_dir_xml($myDir = ".", $indent = 0)
{
// diese bedingung auskommentieren, falls o.g.bedingung sichergestellt werden kann,koennte bei großen ordnern zeit sparen.
if(substr($myDir,-1) == "/")
$myDir = substr($myDir,0,-1);
if(!is_dir($myDir))
return "";
$dir = opendir($myDir);
$einrueckung = str_repeat(" ", $indent * 4);
$foo = "";
while($file = readdir($dir))
{
$newDir = $myDir . "/" . $file;
if($file == "." || $file == "..")
continue;
if(is_dir($newDir))
$foo .= '<node label="'.$file.'">'."\n".show_dir_xml($newDir . "/", 1)."</node>\n";
else
$foo .= $einrueckung.'<node label="'.$file.'"/>'."\n";
}
return $foo;
}
//****************************************************************************************
//
/* erste methode: alle files in einem array, schneller als show_dir_string */
// $arr = show_dir_array();
// print_r($arr);
/* zweite methode: string-ausgabe */
//echo "<html><body>";
//echo show_dir_string("../../../test/");
//echo "</body></html>";
/* dritte methode: xml-ausgabe für flash tree*/
echo "<XMLDocumentObject>\n<node>\n".show_dir_xml("../../../downloads/")."</XMLDocumentObject>";
?>