Uživatel:JankoTheFox/common.js

Z Necyklopedie
Skočit na navigaci Skočit na vyhledávání

Poznámka: Po zveřejnění musíte vyprázdnit cache vašeho prohlížeče, jinak změny neuvidíte.

  • Firefox / Safari: Při kliknutí na Aktualizovat držte Shift nebo stiskněte Ctrl-F5 nebo Ctrl-R (na Macu ⌘-R)
  • Google Chrome: Stiskněte Ctrl-Shift-R (na Macu ⌘-Shift-R)
  • Internet Explorer / Edge: Při kliknutí na Aktualizovat držte Ctrl nebo stiskněte Ctrl-F5
  • Opera: Stiskněte Ctrl-F5.
(function () {

  if (mw.config.get('wgPageName') !== 'Uživatel:JankoTheFox') {
    return;
  }

  var content = document.getElementById('mw-content-text');
  if (!content) return;

  mw.loader.using('mediawiki.api', function () {
    var api = new mw.Api();
    var user = 'JankoTheFox';

    var items = [];
    var byTitle = {};

    /* 1) načtení založených článků (vše, přes continue) */
    function loadCreated(cont) {
      var params = {
        action: 'query',
        list: 'usercontribs',
        ucuser: user,
        ucnamespace: 0,
        ucshow: 'new',
        uclimit: 50,
        ucprop: 'title|timestamp',
        format: 'json'
      };
      if (cont) params.uccontinue = cont;

      api.get(params).then(function (data) {
        var c = data.query.usercontribs;

        for (var i = 0; i < c.length; i++) {
          var t = c[i].title;
          if (!byTitle[t]) {
            byTitle[t] = {
              title: t,
              created: c[i].timestamp,
              updated: null
            };
            items.push(byTitle[t]);
          }
        }

        if (data.continue && data.continue.uccontinue) {
          loadCreated(data.continue.uccontinue);
        } else {
          loadTouched();
        }
      });
    }

    /* 2) poslední změna stránky (globální) přes `touched` */
    function loadTouched() {
      var titles = [];
      for (var i = 0; i < items.length; i++) {
        titles.push(items[i].title);
      }

      api.get({
        action: 'query',
        prop: 'info',
        titles: titles.join('|'),
        inprop: 'touched',
        format: 'json'
      }).then(function (data) {
        var pages = data.query.pages;

        for (var pid in pages) {
          if (!pages.hasOwnProperty(pid)) continue;
          var p = pages[pid];
          if (p.title && byTitle[p.title]) {
            byTitle[p.title].updated = p.touched;
          }
        }

        buildTable(items);
      });
    }

    loadCreated(null);
  });

  /* 3) tabulka – ŘAZENÍ ABECEDNĚ (A–Z) */
  function buildTable(items) {

    items.sort(function (a, b) {
      return a.title.localeCompare(b.title);
    });

    var h = document.createElement('h2');
    h.textContent = 'Články';

    var table = document.createElement('table');
    table.className = 'wikitable';
    table.style.width = '100%';

    table.innerHTML =
      '<thead><tr>' +
      '<th>Název</th>' +
      '<th style="width:140px;text-align:center">Vytvořeno</th>' +
      '<th style="width:140px;text-align:center">Poslední úprava</th>' +
      '</tr></thead>';

    var tbody = document.createElement('tbody');

    for (var i = 0; i < items.length; i++) {
      var tr = document.createElement('tr');
      tr.innerHTML =
        '<td><a href="' + mw.util.getUrl(items[i].title) + '">' +
        items[i].title + '</a></td>' +
        '<td style="text-align:center">' +
        cz(items[i].created) + '</td>' +
        '<td style="text-align:center">' +
        cz(items[i].updated) + '</td>';
      tbody.appendChild(tr);
    }

    table.appendChild(tbody);

    content.appendChild(h);
    content.appendChild(table);

    var note = document.createElement('p');
    note.style.fontStyle = 'italic';
    note.textContent = 'Načteno ' + items.length + ' článků';
    content.appendChild(note);
  }

  function cz(ts) {
    if (!ts) return '';
    return ts.substr(8, 2) + '.' + ts.substr(5, 2) + '.' + ts.substr(0, 4);
  }

})();