// #PSTEST-1229 - remove virtual combinations

This commit is contained in:
tDidierjean
2012-04-24 13:23:02 +00:00
parent 744df9b3b2
commit dbae669d5f
8 changed files with 73 additions and 472 deletions
@@ -29,15 +29,9 @@
var msg_combination_2 = '{l s='Please choose a value'}';
var msg_combination_3 = '{l s='You can only add one combination per type of attribute'}';
var msg_new_combination = '{l s='New combination'}';
$(document).ready(function(){
{if $product->is_virtual}
$('#virtual_good_attributes').show();
{/if}
});
</script>
{if isset($product->id)}
{if isset($product->id) && !$product->is_virtual}
<input type="hidden" name="submitted_tabs[]" value="Combinations" />
<script type="text/javascript">
var attrs = new Array();
@@ -121,62 +115,6 @@
</td>
</tr>
</table>
<table cellpadding="5" id="virtual_good_attributes" style="width:100%;display:none;">
<tr>
<td colspan="2">
<div style="padding:5px;width:50%;float:left;margin-right:20px;border-right:1px solid #E0D0B1">
<h3>{l s='Virtual product'}</h3>
<p>{l s='Your server\'s maximum upload file size is'}:&nbsp;{$upload_max_filesize}</p>
<label id="virtual_product_file_attribute_label" for="virtual_product_file_attribute" class="t">{l s='Upload a file'}</label>
<p><input id="virtual_product_file_attribute" name="virtual_product_file_attribute" onchange="uploadFile2();" maxlength="'.$this->maxFileSize.'" type="file"></p>
<div id="upload-confirmation2">
<p id="gethtmlink" style="display: none;">{l s='This is the link'} :&nbsp;{$product->productDownload->getHtmlLink(false, true)}
<a id="make_downloadable_product_attribute" onclick="return confirm('{l s='Delete this file' js=1}')" href="index.php?tab=AdminProducts&id_product={$product->productDownload->id_product}&id_category={$id_category}&token={$token}&deleteVirtualProductAttribute=true" class="red">{l s='Delete this file'}</a>
</p>
</div>
<a id="delete_downloadable_product_attribute" style="display:none;" onclick="return confirm('{l s='Delete this file' js=1}')" href="index.php?tab=AdminProducts&id_product={$product->id}&id_category={$id_category}&token={$token}&deleteVirtualProductAttribute=true" class="red">{l s='Delete this file'}</a>
{if $up_filename}
<input type="hidden" id="virtual_product_filename_attribute" name="virtual_product_filename_attribute" value="{$up_filename}" />
{/if}
<p class="block">
<label for="virtual_product_name_attribute" class="t">{l s='Filename'}</label>
<input id="virtual_product_name_attribute" name="virtual_product_name_attribute" style="width:200px" value="" type="text">
<span class="hint" name="help_box" style="display:none;">{l s='The full filename with its extension (e.g. Book.pdf)'}</span>
</p>
</div>
<div id="virtual_good_more_attribute" style="padding:5px;width:40%;float:left;margin-left:10px">
<p class="block">
<label for="virtual_product_nb_downloable" class="t">{l s='Number of downloads'}</label>
<input type="text" id="virtual_product_nb_downloable_attribute" name="virtual_product_nb_downloable_attribute" value="" class="" size="6" />
<span class="hint" name="help_box" style="display:none">{l s='Number of authorized downloads per customer'}</span>
</p>
<p class="block">
<label for="virtual_product_expiration_date_attribute" class="t">{l s='Expiration date'}</label>
<input class="datepicker" type="text" id="virtual_product_expiration_date_attribute" name="virtual_product_expiration_date_attribute" value="" size="11" maxlength="10" autocomplete="off" /> {l s='Format: YYYY-MM-DD'}
<span class="hint" name="help_box" style="display:none">{l s='Leave this blank for no expiration date'}</span>
</p>
<p class="block">
<label for="virtual_product_nb_days" class="t">{l s='Number of days'}</label>
<input type="text" id="virtual_product_nb_days_attribute" name="virtual_product_nb_days_attribute" value="" class="" size="4" /><sup> *</sup>
<span class="hint" name="help_box" style="display:none">{l s='How many days this file can be accessed by customers'} - <em>({l s='Set to zero for unlimited access'} ) </em></span>
</p>
<p class="block">
<label for="virtual_product_is_shareable_attribute" class="t">{l s='is shareable'}</label>
<input type="checkbox" id="virtual_product_is_shareable_attribute" name="virtual_product_is_shareable" value="1" />
<span class="hint" name="help_box" style="display:none">{l s='Specify if the file can be shared'}</span>
</p>
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div class="separation"></div>
</td>
</tr>
</table>
<table>
<tr>
<td style="width:150px;vertical-align:top;text-align:right;padding-right:10px;font-weight:bold;">
-80
View File
@@ -30,9 +30,6 @@ class ProductDownloadCore extends ObjectModel
/** @var integer Product id which download belongs */
public $id_product;
/** @var integer Attribute Product id which download belongs */
public $id_product_attribute;
/** @var string DisplayFilename the name which appear */
public $display_filename;
@@ -67,7 +64,6 @@ class ProductDownloadCore extends ObjectModel
'primary' => 'id_product_download',
'fields' => array(
'id_product' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
'id_product_attribute' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
'display_filename' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'size' => 255),
'filename' => array('type' => self::TYPE_STRING, 'validate' => 'isSha1', 'size' => 255),
'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
@@ -192,64 +188,6 @@ class ProductDownloadCore extends ObjectModel
return self::$_productIds[$id_product];
}
/**
* Return the id_product_download from an id_product
* @since 1.5.0.1
* @param int $id_product Product the id
* @return integer Product the id for this virtual product
*/
public static function getIdFromIdAttribute($id_product, $id_product_attribute)
{
if (!ProductDownload::isFeatureActive())
return false;
if (array_key_exists($id_product_attribute, self::$_productIds))
return self::$_productIds[$id_product];
self::$_productIds[$id_product_attribute] = (int)Db::getInstance()->getValue('
SELECT `id_product_download`
FROM `'._DB_PREFIX_.'product_download`
WHERE `id_product` = '.(int)$id_product.'
AND `id_product_attribute` = '.(int)$id_product_attribute.'
AND `active` = 1'
);
return self::$_productIds[$id_product_attribute];
}
/**
* Return the display filename from a physical filename
*
* @since 1.5.0.1
*
* @param string $filename Filename physically
* @return integer Product the id for this virtual product
*
*/
public static function getAttributeFromIdProduct($id_product)
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT `id_product_download`
FROM `'._DB_PREFIX_.'product_download`
WHERE `id_product` = '.(int)$id_product.' AND `active` = 1');
}
/**
* Return the result from an id_product_attribute
*
* @param int $id_product Product the id
* @param int $id_product_attribute Attribute the id
* @return array result for this virtual product
*/
public static function getAttributeFromIdAttribute($id_product, $id_product_attribute)
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT *
FROM `'._DB_PREFIX_.'product_download`
WHERE `id_product` = '.(int)$id_product.'
AND `id_product_attribute` = '.(int)$id_product_attribute.'
AND `active` = 1');
}
/**
* Return the display filename from a physical filename
*
@@ -283,24 +221,6 @@ class ProductDownloadCore extends ObjectModel
');
}
/**
* Return the filename from an id_product_attribute
*
* @param int $id_product Product the id
* @param int $id_product_attribute Attribute the id
* @return string Filename the filename for this virtual product
*/
public static function getFilenameFromIdAttribute($id_product, $id_product_attribute)
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT `filename`
FROM `'._DB_PREFIX_.'product_download`
WHERE `id_product` = '.(int)$id_product.'
AND `id_product_attribute` = '.(int)$id_product_attribute.'
AND `active` = 1
');
}
/**
* Return the display filename from a physical filename
*
+1 -4
View File
@@ -568,10 +568,7 @@ class OrderCore extends ObjectModel
// Add information for virtual product
if ($row['download_hash'] && !empty($row['download_hash']))
{
if ($row['product_attribute_id'] && !empty($row['product_attribute_id']))
$row['filename'] = ProductDownload::getFilenameFromIdAttribute((int)$row['product_id'], (int)$row['product_attribute_id']);
else
$row['filename'] = ProductDownload::getFilenameFromIdProduct((int)$row['product_id']);
$row['filename'] = ProductDownload::getFilenameFromIdProduct((int)$row['product_id']);
// Get the display filename
$row['display_filename'] = ProductDownload::getFilenameFromFilename($row['filename']);
}
+1 -1
View File
@@ -321,7 +321,7 @@ class OrderHistoryCore extends ObjectModel
$assign = array();
foreach ($virtual_products as $key => $virtual_product)
{
$id_product_download = ProductDownload::getIdFromIdAttribute($virtual_product['product_id'], $virtual_product['product_attribute_id']);
$id_product_download = ProductDownload::getIdFromIdProduct($virtual_product['product_id']);
$product_download = new ProductDownload($id_product_download);
// If this virtual item has an associated file, we'll provide the link to download the file in the email
if ($product_download->display_filename != '')
+1 -4
View File
@@ -150,10 +150,7 @@ class OrderInvoiceCore extends ObjectModel
// Add information for virtual product
if ($row['download_hash'] && !empty($row['download_hash']))
{
if ($row['product_attribute_id'] && !empty($row['product_attribute_id']))
$row['filename'] = ProductDownload::getFilenameFromIdAttribute((int)$row['product_id'], (int)$row['product_attribute_id']);
else
$row['filename'] = ProductDownload::getFilenameFromIdProduct((int)$row['product_id']);
$row['filename'] = ProductDownload::getFilenameFromIdProduct((int)$row['product_id']);
// Get the display filename
$row['display_filename'] = ProductDownload::getFilenameFromFilename($row['filename']);
}
+64 -255
View File
@@ -300,7 +300,7 @@ class AdminProductsControllerCore extends AdminController
public function ajaxProcessDeleteVirtualProduct()
{
if (!($id_product_download = ProductDownload::getIdFromIdAttribute((int)Tools::getValue('id_product'), 0)))
if (!($id_product_download = ProductDownload::getIdFromIdProduct((int)Tools::getValue('id_product'))))
$this->jsonError($this->l('Cannot retrieve file'));
else
{
@@ -312,14 +312,6 @@ class AdminProductsControllerCore extends AdminController
}
}
public function processDeleteVirtualProductAttribute()
{
if (!($id_product_download = ProductDownload::getIdFromIdAttribute((int)Tools::getValue('id_product'), (int)Tools::getValue('id_product_attribute'))))
return false;
$product_download = new ProductDownload((int)$id_product_download);
return $product_download->deleteFile((int)$id_product_download);
}
/**
* Upload new attachment
*
@@ -580,8 +572,6 @@ class AdminProductsControllerCore extends AdminController
if (!Combination::isFeatureActive() || !Tools::getIsset('attribute'))
return;
$is_virtual = (int)Tools::getValue('is_virtual');
if (Validate::isLoadedObject($product = $this->object))
{
if ($this->isProductFieldUpdated('attribute_price') && (!Tools::getIsset('attribute_price') || Tools::getIsset('attribute_price') == null))
@@ -627,7 +617,6 @@ class AdminProductsControllerCore extends AdminController
false);
Hook::exec('actionProductAttributeUpdate', array('id_product_attribute' => (int)$id_product_attribute));
$this->updateDownloadProduct($product, 1, $id_product_attribute);
}
}
}
@@ -657,7 +646,6 @@ class AdminProductsControllerCore extends AdminController
Tools::getValue('attribute_upc'),
Tools::getValue('attribute_minimal_quantity')
);
$this->updateDownloadProduct($product, 0, $id_product_attribute);
}
else
$this->errors[] = Tools::displayError('You do not have permission to').'<hr>'.Tools::displayError('Edit here.');
@@ -672,9 +660,6 @@ class AdminProductsControllerCore extends AdminController
{
if (!$product->cache_default_attribute)
Product::updateDefaultAttribute($product->id);
if (!empty($is_virtual))
Product::updateIsVirtual($product->id);
}
}
}
@@ -926,13 +911,6 @@ class AdminProductsControllerCore extends AdminController
else
$this->errors[] = Tools::displayError('You do not have permission to delete here.');
}
elseif (Tools::getValue('deleteVirtualProductAttribute'))/* Delete a product in the download folder */
{
if ($this->tabAccess['delete'] === '1')
$this->action = 'deleteVirtualProductAttribute';
else
$this->errors[] = Tools::displayError('You do not have permission to delete here.');
}
// Product preview
elseif (Tools::isSubmit('submitAddProductAndPreview'))
{
@@ -1137,14 +1115,6 @@ class AdminProductsControllerCore extends AdminController
if ($id_product && Validate::isUnsignedId($id_product) && Validate::isLoadedObject($product = new Product($id_product)))
{
$product->deleteAttributeCombination((int)$id_product_attribute);
$id_product_download = (int)ProductDownload::getIdFromIdAttribute($id_product, $id_product_attribute);
if ($id_product_download)
{
$product_download = new ProductDownload((int)$id_product_download);
$this->deleteDownloadProduct((int)$id_product_download);
$product_download->deleteFile();
}
$product->checkDefaultAttributes();
if (!$product->hasAttributes())
{
@@ -1209,21 +1179,9 @@ class AdminProductsControllerCore extends AdminController
if ($id_product && Validate::isUnsignedId($id_product) && Validate::isLoadedObject($product = new Product((int)$id_product)))
{
$combinations = $product->getAttributeCombinationsById($id_product_attribute, $this->context->language->id);
$product_download = ProductDownload::getAttributeFromIdAttribute($id_product, $id_product_attribute);
foreach ($combinations as $key => $combination)
{
$combinations[$key]['attributes'][] = array($combination['group_name'], $combination['attribute_name'], $combination['id_attribute']);
// Added fields virtual product
$combinations[$key]['id_product_download'] = count($product_download) ? $product_download[0]['id_product_download'] : '';
$combinations[$key]['display_filename'] = count($product_download) ? $product_download[0]['display_filename'] : '';
$combinations[$key]['filename'] = count($product_download) ? $product_download[0]['filename'] : '';
$combinations[$key]['date_expiration'] = count($product_download) ? $product_download[0]['date_expiration'] : '0000-00-00';
$combinations[$key]['nb_days_accessible'] = count($product_download) ? $product_download[0]['nb_days_accessible'] : 0;
$combinations[$key]['nb_downloadable'] = count($product_download) ? $product_download[0]['nb_downloadable'] : 0;
$combinations[$key]['is_shareable'] = count($product_download) ? $product_download[0]['is_shareable'] : 0;
}
die(Tools::jsonEncode($combinations));
}
}
@@ -1778,74 +1736,28 @@ class AdminProductsControllerCore extends AdminController
* @param object $product Product
* @return bool
*/
public function updateDownloadProduct($product, $edit = 0, $id_product_attribute = null)
public function updateDownloadProduct($product, $edit = 0)
{
$is_virtual_file = (int)Tools::getValue('is_virtual_file');
// add or update a virtual product
if (Tools::getValue('is_virtual_good') == 'true')
{
if (!Tools::getValue('virtual_product_name') && !Tools::getValue('virtual_product_name_attribute') && !empty($is_virtual_file))
{
if (!Tools::getValue('virtual_product_name'))
{
if (!Tools::getValue('virtual_product_name_attribute') && !empty($id_product_attribute))
{
$this->errors[] = $this->l('this field').' <b>'.$this->l('display filename attribute').'</b> '.$this->l('is required');
return false;
}
elseif (!empty($id_product_attribute))
{
$this->errors[] = $this->l('this field').' <b>'.$this->l('display filename').'</b> '.$this->l('is required');
return false;
}
}
}
if (Tools::getValue('virtual_product_nb_days') === false && Tools::getValue('virtual_product_nb_days_attribute') === false && !empty($is_virtual_file))
{
if (!Tools::getValue('virtual_product_nb_days'))
{
if (!Tools::getValue('virtual_product_nb_days_attribute'))
{
if (!empty($edit) && !empty($id_product_attribute))
{
$this->errors[] = $this->l('this field').' <b>'.$this->l('number of days attribute').'</b> '.$this->l('is required');
return false;
}
}
elseif (!empty($id_product_attribute))
{
$this->errors[] = $this->l('this field').' <b>'.$this->l('number of days').'</b> '.$this->l('is required');
return false;
}
}
}
if (Tools::getValue('virtual_product_expiration_date') && !Validate::isDate(Tools::getValue('virtual_product_expiration_date') && !empty($is_virtual_file))
&& Tools::getValue('virtual_product_expiration_date_attribute') && !Validate::isDate(Tools::getValue('virtual_product_expiration_date_attribute'))
)
if (Tools::getValue('virtual_product_expiration_date') && !Validate::isDate(Tools::getValue('virtual_product_expiration_date') && !empty($is_virtual_file)))
{
if (!Tools::getValue('virtual_product_expiration_date'))
{
if (!Tools::getValue('virtual_product_expiration_date_attribute'))
{
$this->errors[] = $this->l('this field').' <b>'.$this->l('expiration date attribute').'</b> '.$this->l('is required');
return false;
}
elseif (!empty($id_product_attribute))
{
$this->errors[] = $this->l('this field').' <b>'.$this->l('expiration date').'</b> '.$this->l('is not valid');
return false;
}
$this->errors[] = $this->l('this field').' <b>'.$this->l('expiration date attribute').'</b> '.$this->l('is required');
return false;
}
}
// Trick's
if ($edit == 1)
{
$id_product_download_attribute = ProductDownload::getIdFromIdAttribute((int)$product->id, $id_product_attribute);
$id_product_download = $id_product_download_attribute ? (int)$id_product_download_attribute : (int)Tools::getValue('virtual_product_id');
$id_product_download = (int)ProductDownload::getIdFromIdProduct((int)$product->id);
if (!$id_product_download)
$id_product_download = (int)Tools::getValue('virtual_product_id');
}
else
$id_product_download = Tools::getValue('virtual_product_id');
@@ -1857,38 +1769,13 @@ class AdminProductsControllerCore extends AdminController
$virtual_product_nb_downloable = Tools::getValue('virtual_product_nb_downloable');
$virtual_product_expiration_date = Tools::getValue('virtual_product_expiration_date');
$is_shareable_attribute = Tools::getValue('virtual_product_is_shareable_attribute');
$virtual_product_name_attribute = Tools::getValue('virtual_product_name_attribute');
$virtual_product_filename_attribute = Tools::getValue('virtual_product_filename_attribute');
$virtual_product_nb_days_attribute = Tools::getValue('virtual_product_nb_days_attribute');
$virtual_product_nb_downloable_attribute = Tools::getValue('virtual_product_nb_downloable_attribute');
$virtual_product_expiration_date_attribute = Tools::getValue('virtual_product_expiration_date_attribute');
if (!empty($is_shareable_attribute))
$is_shareable = $is_shareable_attribute;
if (!empty($virtual_product_name_attribute))
$virtual_product_name = $virtual_product_name_attribute;
if (!empty($virtual_product_nb_days_attribute))
$virtual_product_nb_days = $virtual_product_nb_days_attribute;
if (!empty($virtual_product_nb_downloable_attribute))
$virtual_product_nb_downloable = $virtual_product_nb_downloable_attribute;
if (!empty($virtual_product_expiration_date_attribute))
$virtual_product_expiration_date = $virtual_product_expiration_date_attribute;
if (!empty($virtual_product_filename_attribute))
$filename = $virtual_product_filename_attribute;
elseif ($virtual_product_filename)
if ($virtual_product_filename)
$filename = $virtual_product_filename;
else
$filename = ProductDownload::getNewFilename();
$download = new ProductDownload((int)$id_product_download);
$download->id_product = (int)$product->id;
$download->id_product_attribute = (int)$id_product_attribute;
$download->display_filename = $virtual_product_name;
$download->filename = $filename;
$download->date_add = date('Y-m-d H:i:s');
@@ -1906,8 +1793,9 @@ class AdminProductsControllerCore extends AdminController
/* unactive download product if checkbox not checked */
if ($edit == 1)
{
$id_product_download_attribute = ProductDownload::getIdFromIdAttribute((int)$product->id, (int)$id_product_attribute);
$id_product_download = ($id_product_download_attribute) ? (int)$id_product_download_attribute : (int)Tools::getValue('virtual_product_id');
$id_product_download = (int)ProductDownload::getIdFromIdProduct((int)$product->id);
if (!$id_product_download)
$id_product_download = (int)Tools::getValue('virtual_product_id');
}
else
$id_product_download = ProductDownload::getIdFromIdProduct($product->id);
@@ -1923,18 +1811,6 @@ class AdminProductsControllerCore extends AdminController
return false;
}
public function deleteDownloadProduct($id_product_attribute = null)
{
if (!empty($id_product_attribute))
{
$product_download = new ProductDownload((int)$id_product_attribute);
$product_download->date_expiration = date('Y-m-d H:i:s', time() - 1);
$product_download->active = 0;
return $product_download->save();
}
return false;
}
/**
* Update product accessories
*
@@ -2911,36 +2787,12 @@ class AdminProductsControllerCore extends AdminController
$data->assign('download_product_file_missing', $msg);
$data->assign('download_dir_writable', ProductDownload::checkWritableDir());
if (empty($product->cache_default_attribute))
{
// found in informations and combination : to merge
$data->assign('up_filename', strval(Tools::getValue('virtual_product_filename')));
$display_filename = ($product->productDownload->id > 0) ? $product->productDownload->display_filename : htmlentities(Tools::getValue('virtual_product_name'), ENT_COMPAT, 'UTF-8');
$data->assign('up_filename', strval(Tools::getValue('virtual_product_filename')));
$product->productDownload->nb_downloadable = ($product->productDownload->id > 0) ? $product->productDownload->nb_downloadable : htmlentities(Tools::getValue('virtual_product_nb_downloable'), ENT_COMPAT, 'UTF-8');
$product->productDownload->date_expiration = ($product->productDownload->id > 0) ? ((!empty($product->productDownload->date_expiration) && $product->productDownload->date_expiration != '0000-00-00 00:00:00') ? date('Y-m-d', strtotime($product->productDownload->date_expiration)) : '' ) : htmlentities(Tools::getValue('virtual_product_expiration_date'), ENT_COMPAT, 'UTF-8');
$product->productDownload->nb_days_accessible = ($product->productDownload->id > 0) ? $product->productDownload->nb_days_accessible : htmlentities(Tools::getValue('virtual_product_nb_days'), ENT_COMPAT, 'UTF-8');
$product->productDownload->is_shareable = $product->productDownload->id > 0 && $product->productDownload->is_shareable;
}
else
{
$error = '';
$product_attribute = ProductDownload::getAttributeFromIdProduct($this->getFieldValue($product, 'id'));
foreach ($product_attribute as $p)
{
$product_download_attribute = new ProductDownload($p['id_product_download']);
$exists_file2 = realpath(_PS_DOWNLOAD_DIR_).'/'.$product_download_attribute->filename;
if (!file_exists($exists_file2) && !empty($product_download_attribute->id_product_attribute))
{
$msg = sprintf(Tools::displayError('This file "%s" is missing'), $product_download_attribute->display_filename);
$error .= '<p class="alert" id="file_missing">
<b>'.$msg.' :<br/>
'.realpath(_PS_DOWNLOAD_DIR_).'/'.$product_download_attribute->filename.'</b>
</p>';
}
}
$data->assign('error_product_download', $error);
}
$product->productDownload->nb_downloadable = ($product->productDownload->id > 0) ? $product->productDownload->nb_downloadable : htmlentities(Tools::getValue('virtual_product_nb_downloable'), ENT_COMPAT, 'UTF-8');
$product->productDownload->date_expiration = ($product->productDownload->id > 0) ? ((!empty($product->productDownload->date_expiration) && $product->productDownload->date_expiration != '0000-00-00 00:00:00') ? date('Y-m-d', strtotime($product->productDownload->date_expiration)) : '' ) : htmlentities(Tools::getValue('virtual_product_expiration_date'), ENT_COMPAT, 'UTF-8');
$product->productDownload->nb_days_accessible = ($product->productDownload->id > 0) ? $product->productDownload->nb_days_accessible : htmlentities(Tools::getValue('virtual_product_nb_days'), ENT_COMPAT, 'UTF-8');
$product->productDownload->is_shareable = $product->productDownload->id > 0 && $product->productDownload->is_shareable;
$data->assign('ad', dirname($_SERVER['PHP_SELF']));
$data->assign('product', $product);
@@ -3429,57 +3281,57 @@ class AdminProductsControllerCore extends AdminController
}
$data = $this->createTemplate($this->tpl_form);
if (Validate::isLoadedObject($product))
{
$attribute_js = array();
$attributes = Attribute::getAttributes($this->context->language->id, true);
foreach ($attributes as $k => $attribute)
$attribute_js[$attribute['id_attribute_group']][$attribute['id_attribute']] = $attribute['name'];
$currency = $this->context->currency;
$data->assign('attributeJs', $attribute_js);
$data->assign('attributes_groups', AttributeGroup::getAttributesGroups($this->context->language->id));
$default_country = new Country((int)Configuration::get('PS_COUNTRY_DEFAULT'));
$product->productDownload = new ProductDownload();
$id_product_download = (int)$product->productDownload->getIdFromIdProduct($this->getFieldValue($product, 'id'));
if (!empty($id_product_download))
$product->productDownload = new ProductDownload($id_product_download);
// $data->assign('productDownload', $product_download);
$data->assign('currency', $currency);
$images = Image::getImages($this->context->language->id, $product->id);
$data->assign('tax_exclude_option', Tax::excludeTaxeOption());
$data->assign('ps_weight_unit', Configuration::get('PS_WEIGHT_UNIT'));
$data->assign('ps_use_ecotax', Configuration::get('PS_USE_ECOTAX'));
$data->assign('field_value_unity', $this->getFieldValue($product, 'unity'));
$data->assign('reasons', $reasons = StockMvtReason::getStockMvtReasons($this->context->language->id));
$data->assign('ps_stock_mvt_reason_default', $ps_stock_mvt_reason_default = Configuration::get('PS_STOCK_MVT_REASON_DEFAULT'));
$data->assign('minimal_quantity', $this->getFieldValue($product, 'minimal_quantity') ? $this->getFieldValue($product, 'minimal_quantity') : 1);
$data->assign('available_date', ($this->getFieldValue($product, 'available_date') != 0) ? stripslashes(htmlentities(Tools::displayDate($this->getFieldValue($product, 'available_date'), $this->context->language->id))) : '0000-00-00');
$i = 0;
$data->assign('imageType', ImageType::getByNameNType('small', 'products'));
$data->assign('imageWidth', (isset($image_type['width']) ? (int)($image_type['width']) : 64) + 25);
foreach ($images as $k => $image)
if ($product->is_virtual)
{
$images[$k]['obj'] = new Image($image['id_image']);
++$i;
$data->assign('product', $product);
$this->displayWarning($this->l('A virtual product cannot have combinations.'));
}
$data->assign('images', $images);
else
{
$attribute_js = array();
$attributes = Attribute::getAttributes($this->context->language->id, true);
foreach ($attributes as $k => $attribute)
$attribute_js[$attribute['id_attribute_group']][$attribute['id_attribute']] = $attribute['name'];
$currency = $this->context->currency;
$data->assign('attributeJs', $attribute_js);
$data->assign('attributes_groups', AttributeGroup::getAttributesGroups($this->context->language->id));
// @todo
$data->assign('up_filename', strval(Tools::getValue('virtual_product_filename_attribute')));
$data->assign($this->tpl_form_vars);
$data->assign(array(
'list' => $this->renderListAttributes($id_product_download, $product, $currency),
'product' => $product,
'id_category' => $product->getDefaultCategory(),
'token_generator' => Tools::getAdminTokenLite('AdminAttributeGenerator')
));
$data->assign('currency', $currency);
$images = Image::getImages($this->context->language->id, $product->id);
$data->assign('tax_exclude_option', Tax::excludeTaxeOption());
$data->assign('ps_weight_unit', Configuration::get('PS_WEIGHT_UNIT'));
$data->assign('ps_use_ecotax', Configuration::get('PS_USE_ECOTAX'));
$data->assign('field_value_unity', $this->getFieldValue($product, 'unity'));
$data->assign('reasons', $reasons = StockMvtReason::getStockMvtReasons($this->context->language->id));
$data->assign('ps_stock_mvt_reason_default', $ps_stock_mvt_reason_default = Configuration::get('PS_STOCK_MVT_REASON_DEFAULT'));
$data->assign('minimal_quantity', $this->getFieldValue($product, 'minimal_quantity') ? $this->getFieldValue($product, 'minimal_quantity') : 1);
$data->assign('available_date', ($this->getFieldValue($product, 'available_date') != 0) ? stripslashes(htmlentities(Tools::displayDate($this->getFieldValue($product, 'available_date'), $this->context->language->id))) : '0000-00-00');
$i = 0;
$data->assign('imageType', ImageType::getByNameNType('small', 'products'));
$data->assign('imageWidth', (isset($image_type['width']) ? (int)($image_type['width']) : 64) + 25);
foreach ($images as $k => $image)
{
$images[$k]['obj'] = new Image($image['id_image']);
++$i;
}
$data->assign('images', $images);
$data->assign($this->tpl_form_vars);
$data->assign(array(
'list' => $this->renderListAttributes($product, $currency),
'product' => $product,
'id_category' => $product->getDefaultCategory(),
'token_generator' => Tools::getAdminTokenLite('AdminAttributeGenerator')
));
}
}
else
{
@@ -3490,7 +3342,7 @@ class AdminProductsControllerCore extends AdminController
$this->tpl_form_vars['custom_form'] = $data->fetch();
}
public function renderListAttributes($id_product_download, $product, $currency)
public function renderListAttributes($product, $currency)
{
$this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')));
$this->addRowAction('edit');
@@ -3508,16 +3360,6 @@ class AdminProductsControllerCore extends AdminController
'upc' => array('title' => $this->l('UPC'), 'align' => 'left', 'width' => 70)
);
$product_download = new ProductDownload($id_product_download);
if ($id_product_download && !empty($product_download->display_filename))
{
$this->fields_list['Filename'] = array('title' => $this->l('Filename'), 'align' => 'center', 'width' => 70);
$this->fields_list['nb_downloadable'] = array('title' => $this->l('Number of downloads'), 'align' => 'center', 'width' => 70);
$this->fields_list['date_expiration'] = array('title' => $this->l('Number of days'), 'align' => 'center', 'width' => 70);
$this->fields_list['is_shareable'] = array('title' => $this->l('Share'), 'align' => 'center', 'width' => 70);
}
if ($product->id)
{
/* Build attributes combinations */
@@ -3571,39 +3413,6 @@ class AdminProductsControllerCore extends AdminController
$comb_array[$id_product_attribute]['name'] = 'is_default';
$comb_array[$id_product_attribute]['color'] = $color_by_default;
}
$id_product_download = $product->productDownload->getIdFromIdAttribute((int)$product->id, (int)$id_product_attribute);
if ($id_product_download)
$product->productDownload = new ProductDownload($id_product_download);
$available_date_attribute = substr($product->productDownload->date_expiration, 0, -9);
if ($available_date_attribute == '0000-00-00')
$available_date_attribute = '';
if ($id_product_download && !empty($product->productDownload->display_filename))
{
if ($product->productDownload->is_shareable == 1)
$is_shareable = $this->l('Yes');
else
$is_shareable = $this->l('No');
$comb_array[$id_product_attribute]['link'] = $product->productDownload->getHtmlLink(false, true);
$comb_array[$id_product_attribute]['nb_downloadable'] = $product->productDownload->nb_downloadable;
$comb_array[$id_product_attribute]['is_shareable'] = $is_shareable;
}
$exists_file = realpath(_PS_DOWNLOAD_DIR_).'/'.$product->productDownload->filename;
if ($product->productDownload->id && file_exists($exists_file))
$filename = $product->productDownload->filename;
else
$filename = '';
//$comb_array[$id_product_attribute]['productDownload'] = $product->productDownload;
$comb_array[$id_product_attribute]['id_product_download'] = $id_product_download;
$comb_array[$id_product_attribute]['date_expiration'] = $available_date_attribute;
$comb_array[$id_product_attribute]['filename'] = $filename;
}
}
}
+2
View File
@@ -141,3 +141,5 @@ PRIMARY KEY (`id_supplier`, `id_shop`),
KEY `id_shop` (`id_shop`)
) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8;
DROP TABLE `PREFIX_supplier_group_shop`;
ALTER TABLE `PREFIX_product_download` DROP COLUMN `id_product_attribute`;
+3 -65
View File
@@ -78,12 +78,7 @@ product_tabs['Combinations'] = new function(){
var upc = data[0]['upc'];
var minimal_quantity = data[0]['minimal_quantity'];
var available_date = data[0]['available_date'];
var virtual_product_name_attribute = data[0]['display_filename'];
var virtual_product_filename_attribute = data[0]['display_filename'];
var virtual_product_nb_downloable = data[0]['nb_downloadable'];
var virtual_product_expiration_date_attribute = data[0]['date_expiration'];
var virtual_product_nb_days = data[0]['nb_days_accessible'];
var is_shareable = data[0]['is_shareable'];
if (wholesale_price != 0 && wholesale_price > 0)
{
$("#attribute_wholesale_price_full").show();
@@ -109,13 +104,7 @@ product_tabs['Combinations'] = new function(){
eco_tax,
upc,
minimal_quantity,
available_date,
virtual_product_name_attribute,
virtual_product_filename_attribute,
virtual_product_nb_downloable,
virtual_product_expiration_date_attribute,
virtual_product_nb_days,
is_shareable
available_date
);
calcImpactPriceTI();
}
@@ -224,9 +213,7 @@ product_tabs['Combinations'] = new function(){
};
this.fillCombination = function(wholesale_price, price_impact, weight_impact, unit_impact, reference,
ean, quantity, image, old_attr, id_product_attribute, default_attribute, eco_tax, upc, minimal_quantity, available_date,
virtual_product_name_attribute, virtual_product_filename_attribute, virtual_product_nb_downloable, virtual_product_expiration_date_attribute,
virtual_product_nb_days, is_shareable)
ean, quantity, image, old_attr, id_product_attribute, default_attribute, eco_tax, upc, minimal_quantity, available_date)
{
var link = '';
self.init_elems();
@@ -240,12 +227,6 @@ product_tabs['Combinations'] = new function(){
getE('attribute_reference').value = reference;
getE('virtual_product_name_attribute').value = virtual_product_name_attribute;
getE('virtual_product_nb_downloable_attribute').value = virtual_product_nb_downloable;
getE('virtual_product_expiration_date_attribute').value = virtual_product_nb_downloable;
getE('virtual_product_expiration_date_attribute').value = virtual_product_expiration_date_attribute;
getE('virtual_product_nb_days_attribute').value = virtual_product_nb_days;
getE('attribute_ean13').value = ean;
getE('attribute_upc').value = upc;
getE('attribute_wholesale_price').value = Math.abs(wholesale_price);
@@ -307,15 +288,6 @@ product_tabs['Combinations'] = new function(){
getE('attribute_unit_impact').selectedIndex = 1;
}
if (is_shareable > 0)
$("#virtual_product_is_shareable_attribute").attr("checked", "checked");
if (id_product_attribute != '' && virtual_product_filename_attribute != '')
$("#gethtmlink").show();
link = $("#make_downloadable_product_attribute").attr('href');
$("#make_downloadable_product_attribute").attr('href', link+"&id_product_attribute="+id_product_attribute);
$("#virtual_product_filename_attribute").val(virtual_product_filename_attribute);
$("#add_new_combination").show();
/* Reset all combination images */
@@ -832,7 +804,6 @@ product_tabs['Informations'] = new function(){
$('#is_virtual_good').removeAttr('checked');
$('div.is_virtual_good').hide();
$('#is_virtual').val(0);
$("#virtual_good_attributes").hide();
product_type = $(this).val();
@@ -867,7 +838,6 @@ product_tabs['Informations'] = new function(){
$('#is_virtual_good').attr('checked', true);
$('#virtual_good').show();
$('#is_virtual').val(1);
$("#virtual_good_attributes").show();
});
tabs_manager.onLoad('Quantities', function(){
@@ -894,38 +864,6 @@ product_tabs['Informations'] = new function(){
handleSaveButtons();
});
};
/*'setup_tinymce': function(){
// change each by click to load only on click
$(".autoload_rte").each(function(e){
tinySetup({
mode :"exact",
editor_selector :"autoload_rte",
elements : $(this).attr("id"),
theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,,|,forecolor,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,media,|,ltr,rtl,|,fullscreen",
theme_advanced_buttons4 : "styleprops,|,cite,abbr,acronym,del,ins,attribs,pagebreak",
setup : function(ed) {
//Count the total number of the field
ed.onKeyUp.add(function(ed, e) {
tinyMCE.triggerSave();
textarea = $('#'+ed.id);
max = textarea.parent('div').find('span.counter').attr('max');
if (max != 'none')
{
textarea_value = textarea.val();
count = stripHTML(textarea_value).length;
rest = max - count;
if (rest < 0)
textarea.parent('div').find('span.counter').html('<span style="color:red;"> ' + mce_maximum + ' ' + max + ' ' + mce_characters + ' : ' + rest + '</span>');
else
textarea.parent('div').find('span.counter').html(' ');
}
});
}
});
});
},*/
this.onReady = function(){
self.bindAvailableForOrder();
self.bindTagImage();