diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 7731bf8d2b0..12ae532e6d2 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1958,17 +1958,6 @@ class Categorie extends CommonObject return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables, 1); } - /** - * Return a list with all selected categories of a category filter box - * - * @param string $type The category type (e.g Categorie::TYPE_WAREHOUSE) - * @return Array A list with all selected categories (Note: "-2" is typical "without category") - */ - public static function getPost($type) - { - return GETPOST("search_category_".$type."_list", "array"); - } - /** * Return the addtional SQL JOIN query for filtering a list by a category * @@ -1986,11 +1975,11 @@ class Categorie extends CommonObject * Return the addtional SQL SELECT query for filtering a list by a category * * @param string $type The category type (e.g Categorie::TYPE_WAREHOUSE) - * @param Array $searchList A list with the selected categories * @param string $rowIdName The name of the row id inside the whole sql query (e.g. "e.rowid") + * @param Array $searchList A list with the selected categories * @return string A additional SQL SELECT query */ - public static function getFilterSelectQuery($type, $searchList, $rowIdName) + public static function getFilterSelectQuery($type, $rowIdName, $searchList) { if (empty($searchList) && !is_array($searchList)) { @@ -2020,34 +2009,4 @@ class Categorie extends CommonObject return ""; } } - - /** - * Return a HTML filter box for a list filter view - * - * @param string $type The category type (e.g Categorie::TYPE_WAREHOUSE) - * @param Array $preSelected A list with the elements that should pre-selected - * @param Form $form The form object (need for access form functions) - * @param Translate $langs The translate object (need for access translations) - * @return string A HTML filter box (Note: selected results can get with GETPOST("search_category_".$type."_list")) - */ - public static function getFilterBox($type, $preSelected, $form, $langs) - { - if (empty($preSelected) || !is_array($preSelected)) - { - $preSelected = array(); - } - - $htmlName = "search_category_".$type."_list"; - - $categoryArray = $form->select_all_categories($type, "", "", 64, 0, 1); - $categoryArray[-2] = "- ".$langs->trans('NotCategorized')." -"; - - $filter = ''; - $filter .= '
'; - $filter .= $langs->trans('Categories').": "; - $filter .= Form::multiselectarray($htmlName, $categoryArray, $preSelected, 0, 0, "minwidth300"); - $filter .= "
"; - - return $filter; - } } diff --git a/htdocs/core/class/html.formcategory.class.php b/htdocs/core/class/html.formcategory.class.php new file mode 100644 index 00000000000..91a4d72cf42 --- /dev/null +++ b/htdocs/core/class/html.formcategory.class.php @@ -0,0 +1,58 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/core/class/html.formcategory.class.php + * \ingroup core + * \brief File of class to build HTML component for category filtering + */ + +require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; + +class FormCategory extends Form +{ + /** + * Return a HTML filter box for a list filter view + * + * @param string $type The categorie type (e.g Categorie::TYPE_WAREHOUSE) + * @param Array $preSelected A list with the elements that should pre-selected + * @return string A HTML filter box (Note: selected results can get with GETPOST("search_category_".$type."_list")) + */ + public function GetFilterBox($type, $preSelected) + { + // phpcs:enable + global $langs; + + if (empty($preSelected) || !is_array($preSelected)) + { + $preSelected = array(); + } + + $htmlName = "search_category_".$type."_list"; + + $categoryArray = $this->select_all_categories($type, "", "", 64, 0, 1); + $categoryArray[-2] = "- ".$langs->trans('NotCategorized')." -"; + + $filter = ''; + $filter .= '
'; + $filter .= $langs->trans('Categories').": "; + $filter .= Form::multiselectarray($htmlName, $categoryArray, $preSelected, 0, 0, "minwidth300"); + $filter .= "
"; + + return $filter; + } +} \ No newline at end of file diff --git a/htdocs/product/stock/list.php b/htdocs/product/stock/list.php index 03e9940e757..2b6ec559b71 100644 --- a/htdocs/product/stock/list.php +++ b/htdocs/product/stock/list.php @@ -3,6 +3,7 @@ * Copyright (C) 2004-2016 Laurent Destailleur * Copyright (C) 2005-2014 Regis Houssin * Copyright (C) 2015 Juanjo Menent + * Copyright (C) 2020 Tobias Sekan * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,6 +27,12 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/product/stock/class/entrepot.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcategory.class.php'; + +if (!empty($conf->categorie->enabled)) +{ + require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; +} // Load translation files required by the page $langs->loadLangs(array("stocks", "other")); @@ -47,7 +54,7 @@ $search_status = GETPOST("search_status", "int"); if (!empty($conf->categorie->enabled)) { - $search_category_list = Categorie::getPost(Categorie::TYPE_WAREHOUSE); + $search_category_list = GETPOST("search_category_".Categorie::TYPE_WAREHOUSE."_list", "array"); } // Load variable for pagination @@ -164,7 +171,7 @@ if (empty($reshook)) * View */ -$form = new Form($db); +$form = new FormCategory($db); $warehouse = new Entrepot($db); $now = dol_now(); @@ -202,7 +209,7 @@ $sql .= " WHERE e.entity IN (".getEntity('stock').")"; if (!empty($conf->categorie->enabled)) { - $sql .= Categorie::getFilterSelectQuery(Categorie::TYPE_WAREHOUSE, $search_category_list, "e.rowid"); + $sql .= Categorie::getFilterSelectQuery(Categorie::TYPE_WAREHOUSE, "e.rowid", $search_category_list); } if ($search_ref) $sql .= natural_search("e.ref", $search_ref); // ref @@ -334,7 +341,7 @@ $moreforfilter = ''; if (!empty($conf->categorie->enabled)) { - $moreforfilter .= Categorie::getFilterBox(Categorie::TYPE_WAREHOUSE, $search_category_list, $form, $langs); + $moreforfilter .= $form->GetFilterBox(Categorie::TYPE_WAREHOUSE, $search_category_list); } /*$moreforfilter.='
';