diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e5137a..b694d0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,16 +1,5 @@ # 🧰 GAIA Swissknife – Changelog -## v1.2.000 – 2026-10-11 -- Pagina `/termina/`: nuovo mini-form di **compilazione massiva** sotto i pulsanti "Ammessi.." (Argomento parte 1, Argomento parte 2, Sede di destinazione) con pulsante "Applica a tutti i candidati" - - Ogni campo compare solo se presente nella pagina; senza campi il form non compare - - I campi lasciati vuoti non sovrascrivono i valori già presenti -- **"Copia per LURCH (JSON)"** compare solo con il sotto-tab "Informazioni" attivo (non più su `/termina/` e sulle altre pagine del corso) -- **"Apri tutti i Curriculum"** richiede il sotto-tab "Iscrizioni" attivo e la sidebar presente; rimosso il pulsante fisso in alto a destra che compariva negli iframe della lista iscritti -- Aggiunta la guida utente in `docs/guida-utente/` con screenshot (dati personali oscurati) - -## v1.1.011 – 2026-05-13 -- Aggiunti al JSON "Copia per LURCH" i campi `dataInizio`, `dataEsame` e `scadenzaDomande` (formato ISO 8601) - ## v1.1.010 – 2026-05-12 - Aggiunto pulsante **"Copia per LURCH (JSON)"** nella sidebar delle pagine corso (`/aspirante/corso-base/`) - Estrae e copia in clipboard: Direttore, Quota (bool), QuotaValore (numerico), Corso (nome), Protocollo, Link GAIA diff --git a/README.md b/README.md index 076d74a..1747ec0 100644 --- a/README.md +++ b/README.md @@ -38,8 +38,6 @@ Oppure: ### ✅ Su `/termina/` - Pulsante **"Tutti Ammessi / Esito Positivo"** - Compila automaticamente tutti i campi con "AM" e "P" -- Form di **compilazione massiva** (Argomento parte 1/2, Sede di destinazione) - - Compila in un colpo solo i campi per tutti i candidati; compare solo per i campi presenti nel corso --- @@ -122,11 +120,7 @@ Le date sono in formato **ISO 8601 senza timezone** (`YYYY-MM-DDTHH:MM:SS`), dir 📖 [Visualizza changelog completo](https://gitlab.luigidacunto.com/consultant/gaia-swissknife/-/blob/main/CHANGELOG.md) -Ultima versione: **v1.2.000** -- Nuovo form di compilazione massiva nella pagina "Termina corso"; "Copia per LURCH" solo nel tab "Informazioni"; "Apri tutti i Curriculum" solo nel tab "Iscrizioni" -- Guida utente completa in `docs/guida-utente/` - -v1.1.011: +Ultima versione: **v1.1.011** - Aggiunti al JSON "Copia per LURCH" i campi `dataInizio`, `dataEsame` e `scadenzaDomande` (formato ISO 8601) v1.1.010: diff --git a/docs/guida-utente/00-indice.md b/docs/guida-utente/00-indice.md deleted file mode 100644 index e3a61b0..0000000 --- a/docs/guida-utente/00-indice.md +++ /dev/null @@ -1,65 +0,0 @@ -# Guida all'uso di GAIA Swissknife - -GAIA Swissknife è uno script (Tampermonkey) che aggiunge pulsanti e strumenti alle pagine di GAIA. Gli strumenti compaiono nella colonna di sinistra, sotto il titolo **GAIA Swissknife**, solo nelle pagine in cui sono utili. - -## Come leggere questa guida - -Ogni funzione ha una scheda separata, con un'etichetta che dice dove è disponibile: - -- **Funzione specifica**: compare solo in una pagina (o in una sezione) precisa di GAIA. -- **Funzione generica**: compare in più pagine, o in tutte quelle di un certo tipo. - -Quando una procedura ha più passaggi sulla stessa schermata, nelle immagini i passaggi sono indicati da **bolle colorate con il numero** e da riquadri dello stesso colore. - -> Nelle immagini i dati personali (nomi e codici fiscali, codici dei corsi, nomi dei comitati) sono oscurati di proposito. - -## Indice - -Le cartelle e i file sono numerati (`NN-`) per mantenere un ordine di lettura stabile; ogni cartella raccoglie le funzioni di una pagina o di un'area di GAIA. - -### 01 - Pagina "Termina corso" - -Funzioni specifiche della pagina di chiusura del corso base (`/aspirante/corso-base//termina/`). - -| N. | Funzione | Tipo | -|---|---|---| -| 01 | [Pulsanti esiti "Ammessi.."](01-pagina-termina-corso/01-pulsanti-esiti-ammessi.md) | Specifica | -| 02 | [Compilazione massiva del verbale](01-pagina-termina-corso/02-compilazione-massiva-verbale.md) | Specifica | - -### 02 - Pagina "Iscrizioni" del corso - -| N. | Funzione | Tipo | -|---|---|---| -| 01 | [Apri tutti i Curriculum](02-pagina-iscrizioni-corso/01-apri-tutti-i-curriculum.md) | Specifica | - -### 03 - Pagina "Richieste" (autorizzazioni) - -| N. | Funzione | Tipo | -|---|---|---| -| 01 | [Filtri della colonna laterale accorpati](03-pagina-autorizzazioni/01-filtri-sidebar-accorpati.md) | Specifica | -| 02 | [Strumento richieste di iscrizione](03-pagina-autorizzazioni/02-strumento-richieste-iscrizione.md) | Specifica | - -### 04 - Pagina "Curriculum" di un profilo - -| N. | Funzione | Tipo | -|---|---|---| -| 01 | [Tabella ordinabile e filtrabile](04-pagina-curriculum/01-tabella-ordinabile-filtrabile.md) | Specifica | -| 02 | [Colori per tipologia](04-pagina-curriculum/02-colori-per-tipologia.md) | Specifica | -| 03 | [Evidenzia "Respinto"](04-pagina-curriculum/03-evidenzia-respinto.md) | Specifica | -| 04 | [Celle dei dettagli ordinate](04-pagina-curriculum/04-celle-dettaglio-ordinate.md) | Specifica | - -### 05 - Sedi, elenchi e catalogo - -| N. | Funzione | Tipo | -|---|---|---| -| 01 | [Sede preferita](05-sedi-elenchi-e-catalogo/01-sede-preferita.md) | **Generica** (tutte le pagine con tabella sedi) | -| 02 | [Copia struttura sedi (JSON)](05-sedi-elenchi-e-catalogo/02-copia-struttura-sedi.md) | Specifica | -| 03 | [Copia catalogo corsi (JSON)](05-sedi-elenchi-e-catalogo/03-copia-catalogo-corsi.md) | Specifica | - -### Non ancora documentato - -- **Copia per LURCH (JSON)**: documentazione rimandata. - -## Panoramica tecnica - -Per l'elenco sintetico di tutto ciò che lo script aggiunge a GAIA, con i punti della pagina in cui si aggancia, vedi la [mappa del progetto](../mappa-progetto.md). diff --git a/docs/guida-utente/01-pagina-termina-corso/01-pulsanti-esiti-ammessi.md b/docs/guida-utente/01-pagina-termina-corso/01-pulsanti-esiti-ammessi.md deleted file mode 100644 index f1ea1ce..0000000 --- a/docs/guida-utente/01-pagina-termina-corso/01-pulsanti-esiti-ammessi.md +++ /dev/null @@ -1,49 +0,0 @@ -# Pulsanti esiti "Ammessi.." - -**Tipo: funzione specifica** — compare solo nella pagina **Termina corso** (`/aspirante/corso-base//termina/`), e solo se la pagina contiene l'elenco dei candidati da compilare. - -## A cosa serve - -Nella compilazione del verbale, per ogni candidato bisogna scegliere l'**Ammissione** e l'**Esito** di ciascuna parte dell'esame. Con molti candidati ammessi e promossi sono decine di selezioni identiche. - -I tre pulsanti impostano questi tre valori **in un solo clic, per tutti i candidati**. - -## Dove si trovano - -Nella colonna di sinistra, sotto il titolo "GAIA Swissknife" (riquadri rossi, bolle **1**). Sono sopra il [form di compilazione massiva](02-compilazione-massiva-verbale.md) (bolla **2**). - -![Colonna di sinistra con i tre pulsanti esiti e il form di compilazione massiva](img/01-sidebar-esiti-e-form.png) - -## I tre pulsanti - -| Pulsante | Ammissione | Esito parte 1 | Esito parte 2 | -|---|---|---|---| -| **Ammessi, Positivo, Positivo** (blu) | Ammesso | Positivo | Positivo | -| **Ammessi, Positivo, Non previsto** (verde) | Ammesso | Positivo | Non previsto | -| **Ammessi, Non previsto, Positivo** (viola) | Ammesso | Non previsto | Positivo | - -Si usa il pulsante che corrisponde alla struttura dell'esame del corso: due parti entrambe previste, oppure una sola delle due. - -## Cosa cambia nella pagina - -Il pulsante compila i tre campi evidenziati dalla bolla **1** per **ogni** candidato dell'elenco. Prima del clic i campi sono vuoti (`---------`): - -![Campi del candidato prima del clic](img/02-campi-candidato.png) - -Dopo il clic (esempio con "Ammessi, Positivo, Positivo") Ammissione ed Esiti sono impostati; i campi con la bolla **2** sono compilati dal [form di compilazione massiva](02-compilazione-massiva-verbale.md): - -![Campi del candidato dopo il clic](img/03-campi-compilati.png) - -## Procedura - -1. Apri la pagina **Termina corso** del corso. -2. Nella colonna di sinistra clicca il pulsante che corrisponde all'esame svolto. -3. Scorri l'elenco e controlla i candidati: i valori sono ora impostati per tutti. -4. Correggi a mano i candidati che fanno eccezione (per esempio un non ammesso o un esito negativo). -5. In fondo alla pagina premi **Salva e continua**. - -## Attenzione - -- Il pulsante **sovrascrive** Ammissione ed Esiti di **tutti** i candidati, anche se li avevi già compilati diversamente: correggi le eccezioni **dopo** averlo premuto, non prima. -- Le modifiche **non sono salvate** finché non premi **Salva e continua** in fondo alla pagina. Se chiudi o ricarichi la pagina prima, vanno perse. -- I pulsanti non toccano gli altri campi del candidato (motivo di non ammissione, argomenti, sede, caselle di spunta). diff --git a/docs/guida-utente/01-pagina-termina-corso/02-compilazione-massiva-verbale.md b/docs/guida-utente/01-pagina-termina-corso/02-compilazione-massiva-verbale.md deleted file mode 100644 index 112e8bc..0000000 --- a/docs/guida-utente/01-pagina-termina-corso/02-compilazione-massiva-verbale.md +++ /dev/null @@ -1,46 +0,0 @@ -# Compilazione massiva del verbale - -**Tipo: funzione specifica** — compare solo nella pagina **Termina corso** (`/aspirante/corso-base//termina/`), sotto i pulsanti [esiti "Ammessi.."](01-pulsanti-esiti-ammessi.md). - -## A cosa serve - -Nel verbale ogni candidato ha, a seconda del corso, questi campi liberi: - -- **Argomento parte 1** -- **Argomento parte 2** -- **Sede di destinazione** - -Spesso il valore è lo stesso per tutti. Questo piccolo form permette di scriverlo **una volta sola** e di applicarlo a **tutti i candidati** con un pulsante di conferma. - -## I campi compaiono solo se servono - -Il form si adatta al corso: - -- ogni casella compare **solo se il corso ha quel campo** nel verbale (per esempio, se il corso non prevede "Argomento parte 2", la casella non viene mostrata); -- se il corso non ha **nessuno** di questi campi, **il form non compare** e restano solo i tre pulsanti "Ammessi..". - -## Come si usa - -I passaggi sono numerati nell'immagine: - -![Form di compilazione massiva con i passaggi numerati](img/04-form-compilazione-massiva.png) - -1. **Scrivi gli argomenti** nelle caselle "Argomento parte 1" e "Argomento parte 2" (bolle **1**). -2. **Scegli la sede** dal menu "Sede di destinazione" (bolla **2**): le sedi elencate sono quelle disponibili nel menu dei candidati. -3. Premi **Applica a tutti i candidati** (bolla **3**). Per qualche secondo il pulsante mostra "✓ Applicato!". -4. Scorri l'elenco: i campi di **ogni candidato** contengono ora i valori inseriti. -5. In fondo alla pagina premi **Salva e continua**. - -Risultato sul singolo candidato (bolla **2** nell'immagine; la bolla **1** è l'effetto dei [pulsanti esiti](01-pulsanti-esiti-ammessi.md)): - -![Campi argomento e sede compilati sul candidato](img/03-campi-compilati.png) - -## Campi vuoti - -Un campo **lasciato vuoto** (casella senza testo, menu su "---------") **non viene applicato**: i valori già scritti nei candidati restano come sono. Così si può, per esempio, applicare solo la sede senza toccare gli argomenti. - -## Attenzione - -- Il pulsante **sovrascrive** il campo di **tutti** i candidati con il valore inserito, compresi quelli già compilati a mano: correggi le eccezioni dopo averlo premuto. -- Le modifiche **non sono salvate** finché non premi **Salva e continua** in fondo alla pagina. Se chiudi o ricarichi la pagina prima, vanno perse. -- Il form applica i valori anche ai candidati non ammessi: se per loro i campi vanno lasciati vuoti, svuotali a mano. diff --git a/docs/guida-utente/01-pagina-termina-corso/img/01-sidebar-esiti-e-form.png b/docs/guida-utente/01-pagina-termina-corso/img/01-sidebar-esiti-e-form.png deleted file mode 100644 index 24197ed..0000000 Binary files a/docs/guida-utente/01-pagina-termina-corso/img/01-sidebar-esiti-e-form.png and /dev/null differ diff --git a/docs/guida-utente/01-pagina-termina-corso/img/02-campi-candidato.png b/docs/guida-utente/01-pagina-termina-corso/img/02-campi-candidato.png deleted file mode 100644 index c82f4a6..0000000 Binary files a/docs/guida-utente/01-pagina-termina-corso/img/02-campi-candidato.png and /dev/null differ diff --git a/docs/guida-utente/01-pagina-termina-corso/img/03-campi-compilati.png b/docs/guida-utente/01-pagina-termina-corso/img/03-campi-compilati.png deleted file mode 100644 index 4dd3e60..0000000 Binary files a/docs/guida-utente/01-pagina-termina-corso/img/03-campi-compilati.png and /dev/null differ diff --git a/docs/guida-utente/01-pagina-termina-corso/img/04-form-compilazione-massiva.png b/docs/guida-utente/01-pagina-termina-corso/img/04-form-compilazione-massiva.png deleted file mode 100644 index 7b4f984..0000000 Binary files a/docs/guida-utente/01-pagina-termina-corso/img/04-form-compilazione-massiva.png and /dev/null differ diff --git a/docs/guida-utente/02-pagina-iscrizioni-corso/01-apri-tutti-i-curriculum.md b/docs/guida-utente/02-pagina-iscrizioni-corso/01-apri-tutti-i-curriculum.md deleted file mode 100644 index 6bbbbb1..0000000 --- a/docs/guida-utente/02-pagina-iscrizioni-corso/01-apri-tutti-i-curriculum.md +++ /dev/null @@ -1,40 +0,0 @@ -# Apri tutti i Curriculum - -**Tipo: funzione specifica** — compare solo nella pagina **Iscrizioni** di un corso (`/aspirante/corso-base//iscritti/`), con il sotto-tab "Iscrizioni" attivo. - -## A cosa serve - -Per valutare gli iscritti a un corso spesso serve consultare il curriculum di ciascuno. Aprirli uno alla volta dall'elenco richiede molti clic: questo pulsante apre **tutti i curriculum elencati in nuove schede del browser**, con un solo clic. - -## Dove si trova - -Nella colonna di sinistra, sotto il titolo "GAIA Swissknife" (bolla **1**), solo quando il sotto-tab **Iscrizioni** è quello attivo (bolla **2**). Il pulsante usa l'elenco degli iscritti mostrato nella pagina (riquadro **3**). - -![Pagina Iscrizioni con il pulsante Apri tutti i Curriculum](img/01-apri-tutti-i-curriculum.png) - -Il pulsante non compare nelle altre pagine del corso (Informazioni, Termina corso, ecc.). - -## Procedura - -1. Apri il corso e vai al sotto-tab **Iscrizioni**. -2. Se serve, usa il campo **Filtra elenco** per restringere la lista. -3. Nella colonna di sinistra clicca **Apri tutti i Curriculum**. -4. Il browser chiede conferma con il numero di profili da aprire ("Vuoi aprire N profili in nuove schede?"): controlla il numero e conferma. -5. I curriculum si aprono ciascuno in una nuova scheda. - -## Cosa apre esattamente - -- Apre i profili **presenti nell'elenco visibile**, cioè quelli della **pagina dell'elenco** in cui ti trovi (nell'immagine "Pag. 1 di 2"). Per aprire anche gli altri, passa alla pagina successiva dell'elenco e ripeti. -- Se hai filtrato l'elenco, apre solo i profili filtrati. -- Ogni scheda mostra il curriculum del profilo, nella pagina descritta in [Pagina curriculum](../04-pagina-curriculum/01-tabella-ordinabile-filtrabile.md). - -## Dove funziona - -- Funziona nei corsi i cui iscritti hanno un curriculum consultabile (per esempio i corsi per Coordinatore delle Attività di Emergenza o per Trainer). -- **Non è utile nei corsi base per aspiranti volontari**: gli iscritti non sono ancora volontari, quindi il loro curriculum non è disponibile e le schede si aprono con un errore di accesso. - -## Attenzione - -- Con molti iscritti si aprono **molte schede insieme**: controlla il numero nella finestra di conferma prima di accettare. -- Se il browser blocca i popup, abilita le finestre a comparsa per `gaia.cri.it`, altrimenti si aprirà solo una parte delle schede. -- Se l'elenco non è ancora stato caricato, compare un avviso ("Nessun profilo trovato"): attendi che la lista sia visibile e riprova. diff --git a/docs/guida-utente/02-pagina-iscrizioni-corso/img/01-apri-tutti-i-curriculum.png b/docs/guida-utente/02-pagina-iscrizioni-corso/img/01-apri-tutti-i-curriculum.png deleted file mode 100644 index 5264179..0000000 Binary files a/docs/guida-utente/02-pagina-iscrizioni-corso/img/01-apri-tutti-i-curriculum.png and /dev/null differ diff --git a/docs/guida-utente/03-pagina-autorizzazioni/01-filtri-sidebar-accorpati.md b/docs/guida-utente/03-pagina-autorizzazioni/01-filtri-sidebar-accorpati.md deleted file mode 100644 index f97b394..0000000 --- a/docs/guida-utente/03-pagina-autorizzazioni/01-filtri-sidebar-accorpati.md +++ /dev/null @@ -1,26 +0,0 @@ -# Filtri della colonna laterale accorpati - -**Tipo: funzione specifica** — agisce solo nella pagina **Richieste** (`/autorizzazioni/`). - -## A cosa serve - -Nella colonna di sinistra della pagina Richieste, il riquadro **Filtra per...** elenca i tipi di richiesta in attesa (per esempio "Fototessera", "Estensione", "Iscrizione Corso") con un contatore. Quando lo stesso tipo compare **più volte**, lo script **unisce le voci duplicate in una sola**, sommando i contatori, così l'elenco resta corto e il totale di ogni tipo si legge a colpo d'occhio. - -## Dove si trova - -Nel riquadro **Filtra per...** della colonna di sinistra (riquadro rosso, bolla **1**). - -![Riquadro Filtra per... con le voci accorpate](img/01-filtri-sidebar.png) - -## Come si usa - -La funzione è automatica: non ci sono pulsanti da premere. - -1. Apri la pagina **Richieste**. -2. Nel riquadro **Filtra per...** trovi una sola voce per tipo di richiesta, con il numero totale accanto (nell'esempio: Fototessera 1, Estensione 8, Iscrizione Corso 13). -3. Clicca una voce per filtrare la lista delle richieste su quel tipo. - -## Attenzione - -- Il contatore mostra la **somma** di tutte le voci con lo stesso nome; il clic sulla voce apre il filtro della **prima** di quelle voci. Se il numero in elenco non coincide con il contatore, la differenza dipende dalle voci duplicate accorpate. -- Nel riquadro vengono riportate solo le voci **con un contatore numerico**: una voce senza numero accanto non compare più nell'elenco accorpato. diff --git a/docs/guida-utente/03-pagina-autorizzazioni/02-strumento-richieste-iscrizione.md b/docs/guida-utente/03-pagina-autorizzazioni/02-strumento-richieste-iscrizione.md deleted file mode 100644 index 35c72a1..0000000 --- a/docs/guida-utente/03-pagina-autorizzazioni/02-strumento-richieste-iscrizione.md +++ /dev/null @@ -1,39 +0,0 @@ -# Strumento richieste di iscrizione - -**Tipo: funzione specifica** — compare solo nella pagina **Richieste** (`/autorizzazioni/`), quando tra le richieste in attesa ce ne sono di **iscrizione a un corso**. - -## A cosa serve - -Quando arrivano molte richieste di iscrizione a corsi diversi, è scomodo capire quante ce ne sono per ciascun corso e controllare i curriculum dei richiedenti. Lo strumento: - -- **riassume** le richieste per corso, con il numero e il collegamento al corso; -- **evidenzia in verde** le richieste del corso scelto; -- **elenca i profili** dei richiedenti e apre **tutti i loro curriculum** con un clic. - -## Dove si trova - -Si apre da solo come **finestra mobile** nell'angolo in alto a destra della pagina, con il titolo "GAIA Swissknife – Richieste iscrizione". Nell'immagine è mostrato dopo aver scelto un corso: - -![Strumento richieste di iscrizione con i passaggi numerati](img/02-strumento-richieste-iscrizione.png) - -## Come si usa - -1. Leggi il **riepilogo** (bolla **1**): per ogni corso trovato è indicato il numero di richieste; il codice del corso è un collegamento alla pagina del corso. -2. Scegli un corso dal menu **Seleziona un corso** (bolla **2**). -3. Premi **Recupera Profili** (bolla **3**). -4. Le richieste di quel corso diventano **verdi** nella lista a sinistra, così si riconoscono subito tra le altre. -5. Nella finestra compare l'elenco dei richiedenti (bolla **5**), ciascuno con il collegamento al suo curriculum. -6. Per aprire tutti i curriculum premi **Apri tutti i Curriculum** (bolla **4**): ogni curriculum si apre in una nuova scheda. - -## Muovere e ridurre la finestra - -- **Spostare**: trascina la barra blu del titolo; la finestra resta sempre dentro lo schermo. -- **Ridurre/espandere**: il pulsante **−** (a destra del titolo) nasconde il contenuto e lascia solo la barra; con **+** si riapre. - -## Attenzione - -- Per scegliere un corso bisogna selezionarne uno: senza selezione compare l'avviso "Seleziona un codice corso". -- Scegliendo un altro corso, l'evidenziazione verde precedente viene azzerata. -- Come per [Apri tutti i Curriculum](../02-pagina-iscrizioni-corso/01-apri-tutti-i-curriculum.md), i curriculum si aprono in **molte schede insieme**; se il browser blocca i popup, abilita le finestre a comparsa per `gaia.cri.it`. -- Per i **corsi base destinati ad aspiranti volontari** il curriculum dei richiedenti non è consultabile: lo strumento serve soprattutto per gli altri corsi. -- La finestra non compare se nella pagina non ci sono richieste di iscrizione a un corso. diff --git a/docs/guida-utente/03-pagina-autorizzazioni/img/01-filtri-sidebar.png b/docs/guida-utente/03-pagina-autorizzazioni/img/01-filtri-sidebar.png deleted file mode 100644 index 29903d3..0000000 Binary files a/docs/guida-utente/03-pagina-autorizzazioni/img/01-filtri-sidebar.png and /dev/null differ diff --git a/docs/guida-utente/03-pagina-autorizzazioni/img/02-strumento-richieste-iscrizione.png b/docs/guida-utente/03-pagina-autorizzazioni/img/02-strumento-richieste-iscrizione.png deleted file mode 100644 index f7dae6a..0000000 Binary files a/docs/guida-utente/03-pagina-autorizzazioni/img/02-strumento-richieste-iscrizione.png and /dev/null differ diff --git a/docs/guida-utente/04-pagina-curriculum/01-tabella-ordinabile-filtrabile.md b/docs/guida-utente/04-pagina-curriculum/01-tabella-ordinabile-filtrabile.md deleted file mode 100644 index 3bb2d2b..0000000 --- a/docs/guida-utente/04-pagina-curriculum/01-tabella-ordinabile-filtrabile.md +++ /dev/null @@ -1,35 +0,0 @@ -# Tabella del curriculum ordinabile e filtrabile - -**Tipo: funzione specifica** — agisce solo nella pagina **Curriculum** di un profilo (`/profilo//curriculum/`). - -## A cosa serve - -Il curriculum di un volontario può avere decine di righe (qualifiche, patenti, titoli, competenze). Lo script trasforma la tabella in una tabella **ordinabile e filtrabile**, senza pagine da sfogliare: tutte le voci restano su un'unica pagina. - -## Dove si trova - -Nel riquadro **Curriculum** della pagina: - -![Tabella del curriculum con il filtro e l'ordinamento](img/01-tabella-ordinabile-filtrabile.png) - -- **1** — il campo **Filtra qualifiche**. -- **2** — le intestazioni **Tipo** e **Nome e Stato**, con le frecce di ordinamento. - -## Come si usa - -**Filtrare** - -1. Scrivi nel campo **Filtra qualifiche** (bolla **1**) una parola, per esempio un tipo ("Patente") o parte del nome di una qualifica. -2. La tabella mostra solo le righe che contengono quel testo; sotto compare il conteggio ("Mostrate N qualifiche", con "filtrate da N totali"). -3. Cancella il testo per rivedere tutte le righe. Se nessuna riga corrisponde, compare "Nessuna qualifica trovata". - -**Ordinare** - -1. Clicca l'intestazione **Tipo** o **Nome e Stato** (bolla **2**): la tabella si ordina per quella colonna; un secondo clic inverte l'ordine. -2. All'apertura la tabella è già ordinata per **Tipo** e poi per **Nome e Stato**, in modo da raggruppare le voci dello stesso tipo. - -## Attenzione - -- La colonna **Dettagli** non è ordinabile. -- Il filtro cerca in tutta la riga, non solo nel nome della qualifica. -- Questa funzione lavora insieme a [Colori per tipologia](02-colori-per-tipologia.md), [Evidenzia "Respinto"](03-evidenzia-respinto.md) e [Celle dei dettagli ordinate](04-celle-dettaglio-ordinate.md), che agiscono sulla stessa tabella. diff --git a/docs/guida-utente/04-pagina-curriculum/02-colori-per-tipologia.md b/docs/guida-utente/04-pagina-curriculum/02-colori-per-tipologia.md deleted file mode 100644 index d6ccaba..0000000 --- a/docs/guida-utente/04-pagina-curriculum/02-colori-per-tipologia.md +++ /dev/null @@ -1,30 +0,0 @@ -# Colori per tipologia - -**Tipo: funzione specifica** — agisce solo nella pagina **Curriculum** di un profilo (`/profilo//curriculum/`). - -## A cosa serve - -Colora la cella della colonna **Tipo** in base al tipo di voce, così a colpo d'occhio si distinguono le qualifiche CRI dalle patenti o dalle esperienze professionali. - -## Dove si vede - -Nella prima colonna della tabella del curriculum (riquadro rosso, bolla **1**): - -![Prima colonna del curriculum colorata per tipologia](img/02-colori-per-tipologia.png) - -## Colori - -| Tipo | Colore | -|---|---| -| Qualifica CRI | Azzurro chiaro | -| Altra Qualifica | Verde chiaro | -| Esperienze Professionali | Arancione chiaro | -| Competenza Personale | Celeste chiaro | -| Patente Civile | Grigio chiaro | -| Patente CRI | Lilla chiaro | - -Le voci di altro tipo (per esempio "Conoscenze Linguistiche" o "Titolo di Studio") restano senza colore. - -## Come si usa - -La funzione è automatica: all'apertura della pagina le celle sono già colorate e il colore resta anche se si [ordina o si filtra](01-tabella-ordinabile-filtrabile.md) la tabella. diff --git a/docs/guida-utente/04-pagina-curriculum/03-evidenzia-respinto.md b/docs/guida-utente/04-pagina-curriculum/03-evidenzia-respinto.md deleted file mode 100644 index a05c8bd..0000000 --- a/docs/guida-utente/04-pagina-curriculum/03-evidenzia-respinto.md +++ /dev/null @@ -1,24 +0,0 @@ -# Evidenzia "Respinto" - -**Tipo: funzione specifica** — agisce solo nella pagina **Curriculum** di un profilo (`/profilo//curriculum/`). - -## A cosa serve - -Le qualifiche con stato **Respinto** possono passare inosservate in un curriculum lungo. Lo script le evidenzia con una **barra rossa sul lato sinistro** e uno **sfondo rosato** sull'intera riga. - -## Dove si vede - -Nella riga della tabella il cui stato è "Respinto" (riquadro rosso, bolla **1**): - -![Riga con stato Respinto evidenziata](img/03-evidenzia-respinto.png) - -> Esempio illustrativo: la riga è stata contrassegnata come "Respinto" solo per mostrare l'evidenziazione. - -## Come si usa - -La funzione è automatica. L'evidenziazione viene **riapplicata ogni volta** che la tabella cambia, quindi resta corretta dopo aver [ordinato o filtrato](01-tabella-ordinabile-filtrabile.md) le righe. - -## Attenzione - -- Si evidenziano solo le righe in cui lo stato è esattamente "Respinto"; gli altri stati (per esempio "Confermato") non vengono modificati. -- La funzione non cambia lo stato della qualifica: è solo un aiuto visivo. diff --git a/docs/guida-utente/04-pagina-curriculum/04-celle-dettaglio-ordinate.md b/docs/guida-utente/04-pagina-curriculum/04-celle-dettaglio-ordinate.md deleted file mode 100644 index c33a3bc..0000000 --- a/docs/guida-utente/04-pagina-curriculum/04-celle-dettaglio-ordinate.md +++ /dev/null @@ -1,24 +0,0 @@ -# Celle dei dettagli ordinate - -**Tipo: funzione specifica** — agisce solo nella pagina **Curriculum** di un profilo (`/profilo//curriculum/`). - -## A cosa serve - -Nella colonna **Dettagli** GAIA mostra data di conseguimento, luogo, scadenza, numero del documento e link ai documenti in modo disordinato. Lo script **riscrive la colonna** mettendo ogni informazione su una riga propria, con la sua icona, allineata e di altezza regolare. - -## Dove si vede - -Nella colonna **Dettagli** della tabella (riquadro verde, bolla **1**). Per ogni voce le righe seguono l'ordine in cui GAIA le fornisce, per esempio data (icona calendario), luogo (icona segnaposto), scadenza (icona clessidra) e numero (icona codice a barre): - -![Colonna Dettagli con una riga per ogni informazione](img/04-celle-dettaglio-ordinate.png) - -## Cosa cambia - -- Ogni dettaglio è su **una riga**, preceduta dalla sua icona. -- I testi **lunghi** vengono **troncati** con i puntini di sospensione, per non allargare la tabella; passando il mouse sopra si legge il testo completo. -- I **collegamenti ai documenti** sono in rosso e troncati allo stesso modo; se un collegamento non ha testo, viene mostrato il nome del file. -- Le icone senza un testo associato vengono ignorate. - -## Come si usa - -La funzione è automatica e agisce quando si apre la pagina. diff --git a/docs/guida-utente/04-pagina-curriculum/img/01-tabella-ordinabile-filtrabile.png b/docs/guida-utente/04-pagina-curriculum/img/01-tabella-ordinabile-filtrabile.png deleted file mode 100644 index 30acec8..0000000 Binary files a/docs/guida-utente/04-pagina-curriculum/img/01-tabella-ordinabile-filtrabile.png and /dev/null differ diff --git a/docs/guida-utente/04-pagina-curriculum/img/02-colori-per-tipologia.png b/docs/guida-utente/04-pagina-curriculum/img/02-colori-per-tipologia.png deleted file mode 100644 index de102d3..0000000 Binary files a/docs/guida-utente/04-pagina-curriculum/img/02-colori-per-tipologia.png and /dev/null differ diff --git a/docs/guida-utente/04-pagina-curriculum/img/03-evidenzia-respinto.png b/docs/guida-utente/04-pagina-curriculum/img/03-evidenzia-respinto.png deleted file mode 100644 index 1a4a62c..0000000 Binary files a/docs/guida-utente/04-pagina-curriculum/img/03-evidenzia-respinto.png and /dev/null differ diff --git a/docs/guida-utente/04-pagina-curriculum/img/04-celle-dettaglio-ordinate.png b/docs/guida-utente/04-pagina-curriculum/img/04-celle-dettaglio-ordinate.png deleted file mode 100644 index d6b8a8d..0000000 Binary files a/docs/guida-utente/04-pagina-curriculum/img/04-celle-dettaglio-ordinate.png and /dev/null differ diff --git a/docs/guida-utente/05-sedi-elenchi-e-catalogo/01-sede-preferita.md b/docs/guida-utente/05-sedi-elenchi-e-catalogo/01-sede-preferita.md deleted file mode 100644 index 74d5516..0000000 --- a/docs/guida-utente/05-sedi-elenchi-e-catalogo/01-sede-preferita.md +++ /dev/null @@ -1,31 +0,0 @@ -# Sede preferita - -**Tipo: funzione generica** — compare in **tutte le pagine** che mostrano una tabella di sedi con le caselle di selezione, per esempio la pagina di richiesta degli elenchi dei volontari (`/us/elenchi/volontari/`). - -## A cosa serve - -Nelle pagine in cui bisogna scegliere le sedi da includere (per esempio per generare un elenco) la selezione di default comprende **tutte** le sedi. Questa funzione permette di indicare il proprio **comitato preferito**, ricordato anche nelle visite successive, e di selezionare solo quello con un clic. - -## Dove si trova - -Nella colonna di sinistra, sotto il titolo "GAIA Swissknife": - -![Strumento sede preferita nella colonna di sinistra](img/01-sede-preferita.png) - -- **1** — menu **Comitato preferito**: l'elenco di tutte le sedi della pagina, con rientri che mostrano la gerarchia. -- **2** — pulsante **Solo preferito** (arancione). -- **3** — pulsante **Seleziona tutto** (grigio). - -## Come si usa - -1. Scegli il tuo comitato dal menu **Comitato preferito** (bolla **1**). La scelta viene **salvata automaticamente** e riproposta nelle visite successive e nelle altre pagine con la tabella sedi. -2. Premi **Solo preferito** (bolla **2**): tutte le caselle vengono deselezionate e resta selezionato il comitato scelto. -3. Se il comitato scelto è un **Comitato Regionale** o **Locale**, vengono selezionate anche **tutte le sedi sottostanti**. -4. Per tornare alla selezione completa premi **Seleziona tutto** (bolla **3**). -5. Poi prosegui come di consueto (per esempio con **Genera elenco**). - -## Attenzione - -- Se premi **Solo preferito** senza aver scelto un comitato compare l'avviso "Seleziona prima un comitato preferito". -- I pulsanti modificano solo le **caselle di selezione**: nulla viene generato o salvato finché non usi il pulsante della pagina (per esempio **Genera elenco**). -- La sede preferita è memorizzata nel browser in cui è installato lo script: su un altro computer o browser va scelta di nuovo. diff --git a/docs/guida-utente/05-sedi-elenchi-e-catalogo/02-copia-struttura-sedi.md b/docs/guida-utente/05-sedi-elenchi-e-catalogo/02-copia-struttura-sedi.md deleted file mode 100644 index 011ce1d..0000000 --- a/docs/guida-utente/05-sedi-elenchi-e-catalogo/02-copia-struttura-sedi.md +++ /dev/null @@ -1,46 +0,0 @@ -# Copia struttura sedi (JSON) - -**Tipo: funzione specifica** — compare solo nella pagina di richiesta degli elenchi dei volontari (`/us/elenchi/volontari/`), quando la tabella delle sedi è visibile. - -## A cosa serve - -Copia negli **appunti** la gerarchia delle sedi mostrata nella tabella (Comitato Regionale, Comitati Locali, sottosedi) in formato **JSON**, pronta da incollare in un altro programma o documento. - -## Dove si trova - -Nella colonna di sinistra, sotto il titolo "GAIA Swissknife" (bolla **1**). Il pulsante legge la tabella delle sedi (riquadro **2**). - -![Pulsante Copia struttura sedi e tabella delle sedi](img/02-copia-struttura-sedi.png) - -Il pulsante **non compare** nella vista dei risultati dell'elenco, dove la tabella delle sedi non è presente. - -## Come si usa - -1. Apri la pagina di richiesta dell'elenco dei volontari, con la tabella delle sedi visibile. -2. Clicca **Copia struttura sedi (JSON)**. -3. Il pulsante diventa verde per tre secondi e mostra "✓ Copiato!" con il numero di Comitati Locali e di sottosedi copiati. -4. Incolla (`Ctrl+V`) dove serve. - -## Formato copiato - -La struttura è annidata: Comitato Regionale → Comitati Locali → sottosedi. - -```json -{ - "nome": "Comitato Regionale ...", - "comitati_locali": [ - { - "nome": "Comitato di ...", - "sottosedi": ["Unità ...", "Unità ..."] - } - ] -} -``` - -- Se nella tabella c'è **un solo** Comitato Regionale, viene copiato direttamente come oggetto (come sopra). -- Se ce ne sono **più di uno**, viene copiato un **elenco** di oggetti dello stesso tipo. - -## Attenzione - -- Vengono copiati i nomi come appaiono nella tabella: la copia non dipende da quali caselle sono selezionate. -- Se la copia negli appunti non riesce compare l'avviso "Errore durante la copia in clipboard": controlla che il browser consenta l'accesso agli appunti per `gaia.cri.it`. diff --git a/docs/guida-utente/05-sedi-elenchi-e-catalogo/03-copia-catalogo-corsi.md b/docs/guida-utente/05-sedi-elenchi-e-catalogo/03-copia-catalogo-corsi.md deleted file mode 100644 index 42ddb85..0000000 --- a/docs/guida-utente/05-sedi-elenchi-e-catalogo/03-copia-catalogo-corsi.md +++ /dev/null @@ -1,38 +0,0 @@ -# Copia catalogo corsi (JSON) - -**Tipo: funzione specifica** — compare solo nella pagina **Catalogo Corsi** (`/courses/catalog/`). - -## A cosa serve - -Copia negli **appunti** l'intero catalogo dei corsi in formato **JSON**, pronto da incollare in un altro programma o documento, senza ricopiare i corsi a mano uno per uno. - -## Dove si trova - -Nella colonna di sinistra, sotto il titolo "GAIA Swissknife" (bolla **1**). Il pulsante legge i corsi del catalogo mostrato nella pagina (riquadro **2**). - -![Pulsante Copia catalogo corsi nella pagina Catalogo Corsi](img/03-copia-catalogo-corsi.png) - -## Come si usa - -1. Apri **Catalogo Corsi** dal menu "Corsi" della colonna di sinistra. -2. Clicca **Copia catalogo corsi (JSON)**. -3. Il pulsante diventa verde per tre secondi e mostra "✓ Copiato!" con il numero di corsi copiati. -4. Incolla (`Ctrl+V`) dove serve. - -## Cosa viene copiato - -Un elenco con una voce per ogni corso, con questi campi: - -| Campo | Contenuto | -|---|---| -| `nome` | Nome del corso | -| `codice` | Codice del corso | -| `livello` | Livello | -| `tipo` | Tipo (la sezione del catalogo) | -| `obiettivo` | Obiettivo formativo | -| `scheda_pdf` | Indirizzo della scheda completa in PDF, oppure vuoto se non presente | - -## Attenzione - -- Se non viene trovato nessun corso compare l'avviso "Nessun corso trovato". -- Se la copia negli appunti non riesce compare l'avviso "Errore durante la copia in clipboard": controlla che il browser consenta l'accesso agli appunti per `gaia.cri.it`. diff --git a/docs/guida-utente/05-sedi-elenchi-e-catalogo/img/01-sede-preferita.png b/docs/guida-utente/05-sedi-elenchi-e-catalogo/img/01-sede-preferita.png deleted file mode 100644 index 08e5fc6..0000000 Binary files a/docs/guida-utente/05-sedi-elenchi-e-catalogo/img/01-sede-preferita.png and /dev/null differ diff --git a/docs/guida-utente/05-sedi-elenchi-e-catalogo/img/02-copia-struttura-sedi.png b/docs/guida-utente/05-sedi-elenchi-e-catalogo/img/02-copia-struttura-sedi.png deleted file mode 100644 index 7358c8b..0000000 Binary files a/docs/guida-utente/05-sedi-elenchi-e-catalogo/img/02-copia-struttura-sedi.png and /dev/null differ diff --git a/docs/guida-utente/05-sedi-elenchi-e-catalogo/img/03-copia-catalogo-corsi.png b/docs/guida-utente/05-sedi-elenchi-e-catalogo/img/03-copia-catalogo-corsi.png deleted file mode 100644 index 397be10..0000000 Binary files a/docs/guida-utente/05-sedi-elenchi-e-catalogo/img/03-copia-catalogo-corsi.png and /dev/null differ diff --git a/docs/mappa-progetto.md b/docs/mappa-progetto.md deleted file mode 100644 index 9f01e49..0000000 --- a/docs/mappa-progetto.md +++ /dev/null @@ -1,45 +0,0 @@ -# Mappa del progetto - -Mappa sempre aggiornata di cosa aggiunge lo userscript alle pagine di GAIA (`https://gaia.cri.it/*`) e dove si aggancia. Una riga per funzione. Il dettaglio tecnico sta in `../.tech.docs/`. - -Script: `../tampermonkey-script/GAIA-Swissknife.user.js` (versione 1.2.000). Tutte le funzioni partono al `document.ready`; ognuna controlla da sé l'URL o la presenza degli elementi e, se non servono, non fa nulla. - -## Struttura comune - -| Elemento | Cosa fa | Dove | -|---|---|---| -| Intestazione Swissknife | Aggiunge in cima alla sidebar il titolo "GAIA Swissknife vX" e un separatore; i pulsanti dello script vengono inseriti tra i due | `ul#sezione` (sidebar), create alla prima funzione che inserisce un pulsante | -| Stile DataTables | Carica il CSS di DataTables per le tabelle migliorate | Tutte le pagine | - -## Pagine curriculum (`/profilo//curriculum/`) - -| Funzione | Cosa fa | Dove si aggancia | -|---|---|---| -| Ricostruzione celle dettaglio | Riscrive le celle con i dettagli delle qualifiche in righe ordinate icona + testo; testi lunghi troncati con tooltip | `td.piu-piccolo` della tabella curriculum | -| Tabella ordinabile e filtrabile | Trasforma la tabella in DataTable: senza paginazione, ordine per tipo e poi seconda colonna, campo "Filtra qualifiche" | `.table.table-striped` | -| Colori per tipologia | Colora la cella del tipo di qualifica (Qualifica CRI, Altra Qualifica, Esperienze, Competenza, Patenti) | Prima cella di ogni riga della tabella | -| Evidenzia "Respinto" | Evidenzia in rosso le righe con esito "Respinto", riapplicato a ogni ridisegno della tabella | Righe con `span.text-danger` nella tabella | - -## Autorizzazioni (`/autorizzazioni`) - -| Funzione | Cosa fa | Dove si aggancia | -|---|---|---| -| Filtri sidebar accorpati | Unisce le voci duplicate del menu laterale sommando i contatori | `ul#sezione-2`, voci `li[role=presentation]` | -| Strumento richieste iscrizione | Finestra mobile e comprimibile che raggruppa le richieste per codice corso, mostra il conteggio con link al corso, evidenzia in verde le richieste del corso scelto e apre tutti i curriculum | URL con `/autorizzazioni/`, riquadri `.panel.panel-default` con link `/aspirante/corso-base/` | - -## Corso: iscritti, esami e scheda - -| Funzione | Cosa fa | Dove si aggancia | -|---|---|---| -| Apri tutti i Curriculum | Apre in nuove schede i curriculum di tutti gli iscritti elencati, dopo conferma | Pulsante in sidebar, solo con il sotto-tab "Iscrizioni" attivo (`#tabDettagliCorso li.active_link`) e la sidebar presente; legge l'iframe `iframe.embed-responsive-item` | -| Pulsanti esiti esame | Tre pulsanti che impostano in blocco ammissione ed esiti delle due parti: Ammessi/Positivo/Positivo, Ammessi/Positivo/Non previsto, Ammessi/Non previsto/Positivo | Sidebar, solo se esistono i select `id_part_*-ammissione` | -| Compilazione massiva verbale | Mini-form sotto i pulsanti esiti: "Argomento parte 1", "Argomento parte 2" e "Sede di destinazione", con "Applica a tutti i candidati" (i campi vuoti non sovrascrivono); ogni casella compare solo se il campo esiste nella pagina, senza campi il form non compare. Guida: [guida-utente](guida-utente/00-indice.md) | Sidebar, stessa pagina e condizione dei pulsanti esiti; scrive nei campi `id_part_*-argomento_parte_1/2` e `-destinazione` | -| Copia per LURCH (JSON) | Copia negli appunti direttore, quota, corso, protocollo, link GAIA, `dataInizio`, `dataEsame`, `scadenzaDomande` (ISO 8601) | Sidebar, solo con il sotto-tab "Informazioni" attivo (`#tabDettagliCorso li.active_link`, non su `/termina/`); legge i pannelli `.panel.panel-info` | - -## Sedi, elenchi e catalogo - -| Funzione | Cosa fa | Dove si aggancia | -|---|---|---| -| Sede preferita | Select del comitato preferito salvato tra le sessioni (`GM_setValue`), pulsante "Solo preferito" (seleziona il comitato e i figli) e "Seleziona tutto" | Sidebar, nelle pagine con tabella sedi (`input[name=sedi]`) | -| Copia struttura sedi (JSON) | Copia negli appunti la gerarchia Regionale, Locali, Sottosedi con feedback del conteggio | Sidebar di `/us/elenchi/volontari/`, solo con la tabella sedi visibile | -| Copia catalogo corsi (JSON) | Copia negli appunti nome, codice, livello, tipo, obiettivo e scheda PDF di ogni corso | Sidebar di `/courses/catalog`, elementi `.corso-nome` | diff --git a/tampermonkey-script/GAIA-Swissknife.user.js b/tampermonkey-script/GAIA-Swissknife.user.js index d103148..ea41eac 100644 --- a/tampermonkey-script/GAIA-Swissknife.user.js +++ b/tampermonkey-script/GAIA-Swissknife.user.js @@ -5,7 +5,7 @@ // @downloadURL https://luigidacunto.com/scripts/gaia-swissknife/tampermonkey-script/GAIA-Swissknife.user.js // @changelogURL https://luigidacunto.com/scripts/gaia-swissknife/tampermonkey-script/CHANGELOG.md // @author Luigi D'Acunto -// @version 1.2.000 +// @version 1.1.011 // @description Aggiunge funzionalità alle pagine di GAIA // @match https://gaia.cri.it/* // @require https://code.jquery.com/jquery-3.6.0.min.js @@ -273,8 +273,6 @@ GM_addStyle(GM_getResourceText("DataTablesCSS")); console.log("GAIA Swissknife: Valori impostati - Ammessi, Non previsto, Positivo"); }); - addBulkVerbaleForm(); - } else { console.log("GAIA Swissknife: Elemento ul#sezione non trovato."); } @@ -283,45 +281,9 @@ GM_addStyle(GM_getResourceText("DataTablesCSS")); } } - // Mini-form di compilazione massiva (argomenti parte 1/2 e sede di destinazione) per tutti i candidati del verbale - function addBulkVerbaleForm() { - const campi = (suffix) => $(`[id^='id_part_'][id$='-${suffix}']`); - const inputStyle = 'width:100%;box-sizing:border-box;margin-bottom:5px;padding:4px;'; - - // Ogni campo compare solo se il corso lo prevede nella pagina; senza nessun campo il form non viene creato - const $campiForm = []; - [['argomento_parte_1', 'Argomento parte 1'], ['argomento_parte_2', 'Argomento parte 2']].forEach(([suffix, label]) => { - if (campi(suffix).length) $campiForm.push([$(``), suffix]); - }); - const $primaDest = campi('destinazione').first(); - if ($primaDest.length) { - // Le opzioni della sede sono identiche per tutti i candidati: si clonano dal primo select - $campiForm.push([$(``).append($primaDest.children().clone()), 'destinazione']); - } - if (!$campiForm.length) return; - - const $apply = $(''); - - $apply.on('click', () => { - // Un campo lasciato vuoto non sovrascrive i valori già presenti nei candidati - $campiForm.forEach(([$src, suffix]) => { - if ($src.val()) campi(suffix).val($src.val()).trigger('change'); - }); - const orig = $apply.text(); - $apply.text('✓ Applicato!'); - setTimeout(() => $apply.text(orig), 3000); - }); - - appendToSwissknifeSection( - $('
  • ').append($campiForm.map(([$el]) => $el), $apply) - ); - } - // Funzione per aggiungere il pulsante "Apri tutti i Curriculum" sezione iscritti di un corso function addOpenAllProfilesButton() { - // Serve il sotto-tab "Iscrizioni" attivo e la sidebar: lo script gira anche negli iframe della lista (stesso URL /iscritti/, ma senza sidebar) - if (!/^\/aspirante\/corso-base\/\d+\/iscritti\/$/.test($('#tabDettagliCorso li.active_link a').attr('href') || '')) return; - if ($('#sezione').length === 0) return; + if (!window.location.href.includes('/iscritti/')) return; const openButton = $(`