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 == {};

});

}

});

});