# 🧰 GAIA Swissknife **Tampermonkey script per il portale GAIA (CRI)** Autore: [Luigi D'Acunto](https://luigidacunto.com) --- ## 📦 Cos'è GAIA Swissknife? Uno script sviluppato per **Tampermonkey** che migliora l'usabilità del portale [https://gaia.cri.it](https://gaia.cri.it), introducendo strumenti automatici, ottimizzazioni visive e utilità per gli operatori CRI. --- ## 🚀 Installazione ### 1. Requisiti - Estensione **[Tampermonkey](https://www.tampermonkey.net/)** installata su: - Chrome / Edge / Brave / Opera - Firefox (supportato, ma con piccole differenze di UI) ### 2. Installazione dello script 🔗 [**Clicca qui per installare GAIA Swissknife**](https://luigidacunto.com/scripts/gaia-swissknife/tampermonkey-script/GAIA-Swissknife.user.js) 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](docs/guida-utente/00-indice.md); l'elenco sintetico di cosa lo script aggiunge e dove si aggancia è nella [mappa del progetto](docs/mappa-progetto.md). ### ✅ Su `/aspirante/corso-base//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//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//` (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//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](https://gitlab.luigidacunto.com/consultant/gaia-swissknife/-/blob/main/CHANGELOG.md) La versione corrente è nell'intestazione dello script (`@version`); la cronologia completa è nel changelog. 📘 Guida all'uso con screenshot: [docs/guida-utente](docs/guida-utente/00-indice.md) --- ## 🙌 Autore **Luigi D'Acunto** 💻 [luigidacunto.com](https://luigidacunto.com) 📫 info@luigidacunto.com --- ## 📄 Licenza Distribuito sotto licenza **MIT** – Open Source. Puoi leggere il testo completo qui: [LICENSE](https://opensource.org/licenses/MIT) > **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**.