Foros del Web » Programación para mayores de 30 ;) » Programación General »

folder tree

Estas en el tema de folder tree en el foro de Programación General en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 02/03/2010, 09:12
 
Fecha de Ingreso: febrero-2008
Mensajes: 79
Antigüedad: 16 años, 8 meses
Puntos: 1
folder tree

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);
    }
}
  #2 (permalink)  
Antiguo 02/03/2010, 17:04
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: folder tree

Hola,

Posiblemente tengas que cerrar las etiquetas XML.
En XML las etiquetas de cierre son obligatorias.

Cita:
Iniciado por willhemsv Ver Mensaje
Código PHP:
                     $string "    <node label=\"".$archivo."\">\n"
Código:
<node> 
    <node label="ds"> 
    <node label="Nueva carpeta">
Código PHP:
                     $string "    <node label=\"".$archivo."\" />\n"
Código:
<node> 
    <node label="ds" /> 
    <node label="Nueva carpeta" />
Además, posiblemente ActionScript genera un error en algún momento al encontrar que no es un archivo XML well-formed válido.

Saludos,
  #3 (permalink)  
Antiguo 03/03/2010, 11:04
 
Fecha de Ingreso: febrero-2008
Mensajes: 79
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: folder tree

Muchas gracias HackmanC por tu respuesta, aunque no era eso lo que yo esperaba, pero al final me sirvio para decidirme por algo, asi que bien. ahora sigo la lucha para poder terminar la galery. salu2.
  #4 (permalink)  
Antiguo 03/03/2010, 13:20
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: folder tree

Hola,

Cita:
Iniciado por willhemsv Ver Mensaje
... aunque no era eso lo que yo esperaba, pero al final me sirvio para decidirme por algo, ...
Que bueno que te haya servidor pero me queda una duda,
¿Que sería lo que esperabas?

Cita:
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.
Básicamente ese es el motivo por el cual no generaba lo que querías, ActionScript interpreta esto:
Código:
<nodo 1>
    <nodo 1.1>
        <nodo 1.1.1>
            <nodo 1.1.1.1>
            </nodo>
fin... y error XML.
Mientras que al cerrarlas "/" interpreta esto:
Código:
<nodo 1>
    <nodo 1.1 />
    <nodo 1.2 />
    <nodo 1.3 />
</nodo>
Aunque posiblemente yo no comprendí exactamente tu pregunta,
Saludos,

Etiquetas: folder, tree, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:06.