<?php

/*
  Vorlagenseite für Standard-Artikel.
  Diese Seite erzeugt anhand diverser Variablen und Text- bzw. Grafikabschnitte eine standardisierte Darstellung.
  Diese Seite ist eine reine php-Seite und wird durch eine reine PHP-Variablen-Seite aufgerufen.
*/

Zusätzliche Variablen ermitteln /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ ###### Lade die aktuelle Datei in eine Variable

$pageContent = file_get_contents(phpConvertPageToFilesystemPath(htmlspecialchars($_GET["id"])));
// ********************
// Variablen bestimmen
// ********************
//###### URL zur Anzeige von Bildern über http/https
$dokuwikiMediaUrl = 'https://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/lib/exe/fetch.php?media=';
// ###### Rechte Sidbar
$sidebarRight = phpConvertPageToFilesystemPath($pageVarArray['variables']['default']['sidebarRight']);
// ###### Daten zum Erstellungszeitpunkt
$pageVarArray['variables']['default']['authorCreationDate'] = date("d.m.Y",strtotime($pageVarArray['variables']['default']['authorCreationDate']));
$pageVarArray['variables']['default']['authorCreationTimeStamp'] = strtotime("{$pageVarArray['variables']['default']['authorCreationDate']} {$pageVarArray['variables']['default']['authorCreationTime']}");
//###### Falls ein oder mehrere Bilder verwendet werden, muss der DIV benannt werden
$imageCounter = 0;
//Führende und endende Leerzeichen und Zeilenumbrüche entfernen
$pageVarArray['variables']['default']['pageEyeCatcher'] = trim($pageVarArray['variables']['default']['pageEyeCatcher']);
// ********************
// Fehlermeldung, falls keine CSS-Datei vorhanden ist
// ********************
  if ( (empty($pageVarArray['variables']['default']['styleSchema'])) || (!(file_exists(phpConvertPageToFilesystemPath($pageVarArray['variables']['default']['styleSchema']))))) {
    echo '<html>
      <div style="width: 100%; height: 100px; padding-top:25px; text-align: center; border: 2px solid black; font-weight: bold; font-size: 2vw;">
        Es existiert keine Style-Sheet-Datei
      </div>
    </html>';
    exit();
  }

CSS-Datei inkludieren /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ include(phpConvertPageToFilesystemPath('includes:css:css_transform_page')); include(phpConvertPageToFilesystemPath($pageVarArray['variables']['default']['styleSchema'])); Funktionen

  //##################################################################################
  //###### Funktion: Durchsuche angegebenen Pfad nach Bildern (nicht rekursiv)
  //##################################################################################
    function func_getAllImagesFromDir($dir, $filter, $excludeArray, $title, $description) {
      //CONDITION: Falls kein oder ein falscher Exclude-Filter gesetzt wurde, setze Asterisk als Filter
      if ( (empty($excludeArray)) || (!(isset($excludeArray))) || (!is_array($excludeArray)) ) {
        $excludeArray = NULL;
      }
      if (!(is_null($excludeArray))) {
        $excludeRegExString = ( (count($excludeArray) > 1) ? '(' . implode('|',$excludeArray) . ')' : $excludeArray[0] );
      }
          
      //###### Wenn Uebergabewert In DokuWiki-Pfad-Syntax, dann konvertiere zu File-System-Pfad-Syntax
      if ((strpos($dir,':'))) {
      //###### String enthält :
        $tree = glob(rtrim(phpConvertNamespaceToFilesystemPath($dir), '/') . '/' . $filter);
      } elseif (strpos($dir,'/') !== false ) {
      //###### String enthält /
        $tree = glob(rtrim($dir, '/') . '/' . $filter);
      } else {
      //###### String enthält weder : noch /
        $tree = glob(rtrim(phpConvertNamespaceToFilesystemPath($dir), '/') . '/' . $filter);
      }
      
      if (is_array($tree)) {
        foreach ($tree as $file) {
          if (is_file($file)) {
            //###### Falls Datei verarbeitet werden soll, inkludieren und in ganzheitliches Array fuellen
            if ( (strpos($file, '.jpg')) || (strpos($file, '.png')) || (strpos($file, '.svg')) ) {
              //###### UpperCase zu LowerCase umbenennen
              $filePathSplitArray = explode('/', $file);
              $fileName = end($filePathSplitArray);
              if (preg_match("/[A-Z]/", $fileName)) {
                $fileNameLower = strtolower($fileName);
                array_pop($filePathSplitArray);
                $filePath = implode('/', $filePathSplitArray);
                echo $filePath  . '-' . $fileNameLower. '<><><><>  ////  ';
                copy("$filePath/$fileName","$filePath/$fileNameLower");
                unlink("$filePath/$fileName");
              }
              if (!(preg_match($excludeRegExString, $file) === 1)) {
                $includedImages[] = [
                  'image'       => str_replace('media:', '', phpCreateDokuWikiConformName(substr(str_replace(realpath(dirname(__FILE__) . '/../../..'), '', $file),1))),
                  'title'       => $title,
                  'description' => $description
                ];
              }
              
            }
          }
        }
      }
  //###### globales Array uebergeben
      return $includedImages;
    }
  //##################################################################################
  //###### Funktion 1v2: Erstelle das Repo einer Gallerie
  //###### Funktion 2v2: Erstelle das zum Repo zugehörige Ribbon
  //##################################################################################
    function func_buildGalleryRepo($givenGallerySectionData) {
      //CONDITION: Falls kein oder ein falscher Include-Filter gesetzt wurde, setze Asterisk als Filter
      if ( (empty($givenGallerySectionData['sectionContIncl'])) || (!(isset($givenGallerySectionData['sectionContIncl']))) || (!is_array($givenGallerySectionData['sectionContIncl'])) ) {
        $givenGallerySectionData['sectionContIncl'] = ['*'];
      }
      $currentGalleryImageArray = array();
      foreach ($givenGallerySectionData['sectionContent'] as $currentImageSource) {
        if (strpos($currentImageSource[0], '.')) {
          $currentImageSourceFile = preg_replace(['/\/data\/pages\//i', '/.txt$/i'], ['/data/media/',''], phpConvertPageToFilesystemPath($currentImageSource[0]));
          unset($currentImageSourceDir);
        } else {
          $currentImageSourceDir = str_replace('/data/pages/', '/data/media/', phpConvertNamespaceToFilesystemPath($currentImageSource[0]));
          unset($currentImageSourceFile);
        }
        $currentImageTitle = $currentImageSource[1];
        $currentImageDescription = $currentImageSource[2];
        // CONDITION: Handelt es bei der aktuellen Bildquelle um ein Bild oder einen Ordner
        if (isset($currentImageSourceDir) && (file_exists($currentImageSourceDir))) {
          foreach($givenGallerySectionData['sectionContIncl'] as $curentImageFilter) {
            $foundImages = func_getAllImagesFromDir($currentImageSourceDir, $curentImageFilter, $givenGallerySectionData['sectionContExcl'], $currentImageTitle, $currentImageDescription);
            if (!(is_null($foundImages))) {
              $currentGalleryImageArray = array_merge($currentGalleryImageArray, $foundImages);
            }
          }
        } elseif (isset($currentImageSourceFile) && (file_exists($currentImageSourceFile))) {
          $currentGalleryImageArray[] = [
            'image'       => str_replace('media:', '', phpCreateDokuWikiConformName(substr(str_replace(realpath(dirname(__FILE__) . '/../../..'), '', $currentImageSourceFile),1))),
            'title'       => $currentImageTitle,
            'description' => $currentImageDescription
          ];
        }
      }
      array_unique($currentGalleryImageArray);
      sort($currentGalleryImageArray);
      return $currentGalleryImageArray;
    }
    function func_buildGalleryRibbon($dokuwikiMediaUrl, $keyCurrentParagraph, $keyCurrentSection, $currentGalleryImageArrayRaw) {
      //###### Gallerie-Ribbon-String mit allen Bildern erstellen
      $imageRibbonString = '';
      foreach ($currentGalleryImageArrayRaw as $key => $currentGalleryImage) {
        $currentGalleryImageArray['image'][$key] = $currentGalleryImage['image'];
        $currentGalleryImageArray['title'][$key] = phpCleanUpVarString($currentGalleryImage['title']);
        $currentGalleryImageArray['description'][$key] = phpCleanUpVarString($currentGalleryImage['description']);
      }
      echo '
        <script language="javaScript">
          var jsGalleryImageArrayImage_' . $keyCurrentParagraph . '_' . $keyCurrentSection . ' = [\'' . implode('\', \'', $currentGalleryImageArray['image']) . '\'];
          var jsGalleryImageArrayTitle_' . $keyCurrentParagraph . '_' . $keyCurrentSection . ' = [\'' . implode('\', \'', $currentGalleryImageArray['title']) . '\'];
          var jsGalleryImageArrayDesc_' . $keyCurrentParagraph . '_' . $keyCurrentSection . ' = [\'' . implode('\', \'', $currentGalleryImageArray['description']) . '\'];
          initPreviewImage(\'previewImage-' . $keyCurrentParagraph . '-' . $keyCurrentSection . '\', jsGalleryImageArrayImage_' . $keyCurrentParagraph . '_' . $keyCurrentSection . ', jsGalleryImageArrayTitle_' . $keyCurrentParagraph . '_' . $keyCurrentSection . ', jsGalleryImageArrayDesc_' . $keyCurrentParagraph . '_' . $keyCurrentSection . ', 0);
        </script>
      ';
    foreach ($currentGalleryImageArray['image'] as $currentImageKey => $imageCurrent) {
        $imageRibbonString .= '<img id="slideshow" onclick="rotateimages(\'previewImage-' . $keyCurrentParagraph . '-' . $keyCurrentSection . '\', ' . $currentImageKey . '); return false;" onmouseover="rotateimages(\'previewImage-' . $keyCurrentParagraph . '-' . $keyCurrentSection . '\', ' . $currentImageKey . '); return false;" src="' . $dokuwikiMediaUrl . $imageCurrent . '" />';
      }
      return $imageRibbonString;
    }
// ********************
// Funktion zum Anzeigen von Bildern
// ********************
  function func_showImage( $dokuwikiMediaUrl, $imagePath, $imageTitle, $imageDescription, $imageType, $keyCurrentParagraph, $keyCurrentSection) {
     return '<div class="ct-image-' . $imageType . '" onclick="fullscreen(\'previewImage-' . $keyCurrentParagraph . '-' . $keyCurrentSection . '\')"><img id="previewImage-' . $keyCurrentParagraph . '-' . $keyCurrentSection . '" src="' . $dokuwikiMediaUrl . $imagePath . '"></div><script language="javaScript">initPreviewImage(\'previewImage-' . $keyCurrentParagraph . '-' . $keyCurrentSection . '\', \'' . $imagePath . '\', \'' . $imageTitle . '\', \'' . $imageDescription . '\', 0);</script>';
  }
// ********************
// JavaScript-Funktionen für Slideshow und FullScreen/Lightbox
// ********************
  //###### Lightbox-Funktionen-String erstellen (JavaScript)
  $jsLightboxFunctions = '
    <script language="javascript">
      function initPreviewImage(givenImageDiv, givenImageArray = null, givenTitleArray = null, givenDescArray = null, givenImageKey = 0) {
        imgFromGivenDiv =             document.getElementById(givenImageDiv);
        if (Array.isArray(givenImageArray)) {
          imgFromGivenDiv.arrayKey =    givenImageKey;
          imgFromGivenDiv.array =       givenImageArray.slice(0);
          imgFromGivenDiv.arrayTitle =  givenTitleArray.slice(0);
          imgFromGivenDiv.arrayDesc =   givenDescArray.slice(0);
          imgFromGivenDiv.src =         "' . $dokuwikiMediaUrl . '" + imgFromGivenDiv.array[givenImageKey];
        } else {
          imgFromGivenDiv.src =         "' . $dokuwikiMediaUrl . '" + givenImageArray;
          imgFromGivenDiv.title =       givenTitleArray;
          imgFromGivenDiv.description = givenDescArray;
        }
      }
      function rotateimages(givenImageDiv, givenImageKey){
        imgFromGivenDiv =             document.getElementById(givenImageDiv)
        imgFromGivenDiv.arrayKey =    givenImageKey;
        imgFromGivenDiv.src =         "' . $dokuwikiMediaUrl . '" + imgFromGivenDiv.array[givenImageKey];
        imgFromGivenDiv.title =       imgFromGivenDiv.arrayTitle[givenImageKey]
      }
      function fullscreen(givenImageDivId) {
        ctFullscreen =                document.getElementById("fullscreenContainer");
        ctFullscreenImage =           document.getElementById("fullscreenImage");
        ctFullscreenInfo =            document.getElementById("fullscreenInfo");
        ctFullscreenInfoTitle =       document.getElementById("fullscreenTitle");
        ctFullscreenInfoDescription = document.getElementById("fullscreenDescription");
        ctFullscreenInfoNav =         document.getElementById("fullscreenNav");
        ctFullscreenInfoPrev =        document.getElementById("fullscreenPrev");
        ctFullscreenInfoCount =       document.getElementById("fullscreenCount");
        ctFullscreenInfoNext =        document.getElementById("fullscreenNext");
        imgFromGivenDiv =             document.getElementById(givenImageDivId);
        if (typeof imgFromGivenDiv.array == "undefined") {
          ctFullscreenImage.src =             imgFromGivenDiv.src;
          ctFullscreenImage.title =           imgFromGivenDiv.title;
          ctFullscreenImage.description =     imgFromGivenDiv.description;
          ctFullscreenInfoNav.style.display = "none";
        } else {
          ctFullscreenImage.arrayKey =    imgFromGivenDiv.arrayKey;
          ctFullscreenImage.array =       imgFromGivenDiv.array;
          ctFullscreenImage.arrayTitle =  imgFromGivenDiv.arrayTitle;
          ctFullscreenImage.arrayDesc =   imgFromGivenDiv.arrayDesc;
          ctFullscreenImage.src =         "' . $dokuwikiMediaUrl . '" + ctFullscreenImage.array[ctFullscreenImage.arrayKey];
          ctFullscreenImage.title =       ctFullscreenImage.arrayTitle[ctFullscreenImage.arrayKey];
          ctFullscreenImage.description = ctFullscreenImage.arrayDesc[ctFullscreenImage.arrayKey];
          ctFullscreenInfoNav.style.display = "flex";
          ctFullscreenInfoCount.innerHTML = (parseInt(ctFullscreenImage.arrayKey) + 1) + "/" + ctFullscreenImage.array.length;
          if ((parseInt(ctFullscreenImage.arrayKey) + 1) == ctFullscreenImage.array.length) {
            ctFullscreenInfoNext.style.visibility = "hidden";
          } else {
            ctFullscreenInfoNext.style.visibility = "visible";
          }
          if (parseInt(ctFullscreenImage.arrayKey) == 0) {
            ctFullscreenInfoPrev.style.visibility = "hidden";
          } else {
            ctFullscreenInfoPrev.style.visibility = "visible";
          }
        }
        if ((typeof ctFullscreenImage.title == "undefined") || (ctFullscreenImage.title == "")) {
          ctFullscreenInfoTitle.innerHTML = "keine Beschreibung vorhanden";
        } else {
          ctFullscreenInfoTitle.innerHTML = ctFullscreenImage.title;
        }
        ctFullscreen.style.display = "flex";
      }
      function fullscreenClose() {
        ctFullscreen = document.getElementById("fullscreenContainer");
        ctFullscreen.style.display = "none";
      }
      function fullscreenPrev() {
        ctFullscreen = document.getElementById("fullscreenImage");
        ctFullscreen.arrayKey = parseInt(ctFullscreen.arrayKey) - 1;
        fullscreen("fullscreenImage");
      }
      function fullscreenNext() {
        ctFullscreen = document.getElementById("fullscreenImage");
        ctFullscreen.arrayKey = parseInt(ctFullscreen.arrayKey) + 1;
        fullscreen("fullscreenImage");
      }
    </script>
  ';

Medienverzeichnis prüfen und ggfs. anlegen (vereinfacht das Hochladen von Bildern über den MediaManager) /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ ###### Alle Bilder am angegebenen Pfad finden (hier Blog-Mediendateien)

  //###### zugehoeriges Medien-Verzeichnis ermitteln
  $filePathOfPageImages = str_replace('/pages/media/', '/media/', phpConvertNamespaceToFilesystemPath('media:' . $_GET["id"]));
  //###### das übergeordnete (Parent)-Verzeichnis des Medien-Verzeichnises ermitteln
  $filePathOfPageImagesSplit = explode(':', $_GET["id"]);
  end($filePathOfPageImagesSplit);
  array_pop($filePathOfPageImagesSplit);
  $wikiPathOfParentPageImages = implode(':', $filePathOfPageImagesSplit);
  $filePathOfParentPageImages = str_replace('/pages/media/', '/media/', phpConvertNamespaceToFilesystemPath('media:' . $wikiPathOfParentPageImages));
  //###### Erstelle den Pfad, falls er nicht existiert
  $filePathOfPageImagesSplit=explode('/', ltrim($filePathOfPageImages, '/'));
  $pathOfPageImagesBreadcrumb = '';
  foreach($filePathOfPageImagesSplit as $currentPathOfPageImagesSubfolder) {
    $pathOfPageImagesBreadcrumb .= '/' . $currentPathOfPageImagesSubfolder;
    if (!file_exists($pathOfPageImagesBreadcrumb)) {
        mkdir($pathOfPageImagesBreadcrumb);
    }
  }

Generiere die eigentliche Seite /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ ###### HTML-Tag öffnen

//##################################################################################
  echo '<html>';
//###### JavaScript-Funktionen einbinden, falls gesetzt
//##################################################################################
  if (isset($jsLightboxFunctions)) { echo $jsLightboxFunctions; }
//###### Fullscreen-Image-Container erzeugen
//##################################################################################
  echo '
    <div id="fullscreenContainer" class="ctr-fullscreen-outer-frame">
      <div class="ctr-fullscreen-inner-frame">
        <div class="ctr-fullscreen-img-outer-frame">
          <div onclick="fullscreenClose()" class="ctr-fullscreen-img-inner-frame">' . ( (!empty($pageVarArray['variables']['default']['pageImageCover'])) ? '<img id="fullscreenImage" src="' . $dokuwikiMediaUrl . $pageVarArray['variables']['default']['pageImageCover'] . '">' : '' ) . '</div>
        </div>
        <div id="fullscreenInfo" class="ctr-fullscreen-info">
          <div class="ctr-fullscreen-description-outer-frame">
            <div id="fullscreenTitle" class="ctr-fullscreen-desc-title">keine Beschreibung vorhanden</div>
            <div id="fullscreenDescription" class="ctr-fullscreen-desc-content"></div>
          </div>
          <div id="fullscreenNav" class="ctr-fullscreen-nav">
            <div id="fullscreenPrev" onclick="fullscreenPrev()" class="elem-fullscreen-overlay-nav-btn">&#x25c0;</div>
            <div id="fullscreenCount" class="elem-fullscreen-overlay-nav-count">1/1</div>
            <div id="fullscreenNext" onclick="fullscreenNext()" class="elem-fullscreen-overlay-nav-btn">&#x25b6;</div>
          </div>
        </div>
      </div>
    </div>
  ';
//###### Parent-Inhalts-Container
//##################################################################################
  //###### BEGIN: parent-container: umspannender Inhalts-Container
  echo "

";

    //###### BEGIN: parent-container-linke-spalte: umspannender Inhalts-Container
    echo "
<div class='" . ( ((isset($pageVarArray['variables']['default']['sidebarRight'])) && (file_exists(phpConvertPageToFilesystemPath($pageVarArray['variables']['default']['sidebarRight'])))) ? 'ct-parent-column-left' : 'ct-parent-column-full' ) . "'>";
      //CONDITION: Falls ein Top-Banner der Seite angezeigt werden soll
      if ( ($pageVarArray['variables']['default']['pageImageBannerDisplay']) && (!empty($pageVarArray['variables']['default']['pageImageBanner'])) ) {
        echo "
  <div class='ct-paragraph' style='border: none; background: none; border-radius: 0;'>
    <div class='ct-paragraph-section-content-image-banner' style='background: none;'>" . func_showImage($dokuwikiMediaUrl, $pageVarArray['variables']['default']['pageImageBanner'], '', '', 'stretch-top', '0', '0') . "</div>
  </div>
        ";
      }
      //Informationen zu Datum, Webpage und Autor
      echo "
  <div style='margin-bottom: var(--global-font-size);'>Beitrag" . ( (!empty($pageVarArray['variables']['default']['authorCreationDate'])) ? " vom {$pageVarArray['variables']['default']['authorCreationDate']}" : "" ) . " auf {$_SERVER['SERVER_NAME']}" . ( (!empty($pageVarArray['variables']['default']['authorCreationUser'])) ? "  von </html>[[user:{$pageVarArray['variables']['default']['authorCreationUser']}]]<html>" : "" ) . "</div>
      ";
      //CONDITION: Falls der Titel der Seite angezeigt werden soll
      if ($pageVarArray['variables']['default']['pageTitleDisplay']) {
        echo "
  <div class='ct-paragraph'>
    <div class='ct-page-title-top'>" . str_replace('\\\\', '<br />', $pageVarArray['variables']['default']['pageTitleRow1']) . "</div>" . ( (!empty($pageVarArray['variables']['default']['pageTitleRow2'])) ? "<div class='ct-page-title-bottom'>{$pageVarArray['variables']['default']['pageTitleRow2']}</div>" : "" ) . "
  </div>
        ";
      }
      //CONDITION: Falls der Eyecatcher der Seite angezeigt werden soll
      if ( ($pageVarArray['variables']['default']['pageEyeCatcherDisplay']) && (!empty($pageVarArray['variables']['default']['pageEyeCatcher'])) ) {
        echo "
  <div class='ct-paragraph'" . ( ($pageVarArray['variables']['default']['pageEyeCatcherStyled']) ? "" : " style='border: none; border-radius: none; background: none;'" ). ">
    <div class='ct-paragraph-eyecatcher'" . ( ($pageVarArray['variables']['default']['pageEyeCatcherStyled']) ? "" : " style='background: none;'" ). ">{$pageVarArray['variables']['default']['pageEyeCatcher']}</div>
  </div>
        ";
      }
      //LOOP: Finde alle Content-Bereiche
      foreach($pageVarArray['paragraphs'] as $keyCurrentParagraph=>$currentParagraph) {
        unset($currentInlineSection);
        if ($currentParagraph['paragraphDisplay']) {
          echo "
  <div class='ct-paragraph'" . ( ($currentParagraph['paragraphStyled']) ? "" : " style='border: none; border-radius: 0; background: none;'" ). ">";
            echo ( (($currentParagraph['paragraphTitleDisplay']) && (!empty($currentParagraph['paragraphTitle']))) ? "<div class='ct-paragraph-title'>" . trim($currentParagraph['paragraphTitle']) . "</div>" : "" );
            foreach($currentParagraph['paragraphSections'] as $keyCurrentSection=>$currentParagraphSection) {
              //CONDITION: Handelt es sich beim aktuellen Abschnitt um einen Abschnitt mit einem "Nachbarn"?
              if ((isset($currentInlineSection['left'])) || ($currentParagraphSection['sectionAlignment'][0] == 'inline') || ($currentParagraphSection['sectionAlignment'][0] == 'column')) {
                if (isset($currentInlineSection['left'])) {
                  if (($currentParagraphSection['sectionAlignment'][0] != 'inline') && ($currentParagraphSection['sectionAlignment'][0] != 'column')) {
                    echo '<html>
                      <div style="width: 100%; height: 100px; padding-top:25px; text-align: center; border: 2px solid black; font-weight: bold; font-size: 2vw;">
                        FEHLER: Es wurde nur einer von zwei Inline- oder Spalten-Bereichen angegeben
                      </div>
                    </html>';
                    exit();
                  }
                  $currentInlineSection['right'] = $currentParagraphSection;
                  $currentInlineSection['right']['sectionAlignment'][0] = 'inline-right';
                  //CONDITION: Falls zwei Nachbar-Bereiche korrekt angegeben wurden, stelle diese dar; Sollte einer von beiden als Spalte angegeben sein, deaktiviere den Fließtext
                  if (($currentInlineSection['left']['sectionAlignment'][0] == 'column') || ($currentInlineSection['right']['sectionAlignment'][0] == 'column')) {
                    $inlineSuffix = '-column';
                  } else {
                    $inlineSuffix = '';
                  }
                  echo "<div class='ct-paragraph-section-flow-outer{$inlineSuffix}'><div class='ct-paragraph-section-flow-inner{$inlineSuffix}'>" . ( ($currentInlineSection['right']['sectionType'][0] == 'image') ? func_showImage($dokuwikiMediaUrl, $currentInlineSection['right']['sectionContent'], $currentInlineSection['right']['sectionTitle'], $currentInlineSection['right']['sectionDescription'], $currentInlineSection['right']['sectionAlignment'][0], $keyCurrentParagraph, $keyCurrentSection . '-right') : trim($currentInlineSection['right']['sectionContent']) ) . "</div>" . ( ($currentInlineSection['left']['sectionType'][0] == 'image') ? func_showImage($dokuwikiMediaUrl, $currentInlineSection['left']['sectionContent'], $currentInlineSection['left']['sectionTitle'], $currentInlineSection['left']['sectionDescription'], $currentInlineSection['left']['sectionAlignment'][0], $keyCurrentParagraph, $keyCurrentSection . '-left') : trim($currentInlineSection['left']['sectionContent']) ) . "</div>";
                  
                  
                  
                } else {
                  $currentInlineSection['left'] = $currentParagraphSection;
                  $currentInlineSection['left']['sectionAlignment'][0] = 'inline-left';
                  continue;
                }
                unset($currentInlineSection);
              //CONDITION: Handelt es sich beim angegebenen Abschnitt um eine Gallerie
              } elseif ($currentParagraphSection['sectionType'][0] == 'gallery') {
                $currentGalleryImageArray = func_buildGalleryRepo($currentParagraphSection);
                echo func_showImage($dokuwikiMediaUrl, $currentGalleryImageArray[0]['image'], $currentGalleryImageArray[0]['title'], $currentGalleryImageArray[0]['description'], $currentParagraphSection['sectionType'][0], $keyCurrentParagraph, $keyCurrentSection);
                $imageRibbonString = func_buildGalleryRibbon($dokuwikiMediaUrl, $keyCurrentParagraph, $keyCurrentSection, $currentGalleryImageArray);
                echo '
    <div class="ct-image-gallery-ribbon">
      <div class="ct-image-gallery-ribbon-content">' . $imageRibbonString . '</div>
    </div>
                ';
              } else {
                echo ( (($currentParagraphSection['sectionTitleDisplay']) && (!empty($currentParagraphSection['sectionTitle']))) ? "<div class='ct-paragraph-section-title'>" . trim($currentParagraphSection['sectionTitle']) . "</div>" : "" );
                echo "
    <div class='ct-paragraph-section-content'" . ( ($currentParagraph['paragraphStyled']) ? "" : " style='background: none;'" ). ">" . ( ($currentParagraphSection['sectionType'][0] == 'image') ? func_showImage($dokuwikiMediaUrl, $currentParagraphSection['sectionContent'], $currentParagraphSection['sectionTitle'], $currentParagraphSection['sectionDescription'], $currentParagraphSection['sectionAlignment'][0], $keyCurrentParagraph, $keyCurrentSection) : trim($currentParagraphSection['sectionContent']) ) . "</div>
                ";
              }
            }
          echo "
  </div>
          ";
        }
      }
    //###### CLOSE: parent-container-linke-spalte: umspannender Inhalts-Container
    echo "  </div>";
    // CONDITION: Falls eine Seitenleiste eingeblendet werden soll, füge diese Hinzu
    if ((isset($pageVarArray['variables']['default']['sidebarRight'])) && (file_exists(phpConvertPageToFilesystemPath($pageVarArray['variables']['default']['sidebarRight'])))) {
      //###### BEGIN: parent-container-rechte-spalte: umspannender Inhalts-Container
      echo "<div class='ct-parent-column-right'>";
      include($sidebarRight);
      //###### CLOSE: parent-container-rechte-spalte
      echo "    </div>";
    };
  //###### CLOSE: parent-container: umspannender Inhalts-Container
  echo "</div>";
//###### JavaScript - tatsächliche Größe der ParentBox bestimmen und festlegen
//##################################################################################
  echo '  
    <script language="javascript">
      var biggestHeight = 0;
      // Loop through elements children to find & set the biggest height
      $(".parentbox*").each(function(){
        // If this elements height is bigger than the biggestHeight
        if ($(this).height() > biggestHeight ) {
         // Set the biggestHeight to this Height
         biggestHeight = $(this).height();
        }
      });
      // Set the container height
      $(".parentbox").height(biggestHeight);
    </script>
  ';
  
//###### HTML-Tag schließen
//##################################################################################
  echo '</html>';

?>

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information