Changeset 45189 in spip-zone


Ignore:
Timestamp:
Mar 5, 2011, 2:42:53 PM (9 years ago)
Author:
rastapopoulos@…
Message:

Nouvelle fonctionnnalité dans Saisies : la génération automatique d'un formulaire CVT uniquement à partir de la déclaration d'une liste de saisies.

Une nouvelle fonction s'ajoute donc à l'API des CVT :
function formulaires_moncvt_saisies()
(ou saisies_dist())
Elle doit retourner un tableau PHP selon le formalisme de l'API de Saisies.

Si cette fonction existe, alors Saisies

  • va automatiquement déclarer les champs trouvés dans charger()
  • va automatiquement regarder les erreurs dans verifier()
  • et va automatiquement générer le HTML du formulaire SI le fichier formulaires/moncvt.html est VIDE (mais existant !)

Et oui : c'est une limitation actuelle du système CVT : un formulaire a l'obligation d'avoir un fichier HTML en dur pour exister sinon SPIP retourne du vide. Il n'y a donc pas pour le moment de moyen de supprimer ce fichier.

Un exemple est disponible sur : ?page=saisies_cvt (avec Z). Et le code dans formulaires/saisies_cvt.php.

P.S. : évidement, la fonction traiter() est du ressort de chacun !

Location:
_plugins_/saisies
Files:
6 added
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/saisies/plugin.xml

    r45150 r45189  
    33    <auteur>Matthieu Marcillaud - RastaPopoulos - Joseph</auteur>
    44    <licence>&#169; 2009 GNU/GPL</licence>
    5     <version>1.8.16</version>
     5    <version>1.9.0</version>
    66    <etat>test</etat>
    77    <categorie>outil</categorie>
     
    4141        <inclure>saisies_pipelines.php</inclure>
    4242    </pipeline>
    43                 <pipeline>
    44                         <nom>saisies_autonomes</nom>
    45                         <inclure>saisies_pipelines.php</inclure>
    46                 </pipeline>
     43        <pipeline>
     44                <nom>saisies_autonomes</nom>
     45                <inclure>saisies_pipelines.php</inclure>
     46        </pipeline>
     47        <pipeline>
     48                <nom>formulaire_charger</nom>
     49                <inclure>saisies_pipelines.php</inclure>
     50        </pipeline>
     51        <pipeline>
     52                <nom>formulaire_verifier</nom>
     53                <inclure>saisies_pipelines.php</inclure>
     54        </pipeline>
     55        <pipeline>
     56                <nom>styliser</nom>
     57                <inclure>saisies_pipelines.php</inclure>
     58        </pipeline>
    4759   
    4860        <necessite id="SPIP" version="[2.0;]" />
  • _plugins_/saisies/saisies_pipelines.php

    r44930 r45189  
    3131}
    3232
    33 // declaration du pipeline
    34 function saisies_saisies_autonomes($flux) { return $flux;}
     33// Déclaration du pipeline
     34function saisies_saisies_autonomes($flux) { return $flux; }
     35
     36// Déclarer automatiquement les champs d'un CVT si on les trouve dans un tableau de saisies et s'ils ne sont pas déjà déclarés
     37function saisies_formulaire_charger($flux){
     38        // Il faut que la fonction existe et qu'elle retourne bien un tableau
     39        if ($fonction_saisies = charger_fonction('saisies', 'formulaires/'.$flux['args']['form'], true)
     40                and $saisies = call_user_func_array($fonction_saisies, $flux['args']['args'])
     41                and is_array($saisies)
     42        ){
     43                include_spip('inc/saisies');
     44               
     45                // On ajoute au contexte les champs à déclarer
     46                $contexte = saisies_charger_champs($saisies);
     47                $flux['data'] = array_merge($contexte, $flux['data']);
     48               
     49                // On ajoute le tableau complet des saisies
     50                $flux['data']['_saisies'] = $saisies;
     51        }
     52        return $flux;
     53}
     54
     55// Aiguiller CVT vers un squelette propre à Saisies lorsqu'on a déclaré des saisies et qu'il n'y a pas déjà un HTML
     56function saisies_styliser($flux){
     57        // Si on cherche un squelette de formulaire
     58        if (strncmp($flux['args']['fond'],'formulaires/',12)==0
     59                // Et qu'il y a des saisies dans le contexte
     60                and isset($flux['args']['contexte']['_saisies'])
     61                // Et que le fichier choisi est vide ou n'existe pas
     62                and include_spip('inc/flock')
     63                and $ext = $flux['args']['ext']
     64                and lire_fichier($flux['data'].'.'.$ext, $contenu_squelette)
     65                and !trim($contenu_squelette)
     66        )
     67                $flux['data'] = preg_replace("/\.$ext$/", '', find_in_path("formulaires/inc-saisies-cvt.$ext"));
     68        return $flux;
     69}
     70
     71// Ajouter les vérifications déclarées dans la fonction "saisies" du CVT
     72function saisies_formulaire_verifier($flux){
     73        // Il faut que la fonction existe et qu'elle retourne bien un tableau
     74        if ($fonction_saisies = charger_fonction('saisies', 'formulaires/'.$flux['args']['form'], true)
     75                and $saisies = call_user_func_array($fonction_saisies, $flux['args']['args'])
     76                and is_array($saisies)
     77        ){
     78                include_spip('inc/saisies');
     79               
     80                // On ajoute au contexte les champs à déclarer
     81                $erreurs = saisies_verifier($saisies);
     82                $flux['data'] = array_merge($erreurs, $flux['data']);
     83        }
     84       
     85        return $flux;
     86}
     87
    3588?>
Note: See TracChangeset for help on using the changeset viewer.