Difference between revisions of "MediaWiki:Common.js"

From Project Alfheim Wiki
Jump to navigation Jump to search
(Created page with "→‎Any JavaScript here will be loaded for all users on every page load.: // Navi Copy JQuery Code by Kaddy! $('.navi-copy').each(function(index, element) { if ($("#...")
 
Line 32: Line 32:
 
     document.execCommand('copy');
 
     document.execCommand('copy');
 
}
 
}
 +
 +
 +
//Latest in Topic
 +
mw.loader.using(['mediawiki.api','mediawiki.util']).then(function () {
 +
  function showLatestInCategory(el, catTitle) {
 +
    new mw.Api().get({
 +
      action: 'query',
 +
      list: 'categorymembers',
 +
      cmtitle: 'Category:' + catTitle,
 +
      cmprop: 'title|timestamp',
 +
      cmsort: 'timestamp',  // newest added to category
 +
      cmdir: 'desc',
 +
      cmlimit: 1,
 +
      formatversion: 2
 +
    }).done(function (data) {
 +
      var item = data?.query?.categorymembers?.[0];
 +
      if (!item) { el.textContent = 'No pages in category.'; return; }
 +
      el.innerHTML = '<a href="' + mw.util.getUrl(item.title) + '">' +
 +
                    mw.html.escape(item.title) + '</a>';
 +
    }).fail(function () { el.textContent = 'Failed to load.'; });
 +
  }
 +
 +
  // Auto-initialize any placeholders:
 +
  document.querySelectorAll('[data-latest-category]').forEach(function (el) {
 +
    showLatestInCategory(el, el.getAttribute('data-latest-category'));
 +
  });
 +
});

Revision as of 23:40, 11 September 2025

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

// Navi Copy JQuery Code by Kaddy!
$('.navi-copy').each(function(index, element) {    
    if ($("#navi-copy-textarea").attr('exists') != "true") {
        txtdiv = '<textarea style="height:1px;width:1px; position:absolute;left:-1000px;" id="navi-copy-textarea" exists="true">Filler Text</textarea><style>.navi-copy-text { cursor:pointer; color:#2899e8; padding:1px; display:inline-block; } .navi-copy-text:hover { color:#c1a1f1; } .navi-copied { text-align:center; border:1px dotted #2899e8; border-radius:3px; color:#2899e8; display:inline-block; } .navi-copy {  display:inline-block; } </style>';
        $("body").append(txtdiv);
    }
    var map = $(element).children().get(0).innerHTML;
    var x = $(element).children().get(1).innerHTML;
    var y = $(element).children().get(2).innerHTML;
    var newhtml = "<div class=\"navi-copy-text\" title=\"Click here to copy to the clipboard, then paste in game\" onclick=\"CopyNaviLink(this, '"+map+"','"+x+"','"+y+"');\">("+map+" "+x+", "+y+")</div><div class=\"navi-copied\" style=\"display:none;\">Copied!</div>";
    $(element).html(newhtml);
});
function CopyNaviLink(ele, map, x, y) {
    element = $(ele);
    sibling = element.siblings();
    width = element.width();
    height = element.height()+0;
    sibling.css('width',width);
    sibling.css('height',height);
    element.css('display','none');
    sibling.css('display','inline-block');
    setTimeout(function() { 
        sibling.fadeOut().delay(300).css('display','none');
        element.css('display','inline-block');
    }, 1400);
    var ClipBoardText = "/navi "+map+" "+x+"/"+y;
    var textarea = document.getElementById('navi-copy-textarea');
    $('#navi-copy-textarea').text(ClipBoardText);
    $("#navi-copy-textarea").select();
    document.execCommand('copy');
}


//Latest in Topic
mw.loader.using(['mediawiki.api','mediawiki.util']).then(function () {
  function showLatestInCategory(el, catTitle) {
    new mw.Api().get({
      action: 'query',
      list: 'categorymembers',
      cmtitle: 'Category:' + catTitle,
      cmprop: 'title|timestamp',
      cmsort: 'timestamp',   // newest added to category
      cmdir: 'desc',
      cmlimit: 1,
      formatversion: 2
    }).done(function (data) {
      var item = data?.query?.categorymembers?.[0];
      if (!item) { el.textContent = 'No pages in category.'; return; }
      el.innerHTML = '<a href="' + mw.util.getUrl(item.title) + '">' +
                     mw.html.escape(item.title) + '</a>';
    }).fail(function () { el.textContent = 'Failed to load.'; });
  }

  // Auto-initialize any placeholders:
  document.querySelectorAll('[data-latest-category]').forEach(function (el) {
    showLatestInCategory(el, el.getAttribute('data-latest-category'));
  });
});