--- /dev/null
+Migration GIS2->GIS3
+####################
+Lancer cette requete pour relier à nouveau les points à leur sites correspondants:
+ UPDATE `spip_gis_liens` SET `objet`='site' WHERE `objet`='syndic';
+
--- /dev/null
+##À faire
+* Plugin: Prevoir une interface smartphone
+* Plugin: Gérer la description et le slogan pour le français et l'anglais
+* Carte: Prévoir une sortie pdf/imprimante de la carte en fonction de filtres (zoom, centrage, types d'ateliers, ...)
+* Carte: S'arranger pour que tous les ateliers membres et en activité passent au dessus des autres (exemple à Nantes)
+* Carte - Bug : Si on fait un retour à la ligne dans un champs description ou qu'on met le caractère "°" (de site ou de GIS), plus de carte sur le site. ???
+* Carte - Bug : La "boîte de calques" apparait ouverte sur ipad avec safari. ???
+* Carte - Bug : L'insertion de la carte dans un champs fait planter le multilinguisme.
+* Liste - Bug : La liste est mal gérée dans le contexte multilingue, quand le champ ville est traduit
+* Carte - Avoir un champs de recherche dans lequel on saisit la ville ou le code postal, des horaires, ... et la carte se centre dessus - Voir du côté de https://wiki.openstreetmap.org/wiki/Nominatim
+* Carte - Afficher la description du site dans le popup si pas de description du point GIS
+* Plugin - Mettre en valeur la prise en compte des différents critères d'atelier: auto-réparation, recyclage, promotion, ... Ce qui permettrait de valoriser également les initiatives qui ne nous ressemble pas tout à fait, notamment à l'étranger.
+
+##En cours
+* Carte: Prévoir un fond de carte spécial vélo par défaut (mise en évidence des voies cyclables)
+** Reste à trouver/faire celui qui va bien/ un concours??? un appel à contribution??
+* Page site atelier
+** Logo
+** Le nom de l'asso
+** Adresse physique
+** Site internet clicable
+** La descritpion de l'asso
+** La carte des ateliers avec la description et la photo de chaque atelier dans le popup
+** Les résumés des articles de lhc qui parlent de l'asso
+** Les résumés des 5 derniers articles paru sur le site de l'asso
+* Carte: Faire en sorte qu'on puisse afficher des mini-cartes centrées comme il faut sur la page de chaque site syndiqué
+
+
+##Fait
+* Carte: L'iframe se construit en fonction de l'état de la carte (lat,lon,zoom)
+* Carte: Possibilite de choisir son fond de carte operationnel
+* Plugin: Internationnaliser le plugin
+* Liste: Ajouter marqueur statut en début de ligne pour chaque organisations
+* Carte: Prévoir un "iframe" permettant l'inclusion de la carte dans d'autres sites
+* Liste: Faire une animation au clic de la souris sur un pays: déroulement et affichage des ateliers (AJAX)
+* Carte - Séparer les variables latitude et longitude
+* Carte - Rendre optionnel l'affichage du popup de coordonnées quand on clic sur la carte
+* Ne fournir qu'un fonds de carte minimaliste, et vue de nuit dans un premier temps
+* Liste: Faire un lien vers les sites internet des ateliers, ou leur page sur le site du réseau
+* Plugin: Faire en sorte que la carte et les légendes d'une part, et la liste des ateliers d'autre part, s'affichent avec 2 balises distinctes.
+* Carte: Diminuer la taille des marqueurs
+* Carte: Diminuer la taille des popup
+** Logo asso
+** Nom asso avec lien vers la page relative
+** Nom atelier
+** Description atelier
+** Adresse physique
+** Adresse site clicable
+** Statut de l'atelier
+* Carte: ajout de filtres pour centrer et zoomer comme on veut sur la carte
+* Carte: mise en valeur du nom de l'atelier (par opposition au nom de lorganisation qui le porte)
+* Carte: ajout de filtres pour dimensionner comme on veut la carte
+* Carte: ajout de filtres pour changer le style a la volée
+* Carte: ajout de filtres pour rendre optionnel l'affichage des images
+* Plugin: Construire automatiquement les liens vers la librairie CloudMade en fonction des données de plugin.xml
+* Export - Prévoir un export csv - Prémisse sous forme de requête SQL: "SELECT spip_syndic.*, spip_gis_liens.*, spip_gis.* FROM `spip_gis`, `spip_gis_liens`, `spip_syndic` WHERE `spip_gis_liens`.`objet` = 'site' AND `spip_gis_liens`.`id_gis` = `spip_gis`.`id_gis` AND `spip_gis_liens`.`id_objet` = `spip_syndic`.`id_syndic`"
--- /dev/null
+[(#REM) Carte des ateliers habillée ]
+<INCLURE{fond=structure}{env}{type=page}{composition=carte_de_sites} />
\ No newline at end of file
--- /dev/null
+[(#REM) Carte des ateliers habillée ]
+<INCLURE{fond=structure}{env}{type=page}{composition=carte_de_sites} />
\ No newline at end of file
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<title><:carte_de_sites:nom_carte:></title>
+#INSERT_HEAD
+</head>
+<body>
+<INCLURE{fond=contenu/page-carte_de_sites, env} />
+</body>
+
+<!-- Piwik -->
+<script type="text/javascript">
+var pkBaseURL = (("https:" == document.location.protocol) ? "https://stats.heureux-cyclage.org/" : "http://stats.heureux-cyclage.org/");
+document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
+</script><script type="text/javascript">
+try {
+var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 1);
+piwikTracker.trackPageView();
+piwikTracker.enableLinkTracking();
+} catch( err ) {}
+</script><noscript><p><img src="http://stats.heureux-cyclage.org/piwik.php?idsite=1" style="border:0" alt="" /></p></noscript>
+
+<!-- End Piwik Tracking Code -->
+
+</html>
--- /dev/null
+[(#REM)
+ Modele carte_de_site
+
+ Parametres :
+ - fullscreen = non : afficher ou ne pas afficher le contrôle fullscreen
+ - legende = oui : afficher ou ne pas afficher la légende
+ - lat = 46.8 : latitude du centre de la carte
+ - lon = 2.52 : longitude du centre de la carte
+ - zoom = 5 : niveau de zoom (pour repère: 1 = la carte du monde; 15 = quartier)
+ - larg = 100% : largeur de la carte en pixel ou en pourcentage
+ - haut = 400 : hauteur de la carte en pixel ou en pourcentage
+ - style = 14189 : style de carte. Voir http://maps.cloudmade.com/editor . Si vous mettez en place une super carte pour les cyclistes, on est preneur.
+ - boite = oui : afficher ou pas la boite avec calques et types
+ - popup = oui : afficher ou pas les popups de description des ateliers
+ - images = oui : afficher ou pas les images (logo, photo de l'atelier)
+ - lien = oui : Lien automatique vers la grande carte
+ - iframe = oui : Afficher ou non le lien vers le code iframe
+ - loc = non : Afficher ou non le popup de localisation
+ - champ_lat : Prend l'identifiant d'une balise html en argument. Change la valeur (value) de cette balise par la latitude cliquee
+ - champ_lon : Prend l'identifiant d'une balise html en argument. Change la valeur (value) de cette balise par la longitude cliquee
+]
+
+<!-- Carte -->
+
+<div id="map" style="[(#ENV{larg}|oui) width: [(#ENV{larg}|sinon{'540'})px;]] height: [(#ENV{haut}|sinon{'400'})]px">
+
+<script src="[(#CHEMIN{lib/leaflet-gis-4.1.13/dist/leaflet.js}|url_absolue)]" type="text/javascript"></script>
+<script src="[(#CHEMIN{lib/leaflet-gis-4.1.13/plugins/control/Control.FullScreen.js}|url_absolue)]" type="text/javascript"></script>
+
+
+<script>
+ <BOUCLE_mots_types(MOTS){type = (#ENV{groupe})}>
+ var group_#ID_MOT = new L.LayerGroup();
+ var templateIcon = L.Icon.extend({
+ options: {
+ iconUrl: '[(#LOGO_MOT||extraire_attribut{src}|url_absolue)]',
+ shadowUrl: '[(#LOGO_MOT_SURVOL||extraire_attribut{src}|url_absolue)]',
+ iconSize: new L.Point(17, 28),
+ shadowSize: new L.Point(17, 17),
+ iconAnchor: new L.Point(13, 17),
+ popupAnchor: new L.Point(0, -33)
+ }
+ });
+ gisIcon = new templateIcon()
+ <BOUCLE_sites(SITES){id_mot}>
+ <BOUCLE_coord(GIS){id_syndic}>
+ var markerGis = new L.Marker(new L.LatLng(#LAT, #LON), {icon: gisIcon});
+ [(#ENV{popup}|!={non}|oui)
+ markerGis.bindPopup("[(#ENV{images}|!={non}|oui)<span style='float: left; width: 45px;'><img src='[(#LOGO_SYNDIC||extraire_attribut{src}|url_absolue)]' alt='' style='width: 45px;' width='45'></span>]<h4>#TITRE</h4>#DESCRIPTIF[(#ENV{images}|!={non}|oui)<span class='spip_documents spip_documents_right' style='float: right; width: 100px;'>\<img src='[(#LOGO_SYNDIC_SURVOL||extraire_attribut{src}|url_absolue)]' alt='' style='width: 100px;' width='100'></span>]#ADRESSE<br/> #CODE_POSTAL #VILLE<br/><a href='#URL_SITE' target='_blank'>#NOM_SITE - #URL_SITE</a><br/><br/><em>Statut: [(#_mots_types:TITRE|supprimer_numero)]</em>");
+ ]
+ group_#ID_MOT.addLayer(markerGis)
+ </BOUCLE_coord>
+ </BOUCLE_sites>
+ </BOUCLE_mots_types>
+
+ var cloudmadeAttribution = 'Map data © OpenStreetMap contributors<br/>[(#ENV{lien}|!={non}|oui)(<a href="#URL_SITE_SPIP/?page=carte_de_sites_plein&lien=non&groupe=#ENV{groupe}&boite=oui&haut=400[&lat=(#ENV{lat})][&lon=(#ENV{lon})][&zoom=(#ENV{zoom})][&legende=(#ENV{legende})]" rel="external" target="_blank"><:carte_de_sites:grande_carte:></a>)]',
+ cloudmadeUrl = 'http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/{styleId}/256/{z}/{x}/{y}.png';
+
+ var midnightCommander = new L.TileLayer(cloudmadeUrl, {styleId: 999, attribution: cloudmadeAttribution}),
+ thunderforest = new L.TileLayer('http://{s}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png', {attribution: cloudmadeAttribution}),
+ minimal = new L.TileLayer(cloudmadeUrl, {styleId: [(#ENV{style}|sinon{'14189'})], attribution: cloudmadeAttribution});
+
+ //Construction de la carte
+ var map = new L.Map('map');
+ map.setView(new L.LatLng([(#ENV{lat}|sinon{'46.8'})],[(#ENV{lon}|sinon{'2.52'})]),[(#ENV{zoom}|sinon{5})]).addLayer(thunderforest);
+ [(#ENV{fullscreen}|oui)
+ map.addControl(new L.Control.FullScreen());
+ ]
+
+ //Ajout des marqueurs
+ <BOUCLE_map(MOTS){type = (#ENV{groupe})}{!par num titre}>
+ map.addLayer(group_#ID_MOT);
+ </BOUCLE_map>
+
+ [(#ENV{boite}|!={non}|oui)
+ <INCLURE{fond=inclure/boite}{env}>
+ ]
+
+ [(#ENV{loc}|!={oui}|non)
+ map.on('click', onMapClick);
+
+ var popup = new L.Popup();
+
+ function onMapClick(e) {
+ document.getElementById("#ENV{champ_lat}").value=e.latlng.lat.toFixed(18);
+ document.getElementById("#ENV{champ_lon}").value=e.latlng.lng.toFixed(18);
+ popup.setLatLng(e.latlng);
+ popup.setContent("<:carte_de_sites:coordonnees_clic:>");
+ map.openPopup(popup);
+ }
+ ]
+
+</script>
+</div>
+
+[(#ENV{iframe}|!={non}|oui)
+ <INCLURE{fond=inclure/iframe_carte}{ajax}{env}>
+]
+
+<B_legende>
+<!-- Legende -->
+ [(#ENV{legende}|!={non}|oui)
+ <h2 class='h2 spip'><:carte_de_sites:legende:></h2>
+ ]
+ <BOUCLE_legende(MOTS){type = (#ENV{groupe})}{par num titre}>
+ [(#ENV{legende}|!={non}|oui)
+ <p>#LOGO_MOT_NORMAL [(#TITRE|supprimer_numero)]</p>
+ ]
+ </BOUCLE_legende>
+</B_legende>
--- /dev/null
+[(#REM)
+ Modele liste_de_site
+
+ Parametres :
+ - pays = : n'afficher qu'un pays
+]
+
+<!-- Liste des sites -->
+
+[(#ENV{pays}|oui)
+ <INCLURE{fond=inclure/liste_pays}{ajax}{env}{mon_pays=#ENV{pays}}{afficher_regions=oui}>
+]
+
+[(#ENV{pays}|non)
+ <INCLURE{fond=inclure/requete_pays}{ajax}{env}>
+]
--- /dev/null
+#CACHE{0}
+#HTTP_HEADER{Content-Type: text/csv; charset=UTF-8}
+#HTTP_HEADER{Content-Disposition: attachment; filename=liste.csv}
+"Statut";"Structure";"Atelier";"Adresse";"Code postal";"Ville";"Pays"
+<BOUCLE_mots(MOTS){type=#ENV{groupe}}><BOUCLE_sites(SITES){id_mot}{gis}>"#_mots:TITRE";"#NOM_SITE";"#TITRE_GIS";"#ADRESSE";"#CODE_POSTAL";"#VILLE";"#PAYS"
+</BOUCLE_sites></BOUCLE_mots>
--- /dev/null
+//Definition des fonds de carte
+ var baseMaps = {
+ "<:carte_de_sites:vue_cycle:>": thunderforest,
+ "<:carte_de_sites:vue_jour:>": minimal,
+ "<:carte_de_sites:vue_nuit:>": midnightCommander
+ };
+
+//Definition des calques de marqueurs
+ <B_groups>
+ var overlayMaps = {<BOUCLE_groups(MOTS){type = (#ENV{groupe})}{par num titre}>"[(#TITRE|supprimer_numero)]": group_#ID_MOT,</BOUCLE_groups>};
+ </B_groups>
+
+//Defintion du contenu de la boite
+ layersControl = new L.Control.Layers(baseMaps,overlayMaps);
+
+//Construction de la boite
+ map.addControl(layersControl);
--- /dev/null
+[(#ENV{afficher_iframe}|=={oui}|oui)
+<div>
+<p><i><:carte_de_sites:aide_iframe:></i></p>
+<textarea name="iframe" style="width: [(#ENV{larg}|?{[(#ENV{larg})px],'100%'})];" readonly>
+<iframe width="100%" height="400" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="#URL_SITE_SPIP/?page=carte_de_sites_plein&groupe=#ENV{groupe}&boite=non&images=oui&haut=400&pk_campaign=Carte #ENV{groupe}[&lat=(#ENV{lat})][&lon=(#ENV{lon})][&zoom=(#ENV{zoom})][&legende=(#ENV{legende})]&iframe=non[&lang=(#ENV{lang})]" style="border: 1px solid black"></iframe>
+</textarea>
+</div>
+]
+
+[(#ENV{afficher_iframe}|=={oui}|non)
+ <a class="ajax" id="afficher_iframe" onFocus="change_url()"
+href="[(#SELF|parametre_url{afficher_iframe,oui})]">
+ <:carte_de_sites:inclure_carte:></a>
+]
+
+<script>
+function change_url () {
+ var url = document.getElementById("afficher_iframe").href;
+ url = url + "&lat=" + map.getCenter().lat;
+ url = url + "&lon=" + map.getCenter().lng;
+ url = url + "&zoom=" + map.getZoom();
+ document.getElementById("afficher_iframe").href=url;
+}
+</script>
--- /dev/null
+#SET{req_gis,#VAL{"SELECT DISTINCT spip_gis.*, spip_syndic.* FROM spip_mots, spip_mots_liens, spip_syndic, spip_gis, spip_gis_liens WHERE spip_mots.type='Ateliers' AND spip_mots_liens.objet='site' AND spip_mots_liens.id_objet=spip_syndic.id_syndic AND spip_syndic.id_syndic=spip_gis_liens.id_objet AND spip_gis.id_gis=spip_gis_liens.id_gis AND spip_gis_liens.objet='site' AND spip_gis.pays='"}|concat{#ENV{mon_pays}}|concat{"' AND spip_gis.region='"}|concat{#ENV{ma_region}}|concat{"' ORDER BY spip_gis.ville"}}
+
+<BOUCLE_sql(DATA){source sql,#GET{req_gis}}>
+ <ul class="spip">
+ <BOUCLE_points(GIS){id_gis}>
+ <li>
+ <BOUCLE_MOT(MOTS){type = (#ENV{groupe})}{id_syndic}>
+ [(#LOGO_MOT_NORMAL
+ |image_reduire{25,25}
+ |image_recadre{25,25,center}
+ |image_aplatir{jpg,ffffff}
+ |inserer_attribut{class,spip_logos}
+ |inserer_attribut{title,#TITRE|supprimer_numero}
+ )]
+ </BOUCLE_MOT>
+ [(#LOGO_SYNDIC_NORMAL
+ |image_reduire{45,45}
+ |image_recadre{45,45,center}
+ |image_aplatir{jpg,ffffff}
+ |inserer_attribut{class,spip_logos})]
+ #VILLE (#CODE_POSTAL) - <a href="#VALEUR{url_site}"> #TITRE </a> - #ADRESSE
+ </li>
+ </BOUCLE_points>
+ </ul>
+</BOUCLE_sql>
--- /dev/null
+[(#ENV{afficher_regions}|=={oui}|non)
+ <h2 class="h2 spip"><a class="ajax"
+ href="[(#SELF|parametre_url{afficher_regions,oui})]">
+ #ENV{mon_pays}</a></h2>
+]
+
+[(#ENV{afficher_regions}|=={oui}|oui)
+ <h2 class="h2 spip">#ENV{mon_pays}</h2>
+ <INCLURE{fond=inclure/requete_regions}{ajax}{env}>
+]
--- /dev/null
+[(#ENV{afficher_gis}|=={oui}|non)
+ <h3 class="h3 spip"><a class="ajax"
+ href="[(#SELF|parametre_url{afficher_gis,oui})]">
+ #ENV{ma_region}</a></h3>
+]
+
+[(#ENV{afficher_gis}|=={oui}|oui)
+ <h3 class="h3 spip">#ENV{ma_region}</h3>
+ <INCLURE{fond=inclure/liste_gis}{ajax}{env}>
+]
--- /dev/null
+[(#ENV{afficher_regions}|=={oui}|non)
+ <h2 class="h2 spip"><a class="ajax"
+ href="[(#SELF|parametre_url{afficher_regions,oui})]">
+ #ENV{mon_pays}</a></h2>
+]
+
+[(#ENV{afficher_regions}|=={oui}|oui)
+ <h2 class="h2 spip">#ENV{mon_pays}</h2>
+ <INCLURE{fond=inclure/liste_regions}{ajax}{env}>
+]
\ No newline at end of file
--- /dev/null
+#SET{req_pays,"SELECT spip_gis.pays FROM spip_mots, spip_mots_liens, spip_syndic, spip_gis, spip_gis_liens WHERE spip_mots.type = 'Ateliers' AND spip_mots_liens.objet = 'site' AND spip_mots_liens.id_objet = spip_syndic.id_syndic AND spip_syndic.id_syndic = spip_gis_liens.id_objet AND spip_gis.id_gis = spip_gis_liens.id_gis AND spip_gis_liens.objet = 'site' GROUP BY spip_gis.pays"}
+
+<BOUCLE_sql(DATA){source sql, #GET{req_pays}}>
+ <INCLURE{fond=inclure/liste_pays}{ajax}{env}{mon_pays=#PAYS}>
+</BOUCLE_sql>
--- /dev/null
+#SET{req_regions,#VAL{"SELECT spip_gis.region FROM spip_mots, spip_mots_liens, spip_syndic, spip_gis, spip_gis_liens WHERE spip_mots.type='Ateliers' AND spip_mots_liens.objet='site' AND spip_mots_liens.id_objet=spip_syndic.id_syndic AND spip_syndic.id_syndic=spip_gis_liens.id_objet AND spip_gis.id_gis=spip_gis_liens.id_gis AND spip_gis_liens.objet='site' AND spip_gis.pays='"}|concat{#ENV{mon_pays}}|concat{"' GROUP BY spip_gis.region"}}
+
+<BOUCLE_sql(DATA){source sql,#GET{req_regions}}>
+ <INCLURE{fond=inclure/liste_regions}{ajax}{env}{ma_region=#REGION}>
+</BOUCLE_sql>
--- /dev/null
+<traduction module="carte_de_sites" reference="fr">
+ <langue code="fr" />
+ <langue code="en" />
+</traduction>
--- /dev/null
+<?php
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+'carte' => 'Map',
+'legende' => 'Key',
+'inclure_carte' => 'To insert the map in your website ...',
+'coordonnees_clic' => 'Coordinates of your click has just been reported in the survey below. To be more accurate, you can zoom even more on your bike co-op and click again.',
+'vue_cycle' => 'Bike ways',
+'vue_nuit' => 'Night view',
+'vue_jour' => 'Day view',
+'aide_iframe' => 'Copy and paste the following code to insert the map in your website.',
+'grande_carte' => 'Go to the fullscreen map',
+'nom_carte' => 'Bike co-ops Map',
+);
+?>
--- /dev/null
+<?php
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+'carte' => 'Carte',
+'legende' => 'Légende',
+'inclure_carte' => 'Pour inclure la carte dans votre site oueb ...',
+'coordonnees_clic' => 'Les coordonnées de votre clic ont été reportées dans le formulaire ci-dessous. Pour être encore plus précis, vous pouvez zoomer plus encore sur votre atelier et re-cliquer.',
+'vue_cycle' => 'Voies cyclables',
+'vue_nuit' => 'Vue de nuit',
+'vue_jour' => 'Vue de jour',
+'aide_iframe' => 'Insérer le code ci-dessous pour intégrer la carte dans votre site oueb.',
+'grande_carte' => 'Voir la carte en plus grand',
+'nom_carte' => 'Carte des ateliers',
+);
+?>
--- /dev/null
+<?php
+// This is a SPIP language file -- Ceci est un fichier langue de SPIP
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+
+ // C
+ 'carte_de_sites_description' => 'Ce plugin permet de générer une carte de sites à partir des sites references dans SPIP, auquels on a ajoute un mot-clé. Les marqueurs de la carte prennent comme source d\'image le logo du mot cle.',
+ 'carte_de_sites_slogan' => 'Carte de sites par mot-clé'
+);
+
+?>
--- /dev/null
+[(#REM) Carte des ateliers habillée ]
+<INCLURE{fond=structure}{env}{type=page}{composition=liste_de_sites} />
--- /dev/null
+[(#REM) Carte des ateliers ]\r
+<INCLURE{fond=contenu/page-carte_de_sites, env}/>\r
--- /dev/null
+[(#REM) Liste de sites ]\r
+[(#REM) Liste de sites ]\r
+[(#REM) Liste de sites ]\r
+\r
+<INCLURE{fond=contenu/page-liste_de_sites}{env}/>\r
--- /dev/null
+<paquet
+ prefix="carte_de_sites"
+ categorie="divers"
+ version="1.1.3"
+ etat="dev"
+ compatibilite="[3.0.0;3.0.*]"
+ documentation="http://www.wiklou.org/index.php/Inclusion_de_la_carte"
+>
+
+ <nom>Carte de sites</nom>
+ <auteur lien="http://www.heureux-cyclage.org">L'Heureux Cyclage</auteur>
+ <credit lien="http://contrib.spip.net/4189">b_b</credit>
+ <copyright>2011-2013</copyright>
+ <licence>GPL v3</licence>
+ <necessite nom="gis" compatibilite="[4.3.0;]"/>
+</paquet>