User:Public Juju/test script.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
Documentation for this user script can be added at User:Public Juju/test script. |
// <nowiki>
// This is a testing version of [[User:Jujutacular/closeFPC.js]] *** DO NOT USE THIS VERSION ***
// This code is largely based on [[User:Mr.Z-man/closeAFD]]
//if (wgPageName.indexOf('Wikipedia:Featured_picture_candidates/') != -1) {
var closeFPC_PageName = wgPageName.replace(/_/g, ' ');
var closeFPC_AJAXnumber = 0;
var isDelist = closeFPC_PageName.replace(/^.*\b(delist)\b.*$/,"$1");
function closeFPC_init() {
if (!wfSupportsAjax()) {
jsMsg('<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") {
jsMsg('<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: </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>';
jsMsg(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 = '[['+closeFPC_PageName+']]';
var today = new Date();
var monthnames = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var month = monthnames[today.getUTCMonth()];
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+" ~~"+"~~";
}
jsMsg('<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="/wiki/'+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|") {
jsMsg('<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 == '') {
jsMsg('<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 == '') {
// jsMsg('<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 == '') {
jsMsg('<span style="color:red; font-size:120%">A file name has not been specified. A file name is required for promotion.</span>');
return;
}
if (nom_name == '') {
jsMsg('<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 == '') {
jsMsg('<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:") {
jsMsg('<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:") {
jsMsg('<span style="color:red; font-size:120%">Error: username entered contains "User:".</span>');
return;
}
// 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 [[:File:"+promoted_file+"]]");
}
if (closetype == "nopromote") {
}
// Moves transclusion to 'recently closed' section of WP:FPC
var closeFPC_FPC = "User:Public Juju/FPC"; //Fix for final
var FPClist = closeFPC_getPageText(closeFPC_FPC);
FPClist = FPClist.replace('{{' + closeFPC_PageName + '}}\n', '');
FPClist = FPClist.replace(/<!-- ↓ Under this line, please \(newest at the top\) ↓ -->/,"<!-- ↓ Under this line, please (newest at the top) ↓ -->\n{{"+closeFPC_PageName+"}}");
closeFPC_editPage(closeFPC_FPC, FPClist, token, "Closed [["+closeFPC_PageName+"]]");
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="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a></li>';
var req = sajax_init_object();
req.open("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['query']['pageids'][0];
if (pageid == "-1") {
document.getElementById('closeFPC_get'+escape(title)).innerHTML = '<a class="new" href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a> does not exist';
delete req;
return '';
}
pagetext = response['query']['pages'][pageid]['revisions'][0]['*'];
delete req;
document.getElementById('closeFPC_get'+escape(title)).innerHTML = 'Got <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a>';
return pagetext;
}
var GOtitle = "Wikipedia:Goings on";
var FPtitle = "Wikipedia:Featured pictures";
function closeFPC_informManual() {
document.getElementById('closeFPC_status').innerHTML += '<li id="closeFPC_manual">*** You must manually make edits to <a href="/wiki/'+encodeURI(GOtitle)+'" GOtitle="'+GOtitle+'">'+GOtitle+'</a> and the proper sub-page of <a href="/wiki/'+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", 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['query']['pageids'][0];
token = response['query']['pages'][pageid]['edittoken'];
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="/wiki/'+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 = 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['edit']['result'] == "Success") {
document.getElementById('closeFPC_edit'+escape(title)).innerHTML = 'Saved <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a>';
} else {
document.getElementById('closeFPC_edit'+escape(title)).innerHTML = '<div style="color:red"><b>Edit failed on <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a></b></div>. Error info:' +response['error']['code'] + ' : ' + response['error']['info'];
}
}
catch(err) {
document.getElementById('closeFPC_edit'+escape(title)).innerHTML = '<div style="color:red"><b>Edit failed on <a href="/wiki/'+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");
}
addOnloadHook(closeFPC_addLink);
//}
// </nowiki>