14.11.2007

Wilman pikaviestien poistamisen nopeutustyökalu

Taustaa

Käsittääkseni monilla yläasteilla ja lukioissa on käytössä Starsoftin Wilma-niminen selainpohjainen sovellus oppilastietojen yms. ylläpitämiseen. Wilmassa on nk. pikaviestitoiminnallisuus, jonka avulla mm. opettajat voivat viestittää opiskelijoilleen ja päinvastoin.

Ainakin Wilman versiossa 2.04 ja aiemmissa on pikaviesteihin liittyen kuitenkin sellainen hankala piirre, että viestien poistaminen on tuskaisen hidasta kun ensin pitää valita poistettava viesti, sitten valita aukeavasta näkymästä "Poista oma kopiosi" ja tämän jälkeen vielä "Poista viesti". Jos haluaa käydä pikaviestejänsä läpi ja poistaa viesteja kerralla useamman, käy klikkailu jo työstä.

Itselläni tuli juuri kyseinen tilanne vastaan, kypsyin asiaan melko nopeasti ja kirjoitin pienen selainautomatisaatio-ohjelman (bookmarkletin), joka vähentää jokaisen viestin poistamisesta yhden klikkauksen (wau ;) Ei no, ihan aikuisten oikeasti, jos poistettavia on monta, niin tämä huomattavasti nopeuttaa toimintaa sivuuttamalla "Poista oma kopioisi" -vaiheen.

Vielä parempi olisi yhteen klikkaukseen pääseminen per viesti, mutta tätä en yrittänyt ainakaan vielä yrittänyt tehdä, hyöty ei tod.näk. olisi yhtä suuri kuin tekemiseen kuluva aika...Wilmassa on nimittäin implementoitu CSRF:n esto (syvällistä internet-tekniikkaa, ei välttämättä aukea ilman vähintään vuoden nettisivujentekokokemusta) ja jotta yhden klikkauksen poiston voisi tehdä, pitäisi parseroida HTML:ää JavaScriptillä tai muuten ja hakea sellasia action tokeneita koodista mikä menee kikkailuksi.

Automatisaation (bookmarklet) käyttöohjeita

Nyt sitten itse asiaan: raahaa ja pudota alla oleva linkki selaimesi työkaluriviin. Tämän jälkeen kun olet Wilman Pikaviestit-sivulla, klikkaamalla äsken luomaasi nappia työkalurivissä, avautuu ruudullesi lista poistettavissa olevista pikaviesteistä.

Poista Wilma-viestejä
(raahaa linkki työkaluriviisi, toimii varmuudella vain Firefox 2:ssa)

Sama koodina, mikäli yllä oleva ei toiminut. Maalaa ja kopioi siis alla oleva oranssi merkkijono ja luo pikakuvake, jonka kohteena (location) on kyseinen kopioitu merkkijono. Huomaa, että voit sijoittaa kirjanmerkin myös selaimesi työkaluriviin. Huom! Tämän tavan pitäisi toimia kaikissa selaimissa toisin kuin edellinen.

javascript:sRemUrlStart=location.protocol+'//'+location.hostname+'/messages/delete?mid=';reMsgUrl=/^https?:\/\/[\w\-\_\.\/]+\/messages\/[\d]{3,5}$/;aMsgs=new Array();dl=document.links;for(i=0;i<dl.length;i++){if(reMsgUrl.test(dl[i].href)){aMsgs.push(dl[i]);}}oWin=window.open('','winRemoveMsgs', 'location=1,scrollbars=1,width=350,height=500');oWin.moveTo(screen.width-350,screen.height-500);oWin.document.write('<html><head><title>Poista Wilma-viestejä</title></head><body><h3>Poista viestejä klikkaamalla linkkejä</h3><ol>');for(i=0;i<aMsgs.length;i++){oWin.document.write('<li><a href="' +sRemUrlStart + aMsgs[i].href.substring(aMsgs[i].href.lastIndexOf('/')+1, aMsgs[i].href.length)+ '" target="_blank">' +aMsgs[i].text+ '</a></li>');}oWin.document.write('</ol></body></html>');var t=setTimeout("oWin.focus()",400);

Toimintoa käytetään menemällä Wilman pikaviestisivulle ja klikkaamalla kyseistä nappia työkalurivistä, jolloin ruudun oikeaan reunaan ilmestyy lista poistettavissa olevista viesteistä. Linkkiä klikkaamalla avautuu ikkuna, josta poistaminen onnistuu. Kannattaa opetella millä näppinyhdistelmällä kyseisen ikkunan saa suljettua käyttämässäsi selaimessa (esim. Firefoxissa ja Operassa Ctrl+W).