Change the feature commited in [16174] to use the main map view
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Sat, 27 Jun 2009 15:34:26 +0000 (15:34 +0000)
committerÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Sat, 27 Jun 2009 15:34:26 +0000 (15:34 +0000)
instead of being located at /map.

12 files changed:
app/controllers/browse_controller.rb
app/views/browse/_big_map.html.erb [deleted file]
app/views/browse/_map.html.erb
app/views/browse/changeset_map.html.erb [deleted file]
app/views/browse/node_map.html.erb [deleted file]
app/views/browse/relation_map.html.erb [deleted file]
app/views/browse/way_map.html.erb [deleted file]
app/views/site/index.html.erb
config/locales/en.yml
config/locales/is.yml
config/routes.rb
public/javascripts/site.js

index 4de490b2cf84a5c35d77bf27313c808a13aef5ce..8124d4a339ec2d509ff29e2fdffc9fa2cf7039f0 100644 (file)
@@ -25,13 +25,6 @@ class BrowseController < ApplicationController
     @type = "relation"
     render :action => "not_found", :status => :not_found
   end
-
-  def relation_map
-    @relation = Relation.find(params[:id])
-  rescue ActiveRecord::RecordNotFound
-    @type = "relation"
-    render :action => "not_found", :status => :not_found
-  end
   
   def way
     @way = Way.find(params[:id], :include => [:way_tags, {:changeset => :user}, {:nodes => [:node_tags, {:ways => :way_tags}]}, :containing_relation_members])
@@ -52,13 +45,6 @@ class BrowseController < ApplicationController
     render :action => "not_found", :status => :not_found
   end
 
-  def way_map
-    @way = Way.find(params[:id])
-  rescue ActiveRecord::RecordNotFound
-    @type = "way"
-    render :action => "not_found", :status => :not_found
-  end
-
   def node
     @node = Node.find(params[:id])
     @next = Node.find(:first, :order => "id ASC", :conditions => [ "visible = true AND id > :id", { :id => @node.id }] )
@@ -74,13 +60,6 @@ class BrowseController < ApplicationController
     @type = "way"
     render :action => "not_found", :status => :not_found
   end
-
-  def node_map
-    @node = Node.find(params[:id])
-  rescue ActiveRecord::RecordNotFound
-    @type = "node"
-    render :action => "not_found", :status => :not_found
-  end
   
   def changeset
     @changeset = Changeset.find(params[:id])
@@ -95,11 +74,4 @@ class BrowseController < ApplicationController
     @type = "changeset"
     render :action => "not_found", :status => :not_found
   end
-
-  def changeset_map
-    @changeset = Changeset.find(params[:id])
-  rescue ActiveRecord::RecordNotFound
-    @type = "changeset"
-    render :action => "not_found", :status => :not_found
-  end
 end
diff --git a/app/views/browse/_big_map.html.erb b/app/views/browse/_big_map.html.erb
deleted file mode 100644 (file)
index 3290170..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-<%
-# Decide on a lat lon to initialise the map with
-if params['lon'] and params['lat'] 
-       lon =  h(params['lon'])
-       lat =  h(params['lat'])
-       zoom =  h(params['zoom'] || '5')
-       layers = h(params['layers'])
-end
-%>
-<%= javascript_include_tag '/openlayers/OpenLayers.js' %>
-<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
-<%= javascript_include_tag 'map.js' %>
-<td align="right">
-  <% if big_map.instance_of? Changeset or big_map.visible %>
-    <div id="big_map" style="right: 0; left: 0; bottom: 0; top: 0; position: absolute; border: solid 1px black">
-      <div id="permalink">
-        <a href="<%= url_for :controller => 'browse', :action => (big_map.class.to_s.downcase +  '_map'), :id => big_map.id, :only_path => true %>" id="permalinkanchor"><%= t 'site.index.permalink' %></a><br/>
-      </div>
-    </div>
-  <% else %>
-    <%= t 'browse.map.deleted' %>
-  <% end %>
-</td>
-<% if big_map.instance_of? Changeset or big_map.visible %>
-  <script type="text/javascript">
-    var big_map;
-
-    OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
-
-    /* A version of index.html.erb->updateLocation that doesn't set a cookie */  
-    function updateBigmapLocation() {
-      var lonlat = getMapCenter();
-      var zoom = big_map.getZoom();
-      var layers = getMapLayers();
-      var extents = getMapExtent();
-      var expiry = new Date();
-
-      updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top);
-    }
-    
-    function init() {
-      big_map = createMap("big_map", {
-        controls: [
-          new OpenLayers.Control.ArgParser(),
-          new OpenLayers.Control.Attribution(),
-          new OpenLayers.Control.LayerSwitcher(),
-          new OpenLayers.Control.Navigation(),
-          new OpenLayers.Control.PanZoomBar(),
-          new OpenLayers.Control.ScaleLine()
-        ]
-      });
-
-      <% if big_map.instance_of? Changeset %>
-        var minlon = <%= big_map.min_lon / GeoRecord::SCALE.to_f %>;
-        var minlat = <%= big_map.min_lat / GeoRecord::SCALE.to_f %>;
-        var maxlon = <%= big_map.max_lon / GeoRecord::SCALE.to_f %>;
-        var maxlat = <%= big_map.max_lat / GeoRecord::SCALE.to_f %>;
-        var bbox = new OpenLayers.Bounds(minlon, minlat, maxlon, maxlat);
-
-        <% if lat and lon and zoom %>
-          var center = new OpenLayers.LonLat(<%= lon %>, <%= lat %>);
-          var zoom = <%= zoom %>;
-        <% else %>
-          setMapExtent(bbox);
-        <% end %>
-        addBoxToMap(bbox);
-
-        <% if !layers.nil? and !layers.empty? %>
-        setMapLayers("<%= layers %>");
-        <% end %>
-
-      <% else %>
-        var obj_type = "<%= big_map.class.name.downcase %>";
-        var obj_id = <%= big_map.id %>;
-        var url = "/api/<%= "#{API_VERSION}" %>/<%= big_map.class.name.downcase %>/<%= big_map.id %>";
-
-        if (obj_type != "node") {
-          url += "/full";
-        }
-
-        var osm_layer = new OpenLayers.Layer.GML("OSM", url, {
-          format: OpenLayers.Format.OSM,
-          projection: new OpenLayers.Projection("EPSG:4326")
-        });
-
-        osm_layer.events.register("loadend", osm_layer, function() {
-          var extent =  this.features[0].geometry.getBounds();
-
-          for (var i = 1; i < this.features.length; i++) {
-            extent.extend(this.features[i].geometry.getBounds());
-          }
-
-          <% if lat and lon and zoom %>
-          var center = new OpenLayers.LonLat(<%= lon %>, <%= lat %>);
-          var zoom = <%= zoom %>;
-          <% else %>
-          if (extent) {
-            this.map.zoomToExtent(extent);
-          } else {
-            this.map.zoomToMaxExtent();
-          }
-          <% end %>
-
-          var center = getMapCenter();
-        });
-
-        big_map.addLayer(osm_layer);
-
-        osm_layer.loadGML();
-        osm_layer.loaded = true;
-      <% end %>
-        big_map.events.register("moveend", big_map, updateBigmapLocation);
-        big_map.events.register("changelayer", big_map, updateBigmapLocation);
-        updateBigmapLocation();
-    }
-
-    window.onload = init;
-  </script>
-<% end %>
index 9a150ae05f7b9fe672408fc2cadc24478d3132d7..ac6f32fc6dbea253fc2165995a7365b2fb11708d 100644 (file)
@@ -6,9 +6,11 @@
     <div id="small_map" style="width:250px; height: 300px; border: solid 1px black">
     </div>
     <span id="loading"><%= t 'browse.map.loading' %></span>
-    <a id="larger_map" href=""></a>
+    <a id="area_larger_map" href=""></a>
+    <% unless map.instance_of? Changeset %>
     <br />
-    <a id="main_map" href=""></a>
+    <a id="object_larger_map" href=""></a>
+    <% end %>
   <% else %>
     <%= t 'browse.map.deleted' %>
   <% end %>
 
         $("loading").innerHTML = "";
 
-        $("larger_map").href = '<%= url_for :controller => 'browse', :action => (map.class.to_s.downcase +  '_map'), :id => map.id, :only_path => true %>';
-        $("larger_map").innerHTML = "<%= t 'browse.map.view_larger_map' %>";
-
-        $("main_map").href = '/?minlon='+minlon+'&minlat='+minlat+'&maxlon='+maxlon+'&maxlat='+maxlat+'&box=yes';
-        $("main_map").innerHTML = "<%= t 'browse.map.view_main_map' %>";
+        $("area_larger_map").href = '/?minlon='+minlon+'&minlat='+minlat+'&maxlon='+maxlon+'&maxlat='+maxlat+'&box=yes';
+        $("area_larger_map").innerHTML = "<%= t 'browse.map.larger.area' %>";
       <% else %>
         var obj_type = "<%= map.class.name.downcase %>";
         var obj_id = <%= map.id %>;
             }
 
             var center = getMapCenter();
-
-            $("larger_map").href = '<%= url_for :controller => 'browse', :action => (map.class.to_s.downcase +  '_map'), :id => map.id, :only_path => true %>';
-            $("larger_map").innerHTML = "<%= t 'browse.map.view_larger_map' %>";
-
-            $("main_map").href = '/?lat='+center.lat+'&lon='+center.lon+'&zoom='+this.map.getZoom();
-            $("main_map").innerHTML = "<%= t 'browse.map.view_main_map' %>";
+            $("area_larger_map").href = '/?lat='+center.lat+'&lon='+center.lon+'&zoom='+this.map.getZoom();
+            $("area_larger_map").innerHTML = "<%= t 'browse.map.larger.area' %>";
+            <% unless map.instance_of? Changeset %>
+            $("object_larger_map").href = '/?<%= map.class.to_s.downcase %>=<%= map.id %>';
+            $("object_larger_map").innerHTML = "<%= t('browse.map.larger.' + map.class.to_s.downcase) %>";
+            <% end %>
           } else {
             $("small_map").style.display = "none";
           }
diff --git a/app/views/browse/changeset_map.html.erb b/app/views/browse/changeset_map.html.erb
deleted file mode 100644 (file)
index 8c3bdbe..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<%
-@name = printable_name @changeset
-@title = t('browse.changeset.map_title', :name => @name)
-%>
-<%= render :partial => "big_map", :object => @changeset %>
diff --git a/app/views/browse/node_map.html.erb b/app/views/browse/node_map.html.erb
deleted file mode 100644 (file)
index 4404e0c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<%
-@name = printable_name @node
-@title = t('browse.node.map_title', :name => @name)
-%>
-<%= render :partial => "big_map", :object => @node %>
diff --git a/app/views/browse/relation_map.html.erb b/app/views/browse/relation_map.html.erb
deleted file mode 100644 (file)
index 15f0013..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<%
-@name = printable_name @relation
-@title = t('browse.relation.map_title', :name => @name)
-%>
-<%= render :partial => "big_map", :object => @relation %>
diff --git a/app/views/browse/way_map.html.erb b/app/views/browse/way_map.html.erb
deleted file mode 100644 (file)
index 2b4d8b2..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<%
-@name = printable_name @way
-@title = t('browse.way.map_title', :name => @name)
-%>
-<%= render :partial => "big_map", :object => @way %>
index d93b80b8a9acfbaa602613b73e79504c175f76e3..a1ce52267e71e60d278ea83e7932726956c5014d 100644 (file)
@@ -55,8 +55,26 @@ if params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat
        box = true if params['box']=="yes" 
 end
 
+if params['node'] or params['way'] or params['relation']
+    object = true
+    if params['node']
+        object_type = 'node'
+        object_id = h(params['node'])
+    elsif params['way']
+        object_type = 'way'
+        object_id = h(params['way'])
+    elsif params['relation']
+        object_type = 'relation'
+        object_id = h(params['relation'])
+    end
+end
+
 # Decide on a lat lon to initialise the map with. Various ways of doing this
-if params['lon'] and params['lat'] 
+if params['lon'] and params['lat']
+       # We only want to override the default 'object = true' zoom above
+       # if we get actual GET params, as opposed to say a cookie
+       lat_lon_zoom_via_params = true
+
        lon =  h(params['lon'])
        lat =  h(params['lat'])
        zoom =  h(params['zoom'] || '5')
@@ -103,6 +121,8 @@ end
   var brokenContentSize = $("content").offsetWidth == 0;
   var marker;
   var map;
+  var obj_type = false;
+  var obj_id = false;
 
   OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
 
@@ -123,6 +143,47 @@ end
     // IE requires Vector layers be initialised on page load, and not under deferred script conditions
     Event.observe(window, 'load', function() {addBoxToMap(bbox)});
     <%    end %>
+    <% elsif object %>
+    // Display node/way/relation on the map
+    obj_type = "<%= object_type %>";
+    obj_id = <%= object_id %>;
+    var url = "/api/<%= "#{API_VERSION}" %>/<%= object_type %>/<%= object_id %>";
+
+    if (obj_type != "node") {
+        url += "/full";
+    }
+
+    var osm_layer = new OpenLayers.Layer.GML("OSM", url, {
+        format: OpenLayers.Format.OSM,
+        projection: new OpenLayers.Projection("EPSG:4326")
+    });
+
+    osm_layer.events.register("loadend", osm_layer, function() {
+      if (this.features.length) {
+        var extent =  this.features[0].geometry.getBounds();
+          for (var i = 1; i < this.features.length; i++) {
+            extent.extend(this.features[i].geometry.getBounds());
+           }
+
+           <% unless lat_lon_zoom_via_params %>
+           if (extent) {
+             this.map.zoomToExtent(extent);
+           } else {
+             this.map.zoomToMaxExtent();
+           }
+           <% else %>
+           var center = new OpenLayers.LonLat(<%= lon %>, <%= lat %>);
+           var zoom = <%= zoom %>;
+           <% end %>
+  
+           var center = getMapCenter();
+      }
+    });
+   
+    map.addLayer(osm_layer);
+    osm_layer.loadGML();
+    osm_layer.loaded = true;
+
     <% else %>
     var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>);
     var zoom = <%= zoom %>;
@@ -179,7 +240,7 @@ end
     var extents = getMapExtent();
     var expiry = new Date();
 
-    updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top);
+    updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top, obj_type, obj_id);
 
     expiry.setYear(expiry.getFullYear() + 10); 
     document.cookie = "_osm_location=" + lonlat.lon + "|" + lonlat.lat + "|" + zoom + "|" + layers + "; expires=" + expiry.toGMTString();
index b475335d5e24306d9f192d6aff746d20df0accf7..cc87f8c943eb8b2039b548351e03b3806de6b68b 100644 (file)
@@ -79,7 +79,6 @@ en:
   browse:
     changeset:
       title: "Changeset"
-      map_title: "Changeset | {{name}}"
       changeset: "Changeset:"
       download: "Download {{changeset_xml_link}} or {{osmchange_xml_link}}"
       changesetxml: "Changeset XML"
@@ -106,8 +105,11 @@ en:
     map:
       loading: "Loading..."
       deleted: "Deleted"
-      view_larger_map: "View Larger Map"
-      view_main_map: "View on main map"
+      larger:
+        area: "View area on larger map"
+        node: "View node on larger map"
+        way: "View way on larger map"
+        relation: "View relation on larger map"
     node_details:
       coordinates: "Coordinates: "
       part_of: "Part of:"
@@ -119,7 +121,6 @@ en:
       view_details: "view details"
     node:
       node: "Node"
-      map_title: "Node | {{name}}"
       node_title: "Node: {{node_name}}"
       download: "{{download_xml_link}}, {{view_history_link}} or {{edit_link}}"
       download_xml: "Download XML"
@@ -144,7 +145,6 @@ en:
       as: "as"
     relation:
       relation: "Relation"
-      map_title: "Relation | {{name}}"
       relation_title: "Relation: {{relation_name}}"
       download: "{{download_xml_link}} or {{view_history_link}}"
       download_xml: "Download XML"
@@ -203,7 +203,6 @@ en:
       view_details: "view details"
     way:
       way: "Way"
-      map_title: "Way | {{name}}"
       way_title: "Way: {{way_name}}"
       download: "{{download_xml_link}}, {{view_history_link}} or {{edit_link}}"
       download_xml: "Download XML"
index 88412a6e9ae23e63dc93afd826f367b911b2dd16..883621ff18fc08da5774f6739a20982c5d88f744 100644 (file)
@@ -79,7 +79,6 @@ is:
   browse:
     changeset:
       title: "Breytingarsett"
-      map_title: "Breytingarsett | {{name}}"
       changeset: "Breytingarsett:"
       download: "Niðurhala breytingunni á {{changeset_xml_link}} eða á {{osmchange_xml_link}}"
       changesetxml: "Breytingarsetts XML sniði"
@@ -111,7 +110,6 @@ is:
       loading: "Hleð..."
       deleted: "Eytt"
       view_larger_map: "Skoða á stærra korti"
-      view_main_map: "Skoða á aðalkorti"
     node_details:
       coordinates: "Hnit: "
       part_of: "Hluti af:"
@@ -123,7 +121,6 @@ is:
       view_details: "sýna breytingarsögu"
     node:
       node: "Hnútur"
-      map_title: "Hnútur | {{name}}"
       node_title: "Hnútur: {{node_name}}"
       download: "{{download_xml_link}} eða {{view_history_link}} eða {{edit_link}}"
       download_xml: "Hala niður á XML sniði"
@@ -148,7 +145,6 @@ is:
       as: "sem"
     relation:
       relation: "Vensl"
-      map_title: "Vensl | {{name}}"
       relation_title: "Vensl: {{relation_name}}"
       download: "{{download_xml_link}} eða {{view_history_link}}"
       download_xml: "Hala niður á XML sniði"
@@ -206,7 +202,6 @@ is:
       view_details: "sýna breytingarsögu"
     way:
       way: "Vegur"
-      map_title: "Vegur | {{name}}"
       way_title: "Vegur: {{way_name}}"
       download: "{{download_xml_link}} eða {{view_history_link}} eða {{edit_link}}"
       download_xml: "Hala niður á XML sniði"
index 8ca792a614977f1c730106126f32b8f831f566e3..6dd3860dcf0f74221afeea9446bb9253280ece5a 100644 (file)
@@ -76,16 +76,12 @@ ActionController::Routing::Routes.draw do |map|
   map.connect '/browse', :controller => 'changeset', :action => 'list'
   map.connect '/browse/start', :controller => 'browse', :action => 'start'
   map.connect '/browse/way/:id', :controller => 'browse', :action => 'way', :id => /\d+/
-  map.connect '/browse/way/:id/map', :controller => 'browse', :action => 'way_map', :id => /\d+/
   map.connect '/browse/way/:id/history', :controller => 'browse', :action => 'way_history', :id => /\d+/
   map.connect '/browse/node/:id', :controller => 'browse', :action => 'node', :id => /\d+/
-  map.connect '/browse/node/:id/map', :controller => 'browse', :action => 'node_map', :id => /\d+/
   map.connect '/browse/node/:id/history', :controller => 'browse', :action => 'node_history', :id => /\d+/
   map.connect '/browse/relation/:id', :controller => 'browse', :action => 'relation', :id => /\d+/
-  map.connect '/browse/relation/:id/map', :controller => 'browse', :action => 'relation_map', :id => /\d+/
   map.connect '/browse/relation/:id/history', :controller => 'browse', :action => 'relation_history', :id => /\d+/
   map.connect '/browse/changeset/:id', :controller => 'browse', :action => 'changeset', :id => /\d+/
-  map.connect '/browse/changeset/:id/map', :controller => 'browse', :action => 'changeset_map', :id => /\d+/
   map.connect '/browse/changesets', :controller => 'changeset', :action => 'list'
   
   # web site
index aefd9c8b68fd2044119c255b6048f8698c41ca18..5340ea99eeb4b3a64ae1aa31060319dc2c002702 100644 (file)
@@ -2,7 +2,7 @@
  * Called as the user scrolls/zooms around to aniplate hrefs of the
  * view tab and various other links
  */
-function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat) {
+function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat, obj_type, obj_id) {
   var decimals = Math.pow(10, Math.floor(zoom/3));
   var node;
 
@@ -18,6 +18,9 @@ function updatelinks(lon,lat,zoom,layers,minlon,minlat,maxlon,maxlat) {
     if (layers) {
       args["layers"] = layers;
     }
+    if (obj_type && obj_id) {
+      args[obj_type] = obj_id;
+    }
     node.href = setArgs(node.href, args);
   }