User:Barticus88/WhatLinksHere.js

From Wikipedia, the free encyclopedia

Note: After saving, you have to bypass your browser's cache to see the changes. In Internet Explorer and Firefox, hold down the Ctrl key and click the Refresh or Reload button. Opera users have to clear their caches through Tools→Preferences, see the instructions for Opera. Konqueror and Safari users can just click the Reload button.

/*
 This script adds new tabs to What Links Here pages.  To use this 
 script, put the following in your [[Special:Mypage/monobook.js]]
 (or <skin>.js) file:
 
 importScript('User:Barticus88/WhatLinksHere.js');  // [[User:Barticus88/WhatLinksHere.js]]
 
{{TOCright}}
This script is <big>under construction</big>. If it's buggy you can try the earlier version at [[User:Barticus88/dpl.js]]
<code>
 
==Randall Bart's WhatLinksHere select script==
 by Randall Bart [[User:Barticus88]]
 version 1.2 GPL GFDL February 2007 
 fork of [[User:Barticus88/dpl.js]]
 version 1.1 GPL GFDL February 2007
 version 1.0 GPL GFDL January 2007
 May contain meaty chunks of [[User:Agentsoo/dpl.js]].
 
 On What links here pages, this script adds these tabs:
     Mode: # All DPL T PTCI R W U  5000 All-Redirect
 Each selection mode filters the list of pages
 Hover over each letter to get a description
 When selection mode is activated, a yellow banner appears at the top and
 bottom of the page, with the mode description and counts, eg
     Select Mode: Redirect (11 shown/687 hidden)
 
== Utility funcs ==
*/
 //function getValueOf(varName) {defaultize(varName);
 //                              return eval(varName);};
 function getGetParamValue (param) {
     window.location.href.match('[\?&]' + param + '=([^&]*)');
     return RegExp.$1;
 }
/*
 
== Selection funcs ==
*/
 function sel_mode_DPL (linkHTML) {
     return  !(linkHTML.toLowerCase().indexOf( '</a> (redirect page' )
                     == -1 && 
           ( linkHTML.indexOf( 'href="/wiki/Talk:' ) != -1 || 
             linkHTML.indexOf( 'href="/wiki/Category_talk:' ) != -1 || 
             linkHTML.indexOf( 'href="/wiki/Template_talk:' ) != -1 || 
             linkHTML.indexOf( 'href="/wiki/Help_talk:' ) != -1 || 
             linkHTML.indexOf( 'href="/wiki/Image:' ) != -1 || 
             linkHTML.indexOf( 'href="/wiki/Image_talk:' ) != -1 || 
             linkHTML.indexOf( 'href="/wiki/Portal:' ) != -1 || 
             linkHTML.indexOf( 'href="/wiki/Portal_talk:' ) != -1 || 
             linkHTML.indexOf( 'href="/wiki/Wikipedia:' ) != -1 ||
             linkHTML.indexOf( 'href="/wiki/Wikipedia_talk:' ) != -1 ||
             linkHTML.indexOf( 'href="/wiki/User:' ) != -1 ||
             linkHTML.indexOf( 'href="/wiki/User_talk:' ) != -1 ||
             linkHTML.indexOf( 'href="/wiki/MediaWiki:' ) != -1 ||
             linkHTML.indexOf( 'href="/wiki/MediaWiki_talk:' ) != -1 
 
           )
     )
 }
 
 function sel_mode_Template (linkHTML) {
     return  linkHTML.indexOf( 'href="/wiki/Template:' ) != -1 
 }
 
 function sel_mode_Portal (linkHTML) {
     return  linkHTML.indexOf( 'href="/wiki/Portal:' ) != -1 
         ||  linkHTML.indexOf( 'href="/wiki/Template:' ) != -1 
         ||  linkHTML.indexOf( 'href="/wiki/Category:' ) != -1 
         ||  linkHTML.indexOf( 'href="/wiki/Image:' ) != -1 
 }
 
 function sel_mode_User (linkHTML) {
     return  linkHTML.indexOf( 'href="/wiki/User:' ) != -1 
         ||  linkHTML.indexOf( 'href="/wiki/User_talk:' ) != -1 
 }
 
 function sel_mode_Wiki (linkHTML) {
     return  linkHTML.indexOf( 'href="/wiki/Wikipedia:' ) != -1 
         ||  linkHTML.indexOf( 'href="/wiki/Wikipedia_talk:' ) != -1
 }
 
 function sel_mode_Redir (linkHTML) {
     return  linkHTML.toLowerCase().indexOf( '</a> (redirect page' ) != -1
 }
 
 function sel_mode_All (linkHTML) {
     return  true
 }
/*
 
==Da Main func==
*/
 function select_pages(select_this, mode_name){
 body = document.getElementById('bodyContent');
 if( !body ){ return; }
 
 banner = document.getElementById('dpl_banner') 
 if (banner && banner.innerHTML.indexOf(mode_name) != -1) { 
     open(document.URL, "_self"); //refresh the page
     return;
 }
 
 lists = body.getElementsByTagName( "ul" );
 for( j=0; j<lists.length; j++ ){
     lists[j].style.listStyleType = 'decimal';
 }
 
 links = body.getElementsByTagName( "li" );
 dpl_in = 0;
 dpl_ex = 0;
 for( i=0; i<links.length; i++ ){
     if( select_this(links[i].innerHTML) ) {
         links[i].style.display = '';       // clear prior style
         dpl_in++;
     } else {
         links[i].style.display = 'none';   // hide
         dpl_ex++;
     }
 }
 
 window.wlhCt = window.wlhCt || 0;
 window.wlhCt ++;
 banner_text = "Select Mode: " + mode_name + " (" 
     + dpl_in.toFixed() + " shown/" + dpl_ex.toFixed() + " hidden)";
 
 if (banner) {
     banner.innerHTML = banner_text;
     banner = document.getElementById('dpl_footer');
     banner.innerHTML = banner_text;
 }else{
     banner = document.createElement("div");
     banner.id = "dpl_banner";
     banner.style.backgroundColor = "yellow";
     banner.style.fontSize = 'larger';
     banner.innerHTML = banner_text;
     body.insertBefore(banner,body.childNodes[0]);
     body = document.getElementById('footer');
     if( !body ){ return; }
     banner = document.createElement("div");
     banner.id = "dpl_footer";
     banner.style.backgroundColor = "yellow";
     banner.style.fontSize = 'larger';
     banner.innerHTML = banner_text;
     body.insertBefore(banner,body.childNodes[0]);
 }
 }/* end function select_pages
 
==Da tabbar fiddler==
*/
 addOnloadHook(function (){
     if (wgPageName.toLowerCase() != 'special:whatlinkshere') { return; } 
       // only add toolbox link on 'whatlinkshere' pages
     target = document.getElementById('p-cactions').getElementsByTagName( "ul" );
     if( target.length == 0 ){ return; } //no action bar to hook into
 
     wlhCmd = getGetParamValue ('wlhCmd');
     if( wlhCmd == 'r' ) select_pages(sel_mode_Redir,"Redirect (auto)");
 
     target = target[0];
     newTool = document.createElement("li");
     target.appendChild( newTool );
 
     function ptool(btn,func,desc){
         return '<a href="" onclick="select_pages(sel_mode_'
             + func + ',\'' + desc + '\');return false;" title="'
             + desc + '">' + btn + '</a>'
     }
     newTool.innerHTML = 'Filter mode:' 
         + ptool ('All', 'All',        'Show all')
         + ptool ('DPL', 'DPL',        'Main Space and Template')
         + ptool ('T',   'Template',   'Template Only')
         + ptool ('PTCI','Portal',     'Portal, Template, Category, Image')
         + ptool ('R',   'Redir',      'Redirect')
         + ptool ('W',   'Wiki',       'Wikipedia')
         + ptool ('U',   'User',       'User and User Talk')
         ;
 
     document.getElementById('bodyContent').innerHTML
             .match(/href="([^"]*)&amp;limit=500/);
     url500 = RegExp.$1;
     addPortletLink('p-cactions',url500 + '&limit=5000'
             ,'5000',null,'Show up to 5000 links');
     addPortletLink('p-cactions',url500 + '&limit=5000&wlhCmd=r'
             ,'All Redirects',null,'Show ALL Redirects (up to 5000 links)');
 });