Browse Source

On peut importer un groupe de champs dans le plugin formidable : (dev en cours)

- déposer un fichier .yaml décrivant les champs et leurs options dans le répertoire saisies/groupes
- dans 'configurer les champs' ajouter l'ensemble au choix avec la même facilité qu'un champ de type input
- les champs restent modifiables et on peut en ajouter d'autres

Todo: 
- importer/exporter dans saisies/groupes/ les formulaires précédemment configurés depuis formidable et exportés en format .yaml,
pour l'instant c'est possible mais le traitement n'agit pas (je pense que c'est un problème d"identifiant impossible à unset et qui colle des warnings partout)

Vos retours sont les bienvenus !

Je ne fait pas de up de Y, si jamais un revert était nécessaire.
svn/root/tags/v2.6.0
toutati@free.fr 7 years ago
parent
commit
c76ff8745b
  1. 13
      formulaires/construire_formulaire.html
  2. 45
      formulaires/construire_formulaire.php
  3. 42
      inc/saisies_lister.php
  4. 1
      lang/saisies_fr.php

13
formulaires/construire_formulaire.html

@ -22,6 +22,7 @@
</button>
</[(#VAL{li}|saisie_balise_structure_formulaire)]>
[(#REM)<!-- les choix de saisies -->]
<BOUCLE_contenu(DATA){source tableau, #ENV{_contenu}}>
[(#VAL{saisie}|array_key_exists{#VALEUR}|oui)
[(#VALEUR**|formidable_generer_saisie_configurable{#ENV**|unserialize})]
@ -40,6 +41,18 @@
</BOUCLE_saisies_disponibles>
</[(#VAL{li}|saisie_balise_structure_formulaire)]>
</B_saisies_disponibles>
<B_saisies_groupes_disponibles>
<[(#VAL{li}|saisie_balise_structure_formulaire)] class="editer haut saisies_groupes_disponibles" id="attrapable_bis">
<label><:saisies:construire_ajouter_groupe:></label>
<BOUCLE_saisies_groupes_disponibles(DATA){source tableau, #ENV{_saisies_groupes_disponibles}}{par cle}>
<button type="submit" name="ajouter_groupe_saisie" value="#CLE" class="submit ajouter_saisie"[ title="(#DESCRIPTION)"] [style="background-image:url((#ICONE|sinon{#CHEMIN{images/formulaire-saisie-defaut.png}}))"]>
<span>#TITRE</span>
</button>
</BOUCLE_saisies_groupes_disponibles>
</[(#VAL{li}|saisie_balise_structure_formulaire)]>
</B_saisies_groupes_disponibles>
</[(#VAL{ul}|saisie_balise_structure_formulaire)]>

45
formulaires/construire_formulaire.php

@ -40,6 +40,10 @@ function formulaires_construire_formulaire_charger($identifiant, $formulaire_ini
$saisies_disponibles = saisies_lister_disponibles();
$contexte['_saisies_disponibles'] = $saisies_disponibles;
// La liste des groupes de saisies
$saisies_groupes_disponibles = saisies_groupes_lister_disponibles("saisies/groupes");
$contexte['_saisies_groupes_disponibles'] = $saisies_groupes_disponibles;
$contexte['fond_generer'] = 'formulaires/inc-generer_saisies_configurables';
// On cherche jquery UI pour savoir si on pourra glisser-déplacer
@ -241,6 +245,19 @@ function formulaires_construire_formulaire_traiter($identifiant, $formulaire_ini
// On récupère le formulaire à son état actuel
$formulaire_actuel = session_get($identifiant);
// Si on demande à ajouter un groupe
if ($ajouter_saisie = _request('ajouter_groupe_saisie')){
$nom = saisies_generer_nom($formulaire_actuel, $ajouter_saisie);
$saisie = array(
'saisie' => $ajouter_saisie,
'options' => array(
'nom' => $nom
)
);
//chercher les saisies du groupe
$formulaire_actuel = saisies_groupe_inserer($nom, $saisie, $formulaire_actuel);
}
// Si on demande à ajouter une saisie
if ($ajouter_saisie = _request('ajouter_saisie')){
$nom = saisies_generer_nom($formulaire_actuel, $ajouter_saisie);
@ -537,3 +554,31 @@ function saisie_option_contenu_vide($var) {
}
return true;
}
function saisies_groupe_inserer($nom, $saisie, $formulaire_actuel){
include_spip('inclure/configurer_saisie_fonctions');
//on va chercher le groupe de saisies
$saisies_charger_infos = saisies_charger_infos($saisie['saisie'],$saisies_repertoire = "saisies/groupes");
$classique_yaml=count($saisies_charger_infos['options']);
$formidable_yaml=count($saisies_charger_infos['saisies']);
if($classique_yaml>0) {
$champ_options = 'options';
}
if($formidable_yaml>0) {
$champ_options = 'saisies';
}
foreach($saisies_charger_infos[$champ_options] as $info_saisie){
spip_log("identifiant=".$info_saisie['identifiant'],"ajouter_saisie");
$saisies_disponibles = saisies_lister_disponibles();
$construire_nom = $info_saisie[$champ_options]['nom'] ? $info_saisie[$champ_options]['nom'] : $info_saisie['saisie'];
$nom = $info_saisie[$champ_options]['nom'] = saisies_generer_nom($formulaire_actuel,$construire_nom);
$saisie_saisie = $info_saisie['saisie'];
spip_log("each // nom = ".$nom." saisie =".$saisie_saisie,"ajouter_saisie");
$formulaire_actuel = saisies_inserer($formulaire_actuel, $info_saisie);
}
return $formulaire_actuel;
}

42
inc/saisies_lister.php

@ -268,12 +268,12 @@ function saisies_comparer_par_identifiant($saisies_anciennes, $saisies_nouvelles
*
* @return array Un tableau listant des saisies et leurs options
*/
function saisies_lister_disponibles() {
function saisies_lister_disponibles($saisies_repertoire = "saisies") {
static $saisies = null;
if (is_null($saisies)) {
$saisies = array();
$liste = find_all_in_path('saisies/', '.+[.]yaml$');
$liste = find_all_in_path("$saisies_repertoire/", '.+[.]yaml$');
if (count($liste)) {
foreach ($liste as $fichier => $chemin) {
@ -294,14 +294,44 @@ function saisies_lister_disponibles() {
return $saisies;
}
/**
* Liste tous les groupes de saisies configurables (ayant une description).
*
* @return array Un tableau listant des saisies et leurs options
*/
function saisies_groupes_lister_disponibles($saisies_repertoire = "saisies") {
static $saisies = null;
if (is_null($saisies)) {
$saisies = array();
$liste = find_all_in_path("$saisies_repertoire/", '.+[.]yaml$');
if (count($liste)) {
foreach ($liste as $fichier => $chemin) {
$type_saisie = preg_replace(',[.]yaml$,i', '', $fichier);
$dossier = str_replace($fichier, '', $chemin);
// On ne garde que les saisies qui ont bien le HTML avec !
if (file_exists("$dossier$type_saisie.html")
and (
is_array($saisie = saisies_charger_infos($type_saisie,$saisies_repertoire))
)
) {
$saisies[$type_saisie] = $saisie;
}
}
}
}
return $saisies;
}
/**
* Lister les saisies existantes ayant une définition SQL.
*
* @return array Un tableau listant des saisies et leurs options
*/
function saisies_lister_disponibles_sql() {
function saisies_lister_disponibles_sql($saisies_repertoire = "saisies") {
$saisies = array();
$saisies_disponibles = saisies_lister_disponibles();
$saisies_disponibles = saisies_lister_disponibles($saisies_repertoire);
foreach ($saisies_disponibles as $type => $saisie) {
if (isset($saisie['defaut']['options']['sql']) and $saisie['defaut']['options']['sql']) {
$saisies[$type] = $saisie;
@ -318,10 +348,10 @@ function saisies_lister_disponibles_sql() {
*
* @return array Un tableau contenant le YAML décodé
*/
function saisies_charger_infos($type_saisie) {
function saisies_charger_infos($type_saisie,$saisies_repertoire = "saisies") {
if (defined('_DIR_PLUGIN_YAML')) {
include_spip('inc/yaml');
$fichier = find_in_path("saisies/$type_saisie.yaml");
$fichier = find_in_path("$saisies_repertoire/$type_saisie.yaml");
$saisie = yaml_decode_file($fichier);
if (is_array($saisie)) {
$saisie['titre'] = (isset($saisie['titre']) and $saisie['titre'])

1
lang/saisies_fr.php

@ -21,6 +21,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'construire_action_dupliquer_copie' => '(copie)',
'construire_action_supprimer' => 'Supprimer',
'construire_ajouter_champ' => 'Ajouter un champ',
'construire_ajouter_groupe' => 'Ajouter un ensemble de champs (expérimental)',
'construire_attention_enregistrer' => 'N’oubliez pas d’enregistrer vos modifications !',
'construire_attention_modifie' => 'Le formulaire ci-dessous est différent du formulaire initial. Vous avez la possibilité de le réinitialiser à son état avant vos modifications.',
'construire_attention_supprime' => 'Vos modifications comportent des suppressions de champs. Veuillez confirmer l’enregistrement de cette nouvelle version du formulaire.',

Loading…
Cancel
Save