MediaWiki:Gadget-EmptyDetect.js

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.
/*!
 * auto detect that the item is previously merged with which item
 * Written by me inside MediaWiki:Gadget-Merge.js
 * now its code is extracted but currently is not a separate gadget
 * and auto enabled with Merge.js
 * 
 * @author User:Ebrahim <ebrahim -at- gnu.org>
 */

/*jslint browser: true, regexp: true, indent: 2, unparam: true*/
/*jshint unused: false*/
/*global $, mw, mergeTool*/
$(function () {
  'use strict';
  if (mw.config.get('wgNamespaceNumber') !== 0 || !mw.config.exists('wbEntityId')) { return; }
  mw.hook('wikibase.entityPage.entityLoaded').add(function (entity) {
    // give up if there is a link on item
  	if (entity.sitelinks !== undefined) { return; }
    new mw.Api().get({
      action: 'query',
      prop: 'revisions',
      titles: mw.config.get('wbEntityId'),
      rvlimit: 1,
      rvprop: 'content',
      format: 'json',
      rvdir: 'newer'
    }).then(function (x) {
      var itemOldEntity, site, title;
      itemOldEntity = JSON.parse($.map(x.query.pages, function (x) { return x; })[0].revisions[0]['*']);
      // if previous item had not any site link, give up
      if (itemOldEntity.links === undefined) { return; }

      // put last item site link on local variables
      $.map(itemOldEntity.links, function (x, y) { site = y; title = x.name; });

      new mw.Api().get({
        action: 'wbgetentities',
        sites: site,
        titles: title
      }).then(function (x) {
        // if query not contains any entity, give up
        if (x.entities['-1'] !== undefined) { return; }

        var dest = $.map(x.entities, function (x, y) { return y; })[0].toUpperCase();

        mw.notify(
          $('<span>').append(
            'Might have been merged with ',
            $('<a href="' + mw.util.getUrl(dest) + '">' + dest + '</a>'),
            ' ',
            window.mergeTool === undefined ? '' : $('<a href="#" title="Merge it">').append($('<img>', {
              src: '//upload.wikimedia.org/wikipedia/commons/thumb/1/10/Pictogram_voting_merge.svg/15px-Pictogram_voting_merge.svg.png'
            }).click(function (event) { event.preventDefault(); mergeTool.launchDialog(dest); }))
          ),
          {
            autoHide: false
          }
        );
      });
    });
  });
});