]> git.openstreetmap.org Git - rails.git/commitdiff
Merge 15722:15806 from head and adjust new views to rails 2 style names.
authorTom Hughes <tom@compton.nu>
Tue, 9 Jun 2009 21:50:37 +0000 (21:50 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 9 Jun 2009 21:50:37 +0000 (21:50 +0000)
1  2 
app/controllers/changeset_controller.rb
app/views/changeset/_changeset.html.erb
app/views/changeset/_changeset_paging_nav.html.erb
app/views/changeset/list.html.erb
app/views/changeset/list.rss.builder
app/views/layouts/site.html.erb
app/views/layouts/site.rss.builder
app/views/user/view.html.erb
config/locales/en.yml
config/routes.rb

index 8c20ddb4d59fdd8662f2a62b232eafbf402c1dbf,ca42751d37ac670c4504d5a492e9012af6826f00..d7f3d39c833aba270e7b13c18db3edc9d9c1452f
@@@ -255,54 -255,79 +255,54 @@@ class ChangesetController < Application
    # list edits (open changesets) in reverse chronological order
    def list
      conditions = conditions_nonempty
 -    
 -    
 -   # @changesets = Changeset.find(:all, :order => "closed_at DESC", :conditions => ['closed_at < ?', DateTime.now], :limit=> 20)
 -   
 -   
 -   #@edit_pages, @edits = paginate(:changesets,
 -   #                                :include => [:user, :changeset_tags],
 -   #                                :conditions => conditions,
 -   #                                :order => "changesets.created_at DESC",
 -   #                                :per_page => 20)
 -   #
 -    
 -   @edits =  Changeset.find(:all,
 -                                   :order => "changesets.created_at DESC",
 -                                   :conditions => conditions,
 -                                   :limit => 20)
 -    
 -  end
 -  
 -  ##
 -  # list edits (changesets) belonging to a user
 -  def list_user
 -    user = User.find_by_display_name(params[:display_name], :conditions => {:visible => true})
 -    
 -    if user
 -      @display_name = user.display_name
 -      if not user.data_public? and @user != user
 -        @edits = nil
 -        render
 -      else
 -        conditions = cond_merge conditions, ['user_id = ?', user.id]
 -        conditions = cond_merge conditions, conditions_nonempty
 -        @edit_pages, @edits = paginate(:changesets,
 -                                        :include => [:user, :changeset_tags],
 -                                        :conditions => conditions,
 -                                        :order => "changesets.created_at DESC",
 -                                        :per_page => 20)
 +
 +    if params[:display_name]
 +      user = User.find_by_display_name(params[:display_name], :conditions => { :visible => true })
 +
 +      if user 
 +        if user.data_public? or user == @user
 +          conditions = cond_merge conditions, ['user_id = ?', user.id]
 +        else
 +          conditions = cond_merge conditions, ['false']
 +        end
-       elsif params[:format] == 'rhtml'
++      elsif request.format == :html
 +        @title = t 'user.no_such_user.title'
 +        @not_found_user = params[:display_name]
 +        render :template => 'user/no_such_user', :status => :not_found
        end
 -    else
 -      @not_found_user = params[:display_name]
 -      render :template => 'user/no_such_user', :status => :not_found
      end
 -  end
 -  
 -  ##
 -  # list changesets in a bbox
 -  def list_bbox
 -    # support 'bbox' param or alternatively 'minlon', 'minlat' etc      
 -    if params['bbox']
 -       bbox = params['bbox']
 -    elsif params['minlon'] and params['minlat'] and params['maxlon'] and params['maxlat']
 -       bbox = h(params['minlon']) + ',' + h(params['minlat']) + ',' + h(params['maxlon']) + ',' + h(params['maxlat'])
 +
 +    if params[:bbox]
 +      bbox = params[:bbox]
 +    elsif params[:minlon] and params[:minlat] and params[:maxlon] and params[:maxlat]
 +      bbox = params[:minlon] + ',' + params[:minlat] + ',' + params[:maxlon] + ',' + params[:maxlat]
 +    end
 +
 +    if bbox
 +      conditions = cond_merge conditions, conditions_bbox(bbox)
 +      bbox = BoundingBox.from_s(bbox)
 +      bbox_link = "<a href='#{url_for(:controller => "site", :action => "index", :minlon => bbox.min_lon, :minlat => bbox.min_lat, :maxlon => bbox.max_lon, :maxlat => bbox.max_lat, :box => "yes")}'>#{bbox.to_s}</a>"
 +    end
 +
 +    @title =  t 'changeset.list.title'
 +
 +    if user and bbox
 +      @description = t 'changeset.list.description_user_bbox', :user => user.display_name, :bbox => bbox_link
 +    elsif user
 +      @description = t 'changeset.list.description_user', :user => user.display_name
 +    elsif bbox
 +      @description = t 'changeset.list.description_bbox', :bbox => bbox_link
      else
 -      #TODO: fix bugs in location determination for history tab (and other tabs) then uncomment this redirect
 -      #redirect_to :action => 'list'
 -      
 -      # For now just render immediately, and skip the db
 -      render
 -      return
 +      @description = t 'changeset.list.description'
      end
 -       
 -    conditions = conditions_bbox(bbox);
 -    conditions = cond_merge conditions, conditions_nonempty
 -    
 +
      @edit_pages, @edits = paginate(:changesets,
                                     :include => [:user, :changeset_tags],
                                     :conditions => conditions,
                                     :order => "changesets.created_at DESC",
                                     :per_page => 20)
 -                                   
 -    @bbox = sanitise_boundaries(bbox.split(/,/)) unless bbox==nil
    end
 -  
 +
  private
    #------------------------------------------------------------
    # utility functions below.
index 314510eb835e396c18ea531289df912e2f1c076c,6ec1de43ceffd835dc1c975d9d86e0c17e868016..314510eb835e396c18ea531289df912e2f1c076c
@@@ -14,7 -14,7 +14,7 @@@
    <%if showusername %>  
      <td class="<%= cl %> user">
      <% if changeset.user.data_public? %>
 -      <%= link_to h(changeset.user.display_name), :controller => "changeset", :action => "list_user", :display_name => changeset.user.display_name %>
 +      <%= link_to h(changeset.user.display_name), :controller => "changeset", :action => "list", :display_name => changeset.user.display_name %>
      <% else %>
        <i><%= t'changeset.changeset.anonymous' %></i>
      <% end %>
@@@ -25,7 -25,7 +25,7 @@@
      <% if changeset.tags['comment'] %>
        <%= h(changeset.tags['comment']) %>
      <% else %>
 -      <i><%= t'changeset.changeset.no_comment' %></i>
 +      <%= t'changeset.changeset.no_comment' %>
      <% end %>
    </td>
  
index 94edfc31ed1f673aceba4fe62a5c50431fb8b449,b8ac1a65fca39f394c5aaf7762ed9e3013535437..94edfc31ed1f673aceba4fe62a5c50431fb8b449
@@@ -1,4 -1,3 +1,4 @@@
 +<p>
  <% current_page = @edit_pages.current_page %>
  
  <%= t'changeset.changeset_paging_nav.showing_page' %> 
@@@ -17,4 -16,3 +17,4 @@@ if @edit_pages.page_count > 
  <%
  end
  %>
 +</p>
index c3d88bf6e2c6614daf4f9d61be7e9bab56aa69d1,cfe4afd3faa5d0d9de765505f5a797220a3202ec..c3d88bf6e2c6614daf4f9d61be7e9bab56aa69d1
@@@ -1,12 -1,7 +1,12 @@@
 -<h1><%= t'changeset.list.recent_changes' %></h1>
 -<p><%= t'changeset.list.recently_edited_changesets' %></p>
 +<h1><%= @title %></h1>
 +<p><%= @description %></p>
  
 -<%= render :partial => 'changesets' %>
 +<%= render :partial => 'changeset_paging_nav' %>
 +<%= render :partial => 'changesets', :locals => { :showusername => !params.has_key?(:display_name) } %>
 +<%= render :partial => 'changeset_paging_nav' %>
  
 -<p><%= t'changeset.list.for_more_changesets' %></p>
 -<br>
 +<%= rss_link_to params.merge({ :format => 'rxml' }) %>
 +
 +<% content_for :head do %>
 +<%= auto_discovery_link_tag :atom, params.merge({ :format => 'rxml' }) %>
 +<% end %>
index 0251367fcdaf97ae9c72d5027bf9dd25200337f6,0000000000000000000000000000000000000000..0251367fcdaf97ae9c72d5027bf9dd25200337f6
mode 100644,000000..100644
--- /dev/null
@@@ -1,47 -1,0 +1,47 @@@
 +xml.rss("version" => "2.0", 
 +        "xmlns:geo" => "http://www.w3.org/2003/01/geo/wgs84_pos#",
 +        "xmlns:georss" => "http://www.georss.org/georss") do
 +  xml.channel do
 +    xml.title @title
 +    xml.description @description
 +    xml.link url_for(params.merge({ :only_path => false }))
 +    xml.image do
 +      xml.url "http://www.openstreetmap.org/images/mag_map-rss2.0.png"
 +      xml.title "OpenStreetMap"
 +      xml.width "100"
 +      xml.height "100"
 +      xml.link url_for(params.merge({ :only_path => false }))
 +    end
 +
 +    for changeset in @edits
 +      xml.item do
 +        xml.title t('browse.changeset.title') + " " + h(changeset.id)
 +        xml.link url_for(:controller => 'browse', :action => "changeset", :id => changeset.id, :only_path => false)
 +        xml.guid url_for(:controller => 'browse', :action => "changeset", :id => changeset.id, :only_path => false)
 +        if changeset.user.data_public?
 +          xml.author changeset.user.display_name
 +        end
 +        if changeset.tags['comment']
 +          xml.description changeset.tags['comment']
 +        end
 +        xml.pubDate changeset.created_at.to_s(:rfc822)
 +        if changeset.user.data_public?
 +          xml.comments url_for(:controller => "message", :action => "new", :id => changeset.user.id, :only_path => false)
 +        end
 +
 +        unless changeset.min_lat.nil?
 +          minlon = changeset.min_lon/GeoRecord::SCALE.to_f
 +          minlat = changeset.min_lat/GeoRecord::SCALE.to_f
 +          maxlon = changeset.max_lon/GeoRecord::SCALE.to_f
 +          maxlat = changeset.max_lat/GeoRecord::SCALE.to_f
 +
 +          # See http://georss.org/Encodings#Geometry
 +          lower_corner = "#{minlat} #{minlon}"
 +          upper_corner = "#{maxlat} #{maxlon}"
 +
 +          xml.georss :box, lower_corner + " " + upper_corner
 +        end
 +      end
 +    end
 +  end
 +end
index 7cefc59d8bd077a40109133fcbcaa13e596855b5,779ff6cb3d0def7af412cec13eec3891c524f745..37d2b1962296967b693d30234b6d8ac1f2610a8c
@@@ -1,5 -1,5 +1,5 @@@
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%= I18n.locale %>" lang="<%= I18n.locale %>" dir="<% t'html.dir' %>">
    <head>
      <%= javascript_include_tag 'prototype' %>
      <%= javascript_include_tag 'site' %>
@@@ -9,7 -9,7 +9,7 @@@
      <%= tag("link", { :rel => "search", :type => "application/opensearchdescription+xml", :title => "OpenStreetMap Search", :href => "/opensearch/osm.xml" }) %>
      <%= tag("meta", { :name => "description", :content => "OpenStreetMap is the free wiki world map." }) %>
      <%= yield :head %>
-     <title>OpenStreetMap<%= ' | '+ h(@title) if @title %></title>
+     <title><%= t 'layouts.project_name.title' %><%= ' | '+ h(@title) if @title %></title>
    </head>
    <body>
      <div id="content">
  
      <span id="greeting">
        <% if @user and @user.id %>
-         <%= t 'layouts.welcome_user', :user_link => (link_to h(@user.display_name), {:controller => 'user', :action => 'view', :display_name => @user.display_name}) %> | 
-         <% @inbox_weight = 'bold' if @user.new_messages.size > 0 %>
+         <%= t 'layouts.welcome_user', :user_link => (link_to h(@user.display_name), {:controller => 'user', :action => 'view', :display_name => @user.display_name}, :title => t('layouts.welcome_user_link_tooltip')) %> | 
          <%= yield :greeting %>
-         <%= link_to t('layouts.inbox', :size => @user.new_messages.size), {:controller => 'message', :action => 'inbox', :display_name => @user.display_name}, {:style => "font-weight: #{@inbox_weight};" } %> |
-         <%= link_to t('layouts.logout'), {:controller => 'user', :action => 'logout', :referer => request.request_uri}, {:id => 'logoutanchor'}%>
-       <% else %>               
-         <%= link_to t('layouts.log_in'), {:controller => 'user', :action => 'login', :referer => request.request_uri}, {:id => 'loginanchor'}%> |
-         <%= link_to t('layouts.sign_up'), {:controller => 'user', :action => 'new'}, {:id => 'registeranchor'} %>
+         <%
+         inbox_attributes = {}
+         inbox_attributes[:class] = 'greeting-bar-unread' if @user.new_messages.size > 0
+         inbox_attributes[:title] = t 'layouts.inbox_tooltip', :count => @user.new_messages.size
+         %>
+         <%= link_to t('layouts.inbox', :count => @user.new_messages.size), {:controller => 'message', :action => 'inbox', :display_name => @user.display_name}, inbox_attributes %> |
+         <%= link_to t('layouts.logout'), {:controller => 'user', :action => 'logout', :referer => request.request_uri}, {:id => 'logoutanchor', :title => t('layouts.logout_tooltip')}%>
+       <% else %>
+         <%= link_to t('layouts.log_in'), {:controller => 'user', :action => 'login', :referer => request.request_uri}, {:id => 'loginanchor', :title => t('layouts.log_in_tooltip')} %> |
+         <%= link_to t('layouts.sign_up'), {:controller => 'user', :action => 'new'}, {:id => 'registeranchor', :title => t('layouts.sign_up_tooltip')} %>
        <% end %>
      </span>
  
          traceclass = ''
          viewclass = 'active' if params['controller'] == 'site' and params['action'] == 'index' 
          editclass = 'active' if params['controller'] == 'site' and params['action'] == 'edit' 
 -        historyclass = 'active' if params['controller'] == 'changeset' and params['action'] == 'list_bbox
 +        historyclass = 'active' if params['controller'] == 'changeset' and params['action'] == 'list' 
          exportclass = 'active' if params['controller'] == 'site' and params['action'] == 'export'
          traceclass = 'active' if params['controller'] == 'trace'
          diaryclass = 'active' if params['controller'] == 'diary_entry'
          %>
          <li><%= link_to t('layouts.view'), {:controller => 'site', :action => 'index'}, {:id => 'viewanchor', :title => t('layouts.view_tooltip'), :class => viewclass} %></li>
          <li><%= link_to t('layouts.edit'), {:controller => 'site', :action => 'edit'}, {:id => 'editanchor', :title => t('layouts.edit_tooltip'), :class => editclass} %></li>
 -        <li><%= link_to t('layouts.history'), {:controller => 'changeset', :action => 'list_bbox' }, {:id => 'historyanchor', :title => t('layouts.history_tooltip'), :class => historyclass} %></li>
 +        <li><%= link_to t('layouts.history'), {:controller => 'changeset', :action => 'list' }, {:id => 'historyanchor', :title => t('layouts.history_tooltip'), :class => historyclass} %></li>
          <% if params['controller'] == 'site' and (params['action'] == 'index' or params['action'] == 'export') %>
          <li><%= link_to_remote t('layouts.export'), {:url => {:controller => 'export', :action => 'start'}}, {:id => 'exportanchor', :title => t('layouts.export_tooltip'), :class => exportclass, :href => url_for(:controller => 'site', :action => 'export')} %></li>
          <% else %>
@@@ -65,8 -69,8 +69,8 @@@
  
        <div id="logo">
          <center>
-           <h1>OpenStreetMap</h1>
-           <%= link_to(image_tag("osm_logo.png", :size => "120x120", :border => 0), :controller => 'site', :action => 'index') %><br/>
+           <h1><%= t 'layouts.project_name.h1' %></h1>
+           <%= link_to(image_tag("osm_logo.png", :size => "120x120", :border => 0, :alt => t('layouts.logo.alt_text')), :controller => 'site', :action => 'index') %><br/>
            <h2 class="nowrap"><%= t('layouts.tag_line') %></h2>
          </center>
        </div>
@@@ -81,8 -85,8 +85,8 @@@
          </p>
          <p>
          <%= t 'layouts.intro_3', 
-               :ucl => '<a href="http://www.vr.ucl.ac.uk">UCL VR Centre</a>'
-               :bytemark => '<a href="http://www.bytemark.co.uk">bytemark</a>' %>
+               :ucl => link_to(t('layouts.intro_3_ucl'), "http://www.vr.ucl.ac.uk")
+               :bytemark => link_to(t('layouts.intro_3_bytemark'), "http://www.bytemark.co.uk") %>
          </p>
        </div>
        <% end %>
        <% end %>
  
        <div id="left_menu" class="left_menu">
-         <a href="<%= t 'layouts.help_wiki_url' %>"><%= t 'layouts.help_wiki' %></a><br />
-         <a href="http://www.opengeodata.org/"><%= t 'layouts.news_blog' %></a><br />
-         <a href="<%= t 'layouts.shop_url' %>"><%= t 'layouts.shop' %></a><br />
+         <a href="<%= t 'layouts.help_wiki_url' %>" title="<%= t 'layouts.help_wiki_tooltip' %>"><%= t 'layouts.help_wiki' %></a><br />
+         <a href="http://www.opengeodata.org" title="<%= t 'layouts.news_blog_tooltip' %>"><%= t 'layouts.news_blog' %></a><br />
+         <a href="<%= t 'layouts.shop_url' %>" title="<%= t 'layouts.shop_tooltip' %>"><%= t 'layouts.shop' %></a><br />
          <%= yield :left_menu %>
        </div>
  
index 90198e8f4643043e8c4735b1189920e5cf2b1abc,0000000000000000000000000000000000000000..90198e8f4643043e8c4735b1189920e5cf2b1abc
mode 100644,000000..100644
--- /dev/null
@@@ -1,2 -1,0 +1,2 @@@
 +xml.instruct!
 +xml << yield
index 7113fc39c9a29b9f0d2414d6baad3aad310bda4a,36bba478c12f625687d835e8554a7d62e9f60815..6e54fbebb06b68256026f0e79f35e6cbba967140
@@@ -4,14 -4,14 +4,14 @@@
  <!-- Displaying user's own profile page -->
  <%= link_to t('user.view.my diary'), :controller => 'diary_entry', :action => 'list', :display_name => @user.display_name %>
  | <%= link_to t('user.view.new diary entry'), :controller => 'diary_entry', :action => 'new', :display_name => @user.display_name %>
- | <%= link_to t('user.view.my edits'), :controller => 'changeset', :action => 'list', :display_name => @user.display_name, :format => 'rhtml' %>
 -| <%= link_to t('user.view.my edits'), :controller => 'changeset', :action => 'list_user', :display_name => @user.display_name %>
++| <%= link_to t('user.view.my edits'), :controller => 'changeset', :action => 'list', :display_name => @user.display_name %>
  | <%= link_to t('user.view.my traces'), :controller => 'trace', :action=>'mine' %>
  | <%= link_to t('user.view.my settings'), :controller => 'user', :action => 'account', :display_name => @user.display_name %>
  <% else %>
  <!-- Displaying another user's profile page -->
  <%= link_to t('user.view.send message'), :controller => 'message', :action => 'new', :user_id => @this_user.id %>
  | <%= link_to t('user.view.diary'), :controller => 'diary_entry', :action => 'list', :display_name => @this_user.display_name %>
- | <%= link_to t('user.view.edits'), :controller => 'changeset', :action => 'list', :display_name => @this_user.display_name, :format => 'rhtml' %>
 -| <%= link_to t('user.view.edits'), :controller => 'changeset', :action => 'list_user', :display_name => @this_user.display_name %>
++| <%= link_to t('user.view.edits'), :controller => 'changeset', :action => 'list', :display_name => @this_user.display_name %>
  | <%= link_to t('user.view.traces'), :controller => 'trace', :action => 'view', :display_name => @this_user.display_name %>
  | <% if @user and @user.is_friends_with?(@this_user) %>
    <%= link_to t('user.view.remove as friend'), :controller => 'user', :action => 'remove_friend', :display_name => @this_user.display_name %>
@@@ -71,7 -71,7 +71,7 @@@
        <% end %>
        </td>
        <td class="username"><%= link_to h(@friend.display_name), :controller => 'user', :action => 'view',  :display_name => @friend.display_name %></td>
-       <td><% if @friend.home_lon and @friend.home_lat %><%= t 'user.view.km away', :distance => @this_user.distance(@friend).round %><% end %></td>
+       <td><% if @friend.home_lon and @friend.home_lat %><%= t 'user.view.km away', :count => @this_user.distance(@friend).round %><% end %></td>
        <td class="message">(<%= link_to t('user.view.send message'), :controller => 'message', :action => 'new', :user_id => @friend.id %>)</td>
        </tr>
        <%end%>
@@@ -93,7 -93,7 +93,7 @@@
        <% @this_user.nearby.each do |nearby| %>
        <tr>
        <td class="username"><%= link_to h(nearby.display_name), :controller => 'user', :action => 'view',  :display_name => nearby.display_name %></td>
-       <td><%= t 'user.view.km away', :distance => @this_user.distance(nearby).round %></td>
+       <td><%= t 'user.view.km away', :count => @this_user.distance(nearby).round %></td>
        <td class="message">(<%= link_to t('user.view.send message'), :controller => 'message', :action => 'new', :user_id => nearby.id %>)</td>
        </tr>
        <% end %>
diff --combined config/locales/en.yml
index d46245ad18ed7e5b4f8fe3f550a60a1600c40907,6e42e0306df1b53e14bcf8fa7d991ef81bf0dc76..fe5f0f9261fecef85796db0fa51d94ed9d501cd0
@@@ -1,4 -1,6 +1,6 @@@
  en:
+   html:
+     dir: ltr
    activerecord:
      # Translates all the model names, which is used in error handling on the web site
      models:
@@@ -89,9 -91,9 +91,9 @@@
        no_bounding_box: "No bounding box has been stored for this changeset."
        show_area_box: "Show Area Box"
        box: "box"
-       has_nodes: "Has the following {{node_count}} nodes:"
-       has_ways: "Has the following {{way_count}} ways:"
-       has_relations: "Has the following {{relation_count}} relations:"
+       has_nodes: "Has the following {{count}} nodes:"
+       has_ways: "Has the following {{count}} ways:"
+       has_relations: "Has the following {{count}} relations:"
      common_details: 
        edited_at: "Edited at:"
        edited_by: "Edited by:"
        view_data: "View data for current map view"
        manually_select: "Manually select a different area"
      start_rjs:
+       data_layer_name: "Data"
        data_frame_title: "Data"
        zoom_or_select: "Zoom in or select an area of the map to view"
        drag_a_box: "Drag a box on the map to select an area"
        manually_select: "Manually select a different area"
-       loaded_an_area_with_num_features: "You have loaded an area which contains {{num_features}} features. In general, some browsers may not cope well with displaying this quantity of data. Generally, browsers work best at displaying less than 100 features at a time: doing anything else may make your browser slow/unresponsive. If you are sure you want to display this data, you may do so by clicking the button below."
+       loaded_an_area_with_num_features: "You have loaded an area which contains [[num_features]] features. In general, some browsers may not cope well with displaying this quantity of data. Generally, browsers work best at displaying less than 100 features at a time: doing anything else may make your browser slow/unresponsive. If you are sure you want to display this data, you may do so by clicking the button below."
        load_data: "Load Data"
-       unable_to_load_size: "Unable to load: Bounding box size of {{bbox_size}} is too large (must be smaller than {{max_bbox_size}})"
+       unable_to_load_size: "Unable to load: Bounding box size of [[bbox_size]] is too large (must be smaller than {{max_bbox_size}})"
        loading: "Loading..."
        show_history: "Show History"
        wait: "Wait..."
-       history_for_feature: "History for {{feature}}"
+       history_for_feature: "History for [[feature]]"
        details: "Details"
        private_user: "private user"
-       edited_by_user_at_timestamp: "Edited by {{user}} at {{timestamp}}"
+       edited_by_user_at_timestamp: "Edited by [[user]] at [[timestamp]]"
        object_list:
          heading: "Object list"
          back: "Display object list"
          details: "Details"
          selected:
            type:
-             node: "Node {{id}}"
-             way: "Way {{id}}"
+             node: "Node [[id]]"
+             way: "Way [[id]]"
              # There's no 'relation' type because it isn't represented in OpenLayers
          history:
            type:
-             node: "Node {{id}}"
-             way: "Way {{id}}"
+             node: "Node [[id]]"
+             way: "Way [[id]]"
              # There's no 'relation' type because it isn't represented in OpenLayers
      tag_details:
        tags: "Tags:"
        user: "User"
        comment: "Comment"
        area: "Area"
 -    list_bbox:
 -      history: "History"
 -      changesets_within_the_area: "Changesets within the area:"
 -      show_area_box: "show area box"
 -      no_changesets: "No changesets"
 -      all_changes_everywhere: "For all changes everywhere see {{recent_changes_link}}"
 -      recent_changes: "Recent Changes"
 -      no_area_specified: "No area specified"
 -      first_use_view: "First use the {{view_tab_link}} to pan and zoom to an area of interest, then click the history tab."
 -      view_the_map: "view the map"
 -      view_tab: "view tab"
 -      alternatively_view: "Alternatively, view all {{recent_changes_link}}"
      list:
 -      recent_changes: "Recent Changes"
 -      recently_edited_changesets: "Recently edited changesets:"
 -      for_more_changesets: "For more changesets, select a user and view their edits, or see the editing 'history' of a specific area."
 -    list_user:
 -      edits_by_username: "Edits by {{username_link}}"
 -      no_visible_edits_by: "No visible edits by {{name}}."
 -      for_all_changes: "For changes by all users see {{recent_changes_link}}"
 -      recent_changes: "Recent Changes"
 +      title: "Changesets"
 +      description: "Recent edits"
 +      description_user: "Recent edits by {{user}}"
 +      description_bbox: "Recent edits within {{bbox}}"
 +      description_user_bbox: "Recent edits by {{user}} within {{bbox}}"
    diary_entry:
      new:
        title: New Diary Entry
        type_from_source: "{{type}} from {{source_link}}"
        no_results: "No results found"
    layouts:
+     project_name:
+       # in <title>
+       title: OpenStreetMap
+       # in <h1>
+       h1: OpenStreetMap
+     logo:
+       alt_text: OpenStreetMap logo
      welcome_user: "Welcome, {{user_link}}"
-     inbox: "inbox ({{size}})"
+     welcome_user_link_tooltip: Your user page
+     home: home
+     home_tooltip: Go to home location
+     inbox: "inbox ({{count}})"
+     inbox_tooltip:
+       zero: Your inbox contains no unread messages
+       one: Your inbox contians 1 unread message
+       other: Your inbox contains {{count}} unread messages
      logout: logout
+     logout_tooltip: "Log out"
      log_in: log in
+     log_in_tooltip: Log in with an existing account
      sign_up: sign up
+     sign_up_tooltip: Create an account for editing
      view: View
      view_tooltip: View maps
      edit: Edit
      intro_1: "OpenStreetMap is a free editable map of the whole world. It is made by people like you."
      intro_2: "OpenStreetMap allows you to view, edit and use geographical data in a collaborative way from anywhere on Earth."
      intro_3: "OpenStreetMap's hosting is kindly supported by the {{ucl}} and {{bytemark}}."
+     intro_3_ucl: "UCL VR Centre"
+     intro_3_bytemark: "bytemark"
      osm_offline: "The OpenStreetMap database is currently offline while essential database maintenance work is carried out."
      osm_read_only: "The OpenStreetMap database is currently in read-only mode while essential database maintenance work is carried out."
      donate: "Support OpenStreetMap by {{link}} to the Hardware Upgrade Fund."
      donate_link_text: donating
      help_wiki: "Help &amp; Wiki"
+     help_wiki_tooltip: "Help &amp; Wiki site for the project"
      help_wiki_url: "http://wiki.openstreetmap.org"
      news_blog: "News blog"
+     news_blog_tooltip: "News blog about OpenStreetMap, free geographical data, etc."
      shop: Shop
+     shop_tooltip: Shop with branded OpenStreetMap 
      shop_url: http://wiki.openstreetmap.org/wiki/Merchandise
      sotm: 'Come to the 2009 OpenStreetMap Conference, The State of the Map, July 10-12 in Amsterdam!'
      alt_donation: Make a Donation
        subject: "[OpenStreetMap] {{user}} added you as a friend"
        had_added_you: "{{user}} has added you as a friend on OpenStreetMap."
        see_their_profile: "You can see their profile at {{userurl}} and add them as a friend too if you wish."
+     gpx_notification:
+       greeting: "Hi,"
+       your_gpx_file: "It looks like your GPX file"
+       with_description: "with the description"
+       and_the_tags: "and the following tags:"
+       and_no_tags: "and no tags."
+       failure:
+         subject: "[OpenStreetMap] GPX Import failure"
+         failed_to_import: "failed to import. Here's the error:"
+         more_info_1: "More information about GPX import failures and how to avoid"
+         more_info_2: "them can be found at:"
+         import_failures_url: "http://wiki.openstreetmap.org/wiki/GPX_Import_Failures"
+       success:
+         subject: "[OpenStreetMap] GPX Import success"
+         loaded_successfully: |
+           loaded successfully with {{trace_points}} out of a possible
+           {{possible_points}} points.
      signup_confirm:
        subject: "[OpenStreetMap] Confirm your email address"
      signup_confirm_plain:
        as_unread: "Message marked as unread"
    site:
      index:
-       home: "home"
        js_1: "You are either using a browser that doesn't support javascript, or you have disabled javascript."
        js_2: "OpenStreetMap uses javascript for its slippy map."
        js_3: 'You may want to try the <a href="http://tah.openstreetmap.org/Browse/">Tiles@Home static tile browser</a> if you are unable to enable javascript.'
        permalink: Permalink
-       license: "Licensed under the Creative Commons Attribution-Share Alike 2.0 license by the OpenStreetMap project and its contributors."
+       license:
+         notice: "Licensed under the {{license_name}} license by the {{project_name}} and its contributors."
+         license_name: "Creative Commons Attribution-Share Alike 2.0"
+         license_url: "http://creativecommons.org/licenses/by-sa/2.0/"
+         project_name: "OpenStreetMap project"
+         project_url: "http://openstreetmap.org"
      edit:
        not_public: "You haven't set your edits to be public."
        not_public_description: "You can no longer edit the map unless you do so. You can set your edits as public from your {{user_page}}."
        search_help: "examples: 'Alkmaar', 'Regent Street, Cambridge', 'CB2 5AQ', or 'post offices near Lünen' <a href='http://wiki.openstreetmap.org/wiki/Search'>more examples...</a>"
      key:
        map_key: "Map key"
+       map_key_tooltip: "Map key for the mapnik rendering at this zoom level"
    trace:
      create:
        upload_trace: "Upload GPS Trace"
        settings_link_text: settings
        your friends: Your friends
        no friends: You have not added any friends yet.
-       km away: "{{distance}}km away"
+       km away: "{{count}}km away"
        nearby users: "Nearby users: "
        no nearby users: "There are no users who admit to mapping nearby yet."
        change your settings: change your settings
diff --combined config/routes.rb
index 721cb5e11b0d4291b4773ffefd6eafe4e04b111d,4b11610122165f17fdd543272db0d6ed4bab6cea..6656d0cd5fc93bca155e9552b4d920646d753148
@@@ -73,7 -73,7 +73,7 @@@ ActionController::Routing::Routes.draw 
    map.connect "api/#{API_VERSION}/swf/trackpoints", :controller =>'swf', :action =>'trackpoints'
    
    # Data browsing
-   map.connect '/browse', :controller => 'changeset', :action => 'list', :format => 'rhtml'
+   map.connect '/browse', :controller => 'changeset', :action => 'list'
    map.connect '/browse/start', :controller => 'browse', :action => 'start'
    map.connect '/browse/way/:id', :controller => 'browse', :action => 'way', :id => /\d+/
    map.connect '/browse/way/:id/history', :controller => 'browse', :action => 'way_history', :id => /\d+/
    map.connect '/browse/relation/:id', :controller => 'browse', :action => 'relation', :id => /\d+/
    map.connect '/browse/relation/:id/history', :controller => 'browse', :action => 'relation_history', :id => /\d+/
    map.connect '/browse/changeset/:id', :controller => 'browse', :action => 'changeset', :id => /\d+/
-   map.connect '/browse/changesets', :controller => 'changeset', :action => 'list', :format => 'rhtml'
-   map.connect '/browse/changesets/rss', :controller => 'changeset', :action => 'list', :format => 'rxml'
+   map.connect '/browse/changesets', :controller => 'changeset', :action => 'list'
++  map.connect '/browse/changesets/rss', :controller => 'changeset', :action => 'list', :format => :rss
    
    # web site
-   map.root :controller => 'site', :action => 'index', :format => 'rhtml'
+   map.root :controller => 'site', :action => 'index'
    map.connect '/', :controller => 'site', :action => 'index'
    map.connect '/edit', :controller => 'site', :action => 'edit'
-   map.connect '/history', :controller => 'changeset', :action => 'list', :format => 'rhtml'
-   map.connect '/history/rss', :controller => 'changeset', :action => 'list', :format => 'rxml'
 -  map.connect '/history', :controller => 'changeset', :action => 'list_bbox'
++  map.connect '/history', :controller => 'changeset', :action => 'list'
++  map.connect '/history/rss', :controller => 'changeset', :action => 'list', :format => :rss
    map.connect '/export', :controller => 'site', :action => 'export'
    map.connect '/login', :controller => 'user', :action => 'login'
    map.connect '/logout', :controller => 'user', :action => 'logout'
  
    # user pages
    map.connect '/user/:display_name', :controller => 'user', :action => 'view'
-   map.connect '/user/:display_name/edits', :controller => 'changeset', :action => 'list', :format => 'rhtml'
-   map.connect '/user/:display_name/edits/rss', :controller => 'changeset', :action => 'list', :format => 'rxml'
 -  map.connect '/user/:display_name/edits', :controller => 'changeset', :action => 'list_user'
++  map.connect '/user/:display_name/edits', :controller => 'changeset', :action => 'list'
++  map.connect '/user/:display_name/edits/rss', :controller => 'changeset', :action => 'list', :format =>:rss
    map.connect '/user/:display_name/make_friend', :controller => 'user', :action => 'make_friend'
    map.connect '/user/:display_name/remove_friend', :controller => 'user', :action => 'remove_friend'
    map.connect '/user/:display_name/diary', :controller => 'diary_entry', :action => 'list'