Folgendes Problem:
Im geschlossenen Bereich soll ein FE_User sehen, was seit seinem letzten Besuch neu ist. Das sowohl im Menü, als auch bei den einzelnen Einträgen.
Geht das?
Die Tabelle fe_users hat ja das lastlogin und zu jedem tt_content und page existiert ein tstamp.
Da müsste doch was zu machen sein. Ich habe leider noch keine konkrete Idee.
Fürs Menü muss doch so was wie folgt gehen:
30 = TEXT
30.value = NEU!
30.offset = 10,10
30.if {
value.data = date: U
isLessThan.field = newUntil
negate = 1
}
Statt dem "date: U" und dem "newUntil" müssen doch dann irgendwie die Datenbankeinträge ersetzt werden.
Hab selbst am Wochenende noch mal drüber gebrütet. Bin zwar schon weiter gekommen habe aber noch ein paar Probleme.
Zuerst habe ich das Plugin loginusertrack installiert und in der Datei class.ux_tslib_fe.php die Funktion addNewEntry aufgebohrt:
function ext_addNewEntry() {
// insert last logintime in fe_users.tx_prevlogin
$query = "SELECT * FROM tx_loginusertrack_stat WHERE fe_user=".intval($this->fe_user->user["uid"])." ORDER BY session_login DESC LIMIT 1";
$res = mysql(TYPO3_db,$query);
$row=mysql_fetch_assoc($res);
if (is_array($row)) {
$query = "UPDATE fe_users SET tx_prevlogin=".intval($row["session_login"])." WHERE uid=".intval($row["fe_user"]);
$res = mysql(TYPO3_db,$query);
}
// create new entry in tx_loginusertrack_stat
$query="INSERT INTO tx_loginusertrack_stat (fe_user,session_login,last_page_hit,session_hit_counter,page_id)
VALUES (".intval($this->fe_user->user["uid"]).",".time().",".time().",1,".intval($this->id).")";
$res=mysql(TYPO3_db,$query);
echo mysql_error();
}
...
Jetzt wird in das neue Feld tx_prevlogin in fe_users der "letzte Login vor diesem Login" geschrieben.
So weit, so gut.
Jetzt habe ich versucht mit folgendem Script zu erkennen, ob ein Eintrag Neu ist, d.h. seit dem letzem Besuch erstellt/geändert wurde:
10.marks.CONTENT {
table = tt_content
select.orderBy = sorting
select.where = colPos = 0
renderObj = COA
renderObj {
10 = TEXT
10 {
wrap =<table width=100%><tr><td><b>| <img src="fileadmin/template/images/alarm.gif" alt="Neu"></b></td>
field = header
if{
value.data = TSFE:fe_user|user|tx_prevlogin
isLessThan.field = tstamp
negate = 1
}
}
Funktioniert auch prima... fast.
Beim nächsten Login, wird weiterhin der "alte" Login vom letzten Login benutzt. Hier scheint mir das cachen der templates ein Bein zu stellen.
Wenn ich den fe_cache lösche oder das template veränder erhalte ich den "aktuellen" letzten Login.
Wie kann ich das noch umgehen?
Hat jemand eine Idee?
renderObj = COA_INT
sonst ein COA_INT und dort drin dein cObj CONTENT
COA_INT hat funktioniert, Danke!