Zelda Wiki

Want to contribute to this wiki?
Sign up for an account, and get started!

Come join the Zelda Wiki community Discord server!

READ MORE

Zelda Wiki
Advertisement

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.
// --------------------------------------------------------
// Variables
// --------------------------------------------------------
var action = mw.config.get("wgAction");
var pageName = mw.config.get("wgPageName");
var canonicalNamespace = mw.config.get("wgCanonicalNamespace");
var server = mw.config.get("wgServer");
var groups = mw.config.get("wgUserGroups");

// Any JavaScript here will be loaded for all users on every page load. 
importScript('MediaWiki:Tabs.js');
importScript('MediaWiki:Toggle.js');
importScript('MediaWiki:Scrollbar.js');

// --------------------------------------------------------
// Rights
// Sets a variable "rights" which will return "false" if the 
// currently logged in user is a bureaucrat, administrator, or autoconfirmed user. It will return true otherwise.
// it also defines variables which may be used elsewhere in scripts.
// --------------------------------------------------------

if (groups){

 var rights_isAuto = (groups.toString().indexOf('autoconfirmed') != -1);
 var rights_isAdmin = (groups.toString().indexOf('sysop') != -1);
 var rights_isCrat = (groups.toString().indexOf('bureaucrat') != -1);
 var rights_isRetired= (groups.toString().indexOf('retired') != -1);
 var rights = true;
}
else {
 var rights = false;
}
//

 if (rights_isCrat || rights_isAdmin || rights_isRetired)
 {importScript('MediaWiki:Admin.js');}

// --------------------------------------------------------
// staffrights.js          (adapted from http://en.wikipedia.org/wiki/User:Ais523/adminrights.js)
// This script changes the color of links to staffs' userpages in the bodyContent of Special, History pages, diff pages,
// and old page revisions.
// ("bodyContent" being everything but the tabs,personal links at the top of the screen and sidebar).
// 
// Highlighting script. Based on [[User:ais523/highlightmyname.js]].
// --------------------------------------------------------

var adminrights=new Array();
var traineerights=new Array();
var execrights=new Array();
var botrights=new Array();
var retiredrights=new Array();

adminrights['52katie']=1;
adminrights['Astroninja1']=1;
adminrights['Chuck']=1;
adminrights['Caralista']=1;
adminrights['EzloSpirit']=1;
adminrights['Link_Lab']=1;
adminrights['Midoro']=1;
adminrights['Pixel']=1;
adminrights['SnorlaxMonster']=1;
adminrights['Vaati_The_Wind_Demon']=1;

traineerights['Barquero']=1;
adminrights['Barquero']=1;
traineerights['Bwar']=1;
adminrights['Bwar']=1;

execrights['Cody']=1;
execrights['Hylian_King']=1;
execrights['Jason']=1;
execrights['Joshua']=1;
execrights['Justin']=1;
execrights['Tony']=1;
execrights['Shona']=1;

botrights['KaeporaGaebora']=1;
botrights['Redirect_fixer']=1;
botrights['The_Groosenator']=1;
botrights['Yuga']=1;
botrights['Rescue_Knight']=1;

retiredrights['Abdullah']=1;
retiredrights['Adam']=1;
retiredrights['Alexander']=1;
retiredrights['Ando']=1;
retiredrights['Aranok']=1;
retiredrights['AtrumLevis']=1;
retiredrights['Autydi']=1;
retiredrights['Axiomist']=1;
retiredrights['Axle_the_Beast']=1;
retiredrights['Bob23']=1;
retiredrights['Captain_Cornflake']=1;
retiredrights['Captain_Desdinova']=1;
retiredrights['Cartoons']=1;
retiredrights['Chocoroko']=1;
retiredrights['Chrono']=1;
retiredrights['Cipriano']=1;
retiredrights['Dannyboy601']=1;
retiredrights['Dany36']=1;
retiredrights['Davogones']=1;
retiredrights['Deku_Link']=1;
retiredrights['DIUM']=1;
retiredrights['Dustin']=1;
retiredrights['EA']=1;
retiredrights['Einstein95']=1;
retiredrights['Embyr_75']=1;
retiredrights['EpicFaceLOL991']=1;
retiredrights['Fizzle']=1;
retiredrights['Fox']=1;
retiredrights['Fury_Three']=1;
retiredrights['Gateway2Drillbit ']=1;
retiredrights['Hammer_Bro._Mike']=1;
retiredrights['Henhouse']=1;
retiredrights['Ice_Medallion']=1;
retiredrights['Jin']=1;
retiredrights['JohnGames']=1;
retiredrights['K2L']=1;
retiredrights['Kain']=1;
retiredrights['Lahvu']=1;
retiredrights['Lars']=1;
retiredrights['Lee']=1;
retiredrights['LegendZelda']=1;
retiredrights['Leminnes']=1;
retiredrights['Liyuanzao']=1;
retiredrights['Lord-of-shadow']=1;
retiredrights['Lord_of_the_Twilight']=1;
retiredrights['Lozzie']=1;
retiredrights['Mandi']=1;
retiredrights['Mases']=1;
retiredrights['Matt']=1;
retiredrights['Melchizedek']=1;
retiredrights['Minish_Link']=1;
retiredrights['Mr._Wiggles']=1;
retiredrights['Nathan']=1;
retiredrights['Noble_Wrot']=1;
retiredrights['Nox']=1;
retiredrights['Owl']=1;
retiredrights['Peefy']=1;
retiredrights['Petenu']=1;
retiredrights['PPLToast']=1;
retiredrights['Sadida']=1;
retiredrights['Sagasaki']=1;
retiredrights['Scott']=1;
retiredrights['SearanoX']=1;
retiredrights['Shetani']=1;
retiredrights['Shiningpikablu252']=1;
retiredrights['Sluzorz']=1;
retiredrights['Steven']=1;
retiredrights['Tappy']=1;
retiredrights['The_Forbidden_One']=1;
retiredrights['TheDarkHunter']=1;
retiredrights['Thewindmaker']=1;
retiredrights['Toby']=1;
retiredrights['Trico']=1;
retiredrights['Triforce_of_the_Gods']=1;
retiredrights['Wielder_of_the_Sword']=1;
retiredrights['WilliamLC']=1;
retiredrights['Xizor']=1;
retiredrights['Yami']=1;
 
function highlightstaff(n){ //node
  while(n!=null){
    if(n.nodeType==1&&n.tagName.toLowerCase()=="a"){ //anchor

      if(n.href.indexOf("/User:")!=-1){
        var u=n.href.split("/User:")[1];
        if(adminrights[u]==1)        n.className += " admin";
        else if(execrights[u]==1)    n.className += " executive";
        else if(botrights[u]==1)     n.className += " bot";
        else if(retiredrights[u]==1) n.className += " retired";
        if(traineerights[u]==1)      n.className += " trainee";
      }

      else if(n.href.indexOf("/index.php?title=User:")!=-1){
        var u=n.href.split("/index.php?title=User:")[1];
        if(adminrights[u]==1)        n.className += " admin";
        else if(execrights[u]==1)    n.className += " exec";
        else if(botrights[u]==1)     n.className += " bot";
        else if(retiredrights[u]==1) n.className += " retired";
        if(traineerights[u]==1) n.className += " trainee";
      }

      else
        if(n.firstChild!=null) highlightstaff(n.firstChild);
    }

    else{
      if(n.firstChild!=null) highlightstaff(n.firstChild);
    }
    n=n.nextSibling;
  }
}


if (canonicalNamespace == 'Special' || action == 'history' || document.URL.indexOf('diff=') > 0 || document.URL.indexOf('oldid=') > 0)
{
  $(document).ready(function() {
    highlightstaff(document.getElementById('bodyContent').firstChild);
  });
}
 
//

// --------------------------------------------------------
// addPurge
// adds a "purge" tab (after "watch")
// --------------------------------------------------------
$(document).ready(function () {
    if (action != 'edit' && canonicalNamespace != 'Special' && action != 'history' && action != 'delete' && action != 'watch' && action != 'unwatch' && action != 'protect' && action != 'markpatrolled' && action != 'rollback' && document.URL.indexOf('diff=') <= 0
    && document.URL.indexOf('oldid=') <=0)
    { var hist; var url;
    if (!(hist = document.getElementById('ca-history') )) return;
    if (!(url = hist.getElementsByTagName('a')[0] )) return;
    if (!(url = url.href )) return;
    mediaWiki.util.addPortletLink('p-cactions', url.replace(/([?&]action=)history([&#]|$)/, '$1purge$2'),
                   'purge', 'ca-purge', 'Purge server cache for this page', '0');
}
});
//

// --------------------------------------------------------
// addSubpages
// adds a 'subpages' link to the toolbox bar (excludes File, MediaWiki and Category namespaces)
// --------------------------------------------------------
//$(document).ready(function () {
//  var NSWithoutSubpages = new Array(-1, 6, 8, 14);
//  if (document.getElementById('p-tb') && NSWithoutSubpages.indexOf(mw.config.get("wgNamespaceNumber") == -1)
//    {
//    var linkSubpages = '/Special:PrefixIndex/' + pageName + '/';
//    mediaWiki.util.addPortletLink('p-tb', linkSubpages, 'Subpages', 't-subpages', 'Subpages of this page');
//    }
//});
//

// --------------------------------------------------------
// last diff
// Adds a tab which gives the latest diff for a page.
// --------------------------------------------------------
function lastdiff() {
	mediaWiki.util.addPortletLink("p-cactions", server +  "/index.php?title=" + encodeURIComponent(pageName) + "&diff=cur&oldid=prev", 
        "last", "ca-last", "Show most recent diff", '2');
}
if (canonicalNamespace != 'Special' && action != 'edit' && action != 'delete' && action != 'watch' && action 
!= 'unwatch' && action != 'protect'){ 
$(document).ready(lastdiff);
}
//

// --------------------------------------------------------
// redirects
// adds a tab to the top of pages, when clicked it highlights all links on the page that are redirects.
// --------------------------------------------------------
if (canonicalNamespace != 'Special' && action != 'history' && action != 'delete' && action != 'watch' && action 
!= 'unwatch' && action != 'protect' && action != 'markpatrolled' && action != 'rollback' && document.URL.indexOf('diff=') <= 0)
{
var highlightRedirects = {
 
 tab_redirects : null,
 
 addStylesheetRule : function(tag, style) {
  var ss = document.styleSheets[0];
  if (ss.insertRule) {
   ss.insertRule(tag + '{' + style + '}', ss.cssRules.length);
  } else if (ss.addRule) {
   ss.addRule(tag, style);
  }
 },
 
 run : function()
 {
  highlightRedirects.addStylesheetRule('a.mw-redirect', 'color:black');
  highlightRedirects.addStylesheetRule('a.mw-redirect', 'background-color:yellow');
  highlightRedirects.addStylesheetRule('a.mw-redirect:visited', 'color:dimgrey');
  highlightRedirects.addStylesheetRule('a.mw-redirect:visited', 'background-color:yellow');
 },
 
 install : function()
 {
  with(highlightRedirects)
  {
   mediaWiki.util.addPortletLink ('p-cactions', 'javascript:highlightRedirects.run();', 'redirects', 'ca-redirects', 'Highlights all links which are redirects', 'r') ||
   mediaWiki.util.addPortletLink ('views', 'javascript:highlightRedirects.run();', 'redirects', 'ca-redirects', 'Highlights all links which are redirects', 'r');
  }
 }
 
};
 
$(document).ready(highlightRedirects.install);
}
//


// --------------------------------------------------------
// Special:MovePage
// Uncheck "Leave a redirect behind" if moving a file
// --------------------------------------------------------
$(function() {
	var isMovingFile = pageName.startsWith("Special:MovePage/File");
	if(isMovingFile) {
		var leaveRedirectCheckbox = $("input[name=wpLeaveRedirect]")[0];
		leaveRedirectCheckbox.checked = false;
	}
});


// --------------------------------------------------------
// Special:ExpandTemplates
// Check "Suppress <nowiki> tags in result" when using ExpandTemplates
// --------------------------------------------------------
$(function() {
        if (pageName == "Special:ExpandTemplates") {
                document.getElementById( 'removenowiki' ).checked = true;
        }
});

/**
 * Collapsible tables
 *
 * Allows tables to be collapsed, showing only the header. See [[Wikipedia:NavFrame]].
 *
 * @version 2.0.3 (2014-03-14)
 * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
 * @author [[User:R. Koot]]
 * @author [[User:Krinkle]]
 * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
 * is supported in MediaWiki core.
 */

var autoCollapse = 2;
var collapseCaption = 'hide';
var expandCaption = 'show';
var tableIndex = 0;

function collapseTable( tableIndex ) {
    var Button = document.getElementById( 'collapseButton' + tableIndex );
    var Table = document.getElementById( 'collapsibleTable' + tableIndex );

    if ( !Table || !Button ) {
        return false;
    }

    var Rows = Table.rows;
    var i;

    if ( Button.firstChild.data === collapseCaption ) {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = 'none';
        }
        Button.firstChild.data = expandCaption;
    } else {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = Rows[0].style.display;
        }
        Button.firstChild.data = collapseCaption;
    }
}

function createClickHandler( tableIndex ) {
    return function ( e ) {
        e.preventDefault();
        collapseTable( tableIndex );
    };
}

function createCollapseButtons( $content ) {
    var NavigationBoxes = {};
    var $Tables = $content.find( 'table' );
    var i;

    $Tables.each( function( i, table ) {
        if ( $(table).hasClass( 'collapsible' ) ) {

            /* only add button and increment count if there is a header row to work with */
            var HeaderRow = table.getElementsByTagName( 'tr' )[0];
            if ( !HeaderRow ) {
                return;
            }
            var Header = table.getElementsByTagName( 'th' )[0];
            if ( !Header ) {
                return;
            }

            NavigationBoxes[ tableIndex ] = table;
            table.setAttribute( 'id', 'collapsibleTable' + tableIndex );

            var Button     = document.createElement( 'span' );
            var ButtonLink = document.createElement( 'a' );
            var ButtonText = document.createTextNode( collapseCaption );
            // Styles are declared in [[MediaWiki:Common.css]]
            Button.className = 'collapseButton';

            ButtonLink.style.color = Header.style.color;
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
            ButtonLink.setAttribute( 'href', '#' );
            $( ButtonLink ).on( 'click', createClickHandler( tableIndex ) );
            ButtonLink.appendChild( ButtonText );

            Button.appendChild( document.createTextNode( '[' ) );
            Button.appendChild( ButtonLink );
            Button.appendChild( document.createTextNode( ']' ) );

            Header.insertBefore( Button, Header.firstChild );
            tableIndex++;
        }
    } );

    for ( i = 0;  i < tableIndex; i++ ) {
        if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) ||
            ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) )
        ) {
            collapseTable( i );
        }
        else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
            var element = NavigationBoxes[i];
            while ((element = element.parentNode)) {
                if ( $( element ).hasClass( 'outercollapse' ) ) {
                    collapseTable ( i );
                    break;
                }
            }
        }
    }
}

mw.hook( 'wikipage.content' ).add( createCollapseButtons );

// --------------------------------------------------------
// Test if an element has a certain class
// Description: Uses regular expressions and caching for better performance.
// Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
// --------------------------------------------------------
 
var hasClass = (function () {
        var reCache = {};
        return function (element, className) {
                return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
        };
})();




// --------------------------------------------------------
// ForcePreviewLite
// A modified version of http://en.wikipedia.org/wiki/Wikipedia:WikiProject_User_scripts/Scripts/Force_edit_summary_alternative
// NOTE: This is not a completed script, only a test of possible options for future addition. Implementation of this script would be done by combining the code of "function forceSummary()" into "function forcePreview()" at http://www.mediawiki.org/wiki/Manual:Force_preview
 // --------------------------------------------------------

function addForceSummary()
{
    if(!/&action=edit/.test(window.location.href) && !/&action=submit/.test(window.location.href)) return;
    if(/&section=new/.test(window.location.href)) return;
    if(!document.forms.editform) return;
    document.forms.editform.wpSave.onclick = forceSummary;
}
 
function forceSummary()
{
        flashcolour(7);
        document.forms.editform.wpSave.onclick = "";
        return false;
}
 
var flashcolour_timer;
function flashcolour(count) {
    if (count%2 == 1)
        document.getElementById("wpPreview").style.backgroundColor = "silver";
    else
        document.getElementById("wpPreview").style.backgroundColor = "yellow";

 
    if (flashcolour_timer != null) {
        clearTimeout(flashcolour_timer);
        flashcolour_timer = null;
    }
 
    if (count > 0)
        flashcolour_timer = window.setTimeout("flashcolour(" + (count-1) + ")",350);
}
 
if (action != "submit" && rights == false)
{
$(document).ready(addForceSummary);
}





// --------------------------------------------------------
// Visibility Toggling
// Description: Toggles visibility for things like [[Template:Hide]]
// --------------------------------------------------------

$(document).ready(function(){
  var NavigationBarHide = '[hide ▲]';
  var NavigationBarShow = '[show ▼]';

  // Initialization
  $('.NavFrame').each(function(){
    if ($(this).children('.NavContent').css("display") == "none") {
      $(this).children('.NavHead').prepend('<span class="NavToggle">' + NavigationBarShow + '</span>');
    }
    else {
      $(this).children('.NavHead').prepend('<span class="NavToggle">' + NavigationBarHide + '</span>');
    }
  });


  // When the header is clicked
  $(".NavHead").click(function () {
    var $toggle = $(this).children('.NavToggle');
    var $content = $(this).parent().children('.NavContent');

    // toggle content
    $content.toggle();

    // toggle text
    if ($toggle.text() == NavigationBarHide) {
      $toggle.text(NavigationBarShow)
    }
    else {
      $toggle.text(NavigationBarHide)
    }
  });

});

// (end of script)

// --------------------------------------------------------
// Contains citation templates to be added to the toolbar. 
// Source: [http://mediawiki.org/wiki/Manual:Custom_edit_buttons MediaWiki.org]
// Credit to [[User:RAP|RAP]] for the images.
// --------------------------------------------------------

// We begin by getting the date for use in certain citations.
    var time = new Date();
    var curday = time.getDate();
    var month=new Array();
    month[0]="January";
    month[1]="February";
    month[2]="March";
    month[3]="April";
    month[4]="May";
    month[5]="June";
    month[6]="July";
    month[7]="August";
    month[8]="September";
    month[9]="October";
    month[10]="November";
    month[11]="December";
    var curmonth = month[time.getMonth()];
    var nowyear = time.getYear()+1900;
    var nowday = curday.toString();
    var nowmonth = curmonth.toString();

// Now we make the function itself
var addExtraButtons = function(){

// Start with web cite
        mw.toolbar.addButton( {
                imageFile: 'https://zeldawiki.org/images/9/91/Button_cite_web.png',
                speedTip: 'Web Citation',
                tagOpen: "<ref>{{Cite web|quote= |author= |published= |retrieved=" + nowmonth + " " + nowday + ", " + nowyear + "|url= |title= |site= |type=",
                tagClose: '}}</ref>',
                sampleText: '',
                imageId: ''
        } );
// Cite book
mw.toolbar.addButton( {
                imageFile: 'https://zeldawiki.org/images/e/ef/Button_cite_book.png',
                speedTip: 'Cite book',
                tagOpen: '<ref>{{Cite book|quote= |book= |publisher= |page= ',
                tagClose: '}}</ref>',
                sampleText: '',
                imageId: ''
        } );

// Cite person
mw.toolbar.addButton( {
                imageFile: 'https://zeldawiki.org/images/5/53/Button_cite_person.png',
                speedTip: 'Cite person',
                tagOpen: '<ref>{{Cite person|quote= |name= |url= |title= ',
                tagClose: '}}</ref>',
                sampleText: '',
                imageId: ''
        } );

// Cite episode
mw.toolbar.addButton( {
                imageFile: 'https://zeldawiki.org/images/1/1c/Button_cite_episode.png',
                speedTip: 'Cite episode',
                tagOpen: '<ref>{{Cite episode|quote= |name= |show= |episode= |time= ',
                tagClose: '}}</ref>',
                sampleText: '',
                imageId: ''
        } );

// Cite manual
mw.toolbar.addButton( {
                imageFile: 'https://zeldawiki.org/images/5/5d/Button_cite_manual.png',
                speedTip: 'Cite manual',
                tagOpen: '<ref>{{Cite manual|quote= |game= |page= ',
                tagClose: '}}</ref>',
                sampleText: '',
                imageId: ''
        } );

// Regular cite template
mw.toolbar.addButton( {
                imageFile: 'https://zeldawiki.org/images/2/20/Button_cite_template.png',
                speedTip: 'Regular citation',
                tagOpen: '<ref>{{Cite|(Quote)|(Person)|(Game)',
                tagClose: '}}</ref>',
                sampleText: '',
                imageId: ''
        } );

};
 
if( $.inArray( action, [ 'edit', 'submit' ] ) !== -1 ) {
        mw.loader.using( 'user.options', function () {
                if ( ! mw.user.options.get( 'usebetatoolbar' ) ) {
                        mw.loader.using( 'mediawiki.action.edit', function(){
                                $( addExtraButtons );
                        } );
                }
        } );
}

// --------------------------------------------------
// Page logs. Because they're not just for admins :P
// --------------------------------------------------
if (canonicalNamespace != "Special"){
mediaWiki.util.addPortletLink("p-tb", "http://zeldawiki.org/index.php?title=Special%3ALog&type=&user=&page=" + pageName, 
        "Page Logs", "t-logs", "Show all relevant logs for this page.", '3');
}

// --------------------------------------------------
// Preview button for Special:Upload
// --------------------------------------------------
if (pageName == 'Special:Upload') 
{
  importScript( 'MediaWiki:UploadPreview.js' );
}

/**
 * Force lowercase file extensions
 */
function force_lowercase(){
    $('#mw-upload-form').on('submit', function(){
        var dest = $('#wpDestFile').val();
        var ext = dest.split("").reverse().join("").split('.');
        ext = ext[0].split("").reverse().join("").toLowerCase();
        $('#wpDestFile').val(dest.slice(0, -3) + ext);
    });
}
$(force_lowercase());
Advertisement