Zum Inhalt springen

Autor einer Seite

Erstellt am 12. Januar 2004 · 28 Antworten · letzte Antwort am 24. Februar 2004 · Seite 1 von 2

Tags: Frage

bastardn ·

Hi,

man muss noch bei jeden Backend-User einzeln im Profil unter TSConfig

# Trägt bei der Erstellung neuer Seiten den Namen in das Autor-Feld ein 
TCAdefaults.pages.author=JSchaeferKunz

eintragen.
Natürlich statt ...Kunz den namen des jeweiligen User.
Ist zwar nicht wirklich CMS-Typisch dynamisch, aber besser als garnischt.
Der Namen ändert sich leider auch nur, nach erster Erstellung der Seite.
Als falls jemand was besseres weiß, würde mich auch interessieren.

CU-M.

bastardn ·
[url]http://www.typo3.net/viewtopic.php?t=8212[/url]

Habe ich auch probiert, geht aber nicht so richtig. Muss man nochwas anpassen. Habe das PHP-Script unter fileasmin unter test_library.php abgepeichert. Wo kommt den der zweite Code hin, habe ihn unter constants und den dritten ins Setup. Und natürlich auch den Marer ins HTML-Template reingetan.

Ich habe einfach den Owner (Unter Modul Zugriff) als Besitzer der Seite dargestellt

.
Heißt das, das auch nur der erste Ersteller angezeigt wird, aber nicht, wer zuletzt geändert?

Gruß - M.

cwiechmann ·

Hallo,

beide Codes kommen ins Setup, nichts davon in die Konstanten.

Der gezeigte PHP-Code muss noch ein wenig erweitert werden:

<?php

class user_library_class { 

	function pageOwner($content,$conf) { 
		global $TSFE; 
	
		//$TSFE->set_no_cache(); 
	
		$this->sql = "SELECT realName, email FROM be_users AS u,pages AS p WHERE u.uid=p.perms_userid AND p.uid=".$GLOBALS["TSFE"]->id; 
		$res=mysql(TYPO3_db, $this->sql); 
		echo mysql_error(); 
		if (mysql_num_rows($res)>0) { 
			$row=mysql_fetch_assoc($res); 
			if ($row["email"]!=null) { 
				$GLOBALS["TSFE"]->usrPageOwner="<a href='mailto:".$row["email"]."'><font size="1">".$row["realName"]."</font></a>"; 
			} else { 
				$GLOBALS["TSFE"]->usrPageOwner=$row["realName"]; 
			} 
		} else { 
			$GLOBALS["TSFE"]->usrPageOwner="Unbekannt"; 
		} 
		return "<!-- Scriptaufruf: fileadmin/test_library.php -->
<!-- Setzen von TSFE->usrPageOwner -->"; 
	}
	
}
?>

Ja, es wird nur der intiale Ersteller angezeigt, aber es dürfte nicht weiter schwer sein, das SQL-Statement anzupassen und zusätzlich noch den letzten Bearbeiter zu ermitteln. (Denke ich jedenfalls, ich hatte die Anforderung (noch)nicht)

Gruss,
Chris

bastardn ·

Hi,

geht irgendwie immer noch nicht, wird nischt angezeigt. Habe Dein PHP-Script erstellt und ins Setup

# externes PHP Skript inkludieren
includeLibs.test_library = fileadmin/test_library.php
page.1 = USER
page.1.userFunc = user_test_library_class->pageOwner
# page Owner: emaillink des Seitenverantwortlichen
marks.PAGE_OWNER = TEXT
marks.PAGE_OWNER.data= TSFE : usrPageOwner

geschrieben. habe leider kein Plan von PHP.

Ciao -M.

bnai ·

was muss denn eigendlich für TYPO3_db eingesetzt werden? Einfach der Name der Datenbank? Kann ich mir ja gar nicht vorstellen... Oder ist TYPO3_db eine Variable? Sieht ja nicht so aus, ist ja kein '$' davor und ein String ist es auch nicht...

$res=mysql(TYPO3_db, $this->sql);

bnai ·

also die konstante ist ein string der den namen der Typo3 DB beinhaltet!?

Ich habe noch ein weiteres problem. Ich habe das gefühl, das mein skript gar nicht aufgerufen wird. Habe in der funktion alles auskommentiert und eine kleine ausgabe in eine datei implementiert. Rufe ich die Seite auf, sollte also ne datei geschrieben werden. wird aber nicht.

includeLibs.test = fileadmin/media/scripts/test.php
page.9 = USER
page.9.userFunc = something->pageOwner

das sollte ja die funktion aufrufen. Die fett markierten stellen irritieren mich noch etwas, im prinzip kann ich da ja hinschreiben, was ich will, oder?

cwiechmann ·

Hallo,

also die konstante ist ein string der den namen der Typo3 DB beinhaltet!?

Naja, so etwas ähnliches hatte ich mir gedacht.

test:
Ich habe es ausprobiert und es ist Typo3 wie es scheint einfach mal egal was da steht. Die Hauptsache ist es steht überhaupt irgend etwas dort, sonst wird die PHP-Datei nicht geladen. Es geht also auch:

includeLibs.0815 = fileadmin/media/scripts/test.php

Ich bin auch der Ansicht: Es hat auch nichts mit dem späteren Methoden-Aufruf zu tun.

something:
Dieser Parameter ist nicht egal.
Es muss im Normalfall immer user_ davor stehen. Dies ist als Installationsparameter angegeben:

[FE][userFuncClassPrefix] = user_

Und sollte dann Klassennamen in der PHP-Datei entsprechen (Beispiel: user_library_class).
Ich kann mir nicht ganz erklären warum das so:

page.1.userFunc = user_test_library_class->pageOwner

vorher mit der Erweiterung test funktioniert hat, da ich es jetzt nicht mehr so zur Anzeige bringe und es definitiv auch keinen Sinn macht!!!???? Hmm? Schon komisch, aber genau so hatte ich es im Template stehen.

Vollständig sollte das Ganze dann so aussehen:

page.includeLibs.page_owner = fileadmin/template/main/PHP/user_libary.php 
page.1 = USER
page.1.userFunc = user_library_class->pageOwner
# Hier weiterer Template-Code
marks.PAGE_OWNER = TEXT 
marks.PAGE_OWNER.data= TSFE : usrPageOwner

Dieser Code funktioniert bei mir mit dem passendem oben abgebildetem PHP-Code.

Ich hoffe das hilft Dir weiter und Du bekommst es ans laufen.

Gruss,
Chris

Guido ·

Hi Chris,

der Thread ist ja jetzt doch etwas länger geworden. Um die Fäden nochmal zusammenzuführen und für mich zum Verständnis:

Ist die von Dir beschriebene Variante jetzt eine, die auch den Benutzer einblendet, der die letzte Änderung vorgenommen hat oder wird nur der initiale Ersteller angezeigt?

Zudem die Frage:

Würde es funktionieren, diese Geschichte auf einzelne Inhaltselemente herunterzubrechen? Betreibt man Typo3 als Intranet-CMS, ist es wünschenswert, auf manchen Seiten für jedes Inhaltselement verschiedene Redakteure einzusetzen. Somit gibt es keinen Verantwortlichen für die komplette Seite. Ich habe aber in der Datenbank kein Feld für den Ersteller eines Inhaltselementes in den jeweiligen Tabellen gefunden, also wird es wohl eher nicht gehen, oder?

Gruß,

Guido

cwiechmann ·

Hallo Guido,

man sieht den aktuellen Besitzer der Seite (also der jenige unter dem Modul: Zugriff). Nicht den mit der letzten Änderung.

Für jedes Content-Element scheint das mit dem Standard-Datenbank Layout nicht zu gehen, da tatsächlich in tt_content nichts dergleichen eingetragen wird.

Vieleicht kannst Du das ja erweitern. :-)

Gruss,
Chris

bnai ·

also danke erst mal für deine hilfe, das php skript wird jetzt aufgerufen, aber leider bekomme ich einige php-fehler und ich weiß nicht woran es liegt. hast du noch iergendwelche klassenvariablen angelegt, oder erbst du von einer anderen klasse?

kannst du deine klasse mal posten?

bnai ·

oh, hab nich gesehn, das du sie ja schon komplett gepostet hattest... ist das wirklich alles? Komisch, normalerweise müsste das ja dann auch bei mir funktionieren.

bnai ·

also ich hab jetzt genau die klasse genommen die du gepostet hast. Folgende Fehler werden angezeigt:

Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /var/www/cms/fileadmin/template/user_last_modifier.php on line 5
 
 Warning: session_register(): Cannot send session cookie - headers already sent by (output started at /var/www/cms/fileadmin/template/user_last_modifier.php:5) in /var/www/cms/typo3conf/ext/de_phpot/res1/phpot/class.tx_dephpot_phpopentracker_container.php on line 54
 
 Warning: session_register(): Cannot send session cache limiter - headers already sent (output started at /var/www/cms/fileadmin/template/user_last_modifier.php:5) in /var/www/cms/typo3conf/ext/de_phpot/res1/phpot/class.tx_dephpot_phpopentracker_container.php on line 54

Ich weiß nich, worans liegt

cwiechmann ·

Hallo,

also ich habe nichts weiter in meiner Klassedefinition und soweit ich mich erinnere habe ich auch nichts weiter geändert.

Poste nochmal Deinen aktuell verwendeten TS-Code.

Es scheint mir auch fast so, dass vieleicht nicht alle geschweiften Klammern in der PHP-Datei geschlossen werden.
Die Meldung:

Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}''

klingt danach.

bnai ·

mein bisher relevanter TS-Code:

includeLibs.lastuser = fileadmin/template/user_last_modifier.php 
page.1 = USER
page.1.userFunc = user_last_modifier->pageOwner

ich habe genau die klasse verwendet, die du in diesem thread gepostet hast und da ist ja alles richtig geklammert...

cwiechmann ·

Also ich kann mir das nicht erklären. Ich habe sogar nochmal meine Klasse mit dem geposteten überschrieben und trotzdem funktioniert es.

Das ist mein TS-Code:

page.includeLibs.user_libs = fileadmin/template/main/PHP/user_libary.php 
page.1 = USER
page.1.userFunc = user_library_class->pageOwner 
....
.......
....
marks.PAGE_OWNER = TEXT 
marks.PAGE_OWNER.data= TSFE : usrPageOwner

Wo füllst Du die Daten in Deine Seite ein? Auch über ein Template-Marker???

Gruss,
Chris

bnai ·

ja, über einen marker (AUTHOR):

# Author-ID
includeLibs.lastuser = fileadmin/template/user_last_modifier.php 
page.1 = USER
page.1.userFunc = user_last_modifier->pageOwner 

page.10.subparts.AUTHOR = TEXT 
page.10.subparts.AUTHOR {
data = TSFE : usrPageOwner 
if.isTrue.data = TSFE : usrPageOwner 
wrap = &nbsp;&nbsp;<font size=-3>Author-ID: &nbsp;| </font></div>
if >
}
bnai ·

vielleicht liegt es an einer unterschiedlichen konfiguration der php.ini!? ich habe das gefühl, das es was mit den globalen variablen zu tu hat. iergendwas ist da faul.

cwiechmann ·

Ich weiss leider nicht woran es jetzt noch liegen könnte.

Vieleicht liegt an irgendwelchen im Template definierten Dingen. Darum würde ich mal eben eine ganz simple Seite ins Leben rufen die nur diesen Autor befüllt. Vieleicht klappt es ja dann.