User:Kevinalewis/bioassessmentsave.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:Kevinalewis/bioassessmentsave. |
// <nowiki>
// the code organization is horribly organized, but at this point--it works!
var linkColor = "#002BB8";
var linkLead = '<a style="color:' + linkColor + ';" href="/wiki/Category:Wikipedia 1.0 assessments">';
var templateSelect;
var livingSelect;
var prioritySelect;
var workgroupSelect;
var extraSelect;
var talkpage;
var talkpagehtml;
var templateArray = new Array("WPBiography", "NovelsWikiProject");
var livingArray = new Array("", "|living=yes", "|living=no");
var priorityArray = new Array("", "Low", "Mid", "High", "Top");
var workgroupArray = new Array("", "|a&e-work-group=yes", "|politician-work-group=yes", "|british-royalty=yes", "|royalty-work-group=yes", "|military-work-group=yes", "|sports-work-group=yes", "|s&a-work-group=yes", "|musician-work-group=yes");
var extraArray = new Array("", "|listas=", "|listas=|needs-photo=yes", "|listas=|needs-infobox=yes", "|listas=|needs-infobox=yes|needs-photo=yes", "|needs-infobox=yes", "|needs-photo=yes");
function loadXMLDoc(url)
{
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
var tpreq = new XMLHttpRequest();
}
// branch for IE/Windows ActiveX version
else if (window.ActiveXObject) {
var tpreq = new ActiveXObject("Microsoft.XMLHTTP");
}
if (tpreq) {
tpreq.onreadystatechange = function () {
if (tpreq.readyState==4) {
// if "OK"
if (tpreq.status==200) {
getAssessment(tpreq);
}
// else { alert("Problem retrieving data:" + tpreq.statusText); }
}
// else { alert("Problem retrieving data:" + tpreq.statusText); }
};
tpreq.open("GET", url, true);
tpreq.send("");
}
}
function loadXMLDoc2(grade, url) //
{
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
var tpreq = new XMLHttpRequest();
}
// branch for IE/Windows ActiveX version
else if (window.ActiveXObject) {
var tpreq = new ActiveXObject("Microsoft.XMLHTTP");
}
if (tpreq) {
tpreq.onreadystatechange = function () {
if (tpreq.readyState==4) {
// if "OK"
if (tpreq.status==200) {
postAssessment(grade, tpreq);
}
// else { alert("Problem retrieving data:" + tpreq.statusText); }
}
// else { alert("Problem retrieving data:" + tpreq.statusText); }
};
tpreq.open("GET", url, true);
tpreq.send("");
}
}
function getAssessment(myreq)
{
talkpage = myreq.responseText;
var otherInfo = "";
if ( talkpage.match( /\{\{ganominee/i ) ) { otherInfo='. <i>Currently a <a href="' + wgServer + '/w/index.php?title=Wikipedia:Good_article_candidates" style="color:' + linkColor + ';">Good Article candidate</a></i>.';}
else if ( talkpage.match(/\{\{fac}/i ) ) { otherInfo='. <i>Currently a <a href="' + wgServer + '/w/index.php?title=Wikipedia:Featured_article_candidates/' + wgPageName + '&redirect=no" style="color:' + linkColor + ';">Featured Article candidate</a></i>.';}
if ( talkpage.match(/class *= *a/i) ) { update("#66ffff", "An " + linkLead + "A-class</a> article", otherInfo);}
else if ( talkpage.match(/\{\{ga[|}]/i ) || talkpage.match(/currentstatus *= *ga/i) ) { update("#66ff66", 'A <a style="color:' + linkColor + ';" href="/wiki/Wikipedia:Good Articles">Good Article</a>', otherInfo);}
else if ( talkpage.match(/class *= *b/i) ) { update("#c2ff66", "A " + linkLead + "B-class</a> article", otherInfo);}
else if ( talkpage.match(/class *= *c/i) ) { update("#ffff66", "A " + linkLead + "C-class</a> article", otherInfo);}
else if ( talkpage.match(/class *= *start/i) ) { update("#ffaa66", "A " + linkLead + "Start-class</a> article", otherInfo);}
else if ( talkpage.match(/class *= *stub/i) ) { update("#ff6666", "A " + linkLead + "Stub-class</a> article", otherInfo);}
else { update("#000000", "An " + linkLead + "unassessed</a> article", otherInfo);}
}
function addAssessment(grade) {
template = templateSelect.options[templateSelect.selectedIndex].value;
living = livingSelect.options[livingSelect.selectedIndex].value;
priority = prioritySelect.options[prioritySelect.selectedIndex].value;
workgroup = workgroupSelect.options[workgroupSelect.selectedIndex].value;
extra = extraSelect.options[extraSelect.selectedIndex].value;
if (talkpage == null) { xxtalkpage = talkpage; talkpage = "";}
if ( talkpage.match(new RegExp("(\{\{"+template+"[^}]*)([A-Za-z]*)[^}]*}}", "i" ) ) )
{ talkpage = talkpage.replace(RegExp.$1+RegExp.$2, "\r\n{{"+template+living+"|class="+grade+"|priority="+priority+workgroup+extra); }
else if ( talkpage.match(new RegExp("(\{\{"+template+" *)([}|] *[^}]*}})", "i" ) ) )
{ talkpage = talkpage.replace(RegExp.$1+RegExp.$2, RegExp.$1 + living + "|class=" + grade + "|priority=" + priority + workgroup+extra); }
else if ( talkpage.match(/(\{\{[^}]*}})/ ) )
{ talkpage = talkpage.replace(RegExp.$1, RegExp.$1 + "\r\n{{"+template+living+"|class="+grade+"|priority="+priority+workgroup+extra+"}}\r\n"); }
else { talkpage = "{{"+template+living+"|class="+grade+"|priority="+priority+workgroup+extra+"}}\r\n" + xxtalkpage + talkpage; }
loadXMLDoc2(grade, mw.config.get('wgServer') + mw.config.get('wgScriptPath') + "/index.php?title=Talk:" + encodeURIComponent(wgTitle) + "&action=edit");
}
function postAssessment(grade, myreq) {
talkpagehtml = myreq.responseText;
var minorEdit = '<input name="wpMinoredit" type="hidden" value="1" id="wpMinoredit" />';
if (typeof assessmentMarkAsMinor != "undefined" ) {
if ( !assessmentMarkAsMinor ) { minorEdit = ""; }
}
else
if ( talkpagehtml.match(/<input type=.hidden. value="([\w\d]+)." name="wpEditToken"/i) ) {
var editToken = RegExp.$1;
}
if ( talkpagehtml.match(/<input name="wpAutoSummary" type="hidden" value="([\w\d]+)"/i) ) {
var autoSummary = RegExp.$1;
}
if ( talkpagehtml.match(/<input type=.hidden. value="([\d]+)" name="wpStarttime"/i) ) {
var startTime = RegExp.$1;
}
if ( talkpagehtml.match(/<input type=.hidden. value="([\d]+)" name="wpEdittime"/i) ) {
var editTime = RegExp.$1;
}
mydiv = document.createElement("div");
mydiv.innerHTML = '<form style="visibility: hidden;" id="editform" name="editform" method="post" action="/w/index.php?title=Talk:' + encodeURIComponent(mw.config.get('wgPageName')) + '&action=edit" enctype="multipart/form-data"><textarea tabindex="1" accesskey="," name="wpTextbox1" id="wpTextbox1"></textarea><input tabindex="2" type="text" value="" name="wpSummary" id="wpSummary" maxlength="200" size="60" />' + minorEdit + '<input id="wpPreview" name="wpPreview" type="submit"/><input type="hidden" value="' + startTime + '" name="wpStarttime" /><input type="hidden" value="' + editTime + '" name="wpEdittime" /><input type="hidden" value="'+ editToken + '\" name="wpEditToken" /><input name="wpAutoSummary" type="hidden" value="' + autoSummary + '" /></form>';
document.body.appendChild(mydiv);
document.editform.elements["wpTextbox1"].value = talkpage;
document.editform.elements["wpSummary"].value = 'Assessed [[Wikipedia:WikiProject Biography|WikiProject Biography]] article (' + grade + ' class)';
document.editform.submit();
}
function update(color, slogan, info) {
document.getElementsByTagName("h1")[0].style.cssText = "color: " + color + ";";
t = document.getElementById("siteSub").innerHTML;
document.getElementById("siteSub").innerHTML = "<i>" + slogan + "</i> " + t.charAt(0).toLowerCase() + t.substring(1) + info;
templateSelect = document.createElement("select");
for (x = 0; x < templateArray.sort().length ; x++) {
templateSelect.options[x] = new Option(templateArray[x], templateArray[x]);
if (typeof defaultProject != "undefined" && templateArray[x] == defaultProject) {
var projectIndex = x;
}
}
if (projectIndex >= 0 ) { templateSelect.selectedIndex = projectIndex; }
document.getElementById("contentSub").appendChild(templateSelect);
livingSelect = document.createElement("select");
for (x = 0; x < livingArray.sort().length ; x++) {
livingSelect.options[x] = new Option(livingArray[x], livingArray[x]);
if (typeof defaultLiving != "undefined" && livingArray[x] == defaultLiving) {
var livingIndex = x;
}
}
if (livingIndex >= 0 ) { livingSelect.selectedIndex = livingIndex; }
document.getElementById("contentSub").appendChild(livingSelect);
prioritySelect = document.createElement("select");
for (x = 0; x < priorityArray.sort().length ; x++) {
prioritySelect.options[x] = new Option(priorityArray[x], priorityArray[x]);
if (typeof defaultPriority != "undefined" && priorityArray[x] == defaultPriority) {
var priorityIndex = x;
}
}
if (priorityIndex >= 0 ) { prioritySelect.selectedIndex = priorityIndex; }
document.getElementById("contentSub").appendChild(prioritySelect);
workgroupSelect = document.createElement("select");
for (x = 0; x < workgroupArray.sort().length ; x++) {
workgroupSelect.options[x] = new Option(workgroupArray[x], workgroupArray[x]);
if (typeof defaultWorkgroup != "undefined" && workgroupArray[x] == defaultWorkgroup) {
var workgroupIndex = x;
}
}
if (workgroupIndex >= 0 ) { workgroupSelect.selectedIndex = workgroupIndex; }
document.getElementById("contentSub").appendChild(workgroupSelect);
extraSelect = document.createElement("select");
for (x = 0; x < extraArray.sort().length ; x++) {
extraSelect.options[x] = new Option(extraArray[x], extraArray[x]);
if (typeof defaultExtra != "undefined" && extraArray[x] == defaultExtra) {
var extraIndex = x;
}
}
if (extraIndex >= 0 ) { extraSelect.selectedIndex = extraIndex; }
document.getElementById("contentSub").appendChild(extraSelect);
var grades = document.createElement("div");
grades.innerHTML = '<a href="javascript:addAssessment(\'Stub\')">Stub</a> <a href="javascript:addAssessment(\'Start\')">Start</a> <a href="javascript:addAssessment(\'C\')">C</a> <a href="javascript:addAssessment(\'B\')">B</a> <a href="javascript:addAssessment(\'GA\')">GA</a> <a href="javascript:addAssessment(\'A\')">A</a>';
document.getElementById("contentSub").appendChild(templateSelect);
document.getElementById("contentSub").appendChild(livingSelect);
document.getElementById("contentSub").appendChild(prioritySelect);
document.getElementById("contentSub").appendChild(workgroupSelect);
document.getElementById("contentSub").appendChild(extraSelect);
document.getElementById("contentSub").appendChild(grades);
}
function begin() {
if ( wgNamespaceNumber==0 && !location.pathname.match('/w/index.php') ) {
if ( document.getElementById("ca-talk").className == "new" ) {
update("#000000", "An " + linkLead + "unassessed</a> article", "");
}
else if ( document.getElementById("featured-star") ) {update("#0066CC", 'A <a style="color:' + linkColor + ';" href="/wiki/Wikipedia:Featured Articles">Featured Article</a>', "");}
else {
var url = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + "/index.php?title=Talk:" + encodeURIComponent(wgTitle) + "&action=raw";
loadXMLDoc(url);
}
}
}
addOnloadHook(begin);
// </nowiki>