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

Neuen Ordner erstellen (CMS)

Zwischen den Änderungen am Standard Skin, werde ich auch einige Seiten vom alten Backend ins neue übertragen. Derzeit können wir keine Ordner mehr erstellen. Nach diesem Beitrag geht es wieder 😉

Wir brauchen zunächst einen neuen Seitentyp. Dieser heißt /system/classes/newfolderpage.php. Die Benutzung ist eigentlich relativ simpel:

<?PHP
  class NewFolderPage extends Editor{
    function __construct($page){
      $this->page = $page;
    }

    public function display(){
      $contentpath = getSetting("global","global","root")."content/articles/".$_SESSION['dir']."/";
      if(isset($_POST['name'])){
        FileServer::createFolder($contentpath,$_POST['name']);
        ?>
        <script language="JavaScript"><!--
          window.location.href="home.html?dir=<?PHP echo $_SESSION['dir']."/".$_POST['name']; ?>";
        // --></script> 
        <?PHP
      }
      $template = new Template();
      $template->load("new_folder");
      $template->output();
    }

    function getHeader(){
    }

    public function getEditableCode(){
      return "<input name="save" type="submit" value="&Auml;ndern" onclick="form.action='".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']."' ; target='_self' ; return true" />";
    }

    public function save($newPage,$oldPage){
    }
}
?>

Es wird das neue Template /system/templates/new_folder.html verwendet:

<form method="POST">
  Name: <input name="name" /><br />
  <input type="submit" value="Erstellen">
</form>

Damit wir auch wissen wo unser Ordner erstellt werden soll, wird im Dashboard eine Session-Variable des ausgewählten Ordners angelegt:

...
              if($_GET['dir']){
                $_SESSION['dir'] = $_GET['dir'];
                $first = true;
                $fulldir = "";
                foreach(explode('/',$_GET['dir']) as $dir){
                  if(!$first){
                    echo $separator." ";
                    $fulldir .= "/".$dir;
                  }
                  else{
                    $first = false;
                    $fulldir .= $dir;
                  }
                  echo "<a style='display:inline' href='".$host.$this->page->alias.".html?dir=".$fulldir."'>".$dir."</a>";
                }
              }
              else{
                $_SESSION['dir'] = "";
              }
...

Diese Seite muss natürlich auch in der Pages-, Menu-, und Role-Rights Tabelle angelegt werden.

Alle Änderungen stehen in Revision 29 bei Google. In den letzten Tagen gab es keine Update-Packages. Ich habe mir überlegt, diese jetzt jeden Samstag zu erstellen, so dass nicht so viele Updates installiert werden müssen. Ich denke heut Nachmittag wird es soweit sein.