Aller au contenu

MediaWiki:Gadget-BugStatusUpdate.js

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 16 février 2012 à 00:49 et modifiée en dernier par Edokter (discuter | contributions) (space). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
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($){
	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&params=[{ "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]);
	});

        // Do not query if no ids were found
        if (!ids.length) {
                return;
        }
 
	//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);