Markierung der Beiträge als gelesen/ungelesen (uneingeloggt) (Technics)

by Taurec, Tuesday, February 28, 2017, 08:59 (54 days ago)

Hallo!

Mehrere Mitleser haben mich inzwischen wegen des Formatierungsverhaltens gelesener/ungelesener Beiträge kontaktiert.

Im Threadbaum auf der Hauptseite sind alle Beiträge alle als gelesen markiert.

Im Sidebarfenster "latest Postings" sind alle Beiträge alle als ungelesen markiert.

Im Threadbaum unterhalb eines aufgerufenen Beitrages sind alle Beiträge des Stranges stets als ungelesen markiert.

Es betrifft sowohl die Threadansicht des Forums als auch die Tabellenansicht.

Die Formatierung bleibt, unabhängig davon, welche Beiträge man gelesen bzw. nicht gelesen hat.

Lediglich nagelneue Beiträge sind auf der Hauptseite "für einige Zeit" als ungelesen markiert, wobei sich mir nicht erschließt, wann sie in den "Gelesenstatus" überwechseln, da sie auch nach dem Aufrufen und Zurückwechseln zur Hauptseite als ungelesen dargestellt werden.
Erst nach dem Löschen der Browserchronik erscheinen alle Beiträge (auch die nagelneuen) als gelesen - widersinnigerweise, denn eigentlich sollten nach dem Löschen des Browserverlaufs alle Beiträge als ungelesen erscheinen.

Sobald man als Benutzer eingeloggt ist, ist aber alles normal. Hier merkt sich das Forum, welche Beiträge ein Nutzer bereits gelesen hat, wohl weil dies in der Tabelle "read_entries" vermerkt wird.

Zur Überprüfung, ob ich dieses Verhalten nicht versehentlich selbst verursacht habe, habe ich eine jungfräuliche Version der 2.4.1 als Testforum mit eigener Datenbank installiert. Dort ist es das selbe. Gleichwohl funktioniert es hier im Forum.

Es wäre nicht schlecht, wenn das Forum das Verhalten an den Tag legen würde, das auch einfache HTML-Seiten haben, die Links zu bereits aufgerufenen (im Browserverlauf vorhandenen) Seiten als besucht darstellen und vice versa.

Gruß
Taurec

Avatar

Markierung der Beiträge als gelesen/ungelesen (uneingeloggt)

by Auge ⌂ @, Tuesday, February 28, 2017, 14:38 (54 days ago) @ Taurec

Hallo

Endlich kommt mal jemand mit einer auswertbaren Fehlermeldung um die Ecke. :-)

Im Threadbaum auf der Hauptseite sind alle Beiträge alle als gelesen markiert.

Im Sidebarfenster "latest Postings" sind alle Beiträge alle als ungelesen markiert.

Im Threadbaum unterhalb eines aufgerufenen Beitrages sind alle Beiträge des Stranges stets als ungelesen markiert.

Es betrifft sowohl die Threadansicht des Forums als auch die Tabellenansicht.

Die Formatierung bleibt, unabhängig davon, welche Beiträge man gelesen bzw. nicht gelesen hat.

Lediglich nagelneue Beiträge sind auf der Hauptseite "für einige Zeit" als ungelesen markiert, wobei sich mir nicht erschließt, wann sie in den "Gelesenstatus" überwechseln, da sie auch nach dem Aufrufen und Zurückwechseln zur Hauptseite als ungelesen dargestellt werden.

Habe ich richtig verstanden, dass das alles nur dann passiert, wenn ein nicht eingeloggter Benutzer dein Forum benutzt?

Erst nach dem Löschen der Browserchronik erscheinen alle Beiträge (auch die nagelneuen) als gelesen - widersinnigerweise, denn eigentlich sollten nach dem Löschen des Browserverlaufs alle Beiträge als ungelesen erscheinen.

Das ist in der Tat widersinnig.

Sobald man als Benutzer eingeloggt ist, ist aber alles normal. Hier merkt sich das Forum, welche Beiträge ein Nutzer bereits gelesen hat, wohl weil dies in der Tabelle "read_entries" vermerkt wird.

Das funktioniert also, wie es soll.

Ich habe bei den Änderungen an dieser Funktion versucht, das alte Verhalten für nicht eingeloggte Besucher zu konservieren und für eingeloggte Besucher alternativ das neue Verhalten zu erzwingen. Offensichtlich sind mir bei der Konservierung des alten Verhaltens ein oder mehrere Fehler unterlaufen.

Zur Überprüfung, ob ich dieses Verhalten nicht versehentlich selbst verursacht habe, habe ich eine jungfräuliche Version der 2.4.1 als Testforum mit eigener Datenbank installiert. Dort ist es das selbe.

Danke für den Hinweis.

Gleichwohl funktioniert es hier im Forum.

Das liegt daran, dass Alex das hiesige Forum noch nicht von 2.3 auf 2.4 umgestellt hat.

Es wäre nicht schlecht, wenn das Forum das Verhalten an den Tag legen würde, das auch einfache HTML-Seiten haben, die Links zu bereits aufgerufenen (im Browserverlauf vorhandenen) Seiten als besucht darstellen und vice versa.

Ich versuche gerade zu formulieren, was da passieren könnte. Es gelingt mir nicht.

Zweck der Funktion der Gelesen-Markierung soll es sein, dem Benutzer anzuzeigen, welche Beiträge er bereits gelesen hat. Mit der serverseitigen Speicherung der notwendigen Daten funktioniert das browserübergreifend. Das alte Verhalten war, dazu eine Liste von gelesenen Beiträgen bei den Benutzerdaten zu speichern. Das ist jetzt mit der eigenen Tabelle anders gelöst. Beide Lösungen funktionier(t)en immer nur für eingeloggte Benutzer.

Die "Neu"-Markierung wurde und wird mit Hilfe des als Cookie gespeicherten Zeitstempels des letzten Besuchs für die nach diesem Zeitpunkt erstellten Postings mit einer Einschränkung gesetzt. Diese lautet: Ein Beitrag, der für einen eingeloggten Benutzer als gelesen vermerkt ist, kann nicht neu sein. Beide Markierungen schließen sich also gegenseitig aus.

Für nicht eingeloggte/nicht registrierte Benutzer, die Cookies akzeptieren, sind die nach ihrem letzten Besuch erstellten Beiträge als "neu" gekennzeichnet. Die "Neu"-Markierung für eingeloggte Benutzer wird im Gegensatz dazu anhand der Gelesene-Postings-Liste gesetzt.

Davon unabhängig sollte die Markierung gelesener Beiträge (also aufgerufener Links) für nicht eingeloggte/nicht registrierte Benutzer aber ausschließlich von Browser vorgenommen werden. Ganz, wie es seit Jahr und Tag funktioniert. Die anderen Funktionen sollten dem nicht in die Quere kommen.

Ich schaue mir den betreffenden Code noch einmal an. Ich fände es gut, wenn dazu weitere Berichte anderer Forenbetreiber eingingen, die schon die Version 2.4 einsetzen.

@Milo: Du hast auch schon unmgestellt. Können unregistrierte Besucher in deinem Forum posten? Gibt es eventuell schon entsprechende Meldungen an dich?

Tschö, Auge

--
further development of mlf1

Testforum

by Taurec, Tuesday, February 28, 2017, 15:40 (54 days ago) @ Auge

Hallo!

Habe ich richtig verstanden, dass das alles nur dann passiert, wenn ein nicht eingeloggter Benutzer dein Forum benutzt?

Ja. Bei eingeloggten Usern nimmt das Forum die Einträge aus der Tabelle mlf2_read_entries.

Zur Veranschaulichung hier mein Testforum:
[image]
(Als Bild, da der Spamschutz hier den Link nicht zuläßt.)

Ich habe dort lediglich die Farbe gelesener Links in Dunkelrot geändert, wegen der schlechten Unterscheidbarkeit des Standardblautons (Zeile 371 in der style.min.css).

Als Gast beim ersten Besuch sollten alle Links als "gelesen" dargestellt werden.
Sobald man sich mit dem Testaccount einloggt, sollten nur die Beiträge als gelesen markiert sein, die ich während der letzten Sitzung tatsächlich angeklicht habe (die oberen vier).

Gruß
Taurec

Avatar

Testforum

by Auge ⌂ @, Tuesday, February 28, 2017, 16:00 (54 days ago) @ Taurec

Hallo

Danke für das Aufsetzen des Testforums. Nach einem Blick in den Quelltext ist klar, dass mir als nicht registriertem Besucher des Testforums die Threads in der Übersicht als gelesen (Klasse "read") ausgegeben werden. Das sollte aber nur für registrierte Besucher gelten.

Da muss ich also noch mal ran. Ich vermute (ohne jetzt Zugriff auf den PHP-Quelltext zu haben) mal, dass die Klasse "read" auch bei nicht eingeloggten Benutzern gesetzt wird, sobald ein Posting nicht als neu identifiziert wird. Das ist, auch wenn es kein Showstopper ist, kaputt.

Tschö, Auge

PS: kannst du das Forum bitte vorläufig online lassen? Ich würde dir gern zu Testzwecken und unser aller Vergewisserung eine gefixte Version zukommen lassen.

--
further development of mlf1

Tags:
2.4, bug

Testforum

by Taurec, Tuesday, February 28, 2017, 22:25 (54 days ago) @ Auge

Hallo!

PS: kannst du das Forum bitte vorläufig online lassen? Ich würde dir gern zu Testzwecken und unser aller Vergewisserung eine gefixte Version zukommen lassen.

Kein Problem!
Den Fix kannst Du an taurec@mail.de schicken.

Gruß
Taurec

Testforum - Bericht

by Taurec, Sunday, March 05, 2017, 22:10 (49 days ago) @ Taurec

Danke für die Zusendung der geupdateten Dateien!

Ich habe sie ins Testforum eingebunden:
[image]

Formatierung bei Gästen/nicht eingeloggt:

Thread-Ansicht:
Ungelesene Beiträge sind jetzt standardmäßig als "thread" (Eingangsbeitrag, blau & fett) bzw. "reply" (Antworten, blau & normal) formatiert. => Paßt.

Besuchte/gelesene Beiträge haben ebenfalls die Klassen "thread"/"reply", sind aber in einem etwas dunkleren Blau formatiert. Richtig wäre wie bei eingeloggten Usern "tread read" bzw. "reply read" (in meinem CSS in Weinrot).

Beiträge, die ich als Gast besucht habe, sind auch als angemeldeter User in besagtem dunkleren Blau formatiert, wenn es sich um von diesem Benutzer nicht gelesen Beiträge handelt, so daß es nun quasi zwei sich überlagernde "Besucht-Formatierungen" gibt: die auf die Tabelle mlf2_read_entries bezogene und die durch die beiden geupdateten Dateien für Gäste herbeigeführte.
Das selbe gilt umgekehrt: Beiträge, die ich als eingelogger User erstmalig angeklickt habe und die dann Weinrot (Klasse "read") sind, sind nach dem Ausloggen in dunklerem Blau formatiert.
Wenn die Formatierung/Klassenzuteilung vereinheitlicht werden würde (bei Usern und Gästen "read"), würde es meines Erachtens eigentlich passen. Dann würden (sofern man denselben PC/Browser nutzt) unabhängig davon, ob man den Beitrag eingeloggt oder als Gast gelesen hat der Beitragslink, als "gelesen" dargestellt werden.

Die Icons für neue/ungelesene Beiträge zeigen sich übrigens unbeeindruckt. Auch nach dem Anklicken bleibt der rote Pfeil (bei Antworten) bzw. das rot umrandete Briefsymbol (Startbeiträge) bestehen.
Als eingeloggter User wechseln die Icons in die Standardversion, nachdem ich diese neuen Beiträge angeklickt habe, so daß es keine Beiträge gibt, die zugleich die Klasse "read" und das Icon eines neuen Beitrags haben. => So sollte es sein.

Tabellenansicht:
Als eingeloggter User entspricht die Darstellung in den Threads der Gelesen-/Ungelesen-Formatierung in Weinrot (class "read") und Ungelesen-Blau der Forumshauptseite. => So sollte es sein.
Als nicht eingeloggter User ist es chaotisch. In den geöffneten Threads erscheinen offenbar alle Beiträge als gelesen (hellblauer Balken links), während nur in der bestehenden Sitzung neu geschriebene Beiträge als "neu" erscheinen (dunkelblauer Balken) und das auch für einige Zeit bleiben.

Gruß
Taurec

Avatar

Testforum - Bericht

by Auge ⌂ @, Monday, March 06, 2017, 08:52 (48 days ago) @ Taurec

Hallo

Ich habe [die geänderten Dateien] ins Testforum eingebunden:
[image]

Danke dafür.

Formatierung bei Gästen/nicht eingeloggt:

Thread-Ansicht:
Ungelesene Beiträge sind jetzt standardmäßig als "thread" (Eingangsbeitrag, blau & fett) bzw. "reply" (Antworten, blau & normal) formatiert. => Paßt.

Besuchte/gelesene Beiträge haben ebenfalls die Klassen "thread"/"reply", sind aber in einem etwas dunkleren Blau formatiert. Richtig wäre wie bei eingeloggten Usern "tread read" bzw. "reply read" (in meinem CSS in Weinrot).

Nein. Für angemeldete/eingeloggte Benutzer wird der Gelesen-Status ausgewertet und, wenn es passt, die Klasse .read gesetzt. Nicht registrierten/eingeloggten Benutzern steht nur das über das Browserstylesheet verfügbare :visited zur Verfügung. Die Klasse für nicht registrierte Benutzer zu setzen, hat ja erst das gegenwärtige Problem erzeugt.

Wenn du den Text des Links zu einem gelesenen Posting auch für nicht registrierte/eingeloggte Benutzer rot und fett haben willst, regele das bitte über das Stylesheet.

Beiträge, die ich als Gast besucht habe, sind auch als angemeldeter User in besagtem dunkleren Blau formatiert, wenn es sich um von diesem Benutzer nicht gelesen Beiträge handelt, so daß es nun quasi zwei sich überlagernde "Besucht-Formatierungen" gibt: die auf die Tabelle mlf2_read_entries bezogene und die durch die beiden geupdateten Dateien für Gäste herbeigeführte.

Das muss ich mir noch einmal anschauen.

Das selbe gilt umgekehrt: Beiträge, die ich als eingelogger User erstmalig angeklickt habe und die dann Weinrot (Klasse "read") sind, sind nach dem Ausloggen in dunklerem Blau formatiert.

Egal, ob eingeloggt oder nicht, ein gelesenes Posting ist gelesen. Ist der Benutzer eingeloggt, wird die Klasse .read gesetzt und die betreffenden Regeln benutzt. Loggt er sich aus, werden die Regeln für :visited angewendet. Das passt schon.

Wenn die Formatierung/Klassenzuteilung vereinheitlicht werden würde (bei Usern und Gästen "read"), würde es meines Erachtens eigentlich passen. Dann würden (sofern man denselben PC/Browser nutzt) unabhängig davon, ob man den Beitrag eingeloggt oder als Gast gelesen hat der Beitragslink, als "gelesen" dargestellt werden.

Wie gesagt, die Browser nicht eingeloggter Benutzer wenden :visited an. Wenn du als Forumsbetreiber die CSS-Regeln für .read änderst, passe auch die für [Links zu einem Posting]:visited an, wenn du sie gleich formatiert haben willst. Ohne deine Änderungen sind sie nämlich gleich formatiert.

Die Icons für neue/ungelesene Beiträge zeigen sich übrigens unbeeindruckt. Auch nach dem Anklicken bleibt der rote Pfeil (bei Antworten) bzw. das rot umrandete Briefsymbol (Startbeiträge) bestehen.

Das war bisher immer so. Erst, wenn das Cookie mit dem Zeitstempel des letzten Besuchs geändert wird, fiel die Neu-Markierung weg. Für nicht eingeloggte Benutzer gilt dieses Verhalten weiterhin, für eingeloggte Benutzer ist die Neu-Markierung die Alternative zu .read. Ganz so, wie du es im Folgenden beschreibst.

Als eingeloggter User wechseln die Icons in die Standardversion, nachdem ich diese neuen Beiträge angeklickt habe, so daß es keine Beiträge gibt, die zugleich die Klasse "read" und das Icon eines neuen Beitrags haben. => So sollte es sein.

Tabellenansicht:
Als eingeloggter User entspricht die Darstellung in den Threads der Gelesen-/Ungelesen-Formatierung in Weinrot (class "read") und Ungelesen-Blau der Forumshauptseite. => So sollte es sein.

Die Markierung für eingeloggte Benutzer funktioniert.

Als nicht eingeloggter User ist es chaotisch. In den geöffneten Threads erscheinen offenbar alle Beiträge als gelesen (hellblauer Balken links), während nur in der bestehenden Sitzung neu geschriebene Beiträge als "neu" erscheinen (dunkelblauer Balken) und das auch für einige Zeit bleiben.

Das muss ich mir noch einmal anschauen. Dass die neu markierten Postings für nicht angemeldete Benutzer markiert bleiben, ist dem oben beschriebenen Verhalten bezüglich des Cookies mit dem Zeitstempel des letzten Besuchs geschuldet. Das ist keine Änderung zum bisherigen Verhalten.

Tschö, Auge

--
further development of mlf1

Testforum - Bericht

by Taurec, Monday, March 06, 2017, 11:47 (48 days ago) @ Auge

Hallo!

Nein. Für angemeldete/eingeloggte Benutzer wird der Gelesen-Status ausgewertet und, wenn es passt, die Klasse .read gesetzt. Nicht registrierten/eingeloggten Benutzern steht nur das über das Browserstylesheet verfügbare :visited zur Verfügung. Die Klasse für nicht registrierte Benutzer zu setzen, hat ja erst das gegenwärtige Problem erzeugt.

Danke für den Hinweis. Ich habe die entsprechenden Stellen im CSS geändert und jetzt paßt es.

Gruß
Taurec

Avatar

Testforum - Bericht

by Auge ⌂ @, Monday, March 06, 2017, 13:13 (48 days ago) @ Taurec

Hallo

Nein. Für angemeldete/eingeloggte Benutzer wird der Gelesen-Status ausgewertet und, wenn es passt, die Klasse .read gesetzt. Nicht registrierten/eingeloggten Benutzern steht nur das über das Browserstylesheet verfügbare :visited zur Verfügung. Die Klasse für nicht registrierte Benutzer zu setzen, hat ja erst das gegenwärtige Problem erzeugt.


Danke für den Hinweis. Ich habe die entsprechenden Stellen im CSS geändert und jetzt paßt es.

Schön. :-)

Die Markierungen im Threadbaum der Postings in der Nested- und der linearen Ansicht schaue ich mir noch an. Wenn ich mich recht erinnere, habe ich diese Baustelle auch noch garnicht in Gänze angefasst.

Tschö, Auge

--
further development of mlf1

RSS Feed of thread
powered by my little forum