Jump to content

User:Winged Blades of Godric/TestScript.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.
/* revdel.js  version 2.3 - tweaking the cancellation process
   
// Attribution
	See history for all changes
	ver. 1 originally copied from / based on [[User:Doug/closetfd.js]]
	ver. 2 improved with some major help from [[User:Evad37]]
 
// This template takes a number of inputs

	* URLs - input all URLs that the page is copied from
	* ranges - the template can handle up to four ranges
		* start1 - mandatory - the revision ID of the ''oldest'' revision
		* end1 - optional - the revision ID of the ''newest'' revision
						  - if left out, will only show "start1" (not a range)
		* start(2-4) - as above, but optional
		* end(2-4) - as above, but optional
*/
importScript('User:Timotheus Canens/displaymessage.js');
mw.loader.using( ['mediawiki.util', 'mediawiki.api'], function () {
	var API = new mw.Api( {
		ajax: {	
			headers: { 'Api-User-Agent': 'revdel/2.2 ( https://en.wikipedia.org/wiki/User:Primefac/revdel.js )'	}
		}
	} );

	//Put portlet in menu
    var link = mw.util.addPortletLink('p-cactions', 'javascript:revdel_request()', "Request revdel");
	$( link ).click( function revdel_request()	{
		
		// Input ranges
		var numRanges = prompt("How many ranges to revdel? (max 4)");
		if(numRanges===null || numRanges==="")
			return 0;
		
		// Input URL(s)
		var urls = prompt("URL(s)");
		if(urls===null || urls==="")
			if(numRanges===null || numRanges==="")
				return 0;
		
		// Dummy check to ensure correct number of inputs
		while(numRanges < 1 || numRanges > 4){
			numRanges = prompt("ERROR: number is not between 1 and 4. How many ranges?");
		}
		
		// Input start/end values for the range(s)
		var startX = "";
		var endX = "";
		var ct=1;
		var idOutput = "";
		// Input IDs
		while(ct <= numRanges){
			startX = prompt("The ID of the first (oldest) revision to be deleted in range " + ct);
			endX = prompt("(optional) The ID of the last (newest) revision to be deleted in range" + ct);
			
			idOutput += "|start" + ct + "= " + startX;
			
			// Checks to ensure the endX value is greater than the startX, then appends endX value
			if(startX < endX){
				idOutput += "|end" + ct + "= " + endX;
			}
		
			ct++;
		}
		
		// Edit and modify the page
		API.postWithToken( "edit", {
			action: "edit",
			title: mw.config.get( "wgPageName"),
			prependtext:"{" + "{copyvio-revdel" + "|url=" + urls + idOutput + "}}\n",
			summary:"Requesting revision deletion (using [[User:Primefac/revdel]])"
		}).done( function() {
			// Code to execute if saved successfully
			// Maybe reload the page:
			location.reload();
		}).fail( function( code, jqxhr ) {
			// Edit failed. The reason will be in the code and/or jqxhr parameters...
			if ( code === "http" && jqxhr.textStatus === "error" ) {
				console.log( "HTTP error " + jqxhr.xhr.status );
			} else if ( code === "http" ) {
				console.log( "HTTP error: " + jqxhr.textStatus );
			} else if ( code === "ok-but-empty" ) {
				console.log( "Error: Got an empty response from the server" );
			} else {
				console.log( "API error: " + code );
			}
		});
	} ) ;
} );
/* For later
			var user, ts, anon;
            var q={
                url:mw.util.wikiScript('api'),
                dataType:'json',
                type:'POST',
                data:{
                    format:'json',
                    action:'query',
                    titles:mw.config.get('wgPageName'),
                    prop:'revisions',
                    rvprop:'timestamp|user|content',
                    rvlimit:1,
                    rawcontinue:1
                },
                success:function(r,sts,xhr){
                    if(!dialog.dialog('isOpen')) return;

                    if(!r.query || !r.query.pages){
                        dialog.html('<span style="color:red"><b>Error:</b> Bad response from API</span>');
                        if(window.console && typeof(window.console.error)=='function')
                            window.console.error("Bad response", r);
                        return;
                    }

                    for(var k in r.query.pages){
                        var rr=r.query.pages[k].revisions[0];
                        if(typeof(rr['*'])!='undefined' && rr['*'].indexOf(txt)<0){
                            if(!user){
                                dialog.html('<span style="color:red"><b>Error:</b> Text was not found in the starting revision! Did you edit it?</span>');
                                return;
                            }
                            var t=UnsignedHelper.makeUnsignedTemplate(user,ts,anon);
                            var tt=e.value.substr(0,pos).replace(/\s*$/,' ')+t;
                            e.value=tt+e.value.substr(pos);
                            $(e).textSelection('setSelection', { start:tt.length });
                            dialog.dialog('close');
                        } else {
                            user=rr.user;
                            ts=rr.timestamp;
                            anon=(typeof(rr.anon)!='undefined');
                            if(r['query-continue'] && r['query-continue'].revisions){
                                dialog.html('Evaluating revision '+(++rvct)+'...');
                                q.data.rvcontinue=r['query-continue'].revisions.rvcontinue;
                                $.ajax(q);
                            } else {
                                var t=UnsignedHelper.makeUnsignedTemplate(user,ts,anon);
                                var tt=e.value.substr(0,pos).replace(/\s*$/,' ')+t;
                                e.value=tt+e.value.substr(pos);
                                $(e).textSelection('setSelection', { start:tt.length });
                                dialog.dialog('close');
                            }
                        }
                        return;
                    }
                    dialog.html('<span style="color:red"><b>Error:</b> No revisions found in the page!</span>');
                },
                error:function(xhr,textStatus,errorThrown){
                    if(!dialog.dialog('isOpen')) return;
                    dialog.html('<span style="color:red"><b>Error:</b> '+textStatus+' '+errorThrown+'</span>');
                }
            };
*/