diff --git a/doc/conf/LSattribute/LSattr_html/LSattr_html_select_list.docbook b/doc/conf/LSattribute/LSattr_html/LSattr_html_select_list.docbook index fe27e6a7..a0abe284 100644 --- a/doc/conf/LSattribute/LSattr_html/LSattr_html_select_list.docbook +++ b/doc/conf/LSattribute/LSattr_html/LSattr_html_select_list.docbook @@ -16,6 +16,7 @@ 'object_type' => '[Type d'LSobject]', 'display_name_format' => '[LSformat du nom d'affichage des LSobjects]', 'value_attribute' => '[Nom de l'attribut clé]', + 'values_attribute' => '[Nom de l'attribut clé multi-valeur]', 'filter' => '[Filtre de recherche des LSobject]', 'scope' => '[Scope de la recherche]', 'basedn' => '[Basedn de la recherche]' @@ -85,6 +86,16 @@ + + values_attribute + + Nom de l'attribut des &LSobjects; en référence servant de catalogue de + valeurs. Dans ce mode, la valeur n'a pas de label et est affichée directement + dans l'interface. Ce paramètre peut-être utilisé en complément ou non du paramètre + value_attribute. + + + filter diff --git a/public_html/includes/class/class.LSattr_html_select_list.php b/public_html/includes/class/class.LSattr_html_select_list.php index c7b3a4b3..fb2fa321 100644 --- a/public_html/includes/class/class.LSattr_html_select_list.php +++ b/public_html/includes/class/class.LSattr_html_select_list.php @@ -157,7 +157,7 @@ class LSattr_html_select_list extends LSattr_html{ protected function getLSobjectPossibleValues($conf) { $retInfos = array(); - if ((!isset($conf['object_type'])) || (!isset($conf['value_attribute']))) { + if ((!isset($conf['object_type'])) || ((!isset($conf['value_attribute'])) && (!isset($conf['values_attribute'])))) { LSerror :: addErrorCode('LSattr_html_select_list_01',$this -> name); break; } @@ -172,23 +172,38 @@ class LSattr_html_select_list extends LSattr_html{ 'displayFormat' => (isset($conf['display_name_format'])?$conf['display_name_format']:null), ); - if ($conf['value_attribute']!='dn') { + if (isset($conf['value_attribute']) && $conf['value_attribute']!='dn') { $param['attributes'][] = $conf['value_attribute']; } + if (isset($conf['values_attribute'])) { + $param['attributes'][] = $conf['values_attribute']; + } $LSsearch = new LSsearch($conf['object_type'],'LSattr_html_select_list',$param,true); $LSsearch -> run(); - if(($conf['value_attribute']=='dn')||($conf['value_attribute']=='%{dn}')) { - $retInfos = $LSsearch -> listObjectsName(); + if (isset($val['value_attribute'])) { + if(($conf['value_attribute']=='dn')||($conf['value_attribute']=='%{dn}')) { + $retInfos = $LSsearch -> listObjectsName(); + } + else { + $list = $LSsearch -> getSearchEntries(); + foreach($list as $entry) { + $key = $entry -> get($conf['value_attribute']); + if(is_array($key)) { + $key = $key[0]; + } + $retInfos[$key]=$entry -> displayName; + } + } } - else { + if (isset($conf['values_attribute'])) { $list = $LSsearch -> getSearchEntries(); foreach($list as $entry) { - $key = $entry -> get($conf['value_attribute']); - if(is_array($key)) { - $key = $key[0]; + $keys = $entry -> get($conf['values_attribute']); + if (!is_array($keys)) $keys=array($keys); + foreach ($keys as $key) { + $retInfos[$key]=$key; } - $retInfos[$key]=$entry -> displayName; } }