Minimales Projekt

Dr. O. Hoffmann

Das Menü des Projekts

Das Menü des Projektes wird als Liste von Verweisen geführt. Weitere Menüs können über den get-Parameter me aufgerufen werden, der Inhalt über den Parameter in. Reserviert ist die Menüdatei start.php für das Startmenü, headlink.php für die Verweise (link-Elemente) im Dateikopf und stilmenue.php für das Stilmenü.
Nun gibt es die sinnvolle Forderung, daß Seiten nicht auf sich selbst verweisen sollten, um den Nutzer nicht zu verwirren. Dazu dienen die arrays zu Beginn des Dokumentes - nicht besonders elegant umgesetzt, aber robust. Ich hatte mir noch eine elegantere Methode überlegt, aber da sah der Quelltext grauenhaft unerklärbar aus.

<?php

# Menueeintraege Angeben, inklusive der Verweise im Stilmenue 'hilfe' und 'statistik'
$menut[$in]=' ';
$menut['hilfe']='?';
$menut['statistik']='%';
$menut['start']='Start';
$menut['aufbau']='Aufbau';
$menut['projektseite']='Quelltexte';
$menut['cssdateien']='CSS-Dateien';
$menut['einfacher']='einfacher?';
$menut['verweise']='Verweise';
$menut['kontakt']='Kontakt';

# Nun den Inhalt der jeweiligen a-tags definieren:

$menue['hilfe']="<a href=\"$datnam?me=$me&amp;in=hilfe&amp;stil=$stil\" tabindex=\"1\" 
accesskey=\"?\" title=\"Hilfe zu den Stilvorlagen\">".$menut['hilfe']."</a>";
$menue['statistik']="<a href=\"$datnam?me=$me&amp;in=statistik&amp;stil=$stil\" tabindex=\"90000\" 
accesskey=\"%\" title=\"Seitenstatistik\">".$menut['statistik']."</a>";
$menue['start']="<a href=\"$datnam?me=start&amp;in=start&amp;stil=$stil\" tabindex=\"100\" 
accesskey=\"h\" title=\"Startseite des Minimalen Projektes\">".$menut['start']."</a>";
$menue['aufbau']="<a href=\"$datnam?me=start&amp;in=aufbau&amp;stil=$stil\" tabindex=\"110\" 
title=\"Aufbau des Projektes\">".$menut['aufbau']."</a>";
$menue['projektseite']="<a href=\"$datnam?me=quelltexte&amp;in=projektseite&amp;stil=$stil\" 
tabindex=\"120\" title=\"Wesentliche Quelltexte zum Nachvollziehen\">".$menut['projektseite']."</a>";
$menue['cssdateien']="<a href=\"$datnam?me=css&amp;in=cssdateien&amp;stil=$stil\" 
tabindex=\"130\" title=\"Die CSS-Dateien zum Nachvollziehen\">".$menut['cssdateien']."</a>";
$menue['einfacher']="<a href=\"$datnam?me=start&amp;in=einfacher&amp;stil=$stil\" 
tabindex=\"140\" title=\"Noch einfachere Variante eines Projektes\">".$menut['einfacher']."</a>";
$menue['verweise']="<a href=\"$datnam?me=start&amp;in=verweise&amp;stil=$stil\" tabindex=\"150\" 
title=\"Externe Quellen der Weisheit zu xhtml, css und php\">".$menut['verweise']."</a>";
$menue['kontakt']="<a href=\"$datnam?me=start&amp;in=kontakt&amp;stil=$stil\" tabindex=\"160\" 
title=\"Kontakt zum Autor\">".$menut['kontakt']."</a>";

# jetzt beim aktuellen Menueeintrag den a-tag gegen einen einfachen strong-tag austauschen:

$menue[$in]="<strong title=\"aktuelle Seite: \">".$menut[$in]."</strong>";

# wird nicht mehr gebraucht und kann weg:

unset($menut);

# jetzt das Menue als Liste ausgeben
?>
<li><?php echo $menue['start'];?></li>
<li><?php echo $menue['aufbau'];?></li>
<li class="me"><?php echo $menue['projektseite'];?></li>
<li class="me"><?php echo $menue['cssdateien'];?></li>
<li><?php echo $menue['einfacher'];?></li>
<li><?php echo $menue['verweise'];?></li>
<li><?php echo $menue['kontakt'];?></li>

Ein weiterer Menüteil ist das Stilmenü, welches in einer Extra-Datei steckt. Ein anderer Stil wird über den get-Parameter stil aufgerufen. Dazu kommt ein Verweis zum (W3C)-Validator und ein Verweis zu einer Inhaltsdatei namens hilfe.php, die einige Angaben zum Projekt an sich und kurze Beschreibungen der verfügbaren Stile per CSS enthält. Ferner gibt es mit % einen Verweis zur Statistik, welche man bei einem richtigen Projekt mit einem Kennwort schützen sollte (hier: statistik). Weil das Kennwort dort als get-Parameter übergeben wird, steht es direkt in der URL, was ein Sicherheitsrisiko darstellt, wenn jemand die URL sehen kann. Dies kann natürlich umgangen werden, wenn die Daten per post-Methode übertragen werden. Dazu müßten die Parameter in check.php auch als post abgefragt werden können. Diese Ergänzung ist recht einfach, möchte ich hier nicht näher drauf eingehen
Der Punkt zwischen den Einträgen ist im Sinne der Zugänglichkeit ein Separator. Die verschiedenen Stile wurden als zweites Listenelement hinzugefügt, welches dann die Identität s2 bekommt, das andere hat die Identität s1.

 <li class="leer">&nbsp;</li>
 <li class="stil" id="s1">
  <a href="http://validator.w3.org/check/referer" 
  title="Externer Verweis: Validit&auml;t xhtml testen!" hreflang="en">!</a>
  &middot; <?php echo $menue['statistik'];?>
  <span title="Seitenstil ausw&auml;hlen">Stil</span> 
  <?php echo $menue['hilfe'];?> :  
  <span title="aktueller Seitenstil">(<?php 
  echo strtoupper($stil) ;
  ?>)</span></li>
 <li class="stil" id="s2"> 
 &middot;<?php
 # automatisch die Verweise fuer die Stile erzeugen:
 $i=1001;
 foreach ($stilname as $key => $value) {
    if ($key=="p") {
     echo "<a href=\"$datnam?me=$me&amp;in=$in&amp;stil=$key$stil\" 
     title=\"Stil: ($key) $value\"  accesskey=\"$key\" 
     tabindex=\"".$i++."\">".strtoupper($key)."</a>&middot;";   
    } elseif ($key != $stil){
     echo "<a href=\"$datnam?me=$me&amp;in=$in&amp;stil=$key\" 
     title=\"Stil: ($key) $value\"  accesskey=\"$key\" 
     tabindex=\"".$i++."\">".strtoupper($key)."</a>&middot;";
    }
    if (!(($i-1000) % $stilumbruch)) {
    $ik=floor($i/$stilumbruch)+2;
    echo "</li>\n <li class=\"stil\" id=\"s$ik\">\n &middot;";
    }
}
 ?>
   </li>