Merge remote-tracking branch 'openstreetmap/pull/1030' into next
authorTom Hughes <tom@compton.nu>
Sun, 12 Feb 2017 15:04:50 +0000 (15:04 +0000)
committerTom Hughes <tom@compton.nu>
Sun, 12 Feb 2017 15:04:50 +0000 (15:04 +0000)
1  2 
Vendorfile
app/assets/javascripts/index.js

diff --combined Vendorfile
index 361f2c84361173bc6948a7c3e661a6a10e44bc8b,6826e8e16a175fd29d16272bab139c13e957d420..93ad74c7bc43101142722791f27b18863da8baae
@@@ -11,22 -11,27 +11,27 @@@ folder 'vendor/assets' d
    end
  
    folder 'leaflet' do
 -    file 'leaflet.js', 'http://cdn.leafletjs.com/leaflet-0.7.3/leaflet-src.js'
 -    file 'leaflet.css', 'http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css'
 +    file 'leaflet.js', 'https://unpkg.com/leaflet@1.0.3/dist/leaflet-src.js'
 +    file 'leaflet.css', 'https://unpkg.com/leaflet@1.0.3/dist/leaflet.css'
  
      [ 'layers.png', 'layers-2x.png',
        'marker-icon.png', 'marker-icon-2x.png',
        'marker-shadow.png' ].each do |image|
 -      file "images/#{image}", "http://cdn.leafletjs.com/leaflet-0.7.3/images/#{image}"
 +      file "images/#{image}", "https://unpkg.com/leaflet@1.0.3/dist/images/#{image}"
      end
  
+     from 'git://github.com/aratcliffe/Leaflet.contextmenu.git' do
+       file 'leaflet.contextmenu.js', 'dist/leaflet.contextmenu.js'
+       file 'leaflet.contextmenu.css', 'dist/leaflet.contextmenu.css'
+     end
      from 'git://github.com/kajic/leaflet-locationfilter.git' do
        file 'leaflet.locationfilter.css', 'src/locationfilter.css'
        file 'leaflet.locationfilter.js', 'src/locationfilter.js'
        folder 'img', 'src/img'
      end
  
 -    from 'git://github.com/domoritz/leaflet-locatecontrol.git' do
 +    from 'git://github.com/domoritz/leaflet-locatecontrol.git', :tag => 'v0.54.0' do
        file 'leaflet.locate.js', 'src/L.Control.Locate.js'
      end
  
@@@ -34,7 -39,7 +39,7 @@@
        file 'leaflet.osm.js', 'leaflet-osm.js'
      end
  
 -    from 'git://github.com/jieter/Leaflet.encoded.git' do
 +    from 'git://github.com/jieter/Leaflet.encoded.git', :tag => '0.0.8' do
        file 'leaflet.polyline.js', 'Polyline.encoded.js'
      end
    end
      from 'git://github.com/openstreetmap/iD', :branch => 'release' do
        folder 'iD/img', 'dist/img'
        folder 'iD/locales', 'dist/locales'
 +      folder 'iD/traffico', 'dist/traffico'
 +      folder 'iD/mapillary-js', 'dist/mapillary-js'
 +
        file 'iD.css.erb', 'dist/iD.css' do |path|
 -        rewrite(path) { |content| content.gsub(/url\('?(img\/[^')]+)'?\)/, 'url(<%= asset_path("iD/\1") %>)') }
 +        rewrite(path) do |content|
 +          content.gsub(/url\('?(img\/[^')]+)'?\)/, 'url(<%= asset_path("iD/\1") %>)')
 +        end
 +      end
 +
 +      file 'iD/traffico/stylesheets/traffico.css.erb', 'dist/traffico/stylesheets/traffico.css' do |path|
 +        rewrite(path) do |content|
 +          content.gsub(/url\("?\.\.\/([^#?")]+)([^"]*)"?\)/, 'url(<%= asset_path("iD/traffico/\1") %>\2)')
 +        end
        end
 +
 +      File.delete('vendor/assets/iD/iD/traffico/stylesheets/traffico.css')
 +
        file 'iD.js', 'dist/iD.js'
 -      file 'presets.js', 'dist/presets.js'
 -      file 'imagery.js', 'dist/imagery.js'
      end
    end
  
index 9d7122e4da70013021b29f7801a5b5620c496a7e,684685d51d9680d30d5dc93c132230cc81e0f8e0..0962908064ba7c1bae8797f3a8aa7f5306577e75
@@@ -7,6 -7,8 +7,8 @@@
  //= require leaflet.share
  //= require leaflet.polyline
  //= require leaflet.query
+ //= require leaflet.contextmenu
+ //= require index/contextmenu
  //= require index/search
  //= require index/browse
  //= require index/export
@@@ -75,9 -77,42 +77,42 @@@ $(document).ready(function () 
  
    var params = OSM.mapParams();
  
+   // TODO internationalisation of the context menu strings
    var map = new L.OSM.Map("map", {
      zoomControl: false,
-     layerControl: false
+     layerControl: false,
+     contextmenu: true,
+     contextmenuWidth: 140,
+     contextmenuItems: [{
+         text: 'Directions from here',
+         callback: function(e){ context_directionsfrom(e, map); }
+     }, {
+         text: 'Directions to here',
+         callback: function(e){ context_directionsto(e, map); }
+     }, '-', {
+         text: 'Add a note here',
+         callback: function(e){ context_addnote(e, map); }
+     }, {
+         text: 'Show address',
+         callback: function(e){ context_describe(e, map); }
+     }, {
+         text: 'Query features',
+         callback: function(e){ context_queryhere(e, map); }
+     }, {
+         text: 'Centre map here',
+         callback: function(e){ context_centrehere(e, map); }
+     }]
+   });
+   $(document).on('mousedown', function(e){
+     if(e.shiftKey){
+       map.contextmenu.disable(); // on firefox, shift disables our contextmenu. we explicitly do this for all browsers.
+     }else{
+       map.contextmenu.enable();
+       // we also decide whether to disable some options that only like high zoom
+       map.contextmenu.setDisabled(3, map.getZoom() < 12);
+       map.contextmenu.setDisabled(5, map.getZoom() < 14);
+     }
    });
  
    map.attributionControl.setPrefix('');
    L.OSM.zoom({position: position})
      .addTo(map);
  
 -  L.control.locate({
 +  var locate = L.control.locate({
      position: position,
 +    icon: 'icon geolocate',
 +    iconLoading: 'icon geolocate',
      strings: {
        title: I18n.t('javascripts.map.locate.title'),
        popup: I18n.t('javascripts.map.locate.popup')
      }
    }).addTo(map);
  
 +  var locateContainer = locate.getContainer();
 +
 +  $(locateContainer)
 +    .removeClass('leaflet-control-locate leaflet-bar')
 +    .addClass('control-locate')
 +    .children("a")
 +    .removeClass('leaflet-bar-part leaflet-bar-part-single')
 +    .addClass('control-button');
 +
    var sidebar = L.OSM.sidebar('#map-ui')
      .addTo(map);
  
      if (params.layers.indexOf(map.dataLayer.options.code) >= 0) {
        map.addLayer(map.dataLayer);
      }
 +
 +    if (params.layers.indexOf(map.gpsLayer.options.code) >= 0) {
 +      map.addLayer(map.gpsLayer);
 +    }
    }
  
    var placement = $('html').attr('dir') === 'rtl' ? 'right' : 'left';
        map.getLayersCode(),
        map._object);
  
 -    $.removeCookie("_osm_location");
 -    $.cookie("_osm_location", OSM.locationCookie(map), { expires: expiry, path: "/" });
 +    $.removeCookie('_osm_location');
 +    $.cookie('_osm_location', OSM.locationCookie(map), { expires: expiry, path: '/' });
    });
  
    if ($.cookie('_osm_welcome') === 'hide') {
      $('.welcome').hide();
    }
  
 -  $('.welcome .close').on('click', function() {
 +  $('.welcome .close-wrap').on('click', function() {
      $('.welcome').hide();
 -    $.cookie("_osm_welcome", 'hide', { expires: expiry });
 +    $.cookie('_osm_welcome', 'hide', { expires: expiry, path: '/' });
 +  });
 +
 +  var bannerExpiry = new Date();
 +  bannerExpiry.setYear(bannerExpiry.getFullYear() + 1);
 +
 +  $('#banner .close-wrap').on('click', function(e) {
 +    var cookieId = e.target.id;
 +    $('#banner').hide();
 +    e.preventDefault();
 +    if (cookieId) {
 +      $.cookie(cookieId, 'hide', { expires: bannerExpiry, path: '/' });
 +    }
    });
  
    if (OSM.PIWIK) {
      map.setView([params.lat, params.lon], params.zoom);
    }
  
 -  var marker = L.marker([0, 0], {icon: OSM.getUserIcon()});
 -
    if (params.marker) {
 -    marker.setLatLng([params.mlat, params.mlon]).addTo(map);
 +    L.marker([params.mlat, params.mlon]).addTo(map);
    }
  
    $("#homeanchor").on("click", function(e) {
        center = L.latLng(data.lat, data.lon);
  
      map.setView(center, data.zoom);
 -    marker.setLatLng(center).addTo(map);
 +    L.marker(center, {icon: OSM.getUserIcon()}).addTo(map);
    });
  
    function remoteEditHandler(bbox, object) {