From 2f6361658a09f576e857c535a5d9013b64d0f6cc Mon Sep 17 00:00:00 2001 From: jfefe Date: Thu, 27 Jun 2013 13:35:28 +0200 Subject: [PATCH 1/2] Can choose several fields to display with extrafield list of table --- htdocs/core/class/extrafields.class.php | 63 ++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 206856c3530..92dca75f045 100755 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -690,7 +690,13 @@ class ExtraFields if (count($InfoFieldList)==3) $keyList=$InfoFieldList[2].' as rowid'; - $sql = 'SELECT '.$keyList.', '.$InfoFieldList[1]; + $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; @@ -706,8 +712,24 @@ class ExtraFields { while ($i < $num) { + $labeltoshow=''; $obj = $this->db->fetch_object($resql); - $labeltoshow=dol_trunc($obj->$InfoFieldList[1],18); + + // 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) { $out.=''; @@ -826,21 +848,50 @@ class ExtraFields { $param_list=array_keys($params['options']); $InfoFieldList = explode(":", $param_list[0]); + + $selectkey="rowid"; $keyList='rowid'; + if (count($InfoFieldList)==3) - $keyList=$InfoFieldList[2]; + { + $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 '.$InfoFieldList[1]; + $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; + print $sql; dol_syslog(get_class($this).':showOutputField:$type=sellist sql='.$sql); $resql = $this->db->query($sql); if ($resql) { $obj = $this->db->fetch_object($resql); - $value=$obj->$InfoFieldList[1]; + // Several field into label (eq table:code|libelle:rowid) + $fields_label = explode('|',$InfoFieldList[1]); + + if(is_array($fields_label)) + { + $valuetmp=''; + foreach ($fields_label as $field_toshow) + { + $valuetmp.= $obj->$field_toshow.' '; + } + $value=$valuetmp; + } + else + { + $value=$obj->$InfoFieldList[1]; + } + + } } elseif ($type == 'radio') From 162fc6e6dd094a7097a8108c03662bcde6469313 Mon Sep 17 00:00:00 2001 From: jfefe Date: Thu, 27 Jun 2013 13:45:06 +0200 Subject: [PATCH 2/2] Remove debug info --- htdocs/core/class/extrafields.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 92dca75f045..c7b2dd42bb7 100755 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -868,7 +868,6 @@ class ExtraFields $sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0]; $sql.= ' WHERE '.$selectkey.'=\''.$this->db->escape($value).'\''; //$sql.= ' AND entity = '.$conf->entity; - print $sql; dol_syslog(get_class($this).':showOutputField:$type=sellist sql='.$sql); $resql = $this->db->query($sql); if ($resql)