MediaWiki:Gadget-BugStatusUpdate.js
Apparence
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./*
* Bug Status Update Gadget
* Author: Rob Moen (robm)
* Description:
* Finds and updates bug status templates on a page.
* Makes 1 JSONP request to Bugzilla JSON RPC api.
* Source: [[mw:User:Robmoen/bugStatusUpdate.js]]
*/
(function($){
// Disabled due to bugzilla overload -- TS
return;
var ids = [],
target = 'https://bugzilla.wikimedia.org/jsonrpc.cgi';
//ugly way to compose the request parameters. though, bugzilla is happy with it
var getParams = function (ids) {
return 'method=Bug.get&id=158¶ms=[{ "ids": ['+ ids.join(',') +'],"include_fields":["last_change_time","status", "id", "summary"]}]';
};
//get the bug id numbers on the page
$('.mw-trackedTemplate').each(function() {
var title = $(this).find('a[title^="bugzilla:"]').attr('title');
ids.push(title.split(':')[1]);
});
//make jsonp
$.ajax({
url: target,
dataType:'jsonp',
data: getParams(ids),
success: function (data) {
var color = {
"RESOLVED": "green",
"CRITICAL": "red"
},
statusProps = {
'font-weight': 'bold',
'font-size': '1.5em',
'text-transform': 'uppercase'
};
if(data.result.bugs) {
for(var b in data.result.bugs) {
//find the right bug to update
$item = $('.mw-trackedTemplate')
.find('a[title^="bugzilla:'+data.result.bugs[b].id+'"]');
title = $('#trakbug-'+data.result.bugs[b].id)
if(title) {
title.text( data.result.bugs[b].summary );
}
if($item) {
//find child, if exists
$status = $item
.parent()
.next('p')
.children('span');
//create the status element if it does not exist
if($status.length === 0){
$item
.parent()
.parent()
.append(
$('<p />').append(
$('<span />').css(statusProps)
.text('Status')
)
);
}
//udpate the status element
$item
.parent()
.next('p')
.children('span')
.css('color', color[data.result.bugs[b].status] || '#333333')
.text(data.result.bugs[b].status);
$status = null;
}
}
}
}
});
})(jQuery);