From 63e6cf5c81b863761b158521063ae9ae31a62592 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Thu, 18 Jul 2013 17:42:09 +0200 Subject: [PATCH] Add possibility to define dependencies between extra lists --- htdocs/core/class/commonobject.class.php | 29 ++++++++++++++++++++++++ htdocs/core/class/extrafields.class.php | 28 +++++++++++++++-------- 2 files changed, 47 insertions(+), 10 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index fac9bdfd764..c1b75793220 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2271,6 +2271,35 @@ abstract class CommonObject } $out .= "\n"; $out .= ' '; + $out .= ' + '; } return $out; } diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index dcff2aedf14..640075a06b1 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -673,8 +673,10 @@ class ExtraFields $out=''; @@ -688,11 +690,16 @@ class ExtraFields // 0 1 : tableName // 1 2 : label field name Nom du champ contenant le libelle // 2 3 : key fields name (if differ of rowid) + // 3 4 : key field parent (for dependent lists) $keyList='rowid'; - if (count($InfoFieldList)==3) + if (count($InfoFieldList)>=3) $keyList=$InfoFieldList[2].' as rowid'; + if (count($InfoFieldList)>=4) { + list($parentName, $parentField) = explode('|', $InfoFieldList[3]); + $keyList.= ', '.$parentField; + } $sql = 'SELECT '.$keyList.', '.$InfoFieldList[1]; $sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0]; @@ -717,15 +724,16 @@ class ExtraFields }else { $labeltoshow=dol_trunc($obj->$InfoFieldList[1],18); } + + if(!empty($InfoFieldList[3])) { + $parent = $parentName.':'.$obj->{$parentField}; + } - if ($value==$obj->rowid) - { - $out.=''; - } - else - { - $out.=''; - } + $out.=''; + $i++; } }