Dir auslesen für JS Hierarchie Menü

cryo

Mitglied
HI !

Eine Directory auslesen ist nicht das Problem, habe ich kapiert und unter anderem auch hier im Board gefunden.

Das eigentliche Problem ist das Übergeben der gefunden Dir's in einer bestimmten Art und Reihenfolge an ein JS Hierarchie Menü.
Damit meine ich ein Menü wie im Windows Explorer. (JS Menü habe ich schon...auch kapiert).

Info !!!
Wer bei Puretec seinen Webspace hat, und auch seine Domains selber routen kann, weiß jetzt schon was ich meine.
(genau das im Popup wo ich das Verzeichnis festlege wohin meine Domain geroutet wird)


Und Los !!!
In meiner Seite muss ich den Inhalt des JS Menü's definieren -> und hier sind kleine Genies in PHP gefragt :-) Bitte.


Zur Übersicht eine Darstellung eines Directory-Baumes auf den es sich hier mal bezieht
(Habe ihn als Code formatieren lassen, zwecks Übersichtlichkeit)
PHP:
|-> ROOT
|-> Dir_A
|-> Dir_B
|-> Dir_C
        |-> Dir_C_1
        |-> Dir_C_2
                  |-> Dir_C_2_1
                  |-> Dir_C_2_2
                  |-> Dir_C_2_3
                          |-> Dir_C_2_3_1
                          |-> Dir_C_2_3_2
                                  |-> Dir_C_2_3_2_1
                                  |-> Dir_C_2_3_2_2
        |-> Dir_C_3
        |-> Dir_C_4
                  |-> Dir_C_4_1
                  |-> Dir_C_4_2
                          |-> Dir_C_4_2_1
                          |-> Dir_C_4_2_2
|-> Dir_D
|-> Dir_E
|-> Dir_F
$
Und jetzt die JS-Anweisungs-Darstellung
(ROOT bezieht sich auf das Home-Verzeichnis in dem die anderen Ordner liegen)
(Habe sie als Code formatieren lassen, zwecks Übersichtlichkeit)
PHP:
foldersTree = gFld("Root", "dir.php?dir=","","","","") // steht ganz oben als ROOT
insDoc(foldersTree, gLnk ("dir.php?dir=Dir_A","Dir_A","",""))
insDoc(foldersTree, gLnk ("dir.php?dir=Dir_B","Dir_B","",""))

d1 = insFld(foldersTree, gFld ("Dir_C","dir.php?dir=Dir_C","","",""))
	insDoc(d1, gLnk ("dir.php?dir=Dir_C_1","Dir_C_1","",""))
	d2 = insFld(d1, gFld ("Dir_C_2","dir.php?dir=Dir_C_2","","",""))
		insDoc(d2, gLnk ("dir.php?dir=Dir_C_2_1","Dir_C_2_1","",""))
		insDoc(d2, gLnk ("dir.php?dir=Dir_C_2_2","Dir_C_2_2","",""))
		d3 = insFld(d2, gFld ("Dir_C_2_3","dir.php?dir=Dir_C_2_3","","",""))
			insDoc(d3, gLnk ("dir.php?dir=Dir_C_2_3_1","Dir_C_2_3_1","",""))
			d4 = insFld(d3, gFld ("Dir_C_2_3_2","dir.php?dir=Dir_C_2_3_2","","",""))
				insDoc(d4, gLnk ("dir.php?dir=Dir_C_2_3_2_1","Dir_C_2_3_2_1","",""))
				insDoc(d4, gLnk ("dir.php?dir=Dir_C_2_3_2_2","Dir_C_2_3_2_2","",""))
	insDoc(d1, gLnk ("dir.php?dir=Dir_C_3","Dir_C_3","",""))
	d5 = insFld(d1, gFld ("Dir_C_4","dir.php?dir=Dir_C_4","","",""))
		insDoc(d5, gLnk ("dir.php?dir=Dir_C_4_1","Dir_C_4_1","",""))
		d6 = insFld(d5, gFld ("Dir_C_4_2","dir.php?dir=Dir_C_4_2","","",""))
			insDoc(d6, gLnk ("dir.php?dir=Dir_C_4_2_1","Dir_C_4_2_1","",""))
			insDoc(d6, gLnk ("dir.php?dir=Dir_C_4_2_2","Dir_C_4_2_2","",""))

insDoc(foldersTree, gLnk ("dir.php?dir=Dir_D","Dir_D","",""))
insDoc(foldersTree, gLnk ("dir.php?dir=Dir_E","Dir_E","",""))
insDoc(foldersTree, gLnk ("dir.php?dir=Dir_F","Dir_F","",""))
Tja, sieht etwas verwirrend aus. Oder?
Das ist die JS-Anweisung des obigen Directory-Baumes.

"foldersTree" - am Anfang bedeutet, der folgende Ordner in der Anweisung befindet sich in Root
"insDoc" - am Anfang bedeutet, der folgende Ordner in der Anweisung enthält keine weiteren Unterordner
"insDoc(foldersTree,...)" - bedeutet der folgende Ordner liegt in foldersTree, also Root
"insDoc(d1,...)" - bedeutet der folgende in der Anweisung definierte Ordner liegt in dem vorher definierten Ordner d1

Es müsste also immer "dxx" geschrieben werden wenn der Ordner Unterordner enthält, wenn nicht dann "insDoc".
Und logischerweise darf "d1" nur einmal in einer Hierarchi vorkommen ist der nächste Ordner wieder mit Unterordner
bestückt, dann muss da "d2" rein usw..

Ich kann mir vorstellen was ich jetzt so manchem zumute(wer möchte), aber mir ist schon fast der Kopf geplatzt,
wobei ich aber sagen muss das ich "noch" kein PHP-Genie bin(dazu brauche ich noch ein klein wenig Zeit :-) ).


MfG Cryo
 
Zuletzt bearbeitet:
PHP:
<?
function has_subdirs($dir)
{
	$handle = opendir($dir);
	while ($d = readdir($handle)) {
		if (is_dir($dir.$d) && $d != "." && $d != "..") {
			closedir($handle);
			return true;
		}
	}
	closedir($handle);
	return false;
}

function create_js_dir($maindir)
{
	static $varnr = 0;

	if ($varnr == 0) {
		echo "foldersTree = gFld(\"Root\", \"dir.php?dir=\",\"\",\"\",\"\",\"\")\n";
		$root = "foldersTree";
	} else {
		$root = "d".$varnr;
	}

	$handle = opendir($maindir);
	while ($dir = readdir($handle)) {
		if (is_dir($maindir.$dir) && $dir != "." && $dir != "..") {
			if (has_subdirs($maindir.$dir."/")) {
				$varnr++;
				echo "d$varnr = insFld($root, gFld(\"$dir\", \"dir.php?dir=$maindir$dir\", \"\", \"\", \"\"))\n";
				create_js_dir($maindir.$dir."/");
			} else {
				echo "insDoc($root, gLnk(\"dir.php?dir=$maindir$dir\", \"$dir\", \"\", \"\"))\n";			
			}
		}
	}
}
?>
<html>
<head>
<script language="JavaScript" src="tree.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="nav.css">
</head>
<body bgcolor="#f7f7f7" leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 text="#000000" link="#cc0000" vlink="#999999" alink="#ffcc00">

<script language="javascript">
picconnectorsize 	= " width=20 height=20 ";

classPath 		= ""; 
initYPos 		= 10;
ftv2doc 		= "dir_open.gif";		//"f1.gif";
ftv2folderclosed 	= "dir_close.gif";		//"f0.gif";
ftv2folderopen 		= "dir_open.gif";		//"f1.gif";
ftv2lastnode 		= "line_end.gif";		//"01.gif";
ftv2link 		= "line_cross.gif";		//"00.gif";
ftv2mlastnode 		= "dir_end_sub_minus.gif";	//"111.gif";
ftv2mnode 		= "dir_sub_minus.gif";		//"101.gif";
ftv2node 		= "line_cross.gif";		//"00.gif"
ftv2plastnode 		= "dir_end_sub_plus.gif";	//"110.gif";
ftv2pnode 		= "dir_sub_plus.gif";		//"100.gif";

//ftv2vertline 		= "line_vertical.gif";		//"l.gif";

picvertline 		= '<img src="line_vertical.gif" '+picconnectorsize+'>'
picblank 		= '<img src="spacer.gif" '+picconnectorsize+'>'
picstart 		= ''
initTreePos 		= 20
basefrm 		= "pmain"
</script>

<script>
<?
// '/' am ende nicht vergessen!
create_js_dir("[insert your folder here]");
?> 

initializeDocument()
</script>
</body>
</html>

Ist zumindest schon mal ein Anfang... weiß jetzt nicht, ob du das so oder explizit mit Dir_X_x_x_x... willst. Musst dich halt melden, wenn was nicht passt.

HTH
reima
 
Ich

danke Dir schon einmal im Voraus.
Werde es mal testen und sehen was sich machen lässt.
Beim fix drüberfliegen über Dein Code sind zum Glück ein paar Lämpchen bei mir mal wieder angegangen.

Thanks Cryo
 

Neue Beiträge

Zurück