diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 1100e240015..da4ba612f01 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -701,7 +701,19 @@ class ExtraFields $keyList.= ', '.$parentField; } - $sql = 'SELECT '.$keyList.', '.$InfoFieldList[1]; + $fields_label = explode('|',$InfoFieldList[1]); + if(is_array($fields_label)) { + $keyList .=', '; + $keyList .= implode(', ', $fields_label); + } + + $fields_label = explode('|',$InfoFieldList[1]); + if(is_array($fields_label)) { + $keyList .=', '; + $keyList .= implode(', ', $fields_label); + } + + $sql = 'SELECT '.$keyList; $sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0]; //$sql.= ' WHERE entity = '.$conf->entity; @@ -717,24 +729,61 @@ class ExtraFields { while ($i < $num) { + $labeltoshow=''; $obj = $this->db->fetch_object($resql); - $translabel=$langs->trans($obj->$InfoFieldList[1]); - if ($translabel!=$obj->$InfoFieldList[1]) { - $labeltoshow=dol_trunc($translabel,18); - }else { - $labeltoshow=dol_trunc($obj->$InfoFieldList[1],18); - } - - if(!empty($InfoFieldList[3])) { - $parent = $parentName.':'.$obj->{$parentField}; - } - $out.=''; - - $i++; + // Several field into label (eq table:code|libelle:rowid) + $fields_label = explode('|',$InfoFieldList[1]); + if(is_array($fields_label)) + { + foreach ($fields_label as $field_toshow) + { + $labeltoshow.= $obj->$field_toshow.' '; + } + } + else + { + $labeltoshow=$obj->$InfoFieldList[1]; + } + $labeltoshow=dol_trunc($labeltoshow,45); + + if ($value==$obj->rowid) + { + foreach ($fields_label as $field_toshow) + { + $translabel=$langs->trans($obj->$field_toshow); + if ($translabel!=$obj->$field_toshow) { + $labeltoshow=dol_trunc($translabel,18).' '; + }else { + $labeltoshow=dol_trunc($obj->$field_toshow,18).' '; + } + } + } + else + { + $translabel=$langs->trans($obj->$InfoFieldList[1]); + if ($translabel!=$obj->$InfoFieldList[1]) { + $labeltoshow=dol_trunc($translabel,18); + }else { + $labeltoshow=dol_trunc($obj->$InfoFieldList[1],18); + } + + if ($value==$obj->rowid) + { + $out.=''; + } + + if(!empty($InfoFieldList[3])) { + $parent = $parentName.':'.$obj->{$parentField}; + } + + $out.=''; + + $i++; + } } } $this->db->free(); @@ -846,26 +895,56 @@ class ExtraFields { $param_list=array_keys($params['options']); $InfoFieldList = explode(":", $param_list[0]); - $keyList='rowid'; - if (count($InfoFieldList)==3) - $keyList=$InfoFieldList[2]; - $sql = 'SELECT '.$InfoFieldList[1]; + $selectkey="rowid"; + $keyList='rowid'; + + if (count($InfoFieldList)==3) + { + $selectkey = $InfoFieldList[2]; + $keyList=$InfoFieldList[2].' as rowid'; + } + + $fields_label = explode('|',$InfoFieldList[1]); + if(is_array($fields_label)) { + $keyList .=', '; + $keyList .= implode(', ', $fields_label); + } + + $sql = 'SELECT '.$keyList; $sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0]; - $sql.= ' WHERE '.$keyList.'=\''.$this->db->escape($value).'\''; + $sql.= ' WHERE '.$selectkey.'=\''.$this->db->escape($value).'\''; //$sql.= ' AND entity = '.$conf->entity; dol_syslog(get_class($this).':showOutputField:$type=sellist sql='.$sql); $resql = $this->db->query($sql); if ($resql) { $obj = $this->db->fetch_object($resql); - $translabel=$langs->trans($obj->$InfoFieldList[1]); - if ($translabel!=$obj->$InfoFieldList[1]) { - $value=dol_trunc($translabel,18); - }else { - $value=$obj->$InfoFieldList[1]; - } + // Several field into label (eq table:code|libelle:rowid) + $fields_label = explode('|',$InfoFieldList[1]); + + if(is_array($fields_label)) + { + foreach ($fields_label as $field_toshow) + { + $translabel=$langs->trans($obj->$InfoFieldList[1]); + if ($translabel!=$obj->$InfoFieldList[1]) { + $value=dol_trunc($translabel,18).' '; + }else { + $value=$obj->$InfoFieldList[1].' '; + } + } + } + else + { + $translabel=$langs->trans($obj->$InfoFieldList[1]); + if ($translabel!=$obj->$InfoFieldList[1]) { + $value=dol_trunc($translabel,18); + }else { + $value=$obj->$InfoFieldList[1]; + } + } } } elseif ($type == 'radio') @@ -1001,5 +1080,4 @@ class ExtraFields return 0; } } -} -?> +} \ No newline at end of file