Bildergalerie w3concepts.gallery.v1 :: neues Modul

muellerjakob
Beiträge: 1
Registriert: Do 30. Dez 2004, 23:49
Kontaktdaten:

Beitrag von muellerjakob » Do 30. Dez 2004, 23:57

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

emscher23
Beiträge: 83
Registriert: Mi 1. Dez 2004, 22:03
Kontaktdaten:

Beitrag von emscher23 » Fr 31. Dez 2004, 03:30

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.

hen
Beiträge: 44
Registriert: Fr 29. Aug 2003, 16:27
Kontaktdaten:

Beitrag von hen » So 2. Jan 2005, 13:36

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

emscher23
Beiträge: 83
Registriert: Mi 1. Dez 2004, 22:03
Kontaktdaten:

Beitrag von emscher23 » So 2. Jan 2005, 17:48

komisch. bei mir funktioniert es so.

emscher23
Beiträge: 83
Registriert: Mi 1. Dez 2004, 22:03
Kontaktdaten:

Beitrag von emscher23 » Mo 3. Jan 2005, 00:26

@ 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.

Damaskus
Beiträge: 54
Registriert: Do 6. Mai 2004, 06:41
Kontaktdaten:

Beitrag von Damaskus » Mo 3. Jan 2005, 00:40

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

Damaskus
Beiträge: 54
Registriert: Do 6. Mai 2004, 06:41
Kontaktdaten:

Beitrag von Damaskus » Mo 3. Jan 2005, 01:10

@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

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

Beitrag von emergence » Mo 3. Jan 2005, 10:30

-> 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...
*** make your own tools (wishlist :: thx)

hen
Beiträge: 44
Registriert: Fr 29. Aug 2003, 16:27
Kontaktdaten:

Beitrag von hen » Mo 3. Jan 2005, 11:32

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

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

Beitrag von Louis » Mo 3. Jan 2005, 12:16

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)
Wir können den Wind nicht ändern, aber die Segel anders setzen
(Aristoteles)

Damaskus
Beiträge: 54
Registriert: Do 6. Mai 2004, 06:41
Kontaktdaten:

Beitrag von Damaskus » Mo 3. Jan 2005, 12:28

@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:

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mo 3. Jan 2005, 15:12

sucht doch mal im Forum, da gab's mal eine Bildergalerie, wo man ein "Wasserzeichen" mit einbauen konnte, Teile davon lassen sich bestimmt wiederverwenden!

Damaskus
Beiträge: 54
Registriert: Do 6. Mai 2004, 06:41
Kontaktdaten:

Beitrag von Damaskus » Di 4. Jan 2005, 00:59

@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

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Di 4. Jan 2005, 01:18

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. :-)

Damaskus
Beiträge: 54
Registriert: Do 6. Mai 2004, 06:41
Kontaktdaten:

Beitrag von Damaskus » Di 4. Jan 2005, 11:17

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

Gesperrt