User:Vogone/common.js

From Wikidata
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.
mw.loader.load('//www.wikidata.org/w/index.php?title=User:Okkn/jsonLexeme.js&action=raw&ctype=text/javascript');
mw.loader.load('//www.wikidata.org/w/index.php?title=User:Bene*/userwarn.js&action=raw&ctype=text/javascript');
mw.loader.load('//www.wikidata.org/w/index.php?title=User:Ricordisamoa/Wikispecies.js&action=raw&ctype=text/javascript');
// [[User:Magnus Manske/wikidata_useful.js]]
importScript( 'User:Magnus_Manske/wikidata_useful.js' );
$(document).ready(function() {
        setInterval(function() {
                $('.tipsy').remove();
        },250);
});
importScript( 'User:Magnus_Manske/rfd.js' );
(function ($, mw) {
  'use strict';
 
  var api = new mw.Api();
 
  /**
   * Get backlink (50 limited)
   */
  function getBackLinks(itemId) {
    return api.get({
      action: 'query',
      list: 'backlinks',
      bltitle: itemId,
      blnamespace: 0,
      bllimit: 50,
      format: 'json'
    }).then(function (data) {
      return $.map(data.query.backlinks, function (value) {
        return value.title;
      });
    });
  }
 
  /**
   * Delete an item
   */
  function deleteItem(id, reason) {
    return api.post({
      action: 'delete',
      title: id,
      reason: reason,
      token: mw.user.tokens.get('csrfToken')
    });
  }
 
  /**
   * Get recent deletions
   */
  function recentDeletions() {
    return api.get({
      action: 'query',
      list: 'recentchanges',
      rctype: 'log',
      format: 'json',
      rcprop: 'title|loginfo'
    });
  }
 
  if (mw.config.get('wgPageName').indexOf('Wikidata:Requests_for_deletions') === 0 &&
      mw.config.get('wgAction') === 'view') {
    $.when(
      $.ready,
      mw.loader.using('mediawiki.language')
    ).then(function () {
      var itemLinks = {};
      $('a[href^="/wiki/Q"]:not(.new)').each(function (i, x) { itemLinks[x.href.replace(/.*\//, '')] = x; });
 
      setInterval(function () {
        recentDeletions().then(function (r) {
          $.each(r.query.recentchanges, function (i, x) {
            if (x.ns !== 0 || x.logtype !== 'delete') { return; }
            $(itemLinks[x.title]).addClass('new');
            itemLinks[x.title] = undefined;
          });
        });
      }, 5000);
 
      $("#mw-content-text > p > .plainlinks").each(function (i, x) {
        var link = $(x).find('a:first'),
          deleteQuery = new mw.Uri(link.prop('href')).query,
          header,
          button;
        if (deleteQuery.action !== 'delete') {
          return;
        }
 
        header = link.parent().parent().prev().find('.mw-headline a');
 
        // add backlinks count
        getBackLinks(deleteQuery.title).then(function (backlinks) {
          var blcount = backlinks.length;
          if (blcount === 50) {
            blcount = '50+';
          }
 
          $('[href*="Special:WhatLinksHere"]', x).after(
            $('<span />')
              .css('color', blcount === 0 ? 'black' : 'red')
              .text(' (' + mw.language.convertNumber(blcount) + ')')
          );
        });
 
        // don't add delete button if is deleted already
        if (header.hasClass('new')) {
          return;
        }
 
        button = $('<button>', {
          title: 'Quick Delete',
          style: 'cursor: pointer'
        }).append($('<img />', {
          src: '//upload.wikimedia.org/wikipedia/commons/thumb/8/89/Symbol_delete_vote.svg/15px-Symbol_delete_vote.svg.png',
          width: '15',
          height: '15'
        })).click(function (x) {
          header.css('text-decoration', 'line-through');
          deleteItem(deleteQuery.title, deleteQuery.wpReason).then(function () {
            header.addClass('new');
          });
          // delete button after delete request
          button.remove();
        });
        // insert the button
        header.after(button);
      });
    });
  }
}(jQuery, mediaWiki));