X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/d4135390acff291f2f2c15d9fb86723ebf4fe755..e418075e26d80d68e4127d3358a2d8b11dee3a13:/app/assets/javascripts/application.js?ds=sidebyside diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index b257f7fed..37172f439 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -3,22 +3,19 @@ //= require jquery.timers //= require jquery.cookie //= require jquery.throttle-debounce +//= require bootstrap.tooltip +//= require bootstrap.dropdown //= require augment //= 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 menu -//= require sidebar //= require richtext -//= require geocoder //= require querystring var querystring = require('querystring-component'); @@ -27,13 +24,6 @@ function zoomPrecision(zoom) { return Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2)); } -function normalBounds(bounds) { - if (bounds instanceof L.LatLngBounds) return bounds; - return new L.LatLngBounds( - new L.LatLng(bounds[0][0], bounds[0][1]), - new L.LatLng(bounds[1][0], bounds[1][1])); -} - function remoteEditHandler(bbox, select) { var loaded = false, query = { @@ -68,52 +58,47 @@ 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, bounds, 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 && editlink) { + delete args['node']; + delete args['way']; + delete args['relation']; + delete args['changeset']; - if (bounds && $(link).hasClass("bbox")) args.bbox = normalBounds(bounds).toBBoxString(); - if (object && $(link).hasClass("object")) args[object.type] = object.id; + args[object.type] = object.id; + } var query = querystring.stringify(args); if (query) href += '?' + query; - if ($(link).hasClass("llz")) { - args = { - lat: loc.lat, - lon: loc.lon || loc.lng, - zoom: zoom - }; - - if (layers && $(link).hasClass("layers")) { - args.layers = layers; - } + args = { + lat: loc.lat, + lon: loc.lon || loc.lng, + zoom: zoom + }; - href += OSM.formatHash(args); + if (layers && !editlink) { + args.layers = layers; } - link.href = href; + href += OSM.formatHash(args); - var minzoom = $(link).data("minzoom"); - if (minzoom) { - var name = link.id.replace(/anchor$/, ""); - $(link).off("click.minzoom"); - if (zoom >= minzoom) { - $(link) - .attr("title", I18n.t("javascripts.site." + name + "_tooltip")) - .removeClass("disabled"); - } else { - $(link) - .attr("title", I18n.t("javascripts.site." + name + "_disabled_tooltip")) - .addClass("disabled") - .on("click.minzoom", function () { - alert(I18n.t("javascripts.site." + name + "_zoom_alert")); - return false; - }); - } - } + link.href = href; }); + + var editDisabled = zoom < 13; + $('#edit_tab') + .tooltip({placement: 'bottom'}) + .off('click.minzoom') + .on('click.minzoom', function() { return !editDisabled; }) + .toggleClass('disabled', editDisabled) + .attr('data-original-title', editDisabled ? + I18n.t('javascripts.site.edit_disabled_tooltip') : ''); } // generate a cookie-safe string of map state @@ -122,12 +107,34 @@ function cookieContent(map) { return [center.lng, center.lat, map.getZoom(), map.getLayersCode()].join('|'); } -/* - * 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. - */ +function escapeHTML(string) { + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + return string == null ? '' : (string + '').replace(/[&<>"']/g, function(match) { + return htmlEscapes[match]; + }); +} + +function maximiseMap() { + $("#content").addClass("maximised"); +} + +function minimiseMap() { + $("#content").removeClass("maximised"); +} + $(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"); + }); + + $("nav.primary li a").on("click", function() { + $("header").toggleClass("closed"); + }); });