a04a03a01a02a05
Sie sind hier: Startseite > Maintenance-Mode - Projekt > Funktion

Einige Bereiche dieser Website benötigen zu ihrer Funktion sogenannte SESSION-Cookies, die jedoch keine Daten enthalten, die sich auf Sie, Ihren Webclient oder Ihr Gerät (PC oder Mobil-Gerät) beziehen (also keine personenbezogenen Daten).
Es werden lediglich seiteninterne Werte gespeichert.

Wir hätten gerne Ihre Erlaubnis evtl. weitere Cookies auf Ihrem Rechner zu platzieren. - Erfahren sie mehr über diese Cookies in unserer Cookie Policy.

Letzte Bearbeitung:

Funktion des Ist-Zustandes V. 0.1 alpha

Funktion

Bei jedem Seitenaufruf wird die includierte maintenance.php (Code siehe unten) ausgeführt. Zur Zeit ist alles noch Alpha-Stadium. Deshalb schreibt die maintenance.php noch viele Statusmeldungen als Kommentarzeilen in den Kopf der ausgegebenen Webseite.

Wenn die Site in einem localen Webserver unter Windows betrieben/entwickelt wird könnte möglicherweise die Notwendigkeit bestehen die Ordner-Trennzeichen in den Pfadangaben in Windows-Manier zu schreiben (\) statt im URL-Stiel (/). Für den Fall, dass dem so ist habe ich das Eingebaut:

$tz = "/";
echo "<!-- Das Ordnertrennzeichen lautet: ".$tz. " -->\n";
if ($tz == "/") {
$pfad = getcwd() . '/templates/maintenance/'; //Pfad zum Templateverzeichnis
}
else {
$pfad = getcwd() . '\templates\maintenance\\'; //Pfad zum Templateverzeichnis
}

Soll das \-Zeichen verwendet werden muß die erste Zeile geändert werden in:

$tz = "\\";

Zuerst werden einige Dateinamen definiert (könnte später mal in einer config.php stehen).

Nun wird geprüft, ob die Datei 'maintenancemode.txt' gefunden wird. Wenn nicht wird sie mit dem Inhalt 'OFF' neu angelegt. Jetzt wird der Inhalt der Datei 'maintenancemode.txt' eingelesen.

Anschließend wird festgestellt ob der Editiermodus aktiv ist. Dann wird geprüft, ob die Datei 'editmode.txt' gefunden wird. Wenn ja, wird sie gelöscht. Nachfolgend  wird sie mit dem Editiermodus 'OFF/ON' neu angelegt. Jetzt wird der Inhalt der Datei 'editmode.txt' eingelesen.

Auf die gleiche Weise wird mit dem Admin-Mode und der Datei adminmode.txt verfahren.

Steht der Edit-Mode auf 1 (Editiermodus im Back-End) -> return zum Template.

Steht der Maintenance-Modus auf OFF -> return zum Template.

Steht der (Admin-Mode auf 1 und der Editiermode auf Vorschau) oder der Admin-Mode ist aus wird der Browser auf die Seite '/?Maintenance-Mode' weitergeleitet.

Wenn also der Admin abgemeldet ist oder wenn er in der Vorschau des Seiteneditors arbeitet wird der Browser auf die  '/?Maintenance-Mode' - Seite geleitet.

Die Template-Datei des Maintenance-Templates hat im Kopf die Prüfung ob der Maintenance-Mode abgeschaltet ist und der Admin abgemeldet ist. Wenn ja, wird der Browser auf die Startseite '/?Home' weitergeleitet (verläßt also den Wartungsmodus).
Das habe ich eingebaut um beim Aktualisieren der Maintenance-Seite automatisch auf die Website zurückzufallen, wenn zwischenzeitlich der Wartungsmodus abgeschaltet wurde.

Die Bedienobefläche des Maintenance-Mode befindet sich auf der Seite '/?Maintenance-Switch' und dahinter steckt in einem <iframe> die Datei 'maintenance-switch.php'. Code siehe unten.
Sie gibt als erstes evtl. den folgenden Hinweis aus: 'Schalten Sie vor dem Absenden den Editor-Modus ab!'. Dann liest sie den Modus-Zustand (OFF/ON) aus der 'maintenancemode.txt' aus und gibt eine entsprechende Meldung aus.
Abhängig vom Modus ist immer die erste Zeile der beiden Radio-Buttons die zum Umschalten des Modus. Im Vorschau-Modus des Editors kann man das Formular  mit einfachem Klick absenden, im Editiermodus geht es mit Doppelklick.
(Der zweite Radio-Button ist für eine spätere Implementierung des Sprungs zur Home-Seite gedacht.)
Durch das Absenden wird die 'maintenace-action.php' aufgerufen. Sie schreibt die 'maintenancemode.txt' mit dem aktuellen Modus neu. Dann bietet sie den Button zum Aktualisieren des Fensters an, wodurch wieder zur 'maintenance-switch.php' und damit zum Umschaltpanel zurückgekehrt wird.

Der Rest des Templates ist ein zurückgestutzter Rest eines fhs-left-right-17x - Templates. Die Stylesheet-Datei ist noch original (und viel zu groß).

Da ich selbst wenig Ahnung von Template-Bau habe, hoffe ich auf einen Helfer zum Verschlanken der Maintenance-Templates (es handelt sich z. Zt. noch um fhs-left-right-17x). 

Mein Wunsch wäre eine Klasse 'Hintergrundbild' die das über den Seiteneditor frei wählbare Bild immer zu 100% Breite im Fenster / Viewport anzeigt und hinter der Text-Ebene liegt. Ein optionaler Header sollte über dem Bild und ein optionaler Footer sollte unter dem Bild liegen.

Eine zweite Klasse soll im Stil einer "Dialogbox" vor der Hintergrundgarfik und vor der eigentlichen Textebene in der Fenstermitte das Umschaltpanel anzeigen. Wenn man sie über einen Parameter nach Links oder rechts verschieben könnte, wäre das schön.

Ist es machbar den Header und Footer des Default-Templates sozusagen automatisch im Maintenance-Template eingebaut zu bekommen (wobei die Links zu Kontakt, Inhaltsverzeichnis etc. entfernt werden müssten).


maintenance.php

<?php
echo "<!-- Start maintenance.php -->\n";
// Maintenance Mode - lembach-kr.de
// Aauthor = Karl Richard Lembach
// Check for Mantenance Mode
// Status des Wartungsmodus feststellen und evtl. Weiterleitung zur Wartungsseite
$tz = "/";
echo "<!-- Das Ordnertrennzeichen lautet: ".$tz. " -->\n";
if ($tz == "/") {
   $pfad = getcwd() . '/templates/maintenance/'; //Pfad zum Templateverzeichnis
}
else {
   $pfad = getcwd() . '\templates\maintenance\\'; //Pfad zum Templateverzeichnis
}
$filename = $pfad . 'maintenancemode.txt'; // Name der Datei, in der der Status des Wartungsmodus gespeichert wird
$editmodename = $pfad . 'editmode.txt'; // Name der Datei in der der Status des Editier-Modus von CMSimple_XH gespeicher wird
$adminmodename = $pfad . 'adminmode.txt'; // Name der Datei in der der Status des Admin-Status gespeichert wird
$scriptname = 'maintenance-action.php';
echo "<!-- Das aktuelle Verzeichnis lautet: ".getcwd() . " -->\n";
echo "<!-- Der Name zu Maintenance-Modus-Datei lautet: ".$filename. " -->\n";
if ((file_exists($filename)) == true) {
   echo "<!-- Die Maintenance-Modus-Datei wurde gefunden. -->\n";
}
else {
   echo "<!-- Die Maintenance-Modus-Datei wurde nicht gefunden. -->\n";
   $text = "OFF"; // Dateiinhalt
   $handler = fopen($filename , "a+"); // Datei öffnen
   fwrite($handler , $text); // Dateiinhalt in die Datei schreiben
   fclose($handler); // Datei schließen
   echo "<!-- Die Maintenance-Modus-Datei wurde neu geschrieben. -->\n";
}
$text = file_get_contents($filename);
echo "<!-- Der Maintenance-Mode Schalter steht auf: ".$text." -->\n";
$editmode = "OFF";
if ($edit == 1) $editmode = "ON";
if ((file_exists($editmodename)) == true) {
   echo "<!-- Die Editier-Modus-Datei wurde geloescht. -->\n";
   unlink($editmodename); // Datei löschen
}
else {
   echo "<!-- Die Editier-Modus-Datei wurde nicht gefunden. -->\n";
}
$handler = fopen($editmodename , "a+"); // Datei öffnen
fwrite($handler , $editmode); // Dateiinhalt in die Datei schreiben
fclose($handler); // Datei schließen
echo "<!-- Die Editier-Modus-Datei wurde neu geschrieben. -->\n";
$editmode = file_get_contents($editmodename);
echo "<!-- Der Edit-Mode steht auf: ".$editmode." -->\n";
$adminmode = "OFF";
if (XH_ADM == 1) $adminmode = "ON";
if ((file_exists($adminmodename)) == true) {
   echo "<!-- Die Admin-Modus-Datei wurde geloescht. -->\n";
   unlink($adminmodename); // Datei löschen
}
else {
   echo "<!-- Die Admin-Modus-Datei wurde nicht gefunden. -->\n";
}
$handler = fopen($adminmodename , "a+"); // Datei öffnen
fwrite($handler , $adminmode); // Dateiinhalt in die Datei schreiben
fclose($handler); // Datei schließen
echo "<!-- Die Admin-Modus-Datei wurde neu geschrieben. -->\n";
$adminmode = file_get_contents($adminmodename);
echo "<!-- Der XH_ADM Schalter steht auf: ".$adminmode." -->\n";
if ($edit == "1") {
   echo "<!-- Edit-Mode is ON - Return from Maintenance.php -->\n";
   return;
}
if ($text == "OFF") {
   echo "<!-- Maintenance-Mode is OFF - Return from maintenance.php -->\n";
   return;
}
if (XH_ADM && !$edit || !XH_ADM) {
  header("Location: /?Maintenance-Mode");
  exit();
}
return;
?>


maintenance-switch.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de-DE">
<head>
</head>
<?php
// Maintenance Mode - lembach-kr.de
// Author = Karl Richard Lembach
// Wartungsmodus umschalten
$editmodename = 'editmode.txt'; // Name der Datei in der der Status des Editier-Modus von CMSimple_XH gespeicher wird
$adminmodename = 'adminmode.txt'; // Name der Datei in der der Status des Admin-Status gespeichert wird
$filename = 'maintenancemode.txt'; // Name der Datei
$actionscriptname = 'maintenance-action.php';
$switchscriptname = 'maintenance-switch.php';
$text = file_get_contents($filename);
$editmode = file_get_contents($editmodename);
$adminmode = file_get_contents($adminmodename);
// Meldungstext erzeugen
if($text == "OFF")
{
$meldung = "The maintenance mode is not active (OFF).<br>Der Maintenance Mode ist deaktiviert (OFF).";
$option1 = "ON&nbsp;&nbsp;";
$option2 = "OFF";
$radiooption1 = "ON";
$radiooption2 = "OFF";
}
else
{
$meldung = "The maintenance mode is active (ON).<br>Der Maintenance Mode ist aktiviert (ON).";
$option1 = "OFF";
$option2 = "ON&nbsp;&nbsp;";
$radiooption1 = "OFF";
$radiooption2 = "ON";
}
?>
<body>
<div style="margin:0px; border:0px; padding:0em; text-align:center;" >
<?php
if ($editmode == "ON") {
echo '<div style="margin: 15px; color: #f00; border-color: #f00; border-style:solid; border-width: 2px; background-color: #fff; border-radius: 10px; font-weight:bold;">';
echo '<p>Schalten Sie vor dem Absenden<br>den Editor-Modus ab!</p></div>';
}
?>
<p><?=$meldung?></p>
<form action=<?=$actionscriptname?> method="get" >
Switch to <input type="radio" name="modus" value="<?=$radiooption1?>" checked> <?=$option1?><br>
Switch to <input type="radio" name="modus" value="<?=$radiooption2?>" > <?=$option2?><br><br>
<input type="submit" value="absenden">
</form>
</div>
</body>
</html>


maintenance-action.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de-DE">
<head>
</head>
<body>
<div style="margin:0px; border:0px; padding:0em; text-align:center;" >
<?php
// Maintenance Mode - lembach-kr.de
// Author = Karl Richard Lembach
// Mantenance Mode write to file
// Status des Wartungsmodus in eine Datei schreiben
$editmodename = 'editmode.txt'; // Name der Datei in der der Status des Editier-Modus von CMSimple_XH gespeicher wird
$adminmodename = 'adminmode.txt'; // Name der Datei in der der Status des Admin-Status gespeichert wird
$filename = 'maintenancemode.txt'; // Name der Datei
$actionscriptname = 'maintenance-action.php';
$switchscriptname = 'maintenance-switch.php';
$editmode = file_get_contents($editmodename);
$adminmode = file_get_contents($adminmodename);
$text = $_GET['modus'];
// Datei löschen
unlink($filename);
$handler = fopen($filename , "a+");
// Dateiinhalt in die Datei schreiben
fwrite($handler , $text);
fclose($handler); // Datei schließen
$text = "";
$text = file_get_contents($filename);
echo '<p>Maintenance Modus is now '.$text.'<br>Modus ist jetzt '.$text.'</p>';
?>
<p>Zum erneuten Umschalten<br>die Seite aktualisieren!</p>
<form action=<?=$switchscriptname?> method="get" >
<input type="submit" value="aktualisieren">
</form>
</div>
</body>
</html>


template.htm (des Maintenance - Templates), der obere Teil

<!DOCTYPE HTML>
<?php
// Maintenance Mode - lembach-kr.de
// Author = Karl Richard Lembach
// Check for Mantenance Mode
// Status des Wartungsmodus feststellen und evtl. Weiterleitung zur Wartungsseite
$filename = getcwd() . '/templates/maintenance/maintenancemode.txt'; // Name der Datei, in der der Status des Wartungsmodus gespeichert wird
echo "<!-- Start Maintenance template.htm -->\n";
echo "<!-- Das aktuelle Verzeichnis lautet: ".getcwd() . " -->\n";
echo "<!-- Der Pfad zu Datei lautet: ".$filename. " -->\n";
if ((file_exists($filename)) == true) {
echo "<!-- Die maintenancemode.txt wurde gefunden. -->\n";
}
else {
echo "<!-- Die maintenancemode.txt wurde nicht gefunden. -->\n";
}
$text = file_get_contents($filename);
echo "<!-- Der Maintenance-Mode Schalter steht auf: ".$text." -->\n";
if (($text == "OFF") and (!XH_ADM)) {
header("Location: /?Home");
exit();
}
?>
<?php
// if jQuery4CMSimple is installed, include its jQuery library
if (is_readable($pth['folder']['plugins'].'jquery/jquery.inc.php')) {
include_once $pth['folder']['plugins'].'jquery/jquery.inc.php';
include_jQuery();
}
?>
<html lang="<?=$sl;?>">
<head>

..........


Seitenanfang

Please activate JavaScript in your browser.

» Sitemap