4.8.8 + Lightbox + Medienname
4.8.8 + Lightbox + Medienname
Hi zusammen,
habe folgendes Problemchen mit 4.8.8 und dem Medienname bei der Lightbox:
Die Mediennamen erscheinen nicht, wenn ich ein diese unter 4.8.8 neu eingebe - die Beschreibung erscheint jedoch.
Im Quelltext bekomme ich nur: title=" "
Mediennamen die ich bereits unter 4.8.7 eingab, erscheinen (immer noch) korrekt. Auch im Quelltext erschien der Titel: title="Landung"
Kann jemand diesen Fehler zufälligerweise reproduzieren und hat jemand evtl. eine Lösung?
Merci vorab viele Grüsse
Kalrchen
habe folgendes Problemchen mit 4.8.8 und dem Medienname bei der Lightbox:
Die Mediennamen erscheinen nicht, wenn ich ein diese unter 4.8.8 neu eingebe - die Beschreibung erscheint jedoch.
Im Quelltext bekomme ich nur: title=" "
Mediennamen die ich bereits unter 4.8.7 eingab, erscheinen (immer noch) korrekt. Auch im Quelltext erschien der Titel: title="Landung"
Kann jemand diesen Fehler zufälligerweise reproduzieren und hat jemand evtl. eine Lösung?
Merci vorab viele Grüsse
Kalrchen
Merci, es geht um die Lightbox-Gallery 1.2.1 http://forum.contenido.org/viewtopic.php?t=14867
In der Dateiverwaltung wird der Medienname angezeigt und gespeichert, im Editor und im FE nicht, da steht im Quelltext nur: title=" "
Dies jedoch nur bei neu unter C4.8.8 beschrifteten Bildern.
Bilder, die ich bereits unter C4.8.7 betitelte, erscheinen korrekt mit dem Mediennamen.
Das fehlen des Medienname kam erst nach dem Update auf 4.8.8.
Merci und viele Grüsse
Karlchen
PS der Lightbox-Gallery 1.2.1 Output-Quelltext:
In der Dateiverwaltung wird der Medienname angezeigt und gespeichert, im Editor und im FE nicht, da steht im Quelltext nur: title=" "
Dies jedoch nur bei neu unter C4.8.8 beschrifteten Bildern.
Bilder, die ich bereits unter C4.8.7 betitelte, erscheinen korrekt mit dem Mediennamen.
Das fehlen des Medienname kam erst nach dem Update auf 4.8.8.
Merci und viele Grüsse
Karlchen
PS der Lightbox-Gallery 1.2.1 Output-Quelltext:
Code: Alles auswählen
<?php
cInclude("includes", "functions.api.images.php");
/* Gallery variables */
$bRecursive = false;
/* Input variables customized */
$iWidth_crop = "CMS_VALUE[7]";
$iHeight_crop = "CMS_VALUE[8]";
if ($iWidth_crop == 0) {
$iWidth_crop = '';
}
if ($iHeight_crop == 0) {
$iHeight_crop = '';
}
/* Cropping ? */
$iCrop = "CMS_VALUE[9]";
/* Input variables */
$iWidth = "CMS_VALUE[0]";
$iHeight = "CMS_VALUE[1]";
if ($iWidth == 0) {
$iWidth = 300;
}
if ($iHeight == 0) {
$iHeight = 300;
}
$iColumns = "CMS_VALUE[2]";
if ($iColumns == 0) {
$iColumns = 2;
}
$iRows = "CMS_VALUE[3]";
if ($iRows == 0) {
$iRows = 2;
}
$sPath = "CMS_VALUE[4]";
if ($sPath=='') {
$sPath = $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . "bildergalerie/";
} else {
$sPath = $cfgClient[$client]["path"]["frontend"] . $cfgClient[$client]["upl"]["frontendpath"] . "CMS_VALUE[4]";
}
$sort = "CMS_VALUE[5]";
if( $sort == "asc" ) {
$sort = SORT_ASC;
} else {
$sort = SORT_DESC;
}
$words = "CMS_VALUE[6]";
if (isset($start)) {
$iCurrentPage = $start;
} else {
$iCurrentPage = 1;
}
$aValidExtensions = array("jpg", "jpeg", "gif", "png");
$iImagesPerPage = $iRows * $iColumns;
/* Read all gallery files */
$aGalleryFiles = scanDirectory($sPath, $bRecursive);
array_multisort($aGalleryFiles, $sort, SORT_STRING);
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 */
/* ### Customized - changes by GaMbIt ### */
/* Image scale */
$sScaledImage_cr = cApiImgScale($sImageToDisplay, $iWidth, $iHeight, false, false);
/* path */
$sScaledImage_cr = str_replace($cfgClient[$client]["path"]["htmlpath"],"",$sScaledImage_cr);
/* Image crop */
$sScaledImage = cApiImgScale($sScaledImage_cr, $iWidth_crop, $iHeight_crop, true, true);
/* path */
$sScaledImage = str_replace($cfgClient[$client]["path"]["htmlpath"],"",$sScaledImage);
/* ### End custom changes by GaMbIt ### */
$link = str_replace($cfgClient[$client]['path']['frontend'],$cfgClient['htmlpath'],$sImageToDisplay);
$media_name = ig_getMedienName($sImageToDisplay);
$link_description = ig_getImageDescription($sImageToDisplay);
if ($words != "" || $words != 0) {
# Cutting text but preserving words and entities
if(strlen($link_description) > $words){
$description = htmlentities(capiStrTrimAfterWord($link_description, $words)."...");
} else {
$description = "";
}
}
if( $media_name != "" && $link_description != "") {
$link_description = $media_name.': '.$link_description;
} elseif( $media_name != "" ) {
$link_description = $link_description;
} elseif( $description != "" ) {
$link_description = $link_description;
$media_name = " ";
}
$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", "MEDIANAME", $media_name);
$oImageTpl->set("s", "DESCRIPTION", $description);
$oImageTpl->set("s", "LINKDESCRIPTION", $link_description);
$aRenderedImages[] = $oImageTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/lightbox-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/lightbox-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/lightbox-gallery_link.html", true, false);
}
if (($iCurrentPage < $iPages) && $iCurrentPage) {
$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/lightbox-gallery_link.html", true, false);
}
$oGalleryTpl->set("s", "NAVIGATION", implode("", $aLinks));
$oGalleryTpl->generate($cfgClient[$client]["path"]["frontend"] . "templates/lightbox-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 ($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 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_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 '';
}
}
?>
Habe mal mit phpmyadmin in die Datenbank geschaut, habe jetzt mit C4.8.8 für die jedes Bild nur noch 2 Einträge in der con_properties protected, nämlich: protected und timemgmt
Unter 4.8.7 standen hier mehr Werte je Datei: medianame, medianotes, protected, copyright, timemgmt und keywords
Werden die gegenüber 4.8.7 fehlen Wert nun wo anders gespeichert?
Unter 4.8.7 standen hier mehr Werte je Datei: medianame, medianotes, protected, copyright, timemgmt und keywords
Werden die gegenüber 4.8.7 fehlen Wert nun wo anders gespeichert?
In der Funktion get_MedienName() muss das SQL script ein bischen umgebaut werden...
Die gesuchten Infos finden sich jetzt nicht nur in der Tabelle $cfg['tab']['upl'] sondern auch in der Tabelle $cfg['tab']['upl_meta']
Ich hab das SQL mal ein bischen angepasst...
Erweiterung:
Ich habe die beiden Funktionen ein bischen umgebaut und sie in einer zusammengefasst... die Funktion gibt bei mir jetzt ein Array mit den Eigenschaften einer Datei aus... dazu müsste man aber das Modul ein bischen anpassen...
Für Bastler (!ungetestet!)
Verbesserungen bitte melden
Die gesuchten Infos finden sich jetzt nicht nur in der Tabelle $cfg['tab']['upl'] sondern auch in der Tabelle $cfg['tab']['upl_meta']
Ich hab das SQL mal ein bischen angepasst...
Code: Alles auswählen
$query = "SELECT u.description, m.medianame
FROM " . $cfg["tab"]["upl"] . " u INNER JOIN " . $cfg["tab"]["upl_meta"] . " m
ON u.idupl = m.idupl
WHERE (u.dirname = '" . $dirname . "') AND (u.filename='" . $path_parts['basename'] . "') AND (u.filetype='" . $path_parts['extension'] . "')";
Ich habe die beiden Funktionen ein bischen umgebaut und sie in einer zusammengefasst... die Funktion gibt bei mir jetzt ein Array mit den Eigenschaften einer Datei aus... dazu müsste man aber das Modul ein bischen anpassen...
Für Bastler (!ungetestet!)
Code: Alles auswählen
function pl_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;
$query= "SELECT u.description, m.medianame
FROM " . $cfg["tab"]["upl"] . " u INNER JOIN " . $cfg["tab"]["upl_meta"] . " m
ON u.idupl = m.idupl
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'] . "')";
$query = "SELECT u.description, m.medianame
FROM " . $cfg["tab"]["upl"] . " u INNER JOIN " . $cfg["tab"]["upl_meta"] . " m
ON u.idupl = m.idupl
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")))
);
} else {
return '';
}
}
Hi GaMbIt_,
ganz herzlichen Dank, dass du dich meiner angenommen hast. Leider war ich aber erfolglos und bekomme einen: Fatal error: Call to undefined function ig_getImageDescription() in eval()'d code on line 635
Weisst du oder ein anderer Leser zufälligerweise, wie ich die Dateiverwaltung wieder so hinbiegen kann, dass ich meine Datenspeicherung in der con_properties wieder wie in der 4.8.7er hinbekomme?
Viele Grüsse
Karlchen
ganz herzlichen Dank, dass du dich meiner angenommen hast. Leider war ich aber erfolglos und bekomme einen: Fatal error: Call to undefined function ig_getImageDescription() in eval()'d code on line 635
Weisst du oder ein anderer Leser zufälligerweise, wie ich die Dateiverwaltung wieder so hinbiegen kann, dass ich meine Datenspeicherung in der con_properties wieder wie in der 4.8.7er hinbekomme?
Viele Grüsse
Karlchen
Dachte es lag gestern an meiner Müdigkeit...
Habe eben nochmals versucht zu basteln und die function ig_getImageDescription und function ig_getMedienName entfernt und durch die function pl_getImageDescription ersetzt, leider erfolglos. Habe nun wieder einen Fatal error: Call to undefined function ig_getMedienName() in ...cms/front_content.php(952) : eval()'d code on line 632
Bin auch nochmals mit der Suche darüber und finde keinen ig_getMedienName im Modul...
Muss mich wohl im nächsten Leben etwas mehr mit PHP beschäftigen
Habe eben nochmals versucht zu basteln und die function ig_getImageDescription und function ig_getMedienName entfernt und durch die function pl_getImageDescription ersetzt, leider erfolglos. Habe nun wieder einen Fatal error: Call to undefined function ig_getMedienName() in ...cms/front_content.php(952) : eval()'d code on line 632
Bin auch nochmals mit der Suche darüber und finde keinen ig_getMedienName im Modul...
Muss mich wohl im nächsten Leben etwas mehr mit PHP beschäftigen
Bug
Dasselbe Problem ist bei der Picture Gallery des Beispielmandanten
und bei der I - F E K T G A L L E R Y by Daniel Smolcic.
Daraus schließe ich, dass der Fehler nicht im Galerie-Modul zu suchen ist, sondern dass es sich um einen "bug" handelt.
Wenn Informationen nicht in die Datenbank geschrieben werden, dann sind sie nicht vorhanden; dann kann man sie auch nicht abfragen.
und bei der I - F E K T G A L L E R Y by Daniel Smolcic.
Daraus schließe ich, dass der Fehler nicht im Galerie-Modul zu suchen ist, sondern dass es sich um einen "bug" handelt.
Wenn Informationen nicht in die Datenbank geschrieben werden, dann sind sie nicht vorhanden; dann kann man sie auch nicht abfragen.
gagaga...
Call to undefined function bedeutet nur dass eine Funktion aufgerufen wird die nicht definiert ist... das heisst sie fehlt...
Die beiden Funktionen die Du rausgelöscht hast werden im oberen Teil des Codes aufgerufen...
Die von mir gepostete Funktion könnte diese ersetzen... man muss aber schon auch die Aufrufe anpassen...
und der gravierendste Unterschied ist eben der Ausgabewert der neuen Funktion...
Es wird nicht einfach ein "String" mit dem Mediennamen ausgegeben sondern ein Array mit Beschreibung und Medienname...
Call to undefined function bedeutet nur dass eine Funktion aufgerufen wird die nicht definiert ist... das heisst sie fehlt...
Die beiden Funktionen die Du rausgelöscht hast werden im oberen Teil des Codes aufgerufen...
Die von mir gepostete Funktion könnte diese ersetzen... man muss aber schon auch die Aufrufe anpassen...
und der gravierendste Unterschied ist eben der Ausgabewert der neuen Funktion...
Es wird nicht einfach ein "String" mit dem Mediennamen ausgegeben sondern ein Array mit Beschreibung und Medienname...
ok ... lalala
tauscht doch mal diesen Code hier
gegen den hier aus...
tauscht doch mal diesen Code hier
Code: Alles auswählen
$media_name = ig_getMedienName($sImageToDisplay);
$link_description = ig_getImageDescription($sImageToDisplay);
Code: Alles auswählen
$media = pl_getImageDescription($sImageToDisplay);
$media_name = $media["media"];
$link_description = $media["desc"];
Merci!!!
Nach deinem ersten Hinweis kam ich einen Schritt weiter. Der Fehler ist weg (Dank copy + paste habe ich auch noch die Fehlermeldung ins Modul kopiert *pein*)
Hatte allerdings unter jedem Foto nun "Array" stehen...
Werde nun den Kopf im Wald etwas frei joggen und mich dann an den nächsten Hinweis machen...
Nach deinem ersten Hinweis kam ich einen Schritt weiter. Der Fehler ist weg (Dank copy + paste habe ich auch noch die Fehlermeldung ins Modul kopiert *pein*)
Hatte allerdings unter jedem Foto nun "Array" stehen...
Werde nun den Kopf im Wald etwas frei joggen und mich dann an den nächsten Hinweis machen...
GaMbIt_, ganz herzlich merci für die Hilfestellung und Lösung meines Problems! Es funktioniert bestens!!!
Den "$media =" hatte ich noch hinbekommen. Aber das Tüpfelchen auf dem 'I' war Austausch von "$link_description =" gegen deinen Code.
Weisst du warum wurde der Mediennamen nun in einer anderen Tabelle gespeichert wird?
Musst mir jetzt nur noch sagen, wo ich Flasche Wein oder das Bier hinschicken kann.
Viele Grüsse und nochmals Danke
Karlchen
Den "$media =" hatte ich noch hinbekommen. Aber das Tüpfelchen auf dem 'I' war Austausch von "$link_description =" gegen deinen Code.
Weisst du warum wurde der Mediennamen nun in einer anderen Tabelle gespeichert wird?
Musst mir jetzt nur noch sagen, wo ich Flasche Wein oder das Bier hinschicken kann.
Viele Grüsse und nochmals Danke
Karlchen