MediaWiki:Common.js: Difference between revisions

From LHDB
Jump to navigation Jump to search
No edit summary
No edit summary
Line 9: Line 9:


$(function () {
$(function () {
   const namespace = mw.config.get('wgNamespaceNumber');
   console.log("START");


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


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


   const url = window.location.href;
   var url = window.location.href;


   // 📅 data dostępu
   // 📅 data dostępu
   const now = new Date();
   var now = new Date();
   const messageCurrentDate = `${String(now.getDate()).padStart(2, '0')}.${String(now.getMonth() + 1).padStart(2, '0')}.${now.getFullYear()}`;
   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;


   // 🔄 wszystkie requesty naraz (bez błędów timingowych)
   // REQUESTY
   Promise.all([
  var labelRequest = $.getJSON(mw.util.wikiScript('api'), {
    action: 'wbgetentities',
    ids: entityId,
    props: 'labels',
    languages: userLang,
    format: 'json'
   });


    // label
  var revisionRequest = $.getJSON(mw.util.wikiScript('api'), {
    $.getJSON(mw.util.wikiScript('api'), {
    action: 'query',
      action: 'wbgetentities',
    prop: 'revisions',
      ids: entityId,
    titles: pageName,
      props: 'labels',
    rvprop: 'timestamp',
      languages: userLang,
    format: 'json'
      format: 'json'
  });
    }),


    // ostatnia edycja
  $.when(labelRequest, revisionRequest).done(function (labelRes, revisionRes) {
    $.getJSON(mw.util.wikiScript('api'), {
      action: 'query',
      prop: 'revisions',
      titles: pageName,
      rvprop: 'timestamp',
      format: 'json'
    })


  ]).then(function ([labelData, revisionData]) {
    var labelData = labelRes[0];
    var revisionData = revisionRes[0];


     // 🏷️ LABEL
     // 🏷️ LABEL
     let messageLabel = entityId;
     var messageLabel = entityId;
     const entity = labelData.entities[entityId];
     var entity = labelData.entities[entityId];
     if (entity.labels && entity.labels[userLang]) {
     if (entity.labels && entity.labels[userLang]) {
       messageLabel = entity.labels[userLang].value;
       messageLabel = entity.labels[userLang].value;
Line 54: Line 57:


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


     if (page?.revisions?.length > 0) {
     if (page.revisions && page.revisions.length > 0) {
       const lastEdit = new Date(page.revisions[0].timestamp);
       var lastEdit = new Date(page.revisions[0].timestamp);
       messageEdit = `${String(lastEdit.getDate()).padStart(2, '0')}.${String(lastEdit.getMonth() + 1).padStart(2, '0')}.${lastEdit.getFullYear()}`;
       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;
     }
     }


     // 🧾 FINALNY TEKST
     // 🧾 HTML
     const final_message = 'Referując do tego elementu użyj:';
     var citationHTML =
 
       messageLabel + ', ' +
    const citationHTML = `
       '<a href="' + url + '" target="_blank">' + url + '</a>, ' +
       ${messageLabel},  
       '[ostatnia edycja strony: ' + messageEdit + ', dostęp: ' + messageCurrentDate + '].';
       <a href="${url}" target="_blank">${url}</a>,  
       [ostatnia edycja strony: ${messageEdit}, dostęp: ${messageCurrentDate}].
    `;


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


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


     // 📋 kopiowanie (HTML + tekst)
     // 📋 kopiowanie (prostsze, kompatybilne)
     $('#copy-button').on('click', function () {
     $('#copy-button').on('click', function () {
       const plainText = $('#copy-target').text();
       var text = $('#copy-target').text();
      const htmlText = $('#copy-target').html();


       const item = new ClipboardItem({
       var temp = $('<textarea>');
        'text/plain': new Blob([plainText], { type: 'text/plain' }),
      $('body').append(temp);
        'text/html': new Blob([htmlText], { type: 'text/html' })
      temp.val(text).select();
       });
      document.execCommand('copy');
       temp.remove();


       navigator.clipboard.write([item]).then(() => {
       $(this).text('✔');
        $(this).text('✔');
      setTimeout(function () {
        setTimeout(() => $(this).text('⧉'), 1500);
        $('#copy-button').text('⧉');
       });
       }, 1500);
     });
     });


   });
   });
});
});

Revision as of 14:16, 23 March 2026

/* 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);
    });

  });

});