Jump to content

User:Btilm/simplevote2.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>
Simplevote.afd = new Object();
if( typeof( SimplevoteConfig.useAfdIcons ) == 'undefined' ) {
	SimplevoteConfig.useAfdIcons = true;
}
addOnloadHook( function() {
	Simplevote.afd.normal();
}
);
Simplevote.afd.normal = function() {
	if(mw.config.get('wgPageName').indexOf( 'Wikipedia:Articles_for_deletion/Log/') != -1 ) { // yes its redundant, but it works for safety purposes
		// afdhelper code goes here
		var anchors = new Array();
    		var oldanchors = document.getElementById('bodyContent').getElementsByTagName('a');
    		for (var i=0; i < oldanchors.length; i++) {
        		anchors[i] = oldanchors[i];
   		}
    		var url_re = /\?title=Wikipedia:Articles_for_deletion\/([^&]+)&action=edit&/;
    		var url, matches;
    		for (var i=0; i < anchors.length; i++) {
        		if (!(matches = anchors[i].href.match(url_re)) || (matches[1].substr(0, 4) == 'Log/')) continue;
			var article = matches[1];
        		var na = document.createElement('a');
			var query = new QueryString( anchors[i].href.split('?',2)[1].toString() );
			var link = query.get('title');
        		na.href = "javascript:Simplevote.afd.voteon('"+escape(link).replace(/_/g,' ')+"')";
       			na.title = "Vote on deletion of "+unescape(link).replace(/_/g,' ').split('/',2)[1];
        		var inlink = document.createElement('sup');
        		inlink.appendChild(document.createTextNode('vote'));
        		na.appendChild(inlink);
        		anchors[i].parentNode.insertBefore(na, anchors[i].nextSibling);
   		}
	}
}
Simplevote.afd.voteon = function(link) {
        var Window = new SimpleWindow( 600, 225 );
        Window.setTitle( "Create a vote" );
        var form = new QuickForm( Simplevote.afd.voteon.evaluate );
	var categories = form.append( {
			type: 'select',
			name: 'vote',
			label: 'Select vote: '
//			event: twinklearv.callback.change_category
		} );
	categories.append( {
			type: 'option',
			label: 'Delete',
			value: 'Symbol delete vote.svg|Delete'
		} );
	categories.append( {
			type: 'option',
			label: 'Keep',
			value: 'Symbol keep vote.svg|Keep'
		} );
	categories.append( {
			type: 'option',
			label: 'Speedy delete',
			value: 'Symbol delete vote.svg|Speedy delete'
		} );
	categories.append( {
			type: 'option',
			label: 'Merge/redirect',
			value: 'Symbol merge vote.svg|Symbol redirect vote.svg|Merge/redirect'
		} );
	categories.append( {
			type: 'option',
			label: 'Redirect',
			value: 'Symbol redirect vote.svg|Redirect'
		} );
	categories.append( {
			type: 'option',
			label: 'Merge',
			value: 'Symbol merge vote.svg|Merge'
		} );
	categories.append( {
			type: 'option',
			label: 'Strong keep',
			value: 'Symbol keep vote.svg|Strong keep'
		} );
 
	categories.append( {
			type: 'option',
			label:'Strong delete',
			name: 'Symbol delete vote.svg|Strong delete'
		} );
	categories.append( {
			type: 'option',
			label: 'Weak keep',
			value: 'Symbol keep vote.svg|Weak keep'
		} );
	categories.append( {
			type: 'option',
			label:'Weak delete',
			name: 'Symbol delete vote.svg|Weak delete'
		} );
	categories.append( {
			type: 'option',
			label:'Comment',
			name: 'Symbol comment vote.svg|Comment'
		} );
	form.append( {
			type: 'hidden',
			name: 'link',
			value: link
		} );
	form.append( {
			type: 'textarea',
			name: 'reason',
			label: 'Comment:'
		} );
        form.append( { type:'submit' } );
        var result = form.render();
	Window.setContent( result );
	Window.display();
}
Simplevote.afd.voteon.evaluate = function(e) {
        var form = e.target;
//       alert( form.vote.value + ' on ' + form.link.value + ' for reason "' + form.reason.value + '"' );
var params = {
		vote: form.vote.value,
//		article: form.link.value, // just in case, hopefully temp as it is unneccesary
		reason: form.reason.value
	};
	var query = { 
		'title': form.link.value, 
		'action': 'submit'
	};
	Status.init( form );
 
	Wikipedia.actionCompleted.redirect = null; // we will try null and see if it works, was previously mw.config.get('wgPageName')
	Wikipedia.actionCompleted.notice = "Adding vote";
	var wikipedia_wiki = new Wikipedia.wiki( 'Grabbing vote page for article ' + form.link.value.split('/',2)[1], query, Simplevote.afd.voteon.callbacks.main );
	wikipedia_wiki.params = params;
	wikipedia_wiki.get();
}
Simplevote.afd.voteon.callbacks = {
main: function(self) {
		// code to make the vote goes here - self.params.vote, and self.params.reason are available - responseXML should be available too
		var rawvote = self.params.vote;
		var reason = self.params.reason;
		var form = self.responseXML.getElementById('editform');
		if( !form ) {
//			Status.error( 'Failed to retrieve edit form.' );
			return;
		}
		var text = form.wpTextbox1.value; // now we have it in a nice var, we can do various operations on it
//                Status.info( 'Automatically adding vote to page text...' );
                var votearr = rawvote.split('|');
                var votetext = votearr[votearr.length-1];
                if(reason != '') {
		temptext = '\'\'\'' + votetext + '\'\'\' — ' + reason + ' ~~' + '~~';
                } else {
                temptext = '\'\'\'' + votetext + '\'\'\' ~~' + '~~';
                }
                for(var i=0; i<votearr.length-1; i++) {
                if(i==0) {
                images = '[[Image:' + votearr[i] + '|15px]]';
                } else {
                images += '[[Image:' + votearr[i] + '|15px]]';
                }
                }
                if(SimplevoteConfig.useAfdIcons) {
                temptext = '\n*' + images + ' ' + temptext;
                } else {
                temptext = '\n*' + temptext;
                }
                if(votetext == 'Comment') {
                summary = 'Added ' + votetext.toLowerCase() + SimplevoteConfig.summaryAd + '.';
                } else {
                summary = 'Voted ' + votetext.toLowerCase() + SimplevoteConfig.summaryAd + '.';
                }
                text += temptext
        	// alert(text); // DEBUG
		var postData = {
			'wpMinoredit': undefined,
			'wpWatchthis': undefined,
			'wpStarttime': form.wpStarttime.value,
			'wpEdittime': form.wpEdittime.value,
			'wpAutoSummary': form.wpAutoSummary.value,
			'wpEditToken': form.wpEditToken.value,
			'wpSummary': summary,
			'wpTextbox1': text
		};
//                Status.info( 'Saving changes...' );
               	  self.post( postData );
//                Status.info( 'Done' )
	}
}
// </nowiki>