first commit
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
/*global jQuery, ajaxurl, JSON */
|
||||
"use strict";
|
||||
|
||||
var TranslationProxyPolling = {
|
||||
init: function (button, icl_ajxloaderimg) {
|
||||
var self = this;
|
||||
var JSONtext = jQuery('#tp_polling_job').text();
|
||||
self.jobs = JSONtext ? JSON.parse(JSONtext) : [];
|
||||
jQuery(button).click(self.handleOne);
|
||||
self.button = jQuery(button);
|
||||
self.icl_ajxloaderimg = jQuery(icl_ajxloaderimg);
|
||||
self.icl_ajxloaderimg.hide();
|
||||
self.button.after(TranslationProxyPolling.icl_ajxloaderimg);
|
||||
},
|
||||
jobs: [],
|
||||
completed_count: 0,
|
||||
cancel_count: 0,
|
||||
error_data: [],
|
||||
showSpinner: function () {
|
||||
if (!TranslationProxyPolling.spinner) {
|
||||
TranslationProxyPolling.button.prop('disabled', true);
|
||||
TranslationProxyPolling.icl_ajxloaderimg.show();
|
||||
TranslationProxyPolling.spinner = true;
|
||||
}
|
||||
},
|
||||
hideSpinner: function () {
|
||||
TranslationProxyPolling.button.prop('disabled', false);
|
||||
TranslationProxyPolling.icl_ajxloaderimg.hide();
|
||||
TranslationProxyPolling.spinner = false;
|
||||
},
|
||||
handleOne: function () {
|
||||
var nonce = jQuery("#_icl_nonce_pickup_t").val();
|
||||
var currentJob = TranslationProxyPolling.jobs.length > 0 ? TranslationProxyPolling.jobs.pop() : false;
|
||||
if (currentJob) {
|
||||
TranslationProxyPolling.showSpinner();
|
||||
jQuery.ajax(
|
||||
{
|
||||
type: "POST",
|
||||
url: ajaxurl,
|
||||
dataType: 'json',
|
||||
data: {
|
||||
action: 'icl_pickup_translations',
|
||||
_icl_nonce: nonce,
|
||||
job_polled: currentJob,
|
||||
completed_jobs: TranslationProxyPolling.completed_count,
|
||||
cancelled_jobs: TranslationProxyPolling.cancel_count
|
||||
},
|
||||
success: function (response) {
|
||||
if (currentJob && !response.data.job_error) {
|
||||
TranslationProxyPolling.updateCounts(currentJob, response);
|
||||
}
|
||||
var icl_message_div;
|
||||
/** @namespace response.data.completed */
|
||||
if (response.data.completed) {
|
||||
icl_message_div = jQuery("#icl_tm_pickup_wrap_completed");
|
||||
icl_message_div.text(response.data.completed);
|
||||
icl_message_div.show();
|
||||
}
|
||||
/** @namespace response.data.cancelled */
|
||||
if (response.data.cancelled) {
|
||||
icl_message_div = jQuery("#icl_tm_pickup_wrap_cancelled");
|
||||
icl_message_div.text(response.data.cancelled);
|
||||
icl_message_div.show();
|
||||
}
|
||||
/** @namespace response.data.submitting */
|
||||
if (response.data.submitting) {
|
||||
icl_message_div = jQuery("#icl_tm_pickup_wrap_submitting");
|
||||
icl_message_div.text(response.data.submitting);
|
||||
icl_message_div.show();
|
||||
}
|
||||
if (TranslationProxyPolling.jobs.length > 0) {
|
||||
TranslationProxyPolling.handleOne();
|
||||
} else {
|
||||
TranslationProxyPolling.hideSpinner();
|
||||
TranslationProxyPolling.button.attr('disabled', 'disabled');
|
||||
TranslationProxyPolling.startReloading(10);
|
||||
jQuery.ajax({
|
||||
type: "POST",
|
||||
url: ajaxurl,
|
||||
dataType: 'json',
|
||||
data: {
|
||||
action: 'icl_pickup_translations_complete'
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
TranslationProxyPolling.hideSpinner();
|
||||
}
|
||||
}
|
||||
);
|
||||
} else {
|
||||
TranslationProxyPolling.hideSpinner();
|
||||
}
|
||||
},
|
||||
updateCounts: function (currentJob, response) {
|
||||
if (currentJob.job_state === 'translation_ready' && response.data.completed) {
|
||||
TranslationProxyPolling.completed_count += 1;
|
||||
}
|
||||
if (currentJob.job_state === 'cancelled' && response.data.cancelled) {
|
||||
TranslationProxyPolling.completed_count += 1;
|
||||
}
|
||||
},
|
||||
startReloading: function (remaining) {
|
||||
if (0 >= remaining) {
|
||||
location.reload(true);
|
||||
} else {
|
||||
TranslationProxyPolling.updatePickupButtonTo('reloading', remaining);
|
||||
setTimeout(function () {
|
||||
TranslationProxyPolling.startReloading(remaining - 1);
|
||||
}, 1000);
|
||||
}
|
||||
},
|
||||
updatePickupButtonTo: function (state, value) {
|
||||
var dataAttributePrefix, stateData, sanitizedValue;
|
||||
|
||||
dataAttributePrefix = state;
|
||||
if ('undefined' === typeof state) {
|
||||
dataAttributePrefix = 'default';
|
||||
}
|
||||
|
||||
sanitizedValue = value;
|
||||
if ('undefined' === typeof value) {
|
||||
sanitizedValue = '';
|
||||
}
|
||||
|
||||
stateData = TranslationProxyPolling.button.data(dataAttributePrefix + '-text');
|
||||
|
||||
if ('reloading' === dataAttributePrefix) {
|
||||
stateData = TranslationProxyPolling.button.data('reloading-text') + ' ' + sanitizedValue;
|
||||
}
|
||||
|
||||
if ('undefined' !== typeof stateData) {
|
||||
if (stateData) {
|
||||
TranslationProxyPolling.button.data('current-text', stateData);
|
||||
TranslationProxyPolling.button.val(stateData);
|
||||
} else {
|
||||
self.updatePickupButtonTo('default');
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user