User:Greenpickle/rcnst.js

From Pikipedia, the Pikmin wiki
< User:Greenpickle
Revision as of 12:04, October 11, 2009 by Greenpickle (talk | contribs) (Created page with '/* MediaWiki recent changes namespace toggler version 0.5 by Greenpickle. Put the code on any script page you want, such as User:Name/monobook.js, Mediawiki:Common.js, etc.. T…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump 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.
/*

MediaWiki recent changes namespace toggler version 0.5 by Greenpickle.

Put the code on any script page you want, such as User:Name/monobook.js,
Mediawiki:Common.js, etc..  There are a few options detailed a bit lower down.
You'll also need the following CSS on a style page of your choice (*.css):

.rcnsthidden {display: none;}

With a little knowledge, this can be modified to, for example, show all ignored
edits in a different colour, or align them to the right, rather than hide them.
Examples:

    Greyed out:
.rcnsthidden {color: #aaa;}
.rcnsthidden a {color: #777 !important;}

    Smaller font:
.rcnsthidden {font-size: 0.8em;}

    Right-aligned:
.rcnsthidden {text-align: right;}

    All three of the above:
.rcnsthidden {text-align: right; font-size: 0.8em; color: #aaa;}
.rcnsthidden a {color: #777 !important;}

To-do:
 - incorporate logs stuff: deletions, uploads, bans, etc. (separate checkbox
   list; created based on what's found in the currently shown RC)
 - make possible with enchanced (grouped) RC
 - hide h4s that have no visible contents
 - extra buttons to toggle all/invert toggle
 - check for existence of indexOf, etc. before doing anything
 - specific page include/exclude lists (requires ns prefix; remember _s)

*/

// Change this to true to make the list below an include list rather than an
// exclude list:

include = false;

// Here, default namespaces can be set; put them in '' or "" separated by
// commas, inside the [].  By default, this is the excluded list:

RCNSTList = [];

// Change these if it'll make styling easier - e.g., use ul/li and create a
// hover menu:

RCNSTbeforecheckboxes = '<span id="rcnst"><hr />\n';
RCNSTaftercheckboxes = '</span>';
RCNSTbeforecheckbox = '';
RCNSTaftercheckbox = '\n';

window.onload = function () {
    if (document.body.className.indexOf("page-Special_RecentChanges") == -1) return;
    choice = document.getElementById("namespace").childNodes;
    nslist = [];
    for (i in choice) if (choice[i].tagName == "OPTION" && choice[i].value != "") nslist[choice[i].value] = choice[i].innerHTML;
    temp = RCNSTList;
    RCNSTList = [];
    for (i in nslist) {
        if (!include && (temp.indexOf(nslist[i]) != -1)) RCNSTList[i] = false;
        else if (include && (temp.indexOf(nslist[i])) == -1) RCNSTList[i] = false;
    }
    s = RCNSTbeforecheckboxes;
    for (i in nslist) {
        if (RCNSTList[i] == false) insert = '';
        else insert = 'checked="checked"';
        s += RCNSTbeforecheckbox + '<input type="checkbox" ' + insert + 'name="RCNST' + i + '" onclick="RCNST()" /><label for="RCNST' + i + '">' + nslist[i] + '</label>' + RCNSTaftercheckbox;
    }
    s += RCNSTaftercheckboxes;
    document.getElementsByClassName("rcoptions")[0].innerHTML += s;
    RCNST();
}
function RCNST () {
    for (i in nslist) {
        if (document.getElementsByName("RCNST" + i)[0].checked) RCNSTList[i] = true;
        else RCNSTList[i] = false;
    }
    days = document.getElementsByClassName("special");
    for (i in days) {
        if (days[i].tagName != "UL") continue;
        items = days[i].childNodes;
        for (j = 0; j < items.length; j++) {
            if (items[j].tagName != "LI") continue;
            page = items[j].getElementsByTagName("a");
            for (k in page) if (page[k].innerHTML == "hist") {
                page = page[k];
                break;
            }    
            page = page.href;
            page = page.substring(page.indexOf("?title=") + 7);
            page = page.substring(0, page.indexOf("&curid="));
            page = page.substring(0, page.indexOf(":")).replace("_", " ");
            ns = nslist.indexOf(page);
            if (ns == -1) ns = 0;
            if (RCNSTList[ns]) {
                if (items[j].className.indexOf(" rcnsthidden") != -1) items[j].className =  items[j].className.substring(0, items[j].className.indexOf(" rcnsthidden"));
            } else if (items[j].className.indexOf(" rcnsthidden") == -1) items[j].className += " rcnsthidden";
        }
    }
}