È necessario includere PGN (notazione delle partite di scacchi) in un post

Sto cercando di incorporare un file PGN in un argomento. Questo richiede l’inclusione di CSS e JavaScript nell’argomento. Qualcuno, per favore, può aiutarmi a capire come usare CSS e JavaScript in un argomento?

5 Mi Piace

Questo non è possibile in Discourse. Cos’è un file PGN? Puoi descrivere il tuo obiettivo in modo un po’ più chiaro?

4 Mi Piace

PGN sta per Portable Game Notation. In genere, tutte le mosse di una partita di scacchi possono essere esportate in formato testo e lette tramite un lettore PGN per riprodurre la partita.
Di solito appare così:

[Event "World Championship 28th"]
[White "Spassky, Boris V"]
[Black "Fischer, Robert James"]
[Site "Reykjavik"]
[Result "1–0"]
[Date "1972.08.06"]
[WhiteElo "2660"]
[BlackElo "2785"]

1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Qb6 8. Qd2 Qxb2 9. Nb3 Qa3 10. Bxf6 gxf6 11. Be2 h5 12. 0-0 Nc6 13. Kh1 Bd7 14. Nb1 Qb4 15. Qe3 d5 16. exd5 Ne7 17. c4 Nf5 18. Qd3 h4 19. Bg4 Nd6 20. N1d2 f5 21. a3 Qb6 22. c5 Qb5 23. Qc3 fxg4 24. a4 h3 25. axb5 hxg2+ 26. Kxg2 Rh3 27. Qf6 Nf5 28. c6 Bc8 29. dxe6 fxe6 30. Rfe1 Be7 31. Rxe6
4 Mi Piace

Sarebbe sicuramente un plugin divertente! Aggiungo il tag “pull request welcome” a questo argomento.

5 Mi Piace

Sarebbe possibile pubblicare le note sulla partita su qualcosa come chess.com e poi utilizzare il codice di incorporamento che forniscono per il tuo sito web?

6 Mi Piace

Non solo Chess.com.
Posso giocare una partita su qualsiasi piattaforma di scacchi online. Dovrei essere in grado di copiare il mio PGN e pubblicarlo nel mio forum.

Ehi @codinghorror,
Sarebbe davvero fantastico avere un plugin del genere :slight_smile:

2 Mi Piace

Ti rendi conto di quanto sia di nicchia?
Questa NON dovrebbe essere una funzionalità di Discourse. Il 98% dei forum non la userà mai.

Hai tre opzioni:

  • Scrivilo da solo
  • Assumi qualcuno per scriverlo
  • Usa la soluzione che ho fornito 13 ore fa, che risolve il tuo problema
1 Mi Piace

Ciao @Monkey,

Sì, mi rendo conto che hai perfettamente ragione.

Abbiamo gestito un forum molto tecnico per 15 anni (unix, linux) e avevamo molti giocatori di scacchi tra i membri (io incluso), ma nessuno si interessava agli scacchi nel forum (abbiamo installato diversi plugin legati agli scacchi nel corso degli anni).

Ciò che ha funzionato meglio è stato semplicemente avere membri interessati a giocare a scacchi o agli scacchi in generale che si incontrassero su uno dei grandi siti di scacchi online disponibili.

Quindi, posso confermare che si tratta di una nicchia molto ristretta: giocare a scacchi nei forum, a causa delle tante grandi alternative disponibili.

Integrare il codice di uno dei siti di scacchi online più popolari sarebbe un ottimo modo per procedere, sono d’accordo.

4 Mi Piace

Ciao @neounix,

Gestisci un forum tecnico, quindi il tuo pubblico potrebbe non essere interessato agli scacchi.
Io posso ospitare un Forum di Sport e Videogiochi dove ci sono molti giocatori ed appassionati di scacchi che dedicano molto tempo a discutere e dibattere sulle mosse degli scacchi. Dipende da chi è il tuo pubblico target. È miope da parte tua verificare e confermare i miei requisiti, dato che non hai mai gestito un forum sportivo, e la tua verifica non è valida rispetto alla mia richiesta.

Ciao @Monkey,

Ci sono già molti embed basati su JavaScript per ospitare un PGN. Tuttavia, Discourse non supporta attualmente gli embed JavaScript nei post; sono consentiti solo gli embed iFrame. Quindi, se Discourse fosse interessata a rendere disponibile un plugin per i PGN, sono certo che attirerebbe molti forum sportivi.
Non credo che i plugin relativi agli scacchi siano una funzionalità di nicchia, se Discourse ha molti forum sportivi e legati ai videogiochi nella propria lista di clienti.

La soluzione che hai fornito ci permetterebbe solo di utilizzare qualsiasi stream di chess.com. Tuttavia, questo non ci aiuterebbe a differenziarci, dato che ci sono molti giocatori che ospitano semplicemente i puzzle quotidiani di Chess.com. Quindi il tuo suggerimento non è effettivamente una soluzione al mio problema.

3 Mi Piace

Sono un appassionato di scacchi e ho cercato di incoraggiare un forum finlandese di scacchi a passare a Discourse. Quindi ho approfondito proprio questa domanda e ho fatto alcune prove molto di recente. Il mio consiglio principale è di sfruttare la funzione iframe integrata di Discourse, come qualcuno ha già menzionato. Basta cercare “allowed iframes” nelle impostazioni di amministrazione e aggiungere chess.com, lichess.org e forse altri alla whitelist. Tutti loro supportano gli iframe dal loro lato. Un utente può quindi copiare e incollare una stringa come:

iframe src="https://lichess.org/embed/jYSkjcuG?theme=auto&bg=auto" width=600 height=397 frameborder=0></iframe>

Viene creato un riquadro davvero elegante. Il riquadro contiene una scacchiera con frecce che permettono di tornare indietro e avanti nella partita. Se la sorgente include commenti, questi vengono visualizzati anch’essi. Se il destinatario ha davvero bisogno del file PGN, ad esempio per analizzare la partita con il proprio motore, può accedere al file sul sito di origine. Basta istruire un po’ i vostri utenti e li vedrete entusiasti.

6 Mi Piace

Ciao @rizka,

Ho un caso molto strano qui,


Nell’anteprima vedo l’incorporamento iFrame. Ma, quando salvo il post, l’incorporamento iFrame non è visibile. Mi sto perdendo qualcosa?
Screenshot dopo il salvataggio del post:

Vedi errori nella console del tuo browser? (forse relativi alla CSP)

Ho questo errore:

Un cookie associato a una risorsa cross-site su https://lichess.org/ è stato impostato senza l'attributo `SameSite`. È stato bloccato, poiché Chrome ora consegna i cookie con richieste cross-site solo se sono impostati con `SameSite=None` e `Secure`. Puoi esaminare i cookie negli strumenti per sviluppatori sotto Application>Storage>Cookies e vedere ulteriori dettagli su https://www.chromestatus.com/feature/5088147346030592 e https://www.chromestatus.com/feature/5633521622188032.

Ho impostato le opzioni su SameSite=None.
Ma non ha aiutato.

Penso che il sito che stai incorporando (https://lichess.org/) dovrebbe aggiungere quella impostazione al cookie (supponendo che vogliano permettere ad altri siti di utilizzare i loro cookie). Detto questo, non so se l’iframe non venga mostrato a causa di ciò (normalmente i cookie servono per le sessioni o per la pubblicità, quindi anche se l’iframe non ha una sessione, penso che dovrebbe comunque caricarsi).

Aggiornamento

Sembra che lo permettano.

Inoltre, puoi vedere l’anteprima, e se aggiungo l’iframe qui su Discourse Meta (direttamente nell’HTML, tramite l’ispettore del browser), funziona, come nell’immagine qui sotto:

Potresti provare ad aggiungerlo direttamente nella tua pagina, usando l’ispettore del browser. Se non funziona, potrebbe essere una regola CSP o Discourse che blocca gli iframe (se è una regola CSP dovresti vedere un errore o un avviso nella console del browser).

Qui su Meta, se provo a includere l’iframe, ottengo anch’io un post vuoto (anche se non riesco nemmeno a vedere un’anteprima):

<iframe src="https://lichess.org/tv/frame?theme=wood&bg=light" style="width: 400px; height: 444px;" allowtransparency="true" frameborder="0"></iframe>

Aggiornamento 2

L’impostazione del sito allowed_iframes potrebbe essere ciò che stai cercando (per permettere iframe da quel dominio):

Ho abilitato temporaneamente gli iframe di lichess.org su try.discourse.org in modo che chiunque possa testarne il comportamento:

Rimarrà attivo fino al reset giornaliero.

Sembra meglio su Firefox:

rispetto a Chrome:

5 Mi Piace

Ciao @supermathie,

Invece di utilizzare un embed iframe, ho questo codice JavaScript:

<link rel="stylesheet" type="text/css" href="https://pgn.chessbase.com/CBReplay.css" />

<div class="cbreplay">

[Event "World Championship 28th"]
[White "Spassky, Boris V"]
[Black "Fischer, Robert James"]
[Site "Reykjavik"]
[Result "1–0"]
[Date "1972.08.06"]
[WhiteElo "2660"]
[BlackElo "2785"]

1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Qb6 8. Qd2 Qxb2 9. Nb3 Qa3 10. Bxf6 gxf6 11. Be2 h5 12. 0-0 Nc6 13. Kh1 Bd7 14. Nb1 Qb4 15. Qe3 d5 16. exd5 Ne7 17. c4 Nf5 18. Qd3 h4 19. Bg4 Nd6 20. N1d2 f5 21. a3 Qb6 22. c5 Qb5 23. Qc3 fxg4 24. a4 h3 25. axb5 hxg2+ 26. Kxg2 Rh3 27. Qf6 Nf5 28. c6 Bc8 29. dxe6 fxe6 30. Rfe1 Be7 31. Rxe6
</div>

È possibile utilizzare un codice simile per incorporarlo nei post? Molti dei miei utenti preferiscono una semplice copia-incolla di questi script piuttosto che dover visitare un sito web di terze parti per generare l’iframe.

Sì!

Sembra che tu sia molto vicino ad avere tutti gli elementi necessari per trasformarlo in un componente del tema (penso che questo possa essere fatto con un componente del tema, ma non sono molto familiare con essi, quindi non prenderlo come una verità assoluta).

Il passo successivo sarà o implementarlo da solo o assumere qualcuno per fare il lavoro, come suggerito da @Monkey.

(Mi piacerebbe molto occuparmene per imparare qualcosa sui componenti del tema, ma al momento non posso dedicarci il tempo necessario)

5 Mi Piace

Sì, potresti basarti su un progetto come questo:

Ce ne sono alcuni su GitHub, ma questo è uno dei più importanti.

Combinalo con BBCode personalizzato: Developer's guide to Markdown extensions

Basta solo fare attenzione alle insidie legate all’integrazione di questo nel processo di rendering di Ember…

@supermathie ha ragione: devi trovare un appassionato disposto a imparare le basi e a dedicare tempo all’implementazione, oppure assumere qualcuno su Marketplace.

4 Mi Piace

Ciao @merefield,

Ho personalizzato il mio tema per includere lo script:

<link rel="stylesheet" type="text/css" href="https://pgn.chessbase.com/CBReplay.css" />

Ho inserito l’URL del CSS “https://pgn.chessbase.com/CBReplay.css” nella lista bianca per consentirlo negli Embed.
Quando incollo lo script nel mio post, il tag Div viene ignorato e viene visualizzato solo il testo:

<div class="cbreplay">

[Event "World Championship 28th"]
[White "Spassky, Boris V"]
[Black "Fischer, Robert James"]
[Site "Reykjavik"]
[Result "1–0"]
[Date "1972.08.06"]
[WhiteElo "2660"]
[BlackElo "2785"]

1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Qb6 8. Qd2 Qxb2 9. Nb3 Qa3 10. Bxf6 gxf6 11. Be2 h5 12. 0-0 Nc6 13. Kh1 Bd7 14. Nb1 Qb4 15. Qe3 d5 16. exd5 Ne7 17. c4 Nf5 18. Qd3 h4 19. Bg4 Nd6 20. N1d2 f5 21. a3 Qb6 22. c5 Qb5 23. Qc3 fxg4 24. a4 h3 25. axb5 hxg2+ 26. Kxg2 Rh3 27. Qf6 Nf5 28. c6 Bc8 29. dxe6 fxe6 30. Rfe1 Be7 31. Rxe6
</div>

Devo fare altro per utilizzare questo script nei miei post? Suggerimenti, per favore.

Non ho tempo di guardare questo al momento. Fai come ti suggerisco.