]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/index.js
Move contextmenu callbacks to separate file
[rails.git] / app / assets / javascripts / index.js
index 9e386d54bf2bccef0b56c1e331d3fef0494c35dc..01682d5f8d60209417e9de9b3669a81a23fc6a92 100644 (file)
@@ -7,6 +7,8 @@
 //= require leaflet.share
 //= require leaflet.polyline
 //= require leaflet.query
 //= require leaflet.share
 //= require leaflet.polyline
 //= require leaflet.query
+//= require leaflet.contextmenu
+//= require index/contextmenu
 //= require index/search
 //= require index/browse
 //= require index/export
 //= require index/search
 //= require index/browse
 //= require index/export
@@ -54,7 +56,7 @@ $(document).ready(function () {
 
         if (xhr.getResponseHeader('X-Page-Title')) {
           var title = xhr.getResponseHeader('X-Page-Title');
 
         if (xhr.getResponseHeader('X-Page-Title')) {
           var title = xhr.getResponseHeader('X-Page-Title');
-          document.title = decodeURIComponent(escape(title));
+          document.title = decodeURIComponent(title);
         }
 
         $('head')
         }
 
         $('head')
@@ -75,9 +77,42 @@ $(document).ready(function () {
 
   var params = OSM.mapParams();
 
 
   var params = OSM.mapParams();
 
+  // TODO internationalisation of the context menu strings
   var map = new L.OSM.Map("map", {
     zoomControl: false,
   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('');
   });
 
   map.attributionControl.setPrefix('');
@@ -148,7 +183,8 @@ $(document).ready(function () {
     }
   }
 
     }
   }
 
-  $('.leaflet-control .control-button').tooltip({placement: 'left', container: 'body'});
+  var placement = $('html').attr('dir') === 'rtl' ? 'right' : 'left';
+  $('.leaflet-control .control-button').tooltip({placement: placement, container: 'body'});
 
   var expiry = new Date();
   expiry.setYear(expiry.getFullYear() + 10);
 
   var expiry = new Date();
   expiry.setYear(expiry.getFullYear() + 10);