Changeset 93093 in spip-zone
- Timestamp:
- Nov 22, 2015, 9:04:13 PM (5 years ago)
- Location:
- _plugins_/taxonomie/trunk
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/taxonomie/trunk/demo/taxonomie.html
r92945 r93093 7 7 <?php 8 8 include_spip('services/itis/itis_api'); 9 include_spip('inc/filtres'); 10 include_spip('inc/taxonomer'); 11 ?> 12 13 <h1>TAXONOMER</h1> 14 15 <h2>Fonction : taxon_merger_traductions</h2> 16 [(#VAL|tester_taxon_merger_traductions|propre)] 17 18 <h2>Fonction : extraire_multi</h2> 19 [(#VAL|tester_extraire_multi|propre)] 20 <?php die(); ?> 21 22 <h2>Fonction : extraire_trads</h2> 23 <?php 24 $multi = "<multi>[fr]en français</multi>"; 25 $ret = preg_match(_EXTRAIRE_MULTI, $multi, $match); 26 var_dump($multi, $ret, gettype($ret), $match); 27 die(); 28 29 $multi = ''; 30 var_dump($multi, extraire_trads($multi)); 31 32 $multi = 'sans langue'; 33 var_dump($multi, extraire_trads($multi)); 34 35 $multi = '[fr]en français'; 36 var_dump($multi, extraire_trads($multi)); 37 38 $multi = '[fr]en français[en]en anglais'; 39 var_dump($multi, extraire_trads($multi)); 40 41 $multi = 'en defaut[fr]en français[en]en anglais'; 42 var_dump($multi, extraire_trads($multi)); 9 43 ?> 10 44 … … 88 122 <h2>Action : read_hierarchy</h2> 89 123 <?php 90 91 124 $taxons = itis_read_hierarchy('fungi', 'genus', $sha); 125 var_dump($taxons, $sha); 92 126 ?> 93 127 -
_plugins_/taxonomie/trunk/inc/taxonomer.php
r93064 r93093 213 213 214 214 /** 215 * Fusionne les traductions d'une balise `<multi>` sourceavec celles d'une autre balise `<multi>`.216 * Il est possible de considérer l'une ou l'autre balise comme prioritaire dansle cas où la même215 * Fusionne les traductions d'une balise `<multi>` avec celles d'une autre balise `<multi>`. 216 * L'une des balise est considérée comme prioritaire ce qui permet de régler le cas où la même 217 217 * langue est présente dans les deux balises. 218 * Si on ne trouve pas de balise `<multi>` dans l'un ou l'autre des paramètres, on considère que 219 * le texte est tout même formaté de la façon suivante : texte0[langue1]texte1[langue2]texte2... 218 220 * 219 221 * @package SPIP\TAXONOMIE\OBJET 220 222 * 221 * @param string $nom_charge 222 * @param string $nom_edite 223 * @param bool|true $priorite_edition 223 * @param string $multi_prioritaire 224 * Balise multi considérée comme prioritaire en cas de conflit sur une langue. 225 * @param string $multi_non_prioritaire 226 * Balise multi considérée comme non prioritaire en cas de conflit sur une langue. 224 227 * 225 228 * @return string 226 */ 227 function taxon_merger_traductions($nom_charge, $nom_edite, $priorite_edition=true) { 228 $source = array(); 229 $destination = array(); 230 $nom_merge = ''; 231 232 // Suivant la priorite entre édition et chargement automatique on positionne la source 233 // (priorite plus faible) et la destination (priorité plus haute) 234 $nom_source = $nom_charge; 235 $nom_destination = $nom_edite; 236 if (!$priorite_edition) { 237 $nom_source = $nom_edite; 238 $nom_destination = $nom_charge; 239 } 240 241 // On extrait les noms par langue 229 * La chaine construite est toujours une balise `<multi>` complète ou une chaine vide sinon. 230 */ 231 function taxon_merger_traductions($multi_prioritaire, $multi_non_prioritaire) { 232 $multi_merge = ''; 233 234 // On extrait le contenu de la balise <multi> si elle existe. 242 235 include_spip('inc/filtres'); 243 if (preg_match(_EXTRAIRE_MULTI, $nom_source, $match)) { 244 $source = extraire_trads($match[1]); 245 } 246 if (preg_match(_EXTRAIRE_MULTI, $nom_destination, $match)) { 247 $destination = extraire_trads($match[1]); 248 } 249 250 // On complète la destination avec les noms de la source dont la langue n'est pas 251 // présente dans la destination 252 foreach ($source as $_lang => $_nom) { 253 if (!array_key_exists($_lang, $destination)) { 254 $destination[$_lang] = $_nom; 236 $multi_prioritaire = trim($multi_prioritaire); 237 $multi_non_prioritaire = trim($multi_non_prioritaire); 238 if (preg_match(_EXTRAIRE_MULTI, $multi_prioritaire, $match)) { 239 $multi_prioritaire = trim($match[1]); 240 } 241 if (preg_match(_EXTRAIRE_MULTI, $multi_non_prioritaire, $match)) { 242 $multi_non_prioritaire = trim($match[1]); 243 } 244 245 if ($multi_prioritaire) { 246 if ($multi_non_prioritaire) { 247 // On extrait les traductions sous forme de tableau langue=>traduction. 248 $traductions_prioritaires = extraire_trads($multi_prioritaire); 249 $traductions_non_prioritaires = extraire_trads($multi_non_prioritaire); 250 251 // On complète les traductions prioritaires avec les traductions non prioritaires dont la langue n'est pas 252 // présente dans les traductions prioritaires. 253 foreach ($traductions_non_prioritaires as $_lang => $_traduction) { 254 if (!array_key_exists($_lang, $traductions_prioritaires)) { 255 $traductions_prioritaires[$_lang] = $_traduction; 256 } 257 } 258 259 // On construit le contenu de la balise <multi> mergé à partir des traductions prioritaires mises à jour. 260 // Les traductions vides sont ignorées. 261 ksort($traductions_prioritaires); 262 foreach ($traductions_prioritaires as $_lang => $_traduction) { 263 if ($_traduction) { 264 $multi_merge .= ($_lang ? '[' . $_lang . ']' : '') . trim($_traduction); 265 } 266 } 267 } else { 268 $multi_merge = $multi_prioritaire; 255 269 } 256 } 257 258 // On construit le nom mergé à partir de la destination 259 foreach ($destination as $_lang => $_nom) { 260 $nom_merge .= '[' . $_lang . ']' . $_nom; 261 } 262 $nom_merge = '<multi>' . $nom_merge . '</multi>'; 263 264 return $nom_merge; 270 } else { 271 $multi_merge = $multi_non_prioritaire; 272 } 273 274 // Si le contenu est non vide on l'insère dans une balise <multi> 275 if ($multi_merge) { 276 $multi_merge = '<multi>' . $multi_merge . '</multi>'; 277 } 278 279 return $multi_merge; 265 280 } 266 281 -
_plugins_/taxonomie/trunk/lang/taxonomie_fr.php
r93087 r93093 69 69 'onglet_gestion' => 'Gestion des règnes', 70 70 'onglet_configuration' => 'Configuration du plugin', 71 'onglet_navigation' => 'Navigation d ans la taxonomie',71 'onglet_navigation' => 'Navigation du règne au genre', 72 72 73 73 // S
Note: See TracChangeset
for help on using the changeset viewer.