5790 lines
244 KiB
JavaScript
5790 lines
244 KiB
JavaScript
function X13Allegro()
|
|
{
|
|
this.ajaxUrl = currentIndex;
|
|
this.ajaxToken = xallegro_token;
|
|
this.ajaxRequest = [];
|
|
this.ajaxForceTerminateLoop = false;
|
|
this.isModernLayout = false;
|
|
this.presta17 = false;
|
|
this.successAuctions = 0;
|
|
this.errorAuctions = 0;
|
|
this.successAuctionsMsg = '';
|
|
this.errorAuctionsMsg = '';
|
|
|
|
this.productizationName = '';
|
|
this.productizationDescription = '';
|
|
this.productizationMode = 'ASSIGN';
|
|
this.productSelectMode = 0;
|
|
this.titleMaxCount = 75;
|
|
this.shippingRateMarketplaces = [];
|
|
|
|
this._cast();
|
|
}
|
|
|
|
X13Allegro.prototype = {
|
|
|
|
constructor: X13Allegro,
|
|
|
|
_cast: function()
|
|
{
|
|
cast = function()
|
|
{
|
|
var type = $(this).data('cast');
|
|
var unsigned = false;
|
|
var allowEmpty = false;
|
|
var precision = 2;
|
|
|
|
// workaround for classes
|
|
if (typeof type === 'undefined') {
|
|
if ($(this).hasClass('xcast-float')) {
|
|
type = 'float';
|
|
} else if ($(this).hasClass('xcast-int')) {
|
|
type = 'integer';
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (typeof $(this).data('cast-unsigned') !== 'undefined' && $(this).data('cast-unsigned')) {
|
|
unsigned = true;
|
|
}
|
|
// workaround for classes
|
|
else if ($(this).hasClass('xcast-unsigned')) {
|
|
unsigned = true;
|
|
}
|
|
|
|
if (typeof $(this).data('cast-allow-empty') !== 'undefined' && $(this).data('cast-allow-empty')) {
|
|
allowEmpty = true;
|
|
}
|
|
// workaround for classes
|
|
else if ($(this).hasClass('xcast-allow-empty')) {
|
|
allowEmpty = true;
|
|
}
|
|
|
|
if (typeof $(this).data('cast-precision') !== 'undefined') {
|
|
precision = parseInt($(this).data('cast-precision'));
|
|
}
|
|
// @todo workaround for classes
|
|
|
|
var val = $(this).val();
|
|
|
|
if (!val.length) {
|
|
if (allowEmpty) {
|
|
return;
|
|
}
|
|
|
|
val = 0;
|
|
}
|
|
|
|
val = val.toString().replace(/[^\d,.\-]/g, '').replace(',', '.');
|
|
|
|
if (val < 0 && !unsigned) {
|
|
val *= -1;
|
|
}
|
|
|
|
if (isNaN(val) || val.length == 0) {
|
|
val = 0;
|
|
}
|
|
|
|
if (type == 'float') {
|
|
$(this).val(castFormat(val, precision));
|
|
}
|
|
else if (type == 'integer') {
|
|
$(this).val(parseInt(val));
|
|
}
|
|
|
|
function castFormat(value, precision)
|
|
{
|
|
var newValue = parseFloat(value);
|
|
var pow = Math.pow(10, 2);
|
|
newValue *= pow;
|
|
|
|
var nextDigit = Math.floor(newValue * 10) - 10 * Math.floor(newValue);
|
|
newValue = (nextDigit >= 5 ? Math.ceil(newValue) : Math.floor(newValue));
|
|
|
|
return (newValue / pow).toFixed(precision);
|
|
}
|
|
};
|
|
|
|
if ($('[data-cast]').length) {
|
|
$('[data-cast]').each(cast).on('focusout change xchange', cast);
|
|
}
|
|
},
|
|
|
|
_shipmentsSwitch: function(element)
|
|
{
|
|
shipmentsSwitch = function()
|
|
{
|
|
if ($(this).is(':checked')) {
|
|
$(this).parent().parent().find('input[type="text"]:not(.shipment-disabled)').removeAttr('disabled');
|
|
} else {
|
|
$(this).parent().parent().find('input[type="text"]:not(.shipment-disabled)').prop('disabled', 'disabled');
|
|
}
|
|
};
|
|
|
|
$(element).on('change', shipmentsSwitch).each(shipmentsSwitch);
|
|
},
|
|
|
|
_countryCodeSwitch: function(element)
|
|
{
|
|
if (element.val() === 'PL') {
|
|
$('#province, #post_code').removeAttr('disabled');
|
|
} else {
|
|
$('#province, #post_code').val('').prop('disabled', 'disabled');
|
|
}
|
|
},
|
|
|
|
_titleCount: function(title)
|
|
{
|
|
var customChars = {
|
|
'<': 4,
|
|
'>': 4,
|
|
'&': 5,
|
|
'"': 6
|
|
};
|
|
|
|
var size = title.length;
|
|
var count = 0;
|
|
|
|
for (var key in customChars) {
|
|
count = title.split(key).length - 1;
|
|
size += (count*(customChars[key]-1));
|
|
}
|
|
|
|
return size;
|
|
},
|
|
|
|
_modalAlert: function($modalAlert, confirmCallback, cancelCallback)
|
|
{
|
|
$modalAlert.addClass('active');
|
|
$modalAlert.find('.modal-body').css({
|
|
'max-height': $(window).outerHeight() - 200,
|
|
'overflow-y': 'auto'
|
|
});
|
|
$modalAlert.closest('.modal').css('overflow-y', 'hidden');
|
|
|
|
$modalAlert.on('click', '.modal_alert-confirm', function(e) {
|
|
e.preventDefault();
|
|
$modalAlert.removeClass('active');
|
|
$modalAlert.closest('.modal').css('overflow-y', 'auto');
|
|
|
|
if (typeof confirmCallback === 'function') {
|
|
confirmCallback();
|
|
}
|
|
});
|
|
|
|
$modalAlert.on('click', '.modal_alert-cancel', function(e) {
|
|
e.preventDefault();
|
|
$modalAlert.removeClass('active');
|
|
$modalAlert.closest('.modal').css('overflow-y', 'auto');
|
|
|
|
if (typeof cancelCallback === 'function') {
|
|
cancelCallback();
|
|
}
|
|
});
|
|
},
|
|
|
|
_configurationWiderColsFix: function($form)
|
|
{
|
|
$form.find('.form-group').each(function(index, element) {
|
|
var confId = $(element).find('.control-label').parent();
|
|
confId.find('.col-lg-3').removeClass('col-lg-3').addClass('col-lg-4');
|
|
confId.find('.col-lg-offset-3').removeClass('col-lg-offset-3').addClass('col-lg-offset-4');
|
|
confId.find('.col-lg-9').removeClass('col-lg-9').addClass('col-lg-8');
|
|
});
|
|
},
|
|
|
|
_configurationDependencies: function()
|
|
{
|
|
handleFieldDependencies();
|
|
|
|
var $fieldDependencies = getFieldDependencies();
|
|
for (var i = 0; i < $fieldDependencies.length; i++) {
|
|
$(document).off($fieldDependencies[i]).on('change', '[name="'+ $fieldDependencies[i] +'"]', function () {
|
|
handleFieldDependencies($fieldDependencies[i]);
|
|
}).bind(i);
|
|
}
|
|
|
|
function getFieldDependencies()
|
|
{
|
|
var fieldDependencies = [];
|
|
$('.depends-on').each(function (index, node) {
|
|
var $element = $(node);
|
|
var $classes = $element.prop('class').split(/\s+/);
|
|
for (var i = 0; i < $classes.length; i++) {
|
|
var current = $classes[i];
|
|
if (current.includes('depends-field')) {
|
|
var parts = current.replace('depends-field-', '').split(':');
|
|
fieldDependencies.push(parts[0]);
|
|
}
|
|
}
|
|
});
|
|
|
|
return fieldDependencies;
|
|
}
|
|
|
|
function handleFieldDependencies(specificFieldName)
|
|
{
|
|
var specificField = specificFieldName || false;
|
|
|
|
$('.depends-on').each(function (index, node) {
|
|
var $element = $(node);
|
|
var $classes = $element.prop('class').split(/\s+/);
|
|
var $method = 'match';
|
|
var $fieldName = false;
|
|
var $fieldValue = false;
|
|
var $fieldType = false;
|
|
var $currentValue;
|
|
var $typeOfTheField;
|
|
|
|
if ($element.hasClass('depends-on-multiple')) {
|
|
$fieldValue = [];
|
|
$fieldName = [];
|
|
$fieldType = [];
|
|
}
|
|
|
|
for (var i = 0; i < $classes.length; i++) {
|
|
var current = $classes[i];
|
|
|
|
if (current.includes('depends-where')) {
|
|
if (current === 'depends-where-is-not') {
|
|
$method = 'not_match';
|
|
}
|
|
}
|
|
|
|
if (current.includes('depends-field')) {
|
|
var parts = current.replace('depends-field-', '').split(':');
|
|
var $nameOfTheField = parts[0];
|
|
var $valueOfTheField = parts[1].split('--');
|
|
|
|
if ($element.hasClass('depends-on-multiple')) {
|
|
$fieldName.push($nameOfTheField);
|
|
$fieldValue.push($valueOfTheField);
|
|
} else {
|
|
$fieldName = $nameOfTheField;
|
|
$fieldValue = $valueOfTheField;
|
|
}
|
|
|
|
if ($('input[name="'+ $nameOfTheField +'"]').length > 0) {
|
|
$typeOfTheField = $('input[name="'+ $nameOfTheField +'"]').attr('type');
|
|
} else if ($('textarea[name="'+ $nameOfTheField +'"]').length === 1) {
|
|
$typeOfTheField = 'textarea';
|
|
} else if ($('select[name="'+ $nameOfTheField +'"]').length === 1) {
|
|
$typeOfTheField = 'select';
|
|
}
|
|
|
|
if ($element.hasClass('depends-on-multiple')) {
|
|
$fieldType.push($typeOfTheField);
|
|
} else {
|
|
$fieldType = $typeOfTheField;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($element.hasClass('depends-on-multiple')) {
|
|
var showBasedOnMultiple = true;
|
|
for (var i = 0; i < $fieldName.length; i++) {
|
|
if ($fieldType[i] === 'checkbox' || $fieldType[i] === 'radio') {
|
|
$currentValue = $('[name="'+ $fieldName[i] +'"]:checked').val();
|
|
} else if ($fieldType[i] === 'select') {
|
|
$currentValue = $('[name="'+ $fieldName[i] +'"] option:selected').val();
|
|
} else {
|
|
$currentValue = $('[name="'+ $fieldName[i] +'"]').val();
|
|
}
|
|
|
|
if ($method === 'match') {
|
|
if (!inArray($currentValue, $fieldValue[i])) {
|
|
showBasedOnMultiple = false;
|
|
}
|
|
}
|
|
if ($method === 'not_match') {
|
|
if (inArray($currentValue, $fieldValue[i])) {
|
|
showBasedOnMultiple = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (showBasedOnMultiple) {
|
|
$element.slideDown();
|
|
} else {
|
|
$element.slideUp();
|
|
}
|
|
} else {
|
|
if (specificField && specificField !== $fieldName) {
|
|
return;
|
|
}
|
|
|
|
if ($fieldType === 'checkbox' || $fieldType === 'radio') {
|
|
$currentValue = $('[name="'+ $fieldName +'"]:checked').val();
|
|
} else if ($fieldType === 'select') {
|
|
$currentValue = $('[name="'+ $fieldName +'"] option:selected').val();
|
|
} else {
|
|
$currentValue = $('[name="'+ $fieldName +'"]').val();
|
|
}
|
|
|
|
if ($method === 'not_match' && $fieldName && $fieldValue) {
|
|
if ($fieldValue.includes($currentValue)) {
|
|
$element.slideUp();
|
|
} else {
|
|
$element.slideDown();
|
|
}
|
|
}
|
|
if ($method === 'match' && $fieldName && $fieldValue) {
|
|
if ($fieldValue.includes($currentValue)) {
|
|
$element.slideDown();
|
|
} else {
|
|
$element.slideUp();
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function inArray(needle, haystack)
|
|
{
|
|
var length = haystack.length;
|
|
for (var i = 0; i < length; i++) {
|
|
if (haystack[i] === needle) return true;
|
|
}
|
|
return false;
|
|
}
|
|
},
|
|
|
|
accountAuth: function()
|
|
{
|
|
var self = this;
|
|
var authInterval;
|
|
var authIntervalTime = 5;
|
|
|
|
var $modal = $(document).find('#account_authorization_modal');
|
|
|
|
$(document).on('click', '#allegroAccountAuth', function (e) {
|
|
e.preventDefault();
|
|
|
|
self.ajaxPOST({
|
|
action: 'authorizeApplication',
|
|
id_account: $(this).data('account')
|
|
|
|
}, function () {
|
|
var cover = $('<div id="allegro_cover"></div>');
|
|
cover.appendTo('body').hide().fadeIn(400);
|
|
|
|
}, function (json) {
|
|
$(document).find('body #allegro_cover').remove();
|
|
|
|
if (!json.success) {
|
|
showErrorMessage(json.text);
|
|
return false;
|
|
}
|
|
|
|
authIntervalTime = json.interval;
|
|
|
|
$modal.find('.modal-header .x13allegro-modal-title-small span').text(json.username);
|
|
$modal.find('.modal-body').html(json.html);
|
|
$modal.modal('show');
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '#allegroAuthButton', function () {
|
|
var button = $(this);
|
|
|
|
$modal.find('.modal-header .close').remove();
|
|
$modal.find('.modal-body #allegroAuthProcess').show();
|
|
$modal.find('.modal-body #allegroAuthButton').prop('disabled', 'disabled').addClass('btn-disabled').hide();
|
|
|
|
authInterval = setInterval(function () {
|
|
self.ajaxPOST({
|
|
action: 'authorizeApplicationCheck',
|
|
id_account: button.data('account')
|
|
|
|
}, null , function (json) {
|
|
if (json.success) {
|
|
if (!json.process) {
|
|
clearInterval(authInterval);
|
|
|
|
$modal.find('.modal-body #allegroAuthStart').hide();
|
|
$modal.find('.modal-body #allegroAuthProcess').hide();
|
|
$modal.find('.modal-body #allegroAuthSuccess #allegroAuthMarketplace').text(json.baseMarketplace);
|
|
$modal.find('.modal-body #allegroAuthSuccess').show();
|
|
|
|
if (json.configurationForm) {
|
|
$modal.find('.modal-body #allegroAuthConfiguration').html(json.configurationForm);
|
|
$modal.find('.modal-body #allegroAuthConfiguration #configuration_id_language').trigger('change');
|
|
} else {
|
|
$modal.find('.modal-body #allegroAuthSuccess #allegroAuthButtonFinish').show();
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
clearInterval(authInterval);
|
|
$modal.find('.modal-body #allegroAuthStart').hide();
|
|
$modal.find('.modal-body #allegroAuthProcess').hide();
|
|
$modal.find('.modal-body #allegroAuthError #allegroAuthErrorMsg').text(json.text);
|
|
$modal.find('.modal-body #allegroAuthError').show();
|
|
}
|
|
});
|
|
}, authIntervalTime *1000);
|
|
});
|
|
|
|
$(document).on('change', '#configuration_id_language', function() {
|
|
var $button = $modal.find('.modal-body #allegroAuthConfiguration #allegroAuthButtonSave');
|
|
|
|
if ($(this).val() === '') {
|
|
$button.addClass('disabled').prop('disabled', true);
|
|
} else {
|
|
$button.removeClass('disabled').prop('disabled', false);
|
|
}
|
|
});
|
|
},
|
|
|
|
auctionList: function()
|
|
{
|
|
var self = this;
|
|
var $modalForm = $('#xallegro_auction_form_modal');
|
|
var $modalListSettings = $('#xallegro_auction_list_settings');
|
|
|
|
$('#xallegroFilterStatus').on('change', function () {
|
|
$(this).parents('form').submit();
|
|
});
|
|
|
|
$('#xallegroFilterMarketplace').on('change', function () {
|
|
$(this).parents('form').submit();
|
|
});
|
|
|
|
$('#showProductizationTools').on('click', function (e) {
|
|
e.preventDefault();
|
|
$('#productizationTools').toggle();
|
|
});
|
|
|
|
$('#auctionListSettings').on('click', function (e) {
|
|
e.preventDefault();
|
|
$modalListSettings.modal('show');
|
|
});
|
|
|
|
$modalListSettings.find('.auction-fields-list-table tbody').sortable({
|
|
handle: '.auction-fields-list-sort',
|
|
helper: function(e, ui) {
|
|
ui.children().each(function() {
|
|
$(this).width($(this).width());
|
|
});
|
|
return ui;
|
|
},
|
|
start: function (e, ui) {
|
|
ui.placeholder.css({
|
|
height: ui.item.outerHeight(),
|
|
width: ui.item.outerWidth()
|
|
});
|
|
}
|
|
});
|
|
|
|
$modalListSettings.on('click', 'button[name="saveAuctionListSettings"]', function (e) {
|
|
e.preventDefault();
|
|
|
|
var fields = {};
|
|
$modalListSettings.find('.auction-fields-list-check').each(function (index, element) {
|
|
fields[$(element).val()] = +$(element).is(':checked');
|
|
});
|
|
|
|
self.ajaxPOST({
|
|
action: 'saveAuctionListSettings',
|
|
fields: fields
|
|
}, null, function (json) {
|
|
window.location.href = json.url;
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '#bulkUpdateAuctionsTrigger', function(e) {
|
|
e.preventDefault();
|
|
$('.bulk-actions .bulkUpdate').parent().click();
|
|
});
|
|
|
|
$(document).on('change', '.x-auction-list-auto_renew select', function() {
|
|
var offerId = $(this).data('id');
|
|
var autoRenew = $(this).val();
|
|
|
|
self.ajaxPOST({
|
|
action: 'changeAutoRenew',
|
|
offerId: offerId,
|
|
autoRenew: autoRenew
|
|
}, null, function(json) {
|
|
if (json.success) {
|
|
showSuccessMessage('Zaktualizowano auto wznawianie');
|
|
} else {
|
|
showErrorMessage('Wystąpił błąd podczas aktualizacji auto wznawiania');
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('focusout', '.x-auction-form-list input', function() {
|
|
if ($(this).data('max') !== '' && (parseInt($(this).prop('value')) > parseInt($(this).data('max')) && parseInt($(this).data('oos')) == 0)) {
|
|
$(this).prop('value', $(this).data('max'));
|
|
}
|
|
|
|
if (parseInt($(this).prop('value')) < 1) {
|
|
$(this).prop('value', 1);
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.x-auction-form-list-delete', function(e) {
|
|
e.preventDefault();
|
|
|
|
$(this).closest('tr').remove();
|
|
if ($modalForm.find('.x-auction-form-list-delete').length <= 0) {
|
|
$modalForm.modal('hide');
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.x-updater-redo-btn', function(e) {
|
|
e.preventDefault();
|
|
|
|
$modalForm.modal('hide');
|
|
$('.bulk-actions .bulkUpdate').parent().click();
|
|
});
|
|
|
|
$(document).on('click', '.x-updater-logger-all', function (e) {
|
|
e.preventDefault();
|
|
|
|
$modalForm.find('.x-updater-logger-content').find('li').show();
|
|
$(this).hide();
|
|
});
|
|
|
|
$(document).on('click', '.x-updater-logger-with-errors', function (e) {
|
|
e.preventDefault();
|
|
|
|
$modalForm.find('.x-updater-logger-content').find('li').show();
|
|
$modalForm.find('.x-updater-logger-content').find('li:not(.as-error)').hide();
|
|
$modalForm.find('.x-updater-logger-all').show();
|
|
});
|
|
|
|
$(document).on('click', '.x-updater-logger-with-warnings', function (e) {
|
|
e.preventDefault();
|
|
|
|
$modalForm.find('.x-updater-logger-content').find('li').show();
|
|
$modalForm.find('.x-updater-logger-content').find('li:not(.as-warning)').hide();
|
|
$modalForm.find('.x-updater-logger-all').show();
|
|
});
|
|
|
|
$(document).on('change', '[x-name="update-auction-entity"]', function () {
|
|
if ($(this).val() != 0) {
|
|
$modalForm.find('.x-auction-form-submit').show();
|
|
$modalForm.find('.x-updater-entity').hide();
|
|
$modalForm.find('.x-updater-extra-settings #updater_entity_' + $(this).val()).show();
|
|
} else {
|
|
$modalForm.find('.x-auction-form-submit, .x-updater-entity').hide();
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.x-auction-form-submit', function(e) {
|
|
e.preventDefault();
|
|
processFormModal();
|
|
});
|
|
|
|
$(document).on('click', '.x-updater-action-close-popup', function(e) {
|
|
e.preventDefault();
|
|
$(this).attr('disabled', 'disabled');
|
|
$modalForm.find('.x-updater-redo-btn').attr('disabled', 'disabled');
|
|
window.location.reload();
|
|
});
|
|
|
|
// Update
|
|
$('[x-name=action_update]').on('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
$('input[name="xallegro_auctionBox[]"]').removeAttr('checked');
|
|
$(this).parents('tr').find('input[name="xallegro_auctionBox[]"]').prop('checked', true);
|
|
|
|
getFormModal(getSelectedAuctions('action_update'), 'update');
|
|
});
|
|
|
|
if ($('.bulkUpdate').length > 0) {
|
|
var bulkUpdate = $('.bulkUpdate').parent();
|
|
bulkUpdate.removeAttr('onclick');
|
|
|
|
bulkUpdate.bind('click', function(e) {
|
|
e.preventDefault();
|
|
var items = getSelectedAuctions('action_update');
|
|
|
|
if (items.length > 0) {
|
|
getFormModal(items, 'update');
|
|
} else {
|
|
alert('Nie wybrano ofert do aktualizacji.');
|
|
}
|
|
});
|
|
}
|
|
|
|
// Finish
|
|
$('[x-name=action_finish]').on('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
$('input[name="xallegro_auctionBox[]"]').removeAttr('checked');
|
|
$(this).parents('tr').find('input[name="xallegro_auctionBox[]"]').prop('checked', true);
|
|
|
|
getFormModal(getSelectedAuctions('action_finish'), 'finish');
|
|
});
|
|
|
|
if ($('.bulkFinish').length > 0) {
|
|
var bulkFinish = $('.bulkFinish').parent();
|
|
bulkFinish.removeAttr('onclick');
|
|
|
|
bulkFinish.bind('click', function(e) {
|
|
e.preventDefault();
|
|
var items = getSelectedAuctions('action_finish');
|
|
|
|
if (items.length > 0) {
|
|
getFormModal(items, 'finish');
|
|
} else {
|
|
alert('Nie wybrano ofert do zakończenia.');
|
|
}
|
|
});
|
|
}
|
|
|
|
// Resume
|
|
$('[x-name=action_redo]').on('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
$('input[name="xallegro_auctionBox[]"]').removeAttr('checked');
|
|
$(this).parents('tr').find('input[name="xallegro_auctionBox[]"]').prop('checked', true);
|
|
|
|
getFormModal(getSelectedAuctions('action_redo'), 'redo');
|
|
});
|
|
|
|
if ($('.bulkRedo').length > 0) {
|
|
var bulkRedo = $('.bulkRedo').parent();
|
|
bulkRedo.removeAttr('onclick');
|
|
|
|
bulkRedo.bind('click', function(e) {
|
|
e.preventDefault();
|
|
var items = getSelectedAuctions('action_redo');
|
|
|
|
if (items.length > 0) {
|
|
getFormModal(items, 'redo');
|
|
} else {
|
|
alert('Nie wybrano ofert do wznowienia.');
|
|
}
|
|
});
|
|
}
|
|
|
|
// AutoRenew setting
|
|
if ($('.bulkAutoRenew').length > 0) {
|
|
var bulkAutoRenew = $('.bulkAutoRenew').parent();
|
|
bulkAutoRenew.removeAttr('onclick');
|
|
|
|
bulkAutoRenew.bind('click', function(e) {
|
|
e.preventDefault();
|
|
var items = getSelectedAuctions('action_unbind'); // get offers by unbind
|
|
|
|
if (items.length > 0) {
|
|
getFormModal(items, 'auto_renew');
|
|
} else {
|
|
alert('Nie wybrano ofert do zmiany ustawień wznawiania, lub wybrane oferty nie są powiązane.');
|
|
}
|
|
});
|
|
}
|
|
|
|
// Unbind
|
|
if ($('.bulkUnbind').length > 0) {
|
|
var bulkUnbind = $('.bulkUnbind').parent();
|
|
bulkUnbind.removeAttr('onclick');
|
|
|
|
bulkUnbind.bind('click', function(e) {
|
|
e.preventDefault();
|
|
var items = getSelectedAuctions('action_unbind');
|
|
var formAction = $(this).closest('form').attr('action') + '&submitBulkunbind';
|
|
|
|
if (items.length > 0) {
|
|
self._modalAlert($('#offer_unbind_modal_alert'), function() {
|
|
var formBulkUnbind = $('<form>', {
|
|
action: formAction,
|
|
method: 'POST'
|
|
});
|
|
|
|
for (var key in items) {
|
|
formBulkUnbind.append($('<input>', {
|
|
name: 'xallegro_auctionBox[]',
|
|
type: 'hidden',
|
|
value: items[key].id
|
|
}));
|
|
}
|
|
|
|
$('body').append(formBulkUnbind);
|
|
formBulkUnbind.submit();
|
|
});
|
|
} else {
|
|
alert('Nie wybrano ofert do usunięcia powiązania, lub wybrane oferty nie są powiązane.');
|
|
}
|
|
});
|
|
|
|
$('[x-name=action_unbind]').on('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
$('input[name="xallegro_auctionBox[]"]').removeAttr('checked');
|
|
$(this).parents('tr').find('input[name="xallegro_auctionBox[]"]').prop('checked', true);
|
|
|
|
bulkUnbind.trigger('click');
|
|
});
|
|
}
|
|
|
|
function getSelectedAuctions(action)
|
|
{
|
|
var $input = $('[name="xallegro_auctionBox[]"]:checked');
|
|
var items = [];
|
|
|
|
if ($input.length > 0) {
|
|
$input.each(function() {
|
|
var actionIsset = $(this).closest('tr').find('[x-name=' + action + ']');
|
|
if (typeof actionIsset.data('id') !== 'undefined') {
|
|
items.push({
|
|
id: actionIsset.data('id'),
|
|
title: actionIsset.data('title')
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
return items;
|
|
}
|
|
|
|
function getFormModal(auctions, formAction)
|
|
{
|
|
self.ajaxPOST({
|
|
action: 'getAuctionFormModal',
|
|
auctions: auctions,
|
|
formAction: formAction
|
|
}, function() {
|
|
var cover = $('<div id="allegro_cover"></div>');
|
|
cover.appendTo('body').hide().fadeIn(400);
|
|
}, function (json) {
|
|
$(document).find('body #allegro_cover').remove();
|
|
|
|
if (json.success) {
|
|
$modalForm.html(json.html);
|
|
|
|
if (formAction == 'update') {
|
|
$modalForm.find('.x-auction-form-submit').hide();
|
|
}
|
|
|
|
$modalForm.modal('show');
|
|
$modalForm.find('[data-toggle="tooltip"]').tooltip();
|
|
self._cast();
|
|
} else {
|
|
alert(json.message);
|
|
}
|
|
});
|
|
}
|
|
|
|
function processFormModal()
|
|
{
|
|
var action = $modalForm.find('input[name="action"]').val();
|
|
var auctions = [];
|
|
var hasErrors = false;
|
|
var hasWarnings = false;
|
|
var messageOnFinish = false;
|
|
|
|
$modalForm.find('input[data-name="xAllegroAuctionId"]').each(function(index, element) {
|
|
if (!$(element).is(':disabled')) {
|
|
auctions.push(parseFloat($(element).closest('tr').data('id')));
|
|
}
|
|
});
|
|
|
|
var doRequest = function(auctionIndex, replayAction, replayData)
|
|
{
|
|
if (!auctions.length) {
|
|
$modalForm.find('.x-auction-form-submit').hide();
|
|
$modalForm.find('.x-updater-error-message').text('Brak ofert do aktualizacji.').show();
|
|
}
|
|
|
|
if (auctions.length == auctionIndex) {
|
|
$modalForm.find('.x-updater-action-close-popup').show();
|
|
$modalForm.find('.x-updater-progress-bar').addClass('is-finished');
|
|
$modalForm.find('.x-updater-start-title').hide();
|
|
$modalForm.find('.x-updater-end-title').show();
|
|
|
|
if (hasErrors) {
|
|
$modalForm.find('.x-updater-logger-with-errors').show();
|
|
}
|
|
if (hasWarnings) {
|
|
$modalForm.find('.x-updater-logger-with-warnings').show();
|
|
}
|
|
if (messageOnFinish) {
|
|
$modalForm.find('.x-updater-finish-message').text(messageOnFinish).show();
|
|
}
|
|
|
|
if (action == 'auctionUpdate') {
|
|
$modalForm.find('.x-updater-redo-btn').show();
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
var auction = auctions[auctionIndex];
|
|
var ajaxData = {
|
|
action: (typeof replayAction !== 'undefined' ? replayAction : action),
|
|
auction: auction,
|
|
auctionIndex: auctionIndex
|
|
};
|
|
|
|
if (action == 'auctionRedo') {
|
|
ajaxData = $.extend(ajaxData, {
|
|
auctionAutoRenew: $modalForm.find('.x-auction-form-list tr[data-id="' + auction + '"] select[data-name="xAllegroAuctionAutoRenew"]').val(),
|
|
auctionQuantity: $modalForm.find('.x-auction-form-list tr[data-id="' + auction + '"] input[data-name="xAllegroAuctionQuantity"]').val()
|
|
});
|
|
}
|
|
else if (action == 'auctionUpdate') {
|
|
var entity = $modalForm.find('[x-name="update-auction-entity"]').val();
|
|
var entityAdditionalData = $modalForm.find('.x-updater-extra-settings #updater_entity_' + entity).find('input, select, textarea');
|
|
|
|
ajaxData = $.extend(ajaxData, {
|
|
entity: entity,
|
|
additionalData: entityAdditionalData.serializeArray()
|
|
});
|
|
}
|
|
|
|
if (typeof replayData !== 'undefined' && replayData !== null) {
|
|
ajaxData = $.extend(ajaxData, {
|
|
replayData: replayData
|
|
});
|
|
}
|
|
|
|
self.ajaxPOST(ajaxData, function() {
|
|
if (auctionIndex == 0 && typeof replayAction === 'undefined') {
|
|
$modalForm.find('.modal-header .close').remove();
|
|
$modalForm.find('.x-auction-form-submit').hide();
|
|
$modalForm.find('.x-updater-methods').hide();
|
|
|
|
$modalForm.find('.x-auction-form-list').fadeOut(400, function() {
|
|
$modalForm.find('.x-updater-finish-message').text('').hide();
|
|
$modalForm.find('.x-updater-progress-to').text(auctions.length);
|
|
$modalForm.find('.x-updater-progress').fadeIn(400);
|
|
$modalForm.find('.x-updater-progress-bar-fill').css('width', '1%');
|
|
$modalForm.find('.x-updater-logger').show();
|
|
});
|
|
}
|
|
}, function(json) {
|
|
if ("messageOnFinish" in json && json.messageOnFinish) {
|
|
messageOnFinish = json.messageOnFinish;
|
|
}
|
|
|
|
$modalForm.find('.x-updater-logger-content').find('li.as-placeholder').remove();
|
|
|
|
if (!json.success && !json.continue) {
|
|
$modalForm.find('.x-updater-action-close-popup').show();
|
|
$modalForm.find('.x-updater-progress').remove();
|
|
$modalForm.find('.x-updater-error-message').text(json.message).show();
|
|
|
|
return;
|
|
}
|
|
else if (!json.success) {
|
|
if ("asWarning" in json && json.asWarning) {
|
|
$modalForm.find('.x-updater-logger-content').prepend('<li class="as-warning">' + json.message + '</li>');
|
|
hasWarnings = true;
|
|
} else {
|
|
$modalForm.find('.x-updater-logger-content').prepend('<li class="as-error">' + json.message + '</li>');
|
|
hasErrors = true;
|
|
}
|
|
}
|
|
|
|
if (json.success && json.message != '') {
|
|
$modalForm.find('.x-updater-logger-content').prepend('<li class="' + ("asPlaceholder" in json && json.asPlaceholder ? 'as-placeholder' : '') + '">' + json.message + '</li>');
|
|
}
|
|
|
|
if ("replayAction" in json && json.replayAction) {
|
|
doRequest(auctionIndex, json.replayAction, ("replayData" in json ? json.replayData : null));
|
|
} else {
|
|
if ("processed" in json) {
|
|
var progress = (100 * json.processed) / auctions.length;
|
|
$modalForm.find('.x-updater-progress-bar-fill').css('width', Math.round(progress) + '%');
|
|
$modalForm.find('.x-updater-progress-from').html(json.processed);
|
|
}
|
|
|
|
doRequest(++auctionIndex);
|
|
}
|
|
});
|
|
};
|
|
|
|
if (action == 'auctionAuto_renew') {
|
|
self.ajaxPOST({
|
|
action: 'changeAutoRenew',
|
|
offerId: auctions,
|
|
autoRenew: $modalForm.find('select[name="allegro_auto_renew"]').val()
|
|
}, null, function(json) {
|
|
if (json.success) {
|
|
window.location.reload();
|
|
} else {
|
|
showErrorMessage('Wystąpił błąd podczas aktualizacji auto wznawiania');
|
|
}
|
|
});
|
|
} else {
|
|
doRequest(0);
|
|
}
|
|
}
|
|
},
|
|
|
|
auctionBind: function()
|
|
{
|
|
var self = this;
|
|
|
|
$('input#name').autocomplete('index.php?controller=AdminXAllegroAuctionsList&token=' + token + '&ajax=1&action=getProductList', {}).result(function(event, data, formatted) {
|
|
$('input#id_product').prop('value', data[1]);
|
|
getProductAttributes(data[1]);
|
|
});
|
|
|
|
$('input#name').on('input', function() {
|
|
if ($(this).prop('value') === '') {
|
|
$('input#id_product').prop('value', '0');
|
|
}
|
|
});
|
|
|
|
$('input#id_product').on('input', function(){
|
|
var val = parseInt($(this).val());
|
|
if (!isNaN(val) && val > 0) {
|
|
getProductAttributes(val);
|
|
}
|
|
});
|
|
|
|
function getProductAttributes(id_product)
|
|
{
|
|
self.ajaxPOST({
|
|
action: 'getAttributes',
|
|
id_product: id_product
|
|
|
|
}, function() {
|
|
$('fieldset#fieldset_0').parent().fadeTo('fast', 0.2);
|
|
|
|
}, function(data)
|
|
{
|
|
$('select#id_product_attribute option').remove();
|
|
|
|
$.each(data, function(index, value) {
|
|
$('select#id_product_attribute').append(new Option(value.attribute_designation, value.id_product_attribute));
|
|
});
|
|
|
|
if ($('select#id_product_attribute option').size() === 0) {
|
|
$('select#id_product_attribute').append(new Option('Brak', '0'));
|
|
}
|
|
|
|
$('fieldset#fieldset_0').parent().fadeTo('fast', 1);
|
|
})
|
|
}
|
|
},
|
|
|
|
refreshTags: function(only_products)
|
|
{
|
|
var self = this;
|
|
var tagsBox = $('[x-name="tags"]');
|
|
only_products = (typeof only_products !== 'undefined' && only_products ? 1 : 0);
|
|
|
|
self.ajaxPOST({
|
|
action: 'getTags',
|
|
id_allegro_category: parseInt($('#allegro_category_current').val(), 10),
|
|
id_xallegro_account: $('#id_xallegro_account').val(),
|
|
productsIds: self.getAuctionProductsIds(),
|
|
onlyProducts: only_products
|
|
|
|
}, function() {
|
|
if (!only_products) {
|
|
tagsBox.fadeTo('fast', 0.2);
|
|
tagsBox.find('.form-wrapper').html('');
|
|
}
|
|
|
|
$('div[x-name=product_tags]').html('');
|
|
$('input[x-name="product_tags"]').removeAttr('checked');
|
|
$('a[x-name="product_tags"]').prop('disabled', 'disabled');
|
|
$('.tags-input-error').remove();
|
|
|
|
}, function(data) {
|
|
if (data['tags']) {
|
|
$('a[x-name="product_tags"]').parent().show();
|
|
|
|
if (!only_products) {
|
|
tagsBox.find('.form-wrapper').html((data['tags_category']));
|
|
tagsBox.fadeTo('fast', 1);
|
|
}
|
|
|
|
if (data['tags_product']) {
|
|
$('div[x-name=product_tags]').each(function () {
|
|
if (data.tags_product[$(this).attr('x-index')]) {
|
|
$(this).html('<div class="form-horizontal">'
|
|
+ '<input type="hidden" id="xallegro_tags_account" name="xallegro_tags_account" value="' + $('[name=id_xallegro_account]').val() + '">'
|
|
+ data.tags_product[$(this).attr('x-index')]
|
|
.replace(/xallegro_tag\[\d+\]/g, 'item[' + $(this).attr('x-index') + '][tags]')
|
|
+ '</div>').find('table').show();
|
|
|
|
$('input[x-name="product_tags"][x-index="' + $(this).attr('x-index') + '"]').prop('checked', 'checked');
|
|
$('a[x-name="product_tags"][x-index="' + $(this).attr('x-index') + '"]').removeAttr('disabled');
|
|
}
|
|
else {
|
|
$(this).html('<div class="form-horizontal">'
|
|
+ '<input type="hidden" id="xallegro_tags_account" name="xallegro_tags_account" value="' + $('[name=id_xallegro_account]').val() + '">'
|
|
+ data.tags.replace(/xallegro_tag\[\d+\]/g, 'item[' + $(this).attr('x-index') + '][tags]')
|
|
+ '</div>').find('table').show();
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
$('div[x-name=product_tags]').each(function () {
|
|
$(this).html('<div class="form-horizontal">'
|
|
+ '<input type="hidden" id="xallegro_tags_account" name="xallegro_tags_account" value="' + $('[name=id_xallegro_account]').val() + '">'
|
|
+ data.tags.replace(/xallegro_tag\[\d+\]/g, 'item[' + $(this).attr('x-index') + '][tags]')
|
|
+ '</div>').find('table').show();
|
|
});
|
|
}
|
|
}
|
|
else {
|
|
$('a[x-name="product_tags"]').parent().hide();
|
|
|
|
tagsBox.find('.panel-heading').after('<p class="tags-input-error">Tagi ofertowe są dostępne tylko dla kont korzystających z abonamentu Allegro.</p>');
|
|
tagsBox.fadeTo('fast', 1);
|
|
}
|
|
});
|
|
},
|
|
|
|
getAuctionProductsIds: function()
|
|
{
|
|
var productsIds = [];
|
|
$('[x-name=product_switch]').each(function() {
|
|
if ($(this).prop('disabled')) {
|
|
return;
|
|
}
|
|
|
|
var row = $(this).parents('tr').next();
|
|
var product = {};
|
|
|
|
product['x_id'] = row.attr('x-id');
|
|
product['id_product'] = row.find('input[name="item[' + row.attr('x-id') + '][id_product]"]').val();
|
|
product['id_product_attribute'] = row.find('input[name="item[' + row.attr('x-id') + '][id_product_attribute]"]').val();
|
|
|
|
productsIds.push(Object.values(product).join('_'));
|
|
});
|
|
|
|
return productsIds;
|
|
},
|
|
|
|
auctionForm: function()
|
|
{
|
|
var self = this;
|
|
var bulkContainer = $('#bulk_container');
|
|
var bulkBottom = parseInt(bulkContainer.css('bottom'));
|
|
var bulkBottomStick = bulkBottom - bulkContainer.find('fieldset').outerHeight() -5;
|
|
|
|
var stickyIO = new IntersectionObserver(function (entries)
|
|
{
|
|
if (entries[0].intersectionRatio === 1) {
|
|
$(entries[0].target).css('bottom', bulkBottom + 'px');
|
|
} else {
|
|
$(entries[0].target).css('bottom', bulkBottomStick + 'px');
|
|
}
|
|
|
|
calculateSticky();
|
|
}, {
|
|
threshold: [0, 1]
|
|
});
|
|
|
|
function calculateSticky()
|
|
{
|
|
var rect = bulkContainer[0].getBoundingClientRect();
|
|
var position;
|
|
|
|
if (bulkContainer.hasClass('is-hidden')) {
|
|
position = window.innerHeight - rect.height + (-1 * bulkBottomStick);
|
|
} else {
|
|
position = window.innerHeight - rect.height + (-1 * bulkBottom);
|
|
}
|
|
|
|
if (parseInt(position) <= parseInt(rect.top)) {
|
|
bulkContainer.addClass('is-sticky');
|
|
} else {
|
|
bulkContainer.removeClass('is-sticky').addClass('is-hidden');
|
|
}
|
|
}
|
|
|
|
stickyIO.observe(bulkContainer[0]);
|
|
bulkContainer.css('visibility', 'visible');
|
|
|
|
$(window).on('scroll', function() {
|
|
calculateSticky();
|
|
});
|
|
|
|
var deliveryMarketplaceList = $('<div></div>').addClass('col-sm-4 col-lg-6').append(
|
|
$('[x-name="shipping_rates"]').find('.x13allegro-delivery-marketplace-list').prop('outerHTML')
|
|
);
|
|
$('[x-name="allegro_account"]').find('fieldset > .row').append(deliveryMarketplaceList);
|
|
|
|
$('#country_code').chosen();
|
|
|
|
this._countryCodeSwitch($('#country_code'));
|
|
|
|
$('#country_code').on('change', function () {
|
|
self._countryCodeSwitch($(this));
|
|
});
|
|
|
|
$('select[x-name="template"]').chosen({width: '245'});
|
|
$('select[x-name="bulk_template"]').chosen();
|
|
|
|
|
|
/** ------ KONTA ALLEGRO ------------------------------------------------------------------------------------ */
|
|
|
|
var currentlySelectedAccount = $('#id_xallegro_account').val();
|
|
$(document).on('change', '[name=id_xallegro_account]', function() {
|
|
var select = $(this);
|
|
|
|
self._modalAlert($('#account_change_modal_alert'), function() {
|
|
self.ajaxAbort();
|
|
$('#allegro-progress').hide();
|
|
|
|
self.ajaxPOST({
|
|
action : 'getAllegroAccount',
|
|
id_xallegro_account : select.val()
|
|
}, function() {
|
|
$('#account_switch_form').closest('#content').fadeTo('fast', 0.2);
|
|
}, function() {
|
|
location.reload();
|
|
});
|
|
},
|
|
function() {
|
|
select.val(currentlySelectedAccount);
|
|
});
|
|
});
|
|
|
|
/** ------ OPCJE PRODUKTÓW ---------------------------------------------------------------------------------- */
|
|
|
|
$('[x-name=product_switch]').on('change', function() {
|
|
if ($(this).is(':checked')) {
|
|
$(this).parent().parent().next().show();
|
|
} else {
|
|
$(this).parent().parent().next().hide();
|
|
}
|
|
|
|
calculateSticky();
|
|
});
|
|
|
|
$('[x-name=title]').on('input xchange', function() {
|
|
var size = self._titleCount($(this).prop('value'));
|
|
|
|
while (size > self.titleMaxCount) {
|
|
$(this).prop('value', $(this).prop('value').slice(0,-1));
|
|
size = self._titleCount($(this).prop('value'));
|
|
}
|
|
|
|
$(this).parent().find('[x-name=counter]').html(size);
|
|
});
|
|
|
|
$(document).on('click', '[x-name="productization_name_copy"]', function(e) {
|
|
e.preventDefault();
|
|
|
|
var $offerRow = $(this).closest('tr');
|
|
var $offerTitle = $offerRow.find('[x-name="title"]');
|
|
var allegroProductName = $offerRow.find('[x-name="allegro_product_name"]').val();
|
|
|
|
$offerTitle.val(allegroProductName).trigger('input');
|
|
});
|
|
|
|
$(document).on('show.bs.modal', 'div[x-name="description_edit"]', function() {
|
|
var $this = $(this);
|
|
$this.find('[x-name="description_edit_mce"]').html($this.find('[x-name="description"]').val());
|
|
|
|
tinymce.init($.extend({
|
|
selector: '#' + $this.find('[x-name="description_edit_mce"]').attr('id')
|
|
}, initTinyMceLite));
|
|
|
|
$this.on('click', '[x-name=description_save]', function() {
|
|
$this.find('[x-name="description"]').html(tinyMCE.activeEditor.getContent({format : 'raw'}));
|
|
|
|
$this.off('click', '[x-name=description_cancel]');
|
|
$this.modal('hide');
|
|
});
|
|
|
|
$this.on('click', '[x-name=description_cancel]', function() {
|
|
self._modalAlert($this.find('#description_edit_modal_alert_confirm'), function() {
|
|
tinymce.activeEditor.setContent($this.find('[x-name="description"]').val());
|
|
|
|
$this.off('click', '[x-name=description_cancel]');
|
|
$this.modal('hide');
|
|
});
|
|
});
|
|
});
|
|
|
|
$('input[x-name="product_tags"]').on('change', function () {
|
|
if ($(this).prop('checked')) {
|
|
$(this).parent().find('a[x-name="product_tags"]').removeAttr('disabled');
|
|
} else {
|
|
$(this).parent().find('a[x-name="product_tags"]').attr('disabled', 'disabled');
|
|
}
|
|
});
|
|
|
|
$('a[x-name=product_tags]').fancybox({
|
|
autoDimensions: false,
|
|
minWidth: 400,
|
|
width: 400,
|
|
height: 'auto',
|
|
autoHeight: true,
|
|
transitionIn: 'none',
|
|
transitionOut: 'none',
|
|
helpers: {
|
|
overlay: {
|
|
locked: false
|
|
}
|
|
}
|
|
});
|
|
|
|
$('select[x-name=selling_mode]').on('change xchange', function () {
|
|
var inputQty = $(this).parents('tr').find('input[x-name=quantity]');
|
|
var inputPriceStarting = $(this).parents('tr').find('input[x-name=price_asking]');
|
|
var inputPriceMinimal = $(this).parents('tr').find('input[x-name=price_minimal]');
|
|
var selectDuration = $(this).parents('tr').find('select[x-name=duration]');
|
|
var selectAutoRenew = $(this).parents('tr').find('select[x-name=auto_renew]');
|
|
|
|
if ($(this).val() == 'BUY_NOW') {
|
|
inputQty.removeAttr('disabled').val(inputQty.attr('x-start'));
|
|
inputPriceStarting.prop('disabled', 'disabled').closest('.price-asking').hide();
|
|
inputPriceMinimal.prop('disabled', 'disabled').closest('.price-minimal').hide();
|
|
selectAutoRenew.removeAttr('disabled').show().prev().show();
|
|
|
|
selectDuration.find('option').each(function () {
|
|
$(this).removeAttr('disabled').show();
|
|
if ($(this).data('default') == '1') {
|
|
selectDuration.val($(this).attr('value'));
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
inputQty.prop('disabled', 'disabled').attr('x-start', inputQty.val()).val(1);
|
|
inputPriceStarting.removeAttr('disabled').closest('.price-asking').show();
|
|
inputPriceMinimal.removeAttr('disabled').closest('.price-minimal').show();
|
|
selectAutoRenew.prop('disabled', 'disabled').hide().prev().hide();
|
|
|
|
selectDuration.find('option').each(function () {
|
|
if ($(this).data('type') == 'BUY_NOW') {
|
|
$(this).prop('disabled', 'disabled').hide();
|
|
}
|
|
});
|
|
|
|
selectDuration.val('P3D');
|
|
}
|
|
});
|
|
|
|
$('input[x-name=quantity]').on('focusout xchange', function() {
|
|
if ($(this).attr('x-max') !== '' && (parseInt($(this).prop('value')) > parseInt($(this).attr('x-max')) && parseInt($(this).attr('x-oos')) == 0)) {
|
|
$(this).prop('value', $(this).attr('x-max'));
|
|
}
|
|
|
|
if (parseInt($(this).prop('value')) < 1) {
|
|
$(this).prop('value', 1);
|
|
}
|
|
});
|
|
|
|
$('input[x-name="price_buy_now"]').on('change xchange', function () {
|
|
var $basePriceInput = $(this);
|
|
|
|
$basePriceInput.closest('tr').find('.marketplaces-prices > div').each(function (index, element) {
|
|
var $marketplacePriceInput = $(element).find('input');
|
|
|
|
if ($marketplacePriceInput.is(':read-only')) {
|
|
$marketplacePriceInput.val(($basePriceInput.val() / $basePriceInput.data('rate')) * $marketplacePriceInput.data('rate')).trigger('change');
|
|
}
|
|
});
|
|
});
|
|
|
|
$('input[x-name="send_tax"]').on('change', function () {
|
|
var $input = $(this);
|
|
var $noCategoryTax = $(this).closest('td').find('.no-category-tax');
|
|
var $taxes = $(this).closest('tr').find('.marketplaces-taxes > div');
|
|
var categoryId = $(this).closest('tr').find('input[x-name="category_id"]').val();
|
|
|
|
if (categoryId == 0) {
|
|
$input.parent().hide();
|
|
$taxes.hide();
|
|
$noCategoryTax.show();
|
|
|
|
return;
|
|
}
|
|
|
|
$noCategoryTax.hide();
|
|
$input.parent().show();
|
|
|
|
$taxes.each(function (index, element) {
|
|
if (self.shippingRateMarketplaces[$('#shipping_rate').val()].includes($(element).data('marketplace-id')) && $input.is(':checked')) {
|
|
$(element).show();
|
|
} else {
|
|
$(element).hide();
|
|
}
|
|
});
|
|
});
|
|
|
|
$('.marketplaces-prices input').on('click', function () {
|
|
var $input = $(this);
|
|
|
|
if (!$input.is(':read-only')) {
|
|
return;
|
|
}
|
|
|
|
self._modalAlert($('#price_edit_modal_alert'), function() {
|
|
$input.prop('readonly', false);
|
|
});
|
|
});
|
|
|
|
$('li[x-name=images] img').on('click', function() {
|
|
var cell = $(this).parents('td');
|
|
cell.find('li').removeClass('main_image');
|
|
cell.find('[x-name=image_main]').val($(this).attr('x-value'));
|
|
|
|
if (!$(this).parent().find('input').is(':checked')) {
|
|
$(this).parent().find('input').prop('checked', 'checked').trigger('change');
|
|
}
|
|
|
|
$(this).parent().addClass('main_image');
|
|
});
|
|
|
|
$('input[x-name=images]').on('change', function() {
|
|
if ($(this).is(':checked')) {
|
|
$(this).prop('checked', 'checked').parent().addClass('checked');
|
|
|
|
if (!$(this).parents('td').find('[x-name=image_main]').val()) {
|
|
$(this).parent().find('img').trigger('click');
|
|
}
|
|
}
|
|
else {
|
|
$(this).removeAttr('checked').parent().removeClass('checked');
|
|
|
|
if ($(this).parents('td').find('[x-name=image_main]').val() == $(this).val()) {
|
|
var firstChecked = $(this).parents('ul').find('li.checked')[0];
|
|
if (typeof firstChecked !== 'undefined') {
|
|
$(firstChecked).find('img').trigger('click');
|
|
}
|
|
else {
|
|
$(this).parent().removeClass('main_image');
|
|
$(this).parents('td').find('[x-name=image_main]').val(null);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
$('[x-name="template"]').on('xchange', function() {
|
|
$(this).trigger('chosen:updated');
|
|
});
|
|
|
|
$('[x-name=preview]').on('click', function() {
|
|
var button = $(this);
|
|
var xID = button.attr('x-id');
|
|
var preview = window.open('', 'popupWindow', 'width=1200, height=600, scrollbars=yes');
|
|
|
|
self.ajaxPOST({
|
|
data: $('#allegro_main_form').find('tr[x-id="' + xID + '"] input, tr[x-id="' + xID + '"] select, tr[x-id="' + xID + '"] textarea').serializeArray(),
|
|
action: 'preview'
|
|
|
|
}, function() {
|
|
var cover = $('<div id="allegro_cover"></div>');
|
|
$(preview.document.body).append(cover);
|
|
|
|
}, function(json) {
|
|
$(preview.document.body).html(json.preview);
|
|
$('#preview_form').remove();
|
|
});
|
|
|
|
return false;
|
|
});
|
|
|
|
$('input[x-name="preorder"]').on('change xchange', function() {
|
|
if ($(this).prop('checked')) {
|
|
$(this).parents('tr').find('input[x-name="preorder_date"]').removeAttr('disabled').show();
|
|
} else {
|
|
$(this).parents('tr').find('input[x-name="preorder_date"]').prop('disabled', true).hide();
|
|
}
|
|
});
|
|
|
|
|
|
/** ------ MASOWA ZMIANA PARAMETRÓW ------------------------------------------------------------------------- */
|
|
|
|
$('#bulk_container_show').on('click', function () {
|
|
bulkContainer.css('bottom', bulkBottom).removeClass('is-hidden');
|
|
return false;
|
|
});
|
|
|
|
$('#bulk_container_hide').on('click', function () {
|
|
bulkContainer.css('bottom', bulkBottomStick).addClass('is-hidden');
|
|
return false;
|
|
});
|
|
|
|
$('[x-name=bulk_select_all]').on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
$('[x-name=product_switch]:not(:checked):not(:disabled)').each(function() {
|
|
$(this).prop('checked', 'checked').trigger('change');
|
|
});
|
|
});
|
|
|
|
$('[x-name=bulk_select_none]').on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
$('[x-name=product_switch]:checked:not(:disabled)').each(function() {
|
|
$(this).removeAttr('checked').trigger('change');
|
|
});
|
|
});
|
|
|
|
$('[x-name=bulk_select_not_exposed]').on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
$('[x-name=product_switch]:not(:disabled)').each(function() {
|
|
if ($(this).parents('tr').hasClass('exposed')) {
|
|
if ($(this).is(':checked')) {
|
|
$(this).removeAttr('checked').trigger('change');
|
|
}
|
|
} else {
|
|
if (!$(this).is(':checked')) {
|
|
$(this).prop('checked', 'checked').trigger('change');
|
|
}
|
|
}
|
|
});
|
|
|
|
calculateSticky();
|
|
});
|
|
|
|
$('select[x-name=bulk_productization_mode]').on('change', function() {
|
|
var value = $(this).prop('value');
|
|
|
|
if (value == '0') {
|
|
return;
|
|
}
|
|
|
|
$('[x-name=product_switch][data-disabled="0"]').each(function() {
|
|
$(this).closest('tr').find('[x-name="productization_mode"]').prop('value', value).trigger('change');
|
|
});
|
|
});
|
|
|
|
$('#show_bulk_title_tags').on('click', function(e) {
|
|
e.preventDefault();
|
|
$(this).hide();
|
|
$('#bulk_title_tags').show();
|
|
});
|
|
|
|
$('[x-name="bulk_title_before"]').on('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
var bulkTitlePattern = $('input[name="bulk_title"]');
|
|
var titlePattern = bulkTitlePattern.val().trim();
|
|
|
|
if (!titlePattern.length) {
|
|
return;
|
|
}
|
|
|
|
$('[x-name="product_switch"]:checked').each(function(i, el) {
|
|
var itemId = $(el).parents('tr').attr('data-index');
|
|
var titleCurrent = $('input[name="item[' + itemId + '][title]"]').val().trim();
|
|
$('input[name="item[' + itemId + '][title]"]').val(formatTitle(itemId, titlePattern).trim() + ' ' + titleCurrent).trigger('xchange');
|
|
bulkTitlePattern.prop('value', '');
|
|
});
|
|
});
|
|
|
|
$('[x-name="bulk_title_after"]').on('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
var bulkTitlePattern = $('input[name="bulk_title"]');
|
|
var titlePattern = bulkTitlePattern.val().trim();
|
|
|
|
if (!titlePattern.length) {
|
|
return;
|
|
}
|
|
|
|
$('[x-name="product_switch"]:checked').each(function(i, el) {
|
|
var itemId = $(el).parents('tr').attr('data-index');
|
|
var titleCurrent = $('input[name="item[' + itemId + '][title]"]').val().trim();
|
|
$('input[name="item[' + itemId + '][title]"]').val(titleCurrent + ' ' + formatTitle(itemId, titlePattern).trim()).trigger('xchange');
|
|
bulkTitlePattern.prop('value', '');
|
|
});
|
|
});
|
|
|
|
$('[x-name="bulk_title_change"]').on('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
var bulkTitlePattern = $('input[name="bulk_title"]');
|
|
var titlePattern = bulkTitlePattern.val().trim();
|
|
|
|
if (!titlePattern.length) {
|
|
return;
|
|
}
|
|
|
|
$('[x-name="product_switch"]:checked').each(function(i, el) {
|
|
var itemId = $(el).parents('tr').attr('data-index');
|
|
$('input[name="item[' + itemId + '][title]"]').val(formatTitle(itemId, titlePattern).trim()).trigger('xchange');
|
|
bulkTitlePattern.prop('value', '');
|
|
});
|
|
});
|
|
|
|
$('[x-name="bulk_productization_name_copy"]').on('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
$('[x-name="product_switch"]:checked').each(function() {
|
|
$(this).parent().parent().next().find('a[x-name="productization_name_copy"]').each(function() {
|
|
$(this).trigger('click');
|
|
});
|
|
});
|
|
});
|
|
|
|
$('[x-name=bulk_images_all]').on('click', function() {
|
|
$('[x-name=product_switch]:checked').each(function() {
|
|
var maxImages = $(this).parent().parent().next().find('.images-sortable').attr('x-max');
|
|
$(this).parent().parent().next().find('input[x-name=images]').each(function(i) {
|
|
if (i < maxImages) {
|
|
$(this).prop('checked', true).trigger('change');
|
|
} else {
|
|
$(this).prop('checked', false).trigger('change');
|
|
}
|
|
});
|
|
});
|
|
|
|
return false;
|
|
});
|
|
|
|
$('[x-name=bulk_images_del]').on('click', function() {
|
|
$('[x-name=product_switch]:checked').each(function() {
|
|
$(this).parent().parent().next().find('input[x-name=images]').each(function() {
|
|
$(this).prop('checked', false).trigger('change');
|
|
});
|
|
});
|
|
|
|
return false;
|
|
});
|
|
|
|
$('[x-name=bulk_images_invert]').on('click', function() {
|
|
$('[x-name=product_switch]:checked').each(function() {
|
|
$(this).parent().parent().next().find('input[x-name=images]').each(function() {
|
|
$(this).prop('checked', !$(this).prop('checked')).trigger('change');
|
|
});
|
|
});
|
|
|
|
return false;
|
|
});
|
|
|
|
$('[x-name=bulk_images_first]').on('click', function() {
|
|
$('[x-name=product_switch]:checked').each(function() {
|
|
$(this).parent().parent().next().find('input[x-name=images]').eq(0).prop('checked', true).trigger('change');
|
|
});
|
|
|
|
return false;
|
|
});
|
|
|
|
$('[x-name=promotionPackages] input').on('change', function() {
|
|
var $input = $(this);
|
|
|
|
$('[x-name=product_switch]').each(function() {
|
|
if (!$(this).is(':checked')) {
|
|
return;
|
|
}
|
|
|
|
$(this).parent().parent().next().find('[x-name=' + $input.attr('x-name') + ']').prop('checked', !!$input.is(':checked')).trigger('change');
|
|
});
|
|
});
|
|
|
|
$('a[x-name=bulk_price_buy_now]').on('click', function() {
|
|
var markupAction = $(this).attr('x-action');
|
|
var markup = parseInt($('input[x-name=bulk_price_buy_now]').val()) / 100;
|
|
|
|
if (markupAction === 'down') {
|
|
markup *= -1;
|
|
}
|
|
|
|
$('[x-name=product_switch]:checked').each(function() {
|
|
var input = $(this).closest('tr').next().find('[x-name=price_buy_now]');
|
|
var value = parseFloat(input.val());
|
|
|
|
value += (value * markup);
|
|
input.val(value).trigger('change');
|
|
|
|
$('input[x-name="bulk_price_buy_now"]').prop('value', 0).trigger('change');
|
|
});
|
|
|
|
return false;
|
|
});
|
|
|
|
$('input[x-name=bulk_quantity]').on('focusout', function() {
|
|
var bulkQty = $(this);
|
|
var value = $(this).prop('value');
|
|
var name = $(this).attr('x-name').substr(5);
|
|
|
|
$('[x-name=product_switch]:checked').each(function() {
|
|
var inputQty = $(this).parent().parent().next().find('[x-name=' + name + ']');
|
|
if (!inputQty.is(':disabled')) {
|
|
inputQty.prop('value', value).trigger('xchange');
|
|
}
|
|
|
|
bulkQty.val(0).trigger('change');
|
|
});
|
|
});
|
|
|
|
$('input[x-name=bulk_price_asking], input[x-name=bulk_price_minimal]').on('focusout', function() {
|
|
var inputBulk = $(this);
|
|
var value = $(this).prop('value');
|
|
var name = $(this).attr('x-name').substr(5);
|
|
|
|
$('[x-name=product_switch]:checked').each(function() {
|
|
$(this).parent().parent().next().find('[x-name=' + name + ']').prop('value', value).trigger('xchange');
|
|
inputBulk.prop('value', 0).trigger('change');
|
|
});
|
|
});
|
|
|
|
$('input[x-name=bulk_send_tax]').on('change', function() {
|
|
var input = $(this);
|
|
|
|
$('[x-name=product_switch]').each(function() {
|
|
if (!$(this).is(':checked')) {
|
|
return;
|
|
}
|
|
|
|
$(this).parent().parent().next().find('[x-name=send_tax]').prop('checked', !!input.is(':checked')).trigger('change');
|
|
});
|
|
});
|
|
|
|
$('select[x-name=bulk_duration]').on('change', function() {
|
|
var value = $(this).prop('value');
|
|
var name = $(this).attr('x-name').substr(5);
|
|
|
|
$('[x-name=product_switch]:checked').each(function() {
|
|
var inputDuration = $(this).parent().parent().next().find('[x-name=' + name + ']');
|
|
if (!inputDuration.find('option[value="' + value + '"]').is(':disabled')) {
|
|
inputDuration.prop('value', value).trigger('xchange');
|
|
}
|
|
});
|
|
});
|
|
|
|
$('select[x-name=bulk_quantity_type], select[x-name=bulk_selling_mode], select[x-name=bulk_auto_renew], select[x-name=bulk_template], select[x-name=bulk_size_table], select[x-name=bulk_wholesale_price]').on('change', function() {
|
|
var value = $(this).prop('value');
|
|
var name = $(this).attr('x-name').substr(5);
|
|
|
|
$('[x-name=product_switch]:checked').each(function() {
|
|
$(this).parent().parent().next().find('[x-name=' + name + ']').prop('value', value).trigger('xchange');
|
|
});
|
|
});
|
|
|
|
$('input[x-name="bulk_preorder"]').on('change', function() {
|
|
var input = $(this);
|
|
|
|
if (input.is(':checked')) {
|
|
$('input[name="bulk_preorder_date"]').removeAttr('disabled').show();
|
|
} else {
|
|
$('input[name="bulk_preorder_date"]').prop('disabled', true).hide();
|
|
}
|
|
|
|
$('[x-name=product_switch]:checked').each(function() {
|
|
$(this).parent().parent().next().find('[x-name="preorder"]').prop('checked', input.is(':checked')).trigger('xchange');
|
|
});
|
|
});
|
|
|
|
$('input[x-name="bulk_preorder_date"]').on('change', function() {
|
|
var input = $(this);
|
|
|
|
$('[x-name=product_switch]:checked').each(function() {
|
|
$(this).parent().parent().next().find('[x-name="preorder_date"]').val(input.val());
|
|
});
|
|
});
|
|
|
|
$('#itemTabBulk a').on('click', function(e) {
|
|
e.preventDefault();
|
|
var element = $(this).attr('data-item-tab');
|
|
|
|
$('[x-name=product_switch]:checked').each(function() {
|
|
var item = $(this).parent().parent().next();
|
|
item.find('[aria-controls="itemTab_' + item.attr('x-id') + '_' + element + '"]').trigger('click');
|
|
});
|
|
});
|
|
|
|
|
|
/** ------ PŁATNOŚĆ I DOSTAWA ------------------------------------------------------------------------------- */
|
|
|
|
refreshShippingRates();
|
|
|
|
$('select[name=pas]').on('change', function() {
|
|
if ($(this).prop('value') == 0) {
|
|
return;
|
|
}
|
|
|
|
self.ajaxPOST({
|
|
action: 'getPas',
|
|
id: $(this).prop('value')
|
|
|
|
}, function() {
|
|
$('[x-name=pas]').parent().fadeTo('fast', 0.2);
|
|
|
|
}, function(json) {
|
|
$.each(json, function(index, value) {
|
|
var input = $('[x-name=pas]').find('[name=' + index + ']');
|
|
|
|
if (input.is(':text') || input.is('textarea') || input.is(':hidden')) {
|
|
input.prop('value', value);
|
|
}
|
|
else if (input.is(':checkbox')) {
|
|
//do nothing
|
|
}
|
|
else if (input.is('select')) {
|
|
input.find('option').prop('selected', false);
|
|
input.find('option[value=' + value + ']').prop('selected', true);
|
|
}
|
|
else if (input.is(':radio')) {
|
|
input.filter("[value='" + value + "']").prop('checked', true);
|
|
}
|
|
});
|
|
|
|
$('#country_code').trigger('chosen:updated').trigger('change');
|
|
$('[x-name=pas]').parent().fadeTo('fast', 1);
|
|
});
|
|
});
|
|
|
|
$('#shipping_rate').on('change', function() {
|
|
var select = $(this);
|
|
|
|
self.ajaxPOST({
|
|
action: 'changeShippingRate',
|
|
shipping_rate: select.val()
|
|
|
|
}, function () {
|
|
$('[x-name=pas]').parent().fadeTo('fast', 0.2);
|
|
|
|
}, function(json) {
|
|
if (json.result) {
|
|
$('[x-name=shipping_rates]').find('tr[x-id]').each(function(index, el) {
|
|
var id = $(this).attr('x-id');
|
|
|
|
if (id in json.deliveryMethods && typeof json.deliveryMethods[id].values !== 'undefined') {
|
|
$(this).find('input:checkbox').prop('checked', true).trigger('change');
|
|
$(this).find('input:text').each(function() {
|
|
$(this).prop('value', json.deliveryMethods[id].values[$(this).data('name')]).trigger('focusout');
|
|
});
|
|
|
|
$(el).show();
|
|
}
|
|
else {
|
|
$(this).find('input:checkbox').prop('checked', false).trigger('change');
|
|
$(this).find('input:text').prop('value', 0).trigger('focusout').eq(2).prop('value', 1).trigger('focusout');
|
|
$(el).hide();
|
|
}
|
|
});
|
|
|
|
$('.delivery-marketplace').each(function (index, element) {
|
|
if (self.shippingRateMarketplaces[select.val()].includes($(element).data('marketplace-id'))) {
|
|
$(element).show();
|
|
} else {
|
|
$(element).hide();
|
|
}
|
|
});
|
|
|
|
$('[x-name="product"]').each(function() {
|
|
$(this).closest('tr').find('.marketplaces-prices > div').each(function (index, element) {
|
|
if (self.shippingRateMarketplaces[select.val()].includes($(element).data('marketplace-id'))) {
|
|
$(element).show();
|
|
} else {
|
|
$(element).hide();
|
|
}
|
|
});
|
|
|
|
$(this).closest('tr').find('[x-name="send_tax"]').trigger('change');
|
|
});
|
|
|
|
refreshShippingRates();
|
|
$('[x-name=pas]').parent().fadeTo('fast', 1);
|
|
}
|
|
else {
|
|
showErrorMessage(json.message);
|
|
}
|
|
});
|
|
});
|
|
|
|
function refreshShippingRates()
|
|
{
|
|
$('[x-name=shipping_rates]').find('table').each(function() {
|
|
var checked = false;
|
|
$(this).hide();
|
|
|
|
$(this).find('input[x-name="switch"]').each(function() {
|
|
if ($(this).prop('checked')) {
|
|
checked = true;
|
|
}
|
|
});
|
|
|
|
if (checked) {
|
|
$(this).show();
|
|
}
|
|
});
|
|
}
|
|
|
|
function formatTitle(itemId, pattern)
|
|
{
|
|
var replace = {
|
|
'{auction_title}': $('input[name="item[' + itemId + '][auction_title]"]').val(),
|
|
'{product_id}': $('input[name="item[' + itemId + '][id_product]"]').val(),
|
|
'{product_name}': $('input[name="item[' + itemId + '][product_name]"]').val(),
|
|
'{product_name_attribute}': $('input[name="item[' + itemId + '][attribute_name]"]').val(),
|
|
'{product_reference}': $('input[name="item[' + itemId + '][reference]"]').val(),
|
|
'{product_ean13}': $('input[name="item[' + itemId + '][ean13]"]').val(),
|
|
'{product_weight}': $('input[name="item[' + itemId + '][weight]"]').val(),
|
|
'{manufacturer_name}': $('input[name="item[' + itemId + '][manufacturer]"]').val()
|
|
};
|
|
|
|
var regex = new RegExp(Object.keys(replace).join('|'), 'gi');
|
|
return pattern.replace(regex, function(matched) {
|
|
return replace[matched];
|
|
});
|
|
}
|
|
|
|
|
|
/** ------ OTHER -------------------------------------------------------------------------------------------- */
|
|
|
|
$('select[name=start]').on('change', function() {
|
|
if ($(this).val() == 1) {
|
|
$('input[name=start_time]').val(formatCurrentDate()).prop('disabled', false).show();
|
|
} else {
|
|
$('input[name=start_time]').prop('disabled', true).hide();
|
|
}
|
|
|
|
function formatCurrentDate()
|
|
{
|
|
var date = new Date();
|
|
return ('0' + date.getDate()).slice(-2) + '.' +
|
|
('0' + (date.getMonth()+1)).slice(-2) + '.' +
|
|
date.getFullYear() +
|
|
' ' +
|
|
('0' + date.getHours()).slice(-2) + ':' +
|
|
('0' + date.getMinutes()).slice(-2);
|
|
}
|
|
});
|
|
|
|
$('.xallegro-perform').parent().on('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
$(this).addClass('allegro-send-auction-hidden');
|
|
self.performAuctions(0);
|
|
});
|
|
|
|
$(document).on('click', '#allegro_success_show', function(e) {
|
|
e.preventDefault();
|
|
|
|
$(this).hide();
|
|
$('.allegro-success-hidden').toggle();
|
|
});
|
|
},
|
|
|
|
initPerformProductization: function()
|
|
{
|
|
var self = this;
|
|
var item = 0;
|
|
var auctionsToRetrieveCatalogInfos = $('.tr_auction_product:not(.product-disabled)').toArray();
|
|
var categoryChangeInProgress = 0;
|
|
|
|
var $sendAuctionBtn = $(document).find('.xallegro-perform').parent();
|
|
var $bulkActionContainer = $(document).find('#bulk_container');
|
|
var $modalBulkCategories = $('#bulk_change_category_modal');
|
|
var $modalBulkCategoryParameters = $('#bulk_parameters_modal');
|
|
|
|
var parametersDepending = {};
|
|
var parametersRequiredIf = {};
|
|
|
|
self.categoryParametersForm($modalBulkCategoryParameters);
|
|
|
|
$(document).find('div[x-name="product_category_fields"]').each(function(index, element) {
|
|
self.categoryParametersForm($(element));
|
|
});
|
|
|
|
$('#allegro-valuemax').text(auctionsToRetrieveCatalogInfos.length);
|
|
|
|
if (auctionsToRetrieveCatalogInfos.length) {
|
|
$('#allegro-progress').show();
|
|
getAllegroProducts(0);
|
|
}
|
|
|
|
function getAllegroProducts(auction)
|
|
{
|
|
var $auction = auction;
|
|
|
|
if (typeof auction === 'number') {
|
|
$auction = $(auctionsToRetrieveCatalogInfos[auction]);
|
|
var $currentIndex = auction;
|
|
}
|
|
|
|
var $auctionIndex = parseInt($auction.data('index'));
|
|
var $auctionDetails = $('tr[x-name="product"][x-id="' + $auctionIndex + '"]');
|
|
|
|
if (self.ajaxForceTerminateLoop) {
|
|
return;
|
|
}
|
|
|
|
self.ajaxPOST({
|
|
action: 'searchInProductization',
|
|
productId: $auctionDetails.find('[x-name="id_product"]').val(),
|
|
productAttributeId: $auctionDetails.find('[x-name="id_product_attribute"]').val(),
|
|
productName: $auctionDetails.find('[x-name="product_name"]').val(),
|
|
productReference: $auctionDetails.find('[x-name="reference"]').val(),
|
|
productEAN13: $auctionDetails.find('[x-name="ean13"]').val(),
|
|
productISBN: $auctionDetails.find('[x-name="isbn"]').val(),
|
|
productUPC: $auctionDetails.find('[x-name="upc"]').val(),
|
|
productMPN: $auctionDetails.find('[x-name="mpn"]').val()
|
|
}, function() {
|
|
disableButtonsOnProcess();
|
|
}, function(data) {
|
|
item += 1;
|
|
$('#allegro-valuenow').text(item);
|
|
var valuemax = parseInt($('#allegro-valuemax').text());
|
|
$('#allegro-progress .progress-bar').css('width', parseInt((item / valuemax) * 100) + '%');
|
|
$('#allegro-progress .progress-bar').attr('aria-valuenow', parseInt((item / valuemax) * 100));
|
|
|
|
if (parseInt((item / valuemax) * 100) == 100) {
|
|
$('#allegro-progress .progress-bar').addClass('progress-bar-success');
|
|
$('#allegro-progress').delay(1500).animate({opacity: 0}, 500, function() {
|
|
$('#allegro-progress').css('display', 'none');
|
|
});
|
|
|
|
enableButtonsOnProcess();
|
|
}
|
|
|
|
$auction.find('.xproductization-modal-btn').attr('data-toggle', 'modal');
|
|
|
|
fillAllegroProductsResult($auction, data, 'init', function() {
|
|
$auction.find('.xproductization-product-selector').find('.modal-body .xproductization-search-progress').hide();
|
|
|
|
if (self.productizationMode != 'ASSIGN') {
|
|
$auction.find('.xproductization-mode-selector select').trigger('change');
|
|
}
|
|
|
|
if ($currentIndex + 1 < auctionsToRetrieveCatalogInfos.length) {
|
|
getAllegroProducts($currentIndex + 1);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
function fillAllegroProductsResult($auction, data, mode, callback)
|
|
{
|
|
$auction.find('.xproductization-product-selector').find('.modal-body .xproductization-product-list .alert').remove();
|
|
$auction.find('.xproductization-category').hide();
|
|
$auction.find('.xproductization-product-name').hide();
|
|
|
|
if (data.result) {
|
|
$auction.find('.xproductization-indicator .xproductization-modal-btn').attr('data-products-count', data.nbProducts);
|
|
$auction.find('.xproductization-product-selector').find('.modal-body .xproductization-product-list').html(data.productSelectionModal);
|
|
$auction.find('.xproductization-status').text('Wybierz produkt').show();
|
|
|
|
var nbText;
|
|
if (data.nbProducts == 1) {
|
|
nbText = 'powiązanie';
|
|
} else if (data.nbProducts < 5) {
|
|
nbText = 'powiązania';
|
|
} else {
|
|
nbText = 'powiązań';
|
|
}
|
|
|
|
var byName = '';
|
|
if (mode === 'init' && data.productsFoundMode == 'product_name') {
|
|
byName = ' (wyszukano po nazwie produktu)';
|
|
}
|
|
|
|
$auction.find('input[x-name="product_switch"]').prop('disabled', true).removeAttr('checked').trigger('change');
|
|
$auction.find('.xproductization-mode-selector select').removeAttr('disabled');
|
|
$auction.find('.xproductization-indicator .xproductization-modal-btn')
|
|
.attr('class', 'btn xproductization-modal-btn')
|
|
.html('<i class="icon-edit xpbutton-warning"></i><span class="xproductization-modal-btn-text"><span class="xproductization-modal-btn-text-up">Znaleziono ' + data.nbProducts + ' ' + nbText + byName + '</span><span class="xproductization-modal-btn-text-bottom"> wybierz produkt</span></span>');
|
|
|
|
if (data.productChosen) {
|
|
var $auctionIndex = parseInt($auction.data('index'));
|
|
var $auctionDetails = $('tr[x-name="product"][x-id="' + $auctionIndex + '"]');
|
|
var $firstProductBtn = $auction.find('.xproductization-allegro-products [data-allegro-product]').first();
|
|
|
|
$firstProductBtn.parents('.xproductization-allegro-products').addClass('xproductization-products-loading');
|
|
$firstProductBtn.parents('.xproductization-allegro-products').find('a.disabled').attr('class', 'btn btn-primary').html('<i class="icon-plus"></i><span>Wybierz</span>');
|
|
$firstProductBtn.parents('.xproductization-allegro-products').find('.thumbnail').removeClass('xallegro-product-selected');
|
|
|
|
$firstProductBtn.attr('class', '').addClass('btn btn-allegro disabled').html('<i class="icon-check"></i><span>Wybrany</span>');
|
|
$firstProductBtn.closest('.thumbnail').addClass('xallegro-product-selected');
|
|
|
|
$auction.find('.xproductization-indicator .xproductization-modal-btn').attr('data-product-selected', $firstProductBtn.data('allegro-product'));
|
|
$auctionDetails.find('.xproductization-parameters-loading').show();
|
|
$auctionDetails.find('a[x-name="product_category_fields"]').attr('disabled', 'disabled');
|
|
|
|
fillAllegroProductSelected($auction, data.productChosen, function() {
|
|
$firstProductBtn.parents('.xproductization-allegro-products').removeClass('xproductization-products-loading');
|
|
|
|
if (typeof callback === 'function') {
|
|
return callback();
|
|
}
|
|
});
|
|
} else {
|
|
if (typeof callback === 'function') {
|
|
return callback();
|
|
}
|
|
}
|
|
} else {
|
|
$auction.find('input[x-name="product_switch"]').prop('disabled', true).removeAttr('checked').trigger('change');
|
|
$auction.find('.xproductization-mode-selector select').removeAttr('disabled');
|
|
$auction.find('.xproductization-product-selector').find('.modal-body .xproductization-product-list').html(data.message);
|
|
$auction.find('.xproductization-status').text('Nie znaleziono powiazania').show();
|
|
$auction.find('.xproductization-indicator .xproductization-modal-btn').attr('data-products-count', 0);
|
|
$auction.find('.xproductization-indicator .xproductization-modal-btn')
|
|
.attr('class', 'btn xproductization-modal-btn')
|
|
.html('<i class="icon-exclamation-triangle xpbutton-danger"></i><span class="xproductization-modal-btn-text"><span class="xproductization-modal-btn-text-up">Nie znaleziono powiązania</span><span class="xproductization-modal-btn-text-bottom">wyszukaj produkt</span></span>');
|
|
|
|
if (typeof callback === 'function') {
|
|
callback();
|
|
}
|
|
}
|
|
}
|
|
|
|
function fillAllegroProductSelected($auction, data, callback)
|
|
{
|
|
var $auctionIndex = parseInt($auction.data('index'));
|
|
var $auctionDetails = $('tr[x-name="product"][x-id="' + $auctionIndex + '"]');
|
|
var $auctionTitleInput = $auctionDetails.find('[x-name="title"]');
|
|
var productCount = $auction.find('.xproductization-indicator .xproductization-modal-btn').attr('data-products-count');
|
|
|
|
if (parseInt(productCount) > 1) {
|
|
$auction.find('.xproductization-indicator .xproductization-modal-btn')
|
|
.attr('class', 'btn xproductization-modal-btn')
|
|
.html('<i class="icon-list-alt xpbutton-ok"></i><span class="xproductization-modal-btn-text"><span class="xproductization-modal-btn-text-up">Wybrano produkt z ' + productCount + ' powiązań</span><span class="xproductization-modal-btn-text-bottom">zmień produkt</span></span>');
|
|
} else {
|
|
$auction.find('.xproductization-indicator .xproductization-modal-btn')
|
|
.attr('class', 'btn xproductization-modal-btn')
|
|
.html('<i class="icon-check xpbutton-success"></i><span class="xproductization-modal-btn-text"><span class="xproductization-modal-btn-text-up">Powiązano produkt</span><span class="xproductization-modal-btn-text-bottom">zmień produkt</span></span>');
|
|
}
|
|
|
|
if (data.parameters) {
|
|
parametersDepending[$auctionDetails.attr('x-id')] = data.parametersDepending;
|
|
parametersRequiredIf[$auctionDetails.attr('x-id')] = data.parametersRequiredIf;
|
|
|
|
$auctionDetails.find('a[x-name="product_category_fields"]').removeAttr('disabled');
|
|
$auctionDetails.find('div[x-name="product_category_fields"] .xproductization-parameters-wrapper')
|
|
.html('<div class="form-horizontal">'
|
|
+ data.parameters
|
|
.replace(/category_fields/g, 'item[' + $auctionIndex + '][category_fields]')
|
|
.replace(/category_ambiguous_fields/g, 'item[' + $auctionIndex + '][category_ambiguous_fields]')
|
|
+ '</div>');
|
|
|
|
$auctionDetails.find('.product-category-fields .form-group').each(function() {
|
|
var $formGroup = $(this);
|
|
var $element = $formGroup.find('.xproductization-readonly');
|
|
var $select = $formGroup.find('select');
|
|
|
|
$element.attr('readonly', 'readonly');
|
|
|
|
// initialize chosen
|
|
// check if we need to show/hide ambiguous input
|
|
// check if we need to show/hide depending on parameter
|
|
$select.chosen({width: '250px'})
|
|
.trigger('change')
|
|
.trigger('chosen:updated');
|
|
|
|
if ($element.is(':checkbox')) {
|
|
// check if we need to show/hide depending on parameter
|
|
// blocking for change in productization parameters
|
|
$element.trigger('change')
|
|
.attr('onclick', 'return false;')
|
|
.attr('onkeydown', 'return false;');
|
|
}
|
|
});
|
|
|
|
$auctionDetails.find('a[x-name="product_category_fields"]').removeAttr('disabled');
|
|
}
|
|
|
|
$auctionDetails.find('.xproductization-parameters-loading').hide();
|
|
|
|
if (data.allegroProductCategorySimilar) {
|
|
$auctionDetails.find('a[x-name="product_category_similar"]').removeAttr('disabled').parent().show();
|
|
$auctionDetails.find('.xproductization-category-similar-count').text(data.allegroProductCategorySimilarCount).show();
|
|
}
|
|
|
|
if (self.productizationName == 'allegro') {
|
|
$auctionTitleInput.val(data.allegroProductName).trigger('input');
|
|
} else {
|
|
$auctionTitleInput.val($auctionTitleInput.data('product-name')).trigger('input');
|
|
}
|
|
|
|
if ($auctionDetails.find('[x-name="productization_name_copy"]').length) {
|
|
$auctionDetails.find('[x-name="productization_name_copy"]').show().removeClass('hidden');
|
|
}
|
|
|
|
if (self.productizationDescription == 'allegro' && data.allegroProductDescription != '') {
|
|
$auctionDetails.find('select[x-name="template"]').prop('disabled', true).trigger('chosen:updated');
|
|
$auctionDetails.find('a[x-name="preview"]').attr('disabled', 'disabled');
|
|
}
|
|
|
|
$auctionDetails.find('input[x-name="category_id"]').val(data.categoryId);
|
|
$auctionDetails.find('input[x-name="category_is_leaf"]').val(1);
|
|
$auctionDetails.find('input[x-name="allegro_product_id"]').val(data.allegroProductId);
|
|
$auctionDetails.find('input[x-name="allegro_product_name"]').val(data.allegroProductName);
|
|
$auctionDetails.find('input[x-name="allegro_product_images"]').val(data.allegroProductImages);
|
|
$auctionDetails.find('input[x-name="allegro_product_description"]').val(data.allegroProductDescription);
|
|
$auctionDetails.find('input[x-name="allegro_product_category_default"]').val(data.allegroProductCategoryDefault);
|
|
$auctionDetails.find('input[x-name="allegro_product_category_similar"]').val(data.allegroProductCategorySimilar);
|
|
$auction.find('.xproductization-status').hide();
|
|
$auction.find('.xproductization-category').html('Kategoria: ' + data.categoryPath + ' (' + data.categoryId + ')').show();
|
|
$auction.find('.xproductization-product-name a').attr('href', data.allegroProductUrl).text(data.allegroProductName);
|
|
$auction.find('.xproductization-product-name').show();
|
|
|
|
$auction.find('.xproductization-mode-selector select').removeAttr('disabled');
|
|
|
|
if ('taxes' in data && Object.keys(data['taxes']).length) {
|
|
$.each(data['taxes'], function(countryCode, taxes) {
|
|
var $marketplaceTaxes = $auctionDetails.find('.marketplaces-taxes [data-marketplace-country-code="' + countryCode + '"]');
|
|
|
|
if (typeof $marketplaceTaxes !== 'undefined') {
|
|
var $marketplaceTaxesSelect = $marketplaceTaxes.find('select');
|
|
|
|
$("option[value!='']", $marketplaceTaxesSelect).remove();
|
|
$.each(taxes, function(index, tax) {
|
|
$marketplaceTaxesSelect.append(new Option(tax['name'], tax['id']));
|
|
});
|
|
|
|
var taxRate = $marketplaceTaxes.data('tax-rate');
|
|
if ($marketplaceTaxesSelect.find('option[value="' + taxRate + '"]').length) {
|
|
$marketplaceTaxesSelect.val($marketplaceTaxes.data('tax-rate'));
|
|
} else {
|
|
$marketplaceTaxesSelect.val('');
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
// reload multiple values, and check required
|
|
self.categoryParametersForm($auctionDetails.find('div[x-name="product_category_fields"]'), true);
|
|
checkRequiredEmptyParameters($auctionDetails.find('div[x-name="product_category_fields"]'));
|
|
|
|
// force tax visibility
|
|
$auctionDetails.find('[x-name="send_tax"]').trigger('change');
|
|
|
|
switch (self.productSelectMode) {
|
|
// dont select
|
|
case 0:
|
|
$auction.find('input[x-name="product_switch"]').prop('disabled', false);
|
|
break;
|
|
|
|
// only issued
|
|
case 2:
|
|
$auction.find('input[x-name="product_switch"]').prop('disabled', false);
|
|
if ($auction.find('input[x-name="product_switch"]').data('status') == 0) {
|
|
$auction.find('input[x-name="product_switch"]').prop('checked', true).trigger('change');
|
|
}
|
|
break;
|
|
|
|
default:
|
|
$auction.find('input[x-name="product_switch"]').prop('disabled', false).prop('checked', true).trigger('change');
|
|
}
|
|
|
|
if (typeof callback === 'function') {
|
|
callback();
|
|
}
|
|
}
|
|
|
|
function refreshCategories($auctionDetails)
|
|
{
|
|
refreshParameters($auctionDetails);
|
|
|
|
var selects = $auctionDetails.find('div[x-name=product_category] .allegro-category-select');
|
|
var selects_l = selects.length;
|
|
|
|
for (var i = 1; i < selects_l; i++) {
|
|
selects.eq(i).remove();
|
|
}
|
|
|
|
selects.eq(0).find('select').val(0);
|
|
$auctionDetails.find('div[x-name=product_category] .allegro-category-select select').chosen({width: '250px'});
|
|
|
|
var categoryId = $auctionDetails.find('input[x-name="assoc_category_id"]').val();
|
|
if (categoryId == 0) {
|
|
return;
|
|
}
|
|
|
|
changeCategory(categoryId, 1, selects.eq(0), $auctionDetails, function (lastNode) {
|
|
if (lastNode) {
|
|
$auctionDetails.find('.xproductization-category-assoc').show();
|
|
}
|
|
});
|
|
}
|
|
|
|
function refreshParameters($auctionDetails)
|
|
{
|
|
$auctionDetails.find('.xproductization-parameters-empty-required').hide();
|
|
$auctionDetails.find('.xproductization-category-assoc').hide();
|
|
$auctionDetails.find('.xproductization-category-last-node').addClass('xproductization-category-empty').attr('data-original-title', 'Nie wybrano kategorii').show();
|
|
|
|
$auctionDetails.find('a[x-name="product_category_fields"]').attr('disabled', 'disabled');
|
|
$auctionDetails.find('a[x-name="product_category"] span').text('Wybór kategorii');
|
|
$auctionDetails.prev().find('.xproductization-category').text('Nie wybrano kategorii').show();
|
|
}
|
|
|
|
function changeCategory(categoryId, fullPath, selectBox, $auctionDetails, callback)
|
|
{
|
|
var productsIds = [];
|
|
var product = {};
|
|
|
|
// if not bulk category change
|
|
if (typeof $auctionDetails !== 'undefined') {
|
|
product['x_id'] = $auctionDetails.attr('x-id');
|
|
product['id_product'] = $auctionDetails.find('input[x-name="id_product"]').val();
|
|
product['id_product_attribute'] = $auctionDetails.find('input[x-name="id_product_attribute"]').val();
|
|
product['id_category_default'] = $auctionDetails.find('input[x-name="id_category_default"]').val();
|
|
|
|
productsIds.push(Object.values(product).join('_'));
|
|
}
|
|
|
|
self.ajaxPOST({
|
|
action: 'getCategories',
|
|
id_allegro_category: categoryId,
|
|
full_path: fullPath,
|
|
productsIds: productsIds
|
|
|
|
}, function() {
|
|
if (typeof $auctionDetails !== 'undefined') {
|
|
refreshParameters($auctionDetails);
|
|
$auctionDetails.find('.xproductization-category-last-node').hide();
|
|
$auctionDetails.find('.xproductization-category-loading').show();
|
|
$auctionDetails.find('.xproductization-parameters-loading').show();
|
|
}
|
|
|
|
categoryChangeInProgress++;
|
|
disableButtonsOnProcess();
|
|
|
|
selectBox.closest('.modal-body').find('.category-input-error').remove();
|
|
selectBox.closest('.modal-body').fadeTo('fast', 0.2);
|
|
|
|
}, function(data) {
|
|
selectBox.parent().find('.allegro-category-select select').chosen('destroy');
|
|
|
|
if (data['categories'].length) {
|
|
var element = selectBox.clone().insertAfter(selectBox).hide();
|
|
$("option[value!='0']", element.find('select')).remove();
|
|
|
|
fillSelect(data['categories'], element.find('select'));
|
|
element.show();
|
|
}
|
|
else if (Object.keys(data['categories_array']).length) {
|
|
var first = true;
|
|
var thisSelectBox;
|
|
|
|
$.each(data['categories_array'], function(index, categories) {
|
|
if (first) {
|
|
thisSelectBox = selectBox;
|
|
first = false;
|
|
} else {
|
|
var selects = selectBox.parent().find('.allegro-category-select');
|
|
thisSelectBox = selects.eq(selects.length-1);
|
|
}
|
|
|
|
thisSelectBox.find('select').val(categories['id']);
|
|
|
|
if (categories['list'].length) {
|
|
var element = thisSelectBox.clone().insertAfter(thisSelectBox).hide();
|
|
$("option[value!='0']", element.find('select')).remove();
|
|
|
|
fillSelect(categories['list'], element.find('select'));
|
|
element.show();
|
|
}
|
|
});
|
|
}
|
|
|
|
if (typeof $auctionDetails !== 'undefined') {
|
|
if (data.fields_product) {
|
|
parametersDepending[$auctionDetails.attr('x-id')] = data.fields_product_depending;
|
|
parametersRequiredIf[$auctionDetails.attr('x-id')] = data.fields_product_required_if;
|
|
|
|
$auctionDetails.find('div[x-name="product_category_fields"] .xproductization-parameters-wrapper').html('<div class="form-horizontal">'
|
|
+ data.fields_product
|
|
.replace(/category_fields/g, 'item[' + $auctionDetails.attr('x-id') + '][category_fields]')
|
|
.replace(/category_ambiguous_fields/g, 'item[' + $auctionDetails.attr('x-id') + '][category_ambiguous_fields]')
|
|
+ '</div>');
|
|
|
|
$auctionDetails.find('a[x-name="product_category_fields"]').removeAttr('disabled');
|
|
$auctionDetails.find('div[x-name="product_category_fields"] .xproductization-parameters-wrapper select').each(function () {
|
|
// initialize chosen
|
|
// check if we need to show/hide ambiguous input
|
|
// check if we need to show/hide depending on parameter
|
|
$(this).chosen({width: '250px'}).trigger('change');
|
|
});
|
|
$auctionDetails.find('div[x-name="product_category_fields"] .xproductization-parameters-wrapper input[type="checkbox"]').each(function () {
|
|
// check if we need to show/hide depending on parameter
|
|
$(this).trigger('change');
|
|
});
|
|
}
|
|
|
|
$auctionDetails.find('.xproductization-category-loading').hide();
|
|
$auctionDetails.find('.xproductization-parameters-loading').hide();
|
|
|
|
if (data['last_node']) {
|
|
$auctionDetails.find('.xproductization-category-last-node').hide();
|
|
$auctionDetails.find('a[x-name="product_category"] span').text('Kategoria: ' + categoryId);
|
|
$auctionDetails.prev().find('.xproductization-category').html('Kategoria: ' + data.category_path + ' (' + categoryId + ')').show();
|
|
}
|
|
else {
|
|
$auctionDetails.find('.xproductization-category-last-node').removeClass('xproductization-category-empty').attr('data-original-title', 'Wybierz kategorię najniższego rzędu').show();
|
|
$auctionDetails.prev().find('.xproductization-category').text('Wybierz kategorię najniższego rzędu').show();
|
|
}
|
|
|
|
$auctionDetails.find('input[x-name="category_id"]').val(categoryId);
|
|
$auctionDetails.find('input[x-name="category_is_leaf"]').val(data.last_node);
|
|
|
|
if (Object.keys(data['taxes']).length) {
|
|
$.each(data['taxes'], function(countryCode, taxes) {
|
|
var $marketplaceTaxes = $auctionDetails.find('.marketplaces-taxes [data-marketplace-country-code="' + countryCode + '"]');
|
|
|
|
if (typeof $marketplaceTaxes !== 'undefined') {
|
|
var $marketplaceTaxesSelect = $marketplaceTaxes.find('select');
|
|
|
|
$("option[value!='']", $marketplaceTaxesSelect).remove();
|
|
fillSelect(taxes, $marketplaceTaxesSelect);
|
|
|
|
var taxRate = $marketplaceTaxes.data('tax-rate');
|
|
if ($marketplaceTaxesSelect.find('option[value="' + taxRate + '"]').length) {
|
|
$marketplaceTaxesSelect.val($marketplaceTaxes.data('tax-rate'));
|
|
} else {
|
|
$marketplaceTaxesSelect.val('');
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
// reload multiple values, and check required
|
|
self.categoryParametersForm($auctionDetails.find('div[x-name="product_category_fields"]'), true);
|
|
checkRequiredEmptyParameters($auctionDetails.find('div[x-name="product_category_fields"]'));
|
|
|
|
// force tax visibility
|
|
$auctionDetails.find('[x-name="send_tax"]').trigger('change');
|
|
}
|
|
|
|
if (!data['last_node'] && !data['categories'].length && !Object.keys(data['categories_array']).length) {
|
|
selectBox.closest('.modal-body').find('input[x-name="product_category_input"]')
|
|
.after('<p class="category-input-error">Podano niepoprawny numer kategorii</p>');
|
|
}
|
|
|
|
selectBox.parent().find('.allegro-category-select select').chosen({width: '250px'});
|
|
selectBox.closest('.modal-body').find('input[x-name="product_category_input"]').val(categoryId);
|
|
selectBox.closest('.modal-body').find('input[x-name="product_category_input_current"]').val(categoryId);
|
|
selectBox.closest('.modal-body').find('input[x-name="product_category_input_is_leaf"]').val(parseInt(data['last_node']));
|
|
selectBox.closest('.modal-body').fadeTo('fast', 1);
|
|
|
|
categoryChangeInProgress--;
|
|
if (categoryChangeInProgress <= 0) {
|
|
categoryChangeInProgress = 0;
|
|
enableButtonsOnProcess();
|
|
}
|
|
|
|
if (typeof callback === 'function') {
|
|
callback(data.last_node);
|
|
}
|
|
|
|
function fillSelect(categories, element)
|
|
{
|
|
$.each(categories, function(index, category) {
|
|
element.append(new Option(category['name'], category['id']));
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
function disableButtonsOnProcess()
|
|
{
|
|
$sendAuctionBtn.addClass('allegro-send-auction-hidden');
|
|
$bulkActionContainer.find('input').prop('disabled', true);
|
|
$bulkActionContainer.find('select').prop('disabled', true).trigger('chosen:updated');
|
|
$bulkActionContainer.find('a, button').attr('disabled', 'disabled');
|
|
}
|
|
|
|
function enableButtonsOnProcess()
|
|
{
|
|
$sendAuctionBtn.removeClass('allegro-send-auction-hidden');
|
|
$bulkActionContainer.find('input:not([data-keep-disabled])').prop('disabled', false);
|
|
$bulkActionContainer.find('select').prop('disabled', false).trigger('chosen:updated');
|
|
$bulkActionContainer.find('a, button').removeAttr('disabled');
|
|
}
|
|
|
|
$(document).on('keyup', '[x-name="productization_search"]', function (e) {
|
|
if (e.key === 'Enter' || e.keyCode === 13) {
|
|
$(this).parent().find('button[name="productizationSearch"]').trigger('click');
|
|
}
|
|
});
|
|
|
|
$(document).on('click', 'button[name="productizationSearch"]', function(e) {
|
|
e.preventDefault();
|
|
|
|
var $this = $(this);
|
|
var $auction = $this.parents('.tr_auction_product');
|
|
var $auctionIndex = parseInt($auction.data('index'));
|
|
var $auctionDetails = $('tr[x-name="product"][x-id="' + $auctionIndex + '"]');
|
|
|
|
self.ajaxPOST({
|
|
action: 'searchInProductization',
|
|
searchPhrase: $this.parent().find('input[name="productizationSearch_' + $auctionIndex + '"]').val(),
|
|
productName: $auctionDetails.find('[x-name="product_name"]').val(),
|
|
productReference: $auctionDetails.find('[x-name="reference"]').val(),
|
|
productEAN13: $auctionDetails.find('[x-name="ean13"]').val(),
|
|
productISBN: $auctionDetails.find('[x-name="isbn"]').val(),
|
|
productUPC: $auctionDetails.find('[x-name="upc"]').val(),
|
|
productMPN: $auctionDetails.find('[x-name="mpn"]').val()
|
|
}, function () {
|
|
$auction.find('.xproductization-search-progress').show();
|
|
$auction.find('.xproductization-product-list').empty();
|
|
}, function(data) {
|
|
fillAllegroProductsResult($auction, data, 'manual', function() {
|
|
$auction.find('.xproductization-search-progress').hide();
|
|
});
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '[data-allegro-product]', function(e) {
|
|
e.preventDefault();
|
|
|
|
if ($(this).parents('.xproductization-allegro-products').hasClass('xproductization-products-loading')) {
|
|
return;
|
|
}
|
|
|
|
var $this = $(this);
|
|
var $auction = $(this).parents('.tr_auction_product');
|
|
var $auctionIndex = parseInt($auction.data('index'));
|
|
var $auctionDetails = $('tr[x-name="product"][x-id="' + $auctionIndex + '"]');
|
|
|
|
$this.parents('.xproductization-allegro-products').addClass('xproductization-products-loading');
|
|
$this.parents('.xproductization-allegro-products').find('a.disabled').attr('class', 'btn btn-primary').html('<i class="icon-plus"></i><span>Wybierz</span>');
|
|
$this.parents('.xproductization-allegro-products').find('.thumbnail').removeClass('xallegro-product-selected');
|
|
|
|
$this.attr('class', '').addClass('btn btn-allegro disabled').html('<i class="icon-check"></i><span>Wybrany</span>');
|
|
$this.closest('.thumbnail').addClass('xallegro-product-selected');
|
|
|
|
$auction.find('.xproductization-indicator .xproductization-modal-btn').attr('data-product-selected', $this.data('allegro-product'));
|
|
$auctionDetails.find('.xproductization-parameters-loading').show();
|
|
$auctionDetails.find('a[x-name="product_category_fields"]').attr('disabled', 'disabled');
|
|
|
|
self.ajaxPOST({
|
|
action: 'selectFromProductization',
|
|
allegroProductId: $this.data('allegro-product'),
|
|
productEAN13: $auctionDetails.find('[x-name="ean13"]').val(),
|
|
productId: parseInt($auctionDetails.find('[x-name="id_product"]').val()),
|
|
productAttributeId: parseInt($auctionDetails.find('[x-name="id_product_attribute"]').val())
|
|
}, null, function(data) {
|
|
fillAllegroProductSelected($auction, data, function() {
|
|
$this.parents('.modal').modal('hide');
|
|
$this.parents('.xproductization-allegro-products').removeClass('xproductization-products-loading');
|
|
});
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '.xproductization-product-preview-description-button', function(e) {
|
|
e.preventDefault();
|
|
|
|
var $wrap = $(this).closest('.xproductization-allegro-products-wrap');
|
|
var $modal = $('#xproductization_product_preview_description_modal');
|
|
|
|
$modal.find('.x13allegro-modal-title-small').text($wrap.find('.xproductization-product-name').text());
|
|
$modal.find('.modal-body').html($wrap.find('.xproductization-product-preview-description').html());
|
|
|
|
self._modalAlert($modal);
|
|
});
|
|
|
|
$(document).on('click', '.xproductization-product-preview-images-button', function(e) {
|
|
e.preventDefault();
|
|
|
|
var $wrap = $(this).closest('.xproductization-allegro-products-wrap');
|
|
var $modal = $('#xproductization_product_preview_images_modal');
|
|
|
|
$modal.find('.x13allegro-modal-title-small').text($wrap.find('.xproductization-product-name').text());
|
|
$modal.find('.modal-body').html($wrap.find('.xproductization-product-preview-images').html());
|
|
|
|
self._modalAlert($modal);
|
|
});
|
|
|
|
$(document).on('change', '.xproductization-mode-selector select', function () {
|
|
var $auction = $(this).parents('.tr_auction_product');
|
|
var $auctionIndex = parseInt($auction.data('index'));
|
|
var $auctionDetails = $('tr[x-name="product"][x-id="' + $auctionIndex + '"]');
|
|
var $auctionTitleInput = $auctionDetails.find('[x-name="title"]');
|
|
var valuePrevious = $(this).data('current');
|
|
var value = $(this).val();
|
|
|
|
// save current
|
|
$(this).data('current', value);
|
|
|
|
// reset all productization data
|
|
$auctionDetails.find('input[x-name="allegro_product_id"]').val('');
|
|
$auctionDetails.find('input[x-name="allegro_product_name"]').val('');
|
|
$auctionDetails.find('input[x-name="allegro_product_images"]').val('');
|
|
$auctionDetails.find('input[x-name="allegro_product_description"]').val('');
|
|
$auctionDetails.find('input[x-name="allegro_product_category_default"]').val('');
|
|
$auctionDetails.find('input[x-name="allegro_product_category_similar"]').val('');
|
|
$auctionDetails.find('input[x-name="product_category_input"]').val('');
|
|
$auctionDetails.find('a[x-name="product_category"]').attr('disabled', 'disabled').parent().hide();
|
|
$auctionDetails.find('a[x-name="product_category_similar"]').attr('disabled', 'disabled').parent().hide();
|
|
|
|
// reset offer title
|
|
$auctionTitleInput.val($auctionTitleInput.data('product-name')).trigger('input');
|
|
|
|
if ($auctionDetails.find('[x-name="productization_name_copy"]').length) {
|
|
$auctionDetails.find('[x-name="productization_name_copy"]').hide().addClass('hidden');
|
|
}
|
|
|
|
if (value === 'ASSIGN') {
|
|
var productCount = parseInt($auction.find('.xproductization-indicator .xproductization-modal-btn').attr('data-products-count'));
|
|
var productSelected = $auction.find('.xproductization-indicator .xproductization-modal-btn').attr('data-product-selected');
|
|
|
|
$auctionDetails.find('input[x-name="category_id"]').val(0);
|
|
$auctionDetails.find('input[x-name="category_is_leaf"]').val(0);
|
|
$auction.find('.xproductization-indicator').show();
|
|
$auction.find('.xproductization-category').hide();
|
|
|
|
// force tax visibility
|
|
$auctionDetails.find('[x-name="send_tax"]').trigger('change');
|
|
|
|
if (productCount) {
|
|
if (productSelected) {
|
|
$auction.find('#selection_modal_' + $auctionIndex + ' a[data-allegro-product="' + productSelected + '"]').trigger('click');
|
|
} else {
|
|
$auction.find('.xproductization-status').show();
|
|
$auction.find('input[x-name="product_switch"]').prop('disabled', true).prop('checked', false).trigger('change');
|
|
}
|
|
} else {
|
|
$auction.find('.xproductization-status').show();
|
|
$auction.find('input[x-name="product_switch"]').prop('disabled', true).prop('checked', false).trigger('change');
|
|
}
|
|
} else {
|
|
$auction.find('input[x-name="product_switch"]').prop('disabled', false);
|
|
|
|
switch (self.productSelectMode) {
|
|
// dont select
|
|
case 0: break;
|
|
|
|
// only issued
|
|
case 2:
|
|
if ($auction.find('input[x-name="product_switch"]').data('status') == 0) {
|
|
$auction.find('input[x-name="product_switch"]').prop('checked', true).trigger('change');
|
|
}
|
|
break;
|
|
|
|
default:
|
|
$auction.find('input[x-name="product_switch"]').prop('checked', true).trigger('change');
|
|
}
|
|
|
|
$auction.find('.xproductization-indicator').hide();
|
|
$auction.find('.xproductization-status').hide();
|
|
$auction.find('.xproductization-product-name').hide();
|
|
|
|
if (valuePrevious === 'ASSIGN') {
|
|
$auctionDetails.find('input[x-name="category_id"]').val(0);
|
|
$auctionDetails.find('input[x-name="category_is_leaf"]').val(0);
|
|
$auction.find('.xproductization-category').text('Nie wybrano kategorii').show();
|
|
|
|
// force tax visibility
|
|
$auctionDetails.find('[x-name="send_tax"]').trigger('change');
|
|
|
|
refreshCategories($auctionDetails);
|
|
}
|
|
|
|
$auctionDetails.find('select[x-name="template"]').removeAttr('disabled').trigger('chosen:updated');
|
|
$auctionDetails.find('a[x-name="preview"]').removeAttr('disabled');
|
|
$auctionDetails.find('a[x-name="product_category"]').removeAttr('disabled').parent().show();
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.xproductization-category-similar-count', function() {
|
|
$(this).parents('td').find('a[x-name=product_category_similar]').trigger('click');
|
|
});
|
|
|
|
$(document).on('click', 'a[x-name="product_category_similar"]', function(e) {
|
|
e.preventDefault();
|
|
|
|
var $auctionDetails = $(this).parents('tr[x-name="product"]');
|
|
var $modalSimilar = $auctionDetails.find('div[x-name="product_category_similar"]');
|
|
|
|
self.ajaxPOST({
|
|
action: 'getCategoriesSimilar',
|
|
index: $auctionDetails.attr('x-id'),
|
|
categoryDefault: $auctionDetails.find('input[x-name="allegro_product_category_default"]').val(),
|
|
categorySimilar: $auctionDetails.find('input[x-name="allegro_product_category_similar"]').val(),
|
|
categoryCurrent: $auctionDetails.find('input[x-name="category_id"]').val()
|
|
},
|
|
function() {
|
|
var cover = $('<div id="allegro_cover"></div>');
|
|
cover.appendTo('body').hide().fadeIn(400);
|
|
},
|
|
function(json) {
|
|
$(document).find('body #allegro_cover').remove();
|
|
|
|
$modalSimilar.find('.modal-body').html(json.html);
|
|
$modalSimilar.modal('show');
|
|
});
|
|
});
|
|
|
|
$(document).on('click', 'button.xproductization-category-similar', function(e) {
|
|
e.preventDefault();
|
|
|
|
var $auctionDetails = $(this).parents('tr[x-name="product"]');
|
|
var $modalSimilar = $auctionDetails.find('div[x-name="product_category_similar"]');
|
|
|
|
self.ajaxPOST({
|
|
action: 'selectFromProductization',
|
|
categoryCurrent: $modalSimilar.find('input[name="item[' + $auctionDetails.attr('x-id') + '][category_similar]"]:checked').val(),
|
|
allegroProductId: $auctionDetails.find('input[x-name="allegro_product_id"]').val(),
|
|
productEAN13: $auctionDetails.find('input[x-name="ean13"]').val(),
|
|
productId: parseInt($auctionDetails.find('input[x-name="id_product"]').val()),
|
|
productAttributeId: parseInt($auctionDetails.find('input[x-name="id_product_attribute"]').val())
|
|
},
|
|
function() {
|
|
disableButtonsOnProcess();
|
|
$auctionDetails.find('.xproductization-category-similar-count').hide();
|
|
$auctionDetails.find('.xproductization-parameters-empty-required').hide();
|
|
$auctionDetails.find('.xproductization-category-similar-loading').show();
|
|
$auctionDetails.find('.xproductization-parameters-loading').show();
|
|
$auctionDetails.find('a[x-name="product_category_fields"]').attr('disabled', 'disabled');
|
|
$auctionDetails.find('a[x-name="product_category_similar"]').attr('disabled', 'disabled');
|
|
},
|
|
function(data) {
|
|
var $auction = $('.tr_auction_product[data-index="' + $auctionDetails.attr('x-id') + '"]');
|
|
fillAllegroProductSelected($auction, data, function() {
|
|
enableButtonsOnProcess();
|
|
$auctionDetails.find('a[x-name="product_category_similar"]').removeAttr('disabled');
|
|
$auctionDetails.find('.xproductization-category-similar-loading').hide();
|
|
$auctionDetails.find('.xproductization-category-similar-count').show();
|
|
$modalSimilar.modal('hide');
|
|
});
|
|
});
|
|
});
|
|
|
|
$(document).on('change', '.allegro-category-select select', function() {
|
|
var categoryId = $(this).prop('value');
|
|
if (categoryId == 0) {
|
|
return;
|
|
}
|
|
|
|
var selects = $(this).closest('.xproductization-category-list').find('.allegro-category-select');
|
|
var selects_l = selects.length;
|
|
var index = selects.index($(this).closest('.allegro-category-select'));
|
|
|
|
for (var i = index + 1; i < selects_l; i++) {
|
|
selects.eq(i).remove();
|
|
}
|
|
|
|
var $auctionIndex = $(this).data('index');
|
|
var $auctionDetails;
|
|
|
|
// if not bulk category change
|
|
if (typeof $auctionIndex !== 'undefined') {
|
|
$auctionDetails = $('tr[x-name="product"][x-id="' + parseInt($auctionIndex) + '"]');
|
|
}
|
|
|
|
var $button = $(this).closest('.modal-content').find('.modal-footer button')
|
|
$button.attr('disabled', 'disabled');
|
|
|
|
changeCategory(categoryId, 0, $(this).closest('.allegro-category-select'), $auctionDetails, function() {
|
|
$button.removeAttr('disabled');
|
|
});
|
|
});
|
|
|
|
$(document).on('focusout', 'input[x-name="product_category_input"]', function() {
|
|
var categoryId = $(this).prop('value');
|
|
var categoryIdCurrent = $(this).parent().find('input[x-name="product_category_input_current"]').prop('value');
|
|
var $auctionIndex = $(this).data('index');
|
|
var $auctionDetails;
|
|
|
|
// if not bulk category change
|
|
if (typeof $auctionIndex !== 'undefined') {
|
|
$auctionDetails = $('tr[x-name="product"][x-id="' + parseInt($auctionIndex) + '"]');
|
|
}
|
|
|
|
if (categoryId == 0
|
|
|| (typeof categoryIdCurrent !== 'undefined'
|
|
&& categoryId == categoryIdCurrent)
|
|
|| (typeof $auctionIndex !== 'undefined'
|
|
&& categoryId == $auctionDetails.find('input[x-name="category_id"]').val())
|
|
) {
|
|
return;
|
|
}
|
|
|
|
var selects = $(this).closest('.modal-content').find('.allegro-category-select');
|
|
var selects_l = selects.length;
|
|
|
|
for (var i = 1; i < selects_l; i++) {
|
|
selects.eq(i).remove();
|
|
}
|
|
|
|
var $button = $(this).closest('.modal-content').find('.modal-footer button')
|
|
$button.attr('disabled', 'disabled');
|
|
|
|
changeCategory(categoryId, 1, selects.eq(0), $auctionDetails, function() {
|
|
$button.removeAttr('disabled');
|
|
});
|
|
});
|
|
|
|
$(document).on('keydown', 'input[x-name="product_category_input"]', function(e) {
|
|
if (e.key === 'Enter') {
|
|
$(this).trigger('focusout');
|
|
return false;
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.xproductization-category-last-node, .xproductization-category-assoc', function() {
|
|
$(this).parents('td').find('a[x-name=product_category]').trigger('click');
|
|
});
|
|
|
|
$(document).on('chosen:updated', 'div[x-name=product_category_fields] .xproductization-parameters-wrapper select', function () {
|
|
if ($(this).attr('readonly')) {
|
|
var wasDisabled = $(this).is(':disabled');
|
|
|
|
$(this).attr('disabled', 'disabled');
|
|
$(this).data('chosen').search_field_disabled();
|
|
|
|
if (wasDisabled) {
|
|
$(this).attr('disabled', 'disabled');
|
|
} else {
|
|
$(this).removeAttr('disabled');
|
|
}
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.xproductization-parameters-empty-required', function() {
|
|
$(this).parents('td').find('a[x-name=product_category_fields]').trigger('click');
|
|
});
|
|
|
|
$(document).on('hide.bs.modal', 'div[x-name="product_category_fields"]', function() {
|
|
checkRequiredEmptyParameters($(this));
|
|
});
|
|
|
|
$(document).on('change', 'div[x-name="product_category_fields"] select.has-ambiguous-value', function() {
|
|
var ambiguousId = $(this).data('id');
|
|
var $ambiguousInput = $(this).closest('.form-wrapper').find('input#' + ambiguousId + '_ambiguous_field');
|
|
var $ambiguousFormGroup = $ambiguousInput.closest('.form-group');
|
|
|
|
if ($(this).data('ambiguous-value') == $(this).val()) {
|
|
$ambiguousInput.prop('disabled', false);
|
|
$ambiguousFormGroup.removeClass('hide');
|
|
} else {
|
|
$ambiguousInput.prop('disabled', true);
|
|
$ambiguousFormGroup.addClass('hide');
|
|
}
|
|
});
|
|
|
|
$(document).on('change', 'div[x-name="product_category_fields"] select', function() {
|
|
var $formWrapper = $(this).closest('.form-wrapper');
|
|
var auctionIndex = parseInt($(this).closest('tr[x-name="product"]').attr('x-id'));
|
|
var changedParameterId = $(this).data('id');
|
|
var currentValue = $(this).val();
|
|
|
|
if (changedParameterId in parametersDepending[auctionIndex]) {
|
|
for (var dependingParameterId in parametersDepending[auctionIndex][changedParameterId]) {
|
|
var $dependingInput = $formWrapper.find('input#' + dependingParameterId);
|
|
var $dependingInputFormGroup = $dependingInput.closest('.form-group');
|
|
var $dependingSelect = $formWrapper.find('select#' + dependingParameterId);
|
|
var $dependingSelectFormGroup = $dependingSelect.closest('.form-group');
|
|
|
|
var parametersWithValue = parametersDepending[auctionIndex][changedParameterId][dependingParameterId].parametersWithValue;
|
|
if (!parametersWithValue.length) {
|
|
continue;
|
|
}
|
|
|
|
for (var key in parametersWithValue) {
|
|
if (parametersWithValue[key].id != changedParameterId) {
|
|
continue;
|
|
}
|
|
|
|
if (parametersWithValue[key].oneOfValueIds.includes(currentValue)) {
|
|
if ($dependingInput.length) {
|
|
$dependingInput.prop('disabled', false);
|
|
$dependingInputFormGroup.removeClass('hide');
|
|
}
|
|
else if ($dependingSelect.length) {
|
|
$dependingSelect.prop('disabled', false).trigger('chosen:updated');
|
|
$dependingSelectFormGroup.removeClass('hide');
|
|
}
|
|
} else {
|
|
if ($dependingInput.length) {
|
|
$dependingInput.prop('disabled', true)
|
|
$dependingInputFormGroup.addClass('hide');
|
|
}
|
|
else if ($dependingSelect.length) {
|
|
$dependingSelect.prop('disabled', true).trigger('chosen:updated');
|
|
$dependingSelectFormGroup.addClass('hide');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
checkRequiredParameters($formWrapper);
|
|
});
|
|
|
|
$(document).on('change', 'div[x-name="product_category_fields"] input[type="checkbox"]', function() {
|
|
var $formWrapper = $(this).closest('.form-wrapper');
|
|
var $formGroup = $(this).closest('.form-group');
|
|
var auctionIndex = parseInt($(this).closest('tr[x-name="product"]').attr('x-id'));
|
|
var changedParameterId = $(this).data('id');
|
|
|
|
if (changedParameterId in parametersDepending[auctionIndex]) {
|
|
for (var dependingParameterId in parametersDepending[auctionIndex][changedParameterId]) {
|
|
var selectedIds = [];
|
|
|
|
$formGroup.find('input.category-field[type="checkbox"]:checked').each(function(index, element) {
|
|
selectedIds.push($(element).data('value'));
|
|
});
|
|
|
|
var $dependingInput = $formWrapper.find('input#' + dependingParameterId);
|
|
var $dependingInputFormGroup = $dependingInput.closest('.form-group');
|
|
var $dependingSelect = $formWrapper.find('select#' + dependingParameterId);
|
|
var $dependingSelectFormGroup = $dependingSelect.closest('.form-group');
|
|
|
|
var includes = [];
|
|
var parametersWithValue = parametersDepending[auctionIndex][changedParameterId][dependingParameterId].parametersWithValue;
|
|
|
|
if (parametersWithValue.length) {
|
|
for (var key in parametersWithValue) {
|
|
if (parametersWithValue[key].id != changedParameterId) {
|
|
continue;
|
|
}
|
|
|
|
includes = parametersWithValue[key].oneOfValueIds.filter(function (id) {
|
|
return (selectedIds.indexOf(id) !== -1);
|
|
});
|
|
}
|
|
}
|
|
|
|
if (includes.length) {
|
|
if ($dependingInput.length) {
|
|
$dependingInput.prop('disabled', false);
|
|
$dependingInputFormGroup.removeClass('hide');
|
|
}
|
|
else if ($dependingSelect.length) {
|
|
$dependingSelect.prop('disabled', false).trigger('chosen:updated');
|
|
$dependingSelectFormGroup.removeClass('hide');
|
|
}
|
|
} else {
|
|
if ($dependingInput.length) {
|
|
$dependingInput.prop('disabled', true)
|
|
$dependingInputFormGroup.addClass('hide');
|
|
}
|
|
else if ($dependingSelect.length) {
|
|
$dependingSelect.prop('disabled', true).trigger('chosen:updated');
|
|
$dependingSelectFormGroup.addClass('hide');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
$(document).on(
|
|
'click',
|
|
'div.xproductization-describes-product input.xproductization-readonly, ' +
|
|
'div.xproductization-describes-product .chosen-disabled',
|
|
function() {
|
|
if (window.confirm("Edytujesz dane z katalogu Allegro!\nCzy jesteś pewien?")) {
|
|
if ($(this).is('input')) {
|
|
if ($(this).is(':checkbox')) {
|
|
$(this).closest('div.form-group').find('.checkbox input:checkbox').each(function (index, el) {
|
|
$(el).removeAttr('readonly').removeAttr('onclick').removeAttr('onkeydown').removeClass('xproductization-readonly');
|
|
});
|
|
} else if ($(this).hasClass('multiple-values')) {
|
|
$(this).closest('div').find('input.xproductization-readonly').removeAttr('readonly').removeClass('xproductization-readonly');
|
|
} else {
|
|
$(this).removeAttr('readonly').removeClass('xproductization-readonly');
|
|
}
|
|
} else {
|
|
$(this).prev().removeAttr('readonly').removeClass('xproductization-readonly').trigger('chosen:updated');
|
|
}
|
|
}
|
|
}
|
|
);
|
|
|
|
$(document).on('click', '[x-name=bulk_change_category]', function (e) {
|
|
e.preventDefault();
|
|
|
|
var $checkedItems = $('[x-name="product_switch"]:checked');
|
|
if (!$checkedItems.length) {
|
|
self._modalAlert($('#bulk_change_category_modal_alert_empty'));
|
|
return;
|
|
}
|
|
|
|
var selects = $modalBulkCategories.find('.allegro-category-select');
|
|
var selects_l = selects.length;
|
|
for (var i = 1; i < selects_l; i++) {
|
|
selects.eq(i).remove();
|
|
}
|
|
|
|
selects.eq(0).find('select').val(0).trigger('chosen:updated');
|
|
$modalBulkCategories.find('[x-name="product_category_input"]').val('');
|
|
$modalBulkCategories.find('[x-name="product_category_input_current"]').val('');
|
|
$modalBulkCategories.find('[x-name="product_category_input_is_leaf"]').val('0');
|
|
$modalBulkCategories.find('.bulk-modal-product-radio').eq(0).prop('checked', true).trigger('change');
|
|
$modalBulkCategories.find('.xproductization-bulk-modal-product-table tbody').empty();
|
|
|
|
$checkedItems.each(function(index, element) {
|
|
var itemIndex = $(element).parents('tr').attr('data-index');
|
|
var $itemDetails = $('tr[x-name="product"][x-id="' + itemIndex + '"]');
|
|
var productName = $itemDetails.find('input[x-name="product_name"]').val();
|
|
var productAttributeName = $itemDetails.find('input[x-name="attribute_name"]').val();
|
|
|
|
var $tr = $('<tr></tr>');
|
|
$tr.append('<td><input type="checkbox" id="bulk_product_' + itemIndex + '" value="' + itemIndex + '"></td>');
|
|
$tr.append('<td><label for="bulk_product_' + itemIndex + '">' + productName + (productAttributeName != '' ? ' - ' + productAttributeName : '') + '</label></td>');
|
|
|
|
$modalBulkCategories.find('.xproductization-bulk-modal-product-table tbody').append($tr);
|
|
});
|
|
|
|
$modalBulkCategories.find('.allegro-category-select select').chosen({width: '250px'});
|
|
$modalBulkCategories.modal('show');
|
|
});
|
|
|
|
$modalBulkCategories.on('click', '.bulk-category-submit', function(e) {
|
|
e.preventDefault();
|
|
|
|
if ($modalBulkCategories.find('[x-name="product_category_input_is_leaf"]').val() == '0') {
|
|
self._modalAlert($('#bulk_change_category_modal_alert_leaf'));
|
|
return;
|
|
}
|
|
|
|
var selectedCategory = $modalBulkCategories.find('[x-name="product_category_input_current"]').val();
|
|
var productSelection = $modalBulkCategories.find('.bulk-modal-product-radio:checked').val();
|
|
var products = [];
|
|
|
|
$modalBulkCategories.find('.xproductization-bulk-modal-product-table tbody > tr').each(function(index, element) {
|
|
var $input = $(element).find('td > input');
|
|
if ((productSelection == 'chosen' && $input.prop('checked')) || productSelection == 'all') {
|
|
products.push($input.val());
|
|
}
|
|
});
|
|
|
|
if (!products.length) {
|
|
self._modalAlert($('#bulk_change_category_modal_alert_empty'));
|
|
return;
|
|
}
|
|
|
|
for (var i = 0; i < products.length; i++) {
|
|
$(document).find('tr[x-name="product"][x-id="' + products[i] + '"] input[x-name="product_category_input"]').val(selectedCategory).trigger('focusout');
|
|
}
|
|
|
|
$modalBulkCategories.modal('hide');
|
|
});
|
|
|
|
$(document).on('click', '[x-name=bulk_category_parameters]', function (e) {
|
|
e.preventDefault();
|
|
|
|
var $checkedItems = $('[x-name="product_switch"]:checked');
|
|
if (!$checkedItems.length) {
|
|
self._modalAlert($('#bulk_parameters_modal_alert_empty'));
|
|
return;
|
|
}
|
|
|
|
var categories = {};
|
|
|
|
$checkedItems.each(function(index, element) {
|
|
var itemIndex = $(element).parents('tr').attr('data-index');
|
|
var $itemDetails = $('tr[x-name="product"][x-id="' + itemIndex + '"]');
|
|
|
|
if ($itemDetails.find('input[x-name="category_is_leaf"]').val() == '0') {
|
|
return;
|
|
}
|
|
|
|
var product = {};
|
|
var categoryId = $itemDetails.find('input[x-name="category_id"]').val();
|
|
|
|
product['index'] = itemIndex;
|
|
product['productName'] = $itemDetails.find('input[x-name="product_name"]').val();
|
|
product['productAttributeName'] = $itemDetails.find('input[x-name="attribute_name"]').val();
|
|
|
|
if (typeof categories[categoryId] === 'undefined') {
|
|
categories[categoryId] = [];
|
|
}
|
|
|
|
categories[categoryId].push(product);
|
|
});
|
|
|
|
if (!Object.keys(categories).length) {
|
|
self._modalAlert($('#bulk_parameters_modal_alert_leaf'));
|
|
return;
|
|
}
|
|
|
|
self.ajaxPOST({
|
|
action: 'getCategoriesParameters',
|
|
categoryList: JSON.stringify(categories)
|
|
},
|
|
function() {
|
|
var cover = $('<div id="allegro_cover"></div>');
|
|
cover.appendTo('body').hide().fadeIn(400);
|
|
},
|
|
function(json) {
|
|
$(document).find('body #allegro_cover').remove();
|
|
|
|
if (json.success) {
|
|
$modalBulkCategoryParameters.find('.modal-body').html(json.modalContent);
|
|
|
|
// fix default input names
|
|
$modalBulkCategoryParameters.find('#itemTabBulkParametersContent .tab-pane').each(function(index, element) {
|
|
var html = $(element).html();
|
|
html = html.replace(/category_fields/g, 'category_fields[' + $(element).data('category') + ']');
|
|
html = html.replace(/category_ambiguous_fields/g, 'category_ambiguous_fields[' + $(element).data('category') + ']');
|
|
$(element).html(html);
|
|
});
|
|
|
|
$modalBulkCategoryParameters.find('[data-toggle="tooltip"]').tooltip();
|
|
$modalBulkCategoryParameters.find('select').chosen({width: '250px'});
|
|
$modalBulkCategoryParameters.modal('show');
|
|
} else {
|
|
showErrorMessage(json.message);
|
|
}
|
|
});
|
|
});
|
|
|
|
$modalBulkCategoryParameters.on('click', '.bulk-parameters-submit', function(e) {
|
|
e.preventDefault();
|
|
|
|
var categories = {};
|
|
|
|
$modalBulkCategoryParameters.find('#itemTabBulkParametersContent .tab-pane').each(function(index, tab) {
|
|
var categoryId = $(tab).data('category');
|
|
var productSelection = $(tab).find('.bulk-modal-product-radio:checked').val();
|
|
|
|
if (!(categoryId in categories)) {
|
|
categories[categoryId] = {
|
|
overrideMode: $(tab).find('.bulk-parameters-override').prop('checked'),
|
|
products: [],
|
|
parameters: {}
|
|
};
|
|
}
|
|
|
|
$(tab).find('.xproductization-bulk-modal-product-table tbody > tr').each(function(index, tr) {
|
|
var $input = $(tr).find('td > input');
|
|
if ((productSelection == 'chosen' && $input.prop('checked')) || productSelection == 'all') {
|
|
categories[categoryId].products.push($input.val());
|
|
}
|
|
});
|
|
|
|
$(tab).find('.form-group').each(function(index, formGroup) {
|
|
if ($(formGroup).hasClass('category-field-checkbox')) {
|
|
$(formGroup).find('input[type="checkbox"].category-field').each(function(index, checkbox) {
|
|
if ($(checkbox).prop('checked')) {
|
|
var parameterId = $(checkbox).data('id');
|
|
if (!(parameterId in categories[categoryId].parameters)) {
|
|
categories[categoryId].parameters[parameterId] = [];
|
|
}
|
|
categories[categoryId].parameters[parameterId].push($(checkbox).data('value'));
|
|
}
|
|
});
|
|
} else {
|
|
$(formGroup).find('.category-field').each(function(index, element) {
|
|
if ($(element).val() != '') {
|
|
if ($(element).parent().hasClass('multiple-values-group')) {
|
|
var parameterId = $(element).closest('.multiple-values-list').data('id');
|
|
if (!(parameterId in categories[categoryId].parameters)) {
|
|
categories[categoryId].parameters[parameterId] = [];
|
|
}
|
|
categories[categoryId].parameters[parameterId].push($(element).val());
|
|
} else {
|
|
categories[categoryId].parameters[$(element).attr('id')] = $(element).val();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
for (var categoryId in categories) {
|
|
if (!Object.keys(categories[categoryId].parameters).length) {
|
|
continue;
|
|
}
|
|
|
|
if (!categories[categoryId].products.length) {
|
|
continue;
|
|
}
|
|
|
|
for (var i = 0; i < categories[categoryId].products.length; i++) {
|
|
var $productParameters = $(document).find('tr[x-name="product"][x-id="' + categories[categoryId].products[i] + '"] div[x-name="product_category_fields"]');
|
|
|
|
$($productParameters).find('.form-group').each(function(index, formGroup) {
|
|
if ($(formGroup).hasClass('category-field-checkbox')) {
|
|
var checked = $(formGroup).find('input[type="checkbox"].category-field:checked');
|
|
var checkboxParameterId = $(formGroup).find('.x13allegro-list-checkbox').data('id');
|
|
|
|
if (!$(formGroup).hasClass('xproductization-value')
|
|
&& checkboxParameterId in categories[categoryId].parameters
|
|
&& (!checked.length || categories[categoryId].overrideMode)
|
|
) {
|
|
checked.prop('checked', false);
|
|
|
|
for (var valueIdKey in categories[categoryId].parameters[checkboxParameterId]) {
|
|
$(formGroup).find('input[type="checkbox"][data-value="' + categories[categoryId].parameters[checkboxParameterId][valueIdKey] + '"].category-field').prop('checked', true);
|
|
}
|
|
}
|
|
} else if ($(formGroup).hasClass('is-multiple-value')) {
|
|
var notEmpty = $(formGroup).find('input[type="text"].category-field').filter(function() { return $(this).val() != ''; });
|
|
var parameterId = $(formGroup).find('.multiple-values-list').data('id');
|
|
|
|
if (!$(formGroup).hasClass('xproductization-value')
|
|
&& parameterId in categories[categoryId].parameters
|
|
&& (!notEmpty.length || categories[categoryId].overrideMode)
|
|
) {
|
|
$(formGroup).find('input[type="text"].category-field').val('').trigger('input');
|
|
$(formGroup).find('.multiple-values-group:not(:first-child)').addClass('hide');
|
|
$(formGroup).find('.multiple-values-group:not(:first-child) .category-field-text-counter').addClass('hide');
|
|
|
|
for (var valueKey in categories[categoryId].parameters[parameterId]) {
|
|
var $thisInput = $(formGroup).find('input[type="text"][id="' + parameterId + '_' + valueKey + '"].category-field');
|
|
$thisInput.val(categories[categoryId].parameters[parameterId][valueKey]).trigger('input');
|
|
$thisInput.closest('.multiple-values-group').find('.category-field-text-counter').removeClass('hide');
|
|
$thisInput.closest('.multiple-values-group').removeClass('hide');
|
|
}
|
|
}
|
|
} else {
|
|
$(formGroup).find('.category-field').each(function(index, element) {
|
|
var parameterId = $(element).attr('id');
|
|
|
|
if (!$(element).hasClass('xproductization-value')
|
|
&& parameterId in categories[categoryId].parameters
|
|
&& ($(element).val() == '' || categories[categoryId].overrideMode)
|
|
) {
|
|
$(element).val(categories[categoryId].parameters[parameterId])
|
|
|
|
if ($(element).prop('nodeName') == 'SELECT') {
|
|
$(element).trigger('chosen:updated');
|
|
} else {
|
|
$(element).trigger('input');
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
// reload multiple values, and check required
|
|
self.categoryParametersForm($productParameters, true);
|
|
checkRequiredEmptyParameters($productParameters);
|
|
|
|
$productParameters.find('select').each(function () {
|
|
// check if we need to show/hide ambiguous input
|
|
// check if we need to show/hide depending on parameter
|
|
$(this).trigger('change');
|
|
});
|
|
$productParameters.find('input[type="checkbox"]').each(function () {
|
|
// check if we need to show/hide depending on parameter
|
|
$(this).trigger('change');
|
|
});
|
|
}
|
|
}
|
|
|
|
$modalBulkCategoryParameters.modal('hide');
|
|
});
|
|
|
|
$(document).on('change', '.bulk-modal-product-radio', function() {
|
|
if ($(this).val() == 'all') {
|
|
$(this).closest('.xproductization-bulk-product').find('.xproductization-bulk-modal-product-table').hide();
|
|
} else {
|
|
$(this).closest('.xproductization-bulk-product').find('.xproductization-bulk-modal-product-table').show();
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.bulk-modal-product-table-select', function(e) {
|
|
e.preventDefault();
|
|
|
|
var selectAll = parseInt($(this).data('select'));
|
|
$(this).closest('.xproductization-bulk-modal-product-table').find('tbody > tr').each(function(index, element) {
|
|
$(element).find('td > input').prop('checked', !!selectAll);
|
|
});
|
|
});
|
|
|
|
function checkRequiredParameters($container)
|
|
{
|
|
var auctionIndex = parseInt($container.closest('tr[x-name="product"]').attr('x-id'));
|
|
|
|
for (var requiredParameterId in parametersRequiredIf[auctionIndex]) {
|
|
var $requiredInputFormGroup = $container.find('input#' + requiredParameterId).closest('.form-group');
|
|
var $requiredInputLabel = $requiredInputFormGroup.find('label');
|
|
var $requiredSelectFormGroup = $container.find('select#' + requiredParameterId).closest('.form-group');
|
|
var $requiredSelectLabel = $requiredSelectFormGroup.find('label');
|
|
var isRequired = true;
|
|
|
|
var parametersWithValue = parametersRequiredIf[auctionIndex][requiredParameterId].parametersWithValue;
|
|
if (!parametersWithValue.length) {
|
|
continue;
|
|
}
|
|
|
|
parametersWithValue.forEach(function(parameter) {
|
|
var $parameterSelect = $container.find('select#' + parameter.id);
|
|
if ($parameterSelect.length) {
|
|
isRequired &= parameter.oneOfValueIds.includes($parameterSelect.val());
|
|
}
|
|
});
|
|
|
|
if (isRequired) {
|
|
if ($requiredInputFormGroup.length) {
|
|
$requiredInputFormGroup.addClass('required-parameter');
|
|
$requiredInputLabel.addClass('required');
|
|
}
|
|
else if ($requiredSelectFormGroup.length) {
|
|
$requiredSelectFormGroup.addClass('required-parameter');
|
|
$requiredSelectLabel.addClass('required');
|
|
}
|
|
} else {
|
|
if ($requiredInputFormGroup.length) {
|
|
$requiredInputFormGroup.removeClass('required-parameter');
|
|
$requiredInputLabel.removeClass('required');
|
|
}
|
|
else if ($requiredSelectFormGroup.length) {
|
|
$requiredSelectFormGroup.removeClass('required-parameter');
|
|
$requiredSelectLabel.removeClass('required');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function checkRequiredEmptyParameters($container)
|
|
{
|
|
var isEmptyRequired = false;
|
|
|
|
$container.find('[name*="[category_fields]"]:disabled').removeAttr('disabled').attr('readonly', true);
|
|
|
|
$container.find('.form-group.required-parameter').each(function(i, el) {
|
|
if ($(el).find('select').length) {
|
|
if (!$(el).find('select').val()) {
|
|
isEmptyRequired = true;
|
|
}
|
|
} else if ($(el).find('.checkbox').length) {
|
|
var checked = false;
|
|
$(el).find('.checkbox').each(function(iCheck, elCheck) {
|
|
if ($(elCheck).find('input').prop('checked')) {
|
|
checked = true;
|
|
}
|
|
});
|
|
if (!checked) {
|
|
isEmptyRequired = true;
|
|
}
|
|
} else if (!$(el).find('input').val()) {
|
|
isEmptyRequired = true;
|
|
}
|
|
});
|
|
|
|
if (isEmptyRequired) {
|
|
$container.parent().find('.xproductization-parameters-empty-required').show();
|
|
} else {
|
|
$container.parent().find('.xproductization-parameters-empty-required').hide();
|
|
}
|
|
}
|
|
},
|
|
|
|
categoryForm: function()
|
|
{
|
|
var self = this;
|
|
|
|
var $fieldsetCategories = $('#fieldset_0_1');
|
|
var $fieldsetParameters = $('#fieldset_2_3');
|
|
var $modalForm = $('#xallegro_parameter_map_form_modal');
|
|
|
|
var isProcessingCategoryFieldsValues = false;
|
|
|
|
var parameterMapId = 0;
|
|
var parameterMapRowInProgress = false;
|
|
|
|
var parameterDictionary;
|
|
var parameterMapRules;
|
|
var parameterRangeMapRules;
|
|
var parameterAmbiguousMapRules;
|
|
var parameterAmbiguousValueId;
|
|
var searchCollection;
|
|
|
|
$fieldsetCategories.find('select').chosen({width: '200px'});
|
|
this.categoryParametersForm($fieldsetParameters);
|
|
this.categoryParametersForm($modalForm);
|
|
|
|
if ($fieldsetParameters.find('.category-field-group').length) {
|
|
$fieldsetParameters.find('#category_parameters_info').show();
|
|
}
|
|
|
|
$(document).on('click', '#copy_parameters_link', function(e) {
|
|
e.preventDefault();
|
|
$('.copy-parameters-content').toggle();
|
|
});
|
|
|
|
$fieldsetCategories.on('change', 'select', function() {
|
|
var categoryId = $(this).prop('value');
|
|
if (categoryId == 0) {
|
|
return;
|
|
}
|
|
|
|
var selects = $fieldsetCategories.find('.allegro-category-select');
|
|
var selects_l = selects.length;
|
|
var index = selects.index($(this).closest('.allegro-category-select'));
|
|
|
|
for (var i = index + 1; i < selects_l; i++) {
|
|
selects.eq(i).remove();
|
|
}
|
|
|
|
self.changeCategory(categoryId, 0, $(this).closest('.allegro-category-select'), $fieldsetParameters);
|
|
});
|
|
|
|
$fieldsetCategories.on('focusout', '#allegro_category_input', function() {
|
|
var categoryId = $(this).prop('value');
|
|
if (categoryId == $('#allegro_category_current').val() || categoryId == 0) {
|
|
return;
|
|
}
|
|
|
|
var selects = $fieldsetCategories.find('.allegro-category-select');
|
|
var selects_l = selects.length;
|
|
|
|
for (var i = 1; i < selects_l; i++) {
|
|
selects.eq(i).remove();
|
|
}
|
|
|
|
self.changeCategory(categoryId, 1, selects.eq(0), $fieldsetParameters);
|
|
});
|
|
|
|
$fieldsetCategories.on('keydown', '#allegro_category_input', function(e) {
|
|
if (e.key === 'Enter') {
|
|
$(this).trigger('focusout');
|
|
return false;
|
|
}
|
|
});
|
|
|
|
$fieldsetParameters.find('select.category-field').each(function() {
|
|
$(this).chosen({width: '250px'});
|
|
});
|
|
|
|
$fieldsetParameters.on('change', 'input[type="checkbox"].category-field, select.category-field', function() {
|
|
submitCategoryFieldsValues($(this));
|
|
});
|
|
|
|
$fieldsetParameters.on('focusin', 'input[type="text"].category-field', function() {
|
|
$(this).data('value', $(this).val());
|
|
});
|
|
|
|
$fieldsetParameters.on('focusout', 'input[type="text"].category-field', function() {
|
|
if ($(this).data('value') != $(this).val()) {
|
|
submitCategoryFieldsValues($(this));
|
|
}
|
|
|
|
$(this).removeData('value');
|
|
});
|
|
|
|
$fieldsetParameters.on('click', '.xallegro-fieldMap', function(e) {
|
|
e.preventDefault();
|
|
|
|
var $button = $(this);
|
|
var cover = $('<div id="allegro_cover"></div>');
|
|
cover.appendTo('body').hide().fadeIn(400);
|
|
|
|
var processingCategoryFieldsValues = setInterval(function() {
|
|
if (!isProcessingCategoryFieldsValues) {
|
|
clearInterval(processingCategoryFieldsValues);
|
|
getParameterMapForm($button);
|
|
}
|
|
}, 500);
|
|
|
|
function getParameterMapForm($button)
|
|
{
|
|
parameterMapId = (parseInt($button.data('id')) || 0);
|
|
|
|
var formData = new FormData();
|
|
formData.append('ajax', 1);
|
|
formData.append('token', self.ajaxToken);
|
|
formData.append('action', 'getParameterMapForm');
|
|
formData.append('id_xallegro_category', (parseInt($('#id_xallegro_category').val()) || 0));
|
|
formData.append('parameterId', parameterMapId);
|
|
|
|
$.ajax({
|
|
url: self.ajaxUrl,
|
|
method: 'POST',
|
|
dataType: 'json',
|
|
data: formData,
|
|
contentType: false,
|
|
processData: false,
|
|
cache: false,
|
|
success: function(json) {
|
|
$(document).find('body #allegro_cover').remove();
|
|
|
|
if (json.success) {
|
|
parameterDictionary = json.parameterDictionary;
|
|
parameterMapRules = json.parameterMapRules;
|
|
parameterRangeMapRules = json.parameterRangeMapRules;
|
|
parameterAmbiguousMapRules = json.parameterAmbiguousMapRules;
|
|
parameterAmbiguousValueId = json.parameterAmbiguousValueId;
|
|
searchCollection = json.searchCollection;
|
|
|
|
$modalForm.html(json.html);
|
|
$modalForm.find('select.category-field').each(function() {
|
|
$(this).chosen({width: '250px'});
|
|
});
|
|
|
|
if (!parameterDictionary) {
|
|
var sortableHelper = function(e, ui) {
|
|
ui.children().each(function() {
|
|
$(this).width($(this).width());
|
|
});
|
|
return ui;
|
|
};
|
|
|
|
$modalForm.find('.xallegro-parameter-map-table tbody').sortable({
|
|
handle: '.xallegro-parameter-sort',
|
|
helper: sortableHelper,
|
|
start: function (e, ui) {
|
|
ui.placeholder.css({
|
|
height: ui.item.outerHeight(),
|
|
width: ui.item.outerWidth()
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
$modalForm.modal('show');
|
|
self._cast();
|
|
} else {
|
|
alert(json.message);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
$modalForm.on('click', '.xallegro-parameter-map-add', function(e) {
|
|
e.preventDefault();
|
|
|
|
if (parameterMapRowInProgress) {
|
|
return alertSaveMapping();
|
|
}
|
|
|
|
parameterMapRowInProgress = true;
|
|
var $mapRow = $('<tr></tr>');
|
|
|
|
if (!parameterDictionary) {
|
|
$mapRow.append($('<td class="xallegro-parameter-sort text-center"></td>').html('<i class="icon-bars"></i>'));
|
|
}
|
|
|
|
if (parameterDictionary || parameterRangeMapRules) {
|
|
var $selectValueId;
|
|
|
|
if (parameterDictionary) {
|
|
$selectValueId = createSelectWithDictionary();
|
|
} else {
|
|
$selectValueId = createSelectWithRangeMapRules();
|
|
}
|
|
|
|
$mapRow.append($('<td class="xallegro-parameter-valueId"></td>').html(
|
|
$selectValueId.prop('outerHTML')
|
|
+ createInputParameterMap('valueId').prop('outerHTML')
|
|
+ '<span></span>'
|
|
));
|
|
}
|
|
|
|
$mapRow.append($('<td class="xallegro-parameter-rule"></td>').html(
|
|
createInputParameterMap('rule').prop('outerHTML')
|
|
+ '<span></span>'
|
|
));
|
|
|
|
if (!parameterDictionary && !parameterRangeMapRules) {
|
|
$mapRow.find('.xallegro-parameter-rule').append(createSelectWithMapRules());
|
|
}
|
|
|
|
var $inputRuleValue;
|
|
if (parameterRangeMapRules) {
|
|
$inputRuleValue = createInputParameterMap('ruleValue', 'rangeMin').addClass('rangeMin').prop('outerHTML')
|
|
+ createInputParameterMap('ruleValue', 'rangeMax').addClass('rangeMax').prop('outerHTML');
|
|
} else {
|
|
$inputRuleValue = createInputParameterMap('ruleValue').prop('outerHTML');
|
|
}
|
|
|
|
$mapRow.append($('<td class="xallegro-parameter-ruleValue"></td>').html(
|
|
$inputRuleValue
|
|
+ '<span></span>'
|
|
));
|
|
|
|
var $buttonSave = $('<a title="Zapisz mapowanie"></a>').addClass('btn btn-primary xallegro-parameter-row-save').html('<i class="icon-save"></i>');
|
|
var $buttonQuit = $('<a title="Anuluj mapowanie"></a>').addClass('btn xallegro-parameter-row-quit').html('<i class="icon-remove"></i>');
|
|
var $buttonEdit = $('<a title="Edytuj mapowanie"></a>').addClass('btn xallegro-parameter-row-edit').html('<i class="icon-pencil"></i>').hide();
|
|
var $buttonDelete = $('<a title="Usuń mapowanie"></a>').addClass('btn xallegro-parameter-row-delete').html('<i class="icon-trash"></i>').hide();
|
|
|
|
$mapRow.append($('<td class="text-right"></td>').html(
|
|
$buttonSave.prop('outerHTML')
|
|
+ $buttonQuit.prop('outerHTML')
|
|
+ $buttonEdit.prop('outerHTML')
|
|
+ $buttonDelete.prop('outerHTML')
|
|
));
|
|
|
|
$mapRow.find('select.chosenType').chosen({width: '100%'});
|
|
|
|
$modalForm.find('.xallegro-parameter-map-table tbody').append($mapRow);
|
|
});
|
|
|
|
$modalForm.on('change', '.xallegro-parameter-valueId select', function() {
|
|
var valueId = $(this).val();
|
|
var valueName = (valueId != '0' ? $(this).find('option[value="' + valueId + '"]').text() : '');
|
|
|
|
var $cellValueId = $(this).closest('td');
|
|
var $cellRule = $(this).closest('tr').find('.xallegro-parameter-rule');
|
|
|
|
$cellValueId.data('value', valueId).data('name', valueName)
|
|
$cellValueId.find('.ambiguous').remove();
|
|
|
|
$cellRule
|
|
.data('ambiguous', false)
|
|
.data('range', false)
|
|
.data('value', '0').data('name', '')
|
|
.data('ambiguous-value', '0').data('ambiguous-name', '')
|
|
.data('range-value', '0').data('range-name', '');
|
|
|
|
$cellRule.find('select').val('0').trigger('change').chosen('destroy').remove();
|
|
|
|
if (valueId == '0') {
|
|
return;
|
|
}
|
|
|
|
$cellRule.append(createSelectWithMapRules(valueId));
|
|
|
|
if (parameterRangeMapRules) {
|
|
$cellRule.data('range', valueId);
|
|
}
|
|
|
|
if (parameterAmbiguousValueId == valueId) {
|
|
$cellValueId.append('<div class="ambiguous">inna wartość</div>');
|
|
$cellRule.data('ambiguous', true)
|
|
.append(createPlaceholder(undefined, 'wybierz warunek mapowania'));
|
|
|
|
if (!$cellRule.find('.input-ambiguous-parameter-map').length) {
|
|
$cellRule.prepend(createInputAmbiguousParameterMap('rule'));
|
|
}
|
|
}
|
|
|
|
$cellRule.find('select.chosenType').chosen({width: '100%'});
|
|
});
|
|
|
|
$modalForm.on('change', '.xallegro-parameter-rule select.rule', function() {
|
|
var ruleId = $(this).val();
|
|
var ruleName = (ruleId != '0' ? $(this).find('option[value="' + ruleId + '"]').text() : '');
|
|
var ruleType = $(this).find('option[value="' + ruleId + '"]').data('type');
|
|
var ruleSearchKey = $(this).find('option[value="' + ruleId + '"]').data('search-key');
|
|
|
|
var $cellRule = $(this).closest('td');
|
|
var $cellRuleValue = $(this).closest('tr').find('.xallegro-parameter-ruleValue');
|
|
|
|
$cellRule.data('value', ruleId).data('name', ruleName);
|
|
$cellRule.find('.ambiguous').chosen('destroy').remove();
|
|
$cellRule.find('.placeholder').remove();
|
|
|
|
$cellRuleValue.find('.ruleValue.chosenType').chosen('destroy');
|
|
$cellRuleValue.find('.ruleValue.select2Type').select2('destroy');
|
|
$cellRuleValue.find('.ruleValue').remove();
|
|
$cellRuleValue.find('.ambiguousRuleValue').remove();
|
|
|
|
$cellRuleValue
|
|
.data('value', '0').data('name', '')
|
|
.data('ambiguous-value', '0').data('ambiguous-name', '')
|
|
.data('range-value', {}).data('range-name', {});
|
|
|
|
if (ruleId == '0') {
|
|
if ($cellRule.data('ambiguous')) {
|
|
$cellRule.append(createPlaceholder(undefined, 'wybierz warunek mapowania'));
|
|
}
|
|
return;
|
|
}
|
|
|
|
if (ruleType === 'search') {
|
|
if ($cellRule.data('range') == 'range_split') {
|
|
$cellRuleValue.append(createSelect().addClass('ruleValue rangeMin select2Type'))
|
|
.append(createSelect().addClass('ruleValue rangeMax select2Type'));
|
|
|
|
initializeSelect2($cellRuleValue.find('select.ruleValue.rangeMin'), ruleId, ruleSearchKey);
|
|
initializeSelect2($cellRuleValue.find('select.ruleValue.rangeMax'), ruleId, ruleSearchKey);
|
|
} else {
|
|
$cellRuleValue.append(createSelect().addClass('ruleValue select2Type'));
|
|
initializeSelect2($cellRuleValue.find('select.ruleValue'), ruleId, ruleSearchKey);
|
|
}
|
|
}
|
|
else if (ruleType === 'choose') {
|
|
if ($cellRule.data('range') == 'range_split') {
|
|
$cellRuleValue.append(createSelectWithMapRuleCollection(ruleId, 'rangeMin'))
|
|
.append(createSelectWithMapRuleCollection(ruleId, 'rangeMax'));
|
|
} else {
|
|
$cellRuleValue.append(createSelectWithMapRuleCollection(ruleId));
|
|
}
|
|
} else {
|
|
$cellRuleValue.append(createPlaceholderRuleValue());
|
|
$cellRuleValue.data('value', ruleId).data('name', '');
|
|
}
|
|
|
|
if ($cellRule.data('ambiguous')) {
|
|
$cellRule.append(createSelectWithAmbiguousMapRules(ruleId));
|
|
$cellRuleValue.append(createPlaceholderambiguousRuleValue());
|
|
|
|
if (!$cellRuleValue.find('.input-ambiguous-parameter-map').length) {
|
|
$cellRuleValue.prepend(createInputAmbiguousParameterMap('ruleValue'));
|
|
}
|
|
}
|
|
|
|
$cellRule.find('select').chosen({width: '100%'});
|
|
$cellRuleValue.find('select.chosenType').chosen({width: '100%'});
|
|
});
|
|
|
|
$modalForm.on('change', '.xallegro-parameter-rule select.ambiguous', function() {
|
|
var ambiguousRuleId = $(this).val();
|
|
var ambiguousRuleName = (ambiguousRuleId != '0' ? $(this).find('option[value="' + ambiguousRuleId + '"]').text() : '');
|
|
var ambiguousRuleType = $(this).find('option[value="' + ambiguousRuleId + '"]').data('type');
|
|
|
|
var $cellRule = $(this).closest('td');
|
|
var $cellRuleValue = $(this).closest('tr').find('.xallegro-parameter-ruleValue');
|
|
|
|
$cellRule.data('ambiguous-value', ambiguousRuleId).data('ambiguous-name', ambiguousRuleName);
|
|
|
|
$cellRuleValue.find('.ambiguousRuleValue').remove();
|
|
$cellRuleValue.data('ambiguous-value', '0').data('ambiguous-name', '');
|
|
|
|
if (ambiguousRuleId == '0') {
|
|
if ($cellRule.data('ambiguous')) {
|
|
$cellRuleValue.append(createPlaceholderambiguousRuleValue());
|
|
}
|
|
return;
|
|
}
|
|
|
|
if (ambiguousRuleType === 'text') {
|
|
$cellRuleValue.append(createInputAmbiguousValue());
|
|
} else {
|
|
$cellRuleValue.append(createPlaceholderambiguousRuleValue());
|
|
$cellRuleValue.data('ambiguous-value', ambiguousRuleId).data('ambiguous-name', '');
|
|
}
|
|
});
|
|
|
|
$modalForm.on('change', '.xallegro-parameter-ruleValue select.ruleValue', function() {
|
|
var ruleValueId = $(this).val();
|
|
var ruleValueName = (ruleValueId != '0' ? $(this).find('option[value="' + ruleValueId + '"]').text() : '');
|
|
|
|
if ($(this).hasClass('rangeMin') || $(this).hasClass('rangeMax')) {
|
|
var dataValue = $(this).closest('td').data('range-value');
|
|
var dataName = $(this).closest('td').data('range-name');
|
|
var rangeData = ($(this).hasClass('rangeMin') ? 'rangeMin' : 'rangeMax');
|
|
|
|
dataValue[rangeData] = ruleValueId;
|
|
dataName[rangeData] = ruleValueName;
|
|
|
|
$(this).closest('td')
|
|
.data('range-value', dataValue)
|
|
.data('range-name', dataName);
|
|
} else {
|
|
$(this).closest('td')
|
|
.data('value', ruleValueId)
|
|
.data('name', ruleValueName);
|
|
}
|
|
});
|
|
|
|
$modalForm.on('input', '.xallegro-parameter-ruleValue input.ambiguous', function() {
|
|
var ambiguousRuleValueId = $(this).val();
|
|
|
|
$(this).closest('td')
|
|
.data('ambiguous-value', (ambiguousRuleValueId != '' ? ambiguousRuleValueId : '0'))
|
|
.data('ambiguous-name', ambiguousRuleValueId);
|
|
});
|
|
|
|
$modalForm.on('click', '.xallegro-parameter-row-save', function(e) {
|
|
e.preventDefault();
|
|
|
|
if (closeParameterMapping($(this).closest('tr'), true)) {
|
|
calculateMapRows();
|
|
parameterMapRowInProgress = false;
|
|
}
|
|
});
|
|
|
|
$modalForm.on('click', '.xallegro-parameter-row-quit', function(e) {
|
|
e.preventDefault();
|
|
|
|
closeParameterMapping($(this).closest('tr'), false);
|
|
parameterMapRowInProgress = false;
|
|
});
|
|
|
|
$modalForm.on('click', '.xallegro-parameter-row-edit', function(e) {
|
|
e.preventDefault();
|
|
|
|
if (parameterMapRowInProgress) {
|
|
return alertSaveMapping();
|
|
}
|
|
|
|
var $row = $(this).closest('tr');
|
|
var $cellValueId = $row.find('.xallegro-parameter-valueId');
|
|
var $cellRule = $row.find('.xallegro-parameter-rule');
|
|
var $cellRuleValue = $row.find('.xallegro-parameter-ruleValue');
|
|
|
|
if (typeof $cellValueId !== 'undefined') {
|
|
$cellValueId.find('span').hide();
|
|
|
|
var $inputValueId = $cellValueId.find('input.input-parameter-map');
|
|
|
|
if (parameterRangeMapRules) {
|
|
$cellValueId.append(createSelectWithRangeMapRules());
|
|
$cellRule.data('range', $inputValueId.val());
|
|
} else {
|
|
$cellValueId.append(createSelectWithDictionary());
|
|
}
|
|
|
|
$cellValueId.find('select').val($inputValueId.val());
|
|
$cellValueId.data('value', $inputValueId.val()).data('name', $inputValueId.data('name'));
|
|
|
|
if (parameterAmbiguousValueId == $inputValueId.val()) {
|
|
$cellValueId.append('<div class="ambiguous">inna wartość</div>');
|
|
}
|
|
}
|
|
|
|
$cellRule.find('span').hide();
|
|
$cellRuleValue.find('span').hide();
|
|
|
|
var $inputRule = $cellRule.find('input.input-parameter-map');
|
|
$cellRule.append(createSelectWithMapRules($inputValueId.val()));
|
|
$cellRule.find('select.rule').val($inputRule.val());
|
|
$cellRule.data('value', $inputRule.val()).data('name', $inputRule.data('name'));
|
|
|
|
var $inputRuleValue = $cellRuleValue.find('input.input-parameter-map');
|
|
var $inputRuleValueRangeMin = $cellRuleValue.find('input.input-parameter-map.rangeMin');
|
|
var $inputRuleValueRangeMax = $cellRuleValue.find('input.input-parameter-map.rangeMax');
|
|
var ruleType = $cellRule.find('select.rule option[value="' + $inputRule.val() + '"]').data('type');
|
|
var ruleSearchKey = $cellRule.find('select.rule option[value="' + $inputRule.val() + '"]').data('search-key');
|
|
|
|
if ($cellRule.data('range') == 'range_split') {
|
|
$cellRuleValue
|
|
.data('range-value', {
|
|
rangeMin: $inputRuleValueRangeMin.val(),
|
|
rangeMax: $inputRuleValueRangeMax.val()
|
|
})
|
|
.data('range-name', {
|
|
rangeMin: $inputRuleValueRangeMin.data('name'),
|
|
rangeMax: $inputRuleValueRangeMax.data('name')
|
|
});
|
|
}
|
|
else {
|
|
$cellRuleValue.data('value', $inputRuleValue.val()).data('name', $inputRuleValue.data('name'));
|
|
}
|
|
|
|
if (ruleType === 'search') {
|
|
if ($cellRule.data('range') == 'range_split') {
|
|
$cellRuleValue.append(createSelect().addClass('ruleValue rangeMin select2Type'))
|
|
.append(createSelect().addClass('ruleValue rangeMax select2Type'));
|
|
|
|
initializeSelect2($cellRuleValue.find('select.ruleValue.rangeMin'), $inputRule.val(), ruleSearchKey);
|
|
initializeSelect2($cellRuleValue.find('select.ruleValue.rangeMax'), $inputRule.val(), ruleSearchKey);
|
|
|
|
$cellRuleValue.find('select.ruleValue.rangeMin')
|
|
.append(new Option($inputRuleValueRangeMin.data('name'), $inputRuleValueRangeMin.val(), true, true))
|
|
.val($inputRuleValueRangeMin.val())
|
|
.trigger('change');
|
|
|
|
$cellRuleValue.find('select.ruleValue.rangeMax')
|
|
.append(new Option($inputRuleValueRangeMax.data('name'), $inputRuleValueRangeMax.val(), true, true))
|
|
.val($inputRuleValueRangeMax.val())
|
|
.trigger('change');
|
|
} else {
|
|
$cellRuleValue.append(createSelect().addClass('ruleValue select2Type'));
|
|
|
|
initializeSelect2($cellRuleValue.find('select.ruleValue'), $inputRule.val(), ruleSearchKey);
|
|
$cellRuleValue.find('select.ruleValue')
|
|
.append(new Option($inputRuleValue.data('name'), $inputRuleValue.val(), true, true))
|
|
.val($inputRuleValue.val())
|
|
.trigger('change');
|
|
}
|
|
}
|
|
else if (ruleType === 'choose') {
|
|
if ($cellRule.data('range') == 'range_split') {
|
|
$cellRuleValue.append(createSelectWithMapRuleCollection($inputRule.val(), 'rangeMin'))
|
|
.append(createSelectWithMapRuleCollection($inputRule.val(), 'rangeMax'));
|
|
|
|
$cellRuleValue.find('select.ruleValue.rangeMin').val($inputRuleValueRangeMin.val());
|
|
$cellRuleValue.find('select.ruleValue.rangeMax').val($inputRuleValueRangeMax.val());
|
|
} else {
|
|
$cellRuleValue.append(createSelectWithMapRuleCollection($inputRule.val()));
|
|
$cellRuleValue.find('select.ruleValue').val($inputRuleValue.val());
|
|
}
|
|
} else {
|
|
$cellRuleValue.append(createPlaceholderRuleValue());
|
|
}
|
|
|
|
if (parameterAmbiguousValueId == $inputValueId.val()) {
|
|
var $inputAmbiguousRule = $cellRule.find('input.input-ambiguous-parameter-map');
|
|
$cellRule.append(createSelectWithAmbiguousMapRules($inputRule.val()));
|
|
$cellRule.find('select.ambiguousRule').val($inputAmbiguousRule.val());
|
|
$cellRule.data('ambiguous', true).data('ambiguous-value', $inputAmbiguousRule.val()).data('ambiguous-name', $inputAmbiguousRule.data('name'));
|
|
|
|
var $inputAmbiguousRuleValue = $cellRuleValue.find('input.input-ambiguous-parameter-map');
|
|
var ambiguousRuleType = $cellRule.find('select.ambiguousRule option[value="' + $inputAmbiguousRule.val() + '"]').data('type');
|
|
$cellRuleValue.data('ambiguous-value', $inputAmbiguousRuleValue.val()).data('ambiguous-name', $inputAmbiguousRuleValue.data('name'));
|
|
|
|
if (ambiguousRuleType === 'text') {
|
|
var $ambiguousInput = createInputAmbiguousValue().val($inputAmbiguousRuleValue.val());
|
|
$cellRuleValue.append($ambiguousInput);
|
|
} else {
|
|
$cellRuleValue.append(createPlaceholderambiguousRuleValue());
|
|
}
|
|
}
|
|
|
|
$row.find('.xallegro-parameter-row-save').show();
|
|
$row.find('.xallegro-parameter-row-quit').show();
|
|
$row.find('.xallegro-parameter-row-edit').hide();
|
|
$row.find('.xallegro-parameter-row-delete').hide();
|
|
|
|
$row.find('select.chosenType').chosen({width: '100%'});
|
|
|
|
parameterMapRowInProgress = true;
|
|
});
|
|
|
|
$modalForm.on('click', '.xallegro-parameter-row-delete', function(e) {
|
|
e.preventDefault();
|
|
|
|
if (parameterMapRowInProgress) {
|
|
return alertSaveMapping();
|
|
}
|
|
|
|
$(this).closest('tr').remove();
|
|
calculateMapRows();
|
|
});
|
|
|
|
$modalForm.on('click', '.xallegro-parameter-map-close', function(e) {
|
|
e.preventDefault();
|
|
|
|
self._modalAlert(
|
|
$modalForm.find('#xallegro_parameter_map_form_modal_alert_close'),
|
|
function() {
|
|
$modalForm.modal('hide');
|
|
});
|
|
});
|
|
|
|
$modalForm.on('click', '.xallegro-parameter-map-submit', function(e) {
|
|
e.preventDefault();
|
|
|
|
if (parameterMapRowInProgress) {
|
|
return alertSaveMapping();
|
|
}
|
|
|
|
$modalForm.find('.xallegro-parameter-map-table tbody tr').each(function(trIndex, tr) {
|
|
$(tr).find('td').each(function(tdIndex, td) {
|
|
$(td).find('.input-parameter-map, .input-ambiguous-parameter-map').each(function(inputIndex, input) {
|
|
var inputName = $(input).attr('name');
|
|
if (typeof inputName !== 'undefined') {
|
|
$(input).attr('name', inputName.replace(/parameter_map\[(.*?)]/, 'parameter_map[' + trIndex + ']'));
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
var formData = new FormData($modalForm.find('form')[0]);
|
|
formData.append('ajax', 1);
|
|
formData.append('token', self.ajaxToken);
|
|
formData.append('action', 'submitParameterMap');
|
|
|
|
$.ajax({
|
|
url: self.ajaxUrl,
|
|
method: 'POST',
|
|
dataType: 'json',
|
|
data: formData,
|
|
contentType: false,
|
|
processData: false,
|
|
cache: false,
|
|
success: function(json) {
|
|
if (json.success) {
|
|
var $formGroup = $fieldsetParameters.find('button[data-id="' + parameterMapId + '"]').closest('.form-group');
|
|
|
|
var $parameterForm = $($.parseHTML(json.parameterForm));
|
|
$parameterForm.find('.form-group').each(function(index, element) {
|
|
if (!$(element).hasClass('is-ambiguous-value')) {
|
|
$formGroup.html($(element).html());
|
|
$formGroup.find('select.category-field').chosen({width: '250px'});
|
|
} else {
|
|
$formGroup.next().html($(element).html());
|
|
}
|
|
});
|
|
|
|
showSuccessMessage(json.message);
|
|
$modalForm.modal('hide');
|
|
} else {
|
|
showErrorMessage(json.message);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
$modalForm.on('hide.bs.modal', function() {
|
|
parameterMapRowInProgress = false;
|
|
});
|
|
|
|
$modalForm.on('click', '.checkbox label', function(e) {
|
|
e.preventDefault();
|
|
|
|
var $input = $(this).find('input');
|
|
$input.prop('checked', !$input.is(':checked'));
|
|
});
|
|
|
|
function closeParameterMapping($row, closeAndSave)
|
|
{
|
|
var $cellValueId = $row.find('.xallegro-parameter-valueId');
|
|
var $cellRule = $row.find('.xallegro-parameter-rule');
|
|
var $cellRuleValue = $row.find('.xallegro-parameter-ruleValue');
|
|
|
|
if (closeAndSave) {
|
|
var isRangeSplit = ($cellRule.data('range') == 'range_split');
|
|
var isAmbiguous = (typeof $cellRule.data('ambiguous') !== 'undefined' && $cellRule.data('ambiguous'));
|
|
|
|
if (((parameterDictionary || parameterRangeMapRules) && typeof $cellValueId.data('value') === 'undefined')
|
|
|| typeof $cellRule.data('value') === 'undefined'
|
|
|| (!isRangeSplit && typeof $cellRuleValue.data('value') === 'undefined')
|
|
|| ((parameterDictionary || parameterRangeMapRules) && $cellValueId.data('value') == '0')
|
|
|| $cellRule.data('value') == '0'
|
|
|| ((isRangeSplit && (!('rangeMin' in $cellRuleValue.data('range-value')) || !('rangeMax' in $cellRuleValue.data('range-value'))))
|
|
|| (!isRangeSplit && $cellRuleValue.data('value') == '0'))
|
|
|| (isAmbiguous && ($cellRule.data('ambiguous-value') == '0' || $cellRuleValue.data('ambiguous-value') == '0'))
|
|
) {
|
|
self._modalAlert($modalForm.find('#xallegro_parameter_map_form_modal_alert_before_save'));
|
|
return false;
|
|
}
|
|
|
|
$row.data('saved', '1');
|
|
|
|
if (parameterDictionary || parameterRangeMapRules) {
|
|
$cellValueId.find('span').text($cellValueId.data('name'));
|
|
$cellValueId.find('input.input-parameter-map')
|
|
.data('name', $cellValueId.data('name'))
|
|
.val($cellValueId.data('value'));
|
|
}
|
|
|
|
$cellRule.find('span').text($cellRule.data('name'));
|
|
$cellRule.find('input.input-parameter-map')
|
|
.data('name', $cellRule.data('name'))
|
|
.val($cellRule.data('value'));
|
|
|
|
if (isRangeSplit) {
|
|
$cellRuleValue.find('span').html(
|
|
'od: ' + $cellRuleValue.data('range-name').rangeMin + '<br>'
|
|
+ 'do: ' + $cellRuleValue.data('range-name').rangeMax
|
|
);
|
|
|
|
$cellRuleValue.find('input.input-parameter-map.rangeMin')
|
|
.data('name', $cellRuleValue.data('range-name').rangeMin)
|
|
.val($cellRuleValue.data('range-value').rangeMin);
|
|
|
|
$cellRuleValue.find('input.input-parameter-map.rangeMax')
|
|
.data('name', $cellRuleValue.data('range-name').rangeMax)
|
|
.val($cellRuleValue.data('range-value').rangeMax);
|
|
}
|
|
else {
|
|
$cellRuleValue.find('span').text($cellRuleValue.data('name'));
|
|
$cellRuleValue.find('input.input-parameter-map')
|
|
.data('name', $cellRuleValue.data('name'))
|
|
.val($cellRuleValue.data('value'));
|
|
|
|
if (isAmbiguous) {
|
|
var textRuleValue = $cellRuleValue.find('span').text();
|
|
var textAmbiguousRuleValue = $cellRuleValue.data('ambiguous-name');
|
|
|
|
$cellRuleValue.find('span').append(
|
|
(textRuleValue != '' ? '<br>' : '')
|
|
+ 'inna wartość: '
|
|
+ $cellRule.data('ambiguous-name')
|
|
+ (textAmbiguousRuleValue != '' ? ' "' + textAmbiguousRuleValue + '"' : '')
|
|
);
|
|
|
|
$cellRule.find('input.input-ambiguous-parameter-map')
|
|
.data('name', $cellRule.data('ambiguous-name'))
|
|
.val($cellRule.data('ambiguous-value'));
|
|
|
|
$cellRuleValue.find('input.input-ambiguous-parameter-map')
|
|
.data('name', $cellRuleValue.data('ambiguous-name'))
|
|
.val($cellRuleValue.data('ambiguous-value'));
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($row.data('saved')) {
|
|
if (parameterDictionary || parameterRangeMapRules) {
|
|
$cellValueId.find('select').chosen('destroy').remove();
|
|
$cellValueId.find('span').show();
|
|
$cellValueId.find('.ambiguous').remove();
|
|
removeDataAttributes($cellValueId);
|
|
}
|
|
|
|
$cellRule.find('select').chosen('destroy').remove();
|
|
$cellRule.find('.placeholder').remove();
|
|
$cellRule.find('span').show();
|
|
removeDataAttributes($cellRule);
|
|
|
|
$cellRuleValue.find('input[type="text"]').remove();
|
|
$cellRuleValue.find('select.chosenType').chosen('destroy').remove();
|
|
$cellRuleValue.find('select.select2Type').select2('destroy').remove();
|
|
$cellRuleValue.find('.placeholder').remove();
|
|
$cellRuleValue.find('span').show();
|
|
removeDataAttributes($cellRuleValue);
|
|
|
|
$row.find('.xallegro-parameter-row-save').hide();
|
|
$row.find('.xallegro-parameter-row-quit').hide();
|
|
$row.find('.xallegro-parameter-row-edit').show();
|
|
$row.find('.xallegro-parameter-row-delete').show();
|
|
} else {
|
|
$row.remove();
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function initializeSelect2($element, collection, collectionKey)
|
|
{
|
|
var searchQuery;
|
|
|
|
$element.select2({
|
|
ajax: {
|
|
transport: function(params, success) {
|
|
var pageSize = 1000;
|
|
var term = (params.data.term || '').toLowerCase();
|
|
var page = (params.data.page || 1);
|
|
|
|
searchQuery = term;
|
|
|
|
var results = searchCollection[collection]
|
|
.filter(function(element) {
|
|
return new RegExp(getMatchRegex(term), "i").test(element.name.toLowerCase());
|
|
})
|
|
.map(function(element) {
|
|
return {
|
|
id: element[collectionKey],
|
|
text: element.name
|
|
};
|
|
});
|
|
|
|
var paged = results.slice((page -1) * pageSize, page * pageSize);
|
|
|
|
success({
|
|
results: paged,
|
|
pagination: {
|
|
more: results.length >= page * pageSize
|
|
}
|
|
});
|
|
}
|
|
},
|
|
templateResult: function(item) {
|
|
if (item.loading) {
|
|
return item.text;
|
|
}
|
|
|
|
return renderMatchResults(item.text, searchQuery);
|
|
}
|
|
});
|
|
|
|
function getMatchRegex(searchQuery)
|
|
{
|
|
return searchQuery.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
|
}
|
|
|
|
function renderMatchResults(text, searchQuery)
|
|
{
|
|
var match = text.toLowerCase().indexOf(searchQuery);
|
|
var $result = $('<span></span>');
|
|
|
|
if (match < 0) {
|
|
return $result.text(text);
|
|
}
|
|
|
|
$result.text(text.substring(0, match));
|
|
var $match = $('<span class="select2-rendered__match"></span>');
|
|
|
|
$match.text(text.substring(match, match + searchQuery.length));
|
|
$result.append($match);
|
|
$result.append(text.substring(match + searchQuery.length));
|
|
|
|
return $result;
|
|
}
|
|
}
|
|
|
|
function createSelectWithDictionary()
|
|
{
|
|
var $select = createSelect();
|
|
for (var indexParameter in parameterDictionary) {
|
|
$select.append(
|
|
$('<option></option>')
|
|
.attr('value', parameterDictionary[indexParameter].id)
|
|
.text(parameterDictionary[indexParameter].value)
|
|
);
|
|
}
|
|
|
|
return $select.addClass('chosenType');
|
|
}
|
|
|
|
function createSelectWithMapRules(selectedValue)
|
|
{
|
|
var $select = createSelect();
|
|
for (var indexRule in parameterMapRules) {
|
|
if (typeof selectedValue !== 'undefined'
|
|
&& 'ambiguous' in parameterMapRules[indexRule]
|
|
&& parameterMapRules[indexRule].ambiguous
|
|
&& selectedValue != parameterAmbiguousValueId
|
|
) {
|
|
continue;
|
|
}
|
|
|
|
$select.append(
|
|
$('<option></option>')
|
|
.attr('value', indexRule)
|
|
.attr('data-type', parameterMapRules[indexRule].type)
|
|
.attr('data-search-key', ('searchKey' in parameterMapRules[indexRule] ? parameterMapRules[indexRule].searchKey : false))
|
|
.text(parameterMapRules[indexRule].name)
|
|
);
|
|
}
|
|
|
|
return $select.addClass('rule chosenType');
|
|
}
|
|
|
|
function createSelectWithMapRuleCollection(ruleId, className)
|
|
{
|
|
var $select = createSelect();
|
|
|
|
if (typeof className !== 'undefined') {
|
|
$select.addClass(className);
|
|
}
|
|
|
|
for (var indexRuleValue in parameterMapRules[ruleId].collection) {
|
|
$select.append(
|
|
$('<option></option>')
|
|
.attr('value', indexRuleValue)
|
|
.text(parameterMapRules[ruleId].collection[indexRuleValue])
|
|
);
|
|
}
|
|
|
|
return $select.addClass('ruleValue chosenType');
|
|
}
|
|
|
|
function createSelectWithRangeMapRules()
|
|
{
|
|
var $select = createSelect();
|
|
for (var indexRange in parameterRangeMapRules) {
|
|
$select.append(
|
|
$('<option></option>')
|
|
.attr('value', indexRange)
|
|
.text(parameterRangeMapRules[indexRange].name)
|
|
);
|
|
}
|
|
|
|
return $select.addClass('chosenType');
|
|
}
|
|
|
|
function createSelectWithAmbiguousMapRules(ruleId)
|
|
{
|
|
var $select = createSelect();
|
|
for (var indexRule in parameterAmbiguousMapRules) {
|
|
if (typeof ruleId !== 'undefined'
|
|
&& 'hiddenWhen' in parameterAmbiguousMapRules[indexRule]
|
|
&& parameterAmbiguousMapRules[indexRule].hiddenWhen.includes(ruleId)
|
|
) {
|
|
continue;
|
|
}
|
|
|
|
$select.append(
|
|
$('<option></option>')
|
|
.attr('value', indexRule)
|
|
.attr('data-type', parameterAmbiguousMapRules[indexRule].type)
|
|
.text(parameterAmbiguousMapRules[indexRule].name)
|
|
);
|
|
}
|
|
|
|
return $select.addClass('ambiguous ambiguousRule chosenType');
|
|
}
|
|
|
|
function createSelect()
|
|
{
|
|
var $select = $('<select></select>');
|
|
|
|
return $select.append(
|
|
$('<option></option>')
|
|
.attr('value', 0)
|
|
.text('-- Wybierz --')
|
|
);
|
|
}
|
|
|
|
function createInputParameterMap(inputName, multiple)
|
|
{
|
|
return $('<input>')
|
|
.attr('type', 'hidden')
|
|
.attr('name', 'xallegro_parameter_map[][' + inputName + ']' + (typeof multiple !== 'undefined' ? '[' + multiple + ']' : ''))
|
|
.addClass('input-parameter-map');
|
|
}
|
|
|
|
function createInputAmbiguousParameterMap(inputName)
|
|
{
|
|
return $('<input>')
|
|
.attr('type', 'hidden')
|
|
.attr('name', 'xallegro_parameter_map[][ambiguous][' + inputName + ']')
|
|
.addClass('input-ambiguous-parameter-map');
|
|
}
|
|
|
|
function createInputAmbiguousValue()
|
|
{
|
|
return $('<input type="text" class="ambiguous ambiguousRuleValue">');
|
|
}
|
|
|
|
function createPlaceholderRuleValue()
|
|
{
|
|
return createPlaceholder('ruleValue');
|
|
}
|
|
|
|
function createPlaceholderambiguousRuleValue()
|
|
{
|
|
return createPlaceholder('ambiguousRuleValue');
|
|
}
|
|
|
|
function createPlaceholder(className, content)
|
|
{
|
|
var $placeholder = $('<div class="placeholder"></div>');
|
|
|
|
if (typeof className !== 'undefined') {
|
|
$placeholder.addClass(className);
|
|
}
|
|
if (typeof content !== 'undefined') {
|
|
$placeholder.text(content);
|
|
}
|
|
|
|
return $placeholder;
|
|
}
|
|
|
|
function alertSaveMapping()
|
|
{
|
|
self._modalAlert($modalForm.find('#xallegro_parameter_map_form_modal_alert_save'));
|
|
return false;
|
|
}
|
|
|
|
function calculateMapRows()
|
|
{
|
|
var $badgeMapRows = $modalForm.find('.modal-body #navTab_parameterMap_mapping .badge');
|
|
var mapRows = $modalForm.find('.xallegro-parameter-map-table tbody tr').length;
|
|
|
|
if (mapRows > 0) {
|
|
$badgeMapRows.text(mapRows);
|
|
} else {
|
|
$badgeMapRows.empty();
|
|
}
|
|
}
|
|
|
|
function removeDataAttributes($element)
|
|
{
|
|
$.each($element.data(), function(key) {
|
|
var attr = 'data-' + key.replace(/([A-Z])/g, '-$1').toLowerCase();
|
|
$element.removeAttr(attr);
|
|
});
|
|
|
|
$element.removeData();
|
|
}
|
|
|
|
function submitCategoryFieldsValues($element)
|
|
{
|
|
var xAllegroCategoryId = (parseInt($('#id_xallegro_category').val()) || 0);
|
|
if (!xAllegroCategoryId) {
|
|
return;
|
|
}
|
|
|
|
isProcessingCategoryFieldsValues = true;
|
|
|
|
var formData = new FormData();
|
|
formData.append('ajax', 1);
|
|
formData.append('token', self.ajaxToken);
|
|
formData.append('action', 'submitCategoryFieldsValues');
|
|
formData.append('id_xallegro_category', xAllegroCategoryId);
|
|
|
|
$element.closest('form')
|
|
.serializeArray()
|
|
.filter(function(element) {
|
|
return new RegExp(/category(_ambiguous)?_fields/).test(element.name.toLowerCase());
|
|
})
|
|
.map(function(element) {
|
|
formData.append(element.name, element.value);
|
|
});
|
|
|
|
$.ajax({
|
|
url: self.ajaxUrl,
|
|
method: 'POST',
|
|
dataType: 'json',
|
|
data: formData,
|
|
contentType: false,
|
|
processData: false,
|
|
cache: false,
|
|
success: function(json) {
|
|
if (json.success) {
|
|
showSuccessMessage(json.message);
|
|
} else {
|
|
showErrorMessage(json.message);
|
|
}
|
|
|
|
isProcessingCategoryFieldsValues = false;
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
categoryParametersForm: function($container, reload)
|
|
{
|
|
$container.find('.category-field-group.is-multiple-value').each(function(index, element) {
|
|
if ($(element).find('.multiple-values-group:not(.hide)').length > 1) {
|
|
$(element).find('.multiple-values-delete').show();
|
|
}
|
|
|
|
var $showButton = $(element).find('.multiple-values-show');
|
|
if (!$(element).find('.multiple-values-group.hide').length) {
|
|
$showButton.hide();
|
|
} else {
|
|
$showButton.show();
|
|
}
|
|
});
|
|
|
|
if (typeof reload !== 'undefined' && reload) {
|
|
return;
|
|
}
|
|
|
|
$container.on('click', '.multiple-values-delete', function(e) {
|
|
e.preventDefault();
|
|
|
|
var $formGroup = $(this).closest('.form-group');
|
|
var thisId = $(this).closest('div').find('input.category-field').attr('id');
|
|
var values = [];
|
|
var shownLength;
|
|
|
|
$formGroup.find('.multiple-values-group:not(.hide)').each(function(index, element) {
|
|
var $input = $(element).find('input.category-field');
|
|
if ($input.attr('id') != thisId) {
|
|
values.push($input.val());
|
|
}
|
|
|
|
$input.val('').trigger('input');
|
|
});
|
|
|
|
shownLength = $formGroup.find('.multiple-values-group:not(.hide)').length;
|
|
$formGroup.find('.multiple-values-group:not(.hide)').eq(shownLength -1).addClass('hide')
|
|
.find('.category-field-text-counter').addClass('hide');
|
|
|
|
$formGroup.find('.multiple-values-group:not(.hide)').each(function(index, element) {
|
|
$(element).find('input.category-field').val(values[index]).trigger('input');
|
|
});
|
|
|
|
shownLength = $formGroup.find('.multiple-values-group:not(.hide)').length;
|
|
var $lastShownCounter = $formGroup.find('.multiple-values-group:not(.hide)').eq(shownLength -1).find('.category-field-text-counter');
|
|
if ($lastShownCounter.hasClass('hide')) {
|
|
$lastShownCounter.removeClass('hide').addClass('hidefix');
|
|
}
|
|
|
|
if ($formGroup.find('.multiple-values-group.hide').length) {
|
|
$formGroup.find('.multiple-values-show').show();
|
|
}
|
|
|
|
var $fieldDeleteButton = $formGroup.find('.multiple-values-delete');
|
|
if ($formGroup.find('.multiple-values-group:not(.hide)').length > 1) {
|
|
$fieldDeleteButton.show();
|
|
} else {
|
|
$fieldDeleteButton.hide();
|
|
}
|
|
|
|
$(this).closest('div').find('input.category-field').trigger('focusout');
|
|
});
|
|
|
|
$container.on('click', '.multiple-values-show', function(e) {
|
|
e.preventDefault();
|
|
|
|
var $formGroup = $(this).closest('.form-group');
|
|
var $field = $formGroup.find('.multiple-values-group.hide').eq(0);
|
|
var $fieldCounter = $field.find('.category-field-text-counter');
|
|
var $previousCounter = $fieldCounter.closest('div').prev().find('.category-field-text-counter');
|
|
|
|
$field.removeClass('hide');
|
|
|
|
if ($formGroup.find('.multiple-values-group.hide').length < 1) {
|
|
$(this).hide();
|
|
} else {
|
|
$fieldCounter.removeClass('hide').addClass('hidefix');
|
|
}
|
|
|
|
if ($previousCounter.hasClass('hidefix')) {
|
|
$previousCounter.removeClass('hidefix').addClass('hide');
|
|
}
|
|
|
|
var $fieldDeleteButton = $formGroup.find('.multiple-values-delete');
|
|
if ($formGroup.find('.multiple-values-group:not(.hide)').length > 1) {
|
|
$fieldDeleteButton.show();
|
|
} else {
|
|
$fieldDeleteButton.hide();
|
|
}
|
|
});
|
|
|
|
$container.on('input', '.category-field-text input.category-field', function () {
|
|
var $counter = $(this).closest('div').find('.category-field-text-counter');
|
|
if (!$counter.length) {
|
|
return;
|
|
}
|
|
|
|
var length = $(this).val().length
|
|
$counter.find('.counter').text(length);
|
|
|
|
if (length > 0) {
|
|
$counter.removeClass('hide hidefix');
|
|
}
|
|
});
|
|
},
|
|
|
|
pasForm: function()
|
|
{
|
|
var self = this;
|
|
$('#country_code').chosen();
|
|
this._countryCodeSwitch($('#country_code'));
|
|
|
|
$('#country_code').on('change', function () {
|
|
self._countryCodeSwitch($(this));
|
|
});
|
|
},
|
|
|
|
pasShippingRatesForm: function()
|
|
{
|
|
this._shipmentsSwitch($('[data-cast=switch]'));
|
|
},
|
|
|
|
templateForm: function()
|
|
{
|
|
tinymce.init(initTinyMceLite);
|
|
|
|
$('#new_content').gridEditor({
|
|
content_types: ['tinymce'],
|
|
source_textarea: $('#new_content_textarea'),
|
|
tinymce: {
|
|
config: initTinyMceLite
|
|
}
|
|
});
|
|
|
|
// fix PS theme
|
|
$('.ge-html-output').hide();
|
|
|
|
$('#xallegro_template_form').on('submit', function() {
|
|
$('#new_content_textarea').html($('#new_content').gridEditor('getHtml'));
|
|
return true;
|
|
});
|
|
},
|
|
|
|
carriersForm: function()
|
|
{
|
|
$('#xallegro_carrier_form').find('select').chosen();
|
|
|
|
$('select.allegro-operator-select').each(function(i, el) {
|
|
toogleOperatorInput($(el));
|
|
});
|
|
|
|
$('select.allegro-operator-select').on('change', function() {
|
|
toogleOperatorInput($(this));
|
|
});
|
|
|
|
function toogleOperatorInput(select)
|
|
{
|
|
if (select.val() == 'OTHER') {
|
|
select.parent().find('.allegro-operator-other').show();
|
|
} else {
|
|
select.parent().find('.allegro-operator-other').hide();
|
|
}
|
|
}
|
|
},
|
|
|
|
configurationForm: function()
|
|
{
|
|
var self = this;
|
|
var $modalSynchronization = $('#xallegro_offer_full_synchronization_modal');
|
|
|
|
// fix configuration col width
|
|
self._configurationWiderColsFix($('#xallegro_configuration_form'));
|
|
|
|
// handle dependencies
|
|
self._configurationDependencies();
|
|
|
|
// format numbers by class
|
|
$('input.xcast').each(cast).on('focusout change', cast);
|
|
|
|
// individual account settings button
|
|
$('.mark-as-account-option').parents('div[class*="col-"]').prepend(
|
|
'<div class="account-setting-indicator">' +
|
|
'<a title="Ustawienie można konfigurować indywidualnie dla każdego konta Allegro" href="#xallegro_configuration_fieldset_advanced_settings">' +
|
|
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"/></svg>' +
|
|
'</a>' +
|
|
'</div>'
|
|
);
|
|
|
|
$(document).on('click', '.js-x13-multiselect-disable-all', function(e) {
|
|
e.preventDefault();
|
|
|
|
$(this).parent().find('select[multiple]').each(function() {
|
|
$(this).find('option').prop('selected', false);
|
|
});
|
|
});
|
|
|
|
$(document).on('change', '.productization-search-checkbox', function() {
|
|
var $select = $(this).closest('tr').find('.productization-search-select');
|
|
if ($(this).prop('checked')) {
|
|
$select.removeAttr('disabled');
|
|
} else {
|
|
$select.prop('disabled', 'disabled');
|
|
}
|
|
});
|
|
|
|
$(document).on('change', 'input[id^="REGISTER_CUSTOMER_GROUP_"]', function () {
|
|
var $groupDefault = $('#REGISTER_CUSTOMER_GROUP_DEFAULT');
|
|
var selectedValue = $groupDefault.val();
|
|
|
|
$('#conf_id_REGISTER_CUSTOMER_GROUP').find('input').each(function (index, element) {
|
|
var $option = $groupDefault.find('option[value="' + $(element).val() + '"]');
|
|
|
|
if ($(element).is(':checked')) {
|
|
$option.show();
|
|
|
|
if (!selectedValue) {
|
|
$groupDefault.val(findFirstSelectedOptionValue());
|
|
}
|
|
} else {
|
|
$option.hide();
|
|
|
|
if ($(element).val() == selectedValue) {
|
|
$groupDefault.val(findFirstSelectedOptionValue());
|
|
}
|
|
}
|
|
});
|
|
|
|
function findFirstSelectedOptionValue()
|
|
{
|
|
var $firstSelectedOption = $('#conf_id_REGISTER_CUSTOMER_GROUP').find('input:checked:first');
|
|
|
|
if ($firstSelectedOption.length) {
|
|
return $firstSelectedOption.val()
|
|
}
|
|
|
|
return null;
|
|
}
|
|
});
|
|
$('input[id^="REGISTER_CUSTOMER_GROUP_"]').trigger('change');
|
|
|
|
$(document).on('click', '#syncAllAuctions', function(e) {
|
|
e.preventDefault();
|
|
$modalSynchronization.modal('show');
|
|
});
|
|
|
|
$modalSynchronization.on('click', 'button[name="startOfferFullSynchronization"]', function(e) {
|
|
e.preventDefault();
|
|
|
|
$modalSynchronization.find('.alert').hide();
|
|
$modalSynchronization.find('button.close').hide();
|
|
$modalSynchronization.find('button[name="closeOfferFullSynchronization"]').hide();
|
|
$modalSynchronization.find('button[name="startOfferFullSynchronization"]').hide();
|
|
|
|
self.offerFullSynchronization($modalSynchronization);
|
|
});
|
|
},
|
|
|
|
logList: function()
|
|
{
|
|
var self = this;
|
|
var $modalLogDetails = $('#log_details_modal');
|
|
|
|
checkUnread();
|
|
|
|
$(window).on('scroll', function () {
|
|
checkUnread();
|
|
});
|
|
|
|
$(document).on('click', '#markAllLogsAsRead', function() {
|
|
self.ajaxPOST({
|
|
action: 'markAsRead'
|
|
}, null, function() {
|
|
window.location.reload();
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '[x-name="log_details"]', function(e) {
|
|
e.preventDefault();
|
|
|
|
var logId = $(this).data('id');
|
|
|
|
self.ajaxPOST({
|
|
action: 'getLogDetails',
|
|
logId: logId
|
|
}, null, function(json) {
|
|
$modalLogDetails.find('.modal-body').html(json.html);
|
|
$modalLogDetails.modal('show');
|
|
});
|
|
});
|
|
|
|
function checkUnread()
|
|
{
|
|
var ids = [];
|
|
|
|
$('[x-name="log_details"][data-displayed="0"]').each(function(index, element) {
|
|
if (isInViewport($(element).closest('tr'))) {
|
|
$(element).data('displayed', 1).attr('data-displayed', 1);
|
|
ids.push($(element).data('id'));
|
|
}
|
|
});
|
|
|
|
if (ids.length) {
|
|
self.ajaxPOST({
|
|
action: 'markAsRead',
|
|
logId: ids
|
|
});
|
|
}
|
|
}
|
|
|
|
function isInViewport($el)
|
|
{
|
|
var elementTop = $el.offset().top;
|
|
var elementBottom = elementTop + $el.outerHeight();
|
|
var viewportTop = $(window).scrollTop() + $('#header_infos').outerHeight() + $('#content .page-head').outerHeight();
|
|
var viewportBottom = viewportTop + $(window).height();
|
|
|
|
return elementBottom > viewportTop && elementTop < viewportBottom;
|
|
}
|
|
},
|
|
|
|
productsExtra: function(productId, images_max, descriptions_max)
|
|
{
|
|
var self = this;
|
|
var changesInAccount = false;
|
|
var imageAdditionalAutoIncrement = 0;
|
|
var descriptionAdditionalAutoIncrement = 0;
|
|
|
|
$('#xallegro_images_additional .form-group').each(function() {
|
|
imageAdditionalAutoIncrement++;
|
|
});
|
|
|
|
$('#xallegro_description_additional .form-group').each(function(index, element) {
|
|
if (!$(element).hasClass('hidden')) {
|
|
initMCEDescriptionAdditional($(element).find('textarea').attr('id'));
|
|
}
|
|
|
|
descriptionAdditionalAutoIncrement++;
|
|
});
|
|
|
|
$(document).on('click', 'button[name="submitAddProductXAllegro"]', function(e) {
|
|
e.preventDefault();
|
|
self.productsExtraBeforeSave();
|
|
|
|
$('#xallegro_description_additional .form-group:not(.hidden) textarea').each(function (index, element) {
|
|
var $textarea = $('textarea#' + $(element).attr('id'));
|
|
var mce = tinyMCE.get($(element).attr('id'));
|
|
|
|
if (mce) {
|
|
$textarea.html(mce.getContent());
|
|
}
|
|
|
|
var content = $textarea.val().trim();
|
|
if (content == '') {
|
|
$textarea.closest('.form-group').find('.xallegro-description-additional-delete').trigger('click');
|
|
}
|
|
});
|
|
|
|
$.ajax({
|
|
url: self.ajaxUrl + '&token=' + self.ajaxToken + '&ajax=1&action=saveProduct&productId=' + productId,
|
|
type: 'POST',
|
|
data: new FormData($('#module_x13allegro').closest('form')[0]),
|
|
contentType: false,
|
|
processData: false,
|
|
cache: false,
|
|
success: function (data) {
|
|
data = $.parseJSON(data);
|
|
|
|
if (data.result) {
|
|
showSuccessMessage(data.message);
|
|
} else {
|
|
$.each(data.message, function(index, message) {
|
|
showErrorMessage(message);
|
|
});
|
|
}
|
|
|
|
self.productsExtraAfterSave();
|
|
}
|
|
});
|
|
|
|
changesInAccount = false;
|
|
});
|
|
|
|
$(document).on('click', '#xallegro_show_title_pattens', function(e) {
|
|
e.preventDefault();
|
|
|
|
$(this).hide();
|
|
$('#xallegro_title_patterns').show();
|
|
});
|
|
|
|
$(document).on('input', '[name="xallegro_auction_title"]', function() {
|
|
if ($(this).prop('value').indexOf('{') != '-1' || $(this).prop('value').indexOf('}') != '-1') {
|
|
$('#xallegro_title_count').hide();
|
|
}
|
|
else {
|
|
var count = self._titleCount($(this).prop('value'));
|
|
var $counter = $(this).parents('.form-group').find('.xallegro_title_counter');
|
|
|
|
$('#xallegro_title_count').show();
|
|
$counter.html(count);
|
|
|
|
if (count > self.titleMaxCount) {
|
|
$counter.parent().addClass('badge badge-danger');
|
|
} else {
|
|
$counter.parent().removeClass('badge badge-danger');
|
|
}
|
|
}
|
|
});
|
|
|
|
$(document).on('change', '[name="xallegro_product_custom_account"]', function() {
|
|
if (changesInAccount) {
|
|
if (confirm(XAllegroCustomProductConfirmChangeAccount)) {
|
|
changesInAccount = false;
|
|
changeAccount(productId, $(this).val());
|
|
} else {
|
|
$(this).val($('input[name="xallegro_product_custom_account_current"]').val());
|
|
return false;
|
|
}
|
|
} else {
|
|
changeAccount(productId, $(this).val());
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '#xallegro_custom_prices_delete', function(e) {
|
|
e.preventDefault();
|
|
|
|
if (confirm(XAllegroCustomProductConfirmPriceDelete)) {
|
|
self.ajaxPOST({
|
|
action: 'deleteCustomPrices',
|
|
productId: productId
|
|
}, null, function(json) {
|
|
changeAccount(productId, $('input[name="xallegro_product_custom_account_current"]').val());
|
|
|
|
if (json.result) {
|
|
showSuccessMessage(json.message);
|
|
}
|
|
});
|
|
|
|
changesInAccount = true;
|
|
}
|
|
});
|
|
|
|
$(document).on('change', '[name="xallegro_auction_title"], [name="xallegro_sync_quantity_allegro"], [name="xallegro_auto_renew"], [name="xallegro_sync_price"], .with-combinations, .wo-combinations', function() {
|
|
changesInAccount = true;
|
|
});
|
|
|
|
$(document).on('click', '.with-combinations[readonly]', function (e) {
|
|
if (confirm(XAllegroCustomProductConfirmChangePrice)) {
|
|
$(document).find('.with-combinations').removeAttr('readonly');
|
|
$(document).find('.wo-combinations').attr('readonly', true);
|
|
changesInAccount = true;
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.wo-combinations[readonly]', function (e) {
|
|
if (confirm(XAllegroCustomProductConfirmChangePriceFlat)) {
|
|
$(document).find('.with-combinations').attr('readonly', true);
|
|
$(document).find('.wo-combinations').removeAttr('readonly');
|
|
changesInAccount = true;
|
|
}
|
|
});
|
|
|
|
$(document).on('change', 'select.allegro-price-method', function() {
|
|
var $input = $(this).parents('tr').find('input.allegro-price-input');
|
|
|
|
if ($(this).val() == 'price') {
|
|
$input.data('cast-unsigned', false);
|
|
} else {
|
|
$input.data('cast-unsigned', true);
|
|
}
|
|
|
|
$input.trigger('change');
|
|
});
|
|
|
|
$(document).on('click', '.xallegro-image-additional-delete', function(e) {
|
|
e.preventDefault();
|
|
var $button = $(this);
|
|
|
|
self.ajaxPOST({
|
|
'action': 'deleteAdditionalImage',
|
|
'productId': productId,
|
|
'imageName': $button.data('name')
|
|
}, null, function(json) {
|
|
if (json.result) {
|
|
showSuccessMessage(json.message);
|
|
$('#xallegro_images_additional').html(json.html);
|
|
} else {
|
|
$.each(json.message, function(index, message) {
|
|
showErrorMessage(message);
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '.xallegro-image-additional-update', function(e) {
|
|
e.preventDefault();
|
|
|
|
$('input[name="xallegro_image_additional"]').data('update', $(this).data('name')).trigger('click');
|
|
});
|
|
|
|
$(document).on('click', '.addXAllegroImageAdditional', function(e) {
|
|
e.preventDefault();
|
|
|
|
var count = $('#xallegro_images_additional .form-group').length;
|
|
if (count >= images_max) {
|
|
return alert('Możesz dodać maksymalnie ' + images_max + ' dodatkowych zdjęć.');
|
|
}
|
|
|
|
$('input[name="xallegro_image_additional"]').trigger('click');
|
|
});
|
|
|
|
$('input[name="xallegro_image_additional"]').on('change', function() {
|
|
var $input = $(this);
|
|
var $button = $('.addXAllegroImageAdditional');
|
|
var $buttonSave = $('[name="submitAddProductXAllegro"]');
|
|
var file = $(this)[0].files[0];
|
|
var formData = new FormData();
|
|
|
|
formData.append('ajax', 1);
|
|
formData.append('token', self.ajaxToken);
|
|
formData.append('productId', productId);
|
|
formData.append('action', 'uploadAdditionalImage');
|
|
formData.append('imageAdditional', file, file.name);
|
|
|
|
if ($(this).data('update')) {
|
|
formData.append('imageAdditionalUpdate', $(this).data('update'));
|
|
$(this).removeData('update').removeAttr('data-update');
|
|
}
|
|
|
|
$button.attr('disabled', 'disabled');
|
|
$buttonSave.attr('disabled', 'disabled');
|
|
|
|
$.ajax({
|
|
url: self.ajaxUrl,
|
|
method: 'POST',
|
|
data: formData,
|
|
async: true,
|
|
cache: false,
|
|
contentType: false,
|
|
processData: false,
|
|
xhr: function() {
|
|
return $.ajaxSettings.xhr();
|
|
},
|
|
success: function (json) {
|
|
json = JSON.parse(json);
|
|
|
|
if (json.result) {
|
|
showSuccessMessage(json.message);
|
|
$('#xallegro_images_additional').html(json.html);
|
|
} else {
|
|
$.each(json.message, function(index, message) {
|
|
showErrorMessage(message);
|
|
});
|
|
}
|
|
|
|
// clear file input
|
|
$input.wrap('<form>').closest('form').get(0).reset();
|
|
$input.unwrap();
|
|
|
|
$button.removeAttr('disabled');
|
|
$buttonSave.removeAttr('disabled');
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#xallegro_description_additional').sortable({
|
|
handle: '.xallegro-description-additional-move',
|
|
helper: 'clone',
|
|
start: function(e, ui) {
|
|
ui.placeholder.css({height: ui.item.outerHeight()});
|
|
},
|
|
stop: function (e, ui) {
|
|
$(ui.item).find('textarea').each(function () {
|
|
tinymce.execCommand('mceRemoveEditor', false, $(this).attr('id'));
|
|
tinymce.execCommand('mceAddEditor', true, $(this).attr('id'));
|
|
});
|
|
|
|
recalculateDescriptionAdditionalTagName();
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.xallegro-description-additional-delete', function(e) {
|
|
e.preventDefault();
|
|
|
|
$(this).closest('.form-group').remove();
|
|
$('#xallegro_description_additional').sortable('refresh');
|
|
recalculateDescriptionAdditionalTagName();
|
|
});
|
|
|
|
$(document).on('click', '.addXAllegroDescriptionAdditional', function(e) {
|
|
e.preventDefault();
|
|
|
|
var count = $('#xallegro_description_additional .form-group').length;
|
|
if (count >= descriptions_max) {
|
|
return alert('Możesz dodać maksymalnie ' + descriptions_max + ' dodatkowych opisów.');
|
|
}
|
|
|
|
var $lastRow = $('#xallegro_description_additional .form-group').last();
|
|
if ($lastRow.hasClass('hidden')) {
|
|
$lastRow.removeClass('hidden').show();
|
|
initMCEDescriptionAdditional($lastRow.find('textarea').attr('id'));
|
|
return;
|
|
}
|
|
|
|
var $newRow = $lastRow.clone();
|
|
var $newTextarea = $('<textarea></textarea>')
|
|
.attr('id', 'xallegro_description_additional_' + descriptionAdditionalAutoIncrement)
|
|
.attr('name', 'xallegro_description_additional[]')
|
|
.attr('class', 'textarea-autosize xallegro_description_additional_' + descriptionAdditionalAutoIncrement);
|
|
|
|
$newRow.find('.xallegro-description-additional-wrapper label').attr('for', 'xallegro_description_additional_' + descriptionAdditionalAutoIncrement);
|
|
$newRow.find('.xallegro-description-additional-inner').empty().append($newTextarea);
|
|
$('#xallegro_description_additional').append($newRow).sortable('refresh');
|
|
|
|
recalculateDescriptionAdditionalTagName();
|
|
initMCEDescriptionAdditional($newRow.find('textarea').attr('id'));
|
|
descriptionAdditionalAutoIncrement++;
|
|
});
|
|
|
|
function recalculateDescriptionAdditionalTagName()
|
|
{
|
|
$('#xallegro_description_additional .form-group').each(function (index, element) {
|
|
$(element).find('.xallegro-description-additional-tag').text('{product_description_additional_' + (index + 1) + '}');
|
|
});
|
|
}
|
|
|
|
function initMCEDescriptionAdditional(selector)
|
|
{
|
|
tinySetup($.extend({
|
|
editor_selector: selector
|
|
}, initTinyMceLite));
|
|
}
|
|
|
|
function changeAccount(productId, accountId)
|
|
{
|
|
self.ajaxPOST({
|
|
action: 'changeAccount',
|
|
accountId: accountId,
|
|
productId: productId
|
|
}, null, function(json) {
|
|
$('input[name="xallegro_product_custom_account_current"]').val(accountId);
|
|
$('#xallegro_product_custom_form').html(json.html);
|
|
self._cast();
|
|
});
|
|
}
|
|
},
|
|
|
|
productsExtraAfterSave: function()
|
|
{
|
|
$(document).find('[name*="xallegro_custom_price"][disabled]').removeAttr('disabled').attr('readonly', true);
|
|
},
|
|
|
|
productsExtraBeforeSave: function()
|
|
{
|
|
$(document).find('[name*="xallegro_custom_price"][readonly]').removeAttr('readonly').attr('disabled', true);
|
|
},
|
|
|
|
tagManager: function(container, map_type, tags_auction_limit)
|
|
{
|
|
// convert DOM to jQuery object
|
|
container = $(container);
|
|
var self = this;
|
|
|
|
changeTagsTable(container.find('#xallegro_tags_account').val());
|
|
limitTags(container.find('#xallegro_tags_account').val());
|
|
|
|
$(document).on('change', '#xallegro_tags_account', function() {
|
|
changeTagsTable($(this).val());
|
|
limitTags($(this).val());
|
|
});
|
|
|
|
$(document).on('click', '.xallegro-tag-edit', function(e) {
|
|
e.preventDefault();
|
|
var tr = $(this).parents('tr');
|
|
|
|
var inputHtml = '<input type="text" name="xallegro_tag_input[' + $(this).data('tag-id') + ']" value="' + $(this).data('tag-name') + '" class="xallegro-tag-input fixed-width-xxl pull-left form-control">';
|
|
|
|
if ($(this).hasClass('xactive')) {
|
|
tr.find('.xallegro-tag-view').show();
|
|
tr.find('.xallegro-tag-input').hide();
|
|
tr.find('.xallegro-tag-save').hide();
|
|
tr.find('.xallegro-tag-input').val(tr.find('.xallegro-tag-view').text());
|
|
$(this).removeClass('xactive');
|
|
|
|
return false;
|
|
}
|
|
|
|
container.find('.xallegro-tag-view').show();
|
|
container.find('.xallegro-tag-input').hide();
|
|
container.find('.xallegro-tag-save').hide();
|
|
|
|
tr.find('.xallegro-tag-view').hide();
|
|
tr.find('.xallegro-tag-input').show();
|
|
tr.find('.xallegro-tag-save').show();
|
|
$(this).addClass('xactive');
|
|
|
|
if (!tr.find('.form-inline .xallegro-tag-input').length) {
|
|
tr.find('.form-inline span').after(inputHtml);
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.xallegro-tag-delete', function(e) {
|
|
e.preventDefault();
|
|
var tr = $(this).parents('tr');
|
|
var id = tr.parents('table').data('id');
|
|
|
|
self.ajaxPOST({
|
|
action: 'tagDelete',
|
|
id_xallegro_account: id,
|
|
tagId: tr.data('id')
|
|
|
|
}, null, function(data) {
|
|
if (data.result) {
|
|
tr.remove();
|
|
limitTags(id);
|
|
showSuccessMessage(data.message);
|
|
|
|
// @fixme
|
|
if (map_type == 'auction') {
|
|
XAllegro.refreshTags(true);
|
|
}
|
|
}
|
|
else {
|
|
showErrorMessage(data.message);
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '.xallegro-tag-save', function(e) {
|
|
e.preventDefault();
|
|
var tr = $(this).parents('tr');
|
|
|
|
self.ajaxPOST({
|
|
action: 'tagSave',
|
|
id_xallegro_account: tr.parents('table').data('id'),
|
|
tagId: tr.data('id'),
|
|
tagName: tr.find('.xallegro-tag-input').val()
|
|
|
|
}, null, function(data) {
|
|
if (data.result) {
|
|
tr.find('.xallegro-tag-view').text(tr.find('.xallegro-tag-input').val()).show();
|
|
tr.find('.xallegro-tag-input').hide();
|
|
tr.find('.xallegro-tag-save').hide();
|
|
|
|
showSuccessMessage(data.message);
|
|
|
|
// @fixme
|
|
if (map_type == 'auction') {
|
|
XAllegro.refreshTags(true);
|
|
}
|
|
}
|
|
else {
|
|
showErrorMessage(data.message);
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '.xallegro-tag-new', function(e) {
|
|
e.preventDefault();
|
|
var id = container.find('#xallegro_tags_account').val();
|
|
var map_id = null;
|
|
|
|
switch (map_type) {
|
|
case 'product':
|
|
map_id = (self.presta17 ? $('input[name="form[id_product]"]').val() : $('input[name="id_product"]').val());
|
|
break;
|
|
|
|
case 'category':
|
|
map_id = $('input[name="id_xallegro_category"]').val();
|
|
break;
|
|
|
|
case 'manufacturer':
|
|
map_id = $('input[name="id_xallegro_manufacturer"]').val();
|
|
break;
|
|
|
|
case 'auction':
|
|
map_id = parseInt($('#allegro_category_current').val(), 10);
|
|
break;
|
|
|
|
default:
|
|
return;
|
|
}
|
|
|
|
self.ajaxPOST({
|
|
action: 'tagNew',
|
|
id_xallegro_account: id,
|
|
tagMapId: map_id,
|
|
tagMapType: map_type,
|
|
tagName: container.find('#xallegro_tag_new').val()
|
|
|
|
}, null, function(data) {
|
|
if (data.result) {
|
|
container.find('#xallegro_tag_new').val('');
|
|
container.find('table[data-id="' + id + '"]').html(data.html);
|
|
limitTags(id);
|
|
|
|
showSuccessMessage(data.message);
|
|
|
|
// @fixme
|
|
if (map_type == 'auction') {
|
|
XAllegro.refreshTags(true);
|
|
}
|
|
}
|
|
else {
|
|
showErrorMessage(data.message);
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('change', '.xallegro-tag-map', function() {
|
|
limitTags($(this).parents('table').data('id'));
|
|
});
|
|
|
|
function changeTagsTable(id)
|
|
{
|
|
if (!id) {
|
|
return;
|
|
}
|
|
|
|
container.find('.xallegro-tags-table').hide();
|
|
container.find('.xallegro-tags-table[data-id="' + id + '"]').parent().addClass('scroll-tags-table');
|
|
container.find('.xallegro-tags-table[data-id="' + id + '"]').show();
|
|
}
|
|
|
|
function limitTags(id)
|
|
{
|
|
var table = container.find('.xallegro-tags-table[data-id="' + id + '"]');
|
|
var checked = table.find('.xallegro-tag-map:checked').length;
|
|
|
|
if (checked >= tags_auction_limit) {
|
|
table.find('.xallegro-tag-map:not(:checked)').prop('disabled', 'disabled');
|
|
} else {
|
|
table.find('.xallegro-tag-map').removeAttr('disabled');
|
|
}
|
|
}
|
|
},
|
|
|
|
tagManagerRefresh: function()
|
|
{
|
|
$('#xallegro_tags_account').trigger('change');
|
|
},
|
|
|
|
orderShipping: function()
|
|
{
|
|
var self = this;
|
|
|
|
$(document).on('click', '.xallegro-shipping-edit', function (e) {
|
|
e.preventDefault();
|
|
|
|
var $modal = $('#xallegro_order_shipping_edit_modal_' + $(this).data('id-carrier'));
|
|
var $select = $modal.find('select[name="xallegro_shipping_carrier"]');
|
|
|
|
$select.trigger('change');
|
|
|
|
if (self.isModernLayout) {
|
|
$select.select2();
|
|
} else {
|
|
$select.chosen({width: '250px'});
|
|
}
|
|
|
|
$modal.modal('show');
|
|
});
|
|
|
|
$(document).on('change', 'select[name="xallegro_shipping_carrier"]', function () {
|
|
if ($(this).val() == 'OTHER') {
|
|
$(this).parents('form').find('input[name="xallegro_shipping_carrier_name"]').parents('.form-group').show();
|
|
} else {
|
|
$(this).parents('form').find('input[name="xallegro_shipping_carrier_name"]').parents('.form-group').hide();
|
|
}
|
|
});
|
|
|
|
$('button[name="saveShippingInfo"]').on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
var form = $(this).parents('form');
|
|
|
|
self.ajaxPOST({
|
|
action: 'saveShippingInfo',
|
|
id_order: form.find('input#xallegro_id_order').val(),
|
|
id_order_carrier: form.find('input#xallegro_id_order_carrier').val(),
|
|
operatorId: form.find('select[name="xallegro_shipping_carrier"]').val(),
|
|
operatorName: form.find('input[name="xallegro_shipping_carrier_name"]').val()
|
|
|
|
}, null, function (data) {
|
|
if (data.result) {
|
|
window.location.replace(data.redirect);
|
|
}
|
|
else {
|
|
showErrorMessage(data.message);
|
|
}
|
|
});
|
|
});
|
|
|
|
$('.xallegro-sync-shipping').parents('a').on('click', function (e) {
|
|
e.preventDefault();
|
|
self.syncShippingNumbers(-1, 0, [], []);
|
|
});
|
|
|
|
$(document).on('click', '#new_shipping_info_close', function (e) {
|
|
e.preventDefault();
|
|
$('#new_shipping_info').hide();
|
|
|
|
self.ajaxPOST({action: 'hideShippingInfo'});
|
|
});
|
|
},
|
|
|
|
orderFulfillmentStatus: function()
|
|
{
|
|
var self = this;
|
|
|
|
$('a.xallegro-fulfillment-status').on('click', function(e) {
|
|
e.preventDefault();
|
|
|
|
var button = $(this);
|
|
var orderId = button.attr('data-orderId');
|
|
var statusFulfillment = $('select[name="xallegro_fulfillment_status"] option:selected').val();
|
|
|
|
self.ajaxPOST({
|
|
action: 'sendFulfilmentStatus',
|
|
orderId: orderId,
|
|
statusFulfillment: statusFulfillment
|
|
}, function() {
|
|
button.addClass('disabled').attr('disabled', true);
|
|
}, function(json) {
|
|
if (json.status) {
|
|
window.location.replace(json.redirectLink);
|
|
} else {
|
|
button.removeClass('disabled').removeAttr('disabled', true);
|
|
showErrorMessage(json.message);
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
orderInvoice: function()
|
|
{
|
|
var self = this;
|
|
var $modalOrderInvoice = $('#xallegro_order_invoice_modal');
|
|
|
|
$(document).on('click', '#xallegro_order_invoice_add', function (e) {
|
|
e.preventDefault();
|
|
|
|
$modalOrderInvoice.modal('show');
|
|
});
|
|
|
|
$(document).on('change', 'select[name="xallegro_order_invoice_type"]', function () {
|
|
var $invoiceFile = $modalOrderInvoice.find('#xallegro_order_invoice_type_file');
|
|
var $invoicePS = $modalOrderInvoice.find('#xallegro_order_invoice_type_prestashop');
|
|
var $buttonSubmit = $modalOrderInvoice.find('#xallegro_order_invoice_submit');
|
|
|
|
if ($(this).val() === 'file') {
|
|
$invoicePS.hide();
|
|
$invoiceFile.show();
|
|
$buttonSubmit.removeAttr('disabled');
|
|
} else {
|
|
$invoiceFile.hide();
|
|
$invoicePS.show();
|
|
|
|
if (!parseInt($invoicePS.data('order-has-invoice'))) {
|
|
$buttonSubmit.prop('disabled', true);
|
|
} else {
|
|
$buttonSubmit.removeAttr('disabled');
|
|
}
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '#xallegro_order_invoice_file_button', function (e) {
|
|
e.preventDefault();
|
|
|
|
$('[name="xallegro_order_invoice_file"]').trigger('click');
|
|
});
|
|
|
|
$(document).on('change', 'input[name="xallegro_order_invoice_file"]', function () {
|
|
var fileName = $(this).val();
|
|
fileName = fileName.match(/[^\\/]*$/)[0];
|
|
|
|
if (fileName.length) {
|
|
$('#xallegro_order_invoice_file_desc').text(fileName);
|
|
} else {
|
|
$('#xallegro_order_invoice_file_desc').empty();
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '#xallegro_order_invoice_submit', function (e) {
|
|
e.preventDefault();
|
|
|
|
var $buttonSubmit = $(this);
|
|
var $buttonCancel = $('#xallegro_order_invoice_cancel');
|
|
var $buttonModalCancel = $modalOrderInvoice.find('.x13allegro-modal-close');
|
|
var $alert = $modalOrderInvoice.find('.xallegro-order-invoice-error');
|
|
var $typeSelector = $('select[name="xallegro_order_invoice_type"]');
|
|
var $fileButton = $('#xallegro_order_invoice_file_button');
|
|
var $fileInput = $('input[name="xallegro_order_invoice_file"]');
|
|
var $invoiceNumberInput = $('input[name="xallegro_order_invoice_number"]');
|
|
var invoiceFile = $fileInput[0].files[0];
|
|
|
|
var formData = new FormData();
|
|
formData.append('ajax', '1');
|
|
formData.append('token', self.ajaxToken);
|
|
formData.append('action', 'uploadInvoiceFile');
|
|
formData.append('orderId', $buttonSubmit.data('order-id'));
|
|
formData.append('invoiceType', $typeSelector.val());
|
|
|
|
if ($typeSelector.val() === 'file' && typeof invoiceFile !== 'undefined') {
|
|
formData.append('invoiceFile', invoiceFile, invoiceFile.name);
|
|
formData.append('invoiceNumber', $invoiceNumberInput.val());
|
|
}
|
|
|
|
$buttonModalCancel.hide();
|
|
$buttonCancel.prop('disabled', true);
|
|
$buttonSubmit.prop('disabled', true);
|
|
$typeSelector.prop('disabled', true);
|
|
$fileButton.prop('disabled', true);
|
|
$invoiceNumberInput.prop('disabled', true);
|
|
$alert.empty().hide();
|
|
|
|
$.ajax({
|
|
url: self.ajaxUrl,
|
|
method: 'POST',
|
|
contentType: false,
|
|
processData: false,
|
|
data: formData,
|
|
dataType: 'json',
|
|
success: function(json) {
|
|
if (json.result) {
|
|
window.location.replace(json.redirectLink);
|
|
}
|
|
else {
|
|
$alert.text(json.message).show();
|
|
|
|
$buttonModalCancel.show();
|
|
$buttonCancel.removeAttr('disabled');
|
|
$buttonSubmit.removeAttr('disabled');
|
|
$typeSelector.removeAttr('disabled');
|
|
$fileButton.removeAttr('disabled');
|
|
$fileInput.val('').trigger('change');
|
|
$invoiceNumberInput.removeAttr('disabled');
|
|
}
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
syncShippingNumbers: function(count, offset, ids_added, ids_not_added)
|
|
{
|
|
var self = this;
|
|
|
|
self.ajaxPOST({
|
|
action: 'syncShippingNumbers',
|
|
count: count,
|
|
offset: offset,
|
|
ids_added: ids_added,
|
|
ids_not_added: ids_not_added
|
|
|
|
}, function () {
|
|
if (!$('#allegro_cover').length) {
|
|
var cover = $('<div id="allegro_cover"></div>');
|
|
cover.appendTo('body').hide().fadeIn(400);
|
|
}
|
|
}, function (json) {
|
|
if (json.success) {
|
|
self.syncShippingNumbers(json.count, json.offset, json.ids_added, json.ids_not_added);
|
|
}
|
|
else {
|
|
window.location.href = json.link;
|
|
}
|
|
});
|
|
},
|
|
|
|
changeCategory: function(categoryId, fullPath, selectBox, fieldsBox)
|
|
{
|
|
var self = this;
|
|
if (typeof fullPath === 'undefined' || !fullPath) {
|
|
fullPath = 0;
|
|
}
|
|
|
|
self.ajaxPOST({
|
|
action: 'getCategories',
|
|
id_allegro_category: categoryId,
|
|
id_xallegro_category: (parseInt($('#id_xallegro_category').val()) || 0),
|
|
full_path: fullPath
|
|
|
|
}, function() {
|
|
selectBox.closest('.panel').fadeTo('fast', 0.2);
|
|
fieldsBox.fadeTo('fast', 0.2);
|
|
fieldsBox.find('#category_parameters_info').hide();
|
|
fieldsBox.find('.form-wrapper:not(#category_parameters_info)').remove();
|
|
|
|
$('.category-input-error').remove();
|
|
|
|
}, function(data) {
|
|
selectBox.parent().find('.allegro-category-select select').chosen('destroy');
|
|
|
|
if (data['categories'].length) {
|
|
var element = selectBox.clone().insertAfter(selectBox).hide();
|
|
$("option[value!='0']", element.find('select')).remove();
|
|
|
|
fillSelect(data['categories'], element.find('select'));
|
|
element.show();
|
|
}
|
|
else if (Object.keys(data['categories_array']).length) {
|
|
var first = true;
|
|
var thisSelectBox;
|
|
|
|
$.each(data['categories_array'], function(index, categories) {
|
|
if (first) {
|
|
thisSelectBox = selectBox;
|
|
first = false;
|
|
}
|
|
else {
|
|
var selects = selectBox.parent().find('.allegro-category-select');
|
|
thisSelectBox = selects.eq(selects.length-1);
|
|
}
|
|
|
|
thisSelectBox.find('select').val(categories['id']);
|
|
|
|
if (categories['list'].length) {
|
|
var element = thisSelectBox.clone().insertAfter(thisSelectBox).hide();
|
|
$("option[value!='0']", element.find('select')).remove();
|
|
|
|
fillSelect(categories['list'], element.find('select'));
|
|
element.show();
|
|
}
|
|
});
|
|
}
|
|
|
|
if (data['fields']) {
|
|
fieldsBox.find('.panel-heading').after(data['fields']);
|
|
fieldsBox.find('#category_parameters_info').show();
|
|
fieldsBox.fadeTo('fast', 1);
|
|
|
|
$('div[x-name=product_category_fields]').each(function () {
|
|
$(this).html('<div class="form-horizontal">'
|
|
+ data.fields.replace(/category_fields/g, 'item[' + $(this).attr('x-index') + '][category_fields]')
|
|
+ '</div>');
|
|
});
|
|
|
|
fieldsBox.find('select').each(function () {
|
|
$(this).chosen();
|
|
});
|
|
}
|
|
|
|
if (data['last_node']) {
|
|
if (!data['fields']) {
|
|
fieldsBox.find('.panel-heading').after('<p class="category-input-error">Brak cech dla wybranej kategorii</p>');
|
|
fieldsBox.find('#category_parameters_info').show();
|
|
fieldsBox.fadeTo('fast', 1);
|
|
}
|
|
}
|
|
else if (!data['categories'].length && !Object.keys(data['categories_array']).length) {
|
|
$('#allegro_category_input').parent().append('<p class="category-input-error">Podano niepoprawny numer kategorii</p>');
|
|
}
|
|
|
|
selectBox.parent().find('.allegro-category-select select').chosen({width: '200px'});
|
|
selectBox.closest('.panel').fadeTo('fast', 1);
|
|
|
|
$('#allegro_category_input').val(categoryId);
|
|
$('#allegro_category_current').val(categoryId);
|
|
$('#allegro_category_is_leaf').val(data.last_node);
|
|
|
|
function fillSelect(categories, element)
|
|
{
|
|
$.each(categories, function(index, category) {
|
|
element.append(new Option(category['name'], category['id']));
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
updateImagesPositions: function(index)
|
|
{
|
|
var images = [];
|
|
|
|
$('[x-name="product"][x-id="' + index + '"]').find('input[x-name="images"]').each(function() {
|
|
images.push($(this).val());
|
|
});
|
|
|
|
this.ajaxPOST({
|
|
action: 'updateImagesPositions',
|
|
id_product: $('[x-name="product"][x-id="' + index + '"]').find('input[x-name="id_product"]').val(),
|
|
id_product_attribute: $('[x-name="product"][x-id="' + index + '"]').find('input[x-name="id_product_attribute"]').val(),
|
|
images: images
|
|
});
|
|
},
|
|
|
|
prepareAuctionsData: function(form)
|
|
{
|
|
var form_data = form.serializeArray();
|
|
var data = {data: [], items: []};
|
|
|
|
for (var i in form_data) {
|
|
if (form_data[i].name.substr(0,18) === 'xallegro_tag_input') {
|
|
continue;
|
|
}
|
|
|
|
if (form_data[i].name.substr(0,4) !== 'item') {
|
|
data['data'].push({name : form_data[i].name, value: form_data[i].value});
|
|
}
|
|
else {
|
|
var item_index = form_data[i].name.substr(0,10).replace(/[^0-9]/gi, '');
|
|
|
|
if (typeof data['items'][item_index] === 'undefined') {
|
|
data['items'][item_index] = new Array();
|
|
}
|
|
|
|
data['items'][item_index].push({name : form_data[i].name, value: form_data[i].value});
|
|
}
|
|
}
|
|
|
|
return data;
|
|
},
|
|
|
|
performAuctions: function(start_index)
|
|
{
|
|
var self = this;
|
|
|
|
if (start_index == 0) {
|
|
self.successAuctions = 0;
|
|
self.errorAuctions = 0;
|
|
self.successAuctionsMsg = '';
|
|
self.errorAuctionsMsg = '';
|
|
$('#allegro_perform_info_message').remove();
|
|
$('#allegro_perform_success_message').remove();
|
|
$('#allegro_perform_error_message').remove();
|
|
}
|
|
|
|
var form = $('#allegro_main_form');
|
|
var items_length = $('[x-name="product_switch"]:checked').length;
|
|
var limit = 1;
|
|
var prepared_data = self.prepareAuctionsData(form);
|
|
var data = prepared_data['data'];
|
|
var items = prepared_data['items'];
|
|
|
|
data[data.length] = {name: 'ajax', value: true};
|
|
data[data.length] = {name: 'token', value: xallegro_token};
|
|
data[data.length] = {name: 'start_index', value: start_index};
|
|
data[data.length] = {name: 'action', value: 'performAuctions'};
|
|
data[data.length] = {name: 'id_xallegro_account', value: $('#id_xallegro_account').val()};
|
|
var send_data = data;
|
|
|
|
var chunk = items.slice(start_index * limit, (start_index+1) * limit);
|
|
|
|
for (var i in chunk) {
|
|
send_data = send_data.concat(chunk[i]);
|
|
}
|
|
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: currentIndex,
|
|
dataType: 'json',
|
|
data: send_data,
|
|
beforeSend: function() {
|
|
if ($('#allegro_perform_info_message').length == 0) {
|
|
$('html, body').animate({'scrollTop' : 0}, 'fast');
|
|
|
|
var infoMessageHTML = $(
|
|
'<div id="allegro_perform_info_message" class="alert">' +
|
|
'<p>' +
|
|
'<i class="icon-refresh icon-spin"></i> ' +
|
|
'<strong class="message">Wystawianie ofert</strong> (<b class="current">0</b> / <b class="total">' + items_length + '</b>)' +
|
|
'</p>' +
|
|
'</div>'
|
|
);
|
|
var messageHTML = $(
|
|
'<div id="allegro_perform_success_message" class="alert alert-success"></div>' +
|
|
'<div id="allegro_perform_error_message" class="alert alert-danger"></div>'
|
|
);
|
|
|
|
infoMessageHTML.insertBefore(form).hide().slideDown('slow');
|
|
messageHTML.insertBefore(form).hide();
|
|
}
|
|
},
|
|
success: function(json) {
|
|
$.each(json, function(index, data) {
|
|
$('#allegro_perform_info_message .current').text(parseInt($('#allegro_perform_info_message .current').text()) + 1);
|
|
$('tr[x-id="' + data.x_id + '"]').find('input[x-name="id_auction"]').val(data.id_auction);
|
|
|
|
if (data.success) {
|
|
self.successAuctions++;
|
|
self.successAuctionsMsg += '<p' + (self.successAuctions > 10 ? ' class="allegro-success-hidden" style="display: none;"' : '') + '>' + data.message + '</p>';
|
|
|
|
$('tr[x-id="' + data.x_id + '"]').prev().find('input[x-name="product_switch"]').removeAttr('checked').trigger('change').prop('disabled', 'disabled');
|
|
}
|
|
else {
|
|
self.errorAuctions++;
|
|
self.errorAuctionsMsg += '<p>' + data.message + '</p>';
|
|
}
|
|
});
|
|
|
|
if ((start_index+1) * limit >= items.length) {
|
|
$('#allegro_perform_info_message').hide();
|
|
|
|
if (self.successAuctionsMsg) {
|
|
var successTitle, successSubtitle1, successSubtitle2;
|
|
if (self.successAuctions == 1) {
|
|
successTitle = 'Oferta jest przygotowywana';
|
|
successSubtitle1 = 'Trwa sprawdzanie oferty po stronie Allegro, może to potrwać od kilku minut do dwóch godzin.';
|
|
successSubtitle2 = 'Po zatwierdzeniu oferta będzie widoczna pod linkiem';
|
|
} else {
|
|
successTitle = 'Oferty są przygotowywane';
|
|
successSubtitle1 = 'Trwa sprawdzanie ofert po stronie Allegro, może to potrwać od kilku minut do dwóch godzin.';
|
|
successSubtitle2 = 'Po zatwierdzeniu oferty będą widoczne pod linkami';
|
|
}
|
|
|
|
$('#allegro_perform_success_message').html(
|
|
'<h4>' +
|
|
'<strong>' + successTitle + '</strong><br/>' +
|
|
'<small>' + successSubtitle1 + '</small><br/>' +
|
|
'<small>' + successSubtitle2 + '</small><br/>' +
|
|
'</h4>' +
|
|
self.successAuctionsMsg +
|
|
(self.successAuctions > 10 ? '<br/><a href="#" id="allegro_success_show" class="button btn btn-default">Pokaż więcej</a>' : '')
|
|
).slideDown('slow');
|
|
}
|
|
|
|
if (self.errorAuctionsMsg) {
|
|
$(document).find('.xallegro-perform').parent().removeClass('allegro-send-auction-hidden');
|
|
|
|
$('#allegro_perform_error_message').html(
|
|
'<h4><strong>Niepoprawne ustawienia ofert: ' + self.errorAuctions + '</strong><br/>' +
|
|
'<small>Popraw występujące błędy i kliknij przycisk "Wystaw oferty" ponownie.</small>' +
|
|
'</h4>' +
|
|
self.errorAuctionsMsg
|
|
).slideDown('slow');
|
|
}
|
|
|
|
if (self.successAuctions && !self.errorAuctions) {
|
|
$(document).find('.xallegro-perform').parent().remove();
|
|
|
|
$('#allegro_main_form').slideUp('slow')
|
|
.after('<a href="' + xOffersListList + '" class="button btn btn-success">Przejdź do listy ofert</a>')
|
|
.after('<a href="' + xBackLink + '" class="button btn btn-default">Powrót do listy produktów</a> ');
|
|
}
|
|
}
|
|
else {
|
|
self.performAuctions(start_index+1);
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
offerFullSynchronization: function($modal)
|
|
{
|
|
var self = this;
|
|
var accounts = [];
|
|
|
|
$modal.find('.form-wrapper').show();
|
|
|
|
getAccountsForSynchronization(function (json) {
|
|
if (json.accounts.length) {
|
|
accounts = json.accounts;
|
|
|
|
for (var i = 0; i < accounts.length; i++) {
|
|
$modal.find('#synchronization_accounts').append(
|
|
'<li data-id="' + accounts[i].id + '">' + accounts[i].name + '</li>'
|
|
);
|
|
}
|
|
|
|
getOffersForSynchronization(0, 0, true, function () {
|
|
$modal.find('#synchronization_info span').text('Trwa aktualizacja pobranych ofert, może to chwilę potrwać.');
|
|
$modal.find('#synchronization_accounts').hide();
|
|
$modal.find('.progress').hide();
|
|
|
|
self.ajaxPOST({
|
|
action: 'synchronizeOffers'
|
|
}, null, function (json) {
|
|
if (json.success) {
|
|
$modal.find('#synchronization_info i').attr('class', 'icon-check');
|
|
$modal.find('#synchronization_info span').text('Zakończono synchronizację ofert.');
|
|
$modal.find('#offerFullSynchronizationAuctionsList').show();
|
|
} else {
|
|
$modal.find('#synchronization_info i').attr('class', 'icon-times');
|
|
$modal.find('#synchronization_info span').text(json.message);
|
|
}
|
|
|
|
$modal.find('button[name="closeOfferFullSynchronization"]').show();
|
|
});
|
|
});
|
|
} else {
|
|
$modal.find('#synchronization_info i').attr('class', 'icon-times');
|
|
$modal.find('#synchronization_info span').text('Brak aktywnych kont Allegro.');
|
|
$modal.find('.progress').hide();
|
|
$modal.find('button[name="closeOfferFullSynchronization"]').show();
|
|
}
|
|
});
|
|
|
|
function getOffersForSynchronization(accountIndex, offset, startSynchronization, callbackFinish)
|
|
{
|
|
if (!(accountIndex in accounts)) {
|
|
return callbackFinish();
|
|
}
|
|
|
|
var $currentAccountInfo = $modal.find('#synchronization_accounts li[data-id="' + accounts[accountIndex].id + '"]');
|
|
|
|
if (!$currentAccountInfo.find('.badge').length) {
|
|
$currentAccountInfo.append(' <small><span class="badge">Pobieranie informacji o ofertach</span></small>');
|
|
}
|
|
|
|
self.ajaxPOST({
|
|
action: 'getOffersForSynchronization',
|
|
startSynchronization: +startSynchronization,
|
|
accountId: accounts[accountIndex].id,
|
|
offset: offset
|
|
}, null, function (json) {
|
|
if (json.success) {
|
|
if (json.result.count == 0) {
|
|
accountIndex++;
|
|
offset = 0;
|
|
|
|
$currentAccountInfo.find('.badge').addClass('badge-success').text('Pobrano');
|
|
} else {
|
|
var $progressBar = $modal.find('.progress-bar');
|
|
$progressBar.attr('aria-valuemax', json.result.totalCount);
|
|
$progressBar.attr('aria-valuenow', parseInt($progressBar.attr('aria-valuenow')) + json.result.count);
|
|
$progressBar.css('width', parseInt(($progressBar.attr('aria-valuenow') / $progressBar.attr('aria-valuemax')) * 100) + '%');
|
|
|
|
offset++;
|
|
}
|
|
|
|
getOffersForSynchronization(accountIndex, offset, false, callbackFinish);
|
|
} else {
|
|
$modal.find('#synchronization_info i').attr('class', 'icon-times');
|
|
$modal.find('#synchronization_info span').text('Wystąpił błąd podczas synchronizacji ofert.');
|
|
$modal.find('.progress').hide();
|
|
$currentAccountInfo.find('.badge').addClass('badge-danger').text(json.message);
|
|
$modal.find('button[name="closeOfferFullSynchronization"]').show();
|
|
}
|
|
});
|
|
}
|
|
|
|
function getAccountsForSynchronization(callback)
|
|
{
|
|
self.ajaxPOST({
|
|
action: 'getAccountsForSynchronization'
|
|
}, null, function (json) {
|
|
callback(json);
|
|
});
|
|
}
|
|
},
|
|
|
|
ajaxPOST: function(data, beforeSend, success, error)
|
|
{
|
|
var self = this;
|
|
var defaultData = {
|
|
'token': self.ajaxToken,
|
|
'ajax': true
|
|
};
|
|
|
|
var request = $.ajax({
|
|
url: self.ajaxUrl,
|
|
method: 'POST',
|
|
async: true,
|
|
dataType: 'json',
|
|
data: $.extend(defaultData, data),
|
|
beforeSend: beforeSend,
|
|
success: function(json) {
|
|
if (json && json.apiError) {
|
|
$.each(json.messages, function (index, message) {
|
|
showErrorMessage(message);
|
|
});
|
|
}
|
|
else if (success) {
|
|
success(json);
|
|
}
|
|
},
|
|
error: error
|
|
});
|
|
|
|
self.ajaxRequest.push(request);
|
|
},
|
|
|
|
ajaxAbort: function()
|
|
{
|
|
this.ajaxForceTerminateLoop = true;
|
|
|
|
$.each(this.ajaxRequest, function(i, ajax) {
|
|
ajax.abort();
|
|
});
|
|
}
|
|
};
|
|
|
|
var initTinyMceLite = {
|
|
plugins: 'code, lists, spellchecker, paste, directionality, visualblocks, nonbreaking, visualchars, autoresize, table',
|
|
toolbar1: 'undo,redo,|,cut,copy,paste,|,styleselect,bold,bullist,numlist,|,code',
|
|
menu: {},
|
|
browser_spellcheck: true,
|
|
paste_data_images: false,
|
|
style_formats: [
|
|
{title: 'Nagłówek h1', block: 'h1'},
|
|
{title: 'Nagłówek h2', block: 'h2'},
|
|
{title: 'Akapit', block: 'p'}
|
|
],
|
|
language: 'pl'
|
|
};
|