Changeset 108597 in spip-zone


Ignore:
Timestamp:
Jan 23, 2018, 11:47:13 PM (23 months ago)
Author:
rastapopoulos@…
Message:

On déclare les champs des objets en saisies explicites, ce qui permet alors de les lister et les manipuler programmatiquement. C'est très cool, notamment pour réutiliser ces champs en plusieurs endroits et pas forcément tous en même temps, parfois seulement certains (protip : pour des profils par ex).

Du coup on arrête d'utiliser des inclusions d'inclusions de squelettes que ça fait un peu bazar, et on réutilise cette même liste de saisies quand on ajoute à editer_auteur (quand c'est activé).

Et du coup on peut nettoyer plein de squelettes qui ne servent plus.

Ça ne change rien aux gens qui intègrent car c'est la tambouille interne. Quand on a intégré #FORMULAIRE_EDITER_AUTEUR autre part par exemple, ça continue de fonctionner pareil.

Location:
_plugins_/contacts_et_organisations/trunk
Files:
4 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/contacts_et_organisations/trunk/contacts_pipelines.php

    r104793 r108597  
    300300        if ($flux['args']['form'] == 'editer_auteur') {
    301301                if (isset($flux['args']['contexte']['id_contact'])) {
     302                        include_spip('inc/saisies');
     303                        $saisies = saisies_chercher_formulaire('editer_contact', array($flux['args']['contexte']['id_contact']));
     304                        $saisies = saisies_transformer_noms($saisies, '/^.*$/', 'contact_$0');
     305                        $saisies = array(
     306                                array(
     307                                        'saisie' => 'fieldset',
     308                                        'options' => array(
     309                                                'nom' => 'contact',
     310                                                'label' => _T('contacts:contact'),
     311                                                'conteneur_class' => 'editer_contact',
     312                                        ),
     313                                        'saisies' => array(
     314                                                array(
     315                                                        'saisie' => 'hidden',
     316                                                        'options' => array(
     317                                                                'nom' => 'id_contact',
     318                                                                'defaut' => $flux['args']['contexte']['id_contact'],
     319                                                        )
     320                                                )
     321                                        ) + $saisies // on concatène le hidden avec les saisies des orgas
     322                                )
     323                        );
     324                       
    302325                        $contexte = $flux['args']['contexte'];
    303                         $contexte['prefixe'] = 'contact_';
     326                        $contexte['saisies'] = $saisies;
     327                       
    304328                        if (preg_match(",<(li|div)[^>]*editer_bio[^>]*>,Uims", $flux['data'], $m)) {
    305                                 $contexte['tag'] = $m[1];
    306329                                $p = strpos($flux['data'], $m[0]);
    307                                 $ins = recuperer_fond('formulaires/editer_auteur_contact', $contexte);
     330                                $ins = recuperer_fond('inclure/generer_saisies', $contexte);
    308331                                $flux['data'] = substr_replace($flux['data'], $ins, $p, 0);
    309332                        }
    310333                }
    311334                if (isset($flux['args']['contexte']['id_organisation'])) {
     335                        include_spip('inc/saisies');
     336                        $saisies = saisies_chercher_formulaire('editer_organisation', array($flux['args']['contexte']['id_organisation']));
     337                        $saisies = saisies_transformer_noms($saisies, '/^.*$/', 'organisation_$0');
     338                        $saisies = array(
     339                                array(
     340                                        'saisie' => 'fieldset',
     341                                        'options' => array(
     342                                                'nom' => 'organisation',
     343                                                'label' => _T('contacts:organisation'),
     344                                                'conteneur_class' => 'editer_organisation',
     345                                        ),
     346                                        'saisies' => array(
     347                                                array(
     348                                                        'saisie' => 'hidden',
     349                                                        'options' => array(
     350                                                                'nom' => 'id_organisation',
     351                                                                'defaut' => $flux['args']['contexte']['id_organisation'],
     352                                                        )
     353                                                )
     354                                        ) + $saisies // on concatène le hidden avec les saisies des orgas
     355                                )
     356                        );
     357                       
    312358                        $contexte = $flux['args']['contexte'];
    313                         $contexte['prefixe'] = 'organisation_';
     359                        $contexte['saisies'] = $saisies;
     360                       
    314361                        if (preg_match(",<(li|div)[^>]*editer_bio[^>]*>,Uims", $flux['data'], $m)) {
    315                                 $contexte['tag'] = $m[1];
    316362                                $p = strpos($flux['data'], $m[0]);
    317                                 $ins = recuperer_fond('formulaires/editer_auteur_organisation', $contexte);
     363                                $ins = recuperer_fond('inclure/generer_saisies', $contexte);
    318364                                $flux['data'] = substr_replace($flux['data'], $ins, $p, 0);
    319365                        }
  • _plugins_/contacts_et_organisations/trunk/formulaires/editer_annuaire.html

    r99757 r108597  
    1 <div class="formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{id_contact,nouveau}">
    21
    3         [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
    4         [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    5 
    6         [(#ENV{editable}|oui)
    7                 <form method='post' action='[(#ENV{action})]'><div>
    8                         #ACTION_FORMULAIRE{#ENV{action}}
    9                         <input type='hidden' name='id_annuaire' value='#ENV{id_annuaire}' />
    10                         <[(#DIV|sinon{ul})] class="editer-groupe">
    11                         [(#SAISIE{input, titre,
    12                                 obligatoire=oui, label=<:contacts:annuaire_champ_titre_label:>})]
    13 
    14                         [(#SAISIE{input, identifiant,
    15                                 obligatoire=oui, label=<:contacts:annuaire_champ_identifiant_label:>, explication=<:contacts:annuaire_champ_identifiant_explication:>})]
    16 
    17                         [(#SAISIE{textarea, descriptif,
    18                                 rows=5, inserer_barre=edition, label=<:contacts:annuaire_champ_descriptif_label:> <em class="aide">[(#AIDER{raccourcis})]</em>})]
    19 
    20                         </[(#DIV|sinon{ul})]>
    21                         [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
    22                         <!--extra-->
    23                         <p class="boutons">
    24                                 <input type="submit" name="enregistrer" value="<:bouton_enregistrer:>" />
    25                         </p>
    26 
    27                 </div></form>
    28         ]
    29 </div>
  • _plugins_/contacts_et_organisations/trunk/formulaires/editer_annuaire.php

    r96442 r108597  
    1010**/
    1111
    12 if (!defined("_ECRIRE_INC_VERSION")) return;
     12if (!defined('_ECRIRE_INC_VERSION')) {
     13        return;
     14}
    1315
    1416include_spip('inc/editer');
    1517
     18/**
     19 * Saisies d'un annuaire
     20 *
     21 * @param int|string $id_annuaire
     22 *     Identifiant du annuaire. 'new' pour un nouveau annuaire.
     23 * @param string $redirect
     24 *     URL de redirection après le traitement
     25 * @return array
     26 *     Environnement du formulaire
     27**/
     28function formulaires_editer_annuaire_saisies_dist($id_annuaire = 'new', $redirect = '') {
     29        $saisies = array(
     30                array(
     31                        'saisie' => 'input',
     32                        'options' => array(
     33                                'nom' => 'titre',
     34                                'label' => _T('contacts:annuaire_champ_titre_label'),
     35                                'obligatoire' => 'oui',
     36                        ),
     37                ),
     38                array(
     39                        'saisie' => 'input',
     40                        'options' => array(
     41                                'nom' => 'identifiant',
     42                                'label' => _T('contacts:annuaire_champ_identifiant_label'),
     43                                'explication' => _T('contacts:annuaire_champ_identifiant_explication'),
     44                                'obligatoire' => 'oui',
     45                        ),
     46                ),
     47                array(
     48                        'saisie' => 'textarea',
     49                        'options' => array(
     50                                'nom' => 'descriptif',
     51                                'label' => _T('contacts:annuaire_champ_descriptif_label'),
     52                                'rows' => 5,
     53                                'inserer_barre' => 'edition',
     54                        ),
     55                ),
     56        );
     57       
     58        return $saisies;
     59}
    1660
    1761/**
     
    2771function formulaires_editer_annuaire_charger_dist($id_annuaire = 'new', $redirect = '') {
    2872        $contexte = formulaires_editer_objet_charger('annuaire', $id_annuaire, $rien, 0, $redirect, '');
     73       
    2974        return $contexte;
    3075}
     
    4388function formulaires_editer_annuaire_verifier_dist($id_annuaire = 'new', $redirect = '') {
    4489        $erreurs = formulaires_editer_objet_verifier('annuaire', $id_annuaire, array('titre', 'identifiant'));
     90       
    4591        // Pour une création, on teste l'identifiant
    46         if (!intval($id_annuaire)
    47                 and $identifiant = _request('identifiant')
    48                 and sql_getfetsel('id_annuaire', 'spip_annuaires', 'identifiant = '.sql_quote($identifiant))
    49         ){
     92        if (
     93                $identifiant = _request('identifiant')
     94                and sql_getfetsel('id_annuaire', 'spip_annuaires', array('identifiant = '.sql_quote($identifiant), 'id_annuaire != '.intval($id_annuaire)))
     95        ) {
    5096                $erreurs['identifiant'] = _T('contacts:erreur_annuaire_identifiant_existant');
    5197        }
     98       
    5299        return $erreurs;
    53100}
  • _plugins_/contacts_et_organisations/trunk/formulaires/editer_contact.html

    r99760 r108597  
    1 <div class='formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{id_contact,nouveau}'>
    21
    3         [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
    4         [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    5 
    6         [(#ENV{editable}|oui)
    7                 <form method='post' action='[(#ENV{action})]'><div>
    8                         #ACTION_FORMULAIRE{#ENV{action}}
    9                         <input type='hidden' name='id_contact' value='#ENV{id_contact}' />
    10                         [(#REM) sur la creation, on passe l'id_parent (id_organisation) si donnee ]
    11                         [(#ENV{id_contact}|=={oui}|oui)
    12                                 [<input type='hidden' name='id_parent' value='(#ENV{id_parent})' />]
    13                         ]
    14                         <[(#DIV|sinon{ul})] class="editer-groupe">
    15                                 <INCLURE{fond=formulaires/inc-editer_contact,env} />
    16                         </[(#DIV|sinon{ul})]>
    17                         [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
    18                         <!--extra-->
    19                         <p class='boutons'>
    20                                 <input type='submit' name='enregistrer' value='<:bouton_enregistrer:>' />
    21                         </p>
    22 
    23                 </div></form>
    24         ]
    25 </div>
  • _plugins_/contacts_et_organisations/trunk/formulaires/editer_contact.php

    r108593 r108597  
    1515
    1616include_spip('inc/editer');
     17
     18/**
     19 * Saisies d'un contact
     20 *
     21 * @param int|string $id_contact
     22 *     Identifiant du contact. 'new' pour un nouveau contact.
     23 * @param int $id_organisation
     24 *     Identifiant de l'organisation parente, ou 0.
     25 * @param string $redirect
     26 *     URL de redirection après le traitement
     27 * @param string $associer_objet
     28 *     Éventuel 'objet|x' indiquant de lier le contact à cet objet,
     29 *     tel que 'article|3'
     30 * @return array
     31 *     Environnement du formulaire
     32**/
     33function formulaires_editer_contact_saisies_dist($id_contact = 'new', $id_organisation = 0, $redirect = '', $associer_objet = '') {
     34        $saisies = array();
     35       
     36        // Champ de quel annuaire si on a activé les annaires
     37        if (lire_config('contacts_et_organisations/utiliser_annuaires')) {
     38                $saisies[] = array(
     39                        'saisie' => 'annuaires',
     40                        'options' => array(
     41                                'nom' => 'id_annuaire',
     42                                'label' => _T('contacts:annuaire'),
     43                                'option_intro' => _T('contacts:annuaire_aucun'),
     44                        ),
     45                );
     46        }
     47       
     48        // Champ civilité
     49        $saisies[] = array(
     50                'saisie' => 'input',
     51                'options' => array(
     52                        'nom' => 'civilite',
     53                        'label' => _T('contacts:label_civilite'),
     54                ),
     55        );
     56       
     57        // Champ prénom
     58        $saisies[] = array(
     59                'saisie' => 'input',
     60                'options' => array(
     61                        'nom' => 'prenom',
     62                        'label' => _T('contacts:label_prenom'),
     63                ),
     64        );
     65       
     66        // Champ nom
     67        $saisies[] = array(
     68                'saisie' => 'input',
     69                'options' => array(
     70                        'nom' => 'nom',
     71                        'label' => _T('contacts:label_nom'),
     72                ),
     73        );
     74       
     75        // Champ fonction
     76        $saisies[] = array(
     77                'saisie' => 'input',
     78                'options' => array(
     79                        'nom' => 'fonction',
     80                        'label' => _T('contacts:label_fonction'),
     81                ),
     82        );
     83       
     84        // Champ date de naissance
     85        $saisies[] = array(
     86                'saisie' => 'date_jour_mois_annee',
     87                'options' => array(
     88                        'nom' => 'date_naissance',
     89                        'label' => _T('contacts:label_date_naissance'),
     90                ),
     91        );
     92       
     93        // Champ descriptif
     94        $saisies[] = array(
     95                'saisie' => 'textarea',
     96                'options' => array(
     97                        'nom' => 'descriptif',
     98                        'label' => _T('contacts:label_descriptif'),
     99                        'conteneur_class' => 'haut',
     100                        'class' => 'inserer_barre_edition inserer_previsualisation',
     101                ),
     102        );
     103       
     104        return $saisies;
     105}
    17106
    18107/**
  • _plugins_/contacts_et_organisations/trunk/formulaires/editer_organisation.html

    r99762 r108597  
    1 <div class='formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{id_organisation,nouveau}'>
    21
    3         [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
    4         [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    5 
    6         <BOUCLE_editable(CONDITION){si #ENV{editable}}>
    7                 <form method='post' action='[(#ENV{action})]'><div>
    8                         #ACTION_FORMULAIRE{#ENV{action}}
    9                         <input type='hidden' name='id_organisation' value='#ENV{id_organisation}' />
    10                         <[(#DIV|sinon{ul})] class="editer-groupe">
    11                                 <INCLURE{fond=formulaires/inc-editer_organisation,env} />
    12                         </[(#DIV|sinon{ul})]>
    13                         [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
    14                         <!--extra-->
    15                         <p class='boutons'>
    16                                 <input type='submit' name='enregistrer' value='<:bouton_enregistrer:>' />
    17                         </p>
    18 
    19                 </div></form>
    20         </BOUCLE_editable>
    21 </div>
  • _plugins_/contacts_et_organisations/trunk/formulaires/editer_organisation.php

    r108593 r108597  
    1515
    1616include_spip('inc/editer');
     17include_spip('inc/config');
     18include_spip('inc/abstract_sql');
     19
     20/**
     21 * Saisies d'une organisation
     22 *
     23 * @param int|string $id_organisation
     24 *     Identifiant de l'organisation. 'new' pour une nouvelle organisation.
     25 * @param int $id_parent
     26 *     Identifiant de l'organisation parente, ou 0.
     27 * @param string $redirect
     28 *     URL de redirection après le traitement
     29 * @param string $associer_objet
     30 *     Éventuel 'objet|x' indiquant de lier l'organisation à cet objet,
     31 *     tel que 'article|3'   
     32 * @return array
     33 *     Environnement du formulaire
     34**/
     35function formulaires_editer_organisation_saisies_dist($id_organisation = 'new', $id_parent = 0, $redirect = '', $associer_objet = '') {
     36        $saisies = array();
     37       
     38        // Champ de quel annuaire si on a activé les annaires
     39        if (lire_config('contacts_et_organisations/utiliser_annuaires')) {
     40                $saisies[] = array(
     41                        'saisie' => 'annuaires',
     42                        'options' => array(
     43                                'nom' => 'id_annuaire',
     44                                'label' => _T('contacts:annuaire'),
     45                                'option_intro' => _T('contacts:annuaire_aucun'),
     46                        ),
     47                );
     48        }
     49       
     50        // Champ nom de l’orga
     51        $saisies[] = array(
     52                'saisie' => 'input',
     53                'options' => array(
     54                        'nom' => 'nom',
     55                        'label' => _T('contacts:label_nom'),
     56                ),
     57        );
     58       
     59        // Champ de l'orga parente si on a activté
     60        if (lire_config('contacts_et_organisations/utiliser_organisations_arborescentes')) {
     61                $saisies[] = array(
     62                        'saisie' => 'organisations',
     63                        'options' => array(
     64                                'nom' => 'id_parent',
     65                                'label' => _T('contacts:label_organisation_parente'),
     66                        ),
     67                );
     68        }
     69       
     70        // Champ statut juridique
     71        $saisies[] = array(
     72                'saisie' => 'input',
     73                'options' => array(
     74                        'nom' => 'statut_juridique',
     75                        'label' => _T('contacts:label_statut_juridique'),
     76                        'explication' => _T('contacts:explication_statut_juridique'),
     77                ),
     78        );
     79       
     80        // Champ identification
     81        $saisies[] = array(
     82                'saisie' => 'input',
     83                'options' => array(
     84                        'nom' => 'identification',
     85                        'label' => _T('contacts:label_identification'),
     86                        'explication' => _T('contacts:explication_identification'),
     87                ),
     88        );
     89       
     90        // Champ activité avec une map des valeurs déjà remplies
     91        if ($activites = sql_allfetsel('activite', 'spip_organisations', '', 'activite', 'activite asc')) {
     92                $activites = array_map('reset', $activites);
     93        }
     94        else {
     95                $activites = array();
     96        }
     97        $saisies[] = array(
     98                'saisie' => 'input',
     99                'options' => array(
     100                        'nom' => 'activite',
     101                        'label' => _T('contacts:label_activite'),
     102                        'explication' => _T('contacts:explication_activite'),
     103                        'data' => $activites,
     104                ),
     105        );
     106       
     107        // Champ URL de l’orga
     108        $saisies[] = array(
     109                'saisie' => 'input',
     110                'options' => array(
     111                        'nom' => 'url_site',
     112                        'label' => _T('contacts:label_url_site'),
     113                        'placeholder' => 'https://…',
     114                ),
     115        );
     116       
     117        // Champ date de création
     118        $saisies[] = array(
     119                'saisie' => 'date_jour_mois_annee',
     120                'options' => array(
     121                        'nom' => 'date_creation',
     122                        'label' => _T('contacts:label_date_creation'),
     123                ),
     124        );
     125       
     126        // Champ descriptif
     127        $saisies[] = array(
     128                'saisie' => 'textarea',
     129                'options' => array(
     130                        'nom' => 'descriptif',
     131                        'label' => _T('contacts:label_descriptif'),
     132                        'rows' => 10,
     133                        'conteneur_class' => 'pleine_largeur',
     134                        'class' => 'inserer_barre_edition inserer_previsualisation',
     135                ),
     136        );
     137       
     138        // Champ des horaires d'ouverture
     139        $saisies[] = array(
     140                'saisie' => 'textarea',
     141                'options' => array(
     142                        'nom' => 'ouvertures',
     143                        'label' => _T('contacts:label_ouvertures'),
     144                        'explication' => _T('contacts:explication_ouvertures'),
     145                        'rows' => 5,
     146                        'conteneur_class' => 'pleine_largeur',
     147                        'class' => 'inserer_barre_edition inserer_previsualisation',
     148                ),
     149        );
     150       
     151        // Champ des tarifs
     152        $saisies[] = array(
     153                'saisie' => 'textarea',
     154                'options' => array(
     155                        'nom' => 'tarifs',
     156                        'label' => _T('contacts:label_tarifs'),
     157                        'rows' => 5,
     158                        'conteneur_class' => 'pleine_largeur',
     159                        'class' => 'inserer_barre_edition inserer_previsualisation',
     160                ),
     161        );
     162       
     163        return $saisies;
     164}
    17165
    18166/**
  • _plugins_/contacts_et_organisations/trunk/paquet.xml

    r106978 r108597  
    22        prefix="contacts"
    33        categorie="auteur"
    4         version="3.0.9"
     4        version="3.1.0"
    55        etat="test"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.