:User:Writ Keeper/Scripts/peerReviewCloser.js

function closePeerReview()

{

mw.loader.using("mediawiki.api").done( function ()

{

$("#ca-closepeer>a").text("Closing...");

$("#ca-closepeer").off("click");

var talkPage = $("a:contains('Article talk')").attr("href");

var talkPageName = "";

if(talkPage != null)

{

talkPage = talkPage.match(/\/wiki\/(\w+:.+)/);

if(talkPage != null)

{

talkPageName = talkPage[1];

}

}

var api = new mw.Api();

api.edit(mw.config.get("wgPageName"), function(revision)

{

var regexResult = revision.content.match(/\{\{ *[pP]eer review page *\| *topic *= *\w+ *\}\}/);

if(regexResult != null)

{

return {

text: revision.content.replace(regexResult[0], "{{Closed peer review page}}"),

summary: "Closing peer review due to inactivity (via peerReviewCloser.js)"

};

}

else

{

mw.notify( 'Error updating the Peer Review page; article talk page might also require cleanup.', { title: 'Peer review closing error' } );

$("#ca-closepeer>a").text("error!");

return null;

}

}).done(function()

{

api.edit(talkPageName, function(revision)

{

var regexResult = revision.content.match(/\{\{ *[pP]eer review *(\| *archive *= *\d+) *\}\}/);

if(regexResult != null && typeof regexResult[1] != "undefined")

{

return {

text: revision.content.replace(regexResult[0], "{{subst:Close peer review" + regexResult[1] + "}}"),

summary: "Closing peer review due to inactivity (via peerReviewCloser.js)"

};

}

else

{

if(typeof window.sessionStorage != "undefined")

{

window.sessionStorage.setItem("peerReviewCloserError","talkPageError");

location.reload();

return null;

}

else

{

mw.notify( 'Peer review page updated, but error updating the article talk page; it may require manual intervention.', { title: 'Peer review closing error' } );

$("#ca-closepeer>a").text("error!");

return null;

}

}

})

.done(function()

{

location.reload();

});

});

});

}

$(document).ready(function()

{

if(typeof window.sessionStorage != "undefined")

{

if(window.sessionStorage.getItem("peerReviewCloserError") == "talkPageError")

{

mw.notify( 'Peer review page updated, but error updating the article talk page; it may require manual intervention.', { title: 'Peer review closing error' } );

window.sessionStorage.removeItem("peerReviewCloserError");

}

}

if(mw.config.get("wgCategories",[]).indexOf("Current peer reviews") >= 0)

{

mw.loader.using("mediawiki.util").done( function ()

{

mw.util.addPortletLink('p-cactions', '#', "Close peer review", "ca-closepeer", "close this peer review");

$("#ca-closepeer").click( function(event)

{

event.preventDefault();

mw.loader.load( [ 'mediawiki.api.edit' ] ); //start loading, while the user is in the prompt

return closePeerReview();

});

});

}

});