Jump to content

MediaWiki:Common.js: Difference between revisions

From Aquinas Archive
No edit summary
Tag: Reverted
No edit summary
Tag: Reverted
Line 4: Line 4:


$(function () {
$(function () {
   var $body = $('body');
   var $variants = $('.variant');
  if ($variants.length === 0) return;


   // Only run if the page has variant content
   // Get unique variant keys on the page
   if ($('.variant').length === 0) {
   var keys = [];
    return;
  $variants.each(function () {
   }
    var k = $(this).data('variant');
    if (keys.indexOf(k) === -1) keys.push(k);
  });
 
   if (keys.length < 2) return; // no need for toggle


   // Build tab bar
   // Build tab bar
   var $tabs = $('<div class="variant-tabs"></div>');
   var $tabs = $('<div class="variant-tabs"></div>');
   var $btnOlder = $('<button>Older Revision</button>').on('click', function () {
   keys.forEach(function (k) {
    $body.removeClass('variant-newer').addClass('variant-older');
    var $btn = $('<button>' + k.charAt(0).toUpperCase() + k.slice(1) + '</button>');
    localStorage.setItem('variant', 'older');
    $btn.on('click', function () {
    $tabs.find('button').removeClass('active');
      // Show only the selected variant
    $(this).addClass('active');
      $variants.hide().filter('[data-variant="' + k + '"]').show();
  });
      // Update active tab
  var $btnNewer = $('<button>Newer Revision</button>').on('click', function () {
      $tabs.find('button').removeClass('active');
    $body.removeClass('variant-older').addClass('variant-newer');
      $btn.addClass('active');
     localStorage.setItem('variant', 'newer');
      // Save selection
     $tabs.find('button').removeClass('active');
      localStorage.setItem('variant-selected', k);
    $(this).addClass('active');
     });
     $tabs.append($btn);
   });
   });


  $tabs.append($btnOlder).append($btnNewer);
   // Insert tab bar inside main content
 
   // Insert tabs above the main content
   $('#mw-content-text').prepend($tabs);
   $('#mw-content-text').prepend($tabs);


   // Load saved choice (default: newer)
   // Load saved choice or default to last variant
   var saved = localStorage.getItem('variant') || 'newer';
   var saved = localStorage.getItem('variant-selected') || keys[0];
   $body.addClass('variant-' + saved);
   $variants.hide().filter('[data-variant="' + saved + '"]').show();
   if (saved === 'older') $btnOlder.addClass('active');
   $tabs.find('button').removeClass('active')
  else $btnNewer.addClass('active');
      .filter(':contains("' + saved.charAt(0).toUpperCase() + saved.slice(1) + '")')
      .addClass('active');
});
});

Revision as of 10:08, 22 August 2025

mw.loader.load("/images/assets/image-selector.js");
/* mw.loader.load("/images/assets/nav.js"); */
mw.loader.load("https://dxgalaxy.org/js/nav.js");

$(function () {
  var $variants = $('.variant');
  if ($variants.length === 0) return;

  // Get unique variant keys on the page
  var keys = [];
  $variants.each(function () {
    var k = $(this).data('variant');
    if (keys.indexOf(k) === -1) keys.push(k);
  });

  if (keys.length < 2) return; // no need for toggle

  // Build tab bar
  var $tabs = $('<div class="variant-tabs"></div>');
  keys.forEach(function (k) {
    var $btn = $('<button>' + k.charAt(0).toUpperCase() + k.slice(1) + '</button>');
    $btn.on('click', function () {
      // Show only the selected variant
      $variants.hide().filter('[data-variant="' + k + '"]').show();
      // Update active tab
      $tabs.find('button').removeClass('active');
      $btn.addClass('active');
      // Save selection
      localStorage.setItem('variant-selected', k);
    });
    $tabs.append($btn);
  });

  // Insert tab bar inside main content
  $('#mw-content-text').prepend($tabs);

  // Load saved choice or default to last variant
  var saved = localStorage.getItem('variant-selected') || keys[0];
  $variants.hide().filter('[data-variant="' + saved + '"]').show();
  $tabs.find('button').removeClass('active')
       .filter(':contains("' + saved.charAt(0).toUpperCase() + saved.slice(1) + '")')
       .addClass('active');
});