Estensione markdown per i pgn

Più che bucarti il server, c’è caso non renderizzi a dovere, con conseguente fuga degli adepti.

Errore nel controller.
Che poi è quello, lato server, che chiama i metodi per far le cose.

Qui, o si riesce a debuggare lato server, o son cavoli.

Beh finché non viene applicato, nessun danno alla comunità.
Lato server ho quel log, ma non mi dice cosa stia leggendo (quale file ad esempio) quindi non so cosa gli manchi.
Per paura che buchino il server, la base del tema è la solita, l’interfaccia l’io scritta io e mi sembra abbastanza capibile e il motore mi sembra ben documentato (ho messo tutti i link per chiarezza).

Niente domani provo una versione alternativa.

Appunto: o puoi mettere mano al codice lato server, anche solo per fargli scrivere qualcosa di più, o resti al buio. Io manco riesco a provare niente.

Allora, il problema sta nella libreria che dovrebbe fare da motore per il PGN, ossia @mliebelt\pgn-viewer\lib. Tolta quella, il JS di interfaccia viene letto e il nuovo tema caricato anche se è “vuoto”. Si potrebbero tentare almeno i primi test per il BBcode, ma andrebbe cmq capito perché non può leggere tale libreria.
Ho provato anche amterla in un cartella “accanto” in modo che non parta l’importazione automatica che avviene con quanto sta in Initializers, ma niente, sempre errore di null-byte. O è un carattere non compreso, non unicode ad esempio, o è altro, e non conoscendo il JS…

Intanto provo a sviluppare l’alternativa.

Non lo trovo nella lista dei temi. Cosa mi sfugge?

Allora, se intendi il tema con la sola interfaccia senza motore, l’ho rimossa al momento, ma adesso la rimetto. Il tema completo non è ancora importabile.

Ricordami a che punto siamo…?

…disperati?

Esatto!

Allora la richiesta si poggia su due punti:

  • il motore per rendering, che esiste ma se proviamo a metterlo nella cartella del tema, non carica più nulla
  • L’interfaccia con il motore. Questa è suddivisa in due sotto punti:
  • 1 il parser della stringa della partita (ed eventuali abbellimenti nella raffigurazione) per chiamare il suddetto motore. L’ho preso dall’adattamento del suddetto motore per WordPress, ma WP ha già i suoi BBCode.
  • 2 la creazione di un BBCode adatto a Discourse. Attualmente non riesco a far caricare questo BBCode in nessun modo quindi neanche a provare il parser senza motore. Anche qui ci sono stati vari tentativi differenti.
  • 2a provare con il markit-down (già esistente in Discourse ma il gancio che suggeriscono di usare non sembra dare segni di vita)
  • 2b provare con gli awesome BBCode (plugin ulteriore), ma che non mi sembra di aver completato
  • 2c provare a rubare da altri plugin, come quello dell’OTP che ha una interfaccia carina con bottone. Anche qui nessun segno di vita.

Serve qualcuno che conosca JavaScript essenzialmente

che, di per se stesso, non lo conosce davvero nessuno, ma lo usano tutti. Il problema secondo me non è tanto JavaScript, ma riuscire ad agire in quell’ambiente - per quanto, ho visto cose che, da imbrattacodici, manco capivo cosa fossero…

io sto ancora a scuola

ma c’è chi si fa del male

Verissimo ma fatto sta che non capendo nulla, ho messo su degli accrocchi che mi sembravano finiti e non so metterci mano perché non si bene cosa stia facendo…

@StellarClown mi pare la persona che potrebbe dare qualche suggerimento facendogli le domande giuste.

1 Mi Piace

Si possono provare oppure bisogna scrivere codice, mettere su, sperare che funzioni e, se non va, morta lì?

Ci sono caricati dei temi sperimentali, dove potete vedere il codice e nel caso fare l’anteprima. Ma nessuno funziona, qui di per ora sono arenato.
Ci vorrebbe che qualcuno si sorbisse la mia spiegazione, gli mostrassi i tentativi e i vari errori.

Perdona se ti dico qualcosa che per te può essere banale.

Se c’è di mezzo del JavaScript, e se questo, effettivamente, viene eseguito dal browser, esiste la possibilità di aggiungere delle istruzioni try…catch e console.log per farsi mostrare dei messaggi dagli strumenti del browser (tasto f12, più o meno con tutti, per vederli) e capire se per caso da qualche parte si verifica un errore.
Ma io qui sono al passo precedente:
tu fai caricare un tema.
Il tema inietta delle cose nel browser.
Finché è Css, esso agisce in modo abbastanza autonomo, nel senso che il browser te lo associa al volo all’Html che va a generare.
Quando si tratti di JavaScript, invece, la “difficoltà uno” è fare in modo che la funzione che hai scritto sia effettivamente invocata.
Questo primo step hai capito come risolverlo?

Intanto sto guardando questo:

dal mio punto di vista, il Css è certamente eseguito
ma quei tre file Javascript, agiranno?

(edit: il javascript viene incluso, l’ho visto poi)

Parliamo di questo:
later(() => attachButton(element), 30000);
Quel 30 mila cos’è? Dopo 30 K millisecondi (ma perché così tanto? Son 30 secondi!), dovrebbe chiamare la funzione che fa apparire un pulsante per -suppongo - fare qualcosa col pgn?
Però il pulsante non si vede. Anche cercando sottobanco, la stringa “Generate PNG” (che dovrebbe apparire con l’istruzione

element.innerHTML = “Generate PNG”;

non si trova.
Ci sono alcune possibilità:
1)c’è ma non si vede perché compare dopo, ad html statico già renderizzato
2) ci sarebbe, non fosse che la prima istruzione va in errore perché “element” è null
3) quella funzione non è mai entrata in esecuzione.

In effetti, non vedo il nome dello script “pgn-button.js” nel sorgente della pagina, dove invece trovo altri script:

Difficoltà uno: riusciamo ad assicurarci che lo script venga incluso? Magari è un problema dell’anteprima, che carica solo i Css e non i file js?

Proviamo con un js basico, qualcosa che contenga solo

alert(‘hello, world’);

da mettere lì dove, secondo te, tutto comincia, e vediamo se, applicando il tema, il messaggio appare ogni volta che si apre una pagina del dontpanic?

( e scusa se sei oltre e questo già lo hai fatto)

altrimenti detto: non vedo nulla che faccia caricare davvero il file

(…)discourse-air-theme-pgn—button-from-totp\javascripts\discourse\initializers\pgn-button.js.es6

a meno che tutto quello che sta in quel folder sia attivato a prescindere (ma lo considererei quantomeno preoccupante). Forse andava incluso in quell’ “header.html” che sta in (…)discourse-air-theme-pgn—button-from-totp\common?

comunque, immagino che ti sto dicendo banalità disarmanti - di certo conosci gli strumenti del browser. Tipo questa roba qui:

da cui anche il console che ti logga eventuali errori JS, che però non ci sono
image

cosa che mi fa pensare che quel codice non è stato triggerato. Anzi, che tutto il js non è stato proprio incluso.

Okay, ho guardato meglio: esso c’è

library = "<script src=\"../pgn-viewer/lib/dist.js\" type=\"text/javascript\" ></script>\n";

    // const code = await totp.gen();
    // element.innerHTML = `<div class='totp-code'>${code}</div>`;
    const code = library + "<script>\n" + " PGNV." + mode + "('" + id + "', { pgn: '" + cleaned + "' " + config_string + "})" + "\n</script>\n";
    element.innerHTML = `<div id=${id}>${code}</div>`;
    (0, _runloop.later)(() => attachButton(element), 30);

/pgn-viewer/lib/dist.js
dov’è?

Attualmente è stato rimosso perché è il motore vero e proprio, ma quando è presente il tema ha un errore (ne feci delle schermate tempo fa).
Purtroppo per me non c’è nulla di banale qui, visto che in generale lavoro su altro… Quindi ogni consiglio e dettaglio, anche casomai fosse noto, è grasso che cola. Alla peggio repetita juvant .

Anche io temo che i ks non siano caricati eppure leggevo che ogni file dentro la cartella initializers viene letta in automatico. Per questo ho scelto di toccare il tema anziché creare un plugin che andrebbe ricompilato