User:PerfectStorm/monobook.js

From Wikipedia, the free encyclopedia

If a message on your talk page led you here, please be wary of who left it. Code that you insert on this page could contain malicious content capable of compromising your account. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. If this is a .js page, the code will be executed when previewing the page.
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.
// [[User:Lupin/popups.js]]
 
document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:Lupin/popups.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
// [[User:Lupin/popups.js]]
 
document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:Lupin/popups.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
//Interiot2
 
document.write('<script type="text/javascript" src="' 
    + 'http://en.wikipedia.org/w/index.php?title=User:Interiot/Tool2/code.js' 
    + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
 
//Interiot's javascript edit counter
if (document.title.indexOf('User:Interiot/Tool2/code.js') != -1) {
  document.write('<script type="text/javascript" src="' 
    + 'http://en.wikipedia.org/w/index.php?title=User:Interiot/Tool2/code.js' 
    + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); }
 
//<nowiki> Admin-like RC Patrol tools
 
document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:VoA/monobook.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
 
//</nowiki>[[Category:Wikipedians who use RC script ]]
 
 //<nowiki> Helper tools
document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:Voice_of_All/Addtabs/monobook.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
//</nowiki>
 
 //<nowiki> Replace txt
document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:Voice_of_All/replacetxt.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
//</nowiki>[[Category:Wikipedians who use VoA script |{{PAGENAME}}]]
 
 //<nowiki> Replace txt
document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:Voice_of_All/Deletion/monobook.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
//</nowiki>[[Category:Wikipedians who use VoA script |{{PAGENAME}}]]
 
 
 //<nowiki> History tools
document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:Voice_of_All/History/monobook.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
 
//</nowiki>[[Category:Wikipedians who use VoA script |{{PAGENAME}}]]
 
 //<nowiki> Log tools
document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:Voice_of_All/Sleeper/monobook.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
 
//</nowiki>[[Category:Wikipedians who use VoA script |{{PAGENAME}}]]
 
 //<nowiki> Google tools && Spelling
document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:Voice_of_All/Google/monobook.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
//</nowiki>[[Category:Wikipedians who use VoA script |{{PAGENAME}}]]
 
// <pre><nowiki>
 
//From http://en.wikipedia.org/w/index.php?title=User:JesseW/monobook.js&oldid=20755510
function addSinceTab() {
    var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
    if (window.location.href.indexOf("&action=history&gotosince=true")!=-1) {
       do_since_I_last_edited()
    }
    else if (!/wiki\/Special:|w\/index.php?title=Special:/.test(window.location.href)) {
       var thetitle=document.title.slice(0, String(document.title).indexOf(" - "));
       var l=addlilink(tabs, "/w/index.php?title="+thetitle+"&action=history&gotosince=true", 'Changes since I last edited', '');
       l.lastChild.title="Changes since I last edited";
    }
}
function do_since_I_last_edited() {
        var csub=document.getElementById("contentSub");
        var msg=document.createElement("p");
        msg.appendChild(document.createTextNode
                        ("Parsing history... please wait..."));
        msg.className="error";
        csub.insertBefore(msg, csub.firstChild)
 
        var username=document.getElementById("pt-userpage").textContent;
        var hists=document.getElementById("pagehistory").getElementsByTagName('li');
        for (n=0;n<hists.length;n++) {
            if (hists[n].getElementsByTagName("span")[0].getElementsByTagName('a')[0].textContent==username) {
                document.location=hists[n].childNodes[1].href; 
                return;
            }
        }
 
        msg.replaceChild(document.createTextNode
                         ("You have not edited this page! (recently)"),
                         msg.firstChild);
}
 
addOnloadHook(addSinceTab);
 
// </nowiki></pre>
 
 
//<pre><nowiki>
 
document.write(
    '<st' + 'yle type="text/css">            ' +
    ' div.audiolinkbox {                     ' +
    '     border:2px solid rgb(170,170,170); ' +
    '     background-color:rgb(250,250,250); ' +
    '     position:absolute;                 ' +
    '     margin:-1.2em;                     ' +
    '     display:none;                      ' +
    ' }                                      ' +
    '<' + '/style>'
    );
 
addOnloadHook(function () {
 
    function lightup () {
        this.audioPop.style.display="inline";
    }
 
    function lightout () {
	var savedThis=this;
	clearInterval(this.lightTimer);
	this.lightTimer=setInterval(function(){hideAudioPop(savedThis);}, 2000);
    }
 
    function hideAudioPop (caller) {
	clearInterval(caller.lightTimer);
	caller.audioPop.style.display="none";
	caller.audioPop.onmouseout = null;
    }
 
    function mouseoverAudioPop () {
	var hotspot = this.hotspot;
	if (!hotspot) { return; }
	clearInterval(hotspot.lightTimer);
	this.onmouseout = function () {
	    hotspot.lightTimer=setInterval(function(){hideAudioPop(hotspot);},2000);
	};
    }
 
    /* Get all the span tags */
    spans = document.getElementsByTagName('span');
 
    /* go through them all */
    for (i=0;i<spans.length;i++) {
    /* If the span is class audiolinkinfo */
        if (spans[i].className.indexOf("audiolinkinfo") != -1) {
            /* Put it in a box */
            box = document.createElement('div');
            box.className="audiolinkbox";
            spans[i].parentNode.insertBefore(box,spans[i]);
            box.appendChild(spans[i]);
            /* Remove the parentheses */
            insidebox = spans[i].firstChild
            for (j=0;j<insidebox.childNodes.length;j++) {
                if (insidebox.childNodes[j].textContent == "(" || 
		    insidebox.childNodes[j].textContent == ")") {
                    insidebox.removeChild(insidebox.childNodes[j])
                }
            }
            /* Add the hover thing to the audiolink span */
	    var hotspot = spans[i-1];
            hotspot.onmouseout=lightout;
            hotspot.onmouseover=lightup;
	    hotspot.audioPop=box;
	    box.hotspot = hotspot;
	    box.onmouseover = mouseoverAudioPop;
        }
    }
 
});
 
function stopRedlinksEditing(){ 
    var len=document.links.length;
    for(var i=0; i<len; ++i) {
        var l=document.links[i];
        if (l.className=='new') {
            l.href=l.href.replace('&action=edit','')
                         .replace('Special:Upload&wpDestFile=', 'Image:');
        }
    }
}
addOnloadHook(stopRedlinksEditing);
 
function listRedLinks() {
        var len=document.links.length;
        var output=document.createElement('div');
        output.innerHTML='<h2>Red links</h2>';
        var gotSome=false;
        for (var i=0; i<len; ++i) {
                if (document.links[i].className=='new') {
                        gotSome=true;
                        var l=document.links[i].cloneNode(true);
                        output.appendChild(l);
                        output.appendChild(document.createElement('br'));
                }
        }
        if (gotSome){
                output.appendChild(document.createElement('hr'));
                var h1=document.getElementsByTagName('h1')[0];
                h1.parentNode.insertBefore(output, h1.nextSibling);
        }
}
addOnloadHook(function(){addToolboxLink('javascript:listRedLinks()', 'List red links');});
 
document.write('<!--[if IE]><link rel="stylesheet" type="text/css" href="' +
               'http://localhost:8080/js/ie.css"><![endif]-->');
 
window.annoy={ freq: 1000*60*15, duration: 1000*60, 
  target: 'http://en.wikipedia.org/wiki/Wikipedia:Recovering_from_Wikipediholism' };
 
 
loadJS('[[User:Lupin/watchlistfilter.js]]');
//loadJS('[[User:Lupin/annoy.js]]');
loadJS('[[User:Lupin/listsince.js]]');
 
// Filter changes live
loadJS('[[User:Lupin/recent2.js]]');
 
// Show diffs on recent changes, history pages and so on
loadJS('[[User:Lupin/recentdiffs.js]]');
 
var isIE=((self.navigator.appName).indexOf("Microsoft")!=-1);
if (!isIE) loadJS('[[User:Zocky/PicturePopups.js]]');
 
//loadJS('[[User:Zocky/CategoryBrowser.js]]');
 
window.localCSS=true;
//loadJS('[[User:Lupin/popupsdev.js]]');
tmpJS('popupsdev.js');
popupAdminLinks=true; popupShortcutKeys=true; popupFixDabs=true;
popupPreviewKillTemplates=false; popupPreviewFirstParOnly=false;
popupOnlyArticleLinks=false;
popupEditCounterTool='interiot';
popupExtraUserMenu='<menurow><<monobook|shortcut=M>>|<<editMonobook|edit>></menurow>';
popupFixRedirs=true;
popupRedlinkRemoval=true;
popupStructure='menus';
//removeTitles=false;
 
extraPopupFilters=[
 function(data) { if (/[{]{2}[Ff]eatured article[}]{2}/.test(data) )
   return '<img src="http://upload.wikimedia.org/wikipedia/en/thumb/c/cf/Cscr-featured.png/7px-Cscr-featured.png">'; 
   else return ''; }
];
 
//popupLiveOptions=true;
 
// loadJS('[[User:Lupin/editblind.js]]');
 
loadJS('[[User:Lupin/sectionkeys.js]]');
addOnloadHook(function(){window.popupShortcutKeys=true;}); // for testing
 
if (location.href == "http://en.wikipedia.org/wiki/User:Jitse_Niesen/Client-side_preferences") loadJS('[[User:Jitse_Niesen/Client-side_preferences/Main.js]]'); 
 
/////////////////////////
// messy stuff
/////////////////////////
 
addOnloadHook(function(){if (/Special(%3[Aa]|:)(Newpages|Recentchanges)/.test("Not Your Business!")) document.getElementsByTagName('h1')[0].innerHTML += ' - <a href="http://www.google.com/search?q=' + document.title.split(' - ')[0].split(' ').join('+') + '">FGI</a>';});
 
 
function addRefsLinks(btn) {
  var pageTitle=document.getElementsByTagName('h1')[0].innerHTML;
  var lks=document.links;
  var refReq=refsContent(pageTitle);
  for (var i=0; i<lks.length; ++i) {
    var article=articleFromURL(lks[i].href);
    if(!article) continue;
    var talk=null;
    if (!userName(article)) continue;
    talk=talkPage(article);
    if(!talk) continue;
    var a=document.createElement('a');
    a.href=titlebase + talk +
      '&action=edit&autoedit=s#$#\n' + refReq + ' ~~~~#&autoclick=' +
      btn + 
      '&autosummary=References for [['+
      pageTitle+
      ']]';
    var tt=document.createTextNode(' . . ');
    a.innerHTML='request references';
    lks[i].parentNode.appendChild(tt);
    lks[i].parentNode.appendChild(a);
  }
}
function refsContent(pageTitle) {
  var refRequests=['\\n\\n{{subst:unref-talk|%s}}',
    '\\n\\n==Missing refs==\\n\\nHi! I noticed that [[%s]] doesn\'t seem to have any refs, and you\'ve written a fair bit of it. Please could you add some when you get a chance? Thanks!',
    '\\n\\n==Refs?==\\n\\nHello, any chance of adding refs to [[%s]]? Cheers,',
    '\\n\\n==References for [[%s]]==\\n\\nHowdy. Do you remember the references you used when you wrote [[%s]]? If you could add them in, it\'d improve the article. Thanks in advance,',
    '\\n\\n==References needed==\\n\\nHello, I\'d like to verify [[%s]] but have no references. Please could you add the sources you used to write the article? Cheers,',
    '\\n\\n==References==\\n\\nHello! I noticed that [[%s]] doesn\'t have any references or sources. Although the contents of that article do seem like "common knowledge", it would still be helpful if you could mention your sources. Many thanks,',
    '\\n\\n==[[%s]]==\\n\\n...is unsourced. Please fix. Thanks,',
    '\\n\\n==References for [[%s]]==\\n\\nHi! I realise that it\'s been some time since you edited [[%s]], but it would be great if you could remember the references you used and add them to the page. Thanks!'
  ];
  var promptText='Select reference request:';
  for (var i=0; i<refRequests.length; ++i) { promptText += '\n\n'+i+': '+ refRequests[i];}
  var response=parseInt(prompt(promptText));
  if(!response || isNaN(response) || response >= refRequests.length || response < 0) response=0;
  return refRequests[response].split('%s').join(pageTitle);
}
 
var refs=addRefsLinks;
 
//ta['search'] = ['/','Search this wiki'];
//addOnloadFunction(function(){document.getElementById('searchInput').accessKey='/';});
 
function removeAccessKeys(keylist) {
  var t=document.getElementsByTagName('A'), u=document.getElementsByTagName('input');
  for (var i=0; i<t.length+u.length; ++i) {
    var s=((i<t.length) ? t[i] : u[i-t.length]);
    for (var j=0; j<keylist.length; ++j) if (s.accessKey==keylist[j]) s.accessKey='';
  }
};
 
function removeAnnoyingKeys() {removeAccessKeys(['d','f']);}
addOnloadFunction(removeAnnoyingKeys);
 
 
function fixWatchlistLink () {
  for (var i=0; i<document.links.length; ++i) {
    if (document.links[i].href.indexOf('Special:Watchlist')>0) {
      document.links[i].href+='?hideOwn=1';
      break;
    }
  }
};
 
if (!isIE)
{
  addOnloadFunction(fixWatchlistLink);
}
 
// summary nag
 
function perhapsSave(ev)
{
   var sum = document.getElementsByName('wpSummary');
   var submit = true;
   if (sum.length > 0) {
      sum = sum[0];
      if (isBadSummary(sum.value)) {
         if (!document.getElementById('jn-fillIn')) {
            var div = document.createElement('p');
            div.appendChild(document.createTextNode('Fill in the summary!'));
            div.setAttribute('style', 'color: #f00; font-size: 150%;');
            div.id = 'jn-fillIn';
            sum.parentNode.insertBefore(div, sum.nextSibling);
         }
         sum.focus();
         submit = false;
      }
   }
   if (submit) {
      var btn = document.getElementById('wpSave');
      btn.onclick = null;
      btn.setAttribute('type', 'submit');
      btn.click();
   }
}
 
function isBadSummary(str) {
  var sumRe=RegExp('^ *$|^/[*].*?[*]/ *$');
  return (sumRe.test(str));
}
 
function modifySaveButton()
{
   // action=edit for edit pages, action=submit for previews
   var loc=window.location.href;
   if ((loc.indexOf('&action=edit') != -1 || 
        loc.indexOf('&action=submit') != -1
       ) && loc.indexOf(':Lupin') == -1 ) {
      var btn = document.getElementById('wpSave');
      if (btn) { 
	      btn.setAttribute('type', 'button');
	      btn.onclick = perhapsSave;
      }
   }
}
 
if(!isIE) addOnloadFunction(modifySaveButton);
 
 
 
////////////////////////////////////////////////////////////////
// Evaluator
// Source: http://krolik.net/js-eval.shtml
 
var evaluatorHTML='<FORM ID="Tester" NAME="Tester" onsubmit="return TesterExecute();" >' +
  '<TEXTAREA NAME="MyCommand" COLS=60 ROWS=25 WRAP="off"></TEXTAREA>' +
  '<TEXTAREA NAME="MyResult" COLS=40 ROWS=25 WRAP="off"></TEXTAREA>' + 
  '<BR>' + 
  '<INPUT TYPE=BUTTON value="Show Object" onclick="ObjectDumpClicked();" >' + 
  '<INPUT TYPE=BUTTON value="Execute" onclick="TesterExecute();">' + 
  '</FORM>';
 
function ObjectDump(strObject) 
{
  var strOutput; 
  var vTemp; 
  var vAnotherTemp; 
  var vElement;
  vElement = eval(strObject); 
  strOutput = "typeof = " + typeof(vElement) + "\n\n";
  AppendOutput(strOutput);
  for (var x in vElement )  
  { 
   vTemp = strObject + "." + x.toString() ; 
   vAnotherTemp = strObject + "[" + x + "]" ; 
   strOutput = strOutput + vTemp + " = " + eval(vTemp) + "\n";
   AppendOutput(vTemp + " = " + eval(vTemp) + "\n");
  } 
  return strOutput ;  
 } 
 function AppendOutput(strText)
 {
  document.Tester.MyResult.value = document.Tester.MyResult.value + strText;
 }
 function Output(strText)
 {
  document.Tester.MyResult.value = strText;
 }
 function ObjectDumpClicked() 
 {
  document.Tester.MyResult.value="";
  ObjectDump(document.Tester.MyCommand.value); 
  return false;
 }
 function TesterExecute() 
 {       
  document.Tester.MyResult.value="";
  document.Tester.MyResult.value=eval(document.Tester.MyCommand.value); 
  return false;
 }
 
function addEvaluator() {
  try { 
    var evalNode=document.createElement('div');
    evalNode.id='evalNode';
    evalNode.innerHTML=evaluatorHTML;
    document.body.appendChild(evalNode);
    document.Tester=document.getElementById('Tester'); 
  }
  catch(err){};
}
 
if(!isIE || true) addOnloadFunction(addEvaluator);
 
//
// end evaluator
////////////////////////////////////////////////////////////////
 
 
// testing 
// Useful stuff from [[Wikipedia:WikiProject_User_scripts]]
 
function addToolboxLink(url, name, id){
  var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0];
  addlilink(tb, url, name, id);
}
 
function addlilink(tabs, url, name, id, title, key){
  var na = document.createElement('a');
  na.href = url;
  na.appendChild(document.createTextNode(name));
  var li = document.createElement('li');
  if(id) li.id = id;
  li.appendChild(na);
  tabs.appendChild(li);
  if(id) {
    if(key && title) ta[id] = [key, title];
    else if(key)     ta[id] = [key, ''];
    else if(title)   ta[id] = ['', title];
  }
  // re-render the title and accesskeys from existing code in wikibits.js
  akeytt();
  return li;
}
 
function addTab(url, name, id, title, key){
    var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
    addlilink(tabs, url, name, id, title, key);
}
 
function addPurge(){
    ta['ca-purge'] = ['g', 'Purge the internal cache for this page'];
    var x = document.getElementById('ca-history');
    if(!x) return;
    if(x.children) x = x.children[0].href;
    else x = x.childNodes[0].href;
    addTab(x.replace(/=history/, "=purge"), 'purge', 'ca-purge');
    akeytt();
}
 
// culled from [[User:Lupin/popups.js]]
 
function nichalp_articleFromURL(h) {
  if (typeof h != 'String') h=String(h);
  h=decodeURI(h);
  var m=RegExp('[^:]*://en\\.wikipedia\\.org/(wiki/|w/index\\.php\\?title=)([^&?]*)').exec(h);
  if(m===null) return null;
  return m[2];
}
 
function nichalp_isIpUser(user) {
  return RegExp('(User:)?' + 
                '((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}' + 
                '(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])')
    .test(user);
}
 
function nichalp_removeAnchor(article) {
  // is there a #? if not, we're done
  var i=article.indexOf('#');
  if (i == -1) return article;
  return article.substring(0,i);
}
 
function nichalp_userName(article) {
  var i=article.indexOf('User');
  var j=article.indexOf(':');
  if  (i != 0 || j == -1) return null;
  var k=article.indexOf('/');
  if (k==-1) return article.substring(j+1);
  else return article.substring(j+1,k);
}
 
// do it
 
function nichalp_customLinks() {
  addPurge();
  var article=nichalp_articleFromURL(document.location.href);
  if (!article) return;
  var user=nichalp_userName(article);
  if(!user) return;
  user=nichalp_removeAnchor(user);
  if (!nichalp_isIpUser(user)) {
    addToolboxLink('http://kohl.wikimedia.org/~kate/cgi-bin/count_edits?dbname=enwiki&user='+user, user+"'s edit count", 'toolbox_katestool');
  }
  var special='http://en.wikipedia.org/w/index.php?title=Special:';
  addToolboxLink(special + 'Log&user='+user, user+"'s log", 'toolbox_userlog');
  addToolboxLink(special + 'Blockip&ip='+user, 'Block '+user, 'toolbox_blockuser'); 
  addToolboxLink(special + 'Special:Ipblocklist&action=unblock&ip='+user, 'Unblock '+user, 'toolbox_unblockuser'); 
}
/*
</nowiki></pre>
*/