User:Equazcion/common.js

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
/* This script adds Contributions and Statistics tabs to User and User talk pages. For Vector skin. 

To use this script, place the following line in your vector.js page:

    importScript('User:Equazcion/ContribsTabVector.js');

Add any or all of these lines after the importScript line above to set various options (the default values are shown):

    var contribsTab = true;                    // Turns the Contributions tab on or off (set to false; for off)
    var contribsTabStats = true;               // Turns the Statistics tab on or off (set to false; for off)
    var contribsTabNumber = 50;                // Number of contributions to display in the Contributions tab. Can be 1 to 5000.
    var contribsTabName = "Contributions";     // Custom name for Contributions tab. Replace quoted text with your desired name.
    var contribsTabStatsName = "Statistics";   // Custom name for Statistics tab. Replace quoted text with your desired name.

-- End of documentation -- */

if (wgNamespaceNumber == 2 || wgNamespaceNumber == 3) { // Don't do anything unless we're in user or usertalk space

  // Set default options for any that haven't been set
  if (contribsTabName == null) var contribsTabName = "Contributions";
  if (contribsTabNumber == null) var contribsTabNumber = 50;
  if (contribsTabStats == null) var contribsTabStats = true;
  if (contribsTab == null) var contribsTab = true;
  if (contribsTabStatsName == null) var contribsTabStatsName = "Statistics";
  
  // Get the current page's username
  var username = wgTitle.split("/")[0];

  // Grab leftmost tab
  var contribsTabMain = $('#left-navigation li:not(.selected)').slice(0,1).css('opacity','0.9');
  
  if (contribsTab) { // Construct the contribs tab, if it's not turned off

     // Clone main page tab, remove 'new' class in case it was red
     var tabContribs = contribsTabMain.clone(true).attr('id', contribsTabMain.attr('id')+'-').css('opacity','0.9').removeClass('new');

     // Construct contribs URL
     if (wgNoticeProject == 'commons') {
         var contribsTabURL = 'http://commons.wikimedia.org/w/index.php?title=Special:Contributions&target=' +
                           username + '&limit=' + contribsTabNumber + '&uselang=' + wgPageContentLanguage;
     } else {
         var contribsTabURL = 'http://' + wgPageContentLanguage + wgNoticeProject + '.org/w/index.php?title=Special:Contributions&target=' +
                           username + '&limit=' + contribsTabNumber + '&uselang=' + wgPageContentLanguage;
     }

     // Set contribs tab URL, text, and tooltip
     tabContribs.find('a').attr('href', contribsTabURL).empty().text(contribsTabName).attr('title', "Show this user's contributions");

  }

  if (contribsTabStats) { // Construct the stats tab, if it's not turned off
     
     // Clone main page tab, remove 'new' class in case it was red
     var tabStats = contribsTabMain.clone(true).attr('id', contribsTabMain.attr('id')+'-').css('opacity','0.9').removeClass('new');
     
     // Construct stats URL
     var contribsTabStatsURL = 'http://toolserver.org/~tparis/pcount/index.php?name=' + username + '&lang=' + 
                                wgPageContentLanguage + '&wiki=' + wgNoticeProject;

     // Set stats tab URL, text, and tooltip
     tabStats.find('a').attr('href', contribsTabStatsURL).empty().text(contribsTabStatsName).attr('title', "Show this user's editing statistics");

  }

  // Place constructed tabs before the first right-hand tab (done here for easy ordering)
  if (contribsTabStats) tabStats.insertBefore($('#right-navigation li').slice(0,1));
  if (contribsTab) tabContribs.insertBefore($('#right-navigation li').slice(0,1));

}