Changeset 99021 in spip-zone


Ignore:
Timestamp:
Jul 28, 2016, 12:08:43 PM (3 years ago)
Author:
kent1@…
Message:

Pas mal de modifs

Location:
_plugins_/cartes/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/cartes/trunk/base/cartes.php

    r97854 r99021  
    104104        );
    105105
     106        $tables['spip_gis']['roles_titres']['label_nohide'] = 'carte:role_label_nohide';
     107        $tables['spip_gis']['roles_objets']['cartes']['choix'][] = 'label_nohide';
    106108        return $tables;
    107109}
  • _plugins_/cartes/trunk/lang/carte_fr.php

    r97854 r99021  
    5252        'retirer_lien_carte' => 'Retirer cette carte',
    5353        'retirer_tous_liens_cartes' => 'Retirer toutes les cartes',
     54        'role_label_nohide' => 'Label toujours visible',
    5455
    5556        // S
  • _plugins_/cartes/trunk/squelettes/carte.html

    r99006 r99021  
    1212        [<meta name="description" content="(#INTRODUCTION{150}|attribut_html)" />]
    1313        [<link rel="canonical" href="(#URL_ARTICLE|url_absolue)" />]
    14         <INCLURE{fond=inclure/head_map} />
     14        <INCLURE{fond=inclure/head_map, lang=#LANG} />
    1515        [(#SET{style,[(#CHEMIN{[css_carte/(#STYLE_CARTE|sinon{carte.css})]})]})]
    1616        [(#SET{js,[js_carte/(#STYLE_CARTE|sinon{carte.js})]})]
  • _plugins_/cartes/trunk/squelettes/css_carte/carte.css

    r98315 r99021  
    265265}
    266266
     267.leaflet-label {
     268        font-family: "noto_kufi", "Helvetica Neue", Arial, Helvetica, sans-serif;
     269        border-width:1px;
     270}
     271
     272.leaflet-label:hover {
     273        color:#fff;
     274        background:rgba(0,0,0,.8);
     275}
    267276.leaflet-label.informatif{
    268277        background:none;
     
    281290        content:none;
    282291}
     292
     293.leaflet-container a.leaflet-popup-close-button {
     294        padding-right:4px;
     295}
  • _plugins_/cartes/trunk/squelettes/js_carte/carte.js

    r99007 r99021  
    4747                                informatifs.forEach(function(e){e.label._updatePosition();})
    4848                        });
     49                        map1.eachLayer(function(layer){
     50                                if (layer.label) {
     51                                        layer.label._updatePosition();
     52                                }
     53                        });
    4954                }
    5055                resizemap(resized);
     56               
    5157        });
    5258
    5359        jQuery('#map1').on('ready',function(e, map){
    5460                var label_bloque = false;
    55                 if(map.options.options && map.options.options.popup == 'control'){
    56                 var info = L.control();
    57                 info.onAdd = function (map) {
    58                         this._div = L.DomUtil.create('div', 'info leaflet-popup-content-wrapper');
    59                         this.update();
    60                         return this._div;
    61                 };
    62 
    63                 // method that we will use to update the control based on feature properties passed
    64                 info.update = function (text) {
    65                         if(typeof text != 'undefined'){
    66                                 L.DomUtil.setOpacity(this._div,1);
     61                if (map.options.options && map.options.options.popup == 'control') {
     62                        var info = L.control();
     63                        info.onAdd = function (map) {
     64                                this._div = L.DomUtil.create('div', 'info leaflet-popup-content-wrapper');
     65                                closeButton = this._closeButton = L.DomUtil.create('a', 'leaflet-popup-close-button', this._div);
     66                                closeButton.href = '#close';
     67                                closeButton.innerHTML = '&#215;';
     68                                L.DomEvent.disableClickPropagation(closeButton);
     69                                L.DomEvent.on(closeButton, 'click', this.close, this);
     70                                this._divcontent = L.DomUtil.create('div', 'leaflet-popup-content', this._div);
     71                                this.update();
     72                                return this._div;
     73                        };
     74
     75                        // method that we will use to update the control based on feature properties passed
     76                        info.update = function (text) {
     77                                if(typeof text != 'undefined'){
     78                                        L.DomUtil.setOpacity(this._div,1);
     79                                }
     80                                else {
     81                                        L.DomUtil.setOpacity(this._div,0);
     82                                }
     83                                this._divcontent.innerHTML = text ? text : '';
     84                        };
     85                       
     86                        info.close = function (e) {
     87                                e.preventDefault();
     88                                this.update();
     89                                return false;
    6790                        }
    68                         else {
    69                                 L.DomUtil.setOpacity(this._div,0);
    70                         }
    71                         this._div.innerHTML = text ? '<div class="leaflet-popup-content">'+text+'</div>' : '';
    72                 };
    73 
    74                 info.addTo(map);
    75                 map.eachLayer(function(layer){
    76                         layer.off('click').on('click',function(e,f){
    77                                 if(layer._popup && layer._popup._content){
    78                                         info.update(layer._popup._content);
    79                                         if (label_bloque && map1._layers[label_bloque] && map1._layers[label_bloque].label) {
    80                                                 options_bloque = map1._layers[label_bloque].label.options;
    81                                                 options_bloque.noHide = false;
    82                                                 layerx = map1._layers[label_bloque];
    83                                                 layerx.options.zIndexOffset = 0;
    84                                                 if (layerx.feature && layerx.feature.properties && (layerx.feature.properties.title || (map.options.langue && layerx.feature.properties['title_'+map.options.langue]))) {
    85                                                         title = (map.options.langue && layerx.feature.properties['title_'+map.options.langue]) || layerx.feature.properties.title;
    86                                                         layerx.unbindLabel().bindLabel(title, options_bloque);
     91
     92                        info.addTo(map);
     93                        map.eachLayer(function(layer){
     94                                layer.off('click').on('click', function(e, f) {
     95                                        if(layer._popup && layer._popup._content){
     96                                                info.update(layer._popup._content);
     97                                                if (label_bloque && map1._layers[label_bloque] && map1._layers[label_bloque].label) {
     98                                                        options_bloque = map1._layers[label_bloque].label.options;
     99                                                        layerx = map1._layers[label_bloque];
     100                                                        layerx.options.zIndexOffset = 0;
     101                                                        if (layerx.feature  && layerx.feature.properties && (!layerx.feature.properties.role || (layerx.feature.properties.role && $.inArray('label_nohide',layerx.feature.properties.role) == -1))) {
     102                                                                options_bloque.noHide = false;
     103                                                        }
     104                                                       
     105                                                        if (layerx.feature && layerx.feature.properties && (layerx.feature.properties.title || (map.options.langue && layerx.feature.properties['title_'+map.options.langue]))) {
     106                                                                title = (map.options.langue && layerx.feature.properties['title_'+map.options.langue]) || layerx.feature.properties.title;
     107                                                                layerx.unbindLabel().bindLabel(title, options_bloque);
     108                                                                layerx.label.off('click').on('click', function (e) {
     109                                                                        layerx.fire('click', e);
     110                                                                        map.panTo(layerx._latlng);
     111                                                                });
     112                                                        }
     113                                                        map.removeLayer(layerx);
     114                                                        layerx.addTo(map);
    87115                                                }
    88                                                
    89                                                 map.removeLayer(layerx);
    90                                                 layerx.addTo(map);
     116                                                if (layer.label) {
     117                                                        options = layer.label.options;
     118                                                        options.noHide = true;
     119                                                        if (!layer.label.noHideEver && !layer.labelNoHideEver) {
     120                                                                label_bloque = layer._leaflet_id;
     121                                                        }
     122                                                        if (label_bloque && layer.feature && layer.feature.properties && (layer.feature.properties.title || (map.options.langue && layer.feature.properties['title_'+map.options.langue]))) {
     123                                                                title = (map.options.langue && layer.feature.properties['title_'+map.options.langue]) || layer.feature.properties.title;
     124                                                                layer.unbindLabel().bindLabel(layer.feature.properties.title, options);
     125                                                                layer.label.off('click').on('click', function (e) {
     126                                                                        layer.fire('click', e);
     127                                                                        map.panTo(layer._latlng);
     128                                                                });
     129                                                        }
     130                                                        map.removeLayer(layer);
     131                                                        layer.options.zIndexOffset = 1000;
     132                                                        layer.addTo(map);
     133                                                }
     134                                                map.closePopup();
     135                                                if (e.latlng) {
     136                                                        map.panTo(e.latlng);
     137                                                }
     138                                                return false;
    91139                                        }
    92                                         if (layer.label) {
    93                                                 options = layer.label.options;
    94                                                 options.noHide = true
    95                                                 label_bloque = layer._leaflet_id;
    96                                                 if (layer.feature && layer.feature.properties && (layer.feature.properties.title || (map.options.langue && layer.feature.properties['title_'+map.options.langue]))) {
    97                                                         title = (map.options.langue && layer.feature.properties['title_'+map.options.langue]) || layer.feature.properties.title;
    98                                                         layer.unbindLabel().bindLabel(layer.feature.properties.title, options);
    99                                                 }
    100                                                 map.removeLayer(layer);
    101                                                 layer.options.zIndexOffset = 1000;
    102                                                 layer.addTo(map);
    103                                         }
    104                                         map.closePopup();
    105                                         map.panTo(e.latlng);
    106                                         return false;
    107                                 }
    108                         });
    109                 });
    110                 map.on('popupopen',function(){
    111                         info.update();
    112                 });
     140                                });
     141                        });
     142                        map.on('popupopen',function(){
     143                                info.update();
     144                        });
    113145                }
    114146                map.eachLayer(function(layer){
     
    120152                         * On leur met un label qui est leur titre
    121153                         */
    122                         if(layer.feature && layer.feature.properties && layer.feature.properties.role && $.inArray('informatif',layer.feature.properties.role) != -1){
    123                                 layer.options.clickable = false;
     154                        if(layer.feature && layer.feature.properties && layer.feature.properties.role && ($.inArray('informatif',layer.feature.properties.role) != -1 || $.inArray('label_nohide',layer.feature.properties.role) != -1)){
    124155                                layer.options.riseOnHover = true;
    125                                 layer.options.keyboard = false;
    126                                 layer.options.icon.options.labelAnchor = [4,-4];
     156                                var label_option = { noHide: true, lang_direction : lang_direction, className : 'action', direction : 'auto', clickable : 'true' };
    127157                                if (lang_direction == 'rtl') {
    128                                         var offset = [60, -15]
     158                                        label_option.direction = 'left';
     159                                }
     160                                if ($.inArray('informatif', layer.feature.properties.role) != -1) {
     161                                        label_option.className = 'informatif';
     162                                        label_option.direction = 'left';
     163                                        label_option.clickable = false;
     164                                        layer.options.keyboard = false;
     165                                        layer.options.clickable = false;
     166                                        layer.unbindPopup().bindLabel(layer.feature.properties.title, label_option);
     167                                        informatifs.push(layer);
    129168                                } else {
    130                                         var offset = [20, -15]
    131                                 }
    132                                 layer.unbindPopup().bindLabel(layer.feature.properties.title, { noHide: true, className: 'informatif', direction: 'right', lang_direction : lang_direction, offset: offset});
     169                                        layer.bindLabel(layer.feature.properties.title, label_option);
     170                                        layer.label.noHideEver = true;
     171                                        layer.labelNoHideEver = true;
     172                                        layer.label.off('click').on('click', function (e) {
     173                                                layer.fire('click', e);
     174                                                map.panTo(layer._latlng);
     175                                        });
     176                                        layer.label.off('mouseover').on('mouseover', function (e) {
     177                                                layer._bringToFront();
     178                                        }).on('mouseout', function (e) {
     179                                                layer._resetZIndex();
     180                                        });
     181                                }
    133182                                map.removeLayer(layer);
    134183                                layer.addTo(map);
    135                                 informatifs.push(layer);
    136184                        } else if (map.options.options && map.options.options.label && layer.feature && layer.feature.properties && layer.feature.properties.title) {
    137185                                if (layer.options && typeof layer.options.riseOnHover != 'undefined')
     
    140188                                                title = (map.options.langue && layer.feature.properties['title_'+map.options.langue]) || layer.feature.properties.title;
    141189                                                layer.bindLabel(title, { className: 'action', direction: 'auto', lang_direction : lang_direction});
     190                                                layer.label.off('click').on('click', function (e) {
     191                                                        layer.fire('click', e);
     192                                                        map.panTo(layer._latlng);
     193                                                });
    142194                                        }
    143195                                map.removeLayer(layer);
     
    160212        });
    161213});
     214
  • _plugins_/cartes/trunk/squelettes/json/gis_cartes.html

    r96729 r99021  
    1                 <BOUCLE_art(CARTES){gis}{id_carte ?}{0, #ENV{limit}}{","}>
     1                <BOUCLE_art(CARTES){gis}{id_carte ?}{0, #ENV{limit}}{","}>#SET{id_gis,#ID_GIS}
    22                {"type": "Feature",
    33                ["geometry": (#GEOMETRY|appliquer_filtre{wkt_to_json}|sinon{{"type": "Point", "coordinates": \[#LON, #LAT\]}}),]
     
    77                        "description":[(#DESCRIPTIF_GIS|sinon{#DESCRIPTIF}|json_encode)][
    88                        (#LOGO_GIS|gis_icon_properties)][,
    9                         "styles": (#GEOMETRY_STYLES|appliquer_filtre{geometry_styles_to_json})][,
    10                         "role": (#ROLE|explode{','}|json_encode)]
     9                        "styles": (#GEOMETRY_STYLES|appliquer_filtre{geometry_styles_to_json})]<B_roles>,
     10                        "role": [<BOUCLE_roles(gis_liens){id_gis=#GET{id_gis}}{objet=carte}{id_objet=#ID_CARTE}{par role}{', '}>[(#ROLE|json_encode)]</BOUCLE_roles>]</B_roles>
    1111                }}</BOUCLE_art>
Note: See TracChangeset for help on using the changeset viewer.