--- /dev/null
+[submodule "www/plugins/spip_carte_de_sites"]
+ path = www/plugins/spip_carte_de_sites
+ url = git@ateliers.heureux-cyclage.org:lhc/web/spip_carte_de_sites
--- /dev/null
+Subproject commit 8a2a8a2dd06eb112db8060b699aa8138efb3defb
+++ /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/dist/leaflet.js}|url_absolue)]" type="text/javascript"></script>
-<script src="[(#CHEMIN{lib/leaflet/plugins/Control.FullScreen.js}|url_absolue)]" type="text/javascript"></script>
-<script src="[(#CHEMIN{lib/leaflet/plugins/leaflet.markercluster-src.js}|url_absolue)]" type="text/javascript"></script>
-
-
-<script>
- <BOUCLE_mots_types(MOTS){type = (#ENV{groupe})}>
- var group_#ID_MOT = new L.markerClusterGroup();
- 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='' width='100%' height='100%'></span>]<h4>#TITRE</h4>[<p>(#DESCRIPTIF|attribut_html)</p>][(#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='' width='100px' height='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_#_mots_types: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 osmfr = new L.TileLayer('https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', {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(osmfr);
- [(#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";"Region";"Pays";"Latitude";"Longitude"
-<BOUCLE_mots(MOTS){type=#ENV{groupe}}><BOUCLE_sites(SITES){id_mot}{gis}>"#_mots:TITRE";"#NOM_SITE";"#TITRE_GIS";"#ADRESSE";"#CODE_POSTAL";"#VILLE";"#REGION";"#PAYS";"#LAT";"#LON"
-</BOUCLE_sites></BOUCLE_mots>
+++ /dev/null
-//Definition des fonds de carte
- var baseMaps = {
- "<:carte_de_sites:vue_osmfr:>": osmfr
- };
-
-//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_osmfr' => 'OSM FR',
-'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_osmfr' => 'OSM FR',
-'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.4.0"
- etat="stable"
- compatibilite="[3.0.0;3.2.*]"
- 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-2017</copyright>
- <licence>GPL v3</licence>
- <necessite nom="gis" compatibilite="[4.43.1;]"/>
-</paquet>