ImageMap

All contributions published for previous SPIP versions

Description

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.

Un raccourci du type <emb26|left|map{nom_de_la_map}>

génère l’inclusion <img src=.... usemap=#nom_de_la_map>

La map doit être ajoutée entre tag

<MAP></MAP>

dans le champ texte par le rédacteur.

Exemple d’utilisation

{{{Carte de France}}}

{{Choisissez votre Région :}}

<emb6|left|map{carte}>

<map name=carte>
<area shape=poly coords="127,118,116,111,107,117,101,113,94,119,83,102,68,103,67,110,59,112,55,107,37,109,31,114,35,123,44,121,45,126,36,126,36,130,46,130,44,134,32,135,34,140,47,147,54,145,78,154,76,162,84,157,96,168,111,157,124,157,129,151,136,155,143,119,127,124,127,118"  href="carte-region-bretagne.htm">
<area shape=poly coords="211,53,179,66,173,74,183,80,176,82,172,86,147,82,141,86,138,68,135,65,127,70,119,66,117,69,127,109,131,113,127,118,127,124,143,119,147,125,166,122,171,129,178,125,193,137,197,114,213,107,211,100,222,91,221,63,211,53"   [->rub25]>
<area shape=poly coords="245,7,220,15,211,53,221,63,222,91,258,99,262,94,270,99,278,85,287,84,294,67,292,58,291,49,272,32,267,36,266,26,259,21,254,26,248,20,245,7"    [->12]>
</MAP>

Ce qu’il faut modifier

Attention le fichier ecrire/inc_documents.php3 doit être modifié pour appeler le filtre :

Ajouter un appel dans inc_document.php3 vers la ligne 200

if (function_exists('param_images')) 
				$vignette .= param_images($params); 

//fin ajout

juste avant         $vignette .= " />";

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.

updated on 28 July 2007

Discussion

Une discussion

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom