User:Barticus88/dpl.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/*
{{TOCright}}
This script was originally written for the needs of 
[[Wikipedia:Disambiguation pages with links|Disambiguation pages with links]], 
hence the name.  I have decided to "Class B" this script in favor of a
generalized WhatLinksHere enhancement script called 
<code>[[User:Barticus88/WhatLinksHere.js]]</code>.

==Randall Bart's whatlinkshere select script==
 by Randall Bart [[User:Barticus88]]
 version 1.1 GPL GFDL February 2007
 version 1.0 GPL GFDL January 2007
 Derived from Agentsoo/dpl.js
 
 On What links here pages, this script adds this line to your toolbox:
     Mode: DPL T P R W U
 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)

== Selection funcs ==
*/
 function getValueOf(varName) {defaultize(varName); return eval(varName);};

 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/Image_talk:' ) != -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 
           )
     )
 }

 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 
 }
/*

==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 toolbox fiddler==
*/
 function addCountLinks(){
     if (!document.URL.match('Special:Whatlinkshere')) { return; } 
       // only add toolbox link on 'whatlinkshere' pages
     target = document.getElementById('p-tb').getElementsByTagName( "ul" );
     if( target.length == 0 ){ return; } //no toolbox to hook into
 
     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 = 'Mode:' 
         + ptool ('DPL', 'DPL',        'Main Space and Template')
         + ptool ('T',   'Template',   'Template Only')
         + ptool ('P',   'Portal',     'Portal, Template, Category, Image')
         + ptool ('R',   'Redir',      'Redirect')
         + ptool ('W',   'Wiki',       'Wikipedia')
         + ptool ('U',   'User',       'User and User Talk')
         ;
 }

 addOnloadHook(addCountLinks);