diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index cffc99c96a2..161d3ae0e57 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2299,7 +2299,6 @@ class Form * Retourne la liste des devises, dans la langue de l'utilisateur * @param selected code devise pre-selectionne * @param htmlname nom de la liste deroulante - * TODO trier liste sur noms apres traduction plutot que avant */ function select_currency($selected='',$htmlname='currency_id') { @@ -2307,21 +2306,24 @@ class Form } /** - * \brief Retourne la liste des devises, dans la langue de l'utilisateur - * \param selected code devise pre-selectionne - * \param htmlname nom de la liste deroulante - * \todo trier liste sur noms apres traduction plutot que avant + * Retourne la liste des devises, dans la langue de l'utilisateur + * @param selected code devise pre-selectionne + * @param htmlname nom de la liste deroulante */ function selectcurrency($selected='',$htmlname='currency_id') { global $conf,$langs,$user; + $langs->load("dict"); $out=''; + $currencyArray=array(); + $code_iso=array(); + $label=array(); if ($selected=='euro' || $selected=='euros') $selected='EUR'; // Pour compatibilite - $sql = "SELECT code, code_iso, label, active"; + $sql = "SELECT code_iso, label"; $sql.= " FROM ".MAIN_DB_PREFIX."c_currencies"; $sql.= " WHERE active = 1"; $sql.= " ORDER BY code_iso ASC"; @@ -2335,24 +2337,28 @@ class Form if ($num) { $foundselected=false; - while ($i < $num) - { + + while ($i < $num) { $obj = $this->db->fetch_object($resql); - if ($selected && $selected == $obj->code_iso) - { - $foundselected=true; - $out.= ''; + $currencyArray[$i]['code_iso'] = $obj->code_iso; + $currencyArray[$i]['label'] = ($obj->code_iso && $langs->trans("Currency".$obj->code_iso)!="Currency".$obj->code_iso?$langs->trans("Currency".$obj->code_iso):($obj->label!='-'?$obj->label:'')); + $code_iso[$i] = $currencyArray[$i]['code_iso']; + $label[$i] = $currencyArray[$i]['label']; $i++; } + + array_multisort($label, SORT_ASC, $currencyArray); + + foreach ($currencyArray as $row) { + if ($selected && $selected == $row['code_iso']) { + $foundselected=true; + $out.= ''; + } } $out.= ''; if ($user->admin) $out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionnarySetup"),1);