User:Uziel302/typo.js

//

var p_n = mw.config.get('wgPageName');

var pn = p_n.replace(/_/, ' ');

if ( p_n.match(/^Wikipedia:Correct_typos_in_one_click$/) || p_n.match(/^Wikipedia:Correct_typos_in_one_click\/[0-9]+$/) ) {

$(function(){

function reloadNotify(msg) {

mw.notify(msg).done(function(){ window.location.reload(); });

}

function removeSection(section, basetimestamp, starttimestamp, summ) {

var api = new mw.Api(), pagename = this.curPage;

api.postWithToken('csrf', {

action: 'edit',

title: pn,

summary: summ,

minor: 1,

basetimestamp: basetimestamp,

starttimestamp: starttimestamp,

text: '',

section: section,

watchlist: 'nochange'

}).done(function(d) {

if (d && d.edit && d.edit.result == 'Success') {

mw.notify('Removed');

}

});

}

function removeSectionAfterCorrection(section, basetimestamp, starttimestamp, summ) {

var api = new mw.Api(), pagename = this.curPage;

api.postWithToken('csrf', {

action: 'edit',

title: pn,

summary: summ,

minor: 1,

basetimestamp: basetimestamp,

starttimestamp: starttimestamp,

text: '',

section: section,

watchlist: 'nochange'

}).done(function(d) {

if (d && d.edit && d.edit.result == 'Success') {

}

});

}

function archiveToTalk(articleName, sectionTitle, content) {

var talkPage = new mw.Title(articleName).getTalkPage(),

newContent = content.replace(/== .+? ==\n+/, '');

return new mw.Api().post({action: 'edit', minor: 1, title: talkPage.getPrefixedText(), summary:'removed', token: mw.user.tokens.get('csrfToken'), section: 'new', sectiontitle: sectionTitle, text: newContent+' (from Wikipedia:Correct typos in one click)\n'}).then(function(d){ mw.notify($('', {href: talkPage.getUrl(), target: '_blank'}).text('Successfully archived')); });

}

function saveChange1(articleName, content,suspect,correction) {

return new mw.Api().post({

action: 'edit',

minor: 1,

title: articleName,

summary: suspect+'->'+correction+' - Correct typos in one click',

token: mw.user.tokens.get('csrfToken'),

text: content,

watchlist: 'nochange'

}).done(function(d){

mw.notify($('', {href: 'https://en.wikipedia.org/w/index.php?title='+articleName+'&diff=curr&oldid=prev', target: '_blank'}).text('Success! Click to view the edit'));

});

}

function saveChange(e) {

var articleName = $(this).parents('h2').find('.mw-headline').text(),

sectionNum = $(this).parent().find('a').attr('href').match(/section=([0-9]+)/)[1],

api = new mw.Api();

api.get( {action:'query',prop:'revisions',titles:mw.config.get('wgPageName'), rvprop:'content|timestamp',rvsection:sectionNum, curtimestamp: 1}).done(function(data){

for(var rv in data.query.pages)

{

var sectionText = data.query.pages[rv].revisions[0]['*'],

basetimestamp = data.query.pages[rv].revisions[0].timestamp;

if ((sectionText.indexOf('== '+articleName+' ==') !== 0) && (sectionText.indexOf('== :'+articleName+' ==') !== 0)) {

reloadNotify('passage unavailable');

} else {

if (sectionText.indexOf('{{#lst:')!=-1) {

removeSection(sectionNum, basetimestamp ,data.curtimestamp, '/* '+ articleName +' */ ');

} else {

var articleText='undefined',newArticleText='undefined',suspect='undefined',correction='wow',oldcontext='wwowo',newcontext='undefined';

suspect=sectionText.replace(/.*\n.*?(.*)?\-><.*\n.*\n.*/, "$1");

correction=sectionText.replace(/.*\n.*?>

oldcontext=sectionText.replace(/.*\n.*\n.*? (.*) .*\n.*/, "$1");

console.log(oldcontext);

newcontext=oldcontext.replace(new RegExp(mw.util.escapeRegExp(suspect) + "$"),correction);

if(newcontext===oldcontext){alert('word not found in context line');return;}

var api = new mw.Api();

api.get({action: 'query',prop:'revisions',titles: articleName,rvprop:'content',curtimestamp:1

}).done(function(d) {for(var rv in d.query.pages)

{articleText=d.query.pages[rv].revisions[0]["*"];

var startBreak = oldcontext.match(/^[a-z]/i) ? "\\b" : "";

newArticleText=articleText.replace(new RegExp(startBreak + mw.util.escapeRegExp(oldcontext) + "\\b"),newcontext);

if(newArticleText===articleText)

{mw.notify('Could not find suspect word in article');

removeSection(sectionNum, basetimestamp ,data.curtimestamp,suspect+' was not found in '+articleName+'');

return;}

saveChange1(articleName,newArticleText,suspect,correction)

if(newArticleText!=articleText)removeSectionAfterCorrection(sectionNum, basetimestamp ,data.curtimestamp,suspect+'->'+correction+' fixed!');

if(newArticleText===articleText)removeSectionAfterCorrection(sectionNum, basetimestamp ,data.curtimestamp,suspect+'->'+correction+' was not fixed!');

}})

}

}

}

});

e.preventDefault();

}

function saveChange2(e) {

var articleName = $(this).parents('h2').find('.mw-headline').text(),

sectionNum = $(this).parent().find('a').attr('href').match(/section=([0-9]+)/)[1],

api = new mw.Api();

api.get( {action:'query',prop:'revisions',titles:mw.config.get('wgPageName'), rvprop:'content|timestamp',rvsection:sectionNum, curtimestamp: 1}).done(function(data){

for(var rv in data.query.pages){

var sectionText = data.query.pages[rv].revisions[0]['*'],

basetimestamp = data.query.pages[rv].revisions[0].timestamp;

if ((sectionText.indexOf('== '+articleName+' ==') !== 0) && (sectionText.indexOf('== :'+articleName+' ==') !== 0)) {

reloadNotify('passage unavailable');

} else {

if (sectionText.indexOf('{{#lst:')!=-1) {

removeSection(sectionNum, basetimestamp ,data.curtimestamp, '/* '+ articleName +' */ ');

} else {

var articleText='undefined',newArticleText='undefined',suspect='undefined',correction='wow',approvedCorrection='wow',oldcontext='wwowo',newcontext='undefined';

suspect=sectionText.replace(/.*\n.*?(.*)?\-><.*\n.*\n.*/, "$1");

correction=sectionText.replace(/.*\n.*?>

approvedCorrection=prompt(suspect+' will be replaced by: ',suspect);

if(approvedCorrection===null||approvedCorrection===suspect)return;

oldcontext=sectionText.replace(/.*\n.*\n.*? (.*) .*\n.*/, "$1");

newcontext=oldcontext.replace(new RegExp(mw.util.escapeRegExp(suspect) + "$"),approvedCorrection);

if(newcontext===oldcontext){alert('word not found in context line');return;}

var api = new mw.Api();

api.get({action: 'query',prop:'revisions',titles: articleName,rvprop:'content',curtimestamp:1

}).done(function(d) {for(var rv in d.query.pages)

{articleText=d.query.pages[rv].revisions[0]["*"];

var startBreak = oldcontext.match(/^[a-z]/i) ? "\\b" : "";

newArticleText=articleText.replace(new RegExp(startBreak + mw.util.escapeRegExp(oldcontext) + "\\b"),newcontext);

if(newArticleText===articleText){mw.notify('Could not find suspect word in article');

removeSection(sectionNum, basetimestamp ,data.curtimestamp,suspect+' was not fixed');

return;}

saveChange1(articleName,newArticleText,suspect,approvedCorrection)

if(newArticleText!=articleText)removeSectionAfterCorrection(sectionNum, basetimestamp ,data.curtimestamp,suspect+'->'+approvedCorrection+' fixed!');

if(newArticleText===articleText)removeSectionAfterCorrection(sectionNum, basetimestamp ,data.curtimestamp,suspect+'->'+approvedCorrection+' was not fixed!');

}})

}

}

}

});

e.preventDefault();

}

function archiveReport(e) {

var articleName = $(this).parents('h2').find('.mw-headline').text().replace(' (page unavailable)', ''),

sectionNum = $(this).parent().find('a').attr('href').match(/section=([0-9]+)/)[1],

api = new mw.Api();

api.get( {action:'query',prop:'revisions',titles:mw.config.get('wgPageName'), rvprop:'content|timestamp',rvsection:sectionNum, curtimestamp: 1}).done(function(data){

for(var rv in data.query.pages)

{

var sectionText = data.query.pages[rv].revisions[0]['*'],

basetimestamp = data.query.pages[rv].revisions[0].timestamp;

if ((sectionText.indexOf('== '+articleName+' ==') !== 0) && (sectionText.indexOf('== :'+articleName+' ==') !== 0)) {

reloadNotify('passage unavailable');

} else {

if (sectionText.indexOf('{{#lst:')!=-1) {

removeSection(sectionNum, basetimestamp ,data.curtimestamp, '/* '+ articleName +' */');

} else {

var articleText='undefined',newArticleText='undefined',suspect='undefined',correction='wow',oldcontext='undefined',newcontext='undefined';

suspect=sectionText.replace(/.*\n.*?(.*)?\-><.*\n.*\n.*/, "$1");

correction=sectionText.replace(/.*\n.*?>

oldcontext=sectionText.replace(/.*\n.*\n.*? (.*) .*\n.*/, "$1");

var d = new Date();

var month = new Array();

month[0] = "January";

month[1] = "February";

month[2] = "March";

month[3] = "April";

month[4] = "May";

month[5] = "June";

month[6] = "July";

month[7] = "August";

month[8] = "September";

month[9] = "October";

month[10] = "November";

month[11] = "December";

var mon = month[d.getMonth()];

var yyyy = d.getFullYear();

newcontext=oldcontext.replace(new RegExp(mw.util.escapeRegExp(suspect) + "$"),suspect+'{{typo help inline|reason=similar to '+correction+'|date='+mon+' '+yyyy+'}}');

if(newcontext===oldcontext){alert('word not found in context line');return;}

var api = new mw.Api();

api.get({action: 'query',prop:'revisions',titles: articleName,rvprop:'content',curtimestamp:1

}).done(function(d) {for(var rv in d.query.pages)

{articleText=d.query.pages[rv].revisions[0]["*"];

var startBreak = oldcontext.match(/^[a-z]/i) ? "\\b" : "";

newArticleText=articleText.replace(new RegExp(startBreak + mw.util.escapeRegExp(oldcontext) + "\\b(?!\s*\{\{typo)"),newcontext);

if(newArticleText===articleText){mw.notify('Could not find suspect word in article');

removeSection(sectionNum, basetimestamp ,data.curtimestamp,suspect+' was not fixed');

return;}

var templateadded=' added template';

saveChange1(articleName,newArticleText,suspect,templateadded)

if(newArticleText!=articleText)removeSectionAfterCorrection(sectionNum, basetimestamp ,data.curtimestamp,suspect+' - added template');

}})

}

}

}

});

e.preventDefault();

}

function removeReport(e) {

var articleName = $(this).parents('h2').find('.mw-headline').text().replace(' (Page unavailable)', ''),

sectionNum = $(this).parent().find('a').attr('href').match(/section=([0-9]+)/)[1],

api = new mw.Api();

api.get( {action:'query',prop:'revisions',titles:mw.config.get('wgPageName'), rvprop:'content|timestamp',rvsection:sectionNum, curtimestamp: 1}).done(function(data){

for(var rv in data.query.pages)

{

var sectionText = data.query.pages[rv].revisions[0]['*'],

basetimestamp = data.query.pages[rv].revisions[0].timestamp;

if ((sectionText.indexOf('== '+articleName+' ==') !== 0) && (sectionText.indexOf('== :'+articleName+' ==') !== 0)) {

reloadNotify('Paragraph is missing');

} else {

var suspect=sectionText.replace(/.*\n.*?(.*)?\-><.*\n.*\n.*/, "$1");

removeSection(sectionNum, basetimestamp ,data.curtimestamp, suspect+' in '+articleName+' was dismissed');

}

}

});

e.preventDefault();

}

if ( mw.config.get( 'skin' ) === 'minerva' )

{

$('h2').each(function()

{

var saveChangeBtn = $('Replace').attr({href:'#'}).css({'font-size':'large', 'position':'absolute', 'left':'0%', 'bottom':'0%'}).click(saveChange);

saveChangeBtn2 = $('Type').attr({href:'#'}).css({'font-size':'large', 'position':'absolute', 'left':'25%', 'bottom':'0%'}).click(saveChange2);

archive = $('template').attr({href:'#'}).css({'font-size':'large', 'position':'absolute', 'left':'50%', 'bottom':'0%'}).click(archiveReport),

removeReportBtn = $('Remove').attr({href:'#'}).css({'font-size':'large', 'position':'absolute', 'left':'75%', 'bottom':'0%'}).click(removeReport);

$(this).find('.mw-headline').append(['
','
']);

$(this).find('.mw-editsection').append(['
',saveChangeBtn,removeReportBtn,saveChangeBtn2,archive]);

});

}

else

{

$('h2').each(function()

{

var saveChangeBtn = $('Replace').attr({href:'#'}).css({'font-size':'large', 'margin-right':'20px'}).click(saveChange);

saveChangeBtn2 = $('Type').attr({href:'#'}).css({'font-size':'large', 'margin-right':'20px'}).click(saveChange2);

archive = $('check template').attr({href:'#'}).css({'font-size':'large', 'margin-right':'20px'}).click(archiveReport),

removeReportBtn = $('Remove').attr({href:'#'}).css({'font-size':'large', 'margin-right':'20px'}).click(removeReport);

$(this).find('.mw-editsection').append(['
',saveChangeBtn,removeReportBtn,saveChangeBtn2,archive]);

});

}

});

}

//