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.

Discussion

Une discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

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