]> git.openstreetmap.org Git - rails.git/blob - app/controllers/site_controller.rb
Include layers in hash
[rails.git] / app / controllers / site_controller.rb
1 class SiteController < ApplicationController
2   layout 'site', :except => [:key, :permalink]
3   layout false, :only => [:key, :permalink]
4
5   before_filter :authorize_web
6   before_filter :set_locale
7   before_filter :require_user, :only => [:edit]
8   before_filter :require_oauth, :only => [:index]
9
10   def index
11     anchor = []
12
13     if params[:lat] && params[:lon]
14       anchor << "map=#{params.delete(:zoom) || 5}/#{params.delete(:lat)}/#{params.delete(:lon)}"
15     end
16
17     if params[:layers]
18       anchor << "layers=#{params.delete(:layers)}"
19     elsif params.delete(:notes) == 'yes'
20       anchor << "layers=N"
21     end
22
23     if anchor.present?
24       redirect_to params.merge(:anchor => anchor.join('&'))
25       return
26     end
27
28     unless STATUS == :database_readonly or STATUS == :database_offline
29       session[:location] ||= OSM::IPLocation(request.env['REMOTE_ADDR'])
30     end
31   end
32
33   def permalink
34     lon, lat, zoom = ShortLink::decode(params[:code])
35     new_params = params.except(:code, :lon, :lat, :zoom)
36
37     if new_params.has_key? :m
38       new_params.delete :m
39       new_params[:mlat] = lat
40       new_params[:mlon] = lon
41     end
42
43     new_params[:controller] = 'site'
44     new_params[:action] = 'index'
45     new_params[:anchor] = "#{zoom}/#{lat}/#{lon}"
46
47     redirect_to new_params
48   end
49
50   def key
51     expires_in 7.days, :public => true
52   end
53
54   def edit
55     editor = params[:editor] || @user.preferred_editor || DEFAULT_EDITOR
56
57     if editor == "remote"
58       render :action => :index
59       return
60     end
61
62     if params[:node]
63       bbox = Node.find(params[:node]).bbox.to_unscaled
64       @lat = bbox.centre_lat
65       @lon = bbox.centre_lon
66     elsif params[:way]
67       bbox = Way.find(params[:way]).bbox.to_unscaled
68       @lat = bbox.centre_lat
69       @lon = bbox.centre_lon
70     elsif params[:gpx]
71       trace = Trace.visible_to(@user).find(params[:gpx])
72       @lat = trace.latitude
73       @lon = trace.longitude
74     end
75   end
76
77   def copyright
78     @locale = params[:copyright_locale] || I18n.locale
79   end
80
81   def preview
82     render :text => RichText.new(params[:format], params[:text]).to_html
83   end
84
85   def id
86     render "id", :layout => false
87   end
88 end