mirror of
https://github.com/Andre-Bzk/rin-mobile-userscript.git
synced 2026-11-15 09:33:08 +01:00
feat: give the list view the same page navigation as the thread
The list built its own page bar from every link on the page carrying a start parameter. Topic rows bring their own "Go to page: 1 … 42, 43" along, so on the main forum that bar came to 103 entries, most of them jumping into the middle of some unrelated thread rather than to a page of the list. Even the correct entries were only the handful phpBB renders, which for 610 pages means there is no way to reach page 300. The thread already solved this: read per_page out of the page's own jumpto function, compute every target, and offer them through a fixed bar and a sheet. Both views paginate over the same parameter, so the bar, the sheet and the state behind them now sit in one place and serve both. The list leaves the bar out where a single page holds everything, which a thread of posts never does but a category page always does. Bottom clearance moved onto the bar for that reason — tied to the view, it would reserve an empty strip under lists that have no bar.
This commit is contained in:
@@ -26,11 +26,13 @@ Ein IIFE, streng der Reihe nach:
|
||||
der komplette Style-Block als Template-Literal
|
||||
4. `replaceBody(root)` blendet alle bisherigen `body`-Kinder aus und haengt die
|
||||
neue Ansicht an
|
||||
5. `buildList()` beziehungsweise `buildThread()` lesen das Original-DOM und
|
||||
5. `pageState()`, `pageSheet()` und `pageNav()` — die Paginierung, von beiden
|
||||
Ansichten benutzt
|
||||
6. `buildList()` beziehungsweise `buildThread()` lesen das Original-DOM und
|
||||
bauen ein `div.rm-root`; beide haengen zum Schluss ueber `addCrumbs()` die
|
||||
fixierte Brotkrumenleiste an
|
||||
6. `run()` waehlt die Ansicht und haengt bei `DEBUG` das gruene Overlay an
|
||||
7. Start ueber `DOMContentLoaded`, falls `readyState === 'loading'`
|
||||
7. `run()` waehlt die Ansicht und haengt bei `DEBUG` das gruene Overlay an
|
||||
8. Start ueber `DOMContentLoaded`, falls `readyState === 'loading'`
|
||||
|
||||
Auf Seiten ausserhalb der Weiche (`posting.php`, Profile, …) passiert nichts,
|
||||
insbesondere wird kein Stylesheet injiziert.
|
||||
@@ -44,11 +46,14 @@ Gleich benannte Regeln kollidierten mit identischer Spezifitaet, und die
|
||||
Ladereihenfolge der Userscripts entschied ueber das Layout.
|
||||
|
||||
- Geteilt: `.rm-root`, `.rm-hidden`, `.rm-dbg`, die globale `img`-Regel
|
||||
- Geteilt sind ausserdem die Leiste und ihr Sheet: `.rm-nav`, `.rm-sheet*`,
|
||||
`.rm-goto`, `.rm-grid`
|
||||
- Unterschiede zwischen den Ansichten ueber einen Modifier am Root loesen,
|
||||
nicht ueber zwei Regeln mit demselben Selektor. `.rm-root.rm-thread` haelt
|
||||
so die 64px hinter der fixierten Leiste frei.
|
||||
- Namen sind ansichtsspezifisch zu halten: `.rm-jump`/`.rm-pages` gehoeren der
|
||||
Liste, `.rm-goto`/`.rm-grid` dem Thread-Sheet.
|
||||
nicht ueber zwei Regeln mit demselben Selektor. `.rm-root.rm-paged` haelt
|
||||
so die 64px hinter der fixierten Leiste frei — gesetzt von `pageNav()`
|
||||
selbst, weil es die Leiste nicht auf jeder Liste gibt.
|
||||
- Namen sind ansichtsspezifisch zu halten: `.rm-jump` und `.rm-group` gehoeren
|
||||
der Liste, `.rm-post` und `.rm-sig` dem Thread.
|
||||
- `.rm-av` braucht `!important` auf Breite und Hoehe, sonst gewinnt die globale
|
||||
`img { height:auto !important }`-Regel gegen die Avatarmasse.
|
||||
|
||||
@@ -112,6 +117,13 @@ Brotkrumen im Markup kein leerer Streifen bleibt.
|
||||
im Markup.** Ein Grep im Roh-HTML nach `Page 1 of` findet nichts, die Regex auf
|
||||
`txt(document.body)` greift trotzdem. Nicht vorschnell fuer kaputt halten.
|
||||
|
||||
**Seitenlinks stehen nicht nur im Paginierungsblock.** Jede Themenzeile mit
|
||||
mehr als einer Seite bringt ihr eigenes „Go to page: 1 … 42, 43" mit, und diese
|
||||
Links tragen ebenfalls `start=`. Die Liste baute ihre Seitenleiste bis 3.5 aus
|
||||
allen `a[href*="start="]` der Seite und kam so auf 103 Eintraege, von denen die
|
||||
meisten mitten in einen fremden Thread fuehrten. `pageState()` macht es richtig
|
||||
und liest nur den Block um den `jumpto()`-Link.
|
||||
|
||||
**`per_page` kommt aus der `jumpto()`-Funktion der Seite**
|
||||
(`var per_page = '15';`). Nur damit lassen sich Seiten-URLs als
|
||||
`start = (Seite - 1) * per_page` selbst bauen. Die gerenderten Seitenlinks
|
||||
@@ -150,6 +162,13 @@ Sinnvolle Faelle: erste Seite, zweite Seite, Mitte, letzte Seite, dazu die
|
||||
Degradation ohne `per_page` und ein Thread ohne Paginierung. Fixture-Eckdaten:
|
||||
`f=10&t=68689`, `per_page = 15`, 1114 Seiten, letzte Seite `start=16695`.
|
||||
|
||||
Dieselben Faelle gelten seit 3.5 fuer die Liste, die sich die Leiste mit dem
|
||||
Thread teilt. Eckdaten von `dev/viewforum.php`: `f=10`, `per_page = 100`, 610
|
||||
Seiten, letzte Seite `start=60900`, dazu 4 Unterforen, 7 globale
|
||||
Ankuendigungen, 2 Ankuendigungen, 8 Stickies und 92 Themen. Achtung beim
|
||||
Nachbauen einer einseitigen Liste: die Seitenlinks zu entfernen genuegt nicht,
|
||||
`Page 1 of 610` steht auch im Text und traegt die Gesamtzahl allein.
|
||||
|
||||
Fuer die Weiche und die Listenansicht genuegt eine handgeschriebene Tabelle mit
|
||||
`a.topictitle`-Zeilen. Zu pruefen ist dabei auch eine Seite ausserhalb der
|
||||
Weiche wie `posting.php`: dort darf weder eine Ansicht gebaut noch ein
|
||||
|
||||
Reference in New Issue
Block a user