Seite 8 von 18

Verfasst: Do 30. Dez 2004, 23:57
von muellerjakob
Erstmal Kompliment für dieses tolle Modul, ich habs etwas abgewandelt auf eine Seite gepackt.
Zu meiner Frage: Ist es möglich, die Verzeichnisauswahl von einem anderen Ordner aus zu starten?
Ich habe versucht diese Zeile zu ändern

Code: Alles auswählen

$pfad = new pfad($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload']);
in

Code: Alles auswählen

$pfad = new pfad($cfgClient[$client]['path']['frontend'].$cfgClient[$client]['upload'].'bilder/');
Der richtige Pfad wird auch angezeigt, allerdings nicht gespeichert - jedenfalls werden die Bilder nicht gefunden.

Wenn irgendjemand eine Idee dazu hätte, wäre ich sehr dankbar!

Ciao,
Jakob

Verfasst: Fr 31. Dez 2004, 03:30
von emscher23
hier mal die codes für popups mit beschreibung. danke nochmal an louis für seine zeit und seine halbe nacht ;-) . klasse.

WICHTIG: !! denkt aber daran keine ' oder " in der beschreibung zu verwenden, da sonst der link fürs popup zerstört wird !!

OUTPUT:

Code: Alles auswählen


<?
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :       w3concepts.gallery.v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     30-08-2004
* Modified    :     30-08-2004
************************************************/

class gallery {

   function gallery() {
      // initialwerte setzen
      $this->setInitValues();

      // aussteigen, falls initialwerte nicht sinnvoll
      if (!$this->checkInitValues()) return false;

      // quellverzeichnis auslesen
      $this->readDir();

      // zeiger für showNextPicture setzen
      if (empty($_REQUEST['pos'])) {
         $this->showNextPictureSeq = -1;
      } else {
         $this->showNextPictureSeq = $_REQUEST['pos'] - 1;
      }

      // datenbankzugriff initialisieren
      $this->db = new DB_Contenido;

      // galerie ausgeben
      $this->showGallery();

      // gegebenenfalls navigation ausgeben
      $this->showNavigation();

   }

   function setInitValues() {
      // konfigurationswerte aus dem input-script
      // übernehmen
      $this->path['pictures'] = "CMS_VALUE[0]";
      $this->path['thumbs'] = "CMS_VALUE[1]";
      $this->path['upload'] = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['upload'];
      $this->path['html'] = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['path']['htmlpath'];
      $this->abspath['pictures'] = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['path']['frontend'].$GLOBALS['cfgClient']["{$GLOBALS['client']}"]['upload'].$this->path['pictures'];
      $this->abspath['thumbs'] = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['path']['frontend'].$GLOBALS['cfgClient']["{$GLOBALS['client']}"]['upload'].$this->path['thumbs'];
      $this->htmlpath = $GLOBALS['cfgClient']["{$GLOBALS['client']}"]['path']['htmlpath'].$GLOBALS['cfgClient']["{$GLOBALS['client']}"]['upload'];
      $this->thumbnailSize['width'] = "CMS_VALUE[2]";
      $this->thumbnailSize['height'] = "CMS_VALUE[3]";
      $this->tableSize['cols'] = "CMS_VALUE[4]";
      $this->tableSize['rows'] = "CMS_VALUE[5]";
      $this->link['previous'] = "CMS_VALUE[6]";
      $this->link['next'] = "CMS_VALUE[7]";
   }

   function checkInitValues() {
      // prüfen, ob es sich bei den übergebenen pfaden
      // um tatsächlich vorhandene pfade im dateisystem
      // handelt. gegebenenfalls wird eine ausgabe
      // an den browser vorgenommen und false zurückgegeben.
      if (!chdir($this->abspath['pictures'])) {
         echo "<p>Das Verzeichnis '{$this->abspath['pictures']}' existiert im Dateisystem
            des Servers nicht. Entweder müssen Sie es noch anlegen oder die
            Konfiguration Ihres Modules anpassen.</p>";
         return false;
      }
      if (!chdir($this->abspath['thumbs'])) {
         echo "<p>Das Verzeichnis '{$this->abspath['thumbs']}' existiert im Dateisystem
            des Servers nicht. Entweder müssen Sie es noch anlegen oder die
            Konfiguration Ihres Modules anpassen.</p>";
         return false;         
      }

      if ($this->thumbnailSize['width'] == '') $this->thumbnailSize['width'] = 100;
      if ($this->thumbnailSize['height'] == '') $this->thumbnailSize['height'] = 100;

      if ($this->tableSize['cols'] == '') $this->tableSize['cols'] = 3;
      if ($this->tableSize['rows'] == '') $this->tableSize['rows'] = 3;

      if ($this->link['previous'] == '') $this->link['previous'] = '[:: rückwärts ]';
      if ($this->link['next'] == '') $this->link['next'] = '[ vorwärts ::]';


      // rückgabe im erfolgsfall
      return true;
   }

   function readDir() {
      $dir = opendir($this->abspath['pictures']);
      while ($file = readdir($dir)) {
         $bildinfo = @getimagesize($this->abspath['pictures'].$file);
         if (!empty($bildinfo)) {
            $picture[] = $file;
         }
      }
      rsort($picture);
      closedir($dir);

      foreach ($picture as $picture2) {
         if (!empty($picture2)) $this->picture[] = $picture2;
      }
   }

   function showNextPicture() {
      // zeiger um eins erhöhen
      $this->showNextPictureSeq++;

      // wenn keine bild mehr vorhanden ist, false zurück geben
      if ($this->showNextPictureSeq >= count($this->picture)) return '';

      // thumbnail generieren falls erforderlich
      $size = $this->generateThumb($this->picture["{$this->showNextPictureSeq}"]);

      // originalgrösse des bildes ermitteln
      $originalsize = getimagesize($this->abspath['pictures'].$this->picture["{$this->showNextPictureSeq}"]);

      // referenz zurück geben
      //return "<a href=\"#\" onClick=\"window.open('{$this->path['html']}popupviewer.php?desc='.this->getDescription().'&uri={$this->path['upload']}{$this->path['pictures']}{$this->picture[$this->showNextPictureSeq]}','bild','width={$originalsize[0]},height={$originalsize[1]},top=10,left=10,scrollbars=no,topmargin=0,leftmargin=0');bild.document.body.style.margin=0;\"><img src=\"{$this->htmlpath}{$size['filename']}\" width=\"{$size['width']}\" height=\"{$size['height']}\" /></a>";
      $beschreibung = $this->getDescription();
      $popupheight=$originalsize[1]+100;
      return "<a href=\"javascript:window.open('{$this->path['html']}popupviewer.php?desc=$beschreibung&uri={$this->path['upload']}{$this->path['pictures']}{$this->picture[$this->showNextPictureSeq]}','bild','width={$originalsize[0]},height=$popupheight,top=10,left=10,scrollbars=no,topmargin=0,leftmargin=0');bild.document.body.style.margin=0;\"><img src=\"{$this->htmlpath}{$size['filename']}\" border=\"0\" width=\"{$size['width']}\" height=\"{$size['height']}\" /></a>";
   }

   function generateThumb($filename) {

      $src_image_size = getimagesize($this->abspath['pictures'].$filename);

      // prüfen, ob thumbnail bereits vorhanden ist
      if (!file_exists("{$this->abspath['thumbs']}{$this->thumbnailSize['width']}.{$this->thumbnailSize['height']}.$filename.jpg")) {

         // ermitteln ob das bild auf bestimmte höhe oder bestimmte breite zu reduzieren ist
         // sowie ermitteln, um welchen faktor das bild zu verkleinern ist
         if ($src_image_size[0]/$src_image_size[1] > $this->thumbnailSize['width']/$this->thumbnailSize['height']) {
            $verkleinerungsfaktor = $this->thumbnailSize['width']/$src_image_size[0];
         } else {
            $verkleinerungsfaktor = $this->thumbnailSize['height']/$src_image_size[1];
         }

         // berechnen der thumbnailgrösse
         $bildhoehe = round($src_image_size[1] * $verkleinerungsfaktor);
         $bildbreite = round($src_image_size[0] * $verkleinerungsfaktor);

         // thumbnail erstellen
         $dst_im = imagecreatetruecolor($bildbreite,$bildhoehe);
         if ($src_image_size[2] == 1) {
            $src_im = imagecreatefromGIF("{$this->abspath['pictures']}$filename");
         } elseif ($src_image_size[2] == 2) {
            $src_im = @ImageCreateFromJPEG("{$this->abspath['pictures']}$filename");
         } else {
            $src_im = @imagecreatefromgd("{$this->abspath['pictures']}$filename");
         }
         imagecopyresampled ($dst_im,$src_im,0,0,0,0,$bildbreite,$bildhoehe,$src_image_size[0],$src_image_size[1]);
         imagejpeg ($dst_im,"{$this->abspath['thumbs']}{$this->thumbnailSize['width']}.{$this->thumbnailSize['height']}.$filename.jpg",100);
         
         $size['width'] = $bildbreite;
         $size['height'] = $bildhoehe;
      } else {
         $thumbnailsize = getimagesize("{$this->abspath['thumbs']}{$this->thumbnailSize['width']}.{$this->thumbnailSize['height']}.$filename.jpg");
         $size['width'] = $thumbnailsize[0];
         $size['height'] = $thumbnailsize[1];
      }

      $size['filename'] = "{$this->path['thumbs']}{$this->thumbnailSize['width']}.{$this->thumbnailSize['height']}.$filename.jpg";
   
      return $size;
   }

   function getDescription() {
      
      $sql = "SELECT description FROM {$GLOBALS['cfg']['tab']['upl']}
         WHERE
            filename = '{$this->picture[$this->showNextPictureSeq]}'
            AND dirname = '{$this->path['pictures']}'
         ";

      $this->db->query($sql);
      $this->db->next_record();

      return $this->db->f("description");;
   }

   function showGallery() {

      $cellwidth = floor(100/$this->tableSize['cols']);
//      echo "<table width=\"100%\">\n";
// mod by Louis 2004-12-30
      echo "<table width=\"100%\" cellpadding=\"10\" cellspacing=\"20\">\n";
      for ($i = 0;$i < $this->tableSize['rows'];$i++) {
         $beschreibung = null;

         echo "<tr>\n";         
         for ($j = 0;$j < $this->tableSize['cols'];$j++) {
/* output by Louis 2004-12-30
*  this is the original code
            echo "<td align=\"left\" valign=\"top\" 
width=\"$cellwidth%\">\n".$this->showNextPicture()."\n</td>\n";
            $beschreibung[] = $this->getDescription();
         }
         echo "</tr>\n";

         echo "<tr>\n";
         for ($j = 0;$j < $this->tableSize['cols'];$j++) {
            echo "<td align=\"left\" valign=\"top\" 
width=\"$cellwidth%\" style=\"padding-bottom:10px; font-style: 
italic;\">\n{$beschreibung[$j]}\n</td>\n";
         }
*/
/* here is the new code: description closer to thumbs */
            echo "<td align=\"center\" valign=\"top\" width=\"$cellwidth%\">\n".$this->showNextPicture()."<br>\n";
            //ausgeklammert $beschreibung[] = $this->getDescription();
            echo "<p style=\"padding-bottom:10px; font-style: italic;\">{$beschreibung[$j]}\n</td>\n";
// end of new code            
         }
         echo "</tr>\n";
      }
      echo "</table>\n";
   }

   function showNavigation() {

      if ($this->tableSize['cols'] * $this->tableSize['rows'] < count($this->picture)) {
         echo "<table width=\"100%\">\n<tr>\n";

         if (!empty($_REQUEST['pos'])) {
            $pos = ($this->showNextPictureSeq <= $this->tableSize['cols'] * $this->tableSize['rows']) ? (0) : ($this->showNextPictureSeq - (2 * $this->tableSize['cols'] * $this->tableSize['rows']) + 1);
            $pos = ($pos < 0) ? (0) : ($pos);
            $link = $GLOBALS['sess']->url("front_content.php?client={$GLOBALS['client']}&lang={$GLOBALS['lang']}&idcat={$GLOBALS['idcat']}&idart={$GLOBALS['idart']}&pos=$pos");
            echo "<td style=\"text-align:left; width:33%\"><a href=\"$link\">{$this->link['previous']}</a></td>";
         } else {
            echo "<td style=\"text-align:left; width:33%\">&nbsp;</td>";
         }

         echo "<td align=\"center\" width=\"33%\">&nbsp;</td>";

         if ($this->showNextPictureSeq + 1 < count($this->picture)) {
            $pos = $this->showNextPictureSeq + 1;
            $link = $GLOBALS['sess']->url("front_content.php?client={$GLOBALS['client']}&lang={$GLOBALS['lang']}&idcat={$GLOBALS['idcat']}&idart={$GLOBALS['idart']}&pos=$pos");
            echo "<td style=\"text-align:right; width:33%\"><a href=\"$link\">{$this->link['next']}</a></td>";
         } else {
            echo "<td style=\"text-align:right; width:33%\">&nbsp;</td>";
         }

         echo "</tr>\n</table>\n";
      }
   }

}

$gallery = new gallery();
?>
POPUPVIEWER.PHP:

Code: Alles auswählen

<html>

        <head>
                <meta http-equiv="content-type" 
content="text/html;charset=iso-8859-1">
                <meta name="generator" content="Adobe GoLive 5">
                <title></title>
                <style media="screen" type="text/css"><!--
#layer1 { position: absolute; top: 0px; left: 0px; visibility: visible }
--></style>
<SCRIPT TYPE="text/javascript">

<!--
function targetopener(mylink, closeme, closeonly)
{
if (! (window.focus && window.opener))return true;
window.opener.focus();
if (! closeonly)window.opener.location.href=mylink.href;
if (closeme)window.close();
return false;
}
//-->

</SCRIPT>
        </head>

        <body bgcolor="#ffffff" leftmargin=0 topmargin=0>
<!-- <div id="layer1"> -->
<table border="0" width="100%" cellspacing=0 cellpadding=0>
  <tr>
    <td width="100%">
      <a href="/"  onClick="return targetopener(this,true,true)">
      <img src="<?print $_GET['uri'];?>" border="0"></a>
    </td>
  </tr>
  <tr>
    <td width="100%"><br><? echo $desc; ?></td>
  </tr>
</table>
</div>
</body>
</html>

nun viel spaß damit.

Verfasst: So 2. Jan 2005, 13:36
von hen
ich habe jetzt auch mal den neuen code ausprobiert aber auch hier keine reaktion auf den klick. Das pop up geht nicht auf ...

http://web4.vz5026.evanzo-server.de/cms ... p?idcat=53

Verfasst: So 2. Jan 2005, 17:48
von emscher23
komisch. bei mir funktioniert es so.

Verfasst: Mo 3. Jan 2005, 00:26
von emscher23
@ hen:
hast du auch diesen satz von mir berücksichtigt?

WICHTIG: !! denkt aber daran keine ' oder " in der beschreibung zu verwenden, da sonst der link fürs popup zerstört wird !!

ist komisch, dass es bei dir gar nicht geht.

Verfasst: Mo 3. Jan 2005, 00:40
von Damaskus
Hi,
hat jemand eine Idee wie ich über die Bilder die vom "popupviewer"
angezeigt werden mit einem Copyright entweder mit einem Bild oder einem Text überblendet wird?

Für einen Denkanstoß wäre ich echt dankbar.

Thx
Damaskus

Verfasst: Mo 3. Jan 2005, 01:10
von Damaskus
@hen
Dein Fehler liegt bei dir im Quellcode von deinem Layout.
(So ca. Zeile 25 im Quellcode deiner Seite)
Und zwar in folgender Funktion:

Code: Alles auswählen

function SymWinOpen(url, name, attributes)
{  return (new Object());}
window.open = SymWinOpen;
Wenn du die deaktivierst dann klappt das mit dem Popup bei dir.
Mehr kann ich dir dazu nicht sagen da ich von Javascript selber keine Ahnung hab. Ich hoffe es hilft dir weiter.

Gruß
Damaskus

Verfasst: Mo 3. Jan 2005, 10:30
von emergence
-> SymWinOpen

wird von einem norton bzw symantec produkt eingefügt...
das produkt ist schuld daran das es nicht funktioniert...
vermutlich ist es norton internet security...

Verfasst: Mo 3. Jan 2005, 11:32
von hen
Super Leute vielen Dank, das wars...bin bald verrückt geworden - ja das ist aus nem anderen Layout übrig geblieben ---> verhindert den pop up blocker bei internet security !!!!!

Frohes neues zusammn :-))
:D :D :D :D

Verfasst: Mo 3. Jan 2005, 12:16
von Louis
Damaskus hat geschrieben:Hi,
hat jemand eine Idee wie ich über die Bilder die vom "popupviewer"
angezeigt werden mit einem Copyright entweder mit einem Bild oder einem Text überblendet wird?

Für einen Denkanstoß wäre ich echt dankbar.

Thx
Damaskus
OK, hier ein Denkanstoß:

Im Moment erzeugt die popupviewer.php eine Tabelle in der das Bild angezeigt wird. Wenn du das bild jetzt als background für die Tabellenzelle nimmst kannst du Copyright oder sonstwas als "ganz normalen" Text in die Zelle schreiben....
Allerdings brauchst du dann noch einen separaten Link um das Fenster wieder zu schließen.

Code also etwa so:

Ersetze in popupviewer.php

Code: Alles auswählen

<table border="0" width="100%" cellspacing=0 cellpadding=0>
  <tr>
    <td width="100%">
      <a href="/"  onClick="return targetopener(this,true,true)">
      <img src="<?print $_GET['uri'];?>" border="0"></a>
    </td>
  </tr>
  <tr>
    <td width="100%"><br><? echo $desc; ?></td>
  </tr>
</table>
durch

Code: Alles auswählen

<table border="0" width="100%" cellspacing=0 cellpadding=0 background="<?print $_GET['uri'];?>">
  <tr>
    <td width="100%" valign="bottom" align="right">
      <p>Copyright-Vermerk</p>
    </td>
  </tr>
  <tr>
    <td width="100%"><br><? echo $desc; ?></td>
  </tr>
  <tr>
    <td width="100%" align="center">
      <a href="/"  onClick="return targetopener(this,true,true)">
      [ Fenster schließen ]</a>
    </td>
  </tr>
</table>
Wie gesagt, ist nur ein Denkanstoß und muß noch getunt werden bis es läuft..... (z.B. muß beim Aufruf des Popups noch die zusätzliche Zeile in der Tabelle berücksichtigt werden)

Verfasst: Mo 3. Jan 2005, 12:28
von Damaskus
@louis
thx für den Denkanstoß!
Nur gefällt mir an der Lösung nicht das der Schriftzug nicht direkt ins Bild mit eingebaut wird.
So eine ähnliche Idee hat ich auch schon. Nur will ich das wenn jemand das Bild schon verlinkt
oder einfach nur kopiert sich auch die Mühe machen muss und den Copyright Verweis von Hand
wieder rauspinselt oder ihn einfach drinnen läßt. So jetzt könnt ich das ganze ja auch selber von
Hand machen und in jedem Bild den Verweis selber reinpinseln dazu bin ich aber wiederum zu faul :wink: :wink:

Ich bin gerade an einer anderen Lösung, die ist aber noch ganz am Anfang.
Meine Idee ist es die Grafik in der popupviewer.php die Grafik neu zu erstellen und den Text per "imageString" einzublenden.

Mal schauen was draus wird... :wink:

Verfasst: Mo 3. Jan 2005, 15:12
von Halchteranerin
sucht doch mal im Forum, da gab's mal eine Bildergalerie, wo man ein "Wasserzeichen" mit einbauen konnte, Teile davon lassen sich bestimmt wiederverwenden!

Verfasst: Di 4. Jan 2005, 00:59
von Damaskus
@Halchteranerin
Thx für den Tipp.
Die Funktionsweise würde soweit schon passen.
Genau sowas hab ich gesucht.
Nur gibts dabei ein Problem siehe hier:
http://www.contenido.de/forum/viewtopic ... 7238#37238

Verfasst: Di 4. Jan 2005, 01:18
von Halchteranerin
aehm, ich habe die Bildergalerie nicht benutzt, weil ich KEIN Wasserzeichen wollte, ich wusste nur, dass es so etwas gab. Bei deinem Problem kann ich dir leider nicht helfen, aber vielleicht kann das ja jemand anders. :-)

Verfasst: Di 4. Jan 2005, 11:17
von Damaskus
War mir schon klar das du die nicht benutz hast.
Nur hättest ja trotzdem ne Idee haben können.
Aber kummer hats mir erklärt...
thx