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>
<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
également de définir si on souhaite bloquer leur présence en lecture seulement.
</para>
@ -22,7 +22,7 @@ apparaîtra en lecture-écriture ou en lecture uniquement voir pas du tout.
</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
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>
<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
création d'un objet, seul un certain nombre d'élements soit demandé à
l'utilisateur. <link linkend='config-LSobject-LSform-dataEntryForm'>Voir la
création d'un objet, seul un certain nombre d'élements soit demandé à
l'utilisateur. <link linkend='config-LSobject-LSform-dataEntryForm'>Voir la
section concernée.</link></simpara>
</listitem>
</varlistentry>
@ -78,13 +78,13 @@ via Ajax ou encore la disposition logique des attributs dans le formulaire.</par
</listitem>
</itemizedlist>
</itemizedlist>
</para>
<sect3 id="config-LSobject-LSform-layout">
<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>
(<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
@ -134,7 +134,7 @@ et dont la valeur associée est la configuration de l'onglet.
</variablelist>
</para>
<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
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>
@ -143,7 +143,7 @@ layout</emphasis>, il ne sera pas du tout affiché.</simpara></important>
<sect3 id="config-LSobject-LSform-dataEntryForm">
<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>
(<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
@ -153,23 +153,28 @@ et dont la valeur associée est sa configuration.
<![CDATA[$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['dataEntryForm'] = array (
'masque1' => 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.</simpara>
<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
prendre comme valeur par défaut <emphasis>yes</emphasis> ou
<emphasis>no</emphasis>.</simpara></important>
@ -234,6 +239,14 @@ et dont la valeur associée est sa configuration.
</listitem>
</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>
</para>
</sect3>

View file

@ -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)) {