No description
Find a file
2026-10-11 11:21:40 +02:00
docs Aggiorna il README e la mappa del progetto: elenco funzionalità allineato alle pagine attuali, rimosso il numero di versione per evitare duplicazioni 2026-10-11 11:21:40 +02:00
tampermonkey-script Merge branch 'main' of https://git.luigidacunto.com/cri/gaia-swissknife 2026-10-11 11:13:23 +02:00
.gitignore Aggiorna il file .gitignore per escludere file e directory aggiuntivi dal controllo di versione 2026-07-12 09:56:48 +02:00
CHANGELOG.md Aggiorna la versione a 1.2.000: form di compilazione massiva nella pagina "Termina corso", condizioni di visibilità per "Copia per LURCH" e "Apri tutti i Curriculum" legate al sotto-tab attivo, guida utente con screenshot 2026-10-11 11:13:04 +02:00
README.md Aggiorna il README e la mappa del progetto: elenco funzionalità allineato alle pagine attuali, rimosso il numero di versione per evitare duplicazioni 2026-10-11 11:21:40 +02:00

🧰 GAIA Swissknife

Tampermonkey script per il portale GAIA (CRI)
Autore: Luigi D'Acunto


📦 Cos'è GAIA Swissknife?

Uno script sviluppato per Tampermonkey che migliora l'usabilità del portale https://gaia.cri.it, introducendo strumenti automatici, ottimizzazioni visive e utilità per gli operatori CRI.


🚀 Installazione

1. Requisiti

  • Estensione Tampermonkey installata su:
    • Chrome / Edge / Brave / Opera
    • Firefox (supportato, ma con piccole differenze di UI)

2. Installazione dello script

🔗 Clicca qui per installare GAIA Swissknife

Oppure:

  1. Apri Tampermonkey
  2. Clicca su "Crea nuovo script"
  3. Incolla il contenuto dello script
  4. Salva e assicurati che sia attivo

🛠️ Funzionalità principali

Ogni funzione è descritta con screenshot nella guida utente; l'elenco sintetico di cosa lo script aggiunge e dove si aggancia è nella mappa del progetto.

✅ Su /aspirante/corso-base/<id>/termina/

  • Tre pulsanti "Ammessi, Positivo, Positivo", "Ammessi, Positivo, Non previsto", "Ammessi, Non previsto, Positivo"
    • Impostano in blocco Ammissione ed Esiti delle due parti per tutti i candidati
  • Form di compilazione massiva (Argomento parte 1/2, Sede di destinazione) con "Applica a tutti i candidati"
    • Compila in un colpo solo i campi per tutti i candidati; ogni casella compare solo se il campo esiste nel corso, senza campi il form non compare
    • I campi lasciati vuoti non sovrascrivono i valori già presenti

✅ Su /aspirante/corso-base/<id>/iscritti/ (tab "Iscrizioni")

  • Pulsante "Apri tutti i Curriculum"
    • Apre in nuove schede i curriculum dei profili presenti nell'elenco visibile, dopo conferma
    • Compare solo con il tab "Iscrizioni" attivo

✅ Su /autorizzazioni/

  • Modale mobile "Richieste Iscrizione"
    • Mostra un riepilogo dei corsi richiesti
    • Permette di selezionare un corso per evidenziare i blocchi e aprire i profili corrispondenti
  • Ottimizzazione menu laterale
    • Unisce le voci duplicate del riquadro "Filtra per..." sommando i contatori
  • Modale mobile, comprimibile e spostabile

✅ Su /aspirante/corso-base/<id>/ (tab "Informazioni")

  • Pulsante "Copia per LURCH (JSON)"
    • Copia in clipboard un JSON con i dati del corso, pronto per essere importato da LURCH
    • Compare solo con il tab "Informazioni" attivo (non su "Termina corso" e altre pagine del corso)

Schema del JSON:

Campo Tipo Formato / Esempio Note
direttore string "Mario Rossi" Vuoto se nessun direttore assegnato
quota boolean true / false true se è prevista una quota di iscrizione
quotaValore number 60 Valore in euro, 0 se gratuito
corso string "Corso per Monitore CRI..." Titolo del corso
protocollo string "TOS/2026/MON-PS/6170" Codice corso estratto dal titolo pagina
linkGaia string (URL) "https://gaia.cri.it/aspirante/corso-base/66398/" Link diretto alla pagina corso
dataInizio string (ISO 8601) "2026-09-27T09:00:00" Data/ora di inizio corso, null se assente
dataEsame string (ISO 8601) "2026-11-22T09:00:00" Data/ora dell'esame finale, null se assente
scadenzaDomande string (ISO 8601) "2026-08-15T16:00:00" Termine ultimo per le domande di ammissione, null se assente

Le date sono in formato ISO 8601 senza timezone (YYYY-MM-DDTHH:MM:SS), direttamente parsabile con Carbon::parse() lato Laravel.


✅ Su /courses/catalog/

  • Pulsante "Copia catalogo corsi (JSON)"
    • Estrae tutti i corsi con nome, codice, livello, tipo, obiettivo e copia in clipboard

✅ Su /us/elenchi/volontari/

  • Pulsante "Copia struttura sedi (JSON)"
    • Estrae la gerarchia Regionale > Locale > Sottosedi e copia in clipboard

✅ Su pagine con selezione sedi

  • Tool "Sede preferita"
    • Select persistente per salvare la sede preferita, pulsante "Solo preferito" e "Seleziona tutto"

✅ Su /profilo/<id>/curriculum/

  • Trasformazione della tabella curriculum in DataTable
    • Senza paginazione, ricerca ("Filtra qualifiche") e ordinamento per Tipo e Nome e Stato
    • Colorazione della cella Tipo per tipologia di qualifica
    • Evidenziazione rossa delle righe con stato Respinto
  • Ricostruzione visuale colonna "Dettagli"
    • Una riga per informazione, con la sua icona
    • Testi e nomi di file lunghi tagliati con ellissi e tooltip

🧩 Note tecniche

  • Lo script attiva automaticamente le funzioni solo sulle pagine dove sono necessarie
  • Non altera il comportamento del portale originario
  • Funzioni modulari facilmente estendibili

🧪 Changelog

📖 Visualizza changelog completo

La versione corrente è nell'intestazione dello script (@version); la cronologia completa è nel changelog.

📘 Guida all'uso con screenshot: docs/guida-utente


🙌 Autore

Luigi D'Acunto
💻 luigidacunto.com
📫 info@luigidacunto.com


📄 Licenza

Distribuito sotto licenza MIT – Open Source.
Puoi leggere il testo completo qui: LICENSE

Attenzione: questo script non è uno strumento ufficiale del portale GAIA o della Croce Rossa Italiana.

Lo script non altera in alcun modo dati, privacy o integrità del portale.
Tutte le modifiche sono locali, lato browser dell'utente e vengono applicate solo se:

  • Tampermonkey è installato
  • Lo script GAIA Swissknife è attivo

In qualsiasi momento l’utente può disattivarlo o rimuoverlo.

Le modifiche migliorano solo l'interfaccia utente e l'esperienza di utilizzo, senza interferire con le funzionalità originali del portale.