User:RoryHC/vector.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. |
![]() | The accompanying .css page for this skin can be added at User:RoryHC/vector.css. |
importScript("User:PleaseStand/userinfo.js");
importScript('User:AzaToth/twinkle.js');
importScript('User:Ioeth/friendly.js');
importScript('User:Lupin/recent2.js');
importScript('User:Cameltrader/Advisor.js');
importScript('User:Ale_jrb/Scripts/csdhelper.js'); //[[User:Ale_jrb/Scripts]]
importScript('User:Ale_jrb/Scripts/igloo.js'); // [[User:Ale_jrb/Scripts/igloo]]
importScript('Wikipedia:AutoEd/complete.js');
//<nowiki>
topaz.statuschanger = new Object();
topaz.statuschanger.version = 20061108;
/* configuration */
// change these to whatever you'd like to show up on your status page. you can add new lines in
// the same format provided there is a comma at the end of each line but the last one. you can
// also use wikimarkup here to, for example, display an image instead of text.
topaz.statuschanger.statuscode = {
online:'{{User:QwerpQwertus/Online}}',
busy:'{{User:QwerpQwertus/Busy}}',
offline:'{{User:QwerpQwertus.Offline}}'
};
// this will make wikimarkup work in your stauscodes but will disable auto-updating
topaz.statuschanger.enablewikimarkup = false;
// true to use the personal bar, false to create a panel in the left column
topaz.statuschanger.usepersonalbar = true;
// true if you'd like your status page on your watchlist
topaz.statuschanger.watchstatus = false;
/* end configuration */
topaz.statuschanger.buttonlist = {};
topaz.statuschanger.oldonload = window.onload;
window.onload = function() {
if (typeof topaz.statuschanger.oldonload == "function") {
setTimeout('topaz.statuschanger.oldonload()',50);
}
if (!topaz.statuschanger.usepersonalbar) {
topaz.wputil.addsidepanel("tz-statuschanger", "status changer");
}
var buttonlist = [];
for (status in topaz.statuschanger.statuscode) {
buttonlist.push(status);
topaz.statuschanger.buttonlist[status] =
topaz.wputil.addsidepanelbutton(
topaz.statuschanger.usepersonalbar ? "p-personal" : "tz-statuschanger",
status,
'javascript:topaz.statuschanger.setstatus("' + status + '")'
);
}
if (topaz.statuschanger.usepersonalbar) {
for(var i=0; i<buttonlist.length; i++) {
with (topaz.statuschanger.buttonlist[buttonlist[i]].style) {
if (i != buttonlist.length-1) {
borderRight = "1px solid #aaaaaa";
paddingRight = "2px";
}
if (i != 0) {
marginLeft = "0px";
paddingLeft = "2px";
}
}
}
}
var spanlist = document.getElementsByTagName("span");
for (var i=0; i<spanlist.length; i++) {
if (spanlist[i].className == "topaz.statuschanger.curstatus."+escape(topaz.wputil.username())) {
topaz.util.cookie.set("topaz.statuschanger.curstatus", spanlist[i].innerHTML);
}
}
topaz.statuschanger.update();
};
topaz.statuschanger.setstatus = function(statusname) {
topaz.wputil.setpagecontent(
"User:"+topaz.wputil.username()+"/Status",
(!topaz.statuschanger.enablewikimarkup ?
'<includeonly><span class="topaz.statuschanger.inlinestatus.'
+ escape(topaz.wputil.username())
+ '"></includeonly>'
: '') +
topaz.statuschanger.statuscode[statusname] +
(!topaz.statuschanger.enablewikimarkup ?
'<includeonly></span></includeonly>'
: '') +
'<span class="topaz.statuschanger.curstatus.'+escape(topaz.wputil.username()) +
'" style="display:none">'+statusname+'</span>',
statusname,
topaz.statuschanger.watchstatus);
topaz.util.cookie.set("topaz.statuschanger.curstatus", statusname);
topaz.statuschanger.update();
};
topaz.statuschanger.laststatus = null;
topaz.statuschanger.update = function() {
var curstatus = topaz.util.cookie.get("topaz.statuschanger.curstatus");
if (curstatus && curstatus != topaz.statuschanger.laststatus) {
for (status in topaz.statuschanger.buttonlist) {
with (topaz.statuschanger.buttonlist[status].style) {
if (status == curstatus) {
fontWeight = "bold";
} else {
fontWeight = "normal";
}
}
}
if (!topaz.statuschanger.enablewikimarkup) {
var spanlist = document.getElementsByTagName("span");
for (var i=0; i<spanlist.length; i++) {
if (spanlist[i].className == "topaz.statuschanger.inlinestatus."+escape(topaz.wputil.username())) {
spanlist[i].innerHTML = topaz.statuschanger.statuscode[curstatus];
}
}
}
}
topaz.statuschanger.laststatus = curstatus;
};
setInterval("topaz.statuschanger.update()", 5000);
//</nowiki>
////////////////////////////////////////////
//
// Yet another AfC helper script
// v.4.0.5
// Adapted from [[User:Mr.Z-man/closeAFD]]
//
////////////////////////////////////////////
if (wgPageName.indexOf('Wikipedia:Articles_for_creation/Redirects') != -1) {
var afcHelper_RedirectPageName = wgPageName.replace(/_/g, ' ');
var afcHelper_RedirectSubmissions = new Array();
var afcHelper_RedirectSections = new Array();
var afcHelper_numTotal = 0;
var afcHelper_Redirect_AJAXnumber = 0;
var afcHelper_Submissions = new Array();
var afcHelper_redirectDecline_reasonhash = {
'exists' : 'The title you suggested already exists on Wikipedia',
'blank' : 'We cannot accept empty submissions',
'notarget': ' A redirect cannot be created unless the target is an existing article. Either you have not specified the target, or the target does not exist',
'unlikely': 'The title you suggested seems unlikely. Could you provide a source showing that it is a commonly used alternate name?',
'custom': ''
};
var afcHelper_categoryDecline_reasonhash = {
'exists' : 'The category you suggested already exists on Wikipedia',
'blank' : 'We cannot accept empty submissions.',
'unlikely': 'It seems unlikely that there are enough pages to support this category. Could you show that there are a number of pages that belong to this category?',
'custom': ''
};
function afcHelper_redirect_init(){
afcHelper_RedirectSubmissions = new Array();
afcHelper_RedirectSections = new Array();
afcHelper_numTotal = 0;
var pagetext = afcHelper_redirect_getPageText(afcHelper_RedirectPageName, false);
// let the parsing begin.
// first, strip out the parts before the first section.
var section_re = /==[^=]*==/;
pagetext = pagetext.substring(pagetext.search(section_re));
// second, strip out the parts that has been mass-moderated.
// first find the place of mass moderation
var mass_re = /\{\{(?:(?:afc-c|afc top)\|\s*m|afc mm)/i;
if(mass_re.test(pagetext)){
var mass_mods = mass_re.exec(pagetext);
for(var i = 0; i < mass_mods.length; i++){
var mass_mod_start = pagetext.indexOf(mass_mods[i]);
var mass_mod_end = pagetext.substring(mass_mod_start).search(/\{\{(?:afc-c\|\s*b|afc b)/i);
mass_mod_end += mass_mod_start;
mass_mod_end = pagetext.indexOf('\}\}', mass_mod_end);
pagetext = pagetext.substring(0, mass_mod_start) + pagetext.substring(mass_mod_end + 2);
}
}
// now parse it into sections.
section_re = /==[^=]*==/g;
var section_headers = pagetext.match(section_re);
for(var i = 0; i < section_headers.length; i++){
var section_start = pagetext.indexOf(section_headers[i]);
var section_text = pagetext.substring(section_start);
if(i < section_headers.length-1){
var section_end = section_text.substring(section_headers[i].length).indexOf(section_headers[i+1]) + section_headers[i].length;
section_text = section_text.substring(0, section_end);
}
afcHelper_RedirectSections.push(section_text);
}
// parse the sections.
for(var i = 0; i < afcHelper_RedirectSections.length; i++){
var closed = /\{\{\s*afc(?!\s+comment)/i.test(afcHelper_RedirectSections[i]);
if(!closed){
// parse.
var header = afcHelper_RedirectSections[i].match(section_re)[0];
if(header.search(/Redirect request/i) != -1){
var wikilink_re = /\[\[[^\[\]]+\]\]/g;
var links = header.match(wikilink_re);
for(var j = 0; j < links.length; j++){
links[j]=links[j].replace(/[\[\]]/g, '');
if(links[j].charAt(0) == ':')
links[j] = links[j].substring(1);
}
var re = /Target of redirect:\s*\[\[([^\[\]]*)\]\]/i;
re.test(afcHelper_RedirectSections[i]);
var to = RegExp.$1;
var submission = {
type: 'redirect',
from: new Array(),
section: i,
to: to,
title: to
};
for(var j = 0; j < links.length; j++){
var sub = {
type: 'redirect',
to: to,
id: afcHelper_numTotal,
title: links[j],
action: ''
};
submission.from.push(sub);
afcHelper_Submissions.push(sub);
afcHelper_numTotal++;
}
afcHelper_RedirectSubmissions.push(submission);
}
else if(header.search(/Category request/i) != -1){
var wikilink_re = /\[\[[^\[\]]+\]\]/g;
var links = header.match(wikilink_re);
// figure out the parent category.
var idx = afcHelper_RedirectSections[i].substring(header.length).search(/\[\[\s*:\s*(Category:[^\]\[]*)\]\]/i);
var parent = '';
if(idx != -1)
parent = RegExp.$1;
parent = parent.replace(/:\s*/g, ':');
for(var j = 0; j < links.length; j++){
links[j]=links[j].replace(/[\[\]]/g, '');
links[j]=links[j].replace(/Category\s*:\s*/gi, 'Category:');
if(links[j].charAt(0) == ':')
links[j] = links[j].substring(1);
var submission = {
type: 'category',
title: links[j],
section: i,
id: afcHelper_numTotal,
action: '',
parent: parent
};
afcHelper_numTotal++;
afcHelper_RedirectSubmissions.push(submission);
afcHelper_Submissions.push(submission);
}
}
}
}
var text = '<h3>Reviewing AFC redirect requests</h3>';
// now layout the text.
for(var k = 0; k < afcHelper_RedirectSubmissions.length; k++){
text += '<ul>';
if(afcHelper_RedirectSubmissions[k].type == 'redirect'){
text += '<li>Redirect(s) to <a href="/wiki/' + encodeURIComponent(afcHelper_RedirectSubmissions[k].to)
+ '">' + afcHelper_RedirectSubmissions[k].to + '</a>: <ul>';
for(var l = 0; l < afcHelper_RedirectSubmissions[k].from.length; l++){
var from = afcHelper_RedirectSubmissions[k].from[l];
text += "<li>From: " + from.title
+'<br/><label for="afcHelper_redirect_action_'+ from.id+'">Action: </label>'
+ afcHelper_redirect_generateSelect('afcHelper_redirect_action_'+ from.id,
[{ label: 'Accept', value: 'accept' },
{ label: 'Decline', value: 'decline' },
{ label: 'Comment', value: 'comment' },
{ label: 'None', selected : true, value: 'none' }
], 'afcHelper_redirect_onActionChange(' + from.id + ')')
+ '<div id="afcHelper_redirect_extra_' + from.id + '"></div></li>';
}
text += '</ul></li>';
}
else{
text += '<li>Category submission: '+ afcHelper_RedirectSubmissions[k].title;
text += '<br/> <label for="afcHelper_redirect_action_'+ afcHelper_RedirectSubmissions[k].id+'">Action: </label>'
+ afcHelper_redirect_generateSelect('afcHelper_redirect_action_'+ afcHelper_RedirectSubmissions[k].id,
[{ label: 'Accept', value: 'accept' },
{ label: 'Decline', value: 'decline' },
{ label: 'Comment', value: 'comment' },
{ label: 'None', selected : true, value: 'none' }
], 'afcHelper_redirect_onActionChange(' + afcHelper_RedirectSubmissions[k].id + ')')
+ '<div id="afcHelper_redirect_extra_' + afcHelper_RedirectSubmissions[k].id + '"></div></li>';
}
text += '</ul>';
}
text += '<input type="button" id="afcHelper_redirect_done_button" name="afcHelper_redirect_done_button" value="Done" onclick="afcHelper_redirect_performActions()" />';
jsMsg(text);
}
function afcHelper_redirect_onActionChange(id){
var extra = document.getElementById("afcHelper_redirect_extra_" + id);
var selectValue = document.getElementById("afcHelper_redirect_action_"+id).value;
if(selectValue == 'none')
extra.innerHTML = '';
else if(selectValue == 'accept'){
if(afcHelper_Submissions[id].type == 'redirect'){
extra.innerHTML = '<label for="afcHelper_redirect_from_' + id + '">From: </label><input type="text" '+
'name="afcHelper_redirect_from_' + id + '" id="afcHelper_redirect_from_' + id + '" value="'
+ afcHelper_Submissions[id].title + '" />';
extra.innerHTML += ' <label for="afcHelper_redirect_to_' + id + '">To: </label><input type="text" '+
'name="afcHelper_redirect_to_' + id + '" id="afcHelper_redirect_to_' + id + '" value="'
+ afcHelper_Submissions[id].to + '" />';
extra.innerHTML += '<label for="afcHelper_redirect_append_'+ id +'">Template to append: </label>'
+ afcHelper_redirect_generateSelect('afcHelper_redirect_append_'+
id, [
{ label: 'R from alternative name', value: 'R from alternative name' },
{ label: 'R from alternative language', value: 'R from alternative language' },
{ label: 'R from alternative spelling', value: 'R from alternative spelling' },
{ label: 'R to section', value: 'R to section' },
{ label: 'R to disambiguation page', value: 'R to disambiguation page' },
{ label: 'R from title with diacritics', value: 'R from title with diacritics'},
{ label: 'Custom - prompt me', value: 'custom' },
{ label: 'None', selected : true, value: 'none' }
]);
}
else{
extra.innerHTML = '<label for="afcHelper_redirect_name_' + id + '">name: </label><input type="text" '+
'name="afcHelper_redirect_name_' + id + '" id="afcHelper_redirect_name_' + id + '" value="'
+ afcHelper_Submissions[id].title + '" />';
extra.innerHTML += '<label for="afcHelper_redirect_parent_' + id +'">Parent category:</label>'
+ '<input type="text" id="afcHelper_redirect_parent_' + id +'" name="afcHelper_redirect_parent_' + id +
'" value="' + afcHelper_Submissions[id].parent + '" />';
}
extra.innerHTML += '<label for="afcHelper_redirect_comment_' + id +'">Comment:</label>'
+ '<input type="text" id="afcHelper_redirect_comment_' + id +'" name="afcHelper_redirect_comment_' + id +'"/>';
} else if(selectValue == 'decline'){
if(afcHelper_Submissions[id].type == 'redirect'){
extra.innerHTML = '<label for="afcHelper_redirect_decline_'+ id +'">Reason for decline: </label>'
+ afcHelper_redirect_generateSelect('afcHelper_redirect_decline_'+
id, [
{ label: 'Already exists', value: 'exists' },
{ label: 'Blank request', value: 'blank' },
{ label: 'No valid target specified', value: 'notarget' },
{ label: 'Unlikely search term', value: 'unlikely' },
{ label: 'Custom - reason below', selected : true, value: 'custom' }
]);
}
else {
extra.innerHTML = '<label for="afcHelper_redirect_decline_'+ id +'">Reason for decline: </label>'
+ afcHelper_redirect_generateSelect('afcHelper_redirect_decline_'+
id, [
{ label: 'Already exists', value: 'exists' },
{ label: 'Blank request', value: 'blank' },
{ label: 'Unlikely category', value: 'unlikely' },
{ label: 'Custom - reason below', selected : true, value: 'custom' }
]);
}
extra.innerHTML += '<label for="afcHelper_redirect_comment_' + id +'">Comment:</label>'
+ '<input type="text" id="afcHelper_redirect_comment_' + id +'" name="afcHelper_redirect_comment_' + id +'"/>';
} else{
extra.innerHTML = '<label for="afcHelper_redirect_comment_' + id +'">Comment:</label>'
+ '<input type="text" id="afcHelper_redirect_comment_' + id +'" name="afcHelper_redirect_comment_' + id +'"/>';
}
}
function afcHelper_redirect_performActions(){
// Load all of the data.
for(var i = 0; i < afcHelper_Submissions.length; i++){
var action = document.getElementById("afcHelper_redirect_action_" + i).value;
afcHelper_Submissions[i].action = action;
if(action == 'none')
continue;
if(action == 'accept'){
if(afcHelper_Submissions[i].type == 'redirect'){
afcHelper_Submissions[i].title = document.getElementById("afcHelper_redirect_from_" + i).value;
afcHelper_Submissions[i].to = document.getElementById("afcHelper_redirect_to_" + i).value;
afcHelper_Submissions[i].append = document.getElementById("afcHelper_redirect_append_" + i).value;
if(afcHelper_Submissions[i].append == 'custom'){
afcHelper_Submissions[i].append = prompt("Please enter the template to append for " + afcHelper_Submissions[i].title
+ ". Do not include the curly brackets.");
}
if(afcHelper_Submissions[i].append == 'none' || afcHelper_Submissions[i].append == null)
afcHelper_Submissions[i].append = '';
else
afcHelper_Submissions[i].append = '\{\{' + afcHelper_Submissions[i].append + '\}\}';
}
else{
afcHelper_Submissions[i].title = document.getElementById("afcHelper_redirect_name_" + i).value;
afcHelper_Submissions[i].parent = document.getElementById("afcHelper_redirect_parent_" + i).value;
}
}
else if (action == 'decline'){
afcHelper_Submissions[i].reason = document.getElementById('afcHelper_redirect_decline_' + i).value;
}
afcHelper_Submissions[i].comment = document.getElementById("afcHelper_redirect_comment_" + i).value;
}
// Data loaded. Show progress screen and get edit token and WP:AFC/R page text.
jsMsg('<ul id="afcHelper_status"></ul><ul id="afcHelper_finish"></ul>');
document.getElementById('afcHelper_finish').innerHTML += '<span id="afcHelper_finished_wrapper"><span id="afcHelper_finished_main" style="display:none"><li id="afcHelper_done"><b>Done (<a href="/wiki/'+encodeURI(afcHelper_RedirectPageName)+'?action=purge" title="'+afcHelper_RedirectPageName+'">Reload page</a>)</b></li></span></span>';
var token = afcHelper_redirect_getToken(true);
var pagetext = afcHelper_redirect_getPageText(afcHelper_RedirectPageName, true);
var totalaccept = 0;
var totaldecline = 0;
var totalcomment = 0;
// traverse the submissions and locate the relevant sections.
for(var i = 0; i < afcHelper_RedirectSubmissions.length; i++){
var sub = afcHelper_RedirectSubmissions[i];
if(pagetext.indexOf(afcHelper_RedirectSections[sub.section]) == -1){
// Someone has modified the section in the mean time. Skip.
document.getElementById('afcHelper_status').innerHTML += '<li>Skipping ' + sub.title + ': Cannot find section. Perhaps it was modified in the mean time?</li>';
continue;
}
var text = afcHelper_RedirectSections[sub.section];
var startindex = pagetext.indexOf(afcHelper_RedirectSections[sub.section]);
var endindex = startindex + text.length;
// First deal with cats. These are easy.
if(sub.type == 'category'){
if(sub.action == 'accept'){
var cattext = '<!--Created by WP:AFC -->';
if(sub.parent != '' )
cattext = '\[\['+ sub.parent + '\]\]';
afcHelper_redirect_editPage(sub.title, cattext, token, 'Created via \[\[WP:AFC|Articles for Creation\]\] (\[\[WP:WPAFC|you can help!\]\])', true);
var talktext = '\{\{subst:WPAFC/article|class=Cat\}\}';
var talktitle = sub.title.replace(/Category:/gi, 'Category talk:');
afcHelper_redirect_editPage(talktitle, talktext, token, 'Placing WPAFC project banner', true);
var header = text.match(/==[^=]*==/)[0];
text = header + "\n\{\{AfC-c|a\}\}\n" + text.substring(header.length);
if(sub.comment != '')
text += '\n*\{\{subst:afc category|accept|2=' + sub.comment +'\}\} \~\~\~\~\n';
else
text += '\n*\{\{subst:afc category\}\} \~\~\~\~\n';
text += '\{\{AfC-c|b\}\}\n';
totalaccept ++;
}
else if (sub.action == 'decline'){
var header = text.match(/==[^=]*==/)[0];
var reason = afcHelper_categoryDecline_reasonhash[sub.reason];
if(reason == '')
reason = sub.comment;
else if (sub.comment != '')
reason = reason + ': ' + sub.comment;
if(reason == ''){
document.getElementById('afcHelper_status').innerHTML += '<li>Skipping ' + sub.title + ': No decline reason specified.</li>';
continue;
}
text = header + "\n\{\{AfC-c|d\}\}\n" + text.substring(header.length);
if(sub.comment == '')
text += '\n*\{\{subst:afc category|' + sub.reason +'\}\} \~\~\~\~\n';
else
text += '\n*\{\{subst:afc category|decline|2=' + reason +'\}\} \~\~\~\~\n';
text += '\{\{AfC-c|b\}\}\n';
totaldecline++;
}
else if (sub.action == 'comment'){
if(sub.comment != '')
text += '\n*\{\{afc comment|1=' + sub.comment +'\~\~\~\~\}\}\n';
totalcomment++;
}
}
else {
// redirects......
var acceptcomment = '';
var declinecomment = '';
var othercomment = '';
var acceptcount = 0, declinecount = 0, commentcount = 0, hascomment = false;
for(var j = 0; j < sub.from.length; j++){
var redirect = sub.from[j];
if(redirect.action == 'accept'){
var redirecttext = '#REDIRECT \[\[' + redirect.to + '\]\]\n' + redirect.append;;
afcHelper_redirect_editPage(redirect.title, redirecttext, token, 'Created via \[\[WP:AFC|Articles for Creation\]\] (\[\[WP:WPAFC|you can help!\]\])', true);
var talktext = '\{\{subst:WPAFC/redirect\}\}';
var talktitle = 'Talk:' + redirect.title;
afcHelper_redirect_editPage(talktitle, talktext, token, 'Placing WPAFC project banner', true);
acceptcomment += redirect.title + " → " + redirect.to;
if(redirect.comment != ''){
acceptcomment += ': ' + redirect.comment + '; ';
hascomment = true;
} else
acceptcomment += '; ';
acceptcount ++;
}
else if (redirect.action == 'decline'){
var reason = afcHelper_redirectDecline_reasonhash[redirect.reason];
if(reason == '')
reason = redirect.comment;
else if (redirect.comment != '')
reason = reason + ': ' + redirect.comment;
if(reason == ''){
document.getElementById('afcHelper_status').innerHTML += '<li>Skipping ' + redirect.title + ': No decline reason specified.</li>';
continue;
}
declinecomment += redirect.title + " → " + redirect.to + ": " + reason + "; ";
declinecount ++;
}
else if (redirect.action == 'comment'){
othercomment += redirect.title + ": " + redirect.comment + ", ";
commentcount ++;
}
}
var reason = '';
if(acceptcount > 0)
reason += '\n*\{\{subst:afc redirect|accept|2=' + acceptcomment + ' Thank you for your contributions to Wikipedia!\}\} \~\~\~\~';
if (declinecount > 0)
reason += '\n*\{\{subst:afc redirect|decline|2=' + declinecomment + '\}\} \~\~\~\~';
if(commentcount > 0)
reason += '\n*\{\{afc comment|1=' + othercomment + '\~\~\~\~\}\}';
reason += '\n';
if(!hascomment && acceptcount == sub.from.length){
if(acceptcount > 1)
reason = '\n*\{\{subst:afc redirect|all\}\} \~\~\~\~\n';
else
reason = '\n*\{\{subst:afc redirect\}\} \~\~\~\~\n';
}
if(acceptcount + declinecount + commentcount > 0){
if(acceptcount + declinecount == sub.from.length){
// Every request disposed of. Close.
var header = text.match(/==[^=]*==/)[0];
if(acceptcount > declinecount)
text = header + "\n\{\{AfC-c|a\}\}\n" + text.substring(header.length);
else
text = header + "\n\{\{AfC-c|d\}\}\n" + text.substring(header.length);
text += reason;
text += '\{\{AfC-c|b\}\}\n';
}
else
text += reason +'\n';
}
totalaccept += acceptcount;
totaldecline += declinecount;
totalcomment += commentcount;
}
pagetext = pagetext.substring(0, startindex) + text + pagetext.substring(endindex);
}
var summary = "Updating submission status:";
if(totalaccept > 0)
summary += " accepting " + totalaccept + " request" + (totalaccept > 1 ? 's' : '');
if(totaldecline > 0){
if(totalaccept > 0)
summary += ',';
summary += " declining " + totaldecline + " request" + (totaldecline > 1 ? 's' : '');
}
if(totalcomment > 0){
if(totalaccept > 0 || totaldecline > 0)
summary += ',';
summary += " commenting on " + totalcomment + " request" + (totalcomment > 1 ? 's' : '');
}
afcHelper_redirect_editPage(afcHelper_RedirectPageName, pagetext, token, summary, false);
document.getElementById('afcHelper_finished_main').style.display = '';
}
function afcHelper_redirect_getToken(show) {
if (show) {
document.getElementById('afcHelper_status').innerHTML += '<li id="afcHelper_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(afcHelper_RedirectPageName), 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('afcHelper_gettoken').innerHTML = 'Got token';
}
return token;
}
function afcHelper_redirect_editPage(title, newtext, token, summary, createonly) {
document.getElementById('afcHelper_finished_wrapper').innerHTML = '<span id="afcHelper_AJAX_finished_'+afcHelper_Redirect_AJAXnumber+'" style="display:none">' + document.getElementById('afcHelper_finished_wrapper').innerHTML + '</span>';
var func_id = afcHelper_Redirect_AJAXnumber;
afcHelper_Redirect_AJAXnumber++;
document.getElementById('afcHelper_status').innerHTML += '<li id="afcHelper_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&unwatch=1&summary="+encodeURIComponent(summary);
if(createonly)
params += "&createonly=1";
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('afcHelper_edit'+escape(title)).innerHTML = 'Saved <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a>';
} else {
document.getElementById('afcHelper_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('afcHelper_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('afcHelper_AJAX_finished_'+func_id).style.display = '';
delete req;
}
};
req.send(params);
}
function afcHelper_redirect_getPageText(title, show) {
if(show){
document.getElementById('afcHelper_status').innerHTML += '<li id="afcHelper_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") {
if(show){
document.getElementById('afcHelper_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;
if(show){
document.getElementById('afcHelper_get'+escape(title)).innerHTML = 'Got <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a>';
}
return pagetext;
}
function afcHelper_redirect_generateSelect(title, options, onchange){
var text = '<select name="' + title + '" id="' + title +'" ';
if(onchange != null)
text += 'onchange = "' + onchange + '" ';
text+= '>';
for(var i = 0; i < options.length; i ++){
var o = options[i];
text += '<option value="' + o.value + '" ';
if(o.selected)
text += 'selected="selected" ';
text += '>' + o.label + '</option>';
}
text += "</select>";
return text;
}
function afcHelper_redirect_addLink() {
mw.util.addPortletLink("p-cactions", "javascript:afcHelper_redirect_init()", "Review", "ca-afcHelper", "Review");
}
addOnloadHook(afcHelper_redirect_addLink);
}
else if (wgPageName.indexOf('Wikipedia:Articles_for_creation/') != -1 || wgPageName.indexOf('Wikipedia_talk:Articles_for_creation/') != -1) {
var afcHelper_PageName = wgPageName.replace(/_/g, ' ');
var afcHelper_AJAXnumber = 0;
var afcHelper_submissionTitle = wgTitle.replace(/Articles for creation\//g, '');
var afcHelper_reasonhash = {
'v': 'submission is unsourced or contains only unreliable sources',
'blank': 'submission is blank',
'lang': 'submission is not in English',
'cv': 'submission is a copyright violation',
'exists': 'submission already exists in main space',
'dup': 'submission is a duplicate of another submission',
'coi': 'author appears to have a conflict of interest',
'redirect': 'submission is a redirect request',
'test': 'submission is a test edit',
'news': 'submission appears to be a news report of a single event',
'dict': 'submission is a dictionary definition',
'joke': 'submission appears to be a joke',
'blp': 'submission does not conform to BLP',
'neo': 'submission is a neologism',
'npov': 'submission is not written from a neutral point of view',
'adv': 'submission is written like an advertisement',
'context': 'submission provides insufficient context',
'mergeto': 'submission is too short but can be merged',
'plot': 'submission is a plot summary',
'essay': 'submission reads like an essay',
'not': 'submission is covered by WP:NOT',
'nn': 'subject appears to be non-notable',
'web': 'subject appears to be non-notable web content',
'prof': 'subject appears to be a non-notable academic',
'athlete': 'subject appears to be a non-notable athlete',
'music': 'subject appears to be a non-notable musical performer or work',
'film': 'subject appears to be a non-notable film',
'corp': 'subject appears to be a non-notable company or organization',
'bio': 'subject appears to be a non-notable person',
'reason': ''
};
function afcHelper_init() {
if (!wfSupportsAjax()) {
jsMsg('<span style="color:red; font-size:120%">Your browser does not seem to support AJAX, which is required for the afcHelper script v3.</span>');
return;
}
form = '<div id="afcHelper_initialform">'+
'<h3>Reviewing '+afcHelper_PageName+'</h3>'+
'<input type="button" id="afcHelper_accept_button" name="afcHelper_accept_button" value="Accept" onclick="afcHelper_prompt(\'accept\')" />'+
'<input type="button" id="afcHelper_decline_button" name="afcHelper_decline_button" value="Decline" onclick="afcHelper_prompt(\'decline\')" />'+
'<input type="button" id="afcHelper_hold_button" name="afcHelper_hold_button" value="Hold" onclick="afcHelper_prompt(\'hold\')" />'+
'<input type="button" id="afcHelper_comment_button" name="afcHelper_comment_button" value="Comment" onclick="afcHelper_prompt(\'comment\')" />'+
'<input type="button" id="afcHelper_mark_button" name="afcHelper_mark_button" value="Mark as reviewing" onclick="afcHelper_act(\'mark\')" />'+
'<div id="afcHelper_extra"></div>';
jsMsg(form);
}
function afcHelper_prompt(type) {
if(type == 'accept'){
var text = '<br /><br /> <h3>Accepting '+afcHelper_PageName+'</h3>'+
'<label for="afcHelper_movetarget">Move submission to: </label><input type="text" id="afcHelper_movetarget" name="afcHelper_movetarget" value="' +afcHelper_submissionTitle+'" />'+
'<br /><label for="afcHelper_assessment">Assessment (optional): </label>';
var assessmentSelect = afcHelper_generateSelect("afcHelper_assessment",
[{ label: 'B-class', value: 'B' },
{ label: 'C-class', value: 'C' },
{ label: 'Start-class', value: 'start' },
{ label: 'Stub-class', value: 'stub' },
{ label: 'List-class', value: 'list' },
{ label: 'Disambig-class', value: 'disambig' },
{ label: 'Redirect-class', value: 'redirect' },
{ label: 'None', selected : true, value: '' }
], null);
text += assessmentSelect;
text += '<br /><label for="afcHelper_pageAppend">Append to page (optional): </label><textarea rows="3" cols="60" name="afcHelper_pageAppend" id="afcHelper_pageAppend"></textarea>'+
'<br /><label for="afcHelper_talkAppend">Append to talk page (optional): </label><textarea rows="3" cols="60" name="afcHelper_talkAppend" id="afcHelper_talkAppend"></textarea>';
document.getElementById('afcHelper_extra').innerHTML += text;
}
else if(type == 'decline' || type == 'hold'){
var text = '<br /><br /> <h3>' + (type == 'decline' ? 'Declining ' : 'Placing on hold ') +afcHelper_PageName+'</h3>'+
'<label for="afcHelper_reason">Reason for ' + type + ': </label>';
var reasonSelect = afcHelper_generateSelect("afcHelper_reason",
[{ label: 'v - submission is unsourced or contain only unreliable sources', value: 'v' },
{ label: 'blank - submission is blank', value: 'blank' },
{ label: 'lang - submission is not in English', value: 'lang' },
{ label: 'cv - submission is a copyright violation', value: 'cv' },
{ label: 'exists - submission already exists in main space', value: 'exists' },
{ label: 'dup - submission is a duplicate of another submission', value: 'dup' },
{ label: 'coi - author appears to have a conflict of interest', value: 'coi' },
{ label: 'redirect - submission is a redirect request', value: 'redirect' },
{ label: 'test - submission is a test edit', value: 'test' },
{ label: 'news - submission appears to be a news report of a single event', value: 'news' },
{ label: 'dict - submission is a dictionary definition', value: 'dict' },
{ label: 'joke - submission appears to be a joke', value: 'joke' },
{ label: 'blp - submission does not conform to BLP', value: 'blp' },
{ label: 'neo - submission is a neologism', value: 'neo' },
{ label: 'npov - submission is not written from a neutral point of view', value: 'npov' },
{ label: 'adv - submission is written like an advertisement', value: 'adv' },
{ label: 'context - submission provides insufficient context', value: 'context' },
{ label: 'mergeto - submission is too short but can be merged', value: 'mergeto' },
{ label: 'plot - submission is a plot summary', value: 'plot' },
{ label: 'essay - submission reads like an essay', value: 'essay' },
{ label: 'not - submission is covered by WP:NOT', value: 'not' },
{ label: 'nn - subject appears to be non-notable - consider using a more specialized decline reason', value: 'nn' },
{ label: 'web - subject appears to be non-notable web content', value: 'web' },
{ label: 'prof - subject appears to be a non-notable academic', value: 'prof' },
{ label: 'athlete - subject appears to be a non-notable athlete', value: 'athlete' },
{ label: 'music - subject appears to be a non-notable musical performer or work', value: 'music' },
{ label: 'film - subject appears to be a non-notable film', value: 'film' },
{ label: 'corp - subject appears to be a non-notable company or organization', value: 'corp' },
{ label: 'bio - subject appears to be a non-notable person', value: 'bio' },
{ label: 'Custom - reason below', selected : true, value: 'reason' }
], "afcHelper_onChange(this)");
text += reasonSelect;
text += '<br /><label for="afcHelper_comments">Additional comments (optional): </label><textarea rows="3" cols="60" name="afcHelper_comments" id="afcHelper_comments"></textarea>'+
'<label for="afcHelper_blank">Blank submission:</label><input type="checkbox" name="afcHelper_blank" id="afcHelper_blank" /><br/>' +
'<label for="afcHelper_notify">Notify author:</label><input type="checkbox" name="afcHelper_notify" id="afcHelper_notify" checked="checked" /><br/>';
document.getElementById('afcHelper_extra').innerHTML += text;
}
else if(type == 'comment'){
var text = '<br /><br /> <h3> Commenting on ' +afcHelper_PageName+'</h3>'+
'<br /><label for="afcHelper_comments">Comment: </label><textarea rows="3" cols="60" name="afcHelper_comments" id="afcHelper_comments"></textarea>';
document.getElementById('afcHelper_extra').innerHTML += text;
}
document.getElementById('afcHelper_extra').innerHTML += '<input type="button" id="afcHelper_prompt_button" name="afcHelper_prompt_button" value="Submit" onclick="afcHelper_act(\''+type+'\')" />';
}
function afcHelper_act(action) {
if(action == 'accept'){
var newtitle = document.getElementById("afcHelper_movetarget").value;
var assessment = document.getElementById("afcHelper_assessment").value;
var pageAppend = document.getElementById("afcHelper_pageAppend").value;
var talkAppend = document.getElementById("afcHelper_talkAppend").value;
jsMsg('<ul id="afcHelper_status"></ul><ul id="afcHelper_finish"></ul>');
document.getElementById('afcHelper_finish').innerHTML += '<span id="afcHelper_finished_wrapper"><span id="afcHelper_finished_main" style="display:none"><li id="afcHelper_done"><b>Done (<a href="/wiki/'+encodeURI(afcHelper_PageName)+'?action=purge" title="'+afcHelper_PageName+'">Reload page</a>)</b></li></span></span>';
var token = afcHelper_getToken(true);
var callback = function(){
var text = afcHelper_getPageText(newtitle);
var username ='';
// clean up page
var afc_re = /\{\{\s*afc submission\s*\|(?:\{\{[^\{\}]*\}\}|[^\}\{])*\}\}/i;
if( afc_re.test( text ) ) {
var afctemplate = afc_re.exec(text)[0];
var author_re = /\|\s*u=\s*[^\|]*\|/i;
if(author_re.test(afctemplate)){
var user = author_re.exec(afctemplate)[0];
username = user.split(/=/)[1];
username = username.replace(/\|/g,'');
var usertext = afcHelper_getPageText("User talk:"+username);
usertext += "\n== Your submission at \[\[WP:AFC|Articles for creation\]\] ==";
usertext += "\n\{\{subst:afc talk|1=" + newtitle + "|class=" + assessment + "\}\} \~\~\~\~";
afcHelper_editPage("User talk:"+username, usertext, token, 'Your submission at \[\[WP:AFC|Articles for creation\]\]');
}
}
var recenttext = afcHelper_getPageText("Wikipedia:Articles for creation/recent");
var newentry = "\{\{afc contrib|" + assessment + "|" + newtitle + "|" + username +"\}\}\n";
var lastentry = recenttext.lastIndexOf("\{\{afc contrib");
var firstentry = recenttext.indexOf("\{\{afc contrib");
recenttext = recenttext.substring(0, lastentry);
recenttext = recenttext.substring(0, firstentry) + newentry + recenttext.substring(firstentry);
afcHelper_editPage("Wikipedia:Articles for creation/recent", recenttext, token, 'Updating recent AFC creations');
var talktext = "\{\{talkheader\}\}\n\{\{subst:WPAFC/article|class=" + assessment + "\}\}";
talktext += "\n";
talktext += talkAppend;
afcHelper_editPage("Talk:"+newtitle, talktext, token, 'Placing WPAFC project banner');
while(afc_re.test(text)){
var startindex = text.search(afc_re);
var template = afc_re.exec(text)[0];
var endindex = startindex + template.length;
text = text.substring(0, startindex) + text.substring(endindex);
}
var cmt_re = /\{\{\s*afc comment\s*\|(?:\{\{[^\{\}]*\}\}|[^\}\{])*\}\}/i;
while(cmt_re.test(text)){
var startindex = text.search(cmt_re);
var template = cmt_re.exec(text)[0];
var endindex = startindex + template.length;
text = text.substring(0, startindex) + text.substring(endindex);
}
var afcindex = text.search(/\{\{afc/i);
while (afcindex != -1){
var endindex = text.indexOf("\}\}", afcindex + 2);
text = text.substring(0,afcindex) + text.substring(endindex+2);
afcindex = text.search(/\{\{afc/i);
}
if(text.indexOf("\<\!--- Important, do not remove this line before article has been created. ---\>") != -1){
var startindex = text.indexOf("\<\!--- Important, do not remove this line before article has been created. ---\>");
var endindex = text.indexOf(">", startindex);
text = text.substring(0, startindex) + text.substring(endindex+1);
}
// Remove line breaks.
text = text.replace(/----/g, '');
// Remove leading whitespace, if any.
var spaceindex = text.search(/\s/);
while(spaceindex == 0){
text = text.substring(1);
spaceindex = text.search(/\s/);
}
// Uncomment cats
text = text.replace(/\[\[:Category:/gi, "\[\[Category:");
text += '\n';
text += pageAppend;
afcHelper_editPage(newtitle, text, token, "Cleanup following AFC creation");
};
afcHelper_movePage(afcHelper_PageName, newtitle, token, 'Created via \[\[WP:AFC|Articles for Creation\]\] (\[\[WP:WPAFC|you can help!\]\])' , callback);
}
else if(action == 'decline' || action == 'hold'){
var code = document.getElementById("afcHelper_reason").value;
var reasontext = afcHelper_reasonhash[code];
var customreason = document.getElementById("afcHelper_comments").value;
var append = false;
var keep = false;
var blank = document.getElementById("afcHelper_blank").checked;
var notify = document.getElementById("afcHelper_notify").checked;
jsMsg('<ul id="afcHelper_status"></ul><ul id="afcHelper_finish"></ul>');
document.getElementById('afcHelper_finish').innerHTML += '<span id="afcHelper_finished_wrapper"><span id="afcHelper_finished_main" style="display:none"><li id="afcHelper_done"><b>Done (<a href="/wiki/'+encodeURI(afcHelper_PageName)+'?action=purge" title="'+afcHelper_PageName+'">Reload page</a>)</b></li></span></span>';
var token = afcHelper_getToken(true);
var text = afcHelper_getPageText(afcHelper_PageName);
// Find the first submission or onhold template on the page.
var afc_re = /\{\{\s*afc submission\s*\|\s*[\||h|r](?:\{\{[^\{\}]*\}\}|[^\}\{])*\}\}/i;
if( !afc_re.test( text ) ) {
alert( "Unable to locate AFC submission template, aborting..." );
return;
}
var afctemplate = afc_re.exec(text)[0];
if(afctemplate.search(/\|\s*h\s*\|/i) != -1){
if(action != 'decline'){
append = confirm( "Submission is already on hold. Do you want to add your reason as a comment?" );
if(!append){
return;
}
}
else
if(code == 'reason' && customreason == ''){
keep = true;
}
}
if (!keep) {
if(code == 'reason' && customreason == ''){
alert("You must enter a reason!");
return;
}
}
var startindex = text.indexOf(afctemplate);
var endindex = startindex + afctemplate.length;
//data is always between the first pipe and the one before the timestamp.
var firstpipe = afctemplate.indexOf('|');
var endpipe = afctemplate.indexOf('|ts');
var newtemplate = afctemplate.substring(0, firstpipe);
var summary = '';
var extra = '';
var newcomment = '';
if(code == 'cv'){
extra = prompt("Please enter the url if available, starting with http://");
}
else if(code == 'dup'){
extra = prompt("Please enter the title of the duplicate submission, if possible. Do not enter the prefix (e.g., John Doe).");
}
else if(code == 'mergeto'){
extra = prompt("Please enter the title of the article to merge to, if possible.");
}
else if(code == 'exists'){
extra = prompt("Please enter the title of the existing article, if possible.");
}
else if(code == 'plot'){
extra = prompt("Please enter the title of the existing article on the fiction, if there is one.");
}
if(extra == null){
return;
}
if(!keep && !append){
// overwrite any reason that was there.
newtemplate += '|';
newtemplate += action.substring(0, 1);
newtemplate += '|';
newtemplate += code;
if(code == 'reason'){
newtemplate += '|3=';
newtemplate += customreason;
}
else if(extra != ''){
newtemplate += '|3=';
newtemplate += extra;
}
newtemplate += afctemplate.substring(endpipe);
if(code != 'reason' && customreason != ''){
newcomment = "*\{\{afc comment|1=" + customreason + " \~\~\~\~\}\}";
}
summary = (action == 'decline' ? "Declining submission" : "Placing submission on hold");
if(code == 'reason')
summary += ': see comment therein';
else
summary += ': ' + reasontext;
}
else if (append){
//append the reason as a comment.
newtemplate = afctemplate;
newcomment = "*\{\{afc comment|1=\{\{AFC submission/comments|";
newcomment += code;
if(code == 'reason'){
newcomment += '|2=';
newcomment += customreason;
}
else if(extra != ''){
newcomment += '|2=';
newcomment += extra;
}
newcomment += "\}\} \~\~\~\~ \}\}";
summary = 'Comment on submission';
if(code == 'reason')
summary += '.';
else
summary += ': ' + reasontext;
}
else{
// keep the original reason, just change hold to decline.
var secondpipe = afctemplate.indexOf('|', firstpipe + 1);
newtemplate += '|d';
newtemplate += afctemplate.substring(secondpipe);
summary = 'Decline submission for reasons stated in hold.';
}
if(!append && notify){
var author_re = /\|\s*u=\s*[^\|]*\|/i;
if(author_re.test(afctemplate)){
var user = author_re.exec(afctemplate)[0];
var username = user.split(/=/)[1];
username = username.replace(/[\|]/g,'');
var usertext = afcHelper_getPageText("User talk:"+username);
usertext += "\n== Your submission at \[\[WP:AFC|Articles for creation\]\] ==";
if(action == 'decline'){
usertext += "\n\{\{subst:afc decline|1=" + afcHelper_submissionTitle;
if(code == 'cv')
usertext += "| cv = yes";
usertext += "\}\} \~\~\~\~";
}
else
usertext += "\n\{\{subst:afc onhold|1=" + afcHelper_submissionTitle + "\}\} \~\~\~\~";
afcHelper_editPage("User talk:"+username, usertext, token, 'Your submission at \[\[WP:AFC|Articles for creation\]\]');
}
}
if(!blank){
var containComment = (text.indexOf('----') != -1);
if(newcomment != ''){
if(!containComment)
text = text.substring(0, startindex) + newtemplate + '\n' + newcomment + '\n----\n'+ text.substring(endindex);
else{
text = text.substring(0, startindex) + newtemplate + text.substring(endindex);
var idx = text.indexOf('----');
text = text.substring(0, idx) + newcomment +'\n' + text.substring(idx);
}
}
else
text = text.substring(0, startindex) + newtemplate + text.substring(endindex);
}
else
text = newtemplate + '\n' + newcomment + "\n\{\{afc cleared\}\}";
if(action == 'decline'){
// Comment out cats on decline.
text = text.replace(/\[\[Category:/gi, "\[\[:Category:");
}
afcHelper_editPage(afcHelper_PageName, text, token, summary);
}
else if(action == 'comment'){
var comment = document.getElementById("afcHelper_comments").value;
jsMsg('<ul id="afcHelper_status"></ul><ul id="afcHelper_finish"></ul>');
document.getElementById('afcHelper_finish').innerHTML += '<span id="afcHelper_finished_wrapper"><span id="afcHelper_finished_main" style="display:none"><li id="afcHelper_done"><b>Done (<a href="/wiki/'+encodeURI(afcHelper_PageName)+'?action=purge" title="'+afcHelper_PageName+'">Reload page</a>)</b></li></span></span>';
var token = afcHelper_getToken(true);
var text = afcHelper_getPageText(afcHelper_PageName);
var containComment = (text.indexOf('----') != -1);
var newComment = "*\{\{afc comment|1=" + comment + "\~\~\~\~\}\}";
if(comment != ''){
if(!containComment){
var afc_re = /\{\{\s*afc submission\s*\|\s*[\||h|r](?:\{\{[^\{\}]*\}\}|[^\}\{])*\}\}/i;
if( !afc_re.test( text ) ) {
alert( "Unable to locate AFC submission template, aborting..." );
return;
}
var afctemplate = afc_re.exec(text)[0];
var endindex = text.indexOf(afctemplate) + afctemplate.length;
text = text.substring(0, endindex) + '\n' + newComment + '\n----\n'+ text.substring(endindex);
}
else{
var idx = text.indexOf('----');
text = text.substring(0, idx) + newComment +'\n' + text.substring(idx);
}
afcHelper_editPage(afcHelper_PageName, text, token, "Commenting on submission");
}
}
else if(action == 'mark'){
jsMsg('<ul id="afcHelper_status"></ul><ul id="afcHelper_finish"></ul>');
document.getElementById('afcHelper_finish').innerHTML += '<span id="afcHelper_finished_wrapper"><span id="afcHelper_finished_main" style="display:none"><li id="afcHelper_done"><b>Done (<a href="/wiki/'+encodeURI(afcHelper_PageName)+'?action=purge" title="'+afcHelper_PageName+'">Reload page</a>)</b></li></span></span>';
var token = afcHelper_getToken(true);
var text = afcHelper_getPageText(afcHelper_PageName);
var afc_re = /\{\{\s*afc submission\s*\|\s*[\||h](?:\{\{[^\{\}]*\}\}|[^\}\{])*\}\}/i;
if( !afc_re.test( text ) ) {
alert( "Unable to locate AFC submission template, aborting..." );
return;
}
var afctemplate = afc_re.exec(text)[0];
var firstpipe = afctemplate.indexOf('|');
var endpipe = afctemplate.indexOf('|ts');
var newTemplate = afctemplate.substring(0, firstpipe);
newTemplate += '|r||';
newTemplate += afctemplate.substring(endpipe);
var startindex = text.indexOf(afctemplate);
var endindex = text.indexOf(afctemplate) + afctemplate.length;
text = text.substring(0, startindex) + newTemplate + text.substring(endindex);
afcHelper_editPage(afcHelper_PageName, text, token, "Marking submission as being reviewed");
}
document.getElementById('afcHelper_finished_main').style.display = '';
}
function afcHelper_getPageText(title) {
document.getElementById('afcHelper_status').innerHTML += '<li id="afcHelper_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('afcHelper_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('afcHelper_get'+escape(title)).innerHTML = 'Got <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a>';
return pagetext;
}
function afcHelper_getToken(show) {
if (show) {
document.getElementById('afcHelper_status').innerHTML += '<li id="afcHelper_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(afcHelper_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('afcHelper_gettoken').innerHTML = 'Got token';
}
return token;
}
function afcHelper_movePage(oldtitle, newtitle, token, summary, callback){
document.getElementById('afcHelper_finished_wrapper').innerHTML = '<span id="afcHelper_AJAX_finished_'+afcHelper_AJAXnumber+'" style="display:none">' + document.getElementById('afcHelper_finished_wrapper').innerHTML + '</span>';
var func_id = afcHelper_AJAXnumber;
afcHelper_AJAXnumber++;
document.getElementById('afcHelper_status').innerHTML += '<li id="afcHelper_move'+escape(oldtitle)+'">Moving <a href="/wiki/'+encodeURI(oldtitle)+'" title="'+oldtitle+'">'+oldtitle+'</a> to <a href="/wiki/'+encodeURI(newtitle)+'" title="'+newtitle+'">'+newtitle+'</a></li>';
var req = sajax_init_object();
var params = "action=move&format=json&token="+encodeURIComponent(token)+"&from="+encodeURIComponent(oldtitle) +"&to="+encodeURIComponent(newtitle)+"&reason="+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) {
var error = true;
response = eval('(' + req.responseText + ')');
try {
if (typeof(response['move']) != "undefined") {
document.getElementById('afcHelper_move'+escape(oldtitle)).innerHTML = 'Moved <a href="/wiki/'+encodeURI(oldtitle)+'" title="'+oldtitle+'">'+oldtitle+'</a>';
error = false;
} else {
document.getElementById('afcHelper_move'+escape(oldtitle)).innerHTML = '<div style="color:red"><b>Move failed on <a href="/wiki/'+encodeURI(oldtitle)+'" title="'+oldtitle+'">'+oldtitle+'</a></b></div>. Error info:' +response['error']['code'] + ' : ' + response['error']['info'];
}
}
catch(err) {
document.getElementById('afcHelper_move'+escape(oldtitle)).innerHTML = '<div style="color:red"><b>Move failed on <a href="/wiki/'+encodeURI(oldtitle)+'" title="'+oldtitle+'">'+oldtitle+'</a></b></div>';
}
if(!error){
if(callback != null)
callback();
}
document.getElementById('afcHelper_AJAX_finished_'+func_id).style.display = '';
delete req;
}
};
req.send(params);
}
function afcHelper_editPage(title, newtext, token, summary) {
document.getElementById('afcHelper_finished_wrapper').innerHTML = '<span id="afcHelper_AJAX_finished_'+afcHelper_AJAXnumber+'" style="display:none">' + document.getElementById('afcHelper_finished_wrapper').innerHTML + '</span>';
var func_id = afcHelper_AJAXnumber;
afcHelper_AJAXnumber++;
document.getElementById('afcHelper_status').innerHTML += '<li id="afcHelper_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&unwatch=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('afcHelper_edit'+escape(title)).innerHTML = 'Saved <a href="/wiki/'+encodeURI(title)+'" title="'+title+'">'+title+'</a>';
} else {
document.getElementById('afcHelper_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('afcHelper_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('afcHelper_AJAX_finished_'+func_id).style.display = '';
delete req;
}
};
req.send(params);
}
function afcHelper_addLink() {
mw.util.addPortletLink("p-cactions", "javascript:afcHelper_init()", "Review", "ca-afcHelper", "Review");
}
function afcHelper_onChange(select){
var value = select.options[select.selectedIndex].value;
if(value == 'blp' || value == 'cv'){
document.getElementById("afcHelper_blank").setAttribute("checked", "checked");
}
else
document.getElementById("afcHelper_blank").removeAttribute("checked");
}
function afcHelper_generateSelect(title, options, onchange){
var text = '<select name="' + title + '" id="' + title +'" ';
if(onchange != null)
text += 'onchange = "' + onchange + '" ';
text+= '>';
for(var i = 0; i < options.length; i ++){
var o = options[i];
text += '<option value="' + o.value + '" ';
if(o.selected)
text += 'selected="selected" ';
text += '>' + o.label + '</option>';
}
text += "</select>";
return text;
}
addOnloadHook(afcHelper_addLink);
}
importScript('User:Dr_pda/prosesize.js'); //[[User:Dr_pda/prosesize.js]]
var pendch_http;
var pendch_enabled;
var pendch_num_pages;
var pendch_refresh;
var pendch_num_idle_req;
var pendch_curr_idle_req;
var pendch_str_no_ajax = "There seems to be a problem using the PendingChanges script. Your browser is not supported. God Bless!";
var pendch_str_box_title = "Pending changes";
var pendch_str_box_title_updating = "Pending changes (updating)";
var pendch_str_box_title_failed = "Pending changes (update failed)";
var pendch_str_enable = "Enable this box";
var pendch_str_disable = "Disable this box";
$( pendch_init );
/* initalise */
function pendch_init() {
// allow user settings through
if (pendch_enabled == null) {
pendch_enabled = false;
}
if (pendch_num_pages == null) {
pendch_num_pages = 10;
}
if (pendch_refresh == null) {
pendch_refresh = 5;
}
if (pendch_num_idle_req == null) {
pendch_num_idle_req = 60;
}
// A few limits to be nice to the servers
if (pendch_num_pages > 50) {
pendch_num_pages = 50;
}
if (pendch_num_pages < 1) {
pendch_num_pages = 1;
}
if (pendch_refresh < 2) {
pendch_refresh = 2;
}
if (pendch_num_idle_req > 1000) {
pendch_num_idle_req = 1000;
}
if (pendch_num_idle_req < 5) {
pendch_num_idle_req = 5;
}
// get our cookie
if (document.cookie.length > 0) {
var c_start = document.cookie.indexOf("pendch_show_box=");
if (c_start != -1) {
c_start = c_start + 16;
var c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) {
c_end = document.cookie.length;
}
if (document.cookie.substring(c_start, c_end) == "yes") {
pendch_enabled = true;
} else {
pendch_enabled = false;
}
}
}
// Either make a request or show nothing
pendch_curr_idle_req = 0;
if (pendch_enabled == true) {
pendch_ajax_request();
} else {
pendch_draw_disabled_box();
}
}
/* init ajax */
function pendch_create_request() {
try {
pendch_http = new XMLHttpRequest();
} catch (e) {
try {
pendch_http = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
pendch_http = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
return false;
}
}
}
pendch_http.onreadystatechange = function() {
if(pendch_http.readyState == 4) pendch_ajax_response();
}
return true;
}
/* make a request */
function pendch_ajax_request() {
// if we have done too many requests, disable the box
pendch_curr_idle_req++;
if (pendch_curr_idle_req > pendch_num_idle_req) {
pendch_disable_box();
}
// check we are enabled
if (pendch_enabled == false) return;
// firstly, inform the user
var cur_box = document.getElementById('p-newpages');
if (cur_box != null) {
cur_box.firstChild.firstChild.data = pendch_str_box_title_updating;
}
if (pendch_create_request () == false) {
if (cur_box != null) {
cur_box.firstChild.firstChild.data = pendch_str_box_title_failed;
} else {
alert (pendch_str_no_ajax);
}
}
// Get the current time
var dateobj = new Date();
var now = Math.floor(dateobj.getTime() / 1000.0);
// Go back 5 mins in time
//now -= (60 * 5);
// Then make the request
pendch_http.open("GET", "/w/api.php?action=query&format=xml&list=oldreviewedpages&ornamespace=0|4&orstart=" + now + "&orlimit=" + pendch_num_pages, true);
pendch_http.send(null);
}
function pendch_draw_disabled_box() {
if (skin == 'vector') {
pendch_draw_disabled_box_vector();
} else {
pendch_draw_disabled_box_monobook();
}
}
function pendch_ajax_response() {
if (skin == 'vector') {
pendch_ajax_response_vector();
} else {
pendch_ajax_response_monobook();
}
// and do it again in 5 secs
setTimeout("pendch_ajax_request()", pendch_refresh * 1000);
}
function pendch_disable_box() {
pendch_enabled = false;
pendch_draw_disabled_box();
document.cookie = "pendch_show_box=no; path=/";
}
function pendch_enable_box() {
pendch_enabled = true;
pendch_curr_idle_req = 0;
document.cookie = "pendch_show_box=yes; path=/";
pendch_ajax_request();
}
/* Draw disabled (monobook) */
function pendch_draw_disabled_box_monobook() {
// Container div
var link_div = document.createElement('div');
link_div.className = 'pBody';
var div = document.createElement('div');
div.setAttribute('id', 'p-newpages');
div.className = 'portlet';
var heading = document.createElement('h5');
heading.appendChild(document.createTextNode(pendch_str_box_title));
div.appendChild(heading);
div.appendChild(link_div);
// enable link
var p = document.createElement('p');
p.style.fontSize = 'x-small';
p.style.margin = '0px';
var a = document.createElement('a');
a.appendChild(document.createTextNode(pendch_str_enable));
a.onclick = pendch_enable_box;
p.appendChild(a);
link_div.appendChild(p);
// now replace the div
var old_div = document.getElementById('p-newpages');
var side_col = document.getElementById('column-one');
if (old_div != null) {
side_col.replaceChild(div, old_div);
} else {
var node = document.getElementById('p-search');
side_col.insertBefore(div, node);
}
}
/* Draw response (monobook) */
function pendch_ajax_response_monobook() {
var items = pendch_http.responseXML.getElementsByTagName('p');
// create the div that holds all the newpage links
var link_div = document.createElement('div');
link_div.className = 'pBody';
var list = document.createElement('ul');
link_div.appendChild(list);
// populate the list with 10 links.
for (var i = 0; i < items.length; i++) {
var item_name = items[i].getAttribute('title');
var old_id = items[i].getAttribute('stable_revid');
item_name = item_name.replace(/&/, "%26");
var item_url = 'http://en.wikipedia.org/w/index.php?title=' + item_name + '&diff=cur&oldid=' + old_id + '&diffonly=0';
a = document.createElement('a');
a.setAttribute('href', item_url);
a.appendChild(document.createTextNode(item_name));
var li = document.createElement('li');
li.appendChild(a);
list.appendChild(li);
}
// Container div
var div = document.createElement('div');
div.setAttribute('id', 'p-newpages');
div.className = 'portlet';
var heading = document.createElement('h5');
heading.appendChild(document.createTextNode(pendch_str_box_title));
div.appendChild(heading);
div.appendChild(link_div);
// disable link
var p = document.createElement('p');
p.style.fontSize = 'x-small';
p.style.margin = '0px';
p.style.textAlign = 'right';
a = document.createElement('a');
a.appendChild(document.createTextNode(pendch_str_disable));
a.onclick = pendch_disable_box;
p.appendChild(a);
link_div.appendChild(p);
// now replace the div
var old_div = document.getElementById('p-newpages');
var side_col = document.getElementById('column-one');
if (old_div != null) {
side_col.replaceChild(div, old_div);
} else {
var node = document.getElementById('p-search');
side_col.insertBefore(div, node);
}
}
/* Draw disabled box (vector skin) */
function pendch_draw_disabled_box_vector() {
// Container div
var link_div = document.createElement('div');
link_div.className = 'body';
link_div.style.display = "block";
var div = document.createElement('div');
div.setAttribute('id', 'p-newpages');
div.className = 'portal collapsed';
var heading = document.createElement('h5');
heading.appendChild(document.createTextNode(pendch_str_box_title));
div.appendChild(heading);
div.appendChild(link_div);
// enable link
var p = document.createElement('p');
p.style.fontSize = 'x-small';
p.style.margin = '0px';
var a = document.createElement('a');
a.appendChild(document.createTextNode(pendch_str_enable));
a.onclick = pendch_enable_box;
p.appendChild(a);
// add later
// now replace the div
var old_div = document.getElementById('p-newpages');
var side_col = document.getElementById('mw-panel');
if (old_div != null) {
side_col.replaceChild(div, old_div);
} else {
var node = document.getElementById('p-interaction');
side_col.insertBefore(div, node);
}
if( typeof $ != 'undefined' && wgVectorEnabledModules.collapsiblenav ) {
$('#p-newpages > h5').keydown( function( event ) {
if ( event.which == 13 /* Enter */ || event.which == 32 /* Space */ ) {
pendch_toggle( $(this) );
}
} )
.mousedown( function() {
pendch_toggle( $(this) );
$(this).blur();
return false;
} );
} else {
link_div.appendChild(p);
}
}
/* Draw response (vector skin) */
function pendch_ajax_response_vector() {
var items = pendch_http.responseXML.getElementsByTagName('p');
// create the div that holds all the newpage links
var link_div = document.createElement('div');
link_div.className = 'body';
link_div.style.display = "block";
var list = document.createElement('ul');
link_div.appendChild(list);
// populate the list with 10 links.
for (var i = 0; i < items.length; i++) {
var item_name = items[i].getAttribute('title');
var old_id = items[i].getAttribute('stable_revid');
item_name = item_name.replace(/&/, "%26");
var item_url = 'http://en.wikipedia.org/w/index.php?title=' + item_name + '&diff=cur&oldid=' + old_id + '&diffonly=0';
a = document.createElement('a');
a.setAttribute('href', item_url);
//a.style.fontSize = 'x-small';
a.appendChild(document.createTextNode(item_name));
var li = document.createElement('li');
li.appendChild(a);
list.appendChild(li);
}
// Container div
var div = document.createElement('div');
div.setAttribute('id', 'p-newpages');
div.className = 'portal expanded';
var heading = document.createElement('h5');
heading.appendChild(document.createTextNode(pendch_str_box_title));
div.appendChild(heading);
div.appendChild(link_div);
// disable link
var p = document.createElement('p');
p.style.fontSize = 'x-small';
p.style.margin = '0px';
p.style.textAlign = 'left';
a = document.createElement('a');
a.appendChild(document.createTextNode(pendch_str_disable));
a.onclick = pendch_disable_box;
p.appendChild(a);
// add later
// now replace the div
var old_div = document.getElementById('p-newpages');
var side_col = document.getElementById('mw-panel');
if (old_div != null) {
side_col.replaceChild(div, old_div);
} else {
var node = document.getElementById('p-interaction');
side_col.insertBefore(div, node);
}
if( typeof $ != 'undefined' && wgVectorEnabledModules.collapsiblenav ) {
$('#p-newpages > h5').keydown( function( event ) {
if ( event.which == 13 /* Enter */ || event.which == 32 /* Space */ ) {
pendch_toggle( $(this) );
}
} )
.mousedown( function() {
pendch_toggle( $(this) );
$(this).blur();
return false;
} );
} else {
link_div.appendChild(p);
}
}
function pendch_toggle( $element ) {
$.cookie( 'vector-nav-' + $element.parent().attr( 'id' ), $element.parent().is( '.collapsed' ) );
if( $element.parent().is('.collapsed') ) {
pendch_enable_box();
} else {
pendch_disable_box();
}
$element
.parent()
.toggleClass( 'expanded' )
.toggleClass( 'collapsed' )
.find( 'div.body' )
.slideToggle( 'fast' );
}
if ( typeof $ != 'undefined' && typeof $.fn.wikiEditor != 'undefined' ) {
$(document).ready( function() {
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
'section': 'advanced',
'group': 'format',
'tools': {
'noinclude': {
label: 'Noinclude',
type: 'button',
icon: 'http://upload.wikimedia.org/wikipedia/commons/c/c0/Noincluido.png',
action: {
type: 'encapsulate',
options: {
pre: "<noinclude>",
post: "</noinclude>"
}
}
}
}
} );
} );
}