From: Matt Amos Date: Sun, 14 Nov 2010 12:40:44 +0000 (+0000) Subject: Initial work on support for multiple editors X-Git-Tag: live~6303^2~41 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/cd66a5db99fda4920ed559ec71163d5d01ba1f4a Initial work on support for multiple editors --- diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index 1478c5773..0a1a55301 100644 --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -30,4 +30,38 @@ class SiteController < ApplicationController def key expires_in 7.days, :public => true end + + def edit + session[:token] = @user.tokens.create.token unless session[:token] and UserToken.find_by_token(session[:token]) + + @preferred_editor = @user.preferred_editor || DEFAULT_EDITOR + + # Decide on a lat lon to initialise potlatch with. Various ways of doing this + if params['lon'] and params['lat'] + @lon = params['lon'].to_f + @lat = params['lat'].to_f + @zoom = params['zoom'].to_i + + elsif params['mlon'] and params['mlat'] + @lon = params['mlon'].to_f + @lat = params['mlat'].to_f + @zoom = params['zoom'].to_i + + elsif params['gpx'] + #use gpx id to locate (dealt with below) + + elsif cookies.key?("_osm_location") + @lon, @lat, @zoom, layers = cookies["_osm_location"].split("|") + + elsif @user and !@user.home_lon.nil? and !@user.home_lat.nil? + @lon = @user.home_lon + @lat = @user.home_lat + + else + #catch all. Do nothing. lat=nil, lon=nil + #Currently this results in potlatch starting up at 0,0 (Atlantic ocean). + end + + @zoom = '14' if @zoom.nil? + end end diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 19e8aeb7c..d73d38a17 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -109,6 +109,8 @@ class UserController < ApplicationController @user.home_lat = params[:user][:home_lat] @user.home_lon = params[:user][:home_lon] + @user.preferred_editor = params[:user][:preferred_editor] + if @user.save set_locale diff --git a/app/models/user.rb b/app/models/user.rb index 1a50f7053..ecf93b6f7 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -33,6 +33,7 @@ class User < ActiveRecord::Base validates_numericality_of :home_lat, :allow_nil => true validates_numericality_of :home_lon, :allow_nil => true validates_numericality_of :home_zoom, :only_integer => true, :allow_nil => true + validates_inclusion_of :preferred_editor, :in => Editors::ALL_EDITORS, :allow_nil => true before_save :encrypt_password diff --git a/app/views/site/_josm.html.erb b/app/views/site/_josm.html.erb new file mode 100644 index 000000000..16f33bde0 --- /dev/null +++ b/app/views/site/_josm.html.erb @@ -0,0 +1,6 @@ +
+ <% query = "lat=#{@lat || 0}&lon=#{@lon || 0}&zoom=#{@zoom}" %> + +
diff --git a/app/views/site/_potlatch.html.erb b/app/views/site/_potlatch.html.erb new file mode 100644 index 000000000..c255cef91 --- /dev/null +++ b/app/views/site/_potlatch.html.erb @@ -0,0 +1,40 @@ +
+ <%= t 'site.edit.flash_player_required' %> +
+ +<%= javascript_include_tag 'swfobject.js' %> + diff --git a/app/views/site/edit.html.erb b/app/views/site/edit.html.erb index e5bffd1e4..b89184404 100644 --- a/app/views/site/edit.html.erb +++ b/app/views/site/edit.html.erb @@ -19,78 +19,9 @@ <%= render :partial => 'sidebar', :locals => { :onopen => "resizeMap();", :onclose => "resizeMap();" } %> <%= render :partial => 'search' %> -<% -session[:token] = @user.tokens.create.token unless session[:token] and UserToken.find_by_token(session[:token]) +<%= render :partial => @preferred_editor %> -# Decide on a lat lon to initialise potlatch with. Various ways of doing this -if params['lon'] and params['lat'] - lon = h(params['lon']) - lat = h(params['lat']) - zoom = h(params['zoom']) - -elsif params['mlon'] and params['mlat'] - lon = h(params['mlon']) - lat = h(params['mlat']) - zoom = h(params['zoom']) - -elsif params['gpx'] - #use gpx id to locate (dealt with below) - -elsif cookies.key?("_osm_location") - lon,lat,zoom,layers = cookies["_osm_location"].split("|") - -elsif @user and !@user.home_lon.nil? and !@user.home_lat.nil? - lon = @user.home_lon - lat = @user.home_lat - -else - #catch all. Do nothing. lat=nil, lon=nil - #Currently this results in potlatch starting up at 0,0 (Atlantic ocean). -end - -zoom='14' if zoom.nil? -%> - -
- <%= t 'site.edit.flash_player_required' %> -
- -<%= javascript_include_tag 'swfobject.js' %>