diff --git a/gamuform/exemple.php b/gamuform/exemple.php index ffbb25e..916e1f5 100644 --- a/gamuform/exemple.php +++ b/gamuform/exemple.php @@ -8,34 +8,44 @@ function gamuform_exemple_dist(){ return [ [ 'saisie' => 'input', - 'options' => array( + 'options' => [ 'nom' => 'type_intervention', - 'libelle' => 'Type', 'label' => "Type d'intervention", 'obligatoire' => 'oui', //'fonction' => 'ma_super_fonction' //'modifier' => 'ma_super_fonction_pour_modifier' - ) + ], + 'gamutable' => [ + 'header' => 'Type', + 'classes' => 'w200p', + 'filtreCol' => 'select', + 'crayons' => 'nom_objet_SPIP', // nom de l'objet du crayons + 'fonction' => 'Majuscules', // fonction php pour filtre le contenu d'une cellule + ] ], [ 'saisie' => 'input', - 'options' => array( + 'options' => [ 'nom' => 'desc_type_intervention', 'libelle' => 'Description', 'label' => 'Description', 'obligatoire' => 'oui', //'fonction' => 'ma_super_fonction' - ) + ], + 'gamutable' => [ + 'header' => 'Compétition', + 'classes' => 'w200p', + ] ], [ 'saisie' => 'radio', - 'options' => array( + 'options' => [ 'nom' => 'controle_ok', 'libelle' => 'Contrôle OK', 'label' => 'Contrôle OK', 'data' => ['oui' => 'Oui', '' => 'Non'] //'fonction' => 'ma_super_fonction' - ) + ] ], ]; } diff --git a/gamuform_fonctions.php b/gamuform_fonctions.php index d6b8fad..d3a06e9 100644 --- a/gamuform_fonctions.php +++ b/gamuform_fonctions.php @@ -14,7 +14,8 @@ if (!defined('_ECRIRE_INC_VERSION')) { } /** - * filtre generale qui appelle un filtre spécifique, déclaré dans l'array saisies avec la cle : filtrer + * filtre generale qui appelle un filtre spécifique, déclaré dans l'array saisies avec la cle : gamutable/filtre + * cf gamuform/exemple.php * * @param String $objet * @param String $champ @@ -29,9 +30,9 @@ function gamufiltre($objet, $champ, $valeur) { foreach ($T as $s) { if ( $s['options']['nom'] === $champ - and !empty($s['options']['filtrer']) + and !empty($s['gamutable']['fonction']) ) { - $filtre = $s['options']['filtrer']; + $filtre = $s['gamutable']['fonction']; return $filtre($valeur) ?? ''; } } @@ -82,16 +83,14 @@ function gamuform_nom_objet($objet):string { } return $nom; } - /** - * recuperation des champs de l'objet que l'on veut traiter + * recuperation des champs de l'objet * * @param String $objet - * @param Bool $keys (optional) le type de sortie que l'on souhaite * * @return Array */ -function gamuform_recup_champ(string $objet, bool $keys = false):array { +function gamuform_recup_champs(string $objet):array { $c = []; if (gamuform_objet_autoriser($objet)) { @@ -99,16 +98,107 @@ function gamuform_recup_champ(string $objet, bool $keys = false):array { if (!empty($T)) { foreach ($T as $s) { - if ($keys) { - $c[] = $s['options']['nom']; - } else { - $c[$s['options']['nom']] = $s['options']['libelle']; + $c[] = $s['options']['nom']; + } + } + } + return $c; +} + +/** + * recuperation du header de l'objet que l'on veut afficher dans gamutable + * + * @param String $objet + * + * @return Array + */ +function gamuform_recup_header(string $objet):array { + $c = []; + + if (gamuform_objet_autoriser($objet)) { + $T = gamuform_recup_saisies($objet); + + if (!empty($T)) { + foreach ($T as $s) { + $c[$s['options']['nom']] = $s['gamutable']['header'] ?? $s['options']['nom']; + } + } + } + return $c; +} +/** + * recuperation des filtreCol de l'objet que l'on veut afficher dans gamutable + * + * @param String $objet + * + * @return Array + */ +function gamuform_recup_crayons(string $objet):array { + $c = []; + + if (gamuform_objet_autoriser($objet)) { + $T = gamuform_recup_saisies($objet); + + if (!empty($T)) { + foreach ($T as $s) { + if ( + !empty($s['gamutable']['crayons']) + ) { + $c[$s['options']['nom']] = $s['gamutable']['crayons']; } } } } return $c; } +/** + * recuperation des filtreCol de l'objet que l'on veut afficher dans gamutable + * + * @param String $objet + * + * @return Array + */ +function gamuform_recup_filtreCol(string $objet):array { + $c = []; + + if (gamuform_objet_autoriser($objet)) { + $T = gamuform_recup_saisies($objet); + + if (!empty($T)) { + foreach ($T as $s) { + if ( + !empty($s['gamutable']['filtreCol']) + and in_array($s['gamutable']['filtreCol'], ['input', 'select']) + ) { + $c[$s['options']['nom']] = $s['gamutable']['filtreCol']; + } + } + } + } + return $c; +} + +/** + * recuperation des classes de l'objet que l'on veut afficher dans gamutable + * + * @param String $objet + * + * @return Array + */ +function gamuform_recup_classes(string $objet):array { + $c = []; + + if (gamuform_objet_autoriser($objet)) { + $T = gamuform_recup_saisies($objet); + + if (!empty($T)) { + foreach ($T as $s) { + $c[$s['options']['nom']] = $s['gamutable']['classes'] ?? ''; + } + } + } + return $c; +} /** * recuperation de(s) ligne(s) de l'objet @@ -123,7 +213,7 @@ function gamuform_recup_valeurs($objet, $id_objet = 0):array { if (gamuform_objet_autoriser($objet)) { $table = table_objet_sql($objet); $id = id_table_objet($objet); - $s = gamuform_recup_champ($objet, true); + $s = gamuform_recup_champs($objet); $s[] = $id; if (intval($id_objet)) { diff --git a/json_gamuform.json.html b/json_gamuform.json.html index 2546f62..5e45a85 100644 --- a/json_gamuform.json.html +++ b/json_gamuform.json.html @@ -1,7 +1,12 @@ #HTTP_HEADER{Content-Type: application/json; charset=#CHARSET} -#SET{header,#ENV{objet}|gamuform_recup_champ} +#SET{header,#ENV{objet}|gamuform_recup_header} +#SET{champs,#ENV{objet}|gamuform_recup_champs} +#SET{classes,#ENV{objet}|gamuform_recup_classes} +#SET{filtreCol,#ENV{objet}|gamuform_recup_filtreCol} +#SET{crayons,#ENV{objet}|gamuform_recup_crayons} + [{ "header":{ "id": "id", @@ -12,10 +17,19 @@ "sup": "" }, "crayons":{ + +[(#CLE|json_encode)] : [(#VALEUR|json_encode)] + }, "filtreCol" : { + + [(#CLE|json_encode)] : [(#VALEUR|json_encode)] + }, "classes" : { + + [(#CLE|json_encode)] : [(#VALEUR|json_encode)], + "id": "w80p", "edit": "w50p", "sup": "w50p" @@ -42,17 +56,17 @@ "html": { "id": #GET{ligne/id}, "edit": [(#GET{edit}|json_encode)], - - [(#CLE|json_encode)] : [(#ENV{objet}|gamufiltre{#CLE,#GET{ligne/#CLE}}|json_encode)], - + + [(#VALEUR|json_encode)] : [(#ENV{objet}|gamufiltre{#VALEUR,#GET{ligne/#VALEUR}}|json_encode)], + "sup": [(#GET{sup}|json_encode)] }, "search": { "id": #GET{ligne/id}, "edit": "", - - [(#CLE|json_encode)] : [(#GET{ligne/#CLE}|textebrut|json_encode)], - + + [(#VALEUR|json_encode)] : [(#ENV{objet}|gamufiltre{#VALEUR,#GET{ligne/#VALEUR}}|textebrut|json_encode)], + "sup":"" } } diff --git a/paquet.xml b/paquet.xml index f3c377d..c0aa77b 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,7 +1,7 @@