Difference between revisions of "MediaWiki:Common.js"

From Team Fortress Wiki
Jump to: navigation, search
m
m (Added Moussekateer)
Line 148: Line 148:
 
     'Firestorm', 'Daff', 'Darkman 4', 'Hackett', 'The Neotank', 'Shugo', 'Markd', 'Shine', 'Nineaxis', 'Picard', 'RJackson', 'Piemanmoo', 'Parseus', 'Focusknock', 'Smashman', 'Lhavelund', 'CruelCow', 'Alex2539' // Mods
 
     'Firestorm', 'Daff', 'Darkman 4', 'Hackett', 'The Neotank', 'Shugo', 'Markd', 'Shine', 'Nineaxis', 'Picard', 'RJackson', 'Piemanmoo', 'Parseus', 'Focusknock', 'Smashman', 'Lhavelund', 'CruelCow', 'Alex2539' // Mods
 
   ];
 
   ];
   var trustedUsers = ['UltimateTerabyte', 'CruelCow', 'Alex2539', 'Laros123', 'Lhavelund', 'Tturbo', 'Underyx', 'Zoolooman', 'Lagg', 'Ath', 'Secret Agent Clank', 'Org', 'Mechlord', 'DaTa', 'Subtlefuge', 'Vaught'];
+
   var trustedUsers = ['UltimateTerabyte', 'CruelCow', 'Alex2539', 'Laros123', 'Lhavelund', 'Tturbo', 'Underyx', 'Zoolooman', 'Lagg', 'Ath', 'Secret Agent Clank', 'Org', 'Mechlord', 'DaTa', 'Subtlefuge', 'Vaught', 'Moussekateer'];
 
   var rcMode = wgPageName == 'Special:RecentChanges';
 
   var rcMode = wgPageName == 'Special:RecentChanges';
 
   for(var i = 0; i < restOfStaff.length; i++) {
 
   for(var i = 0; i < restOfStaff.length; i++) {

Revision as of 04:36, 11 November 2010

/* Any JavaScript here will be loaded for all users on every page load. */

 /** Collapsible tables *********************************************************
  *
  *  Description: Allows tables to be collapsed, showing only the header. See
  *               [[Wikipedia:NavFrame]].
  *  Maintainers: [[User:R. Koot]]
  */
 var hasClass = (function () {
    var reCache = {};
    return function (element, className) {
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
    };
 })(); 

 var autoCollapse = 2;
 var collapseCaption = "hide";
 var expandCaption = "show";
 
 function collapseTable( tableIndex )
 {
     var Button = document.getElementById( "collapseButton" + tableIndex );
     var Table = document.getElementById( "collapsibleTable" + tableIndex );
 
     if ( !Table || !Button ) {
         return false;
     }
 
     var Rows = Table.rows;
 
     if ( Button.firstChild.data == collapseCaption ) {
         for ( var i = 1; i < Rows.length; i++ ) {
             Rows[i].style.display = "none";
         }
         Button.firstChild.data = expandCaption;
     } else {
         for ( var i = 1; i < Rows.length; i++ ) {
             Rows[i].style.display = Rows[0].style.display;
         }
         Button.firstChild.data = collapseCaption;
     }
 }
 
 function createCollapseButtons()
 {
     var tableIndex = 0;
     var NavigationBoxes = new Object();
     var Tables = document.getElementsByTagName( "table" );
 
     for ( var i = 0; i < Tables.length; i++ ) {
         if ( hasClass( Tables[i], "collapsible" ) ) {
 
             /* only add button and increment count if there is a header row to work with */
             var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
             if (!HeaderRow) continue;
             var Header = HeaderRow.getElementsByTagName( "th" )[0];
             if (!Header) continue;
 
             NavigationBoxes[ tableIndex ] = Tables[i];
             Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
 
             var Button     = document.createElement( "span" );
             var ButtonLink = document.createElement( "a" );
             var ButtonText = document.createTextNode( collapseCaption );
 
             Button.style.styleFloat = "right";
             Button.style.cssFloat = "right";
             Button.style.fontWeight = "normal";
             Button.style.textAlign = "right";
             Button.style.width = "6em";
 
             ButtonLink.style.color = Header.style.color;
             ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
             ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
             ButtonLink.appendChild( ButtonText );
 
             Button.appendChild( document.createTextNode( "[" ) );
             Button.appendChild( ButtonLink );
             Button.appendChild( document.createTextNode( "]" ) );
 
             Header.insertBefore( Button, Header.childNodes[0] );
             tableIndex++;
         }
     }
 
     for ( var i = 0;  i < tableIndex; i++ ) {
         if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
             collapseTable( i );
         }
     }
 }
 
 addOnloadHook( createCollapseButtons );
//END Collapsible tables *********************************************************

// Import charInsert by WindPower
importScript('MediaWiki:CharInsert.js');

/* Google Analytics */
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-18260470-1']);
_gaq.push(['_trackPageview']);
 (function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
/*                  */


/*
 * Add language-dependent class to <body> by User:WindPower
 * Adds .lang-something to the body, where "something" is the language of the page.
 */
function langClass() {
  // Supported list of languages (not including the default one):
  var langList = ['ar', 'cs', 'da', 'de', 'es', 'fi', 'fr', 'hu', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt', 'pt-br', 'ro', 'ru', 'sv', 'zh-hans', 'zh-hant'];
  // Assumed language if the page is in none of the languages above:
  var defaultLang = 'en';
  try {
    var body = document.getElementsByTagName('body')[0];
  } catch(e) {
    return;
  }
  var lang = defaultLang;
  for(var i in langList) {
    if(wgPageName.substr(wgPageName.length-1-langList[i].length).toLowerCase() == '/' + langList[i].toLowerCase()) {
      lang = langList[i];
      break;
    }
  }
  if(body.getAttribute('class')) {
    body.setAttribute('class', body.getAttribute('class') + ' lang-' + lang);
  } else {
    body.setAttribute('class', 'lang-' + lang);
  }
}
addOnloadHook(langClass);

// Add tooltips to certain users
function addHelpTooltips() {
  var helpUsers = ['Pilk', 'En Ex', 'Seb26', 'RJackson', 'Smashman', 'WindPower'];
  var helpMsg = 'You can ask me for help!';
  var restOfStaff = [
    /*'RobinWalker', 'JeffLane', 'Bryn', 'Joe', // Valve (don't include cause we want to see their edits well) */
    'Pilk', 'En Ex', 'Seb26', // Bureaucrats
    'DaimoN', 'G-Mang', 'OluapPlayer', 'Infi^', 'Vi3trice', 'WindPower', // Admins
    'Firestorm', 'Daff', 'Darkman 4', 'Hackett', 'The Neotank', 'Shugo', 'Markd', 'Shine', 'Nineaxis', 'Picard', 'RJackson', 'Piemanmoo', 'Parseus', 'Focusknock', 'Smashman', 'Lhavelund', 'CruelCow', 'Alex2539' // Mods
  ];
  var trustedUsers = ['UltimateTerabyte', 'CruelCow', 'Alex2539', 'Laros123', 'Lhavelund', 'Tturbo', 'Underyx', 'Zoolooman', 'Lagg', 'Ath', 'Secret Agent Clank', 'Org', 'Mechlord', 'DaTa', 'Subtlefuge', 'Vaught', 'Moussekateer'];
  var rcMode = wgPageName == 'Special:RecentChanges';
  for(var i = 0; i < restOfStaff.length; i++) {
    trustedUsers[trustedUsers.length] = restOfStaff[i];
  }
  var getRC = (function(node){
    if(!rcMode) return null;
    return node.parentNode;
  });
  var addClass = (function(node, c){
    if(node == null) return;
    var classes = node.getAttribute('class');
    if(!classes) {
      node.setAttribute('class', c);
    } else {
      node.setAttribute('class', classes + ' ' + c);
    }
  });
  var as = document.getElementsByTagName('a');
  var a, j, title, found;
  for(i = 0; i < as.length; i++) {
    a = as[i];
    if(a.getAttribute('class') && a.getAttribute('title')) {
      if(a.getAttribute('class').indexOf('mw-userlink') != -1) {
        title = a.getAttribute('title');
        var found = false;
        for(j = 0; j < helpUsers.length; j++) {
          if(title.indexOf('User:' + helpUsers[j]) != -1) {
            a.setAttribute('alt', title);
            a.setAttribute('title', helpMsg);
            addClass(a, 'helpUser');
            addClass(getRC(a), 'trusted');
            found = true;
            break;
          }
        }
        if(found) {
          continue;
        }
        for(j = 0; j < trustedUsers.length; j++) {
          if(title.indexOf('User:' + trustedUsers[j]) != -1) {
            addClass(getRC(a), 'trusted');
            break;
          }
        }
      }
    }
  }
}
addOnloadHook(addHelpTooltips);