Changeset 53606 in spip-zone


Ignore:
Timestamp:
Oct 18, 2011, 5:07:50 PM (8 years ago)
Author:
rastapopoulos@…
Message:

Et hop une nouvelle #SAISIE : une carte cliquable, qui ne constitue pas à proprement parler un champ, mais qui sait pré-remplir d'autres champs qu'on lui passe en paramètre (mais définis par défaut donc on peut s'en passer) : lat, lon, adresse, code_postal, ville, region, pays

Du coup on utilise cette saisie dans editer_gis, et à priori ça marche. À confirmer quand même. :)

Et du coup on peut utiliser cette saisie dans d'autres formulaires, évidemment...

Location:
_plugins_/gis/trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/gis/trunk/formulaires/editer_gis.html

    r52466 r53606  
    11#CACHE{0}
    2 <div id="map_[(#ENV{objet})]_[(#ENV{id_objet})]" name="formMap" class="formMap" style="width: 100%; height: 350px"></div>
    3 <script type="text/javascript">
    4 <!--
    5 var form_map;
    6 var annuler_geocoder = 0;
    7 [(#ENV{recherhce}|!={non}|oui|et{#CONFIG{gis/geocoder}|oui})
    8 [(#SET{geocoder,oui})]
    9 var geocoder;]
    10 
    11 (function($){
    12        
    13         var maj_inputs = function(map,data,action) {
    14                 [(#GET{geocoder}|oui)
    15                 if (action != 'geocoding') {
    16                         var f = geocoder.geocode(data);
    17                 }]
    18                 var zoom = map.getZoom();
    19                 $("#champ_zoom").val(zoom);
    20                 if(action == 'click'){
    21                         $("#champ_lat").val(data.lat);
    22                         $("#champ_lon").val(data.lon);
    23                         annuler_geocoder = 1;
    24                         form_map.setCenter(data);
    25                         marker = new mxn.Marker(data);
    26                 }
    27                 else if(annuler_geocoder != 1){
    28                         if(data.point == 'undefined'){
    29                                 $("#champ_lat").val(data.lat);
    30                                 $("#champ_lon").val(data.lon);
    31                                 form_map.setCenter(data);
    32                                 marker = new mxn.Marker(data);
    33                         }else{
    34                                 $("#champ_lat").val(data.point.lat);
    35                                 $("#champ_lon").val(data.point.lon);
    36                                 form_map.setCenter(data.point);
    37                                 marker = new mxn.Marker(data.point);
    38                         }
    39                 }
    40                 form_map.removeAllMarkers();
    41                 form_map.addMarker(marker);
    42         }
    43        
    44         [(#GET{geocoder}|oui)
    45         function geocode(query) {
    46                 $('#champ_adresse').val(query.street);
    47                 $('#champ_code_postal').val(query.postcode);
    48                 $('#champ_ville').val(query.locality);
    49                 $('#champ_region').val(query.region);
    50                 $('#champ_pays').val(query.country);
    51                 maj_inputs(form_map,query,'geocoding');
    52         }]
    53        
    54         var init_map = function() {
    55                 // creer la carte
    56                 var map_container = 'map_[(#ENV{objet})]_[(#ENV{id_objet})]';
    57                 form_map = new mxn.Mapstraction(map_container,'[(#REM|gis_api_utilisee)]');
    58                 form_map.setCenterAndZoom(new mxn.LatLonPoint(#ENV{lat,#CONFIG{gis/lat,0}},#ENV{lon,#CONFIG{gis/lon,0}}),#ENV{zoom,#CONFIG{gis/zoom,0}});
    59                 form_map.addControls({
    60                         pan: true,
    61                         zoom: '#CONFIG{gis/control,large}',
    62                         map_type: true
    63                 });
    64                
    65                 [(#GET{geocoder}|oui)
    66                 // geocoder
    67                 geocoder = new mxn.Geocoder('[(#REM|gis_api_utilisee)]',geocode);]
    68                
    69                 [(#ENV{lat}|oui)
    70                 var data = {
    71                         "type": "FeatureCollection",
    72                         "features": [(#VAL{91}|chr)]
    73                                 {"type": "Feature",
    74                                         "geometry": {"type": "Point", "coordinates": [(#VAL{91}|chr)]#LON, #LAT[(#VAL{93}|chr)]},
    75                                         "id":"#ID_GIS",
    76                                         "title":[(#TITRE|supprimer_numero|json_encode)],
    77                                         "description":[(#DESCRIPTIF|json_encode)][,(#LOGO_GIS|oui)
    78                                         [(#SET{logo_doc,#LOGO_GIS|image_passe_partout{32,32}|image_recadre{32,32}})]
    79                                         #SET{icon_w,#GET{logo_doc}|extraire_attribut{src}|largeur}
    80                                         #SET{icon_h,#GET{logo_doc}|extraire_attribut{src}|hauteur}
    81                                         ["icon": (#GET{logo_doc}|extraire_attribut{src}|url_absolue|json_encode)],
    82                                         "icon_size": [(#VAL{91}|chr)]#GET{icon_w},#GET{icon_h}[(#VAL{93}|chr)]],
    83                                         "icon_anchor": [(#VAL{91}|chr)][(#GET{icon_w}|div{2})],[(#GET{icon_h})][(#VAL{93}|chr)]
    84                                 }[(#VAL{93}|chr)]
    85                 }
    86                 form_map.addJSON(data);]
    87                
    88                 // mettre a jour les coordonnees quand on clique la carte
    89                 form_map.click.addHandler(function(name, source, args) {
    90                         annuler_geocoder = 0;
    91                         var pos = args.location;
    92                         maj_inputs(form_map,pos,'click');
    93                 });
    94                
    95                 // mettre à jour le zoom quand on le modifie
    96                 form_map.changeZoom.addHandler(function(name, source, args) {
    97                         var zoom = source.getZoom();
    98                         $("#champ_zoom").val(zoom);
    99                 });
    100                
    101                 [(#GET{geocoder}|oui)
    102                 // geocoder si clic...
    103                 $('a#rechercher').css("cursor","pointer").click(function(){
    104                         var address = {};
    105                         address.address = $("#champ_geocoder").attr("value");
    106                         annuler_geocoder = 0;
    107                         geocoder.geocode(address);
    108                 });
    109 
    110                 // ne pas soumettre le formulaire si on presse Entree depuis le champ de recherche
    111                 $('#champ_geocoder').keypress(function(e){
    112                         if (e.which == 13) {
    113                                 $('a#rechercher').trigger("click");
    114                                 return false;
    115                         }
    116                 });]
    117                 [(#ENV{id_gis}|non|ou{#ENV{id_gis}|=={oui}}|et{#CONFIG{gis/geolocaliser_user_html5}|=={on}}|oui)
    118                 gis_get_navigator_location(form_map,#ENV{zoom,#CONFIG{gis/zoom,0}});]
    119         };
    120 
    121         $(function(){
    122                 init_map();
    123                 [(#ENV{ajaxload}|!={non}|oui)onAjaxLoad(init_map);]
    124         });
    125        
    126 })(jQuery);
    127 -->
    128 </script>
    1292<div class="formulaire_spip formulaire_editer formulaire_editer_gis">
    1303        <!-- br class='spacer' / -->
    1314        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
    1325        [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
    133         [(#ENV{editable})
     6        <BOUCLE_editable(CONDITION){si #ENV{editable}}>
    1347        <form method='post' action='#ENV{action}' enctype='multipart/form-data' name='formulaire_editer_gis' id='formulaire_editer_gis'><div>
    1358                [(#REM) declarer les hidden qui declencheront le service du formulaire
     
    13912                        [(#SAISIE{hidden,objet})]
    14013                        [(#SAISIE{hidden,id_objet})]
    141                         [(#GET{geocoder}|oui)
    142                         <li class="rechercher_adresse">
    143                                 <label for="champ_geocoder"><:gis:label_rechercher_address:></label>
    144                                 <input type="text" class="text" name="champ_geocoder" id="champ_geocoder" value="" />
    145                                 <a id="rechercher"><:info_rechercher:></a>
    146                         </li>]
     14                        [(#SAISIE{carte,editer_gis_#ENV{id_gis},env})]
    14715                        [(#SAISIE{input,lat,
    14816                                label=<:gis:lat:>,
     
    18553                </p>
    18654        </div></form>
    187         ]
     55        </BOUCLE_editable>
    18856</div>
  • _plugins_/gis/trunk/gis_pipelines.php

    r53569 r53606  
    11<?php
     2
     3function gis_saisies_autonomes($flux){
     4        $flux[] = 'carte';
     5        return $flux;
     6}
    27
    38function gis_inserer_javascript($flux){
  • _plugins_/gis/trunk/paquet.xml

    r53569 r53606  
    22        prefix="gis"
    33        categorie="divers"
    4         version="3.0.10"
     4        version="3.1.0"
    55        schema="2.0.2"
    66        etat="dev"
     
    1515        <auteur>b_b</auteur>
    1616        <auteur>kent1</auteur>
     17        <auteur lien="http://www.ldd.fr">Les Développements Durables</auteur>
    1718        <copyright>2011</copyright>
    1819        <licence>GPL v3</licence>
     
    8182                action="gis_configurer_gis_post_traitement"
    8283        />
     84        <pipeline
     85                nom="saisies_autonomes"
     86                inclure="gis_pipelines.php"
     87        />
    8388       
    8489        <menu nom="gis_tous" titre="gis:icone_gis_tous" parent="menu_edition" icone="images/gis-16.png" />
  • _plugins_/gis/trunk/prive/inclure/gis_objet_formulaires.html

    r49660 r53606  
    2828                                // resize + recenter de la map si bloc deplie
    2929                                $('#pave_gis_depliable').bind('deplie', function(e){
    30                                         var container = $('#map_[(#ENV{objet})]_[(#ENV{id_objet})]');
     30                                        var container = $('#map_editer_gis_#ENV{id_gis,oui}');
    3131                                        form_map.resizeTo(container.width(),container.height());
    3232                                        var lat = $("#champ_lat").val();
  • _plugins_/gis/trunk/prive/style_prive_plugin_gis.html

    r49660 r53606  
    2222#page .liste-elements.gis_objet .caption,#page .liste-elements.gis .caption{background-image: url("#CHEMIN{images/gis-24.png}");}
    2323#pave_gis_depliable .formulaire_rechercher_gis{margin:1em 0;}
    24 #pave_gis_depliable .formMap{margin:1em 0 0 0;}
    2524#pave_gis_depliable .formulaire_editer_gis{margin:0 0 1em 0;}
    2625
Note: See TracChangeset for help on using the changeset viewer.