diff --git a/admin-dev/header.inc.php b/admin-dev/header.inc.php
index 89e9aeb5a..602e51dd2 100644
--- a/admin-dev/header.inc.php
+++ b/admin-dev/header.inc.php
@@ -297,7 +297,7 @@ $echoLis = '';
$mainsubtablist = '';
foreach ($tabs AS $t)
- if (checkTabRights($t['id_tab']) === true)
+ if (checkTabRights($t['id_tab']) === true AND (bool)$t['active'])
{
$img = (Tools::file_exists_cache(_PS_ADMIN_DIR_.'/themes/'.Context::getContext()->employee->bo_theme.'/img/t/'.$t['class_name'].'.gif') ? 'themes/'.Context::getContext()->employee->bo_theme.'/img/' : _PS_IMG_).'t/'.$t['class_name'].'.gif';
if (trim($t['module']) != '')
@@ -316,13 +316,13 @@ foreach ($tabs AS $t)
array_unshift($subTabs, $t);
foreach ($subTabs AS $t2)
- if (checkTabRights($t2['id_tab']) === true)
+ if (checkTabRights($t2['id_tab']) === true AND (bool)$t2['active'])
echo '
'.$t2['name'].'';
echo '';
$echoLi = '';
foreach ($subTabs AS $t2)
- if (checkTabRights($t2['id_tab']) === true)
+ if (checkTabRights($t2['id_tab']) === true AND (bool)$t2['active'])
$echoLi .= ''.$t2['name'].'';
if ($current)
diff --git a/classes/AdminController.php b/classes/AdminController.php
index 557562b34..8c95c4cea 100644
--- a/classes/AdminController.php
+++ b/classes/AdminController.php
@@ -1229,7 +1229,7 @@ class AdminControllerCore extends Controller
$current_id = Tab::getCurrentParentId();
foreach ($tabs as $index => $tab)
{
- if (Tab::checkTabRights($tab['id_tab']) === true)
+ if (Tab::checkTabRights($tab['id_tab']) === true AND (bool)$tab['active'])
{
if ($tab['name'] == 'Stock' && Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') == 0)
{
@@ -1259,7 +1259,7 @@ class AdminControllerCore extends Controller
foreach ($sub_tabs as $index2 => $sub_tab)
{
// class_name is the name of the class controller
- if (Tab::checkTabRights($sub_tab) === true)
+ if (Tab::checkTabRights($sub_tab) === true AND (bool)$sub_tab['active'])
$sub_tabs[$index2]['href'] = $this->context->link->getAdminLink($sub_tab['class_name']);
else
unset($sub_tabs[$index2]);
diff --git a/classes/Tab.php b/classes/Tab.php
index 0293b4d7b..f933604b6 100644
--- a/classes/Tab.php
+++ b/classes/Tab.php
@@ -41,6 +41,9 @@ class TabCore extends ObjectModel
/** @var integer position */
public $position;
+ /** @var integer active */
+ public $active;
+
/**
* @see ObjectModel::$definition
*/
@@ -53,6 +56,7 @@ class TabCore extends ObjectModel
'position' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'),
'module' => array('type' => self::TYPE_STRING, 'validate' => 'isTabName', 'size' => 64),
'class_name' => array('type' => self::TYPE_STRING, 'required' => true, 'size' => 64),
+ 'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
// Lang fields
'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 32),
diff --git a/controllers/admin/AdminTabsController.php b/controllers/admin/AdminTabsController.php
index 055e7eb36..c51481478 100644
--- a/controllers/admin/AdminTabsController.php
+++ b/controllers/admin/AdminTabsController.php
@@ -60,6 +60,14 @@ class AdminTabsControllerCore extends AdminController
'module' => array(
'title' => $this->l('Module')
),
+ 'active' => array(
+ 'title' => $this->l('Enabled'),
+ 'width' => 70,
+ 'align' => 'center',
+ 'active' => 'status',
+ 'type' => 'bool',
+ 'orderby' => false
+ ),
'position' => array(
'title' => $this->l('Position'),
'width' => 40,
@@ -123,6 +131,27 @@ class AdminTabsControllerCore extends AdminController
'name' => 'icon',
'desc' => $this->l('Upload logo from your computer').' (.gif, .jpg, .jpeg '.$this->l('or').' .png)'
),
+ array(
+ 'type' => 'radio',
+ 'label' => $this->l('Status:'),
+ 'name' => 'active',
+ 'required' => false,
+ 'class' => 't',
+ 'is_bool' => true,
+ 'values' => array(
+ array(
+ 'id' => 'active_on',
+ 'value' => 1,
+ 'label' => $this->l('Enabled')
+ ),
+ array(
+ 'id' => 'active_off',
+ 'value' => 0,
+ 'label' => $this->l('Disabled')
+ )
+ ),
+ 'desc' => $this->l('Show or hide tab.')
+ ),
array(
'type' => 'select',
'label' => $this->l('Parent:'),
@@ -242,7 +271,8 @@ class AdminTabsControllerCore extends AdminController
else
{
// Temporary add the position depend of the selection of the parent category
- $_POST['position'] = Tab::getNbTabs(Tools::getValue('id_parent'));
+ if (!Tools::isSubmit('id_tab')) // @todo Review
+ $_POST['position'] = Tab::getNbTabs(Tools::getValue('id_parent'));
parent::postProcess();
}
}
diff --git a/install-dev/sql/db.sql b/install-dev/sql/db.sql
index d74f1c9d7..b5196c3ef 100644
--- a/install-dev/sql/db.sql
+++ b/install-dev/sql/db.sql
@@ -1652,6 +1652,7 @@ CREATE TABLE `PREFIX_tab` (
`class_name` varchar(64) NOT NULL,
`module` varchar(64) NULL,
`position` int(10) unsigned NOT NULL,
+ `active` tinyint(1) NOT NULL DEFAULT 1,
PRIMARY KEY (`id_tab`),
KEY `class_name` (`class_name`),
KEY `id_parent` (`id_parent`)
diff --git a/install-dev/sql/db_settings_lite.sql b/install-dev/sql/db_settings_lite.sql
index 2dca0a3eb..7de4b5e5c 100644
--- a/install-dev/sql/db_settings_lite.sql
+++ b/install-dev/sql/db_settings_lite.sql
@@ -950,14 +950,14 @@ INSERT INTO `PREFIX_tab` (`id_tab`, `class_name`, `id_parent`, `position`) VALUE
(88,'AdminShop', 0, 11), (89,'AdminGroupShop', 88, 1),(90, 'AdminShopUrl', 88, 2),(91, 'AdminGenders', 2, 4),(92, 'AdminRequestSql', 9, 14),
(93, 'AdminProducts', 1, 1),
(94, 'AdminCategories', 1, 2),
-(95, 'AdminStock', 0, 15),
+(95, 'AdminStock', 0, 12),
(96, 'AdminWarehouses', 95, 1),
(97, 'AdminStockManagement', 95, 2),
(98, 'AdminStockInstantState', 95, 4),
(99, 'AdminStockCover', 95, 5),
(100, 'AdminSupplyOrders', 95, 6),
(101, 'AdminAttributeGenerator', -1, 0),
-(102, 'AdminAccounting', 0, 16),
+(102, 'AdminAccounting', 0, 13),
(103, 'AdminAccountingManagement', 102, 1),
(104, 'AdminAccountingExport', 102, 2),
(105, 'AdminCmsCategories', -1, 0),
diff --git a/install-dev/sql/upgrade/1.5.0.2.sql b/install-dev/sql/upgrade/1.5.0.2.sql
index e5df2997e..cd359ae19 100644
--- a/install-dev/sql/upgrade/1.5.0.2.sql
+++ b/install-dev/sql/upgrade/1.5.0.2.sql
@@ -357,6 +357,8 @@ INSERT INTO `PREFIX_order_invoice` (`id_order`, `number`, `total_discount_tax_ex
WHERE `invoice_number` != 0
);
+ALTER TABLE `PREFIX_tab` ADD `active` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1';
+
UPDATE `PREFIX_order_detail` od
SET od.`id_order_invoice` = (
SELECT oi.`id_order_invoice`
@@ -393,3 +395,19 @@ INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VAL
ALTER TABLE `PREFIX_specific_price` ADD `id_cart` INT(11) UNSIGNED NOT NULL AFTER `id_specific_price_rule`;
ALTER TABLE `PREFIX_specific_price` ADD INDEX `id_cart` (`id_cart`);
/* PHP:update_modules_multishop.php; */;
+
+UPDATE `PREFIX_tab`
+SET `position` = (
+ SELECT MAX(`position`)+1
+ FROM `PREFIX_tab`
+ WHERE `id_parent` = 0
+)
+WHERE `class_name` = 'AdminStock';
+
+UPDATE `PREFIX_tab`
+SET `position` = (
+ SELECT MAX(`position`)+1
+ FROM `PREFIX_tab`
+ WHERE `id_parent` = 0
+)
+WHERE `class_name` = 'AdminAccounting';
\ No newline at end of file