User:Robmoen/SandBox/Gadget-BugStatusUpdate.js

/* (function($){ //	// Create function to retrieve bug statuses	function bugStatus{		$.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' in data.result ) { for( var b in data.result.bugs ) { //					//find the right bug to update var $item = $( '.mw-trackedTemplate' ).find( 'a[title^="bugzilla:' + data.result.bugs[b].id + '"]' ); var title = $( '.trakbug-' + data.result.bugs[b].id ); if( title ) { title.text( data.result.bugs[b].summary ); }						if( $item ) { //						// Find child, if it 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(										$( '' ).append( $( ' ' ).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; }					}				}			},			error: function ( foo, data, error ) { /* Using this string with 49741 being a ticket I can't see: https://bugzilla.wikimedia.org/jsonrpc.cgi?method=Bug.get&id=158&params=[{%20%22ids%22:%20[35810,35909,300,48745,49741,54598],%22include_fields%22:[%22last_change_time%22,%22status%22,%20%22id%22,%20%22summary%22]}] returns: {"error":{"message":"You are not authorized to access bug #49741. To see this bug, you must first log in to an account with the appropriate permissions.","code":102},"id":"158","result":null} */				console.error( 'Foo: %o\nRaw data: %o\nError: %o', foo, data, error ); console.error( 'id array: %o', ids ); }		} );	}	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 request	bugStatus; })(jQuery);
 * Bug Status Update Gadget
 * Author: Donald Fortier (User:Technical_13)
 * * Based on original code:
 * ** Author: Rob Moen (robm)
 * ** Source: mw:User:Robmoen/bugStatusUpdate.js
 * Description:
 * Finds and updates bug status templates on a page.
 * Makes 1 JSONP request to Bugzilla JSON RPC api.