From 9172695f7f94bb60dd01455a922e22d181eb284e Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Thu, 13 Jun 2013 12:04:54 -0400 Subject: [PATCH] Implement long URL option, toggling, and labeling for share --- app/assets/javascripts/application.js | 12 ++++++++++ app/assets/javascripts/index.js | 6 +++-- app/assets/javascripts/leaflet.layers.js | 2 +- app/assets/javascripts/leaflet.share.js | 28 ++++++++++++++++++++++-- config/locales/en.yml | 2 ++ 5 files changed, 45 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index a7548e7f9..84305a961 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -120,6 +120,18 @@ function getShortUrl(map) { makeShortCode(map); } +function getUrl(map) { + var center = map.getCenter(), + zoom = map.getZoom(); + return (window.location.hostname.match(/^www\.openstreetmap\.org/i) ? + 'http://openstreetmap.org/?' : '/?') + + querystring.stringify({ + lat: center.lat, + lon: center.lng, + zoom: zoom + }); +} + function minZoomAlert() { alert(I18n.t("javascripts.site." + name + "_zoom_alert")); return false; } diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index ffe12ecc6..d58317f63 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -81,8 +81,10 @@ $(document).ready(function () { }).addTo(map); L.OSM.share({ - getUrl: getShortUrl, - sidebar: sidebar + getShortUrl: getShortUrl, + getUrl: getUrl, + sidebar: sidebar, + short: true }).addTo(map); L.control.scale() diff --git a/app/assets/javascripts/leaflet.layers.js b/app/assets/javascripts/leaflet.layers.js index ea0bf63a0..9841b0651 100644 --- a/app/assets/javascripts/leaflet.layers.js +++ b/app/assets/javascripts/leaflet.layers.js @@ -89,7 +89,7 @@ L.OSM.layers = function(options) { map.whenReady(function() { var miniMap = L.map(div[0], {attributionControl: false, zoomControl: false}) - .addLayer(new layer.constructor); + .addLayer(new layer.constructor()); miniMap.dragging.disable(); miniMap.touchZoom.disable(); diff --git a/app/assets/javascripts/leaflet.share.js b/app/assets/javascripts/leaflet.share.js index 6653a5b92..1434743d0 100644 --- a/app/assets/javascripts/leaflet.share.js +++ b/app/assets/javascripts/leaflet.share.js @@ -20,9 +20,31 @@ L.OSM.share = function (options) { .text(I18n.t('javascripts.share.title')) .appendTo($ui); - var $input = $('') + var $share_link = $('
') .appendTo($ui); + var $title = $('

') + .text(I18n.t('javascripts.share.link')) + .appendTo($share_link); + + var $short_url_input = $('') + .attr('id', 'short_url') + .attr('type', 'checkbox') + .prop('checked', 'checked') + .appendTo($share_link) + .bind('change', function() { + options.short = $(this).prop('checked'); + update(); + }); + + var $short_url_label = $('') + .text(I18n.t('javascripts.share.short_url')) + .attr('for', 'short_url') + .appendTo($share_link); + + var $input = $('') + .appendTo($share_link); + map.on('moveend layeradd layerremove', update); options.sidebar.addPane($ui); @@ -36,7 +58,9 @@ L.OSM.share = function (options) { function update() { var center = map.getCenter().wrap(); var layers = getMapLayers(map); - $input.val(options.getUrl(map)); + $input.val( + options.short ? options.getShortUrl(map) : options.getUrl(map) + ); } return $container[0]; diff --git a/config/locales/en.yml b/config/locales/en.yml index 15fadd9dd..8be56bd3d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2040,6 +2040,8 @@ en: share: title: "Share" cancel: "Cancel" + link: "Link" + short_url: "Short URL" key: title: "Map Key" tooltip: "Key for the map" -- 2.43.2