[*] BO: store filter by category in admin products

This commit is contained in:
Rémi Gaillard
2013-02-14 14:51:51 +01:00
parent 749c627b38
commit d473c04ebe
3 changed files with 46 additions and 30 deletions
@@ -35,7 +35,7 @@
if (this.value !== "")
location.href = base_url + '&id_category=' + parseInt(this.value);
else
location.href = base_url;
location.href = base_url + '&reset_filter_category=1';
});
// Make sure the checkbox is checked/unchecked when the link is clicked
@@ -47,7 +47,7 @@
else
{
$(this).find('input').removeAttr('checked');
location.href = base_url;
location.href = base_url + '&reset_filter_category=1';
}
});
});
+24 -9
View File
@@ -53,6 +53,8 @@ class AdminProductsControllerCore extends AdminController
protected $position_identifier = 'id_product';
protected $submitted_tabs;
protected $id_current_category;
public function __construct()
{
@@ -122,17 +124,28 @@ class AdminProductsControllerCore extends AdminController
$this->available_tabs_lang['Module'.ucfirst($m['module'])] = Module::getModuleName($m['module']);
}
if (Tools::getValue('reset_filter_category'))
$this->context->cookie->id_category_products_filter = false;
/* Join categories table */
if ($id_category = (int)Tools::getValue('productFilter_cl!name'))
{
$this->_category = new Category((int)$id_category);
$_POST['productFilter_cl!name'] = $this->_category->name[$this->context->language->id];
}
elseif ($id_category = Tools::getvalue('id_category'))
$this->_category = new Category((int)$id_category);
else
$this->_category = new Category();
{
if ($id_category = (int)Tools::getValue('id_category'))
{
$this->id_current_category = $id_category;
$this->context->cookie->id_category_products_filter = $id_category;
}
elseif ($id_category = $this->context->cookie->id_category_products_filter)
$this->id_current_category = $id_category;
if ($this->id_current_category)
$this->_category = new Category((int)$this->id_current_category);
else
$this->_category = new Category();
}
$join_category = false;
if (Validate::isLoadedObject($this->_category) && empty($this->_filter))
@@ -242,7 +255,8 @@ class AdminProductsControllerCore extends AdminController
'type' => 'bool',
'orderby' => false
);
if ((int)Tools::getValue('id_category'))
if ((int)$this->id_current_category)
$this->fields_list['position'] = array(
'title' => $this->l('Position'),
'width' => 70,
@@ -2127,8 +2141,8 @@ class AdminProductsControllerCore extends AdminController
}
else
{
if ($id_category = (int)Tools::getValue('id_category'))
self::$currentIndex .= '&id_category='.(int)$id_category;
if ($id_category = (int)$this->id_current_category)
self::$currentIndex .= '&id_category='.(int)$this->id_current_category;
// If products from all categories are displayed, we don't want to use sorting by position
if (!$id_category)
@@ -2140,8 +2154,9 @@ class AdminProductsControllerCore extends AdminController
unset($this->context->cookie->{$this->table.'Orderway'});
}
}
$id_category = (int)Tools::getValue('id_category', 1);
$this->tpl_list_vars['is_category_filter'] = Tools::getValue('id_category') ? true : false;
if (!$id_category)
$id_category = 1;
$this->tpl_list_vars['is_category_filter'] = (bool)$this->id_current_category;
// Generate category selection tree
$helper = new Helper();
+20 -19
View File
@@ -87,19 +87,11 @@ class ProductControllerCore extends FrontController
{
header('HTTP/1.1 404 Not Found');
header('Status: 404 Not Found');
$this->errors[] = Tools::displayError('Product not found');
}
else
$this->canonicalRedirection();
if (!Validate::isLoadedObject($this->product))
$this->errors[] = Tools::displayError('Product not found');
else
{
if (Pack::isPack((int)$this->product->id) && !Pack::isInStock((int)$this->product->id))
$this->product->quantity = 0;
$this->product->description = $this->transformDescriptionWithImg($this->product->description);
$this->canonicalRedirection();
/*
* If the product is associated to the shop
* and is active or not active but preview mode (need token + file_exists)
@@ -181,11 +173,14 @@ class ProductControllerCore extends FrontController
if (!$this->errors)
{
if (Pack::isPack((int)$this->product->id) && !Pack::isInStock((int)$this->product->id))
$this->product->quantity = 0;
$this->product->description = $this->transformDescriptionWithImg($this->product->description);
// 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));
// Product pictures management
require_once('images.inc.php');
$this->context->smarty->assign('customizationFormTarget', Tools::safeOutput(urldecode($_SERVER['REQUEST_URI'])));
if (Tools::isSubmit('submitCustomizedDatas'))
@@ -204,15 +199,21 @@ class ProductControllerCore extends FrontController
else if (Tools::getIsset('deletePicture') && !$this->context->cart->deleteCustomizationToProduct($this->product->id, Tools::getValue('deletePicture')))
$this->errors[] = Tools::displayError('An error occurred while deleting the selected picture');
$files = $this->context->cart->getProductCustomization($this->product->id, Product::CUSTOMIZE_FILE, true);
$pictures = array();
foreach ($files as $file)
$pictures['pictures_'.$this->product->id.'_'.$file['index']] = $file['value'];
$texts = $this->context->cart->getProductCustomization($this->product->id, Product::CUSTOMIZE_TEXTFIELD, true);
$text_fields = array();
foreach ($texts as $text_field)
$text_fields['textFields_'.$this->product->id.'_'.$text_field['index']] = str_replace('<br />', "\n", $text_field['value']);
if ($this->product->customizable)
{
$files = $this->context->cart->getProductCustomization($this->product->id, Product::CUSTOMIZE_FILE, true);
foreach ($files as $file)
$pictures['pictures_'.$this->product->id.'_'.$file['index']] = $file['value'];
$texts = $this->context->cart->getProductCustomization($this->product->id, Product::CUSTOMIZE_TEXTFIELD, true);
foreach ($texts as $text_field)
$text_fields['textFields_'.$this->product->id.'_'.$text_field['index']] = str_replace('<br />', "\n", $text_field['value']);
}
$this->context->smarty->assign(array(
'pictures' => $pictures,
'textFields' => $text_fields));