User:Iceblock/Scripts/Helpdesk.js

/*

* Documentation: This script adds a link to the personal tools

* with information about the latest Help desk post.

* Clicking the tab will show the latest Help desk diff.

*

*

* This script is based on the script

*

* http://no.wikipedia.org/wiki/MediaWiki:Gadget-HurtigSlett.js

*

* In this script, the query string and links are modified to check the Help desk revision info.

* In the function names, 'qd' is replaced with 'helpdesk'.

*

* An unused function (function displayQuickDelete()) is removed from this script.

*

*/

/* Memo to self, den som skal sjekkes mot er denne */

/* http://no.wikipedia.org/w/api.php?action=query&list=categorymembers&cmtitle=Kategori:Sider%20som%20er%20foresl%E5tt%20raskt%20slettet&format=xml */

/* Vi har to mulige valg å legge denne på: */

/*

<-- Brukerside, diskusjon, overvåk, etc. */

/*

<-- Brukernavn, min diskusjonsside, innstillinger, etc. */

/* (function displayQuickDelete() removed) */

/* init ajax */

function helpdesk_create_request() {

try {

helpdesk_http = new XMLHttpRequest();

} catch (e) {

try {

helpdesk_http = new ActiveXObject("Msxml2.XMLHTTP");

} catch (e) {

try {

helpdesk_http = new ActiveXObject("Microsoft.XMLHTTP");

} catch (e) {

alert("Your browser does not support AJAX!");

return false;

}

}

}

helpdesk_http.onreadystatechange = function() {

if(helpdesk_http.readyState == 4) helpdesk_ajax_response();}

return true;

}

/* make a request */

function helpdesk_ajax_request() {

var api_link = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&prop=revisions&titles=Wikipedia:Help%20desk&format=xml';

if (helpdesk_create_request () == false) {

return;

}

// Then make the request

helpdesk_http.open("GET", api_link, true);

helpdesk_http.send(null);

}

/* we have received a response */

function helpdesk_ajax_response() {

var refresh_time = 60;

var link = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=Wikipedia:Help_desk&diff=cur';

var items = helpdesk_http.responseXML.getElementsByTagName('rev')[0].getAttribute('comment');

var user = helpdesk_http.responseXML.getElementsByTagName('rev')[0].getAttribute('user');

//items.length;

var aNode = document.createElement('a');

var liNode = document.createElement('li');

aNode.appendChild(document.createTextNode('Latest Help desk post (by ' + user + ')' + (items.length>0?': ':'') + items));

aNode.setAttribute('href', link);

aNode.setAttribute('id', 'pt-helpdesk');

liNode.appendChild(aNode);

liNode.className='plainlinks';

document.getElementById('p-personal').getElementsByTagName('ul')[0].insertBefore(liNode, document.getElementById('p-personal').getElementsByTagName('ul')[0].getElementsByTagName('li')[0]);

/* Repeat */

/* Actually, I think we should not repeat, check if it is updated on page refresh, and if that is enough */

// setTimeout("helpdesk_ajax_request()", refresh_time * 1000);

}

$(helpdesk_ajax_request);