wie bereits an anderer Stelle erwaehnt, habe ich eines der Bildermodule auf 4.4.4 angepasst, weil bei allen (?) bisherigen Modulen, die ich hier und da (Download-Bereich, Forum) fand, noch veraltete SQL-Anfragen vorhanden waren. Hier erstmal Beschreibung (die habe ich einfach uebernommen), modifizierte Eingabe (SQL-Krempel und Anpassungen auf 4.4.4), Ausgabe mit modifiziertem Pfad zur Datei dw.php und Inhalt der Datei dw.php. Ach ja, das Wort 'Galerie' habe ich auch endlich richtig geschrieben, auf Deutsch wird's naemlich mit einem L geschrieben.


Modulbeschreibung:
Code: Alles auswählen
Eine Bildergalerie, die ihre Thumbs automatisch mit Imagemagick generiert, das Bild in einem eigenen Fenster öffnet und dabei auch noch die Beschreibung zu dem Bild ausgibt.
Die Galerie basiert auf dem Code der im Forum von crisscross veröffentlicht wurde http://www.contenido.de/forum/viewtopic.php?t=2168 -> Bildergalerie Version 0.9.1
Ich habe den Code entsprechend um die Ausgabe der Beschreibung im detailwindow erweitert und kleinere Anpassungen gemacht.
Achtet darauf, dass das Detailwindow (dw.php) im cms Pfad liegt. Ansonsten ist die format.css im dw fest eingebunden, für die Formatierung des Textes ist css->text verantwortlich.
Für die thumbs legt man am besten im anzuzeigenden Bilderordner ein Unterverzeichnis thumbs an. Falls die Thumbs im selben Verzeichnis liegen würden wie die Bilder, würden Thumbs der Thumbs der Thumbs der Thumbs usw. generiert werden.
Evtl. kann man aktualisierte Versionen unter www.bobcom.de finden ?-)
C-Version : 4.4
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : Bildergalerie BobCom 1.0
* Author : BobCom.de - Markus Schulz
* Copyright : BobCom.de - Markus Schulz
* Created : 07-02-2004
* Modified : 07-02-2004
************************************************/
$selected = "CMS_VALUE[0]";
$path1 = "CMS_VALUE[2]";
$path2 = "CMS_VALUE[3]";
$path2imagemagick = "/usr/bin"; // Voreinstellung fuer Imagemagick, kann durch die Angaben der Modulkonfiguration überschrieben werden (Am besten die Vorkonfiguration verwenden)
$imagemagick = "CMS_VALUE[9]";
echo "<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\">
<tr valign=\"top\">
<td>Einzelbild-Seite</td>
<td>
<select name=\"CMS_VAR[0]\">";
$sql = "SELECT * FROM ".$cfg["tab"]["cat_tree"]." AS TREE, ".$cfg["tab"]["cat_art"]." AS CATART, ".$cfg["tab"]["cat"]." AS CAT, ".$cfg["tab"]["cat_lang"]." AS CATLANG, ".$cfg["tab"]["art_lang"]." AS ARTLANG WHERE TREE.idcat=CATART.idcat AND CATART.idcat=CATLANG.idcat AND CATLANG.idlang='$lang' AND CATART.idart=ARTLANG.idart AND ARTLANG.idlang='$lang' AND CAT.idcat=TREE.idcat AND CAT.idclient='$client' ORDER BY TREE.idtree";
$db->query($sql);
if ($selected != 0) {
echo "<option value=0>diese Seite</option>";
} else {
echo "<option value=0 selected>diese Seite</option>";
}
while ($db->next_record()) {
$spaces = "";
for ($i=0; $i<$db->f("level"); $i++) {
$spaces = $spaces . " ";
}
if ( $db->f("idcatart") != $selected ) {
echo "<option value=\"".$db->f("idcatart")."\">$spaces ".$db->f("name")."---".$db->f("title")."</option>";
} else {
echo "<option value=\"".$db->f("idcatart")."\" selected>$spaces ".$db->f("name")."---".$db->f("title")."</option>";
}
}
echo "</select>";
echo " </td>
</tr>
<tr>
<td>
Image-Directory:
</td>
<td>
";
// hier die select auswahl der verzeichnisse
function get_dir_array($dir){
global $i,$dirs_array;
$current_dir = opendir($dir);
while($entryname = readdir($current_dir)){
if(is_dir("$dir/$entryname") and ($entryname != "." and $entryname!="..")){
get_dir_array("${dir}/${entryname}");
$dirs_array[$i] = "${dir}/${entryname}";
$i++;
}
}
closedir($current_dir);
return $dirs_array;
}
$i = 0;
$path = substr_replace($cfgClient[$client]["path"]["upload"], "", strrpos($cfgClient[$client]["path"]["upload"], "/"));
$verz_liste = get_dir_array($path);
echo "<select name=\"CMS_VAR[2]\">";
foreach ( $verz_liste as $verz ){
$verz = eregi_replace ($cfg['path']['frontend']."/cms/", "", $verz);
if ( $path1 == $verz ){ $wwi = "selected"; }
else { $wwi = ""; }
echo "<option value=\"$verz\" $wwi>$verz</option>";
}
echo "</select>";
echo "
</td>
</tr>
<tr>
<td>
Thumbnail-Directory:
</td>
<td> ";
echo "<select name=\"CMS_VAR[3]\">";
foreach ( $verz_liste as $verz ){
$verz = eregi_replace ($cfg['path']['frontend']."/cms/", "", $verz);
if ( $path2 == $verz ){ $wwi = "selected"; }
else { $wwi = ""; }
echo "<option value=\"$verz\" $wwi>$verz</option>";
}
echo "</select>";
echo "
</td>
</tr>
<tr>
<td>
Image-Dateieendung (z.B. .jpg;.gif):
</td>
<td>
<input size=20 type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\">
</td>
</tr>
<tr>
<td>
Thumbnailtabelle in Spalten x Zeilen:
</td>
<td>
<input size=3 maxlength=2 type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\">x<input size=3 maxlength=2 type=\"text\" name=\"CMS_VAR[6]\" value=\"CMS_VALUE[6]\">
</td>
</tr>
<tr>
<td>
Thumbnailgrösse in XxY:
</td>
<td>
<input size=3 maxlength=2 type=\"text\" name=\"CMS_VAR[7]\" value=\"CMS_VALUE[7]\">x<input size=3 maxlength=2 type=\"text\" name=\"CMS_VAR[8]\" value=\"CMS_VALUE[8]\">
</td>
</tr>
<tr>
<td>
Pfad zum ImageMagick (optional):
</td>
<td>
<input size=20 type=\"text\" name=\"CMS_VAR[9]\" value=\"";
if ( $imagemagick == "" ) { echo $path2imagemagick; }
else { echo $imagemagick; }
echo "\"></td>
</tr>
</table>";
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Bildergalerie BobCom 1.0
* Author : BobCom.de - Markus Schulz
* Copyright : BobCom.de - Markus Schulz
* Created : 07-02-2004
* Modified : 07-02-2004
************************************************/
$imagedir="CMS_VALUE[2]";
$thumbnails="CMS_VALUE[3]";
$imagetypes=explode(";","CMS_VALUE[4]");
$rows="CMS_VALUE[6]";
$cols="CMS_VALUE[5]";
$thb_x_size="CMS_VALUE[7]";
$thb_y_size="CMS_VALUE[8]";
$image_idcat="CMS_VALUE[0]";
$image_idart="CMS_VALUE[1]";
$im_path="CMS_VALUE[9]";
//-- config ende -------------------------------------
function is_image($filename,$typearray) {
reset($typearray);
while($val=each($typearray)) {
if (strstr($filename,$val[value])!==false) {
return true;
}
}
}
//-- functions ende ----------------------------------
if (!isset($mmstart)) {
$mmstart=0;
}
// Anzeige eines Bildes oder Übersicht?
if ($subfile!="") {
// Bild anzeigen
echo "<img src=\"$subfile\">";
} else {
// Gallery anzeigen
$handle=opendir($imagedir);
echo "<table width=\"100%\" height=\"100%\" border=\"0\" cellpadding=\"5\">";
$n=0;
$filearray=Array();
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && is_image($file,$imagetypes)) {
$filearray[]=$file;
}
}
reset($filearray);
// skip images...
for ($n=0;$n<$mmstart;$n++)
$ffile=each($filearray);
$n=0;
while ($ffile=each($filearray)) {
$file=$ffile[value];
// generate thumbnail, if nessesairy. Now THIS is fun :)
// natuerlich nur, wenn imagemagick vorhanden ist...
if (!file_exists($thumbnails."/thb_".$file) ) {
if ($im_path!="") {
$cmd=$im_path."/convert -scale ".$thb_x_size."x".$thb_y_size." ".$imagedir."/".$file." ".$thumbnails."/thb_".$file;
exec($cmd);
// nochmal prüfen!
$thumbnail=file_exists($thumbnails."/thb_".$file);
} else
$thumbnail=false;
} else
$thumbnail=true;
if ($n%$cols==0)
echo "<tr>\n";
if ($image_idcat!=0)
$url=$sess->url("front_content.php?client=$client&lang=$lang&subid=$subid&idcatart=$image_idcat&subfile=".rawurlencode($imagedir."/".$file));
else
$url=$sess->url("front_content.php?client=$client&lang=$lang&subid=$subid&idcat=$idcat&idart=$idart&subfile=".rawurlencode($imagedir."/".$file));
echo "<td valign=\"middle\" align=\"center\" width=\"$thb_x_size\" height=\"$thb_y_size\"><a href=\"dw.php?file=$file&imagedir=CMS_VALUE[2]\" target=\"dw\" onbeforeunload=\"MM_openBrWindow(\'dw.php?file=$file&imagedir=CMS_VALUE[2]\',\'dw\',\'menubar=yes,scrollbars=yes,resizable=yes,width=700,height=400\')\">".($thumbnail ? "<img src=\"$thumbnails/thb_$file\" border=\"0\">":"$file")."</a></td>
\n";
$n++;
if ($n%$cols==0)
echo "</tr>\n";
// nur solange wie's not tut...
if ($n>=$rows*$cols)
break;
}
echo "<tr> <td colspan=\"$cols\" align=\"center\" height=\"35\" valign=\"middle\">";
if ($mmstart>0) {
$url=$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&subid=$subid&idart=$idart&mmstart=".($mmstart-$rows*$cols));
echo "<a href=\"$url\">vorherige Bilder...</a>";
}
echo " | zeige Bilder ".($mmstart+1)." - ".($mmstart+$n)." | ";
if ($n+$mmstart<count($filearray)) {
$url=$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&subid=$subid&idart=$idart&mmstart=".($mmstart+$rows*$cols));
echo "<a href=\"$url\">weitere Bilder...</a>";
}
echo "</td>\n";
echo "</tr>\n";
echo "</table>";
} // Ende Gallery anzeigen
?>
Code: Alles auswählen
<?php
/***********************************************
* Modulname : Bildergalerie BobCom 1.0
* Author : BobCom.de - Markus Schulz
* Copyright : BobCom.de - Markus Schulz
* Created : 07-02-2004
* Modified : 07-02-2004
************************************************/
include_once ("config.php");
include_once ($contenido_path . "includes/config.php");
cInclude("includes", "cfg_sql.inc.php");
cInclude("includes", "functions.general.php");
$file=$HTTP_GET_VARS["file"];
$imagedir=$HTTP_GET_VARS["imagedir"];
$db_dir = ereg_replace ("upload/", "", $imagedir)."/";
$db = new DB_Contenido;
$sql = "SELECT
description
FROM
".$cfg["tab"]["upl"]."
WHERE
dirname = '$db_dir' AND
filename = '$file'";
$db->query($sql);
$db->next_record();
$description = $db->f("description");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Detail-Ansicht</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="css/format.css">
</head>
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="middle"><a href="javascript:" onClick="window.close()"; title="schliessen"><? echo "<img src=\"$imagedir/$file\" border=\"0\">" ?></a></td>
</tr> <tr> <td align="center" valign="top"><p class="text"><?php echo $description ?></p></td>
</tr>
</table>
</body>
</html>
Ich habe die Hauptdomain www.abc.de und www.xyz.de. www.xyz.de ist nur 'aufgeschaltet', d.h. sie liegt auf dem Server der Hauptdomain innerhalb eines Unterverzeichnisses. Die aufgeschaltete Domain ist sowohl unter www.xyz.de, als auch unter www.abc.de/xyz/ erreichbar.
Der Server-Pfad zu den Daten von www.abc.de, speziell der Mandantenpfad, lautet {rootdir}/www.abc.de/cms/. Der Server-Pfad fuer www.xyz.de lautet {rootdir}/www.abc.de/xyz/. Wenn ich jetzt bei dem Mandanten xyz die Bildergalerie konfigurieren will, steht dort im Pfad (Auswahlliste) nicht upload/ sondern das komplette Verzeichnis ab {rootdir}, also {rootdir}/www.abc.de/xyz/upload/. Das fuehrt dazu, dass in der Bildergalerie leider nur broken-image-Symbole (die mit dem roten X) angezeigt werden, und wenn ich die anklicke, wird auch das grosse Bild nicht gezeigt, denn der Datei dw.php wird ja der falsche Pfad uebergeben (der ab {rootdir} statt ab upload/). Aber gerade diese Auswahlliste fand ich eigentlich gut, bei anderen Modulen muss man immer den Pfad komplett per Hand eingeben.

Die erste Frage ist, ob ich unter Administration-->Mandanten bei der Web-Adresse http://www.xyz.de oder http://www.abc.de/xyz angeben muss, und die zweite: wie kriege ich das Bildergalerie-Modul dazu, auch fuer den Mandanten xyz zu laufen? Ich nehme an, die Eingabe muesste geaendert werden, und zwar hier:
Code: Alles auswählen
$path = substr_replace($cfgClient[$client]["path"]["upload"], "", strrpos($cfgClient[$client]["path"]["upload"], "/"));
$verz_liste = get_dir_array($path);
echo "<select name=\"CMS_VAR[2]\">";
foreach ( $verz_liste as $verz ){
$verz = eregi_replace ($cfg['path']['frontend']."/cms/", "", $verz);
if ( $path1 == $verz ){ $wwi = "selected"; }
else { $wwi = ""; }
echo "<option value=\"$verz\" $wwi>$verz</option>";
}
Code: Alles auswählen
foreach ( $verz_liste as $verz ){
$verz = eregi_replace ($cfg['path']['frontend']."/cms/", "", $verz);
if ( $path2 == $verz ){ $wwi = "selected"; }
else { $wwi = ""; }
echo "<option value=\"$verz\" $wwi>$verz</option>";
}
Nochmal auf Erleuchtung hoffend

Christa