User:Dirigible/monobook.js

From Guild Wars Wiki
Jump to navigationJump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/*
// Lupin's popups, [http://en.wikipedia.org/wiki/Wikipedia:Tools/Navigation_popups]

 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>');
 popupUseQueryInterface=false;
 function siteArticlePath(){ return 'wiki'; }
 function siteBotInterfacePath(){ return ''; }
 popupRevertSummary='Reverting to previous revision; this one is either spam or vandalism.';
*/

// inserting addPortletLink. For some reason this isn't in wikibits.js

 function addPortletLink(portlet, href, text, id, tooltip, accesskey, nextnode) {
 var node = document.getElementById(portlet);
 if ( !node ) return null;
 node = node.getElementsByTagName( "ul" )[0];
 if ( !node ) return null;
 var link = document.createElement( "a" );
 link.appendChild( document.createTextNode( text ) );
 link.href = href;
 var item = document.createElement( "li" );
 item.appendChild( link );
 if ( id ) item.id = id;
 if ( accesskey ) {
    link.setAttribute( "accesskey", accesskey );
    tooltip += " ["+accesskey+"]";
 }
 if ( tooltip ) {
    link.setAttribute( "title", tooltip );
 }
 if ( accesskey && tooltip ) {
    updateTooltipAccessKeys( new Array( link ) );
 }
 if ( nextnode && nextnode.parentNode == node )
    node.insertBefore( item, nextnode );
 else
    node.appendChild( item );  // IE compatibility (?)
 return item;
 }

/*
// preset summary descriptions for wikEd; must always be before the code that installs wikEd
 var wikEdComboPresetOptions = [];
 wikEdComboPresetOptions['summary'] = [
 'reply', 'wall of text', 'cleanup', 'minor cleanup',
 'linkfix', 'fixing typos', 'adding del tag', 'adding copyvio tag',
 'adding admin review tag', 'reverting vandalism', 'reverting blanking', 
 'reverting silliness' 
 ];

// installs [http://en.wikipedia.org/wiki/User:Cacycle/wikEd wikEd], an in-browser text editor
// with wiki syntax highlighting
 document.write('<script type="text/javascript" src="'
 + 'http://en.wikipedia.org/w/index.php?title=User:Cacycle/wikEd.js'
 + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
*/

// adds a "last" tab that shows a diff of the cur and prev versions of the page

 function addLastDiff()
 {
    addPortletLink('p-cactions', 'http://wiki.guildwars.com/index.php?title=' + wgPageName + "&diff=cur&oldid=prev", 'last',                                                'ca-last', 'Show most recent diff');
 }
 addOnloadHook(addLastDiff);

// installs extra user tabs: Contribs, Page Moves, Uploads, Userspace

 addOnloadHook(function() {
  if (wgTitle.indexOf("/") != -1 || document.title.indexOf("- History -") != -1)  //no subpages or history
     return;
  if (wgCanonicalNamespace == "User" || wgCanonicalNamespace == "User_talk") {
     var username = encodeURIComponent( wgTitle );
     addPortletLink("p-cactions", "http://wiki.guildwars.com/wiki/Special:Contributions/" + username, "Contribs", "ca-contrib", "User   contributions");
     addPortletLink("p-cactions", "http://wiki.guildwars.com/index.php?title=Special%3ALog&type=move&user=" + username, "Page moves",  "ca-pagemoves", "Page moves by this user");
     addPortletLink("p-cactions", "http://wiki.guildwars.com/index.php?title=Special%3ALog&type=upload&user=" + username, "Uploads",  "ca-uploads", "Files uploaded by this user");
     addPortletLink("p-cactions", "http://wiki.guildwars.com/index.php?title=Special%3APrefixindex&from=" + username + "&namespace=2", "Userspace", "", "List of pages in this user's userspace");
  }
 });

// Makes the Watchlist actually usable. Groups each day's updated entries by their respective namespaces.

 addOnloadHook(function (){
  if (location.href.indexOf('Special:Watchlist') == -1) return; 
  //days = document.getElementById('bodyContent').getElementsByTagName('ul');
  days = document.evaluate( 
    "//ul[@class='special']",
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
    null);
  for (d = 0; d < days.snapshotLength; d++) { 
    day = days.snapshotItem(d);
    newday = document.createElement('ul'); 
    while ((diffs = day.getElementsByTagName('li')).length > 0) { 
      //Try to extract the namespace
      As = diffs[0].getElementsByTagName('a');
      if (As[0].innerHTML == 'diff')
        pagename = As[2].innerHTML;
      else
        pagename = As[1].innerHTML;
      if (pagename.indexOf(':') == -1)
        namespace = 'Main';
      else
        namespace = pagename.split(':')[0]; 
      hdrs = newday.getElementsByTagName('h5'); 
      hdr = null;
      for (j=0; j<hdrs.length; j++) 
        if (hdrs[j].innerHTML==namespace) {
          hdr = hdrs[j]; break;
        }
      if (hdr==null) { 
        hdr = document.createElement('h5');
        hdr.innerHTML = namespace;
        newday.appendChild(hdr);
        namespacesub = document.createElement('ul');
        newday.appendChild(namespacesub);
      }
      hdr.nextSibling.appendChild(diffs[0]); 
    }
    newday.appendChild(document.createElement('hr')); 
    day.parentNode.replaceChild(newday,day);
  }
 });