Zum Inhalt springen

popup in extension

Erstellt am 28. Dezember 2005 · 18 Antworten · letzte Antwort am 6. November 2006

Tags: Frage

xtensionar ·

mm..ich bin in typo3 absoluter vollnoob ;-(, darum noch ein paar fragen:

- kann ich einen link auf eine php-file generieren (das sollte gehn)
- kann ich von der php-file dann auf die db zugreifen? (denke das ist ein problem)

- ich muss ja auf irgendetwas verlinken, ist das dann eine in typo3 angelegte seite mit einer ID?
- kann ich nicht einer funktion eine gefuellte $content-variable mitgeben, welche mir dann den inhalt in einem popup ausgibt?

das sind ziemlich grundsaetziche fragen, allerdings fehlt mir noch irgendwie das verstaendnis fuer typo3. die bisherige extension war eigentilch komplett php basiert...

waere dankbar fuer antworten!

woida ·

- kann ich einen link auf eine php-file generieren (das sollte gehn)

ja, siehe Funktion typolink

xtensionar schrieb

- kann ich von der php-file dann auf die db zugreifen? (denke das ist ein problem)

xtensionar schrieb

ja, das php zeuch und der db zugriff ist nicht das problem.

Was jetzt? Problem oder nicht? wenn ja, siehe showpic.php

- ich muss ja auf irgendetwas verlinken, ist das dann eine in typo3 angelegte seite mit einer ID?

Ich habe keine Ahnung auf was du verlinken willst. Wenn du auf google.de verlinke willst, brauchst du keine id

- kann ich nicht einer funktion eine gefuellte $content-variable mitgeben, welche mir dann den inhalt in einem popup ausgibt?

ja, siehe Funktion printContent() in Zeile 223

xtensionar ·

oki, erst mal danke

d.h. ich koennte es folgendermassen loesen:

mache mit typolink ein popup, index ich auf die file popup.php verweise.
in der popup.php ist es kein problem einen db-zugriff zu haben?
dann den ganzen html-code in die content-variable schreiben und mit printContent raushauen.

ist das prinzip richtig?

thx!

xtensionar ·

..und noch ne frage:

warum muss ich denn typolink nehmen? ich koennte doch auch in meinem php file gleich javascript schreiben und damit mein popup aufrufen, oder nicht? macht das n unterschied beim db-zugriff?

danke!

xtensionar ·

hi nochmal,

mir ist noch eine andere loesung eingefallen

<script language="JavaScript1.2" type="text/javascript">
<!--
      function popup(content) {
      
	var w = 800;
	var h = 100;
	var x = 100;
	var y = 100;
	
        var popupWindow = window.open("", "", "width="+w+",height="+h+",left="+x+",top="+y+",screenX="+x+",screenY="+y);
        
	popupWindow.document.write(content);
      }
-->
</script>

dann kann ich in der datei (auf welche ich typo3 db zugriff habe) popup("<html>...</html>") aufrufen und dieses beschreiben. ganz ideal ist das aber leider auch nicht, da der titel je nach browser unterschiedlich aussieht (im FF: "about:").

ist es moeglich auch im popup db zugriff (d.h. zugriff auf die variable $GLOBALS['TYPO3_DB']) zu bekommen? das waere die sauberste loesung..?

danke!

woida ·

ist es moeglich auch im popup db zugriff (d.h. zugriff auf die variable $GLOBALS['TYPO3_DB']) zu bekommen? das waere die sauberste loesung..?

Wie oft stellst du diese Frage noch????

Liest du eingentlich meine Antworten???

xtensionar ·

ja, ich geb mein bestes, ich sollte die showpic.php anschauen.

reicht es wenn ich

define('PATH_thisScript',str_replace('//','/', str_replace('\','/', (php_sapi_name()=='cgi'||php_sapi_name()=='isapi' ||php_sapi_name()=='cgi-fcgi')&&($_SERVER['ORIG_PATH_TRANSLATED']?$_SERVER['ORIG_PATH_TRANSLATED']:$_SERVER['PATH_TRANSLATED'])? ($_SERVER['ORIG_PATH_TRANSLATED']?$_SERVER['ORIG_PATH_TRANSLATED']:$_SERVER['PATH_TRANSLATED']):($_SERVER['ORIG_SCRIPT_FILENAME']?$_SERVER['ORIG_SCRIPT_FILENAME']:$_SERVER['SCRIPT_FILENAME']))));
 
define('PATH_site', dirname(PATH_thisScript).'/');
define('PATH_t3lib', PATH_site.'t3lib/');
require_once(PATH_t3lib.'class.t3lib_db.php');
$TYPO3_DB = t3lib_div::makeInstance('t3lib_DB');

im der popup.php inkludiere? ist dann $GLOBALS['TYPO3_DB']) bekannt?

danke!

woida ·

Ja, das schaut gut aus.
Da ich es aber noch nicht ausprobiert habe, mußt du es halt testen obs geht.

xtensionar ·

soo, wie versprochen, fuer alle die das selbe problem haben.

es geht darum: wie kann ich auf die db zugreifen, wenn ich nicht mehr in der "typo3 umgebung" bin. das passiert, wenn man z.b. ein popup aufmacht (das geht einfach mit javascript, ohne typolink oder sonstigen schnickschnack).

der code, der inkludiert werden muss:

error_reporting (E_ALL ^ E_NOTICE);

// ***********************
// Paths are setup
// ***********************

define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', php_sapi_name()=='xcgi'||php_sapi_name()=='isapi'||php_sapi_name()=='cgi-fcgi' ? $HTTP_SERVER_VARS['PATH_TRANSLATED']:$HTTP_SERVER_VARS['SCRIPT_FILENAME'])));
define('PATH_typo3', dirname(dirname(dirname(dirname(dirname(PATH_thisScript))))).'/typo3/');
define('PATH_site', dirname(PATH_typo3).'/');
define('PATH_tslib', PATH_site.'tslib/');
define('PATH_t3lib', PATH_typo3.'t3lib/');
define('PATH_typo3conf', PATH_site.'typo3conf/');
define('TYPO3_MODE','BE');

require(PATH_t3lib.'class.t3lib_div.php');
require(PATH_t3lib.'class.t3lib_extmgm.php');
require(PATH_t3lib.'config_default.php');
require(PATH_typo3conf.'localconf.php');
require_once(PATH_tslib.'class.tslib_fe.php');
require_once(PATH_t3lib.'class.t3lib_userauth.php');
require_once(PATH_tslib.'class.tslib_feuserauth.php');
require_once(PATH_t3lib.'class.t3lib_tstemplate.php');
require_once(PATH_t3lib.'class.t3lib_page.php');
require_once(PATH_tslib.'class.tslib_content.php');

$typoVersion = t3lib_div::int_from_ver($GLOBALS['TYPO_VERSION']);
if($typoVersion >= 3006000) require_once(PATH_t3lib.'class.t3lib_cs.php');   // are we are with Typo3 3.6.0?

if (!defined ('TYPO3_db'))  die ('The configuration file was not included.');

if($typoVersion >= 3006000) {   // are we are with Typo3 3.6.0?
	require_once(PATH_t3lib.'class.t3lib_db.php');
	$TYPO3_DB = t3lib_div::makeInstance('t3lib_DB');
}

require_once(PATH_t3lib.'class.t3lib_timetrack.php');
$GLOBALS['TT'] = new t3lib_timeTrack;

// ***********************************
// Creating a fake $TSFE object
// ***********************************

$TSFEclassName = t3lib_div::makeInstanceClassName('tslib_fe');
$id = isset($HTTP_GET_VARS['id'])?$HTTP_GET_VARS['id']:0;
$GLOBALS['TSFE'] = new $TSFEclassName($TYPO3_CONF_VARS, $id, '0', 1, '', '','','');
$GLOBALS['TSFE']->connectToMySQL();
$GLOBALS['TSFE']->initFEuser();
$GLOBALS['TSFE']->fetch_the_id();
$GLOBALS['TSFE']->getPageAndRootline();
$GLOBALS['TSFE']->initTemplate();
$GLOBALS['TSFE']->tmpl->getFileName_backPath = PATH_site;
$GLOBALS['TSFE']->forceTemplateParsing = 1;
$GLOBALS['TSFE']->getConfigArray();

moeglicherweise sind paar zeilen ueberfluessig, aber es funktioniert ;-)

thx an alle fuer die hilfe...

Jehu ·

Hallo xtensionar,

ich stehe vor dem selben Problem und habe deine Lösung ausprobiert.
Ich erhalte allerdings die Meldung

localconf.php is not found!

Woran kann das liegen?

Grüße
Jehu