Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Common.js: Difference between revisions

MediaWiki interface page
Strayerror (talk | contribs)
No edit summary
Strayerror (talk | contribs)
No edit summary
Line 26: Line 26:


mw.hook('wikipage.content').add(function ($content) {
mw.hook('wikipage.content').add(function ($content) {
   const tabs = ['21', '0.20.16'];
   const $tabs = $content.find('ul.version-tabs');
  const frag = window.location.hash.slice(1).split('#');


   var pref = localStorage.getItem('preferredVersion') || 'current';
   if (!$tabs) return;


   if (frag[0] && frag[1] && tabs.indexOf(frag[0]) !== -1) {
   const allow = ['21', '0.20.16'];
     pref = frag[0];
 
  if (location.hash) {
    if (location.hash.slice(1).endsWith('-0.20.16')) {
      const pref = '0.20.16';
    } else {
      const pref = '21';
  } else {
     const pref = localStorage.getItem('preferredVersion') || 'current';
   }
   }


   function activateTab(tab) {
   function activateTab(tab) {
     if (tabs.indexOf(tab) === -1) return;
     if (allow.indexOf(tab) === -1) return;


     $content.find('div.vt-content').hide();
     $content.find('div.vt-content').hide();
     $content.find('div.vt-' + tab.replaceAll('.', '-')).show();
     $content.find('div.vt-' + tab.replaceAll('.', '-')).show();


     $content.find('ul.version-tabs li').removeClass('active');
     $tabs.find('li').removeClass('active');
     $content.find('ul.version-tabs li[data-tab="' + tab + '"]').addClass('active');
     $tabs.find('li[data-tab="' + tab + '"]').addClass('active');


     localStorage.setItem('preferredVersion', tab);
     localStorage.setItem('preferredVersion', tab);
Line 55: Line 61:
   activateTab(pref);
   activateTab(pref);


   if (frag[0] && frag[1] && tabs.indexOf(frag[0]) !== -1) {
   if (location.hash) {
     location.hash = '#' + frag[1];
     location.hash = location.hash;
   }
   }
});
});

Revision as of 13:24, 11 October 2025

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

// Wait for document ready
$(function() {
	var htmle = function(str) {
		return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
	};

	if ($('body').hasClass('page-Summertime_Saga_Wiki') && $('body').hasClass('action-view') && $('body').hasClass('skin-vector') && $('#ajax-posts').length && $('#ajax-version').length) {
		var maxPosts = 5;

		$.getJSON('/ssdata.json', function(data) {
			$('#ajax-version').text(data.version);
			$('#ajax-posts').html('');

			data.posts.forEach(function(post, i) {
				if (i >= maxPosts) {
					return;
				}

				$('#ajax-posts').append('<dd><b>▪ ' + htmle(post.date) + ':</b> <a rel="nofollow" class="external text" href="https://www.patreon.com' + htmle(post.url) + '">' + htmle(post.title) + '</a></dd>');
			});
		});
	}
}());

mw.hook('wikipage.content').add(function ($content) {
  const $tabs = $content.find('ul.version-tabs');

  if (!$tabs) return;

  const allow = ['21', '0.20.16'];

  if (location.hash) {
    if (location.hash.slice(1).endsWith('-0.20.16')) {
      const pref = '0.20.16';
    } else {
      const pref = '21';
  } else {
    const pref = localStorage.getItem('preferredVersion') || 'current';
  }

  function activateTab(tab) {
    if (allow.indexOf(tab) === -1) return;

    $content.find('div.vt-content').hide();
    $content.find('div.vt-' + tab.replaceAll('.', '-')).show();

    $tabs.find('li').removeClass('active');
    $tabs.find('li[data-tab="' + tab + '"]').addClass('active');

    localStorage.setItem('preferredVersion', tab);
  }

  $content.find('ul.version-tabs li').click(function (e) {
    e.preventDefault();
    const selected = this.dataset.tab;
    activateTab(selected);
  });

  activateTab(pref);

  if (location.hash) {
    location.hash = location.hash;
  }
});