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:
commit
11aff90f63
473 changed files with 13052 additions and 912 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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|
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue