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

Breadcrumb im Backend (CMS)

Derzeit können wir im Dashboard unseres CMS nur noch die Inhalte des aktuellen Ordners sehen. Über die neue Breadcrumb ist es möglich auch diese zu begutachten. Wenn Unterordner vorhanden sind, sieht man einen Breadcrumb-Pfeil. Beim Überfahren dieses Pfeils sieht man die Unterordner und kann seinen gewünschten Unterordner auswählen.

Für diese Funktion mussten einge Änderungen erfolgen, von denen ich hier ein paar erkläre. Und zwar wurde die Breadcrumb bisher immer über die Klasse sys erstellt. Wir möchten diese neue Funktion aber nur beim Dashboard haben. Deswegen wurde die Methode in die abstrakte Klasse editor verbaut. Im Dashboard lässt sie sich dann überschreiben.

Zu erst müssen wir in der /system/sys.php die neue displayBreadcrumb Funktion die gleich in die Page-Klasse kommt aufrufen:

  static function displayBreadcrumb($separator,$class,$idpraefix){
    global $currentpage;
    $currentpage->displayBreadcrumb($separator,$class,$idpraefix);
  }

In der system/classes/page.php wird wiederum die gleichnamige Funktion des Editors aufgerufen:

  function displayBreadcrumb($separator,$class,$idpraefix){
    $this->editor->displayBreadcrumb($separator,$class,$idpraefix);
  }

In der abstrakten Klasse /system/classes/editor.php wird dann die Standard-Funktion aus der alten sys-Klasse ausgeführt:

    function displayBreadcrumb($separator,$class,$idpraefix){
      $i = 1;
      $breadcrumb = $this->page->getBreadcrumb();
      $host = getSetting("global","global","host");
      while($i <= count($breadcrumb)){
        echo "<a href="".$host.$breadcrumb[$i-1][0].".html" class="".$class.""
              id="".$idpraefix.$i."">".$breadcrumb[$i-1][1]."</a>";
        if($i < count($breadcrumb)){
          echo $separator;
        }
        $i++;
      }
    }

Und jetzt kommt der letzte wichtige Schritt: Das Überschreiben dieser Funktion in der /system/classes/dashboard.php:

    function displayBreadcrumb($separator,$class,$idpraefix){
      $host = getSetting("global","global","host");
      ?>
        <script type="text/javascript" src="<?PHP echo $host; ?>/system/skins/backenddefault/breadcrumb.js"></script>
        <ul id="breadcrumb_dropdown">
          <li>
            <?PHP
              $i = 1;
              $breadcrumb = $this->page->getBreadcrumb();
              while($i <= count($breadcrumb)){
                echo "<a style='display:inline' href="".$host.$breadcrumb[$i-1][0].".html" class="".$class.""
                      id="".$idpraefix.$i."">".$breadcrumb[$i-1][1]."</a>";
                if($i < count($breadcrumb)){
                  echo $separator;
                }
                $i++;
              }
              if($_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>";
                }
              }
              $subFolders = FileServer::getFolders(getSetting("global","global","root")."content/articles/".$_GET['dir']);
              $host = getSetting("global","global","host");
              if($subFolders){
            ?>
          </li>
          <li>
            <a href="#" onmouseover="openFolders()" onmouseout="closeFoldersTime()">-&gt; </a>
            <div id="subfolders" onmouseover="cancelClosingFolders()" onmouseout="closeFoldersTime()">
              <?PHP
                foreach($subFolders as $folder){
                  echo "<a href='".$host.$this->page->alias.".html?dir=".$_GET['dir']."/".$folder."'>".$folder."</a>";
                }
              ?>
            </div>
          </li>
        </ul>
      <?PHP
      }
    }

Außerdem wurden noch einige CSS- und Javascriptänderungen durchgeführt. Welche genau steht im r10.