User:Btilm/simplevote2.js

// 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 = ''; } else { images += ''; }               }                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' ) } } //