MediaWiki:Common.js

From LHDB
Revision as of 14:16, 23 March 2026 by Lhdb (talk | contribs)
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */
$(function () {
    var link = $('<a>')
        .attr('href', '/wiki/Deklaracja_dostepnosci')
        .text('Deklaracja dostępności');

    $('<li>').append(link).appendTo('#footer-places').parent(); 
});

$(function () {
  console.log("START");

  var namespace = mw.config.get('wgNamespaceNumber');
  if (namespace !== 120) return;

  var entityId = mw.config.get('wgTitle');
  var pageName = mw.config.get('wgPageName');
  var userLang = mw.config.get('wgUserLanguage');

  var url = window.location.href;

  // 📅 data dostępu
  var now = new Date();
  var day = String(now.getDate()).padStart(2, '0');
  var month = String(now.getMonth() + 1).padStart(2, '0');
  var year = now.getFullYear();
  var messageCurrentDate = day + '.' + month + '.' + year;

  // REQUESTY
  var labelRequest = $.getJSON(mw.util.wikiScript('api'), {
    action: 'wbgetentities',
    ids: entityId,
    props: 'labels',
    languages: userLang,
    format: 'json'
  });

  var revisionRequest = $.getJSON(mw.util.wikiScript('api'), {
    action: 'query',
    prop: 'revisions',
    titles: pageName,
    rvprop: 'timestamp',
    format: 'json'
  });

  $.when(labelRequest, revisionRequest).done(function (labelRes, revisionRes) {

    var labelData = labelRes[0];
    var revisionData = revisionRes[0];

    // 🏷️ LABEL
    var messageLabel = entityId;
    var entity = labelData.entities[entityId];
    if (entity.labels && entity.labels[userLang]) {
      messageLabel = entity.labels[userLang].value;
    }

    // 🕓 DATA EDYCJI
    var messageEdit = '';
    var pages = revisionData.query.pages;
    var page = pages[Object.keys(pages)[0]];

    if (page.revisions && page.revisions.length > 0) {
      var lastEdit = new Date(page.revisions[0].timestamp);
      var ed = String(lastEdit.getDate()).padStart(2, '0');
      var em = String(lastEdit.getMonth() + 1).padStart(2, '0');
      var ey = lastEdit.getFullYear();
      messageEdit = ed + '.' + em + '.' + ey;
    }

    // 🧾 HTML
    var citationHTML =
      messageLabel + ', ' +
      '<a href="' + url + '" target="_blank">' + url + '</a>, ' +
      '[ostatnia edycja strony: ' + messageEdit + ', dostęp: ' + messageCurrentDate + '].';

    var box = $(
      '<div class="item-message">' +
      'Referując do tego elementu użyj:<br>' +
      '<span id="copy-target">' + citationHTML + '</span>' +
      '<button id="copy-button" style="margin-left:8px;cursor:pointer;">⧉</button>' +
      '</div>'
    );

    var target = $('#mw-content-text, #content, .mw-body-content').first();
    target.prepend(box);

    // 📋 kopiowanie (prostsze, kompatybilne)
    $('#copy-button').on('click', function () {
      var text = $('#copy-target').text();

      var temp = $('<textarea>');
      $('body').append(temp);
      temp.val(text).select();
      document.execCommand('copy');
      temp.remove();

      $(this).text('✔');
      setTimeout(function () {
        $('#copy-button').text('⧉');
      }, 1500);
    });

  });

});