Changeset 112987 in spip-zone


Ignore:
Timestamp:
Dec 20, 2018, 2:08:03 PM (4 weeks ago)
Author:
root
Message:

gestion des balises multi : le titre est désormais stocké selon les balises multi présents

Location:
_plugins_/prix_objets/trunk/formulaires
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/prix_objets/trunk/formulaires/inc-prix_affichage.html

    r110370 r112987  
    3131                        <td>[(#VALEUR|table_valeur{code_devise}|traduire_devise)]</td>
    3232                        <td>#GET{taxes}</td>
    33                         <td>#VALEUR{titre}</td>
     33                        <td>[(#VALEUR{titre})]</td>
    3434                        <td>
    3535                                <span class="deplacer-prix" data-rang="#RANG_LIEN">
  • _plugins_/prix_objets/trunk/formulaires/prix.php

    r110478 r112987  
    3737        // établit les devises diponible moins ceux déjà utilisés
    3838        while ($row = sql_fetch($d)) {
     39                $row['titre'] = extraire_multi($row['titre']);
    3940                $prix_choisis[] = $row;
    4041        }
     
    118119}
    119120function formulaires_prix_traiter_dist($id_objet, $objet = 'article') {
     121        include_spip('inc/filtres');
    120122        $prix = _request('prix');
    121123        $id_declinaison = _request('id_declinaison');
     
    124126
    125127        // Génération du titre
    126         $titre = extraire_multi(supprimer_numero(generer_info_entite($id_objet, $objet, 'titre', '*')));
     128        $titre = supprimer_numero(generer_info_entite($id_objet, $objet, 'titre', '*'));
    127129
    128130        // Le titre secondaire composé des extensions.
     
    134136        $titre_secondaire = array();
    135137        $valeurs_extensions = array();
    136         foreach($extensions as $extension) {
     138        foreach($extensions as $index => $extension) {
    137139                if ($id_extension = _request('id_prix_extension_' . $extension)) {
    138                         if (!is_array($id_extension)) {
    139                                 $titre_secondaire = extraire_multi(
    140                                         supprimer_numero(
    141                                                 generer_info_entite(
    142                                                         $id_extension,
    143                                                         $extension,
    144                                                         'titre', '*'
    145                                                         )
     140                        if (!is_array($id_extension)) {
     141                                $titre_secondaire = supprimer_numero(
     142                                        generer_info_entite(
     143                                                $id_extension,
     144                                                $extension,
     145                                                'titre', '*'
    146146                                                )
    147147                                        );
    148                                 $titres_secondaires[] = $titre_secondaire;
     148                                if (preg_match_all(_EXTRAIRE_MULTI, $titre_secondaire, $regs, PREG_SET_ORDER)) {
     149                                        foreach ($regs_ as $reg) {
     150                                                $titres_secondaires[$index] = extraire_trads($reg[1]);
     151                                        }
     152                                }
     153                                else {
     154                                        $titres_secondaires[$index] = $titre_secondaire;
     155                                }
     156
    149157                                $valeurs_extensions[] = array(
    150158                                        'objet' => $objet,
     
    157165                        else {
    158166                                foreach ($id_extension as $id) {
    159                                         $titre_secondaire = extraire_multi(
    160                                                 supprimer_numero(
    161                                                         generer_info_entite(
    162                                                                 $id,
    163                                                                 $extension,
    164                                                                 'titre', '*'
    165                                                                 )
     167                                        $titre_secondaire = supprimer_numero(
     168                                                generer_info_entite(
     169                                                        $id,
     170                                                        $extension,
     171                                                        'titre', '*'
    166172                                                        )
    167173                                                );
    168                                         $titres_secondaires[] = $titre_secondaire;
     174                                        if (preg_match_all(_EXTRAIRE_MULTI, $titre_secondaire, $regs, PREG_SET_ORDER)) {
     175                                                 foreach ($regs as $reg) {
     176                                                        $titres_secondaires[$index] = extraire_trads($reg[1]);
     177                                                 }
     178                                        }
     179                                        else {
     180                                                $titres_secondaires[$index] = $titre_secondaire;
     181                                        }
     182
    169183                                        $valeurs_extensions[] = array(
    170184                                                'objet' => $objet,
     
    180194        }
    181195
    182 
     196        // Si il ya des titres secondaires on assemble le balises multi.
    183197        if ($titres_secondaires) {
    184                 $titres_secondaires = implode(' / ', $titres_secondaires);
    185                 $titre = $titre . ' - ' . $titres_secondaires;
     198                $lang_defaut = _LANGUE_PAR_DEFAUT;
     199                $titre_defaut = extraire_multi($titre, $lang_defaut);
     200                $titre_trads = [];
     201                if (preg_match_all(_EXTRAIRE_MULTI, $titre, $regs, PREG_SET_ORDER)) {
     202                        foreach ($regs as $reg) {
     203                                $titre = extraire_trads($reg[1]);
     204                                $titre_trads = $titre;
     205                        }
     206                }
     207                $trads_merged = $titre_trads;
     208                $titres_secondaires_default = [];
     209                // On merge toutes les trads et définit les titres secondaires par défaut
     210                foreach ($titres_secondaires as $index => $titres_secondaires_trads) {
     211                        if (is_array($titres_secondaires_trads)) {
     212                                $trads_merged =array_merge($trads_merged, $titres_secondaires_trads);
     213                        }
     214                        $titres_secondaires_default[$index] = $titres_secondaires[$index][$lang_defaut];
     215                }
     216                // Si il existent des balises multi compìle les différents titres par langue
     217                if (count($trads_merged) > 0) {
     218                        $titre = '<multi>';
     219                        foreach (array_keys($trads_merged) AS $lang) {
     220                                $titre .= '[' . $lang . ']' . (isset($titre_trads[$lang]) ? $titre_trads[$lang] : $titre_defaut);
     221                                $titre .= ' - ';
     222                                $t_secondaires = [];
     223                                foreach($titres_secondaires AS $index => $titres_secondaires_trads) {
     224                                        $t_secondaires[$index] = isset($titres_secondaires_trads[$lang]) ?
     225                                                $titres_secondaires_trads[$lang] :
     226                                                $titres_secondaires_default[$index];
     227                                }
     228                                $titre .= implode(' / ', $t_secondaires);
     229                        }
     230                        $titre .= '</multi>';
     231                }
     232                else {
     233                        $titre = $titre . ' - ' . implode(' / ', $titres_secondaires);
     234                }
    186235        }
    187236
Note: See TracChangeset for help on using the changeset viewer.