// adding button in toolbar for AdminProductsController

git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@10903 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
lLefevre
2011-12-05 11:15:21 +00:00
parent 6f1ecda602
commit 9e6940eb4e
10 changed files with 805 additions and 828 deletions
+3 -3
View File
@@ -165,9 +165,9 @@ a.module_toggle_all{color: #268CCD;}
.toolbarBox .process-icon-duplicate { background-image: url(process-icon-duplicate.png);} .toolbarBox .process-icon-duplicate { background-image: url(process-icon-duplicate.png);}
.toolbarBox .process-icon-preview { background-image: url(process-icon-preview.png);} .toolbarBox .process-icon-preview { background-image: url(process-icon-preview.png);}
.toolbarBox .process-icon-stats { background-image: url(process-icon-stats.png);} .toolbarBox .process-icon-stats { background-image: url(process-icon-stats.png);}
.toolbarBox .process-icon-cancel { background-image: url(process-icon-cancel.png);} .toolbarBox .process-icon-cancel, .toolbarBox .toolbar-cancel { background-image: url(process-icon-cancel.png);}
.toolbarBox .process-icon-new, .toolbarBox .process-icon-newAttributes{ background-image: url(process-icon-new.png);} .toolbarBox .process-icon-new, .toolbarBox .toolbar-new{ background-image: url(process-icon-new.png);}
.toolbarBox .process-icon-save, .toolbarBox .process-icon-save-settings { background-image: url(process-icon-save.png);} .toolbarBox .process-icon-save { background-image: url(process-icon-save.png);}
.toolbarBox .process-icon-save-and-stay { background-image: url(process-icon-save-and-stay.png);} .toolbarBox .process-icon-save-and-stay { background-image: url(process-icon-save-and-stay.png);}
.toolbarBox .process-icon-edit { background-image: url(process-icon-edit.png);} .toolbarBox .process-icon-edit { background-image: url(process-icon-edit.png);}
.toolbarBox .process-icon-back { background-image: url(process-icon-back.png);} .toolbarBox .process-icon-back { background-image: url(process-icon-back.png);}
@@ -44,6 +44,9 @@
var s_impact = $('#span_impact'); var s_impact = $('#span_impact');
var s_impact2 = $('#span_weight_impact'); var s_impact2 = $('#span_weight_impact');
$('#desc-product-newCombinaison').attr('add', '{l s='Add a new combination'}');
$('#desc-product-newCombinaison').attr('cancel', '{l s='Cancel the combination'}');
init_elems(); init_elems();
</script> </script>
@@ -73,11 +73,9 @@
<div class="separation"></div> {l s='or go to'} <div class="separation"></div> {l s='or go to'}
&nbsp;<a class="button bt-icon" href="index.php?tab=AdminAttributeGenerator&id_product={$product->id}&attributegenerator&token={$token_generator}" onclick="return confirm('{l s='Are you sure you want to delete entered product information?'}');"><img src="../img/admin/appearance.gif" alt="combinations_generator" class="middle" title="{l s='Product combinations generator'}" /><span>{l s='Product combinations generator'}</span></a> &nbsp;<a class="button bt-icon" href="index.php?tab=AdminAttributeGenerator&id_product={$product->id}&attributegenerator&token={$token_generator}" onclick="return confirm('{l s='Are you sure you want to delete entered product information?'}');"><img src="../img/admin/appearance.gif" alt="combinations_generator" class="middle" title="{l s='Product combinations generator'}" /><span>{l s='Product combinations generator'}</span></a>
<div class="separation"></div> <div class="separation"></div>
<a class="button bt-icon" href="#" onclick="$('#add_new_combination').slideToggle();return false;">
<img src="../img/admin/add.gif" alt="" /><span>{l s='Add a new combination'}</span>
</a>
<div id="add_new_combination" style="display: none;"> <div id="add_new_combination" style="display: none;">
<input type="hidden" name="id_product_attribute" id="id_product_attribute" value="0" />
<table cellpadding="5" style="width:100%"> <table cellpadding="5" style="width:100%">
<tr> <tr>
<td style="width:150px;vertical-align:top;text-align:right;padding-right:10px;font-weight:bold;" valign="top"> <td style="width:150px;vertical-align:top;text-align:right;padding-right:10px;font-weight:bold;" valign="top">
@@ -324,7 +322,7 @@
<td style="width:150px">&nbsp;</td> <td style="width:150px">&nbsp;</td>
<td style="padding-bottom:5px;"> <td style="padding-bottom:5px;">
<span style="float: left;"> <span style="float: left;">
<input type="submit" name="submitProductAttribute" id="submitProductAttribute" value="{l s='Add this combination'}" class="button" onclick="attr_selectall(); this.form.action += '&addproduct&tabs=3';" /> <input type="submit" name="submitProductAttribute" id="submitProductAttribute" value="{l s='Add this combination'}" class="button" onclick="attr_selectall(); this.form.action += '&addproduct&tabs=3';" add="{l s='Add this combination'}" update="{l s='Update this combination'}" />
</span> </span>
<span id="ResetSpan" style="float: left; margin-left: 8px; display: none;"> <span id="ResetSpan" style="float: left; margin-left: 8px; display: none;">
<input type="reset" name="ResetBtn" id="ResetBtn" onclick="init_elems(); getE('submitProductAttribute').value ='{l s='Add this attributes group'}';getE('id_product_attribute').value = 0; $('#ResetSpan').slideToggle();" class="button" value="{l s='Cancel modification'}" /> <input type="reset" name="ResetBtn" id="ResetBtn" onclick="init_elems(); getE('submitProductAttribute').value ='{l s='Add this attributes group'}';getE('id_product_attribute').value = 0; $('#ResetSpan').slideToggle();" class="button" value="{l s='Cancel modification'}" />
@@ -68,6 +68,7 @@ var tabs_toolbar_save_buttons = [];
{/foreach} {/foreach}
$(document).ready(function(){ $(document).ready(function(){
$('#desc-product-newCombinaison').hide();
{* submenu binding *} {* submenu binding *}
$(".tab-page").click(function(e){ $(".tab-page").click(function(e){
e.preventDefault(); e.preventDefault();
@@ -127,7 +128,11 @@ $(document).ready(function(){
var languages = new Array(); var languages = new Array();
if (id == "4-Combinations") if (id == "4-Combinations")
{
$('#desc-product-new').hide();
$('#desc-product-newCombinaison').show();
populate_attrs(); populate_attrs();
}
if (id == '7-Attachments') if (id == '7-Attachments')
{ {
$("#addAttachment").live('click', function() { $("#addAttachment").live('click', function() {
+7 -7
View File
@@ -28,18 +28,18 @@
<ul class="cc_button"> <ul class="cc_button">
{foreach from=$toolbar_btn item=btn key=k} {foreach from=$toolbar_btn item=btn key=k}
<li> <li>
<a id="desc-{$table}-{$btn.imgclass|default:$k}" class="toolbar_btn" href="{$btn.href}" title="{$btn.desc}" {if isset($btn.target) && $btn.target}target="_blank"{/if}> <a id="desc-{$table}-{$btn.imgclass|default:$k}" class="toolbar_btn" {if isset($btn.href)}href="{$btn.href}"{/if} title="{$btn.desc}" {if isset($btn.target) && $btn.target}target="_blank"{/if}>
<span class="process-icon-{$btn.imgclass|default:$k} {$btn.class|default:'' }" ></span> <span class="process-icon-{$btn.imgclass|default:$k} {$btn.class|default:'' }" ></span>
<div>{$btn.desc}</div> <div>{$btn.desc}</div>
</a> </a>
</li> </li>
{if isset($ps_help_context) && $ps_help_context} {if isset($ps_help_context) && $ps_help_context}
<li class="help-context" style="display:none"> <li class="help-context" style="display:none">
<a id="desc-{$table}-help" class="toolbar_btn" href="#" title="{l s='Help'}"> <a id="desc-{$table}-help" class="toolbar_btn" href="#" title="{l s='Help'}">
<span class="process-icon-help"></span> <span class="process-icon-help"></span>
<div>{l s='Help'}</div> <div>{l s='Help'}</div>
</a> </a>
</li> </li>
{/if} {/if}
{/foreach} {/foreach}
</ul> </ul>
@@ -426,7 +426,8 @@ class AdminAttributesGroupsControllerCore extends AdminController
); );
$this->toolbar_btn['newAttributes'] = array( $this->toolbar_btn['newAttributes'] = array(
'href' => self::$currentIndex.'&amp;updateattribute&amp;token='.$this->token, 'href' => self::$currentIndex.'&amp;updateattribute&amp;token='.$this->token,
'desc' => $this->l('Add new Attributes') 'desc' => $this->l('Add new Attributes'),
'class' => 'toolbar-new'
); );
} }
} }
+83 -69
View File
@@ -215,16 +215,16 @@ class AdminProductsControllerCore extends AdminController
{ {
if (!($id_product_download = ProductDownload::getIdFromIdAttribute((int)Tools::getValue('id_product'), 0))) if (!($id_product_download = ProductDownload::getIdFromIdAttribute((int)Tools::getValue('id_product'), 0)))
return false; return false;
$productDownload = new ProductDownload((int)($id_product_download)); $product_download = new ProductDownload((int)($id_product_download));
return $productDownload->deleteFile((int)($id_product_download)); return $product_download->deleteFile((int)($id_product_download));
} }
public function deleteVirtualProductAttribute() public function deleteVirtualProductAttribute()
{ {
if (!($id_product_download = ProductDownload::getIdFromIdAttribute((int)Tools::getValue('id_product'), (int) Tools::getValue('id_product_attribute')))) if (!($id_product_download = ProductDownload::getIdFromIdAttribute((int)Tools::getValue('id_product'), (int) Tools::getValue('id_product_attribute'))))
return false; return false;
$productDownload = new ProductDownload((int)($id_product_download)); $product_download = new ProductDownload((int)($id_product_download));
return $productDownload->deleteFile((int)($id_product_download)); return $product_download->deleteFile((int)($id_product_download));
} }
/** /**
@@ -328,7 +328,7 @@ class AdminProductsControllerCore extends AdminController
$this->_errors[] = Tools::displayError('Invalid file name'); $this->_errors[] = Tools::displayError('Invalid file name');
if (Tools::strlen($attachment->file_name) > 128) if (Tools::strlen($attachment->file_name) > 128)
$this->_errors[] = Tools::displayError('File name too long'); $this->_errors[] = Tools::displayError('File name too long');
if (!sizeof($this->_errors)) if (!count($this->_errors))
{ {
$attachment->add(); $attachment->add();
$this->redirect_after = self::$currentIndex.'&id_product='.(int)(Tools::getValue($this->identifier)).'&id_category='.(int)(Tools::getValue('id_category')).'&addproduct&conf=4&tabs=6&token='.($token ? $token : $this->token); $this->redirect_after = self::$currentIndex.'&id_product='.(int)(Tools::getValue($this->identifier)).'&id_category='.(int)(Tools::getValue('id_category')).'&addproduct&conf=4&tabs=6&token='.($token ? $token : $this->token);
@@ -420,7 +420,7 @@ class AdminProductsControllerCore extends AdminController
if (Validate::isLoadedObject($object = $this->loadObject()) && isset($this->fieldImageSettings)) if (Validate::isLoadedObject($object = $this->loadObject()) && isset($this->fieldImageSettings))
{ {
// check if request at least one object with noZeroObject // check if request at least one object with noZeroObject
if (isset($object->noZeroObject) && sizeof($taxes = call_user_func(array($this->className, $object->noZeroObject))) <= 1) if (isset($object->noZeroObject) && count($taxes = call_user_func(array($this->className, $object->noZeroObject))) <= 1)
$this->_errors[] = Tools::displayError('You need at least one object.').' <b>'.$this->table.'</b><br />'.Tools::displayError('You cannot delete all of the items.'); $this->_errors[] = Tools::displayError('You need at least one object.').' <b>'.$this->table.'</b><br />'.Tools::displayError('You cannot delete all of the items.');
else else
{ {
@@ -457,7 +457,7 @@ class AdminProductsControllerCore extends AdminController
if (isset($object->noZeroObject) && if (isset($object->noZeroObject) &&
// Check if all object will be deleted // Check if all object will be deleted
(sizeof(call_user_func(array($this->className, $object->noZeroObject))) <= 1 || sizeof($_POST[$this->table.'Box']) == sizeof(call_user_func(array($this->className, $object->noZeroObject))))) (count(call_user_func(array($this->className, $object->noZeroObject))) <= 1 || count($_POST[$this->table.'Box']) == count(call_user_func(array($this->className, $object->noZeroObject)))))
$this->_errors[] = Tools::displayError('You need at least one object.').' <b>'.$this->table.'</b><br />'.Tools::displayError('You cannot delete all of the items.'); $this->_errors[] = Tools::displayError('You need at least one object.').' <b>'.$this->table.'</b><br />'.Tools::displayError('You cannot delete all of the items.');
else else
{ {
@@ -548,10 +548,10 @@ class AdminProductsControllerCore extends AdminController
{ {
if (!isset($_POST['attribute_price']) || $_POST['attribute_price'] == null) if (!isset($_POST['attribute_price']) || $_POST['attribute_price'] == null)
$this->_errors[] = Tools::displayError('Attribute price required.'); $this->_errors[] = Tools::displayError('Attribute price required.');
if (!isset($_POST['attribute_combinaison_list']) || !sizeof($_POST['attribute_combinaison_list'])) if (!isset($_POST['attribute_combinaison_list']) || !count($_POST['attribute_combinaison_list']))
$this->_errors[] = Tools::displayError('You must add at least one attribute.'); $this->_errors[] = Tools::displayError('You must add at least one attribute.');
if (!sizeof($this->_errors)) if (!count($this->_errors))
{ {
if (!isset($_POST['attribute_wholesale_price'])) $_POST['attribute_wholesale_price'] = 0; if (!isset($_POST['attribute_wholesale_price'])) $_POST['attribute_wholesale_price'] = 0;
if (!isset($_POST['attribute_price_impact'])) $_POST['attribute_price_impact'] = 0; if (!isset($_POST['attribute_price_impact'])) $_POST['attribute_price_impact'] = 0;
@@ -560,7 +560,7 @@ class AdminProductsControllerCore extends AdminController
if (Tools::getValue('attribute_default')) if (Tools::getValue('attribute_default'))
$product->deleteDefaultAttributes(); $product->deleteDefaultAttributes();
// Change existing one // Change existing one
if ($id_product_attribute = (int)(Tools::getValue('id_product_attribute'))) if ($id_product_attribute = (int)Tools::getValue('id_product_attribute'))
{ {
if ($this->tabAccess['edit'] === '1') if ($this->tabAccess['edit'] === '1')
{ {
@@ -629,12 +629,12 @@ class AdminProductsControllerCore extends AdminController
else else
$this->_errors[] = Tools::displayError('You do not have permission to').'<hr>'.Tools::displayError('Edit here.'); $this->_errors[] = Tools::displayError('You do not have permission to').'<hr>'.Tools::displayError('Edit here.');
} }
if (!sizeof($this->_errors)) if (!count($this->_errors))
{ {
$product->addAttributeCombinaison($id_product_attribute, Tools::getValue('attribute_combinaison_list')); $product->addAttributeCombinaison($id_product_attribute, Tools::getValue('attribute_combinaison_list'));
$product->checkDefaultAttributes(); $product->checkDefaultAttributes();
} }
if (!sizeof($this->_errors)) if (!count($this->_errors))
{ {
if (!$product->cache_default_attribute) if (!$product->cache_default_attribute)
Product::updateDefaultAttribute($product->id); Product::updateDefaultAttribute($product->id);
@@ -709,7 +709,7 @@ class AdminProductsControllerCore extends AdminController
} }
} }
} }
if (!sizeof($this->_errors)) if (!count($this->_errors))
$this->redirect_after = self::$currentIndex.'&id_product='.(int)$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&action=Features&tabs=4&conf=4&token='.($token ? $token : $this->token); $this->redirect_after = self::$currentIndex.'&id_product='.(int)$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&action=Features&tabs=4&conf=4&token='.($token ? $token : $this->token);
} }
else else
@@ -752,7 +752,7 @@ class AdminProductsControllerCore extends AdminController
if (!$specificPrice->update()) if (!$specificPrice->update())
$this->_errors = Tools::displayError('An error occurred while updating the specific price.'); $this->_errors = Tools::displayError('An error occurred while updating the specific price.');
} }
if (!sizeof($this->_errors)) if (!count($this->_errors))
$this->redirect_after = self::$currentIndex.'&id_product='.(int)(Tools::getValue('id_product')).'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&update'.$this->table.'&tabs=2&token='.($token ? $token : $this->token); $this->redirect_after = self::$currentIndex.'&id_product='.(int)(Tools::getValue('id_product')).'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&update'.$this->table.'&tabs=2&token='.($token ? $token : $this->token);
} }
else else
@@ -844,14 +844,14 @@ class AdminProductsControllerCore extends AdminController
{ {
if (!$product->createLabels((int)($_POST['uploadable_files']) - (int)($product->uploadable_files), (int)($_POST['text_fields']) - (int)($product->text_fields))) if (!$product->createLabels((int)($_POST['uploadable_files']) - (int)($product->uploadable_files), (int)($_POST['text_fields']) - (int)($product->text_fields)))
$this->_errors[] = Tools::displayError('An error occurred while creating customization fields.'); $this->_errors[] = Tools::displayError('An error occurred while creating customization fields.');
if (!sizeof($this->_errors) && !$product->updateLabels()) if (!count($this->_errors) && !$product->updateLabels())
$this->_errors[] = Tools::displayError('An error occurred while updating customization.'); $this->_errors[] = Tools::displayError('An error occurred while updating customization.');
$product->uploadable_files = (int)($_POST['uploadable_files']); $product->uploadable_files = (int)($_POST['uploadable_files']);
$product->text_fields = (int)($_POST['text_fields']); $product->text_fields = (int)($_POST['text_fields']);
$product->customizable = ((int)($_POST['uploadable_files']) > 0 || (int)($_POST['text_fields']) > 0) ? 1 : 0; $product->customizable = ((int)($_POST['uploadable_files']) > 0 || (int)($_POST['text_fields']) > 0) ? 1 : 0;
if (!sizeof($this->_errors) && !$product->update()) if (!count($this->_errors) && !$product->update())
$this->_errors[] = Tools::displayError('An error occurred while updating customization configuration.'); $this->_errors[] = Tools::displayError('An error occurred while updating customization configuration.');
if (!sizeof($this->_errors)) if (!count($this->_errors))
$this->redirect_after = self::$currentIndex.'&id_product='.$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=5&token='.($token ? $token : $this->token); $this->redirect_after = self::$currentIndex.'&id_product='.$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=5&token='.($token ? $token : $this->token);
} }
else else
@@ -869,9 +869,9 @@ class AdminProductsControllerCore extends AdminController
foreach ($_POST as $field => $value) foreach ($_POST as $field => $value)
if (strncmp($field, 'label_', 6) == 0 && !Validate::isLabel($value)) if (strncmp($field, 'label_', 6) == 0 && !Validate::isLabel($value))
$this->_errors[] = Tools::displayError('Label fields are invalid'); $this->_errors[] = Tools::displayError('Label fields are invalid');
if (!sizeof($this->_errors) && !$product->updateLabels()) if (!count($this->_errors) && !$product->updateLabels())
$this->_errors[] = Tools::displayError('An error occurred while updating customization.'); $this->_errors[] = Tools::displayError('An error occurred while updating customization.');
if (!sizeof($this->_errors)) if (!count($this->_errors))
$this->redirect_after = self::$currentIndex.'&id_product='.$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=5&token='.($token ? $token : $this->token); $this->redirect_after = self::$currentIndex.'&id_product='.$product->id.'&id_category='.(!empty($_REQUEST['id_category'])?$_REQUEST['id_category']:'1').'&add'.$this->table.'&tabs=5&token='.($token ? $token : $this->token);
} }
else else
@@ -945,12 +945,11 @@ class AdminProductsControllerCore extends AdminController
$id_product_download = (int)ProductDownload::getIdFromIdAttribute($id_product, $id_product_attribute); $id_product_download = (int)ProductDownload::getIdFromIdAttribute($id_product, $id_product_attribute);
if ($id_product_download) if ($id_product_download)
{ {
$productDownload = new ProductDownload($id_product_download); $product_download = new ProductDownload($id_product_download);
$this->deleteDownloadProduct($id_product_download); $this->deleteDownloadProduct($id_product_download);
$productDownload->deleteFile(); $product_download->deleteFile();
} }
$product->checkDefaultAttributes(); $product->checkDefaultAttributes();
$product->updateQuantityProductWithAttributeQuantity();
if (!$product->hasAttributes()) if (!$product->hasAttributes())
{ {
$product->cache_default_attribute = 0; $product->cache_default_attribute = 0;
@@ -985,7 +984,7 @@ class AdminProductsControllerCore extends AdminController
{ {
if (!Combination::isFeatureActive()) if (!Combination::isFeatureActive())
return; return;
if (Validate::isLoadedObject($product = new Product((int)Tools::getValue('id_product')))) if (Validate::isLoadedObject($product = new Product((int)Tools::getValue('id_product'))))
{ {
$product->deleteDefaultAttributes(); $product->deleteDefaultAttributes();
@@ -1000,7 +999,7 @@ class AdminProductsControllerCore extends AdminController
'status' => 'error', 'status' => 'error',
'message'=> $this->l('Cannot make default attribute') 'message'=> $this->l('Cannot make default attribute')
); );
die(Tools::jsonEncode($json)); die(Tools::jsonEncode($json));
} }
} }
@@ -1028,10 +1027,16 @@ class AdminProductsControllerCore extends AdminController
{ {
$this->json = true; $this->json = true;
if (($id_image = $_GET['id_image']) && ($id_shop = (int)$_GET['id_shop'])) if (($id_image = $_GET['id_image']) && ($id_shop = (int)$_GET['id_shop']))
if (Tools::getValue('active') == "true") if (Tools::getValue('active') == 'true')
$res = Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'image_shop (`id_image`, `id_shop`) VALUES('.(int)$id_image.', '.(int)$id_shop.')'); $res = Db::getInstance()->execute(
'INSERT INTO '._DB_PREFIX_.'image_shop (`id_image`, `id_shop`)
VALUES('.(int)$id_image.', '.(int)$id_shop.')
');
else else
$res= Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'image_shop WHERE `id_image`='.(int)$id_image.' && `id_shop`='.(int)$id_shop); $res = Db::getInstance()->execute('
DELETE FROM '._DB_PREFIX_.'image_shop
WHERE `id_image`='.(int)$id_image.' && `id_shop`='.(int)$id_shop
);
if ($res) if ($res)
$this->confirmations[] = $this->_conf[27]; $this->confirmations[] = $this->_conf[27];
@@ -1086,11 +1091,11 @@ class AdminProductsControllerCore extends AdminController
{ {
$first_img = Db::getInstance()->getRow(' $first_img = Db::getInstance()->getRow('
SELECT `id_image` FROM `'._DB_PREFIX_.'image` SELECT `id_image` FROM `'._DB_PREFIX_.'image`
WHERE `id_product` = '.(int)($image->id_product)); WHERE `id_product` = '.(int)$image->id_product);
Db::getInstance()->Execute(' Db::getInstance()->Execute('
UPDATE `'._DB_PREFIX_.'image` UPDATE `'._DB_PREFIX_.'image`
SET `cover` = 1 SET `cover` = 1
WHERE `id_image` = '.(int)($first_img['id_image'])); WHERE `id_image` = '.(int)$first_img['id_image']);
} }
@unlink(_PS_TMP_IMG_DIR_.'/product_'.$image->id_product.'.jpg'); @unlink(_PS_TMP_IMG_DIR_.'/product_'.$image->id_product.'.jpg');
@unlink(_PS_TMP_IMG_DIR_.'/product_mini_'.$image->id_product.'.jpg'); @unlink(_PS_TMP_IMG_DIR_.'/product_mini_'.$image->id_product.'.jpg');
@@ -1127,12 +1132,12 @@ class AdminProductsControllerCore extends AdminController
foreach ($languages as $language) foreach ($languages as $language)
if ($val = Tools::getValue('custom_'.$feature_id.'_'.$language['id_lang'])) if ($val = Tools::getValue('custom_'.$feature_id.'_'.$language['id_lang']))
{ {
$currentLanguage = new Language($language['id_lang']); $current_language = new Language($language['id_lang']);
if (Tools::strlen($val) > $rules['sizeLang']['value']) if (Tools::strlen($val) > $rules['sizeLang']['value'])
$this->_errors[] = Tools::displayError('name for feature').' <b>'.$feature['name'].'</b> '.Tools::displayError('is too long in').' '.$currentLanguage->name; $this->_errors[] = Tools::displayError('name for feature').' <b>'.$feature['name'].'</b> '.Tools::displayError('is too long in').' '.$current_language->name;
else if (!call_user_func(array('Validate', $rules['validateLang']['value']), $val)) else if (!call_user_func(array('Validate', $rules['validateLang']['value']), $val))
$this->_errors[] = Tools::displayError('Valid name required for feature.').' <b>'.$feature['name'].'</b> '.Tools::displayError('in').' '.$currentLanguage->name; $this->_errors[] = Tools::displayError('Valid name required for feature.').' <b>'.$feature['name'].'</b> '.Tools::displayError('in').' '.$current_language->name;
if (sizeof($this->_errors)) if (count($this->_errors))
return (0); return (0);
// Getting default language // Getting default language
if ($language['id_lang'] == Configuration::get('PS_LANG_DEFAULT')) if ($language['id_lang'] == Configuration::get('PS_LANG_DEFAULT'))
@@ -1161,7 +1166,7 @@ class AdminProductsControllerCore extends AdminController
$image->cover = $cover; $image->cover = $cover;
$this->validateRules('Image'); $this->validateRules('Image');
$this->copyFromPost($image, 'image'); $this->copyFromPost($image, 'image');
if (sizeof($this->_errors) || !$image->update()) if (count($this->_errors) || !$image->update())
$this->_errors[] = Tools::displayError('An error occurred while updating image.'); $this->_errors[] = Tools::displayError('An error occurred while updating image.');
else if (isset($_FILES['image_product']['tmp_name']) && $_FILES['image_product']['tmp_name'] != null) else if (isset($_FILES['image_product']['tmp_name']) && $_FILES['image_product']['tmp_name'] != null)
$this->copyImage($product->id, $image->id, $method); $this->copyImage($product->id, $image->id, $method);
@@ -1169,7 +1174,7 @@ class AdminProductsControllerCore extends AdminController
} }
if (isset($image) && Validate::isLoadedObject($image) && !file_exists(_PS_PROD_IMG_DIR_.$image->getExistingImgPath().'.'.$image->image_format)) if (isset($image) && Validate::isLoadedObject($image) && !file_exists(_PS_PROD_IMG_DIR_.$image->getExistingImgPath().'.'.$image->image_format))
$image->delete(); $image->delete();
if (sizeof($this->_errors)) if (count($this->_errors))
return false; return false;
@unlink(_PS_TMP_IMG_DIR_.'/product_'.$product->id.'.jpg'); @unlink(_PS_TMP_IMG_DIR_.'/product_'.$product->id.'.jpg');
@unlink(_PS_TMP_IMG_DIR_.'/product_mini_'.$product->id.'.jpg'); @unlink(_PS_TMP_IMG_DIR_.'/product_mini_'.$product->id.'.jpg');
@@ -1275,7 +1280,7 @@ class AdminProductsControllerCore extends AdminController
/* Categories */ /* Categories */
$productCats = ''; $productCats = '';
if (!Tools::isSubmit('categoryBox') || !sizeof(Tools::getValue('categoryBox'))) if (!Tools::isSubmit('categoryBox') || !count(Tools::getValue('categoryBox')))
$this->_errors[] = $this->l('product must be in at least one Category'); $this->_errors[] = $this->l('product must be in at least one Category');
if (!is_array(Tools::getValue('categoryBox')) || !in_array(Tools::getValue('id_category_default'), Tools::getValue('categoryBox'))) if (!is_array(Tools::getValue('categoryBox')) || !in_array(Tools::getValue('id_category_default'), Tools::getValue('categoryBox')))
@@ -1287,7 +1292,7 @@ class AdminProductsControllerCore extends AdminController
if (!Validate::isTagsList($value)) if (!Validate::isTagsList($value))
$this->_errors[] = $this->l('Tags list').' ('.$language['name'].') '.$this->l('is invalid'); $this->_errors[] = $this->l('Tags list').' ('.$language['name'].') '.$this->l('is invalid');
if (!sizeof($this->_errors)) if (!count($this->_errors))
{ {
$id = (int)Tools::getValue('id_'.$this->table); $id = (int)Tools::getValue('id_'.$this->table);
$tagError = true; $tagError = true;
@@ -1374,7 +1379,7 @@ class AdminProductsControllerCore extends AdminController
if (!$this->updatePackItems($object)) if (!$this->updatePackItems($object))
$this->_errors[] = Tools::displayError('An error occurred while adding products to the pack.'); $this->_errors[] = Tools::displayError('An error occurred while adding products to the pack.');
$this->updateDownloadProduct($object); $this->updateDownloadProduct($object);
if (!sizeof($this->_errors)) if (!count($this->_errors))
{ {
if (!$object->updateCategories($_POST['categoryBox'])) if (!$object->updateCategories($_POST['categoryBox']))
$this->_errors[] = Tools::displayError('An error occurred while linking object.').' <b>'.$this->table.'</b> '.Tools::displayError('To categories'); $this->_errors[] = Tools::displayError('An error occurred while linking object.').' <b>'.$this->table.'</b> '.Tools::displayError('To categories');
@@ -1581,10 +1586,10 @@ class AdminProductsControllerCore extends AdminController
if (!empty($id_product_download)) if (!empty($id_product_download))
{ {
$productDownload = new ProductDownload($id_product_download); $product_download = new ProductDownload($id_product_download);
$productDownload->date_expiration = date('Y-m-d H:i:s', time()-1); $product_download->date_expiration = date('Y-m-d H:i:s', time()-1);
$productDownload->active = 0; $product_download->active = 0;
return $productDownload->save(); return $product_download->save();
} }
} }
return false; return false;
@@ -1594,10 +1599,10 @@ class AdminProductsControllerCore extends AdminController
{ {
if (!empty($id_product_attribute)) if (!empty($id_product_attribute))
{ {
$productDownload = new ProductDownload($id_product_attribute); $product_download = new ProductDownload($id_product_attribute);
$productDownload->date_expiration = date('Y-m-d H:i:s', time()-1); $product_download->date_expiration = date('Y-m-d H:i:s', time()-1);
$productDownload->active = 0; $product_download->active = 0;
return $productDownload->save(); return $product_download->save();
} }
return false; return false;
} }
@@ -1613,7 +1618,7 @@ class AdminProductsControllerCore extends AdminController
if ($accessories = Tools::getValue('inputAccessories')) if ($accessories = Tools::getValue('inputAccessories'))
{ {
$accessories_id = array_unique(explode('-', $accessories)); $accessories_id = array_unique(explode('-', $accessories));
if (sizeof($accessories_id)) if (count($accessories_id))
{ {
array_pop($accessories_id); array_pop($accessories_id);
$product->changeAccessories($accessories_id); $product->changeAccessories($accessories_id);
@@ -1647,7 +1652,7 @@ class AdminProductsControllerCore extends AdminController
{ {
// this is made to "save and stay" feature // this is made to "save and stay" feature
$this->tpl_form_vars['show_product_tab_content'] = Tools::getValue('action'); $this->tpl_form_vars['show_product_tab_content'] = Tools::getValue('action');
if (Tools::getValue('id_product') || ((Tools::isSubmit('submitAddproduct') OR Tools::isSubmit('submitAddproductAndPreview') OR Tools::isSubmit('submitAddproductAndStay') OR Tools::isSubmit('submitSpecificPricePriorities') OR Tools::isSubmit('submitPriceAddition') OR Tools::isSubmit('submitPricesModification')) AND sizeof($this->_errors)) OR Tools::isSubmit('updateproduct') OR Tools::isSubmit('addproduct')) if (Tools::getValue('id_product') || ((Tools::isSubmit('submitAddproduct') OR Tools::isSubmit('submitAddproductAndPreview') OR Tools::isSubmit('submitAddproductAndStay') OR Tools::isSubmit('submitSpecificPricePriorities') OR Tools::isSubmit('submitPriceAddition') OR Tools::isSubmit('submitPricesModification')) AND count($this->_errors)) OR Tools::isSubmit('updateproduct') OR Tools::isSubmit('addproduct'))
{ {
$this->fields_form = array(); $this->fields_form = array();
if (empty($this->action)) if (empty($this->action))
@@ -1787,7 +1792,7 @@ class AdminProductsControllerCore extends AdminController
$done[$current['infos']['id_parent']] = 0; $done[$current['infos']['id_parent']] = 0;
$done[$current['infos']['id_parent']] += 1; $done[$current['infos']['id_parent']] += 1;
$todo = sizeof($categories[$current['infos']['id_parent']]); $todo = count($categories[$current['infos']['id_parent']]);
$doneC = $done[$current['infos']['id_parent']]; $doneC = $done[$current['infos']['id_parent']];
$level = $current['infos']['level_depth'] + 1; $level = $current['infos']['level_depth'] + 1;
@@ -1876,11 +1881,19 @@ class AdminProductsControllerCore extends AdminController
); );
if ($this->tabAccess['add']) if ($this->tabAccess['add'])
{
$this->toolbar_btn['new'] = array( $this->toolbar_btn['new'] = array(
'short' => 'Create', 'short' => 'Create',
'href' => '#todo'.$this->context->link->getAdminLink('AdminProducts').'&amp;id_product='.$product->id, 'href' => '#todo'.$this->context->link->getAdminLink('AdminProducts').'&amp;id_product='.$product->id,
'desc' => $this->l('Create'), 'desc' => $this->l('Create'),
); );
$this->toolbar_btn['newCombinaison'] = array(
'short' => 'Add a new combination',
'desc' => $this->l('Add a new combination'),
'class' => 'toolbar-new'
);
}
if ($this->tabAccess['edit']) if ($this->tabAccess['edit'])
{ {
@@ -1896,6 +1909,7 @@ class AdminProductsControllerCore extends AdminController
'desc' => $this->l('Save and stay'), 'desc' => $this->l('Save and stay'),
); );
} }
} }
parent::initToolbar(); parent::initToolbar();
$this->context->smarty->assign('toolbar_fix', 1); $this->context->smarty->assign('toolbar_fix', 1);
@@ -2377,7 +2391,7 @@ class AdminProductsControllerCore extends AdminController
$tmp[$group['id_group']] = $group; $tmp[$group['id_group']] = $group;
$groups = $tmp; $groups = $tmp;
if (!is_array($specificPrices) || !sizeof($specificPrices)) if (!is_array($specificPrices) || !count($specificPrices))
$content .= ' $content .= '
<tr> <tr>
<td colspan="9">'.$this->l('No specific prices').'</td> <td colspan="9">'.$this->l('No specific prices').'</td>
@@ -2718,10 +2732,10 @@ class AdminProductsControllerCore extends AdminController
/* /*
* Form for add a virtual product like software, mp3, etc... * Form for add a virtual product like software, mp3, etc...
*/ */
$productDownload = new ProductDownload(); $product_download = new ProductDownload();
if ($id_product_download = $productDownload->getIdFromIdProduct($this->getFieldValue($product, 'id'))) if ($id_product_download = $product_download->getIdFromIdProduct($this->getFieldValue($product, 'id')))
$productDownload = new ProductDownload($id_product_download); $product_download = new ProductDownload($id_product_download);
$product->{'productDownload'} = $productDownload; $product->{'productDownload'} = $product_download;
$this->displayInitInformationAndAttachment(); $this->displayInitInformationAndAttachment();
@@ -2776,8 +2790,8 @@ class AdminProductsControllerCore extends AdminController
/* /*
* Form for add a virtual product like software, mp3, etc... * Form for add a virtual product like software, mp3, etc...
*/ */
$productDownload = new ProductDownload(); $product_download = new ProductDownload();
if ($id_product_download = $productDownload->getIdFromIdProduct($this->getFieldValue($product, 'id'))) if ($id_product_download = $product_download->getIdFromIdProduct($this->getFieldValue($product, 'id')))
$product->{'product_download'} = new ProductDownload($id_product_download); $product->{'product_download'} = new ProductDownload($id_product_download);
$this->displayInitInformationAndAttachment(); $this->displayInitInformationAndAttachment();
@@ -2820,14 +2834,14 @@ class AdminProductsControllerCore extends AdminController
$product_attribute = ProductDownload::getAttributeFromIdProduct($this->getFieldValue($product, 'id')); $product_attribute = ProductDownload::getAttributeFromIdProduct($this->getFieldValue($product, 'id'));
foreach ($product_attribute as $p) foreach ($product_attribute as $p)
{ {
$productDownloadAttribute = new ProductDownload($p['id_product_download']); $product_downloadAttribute = new ProductDownload($p['id_product_download']);
$exists_file2 = realpath(_PS_DOWNLOAD_DIR_).'/'.$productDownloadAttribute->filename; $exists_file2 = realpath(_PS_DOWNLOAD_DIR_).'/'.$product_downloadAttribute->filename;
if (!file_exists($exists_file2) && !empty($productDownloadAttribute->id_product_attribute)) if (!file_exists($exists_file2) && !empty($product_downloadAttribute->id_product_attribute))
{ {
$msg = sprintf(Tools::displayError('This file "%s" is missing'), $productDownloadAttribute->display_filename); $msg = sprintf(Tools::displayError('This file "%s" is missing'), $product_downloadAttribute->display_filename);
$error .= '<p class="alert" id="file_missing"> $error .= '<p class="alert" id="file_missing">
<b>'.$msg.' :<br/> <b>'.$msg.' :<br/>
'.realpath(_PS_DOWNLOAD_DIR_) .'/'. $productDownloadAttribute->filename.'</b> '.realpath(_PS_DOWNLOAD_DIR_) .'/'. $product_downloadAttribute->filename.'</b>
</p>'; </p>';
} }
} }
@@ -3006,7 +3020,7 @@ class AdminProductsControllerCore extends AdminController
if (!empty($id_product_download)) if (!empty($id_product_download))
$product->productDownload = new ProductDownload($id_product_download); $product->productDownload = new ProductDownload($id_product_download);
// $data->assign('productDownload', $productDownload); // $data->assign('productDownload', $product_download);
$data->assign('currency', $currency); $data->assign('currency', $currency);
$images = Image::getImages($this->context->language->id, $product->id); $images = Image::getImages($this->context->language->id, $product->id);
@@ -3068,7 +3082,7 @@ class AdminProductsControllerCore extends AdminController
'upc' => array('title' => $this->l('UPC'), 'align' => 'center', 'width' => 70) 'upc' => array('title' => $this->l('UPC'), 'align' => 'center', 'width' => 70)
); );
if ($id_product_download && !empty($productDownload->display_filename)) if ($id_product_download && !empty($product_download->display_filename))
{ {
$this->fieldsDisplay['Filename'] = array('title' => $this->l('Filename'), 'align' => 'center', 'width' => 70); $this->fieldsDisplay['Filename'] = array('title' => $this->l('Filename'), 'align' => 'center', 'width' => 70);
$this->fieldsDisplay['nb_downloadable'] = array('title' => $this->l('Number of downloads'), 'align' => 'center', 'width' => 70); $this->fieldsDisplay['nb_downloadable'] = array('title' => $this->l('Number of downloads'), 'align' => 'center', 'width' => 70);
@@ -3216,7 +3230,7 @@ class AdminProductsControllerCore extends AdminController
<th>'.$this->l('EAN13').'</th> <th>'.$this->l('EAN13').'</th>
<th>'.$this->l('UPC').'</th>'; <th>'.$this->l('UPC').'</th>';
if ($id_product_download && !empty($productDownload->display_filename)) if ($id_product_download && !empty($product_download->display_filename))
{ {
$content .= ' $content .= '
<th class="center virtual_header">'.$this->l('Filename').'</th> <th class="center virtual_header">'.$this->l('Filename').'</th>
@@ -3563,7 +3577,7 @@ class AdminProductsControllerCore extends AdminController
$features[$k]['current_item'] = $tab_products['id_feature_value']; $features[$k]['current_item'] = $tab_products['id_feature_value'];
$features[$k]['featureValues'] = FeatureValue::getFeatureValuesWithLang($this->context->language->id, (int)$tab_features['id_feature']); $features[$k]['featureValues'] = FeatureValue::getFeatureValuesWithLang($this->context->language->id, (int)$tab_features['id_feature']);
if (sizeof($features[$k]['featureValues'])) if (count($features[$k]['featureValues']))
foreach ($features[$k]['featureValues'] as $value) foreach ($features[$k]['featureValues'] as $value)
if ($features[$k]['current_item'] == $value['id_feature_value']) if ($features[$k]['current_item'] == $value['id_feature_value'])
$custom = false; $custom = false;
+40 -1
View File
@@ -23,6 +23,38 @@
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*/ */
/* Combinaition */
var posC = true;
$(document).ready(function() {
$('#desc-product-newCombinaison').click(function() {
if (posC == true)
removeButtonCombinaison('add');
else
addButtonCombinaison('add');
});
});
function removeButtonCombinaison(item)
{
$('#add_new_combination').show();
$('.process-icon-newCombinaison').removeClass('toolbar-new');
$('.process-icon-newCombinaison').addClass('toolbar-cancel');
$('#submitProductAttribute').val($('#submitProductAttribute').attr(item));
$('#desc-product-newCombinaison div').html($('#desc-product-newCombinaison').attr('cancel'));
posC = false;
}
function addButtonCombinaison(item)
{
$('#add_new_combination').hide();
$('.process-icon-newCombinaison').removeClass('toolbar-cancel');
$('.process-icon-newCombinaison').addClass('toolbar-new');
$('#submitProductAttribute').val($('#submitProductAttribute').attr(item));
$('#desc-product-newCombinaison div').html($('#desc-product-newCombinaison').attr('add'));
posC = true;
}
function deleteProductAttribute(ids, token, parent) function deleteProductAttribute(ids, token, parent)
{ {
var id = ids.split('||'); var id = ids.split('||');
@@ -103,11 +135,14 @@ function editProductAttribute(ids, token)
context: this, context: this,
async: false, async: false,
success: function(data) { success: function(data) {
$('#add_new_combination').show();
console.log(data[0]); console.log(data[0]);
console.log(data[1]); console.log(data[1]);
$('#add_new_combination').show();
$('#product_att_list').html('');
for(i=0;i<data.length;i++) for(i=0;i<data.length;i++)
{ {
// update values of fields
$('#id_product_attribute').val(data[i]['id_product_attribute']);
$('#product_att_list').append('<option value='+data[i]['id_attribute']+' groupid='+data[i]['id_attribute_group']+'>'+data[i]['group_name']+' : '+data[i]['attribute_name']+'</option>'); $('#product_att_list').append('<option value='+data[i]['id_attribute']+' groupid='+data[i]['id_attribute_group']+'>'+data[i]['group_name']+' : '+data[i]['attribute_name']+'</option>');
$('#attribute_reference').val(data[i]['reference']); $('#attribute_reference').val(data[i]['reference']);
$('#attribute_ean13').val(data[i]['ean13']); $('#attribute_ean13').val(data[i]['ean13']);
@@ -120,6 +155,7 @@ function editProductAttribute(ids, token)
if ($('#attribute_ecotax').length != 0) if ($('#attribute_ecotax').length != 0)
$('#attribute_ecotax').val(data[i]['ecotax']); $('#attribute_ecotax').val(data[i]['ecotax']);
$('#minimal_quantity').val(data[i]['minimal_quantity']); $('#minimal_quantity').val(data[i]['minimal_quantity']);
$('#attribute_quantity').html(data[i]['quantity']);
$('#attribute_minimal_quantity').val(data[i]['minimal_quantity']); $('#attribute_minimal_quantity').val(data[i]['minimal_quantity']);
$('#available_date').val(data[i]['available_date']); $('#available_date').val(data[i]['available_date']);
@@ -127,10 +163,13 @@ function editProductAttribute(ids, token)
$('#attribute_default').checked = true; $('#attribute_default').checked = true;
else else
$('#attribute_default').checked = false; $('#attribute_default').checked = false;
removeButtonCombinaison('update');
$.scrollTo('#add_new_combination', 1200, { offset: -100 });
} }
} }
}); });
} }
/* END Combinaition */
function addPackItem() function addPackItem()
{ {
+8 -6
View File
@@ -220,9 +220,9 @@ function check_unit_impact()
function init_elems() function init_elems()
{ {
$('#stock_mvt_attribute').hide(); /*$('#stock_mvt_attribute').hide();
$('#initial_stock_attribute').show(); $('#initial_stock_attribute').show();
$('#attr_qty_stock').hide(); $('#attr_qty_stock').hide();*/
var elem = getE('product_att_list'); var elem = getE('product_att_list');
if (elem.length) if (elem.length)
@@ -235,10 +235,12 @@ function init_elems()
getE('attribute_unit_impact').selectedIndex = 0; getE('attribute_unit_impact').selectedIndex = 0;
$('#span_unit_impact').hide(); $('#span_unit_impact').hide();
$('#unity_third').html($('#unity_second').html()); $('#unity_third').html($('#unity_second').html());
if ($('#unity').get(0).value.length > 0)
$('#tr_unit_impact').show(); if ($('#unity').is())
else if ($('#unity').get(0).value.length > 0)
$('#tr_unit_impact').hide(); $('#tr_unit_impact').show();
else
$('#tr_unit_impact').hide();
try try
{ {
if (impact.options[impact.selectedIndex].value == 0) if (impact.options[impact.selectedIndex].value == 0)
+652 -737
View File
File diff suppressed because it is too large Load Diff