diff --git a/admin-dev/themes/default/template/controllers/products/helpers/tree/tree_toolbar_search.tpl b/admin-dev/themes/default/template/controllers/categories/helpers/tree/tree_node_folder_category.tpl similarity index 68% rename from admin-dev/themes/default/template/controllers/products/helpers/tree/tree_toolbar_search.tpl rename to admin-dev/themes/default/template/controllers/categories/helpers/tree/tree_node_folder_category.tpl index c98704a2f..9d0644212 100644 --- a/admin-dev/themes/default/template/controllers/products/helpers/tree/tree_toolbar_search.tpl +++ b/admin-dev/themes/default/template/controllers/categories/helpers/tree/tree_node_folder_category.tpl @@ -22,18 +22,13 @@ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} -  -{if isset($typeahead_source) && isset($id)} - -{/if} \ No newline at end of file +
  • + + + + + + +
  • \ No newline at end of file diff --git a/admin-dev/themes/default/template/controllers/products/helpers/tree/tree_toolbar_link.tpl b/admin-dev/themes/default/template/controllers/categories/helpers/tree/tree_node_item_category.tpl similarity index 73% rename from admin-dev/themes/default/template/controllers/products/helpers/tree/tree_toolbar_link.tpl rename to admin-dev/themes/default/template/controllers/categories/helpers/tree/tree_node_item_category.tpl index 52c8480aa..7cffdc99d 100644 --- a/admin-dev/themes/default/template/controllers/products/helpers/tree/tree_toolbar_link.tpl +++ b/admin-dev/themes/default/template/controllers/categories/helpers/tree/tree_node_item_category.tpl @@ -22,6 +22,10 @@ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} - - {if isset($icon_class)} {/if}{l s=$label} - \ No newline at end of file +
  • +
  • \ No newline at end of file diff --git a/admin-dev/themes/default/template/helpers/form/form.tpl b/admin-dev/themes/default/template/helpers/form/form.tpl index 2de73774f..0be5eb1f0 100644 --- a/admin-dev/themes/default/template/helpers/form/form.tpl +++ b/admin-dev/themes/default/template/helpers/form/form.tpl @@ -405,7 +405,7 @@ {elseif $input.type == 'shop'} {$input.html} {elseif $input.type == 'categories'} - {include file='helpers/form/form_category.tpl' categories=$input.values} + {$categories_tree} {elseif $input.type == 'categories_select'} {$input.category_tree} {elseif $input.type == 'asso_shop' && isset($asso_shop) && $asso_shop} diff --git a/admin-dev/themes/default/template/controllers/products/helpers/tree/tree.tpl b/admin-dev/themes/default/template/helpers/tree/tree.tpl similarity index 100% rename from admin-dev/themes/default/template/controllers/products/helpers/tree/tree.tpl rename to admin-dev/themes/default/template/helpers/tree/tree.tpl diff --git a/admin-dev/themes/default/template/controllers/products/helpers/tree/tree_header.tpl b/admin-dev/themes/default/template/helpers/tree/tree_header.tpl similarity index 100% rename from admin-dev/themes/default/template/controllers/products/helpers/tree/tree_header.tpl rename to admin-dev/themes/default/template/helpers/tree/tree_header.tpl diff --git a/admin-dev/themes/default/template/controllers/products/helpers/tree/tree_toolbar.tpl b/admin-dev/themes/default/template/helpers/tree/tree_toolbar.tpl similarity index 100% rename from admin-dev/themes/default/template/controllers/products/helpers/tree/tree_toolbar.tpl rename to admin-dev/themes/default/template/helpers/tree/tree_toolbar.tpl diff --git a/classes/Category.php b/classes/Category.php index df1b464b7..b2fca5c28 100644 --- a/classes/Category.php +++ b/classes/Category.php @@ -477,15 +477,19 @@ class CategoryCore extends ObjectModel return $categories; } - public static function getNestedCategories($root_category = 1, + public static function getNestedCategories($root_category = null, $id_lang = false, $active = true, $sql_filter = '', $sql_sort = '', $sql_limit = '') { + if (!isset($root_category)) + $root_category = self::getRootCategory($id_lang)->id; + if (!Validate::isInt($root_category)) die(Tools::displayError()); if (!Validate::isBool($active)) die(Tools::displayError()); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT * FROM `'._DB_PREFIX_.'category` c diff --git a/classes/helper/HelperForm.php b/classes/helper/HelperForm.php index ce47c7d52..c8e14e1d1 100644 --- a/classes/helper/HelperForm.php +++ b/classes/helper/HelperForm.php @@ -89,16 +89,7 @@ class HelperFormCore extends Helper case 'categories': if ($categories) { - // Added Jquery plugin treeview (css and js files) - $this->context->controller->addJqueryPlugin('treeview-categories'); - - // Added JS files - $this->context->controller->addJS(_PS_JS_DIR_.'jquery/plugins/treeview-categories/jquery.treeview-categories.async.js'); - $this->context->controller->addJS(_PS_JS_DIR_.'jquery/plugins/treeview-categories/jquery.treeview-categories.edit.js'); - $this->context->controller->addJS(_PS_JS_DIR_.'admin-categories-tree.js'); - - if (isset($params['use_search']) && $params['use_search']) - $this->context->controller->addJS(_PS_JS_DIR_.'jquery/plugins/autocomplete/jquery.autocomplete.js'); + $this->context->smarty->assign('categories_tree', $params['categories_tree']); $categories = false; } break; diff --git a/controllers/admin/AdminCategoriesController.php b/controllers/admin/AdminCategoriesController.php index bed3450e3..b0ab79774 100644 --- a/controllers/admin/AdminCategoriesController.php +++ b/controllers/admin/AdminCategoriesController.php @@ -335,12 +335,27 @@ class AdminCategoriesControllerCore extends AdminController $this->action = 'select_delete'; } + private function _disableCategories(&$categories, $disabled_categories = null) + { + foreach ($categories as &$category) + { + if (!isset($disabled_categories) || in_array($category['id_category'], $disabled_categories)) + { + $category['disabled'] = true; + if (array_key_exists('children', $category) && is_array($category['children'])) + self::_disableCategories($category['children']); + } + else if (array_key_exists('children', $category) && is_array($category['children'])) + self::_disableCategories($category['children'], $disabled_categories); + } + } + public function renderForm() { $this->initToolbar(); $obj = $this->loadObject(true); $id_shop = Context::getContext()->shop->id; - $selected_cat = array((isset($obj->id_parent) && $obj->isParentCategoryAvailable($id_shop))? (int)$obj->id_parent : (int)Tools::getValue('id_parent', Category::getRootCategory()->id)); + $selected_category = (isset($obj->id_parent) && $obj->isParentCategoryAvailable($id_shop))? (int)$obj->id_parent : (int)Tools::getValue('id_parent', Category::getRootCategory()->id); $unidentified = new Group(Configuration::get('PS_UNIDENTIFIED_GROUP')); $guest = new Group(Configuration::get('PS_GUEST_GROUP')); $default = new Group(Configuration::get('PS_CUSTOMER_GROUP')); @@ -348,8 +363,52 @@ class AdminCategoriesControllerCore extends AdminController $unidentified_group_information = sprintf($this->l('%s - All people without a valid customer account.'), ''.$unidentified->name[$this->context->language->id].''); $guest_group_information = sprintf($this->l('%s - Customer who placed an order with the guest checkout.'), ''.$guest->name[$this->context->language->id].''); $default_group_information = sprintf($this->l('%s - All people who have created an account on this site.'), ''.$default->name[$this->context->language->id].''); - $root_category = Category::getRootCategory(); - $root_category = array('id_category' => $root_category->id, 'name' => $root_category->name); + $categories = Category::getNestedCategories( + Category::getRootCategory()->id, + $this->context->employee->id_lang + ); + $this->_disableCategories($categories, array($this->_category->id)); + $categories_tree = new HelperTree('categories-tree', $categories); + $categories_tree_render = $categories_tree->setActions(array( + new HelperTreeToolbarLink( + 'Collapse All', + '#', + '$(\'#categories-tree\').tree(\'collapseAll\')', + 'icon-collapse-alt'), + new HelperTreeToolbarLink( + 'Expand All', + '#', + '$(\'#categories-tree\').tree(\'expandAll\')', + 'icon-expand-alt') + )) + ->setNodeFolderTemplate('tree_node_folder_category.tpl') + ->setNodeItemTemplate('tree_node_item_category.tpl') + ->render(); + + $categories_tree_render .= ''; + $this->fields_form = array( 'tinymce' => true, 'legend' => array( @@ -386,24 +445,10 @@ class AdminCategoriesControllerCore extends AdminController ) ), array( - 'type' => 'categories', + 'type' => 'categories', 'label' => $this->l('Parent category:'), - 'name' => 'id_parent', - 'values' => array( - 'trads' => array( - 'Root' => $root_category, - 'selected' => $this->l('Selected'), - 'Collapse All' => $this->l('Collapse All'), - 'Expand All' => $this->l('Expand All') - ), - 'selected_cat' => $selected_cat, - 'input_name' => 'id_parent', - 'use_radio' => true, - 'use_search' => false, - 'disabled_categories' => array(4), - 'top_category' => Category::getTopCategory(), - 'use_context' => true, - ) + 'name' => 'id_parent', + 'categories_tree' => $categories_tree_render ), array( 'type' => 'textarea',