// fix #PSTEST-125

This commit is contained in:
mMarinetti
2011-12-22 13:43:23 +00:00
parent 6a1e07bf8e
commit c7cdfaf5bb
4 changed files with 67 additions and 47 deletions
+29 -26
View File
@@ -219,41 +219,44 @@
$("#listImage").append("<li id='img"+id+"'><div class=\"float\" >" + filename + "</div></div><a style=\"margin-left:10px\"href=\"javascript:delQueue(" + id +");\"><img src=\"../img/admin/disabled.gif\" alt=\"\" border=\"0\"></a><p class=\"errorImg\"></p></li>");
}
});
/**
* on success function
*/
function afterDeleteProductImage(data)
{
data = $.parseJSON(data);
if (data)
{
cover = 0;
id = data.content.id;
if(data.status == 'ok')
{
if ($("#" + id).find(".covered").attr("src") == "../img/admin/enabled.gif")
cover = 1;
$("#" + id).remove();
}
if (cover)
$("#imageTable tr").eq(1).find(".covered").attr("src", "../img/admin/enabled.gif");
$("#countImage").html(parseInt($("#countImage").html()) - 1);
refreshImagePositions($("#imageTable"));
}
}
$('.delete_product_image').die().live('click', function(e)
{
e.preventDefault();
id = $(this).parent().parent().attr('id');
if (confirm("{/literal}{l s='Are you sure?' js=1}{literal}"))
$.ajax(
{
url : "ajax-tab.php",
data : {"action":"deleteProductImage",
doAdminAjax({
"action":"deleteProductImage",
"id_image":id,
"id_product" : {/literal}{$id_product}{literal},
"id_category" : {/literal}{$id_category_default}{literal},
"token" : "{/literal}{$token}{literal}",
"tab" : "AdminProducts",
"ajax" : 1 },
success : function (data)
{
data = jQuery.parseJSON(data);
if (data)
{
cover = 0;
if(data.status == 'ok')
{
if ($("#" + id).find(".covered").attr("src") == "../img/admin/enabled.gif")
cover = 1;
$("#" + id).remove();
}
if (cover)
$("#imageTable tr").eq(1).find(".covered").attr("src", "../img/admin/enabled.gif");
$("#countImage").html(parseInt($("#countImage").html()) - 1);
refreshImagePositions($("#imageTable"));
}
}
});
"ajax" : 1 }, afterDeleteProductImage
);
});
$('.covered').die().live('click', function(e)
@@ -298,7 +301,7 @@
function updateImagePositon(json)
{
doAdminAjax(
{
{
"action":"updateImagePosition",
"json":json,
"token" : "{/literal}{$token}{literal}",
+9 -3
View File
@@ -230,7 +230,7 @@ class AdminControllerCore extends Controller
protected $_redirect = true;
/** @var array Name and directory where class image are located */
public $fieldImageSettings = array();
public $fieldImageSettings = null;
/** @var string Image type */
public $imageType = 'jpg';
@@ -528,8 +528,9 @@ class AdminControllerCore extends Controller
*/
public function processDelete($token)
{
if (Validate::isLoadedObject($object = $this->loadObject()) && isset($this->fieldImageSettings))
if (Validate::isLoadedObject($object = $this->loadObject()))
{
$res = true;
// check if request at least one object with noZeroObject
if (isset($object->noZeroObject) && count(call_user_func(array($this->className, $object->noZeroObject))) <= 1)
{
@@ -543,7 +544,12 @@ class AdminControllerCore extends Controller
{
if ($this->deleted)
{
$object->deleteImage();
if (isset($this->fieldImageSettings))
$res = $object->deleteImage();
if (!$res)
$this->_errors[] = Tools::displayError('Unable to delete associated images');
$object->deleted = 1;
if ($object->update())
$this->redirect_after = self::$currentIndex.'&conf=1&token='.$token;
+20 -9
View File
@@ -1239,22 +1239,33 @@ class AdminProductsControllerCore extends AdminController
public function ajaxProcessDeleteProductImage()
{
$this->json = true;
$this->display = 'content';
$res = true;
/* Delete product image */
$image = new Image((int)Tools::getValue('id_image'));
$image->delete();
$this->content['id'] = $image->id;
$res &= $image->delete();
// if deleted image was the cover, change it to the first one
if (!Image::getCover($image->id_product))
{
$first_img = Db::getInstance()->getRow('
SELECT `id_image` FROM `'._DB_PREFIX_.'image`
WHERE `id_product` = '.(int)$image->id_product);
Db::getInstance()->Execute('
$res &= Db::getInstance()->Execute('
UPDATE `'._DB_PREFIX_.'image`
SET `cover` = 1
WHERE `id_image` = '.(int)$first_img['id_image']);
WHERE `id_product` = '.(int)$image->id_product.' LIMIT 1');
}
@unlink(_PS_TMP_IMG_DIR_.'/product_'.$image->id_product.'.jpg');
@unlink(_PS_TMP_IMG_DIR_.'/product_mini_'.$image->id_product.'.jpg');
$this->content = '{"status":"ok"}';
if(file_exists(_PS_TMP_IMG_DIR_.'/product_'.$image->id_product.'.jpg'))
$res &= @unlink(_PS_TMP_IMG_DIR_.'/product_'.$image->id_product.'.jpg');
if(file_exists(_PS_TMP_IMG_DIR_.'/product_mini_'.$image->id_product.'.jpg'))
$res &= @unlink(_PS_TMP_IMG_DIR_.'/product_mini_'.$image->id_product.'.jpg');
if ($res)
$this->confirmations[] = $this->_conf[7];
else
$this->_errors[] = Tools::displayError('Error on deleting product image');
$this->status = 'ok';
}
protected function _validateSpecificPrice($id_shop, $id_currency, $id_country, $id_group, $id_customer, $price, $from_quantity, $reduction, $reduction_type, $from, $to)
+9 -9
View File
@@ -929,14 +929,8 @@ function refreshImagePositions(imageTable)
var reg = /_[0-9]$/g;
var up_reg = new RegExp("imgPosition=[0-9]+&");
imageTable.find("tbody tr").each(function(i) {
// Update link position
// Up links
$(this).find("td.dragHandle a:first").attr("href", $(this).find("td.dragHandle a:first").attr("href").replace(up_reg, "imgPosition="+ i +"&"));//, "imgPosition="+ (i - 1) +"&"));
// Down links
$(this).find("td.dragHandle a:last").attr("href", $(this).find("td.dragHandle a:last").attr("href").replace(up_reg, "imgPosition="+ (i + 2) +"&"));
// Position image cell
$(this).find("td.positionImage").html(i + 1);
imageTable.find("tbody tr").each(function(i,el) {
$(el).find("td.positionImage").html(i + 1);
});
imageTable.find("tr td.dragHandle a:hidden").show();
imageTable.find("tr td.dragHandle:first a:first").hide();
@@ -944,13 +938,16 @@ function refreshImagePositions(imageTable)
}
function doAdminAjax(data)
function doAdminAjax(data, success_func, error_func)
{
$.ajax(
{
url : 'index.php',
data : data,
success : function(data){
if (success_func)
return success_func(data);
data = $.parseJSON(data);
if(data.confirmations.length != 0)
showSuccessMessage(data.confirmations);
@@ -958,6 +955,9 @@ function doAdminAjax(data)
showErrorMessage(data.error);
},
error : function(data){
if (error_func)
return error_func(data);
alert("[TECHNICAL ERROR]");
}
});