TEAM-FAHLBUSCH.DE
Version 2.8
Copyright 2011 - 2020
Logo

Freizeitaktivitäten von Katharina & Jürgen Fahlbusch
TeamPage
- CodePage -

Kontakt: Jürgen Fahlbusch - admin@team-fahlbusch.de

Site-Explorer

 (-) TeamPage   (-) CodePage       ScriptImgShow       ScriptPage

Galerie-Explorer Video-Explorer

Version 2 unser TeamPage. Ein PHP/CSS Script für einen Webbasierten Dateimanager

Ziel des Scripts ist es, ein einheitliches Erscheinungsbild des gesamten Internetauftritts zu erreichen und dabei den Aufwand bei der Erstellung neuer Inhalte (Berichte) auf den eigentlichen Text (natürlich mit Text bezogenen Verweisen) zu beschränken. Durch das Script wird das generelle Seitenlayout festgelegt. Der wesentliche Bestandteil ist aber ein integrierter Dateimanager, von uns SiteExplorer genannt. Dieser ermöglicht uns unseren Internetauftritt durch einfaches Einfügen von reinen Textdateien laufend zu erweitern. Alle neuen Beiträge werden automatisch erkannt.

auch bei diesem Script wurde wieder auf Wert auf möglichst geringen Datenverkehr sowie möglichst einfache Bedienung durch den Leser gelegt. Außerdem soll die einfache Struktur eine relativ einfache Einbindung neuer Berichte ermöglichen obwohl keine externe Datenbank genutzt wird. Die Anpassungen können somit ohne große Programmier- und Datenbank-Kenntnisse erfolgen.

Alle Urheberrechte für das vorliegende Script liegen bei Jürgen Fahlbusch - www.team-fahlbusch.de

Das Script sollte sich in einer eigenen PHP-Datei befinden. Der Name spielt dabei keine Rolle. Wird z.B der Name "index.php" gewählt und befindet sich die Script direkt im Hauptverzeichnis der Homepage kann als Startseite verwendet werden.

Der Aufruf des Scripts erfolgt Rekursiv. Dabei wird dem Script der notwendige Parameter für den nächsten zu betrachtenden Inhalt übergeben. Dies erfolgt über den Parameter: P für die Pfadangabe zu ausgewählten Inhalt.

Der Aufruf erfolgt in der Art "Page.php?P=TeamPage/CodePage/ScriptPage.txt"
In diesem Fall wird die Datei "ScriptPage.txt" welche sich im Pfad "TeamPage/CodePage" der Homepage befindet im Hauptbereich dargestellt.

Das Layout der Seite ist als Tabelle mit 2 Spalten und 3 Zeilen aufgebaut. Dies ist hauptsächlich gemacht um im Hauptbereich (2. Tabellenzeile) auf der linken Seite eine immer gleiche Navigationsleiste zu haben, während rechts die wechselnde Inhalte dargestellt werden. Die 1.Tabellenzeile bildet den Seitenkopf und die 3. Tabellenzeile den Seitenfuß.

Die Auswahl der darzustellenden Seiteninhalte erfolgt über den integrierten Dateimanager "SiteExplorer" in der linken Navigationsspalte. Der gesamte darzustellenden Inhalt muss sich in einem Verzeichnisbaum aus Textdateien ".txt" unterhalb der Domain befinden. Die Verzeichnisstruktur wird in dem Dateimanager durch Verweise dargestellt. Aufgelistet werden alle Unterverzeichnisnamen und Dateinamen mir der Erweiterung ".txt" die sich in dem mit dem Scriptaufruf verbundenen Pfad befinden. Außerdem wird der Pfad selbst aufgelöst dargestellt. Jede Verzeichnisebene kann durch eine Einrückung erkannt werden. Vor jedem Verzeichnis zeigt ein "(+)" dass man durch Auswahl dieses Verweises, das Verzeichnis öffnen kann und so weiter in die Tiefe gehen kann. Im Gegensatz dazu bedeutet ein "(-)", dass man sich in dem Verzeichnis befindet und durch Auswahl in das darüber stehende Verzeichnis zurück gelang. Steht vor einem Eintrag weder "(+)" noch "(-)" handelt es sich um eine Datei mit der Endung "txt", die bei Auswahl in dem Hauptbereich dargestellt wird. Befindet sich in einem Verzeichnis eine Datei mit dem Namen "Einfuehrung.txt" und wird keine weitere Datei ausgewählt, so wird die Datei "Einfuehrung.txt" im Hauptfenster dargestellt.

 
<?php
/* Initialisierung der Variablen */
 // Ausdrücke in Grossbuchstaben sind Beispiele
 // Ermittlung des Scriptnamens für rekursiven Aufruf  
 $script = basename($_SERVER['PHP_SELF']);

 // Festlegung des Stammverzeichnispfades für den Verzeichnisbaum
 $root = 'STAMMVERZEICHNISNAME';

 // Schriftzug in der Kopfzeile links
 $homepage = 'DOMAINNAME';
 $homepageVersion = 'VERSION 2013';

 // Link zu einem Logo zur Darstellung am rechten Rand der Kopfzeile 
 $homepageLogo = 'LOGO/BILD.JPG';

 // Angaben der Fusszeile
 // Impressumsdatei mit Pfadangabe
 $impressum = 'STAMMVERZEICHNISNAME/IMPRESSUM.txt';
 $kontakt = 'ADMINISTRATORNAME & EMAILADRESSE';

 // Startseite mit Pfadangabe. 
 // Diese Seite wird angezeigt wenn das Script ohne Parameter aufgerufen wird
 $file = 'STAMMVERZEICHNISS/EINFUEHRUNG.txt';

 // Name der Verzeichnis individuellen Startseite
 $defaultfile = 'EINFUEHRUNG.txt';

 // Individuelle Fehlerseite mit Pfadangabe
 $error = 'ERROR.HTM';
 
 // Angabe der Kopfzeile mittig
 $headline1 = 'HAUPTUEBERSCHRIFT';
 $headline3 = '';

 // Metaangaben der HTML-Seite
 $metaTitle = 'HOMEPAGEBEZEICHNUNG';
 $metaAuthor = 'NAME DES AUTORS';
 $metaDescription = 'GROBE BESCHREIBUNG DES INHALTS';
 $metaKeywords = 'LISTE, DER, WESENTLICHEN, SCHLÜSSELWÖRTER';
 $metaDate = '2013-01-01T12:00:00';
 

/* Übernahme der Variablen aus dem Seitenaufruf 
   Variable 'P' (Path) bestimmt den aktuellen Pfad auf dem Server 
   Wenn mit dem Parameter P ein Pfad übergeben wurde, wird dieser in 
   seine einzelenen Bestandteile zerlegt und die Pfadtiefe ermittelt.
   Wenn der letzte Teil der Pfadangabe einen gültigen Dateinamen darstellt
   wird dieser für die Ausgabe im Hauptfenster übernommen 
   und die eigentliche Pfadtiefe korrigiert.
   Ist der letzte Teil der Pfadangabe ein Verzeichnisname
   wird der generelle Startdateiname zur Ausgabe im Hauptfenster gesetzt
   Ist die Pfadangabe falsch wird die individuelle Fehlerseite für die 
   Ausgabe im Hauptfenster gesetzt und die Pfadangaben wird korrigiert.
   Wird keine Parameter P übergeben, wird das Stammverzeichnis als 
   Startverzeichnis gesetzt 
*/
 if (array_key_exists('P', $_GET))
 {
  $path = $_GET['P']; 			
  $list = explode('/',$path); 
  $maxpath = count($list);

  if (is_file($path) && $path != $error) 
  {
   $file = $path;
   $maxpath = $maxpath-1;
   $list = array_slice($list, 0, $maxpath);
   $path = implode('/',$list);
  }
  else
  {
   if (is_dir($path))
   {
    $file = $path.'/'.$defaultfile;
   }
   else
   {
    $file = $error;
    if ($maxpath > 1) 
    {
     $maxpath = $maxpath-1;
    }
    else
    {
     $path = $root;
     $list[0] = $root;
    }
   }
  } 
 }
 else
 {
  $path = $root;
  $list = explode('/',$path);
  $maxpath = 1;
 }

/* Die 3.Zeile des Kopfbereiches enthält den aufgerufenen Pfad */
 if ($maxpath > 1)
 {    
  for ($i=1; $i<$maxpath; $i++)
  {
    $headline3 = $headline3.' '.basename($list[$i],'.txt');
  }
  $headline3 = "- ".$headline3." -";
 }

/* Auswertung für Link Impressum */
 $linkImpressum = $script.'?P='.$impressum;
 $titleImpressum = '';



/* Begin mit Ausgabe der Seite an den Client als HTML Seite 
   HTML Einleitung und genereller Seiteaufbau als Tabelle mit 
   2 Spalten a 3 Zeilen
   1. Zeile ist der Kopfbereich mit Überschrift und Logo
   2. Zeile ist der Imformationsbereich mit dem Dateimanager links und der 
      Ausgabedatei rechts
   3. Zeile ist der Fussbereich mit Verweis zum Impressum 
*/ 
 echo "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'\n";
 echo "      'http://www.w3.org/TR/html4/loose.dtd'>\n";
 echo "<html>\n";
 echo " <head>\n";
 echo "  <meta http-equiv='content-type' content='text/html; charset=ISO-8859-1'>\n";
 echo "  <title>$metaTitle</title>\n";
 echo "  <link rel='stylesheet' type='text/css' href='PageStyle.css'>\n";
 echo "  <meta name='author' content='$metaAuthor'>\n";
 echo "  <meta name='description' content='$metaDescription'>\n";
 echo "  <meta name='date' content='$metaDate'>\n";
 echo "  <meta name='language' content='de,at'>\n";
 echo "  <meta name='keywords' content='$metaKeywords'>\n"; 
 echo "  <meta name='robots' content='index,follow'>\n";
 echo " </head>\n";
 echo "\n";
 echo " <body>\n";
 echo "<a name='top'></a>\n";
 echo "<!-- Gobal -->\n";
 echo "\n";
 echo "<!-- Teilung in zwei Hauptspalten, 1.Navigationsbereich 2.Infobereich -->\n";
 echo "\n";
 echo "  <table>\n";
 echo "\n";
 echo "<!-- Kopfbereich -->\n";
 echo "   <thead>\n";
 echo "    <tr>\n";
 echo "     <th>\n";
 echo "      $homepage<br>\n";
 echo "      <div class='xsmallfont'>$homepageVersion</div>\n";
 echo "     </th>\n";
 echo "     <th>\n";
 echo "      <img src='$homepageLogo' align='right' alt='Logo'>\n";
 echo "      <p>\n"; 
 echo "       <span class='mediumfont'>\n";
 echo "        $headline1<br>$root<br>\n";
 echo "       </span>\n";
 echo "       $headline3\n";
 echo "      </p>\n"; 
 echo "     </th>\n";
 echo "    </tr>\n";
 echo "   </thead>\n";
 echo "\n";
 echo "<!-- Fußbereich -->\n";
 echo "   <tfoot>\n";
 echo "    <tr>\n";
 echo "     <td class='centertext' colspan='2'>\n";
 echo "     <a href='$linkImpressum' title='$titleImpressum'><b>Kontakt:</b></a>$kontakt\n";
 echo "     </td>\n";
 echo "    </tr>\n";
 echo "   </tfoot>\n";
 echo "\n";
 echo "<!-- Informationsbereich -->\n";
 echo "   <tbody>\n";
 echo "    <tr>\n";
 echo "\n";
 echo "<!-- Site-Explorer -->\n";
 echo "     <td class='tleft'>\n";
 echo "      <p class='centertext'><b>Site-Explorer</b></p>\n";
 echo "      <p>\n"; 

/* Der Dateimanager Programmteil */
 // Definition eines HTML tauglichen Leerzeichen
 $space =" ";
 
 // Initialisierung einer Hilfsvariablen für die Pfadabschnitte
 $subpath = $root;

/* Erzeugung der Verzeichnisstruktur bis zum aktuell übergebenen Pfad.
   Es wird jeweils nur der Verzeichnisname der jeweiligen Hirachiestufe
   des Verzeichnisbaums in Verbindung mit einem Link auf das jeweils 
   übergeordnete Verzeichnis bis zum Stammverzeichnis ausgegeben. 
   Jede Hirachiestufe wird gegenüber der vorhergehenden um eine Leerzeichen 
   eingerückt. Das Titelattribut des Links enthält den Namen des Übergeordneten
   Verzeichnis 
*/
  for ($i=0; $i<$maxpath; $i++)
  {
   echo "$space<a href='$script?P=$subpath' title='zurück zur ";
   if ($i !=0)
   {
    echo basename($list[$i-1]);
    $subpath = $subpath."/".$list[$i];
   }
   else
   {
    echo $root;
   }
   echo "'>(-) ";
   echo basename($list[$i]);
   echo "</a><br>\n";        

   $space= $space." ";
  }
    
/* Wenn die übergebene Pfadangabe eine Verzeichnis bezeichnet, werden 
   alle Untererzeichnisnamen und Textdateien (".txt") des Verzeichnises
   mit Ausnahme der Verzeichnis individuellen Startseite als Link gelistet.
   Bei den Unterverzeichnissen wird untersucht ob diese eine individuelle 
   Startseite enthalten. Wenn ja wird diese geöffnet und die 1. Zeile 
   kopiert. Ebenso wird bei den Textdateien des aktuellen Pfades verfahren.
   Die kopierte 1. Zeile wird jeweils dem Titelattribut des Link zugeordnet.   
*/
 if (is_dir($path)) 
 {
  foreach (glob("$path/*",GLOB_ONLYDIR) as $item) 
  {
   $titleDirLink = '';
   if (file_exists($item.'/'.$defaultfile)) 
   {
    $fileHandle = fopen($item.'/'.$defaultfile, 'r');
    $titleDirLink = strip_tags(fgets($fileHandle));
    fclose($fileHandle);  
   }
   echo "$space<a href='$script?P=$item' title='$titleDirLink'>(+)".basename($item)."</a><br>\n";
  }

  foreach (glob("$path/*.txt") as $item) 
  {
   if (basename($item) != $defaultfile)
   {
    $titleFileLink = '';
    $fileHandle = fopen($item, 'r');
    $titleFileLink = strip_tags(fgets($fileHandle));
    fclose($fileHandle);  
    echo "$space   <a href='$script?P=$item' title='$titleFileLink'>".basename($item,'.txt')."</a><br>\n";
   }
  }
 }
 echo "      </p>\n";
 echo "      </td>\n";
 echo "\n";
 echo "<!-- Rahmen -->\n";
 echo "<td>\n";

/* Ausgabe der mit Parameter P im Aufruf des Scriptes übergebenen Textdatei
   im Hauptbereich der Tabelle (2.Spalte 2.Zeile). 
   Wird nur ein Verzeichnis übergeben wird die Verzeichnis individuelle 
   Startseite ausgegeben, soweit vorhanden.
   Bei erkannten Fehlern in der Übergabe wird die individuelle Fehlerseite
   ausgegeben.
   In allen anderen Fällen wird nichts ausgegeben.
*/ 
 readfile($file);

/* Abschluss der HTML Ausgabe */
 echo "     </td>\n";
 echo "    </tr>\n";
 echo "   </tbody>\n";
 echo "\n";
 echo "  </table>\n";
 echo " </body>\n";
 echo "</html>\n";
?>