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 13 février 2012 à 18:04 et modifiée en dernier par Anomie (discuter | contributions) (Possible fix for the overloading issue. Leaving Tim's disablement in place until reviewed by Tim.). 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($){
        // 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&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 <= 0) 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);