Sprachabhängige Beschreibung (Feld description) bei Bilder

Gesperrt
DiMiZu
Beiträge: 68
Registriert: Sa 8. Okt 2005, 12:49
Kontaktdaten:

Sprachabhängige Beschreibung (Feld description) bei Bilder

Beitrag von DiMiZu » Fr 14. Apr 2006, 18:03

Hallo liebes Forum, ich riskiere es mal wieder einen Beitrag mit einer Bitte abzusenden. Ich hoffe ich frage nicht all zu dumm :?

Habe mal versucht in der Dateiverwaltung bei den Eigenschaften eines Bildes die Beschreibung einzugeben. Dann habe ich die Sprache gewechselt um die Beschreibung in der anderen Sprache auch zu ändern.

Aber siehe da ein Änderung in z.B. italienisch wirkt sich leider auch auf deutsch aus und umgekehrt. Somit kann ich leider nicht die Beschreibung sprachenabhängig eingeben.

Schade ich wollte nämlich unter den Bildern der Bildergalerie (Standardbildergaleriemodul) diese Beschreibung anzeigen lassen. Habe aber ein mehrsprachiges Projekt.

Wollte nun mal das Datenbankmodell (habe mir das Modell von 4.4.X angeschaut) durchschauen ob es von der Datenbank her überhaupt möglich ist die Beschreibung sprachenabhängig zu speichern. Ehrlich gesagt ich blicke da nicht durch :( .Habe nur die Tabelle con_upl gefunden und darin das Feld description aber wie das nun mit den Sprachen zusammenhängt bleibt meinen bescheidenen Kenntnissen leider verschlossen.

Kann mir jemand auf die Sprünge helfen? Ist es vom Datenmodel her überhaupt machbar? Wenn ja, wo also bei welchen Funktionen müsste ich da ansetzen? Ein Tipp der mich in die richtige Richtung bringt würde mir schon reichen.

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 14. Apr 2006, 19:24

ähm
wenn ich mir die db momentan so ansehe ist das feld description für mehrsprachigkeit nicht ausgelegt...
es ist auch nicht mit der con_lang verknüpft..
*** make your own tools (wishlist :: thx)

DiMiZu
Beiträge: 68
Registriert: Sa 8. Okt 2005, 12:49
Kontaktdaten:

Beitrag von DiMiZu » Sa 15. Apr 2006, 10:14

Verstehe. Vielleicht wirds ja mal in einer zukünftigen Version dafür ausgelegt...

Totzdem Danke für die schnelle Antwort und...

ein großes Lob: ich finde Contenido an sich und die Betreuung in diesem Forum einfach super! Das sollte ich auch mal sagen und nicht immer nur fragen..

Louis
Beiträge: 206
Registriert: Mo 27. Okt 2003, 12:28
Kontaktdaten:

Beitrag von Louis » Mi 31. Mai 2006, 11:12

Nur der Vollständigkeit halber...

Gleiche Frage auch in diesem Thread:
Mehrsprachige Bildergalerie
Wir können den Wind nicht ändern, aber die Segel anders setzen
(Aristoteles)

joergsart
Beiträge: 34
Registriert: Do 19. Mai 2005, 23:48
Wohnort: Hamburg
Kontaktdaten:

Galeriebilder mit Texteingabefeld

Beitrag von joergsart » So 12. Nov 2006, 18:48

Könnte man für die (Standard)bildergalerie ein Textfeld für Bildunterschriften zu den Thumbnails und in der Detailansicht ergänzen?

Ich habe auch das Problem der Mehrsprachigkeit bei Bildunterschriften und als Lösung könnte man auch ein Eingabefeld für Bildunterschriften zu den Bildern dazu gesellen und die Galerei wäre auch in anderen Sprachen einsetzbar.

Wie würde man das integrieren? Den Thumbnails ist ja ein HTML-Template zugeordnet. Habe intensiv versucht ein CMS_TEXT zu integrieren, komme aber mit dem Teil

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

nicht ganz klar. Wie könnte ich da ein Textfeld einfügen?



Ich hab die folgende Galerie in Verwendung:

Input:

Code: Alles auswählen

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

<table>
  <tr>
    <td><?php echo mi18n("Breite");?></td>
    <td><input type="text" name="<?php echo "CMS_VAR[0]"; ?>" value="<?php echo "CMS_VALUE[0]"; ?>"></td>
  </tr>
  <tr>
    <td><?php echo mi18n("Höhe");?></td>
    <td><input type="text" name="<?php echo "CMS_VAR[1]"; ?>" value="<?php echo "CMS_VALUE[1]"; ?>"></td>
  </tr>
  <tr>
    <td><?php echo mi18n("Spalten");?></td>
    <td><input type="text" name="<?php echo "CMS_VAR[2]"; ?>" value="<?php echo "CMS_VALUE[2]"; ?>"></td>
  </tr>
  <tr>
    <td><?php echo mi18n("Zeilen");?></td>
    <td><input type="text" name="<?php echo "CMS_VAR[3]"; ?>" value="<?php echo "CMS_VALUE[3]"; ?>"></td>
  </tr>
  <tr>
    <td><?php echo mi18n("Breite Detailansicht");?></td>
    <td><input type="text" name="<?php echo "CMS_VAR[4]"; ?>" value="<?php echo "CMS_VALUE[4]"; ?>"></td>
  </tr>
  <?php
  $sql = "SELECT DISTINCT dirname FROM ".$cfg['tab']['upl']." ORDER BY dirname";
  $db->query($sql);
  echo '<tr><td>'.mi18n("Verzeichnis auswählen").'</td><td>
		<select name="CMS_VAR[5]" size="1" style="width: 320px">
			<option value="">'.mi18n("Nichts ausgewählt").'</option>';
			while ($db->next_record()) {
				if ( stristr($db->f("dirname"),'CVS/') === FALSE ) {
					if ($db->f("dirname")=="CMS_VALUE[5]") {
						echo '<option value="'.$db->f("dirname").'" selected="selected">'.$db->f("dirname").'</option>';
					} else {
						echo '<option value="'.$db->f("dirname").'">'.$db->f("dirname").'</option>';
					}
				}
			}
	echo '</select></td></tr>';?>
</table>
<?php


Output

Code: Alles auswählen

<?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"] . $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;

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("runter laden"));
	  $oImageTpl->set("s", "PREVIEW_CAPTION", mi18n("Bildvorschau"));

	  $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("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);
    }
} 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("Zurück"));
    $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("runter laden"));
	
	$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()){
		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;
}
?>

Dunsti
Beiträge: 69
Registriert: So 22. Okt 2006, 14:48
Wohnort: Aschaffenburg
Kontaktdaten:

Beitrag von Dunsti » So 12. Nov 2006, 22:34

das wird so nicht funktionieren, da das CMS_TEXT[x] ja nur einmal pro Artikel gespeichert wird, und nicht einmal pro Bild ;)
Gruß Andreas

aktuelle Projekte: http://www.mv-bernbach.de

joergsart
Beiträge: 34
Registriert: Do 19. Mai 2005, 23:48
Wohnort: Hamburg
Kontaktdaten:

Beitrag von joergsart » So 12. Nov 2006, 23:30

hi andreas,

ne, ist klar. aber ich müsste doch dynamisch verschiedene textfelder durch ein modul über eine schleife erzeugen können, in abhängigkeit von der anzahl der ausgelesenen galeriebilder.

oder denke ich da jetzt komplett falsch?

dann könnte ich sie nicht den thumbnails, die dargestellt werden, zuordnen?

hmm....

Dunsti
Beiträge: 69
Registriert: So 22. Okt 2006, 14:48
Wohnort: Aschaffenburg
Kontaktdaten:

Beitrag von Dunsti » Mo 13. Nov 2006, 01:39

möglich ist natürlich alles :wink:


aber das ist dann natürlich ein wenig mehr Aufwand als nur ein CMS_TEXT[x]
Gruß Andreas

aktuelle Projekte: http://www.mv-bernbach.de

Gesperrt