//<nowiki>
// See documentation at ]
// This code is largely based on ]
importScript('User:Timotheus Canens/displaymessage.js');
if (mw.config.get('wgPageName').indexOf('Wikipedia:Featured_picture_candidates/') != -1) {
var closeFPC_PageName = mw.config.get('wgPageName').replace(/_/g, ' ');
var closeFPC_AJAXnumber = 0;
var isDelist = closeFPC_PageName.replace(/^.*\b(delist)\b.*$/,"$1");
function closeFPC_init() {
if (!wfSupportsAjax()) {
displayMessage('<span style="color:red; font-size:120%">Your browser does not seem to support AJAX, which is required for the closeFPC script.</span>');
return;
}
if (isDelist == "delist") {
displayMessage('<span style="color:red; font-size:120%">Delist nominations are not supported by this script.</span>');
return;
}
form = '<div id="closeFPC_initialform">'+
'<h3>Closing '+closeFPC_PageName+'</h3>'+
'<h4>For promotion:</h4>'+
'<label for="closeFPC_nominator">Nominator (without "User:"): </label><input type="text" id="closeFPC_nominator" name="closeFPC_nominator" /><br>'+
'<label for="closeFPC_nominator2">Nominator 2 (if applicable): </label><input type="text" id="closeFPC_nominator2" name="closeFPC_nominator2" /><br>'+
//'<label for="closeFPC_creator_nonwiki">Creator (if non-Wikipedian): </label><input type="text" id="closeFPC_creator_nonwiki" name="closeFPC_creator_nonwiki" /><br>'+
'<label for="closeFPC_creator_wiki">Creator (if Wikipedian): </label><input type="text" id="closeFPC_creator_wiki" name="closeFPC_creator_wiki" /><br>'+
'<label for="closeFPC_editor">Image editor/Restorer: </label><input type="text" id="closeFPC_editor" name="closeFPC_editor" /><br>'+
'<label for="closeFPC_editor2">Image editor/Restorer 2: </label><input type="text" id="closeFPC_editor2" name="closeFPC_editor2" /><br>'+
'<label for="closeFPC_promoted_file">Promoted file (without "File:"): </label><input type="text" id="closeFPC_promoted_file" name="closeFPC_promoted_file" /><br>'+
'<label for="closeFPC_name">Name of nomination: </label><input type="text" id="closeFPC_name" name="closeFPC_name" /><br>'+
'<label for="closeFPC_cat">Main category: </label><input type="text" id="closeFPC_cat" name="closeFPC_cat" /><br><br>'+
//'<label for="closeFPC_subcat">Subcategory: </label><input type="text" id="closeFPC_subcat" name="closeFPC_subcat" /><br><br>'+
'<label for="closeFPC_reason">Additional closing rationale (optional): </label><input type="text" id="closeFPC_reason" name="closeFPC_reason" /><br>'+
'<input type="button" id="closeFPC_promote_button" name="closeFPC_promote_button" value="Promote" onclick="closeFPC_close(\'promote\')" />'+
'<input type="button" id="closeFPC_nopromote_button" name="closeFPC_nopromote_button" value="No Promote" onclick="closeFPC_close(\'nopromote\')" /></div>';
displayMessage(form);
}
function closeFPC_close(close) {
closetype = close;
var nominator = document.getElementById('closeFPC_nominator').value;
var nominator2 = document.getElementById('closeFPC_nominator2').value;
//var creator_nonwiki = document.getElementById('closeFPC_creator_nonwiki').value;
var creator_wiki = document.getElementById('closeFPC_creator_wiki').value;
var editor = document.getElementById('closeFPC_editor').value;
var editor2 = document.getElementById('closeFPC_editor2').value;
var promoted_file = document.getElementById('closeFPC_promoted_file').value;
var nom_name = document.getElementById('closeFPC_name').value;
var cat = document.getElementById('closeFPC_cat').value;
//var subcat = document.getElementById('closeFPC_subcat').value;
var reason = document.getElementById('closeFPC_reason').value;
var FPClink = ']';
var today = new Date();
var monthnames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var month = monthnames;
var day = today.getUTCDate();
var year = today.getUTCFullYear();
var abbr_month;
if (month == "January") {
abbr_month = "Jan";
}
else if (month == "February") {
abbr_month = "Feb";
}
else if (month == "March") {
abbr_month = "Mar";
}
else if (month == "April") {
abbr_month = "Apr";
}
else if (month == "May") {
abbr_month = "May";
}
else if (month == "June") {
abbr_month = "June";
}
else if (month == "July") {
abbr_month = "July";
}
else if (month == "August") {
abbr_month = "Aug";
}
else if (month == "September") {
abbr_month = "Sep";
}
else if (month == "October") {
abbr_month = "Oct";
}
else if (month == "November") {
abbr_month = "Nov";
}
else if (month == "December") {
abbr_month = "Dec";
}
var PageName_actual = closeFPC_PageName.replace(/Wikipedia:Featured picture candidates\//,'');
if (reason != '') {
reason = "\n*"+reason+" ~~"+"~~";
}
displayMessage('<ul id="closeFPC_status"></ul><ul id="closeFPC_finish"></ul>');
document.getElementById('closeFPC_finish').innerHTML += '<span id="closeFPC_finished_wrapper"><span id="closeFPC_finished_main" style="display:none"><li id="closeFPC_done"><b>Done (<a href="https://wikifreehand.com/en/'+encodeURI(closeFPC_PageName)+'?action=purge" title="'+closeFPC_PageName+'">Reload page</a>)</b></li></span></span>';
var FPCpage = closeFPC_getPageText(closeFPC_PageName);
var isClosed = FPCpage.match(/{{FPCresult\|/);
if (isClosed == "{{FPCresult|") {
displayMessage('<span style="color:red; font-size:120%">It seems that this nomination has already been closed.</span>');
return;
}
token = closeFPC_getToken(true);
if (closetype == "promote") {
// Checks for missing information
if (nominator == '') {
displayMessage('<span style="color:red; font-size:120%">A nominator has not been specified. A nominator is required for promotion.</span>');
return;
}
//if (creator_nonwiki == '' && creator_wiki == '') {
// displayMessage('<span style="color:red; font-size:120%">A creator has not been specified. A creator is required for promotion. Use "Unknown" under non-Wikipedian if creator is unknown.</span>');
// return;
//}
if (promoted_file == '') {
displayMessage('<span style="color:red; font-size:120%">A file name has not been specified. A file name is required for promotion.</span>');
return;
}
var goodFile = promoted_file.match(/\./);
if (!(goodFile == '.')) {
displayMessage('<span style="color:red; font-size:120%">Specified file name is formatted incorrectly.</span>');
return;
}
if (nom_name == '') {
displayMessage('<span style="color:red; font-size:120%">A name for the nomination has not been specified. A name is required for promotion.</span>');
return;
}
if (cat == '') {
displayMessage('<span style="color:red; font-size:120%">A category for the nomination has not been specified. A category is required for promotion.</span>');
return;
}
var promoted_file_error = promoted_file.match(/File:/);
if (promoted_file_error == "File:") {
displayMessage('<span style="color:red; font-size:120%">Error: filename entered contains "File:".</span>');
return;
}
var username_error1 = nominator.match(/User:/);
var username_error2 = nominator2.match(/User:/);
var username_error3 = creator_wiki.match(/User:/);
var username_error4 = editor.match(/User:/);
var username_error5 = editor2.match(/User:/);
if (username_error1 == "User:" || username_error2 == "User:" || username_error3 == "User:" || username_error4 == "User:" || username_error5 == "User:") {
displayMessage('<span style="color:red; font-size:120%">Error: username entered contains "User:".</span>');
return;
}
// Adds image, and removes older image at WP:FP
var FP = "Wikipedia:Featured pictures";
var FPpage = closeFPC_getPageText(FP);
if (cat == "Animals") {
FPpage = FPpage.replace(/<!-- start of Animals -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Animals -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Artwork") {
FPpage = FPpage.replace(/<!-- start of Artwork -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Artwork -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Culture, entertainment, and lifestyle") {
FPpage = FPpage.replace(/<!-- start of Culture, entertainment, and lifestyle -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Culture, entertainment, and lifestyle -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Diagrams, drawings, and maps") {
FPpage = FPpage.replace(/<!-- start of Diagrams, drawings, and maps -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Diagrams, drawings, and maps -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Engineering and technology") {
FPpage = FPpage.replace(/<!-- start of Engineering and technology -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Engineering and technology -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Food and drink") {
FPpage = FPpage.replace(/<!-- start of Food and drink -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Food and drink -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Fungi") {
FPpage = FPpage.replace(/<!-- start of Fungi -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Fungi -->/,"<!-- end of "+cat+" -->");
} else if (cat == "History") {
FPpage = FPpage.replace(/<!-- start of History -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of History -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Natural phenomena") {
FPpage = FPpage.replace(/<!-- start of Natural phenomena -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Natural phenomena -->/,"<!-- end of "+cat+" -->");
} else if (cat == "People") {
FPpage = FPpage.replace(/<!-- start of People -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of People -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Photographic techniques, terms, and equipment") {
FPpage = FPpage.replace(/<!-- start of Photographic techniques, terms, and equipment -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Photographic techniques, terms, and equipment -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Places") {
FPpage = FPpage.replace(/<!-- start of Places -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Places -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Plants") {
FPpage = FPpage.replace(/<!-- start of Plants -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Plants -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Sciences") {
FPpage = FPpage.replace(/<!-- start of Sciences -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Sciences -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Space") {
FPpage = FPpage.replace(/<!-- start of Space -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Space -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Vehicles") {
FPpage = FPpage.replace(/<!-- start of Vehicles -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Vehicles -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Other lifeforms") {
FPpage = FPpage.replace(/<!-- start of Other lifeforms -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Other lifeforms -->/,"<!-- end of "+cat+" -->");
} else if (cat == "Other") {
FPpage = FPpage.replace(/<!-- start of Other -->/, "<!-- start of "+cat+" -->]\n|");
FPpage = FPpage.replace(/\n\|\+\|150px]]<!-- end of Other -->/,"<!-- end of "+cat+" -->");
} else {
displayMessage('<span style="color:red; font-size:120%">An invalid category has been specified.</span>');
return;
}
closeFPC_editPage(FP, FPpage, token, "Add ] to "+cat);
// Adds image to WP:GO
var GO = "Wikipedia:Goings-on";
var GOpage = closeFPC_getPageText(GO);
GOpage = GOpage.replace(/\n\n'''\]/,"\n* ] ("+day+" "+abbr_month+")\n\n''']");
closeFPC_editPage(GO, GOpage, token, "+] to pictures");
// Adds Featured Picture template to file description page
var promoted_file_page = "File:"+promoted_file;
var promoted_file_pageText = closeFPC_getPageText(promoted_file_page);
if (promoted_file_pageText == "undefined") {
promoted_file_pageText = "{{"+"FeaturedPicture|"+PageName_actual+"}}";
}
else {
promoted_file_pageText = "{{"+"FeaturedPicture|"+PageName_actual+"}}\n"+promoted_file_pageText;
}
closeFPC_editPage(promoted_file_page, promoted_file_pageText, token, "Featured picture, per "+FPClink);
// Closes nomination as promote
FPCpage = FPCpage.replace(/<!-- additional votes go above this line -->\n/, "<!-- additional votes go above this line -->\n{"+"{FPCresult|Promoted|File:"+promoted_file+"}} --~~"+"~~"+reason+"\n");
closeFPC_editPage(closeFPC_PageName, FPCpage, token, "Closed, promoted ]");
// Adds image to New featured content
var NFC = "Template:Announcements/New featured content";
var NFCpage = closeFPC_getPageText(NFC);
NFCpage = NFCpage.replace(/<!-- Pictures \(15, most recent first\) -->/,"<!-- Pictures (15, most recent first) -->\n* ]");
NFCpage = NFCpage.replace(/\n\* \+\|]+]] ?<!-- End of FPs -->/," <!-- End of FPs -->");
closeFPC_editPage(NFC, NFCpage, token, "+] to FPs");
// Adds image to FPC thumbs
var thumbs = "Wikipedia:Featured pictures thumbs";
var currentthumbs = closeFPC_getPageText(thumbs);
currentthumbs = currentthumbs.replace(/#REDIRECT \[\[/,'');
currentthumbs = currentthumbs.replace(/]]/,'');
var currentthumbs_page = closeFPC_getPageText(currentthumbs);
currentthumbs_page = currentthumbs_page.replace(/<gallery>/,"<gallery>\nFile:"+promoted_file+"|"+nom_name);
closeFPC_editPage(currentthumbs, currentthumbs_page, token, "+]");
// Notifies nominator of promotion
if (nominator != creator_wiki && nominator != editor && nominator != editor2) {
var nominator_talk = "User talk:"+nominator;
var nomtalkpage = closeFPC_getPageText(nominator_talk);
nomtalkpage = nomtalkpage + "\n\n==]==\n{"+"{subst:PromotedFPC|File:"+promoted_file+"}}";
closeFPC_editPage(nominator_talk, nomtalkpage, token, FPClink);
}
// Notifies nominator2 of promotion
if (nominator2 != '' && nominator2 != creator_wiki && nominator2 != editor && nominator2 != editor2) {
var nominator2_talk = "User talk:"+nominator2;
var nom2talkpage = closeFPC_getPageText(nominator2_talk);
nom2talkpage = nom2talkpage + "\n\n==]==\n{"+"{subst:PromotedFPC|File:"+promoted_file+"}}";
closeFPC_editPage(nominator2_talk, nom2talkpage, token, FPClink);
}
// Notifies creator of promotion
if (creator_wiki != '') {
var creator_talk = "User talk:"+creator_wiki;
var creatortalkpage = closeFPC_getPageText(creator_talk);
creatortalkpage = creatortalkpage + "\n\n==]==\n{"+"{subst:UploadedFPC|File:"+promoted_file+"}}";
closeFPC_editPage(creator_talk, creatortalkpage, token, FPClink);
}
// Notifies editor of promotion
if (editor != '') {
var editor_talk = "User talk:"+editor;
var editortalkpage = closeFPC_getPageText(editor_talk);
editortalkpage = editortalkpage + "\n\n==]==\n{"+"{subst:UploadedFPC|File:"+promoted_file+"}}";
closeFPC_editPage(editor_talk, editortalkpage, token, FPClink);
}
// Notifies editor2 of promotion
if (editor2 != '') {
var editor2_talk = "User talk:"+editor2;
var editor2talkpage = closeFPC_getPageText(editor2_talk);
editor2talkpage = editor2talkpage + "\n\n==]==\n{"+"{subst:UploadedFPC|File:"+promoted_file+"}}";
closeFPC_editPage(editor2_talk, editor2talkpage, token, FPClink);
}
closeFPC_informManual();
}
if (closetype == "nopromote") {
// Closes nomination as no promote
FPCpage = FPCpage.replace(/<!-- additional votes go above this line -->\n/, "<!-- additional votes go above this line -->\n{"+"{FPCresult|Not Promoted| }} --~~"+"~~"+reason+"\n");
closeFPC_editPage(closeFPC_PageName, FPCpage, token, "Closed, not promoted");
}
// Moves transclusion to 'recently closed' section of WP:FPC
var closeFPC_FPC = "Wikipedia:Featured picture candidates";
var FPClist = closeFPC_getPageText(closeFPC_FPC);
var PageName_underscore = PageName_actual.replace(/ /g,'_');
FPClist = FPClist.replace('{{' + closeFPC_PageName + '}}\n', '');
FPClist = FPClist.replace('{{' + mw.config.get('wgPageName') + '}}\n', '');
FPClist = FPClist.replace('{{Wikipedia:Featured picture candidates/' + PageName_underscore + '}}\n', '');
FPClist = FPClist.replace(/<!-- ↓ Under this line, please \(newest at the top\) ↓ -->/,"<!-- ↓ Under this line, please (newest at the top) ↓ -->\n{{"+closeFPC_PageName+"}}");
if (closetype == "promote") {
closeFPC_editPage(closeFPC_FPC, FPClist, token, "Closed ] (Promoted)");
}
if (closetype == "nopromote") {
closeFPC_editPage(closeFPC_FPC, FPClist, token, "Closed ] (Not promoted)");
}
// Archives nomination
var closeFPC_log = "Wikipedia:Featured picture candidates/"+month+"-"+year;
var FPClog = closeFPC_getPageText(closeFPC_log);
if (FPClog == "undefined") {
FPClog = "{"+"{FPCArchiveBar}}\n<!-- New entries at the bottom -->\n{"+"{"+closeFPC_PageName+"}}";
}
else {
FPClog = FPClog+"\n{"+"{"+closeFPC_PageName+"}}";
}
closeFPC_editPage(closeFPC_log, FPClog, token, "Archiving "+FPClink);
document.getElementById('closeFPC_finished_main').style.display = '';
}
function closeFPC_getPageText(title) {
document.getElementById('closeFPC_status').innerHTML += '<li id="closeFPC_get'+escape(title)+'">Getting <a href="https://wikifreehand.com/en/'+encodeURI(title)+'" title="'+title+'">'+title+'</a></li>';
var req = sajax_init_object();
req.open("GET", mw.config.get('wgScriptPath') + "/api.php?action=query&prop=revisions&rvprop=content&format=json&indexpageids=1&titles="+encodeURIComponent(title), false);
req.send(null);
var response = eval('(' + req.responseText + ')');
pageid = response;
if (pageid == "-1") {
document.getElementById('closeFPC_get'+escape(title)).innerHTML = '<a class="new" href="https://wikifreehand.com/en/'+encodeURI(title)+'" title="'+title+'">'+title+'</a> does not exist';
delete req;
return '';
}
pagetext = response;
delete req;
document.getElementById('closeFPC_get'+escape(title)).innerHTML = 'Got <a href="https://wikifreehand.com/en/'+encodeURI(title)+'" title="'+title+'">'+title+'</a>';
return pagetext;
}
var FPtitle = "Wikipedia:Featured pictures";
function closeFPC_informManual() {
document.getElementById('closeFPC_status').innerHTML += '<li id="closeFPC_manual">*** You must manually make edits to the proper sub-page of <a href="https://wikifreehand.com/en/'+encodeURI(FPtitle)+'" FPtitle="'+FPtitle+'">'+FPtitle+'</a> ***</li>';
}
function closeFPC_getToken(show) {
if (show) {
document.getElementById('closeFPC_status').innerHTML += '<li id="closeFPC_gettoken">Getting token</li>';
}
var req = sajax_init_object();
req.open("GET", mw.config.get('wgScriptPath') + "/api.php?action=query&prop=info&indexpageids=1&intoken=edit&format=json&titles="+encodeURIComponent(closeFPC_PageName), false);
req.send(null);
var response = eval('(' + req.responseText + ')');
pageid = response;
token = response;
delete req;
if (show) {
document.getElementById('closeFPC_gettoken').innerHTML = 'Got token';
}
return token;
}
function closeFPC_editPage(title, newtext, token, summary) {
document.getElementById('closeFPC_finished_wrapper').innerHTML = '<span id="closeFPC_AJAX_finished_'+closeFPC_AJAXnumber+'" style="display:none">' + document.getElementById('closeFPC_finished_wrapper').innerHTML + '</span>';
var func_id = closeFPC_AJAXnumber;
closeFPC_AJAXnumber++;
document.getElementById('closeFPC_status').innerHTML += '<li id="closeFPC_edit'+escape(title)+'">Editing <a href="https://wikifreehand.com/en/'+encodeURI(title)+'" title="'+title+'">'+title+'</a></li>';
var req = sajax_init_object();
var params = "action=edit&format=json&token="+encodeURIComponent(token)+"&title="+encodeURIComponent(title)+"&text="+encodeURIComponent(newtext)+"¬minor=1&summary="+encodeURIComponent(summary);
url = mw.config.get('wgScriptPath') + "/api.php";
req.open("POST", url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.setRequestHeader("Content-length", params.length);
req.setRequestHeader("Connection", "close");
req.onreadystatechange = function() {
if(req.readyState == 4 && req.status == 200) {
response = eval('(' + req.responseText + ')');
try {
if (response == "Success") {
document.getElementById('closeFPC_edit'+escape(title)).innerHTML = 'Saved <a href="https://wikifreehand.com/en/'+encodeURI(title)+'" title="'+title+'">'+title+'</a>';
} else {
document.getElementById('closeFPC_edit'+escape(title)).innerHTML = '<div style="color:red"><b>Edit failed on <a href="https://wikifreehand.com/en/'+encodeURI(title)+'" title="'+title+'">'+title+'</a></b></div>. Error info:' +response + ' : ' + response;
}
}
catch(err) {
document.getElementById('closeFPC_edit'+escape(title)).innerHTML = '<div style="color:red"><b>Edit failed on <a href="https://wikifreehand.com/en/'+encodeURI(title)+'" title="'+title+'">'+title+'</a></b></div>';
}
document.getElementById('closeFPC_AJAX_finished_'+func_id).style.display = '';
delete req;
}
}
req.send(params)
}
function closeFPC_addLink() {
mw.util.addPortletLink("p-cactions", "javascript:closeFPC_init()", "Close FPC", "ca-closeFPC", "Close FPC");
}
$(closeFPC_addLink);
}
//</nowiki>