Hola amigos de fdw. Les cuento mi problema:
Yo quiero crear un "folder tree" (arbol de carpetas) en flash, el cual sea dinamico, es decir, que si yo borro una carpeta en el servidor esta deje de aparecer automaticamente en el folder tree de flash. Ahora, yo buscando por internet logre crear el folder tree y el archivo xml para mostrar las carpetas.
Pero el punto es el siguiente lo que yo encontre no era modificable, es decir yo tenia que modificar manualmente el xml para que los cambios en el flash fueran visibles. Lo que a mi se me ocurrio fue crear un php para que leyera las carpetas y a su ves crease un xml para que este flash lo leyera. El punto está en que no logro hacer que las carpetas que son independientes se vean como tal. Por ejemplo, si yo tengo 3 carpetas distintas ("c1","c2" y "c3") yo lo que veo en el arbol es que "c3" está dentro de "c2" y esta a su vez esta dentro de "c1" lo que no es asi. les muestro los codigos que tengo y la url para que vean el ejemplo.
http://www.radiosomosamigos.cl/prueba/abrir.html
De antemano agradezco el tiempo de las quienes revisen el mensaje y de quienes respondan.
Código PHP:
<?php
unlink('TreeNavMenu.xml');
$archivo = 'TreeNavMenu.xml';
$dir = "./";
$fp = fopen($archivo, "a");
$string = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<node>\n";
$write = fputs($fp, $string);
if (is_dir($dir))
{
if ($gd = opendir($dir))
{
while (($archivo = readdir($gd)) !== false)
{
if ($archivo != "." & $archivo != ".." & $archivo != "updater.php")
{
if (is_dir($archivo))
{
$string = " <node label=\"".$archivo."\">\n";
$write = fputs($fp, $string);
}
}
}
closedir($gd);
}
}
$string = " </node>\n";
$write = fputs($fp, $string);
fclose($fp);
echo "''";
?>
Codigo XML generado:
Código:
<node>
<node label="ds">
<node label="Nueva carpeta">
<node label="loco">
<node label="c2">
<node label="c4">
<node label="Scripts">
<node label="c1">
<node label="c3">
<node label="sdfghsz">
</node>
Codigo archivo .as
Código:
import mx.controls.Tree;
class TreeNavMenu extends MovieClip {
var menuXML:XML;
var menuTree:Tree;
function TreeNavMenu() {
// Configurar el aspecto del árbol y de los controladores de eventos.
menuTree.setStyle("fontFamily", "_sans");
menuTree.setStyle("fontSize", 12);
// Cargar el menú XML.
var treeNavMenu = this;
menuXML = new XML();
menuXML.ignoreWhite = true;
menuXML.load("TreeNavMenu.xml");
menuXML.onLoad = function() {
treeNavMenu.onMenuLoaded();
};
}
function change(event:Object) {
if (menuTree == event.target) {
var node = menuTree.selectedItem;
// Si es una rama, expandirla o contraerla.
if (menuTree.getIsBranch(node)) {
menuTree.setIsOpen(node, !menuTree.getIsOpen(node), true);
}
// Si es un hipervínculo, saltar a él.
var url = node.attributes.url;
if (url) {
getURL(url, "_top");
}
// Borrar cualquier selección.
menuTree.selectedNode = null;
}
}
function onMenuLoaded() {
menuTree.dataProvider = menuXML.firstChild;
menuTree.addEventListener("change", this);
}
}