[TYPO3-german] [TYPO3-UG Oesterreich] Re: [TYPO3-UG Oesterreich] Re: [TYPO3-UG Oesterreich] Re: [TYPO3-UG Oesterreich] Re: [TYPO3-UG Oesterreich] Extensionentwicklung für Workspaces

Johannes Konert johanneskonert at gmx.de
Tue Sep 19 19:51:56 CEST 2006


Danke für die Tipps, sie haben mich zu einer Lösung gebracht.

Ich habe versucht die Hinweise in
http://typo3.org/documentation/document-library/core-documentation/doc_core_api/current/view/3/2/
im Abschnitt "Programming with workspaces in mind" zu befolgen und bin 
zu dem Folgenden gekommen:
- Es reicht anscheined nicht mehr einfach die enableFields zu benutzen 
und ggf hinterher jetzt noch ein versionOL drüberzujagen.

Ich habe mit meiner Extension nur dann korrekte Previews und 
FE-Ansichten hinbekommen, wenn ich
- zuerst ohne enableFields alle Datensätze auslese
- dann in einer while-Schleife für jeden Datensatz ein versionOL mache
- Hat der resultierende Datensatz nicht t3ver_state=1 und nicht pid = 
-1, dann wird nochmal nur dieser eine Datensatz (via uid) aus der 
Datenbank abgefragt, diesmal mit enableFields. Ist er dann noch gültig, 
wird er angezeigt.

Damit geht jetzt:
- Vorschau von leeren Live-Seiten (nur mit PLACEHOLDER-Einträgen) mit 
echten Datensätzen nur im Entwurfs-Workspace
- Preview im Workspace mit Berücksichtigung der enableFields,
- korrekter Preview auch wenn im LIVE-Workspace gelöscht ist, aber im 
Entwurfs-Workspace vorhanden
- korrekter Preview auch wenn im LIVE-Workspace enableFields den Eintrag 
rausfiltern, im Entwurfs-Workspace jedoch nicht.

Muss ich tatsächlich so umständlich mitdenken beim Datensätze aus der DB 
holen oder gibt es vielleicht doch noch nen einfacheren Weg in der API, 
den ich übersehen habe?

Hier nochmal das Code-Konstrukt vereinfacht:
(Die Funktion sucht nur den "obersten" Datensatz raus)

     function fetchFromDB() {
	$query = $GLOBALS['TYPO3_DB']->SELECTquery(					 
$table.'.*',									$table,										$whereClause,'','sorting'); // no 
enableFields! and no limit!
	$res = $GLOBALS['TYPO3_DB']->sql(TYPO3_db, $query);			
	while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))      {
		$GLOBALS['TSFE']->sys_page->versionOL($table,&$row);
         	if (is_array($row) && $row['t3ver_state']!=1 && $row['pid'] != 
-1) {
         		// check if it is stil there with enableFields
         		$query = $GLOBALS['TYPO3_DB']->SELECTquery(					 
$table.'.uid',									$table,										$table.'.uid='.$row['uid'].' 
'.$GLOBALS['TSFE']->cObj->enableFields($table),'','sorting');
			$restmp = $GLOBALS['TYPO3_DB']->sql(TYPO3_db, $query);
			if ($GLOBALS['TYPO3_DB']->sql_num_rows($restmp) > 0) break;
         	} // end if
		} // end while
		
     	return $row;
     } // end function



More information about the TYPO3-german mailing list