diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_select_object.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_select_object.docbook index 6808f3a9..b0cd3c12 100644 --- a/doc/conf/LSattribute/LSattr_html/LSattr_html_select_object.docbook +++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_select_object.docbook @@ -12,7 +12,9 @@ 'object_type' => '[Type d'LSobject selectionnable]', 'display_name_format' => '[LSformat du nom d'affichage des LSobjects]', 'value_attribute' => '[Nom de l'attribut clé des LSobjects]' - ) + ), + 'sort' => [Booléen], + 'sortDirection' => '[ASC|DESC]' ),]]> ... @@ -35,18 +37,14 @@ Nom du type d'&LSobject; en référence. - - display_name_format &LSformat; du nom d'affichage des objets lors de leur sélection. - - value_attribute @@ -55,9 +53,7 @@ uid). - - filter @@ -70,6 +66,23 @@ + + sort + + Booléen définissant si la liste des objets choisis doit être + triée ou non (Vrai par défaut). Le trie est effectué sur les libellés + des objets choisis. + + + + + sortDirection + + Mot clé déterminant le sens du trie des objets choisis. + Valeurs possibles : ASC ou DESC (ASC par défaut). + + + diff --git a/public_html/includes/class/class.LSformElement_select_object.php b/public_html/includes/class/class.LSformElement_select_object.php index 8e10f811..75f3af72 100644 --- a/public_html/includes/class/class.LSformElement_select_object.php +++ b/public_html/includes/class/class.LSformElement_select_object.php @@ -89,6 +89,11 @@ class LSformElement_select_object extends LSformElement { LSselect :: loadDependenciesDisplay(); } } + + if (!isset($this -> params['html_options']['sort']) || $this -> params['html_options']['sort']) { + uasort($this -> values,array($this,'_sortTwoValues')); + } + $return['html'] = $this -> fetchTemplate(NULL,array( 'selectableObject' => $this -> selectableObject, 'unrecognizedValues' => $this -> attr_html -> unrecognizedValues, @@ -96,6 +101,26 @@ class LSformElement_select_object extends LSformElement { )); return $return; } + + /** + * Function use with uasort to sort two values + * + * @param[in] $va string One value + * @param[in] $vb string One value + * + * @retval int Value for uasort + **/ + private function _sortTwoValues(&$va,&$vb) { + if (isset($this -> params['html_options']['sortDirection']) && $this -> params['html_options']['sortDirection']=='DESC') { + $dir=-1; + } + else { + $dir=1; + } + if ($va == $vb) return 0; + $val = strcoll(strtolower($va), strtolower($vb)); + return $val*$dir; + } /* * Return the values of the object form the session variable