Innanzitutto grazie @StellarClown , secondo spero tu possa perdonarmi perché scriverò un botto di roba.
L’idea è riuscire a vedere una partita a scacchi tramite notazione FEN.
Esiste un motore che fa il rendering ed è questo:
Sono riuscito a compilarlo e ho un unico .JS che si può usare.
Come integrarlo? WordPress ha una interfaccia sua e già le API per i suoi BBCode.
Noi usando la piattaforma Discourse di bianco usare altro, ma almeno il parser, ossia quello che leggerà un ipotetico BBCode così:
[pgnv width=100]
E1. d7
[\pgnv]
Penso si possa riciclare.
Quindi abbiamo una sorta di gerarchia di wrapper:
- il motore (chiamato anche dist.js) vero e proprio che interpreta il FEN dentro il tag di apertura e di chiusura
- il.parser (quello di WS?) Che leggere i parametri accessori (tipo il width di cui sopra), sovrascrivendo i valori di default e creerà la stringa per la chiamata al motore.
Tale stringa è un HTML di questo tipo:
JavaScript
var board = PGNV.pgnBoard(‘board’, {});
HTML
<div id=“board” style=“width: 400px”>
Qui tutta la documentazione:
- infine come creare un nuovo BBCode per Discourse.
Qui ho fatto tre tentativi, creando un tema apposito (per i plugin vanno ricompilati) per ognuno sapendo che il contenuto di initializers sarà caricato (in teoria).
Il primo è basato sul motore integrato di markit-down
Developer's guide to Markdown extensions - developers - Discourse Meta
Ossia usando questo
function amazingMarkdownItInline(state, silent) {
// standard markdown it inline extension goes here.
return false;
}
export function setup(helper) {
if(!helper.markdownIt) { return; }
helper.registerOptions((opts,siteSettings)=>{
opts.features.[‘my_extension’] = !!siteSettings.my_extension_enabled;
});
helper.allowList([‘span.amazing’, ‘div.amazing’]);
helper.registerPlugin(md=>{
md.inline.push(‘amazing’, amazingMarkdownItInline);
});
}
Il secondo cercando di creare un nuovo BBCode usando alcuni nuovi creati in awesome BBCode
E un terzo cercando di sfruttare l’interfaccia (con tasto ad icona!) di un altro plugin, come l’OTP
GitHub - discourse/discourse-totp-markdown: Theme component for displaying totp codes in markdown.
Problemi.
- non conosco JavaScript quindi ho fatto accrocchi basandomi su revese engineering totalmente euristico (leggi mezzo a casaccio).
- se metto il motore dist.js, il tema non viene caricato. Quindi mi sono concentrato sull’interfaccia (vedi i tre temi)
- i temi sono caricati ma sembra che non venga eseguito nulla o non sia caricato il JS introdotto.
I temi si possono vedere in anteprima senza metterli subito in uso, e c’è la console di amministrazione per vedere errori e messaggi.