diff --git a/html/Setup.php b/html/Setup.php index b9ecfd0..f346a38 100644 --- a/html/Setup.php +++ b/html/Setup.php @@ -1,628 +1,10 @@ - - - - - -HelferDB Setup Wizard - - - - -
-

HelferDB Setup Wizard

- -

Diese Seite führt durch die Einrichtung der Helferdatenbank.

-

Schritt 1: Logindaten für Datenbank eingeben

-

Bitte hier zunächst die Logindaten für die Datenbank eingeben. Es muss in der Regel nur ein Passwort vergeben werden und die anderen beiden Werte können unverändert bleiben.

-
- -
-
-
-
-
-
- -
-
-
-

Schritt 2: Datenbank einrichten

-

Bitte zunächst mariadb einrichten (oder mysql) und dazu folgendes in der Shell (z.b. bash) eingeben:

-
sudo apt-get install mariadb
-
-
- - + +require_once("Wizard.php"); + +$wizard = new Wizard(); + +$wizard->renderPHP(); + +?> + diff --git a/html/Setup.rst b/html/Setup.rst deleted file mode 100644 index 7a7cdd5..0000000 --- a/html/Setup.rst +++ /dev/null @@ -1,54 +0,0 @@ - -HelferDB Setup Wizard ---------------------- - -Diese Seite führt durch die Einrichtung der Helferdatenbank. - -.. raw:: html - - - - -Schritt 1: Logindaten für Datenbank eingeben -............................................ - -Bitte hier zunächst die Logindaten für die Datenbank eingeben. Es muss in der Regel nur ein Passwort vergeben werden und die anderen beiden Werte können unverändert bleiben. - -.. raw:: html - -
- -
-
-
-
-
-
- -
- - - - -.. raw:: html - - - - -Schritt 2: Datenbank einrichten -............................... - -Bitte zunächst mariadb einrichten (oder mysql) und dazu folgendes in der Shell (z.b. bash) eingeben: - -.. code:: bash - - sudo apt-get install mariadb - - -.. raw:: html - - diff --git a/html/Wizard.php b/html/Wizard.php new file mode 100644 index 0000000..26e9c7a --- /dev/null +++ b/html/Wizard.php @@ -0,0 +1,92 @@ +page = $step['page']; + } + if(isset($step['redirects'])){ + $this->redirects = $step['redirects']; + } + } + public function setCurrentStep(){ + if(!empty($this->redirects)){ + foreach($this->redirects as $redirect){ + if(isset($redirect['==']) && isset($redirect['id'])){ + foreach($redirect['=='] as $key => $value){ + if(isset($_GET[$key]) && $_GET[$key] == $value){ + $_GET['step'] = $redirect['id']; + } + } + } + if(isset($redirect['!=']) && isset($redirect['id'])){ + foreach($redirect['!='] as $key => $value){ + if(isset($_GET[$key]) && $_GET[$key] != $value){ + $_GET['step'] = $redirect['id']; + } + } + } + if(isset($redirect['>']) && isset($redirect['id'])){ + foreach($redirect['>'] as $key => $value){ + if(isset($_GET[$key]) && $_GET[$key] > $value){ + $_GET['step'] = $redirect['id']; + } + } + } + if(isset($redirect['<']) && isset($redirect['id'])){ + foreach($redirect['<'] as $key => $value){ + if(isset($_GET[$key]) && $_GET[$key] < $value){ + $_GET['step'] = $redirect['id']; + } + } + } + if(isset($redirect['>=']) && isset($redirect['id'])){ + foreach($redirect['>='] as $key => $value){ + if(isset($_GET[$key]) && $_GET[$key] >= $value){ + $_GET['step'] = $redirect['id']; + } + } + } + if(isset($redirect['<=']) && isset($redirect['id'])){ + foreach($redirect['<='] as $key => $value){ + if(isset($_GET[$key]) && $_GET[$key] <= $value){ + $_GET['step'] = $redirect['id']; + } + } + } + } + } + } +} + +class Wizard { + private string $header = ""; + private string $firststep = ""; + private array $steps = array(); + private string $footer = ""; + public function __construct($json_file = 'setupWizard.json'){ + $stepsArray = json_decode(file_get_contents($json_file), true); + $this->header = $stepsArray['header']; + $this->firststep = $stepsArray['firststep']; + foreach($stepsArray['steps'] as $step){ + $this->steps[$step['id']] = new WizardStep($step); + } + $this->footer = $stepsArray['footer']; + } + public function renderPHP(){ + if(isset($_GET['stepfrom'])){ + $this->steps[$_GET['stepfrom']]->setCurrentStep(); + } + echo $this->header; + if(isset($_GET['step'])){ + echo $this->steps[$_GET['step']]->page; + } + else{ + echo $this->steps[$this->firststep]->page; + } + echo $this->footer; + } +} +?> diff --git a/html/setupWizard.json b/html/setupWizard.json new file mode 100644 index 0000000..e47a17d --- /dev/null +++ b/html/setupWizard.json @@ -0,0 +1,33 @@ +{ + "header": "\n\n\n\n\nBengelsystem Setup Wizard<\/title>\n<head><\/head>\n<body><h1>Bengelsystem Setup Wizard<\/h1><p>Diese Seite führt durch die Einrichtung der Helferdatenbank.<\/p>", + "firststep": "selectdatabase", + "steps": [ + { + "id": "selectdatabase", + "page": "<h2>Datenbanktyp auswählen<\/h2><p>Für die meisten Conventions sollte eine SQLite Datenbank ausreichen. In diesem Fall ist die Datenbank in einer einzelnen Datei und es ist nicht nötig eine separate Datenbank aufzusetzen.<\/p><p><form action=\"Setup.php\">\r\n <fieldset>\r\n <legend>Datenbank auswählen<\/legend>\r\n <input type=\"hidden\" name=\"stepfrom\" value=\"selectdatabase\" \/>\r\n <input type=\"radio\" id=\"sqlite\" name=\"databasetype\" value=\"SQLite\" checked \/>\r\n <label for=\"sqlite\">SQLite<\/label><br \/>\r\n <input type=\"radio\" id=\"sqlite\" name=\"databasetype\" value=\"MariaDB\" \/>\r\n <label for=\"sqlite\">MariaDB<\/label><br \/>\r\n <input type=\"submit\" value=\"Weiter\" \/>\r\n <\/fieldset>\r\n<\/form><\/p>", + "redirects": [ + { + "==": {"databasetype": "SQLite"}, + "id": "createtables" + }, + { + "!=": {"databasetype": "SQLite"}, + "id": "enterlogindata" + } + ] + }, + { + "id": "createtables", + "page": "<h2>Tabellen einrichten</h2>" + }, + { + "id": "enterlogindata", + "page": "<h2>Logindaten f\u00FCr die Datenbank eingeben<\/h2>\r\n<p>Bitte hier zun\u00E4chst die Logindaten f\u00FCr die Datenbank eingeben. Es muss in der Regel nur ein Passwort vergeben werden und die anderen beiden Werte k\u00F6nnen unver\u00E4ndert bleiben.<\/p>\r\n<p><form action=\"Setup.php\" >\r\n <input type=\"hidden\" name=\"step\" value=\"setupdatabase\" \/>\r\n <label for=\"host\">Hostname<\/label><br \/>\r\n <input type=\"text\" id=\"host\" name=\"host\" value=\"localhost\" \/><br \/>\r\n <label for=\"user\">Benutzername<\/label><br \/>\r\n <input type=\"text\" id=\"user\" name=\"user\" value=\"helferdb\" \/><br \/>\r\n <label for=\"password\">Passwort<\/label><br \/>\r\n <input type=\"password\" id=\"password\" name=\"password\" \/><br \/>\r\n <input type=\"submit\" value=\"Datenbank einrichten\" \/>\r\n<\/form><\/p>\r\n" + }, + { + "id": "setupdatabase", + "page": "<h2>Datenbank einrichten<\/h2>\r\n<p>Bitte zunächst mariadb einrichten (oder mysql) und dazu folgendes in der Shell (z.b. bash) eingeben:<\/p>\r\n<pre><code>sudo apt-get install mariadb<\/code><\/pre>" + } + ], + "footer": "</body></html>" +}