Implement long URL option, toggling, and labeling for share
authorTom MacWright <tom@macwright.org>
Thu, 13 Jun 2013 16:04:54 +0000 (12:04 -0400)
committerJohn Firebaugh <john.firebaugh@gmail.com>
Thu, 18 Jul 2013 17:45:15 +0000 (10:45 -0700)
app/assets/javascripts/application.js
app/assets/javascripts/index.js
app/assets/javascripts/leaflet.layers.js
app/assets/javascripts/leaflet.share.js
config/locales/en.yml

index a7548e7f9cbff9a7175a431bd0912ae0394aef2e..84305a9618af358d6c69b06f9bd942637ff8c3ff 100644 (file)
@@ -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;
 }
index ffe12ecc6a6169783a10cf698e1e258a0dab7b5b..d58317f63f8b12aaaa5c75c0dd12359984789174 100644 (file)
@@ -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()
index ea0bf63a02f62516c809cd6dc83f2166d511878e..9841b0651f0ef93f31ba7d1e83e3b3668d375218 100644 (file)
@@ -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();
index 6653a5b92019874deb31cab8406f23009bff2de1..1434743d0e719c82d492c2e34b750d7f67a23015 100644 (file)
@@ -20,9 +20,31 @@ L.OSM.share = function (options) {
       .text(I18n.t('javascripts.share.title'))
       .appendTo($ui);
 
-    var $input = $('<input>')
+    var $share_link = $('<div></div>')
       .appendTo($ui);
 
+    var $title = $('<h3></h3>')
+      .text(I18n.t('javascripts.share.link'))
+      .appendTo($share_link);
+
+    var $short_url_input = $('<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 = $('<label></label>')
+      .text(I18n.t('javascripts.share.short_url'))
+      .attr('for', 'short_url')
+      .appendTo($share_link);
+
+    var $input = $('<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];
index 15fadd9dd3dd86baf939250f39739d85b5087bef..8be56bd3dbb7117f6bb147b8bd32179f63ae6c45 100644 (file)
@@ -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"