195 lines
No EOL
9.6 KiB
JavaScript
195 lines
No EOL
9.6 KiB
JavaScript
// ==UserScript==
|
|
// @name GAIA - Swissknife
|
|
// @namespace https://gitlab.luigidacunto.com/consultant/gaia-swissknife
|
|
// @updateURL https://luigidacunto.com/scripts/gaia-swissknife/tampermonkey-script/GAIA-Swissknife.user.js
|
|
// @downloadURL https://luigidacunto.com/scripts/gaia-swissknife/tampermonkey-script/GAIA-Swissknife.user.js
|
|
// @author Luigi D'Acunto
|
|
// @version 0.2.001b
|
|
// @description Aggiunge funzionalità alle pagine di GAIA
|
|
// @match https://gaia.cri.it/*
|
|
// @grant none
|
|
// @run-at document-idle
|
|
// ==/UserScript==
|
|
|
|
(function() {
|
|
'use strict';
|
|
// Recupera la versione dallo script se disponibile, altrimenti usa un valore di fallback
|
|
const currentVersion = (typeof GM_info !== 'undefined' && GM_info.script && GM_info.script.version) ? GM_info.script.version : 'x.x';
|
|
|
|
// Controlla se jQuery è caricato, altrimenti lo carica
|
|
function ensureJQuery(callback) {
|
|
if (window.jQuery) {
|
|
callback(window.jQuery);
|
|
} else {
|
|
let script = document.createElement('script');
|
|
script.src = 'https://code.jquery.com/jquery-3.6.0.min.js';
|
|
script.onload = () => callback(window.jQuery);
|
|
document.head.appendChild(script);
|
|
}
|
|
}
|
|
|
|
ensureJQuery(($) => {
|
|
console.log("GAIA Swissknife: jQuery caricato con successo!");
|
|
|
|
function initScript() {
|
|
|
|
// Funzione per aggiungere il blocco di intestazione
|
|
function ensureSwissknifeHeader() {
|
|
if ($('#sezione').length > 0 && $('#gaia-swissknife-header').length === 0) {
|
|
const headerHTML = `
|
|
<hr>
|
|
<li id="gaia-swissknife-header" class="dropdown-header grassetto piu-grande">
|
|
GAIA Swissknife v${currentVersion}
|
|
</li>
|
|
`;
|
|
$('#sezione').append(headerHTML);
|
|
}
|
|
}
|
|
|
|
// Funzione per aggiungere i pulsanti per settare gli esiti degli esami
|
|
function addExamOutcomeButtons() {
|
|
console.log("GAIA Swissknife: esecuzione di addExamOutcomeButtons() ...");
|
|
// Verifica che ci siano i select che gestiscono gli esiti
|
|
if ($("select[id^='id_part_'][id$='-ammissione']").length > 0) {
|
|
// Cerca il menu laterale (ul#sezione) dove inserire il blocco
|
|
if ($('#sezione').length > 0) {
|
|
console.log("GAIA Swissknife: Elementi trovati, aggiungo i pulsanti nel menu laterale...");
|
|
|
|
ensureSwissknifeHeader();
|
|
// Aggiungi i pulsanti per settare gli esiti
|
|
const buttonsHTML = `
|
|
<li role="presentation">
|
|
<button id="button_set_ampp" style="margin: 5px; padding: 8px; width: 97%; background-color: #007BFF; color: #FFF; border: none; border-radius: 4px; cursor: pointer;">
|
|
Ammessi, Positivo, Positivo
|
|
</button>
|
|
</li>
|
|
<li role="presentation">
|
|
<button id="button_set_ampo" style="margin: 5px; padding: 8px; width: 97%; background-color: #28a745; color: #FFF; border: none; border-radius: 4px; cursor: pointer;">
|
|
Ammessi, Positivo, Non previsto
|
|
</button>
|
|
</li>
|
|
<li role="presentation">
|
|
<button id="button_set_amop" style="margin: 5px; padding: 8px; width: 97%; background-color:rgb(167, 40, 99); color: #FFF; border: none; border-radius: 4px; cursor: pointer;">
|
|
Ammessi, Non previsto, Positivo
|
|
</button>
|
|
</li>
|
|
`;
|
|
$('#sezione').append(buttonsHTML);
|
|
|
|
// Evento per il pulsante "Tutti Ammessi/Esito Positivo x2"
|
|
$('#button_set_ampp').click(() => {
|
|
$("select[id^='id_part_'][id$='-ammissione']").val("AM").trigger('change');
|
|
$("select[id^='id_part_'][id$='-esito_parte_1']").val("P").trigger('change');
|
|
$("select[id^='id_part_'][id$='-esito_parte_2']").val("P").trigger('change');
|
|
console.log("GAIA Swissknife: Valori impostati - Ammessi, Positivo, Positivo");
|
|
});
|
|
|
|
// Evento per il pulsante "Ammessi, Positivo, Non previsto"
|
|
$('#button_set_ampo').click(() => {
|
|
$("select[id^='id_part_'][id$='-ammissione']").val("AM").trigger('change');
|
|
$("select[id^='id_part_'][id$='-esito_parte_1']").val("P").trigger('change');
|
|
$("select[id^='id_part_'][id$='-esito_parte_2']").val("O").trigger('change');
|
|
console.log("GAIA Swissknife: Valori impostati - Ammessi, Positivo, Non previsto");
|
|
});
|
|
|
|
// Evento per il pulsante "Ammessi, Non previsto, Positivo"
|
|
$('#button_set_amop').click(() => {
|
|
$("select[id^='id_part_'][id$='-ammissione']").val("AM").trigger('change');
|
|
$("select[id^='id_part_'][id$='-esito_parte_1']").val("O").trigger('change');
|
|
$("select[id^='id_part_'][id$='-esito_parte_2']").val("P").trigger('change');
|
|
console.log("GAIA Swissknife: Valori impostati - Ammessi, Non previsto, Positivo");
|
|
});
|
|
|
|
} else {
|
|
console.log("GAIA Swissknife: Elemento ul#sezione non trovato.");
|
|
}
|
|
} else {
|
|
console.log("GAIA Swissknife: Nessun elemento trovato, i pulsanti non verranno mostrati.");
|
|
}
|
|
}
|
|
|
|
// Funzione per aggiungere il pulsante "Apri tutti i Curriculum"
|
|
function addOpenAllProfilesButton() {
|
|
if (!window.location.href.includes('/iscritti/')) return;
|
|
|
|
const openButton = $(`
|
|
<button id="open_all_profiles" style="margin: 5px; padding: 8px; width: 97%; background-color:rgba(234, 0, 255, 0.65); color: #FFF; border: none; border-radius: 4px; cursor: pointer;">
|
|
Apri tutti i Curriculum
|
|
</button>
|
|
`);
|
|
|
|
openButton.on('click', () => {
|
|
const iframe = document.querySelector('iframe.embed-responsive-item');
|
|
if (!iframe) {
|
|
alert("Impossibile trovare l'iframe con la lista.");
|
|
console.log("GAIA Swissknife: iframe non trovato.");
|
|
return;
|
|
}
|
|
|
|
// Verifica che il contenuto sia accessibile (same-origin)
|
|
let iframeDoc;
|
|
try {
|
|
iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
|
|
} catch (err) {
|
|
alert("Accesso all'iframe bloccato per motivi di sicurezza (cross-origin).");
|
|
console.error("GAIA Swissknife: accesso iframe negato.", err);
|
|
return;
|
|
}
|
|
|
|
const $iframeLinks = $(iframeDoc).find("a[href^='/profilo/'][href*='?fpc']");
|
|
if ($iframeLinks.length === 0) {
|
|
alert("Nessun profilo trovato all'interno dell'iframe.");
|
|
console.log("GAIA Swissknife: Nessun link profilo nell'iframe.");
|
|
return;
|
|
}
|
|
|
|
const profileLinks = $iframeLinks.map(function() {
|
|
const href = $(this).attr('href');
|
|
const match = href.match(/\/profilo\/(\d+)\//);
|
|
if (match && match[1]) {
|
|
const id = match[1];
|
|
return `https://gaia.cri.it/profilo/${id}/curriculum/?us`;
|
|
}
|
|
return null;
|
|
}).get().filter(Boolean);
|
|
|
|
// Mostra le URL in console sempre
|
|
console.log("GAIA Swissknife: Profili trovati:");
|
|
profileLinks.forEach(link => console.log(link));
|
|
|
|
if (!confirm(`Vuoi aprire ${profileLinks.length} profili in nuove schede?`)) return;
|
|
|
|
profileLinks.forEach(link => {
|
|
window.open(link, '_blank');
|
|
});
|
|
|
|
console.log(`GAIA Swissknife: Aperte ${profileLinks.length} schede da iframe.`);
|
|
});
|
|
|
|
// Inserimento del pulsante nel menu laterale o in floating
|
|
if ($('#sezione').length > 0) {
|
|
ensureSwissknifeHeader();
|
|
|
|
$('#sezione').append(
|
|
$('<li role="presentation"></li>').append(openButton)
|
|
);
|
|
} else {
|
|
openButton.css({
|
|
position: 'fixed',
|
|
top: '10px',
|
|
right: '10px',
|
|
zIndex: 9999
|
|
}).appendTo('body');
|
|
}
|
|
}
|
|
|
|
|
|
$(document).ready(() => {
|
|
addExamOutcomeButtons();
|
|
addOpenAllProfilesButton();
|
|
});
|
|
}
|
|
|
|
initScript();
|
|
});
|
|
})(); |