<?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 Text-Seite in dokuwiki- und xml-ähnlicher Syntax aufgerufen. */ //###### Lade die aktuelle Datei in eine Variable $pageContent = file_get_contents(phpConvertPageToFilesystemPath(htmlspecialchars($_GET["id"]))); $pageData[] = array(); //###### Setze den Pointer auf das letzte Array-Elelment end($pageData); $pageDataKey = key($pageData);
// ******************** // Variablen bestimmen // ******************** //###### URL zur Anzeige von Bildern über http/https $dokuwikiMediaUrl = 'https://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/lib/exe/fetch.php?media='; //###### Falls ein oder mehrere Bilder verwendet werden, muss der DIV benannt werden $imageCounter = 0;
// ******************** // Variablen auslesen // ******************** //###### Extrahiere den relevanten Inhalt für die Bestimmung der Variablen $substrStartPosition = strpos($pageContent, '<variables>') + strlen('<variables>'); $substrStopPosition = strpos($pageContent, '</variables>'); $pageVariables = ltrim(rtrim(substr($pageContent, $substrStartPosition, ($substrStopPosition - $substrStartPosition))));
//###### Teile den Variablenstring in einen Array und verwende den Endmarker als Trenner $pageVariablesSplit = preg_split('/<\/var>/i', $pageVariables, 0, PREG_SPLIT_NO_EMPTY);
//###### Ermittle aus jedem gefundenen Inhaltsabschnitt den Variablennamen und den Wert foreach ($pageVariablesSplit as $currentVariable) { preg_match('/name="(.*?)"/i', $currentVariable, $matchingVariableNames); preg_match('/>(.*?)$/i', $currentVariable, $matchingVariableValues); //Füge die Variablen dem Array pageData in der Dimension variables hinzu $pageData[$pageDataKey]['variables'][$matchingVariableNames[1]]=$matchingVariableValues[1]; }
// ******************** // Fehlermeldung, falls keine CSS-Datei vorhanden ist // ******************** if ( (empty($pageData[$pageDataKey]['variables']['pageCssStyle'])) || (!(file_exists(phpConvertPageToFilesystemPath($pageData[$pageDataKey]['variables']['pageCssStyle']))))) { echo '<html> <div style="width: 100%; height: 100px; padding-top:100px; 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($pageData[$pageDataKey]['variables']['pageCssStyle']));
// ******************** // Abschnitte auslesen // ******************** //###### Extrahiere den relevanten Inhalt für die Bestimmung des Seiteninhalts $substrStartPosition = strpos($pageContent, '<pagecontent>') + strlen('<pagecontent>'); $substrStopPosition = strpos($pageContent, '</pagecontent>'); $pageContent = ltrim(rtrim(substr($pageContent, $substrStartPosition, ($substrStopPosition - $substrStartPosition))));
//###### Teile den Inhaltsstring in einen Array und verwende den Endmarker der Contextbox als Trenner $pageContentSplit = preg_split('/<\/contentbox>/i', $pageContent, 0, PREG_SPLIT_NO_EMPTY); //###### Ermittle aus jedem gefundenen Inhaltsabschnitt den Titel und den Inhalt foreach ($pageContentSplit as $currentContentBox) { //###### Titel der ContentBox ermitteln if (preg_match('/title="(.*?)"/i', $currentContentBox, $matchingContentboxTitles) == 1) { $title = $matchingContentboxTitles[1]; } else { $title = ''; } // ******************** //###### Fehlermeldung, falls mehr als eine ImageBox pro ContenBox existiert // ******************** if ( substr_count($currentContentBox, '</imagebox>') > 1) { echo '<html> <div style="width: 100%; height: 200px; padding-top:100px; text-align: center; border: 2px solid black; font-weight: bold; font-size: 2vw;"> Fehler in Abschnitt ' . $title . ': Nur eine ImageBox pro Abschnitt! </div> </html>'; exit(); } //###### Display-Status der ContentBox ermitteln if (preg_match('/<contentbox.*?display="(.*?)"/i', $currentContentBox, $matchingContentboxTitles) == 1) { $display = $matchingContentboxTitles[1]; } else { $display = ''; } //###### Style eines möglichen Bildes ermitteln der ContentBox ermitteln $contentBoxValue = ltrim(rtrim(preg_replace('/(^.*?<contentbox.*?>)/s','',$currentContentBox)));
//###### Füge den gefundenen Abschnittstitel dem Abschnittsarray contentbox hinzu und ermittle den KEY des neuen Array-Wertes $pageData[$pageDataKey]['contentboxes'][] = array( 'title' => $title, 'display' => $display ); end($pageData[$pageDataKey]['contentboxes']); $pageDataContentBoxesKey = key($pageData[$pageDataKey]['contentboxes']);
//###### Füge jeder Imagebox den Typ "image" hinzu $contentBoxValue = preg_replace('/<imagebox/i', '<imagebox class="image"', $contentBoxValue);
//###### Ermittle Klasse (imagebox oder content), Typ und Style (später) der contentboxes $contentBoxParagraphsSplitByImage = preg_split('/(<imagebox|<\/imagebox>)/i', $contentBoxValue, 0, PREG_SPLIT_NO_EMPTY); foreach ($contentBoxParagraphsSplitByImage as $currentContentBoxParagraphContent) { //###### Welchen Display-Typ soll der Abschnitt haben if (preg_match('/display="(.*?)"/i', $currentContentBoxParagraphContent, $matchingDisplayTypes) == 1) {; $paragraphDisplayType=$matchingDisplayTypes[1]; } else { $paragraphDisplayType=''; } //###### Welchen Style-Typ soll der Abschnitt haben if (preg_match('/style="(.*?)"/i', $currentContentBoxParagraphContent, $matchingStyleTypes) == 1) {; $paragraphStyleType=$matchingStyleTypes[1]; } else { $paragraphStyleType=''; } //###### Welche Ausrichtung soll der Abschnitt haben if (preg_match('/align="(.*?)"/i', $currentContentBoxParagraphContent, $matchingAlign) == 1) {; $paragraphAlign=$matchingAlign[1]; } else { $paragraphAlign=''; } //###### Falls es sich bei dem Abschnittsteil um ein Image handelt if (strpos($currentContentBoxParagraphContent, 'class="image"')) { //###### Welche Images sollen ausgeschlossen werden (derzeit relevant für Gallerien und nur bei der Anzeige aller Bilder eines Verzeichnisses) if (preg_match('/exclude="(.*?)"/i', $currentContentBoxParagraphContent, $matchingImagesToExclude) == 1) {; $imagesToExclude=$matchingImagesToExclude[1]; } else { $imagesToExclude=''; } if (preg_match('/filter="(.*?)"/i', $currentContentBoxParagraphContent, $matchingSearchPattern) == 1) {; $searchPattern=$matchingSearchPattern[1]; } else { $searchPattern=''; } //###### Die Klasse der ContentBox festlegen (image) $paragraphClass="image"; //###### String bereinigen, so dass nur noch <image></image>-Tags vorhanden sind $currentContentBoxParagraphContent = ltrim(rtrim(preg_replace('/(style=".*?">)/s','',$currentContentBoxParagraphContent))); //###### Den Inhalts-String der Images splitten (falls mehre Images übergeben wurden) $paragraphImageSplit = preg_split('/(<\/image>)/i', $currentContentBoxParagraphContent, 0, PREG_SPLIT_NO_EMPTY); //######Die Zwischenspeicher-Variable paragraphImages löschen unset($paragraphImages); //###### Das Array mit dem Image oder den Images durchlaufen foreach ($paragraphImageSplit as $currentParagraphImage) { //###### Eine eventuell vorhandene Beschreibung des Bildes (alt für alternate text) ermitteln if (preg_match('/alt="(.*?)"/i', $currentParagraphImage, $matchingImageDescriptions) ==1 ) { $imageDescription = $matchingImageDescriptions[1]; } else { $imageDescription = ""; } //###### Den Wert ermitteln, indem der Image-Tag entfernt wird $imagePathValue = ltrim(rtrim(preg_replace('/(^.*?<image.*?>)/s','',$currentParagraphImage))); $paragraphImages[] = array( 'imageDescription' => $imageDescription, 'imagePath' => $imagePathValue ); } $paragraphContent = $paragraphImages; //###### Falls es sich bei dem Abschnittsteil um Text handelt } else { //###### Die Klasse der ContentBox festlegen (text) $paragraphClass="text"; //###### Den Typ der ContentBox festlegen $paragraphType="text"; //###### Den Inhalt unverändert übernehmen (da kein Image) $paragraphContent = phpCleanUpVarString($currentContentBoxParagraphContent);
$matches = explode("\n",$paragraphContent); if (preg_match('/ \*/', end(array_values($matches)))) { $paragraphContent .= "\r\n"; }
} //###### Füge die Art und den Inhalt (Text oder Bilder) der Abschnittsbereiche hinzu $pageData[$pageDataKey]['contentboxes'][$pageDataContentBoxesKey]['paragraph'][] = array( 'class' => $paragraphClass, 'style' => $paragraphStyleType, 'align' => $paragraphAlign, 'display' => $paragraphDisplayType, 'exclude' => $imagesToExclude, 'filter' => $searchPattern, 'content' => $paragraphContent ); } }
// ******************** // Bild-Daten sammeln und korrigieren // ******************** //###### 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 (vereinfacht das Hochladen von Bildern über den MediaManager) $filePathOfPageImagesSplit=explode('/', ltrim($filePathOfPageImages, '/')); $pathOfPageImagesBreadcrumb = ''; foreach($filePathOfPageImagesSplit as $currentPathOfPageImagesSubfolder) { $pathOfPageImagesBreadcrumb .= '/' . $currentPathOfPageImagesSubfolder; if (!file_exists($pathOfPageImagesBreadcrumb)) { mkdir($pathOfPageImagesBreadcrumb); } }
// ******************** // JavaScript-Funktionen für Slideshow und FullScreen/Lightbox // ******************** //###### Lightbox-Funktionen-String erstellen (JavaScript) $jsLightboxFunctions = ' <script language="javascript"> function rotateimages(givenImageDiv, givenimage){ document.getElementById("enlargedImage").setAttribute("src", "' . $dokuwikiMediaUrl . '" + givenimage); document.getElementById(givenImageDiv).setAttribute("src", "' . $dokuwikiMediaUrl . '" + givenimage); img = document.getElementById(givenImageDiv) }
function fullscreen(givenImageDivId) { imgDiv = document.getElementById("fullscreenimage"); imgDiv.style = "visibility: visible;"; imgGiven = document.getElementById(givenImageDivId); document.getElementById("enlargedImage").setAttribute("src", imgGiven.src); imgEnlarged = document.getElementById("enlargedImage"); if (imgEnlarged.naturalWidth > imgEnlarged.naturalHeight) { imgEnlarged.style = "width: 100%; height: auto; top: 50%; transform: translateY(-50%);"; } else { imgEnlarged.style = "width: auto; height: 100%; left: 50%; transform: translateX(-50%);"; } }
function thumbnail() { img = document.getElementById("fullscreenimage"); img.style = "visibility: hidden;"; }
function resizeImage( idName ) { img = document.getElementById(idName); if (img.naturalWidth > img.naturalHeight) { img.style = "width: 100%; height: auto; top: 50%; transform: translateY(-50%);"; } else { img.style = "width: auto; height: 100%; left: 50%; transform: translateX(-50%);"; } } </script> ';
//###### Variabeln bestimmen und korrigieren //################################################################################## // ###### Rechte Sidbar $sidebarRight = phpConvertPageToFilesystemPath($pageData[$pageDataKey]['variables']['pageSidebarRight']); // ###### URL zur Anzeige von Bildern über http/https $dokuwikiMediaUrl = 'https://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/lib/exe/fetch.php?media='; // ###### Daten zum Erstellungszeitpunkt $pageData[$pageDataKey]['variables']['pageCreationDate'] = date("d.m.Y",strtotime($pageData[$pageDataKey]['variables']['pageCreationDate'])); $pageData[$pageDataKey]['variables']['pageCreationTimeStamp'] = strtotime("{$pageData[$pageDataKey]['variables']['pageCreationDate']} {$pageData[$pageDataKey]['variables']['pageCreationTime']}");
Standard-Bilder pruefen ###### Cover des Artikels suchen und korrigieren
if (file_exists($filePathOfPageImages . '/page_cover.png')) { $imagePageCover = $_GET["id"] . ':page_cover.png'; } elseif (file_exists($filePathOfPageImages . '/page_cover.jpg')) { $imagePageCover = $_GET["id"] . ':page_cover.jpg'; } elseif (file_exists($filePathOfParentPageImages . '/standard_page_cover.png')) { $imagePageCover = $wikiPathOfParentPageImages . ':standard_page_cover.png'; } elseif (file_exists($filePathOfParentPageImages . '/standard_page_cover.jpg')) { $imagePageCover = $wikiPathOfParentPageImages . ':standard_page_cover.jpg'; } else { $imagePageCover = ''; }
//###### Banner des Artikels suchen und korrigieren if (file_exists($filePathOfPageImages . '/page_banner.png')) { $imagePageBanner = $_GET["id"] . ':page_banner.png'; } elseif (file_exists($filePathOfPageImages . '/page_banner.jpg')) { $imagePageBanner = $_GET["id"] . ':page_banner.jpg'; } elseif (file_exists($filePathOfParentPageImages . '/standard_page_banner.png')) { $imagePageBanner = $wikiPathOfParentPageImages . ':standard_page_banner.png'; } elseif (file_exists($filePathOfParentPageImages . '/standard_page_banner.jpg')) { $imagePageBanner = $wikiPathOfParentPageImages . ':standard_page_banner.jpg'; } else { $imagePageBanner = ''; }
//###### Vergleichsbild 1 suchen und korrigieren if (file_exists($filePathOfPageImages . '/page_comp1.png')) { $imagePageComp1 = $_GET["id"] . ':page_comp1.png'; } elseif (file_exists($filePathOfPageImages . '/page_comp1.jpg')) { $imagePageComp1 = $_GET["id"] . ':page_comp1.jpg'; } elseif (file_exists($filePathOfParentPageImages . '/standard_page_comp1.png')) { $imagePageComp1 = $wikiPathOfParentPageImages . ':standard_page_comp1.png'; } elseif (file_exists($filePathOfParentPageImages . '/standard_page_comp1.jpg')) { $imagePageComp1 = $wikiPathOfParentPageImages . ':standard_page_comp1.jpg'; } else { $imagePageComp1 = ''; }
//###### Vergleichsbild 2 suchen und korrigieren if (file_exists($filePathOfPageImages . '/page_comp2.png')) { $imagePageComp2 = $_GET["id"] . ':page_comp2.png'; } elseif (file_exists($filePathOfPageImages . '/page_comp2.jpg')) { $imagePageComp2 = $_GET["id"] . ':page_comp2.jpg'; } elseif (file_exists($filePathOfParentPageImages . '/standard_page_comp2.png')) { $imagePageComp2 = $wikiPathOfParentPageImages . ':standard_page_comp2.png'; } elseif (file_exists($filePathOfParentPageImages . '/standard_page_comp2.jpg')) { $imagePageComp2 = $wikiPathOfParentPageImages . ':standard_page_comp2.jpg'; } else { $imagePageComp2 = ''; }
namespace-abhängige Standard-Bilder pruefen ###### Zutatenbild suchen und korrigieren
if (file_exists($filePathOfPageImages . '/page_ingredients.png')) { $imagePageIngredients = $_GET["id"] . ':page_ingredients.png'; } elseif (file_exists($filePathOfPageImages . '/page_ingredients.jpg')) { $imagePageIngredients = $_GET["id"] . ':page_ingredients.jpg'; } elseif (file_exists($filePathOfParentPageImages . '/standard_page_ingredients.png')) { $imagePageIngredients = $wikiPathOfParentPageImages . ':standard_page_ingredients.png'; } elseif (file_exists($filePathOfParentPageImages . '/standard_page_ingredients.jpg')) { $imagePageIngredients = $wikiPathOfParentPageImages . ':standard_page_ingredients.jpg'; } else { $imagePageIngredients = ''; }
//###### Generiere anhand der Contentboxes die Darstellung //##################################################################################
//###### HTML-Tag öffnen //################################################################################## echo '<html>';
//###### JavaScript-Funktionen einbinden, falls gesetzt //################################################################################## if (isset($jsLightboxFunctions)) { echo $jsLightboxFunctions; }
//###### Parent-Inhalts-Container und Fullscreen-Image-Container erzeugen //################################################################################## echo ' <div id="fullscreenimage" class="contentbox-content-image-full-overlay"> <div onclick="thumbnail()" class="contentbox-content-image-full-overlay-image">✗<img id="enlargedImage" src="' . $dokuwikiMediaUrl . $images[0] . '"></div> </div> <div class="parentbox"><!-- ###### parentbox umspannender Inhalts-Container (öffnen) --> <div class="sectionbox-row"><!-- ###### Sectionbox für Spalten im umspannenden Inhalts-Container (öffnen) --> ';
//################################################################################## //###### LINKE Spalte öffnen //############################### echo' <div class="parentbox-contentbox-left"><!-- ###### Linke Spalte (öffnen) --> ';
//###### Erstellungsdatum und Autor anzeigen echo' <div class="dateBox">Beitrag vom ' . $pageData[$pageDataKey]['variables']['pageCreationDate'] . ' auf ' . $_SERVER['SERVER_NAME'] . ' von </html>[[user:' . $pageData[$pageDataKey]['variables']['pageCreationUser'] . ']]<html></div><br /><br /> '; //###### Titel, Subtitel und Kategorien anzeigen echo' <div class="titlebox"><!-- ###### titlebox (Produktname) (öffnen)--> <div class="titlebox-title"></html>' . str_replace('\\\\', '\\\\ ', $pageData[$pageDataKey]['variables']['pageTitleRow1']) . '<html></div> <div class="titlebox-content">' . $pageData[$pageDataKey]['variables']['pageTitleRow2'] . '</div> </div><!-- ###### titlebox (Produktname) (schließen)--> '; //###### ContentBox-Elemente anhand des Arrays dynamisch erzeugen
if (strpos(htmlspecialchars($_GET["id"]),':gliederung')) { $bookVolumeRoot = substr(htmlspecialchars($_GET["id"]),0,strpos(htmlspecialchars($_GET["id"]),':gliederung')); echo ' <div class="sectionbox-column"><!-- ###### sectionbox (Inhaltsverzeichnis) (schließen) --> <details> <summary class="contentbox-title"> Inhaltsverzeichnis </summary> ' . phpCreateProjectIndex($bookVolumeRoot, 'close') . ' </details> </div> '; }
//###### Den Eycatcher anzeigen, falls die Variable nicht leer ist if (!empty($pageData[$pageDataKey]['variables']['pageEyeCatcher'])) { echo ' <div class="sectionbox-row"><!-- ###### sectionbox (Eyecatcher) (schließen) --> <div class="contentbox"> <div class="contentbox-title">' . $pageData[$pageDataKey]['variables']['pageEyeCatcher'] . '</div> </div> </div><!-- ###### sectionbox (Eyecatcher) (schließen) --> '; }
//###### Alle Abschnitte nacheinander listen und die entsprechenden DIVs einbinden foreach ($pageData[$pageDataKey]['contentboxes'] as $currentContentBox) { // ###### Gibt es in dem Abschnitt einen Unterabschnitt mit Bild ( $paragraphContainingImageKey = array_search('image', array_column($currentContentBox["paragraph"], 'class')); unset($currentImageBoxStyle); unset($currentImageBoxAlign); unset($currentImageBoxDisplay); if ($paragraphContainingImageKey !== false) { $currentImageBoxStyle = $currentContentBox["paragraph"][$paragraphContainingImageKey]['style']; $currentImageBoxAlign = $currentContentBox["paragraph"][$paragraphContainingImageKey]['align']; $currentImageBoxDisplay = $currentContentBox["paragraph"][$paragraphContainingImageKey]['display']; } //###### Soll der Abschnitt ausgeblendet werden, dann überspringe diese ContentBox if ($currentContentBox['display']=='none') { continue; } //###### Öffne den nächsten Abschnitts-Block echo '<div class="sectionbox-row"><!-- ###### sectionbox (öffnen) -->';
//###### Falls der Abschnitt ein Image des Typs Cover oder Banner enthält, blende Rahmen und Hintergrundfarbe aus if ( (!($currentImageBoxStyle=='cover')) && (!($currentImageBoxStyle=='banner')) ) { echo '<div class="contentbox">'; }
//###### Falls der Abschnitt einen Titel enthält, öffne den Titelbereich des Abschnitts if ( !empty($currentContentBox['title']) ) { echo '<div class="contentbox-title">' . $currentContentBox['title'] . '</div>'; }
//###### Öffnen den Inhaltsbereich des Abschnitts echo '<div class="contentbox-content">';
//Alle Unterabschnitte listen und je nach Klasse und Style formatieren foreach ($currentContentBox['paragraph'] as $currentContentBoxParagraph) { //###### Handelt es sich um einen Bildabschnitt if ($currentContentBoxParagraph['class']=='image') { //###### Für eine COVERBOX notwendige Image-Korrekturen //####################################################### if ($currentContentBoxParagraph['style']=='cover') { //###### Wurde kein Bild angegeben oder existiert das angegebene Bild nicht, so nutze das Standard-Image, falls dieses existiert if ((empty($currentContentBoxParagraph['content'][0]['imagePath'])) || (!file_exists(str_replace('/pages/media/', '/media/', phpConvertNamespaceToFilesystemPath('media:' . $currentContentBoxParagraph['content'][0]['imagePath']))))) { if (!empty($imagePageCover)) { //###### Wenn nein, benutze das Standard-Cover (falls es existiert) $currentContentBoxParagraph['content'][0]['imagePath'] = $imagePageCover; } else { //###### Existiert überhaupt kein Cover, so sezte den Wert auf leer $currentContentBoxParagraph['content'][0]['imagePath'] = ''; } } } //####################################################### //###### Für eine COVERBOX notwendige Image-Korrekturen
//###### Für eine COMPARE notwendige Image-Korrekturen //####################################################### if ($currentContentBoxParagraph['style']=='compare') { //###### Wurde ein Bild für Compare 1 angegeben und existiert es if ((empty($currentContentBoxParagraph['content'][0]['imagePath'])) || (!file_exists(str_replace('/pages/media/', '/media/', phpConvertNamespaceToFilesystemPath('media:' . $currentContentBoxParagraph['content'][0]['imagePath']))))) { //###### Wenn ja, benutze das angegebene Bild if (!empty($imagePageComp1)) { $currentContentBoxParagraph['content'][0]['imagePath'] = $imagePageComp1; } else { //###### Existiert überhaupt kein Cover, so sezte den Wert auf leer $currentContentBoxParagraph['content'][0]['imagePath'] = ''; } }
//###### Wurde ein Bild für Compare 2 angegeben und existiert es if ((empty($currentContentBoxParagraph['content'][1]['imagePath'])) || (!file_exists(str_replace('/pages/media/', '/media/', phpConvertNamespaceToFilesystemPath('media:' . $currentContentBoxParagraph['content'][1]['imagePath']))))) { //###### Wenn ja, benutze das angegebene Bild if (!empty($imagePageComp2)) { $currentContentBoxParagraph['content'][1]['imagePath'] = $imagePageComp2; } else { //###### Existiert überhaupt kein Cover, so sezte den Wert auf leer $currentContentBoxParagraph['content'][1]['imagePath'] = ''; } } } //####################################################### //###### Für eine COMPARE notwendige Image-Korrekturen
//###### Für eine GALLERY notwendige Image-Korrekturen //####################################################### //###### Gallery: Eine Gallerie anzeigen, falls die Variable nicht leer ist if ($currentContentBoxParagraph['style']=='gallery') { //###### Alle Page-Images sammeln $images = getAllImages($searchPath=strtolower($filePathOfPageImages), $currentContentBoxParagraph['filter'], $currentContentBoxParagraph['exclude']); //###### Wurden Bilder gefunden if (isset($images)) { //###### Alle Bilder am angegebenen Pfad finden (hier Produkt-Mediendateien) array_multisort($images, SORT_ASC, $images); //###### Bilder des Arrays popElements entfernen $popElements = array('page_banner',); for ($counter=sizeof($images); $counter >=0; $counter--) { foreach ($popElements as $popElement) { if (strpos($images[$counter], $popElement)) { unset($images[$counter]); } } } sort($images); }
//###### Falls nur die angegebenen Bilder angezeigt werden sollen, das bisherige Array löschen $currentGalleryImageArray = array(); if ($currentContentBoxParagraph['display'] != 'custom') { $currentGalleryImageArray = $images; } //###### Die angegebenen Bilder dem Array hinzufügen (custom zeigt nur diese an, join zeigt alle Bilder an) if (($currentContentBoxParagraph['display'] == 'custom') || ($currentContentBoxParagraph['display'] == 'join')) { //###### Überprüfe alle angegebenen Images, ob sie existieren foreach ($currentContentBoxParagraph['content'] as $currentGalleryImage) { if (!empty($currentGalleryImage['imagePath']) && (file_exists(str_replace('/pages/media/', '/media/', phpConvertNamespaceToFilesystemPath('media:' . $currentGalleryImage['imagePath']))))) { $currentGalleryImageArray[] = $currentGalleryImage['imagePath']; } } } $currentGalleryImageArray=array_unique($currentGalleryImageArray);
//###### Gallerie-Ribbon-String mit allen Bildern erstellen $imageSuffixGallery=$imageCounter++; $imageRibbonString = ''; foreach ($currentGalleryImageArray as $currentImage) { $imageRibbonString .= '<img id="slideshow" onclick="rotateimages(\'previewImage' . $imageSuffixGallery . '\', \'' . $currentImage . '\'); return false;" onmouseover="rotateimages(\'previewImage' . $imageSuffixGallery . '\', \'' . $currentImage . '\'); return false;" src="' . $dokuwikiMediaUrl . $currentImage . '" />'; } } //####################################################### //###### Für eine GALLERY notwendige Image-Korrekturen
//###### Für ein einfaches PREVIEW-Image notwendige Image-Korrekturen //####################################################### if ($currentContentBoxParagraph['style'] == 'image') { }
//###### Handelt es sich um eine Image oder eine Coverbox if (($currentContentBoxParagraph['style'] == 'image') || ($currentContentBoxParagraph['style'] == 'cover')){ if ((!empty($currentContentBoxParagraph['content'][0]['imagePath'])) && ($currentContentBoxParagraph['display'] != 'none') && (file_exists(str_replace('/pages/media/', '/media/', phpConvertNamespaceToFilesystemPath('media:' . $currentContentBoxParagraph['content'][0]['imagePath']))))) { //###### PREVIEWBOX: $imageSuffix=$imageCounter++;
echo ' <div class="contentbox-content-image-' . $currentContentBoxParagraph['align'] . '"> <img onclick="fullscreen(\'previewImage' . $imageSuffix . '\')" id="previewImage' . $imageSuffix . '" src="' . $dokuwikiMediaUrl . $currentContentBoxParagraph['content'][0]['imagePath'] . '"> <div class="contentbox-content-image-description"> <a href="' . $dokuwikiMediaUrl . $currentContentBoxParagraph['content'][0]['imagePath'] . '" target="_blank">↗ Abb: ' . ( (!empty($currentContentBoxParagraph['content'][0]['imageDescription'])) ? $currentContentBoxParagraph['content'][0]['imageDescription'] : 'Vollbild (ext.)' ). '</a> </div> </div> '; } //###### Handelt es sich um eine Comparebox } elseif ($currentContentBoxParagraph['style'] == 'compare') { if ((!empty($currentContentBoxParagraph['content'][0]['imagePath'])) && (!empty($currentContentBoxParagraph['content'][1]['imagePath'])) && ($currentContentBoxParagraph['display'] != 'none')) { //###### COMPAREBOX: $imageSuffixComp1=$imageCounter++; $imageSuffixComp2=$imageCounter++; echo ' <div class="sectionbox-row"><!-- ###### sectionbox (öffnen) --> <div class="contentbox-content-image-center"> <img onclick="fullscreen(\'previewImage' . $imageSuffixComp1 . '\')" id="previewImage' . $imageSuffixComp1 . '" src="' . $dokuwikiMediaUrl . $currentContentBoxParagraph['content'][0]['imagePath'] . '"> <div class="contentbox-content-image-description"> <a href="' . $dokuwikiMediaUrl . $currentContentBoxParagraph['content'][0]['imagePath'] . '" target="_blank">↗ Abb.1: ' . ( (!empty($currentContentBoxParagraph['content'][0]['imageDescription'])) ? $currentContentBoxParagraph['content'][0]['imageDescription'] : 'Vollbild (ext.)' ). '</a> </div> </div> <div class="contentbox-content-image-center"> <img onclick="fullscreen(\'previewImage' . $imageSuffixComp2 . '\')" id="previewImage' . $imageSuffixComp2 . '" src="' . $dokuwikiMediaUrl . $currentContentBoxParagraph['content'][1]['imagePath'] . '"> <div class="contentbox-content-image-description"> <a href="' . $dokuwikiMediaUrl . $currentContentBoxParagraph['content'][1]['imagePath'] . '" target="_blank">↗ Abb.2: ' . ( (!empty($currentContentBoxParagraph['content'][1]['imageDescription'])) ? $currentContentBoxParagraph['content'][1]['imageDescription'] : 'Vollbild (ext.)' ). '</a> </div> </div> </div> '; } //###### Handelt es sich um eine Gallerie } elseif ($currentContentBoxParagraph['style'] == 'gallery') { if ((isset($currentGalleryImageArray)) && ($currentContentBoxParagraph['display'] != 'none')) { //###### GALLERY echo' <div onclick="fullscreen(\'previewImage' . $imageSuffixGallery . '\')" class="contentbox-content-gallery"> <img id="previewImage' . $imageSuffixGallery . '" src="' . $dokuwikiMediaUrl . $currentGalleryImageArray[0] . '"> </div> <div class="contentbox-content-gallery-ribbon"><!-- ###### Thumbnail-Ribbon aller Images (öffnen) --> <div class="contentbox-content-gallery-ribbon-content">' . $imageRibbonString . '</div> </div><!-- ###### Thumbnail-Ribbon aller Images (schließen) --> '; } } else { } }
//###### Handelt es sich um einen Textabschnitt if ($currentContentBoxParagraph['class']=='text') { if ($currentContentBoxParagraph['style']=='normpage') { //###### Es handelt sich um eine Normseite: } else { //###### Es handelt sich um normalen Text: echo '<div class="contentbox-content-text"></html>' . $currentContentBoxParagraph['content'] . '<html></div>'; } } }
//###### Falls es keine Stand-Alone-Cover-ContentBox ist, schließe einen umspannenden DIV echo ' </div><!-- ###### content (schließen) -->'; if ( (!($currentImageBoxStyle=='cover')) && (!($currentImageBoxStyle=='banner')) ) { echo '</div>'; } echo '</div><!-- ###### sectionbox (schließen) -->'; }
echo' </div><!-- ###### Linke Spalte (schließen) --> '; //############################### //###### LINKE Spalte schließen //##################################################################################
//################################################################################## //###### RECHTE Spalte öffnen //############################### echo ' <div class="parentbox-contentbox-right"><!-- ###### ###### Rechte Spalte (öffnen) --> '; include($sidebarRight); echo ' </div><!-- ###### ###### Rechte Spalte (schließen) --> '; //############################### //###### RECHTE Spalte schließen //##################################################################################
echo ' </div><!-- ###### Sectionbox für Spalten im umspannenden Inhalts-Container (schließen) --> </div><!-- ###### parentbox umspannender Inhalts-Container (schließen) --> ';
//###### 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>';
?>