User:Machupachu/monobook.js

// 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 wikEd, an in-browser text editor // with wiki syntax highlighting document.write(' ');

// adds a tab to edit section 0 of each page addOnloadHook(function {    var x;    if (!(x = document.getElementById('ca-edit') )) return;    var url;    if (!(url = x.getElementsByTagName('a')[0] )) return;    if (!(url = url.href )) return;    var y = mw.util.addPortletLink('p-cactions', url+"&section=0", '0', 'ca-edit-0', 'Edit the lead section of this page', '0', x.nextSibling);   y.className = x.className;  // steal classes from the the edit tab...    x.className = 'istalk';     // ...and make the edit tab have no right margin    // exception: don't steal the "selected" class unless actually editing section 0:    if (/(^| )selected( |$)/.test(y.className)) {        if (!document.editform || !document.editform.wpSection || document.editform.wpSection.value != "0") {           y.className = y.className.replace(/(^| )selected( |$)/g, "$1");            x.className += ' selected';        }    } });

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

function addLastDiff {   mw.util.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 );     mw.util.addPortletLink("p-cactions", wgServer + "/wiki/Special:Contributions/" + username, "Contribs", "ca-contrib", "User   contributions");     mw.util.addPortletLink("p-cactions", wgServer + "/index.php?title=Special:Log&type=move&user=" + username, "Page moves",  "ca-pagemoves", "Page moves by this user");     mw.util.addPortletLink("p-cactions", wgServer + "/index.php?title=Special:Log&type=uploads&user=" + username, "Uploads",  "ca-uploads", "Files uploaded by this user");     mw.util.addPortletLink("p-cactions", wgServer + "/index.php?title=Special:Prefixindex&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; //Are we on a watchlist?  //days = document.getElementById('bodyContent').getElementsByTagName('ul');  days = document.evaluate( //Hell knows how it works - found in "Dive into Greasemonkey" "//ul[@class='special']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for (d = 0; d < days.snapshotLength; d++) { //For each day    day = days.snapshotItem(d);    newday = document.createElement('ul'); //This will replace the old listing    while ((diffs = day.getElementsByTagName('li')).length > 0) { //Are there any diffs left?      //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]; //This will fail for articles which contain ":" in name      hdrs = newday.getElementsByTagName('h5'); //Get the list of namespace headers      hdr = null;      for (j=0; j<hdrs.length; j++) //Find the header        if (hdrs[j].innerHTML==namespace) {          hdr = hdrs[j]; break;        }      if (hdr==null) { //Not found? Make a new one! hdr = document.createElement('h5'); hdr.innerHTML = namespace; newday.appendChild(hdr); namespacesub = document.createElement('ul'); newday.appendChild(namespacesub); }     hdr.nextSibling.appendChild(diffs[0]); //Move the diff }   newday.appendChild(document.createElement('hr')); //For readablility day.parentNode.replaceChild(newday,day); } }); addOnloadHook(function { // Adds a Logs link to the toolbox; if this is a user it shows the logs for the user rather than the page if ( wgCanonicalNamespace == "User" || wgCanonicalNamespace == "User_talk" ) { url = wgServer + "/index.php?title=Special:Log&user=" + wgTitle.split("/")[0]; } else if ( wgCanonicalNamespace == "Special" ) { // don't display link for special pages return; } else { url = wgServer + "/index.php?title=Special:Log&page=" + wgPageName; } mw.util.addPortletLink("p-tb", url, "Logs", "pt-logs"); });