openstreetmap-website/app/controllers/browse_controller.rb
Tom Hughes 652e94485f Use browser detection to decide how many features to show
Modern browsers are quite happy showing far more than 100 features in
the data browser, so increase the limit to 2000 by default, but keep it
restricted to 500 for IE8 and 100 for older IEs.
2012-06-05 12:59:13 +01:00

87 lines
3.3 KiB
Ruby

class BrowseController < ApplicationController
layout 'site'
before_filter :authorize_web
before_filter :set_locale
before_filter { |c| c.check_database_readable(true) }
around_filter :web_timeout, :except => [:start]
def start
@max_features = case
when browser.ie? && browser.version.to_i < 8 then 100
when browser.ie? && browser.version.to_i < 9 then 500
else 2000
end
end
def relation
@type = "relation"
@relation = Relation.find(params[:id])
@next = Relation.visible.where("id > ?", @relation.id).order("id ASC").first
@prev = Relation.visible.where("id < ?", @relation.id).order("id DESC").first
rescue ActiveRecord::RecordNotFound
render :action => "not_found", :status => :not_found
end
def relation_history
@type = "relation"
@relation = Relation.find(params[:id])
rescue ActiveRecord::RecordNotFound
render :action => "not_found", :status => :not_found
end
def way
@type = "way"
@way = Way.find(params[:id], :include => [:way_tags, {:changeset => :user}, {:nodes => [:node_tags, {:ways => :way_tags}]}, :containing_relation_members])
@next = Way.visible.where("id > ?", @way.id).order("id ASC").first
@prev = Way.visible.where("id < ?", @way.id).order("id DESC").first
# Used for edit link, takes approx middle node of way
@midnode = @way.nodes[@way.nodes.length/2]
rescue ActiveRecord::RecordNotFound
render :action => "not_found", :status => :not_found
end
def way_history
@type = "way"
@way = Way.find(params[:id], :include => [:way_tags, {:old_ways => {:changeset => :user}}])
rescue ActiveRecord::RecordNotFound
render :action => "not_found", :status => :not_found
end
def node
@type = "node"
@node = Node.find(params[:id])
@next = Node.visible.where("id > ?", @node.id).order("id ASC").first
@prev = Node.visible.where("id < ?", @node.id).order("id DESC").first
rescue ActiveRecord::RecordNotFound
render :action => "not_found", :status => :not_found
end
def node_history
@type = "node"
@node = Node.find(params[:id])
rescue ActiveRecord::RecordNotFound
render :action => "not_found", :status => :not_found
end
def changeset
@type = "changeset"
@changeset = Changeset.find(params[:id])
@node_pages, @nodes = paginate(:old_nodes, :conditions => {:changeset_id => @changeset.id}, :per_page => 20, :parameter => 'node_page')
@way_pages, @ways = paginate(:old_ways, :conditions => {:changeset_id => @changeset.id}, :per_page => 20, :parameter => 'way_page')
@relation_pages, @relations = paginate(:old_relations, :conditions => {:changeset_id => @changeset.id}, :per_page => 20, :parameter => 'relation_page')
@title = "#{I18n.t('browse.changeset.title')} | #{@changeset.id}"
@next = Changeset.where("id > ?", @changeset.id).order("id ASC").first
@prev = Changeset.where("id < ?", @changeset.id).order("id DESC").first
if @changeset.user.data_public?
@next_by_user = Changeset.where("user_id = ? AND id > ?", @changeset.user_id, @changeset.id).order("id ASC").first
@prev_by_user = Changeset.where("user_id = ? AND id < ?", @changeset.user_id, @changeset.id).order("id DESC").first
end
rescue ActiveRecord::RecordNotFound
render :action => "not_found", :status => :not_found
end
end