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 a7548e7..84305a9 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 ffe12ec..d58317f 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 ea0bf63..9841b06 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 6653a5b..1434743 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 15fadd9..8be56bd 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"