From 7a5d78928299d1a7cbdc911e9828fcd56f54d3c7 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Thu, 10 Mar 2011 12:09:59 +0000 Subject: [PATCH] Fix: sort dropdown list of countries and currencies after the translation of label --- htdocs/core/class/html.form.class.php | 46 ++++++++++++++++----------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 161d3ae0e57..0893b28d76a 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -254,11 +254,15 @@ class Form function select_country($selected='',$htmlname='pays_id',$htmloption='') { global $conf,$langs; + $langs->load("dict"); $out=''; + $countryArray=array(); + $code_iso=array(); + $label=array(); - $sql = "SELECT rowid, code, libelle, active"; + $sql = "SELECT rowid, code as code_iso, libelle as label"; $sql.= " FROM ".MAIN_DB_PREFIX."c_pays"; $sql.= " WHERE active = 1"; $sql.= " ORDER BY code ASC"; @@ -273,25 +277,30 @@ class Form if ($num) { $foundselected=false; - while ($i < $num) - { + + while ($i < $num) { $obj = $this->db->fetch_object($resql); - if ($selected && $selected != '-1' && - ($selected == $obj->rowid || $selected == $obj->code || $selected == $obj->libelle) ) - { - $foundselected=true; - $out.= ''; + $countryArray[$i]['rowid'] = $obj->rowid; + $countryArray[$i]['code_iso'] = $obj->code_iso; + $countryArray[$i]['label'] = ($obj->code_iso && $langs->trans("Country".$obj->code_iso)!="Country".$obj->code_iso?$langs->trans("Country".$obj->code_iso):($obj->label!='-'?$obj->label:' ')); + $code_iso[$i] = $countryArray[$i]['code_iso']; + $label[$i] = $countryArray[$i]['label']; $i++; } + + array_multisort($label, SORT_ASC, $countryArray); + + foreach ($countryArray as $row) { + if ($selected && $selected != '-1' && ($selected == $row['rowid'] || $selected == $row['code_iso'] || $selected == $row['label']) ) { + $foundselected=true; + $out.= ''; + } } $out.= ''; } @@ -2356,7 +2365,8 @@ class Form } else { $out.= ''; } }