(+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 :) |
Revision as of 22:57, 29 May 2008
User:Ryan Schmidt/UserNavThis 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.
//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>');
Edit section link for the top section
Adds an edit link that lets you section edit the very top section.
/****************************************** ** Add Section Edit link for top section ** ******************************************/ if (wgAction == 'view' && wgNamespaceNumber >=0) addOnloadHook(function(){ var h2s = document.getElementsByTagName('H2'); var h2 = h2s[0]; if (!h2) return; if (h2.parentNode.id == 'toctitle') h2 = h2s[1]; if (!h2) return; var span = h2.firstChild; if (!span || span.className != 'editsection') return; var zero = span.cloneNode(true); if (document.getElementById('featured_icon')) zero.style.marginRight = '30px' var parent = document.getElementsByTagName('H1')[0]; parent.insertBefore(zero, parent.firstChild); var a = zero.getElementsByTagName('A')[0]; a.title = a.title.replace(/:.*$/,': 0'); a.setAttribute('href', a.href.replace(/§ion=1/,'§ion=0')); })
Auto-edit script
Enables an auto-clicking script
/******************** ** AutoEdit Script ** ********************/ document.write('<script type="text/javascript" src=" \ http://en.wikipedia.org/w/index.php?title=User:Lupin/autoedit.js \ &action=raw&ctype=text/javascript"></script>');
Find-and-replace script
Enables a search-and-replace function for the edit box, including regular expression searches. A small magnifying glass icon will appear on the left side of the macro buttons (the lightblue images above the edit box).
/**************************** ** Find and Replace Script ** ****************************/ document.write('<script type="text/javascript" src=" \ http://en.wikipedia.org/w/index.php?title=User:Zocky/SearchBox.js \ &action=raw&ctype=text/javascript"></script>');
Edit Summary Warning Nullify
Nullifies the edit warning when you enter a blank summary
/********************************* ** Edit Summary Warning Nullify ** *********************************/ function check_edit_summary(event) { return; }
QuickDelete
Changes the link of the 'delete' tab from the confirmation page to a javascript prompt for faster deletion.
/********************************** ** QuickDelete Script for Sysops ** **********************************/ function quickDeleteSetup() { var tab = document.getElementById('ca-delete'); if(!tab) return; var link = tab.getElementsByTagName('a')[0]; link.href = 'javascript:quickDelete();'; } function quickDelete() { var reason = window.prompt('Reason'); if(reason == null) return; window.location = ugPage + '&action=delete&wpReason=' + reason + '&submitdelete=true'; } addOnloadHook(quickDeleteSetup); function checkDelete() { if(queryString("submitdelete")=="true") document.getElementById('deleteconfirm').wpConfirmB.click() } addOnloadHook(checkDelete);
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.
/***************************** ** 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 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'; } } }
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
/******************** ** 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);
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 talk page and I'll attempt to write it :)