@ -0,0 +1,43 @@
|
||||
10 dec 2021 |
||||
|
||||
Le plugin "gis_plus" GIS Surcharge / markers et legend |
||||
permet d'attribuer des icones aux points GIS liés à des articles et d'en afficher la légende |
||||
|
||||
Il nécessite les plugins |
||||
- gis (gestion des cartes) |
||||
- saisies (je sais plus) |
||||
- mots_techniques (pour ne pas publier les mots-clefs utilisés dans le plugin) |
||||
- roles_documents (donne le role de logo aux images des mots-clefs), attention ce plugin est en dev, sauvegarder le base et le dossier IMG avant ! |
||||
|
||||
Comment ça fonctionne ? |
||||
- Le plugin lors de son installation créé le groupe de mot-clef "_marker_icon" |
||||
ainsi que cinq mots-clefs enfants et leur logo/icône de départ extraits du dossier d'images. |
||||
|
||||
Ce groupe de mots-clés techniques permet de lier un de ses mot-clefs à des articles géolocalisés. |
||||
Ainsi le logo d'un mot-clef de ce groupe sera affiché comme marker du point GIS lié, d'autree part, son logo et son titre s'afficheront dans la légende de la carte. |
||||
Seules contraintes: ne pas modifier le titre du groupe '_marker_icon' et conserver le mot-clef '_marker_defaut=' |
||||
qui sert à inscrire le titre par défaut à la suite, exemple de modification : '_marker_defaut=Légende des points par défaut'. |
||||
|
||||
A part '_marker_defaut=' il est possible de modifier, supprimer ou d'ajouter d'autres mots-clefs avec titres et logos/icones de votre choix. |
||||
|
||||
Qu'est ce qu'il faut faire pour que ça marche ? |
||||
- Prérequis: savoir à minima se servir du plugin GIS |
||||
- Attribuer un seul mot clef du groupe "_marker_icon" à l'article ayant un point GIS |
||||
- Opter pour un seul point GIS par article à cartographier (ou bien tous les points de l'article auront la même légende et logo que le mot-clef lié à l'article) |
||||
- Utiliser la carte en raccourci <carte_legend1|mots_legende=216+217> |
||||
- Voila, ça fonctionne déjà en utilisant le modele carte_gis.html |
||||
- Modifiez les titres des mots pour changer l'intitulé de la légende |
||||
- Modifiez le logo d'un mot pour changer l'icone GIS qui apparait sur la carte |
||||
Mais aussi ? |
||||
- Utilisez le champ "Lien hypertexte" des articles (configuration/Contenu du site) pour changer le lien de l'infobulle |
||||
- un petit cadeau pour afficher le logo de votre site sur la carte avec le modèle carte_gis_watermark |
||||
|
||||
Le plugin remplace en le surchargeant le fichier json/gis_articles (ça je pense que c'est pas bien, je vais le renommer) |
||||
|
||||
Il s'utilise avec le modele carte_gis_legende dans un squelette |
||||
[(#INCLURE{fond=modeles/carte_gis_legende, objets=articles, env, id_article=#LISTE{502,499,565}, mots_legende=#LISTE{216,217}})] |
||||
|
||||
#LISTE facilitant ici l'écriture pour un #ARRAY |
||||
|
||||
On peut également écrire dans le texte |
||||
<carte_gis_legende1|objets=articles|mots_legende=216+217> |
@ -0,0 +1,49 @@
|
||||
<?php |
||||
|
||||
if (!defined("_ECRIRE_INC_VERSION")) { |
||||
return; |
||||
} |
||||
|
||||
function ajouter_logos_mots() { |
||||
|
||||
include_spip('inc/utils'); |
||||
include_spip('inc/charsets'); |
||||
include_spip('action/editer_document'); |
||||
include_spip('action/ajouter_documents'); |
||||
|
||||
// retrouver le logo du groupe |
||||
$id_groupe = sql_getfetsel('id_groupe','spip_groupes_mots',"titre LIKE '%_marker_icon%'"); |
||||
|
||||
spip_log("N° groupe des icones legende = $id_groupe",'gis_plus' ); |
||||
|
||||
// Pour ajouter les logos sur les mots-clefs de ce groupe |
||||
//1 lister les images du dossier images/logos_marker/ |
||||
//2 importer ces images |
||||
//3 les lier aux mots avec le role "logo" |
||||
|
||||
$result = sql_select('id_mot,titre', "spip_mots", "id_groupe=$id_groupe"); |
||||
while ($row = sql_fetch($result)){ |
||||
$id_mot = $row['id_mot']; |
||||
$titre = $row['titre']; |
||||
$titre_img = translitteration(corriger_caracteres($titre)); |
||||
$titre_img = strtolower(str_replace(' ','_',$titre)); |
||||
$source = find_in_path(_DIR_PLUGIN_GIS_PLUS.'images/'.$titre_img.'.png'); |
||||
//logo_modifier($objet, $id_objet, $etat, $source); |
||||
//logo_modifier('mot', $id_mot, 'on', $source); |
||||
//$local = copie_locale($source); |
||||
$fichier = $source; |
||||
$files = array(); |
||||
$files[] = array('tmp_name' => $fichier, 'name' => basename($fichier)); |
||||
$ajouter_documents = charger_fonction('ajouter_documents', 'action'); |
||||
$liste = array(); |
||||
$id_document = $ajouter_documents('new', $files, '', 0, 'image', $liste); |
||||
|
||||
include_spip('action/editer_liens'); |
||||
objet_associer( |
||||
array('document' => $id_document), |
||||
array('mot' => $id_mot), |
||||
array('role' => 'logo') |
||||
); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,66 @@
|
||||
<?php |
||||
|
||||
if (!defined("_ECRIRE_INC_VERSION")) { |
||||
return; |
||||
} |
||||
|
||||
function peupler_base_gis_plus() { |
||||
|
||||
//retrouver le groupe créé |
||||
$id_groupe = sql_getfetsel('id_groupe','spip_groupes_mots',"titre LIKE '%_marker_icon%'"); |
||||
|
||||
if ($id_groupe > 0){ |
||||
spip_log("groupe _marker_icon id $id_groupe existe deja","peupler_base_gis_plus"); |
||||
return; |
||||
} |
||||
|
||||
$id_groupe = sql_insertq('spip_groupes_mots', array( |
||||
'titre' => '_marker_icon', |
||||
'obligatoire' => 'non', |
||||
'descriptif' => stripcslashes("Ce groupe de mots-clés techniques permet de lier des articles géolocalisés à un de ses mot-clefs. \n\n |
||||
Le logo d'un mot-clef de ce groupe sera affiché comme marker du point GIS lié, son titre s'affichera dans la légende de la carte avec son logo. \n\n |
||||
<span style='color:red'>Attention ! </span>Ne pas modifier le titre du groupe '_marker_icon', il faut aussi garder le titre du mot-clef '_marker_defaut=' et ajouter votre titre à la suite. \n\n |
||||
Sauf '_marker_defaut=' il est possible de supprimer ou d'ajouter d'autres mots-clefs et de modifier tous les titres et les logos. |
||||
"), |
||||
'tables_liees' => 'articles', |
||||
'technique' => 'oui', |
||||
'minirezo' => 'oui', |
||||
'comite' => 'oui', |
||||
'forum' => 'non', |
||||
)); |
||||
|
||||
//parfois nécessaire si groupe arbo actif |
||||
sql_insertq('spip_groupes_mots', array('id_groupe_racine' => $id_groupe),'id_groupe='.intval($id_groupe)); |
||||
|
||||
if ($id_groupe > 0) { |
||||
|
||||
sql_insertq_multi('spip_mots', array( |
||||
array( |
||||
'titre' => '_marker_defaut=', |
||||
'id_groupe' => $id_groupe, |
||||
'type' => '_marker_icon', |
||||
), |
||||
array( |
||||
'titre' => 'Marker rouge', |
||||
'id_groupe' => $id_groupe, |
||||
'type' => '_marker_icon', |
||||
), |
||||
array( |
||||
'titre' => 'Marker vert', |
||||
'id_groupe' => $id_groupe, |
||||
'type' => '_marker_icon', |
||||
), |
||||
array( |
||||
'titre' => 'Marker bleu', |
||||
'id_groupe' => $id_groupe, |
||||
'type' => '_marker_icon', |
||||
), |
||||
array( |
||||
'titre' => 'Marker orange', |
||||
'id_groupe' => $id_groupe, |
||||
'type' => '_marker_icon', |
||||
), |
||||
)); |
||||
|
||||
} |
||||
} |
@ -0,0 +1,18 @@
|
||||
[(#REM) |
||||
plugin gis plus |
||||
] |
||||
|
||||
#SET{array_articles,#ARRAY} |
||||
|
||||
[(#INCLURE{fond=modeles/carte_gis_legende, env, |
||||
id_carte_gis=1, |
||||
height=510, |
||||
zoom=12, |
||||
objets=articles, [(#REM) utilise json/gis_articles] |
||||
id_article=#GET{array_articles}, |
||||
autocenterandzoom=oui, |
||||
centrer_auto=oui, |
||||
overview=oui, |
||||
ajax=carto-mots, |
||||
mots_legende=#GET{array_mapico} |
||||
})] |
@ -0,0 +1,41 @@
|
||||
#HTTP_HEADER{'Content-Type: text/css'} |
||||
/* |
||||
|
||||
css gis_plus |
||||
|
||||
*/ |
||||
|
||||
/* par securite pas de border sur les liens si contenus dans un texte */ |
||||
.leaflet-popup-content .title a{border:none} |
||||
|
||||
.legende_map { |
||||
background: #F0F7EE; |
||||
margin: 1rem; |
||||
padding: 1rem; |
||||
width: auto; |
||||
color: #000; |
||||
border-radius: 0.2rem; |
||||
box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); |
||||
} |
||||
.legende_map ul{margin:0; padding:0;} |
||||
.legende_map li { |
||||
font-family: Arial, sans-serif; |
||||
font-size: 120%; |
||||
list-style-type: none; |
||||
background-repeat: no-repeat; |
||||
background-size: contain; |
||||
background-position: 0 0; |
||||
padding-left: 20px; |
||||
margin-bottom: 6px; |
||||
} |
||||
|
||||
<BOUCLE_mapicss(MOTS){type LIKE %_marker_icon%}{tout}{titre !LIKE %_marker_defaut%}> |
||||
[(#SET{class_css,[(#TITRE|strtolower|translitteration|corriger_caracteres|replace{' ','_'})]})] |
||||
.mapico[_(#GET{class_css})]{ |
||||
background-image: url([(#LOGO_MOT|extraire_attribut{src})]); |
||||
}</BOUCLE_mapicss> |
||||
<BOUCLE_mapicdefaut(MOTS){type LIKE %_marker_icon%}{tout}{titre LIKE %_marker_defaut%}> |
||||
.mapico_defaut{ |
||||
background-image: url([(#LOGO_MOT|extraire_attribut{src})]); |
||||
} |
||||
</BOUCLE_mapicdefaut> |
@ -0,0 +1,34 @@
|
||||
#HTTP_HEADER{'Content-Type: application/javascript'} |
||||
/* |
||||
|
||||
js gis_plus |
||||
|
||||
*/ |
||||
|
||||
//var map = map1; |
||||
|
||||
function charger_legend(){ |
||||
$('#map1').on('load', function(){ |
||||
//console.log(this.map._container); |
||||
//this.map.container; |
||||
//dis moi ce qu'il y a dans options |
||||
console.log(this.map.options.mots_legende); |
||||
var array_mots = this.map.options.mots_legende; //array des id_mot icones necessaires |
||||
// alert(array_mots[0]); |
||||
$('#map1 .leaflet-bottom.leaflet-left').load("#URL_PAGE{legende_map}",{array:array_mots}, function() { |
||||
// alert( "Load was performed." ); |
||||
}); |
||||
|
||||
[(#REM) ! php |
||||
//$('#map1 .leaflet-bottom.leaflet-left').html("[(#INCLURE{fond=inclure/legende_map,array=#GET{array_mapico}}|pas_retour_ligne)]"); |
||||
] |
||||
}); |
||||
} |
||||
|
||||
$(document).ready(function(){ |
||||
charger_legend(); |
||||
onAjaxLoad(charger_legend); |
||||
}); |
||||
|
||||
|
||||
|
@ -0,0 +1,45 @@
|
||||
<?php |
||||
/** |
||||
* Fichier gérant l'installation et désinstallation du plugin gis_plus |
||||
* |
||||
* @plugin gis_plus |
||||
* @copyright 2021 |
||||
* @author Anne-lise Martenot |
||||
* @licence GPL v3 |
||||
* @package SPIP\gis_plus\Installation |
||||
*/ |
||||
|
||||
if (!defined("_ECRIRE_INC_VERSION")){ |
||||
return; |
||||
} |
||||
|
||||
include_spip('base/gis_plus_peupler_base'); |
||||
include_spip('base/gis_plus_ajouter_logos'); |
||||
|
||||
|
||||
function gis_plus_upgrade($nom_meta_base_version, $version_cible){ |
||||
|
||||
$maj = array(); |
||||
|
||||
$maj['create'] = array( |
||||
array('peupler_base_gis_plus'), |
||||
array('ajouter_logos_mots') |
||||
); |
||||
|
||||
include_spip('base/upgrade'); |
||||
maj_plugin($nom_meta_base_version, $version_cible, $maj); |
||||
} |
||||
|
||||
/** |
||||
* Fonction de désinstallation du plugin. |
||||
**/ |
||||
function gis_plus_vider_tables($nom_meta_base_version) { |
||||
|
||||
// suppression des mots et du groupe |
||||
|
||||
sql_delete('spip_groupes_mots', "titre LIKE '%_marker_icon%'"); |
||||
sql_delete('spip_mots', "type LIKE '%_marker_icon%'"); |
||||
/**/ |
||||
|
||||
effacer_meta($nom_meta_base_version); |
||||
} |
@ -0,0 +1,54 @@
|
||||
<?php |
||||
|
||||
if (!defined("_ECRIRE_INC_VERSION")) { |
||||
return; |
||||
} |
||||
|
||||
function pas_retour_ligne($texte){ |
||||
$texte = preg_replace('/[\r\n]+/', '', $texte); |
||||
return $texte; |
||||
} |
||||
|
||||
/* a supprimer une fois tout est OK */ |
||||
function tester_logo(){ |
||||
|
||||
include_spip('inc/utils'); |
||||
include_spip('inc/charsets'); |
||||
include_spip('action/editer_document'); |
||||
include_spip('action/ajouter_documents'); |
||||
|
||||
// retrouver le logo du groupe |
||||
$id_groupe = sql_getfetsel('id_groupe','spip_groupes_mots',"titre LIKE '%_marker_icon%'"); |
||||
|
||||
spip_log("on a bien id_groupe = $id_groupe",'gis_plus'); |
||||
|
||||
// Pour ajouter les logos sur les mots-clefs de ce groupe |
||||
//1 lister les images du dossier images/logos_marker/ |
||||
//2 importer ces images |
||||
//3 les lier aux mots avec le role "logo" |
||||
|
||||
$result = sql_select('id_mot,titre', "spip_mots", "id_groupe=$id_groupe"); |
||||
while ($row = sql_fetch($result)){ |
||||
$id_mot = $row['id_mot']; |
||||
$titre = $row['titre']; |
||||
$titre_img = translitteration(corriger_caracteres($titre)); |
||||
$titre_img = strtolower(str_replace(' ','_',$titre)); |
||||
$source = find_in_path(_DIR_PLUGIN_GIS_PLUS.'images/'.$titre_img.'.png'); |
||||
//logo_modifier($objet, $id_objet, $etat, $source); |
||||
//logo_modifier('mot', $id_mot, 'on', $source); |
||||
//$local = copie_locale($source); |
||||
$fichier = $source; |
||||
$files = array(); |
||||
$files[] = array('tmp_name' => $fichier, 'name' => basename($fichier)); |
||||
$ajouter_documents = charger_fonction('ajouter_documents', 'action'); |
||||
$liste = array(); |
||||
$id_document = $ajouter_documents('new', $files, '', 0, 'image', $liste); |
||||
|
||||
include_spip('action/editer_liens'); |
||||
objet_associer( |
||||
array('document' => $id_document), |
||||
array('mot' => $id_mot), |
||||
array('role' => 'logo') |
||||
); |
||||
} |
||||
} |
@ -0,0 +1,19 @@
|
||||
<?php |
||||
|
||||
if (!defined("_ECRIRE_INC_VERSION")) { |
||||
return; |
||||
} |
||||
|
||||
//Ajoute la css de la légende et des icônes des points GIS |
||||
function gis_plus_insert_head_css($flux) { |
||||
$css = generer_url_public('gis_plus.css'); |
||||
$flux .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n"; |
||||
return $flux; |
||||
} |
||||
|
||||
//Ajoute le js qui inclut la légende |
||||
function gis_plus_insert_head($flux) { |
||||
$js = generer_url_public('gis_plus.js'); |
||||
$flux .= "<script src='$js' type='text/javascript'></script>\n"; |
||||
return $flux; |
||||
} |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 618 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,22 @@
|
||||
<BOUCLE_art(ARTICLES){gis}{id_article ?}{id_rubrique ?}{id_secteur ?}{id_mot ?}{id_groupe ?}{id_auteur ?}{recherche ?}{0, #ENV{limit}}{","}> |
||||
[(#SET{marker,[(#LOGO_GIS|gis_icon_properties)]})] |
||||
<BOUCLE_logomot(MOTS){id_article ?}{type LIKE %_marker_icon%}{tout}>[(#SET{marker,[(#LOGO_MOT_NORMAL|gis_icon_properties)]})]</BOUCLE_logomot> |
||||
[(#URL_SITE|non) |
||||
[(#SET{title, |
||||
[(#URL_ARTICLE|lien_ou_expose{[(#TITRE_GIS*|sinon{#TITRE*}|extraire_multi|supprimer_numero)]})] |
||||
})] |
||||
] |
||||
[(#URL_SITE|oui) |
||||
[(#SET{title, |
||||
[(#URL_SITE|lien_ou_expose{[(#TITRE_GIS*|sinon{#NOM_SITE*}|extraire_multi|supprimer_numero)]})] |
||||
})] |
||||
] |
||||
{"type": "Feature", |
||||
["geometry": (#GEOMETRY|appliquer_filtre{wkt_to_json}|sinon{{"type": "Point", "coordinates": \[#LON, #LAT\]}}),] |
||||
"id":"#ID_GIS", |
||||
"properties": { |
||||
"title":[(#GET{title}|json_encode)], |
||||
"description":[(#DESCRIPTIF_GIS|sinon{#DESCRIPTIF}|json_encode)][(#GET{marker})][(#GET{marker}|sinon{[ |
||||
(#LOGO_GIS|gis_icon_properties)]})][, |
||||
"styles": (#GEOMETRY_STYLES|appliquer_filtre{geometry_styles_to_json})] |
||||
}}</BOUCLE_art> |
@ -0,0 +1,12 @@
|
||||
<?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( |
||||
|
||||
//voir les champs extra |
||||
|
||||
); |
@ -0,0 +1,14 @@
|
||||
<?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( |
||||
|
||||
// T |
||||
'perso_infolettres_description' => 'GIS surcharge pour la cartographie, markers et legend', |
||||
'perso_infolettres_nom' => 'GIS+ surcharge pour la cartographie', |
||||
'perso_infolettres_slogan' => 'GIS surcharge pour la cartographie', |
||||
); |
@ -0,0 +1,20 @@
|
||||
#HTTP_HEADER{'Content-Type: text/html'} |
||||
[(#REM) |
||||
S'utilise avec le js qui charge la légende |
||||
[(#INCLURE{fond=inclure/legende_map,array=#GET{array_mapico}}|pas_retour_ligne)] |
||||
] |
||||
<BOUCLE_mapicdefaut(MOTS){type LIKE %_marker_icon%}{tout}{titre LIKE %_marker_defaut%}> |
||||
[(#SET{titre_defaut,[(#TITRE|replace{'_marker_defaut=',''}|trim)]})] |
||||
</BOUCLE_mapicdefaut> |
||||
|
||||
<B_logomot> |
||||
<div class='legende_map'> |
||||
<ul> |
||||
<li class='mapico_defaut'>#GET{titre_defaut}</li> |
||||
<BOUCLE_logomot(MOTS){id_mot IN #ENV{array}}{type LIKE %_marker_icon%}{tout}{titre !LIKE %_marker_defaut%}> |
||||
[(#SET{class_css,[(#TITRE|strtolower|translitteration|corriger_caracteres|replace{' ','_'})]})] |
||||
<li class='mapico[_(#GET{class_css})]'>#TITRE</li> |
||||
</BOUCLE_logomot> |
||||
</ul> |
||||
</div> |
||||
</B_logomot> |
After Width: | Height: | Size: 5.4 KiB |
@ -0,0 +1,178 @@
|
||||
[(#REM) |
||||
|
||||
Modele carte_gis |
||||
---------------- |
||||
|
||||
Parametres possibles : |
||||
|
||||
- id_map|id_carte_gis = 1 id de la carte |
||||
- lat|latit|latitude = 48.3 latitude du centre de la carte |
||||
- lon|lonxit|longitude = -4.7 longitude du centre de la carte |
||||
- zoom = 5 zoom de la carte |
||||
- maxZoom = 13 zoom maximum autorisé |
||||
- minZoom = 13 zoom minimum autorisé |
||||
|
||||
- default_layer = acetate nom de la couche affichée par défaut, "none" si on ne souhaite pas affiche de couche spécifique |
||||
- affiche_layers = openmapsurfer/acetate noms des couches proposées séparés par des / |
||||
|
||||
- sw_lat = lat - 10° latitude du sud-ouest de la bounding box |
||||
- sw_lon = lon - 10° longitude du sud-ouest de la bounding box |
||||
- ne_lat = lat + 10° latitude du nord-est de la bounding box |
||||
- ne_lon = lon + 10° longitude du nord-est de la bounding box |
||||
|
||||
- width|largeur = 100% largeur de la carte, 100% par defaut |
||||
- height|hauteur = 400px hauteur de la carte, 400px par defaut |
||||
- style = non ne pas styler la carte |
||||
|
||||
- fullscreen = oui afficher un bouton pour passer la carte en plein écran |
||||
- zoom_molette|zoom_wheel = non désactiver le zoom avec la molette de la souris, actif par defaut |
||||
- control_type|controle_type = non ne pas afficher le contrôle de changement de couche |
||||
- control_type_collapsed = non afficher le contrôle de changement de couche replié (oui par défaut) |
||||
- no_control|aucun_controle = oui ne pas afficher les contrôles de la carte |
||||
- scale = oui afficher l'échelle de la carte |
||||
- overview = oui afficher une mini carte de situation |
||||
|
||||
- autocenterandzoom|centrer_auto = oui centrer et zoomer la carte automatiquement pour afficher tous les marqueurs |
||||
- localize_visitor|localiser_visiteur = oui centrer la carte sur la position du visiteur (API geolocation HTML5) |
||||
- localize_visitor_zoom = 12 niveau de zoom sur la position du visiteur (par défaut la valeur de zoom de la carte) |
||||
- id_a_ouvrir id_gis de l'infobulle à afficher au chargement(marqueur uniquement) |
||||
|
||||
- objets = gis type d'objets à afficher (fichier json/gis_xx qui génère la source de donnees) |
||||
- limit|limite = 500 nombre max de marqueurs à afficher, 500 par defaut |
||||
- langue = null langue des objets à récupérer (utile pour les multis notamment) |
||||
- tooltip = oui affiche un tooltip sur les points |
||||
- kml = 12 kml à superposer à la carte (id_document ou url ou liste d'url) |
||||
- gpx = 12 gpx à superposer à la carte (id_document ou url ou liste d'url) |
||||
- geojson = 12 geojson à superposer à la carte (id_document ou url ou liste d'url) |
||||
- topojson = 12 topojson à superposer à la carte (id_document ou url ou liste d'url) |
||||
- centrer_fichier = non permet de ne pas centrer la carte automatiquement sur les fichiers kml/gpx surperposés |
||||
- point = non si elle vaut "non" cette option n'affichera pas de points du tout (utile pour n'afficher qu'un kml par exemple) |
||||
|
||||
- media = non permet de passer le critère 'media' (pour les documents) |
||||
- mots = #LISTE{1,4,7} plugin critere {mots} https://contrib.spip.net/Critere-mots |
||||
- path_styles=#ARRAY{color,#fff} options de style des éléments de la couche GeoJSON (voir http://leafletjs.com/reference.html#path-options) |
||||
- options=#ARRAY{option1,valeur1} options ajoutées à la carte (qui peuvent être récupérées dans la fonction de callback par exemple par la suite) |
||||
|
||||
Uniquement si objets = point_libre : |
||||
- icone = chemin/vers/image image utilisée pour le marker |
||||
- titre titre du point |
||||
- description description du point |
||||
|
||||
Clustering (regroupement de points proches) : |
||||
- cluster = oui Active le clustering |
||||
- clusterMaxZoom = 11 Regroupe les points jusque à ce zoom, mais pas au delà |
||||
- clusterShowCoverageOnHover = oui Affiche au survol du cluster le contour de la zone couverte par les points regroupés |
||||
- maxClusterRadius = 80 Le rayon maximal (en pixels) qu'un cluster couvrira (80 pixels par defaut) |
||||
- clusterSpiderfyOnMaxZoom = oui Active l'effet d'éclatement pour afficher les points qui se chevauchent |
||||
- singleMarkerMode = oui Utilise les icones de cluster pour tous les points (même ceux qui ne sont pas dans un cluster) |
||||
] |
||||
|
||||
[(#SET{width,#ENV{width,#ENV{largeur,100%}}})] |
||||
[(#SET{height,#ENV{height,#ENV{hauteur,400px}}})] |
||||
[(#SET{id,#ENV{id_carte_gis,#ENV{id_map,#ENV{id,1}}}})] |
||||
[(#REM) -- compat gis v1 -- ] |
||||
[(#SET{lat,#ENV{lat,#ENV{latit,#ENV{latitude,#CONFIG{gis/lat,0}}}}})] |
||||
[(#SET{lon,#ENV{lon,#ENV{lonxit,#ENV{longitude,#CONFIG{gis/lon,0}}}}})] |
||||
[(#REM) On utilise la bounding box seulement si le centre n'a pas été donné et si les quatre valeurs de la bounding box sont renseignées |
||||
les valeurs par defaut sont "centre +/- 10°", ce qui est naze, mais c'est un cas normalement impossible |
||||
] |
||||
#SET{utiliser_bb, ''} |
||||
[(#ENV{lat}|ou{#ENV{lon}}|non|et{#ENV{sw_lat}}|et{#ENV{sw_lon}}|et{#ENV{ne_lat}}|et{#ENV{ne_lon}}) |
||||
#SET{utiliser_bb, oui} |
||||
#SET{sw_lat,#ENV{sw_lat,#GET{lat}|moins{10}}} |
||||
#SET{sw_lon,#ENV{sw_lon,#GET{lon}|moins{10}}} |
||||
#SET{ne_lat,#ENV{ne_lat,#GET{lat}|plus{10}}} |
||||
#SET{ne_lon,#ENV{ne_lon,#GET{lon}|plus{10}}} |
||||
] |
||||
|
||||
[(#REM) <carte_gis_legende|mots_legende=216+217> ] |
||||
[(#ENV*{mots_legende}|is_array|oui) |
||||
#SET{mots_legende,#ENV*{mots_legende}} |
||||
] |
||||
[(#ENV*{mots_legende}|is_array|non) |
||||
#SET{mots_legende,#VAL{/\W/}|preg_split{#ENV*{mots_legende}}} |
||||
] |
||||
|
||||
<div id="map[(#GET{id})]" class="carte_gis"[(#ENV{style}|!={'non'}|?{' '})style="[width:(#GET{width});][ height:(#GET{height});]"]></div> |
||||
|
||||
<script type="text/javascript">/*<!\[CDATA\[*/ |
||||
var map[(#GET{id})]; |
||||
var jQgisloader; |
||||
(function (){ |
||||
if (typeof jQuery.ajax == "undefined"){jQuery(init_gis);}else {init_gis();} |
||||
function init_gis(){ |
||||
// Charger le javascript de GIS une seule fois si plusieurs carte |
||||
if (typeof jQgisloader=="undefined"){ |
||||
jQgisloader = jQuery.ajax({url: '[(#PRODUIRE{fond=javascript/gis.js})]', dataType: 'script', cache: true}); |
||||
} |
||||
// et initialiser la carte (des que js GIS charge et des que DOM ready) |
||||
jQgisloader.done(function(){ |
||||
jQuery(function(){ |
||||
map[(#GET{id})] = new L.Map.Gis('map[(#GET{id})]',{ |
||||
mapId: '[(#GET{id})]', |
||||
callback: (typeof(callback_map[(#GET{id})]) === "function") ? callback_map[(#GET{id})] : false, |
||||
center: [#GET{lat},#GET{lon}], |
||||
zoom: [(#ENV{zoom,#CONFIG{gis/zoom,0}}|trim)][, |
||||
maxZoom: (#ENV{maxZoom}|trim)][, |
||||
minZoom: (#ENV{minZoom}|trim)][, |
||||
default_layer: '(#ENV{default_layer}|trim)'][, |
||||
affiche_layers: (#ENV{affiche_layers}|trim|?{[(#ENV{affiche_layers}|trim|explode{/}|json_encode)],''})], |
||||
scrollWheelZoom: [(#ENV{zoom_molette,#ENV{zoom_wheel}}|trim|=={non}|?{false,true})], |
||||
zoomControl: [(#ENV{no_control,#ENV{aucun_controle}}|trim|!={oui}|?{true,false})], |
||||
fullscreenControl: [(#ENV{fullscreen}|trim|=={oui}|?{true,false})], |
||||
scaleControl: [(#ENV{scale}|trim|=={oui}|?{true,false})], |
||||
overviewControl:[(#ENV{overview}|trim|=={oui}|?{true,false})], |
||||
layersControl: [(#ENV{control_type,#ENV{controle_type}}|trim|=={non}|?{false,true})], |
||||
layersControlOptions: { |
||||
collapsed: [(#ENV{control_type_collapsed,#ENV{control_type_collapsed}}|trim|=={non}|?{false,true})] |
||||
}, |
||||
noControl: [(#ENV{no_control,#ENV{aucun_controle}}|trim|=={oui}|?{true,false})], |
||||
utiliser_bb: [(#GET{utiliser_bb}|?{true,false})][, |
||||
sw_lat: (#GET{sw_lat})][, |
||||
ne_lat: (#GET{ne_lat})][, |
||||
sw_lon: (#GET{sw_lon})][, |
||||
ne_lon: (#GET{ne_lon})], |
||||
affiche_points: [(#ENV{point,''}|=={non}|?{false,true})][, |
||||
langue:'(#ENV{langue})'], |
||||
json_points:{ |
||||
url: '[(#URL_PAGE{gis_json}|parametre_url{lang,#ENV{langue},&}|url_absolue)]'[, |
||||
objets: '(#ENV{objets,#ENV{class}}|trim)'], |
||||
limit: [(#ENV{limit,#ENV{limite,500}}|trim)], |
||||
env: [(#ENV*{args,#ENV*}|gis_modele_url_json_env|json_encode)][, |
||||
titre: (#ENV{titre}|?{#ENV{titre},''}|trim|json_encode)][, |
||||
description: (#ENV{description}|?{#ENV{description},''}|trim|json_encode)][, |
||||
icone: (#ENV{icone}|?{#ENV{icone},''}|trim|json_encode)] |
||||
}, |
||||
tooltip: [(#ENV{tooltip}|=={oui}|?{true,false})], |
||||
cluster: [(#ENV{cluster}|=={oui}|?{true,false})], |
||||
clusterOptions: { |
||||
disableClusteringAtZoom: [(#ENV{clusterMaxZoom,null})], |
||||
showCoverageOnHover: [(#ENV{clusterShowCoverageOnHover}|?{true,false})], |
||||
spiderfyOnMaxZoom: [(#ENV{clusterSpiderfyOnMaxZoom}|?{true,false})], |
||||
maxClusterRadius: [(#ENV{maxClusterRadius,80})], |
||||
singleMarkerMode: [(#ENV{singleMarkerMode}|?{true,false})] |
||||
}, |
||||
pathStyles: [(#ENV*{path_styles}|json_encode)], |
||||
autocenterandzoom: [(#ENV{autocenterandzoom,#ENV{centrer_auto,non}}|trim|=={non}|?{false,true})], |
||||
openId: [(#ENV{id_a_ouvrir,false})], |
||||
localize_visitor: [(#ENV{localize_visitor,#ENV{localiser_visiteur}}|trim|?{true,false})], |
||||
localize_visitor_zoom: [(#ENV{localize_visitor_zoom,#ENV{zoom,#CONFIG{gis/zoom,0}}}|trim)], |
||||
centrer_fichier: [(#ENV{centrer_fichier,oui}|trim|=={oui}|?{true,false})], |
||||
kml: [(#ENV{kml,''}|?{[(#ENV{kml}|gis_param_to_array|gis_kml_to_urls|json_encode)],false})], |
||||
gpx: [(#ENV{gpx,''}|?{[(#ENV{gpx}|gis_param_to_array|gis_kml_to_urls|json_encode)],false})], |
||||
geojson: [(#ENV{geojson,''}|?{[(#ENV{geojson}|gis_param_to_array|gis_kml_to_urls|json_encode)],false})], |
||||
topojson: [(#ENV{topojson,''}|?{[(#ENV{topojson}|gis_param_to_array|gis_kml_to_urls|json_encode)],false})], |
||||
options: [(#ENV*{options,#ARRAY}|json_encode)], |
||||
mots_legende: [(#GET{mots_legende}|json_encode)], |
||||
}); |
||||
|
||||
}); |
||||
}); |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
})() |
||||
/*\]\]>*/ |
||||
</script> |
@ -0,0 +1,192 @@
|
||||
[(#REM) |
||||
|
||||
Modele carte_gis |
||||
---------------- |
||||
|
||||
Parametres possibles : |
||||
|
||||
- id_map|id_carte_gis = 1 id de la carte |
||||
- lat|latit|latitude = 48.3 latitude du centre de la carte |
||||
- lon|lonxit|longitude = -4.7 longitude du centre de la carte |
||||
- zoom = 5 zoom de la carte |
||||
- maxZoom = 13 zoom maximum autorisé |
||||
- minZoom = 13 zoom minimum autorisé |
||||
|
||||
- default_layer = acetate nom de la couche affichée par défaut, "none" si on ne souhaite pas affiche de couche spécifique |
||||
- affiche_layers = openmapsurfer/acetate noms des couches proposées séparés par des / |
||||
|
||||
- sw_lat = lat - 10° latitude du sud-ouest de la bounding box |
||||
- sw_lon = lon - 10° longitude du sud-ouest de la bounding box |
||||
- ne_lat = lat + 10° latitude du nord-est de la bounding box |
||||
- ne_lon = lon + 10° longitude du nord-est de la bounding box |
||||
|
||||
- width|largeur = 100% largeur de la carte, 100% par defaut |
||||
- height|hauteur = 400px hauteur de la carte, 400px par defaut |
||||
- style = non ne pas styler la carte |
||||
|
||||
- fullscreen = oui afficher un bouton pour passer la carte en plein écran |
||||
- zoom_molette|zoom_wheel = non désactiver le zoom avec la molette de la souris, actif par defaut |
||||
- control_type|controle_type = non ne pas afficher le contrôle de changement de couche |
||||
- control_type_collapsed = non afficher le contrôle de changement de couche replié (oui par défaut) |
||||
- no_control|aucun_controle = oui ne pas afficher les contrôles de la carte |
||||
- scale = oui afficher l'échelle de la carte |
||||
- overview = oui afficher une mini carte de situation |
||||
|
||||
- autocenterandzoom|centrer_auto = oui centrer et zoomer la carte automatiquement pour afficher tous les marqueurs |
||||
- localize_visitor|localiser_visiteur = oui centrer la carte sur la position du visiteur (API geolocation HTML5) |
||||
- localize_visitor_zoom = 12 niveau de zoom sur la position du visiteur (par défaut la valeur de zoom de la carte) |
||||
- id_a_ouvrir id_gis de l'infobulle à afficher au chargement(marqueur uniquement) |
||||
|
||||
- objets = gis type d'objets à afficher (fichier json/gis_xx qui génère la source de donnees) |
||||
- limit|limite = 500 nombre max de marqueurs à afficher, 500 par defaut |
||||
- langue = null langue des objets à récupérer (utile pour les multis notamment) |
||||
- tooltip = oui affiche un tooltip sur les points |
||||
- kml = 12 kml à superposer à la carte (id_document ou url ou liste d'url) |
||||
- gpx = 12 gpx à superposer à la carte (id_document ou url ou liste d'url) |
||||
- geojson = 12 geojson à superposer à la carte (id_document ou url ou liste d'url) |
||||
- topojson = 12 topojson à superposer à la carte (id_document ou url ou liste d'url) |
||||
- centrer_fichier = non permet de ne pas centrer la carte automatiquement sur les fichiers kml/gpx surperposés |
||||
- point = non si elle vaut "non" cette option n'affichera pas de points du tout (utile pour n'afficher qu'un kml par exemple) |
||||
|
||||
- media = non permet de passer le critère 'media' (pour les documents) |
||||
- mots = #LISTE{1,4,7} plugin critere {mots} https://contrib.spip.net/Critere-mots |
||||
- path_styles=#ARRAY{color,#fff} options de style des éléments de la couche GeoJSON (voir http://leafletjs.com/reference.html#path-options) |
||||
- options=#ARRAY{option1,valeur1} options ajoutées à la carte (qui peuvent être récupérées dans la fonction de callback par exemple par la suite) |
||||
|
||||
Uniquement si objets = point_libre : |
||||
- icone = chemin/vers/image image utilisée pour le marker |
||||
- titre titre du point |
||||
- description description du point |
||||
|
||||
Clustering (regroupement de points proches) : |
||||
- cluster = oui Active le clustering |
||||
- clusterMaxZoom = 11 Regroupe les points jusque à ce zoom, mais pas au delà |
||||
- clusterShowCoverageOnHover = oui Affiche au survol du cluster le contour de la zone couverte par les points regroupés |
||||
- maxClusterRadius = 80 Le rayon maximal (en pixels) qu'un cluster couvrira (80 pixels par defaut) |
||||
- clusterSpiderfyOnMaxZoom = oui Active l'effet d'éclatement pour afficher les points qui se chevauchent |
||||
- singleMarkerMode = oui Utilise les icones de cluster pour tous les points (même ceux qui ne sont pas dans un cluster) |
||||
] |
||||
|
||||
[(#SET{width,#ENV{width,#ENV{largeur,100%}}})] |
||||
[(#SET{height,#ENV{height,#ENV{hauteur,400px}}})] |
||||
[(#SET{id,#ENV{id_carte_gis,#ENV{id_map,#ENV{id,1}}}})] |
||||
[(#REM) -- compat gis v1 -- ] |
||||
[(#SET{lat,#ENV{lat,#ENV{latit,#ENV{latitude,#CONFIG{gis/lat,0}}}}})] |
||||
[(#SET{lon,#ENV{lon,#ENV{lonxit,#ENV{longitude,#CONFIG{gis/lon,0}}}}})] |
||||
[(#REM) On utilise la bounding box seulement si le centre n'a pas été donné et si les quatre valeurs de la bounding box sont renseignées |
||||
les valeurs par defaut sont "centre +/- 10°", ce qui est naze, mais c'est un cas normalement impossible |
||||
] |
||||
#SET{utiliser_bb, ''} |
||||
[(#ENV{lat}|ou{#ENV{lon}}|non|et{#ENV{sw_lat}}|et{#ENV{sw_lon}}|et{#ENV{ne_lat}}|et{#ENV{ne_lon}}) |
||||
#SET{utiliser_bb, oui} |
||||
#SET{sw_lat,#ENV{sw_lat,#GET{lat}|moins{10}}} |
||||
#SET{sw_lon,#ENV{sw_lon,#GET{lon}|moins{10}}} |
||||
#SET{ne_lat,#ENV{ne_lat,#GET{lat}|plus{10}}} |
||||
#SET{ne_lon,#ENV{ne_lon,#GET{lon}|plus{10}}} |
||||
] |
||||
|
||||
<div id="map[(#GET{id})]" class="carte_gis"[(#ENV{style}|!={'non'}|?{' '})style="[width:(#GET{width});][ height:(#GET{height});]"]></div> |
||||
|
||||
<script type="text/javascript">/*<!\[CDATA\[*/ |
||||
var map[(#GET{id})]; |
||||
var jQgisloader; |
||||
(function (){ |
||||
if (typeof jQuery.ajax == "undefined"){jQuery(init_gis);}else {init_gis();} |
||||
function init_gis(){ |
||||
// Charger le javascript de GIS une seule fois si plusieurs carte |
||||
if (typeof jQgisloader=="undefined"){ |
||||
jQgisloader = jQuery.ajax({url: '[(#PRODUIRE{fond=javascript/gis.js})]', dataType: 'script', cache: true}); |
||||
} |
||||
// et initialiser la carte (des que js GIS charge et des que DOM ready) |
||||
jQgisloader.done(function(){ |
||||
jQuery(function(){ |
||||
map[(#GET{id})] = new L.Map.Gis('map[(#GET{id})]',{ |
||||
mapId: '[(#GET{id})]', |
||||
callback: (typeof(callback_map[(#GET{id})]) === "function") ? callback_map[(#GET{id})] : false, |
||||
center: [#GET{lat},#GET{lon}], |
||||
zoom: [(#ENV{zoom,#CONFIG{gis/zoom,0}}|trim)][, |
||||
maxZoom: (#ENV{maxZoom}|trim)][, |
||||
minZoom: (#ENV{minZoom}|trim)][, |
||||
default_layer: '(#ENV{default_layer}|trim)'][, |
||||
affiche_layers: (#ENV{affiche_layers}|trim|?{[(#ENV{affiche_layers}|trim|explode{/}|json_encode)],''})], |
||||
scrollWheelZoom: [(#ENV{zoom_molette,#ENV{zoom_wheel}}|trim|=={non}|?{false,true})], |
||||
zoomControl: [(#ENV{no_control,#ENV{aucun_controle}}|trim|!={oui}|?{true,false})], |
||||
fullscreenControl: [(#ENV{fullscreen}|trim|=={oui}|?{true,false})], |
||||
scaleControl: [(#ENV{scale}|trim|=={oui}|?{true,false})], |
||||
overviewControl:[(#ENV{overview}|trim|=={oui}|?{true,false})], |
||||
layersControl: [(#ENV{control_type,#ENV{controle_type}}|trim|=={non}|?{false,true})], |
||||
layersControlOptions: { |
||||
collapsed: [(#ENV{control_type_collapsed,#ENV{control_type_collapsed}}|trim|=={non}|?{false,true})] |
||||
}, |
||||
noControl: [(#ENV{no_control,#ENV{aucun_controle}}|trim|=={oui}|?{true,false})], |
||||
utiliser_bb: [(#GET{utiliser_bb}|?{true,false})][, |
||||
sw_lat: (#GET{sw_lat})][, |
||||
ne_lat: (#GET{ne_lat})][, |
||||
sw_lon: (#GET{sw_lon})][, |
||||
ne_lon: (#GET{ne_lon})], |
||||
affiche_points: [(#ENV{point,''}|=={non}|?{false,true})][, |
||||
langue:'(#ENV{langue})'], |
||||
json_points:{ |
||||
url: '[(#URL_PAGE{gis_json}|parametre_url{lang,#ENV{langue},&}|url_absolue)]'[, |
||||
objets: '(#ENV{objets,#ENV{class}}|trim)'], |
||||
limit: [(#ENV{limit,#ENV{limite,500}}|trim)], |
||||
env: [(#ENV*{args,#ENV*}|gis_modele_url_json_env|json_encode)][, |
||||
titre: (#ENV{titre}|?{#ENV{titre},''}|trim|json_encode)][, |
||||
description: (#ENV{description}|?{#ENV{description},''}|trim|json_encode)][, |
||||
icone: (#ENV{icone}|?{#ENV{icone},''}|trim|json_encode)] |
||||
}, |
||||
tooltip: [(#ENV{tooltip}|=={oui}|?{true,false})], |
||||
cluster: [(#ENV{cluster}|=={oui}|?{true,false})], |
||||
clusterOptions: { |
||||
disableClusteringAtZoom: [(#ENV{clusterMaxZoom,null})], |
||||
showCoverageOnHover: [(#ENV{clusterShowCoverageOnHover}|?{true,false})], |
||||
spiderfyOnMaxZoom: [(#ENV{clusterSpiderfyOnMaxZoom}|?{true,false})], |
||||
maxClusterRadius: [(#ENV{maxClusterRadius,80})], |
||||
singleMarkerMode: [(#ENV{singleMarkerMode}|?{true,false})] |
||||
}, |
||||
pathStyles: [(#ENV*{path_styles}|json_encode)], |
||||
autocenterandzoom: [(#ENV{autocenterandzoom,#ENV{centrer_auto,non}}|trim|=={non}|?{false,true})], |
||||
openId: [(#ENV{id_a_ouvrir,false})], |
||||
localize_visitor: [(#ENV{localize_visitor,#ENV{localiser_visiteur}}|trim|?{true,false})], |
||||
localize_visitor_zoom: [(#ENV{localize_visitor_zoom,#ENV{zoom,#CONFIG{gis/zoom,0}}}|trim)], |
||||
centrer_fichier: [(#ENV{centrer_fichier,oui}|trim|=={oui}|?{true,false})], |
||||
kml: [(#ENV{kml,''}|?{[(#ENV{kml}|gis_param_to_array|gis_kml_to_urls|json_encode)],false})], |
||||
gpx: [(#ENV{gpx,''}|?{[(#ENV{gpx}|gis_param_to_array|gis_kml_to_urls|json_encode)],false})], |
||||
geojson: [(#ENV{geojson,''}|?{[(#ENV{geojson}|gis_param_to_array|gis_kml_to_urls|json_encode)],false})], |
||||
topojson: [(#ENV{topojson,''}|?{[(#ENV{topojson}|gis_param_to_array|gis_kml_to_urls|json_encode)],false})], |
||||
options: [(#ENV*{options,#ARRAY}|json_encode)] |
||||
}); |
||||
|
||||
/////// |
||||
L.Control.Watermark = L.Control.extend({ |
||||
onAdd: function(map[(#GET{id})]) { |
||||
var img = L.DomUtil.create('img'); |
||||
|
||||
img.src = ['(#LOGO_SITE_SPIP|image_reduire{200}|extraire_attribut{src})']; |
||||
img.style.width = '200px'; |
||||
|
||||
return img; |
||||
}, |
||||
|
||||
onRemove: function(map[(#GET{id})]) { |
||||
// Nothing to do here |
||||
} |
||||
}); |
||||
|
||||
L.control.watermark = function(opts) { |
||||
return new L.Control.Watermark(opts); |
||||
} |
||||
|
||||
L.control.watermark({ position: 'bottomleft' }).addTo(map[(#GET{id})]); |
||||
////// |
||||
|
||||
}); |
||||
}); |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
})() |
||||
/*\]\]>*/ |
||||
</script> |
@ -0,0 +1,25 @@
|
||||
<paquet |
||||
prefix="gis_plus" |
||||
categorie="communication" |
||||
version="1.2.0" |
||||
schema="1.0.0" |
||||
etat="dev" |
||||
compatibilite="[3.2.4;3.2.*]" |
||||
logo="logo-gis-32.png" |
||||
> |
||||
<nom>GIS Surcharge pour markers et legend</nom> |
||||
<!-- Surcharge GIS --> |
||||
|
||||
<auteur lien='https://elastick.net'>Anne-lise Martenot</auteur> |
||||
|
||||
<licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL V3</licence> |
||||
|
||||
<necessite nom="gis" compatibilite="[4.50.6;]" /> |
||||
<necessite nom="saisies" compatibilite="[3.2.0;]" /> |
||||
<necessite nom="mots_techniques" compatibilite="[1.0.4;[" /> |
||||
<utilise nom="roles_documents" compatibilite="[1.2.30;[" /> |
||||
<pipeline nom="insert_head_css" inclure="gis_plus_pipelines.php" /> |
||||
<pipeline nom="insert_head" inclure="gis_plus_pipelines.php" /> |
||||
<pipeline nom="header_prive" action="gis_plus_insert_head_css" inclure="gis_plus_pipelines.php" /> |
||||
|
||||
</paquet> |