Merge branch 'master' into openid

Conflicts:
	app/controllers/user_controller.rb
	app/views/user/login.html.erb
	public/stylesheets/common.css
This commit is contained in:
Tom Hughes 2011-02-10 14:10:19 +00:00
commit 11aff90f63
473 changed files with 13052 additions and 912 deletions

View file

@ -46,7 +46,7 @@ class ApiController < ApplicationController
root = XML::Node.new 'gpx'
root['version'] = '1.0'
root['creator'] = 'OpenStreetMap.org'
root['xmlns'] = "http://www.topografix.com/GPX/1/0/"
root['xmlns'] = "http://www.topografix.com/GPX/1/0"
doc.root = root

View file

@ -134,8 +134,7 @@ class ApplicationController < ActionController::Base
def check_api_readable
if STATUS == :database_offline or STATUS == :api_offline
response.headers['Error'] = "Database offline for maintenance"
render :nothing => true, :status => :service_unavailable
report_error "Database offline for maintenance", :service_unavailable
return false
end
end
@ -143,16 +142,14 @@ class ApplicationController < ActionController::Base
def check_api_writable
if STATUS == :database_offline or STATUS == :database_readonly or
STATUS == :api_offline or STATUS == :api_readonly
response.headers['Error'] = "Database offline for maintenance"
render :nothing => true, :status => :service_unavailable
report_error "Database offline for maintenance", :service_unavailable
return false
end
end
def require_public_data
unless @user.data_public?
response.headers['Error'] = "You must make your edits public to upload new data"
render :nothing => true, :status => :forbidden
report_error "You must make your edits public to upload new data", :forbidden
return false
end
end
@ -165,7 +162,18 @@ class ApplicationController < ActionController::Base
def report_error(message, status = :bad_request)
# Todo: some sort of escaping of problem characters in the message
response.headers['Error'] = message
render :text => message, :status => status
if request.headers['X-Error-Format'] and
request.headers['X-Error-Format'].downcase == "xml"
result = OSM::API.new.get_xml_doc
result.root.name = "osmError"
result.root << (XML::Node.new("status") << interpret_status(status))
result.root << (XML::Node.new("message") << message)
render :text => result.to_s, :content_type => "text/xml"
else
render :text => message, :status => status
end
end
def set_locale

View file

@ -72,8 +72,10 @@ class BrowseController < ApplicationController
@next = Changeset.find(:first, :order => "id ASC", :conditions => [ "id > :id", { :id => @changeset.id }] )
@prev = Changeset.find(:first, :order => "id DESC", :conditions => [ "id < :id", { :id => @changeset.id }] )
@next_by_user = Changeset.find(:first, :order => "id ASC", :conditions => [ "id > :id AND user_id = :user_id", {:id => @changeset.id, :user_id => @changeset.user_id }] )
@prev_by_user = Changeset.find(:first, :order => "id DESC", :conditions => [ "id < :id AND user_id = :user_id", {:id => @changeset.id, :user_id => @changeset.user_id }] )
if @changeset.user.data_public?
@next_by_user = Changeset.find(:first, :order => "id ASC", :conditions => [ "id > :id AND user_id = :user_id", { :id => @changeset.id, :user_id => @changeset.user_id }] )
@prev_by_user = Changeset.find(:first, :order => "id DESC", :conditions => [ "id < :id AND user_id = :user_id", { :id => @changeset.id, :user_id => @changeset.user_id }] )
end
rescue ActiveRecord::RecordNotFound
render :action => "not_found", :status => :not_found
end

View file

@ -234,7 +234,7 @@ class GeocoderController < ApplicationController
end
# ask nominatim
response = fetch_xml("http://nominatim.openstreetmap.org/search?format=xml&q=#{escape_query(query)}#{viewbox}#{exclude}&accept-language=#{request.user_preferred_languages.join(',')}")
response = fetch_xml("#{NOMINATIM_URL}search?format=xml&q=#{escape_query(query)}#{viewbox}#{exclude}&accept-language=#{request.user_preferred_languages.join(',')}")
# create result array
@results = Array.new
@ -355,7 +355,7 @@ class GeocoderController < ApplicationController
@results = Array.new
# ask OSM namefinder
response = fetch_xml("http://nominatim.openstreetmap.org/reverse?lat=#{lat}&lon=#{lon}&zoom=#{zoom}&accept-language=#{request.user_preferred_languages.join(',')}")
response = fetch_xml("#{NOMINATIM_URL}reverse?lat=#{lat}&lon=#{lon}&zoom=#{zoom}&accept-language=#{request.user_preferred_languages.join(',')}")
# parse the response
response.elements.each("reversegeocode/result") do |result|

View file

@ -30,4 +30,41 @@ class SiteController < ApplicationController
def key
expires_in 7.days, :public => true
end
def edit
editor = params[:editor] || @user.preferred_editor || DEFAULT_EDITOR
if editor == "remote"
render :action => :index
else
# 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']
@lon = Trace.find(params['gpx']).longitude
@lat = Trace.find(params['gpx']).latitude
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
end

View file

@ -108,6 +108,7 @@ class UserController < ApplicationController
if @user.save
flash[:notice] = t 'user.new.flash create success message', :email => @user.email
Notifier.deliver_signup_confirm(@user, @user.tokens.create(:referer => session.delete(:referer)))
session[:token] = @user.tokens.create.token
redirect_to :action => 'login'
else
render :action => 'new'
@ -139,6 +140,12 @@ class UserController < ApplicationController
@user.home_lat = params[:user][:home_lat]
@user.home_lon = params[:user][:home_lon]
if params[:user][:preferred_editor] == "default"
@user.preferred_editor = nil
else
@user.preferred_editor = params[:user][:preferred_editor]
end
@user.openid_url = nil if params[:user][:openid_url].empty?
if params[:user][:openid_url].length > 0 and
@ -283,14 +290,29 @@ class UserController < ApplicationController
user.save!
referer = token.referer
token.destroy
session[:user] = user.id
unless referer.nil?
flash[:notice] = t('user.confirm.success')
redirect_to referer
if session[:token]
token = UserToken.find_by_token(session[:token])
session.delete(:token)
else
flash[:notice] = t('user.confirm.success') + "<br /><br />" + t('user.confirm.before you start')
redirect_to :action => 'account', :display_name => user.display_name
token = nil
end
if token.nil? or token.user != user
flash[:notice] = t('user.confirm.success')
redirect_to :action => :login, :referer => referer
else
token.destroy
session[:user] = user.id
if referer.nil?
flash[:notice] = t('user.confirm.success') + "<br /><br />" + t('user.confirm.before you start')
redirect_to :action => :account, :display_name => user.display_name
else
flash[:notice] = t('user.confirm.success')
redirect_to referer
end
end
end
else