Jump to content

User:Winged Blades of Godric/TestScript.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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>');
                }
            };
*/