5,594
edits
(+quickdelete) |
(expanding) |
||
Line 1: | Line 1: | ||
{{User:Ryan Schmidt/UserNav}}This is a repository of various javascript tools that may be useful to you when editing and such. To get these tools, put the javascript in your user js (usually [[Special:Mypage/BlueCloud.js]]), then clear your browser cache. | {{User:Ryan Schmidt/UserNav}}This is a repository of various javascript tools that may be useful to you when editing and such. To get these tools, put the javascript in your user js (usually [[Special:Mypage/BlueCloud.js]]), then clear your browser cache. | ||
==IMPORTANT: Before adding any of the below== | |||
Before using any of the scripts below, make sure that you put this at the very '''top''' of your BlueCloud.js page. | |||
<pre> | |||
//Common library functions used by many of the scripts below | |||
document.write('<script type="text/javascript" src=" \ | |||
http://strategywiki.org/w/index.php?title=User:Skizzerz/Scripts/library.js \ | |||
&action=raw&ctype=text/javascript"></script>'); | |||
</pre> | |||
== Edit section link for the top section == | == Edit section link for the top section == | ||
Line 34: | Line 44: | ||
document.write('<script type="text/javascript" src=" \ | document.write('<script type="text/javascript" src=" \ | ||
http://en.wikipedia.org/w/index.php?title=User:Lupin/autoedit.js \ | http://en.wikipedia.org/w/index.php?title=User:Lupin/autoedit.js \ | ||
&action=raw&ctype=text/javascript | &action=raw&ctype=text/javascript"></script>'); | ||
</pre> | </pre> | ||
Line 45: | Line 55: | ||
document.write('<script type="text/javascript" src=" \ | document.write('<script type="text/javascript" src=" \ | ||
http://en.wikipedia.org/w/index.php?title=User:Zocky/SearchBox.js \ | http://en.wikipedia.org/w/index.php?title=User:Zocky/SearchBox.js \ | ||
&action=raw&ctype=text/javascript | &action=raw&ctype=text/javascript"></script>'); | ||
</pre> | </pre> | ||
== Edit Summary | == Edit Summary Warning Nullify == | ||
Nullifies the edit warning when you enter a blank summary | |||
<pre> | <pre> | ||
/******************************* | /********************************* | ||
** Edit Summary | ** Edit Summary Warning Nullify ** | ||
*******************************/ | *********************************/ | ||
function check_edit_summary(event) { | function check_edit_summary(event) { | ||
return; | |||
} | } | ||
</pre> | </pre> | ||
Line 86: | Line 95: | ||
addOnloadHook(checkDelete); | addOnloadHook(checkDelete); | ||
</pre> | |||
==LiFilter== | |||
Adds a filter tab to [[Special:Log]] for filtering and highlighting of results. Clicking the tab shows the filter options, and clicking again hides them. The rights log has additional filtering options. For BlueCloud skin only. | |||
Credit goes to Splarka for making this fine script. | |||
<pre> | |||
/***************************** | |||
** LiFilter script for Logs ** | |||
*****************************/ | |||
var rightsLogOnly = (document.location.href.indexOf('type=rights')==-1 && document.location.href.indexOf('Log/rights')==-1) ? false : true | |||
if(wgCanonicalSpecialPageName == 'Log' || wgCanonicalSpecialPageName == 'DeletedContributions' || wgCanonicalSpecialPageName == 'Linksearch' || wgCanonicalSpecialPageName == 'Contributions' || queryString('lifilter')) addOnloadHook(filterLiButton) | |||
function filterLiButton() { | |||
if(document.getElementById('p-cactions')) { | |||
addTab('rxfilter','javascript:filterLiForm()','Filter'); | |||
if(window.AutoLoadLogsFilter || queryString('lifilter')) filterLiForm(); | |||
} else { | |||
filterLiForm(); //not a portlet skin, so add the filter anyway. | |||
} | |||
} | |||
function | function hideFilterLiForm() { | ||
var filtertab = document.getElementById('ca-rxfilter'); | |||
filtertab.getElementsByTagName('a')[0].href = 'javascript:showFilterLiForm();'; | |||
document.getElementById('rfform').style.display = 'none'; | |||
filtertab.className = ''; | |||
} | |||
function showFilterLiForm() { | |||
var filtertab = document.getElementById('ca-rxfilter'); | |||
filtertab.getElementsByTagName('a')[0].href = 'javascript:hideFilterLiForm();'; | |||
document.getElementById('rfform').style.display = 'block'; | |||
filtertab.className = 'selected'; | |||
} | |||
function filterLiForm() { | |||
var filtertab = document.getElementById('ca-rxfilter'); | |||
filtertab.getElementsByTagName('a')[0].href = 'javascript:hideFilterLiForm();'; | |||
filtertab.className = 'selected'; | |||
var instructions = (rightsLogOnly) ? 'Regex filter the space-delimited list of rights.' : 'Regex filter the plain text representation of this list.' | |||
//generate the form | |||
var obj = (document.getElementById('contentSub')) ? document.getElementById('contentSub') : document.getElementById('topbar') | |||
if(!obj) return; | |||
var rf = document.createElement('div'); | |||
rf.setAttribute('id','rfform'); | |||
rf.style.color = 'black'; | |||
var fs = document.createElement('fieldset'); | |||
var is = document.createElement('p'); | |||
is.appendChild(document.createTextNode(instructions)); | |||
fs.appendChild(is); | |||
var lg = document.createElement('legend'); | |||
lg.appendChild(document.createTextNode('Filter <li> list (javascript)')); | |||
fs.appendChild(lg); | |||
if(rightsLogOnly) { | |||
var sel = document.createElement('select'); | |||
sel.setAttribute('id','rfselect'); | |||
var op1 = document.createElement('option'); | |||
op1.appendChild(document.createTextNode('added rights')); | |||
sel.appendChild(op1); | |||
var op2 = document.createElement('option'); | |||
op2.appendChild(document.createTextNode('removed rights')); | |||
sel.appendChild(op2); | |||
var op3 = document.createElement('option'); | |||
op3.appendChild(document.createTextNode('added OR removed')); | |||
sel.appendChild(op3); | |||
var op4 = document.createElement('option'); | |||
op4.appendChild(document.createTextNode('added/removed/static')); | |||
sel.appendChild(op4); | |||
fs.appendChild(sel); | |||
} | |||
var lab1 = document.createElement('label'); | |||
lab1.appendChild(document.createTextNode(' Regex string: ')); | |||
lab1.setAttribute('for','rfinput1'); | |||
fs.appendChild(lab1); | |||
fs.appendChild(document.createTextNode(' ')); | |||
var inp1 = document.createElement('input'); | |||
inp1.setAttribute('id','rfinput1'); | |||
inp1.setAttribute('name','rfinput1'); | |||
inp1.setAttribute('type','text'); | |||
fs.appendChild(inp1); | |||
var chk1 = document.createElement('input'); | |||
chk1.setAttribute('id','rfinput2'); | |||
chk1.setAttribute('name','rfinput2'); | |||
chk1.setAttribute('type','checkbox'); | |||
fs.appendChild(chk1); | |||
var lab2 = document.createElement('label'); | |||
lab2.appendChild(document.createTextNode('Invert ')); | |||
lab2.setAttribute('for','rfinput2'); | |||
fs.appendChild(lab2); | |||
var sub1 = document.createElement('input'); | |||
sub1.setAttribute('type','button'); | |||
sub1.setAttribute('value','Filter'); | |||
addClickHandler(sub1,function() { filterLi(false) }); | |||
sub1.setAttribute('onclick',''); | |||
fs.appendChild(sub1) | |||
fs.appendChild(document.createTextNode(' ')); | |||
var sub2 = document.createElement('input'); | |||
sub2.setAttribute('type','button'); | |||
sub2.setAttribute('value','Highlight'); | |||
addClickHandler(sub2,function() { filterLi(true) }); | |||
fs.appendChild(sub2) | |||
rf.appendChild(fs); | |||
obj.appendChild(rf); | |||
} | |||
function filterLi(hilight) { | |||
//grab options from form | |||
if(rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex; | |||
var invert = document.getElementById('rfinput2').checked; | |||
var srch = document.getElementById('rfinput1').value; | |||
var rx = new RegExp(srch,'ig'); | |||
//grab the list of all <li> in the content | |||
var bod = (document.getElementById('bodyContent')) ? document.getElementById('bodyContent') : document.getElementsByTagName('body')[0] | |||
var lis = bod.getElementsByTagName('li'); | |||
if(lis.length==0) return; | |||
//iterate | |||
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i //the regex used to grab the Special:Log/rights changes | |||
for(var i=0;i<lis.length;i++) { | |||
if(rightsLogOnly) { | |||
//Special:Log/rights | |||
var oldr = gettext(lis[i]).replace(rightrx,'$1').replace(/\, /g,' '); | |||
var newr = gettext(lis[i]).replace(rightrx,'$2').replace(/\, /g,' '); | |||
var oldrl = oldr.split(' '); var newrl = newr.split(' '); | |||
for (var j=0;j<oldrl.length;j++) { | |||
for (var k=0;k<newrl.length;k++) { | |||
if(oldrl[j]==newrl[k]) { | |||
oldrl[j] = ''; newrl[k] = ''; | |||
} | |||
} | |||
} | |||
var remr = oldrl.join(' '); var addr = newrl.join(' '); | |||
switch(type) { | |||
case 0: var look = addr; break; | |||
case 1: var look = remr; break; | |||
case 2: var look = remr + ' ' + addr; break; | |||
case 3: var look = oldr + ' ' + newr; break; | |||
} | |||
} else { | |||
//Any other list of <li> objects | |||
var look = gettext(lis[i]); | |||
} | |||
lis[i].style.display = ''; | |||
lis[i].style.backgroundColor = ''; | |||
if ((look.search(rx)!=-1 && !invert) || (look.search(rx)==-1 && invert)) { | |||
if(hilight) lis[i].style.backgroundColor = '#ffff99'; | |||
} else { | |||
if(!hilight) lis[i].style.display = 'none'; | |||
} | |||
} | |||
} | |||
</pre> | |||
==Whois IP== | |||
This script adds a "whois" tab on [[Special:Contributions]] pages for IPs that link to a whois website to obtain DNS data on the IP. The link will automatically open in a new window/tab on a left click. For BlueCloud skin only. | |||
Credit for this script goes to Splarka | |||
<pre> | |||
/******************** | |||
** Whois IP script ** | |||
********************/ | |||
//whois tab | |||
function ipwhoistab() { | |||
if(wgPageName = 'Special:Contributions') { | |||
var ip = document.getElementById('contentSub').innerHTML; | |||
ip = ip.substring(ip.indexOf(' ')+1); | |||
ip = ip.substring(0,ip.indexOf(' ')); | |||
if((ip.indexOf('<') != -1)||(ip.indexOf('.') == -1)) return; // not an ip | |||
addTab('whois', 'http://www.dnsstuff.com/tools/whois.ch?email=on&cache=off&ip=' + ip , 'Whois' ); | |||
var tab = document.getElementById('ca-whois'); | |||
var a = tab.getElementsByTagName('a')[0]; | |||
a.target = '_blank'; | |||
ta['ca-whois'] = ['1', 'dnsstuff.com']; | |||
akeytt(); | |||
} | |||
} | } | ||
addOnloadHook(ipwhoistab); | |||
</pre> | </pre> | ||
== More? == | == More? == | ||
Want something that's not listed here? Try searching for it on Google or some other search engine and if you still can't find it, feel free to drop a message on my [[User talk:Ryan Schmidt|talk page]] and I'll attempt to write it :) | Want something that's not listed here? Try searching for it on Google or some other search engine and if you still can't find it, feel free to drop a message on my [[User talk:Ryan Schmidt|talk page]] and I'll attempt to write it :) |