Le but de cette contrib est de permettre aux auteurs de publier des images mappées dans un article tout en utilisant les raccourcis de document.
dans le champ texte par le rédacteur.
La fonction agissant directement dans le traitement du texte elle doit être ajoutée dans le fichier ecrire/mes_options.php3 (à créer dans le répertoire s’il n’existe pas).
Un appel a été ajout dans après_propre pour permettre d’inserer des liens raccourcis spip artnn entre les tag
Le code peut facilement être étendu pour traiter d’autres paramètres |param1|param2 (ceux ci sont dans le tableau $params) :
<?php
function param_images($params="") {
// recupération des paramètres images lors d'une inclusion <embnn>
// recup de map syntaxe <embnn||map{nomdelamap}>
// la map doit être ajouté dans un le texte entre <map name=nomdelamap> et </map>
// ajouter un appel dans inc_document.php3 vers la ligne 200
// if (function_exists('param_images'))
// $vignette .= param_images($params);
//juste avant $vignette .= " />";
$affpar ="";
for ($i = 0; $i < count($params); $i++) {
if (ereg("map{([^}]+)}", $params[$i], $vals))
$affpar .= " usemap=#".$vals[1]." ";
else
$affpar .= $params[$i];
}
return $affpar;
}
function nettoie_lien_map($texte){
//teste la presence d'une map
if (preg_match('/<map.*/map>/is',$texte)) {
// et corrige les liens générés par spip dans les zones de map sous forme de <a href= ....
$texte=preg_replace('/(<area[^<>]*)<a[^>]+(href="[^"]*")[^>]*>[^<]*</a>([^>]*>)/iU', '123', $texte);
}
return $texte;
}
function apres_propre($texte){
// appel du netttoyage des map avec liens
$texte=nettoie_lien_map($texte);
return $texte;
}
?>
Les expressions régulières ci dessus comportent des erreurs , quelques basckslash ont pu disparaitre lors de la copie dans la page.
Pour plus de sureté, télécharger le zip avec les sources
Extensions
Cette contrib a été faite rapidement pour répondre aux besoins de mes rédacteurs, elle ouvre des pistes pour personaliser les titles, target,... en évitant les regex à postériori sur les tags générés par le parseur de texte.
questions utilisateur :
la description d’une map est super lourde à gérer : ya des coordonnées qu’il faut connaitre et une syntaxe. c’est pas à la portée du rédacteur lambda. J’aimerais un outil pour générer ça simplement sur pc et sur mac, ou un moyen spip qui courcircuite cette étape là !
Génial !!! Bravo ! Par contre, j’ai l’impression que les |left, |right ou |center sont inopérants car systématiquement les maps sont alignées à gauche (mais c’est facile à corriger en HTML).
Cette contrib est toute simple, j’en avais besoin pour récupérer des maps faite sur des sites migrés vers Spip. Pour dessiner des cartes en ligne je vous conseille de regarder l’excellent boulot fait sur Spip Carto
évolution :
Cette bidouille est en cours de portage comme modèle pour spip 1.9, avantage : il n’y a plus de surcharge du noyau SPIP, juste un modèle à déployer. Bientôt publié sur SPIP Contrib.