// ==UserScript==
// @name Helpdesk Ammcentr enhancements
// @namespace camelsoft
// @description Miglioramenti ad OTRS
// @include https://helpdesk.ammcentr.unipd.it/otrs/index.pl*
// @icon https://github.com/acavalin/otrs_enhancements/raw/master/xm_icon.png
// @version 1.4.0
// @grant none
// ==/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 ($) { $(function () {
// -----------------------------------------------------------------------------
var cur_user = $('#UserInfo a:first').text().trim(); // displayed name
var icons = {
idra: "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAKKGlDQ1BpY2MAAHjanZZ3VFTXFofPvXd6oc0wdBh6720Akd4EpEgXhWFmgKEMMMzQxIaICkYUFWk2JCpgwGgoEiuiWAgICtgDEgSUGIwiKipvRtaKrry89/Ly++Pcb+2z977n7L3vWhcAkrcfl5cGSwGQyhPwg71c6RGRUXRsL4ABHmCAOQBMVma6/wrPECCSj4cbPVPkBL4IAuDNkHgF4LaxdyCdDv4/SbPS+QJRmkARW7I5mSwRF4o4JVuQLrbPiJgalyxmGCVmvuiAIpYXc8IiG332WWRnMbNTeWwRi8+czk5li7lLxFuzhBwRI34iLsricrJFfEfEWinCVK6I34pjUznMTABQJLFdwGElithMxCR+SLCbiJcAgCMlfMVxX7GAkyMQX8otLT2Xz01IFND1WPp0czs7Bt2bk53CEQiMA5msZCafTXdLS01n8nIBWLzzZ8mIa0sXFdnG3M7GxtjCxPyrQv3Xzb8pcW8X6VXQ555BtJ4vtr/yS6sFgDErqs3OL7a4SgDaNgMgf/+LTesQAJKivrX2fXUfmnheEgWCdHtT0+zsbBMuh2UiLugf+p8Of0Nfvc9EnO6P8tDdOfFMYYqALq4bKy0lTcinZ6YzWRy68Z+H+B8H/vU5jII58Rw+hyeKCBNNGZeXIGo3j80VcNN4dC7vPzXxH4b9SYtzLRKl7hOgxpgAqT4qQH7tASgKESDRB8Rd/6NvfvgwECh6hqtNLM79Z0H/nhUuFS+Z3ITPcW7BIXSWkJ+1uCf+LAEaEIAkoAIFoAo0gR4wBhbAFjgAZ+ABloEAEAIiwWrAAokgFfBBNsgHG0ERKAE7wV5QBQ6COlAPmsAp0AbOgkvgKrgJboFB8ACMgHHwHMyAN2AegiAsRIYokAKkBmlDhpAFxICWQh6QHxQMRUKxUALEg4RQPrQJKoHKoCroMFQPfQ+dgS5B16F+6B40Ck1Bv0PvYQQmwVRYBdaBTWEG7AL7wiHwKjgBzoDz4EJ4B1wB18In4Fb4EnwTHoRH4OfwLAIQIkJD1BFjhIG4IQFIFBKP8JF1SDFSjtQiTUgH0o3cRkaQaeQdCoOioOgoY5QDyhsVimKhMlDrUNtRVajjqFZUF+o2ahQ1g/qEJqOV0YZoe7QPOgKdgM5GF6HL0UfRLegr6EH0OPoNBoOhYXQxthhvTCQmCbMGsx2zH9OMuYjpx4xhZrFYrALWEOuIDcAysQJsEbYSewJ7ATuAHce+xRFxajgLnCcuCsfDFeDKcQ2487gB3ARuHi+F18bb4wPwbHwuvhRfh+/A9+HH8fMEaYIuwZEQQkgibCRUEJoIVwgPCa+IRKIG0Y4YROQSNxAriCeJ14ijxHckGZIByY0UTRKSdpCOkS6S7pFekclkHbIzOYosIO8g15Mvkx+T30pQJEwkfCTYEuslqiVaJQYkXkjiJbUlXSRXS+ZJlkueluyTnJbCS+lIuUkxpdZJVUudkRqWmpWmSJtLB0inSm+XbpC+Lj0pg5XRkfGQYcsUyhyRuSwzRkEomhQ3CouyiVJHuUIZp2KoulQfahK1hPodtZc6IysjayUbJpsjWy17TnaEhtB0aD60FFop7RRtiPZeTkXORY4jt02uSW5Abk5eSd5ZniNfLN8sPyj/XoGu4KGQrLBLoU3hkSJK0UAxSDFb8YDiFcVpJaqSgxJLqVjplNJ9ZVjZQDlYeY3yEeUe5VkVVRUvlXSVSpXLKtOqNFVn1STVParnVafUKGpL1bhqe9QuqD2jy9Jd6Cn0CnoXfUZdWd1bXah+WL1XfV5DVyNUo0CjWeORJkGToRmvuUezU3NGS03LXytfq1HrvjZem6GdqL1Pu1t7TkdXJ1xni06bzqSuvK6Pbp5uo+5DPbKek16GXq3eHX2MPkM/WX+//i0D2MDaINGg2qDPEDa0MeQa7jfsN0Ib2RnxjGqNho1Jxi7GWcaNxqMmNBM/kwKTNpMXplqmUaa7TLtNP5lZm6WY1Zk9MJcxX2ZeYN5h/ruFgQXLotrijiXZ0tNyvWW75UsrQyuO1QGru9YUa3/rLdad1h9tbG34Nk02U7ZatrG2NbbDDCojkLGdcc0Obedqt97urN07ext7gf0p+98cjB2SHRocJpfoLuEsqVsy5qjhyHQ87DiylL40dumhpSNO6k5Mp1qnJ86azmzno84TLvouSS4nXF64mrnyXVtc59zs3da6XXRH3L3ci917PWQ8Qj2qPB57angmeDZ6znhZe63xuuiN9vb13uU97KPiw/Kp95lZZrts7bIuX5LvCt8q3yd+Bn58vw5/2H+Z/27/h8u1l/OWtwWAAJ+A3QGPAnUDMwJ/DMIEBQZVBz0NNg/OD+5eQVkRs6JhxZsQ15DSkAeheqHC0M4wybDosPqwuXD38LLwkQjTiLURNyMVI7mR7VHYqLCoo1GzKz1W7l05Hm0dXRQ9tEp3Vc6q66sVV6esPhcjGcOMOR2Ljg2PbYj9wAxg1jJn43ziauJmWG6sfaznbGf2HvYUx5FTxpmId4wvi59McEzYnTCV6JRYnjjNdeNWcV8meScdTJpLDkg+lryQEp7SnIpLjU09w5PhJfO60lTTctL60w3Ti9JHMuwz9mbM8H35RzOhzFWZ7QKq6GeqR6gn3CwczVqaVZ31Njss+3SOdA4vpyfXIHdb7kSeZ963a1BrWGs689XzN+aPrnVZe3gdtC5uXed6zfWF68c3eG04vpGwMXnjTwVmBWUFrzeFb+ooVCncUDi22WtzY5FEEb9oeIvDloNbUVu5W3u3WW6r3PapmF18o8SspLzkw3bW9hvfmH9T8c3CjvgdvaU2pQd2Ynbydg7tctp1vEy6LK9sbLf/7tY99D3Fe17vjdl7vdyq/OA+wj7hvpEKv4r2Sq3KnZUfqhKrBqtdq5trlGu21cztZ+8fOOB8oOmgysGSg+8PcQ/dPex1uLVWp7b8COZI1pGndWF13d8yvq0/qni05OjHY7xjI8eDj3fV29bXNyg3lDbCjcLGqRPRJ2595/5de5Nx0+FmWnPJSXBSePLZ97HfD53yPdV5mnG66QftH2paKC3FrVBrbutMW2LbSHtke/+ZZWc6Oxw6Wn40+fHYWfWz1edkz5WeJ5wvPL9wIe/C7MX0i9OXEi6NdcZ0PrgccflOV1BX7xXfK9euel693O3SfeGa47Wz1+2vn7nBuNF20+Zma491T8tP1j+19Nr0tvbZ9rXfsrvV0b+k//yA08Cl2+63r97xuXNzcPlg/1Do0N3h6OGRu+y7k/dS7r28n3V//sGGh+iHxY+kHpU/Vn5c+7P+z80jNiPnRt1He56sePJgjDX2/JfMXz6MFz4lPy2fUJuon7SYPDvlOXXr2cpn48/Tn89PF/0q/WvNC70XP/zm/FvPTMTM+Ev+y4Xft79SeHXstdXrztnA2cdvUt/MzxW/VXh7/B3jXff78PcT89kfsB8qPup/7Pjk++nhQurCwr8AA5jz/NxUoywAAALfUExURYYAAOjExAAAAIEbG24JCTYAABgAAAUAABUCAp8eHgAGBmMDAz0BAcRRUVUAAJ4CAnc9Lzs/PO1vb+dgYOpZWfpcXOlRUeJiYtdBQbc9PZtQUP1YWNshIY4JCfdnZ9I5ObQgIOkbG/AaGrwlJeZHR+UuLtweHsQhIeYGBuQQEKchIWgfH+0yMoIICJM4OOMaGuoSEukeHrEEBNkFBZcBAZwAAN8CAsQLC1AHB+ENDZULC68qKo8PD+sJCbwCArgJCcIQEOQbG9UCApMBAc0ODrQDAyoAAMMPD48ODqo0NMgvL+wLC9cICNggINcGBuUEBJsGBts2NpgGBggAAHcfH7M2NqsVFagMDOICArUAAIcTE9sICMISErUYGFMAAAAAALI5OcsVFX0BAashIdIFBbEJCb8sLNQFBcgAAKABAVYBAQQBAQACAqsDA3gBAVAICKgCAsoDA8kFBZ0LC4UwMLY8PLwtLZEYGGYDAzgBAQAAAJkFBbkFBbgGBrsNDbMICJMFBSUAAMZZWbkYGI0AAD4BAfj4y/v7yeHiwLvevsdtaagUE5gAAIwHBkIBAXx8Z39yYXNvYHJdUX9PRWk1K1EYEnVHPXI9MoccFmdANTgcFWZmWF1NRGNVS3ohHWgLCVBLP21tXG5jWEcnIFhOQ18wKGcQD25NRFNIO1daSXN3bIJYUW9aUjsWEl4AAHlOR2xbU3ZjXGNkWnFvZ00mImZMSWdgWWBRR2VoX4CBY36BeV09OGtkXmFlWod7cmtjXUIqJWNWUUc6NllQS0xAOlxSTTg4MykoI15jXXd7bnN3bFRXSnJ4cHBza2xwZ0pNRRoSDlZXTx0ZFTQzLVpdUlxeVRYXEwAAAFNWTmBjWPcBAeIAAOQAANoAANgAAMsAAMYAAL4AALwAALoAALgHB7IAALAAAK4AAKwAAKoAAKgAAKgAAKIIBqQNC6IIB54BAJsAAJwDA3A9NI8AAI4tJgRvfxAAAADadFJOUwAAAAAAAAAAAAAAAAAAAAAAAAUrPRwJAxkgCFiqF0nBzMuiTna6cKP2sTsFwbNo6eHp4OCCfvLYNeentMfx79rL2dc0g+w3p8muyvfz4/3/pJHbIkq65tD+8bP47u+QBzXduIr+7tH+/++bGQR9rDO1///wtJBXDhpEAzPi/fv4kQoV0e5DBwIKD1vy//1phFqewu7qhtb+//1lurnl+uzFdMPcvv7y+vxptMnxl6/R1e/K3v3u/PuyDrvY5FtW3/H74Pb9/f303019T5OsoWlYmp2GoKGFa4NoLEvCeQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAARtJREFUGNMBEAHv/gASExQVFhcYGRobHB0AAQICAB4fICEiIyQlJicoKSorAwIALC0uL9owMTIzNDU2NzgEAgA5Ojs8PT4/QEFCQ0RFRgUCAEdISUpLTE1OT9tQUVJTBgIAVFVWV1jcWVpb3VxdXl8HAgBgYWJjZN5lZmdoaWprCAICAGxtbm9w33Fy4HN0dXZ3CQoAC3h5ent84eLjfX7kf4CBDAACAgINgoPl5ufo6errhIUOAIaHiImKi4zs7e7v8PGNjg8Aj5CRkpOUlZbyl5jz9JmaEACbnJ2en6ChoqOkpaanqKkRAKqrrK2ur7CxsrO0tba3uLkAuru8vb6/wMHCw8TFxsfIyQDKy8zNzs/Q0dLT1NXW19jZ8mB02eGhMe0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTEtMDQtMDNUMDE6MTI6MjkrMDI6MDDIqN5CAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEwLTEyLTI5VDE1OjE2OjE2KzAxOjAwSMbr/gAAAABJRU5ErkJggg==",
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"
};
// 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
// 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();
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]) );
}//sortSelect
// piccole migliorie per guadagnare spazio
$('#Header').css('height', '1rem');
$('#Navigation').css('top','2px');
$('#Logo').hide();
// riquadro credits + links
var links_hp = '<a href="https://cava.link/" target="_blank">Cava.link</a>',
links_script = '<a href="https://github.com/acavalin/otrs_enhancements" 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');
// --- 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(.di_altri) 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(/ ([dhm])/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();
// 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();
p_op.html( '<b>'+p_op.text().trim()+'</b>' );
// 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');
});
// 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', 'text-bottom').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 * 20;
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');
}
},//success
'html'
);
}//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()
// swap nome e cognome
sel_owner.find('option').each(function () {
var o = $(this);
o.text(
o.text().trim().
replace(/^([^ ]+) (.+)/, '$2 $1').
replace(/\b\w/g, function(l){ return l.toUpperCase() }) // capitalize => http://stackoverflow.com/a/38530325
);
});
// resort options
sortSelect( sel_owner.get(0) );
// imposta oggetto predefinito
$('#NewOwnerID, #OldOwnerID').change(function () {
$('#Subject').val(
'per ' + $(this).find('option:selected').text().replace(/^(.: )*.+ (\w+) .+/, '$2')
);
return false;
});
// seleziona proprietario precedente
$(':radio[value="Old"]').attr('checked', true);
$('#OldOwnerID').change();
// testo predefinito
$('#RichText').
val('fatto').
bind('focus', function () { $(this).select(); }); // seleziona tutto onfocus
}//if
// -----------------------------------------------------------------------------
});})(jQuery);