User:ContinueWithCaution/SimpleVoter.js

//To use this script add the following (exclude the slashes) to your monobook.js and purge your cache.

// importScript("User:ContinueWithCaution/SimpleVoter.js");

importScript('User:AzaToth/morebits.js');//Use morebits library. SimpleVoter = new Object; // If there is no user config if( typeof( SimpleVoterConfig ) == 'undefined' ) { SimpleVoterConfig = {}; } if( typeof( SimpleVoterConfig.summaryAd ) == 'undefined' ) { SimpleVoterConfig.summaryAd = " using SimpleVoter"; }

SimpleVoter.afd = new Object; if( typeof( SimpleVoterConfig.useAfdIcons ) == 'undefined' ) { SimpleVoterConfig.useAfdIcons = true; } $( function {	SimpleVoter.afd.normal; } ); SimpleVoter.afd.normal = function { if(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:SimpleVoter.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); }	} } SimpleVoter.afd.voteon = function(link) { var Window = new SimpleWindow( 600, 200 ); Window.setTitle( "Create a vote" ); var form = new QuickForm( SimpleVoter.afd.voteon.evaluate ); var categories = form.append( {			type: 'select',			name: 'vote',			label: 'Select vote: ' //			event: twinklearv.callback.change_category		} ); categories.append( {			type: 'option',			label: 'Keep',			value: 'Keep'		} ); categories.append( {			type: 'option',			label: 'Delete',			value: 'Delete'		} ); categories.append( {			type: 'option',			label: 'Weak keep',			value: 'Weak Keep'		} ); categories.append( {			type: 'option',			label:'Weak delete',			value: 'Weak Delete'		} ); categories.append( {			type: 'option',			label: 'Strong keep',			value: 'Strong Keep'		} ); categories.append( {			type: 'option',			label:'Strong delete',			value: 'Strong Delete'		} ); categories.append( {			type: 'option',			label: 'Speedy delete',			value: 'Speedy Delete'		} ); categories.append( {			type: 'option',			label: 'Merge/redirect',			value: 'Merge/Redirect'		} ); categories.append( {			type: 'option',			label: 'Redirect',			value: 'Redirect'		} ); categories.append( {			type: 'option',			label: 'Merge',			value: 'Merge'		} );

categories.append( {			type: 'option',			label:'Comment',			value: '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; } SimpleVoter.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 wgPageName Wikipedia.actionCompleted.notice = "Adding vote"; var wikipedia_wiki = new Wikipedia.wiki( 'Grabbing vote page for article ' + form.link.value.split('/',2)[1], query, SimpleVoter.afd.voteon.callbacks.main ); wikipedia_wiki.params = params; wikipedia_wiki.get; } SimpleVoter.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('|'); if(reason != '') { temptext = '\'\'\ + rawvote + '\'\'\' — ' + reason + ' ' + ; } else { temptext = '\'\'\ + rawvote + '\'\'\' ' + ; }               temptext = '\n*' + temptext; if(rawvote == 'Comment') { summary = 'Added ' + rawvote.toLowerCase + SimpleVoterConfig.summaryAd + '.'; } else { summary = 'Voted ' + rawvote.toLowerCase + SimpleVoterConfig.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' ) } }