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 [[User:Writ Keeper/Scripts/peerReviewCloser|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 [[User:Writ Keeper/Scripts/peerReviewCloser|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();
});
});
}
});