PCX Forum
Smalltalk Für dies und das
Anordnung
Threadliste
  1. Welches Auto fahrt ihr? reality.sys am ( Views: 651 | Antworten: 25 | Letzte: )
  2. Dinge, die gar nicht gehen - Nummer 19 Pascal Parvex am ( Views: 15193 | Antworten: 267 | Letzte: )
  3. RIP Bioware Singler am ( Views: 129 | Antworten: 2 | Letzte: )
  4. Der 2. RIP-Thread Mindeye am ( Views: 76652 | Antworten: 1015 | Letzte: )
  5. Diablo 4? Yay or Nay Sven am ( Views: 713 | Antworten: 11 | Letzte: )
  6. PCX 2.0 ZeroCool am ( Views: 305 | Antworten: 14 | Letzte: )
  7. Dies und das und jenes!-Thread Teil 2 Smooth am ( Views: 46589 | Antworten: 858 | Letzte: )
  8. Stay Forever: Wie der IBM-PC spielen lernte Pascal Parvex am ( Views: 120 | Antworten: 2 | Letzte: )
  9. Der Beginn von Skynet Freeman am ( Views: 366 | Antworten: 7 | Letzte: )
  10. Ich bin jetzt auf 8K-Gaming umgestiegen. Pascal Parvex am ( Views: 20049 | Antworten: 394 | Letzte: )
  11. Steam V Pascal Parvex am ( Views: 65939 | Antworten: 974 | Letzte: )
  12. Der Witze Thread 1 Pascal Parvex am ( Views: 10031 | Antworten: 141 | Letzte: )
  13. Grand Theft Auto VI Mindeye am ( Views: 1870 | Antworten: 40 | Letzte: )
  14. Der I. "ich hab Keys über" Thread Schallmauer am ( Views: 38479 | Antworten: 692 | Letzte: )
  15. Best Price 4 Mindeye am ( Views: 30053 | Antworten: 353 | Letzte: )
  16. Der große Apple Thread - Part 2 Matze am ( Views: 14005 | Antworten: 290 | Letzte: )
  17. Der Politik-Thread IV ossi_osram am ( Views: 32421 | Antworten: 542 | Letzte: )
  18. Neue, aber dennoch alte Hardware: Neo-Geo AES+ reality.sys am ( Views: 361 | Antworten: 9 | Letzte: )
  19. No Man's Sky Killersepp am ( Views: 16114 | Antworten: 300 | Letzte: )
  20. Erinnert sich sonst noch wer an den Textmodus-Snake-Klon "Kibowurm"? Pascal Parvex am ( Views: 815 | Antworten: 9 | Letzte: )
  21. Das PCX-Forum informiert ZeroCool am ( Views: 44032 | Antworten: 868 | Letzte: )
  22. Nvidia RTX wiede am ( Views: 23259 | Antworten: 495 | Letzte: )
  23. Witcher 3 - Ankündigung im Februar? Mindeye am ( Views: 24151 | Antworten: 545 | Letzte: )
  24. Wann hattet ihr das letzte Mal einen Bluescreen? Pascal Parvex am ( Views: 205 | Antworten: 1 | Letzte: )
  25. Seine Jörglangerigkeit mal wieder Famou$ am ( Views: 29489 | Antworten: 634 | Letzte: )
  26. Trittst im Morgenrot daher... Pascal Parvex am ( Views: 1951 | Antworten: 25 | Letzte: )
  27. Der KI-Thread hellbringer am ( Views: 2539 | Antworten: 50 | Letzte: )
  28. Fußball-Thread 2015/2016 Border am ( Views: 50149 | Antworten: 973 | Letzte: )
  29. Der Musik-Tipp-Thread Border am ( Views: 33655 | Antworten: 366 | Letzte: )
  30. "Frogger" Demo von Hasbro Interactive von 1997 Pascal Parvex am ( Views: 94 | Antworten: 0 )
  31. was gefällt! ossi_osram am ( Views: 69114 | Antworten: 1005 | Letzte: )
  32. Der Geburtstagsthread Pascal Parvex am ( Views: 2139 | Antworten: 41 | Letzte: )
  33. Diablo 2 (Resurrected) Christoph am ( Views: 1294 | Antworten: 9 | Letzte: )
  34. Cyberpunk 2077 - neues CDP Spiel Mindeye am ( Views: 11544 | Antworten: 169 | Letzte: )
  35. Der Foto-Thread 2 Pascal Parvex am ( Views: 61951 | Antworten: 882 | Letzte: )
  36. Bei AMD ist heute Weihnachten wiede am ( Views: 15351 | Antworten: 288 | Letzte: )
  37. Technische Fragen - Wake on LAN und VMD-Raid Lupo am ( Views: 321 | Antworten: 2 | Letzte: )
  38. Civilization VII Pascal Parvex am ( Views: 994 | Antworten: 9 | Letzte: )
  39. Der Intel-Thread Singler am ( Views: 4307 | Antworten: 65 | Letzte: )
  40. Der 2. Film-Thread (Kino / Heimkino / TV) Matze am ( Views: 29807 | Antworten: 455 | Letzte: )
  41. Das Maniac Forum Teh Sachiel am ( Views: 9858 | Antworten: 206 | Letzte: )
  42. Was wird/wurde gespielt? - Nr1 Mindeye am ( Views: 70990 | Antworten: 802 | Letzte: )
  43. GOG - I ossi_osram am ( Views: 19529 | Antworten: 273 | Letzte: )
  44. Weiterentwicklung Forum (technisch) TrifftNix am ( Views: 1045 | Antworten: 28 | Letzte: )
  45. WoW SauerCrowd TrifftNix am ( Views: 648 | Antworten: 11 | Letzte: )
  46. Monitor gesucht TrifftNix am ( Views: 241 | Antworten: 3 | Letzte: )
  47. FF7 Renmake für PC (und auch PS3) Schallmauer am ( Views: 1110 | Antworten: 13 | Letzte: )
  48. Ich (als Mod) veranstalte mal wieder ein Giveaway auf r/3ddruck... Singler am ( Views: 434 | Antworten: 6 | Letzte: )
  49. Frohes neues Jahr 2026 reality.sys am ( Views: 233 | Antworten: 4 | Letzte: )
  50. Switch 2 hellbringer am ( Views: 1856 | Antworten: 37 | Letzte: )
  51. Star Wars - Fate of the old Republic Goran am ( Views: 286 | Antworten: 3 | Letzte: )
  52. Internet-Geschwindigkeitsvergleich Pascal Parvex am ( Views: 12390 | Antworten: 245 | Letzte: )
  53. Anthem: Kein Thema? MrAnchovy am ( Views: 2099 | Antworten: 22 | Letzte: )
  54. Ubisoft verschiebt Geschäftszahlen ossi_osram am ( Views: 277 | Antworten: 2 | Letzte: )
  55. 21 Bud Spencer und Terence Hill Filme gratis bis Ende Jahr Pascal Parvex am ( Views: 408 | Antworten: 17 | Letzte: )
  56. 007 First Light Border am ( Views: 244 | Antworten: 1 | Letzte: )
  57. Der Adventure-Thread Joschi am ( Views: 59209 | Antworten: 676 | Letzte: )
  58. Frag das PCX-Forum 4 Pascal Parvex am ( Views: 15384 | Antworten: 345 | Letzte: )
  59. Jemand Interesse an 3DDruckern? Ihr könnt einen gewinnen Singler am ( Views: 194 | Antworten: 1 | Letzte: )
  60. TMP aktiviert - kein Windows 11 Lupo am ( Views: 317 | Antworten: 5 | Letzte: )
  61. Battlefield 6 Mindeye am ( Views: 645 | Antworten: 2 | Letzte: )
  62. VR-Gear MatD am ( Views: 5074 | Antworten: 110 | Letzte: )
  63. Star Citizen Mindeye am ( Views: 6465 | Antworten: 73 | Letzte: )
  64. Anno 117: Pax Romana Mindeye am ( Views: 643 | Antworten: 3 | Letzte: )
  65. Windows 11 reality.sys am ( Views: 2058 | Antworten: 37 | Letzte: )
  66. Asus ROG Ally vs. Steam Deck Mindeye am ( Views: 986 | Antworten: 2 | Letzte: )
  67. Borderlands 4 kommt am 12. September wiede am ( Views: 365 | Antworten: 1 | Letzte: )
  68. The Witcher 4 (Reveal Trailer) Border am ( Views: 547 | Antworten: 4 | Letzte: )
  69. Windows Surface Problem Lupo am ( Views: 404 | Antworten: 5 | Letzte: )
  70. Kingdom Come Deliverance II ZeroCool am ( Views: 1119 | Antworten: 9 | Letzte: )
  71. WLAN Mesh Repeater als "Kabelersatz" Lupo am ( Views: 554 | Antworten: 7 | Letzte: )
  72. Stalker 2 - Entwicklung geht weiter Slochy am ( Views: 3314 | Antworten: 33 | Letzte: )
  73. For Sale Topic reality.sys am ( Views: 7622 | Antworten: 92 | Letzte: )
  74. Path of Exile Schallmauer am ( Views: 4013 | Antworten: 26 | Letzte: )
  75. MiSTer FPGA - gibt es hier Erfahrungen? reality.sys am ( Views: 419 | Antworten: 2 | Letzte: )

Weiterentwicklung Forum (technisch)

28 Antworten

Re:Single Page Layout

von ZeroCool am Antwort auf Re:Single Page Layout von TrifftNix

Sehr schön! Am Ende geschmeidiger als die IFrame Lösung wenn man sich eh einmal mit dem Einsatz von Javascript abgefunden hat. Wie hast du es realisiert? Haben die Actions eine getAjax Methode oder läuft es noch über die Template Engine mit einem speziellen Ajax Template? Oder ganz anders?

Claude sagt:

Der Unified Skin folgt einem SPA-ähnlichen Ansatz: Der Server liefert nur eine leere App-Shell (board.tpl), der gesamte Content wird per AJAX nachgeladen.

Alle State-Daten (brdid, thrdid, msgid, csrf, sid, login-Status) werden als data-* Attribute auf #app vom Server gerendert und beim Init von JS ausgelesen.

JavaScript (app.js)

3 zentrale AJAX-Funktionen
Funktion                Endpoint                Antwort              Panel
loadThreadlist()        ?mode=threadlistajax    HTML-Fragment        #panel-threadlist
loadThread(thrdid)      ?mode=threadajax        JSON (Baum-Daten)    #panel-thread
loadMessage(msgid)      ?mode=messageajax       HTML-Fragment        #panel-message
loadMessageForm(msgid)  ?mode=messageformajax   HTML-Fragment        #panel-message
Wichtig: loadThread ist der einzige Endpoint, der JSON liefert. Die Baumstruktur wird clientseitig via renderTree() / renderTreeNode() aus dem JSON rekursiv zu HTML gerendert (Zeilen 344-374).

Alle Klicks werden über Event Delegation auf den 3 Panels abgefangen:

- Threadlist-Klick (a[data-thrdid]): preventDefault() → loadThread() → loadMessage() → pushState()
- Thread-Baum-Klick (a[data-msgid]): preventDefault() → loadMessage() → pushState()
- Antwort-Link (a[href*="mode=messageform"]): preventDefault() → loadMessageForm(msgid)

Wiederverwendung bestehender Funktionen

Was                  Vorhandene Klasse             Anpassung
Board App Shell      cActionBoard                  Vereinfacht: rendert nur board.tpl mit Config-Daten, kein Content
Threadliste          cActionThreadlistajax         Bereits vorhanden (aus pcx-modern), liefert HTML-Fragment
Thread-Baum          cActionThreadajax             Bereits vorhanden, liefert JSON
Nachricht            cActionMessageajax            Bereits vorhanden, liefert HTML-Fragment
Formular laden       cActionMessageformajax        Neu erstellt - nutzt aber bestehende cBoardMessage, cMessageQuoteParser
Nachricht speichern  cActionMessagesave            Erweitert um if($bAjaxMode) Branch: bei ajax=1 → JSON statt Redirect

Zusammengefasst: Der Unified Skin ist eine Client-Side-Shell, die 3 bestehende AJAX-Endpoints (threadlistajax, threadajax, messageajax) parallel nutzt, einen neuen Endpoint (messageformajax) hinzufügt, und die bestehende cActionMessagesave um einen AJAX-Branch erweitert.

----

Die Ajax Endpoints hatte ich bereits für das Mobile Skin.
Hört sich das sinnvoll an für dich?