Changeset 54060 in spip-zone


Ignore:
Timestamp:
Nov 5, 2011, 10:59:50 PM (8 years ago)
Author:
fabrice.albert@…
Message:

Ouverture pour faciliter l'ajout de nouvelles implémentations de cartes : ajout de nouvelles déclarations de possibilités des implémentations, utilisation des ces déclarations pour cacher ou afficher des parties d'interface (comme la recherche par adresse), traitement en interne des icone avec ombrage.
Diverses autres corrections mineures au fil de l'eau.
Passage en version 0.1.3.

Location:
_plugins_/gmap/trunk
Files:
5 added
29 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/gmap/trunk/action/config_bloc_gmap.php

    r52218 r54060  
    2222        $page = rawurldecode(_request('redirect'));
    2323        $page = parametre_url($page, 'configuration', $arg,"&");
    24         $action = charger_fonction('faire_'.$arg, 'configuration');
     24        $action = charger_fonction('faire_'.$arg, 'configuration', true);
    2525        if ($action)
    2626        {
  • _plugins_/gmap/trunk/action/geolocaliser.php

    r52218 r54060  
    3232       
    3333        // Effectuer l'action
    34         $action = charger_fonction('faire_geolocaliser', 'formulaires');
     34        $action = charger_fonction('faire_geolocaliser', 'formulaires', true);
    3535        if ($action)
    3636        {
  • _plugins_/gmap/trunk/base/gmap_install.php

    r52218 r54060  
    2626               
    2727        // Initialiser le paramétrage par défaut de l'API
    28         $iniAPI = charger_fonction('init_api', 'configuration');
     28        $iniAPI = charger_fonction('init_api', 'configuration', true);
    2929        if ($iniAPI)
    3030                $iniAPI();
    3131       
    3232        // Initialiser les zones autorisées
    33         $iniRUB = charger_fonction('init_rubgeo', 'configuration');
     33        $iniRUB = charger_fonction('init_rubgeo', 'configuration', true);
    3434        if ($iniRUB)
    3535                $iniRUB();
    3636               
    3737        // Initialiser l'interface dans toutes les APIs
    38         $iniUI = charger_fonction('init_map_defaults', 'configuration');
     38        $iniUI = charger_fonction('init_map_defaults', 'configuration', true);
    3939        if ($iniUI)
    4040                $iniUI();
    41         $iniMarkersUI = charger_fonction('init_markers_behavior', 'configuration');
     41        $iniMarkersUI = charger_fonction('init_markers_behavior', 'configuration', true);
    4242        if ($iniMarkersUI)
    4343                $iniMarkersUI();
  • _plugins_/gmap/trunk/configuration/faire_map_defaults.php

    r52218 r54060  
    2525       
    2626        // Charger ce qui est spécifique à l'implémentation
    27         $faire_map_defaults = charger_fonction("faire_map_defaults", "mapimpl/".$api."/prive");
    28         $msg = $faire_map_defaults();
     27        $faire_map_defaults = charger_fonction("faire_map_defaults", "mapimpl/".$api."/prive", true);
     28        if ($faire_map_defaults)
     29                $msg = $faire_map_defaults();
    2930       
    3031        // Position par défaut
  • _plugins_/gmap/trunk/configuration/faire_markers_behavior.php

    r52218 r54060  
    2525       
    2626        // Charger ce qui est spécifique à l'implémentation
    27         $faire_markers_behavior = charger_fonction("faire_markers_behavior", "mapimpl/".$api."/prive");
     27        $faire_markers_behavior = charger_fonction("faire_markers_behavior", "mapimpl/".$api."/prive", true);
    2828        if ($faire_markers_behavior)
    2929                $msg = $faire_markers_behavior();
  • _plugins_/gmap/trunk/configuration/init_map_defaults.php

    r52218 r54060  
    2727               
    2828                // Charger ce qui est spécifique à l'implémentation
    29                 $init_map_defaults = charger_fonction("init_map_defaults", "mapimpl/".$api."/prive");
    30                 $init_map_defaults();
     29                $init_map_defaults = charger_fonction("init_map_defaults", "mapimpl/".$api."/prive", true);
     30                if ($init_map_defaults)
     31                        $init_map_defaults();
    3132               
    3233                // Position par défaut
  • _plugins_/gmap/trunk/configuration/init_markers_behavior.php

    r52218 r54060  
    2727               
    2828                // Charger ce qui est spécifique à l'implémentation
    29                 $init_markers_behavior = charger_fonction("init_markers_behavior", "mapimpl/".$api."/prive");
     29                $init_markers_behavior = charger_fonction("init_markers_behavior", "mapimpl/".$api."/prive", true);
    3030                if ($init_markers_behavior)
    3131                        $init_markers_behavior();
  • _plugins_/gmap/trunk/configuration/map_defaults.php

    r52218 r54060  
    1818include_spip('inc/gmap_saisie_utils');
    1919
     20function generic_show_map_defaults(&$uiElements, &$getParams)
     21{
     22        $uiElements = '';
     23        $getParams = '
     24// Lire les paramètres de la carte dans les éléments de formulaire
     25function getParams(bIncludeViewport)
     26{
     27        var params = new Object();
     28       
     29        // Position par défaut
     30        if (bIncludeViewport)
     31        {
     32                params["viewLatitude"] = parseFloat(jQuery("#map_center_latitude").val());
     33                params["viewLongitude"] = parseFloat(jQuery("#map_center_longitude").val());
     34                params["viewZoom"] = parseFloat(jQuery("#map_zoom").val());
     35        }
     36       
     37        return params;
     38}
     39';
     40        return true;
     41}
     42
    2043function configuration_map_defaults_dist()
    2144{
     
    3053       
    3154        // Charger ce qui est spécifique à l'implémentation
    32         $show_map_defaults = charger_fonction("show_map_defaults", "mapimpl/".$api."/prive");
     55        $show_map_defaults = charger_fonction("show_map_defaults", "mapimpl/".$api."/prive", true);
    3356        $uiElements = '';
    3457        $getParams = '';
    35         if (!$show_map_defaults($uiElements, $getParams))
    36                 return '';
     58        if (!$show_map_defaults || !$show_map_defaults($uiElements, $getParams))
     59                generic_show_map_defaults($uiElements, $getParams);
    3760
    3861        // Récupération des infos sur le centre
     
    109132                <p id="marker-warning"></p>
    110133                <br class="nettoyeur" />
    111         </div>
    112         <div class="sub-fieldset">
    113                 <p class="label">'._T('gmap:geocoder_label').'</p>' . "\n";
    114         $corps .= gmap_sous_bloc_geocoder("CarteConfig", "setAddress", false);
    115         $corps .= '     </div>
    116 </div></div>
     134        </div>' . "\n";
     135        if (gmap_capability('GeoCoder'))
     136        {
     137                $corps .= '     <div class="sub-fieldset">
     138                        <p class="label">'._T('gmap:geocoder_label').'</p>' . "\n";
     139                $corps .= gmap_sous_bloc_geocoder("CarteConfig", "setAddress", false);
     140                $corps .= '     </div>' . "\n";
     141        }
     142        $corps .= '</div></div>
    117143</fieldset>' . "\n";
    118144
     
    155181        $corps .= $getParams;
    156182        $corps .= '
    157 // Il y a une erreur "undefined" sous IE8, le hack ci-dssous semble règler
    158 // le problème...
    159 var IE8NamespaceHack = document.namespaces;
    160 
    161183// Chargement de la carte et mise en place des gestionnaire d\'évènement
    162184function loadCarteConfig(mapId, divId)
     
    187209                $corps .= '
    188210        // Création du marqueur
    189         updateMarker(mapId, '.$latitude.', '.$longitude.');
     211        updateMarker(mapId, '.$latitude.', '.$longitude.');';
     212        if (gmap_capability('dragmarkers'))
     213        $corps .= '
    190214       
    191215        // Mise en place sur le listener de drop du marqueur
     
    246270}
    247271
    248 
    249 
    250272?>
  • _plugins_/gmap/trunk/configuration/markers_behavior.php

    r52218 r54060  
    3030       
    3131        // Charger ce qui est spécifique à l'implémentation
    32         $show_markers_behavior = charger_fonction("show_markers_behavior", "mapimpl/".$api."/prive");
     32        $show_markers_behavior = charger_fonction("show_markers_behavior", "mapimpl/".$api."/prive", true);
    3333        $code = "";
    3434        if ($show_markers_behavior)
  • _plugins_/gmap/trunk/exec/configurer_gmap.php

    r53465 r54060  
    205205        // Selon l'API, autre paramétrages
    206206        // Cette partie n'est pas en ajax, parce que les autres paramètres en dépendent
    207         $api_conf = charger_fonction('api', 'configuration');
     207        $api_conf = charger_fonction('api', 'configuration', true);
    208208        if ($api_conf)
    209209                echo $api_conf();
    210210
    211211        // Configuration des rubriques géolocalisables
    212         $rubgeo = charger_fonction('rubgeo', 'configuration');
     212        $rubgeo = charger_fonction('rubgeo', 'configuration', true);
    213213        if ($rubgeo)
    214214                echo $rubgeo();
    215215
    216216        // configuration des types de marqueurs et de leurs icônes
    217         $markers = charger_fonction('markers', 'configuration');
     217        $markers = charger_fonction('markers', 'configuration', true);
    218218        if ($markers)
    219219                echo $markers();
    220220       
    221221        // Configuration des rubriques géolocalisables
    222         $eparams = charger_fonction('editparams', 'configuration');
     222        $eparams = charger_fonction('editparams', 'configuration', true);
    223223        if ($eparams)
    224224                echo $eparams();
  • _plugins_/gmap/trunk/exec/configurer_gmap_ui.php

    r53465 r54060  
    107107       
    108108        // Paramétrage du comportement des marqueurs : info-bulles, regroupements...
    109         $markers_behavior = charger_fonction('markers_behavior', 'configuration');
     109        $markers_behavior = charger_fonction('markers_behavior', 'configuration', true);
    110110        if ($markers_behavior)
    111111                echo $markers_behavior();
  • _plugins_/gmap/trunk/formulaires/geolocaliser.php

    r53708 r54060  
    3434'.$mapId.'.createIcons = function(map)
    3535{
    36         map.setIcon("editMarker", '.gmap_definir_parametre_icon(_DIR_PLUGIN_GMAP . 'images/priveEdit.png', NULL, 11, 32, NULL, NULL, 11, 10).');
    37         map.setIcon("activeMarker", '.gmap_definir_parametre_icon(_DIR_PLUGIN_GMAP . 'images/priveActive.png', NULL, 11, 32, NULL, NULL, 11, 10).');
    38         map.setIcon("siblingMarker", '.gmap_definir_parametre_icon(_DIR_PLUGIN_GMAP . 'images/priveSibling.png', NULL, 11, 32, NULL, NULL, 11, 10).');
    39         map.setIcon("activeSiblingMarker", '.gmap_definir_parametre_icon(_DIR_PLUGIN_GMAP . 'images/priveSiblingActive.png', NULL, 11, 32, NULL, NULL, 11, 10).');
    40 };
    41 
    42 // Il y a une erreur "undefined" sous IE8, le hack ci-dssous semble règler
    43 // le problème...
    44 '.$mapId.'.IE8NamespaceHack = document.namespaces;
     36        map.setIcon("editMarker", '.
     37                gmap_definir_parametre_icon(array('file'=>_DIR_PLUGIN_GMAP . 'images/priveEdit.png', 'xAnchor'=>11, 'yAnchor'=>32, 'xOffset'=>11, 'yOffset'=>10),
     38                                                                        array('file'=>_DIR_PLUGIN_GMAP . 'images/priveEdit-full.png', 'xAnchor'=>11, 'yAnchor'=>32)).');
     39        map.setIcon("activeMarker", '.
     40                gmap_definir_parametre_icon(array('file'=>_DIR_PLUGIN_GMAP . 'images/priveActive.png', 'xAnchor'=>11, 'yAnchor'=>32, 'xOffset'=>11, 'yOffset'=>10),
     41                                                                        array('file'=>_DIR_PLUGIN_GMAP . 'images/priveActive-full.png', 'xAnchor'=>11, 'yAnchor'=>32)).');
     42        map.setIcon("siblingMarker", '.
     43                gmap_definir_parametre_icon(array('file'=>_DIR_PLUGIN_GMAP . 'images/priveSibling.png', 'xAnchor'=>11, 'yAnchor'=>32, 'xOffset'=>11, 'yOffset'=>10),
     44                                                                        array('file'=>_DIR_PLUGIN_GMAP . 'images/priveSibling-full.png', 'xAnchor'=>11, 'yAnchor'=>32)).');
     45        map.setIcon("activeSiblingMarker", '.
     46                gmap_definir_parametre_icon(array('file'=>_DIR_PLUGIN_GMAP . 'images/priveSiblingActive.png', 'xAnchor'=>11, 'yAnchor'=>32, 'xOffset'=>11, 'yOffset'=>10),
     47                                                                        array('file'=>_DIR_PLUGIN_GMAP . 'images/priveSiblingActive-full.png', 'xAnchor'=>11, 'yAnchor'=>32)).');
     48};
    4549
    4650// Chargement de la carte et mise en place des gestionnaire d\'évènement
     
    356360                                        row.setMarkerZoom(zoom);
    357361                        }
    358                 });
     362                });';
     363        if (gmap_capability('dragmarkers'))
     364                $parts['script'] .= '
    359365                map.addListener("drop-marker", function(event, id, latitude, longitude)
    360366                {
     
    365371                                '.$mapId.'.updateMarker(row, map, true);
    366372                        }
    367                 });
     373                });';
     374        $parts['script'] .= '
    368375        });
    369376};';
     
    712719       
    713720        // Recherche par géocoder
    714         $parts = gmap_ajoute_geocoder($parts, $mapId);
     721        if (gmap_capability('geocoder'))
     722                $parts = gmap_ajoute_geocoder($parts, $mapId);
    715723       
    716724        // Liste des marqueurs de l'objet
  • _plugins_/gmap/trunk/gmap-info-article.html

    r52218 r54060  
    1717                <p class="soustitre">(#SOUSTITRE|supprimer_tags|texte_backend)</p>][
    1818                <div class="texte">(#INTRODUCTION{200}|supprimer_tags|texte_backend)</div>][
    19                 <div class="signature">[(#DATE|date_iso)], <:par_auteur:> (#LESAUTEURS|supprimer_tags|texte_backend)</div>][
     19                <div class="signature">[(#DATE|affdate_jourcourt)], <:par_auteur:> (#LESAUTEURS|supprimer_tags|texte_backend)</div>][
    2020                <div class="lire"><a href='(#URL_ARTICLE|url_absolue)'[ title='(#TITRE|attribut_html)']>voir en ligne</a></div>]
    2121        </div>
  • _plugins_/gmap/trunk/gmap_options.php

    r52218 r54060  
    1313// parce que l'API Google n'est pas compactée alors que d'autres fichiers le sont et
    1414// se retrouvent donc avant elle dans le fichier final !
     15// À vérifier car le plugin a évolué de telle sorte que toutes les opérations ont
     16// été déportées dans des jQuery(document).ready(), le fait que l'API Google arrive après
     17// ne pose peut-être plus de problème.
    1518define('_INTERDIRE_COMPACTE_HEAD_ECRIRE',true);
    1619
  • _plugins_/gmap/trunk/html/fr/doc-dev/map-events.html

    r53465 r54060  
    1111                <li><b>click-on-marker</b>&nbsp;: clic sur un marqueur, uniquement quand la gestion du clic est positionn&eacute;e &agrave; <i>custom</i> lors de la cr&eacute;ation du marqueur.</li>
    1212                <li><b>dblclick-on-marker</b>&nbsp;: double-clic sur un marqueur.</li>
    13                 <li><b>drop-marker</b>&nbsp;: fin de déplacement d'un marqueur.</li>
     13                <li><b>drop-marker</b>&nbsp;: fin de d&eacute;placement d'un marqueur.</li>
    1414                <li><b>info-window-open</b>&nbsp;: ouverture d'une info-bulle.</li>
    1515                <li><b>zoom</b>&nbsp;: changement du zoom de la carte.</li>
  • _plugins_/gmap/trunk/html/fr/doc/balise-GEOCAPABILITY.html

    r53466 r54060  
    1818        <p>Les valeurs suivantes sont actuellement utilis&eacute;es&nbsp;:</p>
    1919        <ul>
    20                 <li><b>markers</b>&nbsp;: la carte g&egrave;re les marqueurs.</li>
    21                 <li><b>LayerKML</b>&nbsp;: la carte g&egrave;re les fichiers KML.</li>
    22                 <li><b>LayerAuto</b>&nbsp;: la carte g&egrave;re les fichiers KML automatiques comme la couche Wikipedia.</li>
     20                <li><b>markers</b>&nbsp;: gestion des marqueurs (ajout, modification, suppression, affichage ou masquage).</li>
     21                <li><b>infowindows</b>&nbsp;: gestion des bulles d'information quand on clique sur un marqueur (GMap ne permet pas d'afficher des bulles d'information sans lien avec un marqueur).</li>
     22                <li><b>layerkml</b>&nbsp;: affichage des fichiers KML.</li>
     23                <li><b>layerauto</b>&nbsp;: affichage de couches &quot;automatiques&quot;, comme la couche wikipedia de Google Maps V2 (c'est le seul exemple).</li>
     24                <li><b>layeractions</b>&nbsp;: possibilit&eacute; d'afficher ou de masquer les couches KML par script.</li>
     25                <li><b>geocoder</b>&nbsp;: recherche par adresse depuis l'interface de g&eacute;olocalisation.</li>
     26                <li><b>dragmarkers</b>&nbsp;: possibilit&eacute; de d&eacute;placer les marqueurs de l'interface de g&eacute;olocation directement sur la carte.</li>
     27                <li><b>dblclick</b>&nbsp;: gestion des &eacute;v&egrave;nements sur double-clic.</li>
    2328        </ul>
    2429       
  • _plugins_/gmap/trunk/html/fr/doc/index.html

    r53465 r54060  
    2525        <ol>
    2626                <li>Param&eacute;trer un type de repr&eacute;sentation (par exemple pour l'impl&eacute;mentation Google Maps V2, donner une clef d'enregistrement Google), cf. <a href="parametrage.html">param&eacute;trage du plugin</a>.</li>
    27                 <li>Int&eacute;grer une balise <a href="balise-GEOMAP.html">#GEOMAP</a> dans un squelette, ou un modèle <a href="modele-map.html">&lt;map&gt;</a> dans un texte.</li>
     27                <li>Int&eacute;grer une balise <a href="balise-GEOMAP.html">#GEOMAP</a> dans un squelette, ou un mod&egrave;le <a href="modele-map.html">&lt;map&gt;</a> dans un texte.</li>
    2828        </ol>
    2929        <p>Mais le plus int&eacute;ressant sera tout de m&ecirc;me de g&eacute;olocaliser les objets SPIP de votre site.</p>
  • _plugins_/gmap/trunk/inc/gmap_config_utils.php

    r52218 r54060  
    2323        return pipeline('gmap_implementations', $apis);
    2424}
    25  
     25
     26// Test des capacités d'une implémentation de carte
     27function gmap_capability($capability)
     28{
     29        // Spécificités de l'API
     30        $api = gmap_lire_config('gmap_api', 'api', 'gma3');
     31        $capabilities = charger_fonction("capabilities", "mapimpl/".$api."/public", true);
     32        if (!$capabilities)
     33                return false;
     34       
     35        // Renvoyer le test
     36        return $capabilities($capability);
     37}
     38
    2639// Vérifier qu'une valeur est définie
    2740function gmap_config_existe($bloc, $nom)
  • _plugins_/gmap/trunk/inc/gmap_geoloc.php

    r52218 r54060  
    140140
    141141// Définition des paramètres d'une icone
    142 function gmap_definir_parametre_icon($iconFile, $shadowFile = NULL,
    143                                 $xAnchor = NULL, $yAnchor = NULL, $xShadowAnchor = NULL, $yShadowAnchor = NULL,
    144                                 $xOffset = NULL, $yOffset = NULL,
    145                                 $varName = NULL)
    146 {
    147         if ($shadowFile == NULL)
    148                 $shadowFile = _DIR_PLUGIN_GMAP . 'images/shadow.png';
    149                
    150         $imageInfo = @getimagesize($iconFile);
    151         $iconWidth = $imageInfo[0] ? $imageInfo[0] : 32;
    152         $iconHeight = $imageInfo[1] ? $imageInfo[1] : 32;
    153         $imageInfo = @getimagesize($shadowFile);
    154         $shadowWidth = $imageInfo[0] ? $imageInfo[0] : 32;
    155         $shadowHeight = $imageInfo[1] ? $imageInfo[1] : 32;
    156 
     142// Usage :
     143// gmap_definir_parametre_icon(array('file'=>, 'width'=>, 'height'=>, 'xAnchor'=>, 'yAnchor'=>, 'shadowFile'=>, 'widthShadow'=>, 'heightShadow'=>, 'xShadowAnchor'=>, 'yShadowAnchor'=>, 'xOffset'=>, 'yOffset'=>),
     144//      array('file'=>, 'width'=>, 'height'=>, 'xAnchor'=>, 'yAnchor'=>), $varName = null)
     145function gmap_definir_parametre_icon($icon, $complete = null, $varName = null)
     146{
     147        // Récupérer la taille de l'image
     148        if ((!isset($icon['width']) || ($icon['width'] <= 0)) ||
     149                (!isset($icon['height']) || ($icon['height'] <= 0)))
     150        {
     151                $imageInfo = @getimagesize($icon['file']);
     152                $icon['width'] = $imageInfo[0] ? $imageInfo[0] : 32;
     153                $icon['height'] = $imageInfo[1] ? $imageInfo[1] : 32;
     154        }
     155       
     156        // Si l'ombre n'est pas précisée, on suppose que c'est l'image par défaut
     157        if (!$icon['shadowFile'])
     158                $icon['shadowFile'] = _DIR_PLUGIN_GMAP . 'images/shadow.png';
     159        // Récupérer la taille de l'ombre
     160        if ((!isset($icon['widthShadow']) || ($icon['widthShadow'] <= 0)) ||
     161                (!isset($icon['heightShadow']) || ($icon['heightShadow'] <= 0)))
     162        {
     163                $imageInfo = @getimagesize($icon['shadowFile']);
     164                $icon['widthShadow'] = $imageInfo[0] ? $imageInfo[0] : 32;
     165                $icon['heightShadow'] = $imageInfo[1] ? $imageInfo[1] : 32;
     166        }
     167
     168        // Sortie
    157169        $out = "";
    158170        if ($varName)
    159171                $out .= 'var '.$varName.' = '; 
    160         $out .= '{
    161                 urlIconFile: "'.$iconFile.'",
    162                 urlShadowFile: "'.$shadowFile.'",
    163                 widthIcon: '.$iconWidth.',
    164                 heightIcon: '.$iconHeight.',
    165                 widthShadow: '.$shadowWidth.',
    166                 heightShadow: '.$shadowHeight.',';
    167         if ($xAnchor != NULL)
     172        $out .= '{';
     173       
     174        // Icone normale
     175        $out .= '
     176                urlIconFile: "'.$icon['file'].'",
     177                widthIcon: '.$icon['width'].',
     178                heightIcon: '.$icon['height'].',';
     179        if ($icon['xAnchor'] != null)
    168180                $out .= '
    169                 anchorX: '.$xAnchor.',';
    170         if ($yAnchor != NULL)
     181                anchorX: '.$icon['xAnchor'].',';
     182        if ($icon['yAnchor'] != null)
    171183                $out .= '
    172                 anchorY: '.$yAnchor.',';
    173         if ($xShadowAnchor != NULL)
     184                anchorY: '.$icon['yAnchor'].',';
     185
     186        // Ombre
     187        $out .= '
     188                urlShadowFile: "'.$icon['shadowFile'].'",
     189                widthShadow: '.$icon['widthShadow'].',
     190                heightShadow: '.$icon['heightShadow'].',';
     191        if ($icon['xShadowAnchor'] != null)
    174192                $out .= '
    175                 anchorShadowX: '.$xShadowAnchor.',';
    176         if ($yShadowAnchor != NULL)
     193                anchorShadowX: '.$icon['xShadowAnchor'].',';
     194        if ($icon['yShadowAnchor'] != null)
    177195                $out .= '
    178                 anchorShadowY: '.$yShadowAnchor.',';
    179         if ($xOffset != NULL)
     196                anchorShadowY: '.$icon['yShadowAnchor'].',';
     197               
     198        // Image complete, avec l'ombre
     199        if ($complete != null)
     200        {
     201                if ((!isset($complete['width']) || ($complete['width'] <= 0)) ||
     202                        (!isset($complete['height']) || ($complete['height'] <= 0)))
     203                {
     204                        $imageInfo = @getimagesize($complete['file']);
     205                        $complete['width'] = $imageInfo[0] ? $imageInfo[0] : 32;
     206                        $complete['height'] = $imageInfo[1] ? $imageInfo[1] : 32;
     207                }
    180208                $out .= '
    181                 popupOffsetX: '.$xOffset.',';
    182         if ($yOffset != NULL)
     209                urlCompleteFile: "'.$complete['file'].'",
     210                widthComplete: '.$complete['width'].',
     211                heightComplete: '.$complete['height'].',';
     212                if ($complete['xAnchor'] != null)
     213                        $out .= '
     214                anchorCompleteX: '.$complete['xAnchor'].',';
     215                if ($complete['yAnchor'] != null)
     216                        $out .= '
     217                anchorCompleteY: '.$complete['yAnchor'].',';
     218        }
     219       
     220        // Offset pour l'info bulle (un seul, sur l'icone normale)
     221        if ($icon['xOffset'] != null)
    183222                $out .= '
    184                 popupOffsetY: '.$yOffset.',';
     223                popupOffsetX: '.$icon['xOffset'].',';
     224        if ($icon['yOffset'] != null)
     225                $out .= '
     226                popupOffsetY: '.$icon['yOffset'].',';
     227               
    185228        $out .= '
    186229        }';
     
    499542
    500543// Fonctions permettant de récupérer l'info d'une liste d'icones
    501 function gmap_get_icon($icons, $bSelected)
    502 {
    503         $iconExact = null;
    504         $iconComplete = null;
    505         foreach ($icons as $icon)
    506         {
    507                 if (isset($icon['state']) && ((($icon['state'] === "selected") ? TRUE : FALSE) !== $bSelected))
    508                         continue;
    509                 if (!isset($icon['type']) || ($icon['type'] === "simple"))
    510                         $iconExact = $icon;
    511                 else if (isset($icon['type']) && ($icon['type'] === "complete"))
    512                         $iconComplete = $icon;
    513         }
    514         if ($iconExact)
    515                 return $iconExact;
    516         else
    517                 return $iconComplete;
    518 }
    519 function gmap_get_icon_full($icons, $bSelected)
     544function gmap_get_icon($icons, $bSelected = FALSE, $bComplete = FALSE)
    520545{
    521546        if (!$icons)
     
    539564                }
    540565        }
    541         if ($iconSimple)
    542                 return array(find_in_path($iconSimple['image']), $iconShadow ? find_in_path($iconShadow['image']) : "",
    543                                                 $iconSimple['xAnchor'], $iconSimple['yAnchor'], $iconSimple['xShadowAnchor'], $iconSimple['yShadowAnchor'],
    544                                                 $iconSimple['xOffset'], $iconSimple['yOffset']);
    545         else if ($iconComplete)
    546                 return array(find_in_path($iconComplete['image']), "",
    547                                                 $iconComplete['xAnchor'], $iconComplete['yAnchor'], $iconComplete['xShadowAnchor'], $iconComplete['yShadowAnchor'],
    548                                                 $iconComplete['xOffset'], $iconComplete['yOffset']);
     566        if ($bComplete === TRUE)
     567        {
     568                if ($iconComplete)
     569                        return array('file'=>find_in_path($iconComplete['image']),
     570                                                        'width'=>$iconComplete['cxSize'], 'height'=>$iconComplete['cySize'],
     571                                                        'xAnchor'=>$iconComplete['xAnchor'], 'yAnchor'=>$iconComplete['yAnchor']);
     572                else if ($iconSimple)
     573                        return array('file'=>find_in_path($iconSimple['image']),
     574                                                        'width'=>$iconSimple['cxSize'], 'height'=>$iconSimple['cySize'],
     575                                                        'xAnchor'=>$iconSimple['xAnchor'], 'yAnchor'=>$iconSimple['yAnchor']);
     576                else
     577                        return null;
     578        }
    549579        else
    550                 return null;
     580        {
     581                if ($iconSimple && $iconShadow)
     582                        return array('file'=>find_in_path($iconSimple['image']), 'width'=>$iconSimple['cxSize'], 'height'=>$iconSimple['cySize'], 'xAnchor'=>$iconSimple['xAnchor'], 'yAnchor'=>$iconSimple['yAnchor'],
     583                                                'shadowFile'=>($iconShadow ? find_in_path($iconShadow['image']) : ""), 'widthShadow'=>$iconShadow['cxSize'], 'heightShadow'=>$iconShadow['cySize'], 'xShadowAnchor'=>$iconShadow['xAnchor'], 'yShadowAnchor'=>$iconShadow['yAnchor'],
     584                                                'xOffset'=>$iconSimple['xOffset'], 'yOffset'=>$iconSimple['yOffset']);
     585                else if ($iconComplete)
     586                        return array('file'=>find_in_path($iconComplete['image']), 'xAnchor'=>$iconComplete['xAnchor'], 'yAnchor'=>$iconComplete['yAnchor'],
     587                                                'xOffset'=>$iconComplete['xOffset'], 'yOffset'=>$iconComplete['yOffset']);
     588                else if ($iconSimple)
     589                        return array('file'=>find_in_path($iconSimple['image']), 'width'=>$iconSimple['cxSize'], 'height'=>$iconSimple['cySize'], 'xAnchor'=>$iconSimple['xAnchor'], 'yAnchor'=>$iconSimple['yAnchor'],
     590                                                'xOffset'=>$iconSimple['xOffset'], 'yOffset'=>$iconSimple['yOffset']);
     591                else
     592                        return null;
     593        }
    551594}
    552595
     
    556599        // Récupérer la définition de l'icone
    557600        $icons = gmap_parse_icone_def_file($defFile);
    558         $icon = gmap_get_icon_full($icons, FALSE);
    559         $selected = gmap_get_icon_full($icons, TRUE);
     601        $icon = gmap_get_icon($icons, FALSE, FALSE);
     602        $selected = gmap_get_icon($icons, TRUE, FALSE);
    560603        if (!$icon)
    561604                return "";
    562        
     605
     606        // Ajout des icones complètes
     607        $complete = gmap_get_icon($icons, FALSE, TRUE);
     608        $completeSelected = gmap_get_icon($icons, TRUE, TRUE);
     609        if (!$complete)
     610                $complete = array(0=>NULL, NULL, NULL);
     611        if (!$completeSelected)
     612                $completeSelected = $complete;
     613               
    563614        // Créer les icones
    564615        $cmd = "";
    565         $cmd .= '       '.$map.'.setIcon("'.$name.'", '.gmap_definir_parametre_icon($icon[0], $icon[1], $icon[2], $icon[3], $icon[4], $icon[5], $icon[6], $icon[7]).');' . "\n";
     616        $cmd .= '       '.$map.'.setIcon("'.$name.'", '.gmap_definir_parametre_icon($icon, $complete).');' . "\n";
    566617        if ($selected)
    567                 $cmd .= '       '.$map.'.setIcon("'.$name.'_sel", '.gmap_definir_parametre_icon($selected[0], $selected[1], $selected[2], $selected[3], $selected[4], $selected[5], $selected[6], $selected[7]).');' . "\n";
     618                $cmd .= '       '.$map.'.setIcon("'.$name.'_sel", '.gmap_definir_parametre_icon($selected, $completeSelected).');' . "\n";
    568619        else
    569                 $cmd .= '       '.$map.'.setIcon("'.$name.'_sel", '.gmap_definir_parametre_icon($icon[0], $icon[1], $icon[2], $icon[3], $icon[4], $icon[5], $icon[6], $icon[7]).');' . "\n";
     620                $cmd .= '       '.$map.'.setIcon("'.$name.'_sel", '.gmap_definir_parametre_icon($icon, $completeSelected).');' . "\n";
    570621       
    571622        return $cmd;
     
    737788        jQuery("#gmap_cont'.$mapId.'").after(waitBlock);
    738789        var bWaitToBeDeleted = true;
    739 
    740         // Récupérer de la carte
     790       
     791        // Récupérer la carte
    741792        var map = MapWrapper.getMap("gmap_map'.$mapId.'", true);
    742793        if (!isObject(map))
     
    754805        mapParams'.$mapId.'.handleResize = true;
    755806        if (!map.load("gmap_cont'.$mapId.'", mapParams'.$mapId.'))
     807        {
     808                if (bWaitToBeDeleted)
     809                        jQuery("#gmap_attente'.$mapId.'").remove();
    756810                return false;
     811        }
    757812';
    758813
     
    9531008function gmap_teste_capability($capability)
    9541009{
    955         // Spécificités de l'API
    956         $api = gmap_lire_config('gmap_api', 'api', 'gma3');
    957         $capabilities = charger_fonction("capabilities", "mapimpl/".$api."/public");
    958        
    959         // Renvoyer le test
    960         return $capabilities($capability);
     1010        return gmap_capability($capability);
    9611011}
    9621012
  • _plugins_/gmap/trunk/inc/gmap_saisie_privee.php

    r52218 r54060  
    3131       
    3232        // Modification de la géolocalisation
    33         $formulaire = charger_fonction('geolocaliser', 'formulaires');
     33        $formulaire = charger_fonction('geolocaliser', 'formulaires', true);
    3434        if ($formulaire)
    3535                $flux .= $formulaire($id, $table, $exec, $deplie);
  • _plugins_/gmap/trunk/inc/gmap_script_init.php

    r52218 r54060  
    6161        SiteInfo.defaultShadow = "' . $imageFile . '";
    6262        SiteInfo.defaultShadowWidth = '.$imageWidth.';
    63         SiteInfo.defaultShadowHeight = '.$imageHeight.';'."\n";
    64         $out .= '//]]>'."\n".'</script>'."\n";
     63        SiteInfo.defaultShadowHeight = '.$imageHeight.';';
     64        $imageFile = _DIR_PLUGIN_GMAP . "images/marker-full.png";
     65        $imageInfo = @getimagesize($imageFile);
     66        $imageWidth = $imageInfo[0] ? $imageInfo[0] : 32;
     67        $imageHeight = $imageInfo[1] ? $imageInfo[1] : 32;
     68        $out .= '
     69        SiteInfo.defaultCompleteIcon = "' . $imageFile . '";
     70        SiteInfo.defaultCompleteWidth = '.$imageWidth.';
     71        SiteInfo.defaultCompleteHeight = '.$imageHeight.';';
     72        $out .= '
     73// Il y a une erreur "undefined" sous IE, pour GoogleMaps et Yahoo, faire un appel précoce à document.namespaces semble règler le problème...
     74var IE8NamespaceHack = document.namespaces;';
     75        $out .= "\n".'//]]>'."\n".'</script>'."\n";
    6576
    6677        return $out;
  • _plugins_/gmap/trunk/javascript/gmap_public.js

    r52218 r54060  
    227227                        else if (name == "gmm:iconShort")
    228228                        {
    229                                 iconCurrent = icon;
    230229                                if (attrs['state'] == "selected")
    231230                                        iconCurrent = iconSel;
     231                                else
     232                                        iconCurrent = icon;
    232233                                if (attrs['type'] == "shadow")
    233234                                {
    234                                         icon['urlShadowFile'] = attrs['url'];
    235                                         icon['widthShadow'] = parseInt(attrs['cxSize']);
    236                                         icon['heightShadow'] = parseInt(attrs['cySize']);
    237                                         iconSel['urlShadowFile'] = attrs['url'];
    238                                         iconSel['widthShadow'] = parseInt(attrs['cxSize']);
    239                                         iconSel['heightShadow'] = parseInt(attrs['cySize']);
     235                                        iconCurrent['urlShadowFile'] = attrs['url'];
     236                                        iconCurrent['widthShadow'] = parseInt(attrs['cxSize']);
     237                                        iconCurrent['heightShadow'] = parseInt(attrs['cySize']);
     238                                        iconCurrent['urlShadowFile'] = attrs['url'];
     239                                        iconCurrent['widthShadow'] = parseInt(attrs['cxSize']);
     240                                        iconCurrent['heightShadow'] = parseInt(attrs['cySize']);
    240241                                        iconCurrent['anchorShadowX'] = parseInt(attrs['xAnchor']);
    241242                                        iconCurrent['anchorShadowY'] = parseInt(attrs['yAnchor']);
    242243                                }
    243                                 else if (attrs['type'] != "complete")
     244                                else if (attrs['type'] == "complete")
     245                                {
     246                                        iconCurrent['urlCompleteFile'] = attrs['url'];
     247                                        iconCurrent['widthComplete'] = parseInt(attrs['cxSize']);
     248                                        iconCurrent['heightComplete'] = parseInt(attrs['cySize']);
     249                                        iconCurrent['anchorCompleteX'] = parseInt(attrs['xAnchor']);
     250                                        iconCurrent['anchorCompleteY'] = parseInt(attrs['yAnchor']);
     251                                }
     252                                else
    244253                                {
    245254                                        iconCurrent['urlIconFile'] = attrs['url'];
     
    249258                                        iconCurrent['anchorY'] = parseInt(attrs['yAnchor']);
    250259                                }
    251                                 iconCurrent['popupOffsetX'] = parseInt(attrs['xOffset']);
    252                                 iconCurrent['popupOffsetY'] = parseInt(attrs['yOffset']);
    253                                 iconCurrent = null;
     260                                if (attrs['xOffset'] && attrs['yOffset'])
     261                                {
     262                                        iconCurrent['popupOffsetX'] = parseInt(attrs['xOffset']);
     263                                        iconCurrent['popupOffsetY'] = parseInt(attrs['yOffset']);
     264                                }
     265                                iconCurrent = null; // C'est le pointeur, on a rempli icon ou iconSel
    254266                        }
    255267                        else if (name == "gmm:image")
  • _plugins_/gmap/trunk/mapimpl/gma2/javascript/gmap_impl_public.js

    r52218 r54060  
    599599
    600600        // Fonctions de conversion entre lat/lng et pixel
    601         fromLatLngToPixel: function(latlng)
     601        _fromLatLngToPixel: function(latlng)
    602602        {
    603603                var mapType = isObject(this.map) ? this.map.getCurrentMapType() : null;
     
    608608                        return new GPoint(0, 0);
    609609        },
    610         fromPixelToLatLng: function(point)
     610        _fromPixelToLatLng: function(point)
    611611        {
    612612                var mapType = isObject(this.map) ? this.map.getCurrentMapType() : null;
     
    967967        {
    968968                var mapPosition = marker.getLatLng();
    969                 var pixPosition = this.fromLatLngToPixel(mapPosition);
     969                var pixPosition = this._fromLatLngToPixel(mapPosition);
    970970                var pixUpLeft = new GPoint(
    971971                        pixPosition.x - marker.extraData.infoWindowAttractionSize.width,
    972972                        pixPosition.y - marker.extraData.infoWindowAttractionSize.height);
    973                 var mapUpLeft = this.fromPixelToLatLng(pixUpLeft);
     973                var mapUpLeft = this._fromPixelToLatLng(pixUpLeft);
    974974                var pixBottomRight = new GPoint(
    975975                        pixPosition.x + marker.extraData.infoWindowAttractionSize.width,
    976976                        pixPosition.y + marker.extraData.infoWindowAttractionSize.height);
    977                 var mapBottomRight = this.fromPixelToLatLng(pixBottomRight);
     977                var mapBottomRight = this._fromPixelToLatLng(pixBottomRight);
    978978                return new GLatLngBounds(
    979979                        new GLatLng(mapBottomRight.lat(), mapUpLeft.lng()),
     
    12561256                this.map.removeOverlay(layer);
    12571257                this.layers[id] = null;
    1258                 delete marker;
    1259                 delete this.markers[id];
     1258                delete layer;
     1259                delete this.layers[id];
    12601260               
    12611261                return true;
  • _plugins_/gmap/trunk/mapimpl/gma2/public/capabilities.php

    r52218 r54060  
    1616$GLOBALS['gma2_capabilities'] = array(
    1717                "markers",
    18                 "LayerKML",
    19                 "LayerAuto",
     18                "infowindows",
     19                "layerkml",
     20                "layerauto",
     21                "layeractions",
     22                "geocoder",
     23                "dragmarkers",
     24                "dblclick",
    2025        );
    2126
     
    2328function mapimpl_gma2_public_capabilities_dist($capability)
    2429{
    25         return in_array($capability, $GLOBALS['gma2_capabilities']);
     30        return in_array(strtolower($capability), $GLOBALS['gma2_capabilities']);
    2631}
    2732
  • _plugins_/gmap/trunk/mapimpl/gma3/javascript/gmap_impl_public.js

    r52218 r54060  
    498498        // Ajout des listeners
    499499        // click-on-map = clic souris sur la carte -> function(event, latlng)
    500         // clic-on-point = clic sur un marqueur
    501         // drag-point = déplacement d'un marqueur -> function(event, zoom)
     500        // clic-on-marker = clic sur un marqueur
     501        // drag-marker = déplacement d'un marqueur -> function(event, zoom)
    502502        addListener: function(event, listener)
    503503        {
     
    716716       
    717717        // Fonctions de conversion entre lat/lng et pixel
    718         fromLatLngToPixel: function(latlng)
     718        _fromLatLngToPixel: function(latlng)
    719719        {
    720720                var proj = isObject(this.fakeOverlay) ? this.fakeOverlay.getProjection() : null;
     
    740740                }
    741741        },
    742         fromPixelToLatLng: function(point)
     742        _fromPixelToLatLng: function(point)
    743743        {
    744744                var proj = isObject(this.fakeOverlay) ? this.fakeOverlay.getProjection() : null;
     
    964964        },
    965965       
    966         // Mise à jour des handlers d'évèements
     966        // Mise à jour des handlers d'évènements
    967967        _updateEventHandlers: function(marker, params)
    968968        {
     
    11401140        {
    11411141                var mapPosition = marker.getPosition();
    1142                 var pixPosition = this.fromLatLngToPixel(mapPosition);
     1142                var pixPosition = this._fromLatLngToPixel(mapPosition);
    11431143                var pixUpLeft = new google.maps.Point(
    11441144                        pixPosition.x - marker.extraData.infoWindowAttractionSize.width,
    11451145                        pixPosition.y - marker.extraData.infoWindowAttractionSize.height);
    1146                 var mapUpLeft = this.fromPixelToLatLng(pixUpLeft);
     1146                var mapUpLeft = this._fromPixelToLatLng(pixUpLeft);
    11471147                var pixBottomRight = new google.maps.Point(
    11481148                        pixPosition.x + marker.extraData.infoWindowAttractionSize.width,
    11491149                        pixPosition.y + marker.extraData.infoWindowAttractionSize.height);
    1150                 var mapBottomRight = this.fromPixelToLatLng(pixBottomRight);
     1150                var mapBottomRight = this._fromPixelToLatLng(pixBottomRight);
    11511151                return new google.maps.LatLngBounds(
    11521152                        new google.maps.LatLng(mapBottomRight.lat(), mapUpLeft.lng()),
     
    13931393                layer.setMap(null);
    13941394                this.layers[id] = null;
    1395                 delete marker;
    1396                 delete this.markers[id];
     1395                delete layer;
     1396                delete this.layers[id];
    13971397               
    13981398                return true;
  • _plugins_/gmap/trunk/mapimpl/gma3/public/capabilities.php

    r52218 r54060  
    1616$GLOBALS['gma3_capabilities'] = array(
    1717                "markers",
    18                 "LayerKML",
     18                "infowindows",
     19                "layerkml",
     20//              "layerauto",            => non
     21                "layeractions",
     22                "geocoder",
     23                "dragmarkers",
     24                "dblclick",
    1925        );
    2026
     
    2228function mapimpl_gma3_public_capabilities_dist($capability)
    2329{
    24         return in_array($capability, $GLOBALS['gma3_capabilities']);
     30        return in_array(strtolower($capability), $GLOBALS['gma3_capabilities']);
    2531}
    2632
  • _plugins_/gmap/trunk/mapimpl/gma3/public/parametre_carte.php

    r52218 r54060  
    1616include_spip('inc/gmap_config_utils');
    1717
    18 // Enregistrement des paramètres passés dans la requête
     18// Paramétrage de la carte selon ce qui est défini dans la partie privée
    1919function mapimpl_gma3_public_parametre_carte_dist($viewport, $params)
    2020{
  • _plugins_/gmap/trunk/modeles/icons_short_marker.html

    r52218 r54060  
    77]<B_icons>
    88<[(#ENV{prefix}):]markers[ id="(#ENV{name})"]>
    9 <BOUCLE_icons(POUR){tableau #ENV{icons}}>[
    10 (#VALEUR|table_valeur{type}|!={complete}|?{" ",""})
     9<BOUCLE_icons(POUR){tableau #ENV{icons}}>
    1110        <[(#ENV{prefix}):]iconShort[ type="(#VALEUR|table_valeur{type})"][ state="(#VALEUR|table_valeur{state})"][ url="(#URL_FICHIER{#VALEUR|table_valeur{image}}|url_absolue)"][ cxSize="(#VALEUR|table_valeur{cxSize})"][ cySize="(#VALEUR|table_valeur{cySize})"][ xAnchor="(#VALEUR|table_valeur{xAnchor})"][ yAnchor="(#VALEUR|table_valeur{yAnchor})"][ xOffset="(#VALEUR|table_valeur{xOffset})"][ yOffset="(#VALEUR|table_valeur{yOffset})"] />
    12 ]</BOUCLE_icons>
     11</BOUCLE_icons>
    1312</[(#ENV{prefix}):]markers>
    1413</B_icons>
  • _plugins_/gmap/trunk/plugin.xml

    r53556 r54060  
    11<plugin>
    22        <nom>G&#233;olocalisation et cartographie</nom>
    3         <icon>images/logo-gmap-32.png</icon>
    4         <version>0.1.2</version>
     3        <icon>images/logo-gmap.png</icon>
     4        <version>0.1.3</version>
    55        <version_base>1.0.0</version_base>
    66        <etat>test</etat>
     
    7676        <necessite id="SPIP" version="[2.0.9;2.1.99]" />
    7777        <necessite id="spip_bonux" version="[1.8.1;]" />
     78        <utilise id="medias" version="[1.6.2;]" />
    7879       
    7980</plugin>
Note: See TracChangeset for help on using the changeset viewer.