Lista delle feature da implementare

Qui una lista delle feature da implementare, così non ci dimentichiamo:

  • FIX: rimuovere il codice da PgnViewerJS che impone di abilitare unsafe-eval nel sito
    Molto importante al fine di pubblicare il tema su meta.discourse.org
    .
    Per qualche oscuro motivo[^1], il tema ora funziona anche senza modifiche. Probabilmente il bug [ stato risolto in qualche versione precedente del componente.

  • Stile, tema e altri aggiustamenti grafici:
    dovrebbe essere disponibile sia un default che una specifica per post, così che chi posta una partita possa usare i pezzi e la scacchiera che preferisce. Eviterei di modificare la larghezza, ma potremmo parametrare da pannello amministratore la dimensione per le versioni web e mobili

  • Layout:
    Si può stabilire il layout “left” di default, con scacchiera a sinistra e pgn a destra, mentre “top” per la versione mobile
    Questo potrebbe agevolare la lettura.

  • FEN: :white_check_mark:
    dovrebbe essere possibile incollare anche i fen oltre che i pgn, in modo da permettere di illustrare una posizione senza postare la gif e senza dover fare movimenti acrobatici. Sarebbe simpatico forkare PgnViewerJS per implementare la sovraimpressione delle frecce…
    Nota implementativa: invece di usare lo stesso blocco code+pgn+entry di configurazione per caricare il fen, sarebbe più facilmente implementabile e intuitivo usare un blocco code+fen.
    Meglio ancora: con la semplice regex ([^/]+\/){5}.+ si riesce a identificare una stringa FEN e a modificare la chiamata al motore. Fatto!

  • Rotazione della scacchiera: :white_check_mark:
    Il componente js permette di ruotare la scacchiera con i neri in basso. Utilissimo!
    Usare config=orientation:black

  • Tratto: :white_check_mark:
    Il componente permette anche di inserire e muovere il tratto - pallino bianco o nero che indica a chi tocca la mossa
    Vedere settings

  • Copia del PGN/FEN originale, tramite pulsante.
    Sarebbe davvero molto utile, per poter agilmente copiare la partita per incollarla, per esempio, su un motore di analisi.

  • Editor:
    Sarebbe opportuno inserire dei bottoni nell’editor in modo da agevolare l’inserimento del PGN

  • Documentazione e Readme:
    Questo è abbastanza importante affinché si possa correttamente pubblicare su discourse. Servirebbe un volontario.
    Readme :white_check_mark:

  • Bug: i caratteri speciali come “>” vengono codificati html (>) e poi ancora trasformati per rimuovere l’escape (gt) e quindi il testo si scassa. Vedere questo post.
    Probabilmente e’ un problema del blocco code. Notare che nel testo normale la sequenza (entity) html viene decodificata al volo: >.

Anything else?

La guida è qui: piccola guida alle scacchiere.

1 Mi Piace

Potrei provarci io, appena possibile

Un bottone dedicato anziché scrivere il wrap a mano?

Esatto.
Cmq meglio usare il blocco code invece:

```pgn
1. e4 d6
```

Come si fa a inserire commenti e varianti?

Credo commenti con le graffe, varianti con le tonde:

1. e4 c6 2. d4 d5 3. e5 { Variante di spinta }
( 3. exd5 {variante di cambio} )
( 3. Nc3 {variante principale, anche 3. Nd2 variante Kasparov } )
```pgn
1. e4 c6 2. d4 d5 3. e5 { Variante di spinta }
( 3. exd5 {variante di cambio} )
( 3. Nc3 {variante principale, anche 3. Nd2  variante Kasparov })
```

Bisogna senz’altro aggiustare il layout. Credo di possa fare da CSS, tra l’altro, ma boh.

Sto preparando delle istruzioni, piano piano

prima versione della wiki è pronta:

Ho provato a spostare la wiki del babbano dentro la sezione Comunicazioni Importanti, ma mi ha dato errore di permessi. @HC potresti controllare per favore?
Se vedete qualcosa che va rioridanto o messa una etichetta apposita o appuntato, fatelo, così abbiamo tutto in ordine

subito, capo!

Per la creazione del bottone, stavo guardando il codice di applySpoiler, che è molto semplice. Secondo bastarebbe cambiare il nome e funziona già tutto, se il codice si mette dentro un apply-pgn-js.es6 (che è l’estesione di discourse per i JS proprietari):

/**
  Apply our spoilers when the app boots
**/
import { withPluginApi } from 'discourse/lib/plugin-api';
import ComposerController from 'discourse/controllers/composer';
import spoilContent from 'discourse/plugins/discourse-awesome-bbcodes/jquery/spoiler';

function initializeSpoiler(api) {
  const siteSettings = api.container.lookup('site-settings:main');
  if (!siteSettings.awesome_bbcodes_spoiler_enabled) { return; }

  api.decorateCooked(function($elem) {
    // text
    //not(:has(img))
    spoilContent.call($('.spoiler', $elem).removeClass('spoiler').addClass('spoiled'), $elem)
  });

  api.addToolbarPopupMenuOptionsCallback(() => {
    return {
      action: 'insertSpoiler',
      icon: 'magic',
      label: 'spoiler.title'
    };
  });

  ComposerController.reopen({
    actions: {
      insertSpoiler() {
        this.get("toolbarEvent").applySurround("[spoiler]", "[/spoiler]", "spoiler_text");
      }
    }
  });
}

export default {
  name: "awesome-bbcodes-apply-spoilers",
  initialize: function(container) {
    withPluginApi('0.5', initializeSpoiler);
  }
};

Grazie, darò una occhiata appena possibile.

Conviene discutere qui i problemi della guida ad esepmio per evitare di sporcare il thread che dovrebbe essere quello guida per gli utenti. Provo a sistemare la formattazione il prima possibile (purtorppo ho notato che il bbcode veloce rende difficile mettere spazi o simili senza che siano interpretati in altro modo, rendendo la visualizzazione un po’ sballata), le funzionalità per adesso le lascerei tutte, anche se non implementate. Un po’ per evitare di toccarle in futuro, un po’ perché ci si aspetta che prima o poi lo siano

Ce l’ho fatta! Ho aggiunto il seguente blocco nel CSS di Air Come si chiama.

.whole.layout-top .moves {
    overflow: visible;
    text-wrap: balance;
}

Se c’e’ spazio, lo aggiungerei nella guida, puo’ essere interessante per gli installatori.

Ehmm esattamente cosa serve? Così almeno lo so spiegare!

A togliere quelle fastidione barre di scroll dal testo della partita e a mandare a capo il testo correttamente.
L’unica cosa che resta è che se il testo è troppo lungo, la box delle mosse non viene espansa.

Lo segnalo il prima possibile :slight_smile:

Non so se tu l’abbia già corretto, ma il css precedente scasina le partite lunghe come nel caso del babbano. Una versione migliore è

.whole.layout-top .moves {
    overflow-x: visible;
    overflow-y: auto;
    text-wrap: balance;
}

Non ho fatto nulla, mi è passato di mente…