LSform / dataEntryForm: Add forceGeneration parameter

This commit is contained in:
Benjamin Renard 2023-02-10 11:59:55 +01:00
parent f8c38dd3b6
commit 29bfca1792
Signed by: bn8
GPG key ID: 3E2E1CE1907115BC
2 changed files with 42 additions and 18 deletions

View file

@ -8,7 +8,7 @@
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para>Via la configuration des attributs : La configuration des attributs <para>Via la configuration des attributs : La configuration des attributs
détermine la présence ou non des attributs dans les formulaires. Elle permet 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. également de définir si on souhaite bloquer leur présence en lecture seulement.
</para> </para>
@ -22,7 +22,7 @@ apparaîtra en lecture-écriture ou en lecture uniquement voir pas du tout.
</listitem> </listitem>
<listitem> <listitem>
<para>Via la configuration au niveau de chaque type d'&LSobject; : il y est <para>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 possible de définir le comportement globale du formulaire comme la validation
via Ajax ou encore la disposition logique des attributs dans le formulaire.</para> via Ajax ou encore la disposition logique des attributs dans le formulaire.</para>
@ -68,8 +68,8 @@ via Ajax ou encore la disposition logique des attributs dans le formulaire.</par
<listitem> <listitem>
<simpara>Tableau contenant la configuration des masques de saisie : il est <simpara>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 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é à création d'un objet, seul un certain nombre d'élements soit demandé à
l'utilisateur. <link linkend='config-LSobject-LSform-dataEntryForm'>Voir la l'utilisateur. <link linkend='config-LSobject-LSform-dataEntryForm'>Voir la
section concernée.</link></simpara> section concernée.</link></simpara>
</listitem> </listitem>
</varlistentry> </varlistentry>
@ -78,13 +78,13 @@ via Ajax ou encore la disposition logique des attributs dans le formulaire.</par
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</para> </para>
<sect3 id="config-LSobject-LSform-layout"> <sect3 id="config-LSobject-LSform-layout">
<title>Configuration de l'affichage</title> <title>Configuration de l'affichage</title>
<para>La configuration des <emphasis>layout</emphasis> se situe dans la <para>La configuration des <emphasis>layout</emphasis> se situe dans la
configuration des &LSobjects;, dans la variable <varname>layout</varname> configuration des &LSobjects;, dans la variable <varname>layout</varname>
(<emphasis>$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['layout']</emphasis>). (<emphasis>$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['layout']</emphasis>).
Cette variable est un tableau associatif dont la clé est l'identifiant de l'onglet 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.
</variablelist> </variablelist>
</para> </para>
<important><simpara>Lorsqu'un <emphasis>layout</emphasis> est défini, celui-ci <important><simpara>Lorsqu'un <emphasis>layout</emphasis> est défini, celui-ci
est <emphasis>"suivi à la lettre"</emphasis> pour l'affichage du &LSform;. est <emphasis>"suivi à la lettre"</emphasis> pour l'affichage du &LSform;.
Ainsi, si un attribut est défini dans la configuration de l'objet comme présent 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 <emphasis> dans le &LSform; courant, mais que celui-ci n'est pas présent dans le <emphasis>
layout</emphasis>, il ne sera pas du tout affiché.</simpara></important> layout</emphasis>, il ne sera pas du tout affiché.</simpara></important>
@ -143,7 +143,7 @@ layout</emphasis>, il ne sera pas du tout affiché.</simpara></important>
<sect3 id="config-LSobject-LSform-dataEntryForm"> <sect3 id="config-LSobject-LSform-dataEntryForm">
<title>Configuration des masques de saisie</title> <title>Configuration des masques de saisie</title>
<para>La configuration des masques de saisie (<emphasis>dataEntryForm</emphasis>) se situe dans la <para>La configuration des masques de saisie (<emphasis>dataEntryForm</emphasis>) se situe dans la
configuration des &LSobjects;, dans la variable <varname>dataEntryForm</varname> configuration des &LSobjects;, dans la variable <varname>dataEntryForm</varname>
(<emphasis>$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['dataEntryForm']</emphasis>). (<emphasis>$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['dataEntryForm']</emphasis>).
Cette variable est un tableau associatif dont la clé est l'identifiant du masque de saisie 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.
<![CDATA[$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['dataEntryForm'] = array ( <![CDATA[$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['dataEntryForm'] = array (
'masque1' => array( 'masque1' => array(
'label' => '[label du masque de saisie]', 'label' => '[label du masque de saisie]',
'disabledLayout' => [booleen], 'disabledLayout' => [booleen],
'displayedElements' => array ( 'displayedElements' => array (
'arg1', 'attr1',
'arg2', 'attr2',
... ...
), ),
'defaultValues' => array ( 'defaultValues' => array (
'arg3' => [value], 'attr3' => [value],
'arg4' => [value], 'attr4' => [value],
... ...
), ),
'requiredAllAttributes' => [booleen], 'requiredAllAttributes' => [booleen],
'requiredAttributes' => array ( 'requiredAttributes' => array (
'arg1', 'attr1',
'arg2', '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 attributs. Les valeurs multiples sont possibles en utilisant des
tableaux.</simpara> tableaux.</simpara>
<important><simpara>Les valeurs seront vue comme des valeurs retournées par <important><simpara>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 et par exemple, un attribut traité comme un booléen dans un formulaire pourra
prendre comme valeur par défaut <emphasis>yes</emphasis> ou prendre comme valeur par défaut <emphasis>yes</emphasis> ou
<emphasis>no</emphasis>.</simpara></important> <emphasis>no</emphasis>.</simpara></important>
@ -234,6 +239,14 @@ et dont la valeur associée est sa configuration.
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>forceGeneration</term>
<listitem>
<simpara>Tableau contenant la liste des attributs dont la génération sera forcée lors de la
validation du formation.</simpara>
</listitem>
</varlistentry>
</variablelist> </variablelist>
</para> </para>
</sect3> </sect3>

View file

@ -492,6 +492,14 @@ class LSldapObject extends LSlog_staticLoggerClass {
else { else {
$LSform=false; $LSform=false;
} }
$forceGeneration = (
$LSform && $LSform -> dataEntryForm?
LSconfig::get(
'forceGeneration', array(), 'array', $LSform -> dataEntryFormConfig
):array()
);
foreach($this -> attrs as $attr_name => $attr) { foreach($this -> attrs as $attr_name => $attr) {
$attr_values = $attr -> getValue(); $attr_values = $attr -> getValue();
if (!$attr -> isValidate()) { if (!$attr -> isValidate()) {
@ -500,7 +508,10 @@ class LSldapObject extends LSlog_staticLoggerClass {
$retval = false; $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 -> canBeGenerated()) {
if ($attr -> generateValue()) { if ($attr -> generateValue()) {
if (!$this -> validateAttrData($LSform, $attr, $justCheck)) { if (!$this -> validateAttrData($LSform, $attr, $justCheck)) {