Hallo Frank,
DA FEHLT DOCH WAS ?? ;-)
Na gut, ich weiß ja nicht wie fit Du bist (also ich bin es leider noch nicht! seufz), aber schaun wir doch halt mal! fg
Hier ist das "ungekürzte" Script was ich verwende. :o) Das einzigste was ich gelöscht habe ist die Baumstruktur weil sie zu lang geworden wäre. Aber das Schema für die Struktur habe ich schon mitaufgeführt.
<style type="text/css"> <!-- .sitemap { font-family:Arial,Helvetica; font-size:9pt; line-height:6pt; }
body { margin-top:7px; margin-left:4px; } a:link { text-decoration: none } a:visited { text-decoration: none } a:active { text-decoration: none } // --> </style>
<script language="JavaScript1.2"> <!--
window.onError=null;
var idx=0 var treeId = new Array(); var treeP_id = new Array(); var treeIsOn = new Array(); var treeTyp = new Array(); var treeName = new Array(); var treeUrl = new Array(); var treeWasOn = new Array(); var treeDeep = new Array(); var treeLastY = new Array(); var treeIsShown = new Array();
function Note( id,p_id,name,url ) { treeId[ idx ] = id treeP_id[ idx ] = p_id treeIsOn[ idx ] = false treeTyp[ idx ] = 'f' treeName[ idx ] = name treeUrl[ idx ] = url treeWasOn[ idx ] = false treeDeep[ idx ] = 0 treeLastY[ idx ] = 0 treeIsShown[ idx ] = false idx++ }
function initDiv ( ) { if ( isDOM || isDomIE ) { divPrefix='<DIV CLASS="sitemap" style="position:absolute; left:0; top:0; visibility:hidden;" ID="sitemap' divInfo='<DIV CLASS="sitemap" style="position:absolute; visibility:visible" ID="sitemap' } else { divPrefix='<DIV CLASS="sitemap" ID="sitemap' divInfo='<DIV CLASS="sitemap" ID="sitemap' } document.writeln( divInfo + 'info">Bitte haben Sie etwas Geduld.<BR> <BR>Es werden die Einträge aus<BR> <BR>der Datenbank initialisiert.</DIV> ' );
for ( var i=1; i<idx; i++ ) { // linked Name ? if ( treeUrl[i] != '' ) linkedName = '<A HREF="' + treeUrl[i] + '" TARGET="' + defaultTarget + '"><IMG SRC="1w.gif" BORDER="0" WIDTH="3">' + treeName[i] + '</A>' else linkedName = '<IMG SRC="1w.gif" BORDER="0" WIDTH="3">' + treeName[i] // don't link folder icon if node has no sons if ( i == idx-1 || treeP_id[i+1] != treeId[i] ) { if ( treeDeep[ i ] == 0 ) folderImg = '<IMG ALIGN="BOTTOM" SRC="file_empty.gif" BORDER="0" HEIGHT="16" WIDTH="1" HSPACE="0">' else folderImg = '' } else { folderImg = '<A HREF="javascript:sitemapClick(' + treeId[i] + ')"><IMG ALIGN="BOTTOM" SRC="folder_off.gif" BORDER="0" NAME="folder' + treeId[i] + '" HEIGHT="16" WIDTH="30" HSPACE="0"></A>' } // which type of file icon should be displayed? if ( treeP_id[i] != 0 ) { if ( lastEntryInFolder( treeId[i] ) ) fileImg = '<IMG ALIGN="BOTTOM" SRC="file_last.gif" BORDER="0" NAME="file' + treeId[i] + '" HEIGHT="16" WIDTH="30" HSPACE="0">' else fileImg = '<IMG ALIGN="BOTTOM" SRC="file.gif" BORDER="0" NAME="file' + treeId[i] + '" HEIGHT="16" WIDTH="30" HSPACE="0">' } else fileImg = '' // traverse parents up to root and show vertical lines if parent // is not the last entry on this layer verticales = '' for( var act_id=treeId[i] ; treeDeep[ id2treeIndex[ act_id ] ] > 1; ) { act_id = treeP_id[ id2treeIndex[ act_id ]] if ( lastEntryInFolder( act_id ) ) { verticales = '<IMG ALIGN="BOTTOM" SRC="file_empty.gif" BORDER="0" HEIGHT="16" WIDTH="30" HSPACE="0">' + verticales } else { verticales = '<IMG ALIGN="BOTTOM" SRC="file_vert.gif" BORDER="0" HEIGHT="16" WIDTH="30" HSPACE="0">' + verticales } }
document.writeln( divPrefix + treeId[i] + '"><NOBR> ' + verticales + fileImg + folderImg + linkedName + '</NOBR></DIV><BR>' ) } }
function initStyles ( ) { document.writeln( '<STYLE TYPE="text/css">' + "\n" + '<!--' ) for ( var i=1,y=y0; i<idx; i++ ) { document.writeln( '#sitemap' + treeId[i] + ' {POSITION: absolute; VISIBILITY: hidden;}' ) if ( treeIsOn[ id2treeIndex[ treeP_id[i] ] ] ) y += deltaY } document.writeln( '#sitemapinfo {POSITION: absolute; VISIBILITY: visible;}' ) document.writeln( '//-->' + "\n" + '</STYLE>' ) }
function sitemapClick( id ) { var i = id2treeIndex[ id ]
if ( treeIsOn[ i ] ) // close directory { // mark node as invisible treeIsOn[ i ]=false // mark all sons as invisible actDeep = treeDeep[ i ] for( var j=i+1; j<idx && treeDeep[j] > actDeep; j++ ) { treeWasOn[ j ] = treeIsOn[ j ] treeIsOn[ j ]=false } gif_off( id ) } else // open directory { treeIsOn[ i ]=true // remember and restore old status actDeep = treeDeep[ i ] for( var j=i+1; j<idx && treeDeep[j] > actDeep; j++ ) { treeIsOn[ j ] = treeWasOn[ j ] } gif_on( id ) } showTree() }
function knotDeep( id ) { var deep=0 while ( true ) if ( treeP_id[ id2treeIndex[id] ] == 0 ) return deep else { ++deep id = treeP_id[ id2treeIndex[id] ] } return deep }
function initTree( id ) { treeIsOn[ id2treeIndex[id] ] = true if ( treeTyp[ id2treeIndex[id] ] != 'b' ) gif_on( id ) while ( treeP_id[ id2treeIndex[id] ] != 0 ) { id = treeP_id[ id2treeIndex[id] ] treeIsOn[ id2treeIndex[id] ] = true if ( treeTyp[ id2treeIndex[id] ] != 'b' ) gif_on( id ) } }
function lastEntryInFolder( id ) { var i = id2treeIndex[id] if ( i == idx-1 ) return true if ( treeTyp[i] == 'b' ) { if ( treeP_id[i+1] != treeP_id[i] ) return true else return false } else { var actDeep = treeDeep[i] for( var j=i+1; j<idx && treeDeep[j] > actDeep ; j++ ) ; if ( j<idx && treeDeep[j] == actDeep ) return false else return true } }
function showTree() { for( var i=1, y=y0, x=x0; i<idx; i++ ) { if ( treeIsOn[ id2treeIndex[ treeP_id[i] ] ] ) { // show current node if ( !(y == treeLastY[i] && treeIsShown[i] ) ) { showLayer( "sitemap"+ treeId[i] ) setyLayer( "sitemap"+ treeId[i], y ) treeIsShown[i] = true } treeLastY[i] = y y += deltaY } else { // hide current node and all sons if ( treeIsShown[ i ] ) { hideLayer( "sitemap"+ treeId[i] ) treeIsShown[i] = false } } } }
function initIndex() { for( var i=0; i<idx; i++ ) id2treeIndex[ treeId[i] ] = i }
function gif_name (name, width, height) { this.on = new Image (width, height); this.on.src = name + "_on.gif" this.off = new Image (width, height); this.off.src = name + "_off.gif" }
function load_gif (name, width, height) { gif_name [name] = new gif_name (name,width,height); }
function load_all () { load_gif ('folder',30,16) file_last = new Image( 30,16 ) file_last.src = "file_last.gif" file_middle = new Image( 30,16 ) file_middle.src = "file.gif" file_vert = new Image( 30,16 ) file_vert.src = "file_vert.gif" file_empty = new Image( 30,16 ) file_empty = "file_empty.gif" }
function gif_on ( id ) { eval("document['folder" + id + "'].src = gif_name['folder'].on.src") }
function gif_off ( id ) { eval("document['folder" + id + "'].src = gif_name['folder'].off.src") }
// global configuration var deltaX = 30 var deltaY = 16 var x0 = 5 var y0 = 5 var defaultTarget = 'examplemain'
var browserName = navigator.appName; var browserVersion = parseInt(navigator.appVersion); var isIE = false; var isDOM = false; var isDomIE = false; var layerok = false;
var isIE = browserName.indexOf("Microsoft Internet Explorer" )==-1?false:true; var isDOM = document.getElementById?true:false; var isDomIE = document.all?true:false;
if ( isIE && browserVersion>=4 ) layerok=true;
function hideLayer(layerName) { if (isDOM) document.getElementById(layerName).style.visibility="hidden" else if (isDomIE) document.all[layerName].style.visibility="hidden"; }
function showLayer(layerName) { if (isDOM) document.getElementById(layerName).style.visibility="visible" else if (isDomIE) document.all[layerName].style.visibility="visible"; }
function setyLayer(layerName, y) { if (isDOM) document.getElementById(layerName).style.top=y else if (isDomIE) document.all[layerName].style.top=y; }
var id2treeIndex = new Array()
// the structure is easy to understand with a simple example // p_id is the id of the parent // E0 ( id=0,p_id=-1 ) // E11 ( id=1,p_id=0 ) // E111 ( id=2,p_id=1 ) // E112 ( id=3,p_id=1 ) // E12 ( id=4,p_id=0 ) // E121 ( id=5,p_id=4 ) // E13 ( id=6,p_id=0 ) // E131 ( id=7,p_id=6 ) // E1311 ( id=8,p_id=7 ) // E132 ( id=9,p_id=6 ) // this is a multinary tree structure which is easy to // populate with database data :)
function initArray() {
///// parent.frames[1].location.href = "3_1_Install Windows.htm";
Note(0,-1,'trallallallaaaa','') Note(1,0,'Handbuch für DOPPS','') Note(2,1,'1. Einführung','') Note(3,2,'1.1. Design-Ziele','') Note(4,3,'1.1.1. Funktionalität','inhalt1','inhalt1.htm') Note(5,3,'1.1.2. Benutzereffizienz','//Faiopf2041/Org07/YETE1/FL4_FE25/index.htm') Note(6,3,'1.1.3. Dokumentation','http://faiopf2001/daten/doh-doks/') Note(7,3,'1.1.4. Software Architektur','http://faiopf2001/daten/qualität/qmh/') Note(8,2,'1.2. Aufbau der Software','') Note(9,8,'Aufbau der Software','') Note(10,2,'1.3. Komponenten','') Note(11,10,'Komponenten','') Note(12,2,'1.4. Ablauf der Datenanforderung','') Note(13,12,'1.4.1. Lokale Daten','//faiopf2001/daten/ABBREV/abbrevitions.xls') Note(14,12,'1.4.2. Lokal sichtbare Daten von entfernten Servern über LAN - Netzlaufwerke','//faiopf2001/daten/doh-doks/') Note(15,12,'1.4.3. Entfernte Daten von DOPPS - TCP/IP - Servern (weltweiter Zugriff)','//merlin/sysdat/eloavio/Schedules') Note(16,1,'2. Systemvorraussetzungen','')
treeTyp[0] = 'f' treeIsOn[0] = true treeWasOn[0] = true }
var idx=0 initArray() initIndex() load_all() for( i=1; i<idx; i++ ) { treeDeep[i] = knotDeep( treeId[i] ) if ( treeDeep[i] == 0 ) treeIsShown[i] = true } initStyles(); //--> </script> </head>
<body bgcolor="#ffffff" vlink="#000000" alink="#000000" link="#000000" text="#000000" onLoad="if (layerok) showTree();" marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">
<script language="JavaScript1.2"> <!-- initDiv() hideLayer("sitemapinfo") //--> </script> </body> </html>
liebe Grüsse :o) Günter