text:
User:Griffinofwales/twinklewarn.js

// If TwinkleConfig aint exist. if( typeof( TwinkleConfig ) == 'undefined' ) { TwinkleConfig = {}; }

/** TwinkleConfig.defaultGroup (int) if true, watch the page which has been dispatched an warning or notice, if false, default applies */ if( typeof( TwinkleConfig.defaultWarningGroup ) == 'undefined' ) { TwinkleConfig.defaultWarningGroup = 1; }

/** TwinkleConfig.showSharedIPNotice may take arguments: true: to show shared ip notice if an IP address false: to not print the notice */ if( typeof( TwinkleConfig.showSharedIPNotice ) == 'undefined' ) { TwinkleConfig.showSharedIPNotice = false; }

/** TwinkleConfig.watchWarnings (boolean) if true, watch the page which has been dispatched an warning or notice, if false, default applies */ if( typeof( TwinkleConfig.watchWarnings ) == 'undefined' ) { TwinkleConfig.watchWarnings = true; }

/** TwinkleConfig.blankTalkpageOnIndefBlock (boolean) if true, blank the talk page when issuing an indef block notice (per WN:UW) */ if( typeof( TwinkleConfig.blankTalkpageOnIndefBlock ) == 'undefined' ) { TwinkleConfig.blankTalkpageOnIndefBlock = false; }

/** TwinkleConfig.summaryAd (string) If ad should be added or not to summary, default TWINKLE */ if( typeof( TwinkleConfig.summaryAd ) == 'undefined' ) { TwinkleConfig.summaryAd = " using TW"; }

function twinklewarn { if( wgNamespaceNumber == 3 ) { twAddPortletLink( (twinkleConfigExists ? "javascript:twinklewarn.callback" : 'javascript:alert("Your account is too new to use Twinkle.");'), "Warn", "tw-warn", "Warn/Notify user", ""); } } window.TwinkleInit = (window.TwinkleInit || []).concat( twinklewarn); //schedule initializer

twinklewarn.callback = function twinklewarnCallback { var Window = new SimpleWindow( 600, 400 ); Window.setTitle( "Warn/Notify user" ); var form = new QuickForm( twinklewarn.callback.evaluate );

var main_select = form.append( {			type:'field',			label:'Choose type of warning/notice to issue',			tooltip:'First choose a main warning group, then the specific warning to issue.'		} );

var main_group = main_select.append( {			type:'select',			name:'main_group',			event:twinklewarn.callback.change_category		} );

main_group.append( { type:'option', label:'General Note (1)', value:'level1', selected: ( TwinkleConfig.defaultWarningGroup == 1 || TwinkleConfig.defaultWarningGroup < 1 || ( userIsInGroup( 'sysop' ) ? TwinkleConfig.defaultWarningGroup > 8 : TwinkleConfig.defaultWarningGroup > 7 ) ) } ); main_group.append( { type:'option', label:'Caution (2)', value:'level2', selected: ( TwinkleConfig.defaultWarningGroup == 2 ) } ); main_group.append( { type:'option', label:'Warning (3)', value:'level3', selected: ( TwinkleConfig.defaultWarningGroup == 3 ) } ); main_group.append( { type:'option', label:'Final warning (4)', value:'level4', selected: ( TwinkleConfig.defaultWarningGroup == 4 ) } ); main_group.append( { type:'option', label:'Only warning (4im)', value:'level4im', selected: ( TwinkleConfig.defaultWarningGroup == 5 ) } ); main_group.append( { type:'option', label:'Single issue notices', value:'singlenotice', selected: ( TwinkleConfig.defaultWarningGroup == 6 ) } ); main_group.append( { type:'option', label:'Single issue warnings', value:'singlewarn', selected: ( TwinkleConfig.defaultWarningGroup == 7 ) } ); if( userIsInGroup( 'sysop' ) ) { main_group.append( { type:'option', label:'Blocking', value:'block', selected: ( TwinkleConfig.defaultWarningGroup == 8 ) } ); }

main_select.append( { type:'select', name:'sub_group', event:twinklewarn.callback.change_subcategory } ); //Will be empty to begin with.

form.append( {			type:'input',			name:'article',			label:'Linked article',			value:( QueryString.exists( 'vanarticle' ) ? QueryString.get( 'vanarticle' ) : '' ),			tooltip:'An article might be linked to the notice, either it was a revert to said article that dispatched this notice. Leave empty for no article to be linked'		} );

var more = form.append( { type:'field', label:'Fill in an optional reason and hit \"Submit\"' } ); more.append( { type:'textarea', label:'More:', name:'reason', tooltip:'Perhaps a reason, or that a more detailed notice must be appended' } ); more.append( { type:'submit', label:'Submit' } ); var result = form.render; Window.setContent( result ); Window.display; result.main_group.root = result;

// We must init the first choice (General Note); var evt = document.createEvent( "Event" ); evt.initEvent( 'change', true, true ); result.main_group.dispatchEvent( evt );

}

// This is all the messages that might be dispatched by the code twinklewarn.messages = { level1: { "uw-vandalism1": { label:"Vandalism", summary:"General note: Vandalism" },		"uw-test1": { label:"Editing tests", summary:"General note: Editing tests" },		"uw-delete1": { label:"Page blanking, removal of content or templates", summary:"General note: Page blanking, removal of content or templates" },		"uw-create1": { label:"Creating inappropriate pages", summary:"General note: Creating inappropriate pages" },		"uw-spam": { label:"Adding spam links", summary:"General note: Adding spam links" },		"uw-advert": { label:"Using Wikinews for advertising or promotion", summary:"General note: Using Wikinews for advertising or promotion" },		"uw-npov1": { label:"Not writing from a neutral point of view", summary:"General note: Not adhering to neutral point of view" },		"uw-mos1": { label:"Style guide", summary:"General note: Formatting, date, language, etc (Style guide)" },		"uw-npa1": { label:"Personal attack directed at a specific editor", summary:"General note: Personal attack directed at a specific editor" },		"uw-agf1": { label:"Not assuming good faith", summary:"General note: Not assuming good faith" },		"uw-copyright1": { label:"Copyright violation", summary:"General note: Violating copyright" }	},	level2: { "uw-vandalism2": { label:"Vandalism", summary:"Caution: Vandalism" },		"uw-test2": { label:"Editing tests", summary:"Caution: Editing tests" },		"uw-delete2": { label:"Page blanking, removal of content or templates", summary:"Caution: Page blanking, removal of content or templates" },		"uw-create2": { label:"Creating inappropriate pages", summary:"Caution: Creating inappropriate pages" },		"uw-npov2": { label:"Not adhering to neutral point of view", summary:"Caution: Not adhering to neutral point of view" },		"uw-mos2": { label:"Style guide", summary:"Caution: Formatting, date, language, etc (Style guide)" },		"uw-npa2": { label:"Personal attack directed at a specific editor", summary:"Caution: Personal attack directed at a specific editor" },		"uw-agf2": { label:"Not assuming good faith", summary:"Caution: Not assuming good faith" },		"uw-copyright2": { label:"Copyright violation", summary:"Caution: Violating copyright" }	},	level3: { "uw-vandalism3": { label:"Vandalism", summary:"Warning: Vandalism" },		"uw-test3": { label:"Editing tests", summary:"Warning: Editing tests" },		"uw-delete3": { label:"Page blanking, removal of content or templates", summary:"Warning: Page blanking, removal of content or templates" },		"uw-create3": { label:"Creating inappropriate pages", summary:"Warning: Creating inappropriate pages" },		"uw-npov3": { label:"Not adhering to neutral point of view", summary:"Warning: Not adhering to neutral point of view" },		"uw-mos3": { label:"Style guide", summary:"Warning: Formatting, date, language, etc (Style guide)" },		"uw-npa3": { label:"Personal attack directed at a specific editor", summary:"Warning: Personal attack directed at a specific editor" },		"uw-agf3": { label:"Not assuming good faith", summary:"Warning: Not assuming good faith" }	},	level4: { "uw-vandalism4": { label:"Vandalism", summary:"Final warning: Vandalism" },		"uw-test4": { label:"Editing tests", summary:"Final warning: Editing tests" },		"uw-create4": { label:"Creating inappropriate pages", summary:"Final warning: Creating inappropriate pages" },		"uw-npov4": { label:"Not adhering to neutral point of view", summary:"Final warning: Not adhering to neutral point of view" },		"uw-mos4": { label:"Style guide", summary:"Final warning: Formatting, date, language, etc (Style guide)" },		"uw-npa4": { label:"Personal attack directed at a specific editor", summary:"Final warning: Personal attack directed at a specific editor" }	},	level4im: { "uw-vandalism4im": { label:"Vandalism", summary:"Only warning: Vandalism" },		"uw-test4im": { label:"Editing tests", summary:"Only warning: Editing tests" },		"uw-npov4im": { label:"Not adhering to neutral point of view", summary:"Only warning: Not adhering to neutral point of view" },		"uw-mos4im": { label:"Manual of style", summary:"Only warning: Formatting, date, language, etc (Manual of style)" },		"uw-npa4im": { label:"Personal attack directed at a specific editor", summary:"Only warning: Personal attack directed at a specific editor" }	},	welcome: { "anon": { label:"Anonymous", summary:"Welcomes and suggests getting username" },		"welcome": { label:"Welcome", summary:"Plain test welcome" },		"welcome2": { label:"Welcome2", summary:"Welcome with graphic and orange background" },		"welcomeg": { label:"WelcomeG", summary:"Welcome with blue background" },		"welcomeq": { label:"WelcomeQ", summary:"Like WelcomeG but shorter" }	},	singlenotice: { "uw-badcat": { label:"Adding incorrect categories", summary:"Notice: Adding incorrect categories" },		"uw-bite": { label:"\"Biting\" newcomers", summary:"Notice: \"Biting\" newcomers" },		/*"uw-encopypaste": { label:"Direct copying of article from English Wikipedia", summary:"Notice: Direct copying of article from English Wikipedia" },*/		"uw-lang": { label:"Unnecessarily changing between British and American English", summary:"Notice: Unnecessarily changing between British and American English" },		"uw-newarticle": { label:"new article notice", summary:"Notice: How to make your articles better" },		/*"uw-otherweb": { label:"Use \"Other websites\", not \"External links\"", summary:"Notice: Use \"Other websites\", not \"External links\"" },*/		"uw-selfrevert": { label:"Undoing recent test", summary:"Notice: Undoing recent test" },		/*"uw-simple": { label:"Not making changes in simple English", summary:"Notice: Not making changes in simple English" },*/		"uw-spellcheck": { label:"Review spelling, etc.", summary:"Notice: Review spelling, etc." },		"uw-subst": { label:"Remember to subst: templates", summary:"Notice: Remember to subst: templates" },		"uw-tilde": { label:"Not signing posts", summary:"Notice: Not signing posts" },		/*"uw-upload": { label:"Image uploads not allowed in Simple English Wikipedia", summary:"Notice: Image uploads not allowed in Simple English Wikipedia" }*/	},	singlewarn: { "uw-attack": { label:"Creating attack pages", summary:"Warning: Creating attack pages" },		"uw-qd": { label:"Removing quick deletion templates from articles", summary:"Warning: Removing quick deletion templates from articles" },		"uw-userpage": { label:"Userpage or subpage is against policy", summary:"Warning: Userpage or subpage is against policy" }	},	block: { "uw-block1": { 'label':"Block level 1", 'summary':"You have been temporarily blocked" },		"uw-block2": { 'label':"Block level 2", 'summary':"You have been blocked" },		"uw-block3": { 'label':"Block level 3", 'summary':"You have been indefinitely blocked" },		"UsernameBlocked": { 'label':"Username block", 'summary':"You have been blocked for violation of the username policy" },		"UsernameHardBlocked": { 'label':"Username hard block", 'summary':"You have been blocked for blatant violation of the username policy" }	} };

twinklewarn.prev_block_timer = null; twinklewarn.prev_article = null; twinklewarn.prev_reason = null;

twinklewarn.callback.change_category = function twinklewarnCallbackChangeCategory(e) { var value = e.target.value; var sub_group = e.target.root.sub_group; var messages = twinklewarn.messages[ value ]; sub_group.main_group = value; var old_subvalue = sub_group.value; if( old_subvalue ) { old_subvalue = old_subvalue.replace(/\d*(im)?$/, '' ); var old_subvalue_re = new RegExp( RegExp.escape( old_subvalue ) + "(\\d*(?:im)?)$" ); }

while( sub_group.hasChildNodes ){ sub_group.removeChild( sub_group.firstChild ); }

for( var i in messages ) { var selected = false; if( old_subvalue && old_subvalue_re.test( i ) ) { selected = true; }		var elem = new QuickForm.element( { type:'option', label:"[" + i + "]: " + messages[i].label, value:i, selected: selected } ); sub_group.appendChild( elem.render ); }

if( value == 'block' ) { var more = new QuickForm.element( {				type: 'input',				name: 'block_timer',				label: 'Period of blocking: ',				tooltip: 'The period the blocking is due for, for example 24 hours, 2 weeks, indefinite etc...'			} ); e.target.root.insertBefore( more.render, e.target.root.lastChild ); if(!(twinklewarn.prev_block_timer === null)) { e.target.root.block_timer.value = twinklewarn.prev_block_timer; twinklewarn.prev_block_timer = null; }				if(twinklewarn.prev_article === null) { twinklewarn.prev_article = e.target.root.article.value; }		e.target.root.article.disabled = true; e.target.root.article.value = ''; } else if( e.target.root.block_timer ) { if(!e.target.root.block_timer.disabled && twinklewarn.prev_block_timer === null) { twinklewarn.prev_block_timer = e.target.root.block_timer.value; }		e.target.root.removeChild( e.target.root.block_timer.parentNode ); if(e.target.root.article.disabled && !(twinklewarn.prev_article === null)) { e.target.root.article.value = twinklewarn.prev_article; twinklewarn.prev_article = null; }		e.target.root.article.disabled = false; if(e.target.root.reason.disabled && !(twinklewarn.prev_reason === null)) { e.target.root.reason.value = twinklewarn.prev_reason; twinklewarn.prev_reason = null; }		e.target.root.reason.disabled = false; } }

twinklewarn.callback.change_subcategory = function twinklewarnCallbackChangeSubcategory(e) { var main_group = e.target.main_group; var value = e.target.value;

if( main_group == 'singlewarn' ) { if( value == 'uw-username' ) { if(twinklewarn.prev_article === null) { twinklewarn.prev_article = e.target.form.article.value; }			e.target.form.article.disabled = true; e.target.form.article.value = ''; } else if( e.target.form.article.disabled ) { if(!(twinklewarn.prev_article === null)) { e.target.form.article.value = twinklewarn.prev_article; twinklewarn.prev_article = null; }			e.target.form.article.disabled = false; }	} else if( main_group == 'block' ) { if( value == 'uw-block3' || value == 'uw-soablock' || value == 'uw-voablock' || value == 'uw-ublock' || value == 'uw-uhblock' || value == 'uw-softerblock' || value == 'uw-causeblock' || value == 'uw-botublock' || value == 'uw-vaublock' || value == 'uw-spamublock' || value == 'uw-lblock' || value == 'uw-toablock' || value == 'anonblock' || value == 'schoolblock' ) { if(twinklewarn.prev_block_timer === null) { twinklewarn.prev_block_timer = e.target.form.block_timer.value; }			e.target.form.block_timer.disabled = true; e.target.form.block_timer.value = 'indef'; } else if( e.target.form.block_timer.disabled ) { if(!(twinklewarn.prev_block_timer === null)) { e.target.form.block_timer.value = twinklewarn.prev_block_timer; twinklewarn.prev_block_timer = null; }			e.target.form.block_timer.disabled = false; }

if( value == 'uw-ewblock' || value == 'uw-3block' ) { if(!(twinklewarn.prev_article === null)) { e.target.form.article.value = twinklewarn.prev_article; twinklewarn.prev_article = null; }			e.target.form.article.disabled = false; } else if( !e.target.form.article.disabled ) { if(twinklewarn.prev_article === null) { twinklewarn.prev_article = e.target.form.article.value; }			e.target.form.article.disabled = true; e.target.form.article.value = ''; }

if( value == 'uw-block1' || value == 'uw-block2' || value == 'uw-block3' || value == 'uw-ablock' || value == 'anonblock' || value == 'schoolblock' || value == 'uw-bioblock' ) { if(!(twinklewarn.prev_reason === null)) { e.target.form.reason.value = twinklewarn.prev_reason; twinlewarn.prev_reason = null; }			e.target.form.reason.disabled = false; } else if( !e.target.form.reason.disabled ) { if(twinklewarn.prev_reason === null) { twinklewarn.prev_reason = e.target.form.reason.value; }			e.target.form.reason.disabled = true; e.target.form.reason.value = ''; }	} }

twinklewarn.callbacks = { main: function( self ) { var form = self.responseXML.getElementById( 'editform' ); var text = form.wpTextbox1.value;

var history_re = /\<\!\-\-\ Template\:(uw\-.*?)\ \-\-\>.*?(\d{1,2}:\d{1,2}, \d{1,2} \w+ \d{4}) \(UTC\)/g; var history = {}; var latest = { date:new Date( 0 ), type:'' };

var current;

while( ( current = history_re.exec( text ) ) != undefined ) { var current_date = new Date( current[2] + ' UTC' ); if( !( current[1] in history ) || history[ current[1] ] < current_date ) { history[ current[1] ] = current_date; }			if( current_date > latest.date ) { latest.date = current_date; latest.type = current[1]; }		}

var date = new Date;

if( self.params.sub_group in history ) { var temp_time = new Date( history[ self.params.sub_group ] ); temp_time.setUTCHours( temp_time.getUTCHours + 24 );

if( temp_time > date ) { Status.info( 'Info', "an identical " + self.params.sub_group + " has been issued in the last 24 hours" ); if( !confirm( "Would you still like to add a warning/notice?" ) ) {					self.statelem.info( 'aborted per user request' ); return; }			}		}

latest.date.setUTCMinutes( latest.date.getUTCMinutes + 1 ); // after long debate, one minute is max

if( latest.date > date ) { Status.info('Info', "a " + latest.type + " has been issued in the last minute" ); if( !confirm( "Would you still like to add a warning/notice?" ) ) {					self.statelem.info( 'aborted per user request' ); return; }		}

var mainheaderRe = /==+\\s*Warnings\\s*==+/; var headerRe = new RegExp( "^==+\\s*(?:" + date.getUTCMonthName + '|' + date.getUTCMonthNameAbbrev + ")\\s+" + date.getUTCFullYear + "\\s*==+", 'm' );

if( text.length > 0 ) { text += "\n"; }

if( self.params.main_group == 'block' ) { var article = '', time = null; if( TwinkleConfig.blankTalkpageOnIndefBlock && ( /indef|\*|max/.exec( self.params.block_timer ) || self.params.sub_group == 'uw-block3' || self.params.sub_group == 'uw-soablock' || self.params.sub_group == 'uw-voablock' || self.params.sub_group == 'uw-ublock' || self.params.sub_group == 'uw-uhblock' || self.params.sub_group == 'uw-softerblock' || self.params.sub_group == 'uw-causeblock' || self.params.sub_group == 'uw-botublock' || self.params.sub_group == 'uw-vaublock' || self.params.sub_group == 'uw-spamublock' || self.params.sub_group == 'uw-lblock' || self.params.sub_group == 'uw-toablock' ) ) { Status.info( 'Info', 'Blanking talk page per preferences and createing a new level 2 heading for the date' ); text = "== " + date.getUTCMonthName + " " + date.getUTCFullYear + " ==\n"; } else if( !headerRe.exec( text ) ) { Status.info( 'Info', 'Will create a new level 2 heading for the date, as none was found for this month' ); text += "== " + date.getUTCMonthName + " " + date.getUTCFullYear + " ==\n"; }			if( ( self.params.sub_group == 'uw-ewblock' || self.params.sub_group == 'uw-3block' ) && self.params.article ) { article = '|1=' + self.params.article; }			if( /te?mp|^\s*$|min/.exec( self.params.block_timer ) || self.params.sub_group == 'uw-block3' || self.params.sub_group == 'uw-soablock' || self.params.sub_group == 'uw-voablock' || self.params.sub_group == 'uw-ublock' || self.params.sub_group == 'uw-uhblock' || self.params.sub_group == 'uw-softerblock' || self.params.sub_group == 'uw-causeblock' || self.params.sub_group == 'uw-botublock' || self.params.sub_group == 'uw-vaublock' || self.params.sub_group == 'uw-spamublock' || self.params.sub_group == 'uw-lblock' || self.params.sub_group == 'uw-toablock' || self.params.sub_group == 'anonblock' || self.params.sub_group == 'schoolblock' ) { time = ''; } else if( /indef|\*|max/.exec( self.params.block_timer ) ) { time = '|indef=yes'; } else { time = '|time=' + self.params.block_timer; }

if( self.params.sub_group == 'schoolblock' || self.params.sub_group == 'anonblock' ) { text += "\{\{" + self.params.sub_group + (self.params.reason ? '|1=' + self.params.reason : '' ) + "|sig=\~\~\~\~\}\}"; } else { text += "\{\{subst:" + self.params.sub_group + article + time + (self.params.reason ? '|reason=' + self.params.reason : '' ) + "|sig=true|subst=subst:\}\}"; }		} else { if( !headerRe.exec( text ) ) { Status.info( 'Info', 'Will create a new level 2 heading for the date, as none was found for this month' ); text += "== " + date.getUTCMonthName + " " + date.getUTCFullYear + " ==\n"; }

if( self.params.sub_group == 'uw-username' ) { // ugly hack text += "\{\{subst:" + self.params.sub_group + ( self.params.reason ? '|1=' + self.params.reason : '' ) + "|subst=subst:\}\} \~\~\~\~"; } else { text += "\{\{subst:" + self.params.sub_group + ( self.params.article ? '|1=' + self.params.article :  ) + "|subst=subst:\}\}" + (self.params.reason ? " " + self.params.reason + "'' ": ' ' ) + "\~\~\~\~"; }		}		if ( TwinkleConfig.showSharedIPNotice && isIPAddress( wgTitle ) ) { Status.info( 'Info', 'Adding a shared ip notice' ); switch( QueryString.get( 'type' ) ) { case 'vand': text += "\n:If this is a shared IP address, and you didn't make any unconstructive edits, consider creating an account for yourself so you can avoid further irrelevant warnings. "; break; default: text += "\n:If this is a shared IP address, and you didn't make the edit, consider creating an account for yourself so you can avoid further irrelevant notices. "; break; }		}		var postData = { 'wpMinoredit': form.wpMinoredit.checked ? 1 : undefined, 'wpWatchthis': (form.wpWatchthis.checked || TwinkleConfig.watchWarnings) ? 1 : undefined, 'wpStarttime': form.wpStarttime.value, 'wpEdittime': form.wpEdittime.value, 'wpAutoSummary': form.wpAutoSummary.value, 'wpEditToken': form.wpEditToken.value, 'wpSection': '', 'wpSummary': twinklewarn.messages[self.params.main_group][self.params.sub_group].summary + ( self.params.article ? ' on ' + self.params.article +  :  ) + '.' + TwinkleConfig.summaryAd, 'wpTextbox1': text };

self.post( postData ); } }

twinklewarn.callback.evaluate = function twinklewarnCallbackEvaluate(e) {

// First, check to make sure a reason was filled in if uw-username was selected if(e.target.sub_group.value == 'uw-username' && e.target.reason.value.trim == '') { alert("You must supply a reason for the template"); return; }

// Then, grab all the values provided by the form var params = { reason: e.target.reason.value, main_group: e.target.main_group.value, sub_group: e.target.sub_group.value, article: e.target.article.value.replace( /^(Image|Category):/i, ':$1:' ), block_timer: e.target.block_timer ? e.target.block_timer.value : null }

Status.init( e.target );

var query = { 'title': wgPageName, 'action': 'submit' };	Wikipedia.actionCompleted.redirect = wgPageName; Wikipedia.actionCompleted.notice = "Warning complete, reloading talk page in a few seconds"; var wikipedia_wiki = new Wikipedia.wiki( 'User talk page modification', query, twinklewarn.callbacks.main ); wikipedia_wiki.params = params; wikipedia_wiki.followRedirect = true; wikipedia_wiki.get; }

title: User:Griffinofwales/twinklewarn.js


text:
User:Griffinofwales/twinklespeedy.js

// If TwinkleConfig aint exist. if( typeof( TwinkleConfig ) == 'undefined' ) { TwinkleConfig = {}; }

/** TwinkleConfig.summaryAd (string) If ad should be added or not to summary, default TWINKLE */ if( typeof( TwinkleConfig.summaryAd ) == 'undefined' ) { TwinkleConfig.summaryAd = " (TW)"; }

/** TwinkleConfig.deletionSummaryAd (string) If ad should be added or not to deletion summary, default TWINKLE */ if( typeof( TwinkleConfig.deletionSummaryAd ) == 'undefined' ) { TwinkleConfig.deletionSummaryAd = " (TW)"; }

/** TwinkleConfig.watchSpeedyPages (array) What types of actions that should result in forced addition to watchlist */ if( typeof( TwinkleConfig.watchSpeedyPages ) == 'undefined' ) { TwinkleConfig.watchSpeedyPages = [ 'g3', 'g10', 'g11', 'g12' ]; }

/** TwinkleConfig.markSpeedyPagesAsMinor (boolean) If, when applying speedy template to page, to mark the edit as minor, default true */ if( typeof( TwinkleConfig.markSpeedyPagesAsMinor ) == 'undefined' ) { TwinkleConfig.markSpeedyPagesAsMinor = false; }

/** TwinkleConfig.markSpeedyPagesAsPatrolled (boolean) If, when applying speedy template to page, to mark the page as patrolled, default true */ if( typeof( TwinkleConfig.markSpeedyPagesAsPatrolled ) == 'undefined' ) { TwinkleConfig.markSpeedyPagesAsPatrolled = true; }

/** TwinkleConfig.notifyUserOnSpeedyDeletionNomination (array of strings) What types of actions that should result that the author of the page should be notified of nomination */ if( typeof( TwinkleConfig.notifyUserOnSpeedyDeletionNomination ) == 'undefined' ) { TwinkleConfig.notifyUserOnSpeedyDeletionNomination = [ 'g1', 'g2', 'g3', 'g4', 'g10', 'g11', 'g12', 'a1', 'a2', 'a3', 'a4','a5', 'i1', 't2' ]; }

/** TwinkleConfig.welcomeUserOnSpeedyDeletionNotification (array of strings) On what types of speedy deletion notifications shall the user be welcomed with a notice if his talk page has not yet been created. */ if( typeof( TwinkleConfig.welcomeUserOnSpeedyDeletionNotification ) == 'undefined' ) { TwinkleConfig.welcomeUserOnSpeedyDeletionNotification = TwinkleConfig.notifyUserOnSpeedyDeletionNomination; }

/** TwinkleConfig.openUserTalkPageOnSpeedyDelete (array of strings) What types of actions that should result user talk page to be opened when speedily deleting (admin only) */ if( typeof( TwinkleConfig.openUserTalkPageOnSpeedyDelete ) == 'undefined' ) { TwinkleConfig.openUserTalkPageOnSpeedyDelete = [ 'g1', 'g2', 'g3', 'g4', 'g5', 'g10', 'g11', 'g12', 'a1', 'a3', 'a7', 'a9', 'a10', 'f3', 'f4', 'f5', 'f6', 'f7', 'f9', 'f11', 'u3', 't2' ]; }

/** TwinkleConfig.userTalkPageMode may take arguments: 'window': open a new window, remember the opened window 'tab': opens in a new tab, if possible. 'blank': force open in a new window, even if a such window exist */ if( typeof( TwinkleConfig.userTalkPageMode ) == 'undefined' ) { TwinkleConfig.userTalkPageMode = 'window'; }

/** TwinkleConfig.deleteTalkPageOnDelete (boolean) If talk page if exists should also be deleted (QD G8) when speedying a page (admin only) */ if( typeof( TwinkleConfig.deleteTalkPageOnDelete ) == 'undefined' ) { TwinkleConfig.deleteTalkPageOnDelete = false; }

/** TwinkleConfig.orphanNormalPagesOnSpeedyDelete (hash) Defines if all backlinks to a page should be removed. property 'exclude' defined actions not to orphan */ if( typeof( TwinkleConfig.orphanBacklinksOnSpeedyDelete ) == 'undefined' ) { TwinkleConfig.orphanBacklinksOnSpeedyDelete = { exclude: ['g6'], orphan:true }; }

/** TwinkleConfig.speedyWindowWidth (integer) Defines the width of the Twinkle SD window in pixels */ if( typeof( TwinkleConfig.speedyWindowWidth ) == 'undefined' ) { TwinkleConfig.speedyWindowWidth = 800; }

/** TwinkleConfig.speedyWindowHeight (integer) Defines the height of the Twinkle SD window in pixels */ if( typeof( TwinkleConfig.speedyWindowHeight ) == 'undefined' ) { TwinkleConfig.speedyWindowHeight = 500; }

function twinklespeedy { // Disable on: // * special pages // * pages with neither a page nor local file revision if( wgNamespaceNumber < 0 ||	(wgArticleId==0 && (wgNamespaceNumber!=6 || (document.getElementById("mw-imagepage-section-filehistory") && !(document.getElementById("mw-sharedupload")))))	) return; if( userIsInGroup( 'sysop' ) ) { twAddPortletLink( "javascript:twinklespeedy.callback", "QD", "tw-csd", "Quickly delete according to WP:QD", ""); } else if (twinkleConfigExists) { twAddPortletLink( "javascript:twinklespeedy.callback", "QD", "tw-csd", "Request quick deletion according to WP:QD", ""); }	else {		twAddPortletLink( 'javascript:alert("Your account is too new to use Twinkle.");', 'QD', 'tw-csd', 'Request quick deletion according to WP:QD', ''); } } window.TwinkleInit = (window.TwinkleInit || []).concat(twinklespeedy); //schedule initializer

twinklespeedy.callback = function twinklespeedyCallback { var Window = new SimpleWindow( TwinkleConfig.speedyWindowWidth, TwinkleConfig.speedyWindowHeight ); Window.setTitle( "Choose criteria for quick deletion" );

var form = new QuickForm( userIsInGroup( 'sysop' ) ? twinklespeedy.callback.evaluateSysop : twinklespeedy.callback.evaluateUser, 'change' ); if( userIsInGroup( 'sysop' ) ) { form.append( {				type: 'checkbox',				list: [					{						label: 'Tag page only, don\'t delete',						value: 'tag_only',						name: 'tag_only',						tooltip: 'If you just want to tag the page, instead of deleting it now',						event: function( event ) {							event.target.form.notify.disabled = ! event.target.checked;							event.target.form.notify.checked = event.target.checked;							event.stopPropagation;						}					},					{						label: 'unlink links to this page',						value: 'orphan_backlinks',						name: 'orphan_backlinks',						tooltip: 'If you want to orphan the current page. If checked, excludes will still apply',						checked: TwinkleConfig.orphanBacklinksOnSpeedyDelete.orphan,						event: function( event ) {							TwinkleConfig.orphanBacklinksOnSpeedyDelete.orphan = event.target.checked;							event.stopPropagation;						}					}				]			} ); }

form.append( {			type: 'checkbox',			list: [				{					label: 'Notify if possible',					value: 'notify',					name: 'notify',					tooltip: 'If a notification is defined in the configuration, then notify if this is true, else no notification',					checked: !userIsInGroup( 'sysop' ),					disabled: userIsInGroup( 'sysop' ),					event: function( event ) {						event.stopPropagation;					}				}			]		}	); if( wgNamespaceNumber == Namespace.IMAGE ) { form.append( {type:'header', label:'Files' } ); form.append ( {				type: 'radio',				name: 'csd',				list: [						{ 							label: 'I1: Prohibited image',							value: 'prohibitedimage',							tooltip: 'Most media uploads are not allowed on Simple English Wikipedia. They should be uploaded to Wikimedia Commons instead. There are a few exceptions to this rule. Firstly, all spoken articles should be uploaded here, as they are for local use. Secondly, there are some logos that Commons does not accept, but are needed here, for example Image:Wiki.png, which is used as the Wikipedia logo.' 						},					]

} );	}

if( wgNamespaceNumber == 0 || wgNamespaceNumber == 1 ) { form.append( { type:'header', label:'Articles' } ); form.append( {			type: 'radio',			name: 'csd',			list: [					{						label: 'A1: Little or no meaning',						value: 'nocontext',						tooltip: 'Is very short and providing little or no meaning (e.g., "He is a funny man that has created Factory and the Hacienda. And, by the way, his wife is great."). Having a small amount of content is not a reason to delete if it has useful information.'					},					{						label: 'A2: No content',						value: 'nocontent',						tooltip: 'Has no content. This includes any article consisting only of links (including hyperlinks, category tags and "see also" sections), a rephrasing of the title, and/or attempts to correspond with the person or group named by its title. This does not include disambiguation pages.'					},					{						label: 'A3: Article that exists on another Wikimedia project',						value: 'transwiki',						tooltip: 'Has been copied and pasted from another Wikipedia: Any article or section from an article that has been copied and pasted with little or no change.' },	                               {						label: 'A4: People, groups, companies or websites that are not notable.', value: 'notability', tooltip: 'An article about a real person, group of people, band, club, company, or web content that does not say why it is important. If not everyone agrees that the subject is not notable or there has been a previous RfD, the article may not be quickly deleted, and should be discussed at RfD instead.' },					{						label: 'A5: Not written in English', value: 'foreign', tooltip: 'Any article that is not written in English. An article that is written in any other languages but English.' },					{						label: 'A6: Obvious hoax', value: 'hoax', tooltip: 'Is an obvious hoax. An article that is surely fake or impossible.' }				]

} );	}	if( wgNamespaceNumber == 14 || wgNamespaceNumber == 15 ) {		form.append( { type:'header', label: 'Categories' } );		form.append( { type: 'radio', name: 'csd', list: [ { 						label: 'C1: Empty categories', value: 'catempty', tooltip: '(with no articles or subcategories for at least four days) whose only content includes links to parent categories. However, this can not be used on categories still being discussed on WP:RfD, or disambiguation categories. If the category wasn\'t newly made, it is possible that it used to have articles, and more inspection is needed.' },					{						label: 'C2: Quick renaming', value: 'catqr', tooltip: 'Empty categories that have already been renamed.' },					{						label: 'C3: Template categories', value: 'catfd', tooltip: 'If a category contains articles from only one template (such as Category:Cleanup needed from \{\{cleanup\}\}) and the template is deleted after being discussed, the category can also be deleted without being discussed.' }				]

} );	} if( wgNamespaceNumber == 2 || wgNamespaceNumber == 3 ) {		form.append( { type:'header', label: 'User pages' } );		form.append( { type: 'radio', name: 'csd', list: [ {						label: 'U1: User request', value: 'userreq', tooltip: 'User pages can be deleted if its user wants to, but there are some exceptions. '					},					{						label: 'U2: Non-existent user', value: 'nouser', tooltip: 'User pages of users that do not exist. Administrators should check Special:Contributions and Special:DeletedContributions.' },				]

} );	} if( wgNamespaceNumber == 10 || wgNamespaceNumber == 11 ) {		form.append( { type:'header', label: 'Templates' } );		form.append( { type: 'radio', name: 'csd', list: [ { 						label: 'T2: They are deprecated or replaced by a newer template and are completely unused and not linked to.', value: 'replaced' },				]

} );	}

form.append( { type:'header', label:'General criteria' } ); form.append( {			type: 'radio',			name: 'csd',			list: [					{ 						label: 'G1: Nonsense', 						value: 'nonsense', 						tooltip: 'All of the text is nonsense. Nonsense includes content that does not make sense or is not meaningful. However, this does not include bad writing, bad words, vandalism, things that are fake or impossible, or parts which are not in English. ' },					{ 						label: 'G2: Test page',						value: 'test',						tooltip: 'It is a test page, such as "Can I really create a page here?".' 					},					{ 						label: 'G3: Complete vandalism',						value: 'vandalism',						tooltip: 'The content is completely vandalism.'					},					{ 						label: 'G3: Pagemove vandalism', 						value: 'pagemove',						tooltip: 'Nonsense redirects that are created from the cleanup of page move vandalism'					},					{						label: 'G4: Recreation of deleted material already deleted at RfD',						value: 'repost', tooltip: 'Creation of content that is already deleted. It includes an identical or similar copy, with any title, of a page that was deleted, after being discussed in Requests for deletion, unless it was undeleted due to another discussion or was recreated in the user space. Before deleting again, the Administrator should be sure that the content is similar and not just a new article on the same subject. This rule cannot be used if the content had already been quickly deleted before.' },	//No G5 on this wiki {						label: 'G6: History merge', value: 'histmerge', tooltip: 'Temporarily deleting a page in order to merge page histories' },					{						label: 'G6: Make way for move', value: 'move', tooltip: 'Making way for a move like reversing a redirect' },					{						label: 'G6: Closed Request for deletion as delete', value: 'afd', tooltip: 'An admin has closed a Requests for deletion debate as a "delete"' },					{						label: 'G6: Housekeeping', value: 'g6', tooltip: 'Other non-controversial "housekeeping" tasks' },					{						label: 'G7: Author requests deletion', value: 'author', tooltip: 'Any page whose original author wants deletion, can be quickly deleted, but only if most of the page was written by that author and was created as a mistake. If the author blanks the page, this can mean that he or she wants it deleted.' },					{						label: 'G7: Author blanked', value: 'blanked', tooltip: ' If the author blanks the page, this can be taken as a deletion request' },					{						label: 'G8: Pages dependent on deleted or non-existent pages', value: 'talk', tooltip: '... can be deleted, unless they contain discussion on deletion that can\'t be found anywhere else. Subpages of a talk page can only be deleted under this rule if their top-level page does not exist. This also applies to broken redirects. However, this cannot be used on user talk pages or talk pages of images on Commons.' },	// No G9, as this is not a criterion that is used frequently { 						label: 'G10: Attack page', value: 'attack', tooltip: 'Pages that were only created to insult a person or thing (such as "John Q. Doe is dumb"). This includes articles on a living person that is insult and without sources, where there is no NPOV version in the edit history to revert to.' },					{ 						label: 'G11: Obvious advertising', value: 'spam', tooltip: 'Pages which were created only to say good things about a company, item, group or service and which would need to be written again so that they can sound like an encyclopedia. However, simply having a company, item, group or service as its subject does not mean that an article can be deleted because of this rule: an article that is obvious advertising should have content that shouldn\'t be in an encyclopedia. If a page has already gone through RfD or QD and was not deleted, it should not be quickly deleted using this rule.' },					{ 						label: 'G12: Obviously breaking copyright law', value: 'copyvio', tooltip: 'Obviously breaking copyright law like a page which is 1) Copied from another website which does not have a license that can be used with Wikipedia; 2) Containing no content in the page history that is worth being saved. 3) Made by one person instead of being created on wiki and then copied by another website such as one of the many Wikipedia mirror websites. 4) Added by someone who doesn\'t tell if he got permission to do so or not, or if his claim has a large chance of not being true;' }				]		});

form.append( { type:'header', label: 'Redirects' } ); form.append( {			type: 'radio',			name: 'csd',			list: [				{ 					label: 'R2: Redirects from mainspace to any other namespace except the Category:, Template:, Wikipedia:, Help: and Portal: namespaces', 					value: 'rediruser', 					tooltip: '(this does not include the Wikipedia shortcut pseudo-namespaces). If this was the result of a page move, consider waiting a day or two before deleting the redirect'				},				{ 					label: 'R3: Redirects as a result of an implausible typo that were recently created', 					value: 'redirtypo', 					tooltip: 'However, redirects from common misspellings or misnomers are generally useful, as are redirects in other languages'				}			]		} ); var result = form.render; Window.setContent( result ); Window.display; }

twinklespeedy.normalizeHash = { 'nonsense': 'g1', 'test': 'g2', 'vandalism': 'g3', 'pagemove': 'g3', 'repost': 'g4', 'histmerge': 'g6', 'move': 'g6', 'afd': 'g6', 'g6': 'g6', 'author': 'g7', 'blanked': 'g7', 'talk': 'g8', 'attack': 'g10', 'spam': 'g11', 'copyvio': 'g12', 'nocontext': 'a1', 'nocontent': 'a2', 'transwiki': 'a3', 'notability': 'a4', 'foreign': 'a5', 'redirnone': 'r1', 'rediruser': 'r2', 'redirtypo': 'r3', 'prohibitedimage': 'f1', 'catempty': 'c1', 'catqd': 'c2', 'catfd': 'c3', 'userreq': 'u1', 'nouser': 'u2', 'replaced':'t2' };

twinklespeedy.reasonHash = { 'nonsense': 'was all nonsense', 'test': 'was a test page', 'vandalism': 'was vandalism', 'pagemove': 'was a redirect created during cleanup of page move vandalism', 'repost': 'was a copy of a page that was deleted by RfD', 'histmerge': 'was in the way of trying to fix or clean up something', 'move': 'was in the way of making a move', 'afd': 'was closed as delete in a RfD', 'g6': 'was housekeeping', 'author': 'was asked to be deleted by the author', 'blanked': 'was implied to be deleted by the author', 'talk': 'was a talk page of a page that does not exist', 'attack': 'was an attack page', 'spam': 'was advertising', 'copyvio': 'was breaking copyright law', 'nocontext': 'was a page that had little or no meaning', 'nocontent': 'was a page that had no content', 'transwiki': 'was copied from another Wikipedia', 'notability': 'was a page that didn\'t say why the subject was notable', 'foreign': 'was not written in English', 'hoax': 'was obviously a hoax (not true)', 'redirnone': 'was a redirect to a page that does not exist', 'rediruser': 'was a redirect to the Talk:, User: or User talk: space', 'redirtypo': 'was a redirect with an uncommon typo', 'prohibitedimage': 'was an image/media that is not allowed on Wikipedia', 'catempty': 'was an empty category', 'catqr': 'was a renamed category', 'catfd': 'was a category containing articles from a now deleted template', 'userreq': 'was a user page whose user requested deletion', 'nouser': 'was a user page of a user that did not exist', 'replaced': 'was deprecated or replaced by a newer template and are completely unused and not linked to' };

twinklespeedy.callbacks = { sysop: { main: function( self ) { var xmlDoc = self.responseXML; var normal = xmlDoc.evaluate( '//normalized/n/@to', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue; if( normal ) { wgPageName = normal; }			var exists = xmlDoc.evaluate( 'boolean(//pages/page[not(@missing)])', xmlDoc, null, XPathResult.BOOLEAN_TYPE, null ).booleanValue;

if( ! exists ) { self.statelem.error( "It seems that the page doesn't exists, perhaps it has already been deleted" ); return; }

if( self.params.openusertalk ) { // Open talk page of first contributor var query = { 'action': 'query', 'prop': 'revisions', 'titles': wgPageName, 'rvlimit': 1, 'rvprop': 'user', 'rvdir': 'newer' }

var wikipedia_api = new Wikipedia.api( 'Grabbing username of initial contributor', query, twinklespeedy.callbacks.sysop.openUserTalkPage ); wikipedia_api.params = self.params; wikipedia_api.post; }			var query = { 'title': wgPageName, 'action': 'delete' };

var wikipedia_wiki = new Wikipedia.wiki( 'Deleting page', query, twinklespeedy.callbacks.sysop.deletePage ); wikipedia_wiki.params = self.params; wikipedia_wiki.followRedirect = false; wikipedia_wiki.get;

if( 				TwinkleConfig.deleteTalkPageOnDelete && 				self.params.normalized != 'f8' &&				wgNamespaceNumber % 2 == 0 && 				wgNamespaceNumber != Namespace.USER && 				document.getElementById( 'ca-talk' ).className != 'new' 			) { var talk_page = namespaces[ wgNamespaceNumber + 1 ] + ':' + wgTitle; var query = query = { 'title': talk_page, 'action': 'delete' };				var wikipedia_wiki = new Wikipedia.wiki( 'Deleting talk page', query, twinklespeedy.callbacks.sysop.deleteTalkPage ); wikipedia_wiki.params = self.params; wikipedia_wiki.followRedirect = false; wikipedia_wiki.get; }

if( wgNamespaceNumber == 6 && self.params.normalized != 'f8' ) { var query = { 'action': 'query', 'list': 'imageusage', 'titles': wgPageName, 'iulimit': userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops };				var wikipedia_api = new Wikipedia.api( 'Grabbing file links', query, twinklespeedy.callbacks.sysop.unlinkImageInstancesMain ); wikipedia_api.params = self.params; wikipedia_api.post; }			var doOrphan = TwinkleConfig.orphanBacklinksOnSpeedyDelete; if( 				doOrphan.orphan && 				doOrphan.exclude.indexOf( self.params.normalized.toLowerCase ) == -1 			) { var query = { 'action': 'query', 'list': 'backlinks', 'blfilterredir': 'nonredirects', 'bltitle': wgPageName, 'bllimit': userIsInGroup( 'sysop' ) ? 5000 : 500, // 500 is max for normal users, 5000 for bots and sysops 'blnamespace': [0, 100] // Main namespace and portal namespace only, keep on talk pages. };				var wikipedia_api = new Wikipedia.api( 'Grabbing backlinks', query, twinklespeedy.callbacks.sysop.unlinkBacklinksMain ); wikipedia_api.params = self.params; wikipedia_api.post; }			var query = { 'action': 'query', 'list': 'backlinks', 'blfilterredir': 'redirects', 'bltitle': wgPageName, 'bllimit': userIsInGroup( 'sysop' ) ? 5000 : 500 // 500 is max for normal users, 5000 for bots and sysops };			var wikipedia_api = new Wikipedia.api( 'Grabbing redirects', query, twinklespeedy.callbacks.sysop.deleteRedirectsMain ); wikipedia_api.params = self.params; wikipedia_api.post;

},		openUserTalkPage: function( self ) { var xmlDoc = self.responseXML; var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue; var statusIndicator = new Status('Opening user talk page edit form for user ' + user, 'opening'); var query = { 'title': 'User talk:' + user, 'action': 'edit', 'preview': 'yes', 'vanarticle': wgPageName.replace(/_/g, ' ') };			switch( TwinkleConfig.userTalkPageMode ) { case 'tab': window.open( mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?' + QueryString.create( query ), '_tab' ); break; case 'blank': window.open( mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?' + QueryString.create( query ), '_blank', 'location=no,toolbar=no,status=no,directories=no,scrollbars=yes,width=1200,height=800' ); break; case 'window': default : window.open( mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?' + QueryString.create( query ), 'twinklewarnwindow', 'location=no,toolbar=no,status=no,directories=no,scrollbars=yes,width=1200,height=800' ); break; }			statusIndicator.info( 'complete' ); },		unlinkBacklinksMain: function( self ) { var xmlDoc = self.responseXML; var snapshot = xmlDoc.evaluate('//backlinks/bl/@title', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );

if( snapshot.snapshotLength == 0 ) { return; }

var statusIndicator = new Status('Removing backlinks', '0%');

var total = snapshot.snapshotLength * 2;

var onsuccess = function( self ) { var obj = self.params.obj; var total = self.params.total; var now = parseInt( 100 * ++(self.params.current)/total ) + '%'; obj.update( now ); self.statelem.unlink; if( self.params.current >= total ) { obj.info( now + ' (completed)' ); Wikipedia.removeCheckpoint; }			}			var onloaded = onsuccess;

var onloading = function( self ) {}

Wikipedia.addCheckpoint; if( snapshot.snapshotLength == 0 ) { statusIndicator.info( '100% (completed)' ); Wikipedia.removeCheckpoint; return; }

var params = clone( self.params ); params.current = 0; params.total = total; params.obj = statusIndicator; params.page = wgPageName;

for ( var i = 0; i < snapshot.snapshotLength; ++i ) { var title = snapshot.snapshotItem(i).value; var query = { 'title': title, 'action': 'submit' }				var wikipedia_wiki = new Wikipedia.wiki( "Unlinking on " + title, query, twinklespeedy.callbacks.sysop.unlinkBacklinks ); wikipedia_wiki.params = params; wikipedia_wiki.onloading = onloading; wikipedia_wiki.onloaded = onloaded; wikipedia_wiki.onsuccess = onsuccess; wikipedia_wiki.get; }		},		unlinkBacklinks: function( self ) { var form = self.responseXML.getElementById('editform'); var text = form.wpTextbox1.value; var old_text = text; var wikiPage = new Mediawiki.Page( text ); wikiPage.removeLink( self.params.page );

text = wikiPage.getText; if( text == old_text ) { // Nothing to do, return self.onsuccess( self ); Wikipedia.actionCompleted( self ); return; }			var postData = { 'wpMinoredit': form.wpMinoredit.checked ? '' : undefined, 'wpWatchthis': undefined, 'wpStarttime': form.wpStarttime.value, 'wpEdittime': form.wpEdittime.value, 'wpAutoSummary': form.wpAutoSummary.value, 'wpEditToken': form.wpEditToken.value, 'wpSection': '', 'wpSummary': 'Removing backlinks to ' + self.params.page + " that has been speedily deleted per (CSD " + self.params.normalized.toUpperCase + ")" + "; " + TwinkleConfig.deletionSummaryAd, 'wpTextbox1': text };			self.post( postData ); },		deleteRedirectsMain: function( self ) { var xmlDoc = self.responseXML; var snapshot = xmlDoc.evaluate('//backlinks/bl/@title', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );

var total = snapshot.snapshotLength * 2;

if( snapshot.snapshotLength == 0 ) { return; }

var statusIndicator = new Status('Deleting redirects', '0%');

var onsuccess = function( self ) { var obj = self.params.obj; var total = self.params.total; var now = parseInt( 100 * ++(self.params.current)/total ) + '%'; obj.update( now ); self.statelem.unlink; if( self.params.current >= total ) { obj.info( now + ' (completed)' ); Wikipedia.removeCheckpoint; }			}			var onloaded = onsuccess;

var onloading = function( self ) {}

Wikipedia.addCheckpoint; if( snapshot.snapshotLength == 0 ) { statusIndicator.info( '100% (completed)' ); Wikipedia.removeCheckpoint; return; }

var params = clone( self.params ); params.current = 0; params.total = total; params.obj = statusIndicator;

for ( var i = 0; i < snapshot.snapshotLength; ++i ) { var title = snapshot.snapshotItem(i).value; var query = { 'title': title, 'action': 'delete' }				var wikipedia_wiki = new Wikipedia.wiki( "Deleting " + title, query, twinklespeedy.callbacks.sysop.deleteRedirects ); wikipedia_wiki.params = params; wikipedia_wiki.onloading = onloading; wikipedia_wiki.onloaded = onloaded; wikipedia_wiki.onsuccess = onsuccess; wikipedia_wiki.followRedirect = false; wikipedia_wiki.get; }		},		deleteRedirects: function( self ) { var form = this.responseXML.getElementById( 'deleteconfirm' ); if( ! form ) { // Hell, file deletion is b0rked :(				form = this.responseXML.getElementsByTagName( 'form' )[0];				var postData = {					'wpDeleteReasonList': 'other',					'wpReason': "Quickly deleted per QD G8, redirect to deleted page \"" + wgPageName + "\"." + TwinkleConfig.deletionSummaryAd,					'wpEditToken': form.wpEditToken.value				}			} else {

var postData = { 'wpWatch': form.wpWatch.checked ? '' : undefined, 'wpDeleteReasonList': 'other', 'wpReason': "Quicklyy deleted per QD G8, redirect to deleted page \"" + wgPageName + "\"." + TwinkleConfig.deletionSummaryAd, 'wpEditToken': form.wpEditToken.value }			}			self.post( postData ); },		unlinkImageInstancesMain: function( self ) { var xmlDoc = self.responseXML; var snapshot = xmlDoc.evaluate('//imageusage/iu/@title', xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null );

if( snapshot.snapshotLength == 0 ) { return; }

var statusIndicator = new Status('Unlinking file instances ', '0%');

var total = snapshot.snapshotLength * 2;

var onsuccess = function( self ) { var obj = self.params.obj; var total = self.params.total; var now = parseInt( 100 * ++(self.params.current)/total ) + '%'; obj.update( now ); self.statelem.unlink; if( self.params.current >= total ) { obj.info( now + ' (completed)' ); Wikipedia.removeCheckpoint; }			}			var onloaded = onsuccess;

var onloading = function( self ) {}

Wikipedia.addCheckpoint; if( snapshot.snapshotLength == 0 ) { statusIndicator.info( '100% (completed)' ); Wikipedia.removeCheckpoint; return; }

var params = clone( self.params ); params.current = 0; params.total = total; params.obj = statusIndicator; params.image = wgTitle;

for ( var i = 0; i < snapshot.snapshotLength; ++i ) { var title = snapshot.snapshotItem(i).value; var query = { 'title': title, 'action': 'submit' }				var wikipedia_wiki = new Wikipedia.wiki( "Unlinking on " + title, query, twinklespeedy.callbacks.sysop.unlinkImageInstances ); wikipedia_wiki.params = params; wikipedia_wiki.onloading = onloading; wikipedia_wiki.onloaded = onloaded; wikipedia_wiki.onsuccess = onsuccess; wikipedia_wiki.get; }		},		unlinkImageInstances: function( self ) { var form = self.responseXML.getElementById('editform'); var text = form.wpTextbox1.value; var old_text = text; var wikiPage = new Mediawiki.Page( text ); wikiPage.commentOutImage( self.params.image, 'Commented out because file was deleted' );

text = wikiPage.getText; if( text == old_text ) { // Nothing to do, return self.onsuccess( self ); Wikipedia.actionCompleted( self ); return; }			var postData = { 'wpMinoredit': form.wpMinoredit.checked ? '' : undefined, 'wpWatchthis': undefined, 'wpStarttime': form.wpStarttime.value, 'wpEdittime': form.wpEdittime.value, 'wpAutoSummary': form.wpAutoSummary.value, 'wpEditToken': form.wpEditToken.value, 'wpSection': '', 'wpSummary': 'Removing instance of file ' + self.params.image + " that has been quickly deleted per (QD " + self.params.normalized.toUpperCase + ")" + "; " + TwinkleConfig.deletionSummaryAd, 'wpTextbox1': text };			self.post( postData ); },		deletePage: function( self ) { var form = this.responseXML.getElementById( 'deleteconfirm' ); if( ! form ) { // Hell, file deletion is b0rked :(				form = this.responseXML.getElementsByTagName( 'form' )[0];				var postData = {					'wpDeleteReasonList': 'other',					'wpReason': "Quickly deleted per QD " + self.params.normalized.toUpperCase + ", " + self.params.reason + "." + TwinkleConfig.deletionSummaryAd,					'wpEditToken': form.wpEditToken.value				}				self.post( postData );			} else {

var postData = { 'wpWatch': (self.params.watch || form.wpWatch.checked) ? '' : undefined, 'wpDeleteReasonList': 'other', 'wpReason': "Quickly deleted per QD " + self.params.normalized.toUpperCase + ", " + self.params.reason + "." + TwinkleConfig.deletionSummaryAd, 'wpEditToken': form.wpEditToken.value }				self.post( postData ); }		},		deleteTalkPage: function( self ) { form = this.responseXML.getElementById( 'deleteconfirm' );

var postData = { 'wpWatch': (self.params.watch || form.wpWatch.checked) ? '' : undefined, 'wpDeleteReasonList': 'other', 'wpReason': "Quickly deleted per QD G8, was a talk page or redirect of a deleted or nonexistent page." + TwinkleConfig.deletionSummaryAd, 'wpEditToken': form.wpEditToken.value }			self.post( postData ); }	},	user: { main: function( self ) { var xmlDoc = self.responseXML;

var exists = xmlDoc.evaluate( 'boolean(//pages/page[not(@missing)])', xmlDoc, null, XPathResult.BOOLEAN_TYPE, null ).booleanValue;

if( ! exists ) { self.statelem.error( "It seems that the page doesn't exists, perhaps it has already been deleted" ); return; }			var query = { 'title': wgPageName, 'action': 'submit' };

var wikipedia_wiki = new Wikipedia.wiki( 'Tagging page', query, twinklespeedy.callbacks.user.tagPage ); wikipedia_wiki.params = self.params; wikipedia_wiki.followRedirect = false; wikipedia_wiki.get; },		tagPage: function( self ) { form = this.responseXML.getElementById( 'editform' );

var text = form.wpTextbox1.value;

self.statelem.status( 'Checking for tags on the page...' );

var tag = /(\{\{(?:db-?|delete)\|?.*?\}\})/.exec( text );

if( tag ) { self.statelem.error( [ htmlNode( 'strong', tag[0] ), " is already placed on the page." ] ) return; }

var xfd = /(\{\{(?:[rsaitcm]fd|md1)[^{}]*?\}\})/i.exec( text );

if( xfd && !confirm( "The deletion related template " + xfd[0] + " is already present on the page, do you still want to apply CSD template?" ) ) {				return; }			var code; switch( self.params.normalized ) { case 'u1': var rationale = prompt( 'Please provide a rationale to explain why this user talk page should be deleted:' ); if (rationale == null || rationale == '') { self.statelem.error( 'Aborted by user.' ); return; }					code = "\{\{db-" + self.params.value + "|rationale=" + rationale + "\}\}"; break; case 'f8': var filename = prompt( 'Please enter the name of the file on Commons:', wgPageName.replace( '_', ' ' ) ); if (filename == null) {						self.statelem.error( 'Aborted by user.' ); return; }					if( filename == '' ) { filename = wgPageName.replace( '_', ' ' ); }					var date = new Date; var code = "\{\{db-" + self.params.value + "|1=" + filename + "\}\}"; break; case 'g6': switch( self.params.value ) { case 'histmerge': var title = prompt( 'Please enter the title to merge into:' ); if (title == null) {								self.statelem.error( 'Aborted by user.' ); return; }							code = "\{\{db-" + self.params.value + "|1=" + title + "\}\}"; break; case 'move': var title = prompt( 'Please enter the title of the page to be moved here:' ); if (title == null) {								self.statelem.error( 'Aborted by user.' ); return; }							var reason = prompt( 'Please enter the reason for the page move:' ); if (reason == null) {								self.statelem.error( 'Aborted by user.' ); return; }							code = "\{\{db-" + self.params.value + "|1=" + title + "|2=" + reason + "\}\}"; break; default: code = "\{\{db-" + self.params.value + "\}\}"; break; }					break; case 'g10': text = ''; //blank attack pages. code = "\{\{db-" + self.params.value + "|blanked=yes\}\}"; break; case 'f9': case 'g12': var url = prompt( 'Please enter the URL if available, including the "http://":' ); if (url == null) {						self.statelem.error( 'Aborted by user.' ); return; }					code = "\{\{db-" + self.params.value + "|url=" + url + "\}\}"; break; case 'a10': var title = prompt( 'Enter the article name that is duplicated:' ); if (title == null) {						self.statelem.error( 'Aborted by user.' ); return; }					code = "\{\{db-" + self.params.value + "|article=" + title + "\}\}"; self.params.key1 = "article"; self.params.value1 = title; break; case 'f1': var img = prompt( 'Enter the file this is redundant to, excluding the "Image:" or "File:" prefix:' ); if (img == null) {						self.statelem.error( 'Aborted by user.' ); return; }					code = "\{\{db-" + self.params.value + "|1=" + img + "\}\}"; break; case 't3': var template = prompt( 'Enter the template this is redundant to, excluding the "Template:" prefix:' ); if (template == null) {						self.statelem.error( 'Aborted by user.' ); return; }					code = "\{\{db-" + self.params.value + "|\~\~\~\~\~|2=" + template + "\}\}"; break; default: code = "\{\{db-" + self.params.value + "\}\}"; break; }

if( TwinkleConfig.markSpeedyPagesAsPatrolled && self.params.rcid != '' ) { var query = { 'title': wgPageName, 'action': 'markpatrolled', 'rcid': self.params.rcid };

var wikipedia_wiki = new Wikipedia.wiki( 'Marking page as patrolled', query ); wikipedia_wiki.post; }

// Notification to first contributor var query = { 'action': 'query', 'prop': 'revisions', 'titles': wgPageName, 'rvlimit': 1, 'rvprop': 'user', 'rvdir': 'newer' }			var callback = function( self ) { var xmlDoc = self.responseXML; var user = xmlDoc.evaluate( '//rev/@user', xmlDoc, null, XPathResult.STRING_TYPE, null ).stringValue; if( wgPageName != ( 'User talk:' + user ) ) { var query = { 'title': 'User talk:' + user, 'action': 'submit' };					var wikipedia_wiki = new Wikipedia.wiki( 'Notifying of initial contributor (' + user + ')', query, twinklespeedy.callbacks.user.userNotification ); wikipedia_wiki.params = self.params; wikipedia_wiki.get; } else { Status.info( 'Info', 'Current page is initial contributor\'s talk page, aborting notification' ); }			}

if( self.params.usertalk ) { var wikipedia_api = new Wikipedia.api( 'Grabbing data of initial contributor', query, callback ); wikipedia_api.params = self.params; wikipedia_api.post; }

//wrap SD template in noinclude tags if we are in template space. //won't work with userboxes in userspace, or any other transcluded page outside template space if (self.params.wgCanonicalNamespace == "Template") code = " " + code + " ";

//Remove tags that become superfluous with this action text = text.replace(/{\{\s*(New unreviewed article|Userspace draft)\s*(\|(?:|[^{}])*)?}}\s*/ig, "");

var postData = { 'wpMinoredit': TwinkleConfig.markSpeedyPagesAsMinor ? '' : undefined, 'wpWatchthis': (self.params.watch || form.wpWatchthis.checked ) ? '' : undefined, 'wpStarttime': form.wpStarttime.value, 'wpEdittime': form.wpEdittime.value, 'wpAutoSummary': form.wpAutoSummary.value, 'wpEditToken': form.wpEditToken.value, 'wpSection': '', 'wpSummary': "Requesting quick deletion (QD " + self.params.normalized.toUpperCase + ")." + TwinkleConfig.summaryAd, 'wpTextbox1': code + "\n" + text };			self.post( postData ); },		userNotification: function( self ) { var nowelcome = TwinkleConfig.welcomeUserOnSpeedyDeletionNotification.indexOf( self.params.normalized ) == -1; var form = self.responseXML.getElementById( 'editform' ); var text = form.wpTextbox1.value;

text += "\n\{\{subst:QD-notice|page=" + wgPageName + "|cat=" + self.params.normalized + "|reason=" + twinklespeedy.reasonHash[ self.params.value ] + "\}\} \~\~\~\~"; var postData = { 'wpMinoredit': form.wpMinoredit.checked ? '' : undefined, 'wpWatchthis': form.wpWatchthis.checked ? '' : undefined, 'wpStarttime': form.wpStarttime.value, 'wpEdittime': form.wpEdittime.value, 'wpAutoSummary': form.wpAutoSummary.value, 'wpEditToken': form.wpEditToken.value,

'wpSection': '', 'wpSummary': 'Notification: Quick deletion nomination of \[\[' + wgPageName + '\]\].' + TwinkleConfig.summaryAd, 'wpTextbox1': text };			self.post( postData ); }	} }

twinklespeedy.callback.evaluateSysop = function twinklespeedyCallbackEvaluateSysop(e) {

wgPageName = wgPageName.replace( /_/g, ' ' ); // for queen/king/whatever and country!

var tag_only = e.target.form.tag_only; if( tag_only && tag_only.checked ) { return twinklespeedy.callback.evaluateUser(e); }

var value = e.target.value; var normalized = twinklespeedy.normalizeHash[ value ];

var params = { value: value, normalized: normalized, watch: TwinkleConfig.watchSpeedyPages.indexOf( normalized ) != -1, reason: twinklespeedy.reasonHash[ value ], openusertalk: TwinkleConfig.openUserTalkPageOnSpeedyDelete.indexOf( normalized ) != -1 };	Status.init( e.target.form );

var query = { 'action': 'query', 'titles': wgPageName }	var wikipedia_api = new Wikipedia.api( 'Checking if page exists', query, twinklespeedy.callbacks.sysop.main ); wikipedia_api.params = params; wikipedia_api.post; }

twinklespeedy.callback.evaluateUser = function twinklespeedyCallbackEvaluateUser(e) { wgPageName = wgPageName.replace( /_/g, ' ' ); // for queen/king/whatever and country! var value = e.target.value; var normalized = twinklespeedy.normalizeHash[ value ];

var params = { value: value, normalized: normalized, watch: TwinkleConfig.watchSpeedyPages.indexOf( normalized ) != -1, usertalk: TwinkleConfig.notifyUserOnSpeedyDeletionNomination.indexOf( normalized ) != -1 && e.target.form.notify.checked, rcid: QueryString.exists( 'rcid' ) ? QueryString.get( 'rcid' ) : '', wgCanonicalNamespace : wgCanonicalNamespace };

Status.init( e.target.form );

Wikipedia.actionCompleted.redirect = wgPageName; Wikipedia.actionCompleted.notice = "Tagging complete";

var query = { 'action': 'query', 'titles': wgPageName }

var wikipedia_api = new Wikipedia.api( 'Checking if page exists', query, twinklespeedy.callbacks.user.main ); wikipedia_api.params = params; wikipedia_api.post;

}

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: User:Griffinofwales/twinklespeedy.js


text:
User:Griffinofwales/twinklediff.js

function twinklediff { if( wgNamespaceNumber < 0 ) { return; }

var query = { 'title': wgPageName, 'diff': 'cur', 'oldid': 'prev' };

twAddPortletLink( mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?' + QueryString.create( query ), 'Last', 'tw-lastdiff', 'Show most recent diff' );

// Show additional tabs only on diff pages if(!QueryString.exists('diff')) return;

twAddPortletLink( "javascript:twinklediff.evaluate(false);", 'Since', 'tw-since', 'Show difference between last diff and the revision made by previous user' );

twAddPortletLink( "javascript:twinklediff.evaluate(true);", 'Since mine', 'tw-sincemine', 'Show difference between last diff and my last revision' );

var oldid = document.evaluate( 'substring-after(//div[@id="mw-diff-ntitle1"]/strong/a[1]/@href, "oldid=")', document, null, XPathResult.STRING_TYPE, null).stringValue; var query = { 'title': wgPageName, 'diff': 'cur', 'oldid' : oldid };	twAddPortletLink( mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?' + QueryString.create( query ), 'Current', 'tw-curdiff', 'Show difference to current revision' ); } window.TwinkleInit = (window.TwinkleInit || []).concat( twinklediff ); //schedule initializer

twinklediff.evaluate = function twinklediffEvaluate(me) { var ntitle = getElementsByClassName( document.getElementById('bodyContent'), 'td', 'diff-ntitle' )[0];

var user; if( me ) { user = wgUserName; } else { var node = document.getElementById( 'mw-diff-ntitle2' ); if( ! node ) { // nothing to do? return; }		user = document.evaluate( 'a[1]', node, null, XPathResult.STRING_TYPE, null ).stringValue; }	var query = { 'prop': 'revisions', 'action': 'query', 'titles': wgPageName, 'rvlimit': 1, 'rvprop': [ 'ids', 'user' ], 'rvstartid': wgCurRevisionId - 1, // i.e. not the current one 'rvuser': user };	Status.init( document.getElementById('bodyContent') ); var wikipedia_api = new Wikipedia.api( 'Grabbing data of initial contributor', query, twinklediff.callbacks.main ); wikipedia_api.params = { user: user }; wikipedia_api.post; }

twinklediff.callbacks = { main: function( self ) { var xmlDoc = self.responseXML; var revid = xmlDoc.evaluate( '//rev/@revid', xmlDoc, null, XPathResult.NUMBER_TYPE, null ).numberValue;

if( ! revid ) { self.statelem.error( 'no suitable earlier revision found, or ' + self.params.user + ' is the only contributor. Aborting.' ); return; }		var query = { 'title': wgPageName, 'oldid': revid, 'diff': wgCurRevisionId };		window.location = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/index.php?' + QueryString.create( query ); } }

title: User:Griffinofwales/twinklediff.js


text: User talk:Ijon

title: User talk:Ijon


text:
Wikinews:Briefs/June 17, 2010

'Bloody Sunday Inquiry' publishes report into British Army killing of activists in Northern Ireland
Thank you for downloading the Audio Wikinews Brief. Today is Thursday, June 17th, 2010. I'm Dan Harlow and today we present a special report on the Bloody Sunday Inquiry, a report into the 1972 British Army killing of fourteen civil rights activists in Northern Ireland.

The Saville Inquiry, a 12-year public inquiry into the fatal shooting known as Bloody Sunday, published a long awaited 5,000 page report, concluded the deaths were "unjustified".

The events of "Bloody Sunday" in 1972 saw soldiers open fire on civilians during a civil rights march. Family members and supporters of the victims reacted positively to the report, as they gathering outside the Guildhall in Derry.

"What happened on Bloody Sunday was both unjustified and unjustifiable. It was wrong", British Prime Minister David Cameron told the House of Commons. He also said, "[t]he Government is ultimately responsible for the conduct of the armed forces, and for that, on behalf of the Government, indeed on behalf of our country, I am deeply sorry".

Cameron said the Saville report states that those killed did not pose a threat and some of those killed and injured were clearly fleeing or going to help those injured or dying.

Some of the key findings were;

"The firing by soldiers of 1 Para caused the deaths of 13 people and injury to a similar number, none of whom was posing a threat of causing death or serious injury"; Accounts by soldiers were rejected and some had "knowingly put forward false accounts"; The paratroopers shot first and later members of the official IRA fired a number of shots but this “did not provide an explanation for why soldiers targeted and hit people” and Northern Ireland's Deputy First Minister, Martin McGuinness of Sinn Fein, was "probably armed with a sub-machine gun" on the day, but did not engage in "any activity that provided any of the soldiers with any justification for opening fire".

Twenty-seven civil rights activists were shot by the British Army's Parachute Regiment (of which "1 Para" was identified as the regiment mainly responsible) during an illegal Northern Ireland Civil Rights Association (NICRA) march in the Bogside area of Derry in 1972. The NICRA was an organization, formed in early 1967, which campaigned against discrimination of the Roman Catholic minority in Northern Ireland and had five key demands: "one man, one vote"; an end to gerrymandering, housing discrimination, public authority discrimination and the abolition of the B Specials police reserve.

In the aftermath of Bloody Sunday, an inquiry by the Lord Chief Justice, Lord Widgery, justified British army actions on the day and claimed that many of the activists were armed with guns and nail bombs. Social Democratic and Labour Party (SDLP) leader MP Mark Durkan said, "[t]he families have waited a long time for justice and for a long time the reputations and innocence of their loved ones have been smeared by the findings of Widgery".

The shootings lead to the strengthening of Irish republicans' anti-British army arguments in the Nationalist community and provided the Provisional Irish Republican Army (IRA) with queues of new recruits for its "long war", which resulted in 30 years of The Troubles.

The 12-year inquiry is the longest-running and most expensive public inquiry in British judicial history, costing around £200 million. Around 2,500 people gave testimony, including 505 civilians, nine experts and forensic scientists, 49 journalists, 245 military personnel, 35 paramilitaries or former paramilitaries, 39 politicians and civil servants, seven priests and 33 Royal Ulster Constabulary officers. Evidence included 160 volumes of data with an estimated 30 million words, 13 volumes of photographs, 121 audio tapes and 10 video tapes.

 * Music credit Private Reflection

The victims included Patrick Doherty (32), Hugh Gilmour (17), Jackie Duddy (17), John Young (17), Kevin McElhinney (17), Michael Kelly (17), Gerald Donaghey (17), William Nash (19), Michael McDaid (20), Jim Wray (22), William McKinney (27) and Bernard "Barney" McGuigan (41). John Johnston (59) died four months later.

Outro
This has been a special report of the Audio Wikinews brief. To receive the latest news, please visit wikinews.org, presenting up-to-date, relevant, newsworthy and entertaining content without bias. Wikinews is a free service and is funded by your generous donations. Click on the donate link on our homepage to learn how you can contribute. This recording has been released under the Creative Commons 2.5 License.

title: Wikinews:Briefs/June 17, 2010


text:
Thread:Comments:Warren Buffett to host world's most expensive lunch/Blah/reply (5)

I think there's a little more to being rich than just saving your pennies.


text:
Thread:Comments:International Committee of the Red Cross condemns Gaza blockade/International Committee of the Red Cross condemns Gaza blockade/reply (10)

Don't put words in my mouth. I never said we have a right to kill civilians. I did however say that innocent people will get killed in the crossfire if they continue to support the actions of terrorists and radicals, because that's how war works, its a sad reality and there are alternatives, but as for now, they are making the choice to side with people openly hostile to Israel, instead of assisting Israel peacefully in the removal of those combatants. The IDF doesn't target civilians, Hamas cannot say the same.


text:
Thread:Comments:Warren Buffett to host world's most expensive lunch/Blah/reply (6)

There is more to becoming rich, yes, unless you're born into it.

Regardless, it doesn't change the fact that he witholds tens of billions of dollars from circulation. All that money is tied to his name and remains stagnant and useless there. The wealthiest 1% of the population which he belongs to hoards a majority of the world's wealth in this fashion, leaving a small remainder that can't support the population that is forced to compete for it.


text: User talk:Keiko012

title: User talk:Keiko012


text: User talk:Madame fresh

title: User talk:Madame fresh


text: User talk:Neng ukhty

title: User talk:Neng ukhty


text:
Thread:Comments:Warren Buffett to host world's most expensive lunch/Blah/reply (7)

Most of his net worth isn't in liquid assets, though. The bulk of his wealth is tied up in securities, since that's how he makes his living. Certainly, one can imagine that the dividends from those stocks and bonds are plenty enough to enrich him, but it isn't like he can just go out and buy a ten billion dollar car at the drop of a hat.


text: User talk:Brandorr

title: User talk:Brandorr


text: User talk:F.hendra

title: User talk:F.hendra


text: User talk:Sandymustang11

title: User talk:Sandymustang11


text: User talk:Sekharchndr20

title: User talk:Sekharchndr20


text: User talk:USCitizen

title: User talk:USCitizen


text: User talk:Magen1971

title: User talk:Magen1971


text: User talk:Ajainanish

title: User talk:Ajainanish


text:
Thread:Comments:Warren Buffett to host world's most expensive lunch/Blah/reply (8)

What good will it do? Check out the charity -- its a church in the Tenderloin. Here's its mission statement (from Guidestar):

1. Expand our Global Ministries program, in which Glide partners with communities in the US and around the world to find creative solutions to community struggles. 2. Expand our computer programs for adults and children by partnering with various technology firms and individuals in Silicon Valley and the surrounding area. 3. Continue the process of integrating our new programs into the existing programs of Glide to further our mission to provide comprehensive, holistic services.

Reading through the bullshit: Preaching to crackheads, and maybe teaching them MS Word. Better than some rich douche spending the $$ on a sports car, but let's not kid around, its still just dollars gettin' thrown around for vanity.


text: User talk:IlhamJulian

title: User talk:IlhamJulian


text: User talk:Adeley adeolu

title: User talk:Adeley adeolu


text: User talk:Indra ludmana

title: User talk:Indra ludmana


text: User talk:مصطفى البخيت

title: User talk:مصطفى البخيت


text: User talk:Borogokul23

title: User talk:Borogokul23


text:
Thread:Comments:Strike ballot to go ahead despite British Telecom's belated new pay offer/Comments from feedback form - "if it is in concise manner th..."

if it is in concise manner then it will be easy for all the readers. -vinothkumar.s


text: User talk:Coptic-orthodox

title: User talk:Coptic-orthodox


text:
User talk:Fizzgig~enwikinews

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Fizzgig. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Fizzgig~enwikinews that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:17, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 06:31, 21 April 2015 (UTC)

title: User talk:Fizzgig~enwikinews


text: User talk:Puruindira

title: User talk:Puruindira


text: User talk:Cro-peace

title: User talk:Cro-peace


text: User talk:Timothy Claeys

title: User talk:Timothy Claeys


text: User talk:Sachikeith

title: User talk:Sachikeith


text: User talk:Chimegawe Sarla Ashokrao

title: User talk:Chimegawe Sarla Ashokrao


text: User talk:Dadsgl1

title: User talk:Dadsgl1


text:
Thread:Comments:Europe's airline chaos: in depth/Comments from feedback form - "i em all ways on wikipedia i l..."

i em all ways on wikipedia i love wikipedia


text:
Getty taps into Flickr snappers

June 20, 2010

and have announced an extension on their one year partnership. The new deal will grant Getty Images access to all 40 million registered users images. To protect privacy, users must opt into the project, though details are yet to emerge.

To ensure that Getty Images doesn't get free photographs, the owner of the image will be given a fee, however neither Flickr nor Getty Images have yet confirmed what those rates will be. It is believed it will be an industry standard rate, currently averaging between US$150 and US$240 per image.

One such success story of the partnership is Hal Bergman. He joined Flickr in 2006 and has said the partnership, which he originally had been part of, had helped his career take off.

"I have been doing this for six years on the side and a year and a half ago I gave up my day job in website development," Mr. Bergman told BBC News, "I am working as a freelance and getting a lot of commission work and I would say this deal brings in about a third of my income".

Bergman has a total of 200 images used by Getty Images, and over 2,500 on another site, which he did not specify.

The new alliance is said to help encourage people to retry Getty Images, as well as making Getty Images a far more competitive alternative to microstock photo sites. The move should also benefit Flickr, by making it more appealing to professional photographers to post their images on the site. It is still unclear what standards Getty Images will use for the licensing program when a customer wants a photo.

title: Getty taps into Flickr snappers


text:
Sarkozy in UK to mark historic de Gaulle war broadcast

June 20, 2010

Nicolas Sarkozy visited the UK today to celebrate the 70th anniversary since made his war broadcast. The French president and the Prince of Wales laid wreaths at the statue of Charles de Gaulle in London.

Earlier, Mr Sarkozy and his wife Carla Bruni visited the BBC radio studio where the famous broadcast was made on BBC France. The broadcast at the time was said to have been listened to by a very small number of listeners. Carla Bruni and Nicolas Sarkozy unveiled a plaque and viewed a tapestry given to the BBC by France as a note of gratitude after World War II.

Nicolas Sarkozy and British PM David Cameron met with 200 veterans during a ceremony at the. Nicolas Sarkozy awarded the to six World War II veterans, three of whom were British.

In a short speech, Mr Cameron said the anniversary was a "reminder that Britain and France are not just neighbours in the geographical sense but also in the emotional sense." Mr Cameron held an hour of talks with the French president at Downing Street primarily focusing on economics, Afghanistan, and other foreign policy matters. The visit is the first by a French president to mark Gen de Gaulle's broadcast on June 18, 1940. In the stirring radio appeal, Gen de Gaulle declared himself leader of the "Free French", spawning the French Resistance, which went on to play a crucial role in defeating the Germans.

Mr Sarkozy's last official visit to the UK was in March 2008, when he was also accompanied by his wife.


text:
Talk:Getty taps into Flickr snappers

Original reporting notes
Taken from BBC News, the events of Flickr and Getty Images, please add extra events if they are found NickyJ101 (talk) 12:27, 18 June 2010 (UTC)

Style
Was that written in English? Because I'm sorry, I didn't understand a word of it. We're not all so up on Flickr/Getty as the author obviously thinks we are.

Requested edits
editprotected Hi. Please add " 2010" to the last source, so the last line reads "|date=18 June 2010}}". Thanks! — Jeff G. ツ 05:20, 27 June 2010 (UTC)

Done --InfantGorilla (talk) 10:12, 13 July 2010 (UTC)

flag Also, per Exclusive Artist : halbergman | iStockphoto.com, Bergman's "2733 files have Extended License options available". — Jeff G. ツ 05:35, 27 June 2010 (UTC)

In addition, per Getty Images - Search: Photographer: Hal Bergman, Hal Bergman has 451 images for sale on gettyimages. — Jeff G. ツ 05:35, 27 June 2010 (UTC)

 * We need to get consensus in a discussion here before we make changes of that kind to an archived article. I have added  undefined to attract attention from the community.

 * For the first proposal, I don't think a mention of istockphoto substantially improves the accuracy of the article.

 * For the second one, the community might consider posting a correction notice at the top of the page (to reflect that he has about 200 more images for sale than is written.) Can you propose a wording for it?

 * --InfantGorilla (talk) 10:12, 13 July 2010 (UTC)

My proposed wording is as follows: — Jeff G. ツ 01:51, 14 July 2010 (UTC)

 * 1) Do you think the number was incorrect when Wikinews first read it in the BBC report back in June? It seems equally likely that Getty has imported many more of Bergman's images since the report, but I know nothing about how this aspect of the photography business works.
 * 2) If there seems reasonable likelihood of harm to Bergman, (or readers, or other parties mentioned in the story), then I suggest a more subtle correction, with a blue 'i' instead of a red stop sign:

Notice: It came to our attention that, as of July 14 2010, the Getty Images website lists 459 images by photographer Hal Bergman. This is significantly more than reported here. We regret any inconvenience.

 * --InfantGorilla (talk) 06:40, 14 July 2010 (UTC)

 * Regarding correction, I agree that it shouldn't be used here unless we believe the article was wrong when it was published.

 * As for the gentler notice, I think this is unlikely to be appropriate. Because Wikinews is not an encyclopedia, it doesn't provide updates to old articles.  The article is from the past, therefore it's to be expected things that were true then aren't necessarily true now.  Certainly, unusual likelihood of harm should be taken into account.  A useful test might be to ask first whether any possible harm would be defused by a generic notice saying "This is an archived news article.  Some facts that were true at the time of publication may have changed since then.", and then, if the answer to that is "yes", ask why this article should be singled out for such a notice.  --Pi zero (talk) 12:50, 15 July 2010 (UTC)

I think that it is highly likely that Mr. Bergman himself provided that 200 number to Maggie Shiels of the BBC in the week before 17 June as a round number, as she has quoted him. I don't know what the true number was that day, and have struck out trying to find the answer via archive.org and google. As regards the "over 2,500 on another site, which he did not specify", I believe the other site to be iStockphoto.com, where he currently has 2,780 files in his portfolio per Exclusive Artist : halbergman | iStockphoto.com. If you think that it's been too long and/or that this article shouldn't be singled out and/or that Mr. Bergman is entitled to deprecate his own work by understating it, I'll drop the issue. — Jeff G. ツ 00:41, 16 July 2010 (UTC)

 * Did you read our archiving policy? After strenuous debates, the consensus was that after 24 hours, we only make corrections, not updates. It is pretty clear that we won't explain what the unspecified site might be.  As I said before, I don't personally understand this aspect of the photo business, so any significance in the number of photos (200 or 400) will have to be explained to me.

 * I suspect this conversation is drawing to a close. Let's remove the flag tomorrow.

 * --InfantGorilla (talk) 06:28, 16 July 2010 (UTC)

title: Talk:Getty taps into Flickr snappers


text: User talk:M00npirate

title: User talk:M00npirate


text: User talk:Faisalriyadh

title: User talk:Faisalriyadh


text: User talk:Bluesky93

title: User talk:Bluesky93


text:
Ronnie Lee Gardner executed by Utah firing squad

June 20, 2010 Ronnie Lee Gardner was executed by firing squad in Utah at 0020 local time (0620 UTC) on Friday. His execution was performed by five volunteer riflemen. Gardner would not have seen his executioners due to bright lights during his final words before a bag was placed over his head. The execution was carried out at a prison in Draper, a suburb of Salt Lake City.

This is the first execution by firing squad carried out in the United States since John Albert Taylor on January 26th, 1996. Taylor was convicted of raping and then murdering an eleven year old girl. Gardener chose his death by firing squad because he murdered with a gun and so stated he would die by the gun. The first man in Utah to be executed by firing squad was Gary Gilmore in 1977 for murdering two people.

In 1985, Gardner was convicted of fatally shooting a lawyer, Michael Burdell, during a failed attempt at escaping a courthouse. This was during his trial for the murder of Melvyn Otterstrom in 1984.

The five volunteers were not informed if they were given a live or blank round to ensure that they did not know if they gave the lethal shot. Gardner was asked if he had any final words and said: "I do not. No." There was then a count-down from five, with the guns being fired on two. Utah Attorney General Mark Shurtleff used the Twitter micro-blogging site to say he had given the go-ahead for execution. "May God grant him the mercy he denied his victims". Friends and family members had gathered outside the prison to hold a vigil with some wearing t-shirts showing his prison number, but none were allowed to view the execution.

In 2004, Utah passed legislation stating that all death-row inmates will be killed by lethal injection, however those sentenced before 2004 are allowed to opt for the death by firing squad, as Gardner did.


text: User talk:Ryan linkin park

title: User talk:Ryan linkin park


text: User talk:Faithfulfantasy

title: User talk:Faithfulfantasy


text:
User talk:NickyJ101

Bomb left outside police station in Northern Ireland
I made changes, are they acceptable. Mrchris (talk) 18:02, 18 June 2010 (UTC)
 * I added 2 quotes, is there anything else that is needed in the article? Mrchris (talk) 18:26, 18 June 2010 (UTC)
 * It could take some time, it can be frustrating but nice article i think Mrchris (talk) 18:42, 18 June 2010 (UTC)

World Cup's logo
Hi. Just to let you know that you can't use the World Cup's logo on your userpage. The use of non-free images outside of the main article namespace does not constitute fair use, and is not permitted. See also Fair use. --Diego Grez return fire 21:57, 18 June 2010 (UTC)
 * Right, OK will remove. Guessing it is still OK to use it in the intended linking article? NickyJ101 (talk) 21:58, 18 June 2010 (UTC)
 * Yes, yes it is. Please read the link I gave you. Feel free to ask on my talk page if you want too. --Diego Grez return fire 22:01, 18 June 2010 (UTC)

Requested correction
FYI Talk:Getty taps into Flickr snappers --InfantGorilla (talk) 07:49, 14 July 2010 (UTC)

Vettel takes pole for the Italian Grand Prix
May I make a minor recommendation re: this article. Consider looking carefully at your wording.....I'd bet if I were an Italian who loved F-1 racing and who also spoke English, this would make some sense to me....but you're using a' lot of "inside" lingo here -- that won't bode well for your review. Bddpaux (talk) 20:00, 10 September 2011 (UTC)
 * ....and re: "....takes win in Italian Grand Prix".....much better!! Much, much, much better....for a general, international audience.! Not entirely certain that it's even ready yet, but still....much better! --Bddpaux (talk) 03:05, 13 September 2011 (UTC)

Wow!!
...and while I'm at it....by my count, you've had 4 articles published, which is NOTHING to be ashamed of.....so, you deserve at least this! Show it off proudly! --Bddpaux (talk) 03:10, 13 September 2011 (UTC)

title: User talk:NickyJ101


text: User talk:Tourismgeek

title: User talk:Tourismgeek


text: User talk:Razrulhamidi

title: User talk:Razrulhamidi


text:
User talk:Busayo~enwikinews

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Busayo. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Busayo~enwikinews that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:12, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 06:29, 21 April 2015 (UTC)

title: User talk:Busayo~enwikinews


text: Talk:Ronnie Lee Gardner executed by Utah firing squad


text: User talk:Hagardeverschrikkelijke

title: User talk:Hagardeverschrikkelijke


text: User talk:Haris sonija

title: User talk:Haris sonija


text: User talk:Mccontrol

title: User talk:Mccontrol


text:
Car bomb attack in Iraqi town, at least two dead and 45 injured

June 19, 2010 According to a police source, at several people have been killed and a further 45 wounded after a car bomb went off in the Iraqi town of, located about 170 (105 ) north of. Conflicting media reports put the number of dead between two and five.

The bomb reportedly was in a parked vehicle near the residence of Niazi Mohammed, a provincial council official, and damaged many homes upon detonation. Police official Colonel Hussein al-Bayati commented that women and children were among the casualties.

al-Bayati added that the home of Turkmen councillor Niazar Nomaroglu was severely damaged as well, although it wasn't immediately clear whether Nomaroglu had been killed.


text:
User talk:Toyboy~enwikinews

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Toyboy. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Toyboy~enwikinews that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:22, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 06:39, 21 April 2015 (UTC)

title: User talk:Toyboy~enwikinews


text:
Bomb left outside police station in Northern Ireland

June 20, 2010

An explosive device was left inside a van parked outside a local police station in the small village of, in Northern Ireland. Army experts carried out a controlled explosion and have been examining the vehicle since. The van was left at about 10:00pm local time on Thursday night.

Police from the area have confirmed that around 350 residents in the area were evacuated and spent the night in three community halls. Since the report Aughnacloy is partially open and the is accessible, although there is little access into Aughnacloy itself.

The alert was raised during a telephone call to a newspaper office in. The caller used a recognised codeword and informed the newspaper the bomb will be detonated in an hour, which triggered an automatic response from police officers. councillor Sammy Brush said the evacuation seemed "fairly well organised" and there was "no panic", but it had to be completed within an hour to ensure the bomb could be safely disarmed and removed.

The bomb is thought to have been left by, which have been responsible for other similar attacks on official buildings this year. The bomb was left in an unmarked white Ford Transit van, which witnesses reported had the engine left running. The detonation device was believed to have been triggered, but the 300lb worth of explosives had failed to detonate. Brain Kee, the Aughnacloy Superintendent said, "If it had detonated it would have caused widespread devastation in the village and it's very likely that lives would have been lost."

, MLA for Fermanagh and South Tyrone, described the event as "deeply distressing." He went on to say that "this was an apparently large and viable device, which was planted with just an hour's warning, is deeply saddening for those who are committed to a peaceful future" and that such incidents were "becoming a familiar feature of life in Northern Ireland once again". , MP for, said those responsible for this act should "seriously reflect on what they are doing" and "[t]heir actions are no part of a campaign to bring about Irish unity and they have little or no popular support".

A car, thought to have been used for the get-away, has been found burnt out just over the border in the. Mr Kee and the Irish Minister for Foreign Affairs Micheál Martin have asked for any witnesses to contact the or the PSNI immediately.


text:
Russia's main airport faces high danger from dump birds

June 19, 2010 It has been unveiled that aircraft operating at or near a major Russian airport, the, have for about four years been at high risk of bird strikes because of a high number of birds nesting nearby on a large, illegal. Prominent Russian social activist Alexey Navalny, whose anti-corruption campaigns are nowadays largely discussed on and general press, on Friday published a  post with the details on the case.

Navalny, among other things, references the recent writings in the LiveJournal blog of the airport's Director General Mikhail Vasilenko, who has publicly expressed concerns about the birds near the airport. He says that, since the landfill came into existence, there have been 141 instances of planes hitting birds while flying near the airport and 21 instances at the airfield during takeoff and landing operations. Bird strikes are a common problem in aviation that can lead to equipment damage and human casualties. It has been reported that, for a long time, airport administration and groups of local citizens concerned with the landfill have been appealing to different and Russian Federation authorities to address the problem, but almost nothing has been done to close the landfill due to obstacles in local governing and commerical systems. It has been emphasized that the existence of the landfill in question is not officially permitted, and as such, the landfill is operating illegally.

As reported by Navalny, the only thing state authorities could recently accomplish, was a temporary suspension of trash transportation during May 7–12, when many world leaders came to Moscow through Sheremetyevo—historically the state's main civil airport—to celebrate Russia's 65th. That was made possible only with the interference of, the state service which protects top Russian officials.


text: User talk:1427mackryan

title: User talk:1427mackryan


text: User talk:Ve.search

title: User talk:Ve.search


text: User talk:Suraj rg

title: User talk:Suraj rg


text: User talk:Ninjafusion

title: User talk:Ninjafusion


text: User talk:Ha em xinh

title: User talk:Ha em xinh


text: User talk:Oscar.gessang

title: User talk:Oscar.gessang


text: User talk:Armin21

title: User talk:Armin21


text: User talk:Roosydinharis

title: User talk:Roosydinharis


text:
User talk:Shameem~enwikinews

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Shameem. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Shameem~enwikinews that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:29, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 06:36, 21 April 2015 (UTC)

title: User talk:Shameem~enwikinews


text:
Comments:Russia's main airport faces high danger from dump birds

Comments from feedback form - "=) Those Crazy Russians"
=) Those Crazy Russians —H.R.H Sovereign King Bradley The Great, Autocrat of All Australia talk  09:41, 21 June 2010 (UTC)

Comments from feedback form - "good job,"
good job, —95.25.126.143 (talk) 17:05, 21 June 2010 (UTC)


text: User talk:And v

title: User talk:And v


text: User talk:GUSousa

title: User talk:GUSousa


text: User talk:ROSHNI YOUNG CIRCLE

title: User talk:ROSHNI YOUNG CIRCLE


text: User talk:Prm.moon

title: User talk:Prm.moon