Changeset 124668 in spip-zone


Ignore:
Timestamp:
May 13, 2020, 9:14:56 AM (3 weeks ago)
Author:
Maïeul Rouquette
Message:

Merge branch 'saisies_heritage.yaml'
Close #8

Location:
_plugins_/saisies
Files:
7 added
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/saisies/trunk

  • _plugins_/saisies/trunk/inc/saisies.php

    r124153 r124668  
    172172        return $saisie;
    173173}
     174
     175
     176/**
     177 * Supprimer récursivement les identifiants d'un tableau de saisie
     178 * Seul usage probable : pour les test uniaires
     179 * pour la saisie donnee si elle n'en a pas
     180 * (et pour ses sous saisies éventuels)
     181 *
     182 * @param Array $saisie Tableau d'une saisie
     183 * @return Array Tableau de la saisie sans les identifiant
     184**/
     185function saisies_supprimer_identifiants($saisies) {
     186        unset($saisies['identifiant']);
     187        foreach ($saisies as $cle => $valeur) {
     188                if (is_array($valeur)) {
     189                        $saisies[$cle] = saisies_supprimer_identifiants($valeur);
     190                }
     191        }
     192        return $saisies;
     193}
     194
     195
     196
    174197
    175198/**
  • _plugins_/saisies/trunk/inc/saisies_lister.php

    r122864 r124668  
    432432                                ) {
    433433                                        if (!isset($saisie['obsolete'])
    434                                                         or $saisie['obsolete'] == false
    435                                                         or $inclure_obsoletes
     434                                                or $saisie['obsolete'] == false
     435                                                or $inclure_obsoletes
    436436                                        ) {
    437437                                                $saisies[$type_saisie] = $saisie;
     
    503503
    504504                if (is_array($saisie)) {
     505
     506                        // En cas d'héritage, récuperer les paramètres de la saisie "mère"
     507                        // On peut avoir plusieurs saisies mère.
     508                        // Dans le cas, la dernière de la liste l'emporte sur les précédentes
     509                        if (isset($saisie['heritage'])) {
     510                                $type_mere = $saisie['heritage'];
     511                                $saisie = saisies_recuperer_heritage($saisie, $type_mere, $saisies_repertoire);
     512                        }
    505513                        $saisie['titre'] = (isset($saisie['titre']) and $saisie['titre'])
    506514                                ? _T_ou_typo($saisie['titre']) : $type_saisie;
     
    517525        return $saisie;
    518526}
     527
     528/**
     529 * Permet à une saisie d'hériter des options et valeur par défaut d'une autre saisies
     530 * @param string $saisie la saisie
     531 * @param string $type_mere le type de la saisie dont on hérite
     532 * @param string $saisies_repertoire = 'saisies'
     533 * @return array
     534 **/
     535function saisies_recuperer_heritage($saisie, $type_mere, $saisies_repertoire = 'saisies') {
     536        $mere = saisies_charger_infos($type_mere, $saisies_repertoire);
     537        $options_mere = &$mere['options'];
     538        unset($saisie['heritage']);
     539        if (isset($saisie['heritage_supprimer_options'])) {
     540                foreach($saisie['heritage_supprimer_options'] as $option) {
     541                        $options_mere = saisies_supprimer($options_mere, $option);
     542                }
     543                unset($saisie['heritage_supprimer_options']);
     544        }
     545        if (isset($saisie['heritage_modifier_options'])) {
     546                foreach ($saisie['heritage_modifier_options'] as $c => $option) {
     547                        $nom_option = $option['options']['nom'];
     548                        $fusion = isset($option['fusion']) ? $option['fusion'] : false;
     549                        unset($option['fusion']);
     550                        $options_mere = saisies_modifier($options_mere, $nom_option, $option, $fusion);
     551                }
     552                unset($saisie['heritage_modifier_options']);
     553        }
     554        if (isset($saisie['heritage_inserer_options'])) {
     555                foreach ($saisie['heritage_inserer_options'] as $option) {
     556                        $chemin = $option['chemin'];
     557                        unset($option['chemin']);
     558                        $options_mere = saisies_inserer($options_mere, $option, $chemin);
     559                }
     560                unset($saisie['heritage_inserer_options']);
     561        }
     562        return array_replace_recursive($mere,$saisie);
     563}
     564
    519565
    520566/**
  • _plugins_/saisies/trunk/inc/saisies_manipuler.php

    r113483 r124668  
    6363 *     Position complète où insérer la saisie.
    6464 *     En absence, insère la saisie à la fin.
    65  *
     65 * @param bool $identifier = true. Mettre à false pour ne pas identifier
    6666 * @return array
    6767 *     Tableau des saisies complété de la saisie insérée
     
    207207 * @param unknown_type $id_ou_nom_ou_chemin L'identifiant unique ou le nom ou le chemin de la saisie à modifier
    208208 * @param array        $modifs              Le tableau des modifications à apporter à la saisie
    209  *
     209 * @param bool                           $fusion                                                        True si on veut simplifier rajouter des choses, sans tout remplacer
    210210 * @return Retourne le tableau décrivant les saisies, mais modifié
    211211 */
    212 function saisies_modifier($saisies, $id_ou_nom_ou_chemin, $modifs) {
     212function saisies_modifier($saisies, $id_ou_nom_ou_chemin, $modifs, $fusion = false) {
    213213        if ($chemin = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true)) {
    214214                $position = array_pop($chemin);
     
    247247                        unset($modifs['options']['nouveau_type_saisie']);
    248248                }
    249 
    250249                // On remplace tout
    251                 $parent[$position] = $modifs;
    252 
    253                 // Cette méthode ne marche pas trop
    254                 //$parent[$position] = array_replace_recursive($parent[$position], $modifs);
     250                if (!$fusion) {
     251                        $parent[$position] = $modifs;
     252                } else {
     253                        $parent[$position] = array_replace_recursive($parent[$position], $modifs);
     254                }
    255255        }
    256256
  • _plugins_/saisies/trunk/paquet.xml

    r124590 r124668  
    22        prefix="saisies"
    33        categorie="outil"
    4         version="3.37.1"
     4        version="3.38.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.