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
No edit summary
m (1 revision imported)

Revision as of 17:54, 8 March 2017

// --------------------------------------------------------
// 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. 
mw.loader.load( '/index.php?title=MediaWiki:Tabs.js&action=raw&ctype=text/javascript' );
mw.loader.load( '/index.php?title=MediaWiki:Toggle.js&action=raw&ctype=text/javascript' );
mw.loader.load( '/index.php?title=MediaWiki:Scrollbar.js&action=raw&ctype=text/javascript' );
mw.loader.load( '/index.php?title=MediaWiki:Fonts.js&action=raw&ctype=text/javascript' );

// --------------------------------------------------------
// 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;
}

// --------------------------------------------------------
// 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['AzelleAx']=1;
adminrights['Chuck']=1;
adminrights['Caralista']=1;
adminrights['EzloSpirit']=1;
adminrights['KokoroSenshi']=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;
traineerights['Tralinde']=1;
adminrights['Tralinde']=1;
traineerights['Ganman3']=1;
adminrights['Ganman3']=1;
traineerights['Djanonx']=1;
adminrights['Djanonx']=1;
traineerights['Legend_of_Zelda_Freak']=1;
adminrights['Legend_of_Zelda_Freak']=1;
traineerights['Hylian_Pi']=1;
adminrights['Hylian_Pi']=1;
traineerights['Paragonfishhead']=1;
adminrights['Paragonfishhead']=1;
traineerights['Jjgodden']=1;
adminrights['Jjgodden']=1;
traineerights['benfitzy']=1;
adminrights['benfitzy']=1;

execrights['Cody']=1;
execrights['Hylian_King']=1;
execrights['Jason']=1;
execrights['Joshua']=1;
execrights['Justin']=1;
execrights['Tony']=1;
execrights['Shona']=1;
execrights['Game_widow']=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);
  });
}
 
//

// --------------------------------------------------------
// 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') 
{
  mw.loader.load( '/index.php?title=MediaWiki:UploadPreview.js&action=raw&ctype=text/javascript' );
}

/**
 * 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());