mirror of
https://github.com/Andre-Bzk/rin-mobile-userscript.git
synced 2026-11-15 09:33:08 +01:00
feat: group the list view by section and let the groups collapse
Every page of a forum repeats its global announcements, announcements and stickies before the first real topic. On a phone that is the whole first screen, scrolled past on every page turn, and the rebuild made it worse: the board separates those blocks with header rows the card stream dropped, so what remained was one undifferentiated run of cards. Each block now carries a header with its name and card count, and tapping it folds the block away. The announcement blocks start folded, which is the point of the change; folding rather than filtering keeps them reachable without editing the script. The state is kept per kind, so a decision taken in one forum holds in all of them. localStorage rather than GM_setValue: no @grant, and identical behaviour in Tampermonkey and the iOS app, against the risk that Safari clears the value after long inactivity and the sections return to their default. That is a reset of one preference, not data loss. Rows are classified by the icon in their first column instead of a title prefix, because the board marks the type nowhere else. The header labels come from the board's own separator rows, so sections nobody anticipated still read correctly. The menu bar links the forum rules and the FAQ as topics. That row has neither a topic title nor numeric columns, but it passed the layout brake and had been yielding a ghost card at the head of every list — visible now that it would claim a section header of its own.
This commit is contained in:
@@ -9,9 +9,10 @@ die `.user.js`-Datei ist das Produkt.
|
||||
| `rin-mobile.user.js` | `*://cs.rin.ru/forum/*` | Beide Ansichten, Weiche nach Seitentyp |
|
||||
| `dev/rin-mobile.dev.user.js` | zusaetzlich `localhost:*` | Loader, bindet per `@require file:///` das echte Script ein |
|
||||
| `dev/viewtopic.php` | — | Fixture: gespeicherter Thread, 1114 Seiten |
|
||||
| `dev/viewforum.php` | — | Fixture: Main Forum, 610 Seiten, mit Unterforen, Ankuendigungen und Stickies |
|
||||
|
||||
Das Fixture ist ueber `.gitignore` (`dev/*.php`) ausgeschlossen. Nach einem
|
||||
frischen Klon ist es nicht da und muss nach der Anleitung in der README neu
|
||||
Die Fixtures sind ueber `.gitignore` (`dev/*.php`) ausgeschlossen. Nach einem
|
||||
frischen Klon sind sie nicht da und muessen nach der Anleitung in der README neu
|
||||
gespeichert werden — die Seite verlangt einen Login.
|
||||
|
||||
## Aufbau
|
||||
@@ -65,6 +66,21 @@ 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.
|
||||
|
||||
**Der Typ einer Themenzeile steht im Symbol, nicht am Titel.** `rinDark`
|
||||
unterscheidet `global_read.png`, `announce_read.png`, `sticky_read.png` und
|
||||
`topic_read.png` in der ersten Spalte, jeweils auch als `_locked`-Variante. Die
|
||||
Trennzeilen der Seite (`<td class="row3" colspan="6"><b>Stickies</b>`) tragen
|
||||
keinen Link und fallen beim Einsammeln durch; ihr Text ist trotzdem die beste
|
||||
Beschriftung und wird ueber die Vorgaengerzeilen nachgeschlagen. Achtung beim
|
||||
Zaehlen im Fixture: dieselben Symbole stehen unten noch einmal in der Legende,
|
||||
ein Grep zaehlt also mehr, als es Zeilen gibt.
|
||||
|
||||
**Der Menuebalken der Seite verlinkt Themen.** „Forum rules" und die FAQ stehen
|
||||
in einer Layoutzeile ohne Tabelle oder Script darin, die Bremse in `rowKind()`
|
||||
greift dort also nicht. Ohne das Merkmal `a.topictitle` beziehungsweise zwei
|
||||
Zahlenspalten wurde daraus eine Geisterkarte am Kopf jeder Liste — mit
|
||||
Gruppenkoepfen faellt sie als eigener Abschnitt „Themen 1" auf.
|
||||
|
||||
**Der Gruppenkopf entfaellt hinter einer Kategoriezeile.** Sonst stuende auf
|
||||
der Forenwurzel unter jeder Kategorie noch ein „FOREN n" — die Kategorie leitet
|
||||
die Foren darunter bereits ein. Die Karten werden deshalb erst vollstaendig
|
||||
@@ -79,10 +95,11 @@ 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.
|
||||
**Das Theme ist `rinDark`, nicht subsilver2.** Fuer die Forenliste waren die
|
||||
Klassennamen aus der phpBB-Dokumentation (`forumlink`, `forumdesc`) deshalb
|
||||
zunaechst nur eine Vermutung; `dev/viewforum.php` bestaetigt sie inzwischen. Der
|
||||
Rueckfall auf die Form der Zeile bleibt trotzdem stehen — er kostet nichts und
|
||||
traegt die Erkennung, wenn das Theme wechselt.
|
||||
|
||||
**Die Brotkrumenleiste ist fixiert, nicht sticky.** `.rm-root` traegt
|
||||
`overflow:hidden` und wuerde damit zum Scrollport einer `position:sticky`
|
||||
|
||||
Reference in New Issue
Block a user