diff --git a/.gitignore b/.gitignore index f0ed818..9d7ae73 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,21 @@ -_ignored -/.*/ \ 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 diff --git a/tampermonkey-script/GAIA-Swissknife.user.js b/tampermonkey-script/GAIA-Swissknife.user.js index 3219936..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.010 +// @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 @@ -208,6 +208,7 @@ GM_addStyle(GM_getResourceText("DataTablesCSS")); }); } + // Funzione per applicare le correzioni di stile alle celle del curriculum function applyStyleFixes() { const url = window.location.href; @@ -813,6 +814,17 @@ 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; @@ -820,21 +832,30 @@ GM_addStyle(GM_getResourceText("DataTablesCSS")); 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 direttorePanel = [...document.querySelectorAll('.panel.panel-info')].find(el => el.querySelector('.panel-title')?.innerText.includes('Direttore')); - const direttore = direttorePanel?.querySelector('.panel-body a')?.innerText?.trim() || ''; + const direttore = getPanel('Direttore')?.querySelector('.panel-body a')?.innerText?.trim() || ''; - const quotaPanel = [...document.querySelectorAll('.panel.panel-info')].find(el => el.querySelector('.panel-title')?.innerText.includes('Quota')); - const quotaText = quotaPanel?.querySelector('.panel-body')?.innerText?.trim() || '0'; + const quotaText = getPanelText('Quota') || '0'; const quotaValore = parseFloat(quotaText.replace(/[^\d,]/g, '').replace(',', '.')) || 0; const quota = quotaValore !== 0; - return { direttore, quota, quotaValore, corso, protocollo, linkGaia: window.location.href }; + 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 = $(''); @@ -872,10 +893,11 @@ GM_addStyle(GM_getResourceText("DataTablesCSS")); })(jQuery.noConflict(true)); // ==CHANGELOG== -// v1.1.010 - Nuove funzioni: +// 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 (bool), QuotaValore (numerico), Corso (nome), Protocollo, Link GAIA -// - Copia il JSON in clipboard con feedback visivo +// - 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