From: Tom Hughes Date: Mon, 7 Apr 2008 23:23:15 +0000 (+0000) Subject: Commit initial work on export tab. X-Git-Tag: live~7842^2~21 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/1df50231faed168460a305be281355fd7e2a05c1 Commit initial work on export tab. --- diff --git a/app/controllers/export_controller.rb b/app/controllers/export_controller.rb index f1c6286ce..9b8d878f2 100644 --- a/app/controllers/export_controller.rb +++ b/app/controllers/export_controller.rb @@ -1,6 +1,7 @@ class ExportController < ApplicationController def start render :update do |page| + page.replace_html :sidebar_title, 'Export' page.replace_html :sidebar_content, :partial => 'start' page.call "openSidebar" end diff --git a/app/views/export/_start.rhtml b/app/views/export/_start.rhtml new file mode 100644 index 000000000..41fd790f2 --- /dev/null +++ b/app/views/export/_start.rhtml @@ -0,0 +1,103 @@ +<% form_tag :action => 'next' do %> + +

Area to Export

+ +
+ <%= text_field('export', 'maxlat', { :size => 10, :class => "export_bound" }) %> +
+ <%= text_field('export', 'minlon', { :size => 10, :class => "export_bound" }) %> + <%= text_field('export', 'maxlon', { :size => 10, :class => "export_bound" }) %> +
+ <%= text_field('export', 'minlat', { :size => 10, :class => "export_bound" }) %> +
+ +

Format to Export

+ +
+ <%= radio_button('export', 'format', 'osm' ) %>OpenStreetMap XML Data +
+ <%= radio_button('export', 'format', 'png' ) %>PNG Image +
+ <%= radio_button('export', 'format', 'pdf' ) %>PDF Document +
+ <%= radio_button('export', 'format', 'svg' ) %>SVG Document +
+ +
+

Licence

+ +
+

OSM license agreement blah blah blah...

+
+ +
+

Options

+ +
+

Scale 1 : <%= text_field('export', 'mapnik_scale', { :size => 10 }) %>

+
+
+ +<% end %> + + diff --git a/app/views/layouts/site.rhtml b/app/views/layouts/site.rhtml index bcb479cca..e0fd0e391 100644 --- a/app/views/layouts/site.rhtml +++ b/app/views/layouts/site.rhtml @@ -36,14 +36,16 @@ <% viewclass = '' editclass = '' + exportclass = '' traceclass = '' viewclass = 'active' if params['controller'] == 'site' and params['action'] == 'index' editclass = 'active' if params['controller'] == 'site' and params['action'] == 'edit' - editclass = 'active' if params['controller'] == 'campaign' + exportclass = 'active' if params['controller'] == 'site' and params['action'] == 'export' traceclass = 'active' if params['controller'] == 'trace' %>
  • <%= link_to 'View', {:controller => 'site', :action => 'index'}, {:id => 'viewanchor', :title => 'view maps', :class => viewclass } %>
  • <%= link_to 'Edit', {:controller => 'site', :action => 'edit'}, {:id => 'editanchor', :title => 'edit maps', :class => editclass } %>
  • +
  • <%= link_to 'Export', {:controller => 'site', :action => 'export'}, {:id => 'exportanchor', :title => 'export map data', :class => exportclass } %>
  • <%= link_to 'GPS traces', {:controller => 'trace', :action => 'list'}, {:id => 'traceanchor', :title => 'manage traces', :class => traceclass } %>
  • diff --git a/app/views/site/export.rhtml b/app/views/site/export.rhtml new file mode 100644 index 000000000..1140a2583 --- /dev/null +++ b/app/views/site/export.rhtml @@ -0,0 +1,162 @@ +<% content_for :greeting do %> +<% if @user and !@user.home_lon.nil? and !@user.home_lat.nil? %> +<%= link_to_function 'home', "setPosition(#{@user.home_lat}, #{@user.home_lon}, 10)" %> | +<% end %> +<% end %> + +<%= render :partial => 'sidebar', :locals => { :onopen => "resizeMap();", :onclose => "resizeMap();" } %> + +
    +
    + +<% if params['mlon'] and params['mlat'] %> +<% marker = true %> +<% mlon = h(params['mlon']) %> +<% mlat = h(params['mlat']) %> +<% end %> + +<% if params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat'] %> +<% bbox = true %> +<% minlon = h(params['minlon']) %> +<% minlat = h(params['minlat']) %> +<% maxlon = h(params['maxlon']) %> +<% maxlat = h(params['maxlat']) %> +<% end %> + +<% if params['lon'] and params['lat'] %> +<% lon = h(params['lon']) %> +<% lat = h(params['lat']) %> +<% zoom = h(params['zoom'] || '5') %> +<% layers = h(params['layers']) %> +<% elsif params['mlon'] and params['mlat'] %> +<% lon = h(params['mlon']) %> +<% lat = h(params['mlat']) %> +<% zoom = h(params['zoom'] || '12') %> +<% layers = h(params['layers']) %> +<% elsif cookies.key?("location") %> +<% lon,lat,zoom,layers = cookies["location"].split(",") %> +<% elsif @user and !@user.home_lon.nil? and !@user.home_lat.nil? %> +<% lon = @user.home_lon %> +<% lat = @user.home_lat %> +<% zoom = '10' %> +<% else %> +<% session[:location] = OSM::IPLocation(request.env['REMOTE_ADDR']) unless session[:location] %> +<% if session[:location] %> +<% bbox = true %> +<% minlon = session[:location][:minlon] %> +<% minlat = session[:location][:minlat] %> +<% maxlon = session[:location][:maxlon] %> +<% maxlat = session[:location][:maxlat] %> +<% else %> +<% lon = '-0.1' %> +<% lat = '51.5' %> +<% zoom = h(params['zoom'] || '5') %> +<% layers = h(params['layers']) %> +<% end %> +<% end %> + +<%= javascript_include_tag '/openlayers/OpenLayers.js' %> +<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %> +<%= javascript_include_tag 'map.js' %> + + + diff --git a/config/routes.rb b/config/routes.rb index 1d3a13565..b44139c4a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -64,6 +64,7 @@ ActionController::Routing::Routes.draw do |map| map.connect '/user/upload_image', :controller => 'user', :action => 'upload_image' map.connect '/index.html', :controller => 'site', :action => 'index' map.connect '/edit.html', :controller => 'site', :action => 'edit' + map.connect '/export.html', :controller => 'site', :action => 'export' map.connect '/search.html', :controller => 'way_tag', :action => 'search' map.connect '/login.html', :controller => 'user', :action => 'login' map.connect '/logout.html', :controller => 'user', :action => 'logout' @@ -121,6 +122,9 @@ ActionController::Routing::Routes.draw do |map| map.connect '/geocoder/search', :controller => 'geocoder', :action => 'search' map.connect '/geocoder/description', :controller => 'geocoder', :action => 'description' + # export + map.connect '/export/start', :controller => 'export', :action => 'start' + # messages map.connect '/user/:display_name/inbox', :controller => 'message', :action => 'inbox' diff --git a/public/javascripts/map.js b/public/javascripts/map.js index 369df8987..07c6b32d1 100644 --- a/public/javascripts/map.js +++ b/public/javascripts/map.js @@ -8,6 +8,10 @@ OpenLayers._getScriptLocation = function () { function createMap(divName) { map = new OpenLayers.Map(divName, { + maxExtent: new OpenLayers.Bounds(-20037508,-20037508,20037508,20037508), + maxResolution: 156543, + units: "m", + projection: "EPSG:900913", controls: [ new OpenLayers.Control.ArgParser(), new OpenLayers.Control.Attribution(), @@ -28,11 +32,8 @@ function createMap(divName) { var numZoomLevels = Math.max(mapnik.numZoomLevels, osmarender.numZoomLevels); markers = new OpenLayers.Layer.Markers("Markers", { - displayInLayerSwitcher: false, numZoomLevels: numZoomLevels, - maxExtent: new OpenLayers.Bounds(-20037508,-20037508,20037508,20037508), - maxResolution: 156543, - units: "m", - projection: "EPSG:41001" + displayInLayerSwitcher: false, + numZoomLevels: numZoomLevels }); map.addLayer(markers); diff --git a/public/stylesheets/site.css b/public/stylesheets/site.css index f2306e7b4..bb8bbe999 100644 --- a/public/stylesheets/site.css +++ b/public/stylesheets/site.css @@ -580,3 +580,31 @@ input { #attribution { display: none; } + +.export_heading { + margin: 0px; + padding: 3px 6px 3px 6px; + border: 1px solid #ccc; + background: #ddd; +} + +.export_bounds { + width: 100%; + text-align: center; +} + +.export_bound { + margin: 5px; +} + +.export_details { + padding: 2px 6px 2px 6px; +} + +#export_osm { + display: none; +} + +#export_mapnik { + display: none; +}