EN /HU | Belépés

Wiki oldal

Ez a wiki egy Grav CMS oldal, amelynek a tartalma git-repóban él, plusz két kísérőszolgáltatás: egy fetcher, amely git-webhookra szinkronizálja a repót, és egy telnetes BBS felület. A változások megjelennek egy JSON API-n, amelyet az Updater bot lekérdez, hogy bejelentse őket a Discordon.

Áttekintés

Minden egyetlen repóban van — services/wiki-pages: tartalom (pages/), Grav-konfiguráció, téma, kísérőszolgáltatások. A Docker Compose három szolgáltatást futtat belőle:

Szolgáltatás Mit csinál
grav Grav CMS (PHP 8.1 + Apache). A pages/, config/ és themes/ bind mounttal van becsatolva, így az oldal a munkamásolatot szolgálja ki.
wiki-fetcher Go HTTP-hook (fetcher/). A GET /pull?secret=… commitolja a helyi szerkesztéseket, rebase-zel pullol, majd pushol.
wiki-bbs Telnet felület (bbs/, rubbs alapon), amely a JSON API-n keresztül böngészi a wikit. Lásd: BBS-szerver.

Tartalom

A Grav mappák szerint útvonalaz: egy oldal a pages/<szekció>/<slug>/default.md, YAML-frontmatterrel. Az oldalsávot kézzel gondozzuk a config/sitenav.yaml-ben. Kétféleképpen lehet szerkeszteni:

  • Gitben — szerkeszd a default.md-t, commitolj, pushold. Az alábbi webhook-folyamat kiteszi élesbe.
  • Az adminfelületen (/admin) — a Grav a becsatolt munkamásolatba ír, a fetcher pedig a következő /pull során visszacommitolja gitbe.

A projects/ és team/ alatti oldalakhoz belépés kell. A képek az assets/ könyvtárban vannak, a /wiki-assets/… útvonalon szolgálva ki.

Nyelvek

A wiki kétnyelvű: az angol az alapértelmezett, és nincs URL-előtagja, a magyar a /hu alatt él. Az oldal a nyelvét a fájlnevében hordozza — default.en.md vagy default.hu.md —, a nyelvváltó pedig a felső sávban van.

Az angol oldalaknak van magyar fordítása. A csak magyarul létező oldalak (az egyesületi papírmunka, a jegyzőkönyvek, a Neumatronic Universe háttéranyagai) nem kapnak angolt: a config/system.yaml-ben a content_fallback miatt az angol kérés átesik a magyar fájlra, így semmi nem lesz 404-es.

A JSON API ugyanezt a szabályt követi: a /custom/pages.json angol, a /hu/custom/pages.json magyar. Minden válasz visszaadja a kért lang értéket, és minden oldalon ott a locale, amely azt mondja meg, hogy a törzsszöveg valójában milyen nyelven van — a kettő pontosan ott tér el, ahol a visszaesés életbe lépett.

Frissítési folyamat

  1. Valaki pushol a wiki-pages repóba a Giteán, vagy szerkeszt egy oldalt az adminfelületen.
  2. Egy Gitea-webhook meghívja a fetcher /pull végpontját. Az előbb commitolja a helyi adminszerkesztéseket, majd git pull --rebase + push.
  3. A repó bind mounttal van becsatolva, így a lehúzott változások azonnal élesek.
  4. Az /api/updates.json módosítási idő szerint listáz minden oldalt.
  5. Az Updater bot lekérdezi, összeveti a gyorsítótárával, és minden új frissítésről küld egy Discord-értesítést.

JSON API

A végpontok Grav-oldalak (pages/api/), amelyeket a themes/ttgwiki/templates/ alatti twig-sablonok renderelnek:

Végpont Mire való
/api/sitemap.json Minden útvonalazható oldal: route, cím, módosítás, címkék, privát jelző (törzsszöveg nélkül).
/api/page.json?route=<route> Egy oldal nyers markdownnal és renderelt HTML-lel.
/api/updates.json?limit=N Módosítási idő szerint rendezett oldalak — ezt figyeli az Updater bot.
/api/pages.json?tag=<tag> Taxonómiacímke szerint szűrt oldalak (a nyilvános oldal Blog és HowTos listái ezt használják).

Privát oldal csak token=<SUPERVISOR_PASSWORD> mellett adja ki a törzsszövegét. A BBS ugyanezt a tokent használja a supervisor-belépéshez.

Repó

https://git.teletypegames.org/services/wiki-pages