]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/application.js
Merge remote-tracking branch 'upstream/master' into routing
[rails.git] / app / assets / javascripts / application.js
index cecceaf3563b9bf210cff59669e4a7c73b1d1373..09ae367f40eb2067e939260b79c21f0a72a08d51 100644 (file)
@@ -9,38 +9,35 @@
 //= require osm
 //= require leaflet
 //= require leaflet.osm
-//= require leaflet.hash
+//= require leaflet.map
 //= require leaflet.zoom
-//= require leaflet.extend
 //= require leaflet.locationfilter
 //= require i18n/translations
 //= require oauth
 //= require piwik
-//= require map
 //= require richtext
 //= require querystring
 
 var querystring = require('querystring-component');
 
-function zoomPrecision(zoom) {
-    return Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2));
-}
-
-function remoteEditHandler(bbox, select) {
+function remoteEditHandler(bbox, object) {
   var loaded = false,
-      query = {
-          left: bbox.getWest() - 0.0001,
-          top: bbox.getNorth() + 0.0001,
-          right: bbox.getEast() + 0.0001,
-          bottom: bbox.getSouth() - 0.0001
-      };
+    url = document.location.protocol === "https:" ?
+            "https://127.0.0.1:8112/load_and_zoom?" :
+            "http://127.0.0.1:8111/load_and_zoom?",
+    query = {
+        left: bbox.getWest() - 0.0001,
+        top: bbox.getNorth() + 0.0001,
+        right: bbox.getEast() + 0.0001,
+        bottom: bbox.getSouth() - 0.0001
+    };
 
-  if (select) query.select = select;
+  if (object) query.select = object.type + object.id;
 
   var iframe = $('<iframe>')
     .hide()
     .appendTo('body')
-    .attr("src", "http://127.0.0.1:8111/load_and_zoom?" + querystring.stringify(query))
+    .attr("src", url + querystring.stringify(query))
     .on('load', function() {
       $(this).remove();
       loaded = true;
@@ -60,23 +57,31 @@ function remoteEditHandler(bbox, select) {
  * Called as the user scrolls/zooms around to maniplate hrefs of the
  * view tab and various other links
  */
-function updatelinks(loc, zoom, layers, object) {
+function updateLinks(loc, zoom, layers, object) {
   $(".geolink").each(function(index, link) {
     var href = link.href.split(/[?#]/)[0],
-        args = querystring.parse(link.search.substring(1));
+      args = querystring.parse(link.search.substring(1)),
+      editlink = $(link).hasClass("editlink");
 
-    if (object && $(link).hasClass("object")) args[object.type] = object.id;
+    delete args['node'];
+    delete args['way'];
+    delete args['relation'];
+    delete args['changeset'];
+
+    if (object && editlink) {
+      args[object.type] = object.id;
+    }
 
     var query = querystring.stringify(args);
     if (query) href += '?' + query;
 
     args = {
       lat: loc.lat,
-      lon: loc.lon || loc.lng,
+      lon: 'lon' in loc ? loc.lon : loc.lng,
       zoom: zoom
     };
 
-    if (layers && $(link).hasClass("layers")) {
+    if (layers && !editlink) {
       args.layers = layers;
     }
 
@@ -95,12 +100,6 @@ function updatelinks(loc, zoom, layers, object) {
       I18n.t('javascripts.site.edit_disabled_tooltip') : '');
 }
 
-// generate a cookie-safe string of map state
-function cookieContent(map) {
-  var center = map.getCenter().wrap();
-  return [center.lng, center.lat, map.getZoom(), map.getLayersCode()].join('|');
-}
-
 function escapeHTML(string) {
   var htmlEscapes = {
     '&': '&amp;',
@@ -122,16 +121,13 @@ function minimiseMap() {
   $("#content").removeClass("maximised");
 }
 
-/*
- * Forms which have been cached by rails may have the wrong
- * authenticity token, so patch up any forms with the correct
- * token taken from the page header.
- */
 $(document).ready(function () {
-  var auth_token = $("meta[name=csrf-token]").attr("content");
-  $("form input[name=authenticity_token]").val(auth_token);
+  $("#menu-icon").on("click", function(e) {
+    e.preventDefault();
+    $("header").toggleClass("closed");
+  });
 
-  $("#menu-icon").on("click", function() {
+  $("nav.primary li a").on("click", function() {
     $("header").toggleClass("closed");
   });
 });