From eb33f52a6366c6273850830037a760d3a670b644 Mon Sep 17 00:00:00 2001 From: Luigi D'Acunto Date: Sun, 12 Jul 2026 09:55:31 +0200 Subject: [PATCH 1/2] Aggiorna la versione a 1.1.011 e aggiunge dataInizio, dataEsame e scadenzaDomande al JSON "Copia per LURCH", oltre a sincronizzare la funzione con la v1.1.010 deployata --- tampermonkey-script/GAIA-Swissknife.user.js | 70 ++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/tampermonkey-script/GAIA-Swissknife.user.js b/tampermonkey-script/GAIA-Swissknife.user.js index 62c9606..8d4f1d9 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.1.009 +// @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 @@ -814,6 +814,68 @@ GM_addStyle(GM_getResourceText("DataTablesCSS")); } } + // Converte una data in italiano (es. "Domenica 27 Settembre 2026 09:00") in formato ISO 8601 ("2026-09-27T09:00:00") + function parseDataItaliana(testo) { + const mesi = { gennaio: 1, febbraio: 2, marzo: 3, aprile: 4, maggio: 5, giugno: 6, luglio: 7, agosto: 8, settembre: 9, ottobre: 10, novembre: 11, dicembre: 12 }; + const m = (testo || '').match(/(\d{1,2})\s+([a-zA-Zàèìòù]+)\s+(\d{4})\s+(\d{2}):(\d{2})/i); + if (!m) return null; + const mese = mesi[m[2].toLowerCase()]; + if (!mese) return null; + const giorno = m[1].padStart(2, '0'); + return `${m[3]}-${String(mese).padStart(2, '0')}-${giorno}T${m[4]}:${m[5]}:00`; + } + + // Funzione per copiare i dati del corso per LURCH in clipboard come JSON + function addCopyForLurchButton() { + if (!window.location.href.match(/\/aspirante\/corso-base\/\d+\//)) return; + if ($('#sezione').length === 0) return; + + console.log("GAIA Swissknife: Aggiungo pulsante Copia per LURCH..."); + + function getPanel(labelSubstr) { + return [...document.querySelectorAll('.panel.panel-info')].find(el => el.querySelector('.panel-title')?.innerText.includes(labelSubstr)); + } + function getPanelText(labelSubstr) { + return getPanel(labelSubstr)?.querySelector('.panel-body')?.innerText?.trim() || ''; + } + + function extractLurchData() { + const corso = document.querySelector('h1, h2')?.innerText?.trim() || ''; + + const titleMatch = document.title.match(/([A-Z]{2,}\/\d{4}\/[A-Z0-9\-]+(?: [A-Z0-9\-]+)?\/\d+)/); + const protocollo = titleMatch ? titleMatch[1] : ''; + + const direttore = getPanel('Direttore')?.querySelector('.panel-body a')?.innerText?.trim() || ''; + + const quotaText = getPanelText('Quota') || '0'; + const quotaValore = parseFloat(quotaText.replace(/[^\d,]/g, '').replace(',', '.')) || 0; + const quota = quotaValore !== 0; + + const dataInizio = parseDataItaliana(getPanelText('Data di inizio')); + const dataEsame = parseDataItaliana(getPanelText('Data di esame')); + const scadenzaDomande = parseDataItaliana(getPanelText('Termine di scadenza per le domande di ammissione')); + + return { direttore, quota, quotaValore, corso, protocollo, linkGaia: window.location.href, dataInizio, dataEsame, scadenzaDomande }; + } + + const $btn = $(''); + + $btn.on('click', function () { + const data = extractLurchData(); + navigator.clipboard.writeText(JSON.stringify(data, null, 2)).then(() => { + console.log('GAIA Swissknife: Dati LURCH copiati in clipboard.', data); + const orig = $(this).text(); + $(this).text('✓ Copiato!').css('background-color', '#28a745'); + setTimeout(() => $(this).text(orig).css('background-color', '#1a6b8a'), 3000); + }).catch(err => { + console.error('GAIA Swissknife: Errore clipboard:', err); + alert('Errore durante la copia in clipboard.'); + }); + }); + + appendToSwissknifeSection($('
  • ').append($btn)); + } + $(document).ready(() => { applyStyleFixes(); addExamOutcomeButtons(); @@ -824,12 +886,18 @@ GM_addStyle(GM_getResourceText("DataTablesCSS")); addSediPreferitaTool(); addCopyCatalogButton(); addCopyStructureButton(); + addCopyForLurchButton(); console.log("GAIA Swissknife: Funzioni caricate con successo!"); }); })(jQuery.noConflict(true)); // ==CHANGELOG== +// v1.1.011 - Nuovi campi nel JSON "Copia per LURCH": +// - Aggiunti dataInizio, dataEsame e scadenzaDomande (termine per le domande di ammissione), in formato ISO 8601 +// v1.1.010 - Nuova funzione: +// - Aggiunto pulsante "Copia per LURCH (JSON)" nella sidebar delle pagine corso (/aspirante/corso-base/) +// - Estrae direttore, quota, corso, protocollo e link GAIA, e copia il JSON in clipboard // v1.1.009 - Nuove funzioni: // - Aggiunto pulsante "Copia catalogo corsi (JSON)" nella sidebar di /courses/catalog/ // - Estrae nome, codice, livello, tipo, obiettivo per ogni corso e copia il JSON in clipboard From 66d077f968c86e1bb72aa3009592cccf56a6bf63 Mon Sep 17 00:00:00 2001 From: Luigi D'Acunto Date: Sun, 12 Jul 2026 09:56:48 +0200 Subject: [PATCH 2/2] Aggiorna il file .gitignore per escludere file e directory aggiuntivi dal controllo di versione --- .gitignore | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index a4bc10d..9d7ae73 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,21 @@ -_ignored -.venv -.playwright-mcp -.vscode \ No newline at end of file +# Exclude files and directories from version control +*.log +/.*/ +/.*/ +/*auth* +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/storage/pail +/vendor +Thumbs.db +/*.md +/.env* + +# Exceptions +!README.md +!CHANGELOG.md +!.gitattributes +!.env.example