0251 / 590 837 15
info@a-coding-project.de
;

Installer Schrittliste (CMS)

Code & Blog Logo

Bei einer Installation ist es immer gut zu wissen, wie lange es noch dauert. Deswegen wird in der Installation unseres CMS heute eine Schrittliste gebastelt.

Hierfür gibt es in der Klasse /installer/installer.phpeine neue Eigenschaft namens Steps. Hier werden beim ersten Aufruf alle Schritte hereingeschrieben. Jeder Schritt ist ein Array. Er hat eine headline und den Content.

Bei getContent wird der Inhalt des aktuellen Schritts zurückgegeben:

<?PHP
  class Installer{
    public $step     = 1;
    public $allsteps = 5;
    public $steps    =null;

    public function __construct(){
      $this->addWelcomePage();
      $this->addDbSettings();
      $this->addAuth();
      $this->allsteps = sizeof($this->steps);
    }
    
    private function addWelcomePage(){
      $step['headline'] = 'Willkommen';
      $step['content']  = 'Willkommen zur ContentLion Installation!';
      $this->steps[] = $step;
    }
    
    public function getContent(){
      return $this->steps[$this->step-1]['content'];
    }
    
    private function addDbSettings(){
      $step['headline'] = 'Datenbank Einstellungen';
      $step['content']  = 'Datenbank Einstellungen';
      $this->steps[] = $step;
    }
    
    private function addAuth(){
      $step['headline'] = 'Authentifizierung';
      $step['content']  = 'Authentifizierung';
      $this->steps[] = $step;
    }
  }
?>

In der /install.php wird das ganze nun als Liste ausgegeben. Außerdem habe ich noch hinzugefügt, dass man den Schritt per $_GET setzen kann:

<?PHP
  include('installer/installer.php');
  session_start();
  if(!isset($_SESSION['installer'])){
    $_SESSION['installer'] = new Installer();
  }
  if($_GET['step']){
    $_SESSION['installer']->step = $_GET['step'];
  }
?>
<html>
  <head>
    <title>Installation ContentLion</title>
  </head>
  <body>
    <ol>
      <?PHP
        $i = 1;
        foreach($_SESSION['installer']->steps as $step){
          echo "<li ";
          if($i < $_GET['step']){
            echo "class='ready'>";
          }
          elseif($i == $_GET['step']){
            echo "class='current'>";
          }
          else{
            echo "class='wait'>";
          }
          echo $step['headline']."</li>";
          $i++;
        }
      ?>
    </ol>
    <?PHP
      echo $_SESSION['installer']->getContent();
    ?>
  </body>
</html>