ImageMap

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

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.

Dernière modification de cette page le 28 juillet 2007

Discussion

Une discussion

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom