Jump to content

User:Technical 13/SandBox/Gadget-BugStatusUpdate.js/sandbox.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/*
* 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.
*/
 
(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 ) {
					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(
										$( '<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;
						 }
					}
				}
			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);
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy