Bildergalerie: Problem mit Bildbeschreibung und Medienname

Gesperrt
kooogel
Beiträge: 4
Registriert: Mo 3. Aug 2009, 12:38
Kontaktdaten:

Bildergalerie: Problem mit Bildbeschreibung und Medienname

Beitrag von kooogel »

Hallo!

Ich habe folgendes Problem: Für einen Kunden habe ich Contenido 4.8.12 eingerichtet und die Standard-Bildgalerie verwendet. Bilder & Thumbs werden auch wie gewünscht angezeigt. Soweit so gut! Allerdings möchte ich gern unter dem Bild sowohl den MEDIENNAME als auch die DESCRIPTION ausgeben. Leider kommt aber über dem Bild nur
{DESCRIPTION}
{MEDIANAME}
Unter dem Bild wird zwar die Description angezeigt, aber der Medienname nicht. Kurios, oder?
Hat jemand eine Ahnung, woran das liegen könnte?

Und hier der Code vom Modul Output:

Code: Alles auswählen

<?php

/***********************************************
* Bildergalerie Output mit Vor/Zurück
*
* Author      :     Timo A. Hummel
* Copyright   :     four for business AG
* Created     :     30-09-2005
* modified    :      19.02.2006 Klövekorn (vor und zurück in der Bilderansicht)
************************************************/

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

/* Gallery variables */
$bRecursive = false;

$sPath = "CMS_VALUE[5]";
if ($sPath=='') {
   $sPath = $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . "bildergalerie/";
} else {
   $sPath = $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . "CMS_VALUE[5]";
}
/*
$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;



//aus dem ersten REQUEST-Teil verschobener Code:

   $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]);
                    }
                  } //ende foreach
   
              /* Calculate effective variables */
              $iFileCount = count($aGalleryFiles); //die anzahl der bilder
             // $iPages = ceil($iFileCount / $iImagesPerPage); //liefert die Ganzzahl, die gleich oder größer  Number ist

               $aImagesToDisplay = array_slice($aGalleryFiles, ($iCurrentPage - 1) * $iFileCount,$iFileCount);//$iImagesPerPage, $iImagesPerPage);
                 
               $oImageTpl = new Template;
               $oGalleryTpl = new Template;
               $oEmptyImageTpl = new Template;
   
             $aRenderedImages = array();
   
             $iRow = 0;
              $iImagesRendered = 0;
           
              $i = 0;
         }     

//ende verschobener Code






/* Read all gallery files */
     
              foreach ($aImagesToDisplay as $sImageToDisplay)
                   {// Do Scaling
                   
                               
                                     $sScaledImage = cApiImgScale($sImageToDisplay, $iWidth, $iHeight);
                                     // setzt den Link zusammen um auf die Großansicht zu gehen: "front_content.php/.../view=...
                                     //$link = 'front_content.php?idcat='.$idcatart.'&start='.$_REQUEST['start'].'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$sImageToDisplay));
$link = 'front_content.php?idcat='.$idcatart.'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$sImageToDisplay));

$media_name = ig_getMedienName($sImageToDisplay);

                                     //macht den textlink:
                                     $description = ig_getImageDescription($sImageToDisplay);
                                     if ($description=='')
                                        {
                                         $description = '&nbsp;';
                                         $array_des_pfades = explode("/",$sImageToDisplay);
                                         $bildname_pos = count($array_des_pfades)-1;   
                                        }

        
                                     //$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", "MEDIANAME", $media_name);
                                    
         $oImageTpl->set("s", "MEDIANAME", $media_name);
          $oImageTpl->set("s", "DOWNLOAD_LINK", $download_link);
                                     $oImageTpl->set("s", "DOWNLOAD_SIZE", $download_size);
                                     /*$oImageTpl->set("s", "DOWNLOAD_CAPTION", mi18n("runter laden"));*/
                                     $oImageTpl->set("s", "PREVIEW_CAPTION", mi18n("$array_des_pfades[$bildname_pos]"));

           
                                     $aRenderedImages[] = $oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_image.html", true, false);   //Rendered Image ist das Thumbnailbild selbst

   
                                     $iImagesRendered++;
   
                                   
                                     if ($iImagesRendered == $iFileCount)//$iColumns)
                                         {
                                          $oGalleryTpl->set("d", "COLUMNS", implode("", $aRenderedImages));
                                          $oGalleryTpl->next();
                                          $iImagesRendered = 0;
                                          $aRenderedImages = array();
                                         }
                                                     
                       } //Ende foreach "scaling"
                     
                     
                     
                  // ohne diesen Block keine Thumbs:
                      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("Zurück"));
                         $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("Vor"));
                         $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);
               // }
//generierung des Detailbildes


          // vorheriges/nächstes Bild bestimmen
          //das $_REQUEST analysieren:
          $request_view_uebergabe = $_REQUEST['view'];
          $requestpfad = explode('/', $request_view_uebergabe);
          $letztes_element_request = count($requestpfad)-1;
          $request_bild = $requestpfad[$letztes_element_request];
                   
         
          foreach ($aImagesToDisplay as $arrayelement)
          {
          //ins view-Format konvertieren:
          $pfadarray = explode('/', $arrayelement);
          $letztes_element = count($pfadarray)-1;
          $bild = $pfadarray[$letztes_element];
          $allebilder[] = $bild;
          }
         
          //Diese Funktion gibt den Index des aktuellen Bildes aus:
          function bildfinder($array)
          {
          global $request_bild;
          while(list($k,$val) = each($array))
                {
          if (preg_match("/$request_bild/",$val)) return $k;
                }
          return FALSE;
          }
         
          //Anwendung der Funktion bildfinder:
          $k = bildfinder($allebilder);
         
          $vorbildindex = $k-1;
          $nachbildindex = $k+1;
         
          if ($nachbildindex == $iFileCount) {$nachbildindex = 0;}
         if ($vorbildindex < 0) {$vorbildindex = $iFileCount-1;}   
       
         $vorbild = "upload/CMS_VALUE[5]/".$allebilder[$vorbildindex];
         $nachbild = "upload/CMS_VALUE[5]/".$allebilder[$nachbildindex];
       
          $vorbild = 'front_content.php?idcatart='.$idcatart.'&start='.$_REQUEST['start'].'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$vorbild));
          $nachbild = 'front_content.php?idcatart='.$idcatart.'&start='.$_REQUEST['start'].'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$nachbild));
   
 
          //ende vorher,nachher
         
         $sImageToDisplay = $cfgClient[$client]['path']['frontend'].$_REQUEST['view'];  //der pfad beginnt bei "kunden4c"
       
         $sScaledImage = cApiImgScale($sImageToDisplay, $iDetailWidth, 1000);

          #$description = $bild;//ig_getImageDescription($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 = 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("Übersicht"));
         #$oImageTpl->set("s", "DESCRIPTION", $request_bild);
         $oImageTpl->set("s", "DESCRIPTION", $description);
         $oImageTpl->set("s", "MEDIANAME", $media_name);
         $oImageTpl->set("s", "DOWNLOAD_LINK", $download_link);
         $oImageTpl->set("s", "DOWNLOAD_SIZE", $download_size);
         $oImageTpl->set("s", "ZURUECK", mi18n("Vorheriges Bild"));
         $oImageTpl->set("s", "WEITER", mi18n("Nächstes Bild"));
         $oImageTpl->set("s", "VORHERIGES", $vorbild);
         $oImageTpl->set("s", "NAECHSTES", $nachbild);
         /*$oImageTpl->set("s", "DOWNLOAD_CAPTION", mi18n("runter laden")); */
         //$oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_detail.html", false, false);
         $oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery.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())
           {
           return htmlspecialchars(urldecode($db->f("description")));
            }
            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;
        }
function ig_getMedienName($idupl) {
    
    global $cfg, $cfgClient, $db, $client, $lang;
    
    $cApiClient = new cApiClient($client);
    $language_separator = $cApiClient->getProperty('language','separator');
    if ($language_separator == "") {
        //Sanity, if module used in client without set client setting
        $language_separator = "§§§";
        $cApiClient->setProperty('language','separator', $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).'/';
        $danis = $dirname.$path_parts['basename'];
        $query = "SELECT value FROM ".$cfg["tab"]["properties"]." WHERE itemid = '".$dirname.$path_parts['basename']."' AND name = 'medianame'";
    }
    $db->query($query);
    if( $db->next_record() ) {
        return htmlspecialchars(urldecode($db->f("value")));
    } else {
        return '';
    }
}
?>
Lieben Dank im Voraus!!
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Bildergalerie: Problem mit Bildbeschreibung und Medienname

Beitrag von homtata »

es könnte daran liegen, dass die platzhalter {MEDIANAME} usw. im html-modul-template nicht innerhalb des blocks liegen, der mit begin:block und end:block definiert ist... was mich im modul selbst zudem ein wenig irritiert ist die tatsache, dass der medienname und die description gleich mehrfach ausgelesen werden. normalerweise ist das nicht nötig, denke ich. man hat das array der anzeigbaren bilder, durchläuft es und weist jedem bild einmalig die nötigen ausgelesenen werte zu, übergibt die der template-steuerung und gut ist. ob das html-template die dann benutzt oder nicht, ist erstmal zweitrangig. vielleicht musst du daraufhin den modulcode nochmal intensiver durchackern.

nachtrag: ich seh grad, dass in der function für id_get_medianame der datenbankaufruf nicht zu stimmen scheint. dort steht:
SELECT description FROM ".$cfg["tab"]["upl"]." WHERE idupl = ".$idupl
es müsste m.E. aber heißen
SELECT medianame FROM ".$cfg["tab"]["upl"]." WHERE idupl = ".$idupl
kooogel
Beiträge: 4
Registriert: Mo 3. Aug 2009, 12:38
Kontaktdaten:

Re: Bildergalerie: Problem mit Bildbeschreibung und Medienname

Beitrag von kooogel »

nachtrag: ich seh grad, dass in der function für id_get_medianame der datenbankaufruf nicht zu stimmen scheint. dort steht:
SELECT description FROM ".$cfg["tab"]["upl"]." WHERE idupl = ".$idupl
es müsste m.E. aber heißen
SELECT medianame FROM ".$cfg["tab"]["upl"]." WHERE idupl = ".$idupl
Hallo homtata!

Diese Abfrage funktioniert aber auch nicht. Ich hab mich mal mit der DB auseinandergesetzt und gesehen, dass es in der Tabelle con_upl kein Feld mit der Bezeichnung medianame gibt. Dieses Feld existiert aber in der Tabelle con_upl_meta. Nun habe ich versucht, dieses Feld auszulesen mit einer leicht veränderten DB-Abfrage, aber auch die funzt nicht. Vielleicht könnt Ihr mir da weiterhelfen. Hier mal der Code:

Code: Alles auswählen

<?php

/***********************************************
* Bildergalerie Output mit Vor/Zurück
*
* Author      :     Timo A. Hummel
* Copyright   :     four for business AG
* Created     :     30-09-2005
* modified    :      19.02.2006 Klövekorn (vor und zurück in der Bilderansicht)
************************************************/

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

/* Gallery variables */
$bRecursive = false;

$sPath = "CMS_VALUE[5]";
if ($sPath=='') {
   $sPath = $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . "bildergalerie/";
} else {
   $sPath = $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . "CMS_VALUE[5]";
}
/*
$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;



//aus dem ersten REQUEST-Teil verschobener Code:

   $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]);
                    }
                  } //ende foreach
   
              /* Calculate effective variables */
              $iFileCount = count($aGalleryFiles); //die anzahl der bilder
             // $iPages = ceil($iFileCount / $iImagesPerPage); //liefert die Ganzzahl, die gleich oder größer  Number ist

               $aImagesToDisplay = array_slice($aGalleryFiles, ($iCurrentPage - 1) * $iFileCount,$iFileCount);//$iImagesPerPage, $iImagesPerPage);
                 
               $oImageTpl = new Template;
               $oGalleryTpl = new Template;
               $oEmptyImageTpl = new Template;
   
             $aRenderedImages = array();
   
             $iRow = 0;
              $iImagesRendered = 0;
           
              $i = 0;
         }     

//ende verschobener Code






/* Read all gallery files */
     
              foreach ($aImagesToDisplay as $sImageToDisplay)
                   {// Do Scaling
                   
                               
                                     $sScaledImage = cApiImgScale($sImageToDisplay, $iWidth, $iHeight);
                                     // setzt den Link zusammen um auf die Großansicht zu gehen: "front_content.php/.../view=...
                                     //$link = 'front_content.php?idcat='.$idcatart.'&start='.$_REQUEST['start'].'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$sImageToDisplay));
$link = 'front_content.php?idcat='.$idcatart.'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$sImageToDisplay));

#$media_name = ig_getMedienName($sImageToDisplay);


                                     //macht den textlink:
                                     /*$description = ig_getImageDescription($sImageToDisplay);
                                     if ($description=='')
                                        {
                                         $description = '&nbsp;';
                                         $array_des_pfades = explode("/",$sImageToDisplay);
                                         $bildname_pos = count($array_des_pfades)-1;   
                                        }*/

        
                                     //$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", "MEDIANAME", $media_name);
                                    
         #$oImageTpl->set("s", "MEDIANAME", $media_name);
          $oImageTpl->set("s", "DOWNLOAD_LINK", $download_link);
                                     $oImageTpl->set("s", "DOWNLOAD_SIZE", $download_size);
                                     /*$oImageTpl->set("s", "DOWNLOAD_CAPTION", mi18n("runter laden"));*/
                                     $oImageTpl->set("s", "PREVIEW_CAPTION", mi18n("$array_des_pfades[$bildname_pos]"));

           
                                     $aRenderedImages[] = $oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_image.html", true, false);   //Rendered Image ist das Thumbnailbild selbst

   
                                     $iImagesRendered++;
   
                                   
                                     if ($iImagesRendered == $iFileCount)//$iColumns)
                                         {
                                          $oGalleryTpl->set("d", "COLUMNS", implode("", $aRenderedImages));
                                          $oGalleryTpl->next();
                                          $iImagesRendered = 0;
                                          $aRenderedImages = array();
                                         }
                                                     
                       } //Ende foreach "scaling"
                     
                     
                     
                  // ohne diesen Block keine Thumbs:
                      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", false, 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("Zurück"));
                         #$aLinks[] = $oPreviousTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_link.html", false, 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("Vor"));
                         $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, true);
                       $oGalleryTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_thumbs.html", false, false);
               // }
//generierung des Detailbildes


          // vorheriges/nächstes Bild bestimmen
          //das $_REQUEST analysieren:
          $request_view_uebergabe = $_REQUEST['view'];
          $requestpfad = explode('/', $request_view_uebergabe);
          $letztes_element_request = count($requestpfad)-1;
          $request_bild = $requestpfad[$letztes_element_request];
                   
         
          foreach ($aImagesToDisplay as $arrayelement)
          {
          //ins view-Format konvertieren:
          $pfadarray = explode('/', $arrayelement);
          $letztes_element = count($pfadarray)-1;
          $bild = $pfadarray[$letztes_element];
          $allebilder[] = $bild;
          }
         
          //Diese Funktion gibt den Index des aktuellen Bildes aus:
          function bildfinder($array)
          {
          global $request_bild;
          while(list($k,$val) = each($array))
                {
          if (preg_match("/$request_bild/",$val)) return $k;
                }
          return FALSE;
          }
         
          //Anwendung der Funktion bildfinder:
          $k = bildfinder($allebilder);
         
          $vorbildindex = $k-1;
          $nachbildindex = $k+1;
         
          if ($nachbildindex == $iFileCount) {$nachbildindex = 0;}
         if ($vorbildindex < 0) {$vorbildindex = $iFileCount-1;}   
       
         $vorbild = "upload/CMS_VALUE[5]/".$allebilder[$vorbildindex];
         $nachbild = "upload/CMS_VALUE[5]/".$allebilder[$nachbildindex];
       
          $vorbild = 'front_content.php?idcatart='.$idcatart.'&start='.$_REQUEST['start'].'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$vorbild));
          $nachbild = 'front_content.php?idcatart='.$idcatart.'&start='.$_REQUEST['start'].'&view='.urlencode(str_replace($cfgClient[$client]['path']['frontend'],'',$nachbild));
   
 
          //ende vorher,nachher
         
         $sImageToDisplay = $cfgClient[$client]['path']['frontend'].$_REQUEST['view'];  //der pfad beginnt bei "kunden4c"
       
         $sScaledImage = cApiImgScale($sImageToDisplay, $iDetailWidth, 1000);

          #$description = $bild;//ig_getImageDescription($sImageToDisplay);
          $description = ig_getImageDescription($sImageToDisplay);
               
         if ($description=='')
                   {
                    $description = '&nbsp;';
                   }
                   
         $media_name = ig_getMedienName($sImageToDisplay);
               
         if ($media_name == '')
                   {
                    $media_name = '&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("Übersicht"));
         #$oImageTpl->set("s", "DESCRIPTION", $request_bild);
         $oImageTpl->set("s", "DESCRIPTION", $description);
         $oImageTpl->set("s", "MEDIANAME", $media_name);
         $oImageTpl->set("s", "DOWNLOAD_LINK", $download_link);
         $oImageTpl->set("s", "DOWNLOAD_SIZE", $download_size);
         $oImageTpl->set("s", "ZURUECK", mi18n("Vorheriges Bild"));
         $oImageTpl->set("s", "WEITER", mi18n("Nächstes Bild"));
         $oImageTpl->set("s", "VORHERIGES", $vorbild);
         $oImageTpl->set("s", "NAECHSTES", $nachbild);
         /*$oImageTpl->set("s", "DOWNLOAD_CAPTION", mi18n("runter laden")); */
         #$oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery_detail.html", false, false);
         $oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/gallery.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_meta"]." 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())
           {
           return htmlspecialchars(urldecode($db->f("description")));
            }
            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;
        }
function ig_getMedienName($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 medianame 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).'/';
        $danis = $dirname.$path_parts['basename'];
        $query = "SELECT medianame FROM ".$cfg["tab"]["upl_meta"]." WHERE idupl = ".$idupl;
    }
    $db->query($query);
    if( $db->next_record() ) {
        return htmlspecialchars(urldecode($db->f("medianame")));
    } 
    else 
    {
        return '';
    }
}
?>
Achja, alle anderen Probleme sind gelöst, mir fehlt jetzt "nur" noch die Ausgabe des Mediennamens.
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Bildergalerie: Problem mit Bildbeschreibung und Medienname

Beitrag von homtata »

okay, ich mache es inzwischen sogar komplett anders, auch um eine mehrfachverwendung über module hinweg zu ermöglichen.
die bildergalerie ermöglicht inzwischen mehrsprachigkeit, das bildet die alte getimagedesc-routine nicht ab.

ich habe eine datei "functions.getimagedesc.php" erstellt und in cms/includes abgelegt. inhalt:

Code: Alles auswählen

<?php
/**
 * Project: Viktor Lehmann lagert Dateifragmente aus
 * Contenido Content Management System
 * 
 * Description: Ausgelagerte Funktion zum Ermitteln der Bildbeschreibung
 * Ausgelagert, damit der mehrfache Aufruf pro Seite nicht zum Funktionsfehler führt
 * Die Datei wird in die Module nur noch mit require_once eingebunden.
 * 
 * Requirements: 
 * @con_php_req 5
 * 
 *
 * @package    Contenido Backend <Area>
 * @version    0.1
 * @author     unknown
 * @copyright  four for business AG <www.4fb.de>
 * @license    http://www.contenido.org/license/LIZENZ.txt
 * @link       http://www.4fb.de
 * @link       http://www.contenido.org
 * @since      file available since contenido release <Contenido Version>
 * @deprecated file deprecated in contenido release <Contenido Version>
 * 
 * 
 */

function ig_getImageDescription($idupl) {

    global $cfg, $cfgClient, $db, $client, $lang;

    $cApiClient= new cApiClient($client);
    $language_separator= $cApiClient->getProperty('language', 'separator');
    if ($language_separator == "") {
        //Sanity, if module used in client without set client setting
        $language_separator= "§§§";
        $cApiClient->setProperty('language', 'separator', $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 m.description, m.medianame, m.internal_notice, m.keywords, m.copyright 
        FROM " . $cfg["tab"]["upl"] . " u INNER JOIN " . $cfg["tab"]["upl_meta"] . " m
        ON u.idupl = m.idupl AND m.idlang = " . $lang . "
        WHERE (u.dirname = '" . $dirname . "') AND (u.filename='" . $path_parts['basename'] . "') AND (u.filetype='" . $path_parts['extension'] . "')";

    }
    $db->query($query);
    if ($db->next_record()) {
#        return htmlspecialchars(urldecode($db->f("description")));
        return array("desc"  => htmlspecialchars(urldecode($db->f("description"))),
                     "media" => htmlspecialchars(urldecode($db->f("medianame"))),
                     "internal" => htmlspecialchars(urldecode($db->f("internal_notice"))),
                     "keywords" => htmlspecialchars(urldecode($db->f("keywords"))),
                     "copyright" => htmlspecialchars(urldecode($db->f("copyright")))
                     );
#       return array("desc"  => urldecode($db->f("description")),
#                    "media" => htmlspecialchars(urldecode($db->f("medianame")))
#                    );
    } else {
        return '';
    }
}
?>
im modul lade ich diese datei mit:

Code: Alles auswählen

cInclude('frontend', 'includes/functions.getimagedesc.php');
und frage diese im laufe des moduls ungefähr so ab:

Code: Alles auswählen

$file_info = ig_getImageDescription($img_path);
dann enthält $file_info als array ALLE verfügbaren eigenschaften des bildes, soweit eingetragen, z.B.
$file_info["desc"] :: die beschreibung
$file_info["media"] :: den mediennamen
$file_info["internal"] :: die interne notiz
$file_info["keywords"] :: die schlüsselwörter
$file_info["copyright"] :: den copyright-eintrag

das reduziert die abfragen und aufrufe der funktion. für jede datei einmal durchlaufen lassen und auf die array-elemente zugreifen.
Zuletzt geändert von Oldperl am Di 10. Nov 2009, 17:55, insgesamt 1-mal geändert.
Grund: Moderation: quote-BBCode ersetzt durch code-BBCode, bitte nur beim Zitieren Quoten.
kooogel
Beiträge: 4
Registriert: Mo 3. Aug 2009, 12:38
Kontaktdaten:

Re: Bildergalerie: Problem mit Bildbeschreibung und Medienname

Beitrag von kooogel »

Yeeha!!!! Vielen vielen Dank für deine Hilfe!! Es läuft alles wie geschmiert.
Du bist ein Meister deines Faches!! :)
kooogel
Beiträge: 4
Registriert: Mo 3. Aug 2009, 12:38
Kontaktdaten:

Re: Bildergalerie: Problem mit Bildbeschreibung und Medienname

Beitrag von kooogel »

Hast du irgendeine Amazon-Wunschliste o.ä., so dass man mal etwas spenden kann ???
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Bildergalerie: Problem mit Bildbeschreibung und Medienname

Beitrag von idea-tec »

kooogel hat geschrieben:Hast du irgendeine Amazon-Wunschliste o.ä., so dass man mal etwas spenden kann ???
COOL!!! Davon könnten sich einige andere mal eine Scheibe abschneiden!!!
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Bildergalerie: Problem mit Bildbeschreibung und Medienname

Beitrag von Oldperl »

idea-tec hat geschrieben:COOL!!! Davon könnten sich einige andere mal eine Scheibe abschneiden!!!
Da kann ich mich nur anschließen. :-)

@homtata
Ich habe hier http://forum.contenido.org/viewtopic.ph ... 30#p137130 Quote- in Code-BBCode geändert. Bitte nur bei Zitaten quoten. Danke.

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Kucki
Beiträge: 3
Registriert: Sa 14. Jun 2008, 12:15
Kontaktdaten:

Re: Bildergalerie: Problem mit Bildbeschreibung und Medienna

Beitrag von Kucki »

Hallo Zusammen!

Bin leider ein Newbie in Sachen php. Deshalb frage ich mal, ob wer die Picture Gallery so geändert hat, dass auch die Informationen aus der upl_meta (wie zB Medianame, Schlüsselwörter, Interne Notiz und Copyright) ausgelesen werden?
Meine Versuche sind leider alle gescheitert :cry:

Danke!
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Bildergalerie: Problem mit Bildbeschreibung und Medienna

Beitrag von idea-tec »

Hallo Kucki,
schaust du ein paar Einträge weiter oben nach... http://forum.contenido.org/viewtopic.ph ... 40#p137130 es dreht sich um den eintrag von homtata.

ok, für einen php-anfänger nicht einfach, aber da ist eigentlich alles drin, wenn ich mich auf die schnelle nicht verschaut habe.
diese funktion in den modul-output und an der richtigen stelle die funktion aufgerufen ... sollte hinhauen. ich hab es selbst noch nicht getestet
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
Kucki
Beiträge: 3
Registriert: Sa 14. Jun 2008, 12:15
Kontaktdaten:

Re: Bildergalerie: Problem mit Bildbeschreibung und Medienna

Beitrag von Kucki »

Hallo idea-tec!

Danke für die Information. Ich habe das Problem inzwischen lösen können. Dank deiner Hilfe!
Gesperrt