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