]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/index.js
Merge remote-tracking branch 'openstreetmap/pull/1030' into next
[rails.git] / app / assets / javascripts / index.js
index 9ebee2dd228958ece42ff58c42007bcfad9b8b05..0962908064ba7c1bae8797f3a8aa7f5306577e75 100644 (file)
@@ -7,6 +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 @@ $(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('');
@@ -95,14 +130,25 @@ $(document).ready(function () {
   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);
 
@@ -146,6 +192,10 @@ $(document).ready(function () {
     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';
@@ -171,15 +221,18 @@ $(document).ready(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: expiry });
+      $.cookie(cookieId, 'hide', { expires: bannerExpiry, path: '/' });
     }
   });