LSattr_html :: select_list : add values_attribute parameter
authorBenjamin Renard <brenard@easter-eggs.com>
Thu, 27 Aug 2015 16:28:13 +0000 (18:28 +0200)
committerBenjamin Renard <brenard@easter-eggs.com>
Thu, 21 Jul 2016 09:03:34 +0000 (11:03 +0200)
doc/conf/LSattribute/LSattr_html/LSattr_html_select_list.docbook
public_html/includes/class/class.LSattr_html_select_list.php

index fe27e6a..a0abe28 100644 (file)
@@ -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]'
   </varlistentry>
 
   <varlistentry>
+    <term>values_attribute</term>
+    <listitem>
+      <simpara>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
+      <emphasis>value_attribute</emphasis>.</simpara>
+    </listitem>
+  </varlistentry>
+
+  <varlistentry>
     <term>filter</term>
     <listitem>
       <simpara>Filtre falcultatif de la recherche des LSobjets. Il sera dans tous
index c7b3a4b..fb2fa32 100644 (file)
@@ -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;
       }
     }