// ==UserScript==
// @name OTRS enhancements (unipd)
// @namespace camelsoft
// @description Miglioramenti ad OTRS
// @include https://helpdesk.ammcentr.unipd.it/otrs/index.pl*
// @include https://helpdesk.ammcentr.unipd.it/otrs/customer.pl?Action=CustomerTicketZoom*
// @icon data:image/png;base64,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
// @version 5.2.4
// @grant none
// @license GPLv3
// ==/UserScript==
// NB: queste due direttive non servono perche' OTRS ha gia' jQuery e sembra funzionare senza problemi
// require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
//jQuery.noConflict();
function setup_admin ($) {
if (!window.location.pathname.match(/index.pl/))
return;
var cur_user = $('#UserInfo a:first').text().trim(); // displayed name
var icons = {
idra: "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",
Coda: "R0lGODlhEAAQAMQfAOvGUf7ztuvPMf/78/fkl/Pbg+u8Rvjqteu2Pf3zxPz36Pz0z+vTmPzurPvuw/npofbjquvNefHVduuyN+uuMu3Oafbgjfnqvf/3zv/3xevPi+vRjP/20/bmsP///////yH5BAEAAB8ALAAAAAAQABAAAAV24CeOZGmepqeqqOgxjBZFa+19r4ftWQUAgqDgltthMshMIJAZ4jYDHsBARSAmFOJvq+g6HIdEFgcYmBWNxoNAsDjGHgBnmV5bCoUDHLBIq9sFEhIdcAYJdYASFRUQhQkLCwkOFwcdEBAXhVabE52ecDahKy0oIQA7",
Indietro: "R0lGODlhEAAQAMQfACROFdzy00yoLbDhnUSVKFe+OV3CPMXpuLPioitfGordWnfRTXTLXLzmqX3UUYTaVjyDJGTEQaPdjI/gXXDLSc7sw2rKRdjwz9PuyVG6NTRzH4zUc9/z2H3OZf///////yH5BAEAAB8ALAAAAAAQABAAAAWH4CeOXumNKOkJLFGm4ipwXHARbrrSzaQMmArkFJtVJj7Fw4E4aIg75MSzXFCcp1WgoVCUHFbLppEoES6Ph8kUMZDNGIdjXTIUEGUPpCKxlixtBQwIAFkQBxaAHgZ2GYRQGgcSbXYFGRsDhSQaDQ0dGRkMA5lEJAkJCAijAJowJaysLzAqsighADs=",
Rilascia: "R0lGODlhEAAQALMPAEWi6azap1WzS9LusYrSbApexXLHV+z41vH559Ltw8ns+pe75hBs0iCZEP///////yH5BAEAAA8ALAAAAAAQABAAAARl8MlJq30uuztzawyTXc53IIjCNBtVIscxAMAysC6DDIMAEIZbC8NQJAYEmgAYwBEVgADtZxA0W47iYgoQeK+SUgI4DTUCok5j7GUUCou0OtADwePD8CcQWMTlFR4hInkWGoUciREAOw==",
Gestisci: "R0lGODlhEAAQAMQfAOvx9pjL/HWVsbfb/eTs9abS+0lVa1ZtjZG3z7+beLvU4cbg9Im77PHl2tfn8PD2+/v7+1JgeavO4UNLXODo7ykxQz5FVarQ8sOUaENxm36s1bF2RYlhMunXxv///////yH5BAEAAB8ALAAAAAAQABAAAAWfoCeO5PidniOtEoJoQix4qOQQQA4QPMEcNI8EsOAYOYvB4MH4iRQPTmJD5SgfWKBHIaV6rdfIk7PpmDsbcOEh9iw2DY5ZvhkU1gbRAtNImP0YdwUEeSkAGGcdgYIEEyIOGRcYkxgaGQUBARSOHpEXFxqhoRmZFBYikZGhFxmWmQCnWwAPOz0UtwAKFSICB74REQYGExMWFhViECXLIxAhADs=",
Storico: "R0lGODlhEAAQALMPAOz2/6mjhdrMrMe6kkE4H7OfY7iofJR7PnBgN9Dq/tLT1Ojaw3h/hf7+/v///////yH5BAEAAA8ALAAAAAAQABAAAAR88MnpqpuYusNPzVLDLeTCNZm4CEM7CMKBSts6OEhltDl9sBaHorHzPGo3i4IQIBYIlcMi2VgyEgDDs4KYIhqNAAFA1kJxC0ODDGAgEonC9ogQGNiJa2DQoxcGAXBwAQIFfQ8NCH8BjFqGMxOJBHJyCF8gRw4Em2eYGh8ZEQA7",
PDF: "R0lGODlhEAAQAMQfAOmNjMfHx9UqJ3Fvb9hoZqmpqbe3t96pqPn4+IeHh9ra2qRSUOXl5dtFQ9i2turq6uDg4NTT0+7u7uzMy/DX15OTk9/Ew99+fa89PN+Yl/Hp6eLi4vPz8/v7+////////yH5BAEAAB8ALAAAAAAQABAAAAWgoCeO5PidHhOtQWC8ReyhEdLdOB5Usxd1HARnSOy0eD4gkUO5UHAJUaAjqVYBl8zjgYh6pg/J9mFpZBiMrsjQGaMZDQsEovYYEI/3hiEQWBQcA2scaBtzBxkZcRoDCB4FhBuGEBcOCg19GBePHJJzCgQEDQQZBxgAjwiTChcNlSuBIhVpHBMNDRRiDxwKgo8JFQkCGAsJA8fHXiQAuCUjIQA7",
Priorit: "R0lGODlhEAAQAMQfAK41AGI6Ff+pJ9BPAP/x2v/DZf+eDv+kHP/qxv+5Sv+vNf+ZBP/Oe/+hFv+cCv2nNd55BP/UjP/ThVQzGIFUAP+fEv+qOP+tQP+yO/++Vv/15P/cobF2RVk2Gf///////yH5BAEAAB8ALAAAAAAQABAAAAVx4CeOZCl6aKqqp8QUWaIIh9Hd3sloBIEgEYkEwunkPp4CgXZoGBwLYuDoSSAOzcpzQeFMT5hNdsv1UgWRhpbcNZ4ODAN5UZ5QK4WLxfLoPwIcdicQEAOGAwCJHYFUKyqLgiYkHpBHkieLbpeYOJsnLCEAOw==",
Collega: "R0lGODlhEAAQANUkAHBwcMXFxaioqJqamtHR0XNzc6SkpJeXl6CgoNXV1ZiYmHd3d8fHx6Kioo2NjZubm6GhoX9/f4qKipSUlKenp5CQkJOTk6Ojo3t7e6WlpZ2dnX19fZ+fn4SEhHJycn5+foWFhZ6entra2v///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACQALAAAAAAQABAAAAZmQJJwSCwaj0jSaMlMjgSUjAGCGB2fI1GCwAg8rEKmYGRAcAYKRWDCHIXe78vyAH8vRXg8SBjJ45cggYEDSwUAh4dtDSMHFRIdHxgBC01hGllbXR5gRSMWDiAbCwWcRm1LSamqq6pBADs=",
Operatore: "R0lGODlhEAAQAMQfAFWApnCexR4xU1SApaJ3SlB5oSg9ZrOVcy1HcURok/Lo3iM2XO/i1lJ8o2eVu011ncmbdSc8Zc6lg4212DZTgC5Hcmh3f8OUaDhWg7F2RYlhMunXxqrQ8n6s1f///////yH5BAEAAB8ALAAAAAAQABAAAAVz4CeOXumNKOpprHampAZltAt/q0Tvdrpmm+Am01MRGJpgkvBSXRSHYPTSJFkuws0FU8UBOJiLeAtuer6dDmaN6Uw4iNeZk653HIFORD7gFOhpARwGHQJ8foAdgoSGJA1/HJGRC40qHg8JGBQVe10kJiUpIQA7",
Nota: "R0lGODlhEAAQAMQAAJvN/MXi/naZtl13lavU+6TR+7TZ/Pz9/r7e/VpwiUhacfL1+cjk/rHX/GF8m4Gnwrrc/cDf/Za805/E2Lfa/OLq9K/Q4ubv96jL3Yyyy7DS42eHp1Nle+zx9////////yH5BAEAAB8ALAAAAAAQABAAAAV+4CeOZEl6aKqWnoVNUvY8grB5Y6t6x3JVlQHOo/EwjoFAJIJAVBYO1MTISDIhFERjIfRIDkklAmtoELiox2KJoJQJhEKhkkAJOmOKOV4AACocdh1kZnJ+f4EfHncdjY0ABY2JIh4ODgMJCRySCjgnO5uTJiccoqM5pqeUnh8hADs=",
Chiudi: "R0lGODlhEAAQAMQfAOt0dP94eOFjY/a0tP/JyfFfX/yVlf6mppNtbf5qanknJ9dVVeZqat5eXpiMjGo4OIUvL3pGRthWVuhvb1kaGv39/f1lZdg7O/7Y2F8/P+13d4tcXNRTU2dCQv///////yH5BAEAAB8ALAAAAAAQABAAAAV/4Cd+Xml6Y0pGTosgEap6G0YQh6FDskhjGg0AMJkwAjxfBygkGhmCAAXl6QyGnuLFI4g+qNbixLMNdBNfkpXBLncbial6AC17Gvg4eND1BPB3cHJVBguGhwsSHHo+GRqKHJGRCQo9JI4WBZoFFpUVMw8QCqMQU58qJCclqKytIQA7"
};
String.prototype.capitalize = function () {
// capitalize => http://stackoverflow.com/a/38530325
return this.replace(/\b\w/g, function(l){ return l.toUpperCase() })
}// String.prototype.capitalize
// localStorage shortcuts
Storage.prototype.rm = function(k) { this.removeItem(k); };
Storage.prototype.get = function(k, default_value) {
var v = JSON.parse(this.getItem(k) || 'null');
return (typeof v !== 'undefined' && v != null) ? v : default_value;
};// Storage.prototype.get ---------------------------------------------------
Storage.prototype.set = function(k, v) {
try {
return (typeof v !== 'undefined' && v != null) ?
this.setItem(k, JSON.stringify(v)) :
this.rm(k);
} catch (e) {
console.log('ERROR: key not saved');
return null;
}//try-catch
};// Storage.prototype.set ---------------------------------------------------
var $ls = localStorage; // abbrevia localStorage
function extend_uris () {
$('a[title]:contains([..])').each(function () {
$(this).text( $(this).attr('href') );
});
}//extend_uris
function get_cognome(fullname) {
var words = fullname.toString().split(' ');
words.shift(); // remove name
return words.join(' ');
}// get_cognome
// sort select options by text => http://stackoverflow.com/a/278509
function sortSelect (selElem) {
var tmpAry = new Array(), i = 0;
for (i=0; i < selElem.options.length; i++) {
tmpAry[i] = new Array();
tmpAry[i][0] = selElem.options[i].text;
tmpAry[i][1] = selElem.options[i].value;
}
tmpAry.sort();
var cur_val = $(selElem).val();
while (selElem.options.length > 0)
selElem.options[0] = null;
for (i=0; i < tmpAry.length; i++)
selElem.options[i] = ( new Option(tmpAry[i][0], tmpAry[i][1]) );
$(selElem).val(cur_val);
}//sortSelect
// piccole migliorie per guadagnare spazio
$('#Header').css('height', '1rem');
$('#Navigation').css('top','2px');
$('#Logo').hide();
// Arial default font al posto dell'Helvetica per via del pessimo render a video...
$('<style>body {font-family: Arial,"Helvetica Neue",Helvetica,sans-serif;}</style>').appendTo('head');
// riquadro credits + links
var links_hp = '<a href="https://acavalin.com/" target="_blank">A.Cavalin</a>',
links_script = '<a href="https://github.com/acavalin/tp_unipd" target="_blank">OTRS script</a>',
links_css = 'position: absolute; top: 0.5rem; left: 43%; padding: 0.3rem 0.6rem; z-index: 65000;'+
'background: linear-gradient(to bottom, rgb(249, 249, 249) 0%, rgb(241, 241, 241) 100%);'+
'border-radius: 0.5rem; border: 1px outset red;';
$('<div style="'+links_css+'">'+links_script+' by '+links_hp+'</div>').appendTo('body');
// --- cruscotto -------------------------------------------------------------
if ($('.MainBox > h1:contains(Cruscotto)').length == 1) {
// 1 2 3 4 5 6 7 8 9
// COLONNE: Priorita, Star, Ticket, Tempo, Da/Oggetto, Stato, Gestione, Operatore, Coda
// nascondi sidebar inutile!
$('div.SidebarColumn').hide();
// mostra sempre impostazioni dell'elenco
$('div.ActionMenu').show();
$('div.WidgetAction.Close').remove();
function setup_cruscotto () {
if ($('form .DataTable tbody').hasClass('enhanced'))
return;
else
$('form .DataTable tbody').addClass('enhanced');
// evidenzia righe mie
$('form .DataTable tbody tr td:nth-child(9) div:contains('+cur_user+')').
parent().parent().
addClass('miei').
find('td').css('background-color', '#ddd'); // pale gray
// evidenzia righe non mie
$('form .DataTable tbody tr:not(.assegnati) td:nth-child(9) div').not(
':contains(Admin OTRS),'+
':contains('+cur_user+')'
).parent().parent().
addClass('assegnati').
find('td').css('background-color', '#FCE3FF'); // violetta
// sposta righe mie in alto
$('form .DataTable tbody tr.miei').prependTo( $('form .DataTable tbody') );
// sposta righe non mie in basso
$('form .DataTable tbody tr.assegnati').appendTo( $('form .DataTable tbody') );
// metti bordo sui blocchi di righe
$('form .DataTable tbody tr.miei:last td').css('border-bottom', '1px solid black');
$('form .DataTable tbody tr.assegnati:first td').css('border-top' , '1px solid black');
// evidenzia utente e titolo
$('form .DataTable tbody tr td:nth-child(5)').each(function () {
$(this).find('div:first').css('font-weight', 'bold');
});
// mostra solo nome finale della coda
$('form .DataTable tbody tr td:nth-child(10)').each(function () {
var div = $(this).find('div:first'),
coda = div.attr('title').trim().replace(/.*::(.+)/,'$1');
$('<span style="font-size: smaller"></span>').text(coda).appendTo( div.empty() );
});
// abbrevia "preso in gestione"
$('form .DataTable tbody tr td:nth-child(8)').each(function () {
var div = $(this).find('div:first');
div.text( div.text().trim().replace(/preso /, '') );
});
// abbrevia "chiuso con successo"
$('form .DataTable tbody tr td:nth-child(7)').each(function () {
var div = $(this).find('div:first');
div.text( div.text().trim().replace(/ con successo/, '') );
});
// imposta larghezza minima per le celle mono-info
$('form .DataTable tbody tr td:nth-child(-n+5)').css('white-space','nowrap').attr('width', '1%'); // prime 5 colonne
$('form .DataTable tbody tr td:nth-child(n+7) ').css('white-space','nowrap').attr('width', '1%'); // dalla 7^ colonna
// accorcia alcune scritte
$('form .DataTable thead tr th.Age a:last').text('Tempo'); // tempo trascorso
$('form .DataTable thead tr th.State a:last').text('St.'); // stato
$('form .DataTable thead tr th.Lock a:last').text('Gestione'); // gestione
// dai un titolo alla priorita'
$('form .DataTable thead tr th:eq(0) a').text('Pr.');
//rendi leggibile il campo Tempo trascorso
$('form .DataTable tbody tr td:nth-child(4)').
css('font-family', 'monospace').css('font-size', 'small').css('text-align', 'right').
each(function () {
var t = $(this).text().trim().
replace(/ ([dhm])/g, '$1').
replace(/ ([0-9]{1}[hm])/g, ' 0$1').
replace(/h /, '.').
replace(/m/, "'");
$(this).text(t);
});
// evidenzia area Ticket# per middle-clic
$('form .DataTable tbody tr td:nth-child(3)').
css('background-color', 'orange').
find('a').css('color', 'black');
// avvisa se ci son tickets
//if ($('#OverviewBody tr[id^=TicketID]').length > 0)
// alert('HD: ' + num_tickets + ' tickets nuovi! :O');
window.document.title = 'T: ' +
$('form .DataTable tbody tr.miei').length + '|' +
$('form .DataTable tbody tr:not(.assegnati):not(.miei)').length + '/' +
$('form .DataTable tbody tr').length;
}//setup_cruscotto
// per il refresh automatico in ajax e tramite i 3 link della tabella
setInterval(setup_cruscotto, 1000);
}//if cruscotto
// --- ticket overview -------------------------------------------------------
if ($('.OverviewBox h1:contains(Lista Ticket: Le mie Code)').length > 0 ||
$('.OverviewBox h1:contains(Visualizzazione Stato: Ticket)').length > 0) {
// 1 2 3 4 5 6 7 8 9 10
// COLONNE: [x], Priorita, Star, Ticket, Tempo, Da/Oggetto, Stato, Gestione, Operatore, Coda
// evidenzia righe mie
$('#OverviewBody tr[id^=TicketID] td:nth-child(9) div:contains('+cur_user+')').
parent().parent().
addClass('miei').
find('td').css('background-color', '#ddd'); // pale gray
// evidenzia righe non mie
$('#OverviewBody tr[id^=TicketID]:not(.assegnati) td:nth-child(9) div').not(
':contains(Admin OTRS),'+
':contains('+cur_user+')'
).parent().parent().
addClass('assegnati').
find('td').css('background-color', '#FCE3FF'); // violetta
// sposta righe mie in alto
$('#OverviewBody tr.miei').prependTo( $('#OverviewBody tbody') );
// sposta righe non mie in basso
$('#OverviewBody tr.assegnati').appendTo( $('#OverviewBody tbody') );
// metti bordo sui blocchi di righe
$('#OverviewBody tr.miei:last td').css('border-bottom', '1px solid black');
$('#OverviewBody tr.assegnati:first td').css('border-top' , '1px solid black');
// evidenzia utente e titolo
$('#OverviewBody tr[id^=TicketID] td:nth-child(6)').each(function () {
$(this).find('div:first').
css('font-weight', 'bold').css('float', 'left').css('white-space', 'nowrap').
css('padding-right', '0.5em');
var t = $(this).find('div:last').css('white-space', 'wrap').css('display', 'inherit');
t.text( t.attr('title') );
});
// unica linea per utente e titolo + stessa larghezza per l'utente
var utenti = $('#OverviewBody tr[id^=TicketID] td:nth-child(6) div:nth-child(1)'),
utenti_w = utenti.map(function () { return $(this).outerWidth() }),
utente_w = Math.max.apply(null, utenti_w);
utenti.width(utente_w);
// mostra solo nome finale della coda
$('#OverviewBody tr[id^=TicketID] td:nth-child(10)').each(function () {
var div = $(this).find('div:first'),
coda = div.attr('title').trim().replace(/.*::(.+)/,'$1');
$('<span style="font-size: smaller"></span>').text(coda).appendTo( div.empty() );
});
// abbrevia "preso in gestione"
$('#OverviewBody tr[id^=TicketID] td:nth-child(8)').each(function () {
var div = $(this).find('div:first');
div.text( div.text().trim().replace(/preso /, '') );
});
// abbrevia "chiuso con successo"
$('#OverviewBody tr[id^=TicketID] td:nth-child(7)').each(function () {
var div = $(this).find('div:first');
div.text( div.text().trim().replace(/ con successo/, '') );
});
//// nascondi ultima colonna
//$('#OverviewBody thead th.Last').hide();
//$('#OverviewBody tr[id^=TicketID] td.Last').hide();
// imposta larghezza minima per le celle mono-info
$('#OverviewBody tr[id^=TicketID] td:nth-child(-n+5)').css('white-space','nowrap').attr('width', '1%'); // prime 5 colonne
$('#OverviewBody tr[id^=TicketID] td:nth-child(n+7) ').css('white-space','nowrap').attr('width', '1%'); // dalla 7^ colonna
// accorcia alcune scritte
$('#OverviewBody thead tr th.Age a:last').text('Tempo'); // tempo trascorso
$('#OverviewBody thead tr th.State a:last').text('St.'); // stato
$('#OverviewBody thead tr th.Lock a:last').text('Gestione'); // gestione
// dai un titolo alla priorita'
$('#OverviewBody thead tr th:eq(1) a').text('Pr.');
//rendi leggibile il campo Tempo trascorso
$('#OverviewBody tr[id^=TicketID] td:nth-child(5)').
css('font-family', 'monospace').css('font-size', 'small').css('text-align', 'right').
each(function () {
var t = $(this).text().trim().
replace(/ ([ghm])/g, '$1').
replace(/ ([0-9]{1}[hm])/g, ' 0$1').
//replace(/h /, '.').
replace(/m/, "'");
$(this).text(t);
});
// eguaglia larghezza TD e TH
$('#OverviewBody tr[id^=TicketID]:first td').each(function (i) {
$('#OverviewBody thead tr:first th:eq('+i+')').width( $(this).outerWidth() );
});
// evidenzia area Ticket# per middle-clic
$('#OverviewBody tr[id^=TicketID] td:nth-child(4)').css('background-color', 'orange');
// avvisa se ci son tickets
//if ($('#OverviewBody tr[id^=TicketID]').length > 0)
// alert('HD: ' + num_tickets + ' tickets nuovi! :O');
window.document.title = 'T: ' +
$('#OverviewBody tr[id^=TicketID].miei').length + '|' +
$('#OverviewBody tr[id^=TicketID]:not(.assegnati):not(.miei)').length + '/' +
$('#OverviewBody tr[id^=TicketID]').length;
}//if
// --- visualizzazione ticket ------------------------------------------------
if ($('#ArticleTableBody').length > 0) {
function underscorize (str) {
return str.trim().replace(/[^A-Z ]/ig, '').replace(/\s/g, '_');
}//camelize
function icon_tag (icon_key) {
return '<img src="data:image/x-icon;base64,'+icons[icon_key]+'">';
}//icon_tag
// inserisci filtro per area
var sel_area = $('<select id="sel_area"><option value="-">- Area -</option></select>').insertBefore('#DestQueueID');
// inserisci filtro per servizio
var sel_serv = $('<select id="sel_serv"><option value="-">- Serv -</option></select>').insertBefore('#DestQueueID').hide();
$('#sel_area, #sel_serv').css('width', '5rem'); // ridimensiona filtri
$('#DestQueueID' ).css('width', '6rem'); // ridimensiona combo spostamento
var aree = [], servizi = {};
// combo spostamento: imposta classi area/servizio ad ogni option
var cur_opt = $('#DestQueueID option:eq(1)'), cur_area = '', cur_serv = '';
while (cur_opt.length > 0) {
if ( cur_opt.is('[disabled][value=-]') ) {
if ( cur_opt.text().match(/^[^\s]/) ) { // area
aree.push( cur_opt.text() );
cur_area = underscorize(cur_opt.text());
cur_opt.addClass('area area_'+cur_area);
} else if ( cur_opt.text().match(/^\s{2}[^\s]/) ) { // servizio
servizi[cur_area] = servizi[cur_area] || [];
servizi[cur_area].push( cur_opt.text() );
cur_serv = underscorize(cur_opt.text());
cur_opt.addClass('serv area_'+cur_area+' serv_'+cur_serv);
} else // coda corrente
;
} else
cur_opt.addClass('coda area_'+cur_area+' serv_'+cur_serv);
cur_opt = cur_opt.next();
}//while
// popola filtro dell'area coi valori ordinati
$.each(
aree.sort(function (a,b) { return a.replace(/AREA\s+/,'') > b.replace(/AREA\s+/,'') ? 1 : -1; }),
function () {
var i = this.toString();
$('<option></option>').
html(i.replace('AREA','').trim()).
val(underscorize(i)).
appendTo(sel_area);
}
);
// filtra code per area
sel_area.change(function () {
var area = $(this).val(),
opts = $('#DestQueueID option').hide();
$('#DestQueueID').get(0).selectedIndex = 0; //opts.first().prop('selected', true);
if (area == '-') {
opts.show();
sel_serv.hide();
} else {
sel_serv.show().find('option:gt(0)').remove(); // svuota filtro del servizio per il successivo popolamento
sel_serv.get(0).selectedIndex = 0;
// popola filtro del servizio coi valori ordinati
$.each(
servizi[area].sort(function (a,b) { return a.replace(/SERVIZIO\s+/,'') > b.replace(/SERVIZIO\s+/,'') ? 1 : -1; }),
function () {
var i = this.toString();
$('<option></option>').
html(i.replace('SERVIZIO','').trim()).
val(underscorize(i)).
appendTo(sel_serv);
}
);
opts.filter('.area_'+area).show();
}//if-else
});
// filtra code per servizio
sel_serv.change(function () {
var area = sel_area.val(),
serv = $(this).val(),
opts = $('#DestQueueID option').hide();
$('#DestQueueID').get(0).selectedIndex = 0; //opts.first().prop('selected', true);
if (serv == '-')
opts.filter('.area_'+area).show();
else
opts.filter('.serv_'+serv).show();
});
// togli margine superiore per:
$('.MainBox:first').css('margin-top', '-0.9rem'); // contenitore principale
$('#ArticleTree' ).css('margin-top', '0.2rem'); // contenitore dei post
// piccole migliorie per guadagnare spazio col titolo
var headline = $('div.Headline').hide(),
title_row = $('div.ControlRow:first'),
ticket_status = headline.find('div.Flag').css('display', 'inline-block').css('float', 'left'),
ticket_descr = headline.find('h1').hide().text().trim().replace('—','·').
replace(/Ticket\#([0-9]+)/,'Ticket <span style="font-size: larger;">$1</span>'),
tempo_descr = title_row.find('.AdditionalInformation').hide().text().trim().
replace('Tempo trascorso','Tempo').replace(/ +[^ ] Data di Creazione:/, ' dal');
title_row.
css('min-height', 'unset').
find('h2').hide().
after(ticket_status).
after('<b>'+ticket_descr+'</b>').
after('<i style="float: right">'+tempo_descr+'</span>');
// gestione toggle righe di sistema
function toggle_sys_rows () {
$('#ArticleTableBody tbody tr[class*="system-email-"]').
toggle( !$ls.get('prefs.hide_sys_rows', true) );
}//toggle_sys_rows
toggle_sys_rows(); // toggle alla prima visualizzazione
// toggle su onclick del pulsantino che aggiorna le preferenze
var sys_rows_class = $ls.get('prefs.hide_sys_rows', true) ? ' Active' : '';
$('<a href="#" title="Mostra righe di sistema" class="OneArticle'+sys_rows_class+'"><i style="font-size: small">Sys</i><span>Mostra righe di sistema</span></a>').
prependTo('.TicketList .ControlRow .ArticleView.Icons').
click(function () {
var hide_rows = $ls.set('prefs.hide_sys_rows', !$ls.get('prefs.hide_sys_rows', true));
$(this).toggleClass('Active', hide_rows);
toggle_sys_rows();
});
// ridimensiona lo scroller in modo da mostrare tutte le righe
var rows = $('#ArticleTableBody tbody tr:visible');
$('#ArticleTableBody div.Scroller').
css('min-height', '3.5rem').
height(
parseInt($('#ArticleTableBody thead tr:visible:first').height()) +
rows.length * parseInt(rows.filter(':first').height()) +
3
);
// evidenzia link allegati
$('a.Attachment').parent().
css('border', '1px dotted red').
css('background-color', 'orange');
//$('#ArticleTableBody tbody tr').live('click', function () {
// setTimeout(extend_uris, 1000);
// setTimeout(extend_uris, 2000);
// setTimeout(extend_uris, 3000);
//});
setInterval(extend_uris, 1000);
// visualizza l'ultimo messaggio
rows.filter(':last').click();
// scambia nome-cognome nella colonna "DA"
$('#ArticleTableBody tbody tr:visible td.From').each(function () {
$(this).text(
$(this).text().trim().replace(/^(\w+)\s([\w\s]+)$/,"$2 $1")
);
});
// rendi visibile il telefono
$('p:contains(049827)').each(function () {
var tel = $(this).text().trim().replace(/049827(.+)/, '049.827.<b style="font-size: large">$1</b>');
$(this).html(tel);
});
// rendi visibile il telefono esterno (medicina)
$('p:contains(049821)').each(function () {
var tel = $(this).text().trim().replace(/049821(.+)/, '049.<b style="font-size: large">821</b>−<b style="font-size: large">$1</b>');
$(this).html(tel);
});
// rimuovi intestazioni delle widgets sulla destra...
$('div.SidebarColumn div.WidgetSimple').
css('margin-bottom', '0').
find('div.Header').hide();
// ...e il bordo in alto
$('div.SidebarColumn div.WidgetSimple:gt(0)').css('border-top', '0');
// evidenzia stato ticket
var p_stato = $('fieldset label:contains(Stato:)').next();
p_stato.html( '<b>'+p_stato.text().trim()+'</b>' );
// nascondi codice cliente = email cliente (gia' presente in basso)
$('fieldset label:contains(Codice cliente:)').hide().next().hide().next().hide();
// evidenzia operatore
var p_op = $('fieldset label:contains(Operatore:)').next(),
op_name = p_op.text().trim().toUpperCase();
if (op_name != 'ADMIN OTRS') {
$('.ActionRow ul.Actions a:contains(Operatore)').
append(' ('+get_cognome(op_name)+')');
p_op.html( '<b>'+op_name+'</b>' ).find('b').
css('border', '4px outset red').
css('padding', '0.25rem').
css('background-color', 'black').
css('color', 'white').
css('font-family', 'monospace');
} else {
$('.ActionRow ul.Actions a:contains(Operatore)').
append(' (libero)');
p_op.html( '<b>'+op_name+'</b>' );
}// if-else
// rendi leggibile la coda
var p_coda = $('fieldset label:contains(Coda:)').next(),
//coda = p_coda.text().trim().replace(/::/g,'<hr style="border-top: 1px solid black">');
coda = p_coda.text().trim().replace(/.*::/,'');
p_coda.html('<div style="font-size: smaller">'+coda+'</div>' );
// evidenzia email
var p_email = $('fieldset label:contains(Email:)').next(),
mail = p_email.attr('title').trim(),
ticket_num = $('h1:contains(Ticket#)').text().trim().replace(/^([^ ]+).+/,'$1');
p_email.html('<a href="mailto:'+mail+'?Subject='+ticket_num+'">'+mail+'</a>' );
if (p_coda.is('[title^=AREA DIDATTICA E SERVIZI AGLI STUDENTI]')) { // add link IDRA personale
p_email.
append('<br>').
append('<a href="https://programmazione.didattica.unipd.it/persone?search='+mail+'" target="_blank"></a>').
find('a:last').append('(vedi in '+icon_tag('idra')+')');
}
// merge nome e cognome
var p_cogn = $('fieldset label:contains(Cognome:)').next();
p_cogn.hide().prev().hide().prev().hide().prev().append( p_cogn.text().trim() );
// rendi leggibile la sede
var p_sede = $('fieldset label:contains(Commento:)').next();
p_sede.text( (p_sede.attr('title')||'').trim().replace(/DIPARTIMENTO (DI|DEI)/,'DIP.') );
// nascondi nome utente che e' uguale alla mail
$('fieldset label:contains(Nome utente:)').next().andSelf().hide();
// compatta fieldset info sulla destra
$('div.Content fieldset.TableLike').css('margin-bottom', '0');
// metti in riga i link dei tickets aperti dall'utente
$('div.Content ul.ItemRow').css('margin-left', '0').find('li').css('display', 'inline-block');
// migliora elenco collegamenti
$('ul.Tablelike.SpacingTopSmall').each(function () {
var ul = $(this).css('margin-left', '0'),
title = ul.prev().hide().text().trim();
ul.find('li.Header').text(title);
ul.find('li:not(.Header)').css('display', 'inline-block');
});
$('#Footer').hide(); // nascondi footer
// aggiungi icone ai link delle azioni
$.each(icons, function (label, data) {
var link = $('.ActionRow ul.Actions a:contains('+label+')');
switch (label) {
case 'Nota': link.text('Nota'); break;
case 'Chiudi': link.text('Chiudi/Stato'); break;
}//switch
link.append(icon_tag(label));
});
$('#DestQueueID').after(icon_tag('coda'));
$('.ActionRow ul.Actions').
find('li').css('margin-right', '-1px').
find('a').css('border', '2px outset #555').css('border-radius', '0.3rem');
$('#DestQueueID').parents('form:first').
css('border', '2px outset #555').css('border-radius', '0.3rem').css('padding', '0.13rem').
find('select').css('margin', 'auto');
$('.ActionRow img').css('vertical-align', 'middle').css('margin-left', '0.2rem');
// mostra storico sopra alle righe delle note
var storico = $('<fieldset style="height: 40px; font-size: smaller; padding: 0 2px 6px 2px; border: 1px solid black; overflow-x: hidden; overflow-y: scroll;"><legend style="margin: 0 2em; padding: 0 0.5em">Storico del ticket</legend></fieldset>').
insertBefore('#ArticleTableBody');
$.get(
$('a:contains(Storico)').attr('href'),
function (resp) {
$('#ArticleTableBody').css('border', '1px solid green');
$(resp).find('table.DataTable:first').appendTo(storico);
storico.find('tr').hide();
var storico_height = storico.find('tr td:first-child').
filter(':contains(Move), :contains(OwnerUpdate)').
parent().show().
length * 22;
storico.height(storico_height > 100 ? 100 : storico_height);
// indica se la richiesta proviene da un TEAM
var team_row = storico.find('table tbody tr:first td[title*="TEAM"]');
if (team_row.length != 0) {
var team = team_row.attr('title').replace(/.+(TEAM[^;)]+).+/, '$1');
$('<span style="background-color: red; margin-left: 1rem;">Creato in: '+team+'</span>').prependTo('.TicketList .ControlRow');
}//if
// evidenzia righe col cambio operatore
storico.find('table tbody tr td:contains(Nuovo operatore):contains(@unipd.it)').
css('background-color', 'lightpink');
},//success
'html'
);
// --- controlla periodicamente se ci son state modifiche ------------------
var check_ticket_updates_interval = 15000;
function check_ticket_updates () {
$.get(window.location, function (resp) {
var old_rows = $('#ArticleTableBody tbody tr').length,
new_rows = $(resp).find('#ArticleTableBody tbody tr').length;
console.log([old_rows, new_rows]);
if (old_rows != new_rows && confirm("Il ticket è stato modificato,\nricaricare la pagina?"))
window.location.reload();
else
setTimeout(check_ticket_updates, check_ticket_updates_interval);
}, 'html');
}//check_ticket_updates
setTimeout(check_ticket_updates, check_ticket_updates_interval);
}//if
// --- cambio proprietario ---------------------------------------------------
var sel_owner = $('#NewOwnerID');
if (sel_owner.length > 0) {
//// nascondi nomi non usati
//sel_owner.find('option').not(
// ':contains([email protected]),'+
// ':contains([email protected])'
//).hide()
// imposta oggetto predefinito
$('#NewOwnerID, #OldOwnerID').change(function () {
var name = $(this).find('option:selected').text().
replace(/^([0-9]+: )*([^()]+)( \(.+\))/, '$2').
split(' ').pop();
$('#Subject').val('per ' + name.capitalize());
setTimeout(function () {
// swap nome e cognome
sel_owner.find('option').each(function () {
$(this).text( $(this).text().trim().replace(/^([^ ]+) (.+)/, '$2 $1').capitalize() );
});
// resort options
sortSelect( sel_owner.get(0) );
}, 1000);
return false;
});
// seleziona proprietario precedente
$(':radio[value="Old"]').attr('checked', true);
$('#OldOwnerID').change();
// testo predefinito
$('#RichText').
val('...').
bind('focus', function () { $(this).select(); }); // seleziona tutto onfocus
}//if
// --- aggiungi nota ---------------------------------------------------------
// evidenzia la riga col tipo di nota
$('#ArticleTypeID').
css('height', '3rem').
css('width', '50%').
css('font-size', 'x-large');
}// setup_admin ----------------------------------------------------------------
function setup_customer ($) {
if (!window.location.pathname.match(/customer.pl/))
return;
// nascondi righe di sistema
$('#Messages li[class*=system]').hide();
}// setup_customer -------------------------------------------------------------
(function ($) { $(function () {
setup_customer($);
setup_admin($);
});})(jQuery);