[+] CORE : now you can choose the redirect option when your product is disable
This commit is contained in:
1 parent
12cb5316ee
commit
ed3e0e1a58
14 files changed
+204
-24
No files matched your search
@@ -154,16 +154,57 @@
|
|||||||
<td style="padding-bottom:5px;">
|
<td style="padding-bottom:5px;">
|
||||||
<ul class="listForm">
|
<ul class="listForm">
|
||||||
<li>
|
<li>
|
||||||
<input onclick="toggleDraftWarning(false);showOptions(true);" type="radio" name="active" id="active_on" value="1" {if $product->active || !$product->isAssociatedToShop()}checked="checked" {/if} />
|
<input onclick="toggleDraftWarning(false);showOptions(true);showRedirectProductOptions(false);" type="radio" name="active" id="active_on" value="1" {if $product->active || !$product->isAssociatedToShop()}checked="checked" {/if} />
|
||||||
<label for="active_on" class="radioCheck">{l s='Enabled'}</label>
|
<label for="active_on" class="radioCheck">{l s='Enabled'}</label>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<input onclick="toggleDraftWarning(true);showOptions(false);" type="radio" name="active" id="active_off" value="0" {if !$product->active && $product->isAssociatedToShop()}checked="checked"{/if} />
|
<input onclick="toggleDraftWarning(true);showOptions(false);showRedirectProductOptions(true);" type="radio" name="active" id="active_off" value="0" {if !$product->active && $product->isAssociatedToShop()}checked="checked"{/if} />
|
||||||
<label for="active_off" class="radioCheck">{l s='Disabled'}</label>
|
<label for="active_off" class="radioCheck">{l s='Disabled'}</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr class="redirect_product_options" style="display:none">
|
||||||
|
<td class="col-left">
|
||||||
|
{include file="controllers/products/multishop/checkbox.tpl" field="active" type="radio" onclick=""}
|
||||||
|
<label class="text">{l s='Redirect:'}</label>
|
||||||
|
</td>
|
||||||
|
<td style="padding-bottom:5px;">
|
||||||
|
<select name="redirect_type" id="redirect_type">
|
||||||
|
<option value="404" {if $product->redirect_type == '404'} selected="selected" {/if}>{l s='No redirect (404)'}</option>
|
||||||
|
<option value="301" {if $product->redirect_type == '301'} selected="selected" {/if}>{l s='Redirect permanently (301)'}</option>
|
||||||
|
<option value="302" {if $product->redirect_type == '302'} selected="selected" {/if}>{l s='Redirect temporarily (302)'}</option>
|
||||||
|
</select>
|
||||||
|
<span class="hint" name="help_box">
|
||||||
|
{l s='404 : Not Found = Product does not exist and no redirect'}<br/>
|
||||||
|
{l s='301 : Moved Permanently = Product Moved Permanently'}<br/>
|
||||||
|
{l s='302 : Moved Temporarily = Product moved temporarily'}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="redirect_product_options redirect_product_options_product_choise" style="display:none">
|
||||||
|
<td class="col-left">
|
||||||
|
{include file="controllers/products/multishop/checkbox.tpl" field="active" type="radio" onclick=""}
|
||||||
|
<label class="text">{l s='Related product:'}</label>
|
||||||
|
</td>
|
||||||
|
<td style="padding-bottom:5px;">
|
||||||
|
<input type="hidden" value="" name="id_product_redirected" />
|
||||||
|
<input value="" id="related_product_autocomplete_input" autocomplete="off" class="ac_input" />
|
||||||
|
<p>
|
||||||
|
<script>
|
||||||
|
var no_related_product = '{l s='No related product'}';
|
||||||
|
var id_product_redirected = {$product->id_product_redirected|escape:html:'UTF-8'};
|
||||||
|
var product_name_redirected = '{$product_name_redirected|escape:html:'UTF-8'}';
|
||||||
|
</script>
|
||||||
|
<span id="related_product_name">{l s='No related product'}</span>
|
||||||
|
<span id="related_product_remove" style="display:none">
|
||||||
|
<a hre="#" onclick="removeRelatedProduct(); return false" id="related_product_remove_link">
|
||||||
|
<img src="../img/admin/delete.gif" class="middle" alt="" />
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="col-left">
|
<td class="col-left">
|
||||||
{include file="controllers/products/multishop/checkbox.tpl" field="visibility" type="default"}
|
{include file="controllers/products/multishop/checkbox.tpl" field="visibility" type="default"}
|
||||||
|
|||||||
@@ -164,6 +164,12 @@ class ProductCore extends ObjectModel
|
|||||||
/** @var boolean Product statuts */
|
/** @var boolean Product statuts */
|
||||||
public $active = true;
|
public $active = true;
|
||||||
|
|
||||||
|
/** @var boolean Product statuts */
|
||||||
|
public $redirect_type = '';
|
||||||
|
|
||||||
|
/** @var boolean Product statuts */
|
||||||
|
public $id_product_redirected = 0;
|
||||||
|
|
||||||
/** @var boolean Product available for order */
|
/** @var boolean Product available for order */
|
||||||
public $available_for_order = true;
|
public $available_for_order = true;
|
||||||
|
|
||||||
@@ -272,6 +278,8 @@ class ProductCore extends ObjectModel
|
|||||||
'text_fields' => array('type' => self::TYPE_INT, 'shop' => true, 'validate' => 'isUnsignedInt'),
|
'text_fields' => array('type' => self::TYPE_INT, 'shop' => true, 'validate' => 'isUnsignedInt'),
|
||||||
'uploadable_files' => array('type' => self::TYPE_INT, 'shop' => true, 'validate' => 'isUnsignedInt'),
|
'uploadable_files' => array('type' => self::TYPE_INT, 'shop' => true, 'validate' => 'isUnsignedInt'),
|
||||||
'active' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'),
|
'active' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'),
|
||||||
|
'redirect_type' => array('type' => self::TYPE_STRING, 'shop' => true, 'validate' => 'isString'),
|
||||||
|
'id_product_redirected' => array('type' => self::TYPE_INT, 'shop' => true, 'validate' => 'isUnsignedId'),
|
||||||
'available_for_order' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'),
|
'available_for_order' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'),
|
||||||
'available_date' => array('type' => self::TYPE_DATE, 'shop' => true, 'validate' => 'isDateFormat'),
|
'available_date' => array('type' => self::TYPE_DATE, 'shop' => true, 'validate' => 'isDateFormat'),
|
||||||
'condition' => array('type' => self::TYPE_STRING, 'shop' => true, 'validate' => 'isGenericName', 'values' => array('new', 'used', 'refurbished'), 'default' => 'new'),
|
'condition' => array('type' => self::TYPE_STRING, 'shop' => true, 'validate' => 'isGenericName', 'values' => array('new', 'used', 'refurbished'), 'default' => 'new'),
|
||||||
|
|||||||
@@ -3299,8 +3299,7 @@ class AdminProductsControllerCore extends AdminController
|
|||||||
$data->assign('currency', $currency);
|
$data->assign('currency', $currency);
|
||||||
$this->object = $product;
|
$this->object = $product;
|
||||||
$this->display = 'edit';
|
$this->display = 'edit';
|
||||||
|
$data->assign('product_name_redirected', Product::getProductName((int)$product->id_product_redirected, null, (int)$this->context->language->id));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Form for adding a virtual product like software, mp3, etc...
|
* Form for adding a virtual product like software, mp3, etc...
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -104,15 +104,44 @@ class ProductControllerCore extends FrontController
|
|||||||
* allow showing the product
|
* allow showing the product
|
||||||
* In all the others cases => 404 "Product is no longer available"
|
* In all the others cases => 404 "Product is no longer available"
|
||||||
*/
|
*/
|
||||||
if (!$this->product->isAssociatedToShop()
|
if (!$this->product->isAssociatedToShop() || !$this->product->active)
|
||||||
|| ((!$this->product->active && ((Tools::getValue('adtoken') != Tools::getAdminToken('AdminProducts'.(int)Tab::getIdFromClassName('AdminProducts').(int)Tools::getValue('id_employee')))
|
|
||||||
|| !file_exists(_PS_ROOT_DIR_.'/'.Tools::getValue('ad').'/index.php')))))
|
|
||||||
{
|
{
|
||||||
header('HTTP/1.1 404 page not found');
|
if (Tools::getValue('adtoken') == Tools::getAdminToken('AdminProducts'.(int)Tab::getIdFromClassName('AdminProducts').(int)Tools::getValue('id_employee')))
|
||||||
$this->errors[] = Tools::displayError('Product is no longer available.');
|
{
|
||||||
|
// If the product is not active, it's the admin preview mode
|
||||||
|
$this->context->smarty->assign('adminActionDisplay', true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->context->smarty->assign('adminActionDisplay', false);
|
||||||
|
if ($this->product->id_product_redirected == $this->product->id)
|
||||||
|
$this->product->redirect_type = '404';
|
||||||
|
|
||||||
|
switch ($this->product->redirect_type)
|
||||||
|
{
|
||||||
|
case '301':
|
||||||
|
header('HTTP/1.1 301 Moved Permanently');
|
||||||
|
header('Location: '.$this->context->link->getProductLink($this->product->id_product_redirected));
|
||||||
|
break;
|
||||||
|
case '302':
|
||||||
|
header('HTTP/1.1 302 Moved Temporarily');
|
||||||
|
header('Cache-Control: no-cache');
|
||||||
|
header('Location: '.$this->context->link->getProductLink($this->product->id_product_redirected));
|
||||||
|
break;
|
||||||
|
case '404':
|
||||||
|
header('HTTP/1.1 404 Not Found');
|
||||||
|
header('Status: 404 Not Found');
|
||||||
|
$this->errors[] = Tools::displayError('Product is no longer available.');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!$this->product->checkAccess(isset($this->context->customer) ? $this->context->customer->id : 0))
|
else if (!$this->product->checkAccess(isset($this->context->customer) ? $this->context->customer->id : 0))
|
||||||
|
{
|
||||||
|
header('HTTP/1.1 403 Forbidden');
|
||||||
|
header('Status: 403 Forbidden');
|
||||||
$this->errors[] = Tools::displayError('You do not have access to this product.');
|
$this->errors[] = Tools::displayError('You do not have access to this product.');
|
||||||
|
}
|
||||||
|
|
||||||
// Load category
|
// Load category
|
||||||
if (isset($_SERVER['HTTP_REFERER'])
|
if (isset($_SERVER['HTTP_REFERER'])
|
||||||
@@ -150,10 +179,6 @@ class ProductControllerCore extends FrontController
|
|||||||
// Assign to the template the id of the virtual product. "0" if the product is not downloadable.
|
// Assign to the template the id of the virtual product. "0" if the product is not downloadable.
|
||||||
$this->context->smarty->assign('virtual', ProductDownload::getIdFromIdProduct((int)$this->product->id));
|
$this->context->smarty->assign('virtual', ProductDownload::getIdFromIdProduct((int)$this->product->id));
|
||||||
|
|
||||||
// If the product is not active, it's the admin preview mode
|
|
||||||
if (!$this->product->active)
|
|
||||||
$this->context->smarty->assign('adminActionDisplay', true);
|
|
||||||
|
|
||||||
// Product pictures management
|
// Product pictures management
|
||||||
require_once('images.inc.php');
|
require_once('images.inc.php');
|
||||||
$this->context->smarty->assign('customizationFormTarget', Tools::safeOutput(urldecode($_SERVER['REQUEST_URI'])));
|
$this->context->smarty->assign('customizationFormTarget', Tools::safeOutput(urldecode($_SERVER['REQUEST_URI'])));
|
||||||
|
|||||||
@@ -1376,6 +1376,8 @@ CREATE TABLE `PREFIX_product` (
|
|||||||
`uploadable_files` tinyint(4) NOT NULL default '0',
|
`uploadable_files` tinyint(4) NOT NULL default '0',
|
||||||
`text_fields` tinyint(4) NOT NULL default '0',
|
`text_fields` tinyint(4) NOT NULL default '0',
|
||||||
`active` tinyint(1) unsigned NOT NULL default '0',
|
`active` tinyint(1) unsigned NOT NULL default '0',
|
||||||
|
`redirect_type` ENUM('', '404', '301', '302') NOT NULL DEFAULT '',
|
||||||
|
`id_product_redirected` int(10) unsigned NOT NULL default '0',
|
||||||
`available_for_order` tinyint(1) NOT NULL default '1',
|
`available_for_order` tinyint(1) NOT NULL default '1',
|
||||||
`available_date` date NOT NULL,
|
`available_date` date NOT NULL,
|
||||||
`condition` ENUM('new', 'used', 'refurbished') NOT NULL DEFAULT 'new',
|
`condition` ENUM('new', 'used', 'refurbished') NOT NULL DEFAULT 'new',
|
||||||
@@ -1415,6 +1417,8 @@ CREATE TABLE IF NOT EXISTS `PREFIX_product_shop` (
|
|||||||
`uploadable_files` tinyint(4) NOT NULL default '0',
|
`uploadable_files` tinyint(4) NOT NULL default '0',
|
||||||
`text_fields` tinyint(4) NOT NULL DEFAULT '0',
|
`text_fields` tinyint(4) NOT NULL DEFAULT '0',
|
||||||
`active` tinyint(1) unsigned NOT NULL DEFAULT '0',
|
`active` tinyint(1) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`redirect_type` ENUM('', '404', '301', '302') NOT NULL DEFAULT '',
|
||||||
|
`id_product_redirected` int(10) unsigned NOT NULL default '0',
|
||||||
`available_for_order` tinyint(1) NOT NULL DEFAULT '1',
|
`available_for_order` tinyint(1) NOT NULL DEFAULT '1',
|
||||||
`available_date` date NOT NULL,
|
`available_date` date NOT NULL,
|
||||||
`condition` enum('new','used','refurbished') NOT NULL DEFAULT 'new',
|
`condition` enum('new','used','refurbished') NOT NULL DEFAULT 'new',
|
||||||
|
|||||||
@@ -29,6 +29,8 @@
|
|||||||
<field name="uploadable_files"/>
|
<field name="uploadable_files"/>
|
||||||
<field name="text_fields"/>
|
<field name="text_fields"/>
|
||||||
<field name="active"/>
|
<field name="active"/>
|
||||||
|
<field name="redirect_type"/>
|
||||||
|
<field name="id_product_redirected"/>
|
||||||
<field name="available_for_order"/>
|
<field name="available_for_order"/>
|
||||||
<field name="available_date"/>
|
<field name="available_date"/>
|
||||||
<field name="condition"/>
|
<field name="condition"/>
|
||||||
@@ -41,31 +43,31 @@
|
|||||||
<field name="advanced_stock_management"/>
|
<field name="advanced_stock_management"/>
|
||||||
</fields>
|
</fields>
|
||||||
<entities>
|
<entities>
|
||||||
<product id="iPod_Nano" id_supplier="AppleStore" id_manufacturer="Apple_Computer_Inc" id_category_default="iPods" on_sale="0" online_only="0" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="124.581940" wholesale_price="70.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="0.5" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
<product id="iPod_Nano" id_supplier="AppleStore" id_manufacturer="Apple_Computer_Inc" id_category_default="iPods" on_sale="0" online_only="0" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="124.581940" wholesale_price="70.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="0.5" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" redirect_type="" id_product_redirected="0" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
||||||
<unity/>
|
<unity/>
|
||||||
<location/>
|
<location/>
|
||||||
</product>
|
</product>
|
||||||
<product id="iPod_shuffle" id_supplier="AppleStore" id_manufacturer="Apple_Computer_Inc" id_category_default="iPods" on_sale="0" online_only="0" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="66.053500" wholesale_price="33.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="0" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
<product id="iPod_shuffle" id_supplier="AppleStore" id_manufacturer="Apple_Computer_Inc" id_category_default="iPods" on_sale="0" online_only="0" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="66.053500" wholesale_price="33.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="0" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" redirect_type="" id_product_redirected="0" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
||||||
<unity/>
|
<unity/>
|
||||||
<location/>
|
<location/>
|
||||||
</product>
|
</product>
|
||||||
<product id="MacBook_Air" id_supplier="AppleStore" id_manufacturer="Apple_Computer_Inc" id_category_default="Laptops" on_sale="0" online_only="0" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="1504.180602" wholesale_price="1000.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="1.36" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
<product id="MacBook_Air" id_supplier="AppleStore" id_manufacturer="Apple_Computer_Inc" id_category_default="Laptops" on_sale="0" online_only="0" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="1504.180602" wholesale_price="1000.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="1.36" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" redirect_type="" id_product_redirected="0" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
||||||
<unity/>
|
<unity/>
|
||||||
<location/>
|
<location/>
|
||||||
</product>
|
</product>
|
||||||
<product id="MacBook" id_supplier="AppleStore" id_manufacturer="Apple_Computer_Inc" id_category_default="Laptops" on_sale="0" online_only="0" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="1170.568561" wholesale_price="0.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="0.75" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
<product id="MacBook" id_supplier="AppleStore" id_manufacturer="Apple_Computer_Inc" id_category_default="Laptops" on_sale="0" online_only="0" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="1170.568561" wholesale_price="0.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="0.75" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" redirect_type="" id_product_redirected="0" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
||||||
<unity/>
|
<unity/>
|
||||||
<location/>
|
<location/>
|
||||||
</product>
|
</product>
|
||||||
<product id="iPod_touch" id_supplier="" id_manufacturer="" id_category_default="iPods" on_sale="0" online_only="0" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="241.638796" wholesale_price="200.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="0" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
<product id="iPod_touch" id_supplier="" id_manufacturer="" id_category_default="iPods" on_sale="0" online_only="0" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="241.638796" wholesale_price="200.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="0" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" redirect_type="" id_product_redirected="0" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
||||||
<unity/>
|
<unity/>
|
||||||
<location/>
|
<location/>
|
||||||
</product>
|
</product>
|
||||||
<product id="Belkin_Leather_Folio_for_iPod_nano_-_Black_Chocolate" id_supplier="" id_manufacturer="" id_category_default="Accessories" on_sale="0" online_only="1" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="25.041806" wholesale_price="0.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="0" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
<product id="Belkin_Leather_Folio_for_iPod_nano_-_Black_Chocolate" id_supplier="" id_manufacturer="" id_category_default="Accessories" on_sale="0" online_only="1" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="25.041806" wholesale_price="0.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="0" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" redirect_type="" id_product_redirected="0" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
||||||
<unity/>
|
<unity/>
|
||||||
<location/>
|
<location/>
|
||||||
</product>
|
</product>
|
||||||
<product id="Shure_SE210_Sound-Isolating_Earphones_for_iPod_and_iPhone" id_supplier="Shure_Online_Store" id_manufacturer="Shure_Incorporated" id_category_default="Accessories" on_sale="0" online_only="1" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="124.581940" wholesale_price="0.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="0" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
<product id="Shure_SE210_Sound-Isolating_Earphones_for_iPod_and_iPhone" id_supplier="Shure_Online_Store" id_manufacturer="Shure_Incorporated" id_category_default="Accessories" on_sale="0" online_only="1" ean13="0" upc="" ecotax="0.000000" quantity="0" minimal_quantity="1" price="124.581940" wholesale_price="0.000000" unit_price_ratio="0.000000" additional_shipping_cost="0.00" reference="" supplier_reference="" width="0" height="0" depth="0" weight="0" out_of_stock="2" quantity_discount="0" customizable="0" uploadable_files="0" text_fields="0" active="1" redirect_type="" id_product_redirected="0" available_for_order="1" available_date="0000-00-00" condition="new" show_price="1" indexed="0" cache_is_pack="0" cache_has_attachments="0" is_virtual="0" cache_default_attribute="0" advanced_stock_management="0">
|
||||||
<unity/>
|
<unity/>
|
||||||
<location/>
|
<location/>
|
||||||
</product>
|
</product>
|
||||||
|
|||||||
@@ -6,4 +6,8 @@ ALTER TABLE `PREFIX_address` CHANGE `outstanding_allow_amount` `outstanding_all
|
|||||||
|
|
||||||
/* PHP:block_category_1521(); */;
|
/* PHP:block_category_1521(); */;
|
||||||
|
|
||||||
UPDATE `PREFIX_order_state` SET `delivery` = 0 WHERE `id_order_state` = 3 ;
|
UPDATE `PREFIX_order_state` SET `delivery` = 0 WHERE `id_order_state` = 3;
|
||||||
|
|
||||||
|
ALTER TABLE `PREFIX_product_shop` ADD `id_product_redirected` int(10) unsigned NOT NULL default '0' AFTER `active` , ADD `available_for_order` tinyint(1) NOT NULL default '1' AFTER `id_product_redirected`;
|
||||||
|
|
||||||
|
ALTER TABLE `PREFIX_product` ADD `id_product_redirected` int(10) unsigned NOT NULL default '0' AFTER `active` , ADD `available_for_order` tinyint(1) NOT NULL default '1' AFTER `id_product_redirected`;
|
||||||
+30
-3
@@ -763,9 +763,8 @@ product_tabs['Attachments'] = new function(){
|
|||||||
product_tabs['Informations'] = new function(){
|
product_tabs['Informations'] = new function(){
|
||||||
var self = this;
|
var self = this;
|
||||||
this.bindAvailableForOrder = function (){
|
this.bindAvailableForOrder = function (){
|
||||||
$("#available_for_order").click(function(){
|
$("#available_for_order").click(function()
|
||||||
|
{
|
||||||
|
|
||||||
if ($(this).is(':checked') || ($('input[name=\'multishop_check[show_price]\']').lenght && !$('input[name=\'multishop_check[show_price]\']').prop('checked')))
|
if ($(this).is(':checked') || ($('input[name=\'multishop_check[show_price]\']').lenght && !$('input[name=\'multishop_check[show_price]\']').prop('checked')))
|
||||||
{
|
{
|
||||||
$('#show_price').attr('checked', true);
|
$('#show_price').attr('checked', true);
|
||||||
@@ -776,6 +775,34 @@ product_tabs['Informations'] = new function(){
|
|||||||
$('#show_price').attr('disabled', false);
|
$('#show_price').attr('disabled', false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if ($('#active_on').prop('checked'))
|
||||||
|
showRedirectProductOptions(false);
|
||||||
|
else
|
||||||
|
showRedirectProductOptions(true);
|
||||||
|
|
||||||
|
$('#redirect_type').change(function () {
|
||||||
|
redirectSelectChange();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#related_product_autocomplete_input')
|
||||||
|
.autocomplete('ajax_products_list.php?excludeIds='+id_product, {
|
||||||
|
minChars: 1,
|
||||||
|
autoFill: true,
|
||||||
|
max:20,
|
||||||
|
matchContains: true,
|
||||||
|
mustMatch:true,
|
||||||
|
scroll:false,
|
||||||
|
cacheLength:0,
|
||||||
|
formatItem: function(item) {
|
||||||
|
return item[0]+' - '+item[1];
|
||||||
|
}
|
||||||
|
}).result(function(e, i){
|
||||||
|
if(i != undefined)
|
||||||
|
addRelatedProduct(i[1], i[0]);
|
||||||
|
$(this).val('');
|
||||||
|
});
|
||||||
|
addRelatedProduct(id_product_redirected, product_name_redirected);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.bindTagImage = function (){
|
this.bindTagImage = function (){
|
||||||
|
|||||||
+50
@@ -571,6 +571,56 @@ function toggleDraftWarning(show)
|
|||||||
$('.draft').show();
|
$('.draft').show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showRedirectProductOptions(show)
|
||||||
|
{
|
||||||
|
if (show)
|
||||||
|
$('.redirect_product_options').fadeIn();
|
||||||
|
else
|
||||||
|
$('.redirect_product_options').fadeOut();
|
||||||
|
|
||||||
|
redirectSelectChange();
|
||||||
|
}
|
||||||
|
|
||||||
|
function redirectSelectChange()
|
||||||
|
{
|
||||||
|
if ($('#redirect_type :selected').val() == '404')
|
||||||
|
showRedirectProductSelectOptions(false);
|
||||||
|
else
|
||||||
|
showRedirectProductSelectOptions(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function addRelatedProduct(id_product_to_add, product_name)
|
||||||
|
{
|
||||||
|
if (!id_product_to_add || id_product == id_product_to_add)
|
||||||
|
return;
|
||||||
|
$('#related_product_name').html(product_name);
|
||||||
|
$('#related_product_name').parent('p').css('margin-top', 0);
|
||||||
|
$('input[name=id_product_redirected]').val(id_product_to_add);
|
||||||
|
$('#related_product_autocomplete_input').hide();
|
||||||
|
$('#related_product_remove').show();
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeRelatedProduct()
|
||||||
|
{
|
||||||
|
$('#related_product_name').html(no_related_product);
|
||||||
|
$('#related_product_name').parent('p').css('margin-top', '0.5em');
|
||||||
|
$('input[name=id_product_redirected]').val(0);
|
||||||
|
$('#related_product_remove').hide();
|
||||||
|
$('#related_product_autocomplete_input').fadeIn();
|
||||||
|
}
|
||||||
|
|
||||||
|
function showRedirectProductSelectOptions(show)
|
||||||
|
{
|
||||||
|
if (show)
|
||||||
|
$('.redirect_product_options_product_choise').show();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$('.redirect_product_options_product_choise').hide();
|
||||||
|
removeRelatedProduct();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function showOptions(show)
|
function showOptions(show)
|
||||||
{
|
{
|
||||||
if (show)
|
if (show)
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
global $_LANGADM;
|
||||||
|
$_LANGADM = array();
|
||||||
|
?>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
global $_ERRORS;
|
||||||
|
$_ERRORS = array();
|
||||||
|
?>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
global $_FIELDS;
|
||||||
|
$_FIELDS = array();
|
||||||
|
?>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
global $_LANGPDF;
|
||||||
|
$_LANGPDF = array();
|
||||||
|
?>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
$tabs = array();
|
||||||
|
return $tabs;
|
||||||
|
?>
|
||||||
Reference in new issue
Block a user