add functions e change name file
This commit is contained in:
parent
c5c1304549
commit
ab7315340f
2 changed files with 197 additions and 88 deletions
197
tampermonkey-script/GAIA-Swissknife.user.js
Normal file
197
tampermonkey-script/GAIA-Swissknife.user.js
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
// ==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 tutte le schede profilo"
|
||||
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 tutte le schede profilo
|
||||
</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();
|
||||
});
|
||||
})();
|
||||
Loading…
Add table
Add a link
Reference in a new issue