Jump to content

MediaWiki:Gadget-MoreMenu.enwiki.js

From Wikipedia!

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)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/**
* WARNING: GLOBAL GADGET FILE
* Please submit code changes as a pull request to the source repository at https://github.com/MusikAnimal/MoreMenu
* Only critical, urgent changes should be made to this file directly.
* 
* Script:         MoreMenu.js
* Version:        5.0.0
* Author:         MusikAnimal
* License:        MIT
* Documentation:  [[meta:MoreMenu]]
* GitHub:         https://github.com/MusikAnimal/MoreMenu
* Skins:          Vector, Timeless, Monobook
* Browsers:       All modern browsers and IE 11+
**/
"use strict";

/**
 * Enwiki extension to MoreMenu.
 * This adds a menu item with RfAs/RfBs and an item for XfD where applicable.
 */
$(function () {
  /**
   * Look for and add links to RfAs, RfBs, Arbitration cases, etc.
   * @param {mw.Api} api
   * @param {Object} config
   */
  function addRfXs(api, config) {
    var rfxs = {
      'Wikipedia:Requests for adminship': 'rfa',
      'Wikipedia:Requests for bureaucratship': 'rfb',
      'Wikipedia:Arbitration/Requests/Case': 'rfarb',
      'Wikipedia:Requests for comment': 'rfc',
      'Wikipedia:Requests for checkuser': 'rfcu',
      'Wikipedia:Requests for checkuser/Case': 'rfcuc',
      'Wikipedia:Requests for oversight': 'rfo',
      'Wikipedia:Contributor copyright investigations': 'cci',
      'Wikipedia:Sockpuppet investigations': 'spi'
    };
    Object.assign(MoreMenu.messages, {
      'rfa': 'RfAs',
      'rfb': 'RfBs',
      'rfarb': 'RfArbs',
      'rfc': 'RfCs',
      'rfcu': 'RfCUs',
      'rfcuc': 'RfCUCs',
      'rfo': 'RfOs',
      'cci': 'CCIs',
      'spi': 'SPIs'
    });
    var links = {};
    api.get({
      titles: Object.keys(rfxs).map(function (rfx) {
        return "".concat(rfx, "/").concat(config.userName);
      }).join('|'),
      formatversion: 2
    }).done(function (data) {
      data.query.pages.forEach(function (page) {
        if (!page.missing) {
          var key = rfxs[page.title.replace("/".concat(config.userName), '')];
          links[key] = {
            url: mw.util.getUrl("Special:PrefixIndex/".concat(page.title))
          };
        }
      });

      if (Object.keys(links).length) {
        MoreMenu.addItem('user', {
          'RfXs': links
        }, 'user-logs');
      }
    });
  }
  /**
   * Look for and add a link to Special:PrefixIndex for AfDs or XfDs.
   * @param {mw.Api} api
   * @param {Object} config
   */


  function addXfD(api, config) {
    api.get({
      titles: ["Wikipedia:Articles for deletion/".concat(config.pageName), "Wikipedia:Miscellany for deletion/".concat(config.pageName)].join('|'),
      prop: 'info',
      formatversion: 2
    }).done(function (data) {
      data.query.pages.some(function (page) {
        if (page.missing) {
          return;
        }

        var link = mw.util.getUrl("Special:PrefixIndex/".concat(page.title));

        switch (page.title.split('/')[0]) {
          case 'Wikipedia:Miscellany for deletion':
            return MoreMenu.addItem('page', {
              'MfDs': {
                url: link
              }
            });

          case 'Wikipedia:Articles for deletion':
            return MoreMenu.addItem('page', {
              'AfDs': {
                url: link
              }
            });
        }
      });
    });
  }

  mw.hook('moremenu.ready').add(function (config) {
    var api = new mw.Api();

    if (config.userName) {
      addRfXs(api, config);
    }

    if (config.pageName) {
      addXfD(api, config);
    }
  });
});