Easy Coding
  Forum Wiki Tagging Projekte Karte RSS
» Start
» All Recent Changes
» Wiki Suche
» Wiki Hilfe

Coder How To's

Algorithmen Informationen

edit SideBar

Neue Wiki Eintrage finden Sie unter easy-coding.de/wiki.

Ordner auslesen mit der Yahoo Library

PHP und JavaScript können nicht miteinander kommunizieren? Doch, mit AJAX ist das möglich. Schaut euch die handleResponse Funktion an. Dieser erhält ein Objekt mit dem kompletten Inhalt der PHP Datei. Dieser Inhalt wird dann verarbeitet und eine JavaScript Baum wird aufgebaut..

ordner.html
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml"><head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  4. <!--Yahoo! User Interface Library: http://twiki.corp.yahoo.com/view/Devel/PresentationPlatform-->
  5. <!--Begin YUI CSS infrastructure, including Standard Reset, Standard Fonts, and CSS Page Grids -->
  6. <link rel="stylesheet" type="text/css" href="build/fonts/fonts.css">
  7. <link rel="stylesheet" type="text/css" href="build/grids/grids.css"><!--end YUI CSS infrastructure-->
  8. <!--begin YUIL Utilities -->
  9. <link rel="stylesheet" type="text/css" href="css/code.css">
  10. <link rel="stylesheet" type="text/css" href="css/local/tree.css">
  11. <script src="build/yahoo/yahoo-min.js"></script>
  12. <script src="build/event/event-min.js"></script>
  13. <script src="build/connection/connection-min.js"></script>
  14. <script src="build/treeview/treeview.js"></script>
  15. <script type="text/javascript">
  16. //tree muss global sein, damit er aus den inline funktionen darauf zugegriffen werden kann
  17. var tree;
  18.  
  19. /* AJAX  */
  20. var handleSuccess = function(o) {
  21.         if(o.responseText !== undefined) {
  22.                 var node, subfolder = o.responseText.split(';');
  23.                 /*
  24.                         response = "path;id;folder;folder;folder;...."
  25.                         subfolder[0] = path
  26.                         subfolder[1] = id
  27.                         subfolder[2-n] = folders
  28.                 */
  29.  
  30.                 if(subfolder[1] == 0) //Oberste Hierarchie
  31.                         node = tree.getRoot();
  32.  
  33.                 else //Füge die ausgelesenen Unterordner dem zugeordneten Ordner zu (dem Vater)
  34.                         node = tree.getNodeByIndex(subfolder[1]);
  35.  
  36.                 for(var i=2; i<subfolder.length; i++) {
  37.                         new YAHOO.widget.TextNode(subfolder[i], node, false);
  38.                 }
  39.  
  40.                 //Zeichne den Baum neu
  41.                 tree.draw();
  42.         }
  43. }
  44.  
  45. var handleFailure = function(o) {
  46.         alert('error');
  47. }
  48.  
  49. var callback = {
  50.         success:handleSuccess,
  51.         failure:handleFailure,
  52.         argument: { param:'param' }
  53. };
  54.  
  55. function folderTree(index) {
  56.         var path = '';
  57.         if(index > 0) { //baue den pfad von der wurzel aus, neu auf
  58.                 var par = tree.getNodeByIndex(index);
  59.                 do {
  60.                         path = par.label+"/"+path;
  61.                         par = par.parent;
  62.                 } while(par.parent != null);
  63.         }
  64.         //sende den ajax request an die php datei
  65.         var request = YAHOO.util.Connect.asyncRequest('POST', 'folder.php', callback, 'path='+path+'&index='+index);
  66. }
  67.  
  68.  
  69. /*create namespace for examples:*/
  70. YAHOO.namespace("example");
  71.  
  72. /* Using Crockford's "Module Pattern": */
  73. YAHOO.example.treeExample = function() {
  74.  
  75.         var currentIconMode;
  76.  
  77.         function changeIconMode() {
  78.                 var newVal = parseInt(this.value);
  79.                 if (newVal != currentIconMode) {
  80.                     currentIconMode = newVal;
  81.                 }
  82.                 buildTree();
  83.         }
  84.  
  85.         function loadNodeData(node, fnLoadComplete) {
  86.                 //callback with XMLHttpRequest
  87.                 //for more data.
  88.                 folderTree(node.index);
  89.  
  90.                 //When we're done creating child nodes, we execute the node's
  91.                 //loadComplete callback method which comes in as our loader's
  92.                 //second argument (we could also access it at node.loadComplete,
  93.                 //if necessary):
  94.                 fnLoadComplete();
  95.                 tree.draw();
  96.         }
  97.  
  98.         function buildTree() {
  99.                    //create a new tree:
  100.                    tree = new YAHOO.widget.TreeView("treeContainer");
  101.  
  102.                    //turn dynamic loading on for entire tree:
  103.                    tree.setDynamicLoad(loadNodeData, currentIconMode);
  104.  
  105.                    folderTree(0);
  106.  
  107.                    //render tree with these root nodes; all descendants of these nodes
  108.                    //will be generated as needed by the dynamic loader.
  109.                    tree.draw();
  110.                 }
  111.  
  112.  
  113.         return {
  114.                 init: function() {
  115.                         YAHOO.util.Event.on(["mode0", "mode1"], "click", changeIconMode);
  116.                         var el = document.getElementById("mode1");
  117.                         if (el && el.checked) {
  118.                                 currentIconMode = parseInt(el.value);
  119.                         } else {
  120.                                 currentIconMode = 0;
  121.                         }
  122.                         buildTree();
  123.                 }
  124.         }
  125. } ();
  126.  
  127. YAHOO.util.Event.addListener(window, "load", YAHOO.example.treeExample.init, YAHOO.example.treeExample,true)
  128. </script>
  129. <title>Dynamic TreeView Example</title>
  130. </head>
  131. <body id="yahoo">
  132.         <!-- start: secondary column from outer template -->
  133.         <div id="treeContainer"></div>
  134.         <!-- end: secondary column from outer template -->
  135. </body></html>
folder.php
  1. <?php
  2.         $folder2start = 'css/'; //in welchem ordner soll angefangen werden?
  3.         $folder = array();
  4.         $file = array();
  5.         $check = $_REQUEST['path']==''?'.':$_REQUEST['path'];
  6.         $check = $folder2start.$check;
  7.         echo $_REQUEST['path'].';'.$_REQUEST['index'];
  8.         $handle = @opendir($check);
  9.         while ($res = @readdir ($handle)) {
  10.                 if(++$i > 2) {
  11.                         if(is_dir($check.'/'.$res))
  12.                                 $folder[] = $res;
  13.                         else
  14.                                 $file[] = $res;
  15.                 }
  16.         }
  17.         @closedir($handle);
  18.         asort($folder);
  19.         asort($file);
  20.         foreach($folder as $out)
  21.                 echo ';'.$out;
  22.         foreach($file as $out)
  23.                 echo ';'.$out;
  24. ?>
Zuletzt geändert am 21.08.2006 14:26 Uhr
  Impressum