From 29bfca17921bc896781052ba44ef6f0cbe4f85b0 Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Fri, 10 Feb 2023 11:59:55 +0100 Subject: [PATCH] LSform / dataEntryForm: Add forceGeneration parameter --- doc/conf/LSobject/LSform.docbook | 47 +++++++++++++++-------- src/includes/class/class.LSldapObject.php | 13 ++++++- 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/doc/conf/LSobject/LSform.docbook b/doc/conf/LSobject/LSform.docbook index ca05d4de..637e2a3f 100644 --- a/doc/conf/LSobject/LSform.docbook +++ b/doc/conf/LSobject/LSform.docbook @@ -8,7 +8,7 @@ -Via la configuration des attributs : La configuration des attributs +Via la configuration des attributs : La configuration des attributs détermine la présence ou non des attributs dans les formulaires. Elle permet également de définir si on souhaite bloquer leur présence en lecture seulement. @@ -22,7 +22,7 @@ apparaîtra en lecture-écriture ou en lecture uniquement voir pas du tout. -Via la configuration au niveau de chaque type d'&LSobject; : il y est +Via la configuration au niveau de chaque type d'&LSobject; : il y est possible de définir le comportement globale du formulaire comme la validation via Ajax ou encore la disposition logique des attributs dans le formulaire. @@ -68,8 +68,8 @@ via Ajax ou encore la disposition logique des attributs dans le formulaire. Tableau contenant la configuration des masques de saisie : il est possible de définir des masques de saisie pour faire en sorte que lors de la - création d'un objet, seul un certain nombre d'élements soit demandé à - l'utilisateur. Voir la + création d'un objet, seul un certain nombre d'élements soit demandé à + l'utilisateur. Voir la section concernée. @@ -78,13 +78,13 @@ via Ajax ou encore la disposition logique des attributs dans le formulaire. - + Configuration de l'affichage -La configuration des layout se situe dans la +La configuration des layout se situe dans la configuration des &LSobjects;, dans la variable layout ($GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['layout']). Cette variable est un tableau associatif dont la clé est l'identifiant de l'onglet @@ -134,7 +134,7 @@ et dont la valeur associée est la configuration de l'onglet. Lorsqu'un layout est défini, celui-ci -est "suivi à la lettre" pour l'affichage du &LSform;. +est "suivi à la lettre" pour l'affichage du &LSform;. Ainsi, si un attribut est défini dans la configuration de l'objet comme présent dans le &LSform; courant, mais que celui-ci n'est pas présent dans le layout, il ne sera pas du tout affiché. @@ -143,7 +143,7 @@ layout, il ne sera pas du tout affiché. Configuration des masques de saisie -La configuration des masques de saisie (dataEntryForm) se situe dans la +La configuration des masques de saisie (dataEntryForm) se situe dans la configuration des &LSobjects;, dans la variable dataEntryForm ($GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['dataEntryForm']). Cette variable est un tableau associatif dont la clé est l'identifiant du masque de saisie @@ -153,23 +153,28 @@ et dont la valeur associée est sa configuration. array( 'label' => '[label du masque de saisie]', - 'disabledLayout' => [booleen], + 'disabledLayout' => [booleen], 'displayedElements' => array ( - 'arg1', - 'arg2', + 'attr1', + 'attr2', ... ), 'defaultValues' => array ( - 'arg3' => [value], - 'arg4' => [value], + 'attr3' => [value], + 'attr4' => [value], ... ), 'requiredAllAttributes' => [booleen], 'requiredAttributes' => array ( - 'arg1', - 'arg2', + 'attr1', + 'attr2', ... - ) + ), + 'forceGeneration' => array ( + 'attr1', + 'attr2', + ... + ), ), ... );]]> @@ -208,7 +213,7 @@ et dont la valeur associée est sa configuration. attributs. Les valeurs multiples sont possibles en utilisant des tableaux. Les valeurs seront vue comme des valeurs retournées par - le formulaire et non comme des valeurs des attribus LDAP eux-même. Ainsi + le formulaire et non comme des valeurs des attribus LDAP eux-même. Ainsi et par exemple, un attribut traité comme un booléen dans un formulaire pourra prendre comme valeur par défaut yes ou no. @@ -234,6 +239,14 @@ et dont la valeur associée est sa configuration. + + forceGeneration + + Tableau contenant la liste des attributs dont la génération sera forcée lors de la + validation du formation. + + + diff --git a/src/includes/class/class.LSldapObject.php b/src/includes/class/class.LSldapObject.php index 43b4856c..68e522dd 100644 --- a/src/includes/class/class.LSldapObject.php +++ b/src/includes/class/class.LSldapObject.php @@ -492,6 +492,14 @@ class LSldapObject extends LSlog_staticLoggerClass { else { $LSform=false; } + + $forceGeneration = ( + $LSform && $LSform -> dataEntryForm? + LSconfig::get( + 'forceGeneration', array(), 'array', $LSform -> dataEntryFormConfig + ):array() + ); + foreach($this -> attrs as $attr_name => $attr) { $attr_values = $attr -> getValue(); if (!$attr -> isValidate()) { @@ -500,7 +508,10 @@ class LSldapObject extends LSlog_staticLoggerClass { $retval = false; } } - else if( (empty($attr_values)) && ($attr -> isRequired()) ) { + else if( + in_array($attr_name, $forceGeneration) + || (empty($attr_values) && $attr -> isRequired()) + ) { if ( $attr -> canBeGenerated()) { if ($attr -> generateValue()) { if (!$this -> validateAttrData($LSform, $attr, $justCheck)) {