Eugen: Komplexe JS PHP Galerie (statt Popup auf Framelösung)

Hallo Leute,

da ich eher der Flashfanatiker bin, liegt mit JS nicht wirklich.
Schon garnicht in Verbindung mit PHP :(
Ich habe trotzdem schon alles mögliche selber versucht und gegoogelt und gesucht doch nun muss ich Euch um Hilfe bitten.

Ich habe eine Galerie, die auf php und JS basiert.
Es werden thumbs automatisch generiert.

Galerie: http://snfz.movimiento-locos.de/galerie/

Klickt man auf ein Thumbnail, so öffnet sich das Originalbild im Popup.
Ich will keine Popups, sonder einfach, dass er mir diese Bild im unterem Frame anzeigt.

Die Datei, die dafür verantwortlich ist habe ich hier abgeladen:
http://snfz.movimiento-locos.de/galerie/autogallery.inc.txt

Nun es gibt zwei Sachen:

1. Diese Funktion:

function show_jscript($pagetitle="autogallery" )
    {
        // init vars
        $str = '';

$host = "http://" . $_SERVER['SERVER_NAME'] . ($_SERVER['SERVER_PORT'] == 80 ? "" : ":" . $_SERVER['SERVER_PORT'] )
                . (strlen($_SERVER['PHP_SELF']) ? "" . str_replace(basename($_SERVER['PHP_SELF']), "", $_SERVER['PHP_SELF'] ) : "");

$str .= "\n<script language="JavaScript">\n";
        $str .= "<!--\n";
        $str .= "function popup (img,sx,sy,num) {\n";
        $str .= "         var winl = (screen.width-sx)/2;\n";
        $str .= "         var wint = (screen.height-sy)/2;\n";
        $str .= "    image = "<a href='javascript:self.close()'><img src='"+img+"' border='0' alt='Click to Close'></a>";\n";
        $str .= "    popupwin=window.open("","photo"+num,"toolbar=no,location=no,directories=no,status=no,me  nubar=no,top="+wint+",left="+winl+",width="+sx+",height="+sy+"");\n";
        $str .= sprintf("    popupwin.document.write("<HTML><HEAD><TITLE>%s</TITLE><BASE HREF=\%s\></HEAD><BODY BGCOLOR=#FFFFFF><CENTER>" + image + "</CENTER></BODY></HTML>");\n", $pagetitle, $host );
        $str .= "    popupwin.document.close();\n";
        $str .= "}\n";
        $str .= "// -->\n";
        $str .= "</script>\n";

return $str;
    }

2. Link des Thumbs

<a href="javascript:popup('%s',%s,%s,$j);"
onMouseOver="window.status='Click'; return true;"
onMouseOut="window.status=''; return true;"><img
src="%s" alt="Click" border="0"></a>

So wie ichv verstanden habe, sorgt die Funktion oben auch dafür, dass das Popup aufgebaut wird ohne Scrollbalken usw..
Nun ich weiß nicht in wie weit das jetzt für das Frame unten gilt.

Wäre toll wenn ihr mir helfen könntet.

Danke

  1. Hallo Eugen,

    das sorgt für das Popup:
            $str .= "\n<script language="JavaScript">\n";
            $str .= "<!--\n";
            $str .= "function popup (img,sx,sy,num) {\n";
            $str .= "         var winl = (screen.width-sx)/2;\n";
            $str .= "         var wint = (screen.height-sy)/2;\n";
            $str .= "    image = "<a href='javascript:self.close()'><img src='"+img+"' border='0' alt='Click to Close'></a>";\n";
            $str .= "    popupwin=window.open("","photo"+num,"toolbar=no,location=no,directories=no,status=no,me  nubar=no,top="+wint+",left="+winl+",width="+sx+",height="+sy+"");\n";
            $str .= sprintf("    popupwin.document.write("<HTML><HEAD><TITLE>%s</TITLE><BASE HREF=\%s\></HEAD><BODY BGCOLOR=#FFFFFF><CENTER>" + image + "</CENTER></BODY></HTML>");\n", $pagetitle, $host );
            $str .= "    popupwin.document.close();\n";
            $str .= "}\n";
            $str .= "// -->\n";
            $str .= "</script>\n";

    Schreib mal so (ersetze den Namen des Frames noch):
            $str .= "\n<script language="JavaScript">\n";
            $str .= "<!--\n";
            $str .= "function showPic (img) {\n";
            $str .= "    image = "<a href='javascript:self.close()'><img src='"+img+"' border='0' alt=''></a>";\n";
            $str .= sprintf("    parent.framename.document.write("<HTML><HEAD><TITLE>%s</TITLE><BASE HREF=\%s\></HEAD><BODY BGCOLOR=#FFFFFF><CENTER>" + image + "</CENTER></BODY></HTML>");\n", $pagetitle, $host );
            $str .= "}\n";
            $str .= "// -->\n";
            $str .= "</script>\n";

    Gruß,
    Stephan

    1. Hi Stephan,

      dazu müßte ich aber noch dieses Teil umschreiben oder?

      <a href="javascript:showPic('%s',%s,%s,$j);"
      onMouseOver="window.status='Click'; return true;"
      onMouseOut="window.status=''; return true;"><img
      src="%s" alt="Click"
      border="0"></a>

      wenn ich es so umschreibe dann zeigt er keine thumbs mehr an sondern nur click

      <a href="javascript:showPic('%s');"
      onMouseOver="window.status='Click'; return true;"
      onMouseOut="window.status=''; return true;"><img
      src="%s" alt="Click"
      border="0"></a>

      und so wie ganz oben nur den Funktionsnamen ändern gehts nicht.
      Die Links scheinen richtig zu sein, jedoc öffnet er kein Bild im unterem Frame.

      1. Hi Stephan,

        Danke für die gute Lösung

        habe es hingekriegt, aber die Bilder resetet er nicht sondern packt sie nacheinander rein siehe:

        http://snfz.movimiento-locos.de/galerie/

        Lustig aber ist nicht gewollt :)

        Gruß Eugen

        1. Hätte jemand eine Lösung für das Problem?

          Es wird die
          http://snfz.movimiento-locos.de/galerie/autogallery.inc.txt
          in die
          http://snfz.movimiento-locos.de/galerie/galerie.txt
          includet.

          Dabei muß der Inhalt des Frames mal geleert werden, aber er fügt die anderen Bilder einfach hinten ran wie man das sieht.

          :(

          Gruß

          Eugen

          1. Hallo Eugen,

            Nur ein kleiner Fehler:
                    $str  = "";
                    $str .= "\n<script language="JavaScript">\n";
                    $str .= "<!--\n";
                    $str .= "function showPic (img) {\n";
                    $str .= "    image = "<a href='javascript:self.close()'><img src='"+img+"' border='0' alt=''></a>";\n";
                    $str .= sprintf("    parent.framename.document.write("<HTML><HEAD><TITLE>%s</TITLE><BASE HREF=\%s\></HEAD><BODY BGCOLOR=#FFFFFF><CENTER>" + image + "</CENTER></BODY></HTML>");\n", $pagetitle, $host );
                    $str .= "}\n";
                    $str .= "// -->\n";
                    $str .= "</script>\n";

            PS: Wieso bindest Du eigentlich javascript mit php ein?

            Gruß,
            Stephan

            1. Hi Stephan,

              hmm klappt irgendwie nicht. Hast nur $str  = ""; hinzugefügt oder?

              So sieht die Funktion aus und es gibt trotzdem die selbe Erscheinung
              Die Bilder werden nacheinander angefügt.

              function show_jscript($pagetitle="autogallery" )
                  {
                      $str  = "";
                      $str .= "\n<script language="JavaScript">\n";
                      $str .= "<!--\n";
                      $str .= "function showPic (img) {\n";
                      $str .= "    image = "<a href='javascript:self.close()'><img src='"+img+"' border='0' alt=''></a>";\n";
                      $str .= sprintf("    parent.pics.document.write("<HTML><HEAD><TITLE>%s</TITLE><BASE HREF=\%s\></HEAD><BODY BGCOLOR=#FFFFFF><CENTER>" + image + "</CENTER></BODY></HTML>");\n", $pagetitle, $host );
                      $str .= "}\n";
                      $str .= "// -->\n";
                      $str .= "</script>\n";

              return $str;
              }

              1. Hallo Eugen,

                vielleicht solltest Du die Variable "image" definieren. Setze am Anfang der Javascript-Funktion var image = ""; ein. Somit wird image immer wieder geleert.

                Gruß,
                Stephan

                1. Hallo Eugen,

                  vielleicht solltest Du die Variable "image" definieren. Setze am Anfang der Javascript-Funktion var image = ""; ein. Somit wird image immer wieder geleert.

                  Gruß,
                  Stephan

                  Hi,

                  also var image = ""; geht ja nicht.
                  Habe es mit $image=""; und
                  $str .= "    image = "";"; probiert.
                  Es in die Funktion ganz oben geschrieben, aber kein Erfolg.

                  Problem ist denke ich, dass die Seite nict neugeladen wird, sondern immer erweitert wird. Gibts es eine Möglichkeit diese immer davor neuzuerstellen bloß leer?

                  Was mich auch die ganze Zeit wundert ist, dass die Seite die ganze Zeti geladen wird. Obwohl er ja fertig ist mit Aufbau der Seite lädt er. Als ob eine Funktion immer wieder ausgeführt wird...

                  Gruß,

                  Eugen