Derniers gros changement qui ne cassent pas la compatibilité :

* la declaration des objets n'existe plus
* la declaration des chaines de langue évolue :
- soit un array global `$GLOBALS['gamuform_i18n']['mon_objet']`
- soit une chaine de langue dans lang/mon_objet_fr.php
This commit is contained in:
Christophe 2022-06-30 21:53:59 +02:00
parent 2b42ca2ee7
commit f5e974640f
5 changed files with 35 additions and 45 deletions

View file

@ -1,37 +1,27 @@
# Gamuform # Gamuform
Plugin pour générer des formulaires via saisies et des vues via gamutable semi automatiquement. Plugin pour générer des formulaires via saisies et des vues via gamutable semi automatiquement.
## Déclaration des objets ## Configuration de l'interface pour chaque objet
Il suffit de déclarer la `$GLOBALS['gamuform_objets']` ### Chaines de langues de l'interface (2 possibilités)
* soit simplement : `objet => nom de l'objet` * On déclare la `$GLOBALS['gamuform_i18n']['nom_objet']`
* soit plus détaillé :
```
objet => [
'singulier' => 'nom_singulier',
'pluriel' => _T('prefix:nom_pluriel'),
'creer' => 'créer un nouvel xxx'
]
```
exemple :
```php ```php
$GLOBALS['gamuform_objets'] = array_merge( $GLOBALS['gamuform_i18n'] = array_merge(
$GLOBALS['gamuform_objets'] ?? [], $GLOBALS['gamuform_i18n'] ?? [],
[ [
'app_competition' => [ 'app_competition' => [
'singulier' => 'competition', 'singulier' => 'competition',
'pluriel' => 'compétitions', 'pluriel' => 'compétitions',
'creer' => 'Créer une nouvelle compétition' 'creer' => 'Créer une nouvelle compétition'
], ]
'app_competiteur' => "compétiteurs",
] ]
); );
``` ```
* On cree un fichier de lang mon_objet_fr.php, avec les 3 cles (singulier, pluriel, creer)
## Configuration des objets pour les saisies et pour l'affichage avec gamutable ## Configuration des objets pour les saisies et pour l'affichage avec gamutable
Et de creer une fonction gamuform/mon_objet.php avec une fonction qui renvoie l'array des saisies Il faut creer une fonction gamuform/mon_objet.php avec une fonction qui renvoie l'array des saisies, qui peut etre enrichi par des entrées gamutables
> il y a un exemple gamuform/exemple.php > il y a un exemple commenté dans gamuform/exemple.php avec toutes les possibilités offertes
## Page ## Page
Il suffit d'appeler cette page `spip.php?page=voir_gamuform`, en paramettre le nom de l'objet voulu `&objet=auteur` : Il suffit d'appeler cette page `spip.php?page=voir_gamuform`, en paramettre le nom de l'objet voulu `&objet=auteur` :

View file

@ -10,6 +10,7 @@ function gamuform_exemple_dist(){
EOF; EOF;
return [ return [
// API SAISIES
'options' => [ 'options' => [
'texte_submit' => 'Valider cest gagné', 'texte_submit' => 'Valider cest gagné',
'inserer_debut' => 'coucou le debut', 'inserer_debut' => 'coucou le debut',
@ -21,16 +22,17 @@ function gamuform_exemple_dist(){
'nom' => 'type_intervention', 'nom' => 'type_intervention',
'label' => "Type d'intervention", 'label' => "Type d'intervention",
'obligatoire' => 'oui', 'obligatoire' => 'oui',
//'fonction' => 'ma_super_fonction' //'fonction' => 'ma_super_fonction' // Nom de la fonction appelée pour enregistrer ce champ de facon autonome
//'modifier' => 'ma_super_fonction_pour_modifier' //'modifier' => 'ma_super_fonction_pour_modifier' // Nom de la fonction appelée pour faire un traitement sur un champ avant l'insertion en bdd
], ],
'gamutable' => [ // la cle gamutable n'est pas obligatoire, si absente, gamutable utilisera des valeurs par defaut et des infos de la clé options de saisie
'gamutable' => [ // pour le champ type_intervention, comme on définit la clé gamutable, c'est elle qui sera utilisé pour la vue, avec les memes clés que gamutable
'champ' => 'type_intervention', 'champ' => 'type_intervention',
'header' => 'Type', 'header' => 'Type',
'classes' => 'w200p', 'classes' => 'w200p',
'filtreCol' => 'select', 'filtreCol' => 'select',
'crayons' => 'nom_objet_SPIP', // nom de l'objet du crayons 'crayons' => 'nom_objet_SPIP', // nom de l'objet du crayons
'fonction' => 'Majuscules', // fonction php pour filtre le contenu d'une cellule 'fonction' => 'Majuscules', // fonction php pour filtre le contenu du champ, elle recoit en argument la valeur du champ
] ]
], ],
[ [
@ -40,7 +42,8 @@ function gamuform_exemple_dist(){
'libelle' => 'Description', 'libelle' => 'Description',
'label' => 'Description', 'label' => 'Description',
'obligatoire' => 'oui', 'obligatoire' => 'oui',
//'fonction' => 'ma_super_fonction' 'fonction' => '_array_maSuperFonction' // on peut prefixer le nom de la fonction par _array_ et dans ce cas, on cherche une fonction qui
// s'appelle _array_maSuperFonction ou simplement maSuperFonction, elle recoit en arg, l'array de la ligne (fetsel) et non simplement la valeur du champ
], ],
'gamutable' => [ 'gamutable' => [
'champ' => 'desc_type_intervention', 'champ' => 'desc_type_intervention',
@ -65,6 +68,7 @@ function gamuform_exemple_dist(){
// ] // ]
], ],
// possible un array avec simplement la cle gamutable, que pour l'affichage // possible un array avec simplement la cle gamutable, que pour l'affichage
// cela permet d'avoir une colonne qui s'intercale entre 2 colonnes de champs venant de SAISIES
[ [
'gamutable' => [ 'gamutable' => [
'champ' => 'maj', 'champ' => 'maj',

View file

@ -112,30 +112,29 @@ function gamuform_recup_tableau_objet(string $objet, bool $all = true):array {
} }
function gamuform_objet_autoriser(string $objet):bool { function gamuform_objet_autoriser(string $objet):bool {
if (
!empty($GLOBALS['gamuform_objets'])
and !empty($objet)
and in_array($objet, array_keys($GLOBALS['gamuform_objets']))
) {
return true; return true;
} // if (
return false; // !empty($GLOBALS['gamuform_objets'])
// and !empty($objet)
// and in_array($objet, array_keys($GLOBALS['gamuform_objets']))
// ) {
// return true;
// }
// return false;
} }
function gamuform_nom_objet($objet, $quoi = 'pluriel'):string { function gamuform_nom_objet($objet, $quoi = 'pluriel'):string {
$trad = '';
if (gamuform_objet_autoriser($objet)) { if (gamuform_objet_autoriser($objet)) {
if (is_array($GLOBALS['gamuform_objets'][$objet])) { if (!empty($GLOBALS['gamuform_objets'][$objet][$quoi])) {
return $GLOBALS['gamuform_objets'][$objet][$quoi]; $trad = $GLOBALS['gamuform_objets'][$objet][$quoi];
} else if ( !empty($GLOBALS['gamuform_i18n'][$objet][$quoi])){
$trad = $GLOBALS['gamuform_i18n'][$objet][$quoi];
} else { } else {
$trad = _T($objet . ':' . $quoi);
if ($quoi === 'creer') {
return 'Nouveau';
} else {
return $GLOBALS['gamuform_objets'][$objet];
} }
} }
} return $trad;
return '';
} }
/** /**
* recuperation des champs de l'objet pour les saisies * recuperation des champs de l'objet pour les saisies

View file

@ -13,6 +13,3 @@ if (!defined('_ECRIRE_INC_VERSION')) {
return; return;
} }
// initialisation de l'objet global
// $GLOBALS['gamuform_objets'] = [];

View file

@ -1,7 +1,7 @@
<paquet <paquet
prefix="gamuform" prefix="gamuform"
categorie="outil" categorie="outil"
version="1.2.6" version="1.3.0"
etat="dev" etat="dev"
compatibilite="[4.0.0;4.0.*]" compatibilite="[4.0.0;4.0.*]"
logo="prive/themes/spip/images/gamuform-xx.svg" logo="prive/themes/spip/images/gamuform-xx.svg"