Bildergalerie springt falsch zurück

Gesperrt
PC_mobil
Beiträge: 28
Registriert: So 27. Nov 2005, 21:55
Kontaktdaten:

Bildergalerie springt falsch zurück

Beitrag von PC_mobil »

Hallo,

nutze die in der Version 4.6.4 standartmäßige Bildergalerie.
:( Jetzt habe ich ein Problem.
Das Verzeichnis wird sauber aufgelistet und ich kann Bilder auch vergrößern (Bildvorschau).
Jetzt ist aber das Problem, wenn ich in der Großansicht auf zurück gehe, springt Contenido auf die letzte der beiden Seiten (hier erscheint auch ein weiter Pfeil, wenn ich diesen drücke, bin ich wieder auf der eigentl. Seite 1, auf der auch das Bild ist) und nicht auf die erste Seite, wo ich mein Bild eigentl. geöffnet habe.
Wenn ich auf der 2. Seite ein Bild vergrößere und dann auch zurück gehe, habe ich keine Probleme.

Hier mal der Code, habe nur anstatt vor und zurück Navipfeile eingesetzt

Code: Alles auswählen

Output: 


<?php
/***********************************************
* Bildergalerie Output
*
* Author      :     Timo A. Hummel
* Copyright   :     four for business AG
* Created     :     30-09-2005
************************************************/

cInclude("includes", "functions.api.images.php");

/* Gallery variables */
$bRecursive = false;

$sPath = "CMS_VALUE[5]";
if ($sPath=='') {
	$sPath = $cfgClient[$client]["path"]["frontend"] ."upload/bildergalerie/";
}

$iRows = "CMS_VALUE[3]";

if ($iRows == 0)
{
  $iRows = 2;
}

$iColumns = "CMS_VALUE[2]";

if ($iColumns == 0)
{
  $iColumns = 2;
}

if (isset($start))
{
  $iCurrentPage = $start;
} else {
  $iCurrentPage = 1;
}

$iWidth = "CMS_VALUE[0]";
$iHeight = "CMS_VALUE[1]";

if ($iWidth == 0)
{
  $iWidth = 300;
}

if ($iHeight == 0)
{
  $iHeight = 300;
}

$iDetailWidth = "CMS_VALUE[4]";

if ($iDetailWidth == 0)
{
  $iDetailWidth = 300;
}

$aValidExtensions = array("jpg", "jpeg", "gif", "png");

$iImagesPerPage = $iRows * $iColumns;

if ($_REQUEST['view']=='') {
	/* Read all gallery files */
	$aGalleryFiles = scanDirectory($sPath, $bRecursive);
	
         if (is_array($aGalleryFiles))
         {
	/* Filter out non-images */
	foreach ($aGalleryFiles as $key => $aGalleryFile)
	{
	  $sExtension = strtolower(getFileExtension($aGalleryFile));
	
	  if (!in_array($sExtension, $aValidExtensions))
	  {
	     unset($aGalleryFiles[$key]);
	  }
	}
	
	/* Calculate effective variables */
	$iFileCount = count($aGalleryFiles);
	$iPages = ceil($iFileCount / $iImagesPerPage);
	
	$aImagesToDisplay = array_slice($aGalleryFiles, ($iCurrentPage - 1) * $iImagesPerPage, $iImagesPerPage);
	
	$oImageTpl = new Template;
	$oGalleryTpl = new Template;
	$oEmptyImageTpl = new Template;
	
	$aRenderedImages = array();
	
	$iRow = 0;
	$iImagesRendered = 0;
	
	foreach ($aImagesToDisplay as $sImageToDisplay)
	{
	  /* Do Scaling */
	  $sScaledImage = cApiImgScale($sImageToDisplay, $iWidth, $iHeight);
	
	  $link = 'front_content.php?idcatart='.$idcatart.'&start='.$_REQUEST['start'].'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$sImageToDisplay));

	  $description = ig_getImageDescription($sImageToDisplay);
	  if ($description=='') {
	  	$description = '&nbsp;';
	  }
	  
	  $download_link = str_replace($cfgClient[$client]['path']['frontend'],$cfgClient[$client]['path']['htmlpath'],$sImageToDisplay);

	  $download_size = ig_GetReadableFileSize($sImageToDisplay);
	  	  	
	  $oImageTpl->reset();
	  $oImageTpl->set("s", "FILE", $sScaledImage);
	  $oImageTpl->set("s", "WIDTH", $iWidth);
	  $oImageTpl->set("s", "HEIGHT", $iHeight);
	  $oImageTpl->set("s", "LINK", $link);
	  $oImageTpl->set("s", "DESCRIPTION", $description);
	  $oImageTpl->set("s", "DOWNLOAD_LINK", $download_link);
	  $oImageTpl->set("s", "DOWNLOAD_SIZE", $download_size);
	  $oImageTpl->set("s", "DOWNLOAD_CAPTION", mi18n("herunterladen"));
	  $oImageTpl->set("s", "PREVIEW_CAPTION", mi18n("vergrößern"));
	  
	  $aRenderedImages[] = $oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_image.html", true, false);
	
	  $iImagesRendered++;
	
	  if ($iImagesRendered == $iColumns)
	  {
	    $oGalleryTpl->set("d", "COLUMNS", implode("", $aRenderedImages));
	    $oGalleryTpl->next();
	    $iImagesRendered = 0;
	    $aRenderedImages = array();
	  }
	}
	
	if (count($aRenderedImages) < $iColumns && count($aRenderedImages) > 0)
	{
	  $iEmptyCells = $iColumns - count($aRenderedImages);
	
	  $oEmptyImageTpl->set("s", "WIDTH", $iWidth);
	  $oEmptyImageTpl->set("s", "HEIGHT", $iHeight);
	
	  $sEmptyCells = str_repeat($oEmptyImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_empty.html", true, false),$iEmptyCells);
	 
	  $oGalleryTpl->set("d", "COLUMNS", implode("", $aRenderedImages) . $sEmptyCells);
	  $oGalleryTpl->next();
	}
	
	$aLinks = array();
	
	if ($iCurrentPage > 1)
	{
	  $oPreviousTpl = new Template;
	  $oPreviousTpl->set("s", "LINK", $cfgClient[$client]["path"]["htmlpath"] . sprintf("front_content.php?idcatart=%s&start=%s", $idcatart, $iCurrentPage - 1));
	  $oPreviousTpl->set("s", "TITLE", mi18n("<img src=../cms/upload/bilder/pfeill.gif>"));
	  $aLinks[] = $oPreviousTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_link.html", true, false);
	}
	
	if ($iCurrentPage < $iPages)
	{
	  $oNextTpl = new Template;
	  $oNextTpl->set("s", "LINK", $cfgClient[$client]["path"]["htmlpath"] . sprintf("front_content.php?idcatart=%s&start=%s", $idcatart, $iCurrentPage + 1));
	  $oNextTpl->set("s", "TITLE", mi18n("<img src=../cms/upload/bilder/pfeilr.gif>"));
	  $aLinks[] = $oNextTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_link.html", true, false);
	}
	
	$oGalleryTpl->set("s", "NAVIGATION", implode("", $aLinks));
	
	$oGalleryTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery.html", false, false);
    }
} else {
	$sImageToDisplay = $cfgClient[$client]['path']['frontend'].$_REQUEST['view'];
	$sScaledImage = cApiImgScale($sImageToDisplay, $iDetailWidth, 1000);

    $description = ig_getImageDescription($sImageToDisplay);
	if ($description=='') {
	  $description = '&nbsp;';
	}

    $download_link = str_replace($cfgClient[$client]['path']['frontend'],$cfgClient[$client]['path']['htmlpath'],$sImageToDisplay);

	$download_size = ig_GetReadableFileSize($sImageToDisplay);
	
	$oImageTpl = new Template;
	$oImageTpl->set("s", "IMG",$sScaledImage);
	$oImageTpl->set("s", "BACKLINK",'front_content.php?idcat='.$idcat.'&idart='.$idart.'&start='.$_REQUEST['start']);
	$oImageTpl->set("s", "BACKCAPTION",mi18n("<img src=../cms/upload/bilder/pfeill.gif>"));
    $oImageTpl->set("s", "DESCRIPTION", $description);
    $oImageTpl->set("s", "DOWNLOAD_LINK", $download_link);
	$oImageTpl->set("s", "DOWNLOAD_SIZE", $download_size);
	$oImageTpl->set("s", "DOWNLOAD_CAPTION", mi18n("herunterladen"));
	
	$oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_detail.html", false, false);
}

function ig_getImageDescription($idupl){

	global $cfg, $cfgClient, $db, $client, $lang;
	
    $cApiClient = new cApiClient($client);
	$language_separator = $cApiClient->getProperty('language','separator');
	if(is_numeric($idupl)){
		//ID is a number 
		$query = "SELECT description FROM ".$cfg["tab"]["upl"]." WHERE idupl = ".$idupl;
	}else{
		//ID is a string
		$path_parts = pathinfo($idupl);
		$upload = $cfgClient[$client]['upl']['frontendpath'];
		$len = strlen($upload);
		$pos = strpos($idupl,$upload);
		$dirname = substr($path_parts['dirname'],$pos+$len).'/';
		$query = "SELECT description FROM ".$cfg["tab"]["upl"]." WHERE (dirname = '".$dirname."') AND (filename='".$path_parts['basename']."') AND (filetype='".$path_parts['extension']."')";
	}
	$db->query($query);
	if($db->next_record()){
		$arrDescriptions = explode($language_separator,htmlspecialchars(urldecode($db->f("description"))));
		if(count($arrDescriptions)==1){
			$retval=$arrDescriptions[0];
		}else{
			$t1 = $cfg['sql']['sqlprefix'].'_lang';
			$t2 = $cfg['sql']['sqlprefix'].'_clients_lang';
			$query = "SELECT ".$t1.".* FROM ".$t2." INNER JOIN ".$t1." ON ".$t1.".idlang = ".$t2.".idlang WHERE (".$t2.".idclient = 1) AND (".$t1.".active = 1) ORDER BY ".$t1.".idlang";
			echo $query;
		    $db->query($query);
			$i=0;
			$index=0;
		    while($db->next_record()){
				if($db->f("idlang")==$lang){
					$index=$i;
				}
				$i++;
			}
			if($index<count($arrDescriptions)){
				$retval=$arrDescriptions[$index];
			}else{
				$retval=$arrDescriptions[0];
			}
		}
		return htmlspecialchars(urldecode($retval));
	}else{
		return '';
	}
}

function ig_GetReadableFileSize($path) {
	$filesize = filesize($path);
	$unit = "bytes";
	
	if ($filesize > 1024) {
	$filesize = ($filesize / 1024);
	$unit = "kB"; }
	if ($filesize > 1024) {
	$filesize = ($filesize / 1024);
	$unit = "MB"; }
	if ($filesize > 1024) {
	$filesize = ($filesize / 1024);
	$unit = "GB"; }
	if ($filesize > 1024) {
	$filesize = ($filesize / 1024);
	$unit = "TB"; }
	
	$filesize = round($filesize, 0);
	return $filesize." ".$unit;
}
?>
PC_mobil
Beiträge: 28
Registriert: So 27. Nov 2005, 21:55
Kontaktdaten:

Beitrag von PC_mobil »

So habe gerade noch etwas herumprobiert und festgestellt, dass der Fehler nur auftritt, wenn ich alles aus dem Cache des Browsers lösche oder die Bilder zum 1. Mal aufrufe.
Sobald ich das besagte Bild ein 2. Mal aufrufe, springt er wie gewünscht auf die 1. Seite zurück. Ich verzweifel ...

Habe noch keine Lösung gefunden und weiter geforscht:

Wenn er auf die falsche Seite sprint, lautet die url
http://www.mein-server.com/seite/cms/fr ... 104&start=

wenn es dann beim 2. Mal klappt und er auf die richtige Seite springt lautet die Seiten-url
http://www.mein-server.com/seite/cms/fr ... 04&start=1

Kann mir jmd. helfen, mein altes Galeriesystem ist leider gelöscht, dachte zuerst klappt alles so. THNX!!
PC_mobil
Beiträge: 28
Registriert: So 27. Nov 2005, 21:55
Kontaktdaten:

Beitrag von PC_mobil »

So nun hatte ich etwas Zeit und hier die Fehlerbeschreibung und Lösung, falls noch jmd. dasselbe Problem hat (evtl. kleiner Bug?).

Beim 1. Aufrufen der Bildergalerie (von der Artikelliste aus) und dann eines Bildes aus der Galerie und beim Anschließenden betätigen des Zurück-Buttons wurde nicht mehr auf die richtige Seite zurückgesprungen, da die URL falsch aufgebaut war (die URL endete mit start= anstatt start=1 <- da kein Übergabe von der Artikelliste).

Deswegen habe ich vor

Code: Alles auswählen

$oImageTpl->set("s", "BACKLINK",'front_content.php?idcat='.$idcat.'&idart='.$idart.'&start='.$_REQUEST['start']);
einfach folgende Schleife gesetzt und es geht

Code: Alles auswählen

if ($_REQUEST['start'] == NULL)
	{
	$_REQUEST['start'] =1;
	}
PC_mobil
Beiträge: 28
Registriert: So 27. Nov 2005, 21:55
Kontaktdaten:

Beitrag von PC_mobil »

^editiert... Problem gelöst
Gesperrt