Skip to content
Extraits de code Groupes Projets
Valider e6f49578 rédigé par Fil's avatar Fil
Parcourir les fichiers

espaces et tags html dans les arguments des modeles (merci piif et toggg pour la regexp)

parent 5b54af80
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -11,10 +11,18 @@ ...@@ -11,10 +11,18 @@
<fromage1020|lait=brebis|pays=France|region=Poitou|date_appellation=1923> <fromage1020|lait=brebis|pays=France|region=Poitou|date_appellation=1923>
ou encore avec des espaces et des tags html :
<fromage 1020
|lait=brebis
|pays={France}
|region=<b>Poitou</b>
|date_appellation=1923
>
ou 1020 est le numero du document qui contient la photo, le nom du ou 1020 est le numero du document qui contient la photo, le nom du
fromage (titre), et le commentaire du critique culinaire (descriptif). fromage (titre), et le commentaire du critique culinaire (descriptif).
] ]
<BOUCLE_doc(DOCUMENTS){id_document=#ENV{id_fromage}}> <BOUCLE_doc(DOCUMENTS){id_document=#ENV{id_fromage}}>
[(#REM) Code pour {doublons}] [(#REM) Code pour {doublons}]
<table class='spip_document_#ID_DOCUMENT' border="1" align="right" cellpadding="4" cellspacing="0" style="margin: 0 0 1em 1em; border: 1px solid #999; border-right-width: 2px; border-bottom-width: 2px; background-color: #FFFFDD; font-size: 90%; border-collapse: collapse;"> <table class='spip_document_#ID_DOCUMENT' border="1" align="right" cellpadding="4" cellspacing="0" style="margin: 0 0 1em 1em; border: 1px solid #999; border-right-width: 2px; border-bottom-width: 2px; background-color: #FFFFDD; font-size: 90%; border-collapse: collapse;">
...@@ -35,15 +43,15 @@ ...@@ -35,15 +43,15 @@
] ]
[<tr> [<tr>
<td><b>Pays d'origine</b></td> <td><b>Pays d'origine</b></td>
<td align="center" style="background: #FFFFFF">(#ENV{pays})</td> <td align="center" style="background: #FFFFFF">(#ENV*{pays}|propre)</td>
</tr>] </tr>]
[<tr> [<tr>
<td><b>R&eacute;gion, ville</b></td> <td><b>R&eacute;gion, ville</b></td>
<td align="center" style="background: #FFFFFF">(#ENV{region})</td> <td align="center" style="background: #FFFFFF">(#ENV*{region}|propre)</td>
</tr>] </tr>]
[<tr> [<tr>
<td><b>Lait de</b></td> <td><b>Lait de</b></td>
<td align="center" style="background: #FFFFFF">(#ENV{lait})</td> <td align="center" style="background: #FFFFFF">(#ENV*{lait}|propre)</td>
</tr>] </tr>]
[<tr> [<tr>
<td><b>Appellation, depuis</b></td> <td><b>Appellation, depuis</b></td>
......
...@@ -941,18 +941,24 @@ function supprime_img($letexte) { ...@@ -941,18 +941,24 @@ function supprime_img($letexte) {
// http://doc.spip.org/@traiter_modeles // http://doc.spip.org/@traiter_modeles
function traiter_modeles($texte, $doublons=false) { function traiter_modeles($texte, $doublons=false) {
// detecter les modeles (rapide) // detecter les modeles (rapide)
if (preg_match_all('/<[a-z_-]{3,}[0-9|]+/iS', if (preg_match_all('/<[a-z_-]{3,}\s*[0-9|]+/iS',
$texte, $matches, PREG_SET_ORDER)) { $texte, $matches, PREG_SET_ORDER)) {
include_spip('public/assembler'); include_spip('public/assembler');
foreach ($matches as $match) { foreach ($matches as $match) {
// Recuperer l'appel complet (y compris un eventuel lien) // Recuperer l'appel complet (y compris un eventuel lien)
// $regs : 1 => modele, 2 => type, 3 => id, 5 => params, 6 => a // $regs : 1 => modele, 2 => type, 3 => id, 4 => params, 5 => a
$a = strpos($texte,$match[0]); $a = strpos($texte,$match[0]);
preg_match( preg_match(
'/^(<([a-z_-]{3,})([0-9]*)([|](.*?))?'.'>)\s*(<\/a>)?/isS', '/^' #debut
.'(<([a-z_-]{3,})' # <modele
.'\s*([0-9]*)\s*' # id
.'([|](?:<[^<>]*>|[^>])*)?' # |arguments (y compris des tags <...>)
.'>)' # fin du modele >
.'\s*(<\/a>)?' # eventuel </a>
.'/isS',
substr($texte, $a), $regs); substr($texte, $a), $regs);
if ($regs[6] AND preg_match( if ($regs[5] AND preg_match(
',<a\s.*>\s*$,Uis', substr($texte, 0, $a), $r)) { ',<a\s.*>\s*$,Uis', substr($texte, 0, $a), $r)) {
$lien = array( $lien = array(
extraire_attribut($r[0],'href'), extraire_attribut($r[0],'href'),
...@@ -967,7 +973,7 @@ function traiter_modeles($texte, $doublons=false) { ...@@ -967,7 +973,7 @@ function traiter_modeles($texte, $doublons=false) {
// calculer le modele // calculer le modele
if ($doublons) $modele = ''; else # hack articles_edit, breves_edit if ($doublons) $modele = ''; else # hack articles_edit, breves_edit
$modele = inclure_modele($regs[2], $regs[3], $regs[5], $lien); $modele = inclure_modele($regs[2], $regs[3], $regs[4], $lien);
// le remplacer dans le texte // le remplacer dans le texte
if ($modele !== false) { if ($modele !== false) {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter