// report bugfix from saving customization with combination

This commit is contained in:
vChabot
2012-02-10 14:08:03 +00:00
parent c593b3ff61
commit 2f14bbc7f3
5 changed files with 82 additions and 6 deletions
+17
View File
@@ -559,5 +559,22 @@ class ProductControllerCore extends FrontController
}
return $specific_prices;
}
public function postProcess()
{
if ($this->ajax)
{
if (Tools::isSubmit('submitCustomizedDatas'))
{
$this->pictureUpload($this->product, $this->context->cart);
$this->textRecord($this->product, $this->context->cart);
$this->formTargetFormat();
}
if (count($this->errors))
die(Tools::jsonEncode(array('hasErrors' => true, 'errors' => $this->errors)));
else
die(Tools::jsonEncode(array('hasErrors' => false, 'conf' => Tools::displayError('Customization saved successfully.'))));
}
}
}
+7 -1
View File
@@ -214,7 +214,13 @@ function checkCustomizations()
function emptyCustomizations()
{
if(typeof(customizationFields) == 'undefined') return;
$('.customization_block .success').fadeOut(function(){
$(this).remove();
});
$('.customization_block .error').fadeOut(function(){
$(this).remove();
});
for (var i = 0; i < customizationFields.length; i++)
{
$('#' + customizationFields[i][0]).html('');
+5 -3
View File
@@ -493,8 +493,10 @@ var ajaxCart = {
if (!hasAlreadyCustomizations)
{
if (!product.hasAttributes) content += '<dd id="cart_block_combination_of_' + productId + '" class="hidden">';
content += '<ul class="cart_block_customizations" id="customization_' + productId + '_' + productAttributeId + '">';
if (!product.hasAttributes)
content += '<dd id="cart_block_combination_of_' + productId + '" class="hidden">';
if ($('#customization_' + productId + '_' + productAttributeId).val() == undefined)
content += '<ul class="cart_block_customizations" id="customization_' + productId + '_' + productAttributeId + '">';
}
$(product.customizedDatas).each(function(){
@@ -502,7 +504,7 @@ var ajaxCart = {
customizationId = parseInt(this.customizationId);
productAttributeId = typeof(product.idCombination) == 'undefined' ? 0 : parseInt(product.idCombination);
// If the customization is already displayed on the cart, no update's needed
if($('#cart_block').find("div[id^=deleteCustomizableProduct_" + customizationId + "_]").length)
if ($("#deleteCustomizableProduct_" + customizationId + "_" + productId + "_" + productAttributeId).length)
return ('');
content += '<li name="customization"><div class="deleteCustomizableProduct" id="deleteCustomizableProduct_' + customizationId + '_' + productId + '_' + (productAttributeId ? productAttributeId : '0') + '"><a rel="nofollow" class="ajax_cart_block_remove_link" href="' + baseDir + 'index.php?controller=cart&amp;delete&amp;id_product=' + productId + '&amp;ipa=' + productAttributeId + '&amp;id_customization=' + customizationId + '&amp;token=' + static_token + '"> </a></div><span class="quantity-formated"><span class="quantity">' + parseInt(this.quantity) + '</span>x</span>';
+7
View File
@@ -89,6 +89,13 @@ p {padding-bottom:20px}
font-size:13px;
background:#ffffe0
}
.success {
margin:0 0 10px 0;
padding:10px;
border:1px solid #5cff74;
font-size:13px;
background: #d3ffab
}
.error {
margin:0 0 10px 0;
padding:10px;
+46 -2
View File
@@ -30,6 +30,7 @@ var combinations = new Array();
var selectedCombination = new Array();
var globalQuantity = new Number;
var colors = new Array();
var input_save_customized_datas = '';
//check if a function exists
function function_exists(function_name)
@@ -548,6 +549,7 @@ $(document).ready(function()
// Hide the customization submit button and display some message
$('p#customizedDatas input').click(function() {
input_save_customized_datas = $('p#customizedDatas').html();
$('p#customizedDatas input').hide();
$('#ajax-loader').fadeIn();
$('p#customizedDatas').append(uploading_in_progress);
@@ -578,8 +580,50 @@ function saveCustomization()
$('body select[id^="group_"]').each(function() {
customAction = customAction.replace(new RegExp(this.id + '=\\d+'), this.id +'='+this.value);
});
$('#customizationForm').attr('action', customAction);
$('#customizationForm').submit();
$.ajax({
type: 'POST',
url: customAction,
data: 'ajax=true&'+$('#customizationForm').serialize(),
dataType: 'json',
async : true,
success: function(data) {
$('#customizedDatas').fadeOut();
$('#customizedDatas').html(input_save_customized_datas);
$('#customizedDatas').fadeIn();
if (!data.hasErrors)
{
$('#customizationForm').find('.error').fadeOut(function(){
$(this).remove();
});
// display a confirmation message
if ($('#customizationForm').find('.success').val() == undefined)
$('#customizationForm').prepend("<p class='success'>"+data.conf+"</p>");
else
$('#customizationForm.success').html("<p class='success'>"+data.conf+"</p>");
}
else
{
$('#customizationForm').find('.success').fadeOut(function(){
$(this).remove();
});
// display an error message
if ($('#customizationForm').find('.error').val() == undefined)
{
$('#customizationForm').prepend("<p class='error'></p>");
for (var i = 0; i < data.errors.length; i++)
$('#customizationForm .error').html($('#customizationForm .error').html()+data.errors[i]+"<br />");
}
else
{
$('#customizationForm .error').html('');
for (var i = 0; i < data.errors.length; i++)
$('#customizationForm .error').html($('#customizationForm .error').html()+data.errors[i]+"<br />");
}
}
}
});
return false;
}
function submitPublishProduct(url, redirect)