Aggiorna la versione a 1.1.010 e aggiunge pulsante Copia per LURCH

- Nuovo pulsante "Copia per LURCH (JSON)" nella sidebar delle pagine corso
- Estrae Direttore, Quota (bool), QuotaValore, Corso, Protocollo, Link GAIA
- Aggiornati CHANGELOG.md e README.md con le versioni 1.1.008, 1.1.009, 1.1.010

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Luigi D'Acunto 2026-05-12 00:02:29 +02:00
parent bb3eb00581
commit 54346041ab
3 changed files with 92 additions and 7 deletions

View file

@ -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.010
// @description Aggiunge funzionalità alle pagine di GAIA
// @match https://gaia.cri.it/*
// @require https://code.jquery.com/jquery-3.6.0.min.js
@ -208,7 +208,6 @@ GM_addStyle(GM_getResourceText("DataTablesCSS"));
});
}
// Funzione per applicare le correzioni di stile alle celle del curriculum
function applyStyleFixes() {
const url = window.location.href;
@ -814,6 +813,48 @@ GM_addStyle(GM_getResourceText("DataTablesCSS"));
}
}
// 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 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 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 quotaValore = parseFloat(quotaText.replace(/[^\d,]/g, '').replace(',', '.')) || 0;
const quota = quotaValore !== 0;
return { direttore, quota, quotaValore, corso, protocollo, linkGaia: window.location.href };
}
const $btn = $('<button type="button" style="margin: 5px; padding: 8px; width: 97%; background-color: #1a6b8a; color: #FFF; border: none; border-radius: 4px; cursor: pointer;">Copia per LURCH (JSON)</button>');
$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($('<li role="presentation"></li>').append($btn));
}
$(document).ready(() => {
applyStyleFixes();
addExamOutcomeButtons();
@ -824,12 +865,17 @@ GM_addStyle(GM_getResourceText("DataTablesCSS"));
addSediPreferitaTool();
addCopyCatalogButton();
addCopyStructureButton();
addCopyForLurchButton();
console.log("GAIA Swissknife: Funzioni caricate con successo!");
});
})(jQuery.noConflict(true));
// ==CHANGELOG==
// v1.1.010 - Nuove funzioni:
// - 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
// 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