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

bnai ·

Hallo,

ich habe bereits ein "Last Changed" auf meiner Seite eingebunden, das wie der Name schon sagt, das Datum und die Uhrzeit der letzten Änderung einer Seite anzeigt. Nun muss ich noch den Benutzer wissen, der diese letzte Änderung vorgenommen hat. Wünschenswert wäre wenn man einerseits den Autor und den letzten "Modifizierer" anzeigen könnte. Weiß jemand wie das geht? Habe schon in diversen Dokus geschaut aber leider nichts gefunden.

Beste Grüße

bnai

bnai ·

Ich hab grad gesehn, das in der Tabelle "page" in der Spalte "author" bei mir in keinem Datensatz was drin steht. Finde ich etwas seltsam. Somit kann ich auch nicht den Autor anzeigen lassen. Einen Eintrag für die Person, die als letztes was verändert hat, gibt es anscheins auch nicht. Wie sieht das bei euch aus?

bnai ·

Ich habe jetzt das Feld "cruser_id" für den Autor genommen, also die User-ID. Hat jemand ein Feld entdeckt, wo der User gespeichert wird, der die letzte Änderung vorgenommen hat? Das fehlt mir jetzt noch.

Guido ·

Hallo bnai !

Hat jemand ein Feld entdeckt, wo der User gespeichert wird, der die letzte Änderung vorgenommen hat?

Diese Funktion vermisse ich leider auch und verstehe nicht, warum das bei einem so perfekten CMS wie typo3 immer noch fehlt. Ich habe diese Frage hier auch schon gestellt, aber ebensowenig eine Antwort erhalten...

Nichts desto trotz: ich habe in diversen Foren schon gelesen, dass das nur geht, indem Du per php die ID in den Usernamen übersetzt und diese Variable dann ausgibst. Leider bin ich nicht so der php-Hecht.

Ist denn niemand im Forum, der uns allen diesen Segen bescheren kann? :p :p :p

Gruß,

Guido

bnai ·

ja, also sobald du die ID des Users hast, ist der Rest nur noch PHP/MySQL-Zauber. Allerdings würde mir die ID ja schon völlig aussreichen. Leider komme ich ja nicht an die ID ran, da sie so wies aussieht nicht gespeichert wird. Finde ich auch arm. Die ID des Autors ist für mich nur eine, wenn auch sehr schwache, Ersatzbefriedigung. Ich will aber unbedingt wissen, wer als letztes an der Seite rumgebastelt hat, aber das geht nach meinem Kenntnisstand nicht mit den (bisher) zu Verfügung stehenden Daten.

bastardn ·

Hi,

hatte auch das Problem und habe dann das wunderbare Beispielscript unter #8010 gefunden. Dort ist der Author im Setup-Feld mit eingebunden. Funktiniert auch.

Gruss-M.

Guido ·

Hi M. (mit Bastard wollte ich Dich jetzt nicht anreden) #giggle#

habe den Marker eingebaut.

Problem ist aber, dass er mir nur das Änderungsdatum ausgibt. Wo nimmt er denn den Author her? Er prüft, ob ein Author vorhanden ist und wenn ja, gibt er einen link auf ihn aus. Muss ich denn meinen Namen beim Erstellen einer Seite eingeben?

Sorry, ich blick noch nicht ganz durch 8-)

Gruß,

Guido

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.