Merge branch 'master' into notes
authorTom Hughes <tom@compton.nu>
Sat, 1 Dec 2012 18:22:30 +0000 (18:22 +0000)
committerTom Hughes <tom@compton.nu>
Sat, 1 Dec 2012 18:22:30 +0000 (18:22 +0000)
Conflicts:
app/assets/javascripts/browse.js
app/assets/javascripts/map.js.erb
app/assets/stylesheets/common.css.scss
app/views/site/index.html.erb

12 files changed:
1  2 
Gemfile
Gemfile.lock
app/assets/javascripts/browse.js
app/assets/javascripts/index.js
app/assets/javascripts/map.js.erb
app/assets/javascripts/osm.js.erb
app/assets/stylesheets/common.css.scss
app/views/site/index.html.erb
app/views/user/view.html.erb
config/locales/de.yml
config/locales/en.yml
config/routes.rb

diff --cc Gemfile
Simple merge
diff --cc Gemfile.lock
Simple merge
index 906bb0baeb9f9749bbfda2eeccf2d12c0cf152b7,c3d67e57e215be0c7017ddc65fdb0114863f95d1..fb6d2d304e01383dd45da85ea188e7256370ccdd
@@@ -40,23 -42,8 +42,24 @@@ $(document).ready(function () 
        return remoteEditHandler(bbox);
      });
  
 -    updatelinks(centre.lng, centre.lat, 16, null, params.minlon, params.minlat, params.maxlon, params.maxlat);
+     var centre = bbox.getCenter();
 +    updatelinks(centre.lon, centre.lat, 16, null, params.minlon, params.minlat, params.maxlon, params.maxlat);
 +  } else if (params.type == "note") {
 +    var centre = new OpenLayers.LonLat(params.lon, params.lat);
 +
 +    setMapCenter(centre, 16);
 +    addMarkerToMap(centre);
 +
 +    var bbox = unproj(map.getExtent());
 +
 +    $("#loading").hide();
 +    $("#browse_map .geolink").show();
 +
 +    $("a[data-editor=remote]").click(function () {
 +      return remoteEditHandler(bbox);
 +    });
 +
 +    updatelinks(centre.lon, centre.lat, 16, null, bbox.left, bbox.bottom, bbox.right, bbox.top)
    } else {
      $("#object_larger_map").hide();
      $("#object_edit").hide();
index c0decd6a6ce9a9af8e3bdc0a3eaffd8cae490af8,c908f1e3490353d72d53d067e2ad614ff8560aa7..c90d96c3997d93219c95293c8fd192f1bb27a7cc
@@@ -1,9 -2,9 +2,10 @@@
  //= require index/browse
  //= require index/export
  //= require index/key
 +//= require index/notes
  
  $(document).ready(function () {
+   var permalinks = $("#permalink").html();
    var marker;
    var params = OSM.mapParams();
    var map = createMap("map");
index 4c1a849dc25d5f4a4572ac74e649515a378eb0e1,291633f53c1c04079311a7afd4437526ea9a2d48..f069eee993e76d90a6842e48cabf3dd70534f521
- var epsg4326 = new OpenLayers.Projection("EPSG:4326");
+ // Leaflet extensions
+ L.LatLngBounds.include({
+   getSouthLat: function () {
+     return this._southWest.lat;
+   },
+   getWestLng: function () {
+     return this._southWest.lng;
+   },
+   getNorthLat: function () {
+     return this._northEast.lat;
+   },
+   getEastLng: function () {
+     return this._northEast.lng;
+   },
+   toBBOX: function () {
+     var decimal = 6;
+     var mult = Math.pow(10, decimal);
+     var xmin = Math.round(this.getWestLng() * mult) / mult;
+     var ymin = Math.round(this.getSouthLat() * mult) / mult;
+     var xmax = Math.round(this.getEastLng() * mult) / mult;
+     var ymax = Math.round(this.getNorthLat() * mult) / mult;
+     return xmin + "," + ymin + "," + xmax + "," + ymax;
+   },
+   getSize: function () {
+     return (this._northEast.lat - this._southWest.lat) *
+            (this._northEast.lng - this._southWest.lng);
+   }
+ });
+ L.Bounds.include({
+   getWidth: function () {
+    return this.max.x - this.min.x;
+   },
+   getHeight: function () {
+    return this.max.y - this.min.y;
+   }
+ });
+ L.Icon.Default.imagePath = <%= "#{asset_prefix}/images".to_json %>;
  var map;
- var markers;
- var vectors;
- var popup;
+ var layers = [
+   {
+     klass: L.OSM.Mapnik,
+     attribution: "",
+     keyid: "mapnik",
+     layerCode: "M",
+     name: I18n.t("javascripts.map.base.standard")
+   },
+   {
+     klass: L.OSM.CycleMap,
+     attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
+     keyid: "cyclemap",
+     layerCode: "C",
+     name: I18n.t("javascripts.map.base.cycle_map")
+   },
+   {
+     klass: L.OSM.TransportMap,
+     attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
+     keyid: "transportmap",
+     layerCode: "T",
+     name: I18n.t("javascripts.map.base.transport_map")
+   },
+   {
+     klass: L.OSM.MapQuestOpen,
+     attribution: "Tiles courtesy of <a href='http://www.mapquest.com/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png'>",
+     keyid: "mapquest",
+     layerCode: "Q",
+     name: I18n.t("javascripts.map.base.mapquest")
+   }
+ ];
  
  function createMap(divName, options) {
-    options = options || {};
-    map = new OpenLayers.Map(divName, {
-       controls: options.controls || [
-          new OpenLayers.Control.ArgParser(),
-          new OpenLayers.Control.Attribution(),
-          new SimpleLayerSwitcher(),
-          new OpenLayers.Control.Navigation(),
-          new OpenLayers.Control.Zoom(),
-          new OpenLayers.Control.SimplePanZoom(),
-          new OpenLayers.Control.ScaleLine({geodesic: true})
-       ],
-       numZoomLevels: 20,
-       displayProjection: new OpenLayers.Projection("EPSG:4326"),
-       theme: "<%= asset_path 'theme/openstreetmap/style.css' %>"
-    });
-    var mapnik = new OpenLayers.Layer.OSM.Mapnik(I18n.t("javascripts.map.base.standard"), {
-       attribution: "",
-       keyid: "mapnik",
-       displayOutsideMaxExtent: true,
-       wrapDateLine: true,
-       layerCode: "M"
-    });
-    map.addLayer(mapnik);
-    var cyclemap = new OpenLayers.Layer.OSM.CycleMap(I18n.t("javascripts.map.base.cycle_map"), {
-       attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
-       keyid: "cyclemap",
-       displayOutsideMaxExtent: true,
-       wrapDateLine: true,
-       layerCode: "C"
-    });
-    map.addLayer(cyclemap);
-    var transportmap = new OpenLayers.Layer.OSM.TransportMap(I18n.t("javascripts.map.base.transport_map"), {
-       attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
-       keyid: "transportmap",
-       displayOutsideMaxExtent: true,
-       wrapDateLine: true,
-       layerCode: "T"
-    });
-    map.addLayer(transportmap);
-    var mapquest = new OpenLayers.Layer.OSM(I18n.t("javascripts.map.base.mapquest"), [
-       "http://otile1.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png",
-       "http://otile2.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png",
-       "http://otile3.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png",
-       "http://otile4.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png"
-    ], {
-       attribution: "Tiles courtesy of <a href='http://www.mapquest.com/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png'>",
-       keyid: "mapquest",
-       displayOutsideMaxExtent: true,
-       wrapDateLine: true,
-       numZoomLevels: 19,
-       layerCode: "Q"
-    });
-    map.addLayer(mapquest);
-    markers = new OpenLayers.Layer.Markers("Markers", {
-       displayInLayerSwitcher: false,
-       numZoomLevels: 20,
-       projection: "EPSG:900913"
-    });
-    map.addLayer(markers);
-    map.dataLayer = new OpenLayers.Layer(I18n.t('browse.start_rjs.data_layer_name'), {
-      visibility: false,
-      displayInLayerSwitcher: false
-    });
-    map.addLayer(map.dataLayer);
-    $("#" + divName).on("resized", function () {
-      map.updateSize();
-    });
-    $("#" + divName).trigger("initialised");
-    return map;
- }
+   options = $.extend({zoomControl: true, panZoomControl: true, layerControl: true}, options);
  
- function getArrowIcon() {
-    var size = new OpenLayers.Size(25, 22);
-    var offset = new OpenLayers.Pixel(-22, -20);
-    var icon = new OpenLayers.Icon("<%= asset_path 'arrow.png' %>", size, offset);
+   map = L.map(divName, $.extend({}, options, {panControl: false, zoomsliderControl: false, maxZoom: 18}));
  
-    return icon;
- }
+   if (map.attributionControl) {
+     map.attributionControl.setPrefix('');
+   }
+   if (options.panZoomControl) {
+     new L.Control.Pan().addTo(map);
+     new L.Control.Zoomslider({stepHeight: 7}).addTo(map);
+   }
+   var layersControl = L.control.layers();
+   if (options.layerControl) {
+     layersControl.addTo(map);
+     map.layersControl = layersControl;
+   }
+   for (var i = 0; i < layers.length; i++) {
+     layers[i].layer = new (layers[i].klass)(layers[i]);
+     layersControl.addBaseLayer(layers[i].layer, layers[i].name);
+   }
  
- function addMarkerToMap(position, icon, description) {
-    var marker = new OpenLayers.Marker(proj(position), icon);
+   layers[0].layer.addTo(map);
  
-    markers.addMarker(marker);
+   $("#" + divName).on("resized", function () {
+     map.invalidateSize();
+   });
  
-    if (description) {
-        marker.events.register("mouseover", marker, function() {
-            openMapPopup(marker, description);
-        });
-    }
++ $("#" + divName).trigger("initialised");
 +
-    return marker;
+   return map;
+ }
+ function getUserIcon(url) {
+   return L.icon({
+     iconUrl: url || <%= asset_path('marker-red.png').to_json %>,
+     iconSize: [25, 41],
+     iconAnchor: [12, 41],
+     popupAnchor: [1, -34],
+     shadowUrl: <%= asset_path('images/marker-shadow.png').to_json %>,
+     shadowSize: [41, 41]
+   });
  }
  
  function addObjectToMap(object, zoom, callback) {
Simple merge
index ec06997f8fc0bf4f93200d7a312e004b68b5878f,654bbab970d4f9eb427f92598eb0197d13ca1ecf..413133e456d533a1c5ee3d0437795f01a9990bf0
@@@ -460,17 -454,13 +454,19 @@@ body.site-export #tabnav a#exportancho
    padding: 5px;
  }
  
- .site-index #map .SimpleLayerSwitcher,
- .site-index #map .olControlSimplePanZoom,
- .site-export #map .SimpleLayerSwitcher,
- .site-export #map .olControlSimplePanZoom {
 +#permalink a.disabled {
 +  color: #ccc;
 +  cursor: default;
 +  text-decoration: none;
 +}
 +
+ .site-index .leaflet-top,
+ .site-export .leaflet-top {
    top: 40px !important;
+   .leaflet-control {
+     margin-top: 0px !important;
+   }
  }
  
  .site-index #map .olControlScaleLine,
index d4c33fcfd42900a21cb7e67273026bc3ec2d73ad,88bf4907320a8b98247ed5d5ecd5867ad2fc2fa7..06516a16f200bbf9800da170b82fee07eec12761
@@@ -2,13 -2,6 +2,12 @@@
    <%= javascript_include_tag "index" %>
  <% end %>
  
-     <li><%= link_to t("browse.start_rjs.data_layer_name"), { :controller => :browse, :action => :start }, :id => "show_data" %></li>
 +<% unless STATUS == :api_offline or STATUS == :database_offline -%>
 +  <% content_for :editmenu do -%>
 +    <li><%= link_to t("browse.start_rjs.notes_layer_name"), notes_url(:format => :json), :id => "show_notes" %></li>
 +  <% end -%>
 +<% end -%>
 +
  <% content_for :left_menu do %>
    <li><h4><%= link_to t("site.key.map_key"), {:action => :key}, :id => "open_map_key", :title => t("site.key.map_key_tooltip") %></h4></li>
  <% end %>
Simple merge
Simple merge
index ffd180d363462201d19e817acabadd206dac8fe3,0c21b90275d5ee383ef30a90d46517115b500172..806b9ddd3df1143b0028ea7231ef320db0c79e8f
@@@ -221,11 -219,7 +221,8 @@@ en
        relation_title: "Relation: %{relation_name}"
        download_xml: "Download XML"
        view_history: "View history"
-     start:
-       view_data: "View data for current map view"
-       manually_select: "Manually select a different area"
      start_rjs:
 +      notes_layer_name: "Browse Notes"
        data_layer_name: "Browse Map Data"
        data_frame_title: "Data"
        zoom_or_select: "Zoom in or select an area of the map to view"
Simple merge