Zum Inhalt springen

POP-UP FENSTER

Erstellt am 19. März 2006 · 5 Antworten · letzte Antwort am 16. April 2008

Tags: JavaScript & AJAX, Frage

felle ·

Hallo ich möchte auf meiner Seite ein Pop-Up Fenster einbauen. Über JS eine neue php-Datei des Plugins aufzurufen ist nicht sehr schön. Ich kann mir zwar trotzdem die t3lib Bibliotheken(siehe showpic.php) holen aber wie ich zum Beispiel an Sachen wie

$this->cObj->substituteMarkerArray

komme hab ich noch nicht heraus gefunden.
Ich hab mal was gelesen, dass es wohl mit typolink gehen soll.Aber aber noch nicht genau heraus gefunden wie das geht. Vielleich kann ja mal jemand ein Besipiel posten.

birgitr ·
function pi_openAtagHrefInJSwindow($str,$winName='',$winParams='width=670,height=500,status=0,menubar=0,scrollbars=1,resizable=1')
$markerArray['###MARKER###'] = $this->pi_openAtagHrefInJSwindow('öffnen Sie das Fenster','win1',$winParams='width=670,height=500,status=0,menubar=0,scrollbars=1,resizable=1');

wenn Du lediglich ein Bild anklicken und in einem Popup öffnen willst:

$markerArray['###IMAGE###'] = $this->cObj->cImage('uploads/tx_meineextension/'.$row['image'], $conf['myImage.']);

und in der Datei ext_typoscript_setup.txt in Deiner Extension:

myImage {
	file {
		maxW = 100
		maxH = 120
	}
	title = Titel
	imageLinkWrap = 1
	imageLinkWrap {
		enable = 1
		bodyTag = <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
		wrap = <a href="javascript:close();">|</a>
		JSwindow = 1
		JSwindow.newWindow = 1
		JSwindow.expand = 0,0
		width = 400
		height = 400
		}
	}
felle ·

Danke schön. Ich werde ich gleich mal versuchen.
Ich hatte es jetzt aber mal auf einen anderen Weg versucht, indem ich ein Popupfenster öffne und dann den HTML/Javscript-Inhalt meines gerenderten Templates in das Popup schreibe:

<script language="javascript" type="text/javascript">
            <!--
                function start() {
                var site ='.$this->render_html_popup_template($content,$conf).';
                var popupWindow = window.open("","Stream","width=400,height=600);
                popupWindow.document.write(site);
                }
                 -->
                </script>
          <a href="javascript:start();"><img src="'.$this-" alt="" />Images[0].'"/></a>'

Zuvor habe ich den HTML/Javscript-Inhalt meines gerenderten Templates noch mit Hilfe einer Pear-Bibliothek JSON http://mike.teczno.com/json.html Javascript gerecht codiert. Das funktioniert echt gut mit dieser JSON-Bibliothek.

Das Problem ist nun, dass das Javascript in dem Popup nicht ausgeführt wird wenn es von meiner Typo3 Seite aus aufgerufen wird. Die HTML-Elemente hingegen werden angezeigt um im Quelltext ist alles vorhanden. Und wenn ich genau das gleiche Popup mit identischen HTML/Javascript Quelltext von Hand aus aufrufe dann funktioniert es. Gibt es da vielleicht irgendeine Einstellung in TYPO3 die das ausführen von Javascript in dem Popup verhindert.

felle ·

Hab an meinem Template für das Popup rumgeschraubt und irgendwann ging es dann doch.
Also hat sich erledigt.

Bitbull ·

Danke Birgit,

Dein Weg hat mir sehr weitergeholfen.
Sollte man aus irgendwelchen Gründen ($conf fehlt in der aktuellen Routine wegen subclassing, TS-Script Feindseligkeit oder sonstiges ) das TS Script ganz in die PHP-Extension einbauen müssen, sähe die Lösung so aus:

$conf["popup."]["file."]["maxW"]=20;
$conf["popup."]["file."]["maxH"]=20;
$conf["popup."]["file"]=$img_pfad.$row["image"];
$conf["popup."]["title"]=$row["matchcode"];
$conf["popup."]["altText"]=$row["matchcode"];
$conf["popup."]["imageLinkWrap"]=1;
$conf["popup."]["imageLinkWrap."]["enable"]=1;
$conf["popup."]["imageLinkWrap."]["bodyTag"]='<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">';
$conf["popup."]["imageLinkWrap."]["wrap"]='<a href="javascript:close();">|</a>';
$conf["popup."]["imageLinkWrap."]["JSwindow"]=1;
$conf["popup."]["imageLinkWrap."]["JSwindow."]["newWindow"]=1;
$conf["popup."]["imageLinkWrap."]["JSwindow."]["expand"]='0,0';
$conf["popup."]["imageLinkWrap."]["height"]=400;

if ($this->cObj->fileResource($img_pfad.$row["image"])) {
	$marker["###BILD###"] = $this->cObj->cImage($img_pfad.$row["image"], $conf['popup.']); 
} else {
	$marker["###BILD###"] = "no"; 
}

Schöne Grüße

Bitbull