Fix: sort dropdown list of countries after the translation of label

This commit is contained in:
Regis Houssin 2011-03-10 11:49:46 +00:00
parent 512914b791
commit 283bed5c32

View File

@ -2299,7 +2299,6 @@ class Form
* Retourne la liste des devises, dans la langue de l'utilisateur * Retourne la liste des devises, dans la langue de l'utilisateur
* @param selected code devise pre-selectionne * @param selected code devise pre-selectionne
* @param htmlname nom de la liste deroulante * @param htmlname nom de la liste deroulante
* TODO trier liste sur noms apres traduction plutot que avant
*/ */
function select_currency($selected='',$htmlname='currency_id') 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 * Retourne la liste des devises, dans la langue de l'utilisateur
* \param selected code devise pre-selectionne * @param selected code devise pre-selectionne
* \param htmlname nom de la liste deroulante * @param htmlname nom de la liste deroulante
* \todo trier liste sur noms apres traduction plutot que avant
*/ */
function selectcurrency($selected='',$htmlname='currency_id') function selectcurrency($selected='',$htmlname='currency_id')
{ {
global $conf,$langs,$user; global $conf,$langs,$user;
$langs->load("dict"); $langs->load("dict");
$out=''; $out='';
$currencyArray=array();
$code_iso=array();
$label=array();
if ($selected=='euro' || $selected=='euros') $selected='EUR'; // Pour compatibilite 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.= " FROM ".MAIN_DB_PREFIX."c_currencies";
$sql.= " WHERE active = 1"; $sql.= " WHERE active = 1";
$sql.= " ORDER BY code_iso ASC"; $sql.= " ORDER BY code_iso ASC";
@ -2335,24 +2337,28 @@ class Form
if ($num) if ($num)
{ {
$foundselected=false; $foundselected=false;
while ($i < $num)
{ while ($i < $num) {
$obj = $this->db->fetch_object($resql); $obj = $this->db->fetch_object($resql);
if ($selected && $selected == $obj->code_iso) $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:''));
$foundselected=true; $code_iso[$i] = $currencyArray[$i]['code_iso'];
$out.= '<option value="'.$obj->code_iso.'" selected="selected">'; $label[$i] = $currencyArray[$i]['label'];
}
else
{
$out.= '<option value="'.$obj->code_iso.'">';
}
if ($obj->code_iso) { $out.= $obj->code_iso . ' - '; }
// Si traduction existe, on l'utilise, sinon on prend le libelle par defaut
$out.= ($obj->code_iso && $langs->trans("Currency".$obj->code_iso)!="Currency".$obj->code_iso?$langs->trans("Currency".$obj->code_iso):($obj->label!='-'?$obj->label:''));
$out.= '</option>';
$i++; $i++;
} }
array_multisort($label, SORT_ASC, $currencyArray);
foreach ($currencyArray as $row) {
if ($selected && $selected == $row['code_iso']) {
$foundselected=true;
$out.= '<option value="'.$row['code_iso'].'" selected="selected">';
} else {
$out.= '<option value="'.$row['code_iso'].'">';
}
$out.= $row['code_iso'] . ' - ' . $row['label'];
$out.= '</option>';
}
} }
$out.= '</select>'; $out.= '</select>';
if ($user->admin) $out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionnarySetup"),1); if ($user->admin) $out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionnarySetup"),1);