User:William Avery/taxoboxalyzer.js

$(function($) { var namespaceNumber = mw.config.get('wgNamespaceNumber');  var isCorrectNamespace = namespaceNumber === 0 || namespaceNumber === 2 || namespaceNumber === 118;  if (!isCorrectNamespace) {    return;  }  mw.loader.using('mediawiki.util').then(function { if ($('table.infobox.biota').length // Taxonbox     &&      $('table.infobox.biota .genus').length // Species      &&      ($('table.infobox.biota img[src$=Red_Pencil_Icon\\.png]').length == 0)) { // No red pencil var portletlink = mw.util.addPortletLink('p-tb', '#', 'Taxoboxalyzer', 'ca-taxoboxalyzer'); $(portletlink).click(function(e) {       e.preventDefault;        var tx_server = typeof window.taxoboxalyzer_server == 'undefined' ?          'https://taxoboxalyzer.toolforge.org' :          window.taxoboxalyzer_server        window.location.assign(tx_server + '/form/' + encodeURIComponent(mw.config.get('wgPageName')));        return true;      }); }   if (!(typeof window.taxoboxalyzer_testserver == 'undefined')) { var testportletlink = mw.util.addPortletLink('p-tb', '#', 'Taxoboxalyzer-test', 'ca-taxoboxalyzer-test'); $(testportletlink).click(function(e) {       e.preventDefault;        window.location.assign(window.taxoboxalyzer_testserver + '/form/' + encodeURIComponent(mw.config.get('wgPageName')));        return true;      }); var testportletlink2 = mw.util.addPortletLink('p-tb', '#', 'Taxoboxalyzer-test-ajax', 'ca-taxoboxalyzer-test-ajax', 'Test using local server'); $(testportletlink2).click(function(e) {       e.preventDefault;        var dataelem = {}        if ($('#wpTextbox1').length) {          dataelem['wpTextbox1'] = $('#wpTextbox1').val          $('#wpTextbox1').prop('disabled', true)        }        if ($('#wpSummary').length) {          dataelem['wpSummary'] = $('#wpSummary').val          $('#wpSummary').prop('disabled', true)        }        $.ajax({ type: Object.keys(dataelem).length === 0 ? 'GET' : 'POST', url: window.taxoboxalyzer_testserver + '/json/' + encodeURIComponent(mw.config.get('wgPageName')), dataType: 'json', error: ( jqXHR, textStatus, errorThrown ) => { alert(textStatus + ':' + errorThrown) },         success: (obj) => { if (Object.keys(dataelem).length === 0) { $('body').append(               '' +                ' ' +                '' +                '' +                '' +                '' +                '' +                '' +                '' +                ' ') $('form#tbxlzr [name=wpTextbox1]').text(obj['newtext']) $('form#tbxlzr [name=wpSummary]').val(obj['edit_summary']) $('#tbxlzrsmit').click; } else { $('#wpTextbox1').val(obj['newtext']) $('#wpSummary').val(obj['edit_summary']) $('#wpTextbox1').prop('disabled', false) $('#wpSummary').prop('disabled', false) }         },          data: dataelem });       return dataelem == {};      }); } }); });