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
Plugin pour générer des formulaires via saisies et des vues via gamutable semi automatiquement.
## Déclaration des objets
Il suffit de déclarer la `$GLOBALS['gamuform_objets']`
* soit simplement : `objet => nom de l'objet`
* soit plus détaillé :
```
objet => [
'singulier' => 'nom_singulier',
'pluriel' => _T('prefix:nom_pluriel'),
'creer' => 'créer un nouvel xxx'
]
```
exemple :
## Configuration de l'interface pour chaque objet
### Chaines de langues de l'interface (2 possibilités)
* On déclare la `$GLOBALS['gamuform_i18n']['nom_objet']`
```php
$GLOBALS['gamuform_objets'] = array_merge(
$GLOBALS['gamuform_objets'] ?? [],
$GLOBALS['gamuform_i18n'] = array_merge(
$GLOBALS['gamuform_i18n'] ?? [],
[
'app_competition' => [
'singulier' => 'competition',
'pluriel' => 'compétitions',
'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
Et de creer une fonction gamuform/mon_objet.php avec une fonction qui renvoie l'array des saisies
> il y a un exemple gamuform/exemple.php
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 commenté dans gamuform/exemple.php avec toutes les possibilités offertes
## Page
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;
return [
// API SAISIES
'options' => [
'texte_submit' => 'Valider cest gagné',
'inserer_debut' => 'coucou le debut',
@ -21,16 +22,17 @@ function gamuform_exemple_dist(){
'nom' => 'type_intervention',
'label' => "Type d'intervention",
'obligatoire' => 'oui',
//'fonction' => 'ma_super_fonction'
//'modifier' => 'ma_super_fonction_pour_modifier'
//'fonction' => 'ma_super_fonction' // Nom de la fonction appelée pour enregistrer ce champ de facon autonome
//'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',
'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
'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',
'label' => 'Description',
'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' => [
'champ' => 'desc_type_intervention',
@ -65,6 +68,7 @@ function gamuform_exemple_dist(){
// ]
],
// 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' => [
'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 {
if (
!empty($GLOBALS['gamuform_objets'])
and !empty($objet)
and in_array($objet, array_keys($GLOBALS['gamuform_objets']))
) {
return true;
}
return false;
// if (
// !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 {
$trad = '';
if (gamuform_objet_autoriser($objet)) {
if (is_array($GLOBALS['gamuform_objets'][$objet])) {
return $GLOBALS['gamuform_objets'][$objet][$quoi];
if (!empty($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 {
if ($quoi === 'creer') {
return 'Nouveau';
} else {
return $GLOBALS['gamuform_objets'][$objet];
$trad = _T($objet . ':' . $quoi);
}
}
}
return '';
return $trad;
}
/**
* recuperation des champs de l'objet pour les saisies

View file

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

View file

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