User:Mitch 1 2/QVFD.js
Jump to navigation
Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes.
- Internet Explorer: hold down the Ctrl key and click the Refresh or Reload button, or press Ctrl+F5.
- Firefox: hold down the Shift key while clicking Reload; alternatively press Ctrl+F5 or Ctrl-Shift-R.
- Opera, Konqueror and Safari users can just click the Reload button.
- Chrome: press Ctrl+F5 or Shift+F5
// <nowiki>
// Updated QVFD script. Should probably use the option for it in preferences > gadgets instead, but thought I'd update it here too. New pages highlighting is also redundant to the gadget to do the same, but I left it in.
qvfd = {};
qvfd.addlilink = function(tabs, url, name, id) {
var na = document.createElement('a');
na.href = url;
na.id = id;
na.appendChild(document.createTextNode(name));
var li = document.createElement('li');
li.appendChild(na);
tabs.appendChild(li);
return li;
}
qvfd.addQVFD = function() {
if (document.getElementById('ca-edit')) {
var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
qvfd.addlilink(tabs, 'javascript:qvfd.go(0)', 'QVFD', 'td-qvfd');
qvfd.addlilink(tabs, 'javascript:qvfd.go(1)', 'QVFD-C', 'td-qvfdc');
}
}
qvfd.debugOutput = function(str) {
qvfd.output += str;
qvfd.panel.setBody(qvfd.output);
}
qvfd.debugStatus = function(i) {
var s = (i) ? 'green;"> [OK]' : 'red;"> [FAILED]';
qvfd.debugOutput('<span style="font-weight: bold;color:' + s + '</span>');
}
qvfd.go = function(com) {
qvfd.comment = (com) ? " - " + prompt("Comment:","") : '';
qvfd.panel = new YAHOO.widget.Panel("qvfd", { width:"240px", fixedcenter:true, draggable:true, zindex:10, modal:true, visible:false } );
qvfd.panel.setHeader('QVFDing, please wait...');
qvfd.panel.setFooter('<br /><hr>Originally by <a href="/wiki/User:Villahj_Ideeut">Villahj Ideeut</a>, modz by <a href="/wiki/User:Spang">Spang</a> and <a href="/wiki/User:Mitch_1_2">Mitch</a>')
qvfd.output = '';
qvfd.debugOutput("<br />Loading QVFD page...");
qvfd.panel.render(document.body);
qvfd.panel.show();
YAHOO.util.Connect.asyncRequest('GET', '/api.php?action=query&titles=Uncyclopedia:QuickVFD&prop=revisions|info|links&pllimit=500&rvprop=content&rvlimit=1&rvsection=1&format=xml&intoken=edit', qvfd.update, null);
}
qvfd.update = {
success: function(o) {
qvfd.debugStatus(1);
qvfd.debugOutput("<br />Checking QVFD for selected page...");
var titles = o.responseXML.getElementsByTagName('pl');
for (lk in titles) {
try {
if (titles[lk].getAttribute('title') == wgPageName) {
qvfd.debugStatus(0);
qvfd.debugOutput('<br />Page already on QVFD!<br /><a href="javascript:qvfd.panel.hide()">Close</a>');
return;
}
} catch(e) {};
}
qvfd.debugStatus(1);
qvfd.debugOutput('<br />Page not listed, adding it now...');
try {
var sectionText = o.responseXML.getElementsByTagName('rev')[0].firstChild.nodeValue;
var lines = sectionText.split('\n');
var redirect = (document.getElementById('contentSub').innerHTML.indexOf('Redirect page') == -1) ? 0 : 1;
if (redirect == 0) {
lines.splice(1,0,' [[:' + escape(wgPageName.replace(/_/g,' ')) + ']]' + qvfd.comment);
} else {
lines.splice(1,0,' {{redirect|' + escape(wgPageName.replace(/_/g,' ')) + '}}' + qvfd.comment);
};
sectionText = lines.join('\n');
} catch(e) {
qvfd.debugStatus(0);
qvfd.debugOutput('<br />Could not add text to the page!<br /><a href="javascript:qvfd.panel.hide()">Close</a>');
return;
}
qvfd.debugStatus(1);
qvfd.debugOutput('<br />Saving page...');
var token = o.responseXML.getElementsByTagName('page')[0].getAttribute('edittoken');
var post = 'title=Uncyclopedia:QuickVFD§ion=1&token=' + encodeURIComponent(token) + '&summary=←[[' + encodeURIComponent(wgPageName) +']]&text=' + encodeURIComponent(sectionText);
YAHOO.util.Connect.asyncRequest('POST', '/api.php?action=edit&format=xml', qvfd.saved, post);
},
failure: function() {
qvfd.debugStatus(0);
qvfd.debugOutput('<br />Couldn\'t connect to QVFD page!<br /><a href="javascript:qvfd.panel.hide()">Close</a>');
}
}
qvfd.saved = {
success: function(o) {
qvfd.debugStatus(1);
qvfd.debugOutput('<br /><b>Saved!</b><br /><a href="/wiki/Uncyclopedia:QuickVFD">Go to QVFD</a> or <br /><a href="javascript:qvfd.panel.hide()">close</a>');
},
failure: function(o) {
qvfd.debugStatus(0);
qvfd.debugOutput('<br /><b>Saving failed :(</b><br /><a href="/wiki/Uncyclopedia:QuickVFD">Go to QVFD</a> or <br /><a href="javascript:qvfd.panel.hide()">close</a>');
}
}
function doHighlight() {
if (gml_xmlhttp.readyState != 4) return;
var doc = gml_XMLParse(gml_xmlhttp.responseText);
if(!doc)
return;
var qvfdLinks = doc.getElementsByTagName("a");
var npList = new Array();
npList = getNPList();
var elements = npList.getElementsByTagName("li");
for(i=0; i<elements.length; i++) {
var links = elements[i].getElementsByTagName("a");
var curTitle = links[0].getAttribute("title");
if (doc.getElementById('bodyContent').innerHTML.indexOf('title="' + curTitle + '"') != -1) {
elements[i].innerHTML = "<b>[QVFD] </b>" + elements[i].innerHTML;
}
else {
elements[i].innerHTML = "<b>[<a onclick='#top' href=javascript:QVFD('" + curTitle.replace(/ /g,'_') + "',0,0)>QVFD</a>] </b>" + elements[i].innerHTML;
}
}
}
function highlightQVFD() {
if(wgPageName == "Special:NewPages" || wgPageName == "Special:RecentChanges") {
gml_xmlhttp = HTTPClient();
if (!gml_xmlhttp)
return;
try {
gml_xmlhttp.open('GET', wgServer + wgScriptPath + '/index.php?' + 'title=' + 'Uncyclopedia:QuickVFD', true);
} catch(e) {
debugStatus(0);
return;
}
if (wgPageName == "Special:NewPages")
gml_xmlhttp.onreadystatechange = doHighlight;
else
gml_xmlhttp.onreadystatechange = addRecentQVFD;
gml_xmlhttp.send(null);
}
}
function getNPList() {
var unorderedLists=document.getElementsByTagName("ul");
return unorderedLists[0];
/*
for (i=0; i<orderedLists.length; i++) {
if (orderedLists[i].className=="special") {
return orderedLists[i];
}
}
*/
}
// Based on Olipro's "Huff for Recent Changes" script
function addRecentQVFD() {
if(wgPageName != 'Special:RecentChanges')
return;
if (gml_xmlhttp.readyState != 4) return;
var doc = gml_XMLParse(gml_xmlhttp.responseText);
if(!doc)
return;
ulinks = document.getElementsByTagName('ul');
for(h = 0; h < ulinks.length; h++) {
if(ulinks[h].getAttribute('class') != 'special')
return;
lilinks = ulinks[h].getElementsByTagName('li');
for(i = 0; i < lilinks.length; i++) {
if(lilinks[i].getElementsByTagName('a')[0].innerHTML != 'hist')
continue;
replace = lilinks[i].innerHTML.substring(6, lilinks[i].innerHTML.length);
thtitle = lilinks[i].getElementsByTagName('a')[1].getAttribute('href');
thtitle = thtitle.substring(6, thtitle.length);
if (doc.getElementById('bodyContent').innerHTML.indexOf(thtitle) == -1)
lilinks[i].innerHTML = '(<b><a onclick="#top" href=javascript:QVFD("' + thtitle.replace(/ /g,'_') + '",0,0)>QVFD</a></b>)' + replace;
else
lilinks[i].innerHTML = '(<b>QVFD</b>)' + replace;
}
}
}
addOnloadHook(qvfd.addQVFD);
addOnloadHook(highlightQVFD);
// </nowiki>