diff --git a/tampermonkey-script/GAIA-Swissknife.user.js b/tampermonkey-script/GAIA-Swissknife.user.js index b6d5caa..6fc8d4c 100644 --- a/tampermonkey-script/GAIA-Swissknife.user.js +++ b/tampermonkey-script/GAIA-Swissknife.user.js @@ -234,7 +234,7 @@ GM_addStyle(GM_getResourceText("DataTablesCSS")); } } - // Funzione per aggiungere il pulsante "Apri tutti i Curriculum" sezione iscritti + // Funzione per aggiungere il pulsante "Apri tutti i Curriculum" sezione iscritti di un corso function addOpenAllProfilesButton() { if (!window.location.href.includes('/iscritti/')) return; @@ -352,170 +352,125 @@ GM_addStyle(GM_getResourceText("DataTablesCSS")); function addAuthorizationProfileTool() { if (!window.location.href.includes("/autorizzazioni/")) return; - // Crea la finestra modale + console.log("GAIA Swissknife: Attivo tool per gestione richieste iscrizione..."); + + const richieste = []; + + $(".panel.panel-default").each(function () { + const $panel = $(this); + const $corsoLink = $panel.find("a[href^='/aspirante/corso-base/']"); + + if ($corsoLink.length === 0) return; // blocco non relativo a richiesta corso + + const corsoText = $corsoLink.text().trim(); + const match = corsoText.match(/([A-Z]{3,}\/\d{4}\/[A-Z]+\/\d+)/); + if (!match) return; + + const codiceCorso = match[1]; + const $profileLink = $panel.find("a[href^='/profilo/']").first(); + const nome = $profileLink.text().trim(); + const href = $profileLink.attr("href"); + const idMatch = href.match(/\/profilo\/(\d+)\//); + + if (idMatch && idMatch[1]) { + richieste.push({ + codice: codiceCorso, + nome, + id: idMatch[1], + $panel + }); + } + }); + + const corsiUnici = [...new Set(richieste.map(r => r.codice))]; + if (corsiUnici.length === 0) return; + + // === CREAZIONE MODALE === const $modal = $(` -
-
- 🛠 GAIA Swissknife – Curriculum - -
- -
- - - -
-
-
- `); - +
+
+ 🛠 GAIA Swissknife – Richieste iscrizione + +
+
+ + + + +
+
+
+ `); $('body').append($modal); + // Riduci / Espandi let isCollapsed = false; - $('#gaia-auth-toggle').on('click', function (e) { isCollapsed = !isCollapsed; $('#gaia-auth-body').slideToggle(200); - $(this).text(isCollapsed ? '+' : '−'); // Cambia icona da - a + - e.stopPropagation(); // Previene conflitti con il drag + $(this).text(isCollapsed ? '+' : '−'); + e.stopPropagation(); }); - // Trascinabilità - let isDragging = false; - let dragOffsetX = 0, dragOffsetY = 0; - - $('#gaia-auth-header') - .on('mousedown', function (e) { - const modal = document.getElementById('gaia-auth-tool'); - const rect = modal.getBoundingClientRect(); - - isDragging = true; - dragOffsetX = e.clientX - rect.left; - dragOffsetY = e.clientY - rect.top; - - e.preventDefault(); // previene selezione testo - }); - - $(document) - .on('mousemove', function (e) { - if (!isDragging) return; - - const winW = window.innerWidth; - const winH = window.innerHeight; - const $modal = $('#gaia-auth-tool'); - - let newLeft = e.clientX - dragOffsetX; - let newTop = e.clientY - dragOffsetY; - - // Limiti per evitare di trascinare fuori - newLeft = Math.max(0, Math.min(newLeft, winW - $modal.outerWidth())); - newTop = Math.max(0, Math.min(newTop, winH - $modal.outerHeight())); - - $modal.css({ left: newLeft + 'px', top: newTop + 'px', right: 'auto' }); - }) - .on('mouseup', function () { - isDragging = false; - }); + // Modal mobile + let isDragging = false, dragOffsetX = 0, dragOffsetY = 0; + $('#gaia-auth-header').on('mousedown', function (e) { + const rect = document.getElementById('gaia-auth-tool').getBoundingClientRect(); + isDragging = true; + dragOffsetX = e.clientX - rect.left; + dragOffsetY = e.clientY - rect.top; + e.preventDefault(); + }); + $(document).on('mousemove', function (e) { + if (!isDragging) return; + const $modal = $('#gaia-auth-tool'); + let left = e.clientX - dragOffsetX; + let top = e.clientY - dragOffsetY; + left = Math.max(0, Math.min(left, window.innerWidth - $modal.outerWidth())); + top = Math.max(0, Math.min(top, window.innerHeight - $modal.outerHeight())); + $modal.css({ left: left + 'px', top: top + 'px', right: 'auto' }); + }).on('mouseup', () => isDragging = false); + // Recupera profili $('#gaia-auth-btn').on('click', function () { - const query = $('#gaia-auth-query').val().trim().toLowerCase(); - const $results = $('#gaia-auth-results'); - $results.empty(); // Pulisce la lista ogni volta - $('#gaia-auth-openall-container').hide(); // Nasconde il pulsante "Apri tutti i Curriculum" + const codiceSelezionato = $('#gaia-auth-select').val(); + const $results = $('#gaia-auth-results').empty(); + $('#gaia-auth-openall-container').hide(); - let collectedLinks = []; // memorizza i link trovati - - if (!query) { - alert("Inserisci un codice corso per cercare."); + if (!codiceSelezionato) { + alert("Seleziona un codice corso."); return; } - // Ripulisce eventuali evidenziazioni precedenti + // Reset evidenziazione $(".panel.panel-default").css("background-color", ""); - let found = 0; + const trovati = richieste.filter(r => r.codice === codiceSelezionato); + if (trovati.length === 0) { + $results.append(`
Nessun risultato trovato.
`); + return; + } - $(".panel.panel-default").each(function () { - const $panel = $(this); - const text = $panel.text().toLowerCase(); - - if (text.includes(query)) { - found++; - - // Evidenzia - $panel.css("background-color", "#d4edda"); - - // Cerca il link al profilo - const $profileLink = $panel.find("a[href^='/profilo/']").first(); - if ($profileLink.length > 0) { - const href = $profileLink.attr('href'); // es. /profilo/220378/ - const match = href.match(/\/profilo\/(\d+)\//); - const nome = $profileLink.text().trim(); - - if (match && match[1]) { - const id = match[1]; - const fullLink = `https://gaia.cri.it/profilo/${id}/curriculum/?us`; - - collectedLinks.push(fullLink); - - const $entry = $(` -
- ${nome} -
- `); - $results.append($entry); - } - } - } + trovati.forEach(r => { + r.$panel.css("background-color", "#d4edda"); + const link = `https://gaia.cri.it/profilo/${r.id}/curriculum/?us`; + $results.append(`
${r.nome}
`); }); - if (collectedLinks.length > 0) { - $('#gaia-auth-openall-container').show(); - $('#gaia-auth-openall').off('click').on('click', () => { - collectedLinks.forEach(link => window.open(link, '_blank')); - }); - } - - if (found === 0) { - $results.append(`
Nessun risultato trovato.
`); - } + $('#gaia-auth-openall-container').show(); + $('#gaia-auth-openall').off('click').on('click', function () { + trovati.forEach(r => window.open(`https://gaia.cri.it/profilo/${r.id}/curriculum/?us`, '_blank')); + }); }); } + // Funzione per migliorare la tabella del curriculum function enhanceCurriculumTable() { if (!window.location.href.match(/\/profilo\/\d+\/curriculum\//)) return;