MediaWiki:Gadget-MoreMenu.enwiki.js

/** * WARNING: GLOBAL GADGET FILE * * Enwiki extension to MoreMenu. When applicable, this adds the following links: * *   User *  - Analysis / BLP edits *  - Analysis / AfD stats *  - RfXs… * *   Page *  - AfDs *  - MfDs * * See MoreMenu for more information on extending MoreMenu. */ $(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',      'Wikipedia:Bots/Requests for approval': 'brfa'    };    $.extend(MoreMenu.messages, { rfa: 'RfAs', rfb: 'RfBs', rfarb: 'RfArbs', rfc: 'RfCs', rfcu: 'RfCUs', rfcuc: 'RfCUCs', rfo: 'RfOs', cci: 'CCIs', spi: 'SPIs', brfa: 'BRFAs' });   var links = {};    api.get({ titles: Object.keys(rfxs).map(function (rfx) {       return rfx + '/' + config.targetUser.name;      }).join('|'), formatversion: 2 }).done(function (data) { data.query.pages.forEach(function (page) {       if (!page.missing) {          var key = rfxs[page.title.replace('/' + config.targetUser.name, '')];          links[key] = {            url: mw.util.getUrl('Special:PrefixIndex/' + page.title)          };        }      });

if (Object.keys(links).length) { MoreMenu.addSubmenu('user', 'RfXs', links, 'analysis'); }   });  }

/**  * 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/' + config.page.name,        'Wikipedia:Miscellany for deletion/' + config.page.name      ].join('|'),      prop: 'info',      formatversion: 2    }).done(function (data) {      data.query.pages.some(function (page) { if (page.missing) { return false; }

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

switch (page.title.split('/')[0]) { case 'Wikipedia:Miscellany for deletion': return MoreMenu.addLink('page', 'MfDs', link); case 'Wikipedia:Articles for deletion': return MoreMenu.addLink('page', 'AfDs', link); default: return false; }     });    });  }

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

if (config.targetUser.name && !config.targetUser.ipRange) { addRfXs(api, config); }

if (config.page.name) { addXfD(api, config); }

// Add link to BLP edits in the 'Analysis' menu. if (!config.targetUser.ipRange) { MoreMenu.addSubmenuLink('user', 'analysis', 'BLP Edits', 'https://xtools.wmflabs.org/categoryedits/' + config.project.domain + '/' + config.targetUser.encodedName + '/Living people');

// Add link to AfD stats. MoreMenu.addSubmenuLink('user', 'analysis', 'AfD stats', 'https://afdstats.toolforge.org/afdstats.py?name=' + config.targetUser.encodedName, 'analysis-xtools'); } }); });