File "results.js"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/pw-bulk-edit/assets/js/results.js
File size: 28.79 KB
MIME-type: text/plain
Charset: utf-8
var pwbeUndoHistory = [];
var pwbeRedoHistory = [];
jQuery(function($) {
$.contextMenu({
selector: '.pwbe-header',
callback: function(key, options) {
var header = $(this).closest('.pwbe-header');
var fieldName = header.text();
switch (key) {
case 'edit':
var contentName = header.attr('data-type');
if (contentName == 'textarea') { contentName = 'text'; }
var dialog = pwbeShowDialog('bulkedit', contentName, $(this), {
'data-field': header.attr('data-field'),
'data-field-name': fieldName
});
dialog.find('.pwbe-bulkedit-field-name').text(fieldName);
$('#pwbe-bulkedit-dialog').focus();
break;
case 'sort_text_asc':
case 'sort_text_desc':
case 'sort_number_asc':
case 'sort_number_desc':
$('#pwbe-order-by').val(header.attr('data-field'));
if (key.slice(-4) == 'desc') {
$('#pwbe-order-by-desc').val('DESC');
} else {
$('#pwbe-order-by-desc').val('');
}
$('#pwbe-filters-form').submit();
break;
case 'hide':
var viewName = $('#pwbe-view').val();
if (viewName.startsWith('pwbeview_')) {
viewName = prompt(pwbe.i18n.view_name_prompt, '');
}
if (viewName) {
// Hide the column.
$('.pwbe-results-table-header-td').filter(function() { return $(this).attr('data-field') == header.attr('data-field'); }).addClass('pwbe-hidden-column');
$('.pwbe-results-table-cell-td').filter(function() { return $(this).attr('data-field') == header.attr('data-field'); }).addClass('pwbe-hidden-cell');
pwbeSaveCurrentView(viewName);
$('#pwbe-view').val(viewName);
$('#pwbe-view-edit, #pwbe-view-delete').removeClass('pwbe-hidden');
}
break;
default:
alert('Unhandled menu: ' + key);
break;
}
},
trigger: 'left',
items: {
"edit": {name: pwbe.i18n.editAllCheckedProducts, icon: "fa-pencil-square-o", visible: function(key, opt) { return ($(this).attr('data-readonly') != 'true'); } },
separator1: { "type": "cm_separator", visible: function(key, opt) { return ($(this).attr('data-readonly') != 'true' && $(this).attr('data-sortable') == 'true'); } },
"sort_text_asc": {name: pwbe.i18n.sortAscending, icon: "fa-sort-amount-asc", visible: function(key, opt) { return ($(this).attr('data-sortable') == 'true'); } },
"sort_text_desc": {name: pwbe.i18n.sortDescending, icon: "fa-sort-amount-desc", visible: function(key, opt) { return ($(this).attr('data-sortable') == 'true'); } },
separator2: { "type": "cm_separator", visible: function(key, opt) { return ($(this).attr('data-readonly') != 'true' || $(this).attr('data-sortable') == 'true'); } },
"hide": {name: pwbe.i18n.hideColumn, icon: "fa-eye-slash" }
}
});
});
var lastChecked = null;
function pwbeSelectRow(row) {
var checkbox = row.find('.pwbe-product-checkbox');
if (checkbox.prop('checked')) {
row.addClass('pwbe-product-tr-selected');
} else {
row.removeClass('pwbe-product-tr-selected');
}
}
function pwbeBindCheckallCheckbox() {
jQuery('.pwbe-checkall').off('change.pwbe').on('change.pwbe', function () {
jQuery('.pwbe-product-checkbox').each(function(index) {
var checkbox = jQuery(this);
checkbox.prop('checked', !checkbox.prop('checked'));
pwbeSelectRow(checkbox.closest('.pwbe-product-tr'));
});
});
}
function pwbeSearchResults() {
jQuery('.pwbe-product-checkbox').on('change', function() {
var allChecked = (jQuery('.pwbe-product-checkbox:checked').length == jQuery('.pwbe-product-checkbox').length);
jQuery('.pwbe-checkall').prop('checked', allChecked);
});
jQuery('.pwbe-product-checkbox').on('click', function(e) {
pwbeSelectRow(jQuery(this).closest('.pwbe-product-tr'));
if (!lastChecked) {
lastChecked = this;
return;
}
if (e.shiftKey) {
var start = jQuery('.pwbe-product-checkbox').index(this);
var end = jQuery('.pwbe-product-checkbox').index(lastChecked);
jQuery('.pwbe-product-checkbox').slice(Math.min(start,end), Math.max(start,end)+ 1).each(function(index) {
var checkbox = jQuery(this);
checkbox.prop('checked', lastChecked.checked);
pwbeSelectRow(checkbox.closest('.pwbe-product-tr'));
});
}
lastChecked = this;
});
pwbeBindCheckallCheckbox();
jQuery('#pwbe-bulkedit-dialog').on('keydown', function(e) {
if (e.keyCode == 27) {
jQuery('#pwbe-bulkedit-dialog-button-cancel').trigger('click');
e.preventDefault();
return false;
}
});
jQuery('#pwbe-bulkedit-dialog-button-apply').on('click', function(e) {
jQuery(this).text('Processing...').prop('disabled', true);
pwbeBulkEditDialogApply();
jQuery(this).text('Apply').prop('disabled', false);
e.preventDefault();
return false;
});
jQuery('#pwbe-bulkedit-dialog-button-cancel').on('click', function(e) {
pwbeBulkEditDialogClose();
e.preventDefault();
return false;
});
var header = jQuery('.pwbe-header');
header.on('mouseenter', function() { jQuery(this).addClass('pwbe-thead-mouseover').prepend('<i class="fa fa-magic fa-fw pwbe-thead-mouseover-icon" aria-hidden="true"></i>'); });
header.on('mouseleave', function() { jQuery(this).removeClass('pwbe-thead-mouseover').find('.pwbe-thead-mouseover-icon').remove(); });
var variations = jQuery('.pwbe-field-variation');
variations.on('mouseenter', function() { jQuery(this).addClass('pwbe-tbody-mouseover').prepend('<i class="fa fa-child fa-fw pwbe-tbody-mouseover-icon" aria-hidden="true"></i>'); });
variations.on('mouseleave', function() { jQuery(this).removeClass('pwbe-tbody-mouseover').find('.pwbe-tbody-mouseover-icon').remove(); });
var fields = jQuery('.pwbe-field').not('.pwbe-field-readonly').children('.pwbe-field-label');
fields.on('mouseenter', function() { jQuery(this).addClass('pwbe-tbody-mouseover').prepend('<span class="fa fa-pencil-square-o fa-fw pwbe-tbody-mouseover-icon" aria-hidden="true"></span>'); });
fields.on('mouseleave', function() { jQuery(this).removeClass('pwbe-tbody-mouseover').parent().find('.pwbe-tbody-mouseover-icon').remove(); });
jQuery('.pwbe-field-label').on('click', function() {
if (jQuery(this).closest('.pwbe-field').hasClass('pwbe-field-readonly')) { return false; }
// Close out any open editors.
var valid = true;
jQuery('.pwbe-temporary-editor-container').each(function() {
if (!pwbeAcceptFieldEdit(jQuery(this))) {
valid = false;
}
});
if (!valid) {
return false;
}
var text = jQuery(this);
text.css('display', 'none');
var cell = text.closest('.pwbe-td');
var hiddenInput = text.siblings('.pwbe-field-value').first();
var editorContainer = jQuery('<div class="pwbe-temporary-editor-container"></div>');
var input;
var inputType = hiddenInput.attr('data-input-type');
var fieldName = hiddenInput.attr('data-field');
var productType = hiddenInput.attr('data-product-type');
editorContainer.insertAfter(hiddenInput);
cell.removeClass('pwbe-results-table-td');
switch (inputType) {
case 'currency':
input = jQuery('<input type="text" autocomplete="off" />');
input.val(hiddenInput.val());
break;
case 'checkbox':
input = jQuery('<input type="checkbox" value="yes" />');
input.prop('checked', (hiddenInput.val() == 'yes'));
break;
case 'textarea':
input = jQuery('<textarea rows="8" cols="45">' + hiddenInput.val() + '</textarea>');
break;
case 'select':
input = jQuery('<select style="width: 300px;"></select>');
jQuery('.pwbe-dropdown-template-' + fieldName + ' option, .pwbe-dropdown-template-' + fieldName + ' option').clone().appendTo(input);
input.val(hiddenInput.val());
break;
default:
input = jQuery('<input type="' + inputType + '" autocomplete="off" />');
if (inputType == 'text') {
input.css('width', '500px');
}
input.val(hiddenInput.val());
break;
}
input.appendTo(editorContainer);
input.css('position', 'relative').css('z-index', '1');
input.addClass('pwbe-temporary-editor');
input.attr('data-old', hiddenInput.val());
input.attr('data-field', hiddenInput.attr('data-field'));
// Hide unavailable options (selects).
if (input.prop('type') == 'select-one' || input.prop('type') == 'select-multiple') {
if (productType == 'variation') {
input.find('.pwbe-dropdown-visibility-parent').css('display', 'none');
} else {
input.find('.pwbe-dropdown-visibility-variation').css('display', 'none');
}
}
var acceptButton = jQuery('<div class="button button-secondary pwbe-field-edit-button pwbe-field-edit-button-accept" title="' + pwbe.i18n.acceptChanges + '"><i class="fa fa-check fa-fw pwbe-field-edit-button-accept-icon"></i></div>');
acceptButton.insertAfter(input);
acceptButton.on('click', function(e) {
pwbeAcceptFieldEdit(editorContainer);
e.preventDefault();
return false;
});
var cancelButton = jQuery('<div class="button button-secondary pwbe-field-edit-button pwbe-field-edit-button-cancel" title="' + pwbe.i18n.cancelChanges + '"><i class="fa fa-times fa-fw pwbe-field-edit-button-cancel-icon"></i></div>');
cancelButton.insertAfter(acceptButton);
cancelButton.on('click', function(e) {
cell.addClass('pwbe-results-table-td');
var hiddenInput = editorContainer.siblings('.pwbe-field-value');
var input = editorContainer.find('.pwbe-temporary-editor');
pwbeFieldUpdate(hiddenInput, input.attr('data-old'), true);
pwbeCloseTemporaryEditor();
e.preventDefault();
return false;
});
if (hiddenInput.val() != hiddenInput.attr('data-original-value')) {
var resetButton = jQuery('<div class="button button-secondary pwbe-field-edit-button pwbe-field-edit-button-reset" title="' + pwbe.i18n.revertToOriginal + '"><i class="fa fa-refresh fa-fw"></i></div>');
resetButton.insertAfter(cancelButton);
resetButton.on('click', function(e) {
cell.addClass('pwbe-results-table-td');
var hiddenInput = editorContainer.siblings('.pwbe-field-value');
pwbeFieldUpdate(hiddenInput, hiddenInput.attr('data-original-value'));
pwbeCloseTemporaryEditor();
e.preventDefault();
return false;
});
}
input.on('keydown', function(e) {
var input = jQuery(this);
var handled = false;
switch (e.keyCode) {
case 9: // Tab
var hiddenInput = editorContainer.siblings('.pwbe-field-value');
if (pwbeAcceptFieldEdit(editorContainer)) {
if (e.shiftKey) {
pwbeFieldMove(hiddenInput, 'left');
} else {
pwbeFieldMove(hiddenInput, 'right');
}
}
handled = true;
break;
case 13: // Enter
if (!input.is('textarea')) {
var hiddenInput = editorContainer.siblings('.pwbe-field-value');
if (pwbeAcceptFieldEdit(editorContainer)) {
if (e.shiftKey) {
pwbeFieldMove(hiddenInput, 'up');
} else {
pwbeFieldMove(hiddenInput, 'down');
}
}
handled = true;
}
break;
case 27: // Escape
input.siblings('.pwbe-field-edit-button-cancel').trigger('click');
handled = true;
break;
}
if (handled) {
e.preventDefault();
return false;
}
});
input.focus();
});
jQuery('.pwbe-field-variation').on('click', function() {
var postId = jQuery(this).attr('data-post-id');
var parent = jQuery("#pwbe-product-" + postId).closest('.pwbe-tr');
parent.get(0).scrollIntoView(true);
// Account for the fixed header.
var scrolledY = window.scrollY;
var header = jQuery('#wpadminbar');
if (scrolledY && header) {
window.scroll(0, scrolledY - (header.height() * 2));
}
parent.pwbe_highlight();
});
jQuery('#pwbe-product-save-button').on('click', function(e) {
var valid = true;
jQuery('.pwbe-temporary-editor-container').each(function() {
if (!pwbeAcceptFieldEdit(jQuery(this))) {
valid = false;
}
});
if (valid) {
pwbeSaveFields();
}
e.preventDefault();
return false;
});
jQuery('#pwbe-product-undo-button').on('click', function(e) {
jQuery('.pwbe-field-edit-button-cancel').trigger('click');
pwbeUndo();
e.preventDefault();
return false;
});
jQuery('#pwbe-product-redo-button').on('click', function(e) {
jQuery('.pwbe-field-edit-button-cancel').trigger('click');
pwbeRedo();
e.preventDefault();
return false;
});
jQuery('#pwbe-product-discard-button').on('click', function(e) {
jQuery('.pwbe-field-edit-button-cancel').trigger('click');
if (confirm(pwbe.i18n.discardAllChanges)) {
var fields = jQuery('.pwbe-field-changed');
for (var i = 0, len = fields.length; i < len; i++) {
var field = jQuery(fields[i]);
var hiddenInput = field.find('.pwbe-field-value').first();
var originalValue = hiddenInput.attr('data-original-value');
pwbeFieldUpdate(hiddenInput, originalValue, true);
}
pwbeUndoHistory.length = 0;
pwbeRedoHistory.length = 0;
pwbeProductButtonsEnableDisable();
jQuery('#pwbe-message').html('');
}
e.preventDefault();
return false;
});
jQuery('#pwbe-view').on('change', function() {
jQuery('body').css('cursor', 'wait');
jQuery('.pwbe-results-table-header-td.pwbe-hidden-column').removeClass('pwbe-hidden-column');
jQuery('.pwbe-results-table-cell-td.pwbe-hidden-cell').removeClass('pwbe-hidden-cell');
var viewName = jQuery(this).val();
if (viewName.startsWith('pwbeview_')) {
jQuery('#pwbe-view-edit').addClass('pwbe-hidden');
jQuery('#pwbe-view-delete').addClass('pwbe-hidden');
jQuery('#pwbe-view-custom').remove();
} else {
jQuery('#pwbe-view-edit').removeClass('pwbe-hidden');
jQuery('#pwbe-view-delete').removeClass('pwbe-hidden');
}
jQuery.post(ajaxurl, {
'action': 'pwbe_get_view',
'name': viewName
}, function(data) {
for (var i in data) {
jQuery('.pwbe-results-table-header-td').filter(function() { return jQuery(this).attr('data-field') == data[i]; } ).addClass('pwbe-hidden-column');
jQuery('.pwbe-results-table-cell-td').filter(function() { return jQuery(this).attr('data-field') == data[i]; } ).addClass('pwbe-hidden-cell');
}
pwbeResizeFixedHeaderColumns();
pwbeBindCheckallCheckbox();
jQuery('body').css('cursor', 'default');
});
});
jQuery('#pwbe-view-edit').on('click', function() {
pwbeShowDialog('edit-view', 'edit-view');
});
jQuery('#pwbe-view-copy').on('click', function() {
var viewName = prompt(pwbe.i18n.view_name_prompt, '');
if (viewName) {
var viewExists = false;
jQuery('#pwbe-view option').each(function() {
if (this.value == viewName) {
viewExists = true;
return;
}
});
if ( viewExists && !confirm(pwbe.i18n.overwrite_view_prompt)) {
return;
}
pwbeSaveCurrentView(viewName);
jQuery('#pwbe-view').val(viewName);
jQuery('#pwbe-view-edit, #pwbe-view-delete').removeClass('pwbe-hidden');
}
});
jQuery('#pwbe-edit-view-dialog-button-cancel').on('click', function(e) {
pwbeEditViewDialogClose();
});
jQuery('#pwbe-view-delete').on('click', function() {
var viewName = jQuery('#pwbe-view').val();
if (viewName.startsWith('pwbeview_')) {
return;
}
if (!confirm(pwbe.i18n.confirmDeleteView + ' "' + viewName + '"')) {
return;
}
jQuery('body').css('cursor', 'wait');
jQuery.post(ajaxurl, {
'action': 'pwbe_delete_view',
'name': viewName
}, function(data) {
jQuery('.pwbe-results-table-header-td.pwbe-hidden-column').removeClass('pwbe-hidden-column');
jQuery('.pwbe-results-table-cell-td.pwbe-hidden-cell').removeClass('pwbe-hidden-cell');
jQuery('#pwbe-view').val('');
jQuery('#pwbe-view-edit').addClass('pwbe-hidden');
jQuery('#pwbe-view-delete').addClass('pwbe-hidden');
jQuery('#pwbe-view option').filter(function() { return this.value == viewName; }).remove();
jQuery('body').css('cursor', 'default');
});
});
var resultsHeader = jQuery('#pwbe-header-results');
if (resultsHeader.length > 0) {
var adminBarHeight = jQuery('#wpadminbar').height();
var header = resultsHeader.find('.pwbe-tr').clone();
var fixedHeader = jQuery('#pwbe-header-fixed').css('top', adminBarHeight + 'px').append(header);
var offsetTop = resultsHeader.offset().top - adminBarHeight;
var offsetLeft = resultsHeader.offset().left;
pwbeResizeFixedHeaderColumns();
pwbeBindCheckallCheckbox();
jQuery(window).on('scroll', function() {
fixedHeader.css('left', offsetLeft - jQuery(window).scrollLeft());
var offset = jQuery(this).scrollTop();
if (offset >= offsetTop && fixedHeader.is(':hidden')) {
fixedHeader.show();
} else if (offset < offsetTop) {
fixedHeader.hide();
}
});
}
}
function pwbeResizeFixedHeaderColumns() {
jQuery('#pwbe-header-fixed').width(jQuery('#pwbe-header-results').width());
jQuery('#pwbe-header-fixed .pwbe-results-table-header-td').each(function(index) {
jQuery(this).width(jQuery('#pwbe-header-results .pwbe-results-table-header-td').eq(index).width());
});
}
function pwbeSaveFields() {
var valid = true;
var fields = jQuery('.pwbe-filter-field');
for(var i = 0, len = fields.length; i < len; i++) {
var field = jQuery(fields[i]);
if ( field.is(':visible') && !field.val() ) {
field.closest('.pwbe-filter-row').find('.pwbe-filter-required').css('display', 'block');
valid = false;
} else {
field.closest('.pwbe-filter-row').find('.pwbe-filter-required').css('display', 'none');
}
}
if (!valid) {
return false;
}
jQuery('body').css('cursor', 'wait');
jQuery('#pwbe-results-error').html('').addClass('pwbe-hidden');
jQuery('.pwbe-processing-message').text(pwbe.i18n.saving + '...');
jQuery('.pwbe-processing').css('display', 'block');
jQuery('#pwbe-results-container').css('display', 'none');
var changedFields = jQuery('.pwbe-field-changed');
// Start the saving loop
pwbeSaveField(0, changedFields);
}
function pwbeSaveField(index, values) {
if (index < values.length) {
var fields = [];
for (var x = 0; x < parseInt(pwbe.saveBatchSize) && x < values.length; x++) {
var input = jQuery(values[index + x]).find('input:first');
var displayName = jQuery('#pwbe-header-results .pwbe-results-table-header-td').filter(function() { return jQuery(this).attr('data-field') == input.attr('data-field'); } ).find('.pwbe-header').text();
fields.push({
'post_id': input.attr('data-post-id'),
'parent_post_id': input.attr('data-parent-post-id'),
'product_type': input.attr('data-product-type'),
'field': input.attr('data-field'),
'value': input.val(),
'old_value': input.attr('data-original-value'),
'display_name': displayName
});
}
var current_record = (index + fields.length);
if (current_record > values.length) { current_record = values.length; }
jQuery('.pwbe-processing-message').text(pwbe.i18n.saving + ' ' + current_record + ' of ' + values.length);
jQuery.post(ajaxurl, { 'action': 'pwbe_save_products', 'fields': fields, 'security': pwbe.nonces.save_products }, function(response) {
if (response == 'success') {
// Save the next product.
pwbeSaveField(index + parseInt(pwbe.saveBatchSize), values);
} else {
jQuery('#pwbe-results-error').html(response).removeClass('pwbe-hidden');
jQuery('.pwbe-processing-message').text('');
jQuery('.pwbe-processing').css('display', 'none');
jQuery('#pwbe-results-container').css('display', 'block');
jQuery('body').css('cursor', 'default');
}
}).fail(function() {
jQuery.get(ajaxurl, { 'action': 'pwbe_get_save_products_error' }, function(response) {
jQuery('#pwbe-results-error').html(response).removeClass('pwbe-hidden');
jQuery('.pwbe-processing-message').text('');
jQuery('.pwbe-processing').css('display', 'none');
jQuery('#pwbe-results-container').css('display', 'block');
jQuery('body').css('cursor', 'default');
}).fail(function(xhr, textStatus, errorThrown) {;
alert(ajaxurl + ' ' + errorThrown);
});
});
} else {
jQuery('.pwbe-field-changed').removeClass('pwbe-field-changed');
jQuery('#pwbe-filters-form').submit();
jQuery('.pwbe-saving-status').css('display', 'none');
jQuery('body').css('cursor', 'default');
}
}
function pwbeSaveCurrentView(viewName) {
jQuery('body').css('cursor', 'wait');
var hiddenColumns = [];
jQuery('#pwbe-header-results .pwbe-hidden-column').each(function() {
hiddenColumns.push(jQuery(this).children('.pwbe-header').attr('data-field'));
});
jQuery.post(ajaxurl, {
'action': 'pwbe_save_view',
'name': viewName,
'view_data': JSON.stringify( hiddenColumns )
}, function(data) {
if (jQuery('#pwbe-view option').filter(function() { return this.value == viewName; }).length == 0) {
jQuery('#pwbe-view').append(jQuery("<option></option>").attr("value", viewName).text(viewName));
}
jQuery('#pwbe-view').val(viewName);
jQuery('#pwbe-view-save').addClass('pwbe-hidden');
jQuery('#pwbe-view-delete').removeClass('pwbe-hidden');
if (jQuery('#pwbe-header-results .pwbe-hidden-column').length > 0) {
jQuery('#pwbe-view-edit').removeClass('pwbe-hidden');
}
jQuery('#pwbe-view-custom').remove();
jQuery('body').css('cursor', 'default');
});
}
function pwbeAcceptFieldEdit(editorContainer) {
var hiddenInput = editorContainer.siblings('.pwbe-field-value');
var input = editorContainer.find('.pwbe-temporary-editor');
var newValue = input.val();
if (input.attr('type') == 'checkbox') {
newValue = input.prop('checked') ? 'yes' : 'no';
}
pwbeFieldUpdate(hiddenInput, newValue);
editorContainer.closest('.pwbe-td').addClass('pwbe-results-table-td');
pwbeCloseTemporaryEditor();
return true;
}
function pwbeFieldMove(input, direction, sameElement) {
switch (direction) {
case 'up':
input.closest('.pwbe-product-tr').prevAll().each(function() {
return pwbeEditableFieldExists(jQuery(this), '-' + input.attr('data-field'));
});
break;
case 'down':
input.closest('.pwbe-product-tr').nextAll().each(function() {
return pwbeEditableFieldExists(jQuery(this), '-' + input.attr('data-field'));
});
break;
case 'left':
var element = input.closest('.pwbe-results-table-td');
if (sameElement) {
element.next().prevAll().each(function() {
return pwbeEditableFieldExists(jQuery(this), '');
});
} else {
element.prevAll().each(function() {
return pwbeEditableFieldExists(jQuery(this), '');
});
}
if (jQuery('.pwbe-temporary-editor').length == 0 && input.closest('.pwbe-product-tr').prevAll().length > 0) {
pwbeFieldMove(input.closest('.pwbe-product-tr').prev().find('.pwbe-field').not('.pwbe-field-readonly').find('.pwbe-field-value').last(), direction, true);
}
break;
case 'right':
var element = input.closest('.pwbe-results-table-td');
if (sameElement) {
element.prev().nextAll().each(function() {
return pwbeEditableFieldExists(jQuery(this), '');
});
} else {
element.nextAll().each(function() {
return pwbeEditableFieldExists(jQuery(this), '');
});
}
if (jQuery('.pwbe-temporary-editor').length == 0 && input.closest('.pwbe-product-tr').nextAll().length > 0) {
pwbeFieldMove(input.closest('.pwbe-product-tr').next().find('.pwbe-field').not('.pwbe-field-readonly').find('.pwbe-field-value').first(), direction, true);
}
break;
}
}
function pwbeEditableFieldExists(parent, fieldName) {
var nextInput = parent.find('.pwbe-field' + fieldName).not('.pwbe-field-readonly').find('.pwbe-field-label').first();
if (nextInput.length != 0) {
nextInput.trigger('click');
return false;
} else {
return true;
}
}
function pwbeBulkEditDialogApply() {
var dialog = jQuery('#pwbe-bulkedit-dialog');
var editor = dialog.find('.pwbe-dialog-content:visible').first();
var func = editor.attr('data-function');
var fieldName = editor.attr('data-field');
var changeCount = 0;
pwbeUndoHistory.push({'action': 'bulk_begin'});
var checkboxes = jQuery('.pwbe-product-checkbox');
for (var i = 0, len = checkboxes.length; i < len; i++) {
var checkbox = jQuery(checkboxes[i]);
if (checkbox.prop('checked')) {
var productDiv = checkbox.closest('.pwbe-tr').find('.pwbe-field-' + fieldName);
if (!productDiv.hasClass('pwbe-field-readonly')) {
var fieldInput = productDiv.children('.pwbe-field-value').first();
var oldValue = fieldInput.val();
var regularPrice = checkbox.closest('.pwbe-tr').find('.pwbe-field-_regular_price').children('.pwbe-field-value').first().val();
var newValue = window[func]('apply', oldValue);
if (newValue != fieldInput.val()) {
pwbeFieldUpdate(fieldInput, newValue);
changeCount++;
}
}
}
}
if (changeCount > 0) {
pwbeRedoHistory.length = 0;
pwbeUndoHistory.push({'action': 'bulk_end'});
} else {
pwbeUndoHistory.pop();
}
pwbeProductButtonsEnableDisable();
pwbeBulkEditDialogClose();
}
function pwbeBulkEditDialogClose() {
var dialog = jQuery('#pwbe-bulkedit-dialog');
var editor = dialog.find('.pwbe-dialog-content:visible').first();
var func = editor.attr('data-function');
dialog.css('display', 'none');
jQuery('.pwbe-overlay').remove();
window[func]('reset');
}
function pwbeEditViewDialogClose() {
var dialog = jQuery('#pwbe-edit-view-dialog');
var func = dialog.find('.pwbe-dialog-content:visible:first').attr('data-function');
dialog.css('display', 'none');
jQuery('.pwbe-overlay').remove();
window[func]('reset');
}
function pwbeFieldUpdate(field, newValue, skipHistory) {
var thousandSeparator = jQuery('#pwbe-price-thousand-separator').val();
var decimalSeparator = jQuery('#pwbe-price-decimal-separator').val();
var oldValue = field.val();
var inputType = field.attr('data-input-type');
var fieldName = field.attr('data-field');
if (inputType == 'currency') {
newValue = String(newValue).replace(thousandSeparator, '');
}
field.val(newValue);
var displayValue = newValue;
switch (inputType) {
case 'select':
if (displayValue === undefined) {
displayValue = 'n/a';
} else {
displayValue = jQuery('.pwbe-dropdown-template-' + fieldName + ' option').filter(function() { return jQuery(this).attr('value') == newValue; }).text();
}
if (!displayValue) {
displayValue = 'n/a';
}
break;
default:
if (displayValue === undefined || displayValue === '') {
displayValue = 'n/a';
}
break;
}
var parent = field.closest('.pwbe-td');
parent.removeClass('pwbe-field-changed').removeClass('pwbe-field-changed-up').removeClass('pwbe-field-changed-down');
parent.find('.pwbe-field-label').text(displayValue).css('display', 'block');
var originalValue = field.attr('data-original-value');
if (pwbeValueHasChanged(originalValue, newValue, inputType)) {
parent.addClass('pwbe-field-changed');
// We'll do special formatting for numbers and currency (higher/lower).
if (inputType == 'number' || inputType == 'currency') {
if (!originalValue) { originalValue = 0; }
var decimalNewValue = parseFloat(String(newValue).replace(thousandSeparator, '').replace(decimalSeparator, '.'));
var decimalOriginalValue = parseFloat(String(originalValue).replace(thousandSeparator, '').replace(decimalSeparator, '.'));
if (decimalNewValue > decimalOriginalValue) {
parent.addClass('pwbe-field-changed-up');
} else if (decimalNewValue < decimalOriginalValue) {
parent.addClass('pwbe-field-changed-down');
}
}
}
if (skipHistory != true) {
if (pwbeValueHasChanged(oldValue, newValue, inputType)) {
var action = {
'action': 'field',
'field': field,
'oldValue': oldValue,
'newValue': newValue
};
pwbeUndoHistory.push(action);
pwbeRedoHistory.length = 0;
}
}
pwbeProductButtonsEnableDisable();
}
function pwbeCloseTemporaryEditor() {
var container = jQuery('.pwbe-temporary-editor-container');
container.find('.pwbe-temporary-editor').each(function() {
if (jQuery(this).data('pwbeselect2')) {
jQuery(this).pwbeselect2('destroy');
}
});
container.remove();
}
function pwbeValueHasChanged(oldValue, newValue, inputType) {
return (newValue != oldValue && (newValue || oldValue));
}
function pwbeUndo(repeat) {
if (pwbeUndoHistory.length > 0) {
var item = pwbeUndoHistory.pop();
pwbeRedoHistory.push(item);
switch (item.action) {
case 'field':
pwbeFieldUpdate(item.field, item.oldValue, true);
break;
case 'bulk_begin':
repeat = false;
break;
case 'bulk_end':
repeat = true;
break;
}
}
if (repeat) {
pwbeUndo(true);
} else {
pwbeProductButtonsEnableDisable();
}
}
function pwbeRedo(repeat) {
if (pwbeRedoHistory.length > 0) {
var item = pwbeRedoHistory.pop();
pwbeUndoHistory.push(item);
switch (item.action) {
case 'field':
pwbeFieldUpdate(item.field, item.newValue, true);
break;
case 'bulk_begin':
repeat = true;
break;
case 'bulk_end':
repeat = false;
break;
}
}
if (repeat) {
pwbeRedo(true);
} else {
pwbeProductButtonsEnableDisable();
}
}
function pwbeProductButtonsEnableDisable() {
var isDirty = (pwbeUndoHistory.length > 0 || pwbeRedoHistory.length > 0);
jQuery('.pwbe-results-buttons').find('button').prop('disabled', !isDirty);
jQuery('#pwbe-product-undo-button').prop('disabled', (pwbeUndoHistory.length == 0));
jQuery('#pwbe-product-redo-button').prop('disabled', (pwbeRedoHistory.length == 0));
}
function pwbePregQuote(str) {
// Source: http://kevin.vanzonneveld.net
return (str+'').replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\|\:])/g, "\\$1");
}