mirror of
https://github.com/Andre-Bzk/rin-mobile-userscript.git
synced 2026-11-15 09:33:08 +01:00
fix: recognise forum rows in the list view
A viewforum page is not always a list of topics — a category page lists forums, and a forum page can carry both. Every row was treated as a topic, so on those pages the only link the row offered was the icon in its last-post column: the forum name was dropped, its description ended up in the muted footer line, and nothing was left to tap. Moving between forums on a phone was impossible. Rows are now classified by their first usable link, which relies on document order: a forum row names the forum before it links the last post. Detection prefers phpBB's own classes and falls back to the shape of the row, because the board runs a custom theme whose markup could not be verified — the page requires a login. That fallback needs a brake. The page scaffolding is itself a table, so a link outside any list row resolves to a row containing the whole document, which passed for a forum row and turned the page header, a stylesheet and inline scripts into a forum description. Rows carrying nested tables, forms or scripts are therefore rejected, and descriptions are read only from the title cell's own text.
This commit is contained in:
@@ -56,6 +56,28 @@ Die Funktion markiert *alle* vorhandenen `body`-Kinder mit `.rm-hidden`. Das
|
||||
Sheet wird deshalb erst beim ersten Antippen gebaut — das loest das Problem
|
||||
nebenbei mit.
|
||||
|
||||
**In der Liste entscheidet die Dokumentreihenfolge ueber den Zeilentyp.**
|
||||
`buildList()` sammelt Links auf `viewforum.php` und `viewtopic.php` in einem
|
||||
Rutsch ein und ordnet jede `tr` nach ihrem ersten verwertbaren Link zu. Eine
|
||||
Forenzeile verlinkt in der Spalte „letzter Beitrag" ebenfalls `viewtopic.php` —
|
||||
zaehlte man Themenlinks zuerst, faellt die Zeile als Thema an, der Forenname
|
||||
verschwindet und nur die Beschreibung bleibt als `.rm-last` uebrig. Genau so
|
||||
war es vor 3.2. Brotkrumen und „Mark forums read" verlinken ebenfalls Foren,
|
||||
stehen aber in Zeilen ohne Forenmerkmale und werden verworfen.
|
||||
|
||||
**Das Seitengeruest ist selbst eine Tabelle.** `closest('tr')` liefert fuer
|
||||
einen Link ausserhalb einer Listenzeile die Layoutzeile, die die ganze Seite
|
||||
enthaelt. Ohne Bremse wurde daraus eine Karte mit dem kompletten Seitentext —
|
||||
Kopfzeile, Stylesheet und Inline-Scripts inklusive — als Forenbeschreibung.
|
||||
Zeilen mit `table`, `script`, `style` oder `form` darin sind deshalb keine
|
||||
Kandidaten, und die Beschreibung wird nur aus den direkten Textknoten der
|
||||
Titelzelle gebildet, nie aus deren gesamtem Text.
|
||||
|
||||
**Das Theme ist `rinDark`, nicht subsilver2.** Die Klassennamen aus der
|
||||
phpBB-Dokumentation (`forumlink`, `forumdesc`) sind fuer die Forenliste
|
||||
deshalb nur eine Vermutung, solange kein `dev/viewforum.php` vorliegt. Die
|
||||
Erkennung faellt bewusst auf die Form der Zeile zurueck.
|
||||
|
||||
**Die Brotkrumenleiste ist fixiert, nicht sticky.** `.rm-root` traegt
|
||||
`overflow:hidden` und wuerde damit zum Scrollport einer `position:sticky`
|
||||
-Leiste, in dem nie gescrollt wird — sie klebte nie. Fixierte Nachfahren
|
||||
@@ -110,6 +132,14 @@ Fuer die Weiche und die Listenansicht genuegt eine handgeschriebene Tabelle mit
|
||||
Weiche wie `posting.php`: dort darf weder eine Ansicht gebaut noch ein
|
||||
`<style>` injiziert werden.
|
||||
|
||||
Fuer die Forenliste braucht es eine zweite Tabelle im subsilver2-Schnitt:
|
||||
`td.cat > h4 > a` als Kategoriezeile, darunter Zeilen mit `a.forumlink`, drei
|
||||
`p.forumdesc` (Beschreibung, Moderatoren, Unterforen), zwei Zahlenspalten und
|
||||
einer Spalte „letzter Beitrag" mit Link auf `viewtopic.php`. Vier Faelle sind
|
||||
sinnvoll: reine Forenliste, reine Themenliste, beides auf einer Seite, und
|
||||
dieselbe Forenliste ohne die Klassen `forumlink`/`forumdesc` — die muss ueber
|
||||
die Zahlenspalten dasselbe Ergebnis liefern.
|
||||
|
||||
Am Geraet zu pruefen bleibt, was Blink nicht zeigt: `env(safe-area-inset-*)`,
|
||||
fixierte Leisten gegen Safaris ein- und ausfahrende Toolbar,
|
||||
`-webkit-backdrop-filter`, Schriftskalierung. Details und die
|
||||
|
||||
Reference in New Issue
Block a user