User:AntiCompositeNumber/helpOTRS.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.
//<nowiki>
( function ( mw, $ ) {
	function processResult( doAction ) {
		var ticket = prompt( 'Ticket number or process with empty parameter if left blank: ', '' );
		if ( ticket === null || ticket === '' ) ticket = '<!-- EMPTY -->';
		mw.notify( 'Processing request to tag with "' + doAction + '" with Ticket: ' + ticket,
			{ title: 'Processing...', autoHide: false } );
		var pageid = mw.config.get( 'wgArticleId' );
		new mw.Api().get( {
			action: 'query',
			prop: 'revisions',
			rvprop: 'content',
			pageids: pageid
		} ).done( function( pageContents ) {
			mw.notify( 'Got page contents...', { title: 'Processing...', autoHide: false } );
			var txt = pageContents.query.pages[ pageid ].revisions[ 0 ][ '*' ];
			var summary = 'Marked as ';
			var OtrsRep = '', PermRep = '';
			switch ( doAction ) {
				case 'perm' :
					OtrsRep = '{{OTRS permission |id=' + ticket + '}}';
					PermRep = '\n|Permission= {{OTRS permission |id=' + ticket + '}}';
					summary += '{{[[Template:OTRS Permission|OTRS Permission]]}} done';
					break;
				case 'queued' :
					OtrsRep = '{{OTRS received |id=' + ticket +
						' |notprocessed=1 |year={{subst:CURRENTYEAR}} |month={{subst:CURRENTMONTH}} |day={{subst:CURRENTDAY}} }}';
					PermRep = '\n|Permission= {{OTRS received |id=' + ticket +
						' |notprocessed=1 |year={{subst:CURRENTYEAR}} |month={{subst:CURRENTMONTH}} |day={{subst:CURRENTDAY}} }}';
					summary += '{{[[Template:OTRS received|OTRS received]]}} and queued';
					break;
				case 'received' :
					OtrsRep = '{{OTRS received |id=' + ticket + ' |year={{subst:CURRENTYEAR} |month={{subst:CURRENTMONTH}} |day={{subst:CURRENTDAY}} }}';
					PermRep = '\n|Permission= {{OTRS received |id=' + ticket + ' |year={{subst:CURRENTYEAR}} |month={{subst:CURRENTMONTH}} |day={{subst:CURRENTDAY}} }}';
					summary += '{{[[Template:OTRS received|OTRS received]]}}';
					break;
				default :
					mw.notify( 'There was an error processing your request.\n\n\t\t\t\t\tPlease try again.',
						{ title: 'Error!', autoHide: false } );
					return;
			}
			summary += ' using [[User:AntiCompositeNumber/helpOTRS.js|helpOTRS]].';
			var rOTRS = new RegExp( /\{\{Otrs[_ ]pending\}\}/i );
			if ( rOTRS.test( txt ) ) {
				txt = txt.replace( rOTRS, OtrsRep );
			} else {
				var rPermission = new RegExp( /\n\| *Permission[ \t]*=.*/i );
				if ( rPermission.test( txt ) ) {
					txt = txt.replace( rPermission, PermRep );
				} else {
					mw.notify( 'No suitable place found to insert template!',
						{ title: 'Error!', autoHide: false } );
					return;
				}
			}
			new mw.Api().postWithToken( 'edit', {
				action: 'edit',
				pageid: pageid,
				text: txt,
				summary: summary
			} ).done( function( endResult ) {
				mw.notify( '"' + doAction + '" was posted.  Reloading page.',
					{ title: 'Done!', autoHide: false } );
				location.reload();
			} );
		} );
	}

	if ( mw.config.get( 'wgNamespaceNumber' ) === 6 ) {
		var perm = mw.util.addPortletLink( 'p-tb', '#', 'OTRS permission' );
		$( perm ).click( function ( e ) {
			e.preventDefault();
			processResult( 'perm' );
		} );
		var queued = mw.util.addPortletLink( 'p-tb', '#', 'OTRS queued' );
		$( queued ).click( function ( e ) {
			e.preventDefault();
			processResult( 'queued' );
		} );
		var received = mw.util.addPortletLink( 'p-tb', '#', 'OTRS received' );
		$( received ).click( function ( e ) {
			e.preventDefault();
			processResult( 'received' );
		} );
	}
} ( mediaWiki, jQuery ) );
//</nowiki>