Merging 16820:16891 from trunk.
authorMatt Amos <zerebubuth@gmail.com>
Thu, 6 Aug 2009 16:24:39 +0000 (16:24 +0000)
committerMatt Amos <zerebubuth@gmail.com>
Thu, 6 Aug 2009 16:24:39 +0000 (16:24 +0000)
45 files changed:
app/controllers/amf_controller.rb
app/controllers/application_controller.rb
app/controllers/changeset_controller.rb
app/controllers/node_controller.rb
app/controllers/user_controller.rb
app/views/changeset/_bbox.atom.builder [new file with mode: 0644]
app/views/changeset/_bbox.html.erb [new file with mode: 0644]
app/views/changeset/_user.atom.builder [new file with mode: 0644]
app/views/changeset/_user.html.erb [new file with mode: 0644]
app/views/user/reset_password.html.erb
config/locales/be.yml
config/locales/de.yml
config/locales/en.yml
config/locales/es.yml
config/locales/he.yml
config/locales/hi.yml
config/locales/hu.yml
config/locales/is.yml
config/locales/it.yml
config/locales/ja.yml
config/locales/ko.yml
config/locales/nl.yml
config/locales/pl.yml
config/locales/pt-BR.yml
config/locales/ro.yml
config/locales/ru.yml
config/locales/sl.yml
config/locales/vi.yml
config/locales/yo.yml
config/locales/zh-CN.yml
config/locales/zh-TW.yml
config/potlatch/colours.txt
config/potlatch/presets.txt
db/migrate/003_sql_session_store_setup.rb
db/migrate/004_user_enhancements.rb
db/migrate/007_add_relations.rb
db/migrate/010_diary_comments.rb
db/migrate/018_create_acls.rb
db/migrate/020_populate_node_tags_and_remove.rb
db/migrate/021_move_to_innodb.rb
db/migrate/024_order_relation_members.rb
db/migrate/025_add_end_time_to_changesets.rb
lib/migrate.rb
public/potlatch/potlatch.swf
test/functional/node_controller_test.rb

index aa030ca92c60edfa2a54ba0dab1e14ee2b039c38..1e87e47c23d8ce7e5551276da6b4dae2d466ba78 100644 (file)
@@ -149,10 +149,10 @@ class AmfController < ApplicationController
 
   private
 
-  def amf_handle_error(call)
+  def amf_handle_error(call,rootobj,rootid)
     yield
   rescue OSM::APIVersionMismatchError => ex
-    return [-3, [ex.type.downcase, ex.latest, ex.id]]
+    return [-3, [rootobj, rootid], [ex.type.downcase, ex.id, ex.latest]]
   rescue OSM::APIUserChangesetMismatchError => ex
     return [-2, ex.to_s]
   rescue OSM::APIBadBoundingBox => ex
@@ -163,8 +163,8 @@ class AmfController < ApplicationController
     return [-2, "An unusual error happened (in #{call}). The server said: #{ex.to_s}"]
   end
 
-  def amf_handle_error_with_timeout(call)
-    amf_handle_error(call) do
+  def amf_handle_error_with_timeout(call,rootobj,rootid)
+    amf_handle_error(call,rootobj,rootid) do
       Timeout::timeout(APP_CONFIG['api_timeout'], OSM::APITimeoutError) do
         yield
       end
@@ -175,7 +175,7 @@ class AmfController < ApplicationController
   # Returns success_code,success_message,changeset id
   
   def startchangeset(usertoken, cstags, closeid, closecomment, opennew)
-    amf_handle_error("'startchangeset'") do
+    amf_handle_error("'startchangeset'",nil,nil) do
       user = getuser(usertoken)
       if !user then return -1,"You are not logged in, so Potlatch can't write any changes to the database." end
 
@@ -253,7 +253,7 @@ class AmfController < ApplicationController
   # used in any way, rel is any relation which refers to either a way
   # or node that we're returning.
   def whichways(xmin, ymin, xmax, ymax) #:doc:
-    amf_handle_error_with_timeout("'whichways'") do
+    amf_handle_error_with_timeout("'whichways'",nil,nil) do
       enlarge = [(xmax-xmin)/8,0.01].min
       xmin -= enlarge; ymin -= enlarge
       xmax += enlarge; ymax += enlarge
@@ -293,7 +293,7 @@ class AmfController < ApplicationController
   # with a deleted node only - not POIs or relations).
 
   def whichways_deleted(xmin, ymin, xmax, ymax) #:doc:
-    amf_handle_error_with_timeout("'whichways_deleted'") do
+    amf_handle_error_with_timeout("'whichways_deleted'",nil,nil) do
       enlarge = [(xmax-xmin)/8,0.01].min
       xmin -= enlarge; ymin -= enlarge
       xmax += enlarge; ymax += enlarge
@@ -313,7 +313,7 @@ class AmfController < ApplicationController
   # Returns the way id, a Potlatch-style array of points, a hash of tags, the version number, and the user ID.
 
   def getway(wayid) #:doc:
-    amf_handle_error_with_timeout("'getway' #{wayid}") do
+    amf_handle_error_with_timeout("'getway' #{wayid}" ,'way',wayid) do
       if POTLATCH_USE_SQL then
         points = sql_get_nodes_in_way(wayid)
         tags = sql_get_tags_in_way(wayid)
@@ -358,7 +358,7 @@ class AmfController < ApplicationController
   # 5. is this the current, visible version? (boolean)
   
   def getway_old(id, timestamp) #:doc:
-    amf_handle_error_with_timeout("'getway_old' #{id}, #{timestamp}") do
+    amf_handle_error_with_timeout("'getway_old' #{id}, #{timestamp}", 'way',id) do
       if timestamp == ''
         # undelete
         old_way = OldWay.find(:first, :conditions => ['visible = ? AND id = ?', true, id], :order => 'version DESC')
@@ -458,7 +458,7 @@ class AmfController < ApplicationController
   # Returns array listing GPXs, each one comprising id, name and description.
   
   def findgpx(searchterm, usertoken)
-    amf_handle_error_with_timeout("'findgpx'") do
+    amf_handle_error_with_timeout("'findgpx'" ,nil,nil) do
       user = getuser(usertoken)
       if !uid then return -1,"You must be logged in to search for GPX traces.",[] end
 
@@ -487,7 +487,7 @@ class AmfController < ApplicationController
   # 5. version.
   
   def getrelation(relid) #:doc:
-    amf_handle_error("'getrelation' #{relid}") do
+    amf_handle_error("'getrelation' #{relid}" ,'relation',relid) do
       rel = Relation.find(:first, :conditions => { :id => relid })
 
       return [-4, 'relation', relid, {}, [], nil] if rel.nil? or !rel.visible
@@ -523,7 +523,7 @@ class AmfController < ApplicationController
   # 3. version.
 
   def putrelation(renumberednodes, renumberedways, usertoken, changeset_id, version, relid, tags, members, visible) #:doc:
-    amf_handle_error("'putrelation' #{relid}")  do
+    amf_handle_error("'putrelation' #{relid}" ,'relation',relid)  do
       user = getuser(usertoken)
       if !user then return -1,"You are not logged in, so the relation could not be saved." end
       if !tags_ok(tags) then return -1,"One of the tags is invalid. Please pester Adobe to fix Flash on Linux." end
@@ -608,7 +608,7 @@ class AmfController < ApplicationController
   # 6. hash of node versions (node=>version)
 
   def putway(renumberednodes, usertoken, changeset_id, wayversion, originalway, pointlist, attributes, nodes, deletednodes) #:doc:
-    amf_handle_error("'putway' #{originalway}") do
+    amf_handle_error("'putway' #{originalway}" ,'way',originalway) do
       # -- Initialise
        
       user = getuser(usertoken)
@@ -714,7 +714,7 @@ class AmfController < ApplicationController
   # 4. version.
 
   def putpoi(usertoken, changeset_id, version, id, lon, lat, tags, visible) #:doc:
-    amf_handle_error("'putpoi' #{id}") do
+    amf_handle_error("'putpoi' #{id}", 'node',id) do
       user = getuser(usertoken)
       if !user then return -1,"You are not logged in, so the point could not be saved." end
       if !tags_ok(tags) then return -1,"One of the tags is invalid. Please pester Adobe to fix Flash on Linux." end
@@ -769,7 +769,7 @@ class AmfController < ApplicationController
   # Returns array of id, long, lat, hash of tags, (current) version.
 
   def getpoi(id,timestamp) #:doc:
-    amf_handle_error("'getpoi' #{id}") do
+    amf_handle_error("'getpoi' #{id}" ,'node',id) do
       id = id.to_i
       n = Node.find(id)
       v = n.version
@@ -796,7 +796,7 @@ class AmfController < ApplicationController
   # Returns 0 (success), unchanged way id, new way version, new node versions.
 
   def deleteway(usertoken, changeset_id, way_id, way_version, deletednodes) #:doc:
-    amf_handle_error("'deleteway' #{way_id}") do
+    amf_handle_error("'deleteway' #{way_id}" ,'way',id) do
       user = getuser(usertoken)
       unless user then return -1,"You are not logged in, so the way could not be deleted." end
       
index d9bc9e4f190bcf357193e626e93ce4116794604d..6dbe9165ca2593b20f5fff3c7e6c46f7469016e6 100644 (file)
@@ -143,9 +143,12 @@ class ApplicationController < ActionController::Base
   end
   
   def set_locale
+    response.header['Vary'] = 'Accept-Language'
+
     if @user
       if !@user.languages.empty?
         request.user_preferred_languages = @user.languages
+        response.header['Vary'] = '*'
       elsif !request.user_preferred_languages.empty?
         @user.languages = request.user_preferred_languages
         @user.save
index 4d9c6839edb3aeceb9f931dd4b830d49d445dddd..c67f4abd5e69c81a7ae68f860abbc5476f1a0193 100644 (file)
@@ -282,11 +282,11 @@ class ChangesetController < ApplicationController
     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>"
+      bbox_link = render_to_string :partial => "bbox", :object => bbox
     end
 
     if user
-      user_link = "<a href='#{url_for(:controller => "user", :action => "view", :display_name => user.display_name)}'>#{user.display_name}</a>"
+      user_link = render_to_string :partial => "user", :object => user
     end
 
     if user and bbox
index 416ae28ebb3af3aa89ba4e78c6eda3e21a20530b..33e0ed3ee876f358c77c3e93dada13bd753ae716 100644 (file)
@@ -39,7 +39,7 @@ class NodeController < ApplicationController
     new_node = Node.from_xml(request.raw_post)
        
     unless new_node and new_node.id == node.id
-      raise OSM::BadUserInput.new("The id in the url (#{node.id}) is not the same as provided in the xml (#{new_node.id})")
+      raise OSM::APIBadUserInput.new("The id in the url (#{node.id}) is not the same as provided in the xml (#{new_node.id})")
     end
     node.update_from(new_node, @user)
     render :text => node.version.to_s, :content_type => "text/plain"
@@ -53,7 +53,7 @@ class NodeController < ApplicationController
     new_node = Node.from_xml(request.raw_post)
     
     unless new_node and new_node.id == node.id
-      raise OSM::BadUserInput.new("The id in the url (#{node.id}) is not the same as provided in the xml (#{new_node.id})")
+      raise OSM::APIBadUserInput.new("The id in the url (#{node.id}) is not the same as provided in the xml (#{new_node.id})")
     end
     node.delete_with_history!(new_node, @user)
     render :text => node.version.to_s, :content_type => "text/plain"
@@ -64,7 +64,7 @@ class NodeController < ApplicationController
     ids = params['nodes'].split(',').collect { |n| n.to_i }
 
     if ids.length == 0
-      raise OSM::BadUserInput.new("No nodes were given to search for")
+      raise OSM::APIBadUserInput.new("No nodes were given to search for")
     end
     doc = OSM::API.new.get_xml_doc
 
index 6f57f4f4abc3fef272128ce8c084555a9eff12a7..86b715154750dbd3d6203a846f4c471e2860b123 100644 (file)
@@ -112,8 +112,9 @@ class UserController < ApplicationController
       token = UserToken.find_by_token(params[:token])
 
       if token
+        @user = token.user
+
         if params[:user]
-          @user = token.user
           @user.pass_crypt = params[:user][:pass_crypt]
           @user.pass_crypt_confirmation = params[:user][:pass_crypt_confirmation]
           @user.active = true
diff --git a/app/views/changeset/_bbox.atom.builder b/app/views/changeset/_bbox.atom.builder
new file mode 100644 (file)
index 0000000..de3b1f1
--- /dev/null
@@ -0,0 +1 @@
+xml.a(bbox.to_s, :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"))
diff --git a/app/views/changeset/_bbox.html.erb b/app/views/changeset/_bbox.html.erb
new file mode 100644 (file)
index 0000000..f9424be
--- /dev/null
@@ -0,0 +1 @@
+<%= link_to bbox.to_s, :controller => "site", :action => "index", :minlon => bbox.min_lon, :minlat => bbox.min_lat, :maxlon => bbox.max_lon, :maxlat => bbox.max_lat, :box => "yes" %>
diff --git a/app/views/changeset/_user.atom.builder b/app/views/changeset/_user.atom.builder
new file mode 100644 (file)
index 0000000..61faea9
--- /dev/null
@@ -0,0 +1 @@
+xml.a(user.display_name, :href => url_for(:controller => "user", :action => "view", :display_name => user.display_name))
diff --git a/app/views/changeset/_user.html.erb b/app/views/changeset/_user.html.erb
new file mode 100644 (file)
index 0000000..0e95076
--- /dev/null
@@ -0,0 +1 @@
+<%= link_to user.display_name, :controller => "user", :action => "view", :display_name => user.display_name %>
index 458a6084cffc7118ab60f5b1e52bd7b04e89bed0..7d2da5c78e1bb67748aaf7a2ec4629bb962181ea 100644 (file)
@@ -1,12 +1,12 @@
-<h1><%= t 'user.reset_password.heading' %></h1>
+<h1><%= t 'user.reset_password.heading', :user => @user.display_name %></h1>
 
 <%= error_messages_for :user %>
 
 <% form_tag do %>
 <%= hidden_field_tag(:token, params[:token]) %>
 <table id="loginForm">
-  <tr><td class="fieldName"><%= t 'user.reset_password.password' %></td><td><%= password_field(:user, :pass_crypt,{:size => 30, :maxlength => 255, :tabindex => 4}) %></td></tr>
-  <tr><td class="fieldName"><%= t 'user.reset_password.confirm password' %></td><td><%= password_field(:user, :pass_crypt_confirmation,{:size => 30, :maxlength => 255, :tabindex => 5}) %></td></tr>
+  <tr><td class="fieldName"><%= t 'user.reset_password.password' %></td><td><%= password_field(:user, :pass_crypt, {:value => '', :size => 30, :maxlength => 255, :tabindex => 4}) %></td></tr>
+  <tr><td class="fieldName"><%= t 'user.reset_password.confirm password' %></td><td><%= password_field(:user, :pass_crypt_confirmation, {:value => '', :size => 30, :maxlength => 255, :tabindex => 5}) %></td></tr>
   
   <tr><td colspan=2>&nbsp;<!--vertical spacer--></td></tr>
   <tr><td></td><td align=right><input type="submit" value="<%= t'user.reset_password.reset' %>" tabindex="6"></td></tr>
index c84def63c7b3ccb85ac20829b38eed8d3dfb24a7..5cc277ef48a4a66ad02903d193cdd2353c53b30b 100644 (file)
@@ -355,7 +355,7 @@ be:
       video_to_openstreetmap: "уводнае відэа пра OpenStreetMap"
       more_videos: "Яшчэ больш {{more_videos_link}}."
       more_videos_here: "відэа тут"
-      get_reading: 'Пачытайце пра OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">на wiki</p> ці  <a href="http://www.opengeodata.org/">блогу opengeodata</a>, на якім таксама ёсць <a href="http://www.opengeodata.org/?cat=13">подкасты</a>!'
+      get_reading: 'Пачытайце пра OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">на wiki</a> ці <a href="http://www.opengeodata.org/">блогу opengeodata</a>, на якім таксама ёсць <a href="http://www.opengeodata.org/?cat=13">подкасты</a>!'
       wiki_signup: 'Вы таксама можаце захацець <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">зарэгістравацца на  OpenStreetMap wiki</a>.'
       user_wiki_page: 'Рэкамендуем стварыць старонку карыстальніка на wiki, якая будзе уключаць цэтлікі катэгорый, якія адзначаюць, дзе вы знаходзіцеся, напрыклад <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>.'
       current_user: 'Спіс бягучых карыстальнікаў па катэгорыях іх геаграфічнага знаходжання даступны на  <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
index 514c8a4ade9a09ac6f10f68fff7eb5be2db6d95a..797a7328fbb0aa0d30a1bdc7c007e24e677367cc 100644 (file)
@@ -533,14 +533,6 @@ de:
       greeting: "Hallo,"
       hopefully_you: "Jemand (hoffentlich du) hat darum gebeten sein Passwort für das OpenStreetMap-Benutzerkonto mit dieser E-Mail-Adresse zurückzusetzen."
       click_the_link: "Wenn du das bist, klicke bitte auf den Link unten, um dein Passwort zurückzusetzen."
-    reset_password:
-      subject: "[OpenStreetMap] Passwort zurückgesetzt"
-    reset_password_plain:
-      greeting: "Hallo,"
-      reset: "Dein neues Passwort lautet {{new_password}}"
-    reset_password_html:
-      greeting: "Hallo,"
-      reset: "Dein neues Passwort lautet {{new_password}}"
   message:
     inbox:
       title: "Posteingang"
index 3922c45a6f77cb2517b3668326cbb8806f4382b6..2cf7a3aa8f72e79ee6f07d703d6b7008d0e3d411 100644 (file)
@@ -507,7 +507,7 @@ en:
       video_to_openstreetmap: "introductory video to OpenStreetMap"
       more_videos: "There are {{more_videos_link}}."
       more_videos_here: "more videos here"
-      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</p> or  <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
+      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</a> or <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
       wiki_signup: 'You may also want to <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">sign up to the OpenStreetMap wiki</a>.'
       user_wiki_page: 'It is recommended that you create a user wiki page, which includes category tags noting where you are, such as <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>.'
       current_user: 'A list of current users in categories, based on where in the world they are, is available from <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
@@ -848,12 +848,12 @@ en:
       title: "Lost password"
       heading: "Forgotten Password?"
       email address: "Email Address:"
-      new password button: "Send me a new password"
+      new password button: "Reset password"
       notice email on way: "Sorry you lost it :-( but an email is on its way so you can reset it soon."
       notice email cannot find: "Couldn't find that email address, sorry."
     reset_password:
       title: "Reset password"
-      heading: "Reset Password"
+      heading: "Reset Password for {{user}}"
       password: "Password: "
       confirm password: "Confirm Password: "
       reset: "Reset Password"
index 908173d3acbacf9966d45a7dac2dcea2021f78fe..1d0233f38e834b1cb6d46fd19b5e3928f61316ad 100644 (file)
@@ -451,12 +451,6 @@ es:
     lost_password_html:
       greeting: "Hola,"
       click_the_link: "Si es usted, por favor pulse el enlace inferior para resetear la contraseña."
-    reset_password:
-      subject: "[OpenStreetMap] Reset de contraseña"
-    reset_password_plain:
-      greeting: "Hola,"
-    reset_password_html:
-      greeting: "Hola,"
   message:
     inbox:
       title: "Buzón de entrada"
index ce8c75a722ce0163149278ea9dd8158e41f6f671..2aa7182a5e6d4dbb22704dc2e927bc0e5aeeb488 100644 (file)
@@ -348,7 +348,7 @@ he:
       video_to_openstreetmap: "introductory video to OpenStreetMap"
       more_videos: "There are {{more_videos_link}}."
       more_videos_here: "more videos here"
-      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</p> or  <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
+      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</a> or <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
       wiki_signup: 'You may also want to <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">sign up to the OpenStreetMap wiki</a>.'
       user_wiki_page: 'It is recommended that you create a user wiki page, which includes category tags noting where you are, such as <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>.'
       current_user: 'A list of current users in categories, based on where in the world they are, is available from <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
index b81c666f5f504b18d7d64942de854541900c3cf2..80e24320bf7434c5b3b930c825444f2b6b95d657 100644 (file)
@@ -386,7 +386,7 @@ hi:
       video_to_openstreetmap: "introductory video to OpenStreetMap"
       more_videos: "There are {{more_videos_link}}."
       more_videos_here: "more videos here"
-      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</p> or  <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
+      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</a> or <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
       wiki_signup: 'You may also want to <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">sign up to the OpenStreetMap wiki</a>.'
       user_wiki_page: 'It is recommended that you create a user wiki page, which includes category tags noting where you are, such as <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>.'
       current_user: 'A list of current users in categories, based on where in the world they are, is available from <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
@@ -412,14 +412,6 @@ hi:
       greeting: "Hi,"
       hopefully_you: "Someone (possibly you) has asked for the password to be reset on this email address's openstreetmap.org account."
       click_the_link: "If this is you, please click the link below to reset your password."
-    reset_password:
-      subject: "[OpenStreetMap] Password reset"
-    reset_password_plain:
-      greeting: "Hi,"
-      reset: "Your password has been reset to {{new_password}}"
-    reset_password_html:
-      greeting: "Hi,"
-      reset: "Your password has been reset to {{new_password}}"
   message:
     inbox:
       title: "Inbox"
index 7679ac2caa2fa107faf55f416fe6dfc23b812b58..001cdcf6f4053dfad921182426222264d44bed59 100644 (file)
@@ -523,14 +523,6 @@ hu:
       greeting: "Szia!"
       hopefully_you: "Valaki (esetleg Te) kérte, hogy az ehhez az e-mail címhez tartozó openstreetmap.org felhasználói fiók jelszava kerüljön alaphelyzetbe."
       click_the_link: "Ha ez Te vagy, akkor a jelszó alaphelyzetbe állításához kattints az alábbi hivatkozásra."
-    reset_password:
-      subject: "[OpenStreetMap] Jelszó alaphelyzetbe állítása"
-    reset_password_plain:
-      greeting: "Szia!"
-      reset: "Jelszavad alaphelyzetbe lett állítva erre: {{new_password}}"
-    reset_password_html:
-      greeting: "Szia!"
-      reset: "Jelszavad alaphelyzetbe lett állítva erre: {{new_password}}"
   message:
     inbox:
       title: "Beérkezett üzenetek"
index 2c25a7778c381ec400672fea03d94c069f497e1f..59ae29b88a4ea94d00c654f18808d93378046be1 100644 (file)
@@ -503,7 +503,7 @@ is:
       video_to_openstreetmap: "kynningarmyndband um OpenStreetMap"
       more_videos: "Fleiri myndbönd er {{more_videos_link}}."
       more_videos_here: "hægt að finna hér"
-      get_reading: 'Þú getur lesið um OpenStreetMap verkefnið á <a href="http://wiki.openstreetmap.org/index.php?uselang=is&title=Beginners%27_Guide">wiki-síðunni okkar</p> eða <a href="http://www.opengeodata.org/">OpenGeoData blogginu</a> þar sem einnig er að finna <a href="http://www.opengeodata.org/?cat=13">hljóðvarp</a>.'
+      get_reading: 'Þú getur lesið um OpenStreetMap verkefnið á <a href="http://wiki.openstreetmap.org/index.php?uselang=is&title=Beginners%27_Guide">wiki-síðunni okkar</a> eða <a href="http://www.opengeodata.org/">OpenGeoData blogginu</a> þar sem einnig er að finna <a href="http://www.opengeodata.org/?cat=13">hljóðvarp</a>.'
       wiki_signup: 'Kannski viltu einnig <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Fors%C3%AD%C3%B0a">skrá þig á wiki-síðuna</a>.'
       user_wiki_page: 'Það er mælt með því að þú búir ttil notandasíðu á wiki-inu þar sem tengt er í flokk sem gefur til kynna hvar þú ert, t.d. <a href="http://wiki.openstreetmap.org/index.php?uselang=is&title=Category:Users_in_Iceland">[[Category:Users_in_Iceland]]</a>.'
       current_user: 'Í flokkakerfinu getur þú einnig séð <a href="http://wiki.openstreetmap.org/index.php?uselang=is&title=Category:Users_by_geographical_region"> hvar í heiminum OpenStreetMap notendur</a> eru staðsettir.'
@@ -529,14 +529,6 @@ is:
       greeting: "Hæ,"
       hopefully_you: "Einhver (vonandi þú) hefur beðið um að endurstilla lykilorðið á reikningnum með þetta netfang á openstreetmap.org"
       click_the_link: "Ef þú óskaðir eftir þessari endurstillingu fylgdu tenglinum hér fyrir neðan til að staðfesta breytinguna."
-    reset_password:
-      subject: "[OpenStreetMap] Lykilorði breytt"
-    reset_password_plain:
-      greeting: "Hæ,"
-      reset: "Lykilorðinu þínu hefur verið breytt í {{new_password}}"
-    reset_password_html:
-      greeting: "Hæ,"
-      reset: "Lykilorðinu þínu hefur verið breytt í {{new_password}}"
   message:
     inbox:
       title: "Innhólf"
@@ -802,8 +794,12 @@ is:
       notice email on way: "Nýtt lykilorð er á leiðinni í innhólfið þitt."
       notice email cannot find: "Þetta netfang fannst ekki."
     reset_password:
-      title: "lykilorð endurstillt"
-      flash changed check mail: "Nýtt lykilorð hefur verið búið til fyrir þig og sent til þín í pósti"
+      title: "Lykilorð endurstillt"
+      heading: "Endurstillti lykilorð fyrir notandann {{user}}"
+      password: "Lykilorð: "
+      confirm password: "Staðfestu lykilorð: "
+      reset: "Endurstilla lykilorð"
+      flash changed: "Lykilorðinu þínu hefur verið breytt"
       flash token bad: "Þessi leynistrengur fannst ekki, kannski er slóðin röng?"
     new:
       title: "Nýskrá"
index 6d4735c1c14c193d7fb125a20a0280c22342e322..2a7a8275b8630ee75da1ef93a5206dc753688562 100644 (file)
@@ -356,7 +356,7 @@ it:
       video_to_openstreetmap: "video introduttivo su OpenStreetMap"
       more_videos: "Ci sono {{more_videos_link}}."
       more_videos_here: "ulteriori video qui"
-      get_reading: 'Puoi avere altre informazioni su OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">sul wiki</p> oppure <a href="http://www.opengeodata.org/">sul blog opengeodata</a> che mette a disposizione anche <a href="http://www.opengeodata.org/?cat=13">alcuni podcast da ascoltare</a>!'
+      get_reading: 'Puoi avere altre informazioni su OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">sul wiki</a> oppure <a href="http://www.opengeodata.org/">sul blog opengeodata</a> che mette a disposizione anche <a href="http://www.opengeodata.org/?cat=13">alcuni podcast da ascoltare</a>!'
       wiki_signup: 'Ci si può anche <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">iscrivere al wiki di OpenStreetMap</a>.'
       user_wiki_page: 'E'' consigliato creare una pagina utente sul wiki, che includa delle etichette di categoria che si riferiscano al luogo in si opera, come ad esempio <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>.'
       current_user: 'Una lista degli utenti attuali nelle categorie, basate sul luogo in cui essi operano, è disponibile su <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
index 915506a732b93b7b4a403c9de25c8553f3b68886..e5e2fbdfecc824270524e051580931404254a77a 100644 (file)
@@ -450,7 +450,7 @@ ja:
       video_to_openstreetmap: "introductory video to OpenStreetMap"
       more_videos: "There are {{more_videos_link}}."
       more_videos_here: "more videos here"
-      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</p> or  <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
+      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</a> or <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
       wiki_signup: 'You may also want to <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">sign up to the OpenStreetMap wiki</a>.'
       user_wiki_page: 'It is recommended that you create a user wiki page, which includes category tags noting where you are, such as <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>.'
       current_user: 'A list of current users in categories, based on where in the world they are, is available from <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
@@ -476,14 +476,6 @@ ja:
       greeting: "Hi,"
       hopefully_you: "Someone (possibly you) has asked for the password to be reset on this email address's openstreetmap.org account."
       click_the_link: "If this is you, please click the link below to reset your password."
-    reset_password:
-      subject: "[OpenStreetMap] Password reset"
-    reset_password_plain:
-      greeting: "Hi,"
-      reset: "Your password has been reset to {{new_password}}"
-    reset_password_html:
-      greeting: "Hi,"
-      reset: "Your password has been reset to {{new_password}}"
   message:
     inbox:
       title: "受信箱"
index fcb092446bd58161fd0ed8b840e77ca9d78606f5..58a5ce343913e6708172c84fa31bbe83339ff17a 100644 (file)
@@ -439,7 +439,7 @@ ko:
       video_to_openstreetmap: "introductory video to OpenStreetMap"
       more_videos: "There are {{more_videos_link}}."
       more_videos_here: "more videos here"
-      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</p> or  <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
+      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</a> or <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
       wiki_signup: 'You may also want to <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">sign up to the OpenStreetMap wiki</a>.'
       user_wiki_page: 'It is recommended that you create a user wiki page, which includes category tags noting where you are, such as <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>.'
       current_user: 'A list of current users in categories, based on where in the world they are, is available from <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
@@ -465,14 +465,6 @@ ko:
       greeting: "Hi,"
       hopefully_you: "Someone (possibly you) has asked for the password to be reset on this email address's openstreetmap.org account."
       click_the_link: "If this is you, please click the link below to reset your password."
-    reset_password:
-      subject: "[OpenStreetMap] Password reset"
-    reset_password_plain:
-      greeting: "Hi,"
-      reset: "Your password has been reset to {{new_password}}"
-    reset_password_html:
-      greeting: "Hi,"
-      reset: "Your password has been reset to {{new_password}}"
   message:
     inbox:
       title: "받은 쪽지함"
index 20c0073beb57ef50bf2557d4d78c27d2fa259f89..e12ee0437b3ed2eb6ec49dc8633996568af8f0c0 100644 (file)
@@ -356,7 +356,7 @@ nl:
       video_to_openstreetmap: "introductievideo over OpenStreetMap bekijken"
       more_videos: "Er zijn {{more_videos_link}}."
       more_videos_here: "hier nog meer video's"
-      get_reading: 'Lees over OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">op de wiki</p> of <a href="http://www.opengeodata.org/">de OpenGeoData-blog</a> die ook <a href="http://www.opengeodata.org/?cat=13">podcasts</a> aanbiedt!'
+      get_reading: 'Lees over OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">op de wiki</a> of <a href="http://www.opengeodata.org/">de OpenGeoData-blog</a> die ook <a href="http://www.opengeodata.org/?cat=13">podcasts</a> aanbiedt!'
       wiki_signup: 'Je kunt je ook <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">registreren op de OpenStreetMap-wiki</a>.'
       user_wiki_page: 'Het is aanbevolen dat je een gebruikerspagina maakt met onder andere categorieën die zeggen waar je bent, zoals <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_Amsterdam">[[Category:Users_in_Amsterdam]]</a>.'
       current_user: 'Een lijst van gebruikers, gesorteerd op woonplaats, is te zien op <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
index 054fd70663996c4c1dba0774c2d81173376afde0..46811b72f9b85d616f42e0d6cefabded1ae207d0 100644 (file)
@@ -370,7 +370,7 @@ pl:
       video_to_openstreetmap: "wideo-wprowadzenie do OpenStreetMap"
       more_videos: "Mamy  {{more_videos_link}}."
       more_videos_here: "więcej materiału wideo tutuaj"
-      get_reading: 'Zacznij czytać o OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Pl:Beginners_Guide">na naszej wiki</p> i <a href="http://www.opengeodata.org/">blogu opengeodata</a> który ma nawet <a href="http://www.opengeodata.org/?cat=13">podcasty do posłuchania</a>!'
+      get_reading: 'Zacznij czytać o OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Pl:Beginners_Guide">na naszej wiki</a> i <a href="http://www.opengeodata.org/">blogu opengeodata</a> który ma nawet <a href="http://www.opengeodata.org/?cat=13">podcasty do posłuchania</a>!'
       wiki_signup: 'Załóż sobie <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">konto na wiki projektu OpenStreetMap</a> jeśli chcesz.'
       user_wiki_page: 'Najlepiej stwórz swoją stronę użytkownika na wiki zawierającą odpowiednie kategorie wskazujące twoją lokalizację, np. <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_Warszawa">[[Category:Users_in_Warszawa]]</a>.'
       current_user: 'Aktualne listy użytkowników według ich położenia na Ziemi znajdziesz na stronie <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
index 1545b6e1e429a3592a6c88d2c8853b01e470d4ae..c8d881c6d7cd9d7add3043f4148934a74e331802 100644 (file)
@@ -94,7 +94,7 @@ pt-BR:
         next_tooltip: "Editado posteriormente por {{user}}"
       all:
         prev_tooltip: "Conjunto de alterações anterior"
-        next_tooltip: "Próximo conjunto de alteções"
+        next_tooltip: "Próximo conjunto de alterações"
     changeset_details:
       created_at: "Criado em:"
       closed_at: "Fechado em:"
@@ -116,7 +116,7 @@ pt-BR:
       edited_at: "Editado em:"
       edited_by: "Editado por:"
       version: "Versão:"
-      in_changeset: "No conjunto de modificações:"
+      in_changeset: "No conjunto de alterações:"
     containing_relation:
       entry: "Relação {{relation_name}}"
       entry_role: "Relação {{relation_name}} (como {{relation_role}})"
@@ -367,9 +367,9 @@ pt-BR:
         osm_namefinder: '{{types}} de <a href="http://gazetteer.openstreetmap.org/namefinder/">OpenStreetMap Namefinder</a>'
         geonames: 'Localização do <a href="http://www.geonames.org/">GeoNames</a>'
       types:
-        cities: Cidades
-        towns: Cidades
-        places: Lugares
+        cities: "Cidades"
+        towns: "Cidades"
+        places: "Lugares"
     description_osm_namefinder:
       prefix: "{{distance}} {{direction}} de {{type}} "
     results:
@@ -390,11 +390,11 @@ pt-BR:
   layouts:
     project_name:
       # in <title>
-      title: OpenStreetMap
+      title: "OpenStreetMap"
       # in <h1>
-      h1: OpenStreetMap
+      h1: "OpenStreetMap"
     logo:
-      alt_text: OpenStreetMap logo
+      alt_text: "OpenStreetMap logo"
     welcome_user: "Bem vindo, {{user_link}}"
     welcome_user_link_tooltip: "Sua Página de usuário"
     home: "início"
@@ -424,7 +424,7 @@ pt-BR:
     user_diaries_tooltip: "Ver os diários dos usuários"
     tag_line: "O Wiki de Mapas Livres"
     intro_1: "OpenStreetMap é um mapa livre e editável do mundo. Ele é feito por pessoas como você."
-    intro_2: "OpenStreetMap te permite ver, editar e usar dados geográficos de maneira colaborativa de qualquer lugar do mundo."
+    intro_2: "OpenStreetMap permite visualizar, editar e usar dados geográficos de maneira colaborativa de qualquer lugar do mundo."
     intro_3: "A hospedagem dos dados do OpenStreetMap é cedida gentilmente por {{ucl}} e {{bytemark}}."
     intro_3_ucl: "UCL VR Centre"
     intro_3_bytemark: "bytemark"
@@ -439,7 +439,7 @@ pt-BR:
     news_blog_tooltip: "Blog de notícias sobre o OpenStreetMap, dados geográficos livres, etc."
     shop: "Produtos"
     shop_tooltip: "Compre produtos com a marca OpenStreetMap" 
-    shop_url: http://wiki.openstreetmap.org/wiki/Merchandise
+    shop_url: "http://wiki.openstreetmap.org/wiki/Merchandise"
     sotm: 'Venha para a OpenStreetMap Conference 2009 (The State of the Map) de 10 a 12 de julho em Amsterdam!'
     alt_donation: "Faça uma doação"
   notifier:
@@ -507,7 +507,7 @@ pt-BR:
       video_to_openstreetmap: "vídeo introdutório ao OpenStreetMap"
       more_videos: "Há também {{more_videos_link}}."
       more_videos_here: "mais vídeos aqui"
-      get_reading: 'Continue lendo sobre o OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide"> no wiki</p> ou  <a href="http://www.opengeodata.org/">no blog OpenGeoData</a> que tem <a href="http://www.opengeodata.org/?cat=13">podcasts para baixar</a>!'
+      get_reading: 'Continue lendo sobre o OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">no wiki</a> ou <a href="http://www.opengeodata.org/">no blog OpenGeoData</a> que tem <a href="http://www.opengeodata.org/?cat=13">podcasts para baixar</a>!'
       wiki_signup: 'Você pode querer também <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page"> se registrar no wiki do OpenStreetMap</a>.'
       user_wiki_page: 'É recomendável que você crie sua página no wiki, incluindo etiquetas sobre sua localização, como em <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_Rio_de_Janeiro">[[Category:Users_in_Rio_de_Janeiro]]</a>.'
       current_user: 'A lista de usuários, baseada em suas localizações no mundo, está disponível em <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
@@ -533,14 +533,6 @@ pt-BR:
       greeting: "Olá,"
       hopefully_you: "Alguém (possivelmente você) pediu uma nova senha para a conta no openstreetmap.org ligada a este e-mail."
       click_the_link: "Se esta pessoa é você, por favor clique no link abaixo para receber uma nova senha."
-    reset_password:
-      subject: "[OpenStreetMap] Nova senha"
-    reset_password_plain:
-      greeting: "Olá,"
-      reset: "Sua nova senha é {{new_password}}"
-    reset_password_html:
-      greeting: "Olá,"
-      reset: "Sua nova senha é {{new_password}}"
   message:
     inbox:
       title: "Caixa de Entrada"
@@ -593,7 +585,7 @@ pt-BR:
       to: "Para"
       back_to_outbox: "Voltar para a caixa de saída"
     sent_message_summary:
-      delete_button: "Delete"
+      delete_button: "Apagar"
     mark:
       as_read: "Mensagem marcada como lida"
       as_unread: "Mensagem marcada como não lida"
@@ -605,7 +597,7 @@ pt-BR:
       js_2: "O OpenStreetMap usa javascript para a navegação dos mapas."
       js_3: 'Você pode tentar o <a href="http://tah.openstreetmap.org/Browse/">navegador estático Tiles@Home</a> se não for possível ativar o javascript.'
       permalink: "Link Permanente"
-      shortlink: "Link Curto"
+      shortlink: "Atalho"
       license:
         notice: "Licenciado sob a {{license_name}} para o {{project_name}} e seus contribuidores."
         license_name: "Creative Commons de Atribuição-Compartilhamento pela Mesma Licença 2.0"
@@ -628,75 +620,75 @@ pt-BR:
       search: "Buscar"
       where_am_i: "Onde estou?"
       submit_text: "Ir"
-      search_help: "exemplos: 'Belo Horizonte', 'Av. Paulista, São Paulo', 'CB2 5AQ', or 'post offices near Porto Alegre' <a href='http://wiki.openstreetmap.org/wiki/Pt-br:Search'>mais exemplos...</a>"
+      search_help: "exemplos: 'Brasília', 'Av. Paulista, São Paulo', ou 'hospitals near Belo Horizonte' <a href='http://wiki.openstreetmap.org/wiki/Pt-br:Search'>mais exemplos...</a>"
     key:
-      map_key: "Map key"
-      map_key_tooltip: "Map key para a renderização do mapnik neste nível de zoom"
+      map_key: "Legenda"
+      map_key_tooltip: "Legenda para o mapa renderizado neste nível de zoom"
       table:
-        heading: "Legenda para z{{zoom_level}}"
+        heading: "Legenda para o zoom nível {{zoom_level}}"
         entry:
-          motorway: "Motorway"
-          trunk: "Trunk road"
-          primary: "Primary road"
-          secondary: "Secondary road"
-          unclassified: "Unclassified road"
-          unsurfaced: "Unsurfaced road"
-          track: "Track"
-          byway: "Byway"
-          bridleway: "Bridleway"
-          cycleway: "Cycleway"
-          footway: "Footway"
-          rail: "Railway"
-          subway: "Subway"
+          motorway: "Rodovia expressa"
+          trunk: "Via Expressa"
+          primary: "Via Primária"
+          secondary: "Via Secundária"
+          unclassified: "Via Sem Classificação Administrativa"
+          unsurfaced: "Via Não Pavimentada"
+          track: "Trilha"
+          byway: "Trilha Larga"
+          bridleway: "Trilha de Montaria"
+          cycleway: "Ciclovia"
+          footway: "Passagem para Pedestres"
+          rail: "Trilhos"
+          subway: "Trilhos Subterrâneos"
           tram:
-            - Light rail
-            - tram
+            - Trem metropolitano
+            - Trem de superfície (bonde)
           cable:
-            - Cable car
-            - chair lift
+            - Veículo de cabos
+            - Elevador de Cadeiras
           runway:
-            - Airport Runway
-            - taxiway
+            - Pista de aterrissagem
+            - Pista de manobras
           apron:
-            - Airport apron
-            - terminal
-          admin: "Administrative boundary"
-          forest: "Forest"
-          wood: "Wood"
-          golf: "Golf course"
-          park: "Park"
-          resident: "Residential area"
-          tourist: "Tourist attraction"
+            - Pista de estacionamento de aviões
+            - Aeroporto
+          admin: "Limite Administrativo"
+          forest: "Floresta"
+          wood: "Reserva Florestal"
+          golf: "Campo de Golf"
+          park: "Parque"
+          resident: "Área Residencial"
+          tourist: "Atração Turística"
           common:
-            - Common
-            - meadow
-          retail: "Retail area"
-          industrial: "Industrial area"
-          commercial: "Commercial area"
-          heathland: "Heathland"
+            - Área pública
+            - Vegetação rasteira
+          retail: "Área Comercial (Lojas)"
+          industrial: "Área Industrial"
+          commercial: "Área Commercial (Escritórios)"
+          heathland: "Área Sem Vegetação"
           lake:
-            - Lake
-            - reservoir
-          farm: "Farm"
-          brownfield: "Brownfield site"
-          cemetery: "Cemetery"
-          allotments: "Allotments"
-          pitch: "Sports pitch"
-          centre: "Sports centre"
-          reserve: "Nature reserve"
-          military: "Military area"
-          school: "School; university"
-          building: "Significant building"
-          station: "Railway station"
+            - Lago
+            - Represa ou Reservatório de Água
+          farm: "Fazenda"
+          brownfield: "Área Livre Pós Demolição"
+          cemetery: "Cemitério"
+          allotments: "Terra Arrendada"
+          pitch: "Campo para Prática de Esportes"
+          centre: "Centro de Esportes/Ginásio"
+          reserve: "Reserva Natural"
+          military: "Área Militar"
+          school: "Escola/Universidade"
+          building: "Edificação"
+          station: "Estação de Trem/Metrô"
           summit:
-            - Summit
-            - peak
-          tunnel: "Dashed casing = tunnel"
-          bridge: "Black casing = bridge"
-          private: "Private access"
-          permissive: "Permissive access"
-          destination: "Destination access"
-          construction: "Roads under construction"
+            - Monte
+            - Pico
+          tunnel: "Túnel (Envoltória Tracejada)"
+          bridge: "Ponte/Viaduto (Envoltória Sólida)"
+          private: "Acesso Restrito (Propriedade Privada)"
+          permissive: "Acesso Permissivo"
+          destination: "Acesso Local Apenas"
+          construction: "Vias em Construção"
   trace:
     create:
       upload: "Enviar Trilha GPS"
index 88df00ed3146a61967b9fc62172fd29ecc4feacb..3eae9ce7304bc1a2bd6d2ad460bdaf75f7c41e08 100644 (file)
@@ -495,7 +495,7 @@ ro:
       video_to_openstreetmap: "introductory video to OpenStreetMap"
       more_videos: "There are {{more_videos_link}}."
       more_videos_here: "more videos here"
-      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</p> or  <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
+      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</a> or <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
       wiki_signup: 'You may also want to <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">sign up to the OpenStreetMap wiki</a>.'
       user_wiki_page: 'It is recommended that you create a user wiki page, which includes category tags noting where you are, such as <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>.'
       current_user: 'A list of current users in categories, based on where in the world they are, is available from <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
@@ -521,14 +521,6 @@ ro:
       greeting: "Hi,"
       hopefully_you: "Someone (possibly you) has asked for the password to be reset on this email address's openstreetmap.org account."
       click_the_link: "If this is you, please click the link below to reset your password."
-    reset_password:
-      subject: "[OpenStreetMap] Password reset"
-    reset_password_plain:
-      greeting: "Hi,"
-      reset: "Your password has been reset to {{new_password}}"
-    reset_password_html:
-      greeting: "Hi,"
-      reset: "Your password has been reset to {{new_password}}"
   message:
     inbox:
       title: "Inbox"
index 87d6b88c842ea815580df1bbd7ae8312c3d61b58..81af04309c477dcfa84948f2ca2b0d5a0a8acc8e 100644 (file)
@@ -356,7 +356,7 @@ ru:
       video_to_openstreetmap: "ознакомительное видео об OpenStreetMap"
       more_videos: "Посмотрите {{more_videos_link}}."
       more_videos_here: "больше видео здесь"
-      get_reading: 'Узнайте больше об OpenStreetMap в <a href="http://wiki.openstreetmap.org/wiki/Ru:Beginners_Guide">Вики</p> или на <a href="http://www.opengeodata.org/">блоге OpenGeoData</a>, в котором еще можно послушать <a href="http://www.opengeodata.org/?cat=13">подкасты</a>!'
+      get_reading: 'Узнайте больше об OpenStreetMap в <a href="http://wiki.openstreetmap.org/wiki/Ru:Beginners_Guide">Вики</a> или на <a href="http://www.opengeodata.org/">блоге OpenGeoData</a>, в котором еще можно послушать <a href="http://www.opengeodata.org/?cat=13">подкасты</a>!'
       wiki_signup: 'Вы можете <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Ru:Main_Page">зарегистрироваться на Вики OpenStreetMap</a>.'
       user_wiki_page: 'Рекомендуется создать свою страницу пользователя, включив в неё тег категории, описывающий ваше местонахождение, например: <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_Moscow">[[Category:Users_in_Moscow]]</a>.'
       current_user: 'Список пользователей, основанный на их местоположении, доступен здесь: <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
index ac666f04964db3722eb1ceaf7193eaf11750b445..db249f264f306c1de6c1a2defaf8b1a26925c058 100644 (file)
@@ -521,7 +521,7 @@ sl:
       video_to_openstreetmap: "uvodni video posnetek o OpenStreetMap"
       more_videos: "Ogledate si lahko {{more_videos_link}}."
       more_videos_here: "še več video posnetkov"
-      get_reading: 'Preberite si več o OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">v wiki-ju</p> ali <a href="http://www.opengeodata.org/">na opengeodata blog-u</a> ki vsebuje tudi <a href="http://www.opengeodata.org/?cat=13">zvočne podcast-e</a>!'
+      get_reading: 'Preberite si več o OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">v wiki-ju</a> ali <a href="http://www.opengeodata.org/">na opengeodata blog-u</a> ki vsebuje tudi <a href="http://www.opengeodata.org/?cat=13">zvočne podcast-e</a>!'
       wiki_signup: 'Lahko se <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">vpišete tudi na wiki projekta OpenStreetMap</a>.'
       user_wiki_page: 'Priporočljivo je, da si naredite svojo uporabniško wiki stran, ki naj vsebuje oznako kategorije, ki določa vaš položaj, npr <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_Slovenia">[[Category:Users_in_Slovenia]]</a>.'
       current_user: 'Seznam trenutnih uporabnikov po kategorijah glede na njihov geografski položaj je na voljo v kategoriji <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
@@ -547,14 +547,6 @@ sl:
       greeting: "Pozdravljeni,"
       hopefully_you: "Nekdo (upamo, da vi) je zahteval ponastavitev gesla openstreetmap.org uporabniškega računa s tem naslovom e-pošte."
       click_the_link: "Če ste to vi, vas prosimo, da kliknete na spodnjo povezavo za ponastavitev gesla."
-    reset_password:
-      subject: "[OpenStreetMap] Ponastavitev gesla"
-    reset_password_plain:
-      greeting: "Pozdravljeni,"
-      reset: "Vaše geslo je bilo nastavljeno na {{new_password}}"
-    reset_password_html:
-      greeting: "Pozdravljeni,"
-      reset: "Vaše geslo je bilo nastavljeno na {{new_password}}"
   message:
     inbox:
       title: "Prejeta pošta"
index 8f5e8364e2124f9e8affdf6556edbca6f0f10289..7c39618cb08335c369ad7a292815d8ed9b9311f7 100644 (file)
@@ -495,7 +495,7 @@ vi:
       video_to_openstreetmap: "video giới thiệu về OpenStreetMap"
       more_videos: "Cũng có {{more_videos_link}}."
       more_videos_here: "thêm video tại đây"
-      get_reading: 'Bắt đầu tìm hiểu về OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Vi:Beginners%27_Guide?uselang=vi">tại wiki</p> hoặc <a href="http://www.opengeodata.org/">blog OpenGeoData</a>, blog này cũng chứa <a href="http://www.opengeodata.org/?cat=13">podcast để nghe</a>!'
+      get_reading: 'Bắt đầu tìm hiểu về OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Vi:Beginners%27_Guide?uselang=vi">tại wiki</a> hoặc <a href="http://www.opengeodata.org/">blog OpenGeoData</a>, blog này cũng chứa <a href="http://www.opengeodata.org/?cat=13">podcast để nghe</a>!'
       wiki_signup: 'Có lẽ bạn cũng muốn <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Vi:Main_Page&uselang=vi">mở tài khoản ở wiki OpenStreetMap</a>.'
       user_wiki_page: 'Bạn nên tạo ra trang cá nhân trên wiki và gắn các thẻ thể loại để cho người ta biết bạn ở đâu, thí dụ như <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_Hanoi?uselang=vi">[[Category:Users in Hanoi]]</a>.'
       current_user: 'Có danh sách các người dùng, xếp thể loại theo nơi ở, tại <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region?uselang=vi">Category:Users by geographical region</a>.'
@@ -521,14 +521,6 @@ vi:
       greeting: "Chào bạn,"
       hopefully_you: "Ai (chắc bạn) đã xin đặt lại mật khẩu của tài khoản openstreetmap.org có địa chỉ thư điện tử này."
       click_the_link: "Nếu bạn là người đó, xin hãy nhấn chuột vào liên kết ở dưới để đặt lại mật khẩu."
-    reset_password:
-      subject: "[OpenStreetMap] Đã đặt lại mật khẩu"
-    reset_password_plain:
-      greeting: "Chào bạn,"
-      reset: "Mật khẩu của bạn đã được đặt lại thành {{new_password}}"
-    reset_password_html:
-      greeting: "Chào bạn,"
-      reset: "Mật khẩu của bạn đã được đặt lại thành {{new_password}}"
   message:
     inbox:
       title: "Hộp thư"
index b210e31777a9e7685e024fcdc0d8976c1789f3af..9b9fa53545d14bebd4dd7f8efbc1502de4505bfb 100644 (file)
@@ -439,7 +439,7 @@ yo:
       video_to_openstreetmap: "introductory video to OpenStreetMap"
       more_videos: "There are {{more_videos_link}}."
       more_videos_here: "more videos here"
-      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</p> or  <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
+      get_reading: 'Get reading about OpenStreetMap <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide">on the wiki</a> or <a href="http://www.opengeodata.org/">the opengeodata blog</a> which has <a href="http://www.opengeodata.org/?cat=13">podcasts to listen to</a> also!'
       wiki_signup: 'You may also want to <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">sign up to the OpenStreetMap wiki</a>.'
       user_wiki_page: 'It is recommended that you create a user wiki page, which includes category tags noting where you are, such as <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>.'
       current_user: 'A list of current users in categories, based on where in the world they are, is available from <a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
@@ -465,14 +465,6 @@ yo:
       greeting: "Hi,"
       hopefully_you: "Someone (possibly you) has asked for the password to be reset on this email address's openstreetmap.org account."
       click_the_link: "If this is you, please click the link below to reset your password."
-    reset_password:
-      subject: "[OpenStreetMap] Password reset"
-    reset_password_plain:
-      greeting: "Hi,"
-      reset: "Your password has been reset to {{new_password}}"
-    reset_password_html:
-      greeting: "Hi,"
-      reset: "Your password has been reset to {{new_password}}"
   message:
     inbox:
       title: "Inbox"
index 4cca279083f3ea23cd11ac4f8797c1bef5fd5746..57235218d6463d55d8ce41023d43b49708666fff 100644 (file)
@@ -387,7 +387,7 @@ zh-CN:
       video_to_openstreetmap: "关于OpenStreetMap的介绍影片"
       more_videos: "这里{{more_videos_link}}."
       more_videos_here: "有更多的影片"
-      get_reading: '开始阅读在wiki上关于OpenStreetMap的信息 <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide"></p> 或  <a href="http://www.opengeodata.org/">在 opengeodata blog</a> 上也有<a href="http://www.opengeodata.org/?cat=13">podcasts 可以倾听</a>!'
+      get_reading: '开始阅读在wiki上关于OpenStreetMap的信息 <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide"></a> 或  <a href="http://www.opengeodata.org/">在 opengeodata blog</a> 上也有<a href="http://www.opengeodata.org/?cat=13">podcasts 可以倾听</a>!'
       wiki_signup: '您可能也想要 <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page">注册到 OpenStreetMap wiki</a>.'
       user_wiki_page: '推荐您创立一个用户wiki网页,它包括分类标签,用来提醒您所在位置,例如 <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>.'
       current_user: '一个基于其所处位置的,当前用户分类列表可从这里获得<a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>.'
index f5fa89aef98ed0509c31d3ae16e79f26be134acf..bcf3d6fd81aeb9f16ec98eb43ca099c961bd01da 100644 (file)
@@ -447,7 +447,7 @@ zh-TW:
       video_to_openstreetmap: "觀看 OpenStreetMap 的導覽影片"
       more_videos: "這裡還有更多 {{more_videos_link}}。"
       more_videos_here: "影片"
-      get_reading: '在 wiki 中閱讀更多 <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide"></p> 或 <a href="http://www.opengeodata.org/">opengeodata 部落格,</a> 其中也有 <a href="http://www.opengeodata.org/?cat=13">podcasts 可以聽</a>!'
+      get_reading: '在 wiki 中閱讀更多 <a href="http://wiki.openstreetmap.org/wiki/Beginners%27_Guide"></a> 或 <a href="http://www.opengeodata.org/">opengeodata 部落格,</a> 其中也有 <a href="http://www.opengeodata.org/?cat=13">podcasts 可以聽</a>!'
       wiki_signup: '您可能也想在 <a href="http://wiki.openstreetmap.org/index.php?title=Special:Userlogin&type=signup&returnto=Main_Page"> OpenStreetMap wiki 註冊</a>。'
       user_wiki_page: '建議您建立一個使用者 wiki 頁面,其中包含註記您住哪裡的分類標籤,如 <a href="http://wiki.openstreetmap.org/wiki/Category:Users_in_London">[[Category:Users_in_London]]</a>。'
       current_user: '一份目前使用者的清單,以他們在世界上何處為基礎的分類,可在這裡取得:<a href="http://wiki.openstreetmap.org/wiki/Category:Users_by_geographical_region">Category:Users_by_geographical_region</a>。'
@@ -473,14 +473,6 @@ zh-TW:
       greeting: "您好,"
       hopefully_you: "有人 (希望是您) 要求重設這個電子郵件位址的 openstreetmap.org 帳號密碼。"
       click_the_link: "如果這是您,請按下列連結重設您的密碼。"
-    reset_password:
-      subject: "[OpenStreetMap] 密碼重設"
-    reset_password_plain:
-      greeting: "您好,"
-      reset: "您的密碼已重設為 {{new_password}}"
-    reset_password_html:
-      greeting: "您好,"
-      reset: "您的密碼已重設為 {{new_password}}"
   message:
     inbox:
       title: "收件匣"
index ec1c2de03e6e7238b9d38c944da9b2ab1593d8ca..e69a5b2cc222fda96e8d206a00cf909af9172e8f 100644 (file)
@@ -9,7 +9,9 @@ trunk_link              0x7FC97F        1       -
 primary                        0xE46D71        1       -
 primary_link   0xE46D71        1       -
 secondary              0xFDBF6F        1       -
+secondary_link 0xFDBF6F        1       -
 tertiary               0xFEFECB        1       -
+tertiary_link  0xFEFECB        1       -
 unclassified   0xE8E8E8        1       -
 residential            0xE8E8E8        1       -
 road                   0xAAAAAA        1       -
index 887346a57c14ac2742f648c017935f24dea2e046..8305c49e143713529e5c2183165b46eb2d49eed3 100644 (file)
@@ -71,11 +71,11 @@ way/natural
 coastline: natural=coastline,landuse=,leisure=
 fell: natural=fell,landuse=,leisure=
 heath: natural=heath,landuse=,leisure=
-lake: natural=water,landuse=,leisure=
 forest: landuse=forest,natural=,leisure=
 marsh: natural=marsh,landuse=,leisure=
 nature reserve: leisure=nature_reserve,landuse=,natural=
 scree: natural=scree,landuse=,leisure=
+water: natural=water,landuse=,leisure=
 woodland: natural=wood,landuse=,leisure=
 
 way/landuse
index 4de0dd4b19120e6613528918ea7d96c248e57751..daef768b7cb7d875375aef3d449b143e0494bf7c 100644 (file)
@@ -1,3 +1,5 @@
+require 'lib/migrate'
+
 class SqlSessionStoreSetup < ActiveRecord::Migration
   def self.up
     create_table "sessions", :options => innodb_option do |t|
index a6e81d222fcd190cef0aa969352ae923a4354b5e..1c3bb50073d48f81d85e7afac745cb1bb3c46c77 100644 (file)
@@ -1,3 +1,5 @@
+require 'lib/migrate'
+
 class UserEnhancements < ActiveRecord::Migration
   def self.up
     add_column "diary_entries", "latitude", :double
index c265fc3adef1507c8d4e672acf8fcb98a2fc0520..cb541037830b7ec8cef1cce34b076b7d63544502 100644 (file)
@@ -1,17 +1,20 @@
+require 'lib/migrate'
+
 class AddRelations < ActiveRecord::Migration
   def self.up
+    # enums work like strings but are more efficient
+    create_enumeration :nwr_enum, ["Node", "Way", "Relation"]
+
     # a relation can have members much like a way can have nodes.
     # differences:
     # way: only nodes / relation: any kind of member
     # way: ordered sequence of nodes / relation: free-form "role" string
     create_table "current_relation_members", innodb_table do |t|
-      t.column "id",          :bigint, :limit => 64, :null => false
-      t.column "member_type", :string, :limit => 11, :null => false
-      t.column "member_id",   :bigint, :limit => 11, :null => false
+      t.column "id",          :bigint,   :limit => 64, :null => false
+      t.column "member_type", :nwr_enum, :null => false
+      t.column "member_id",   :bigint,   :limit => 11, :null => false
       t.column "member_role", :string
     end
-    # enums work like strings but are more efficient
-    alter_column_nwr_enum :current_relation_members, :member_type
 
     add_primary_key "current_relation_members", ["id", "member_type", "member_id", "member_role"]
     add_index "current_relation_members", ["member_type", "member_id"], :name => "current_relation_members_member_idx"
@@ -34,14 +37,13 @@ class AddRelations < ActiveRecord::Migration
     end
 
     create_table "relation_members", myisam_table do |t|
-      t.column "id",          :bigint,  :limit => 64, :default => 0, :null => false
-      t.column "member_type", :string, :limit => 11, :null => false
-      t.column "member_id",   :bigint, :limit => 11, :null => false
+      t.column "id",          :bigint,   :limit => 64, :default => 0, :null => false
+      t.column "member_type", :nwr_enum, :null => false
+      t.column "member_id",   :bigint,   :limit => 11, :null => false
       t.column "member_role", :string
-      t.column "version",     :bigint,  :limit => 20, :default => 0, :null => false
+      t.column "version",     :bigint,   :limit => 20, :default => 0, :null => false
     end
 
-    alter_column_nwr_enum :relation_members, :member_type 
     add_primary_key "relation_members", ["id", "version", "member_type", "member_id", "member_role"]
     add_index "relation_members", ["member_type", "member_id"], :name => "relation_members_member_idx"
 
@@ -76,5 +78,6 @@ class AddRelations < ActiveRecord::Migration
     drop_table :current_relation_tags
     drop_table :relation_members
     drop_table :current_relation_members
+    drop_enumeration :nwr_enum
   end
 end
index 43019a938ff96738d322d39361e6677632871528..bf73199121bf01416a89f968948a91883e039e8f 100644 (file)
@@ -1,3 +1,5 @@
+require 'lib/migrate'
+
 class DiaryComments < ActiveRecord::Migration
   def self.up
     create_table "diary_comments", myisam_table do |t|
index 5205b99b0403feaab7c65ba199637b253014004b..d82020892eca9863391da5da324768220f926712 100644 (file)
@@ -1,3 +1,5 @@
+require 'lib/migrate'
+
 class CreateAcls < ActiveRecord::Migration
   def self.up
     create_table "acls", myisam_table do |t|
index dc048f1906134eab74d7f3b7bf35c09d3bfb3e77..7d07911890257dd4ea7b4b43a4f9467a780b2587 100644 (file)
@@ -1,3 +1,5 @@
+require 'lib/migrate'
+
 class PopulateNodeTagsAndRemove < ActiveRecord::Migration
   def self.up
     have_nodes = select_value("SELECT count(*) FROM current_nodes").to_i != 0
index da0488ca5f7a3d6bb40f6ccc7717ceb34487096e..8312dec2c92213b63cff6ea00161ea19b813a6ba 100644 (file)
@@ -1,3 +1,5 @@
+require 'lib/migrate'
+
 class MoveToInnodb < ActiveRecord::Migration
   @@conv_tables = ['nodes', 'ways', 'way_tags', 'way_nodes',
     'current_way_tags', 'relation_members',
index 5500edfcfbf4ac42e9a35e9d754dfdc049a96a47..76ec32222237ef32649849426140aa9b9cd0022e 100644 (file)
@@ -1,3 +1,5 @@
+require 'lib/migrate'
+
 class OrderRelationMembers < ActiveRecord::Migration
   def self.up
     # add sequence column. rails won't let us define an ordering here,
index 4941b72b92fb4b5264bfe42d84b2189394608e14..20d66719df800384a2a708a83cdda4b0fcb172ee 100644 (file)
@@ -1,3 +1,5 @@
+require 'lib/migrate'
+
 class AddEndTimeToChangesets < ActiveRecord::Migration
   def self.up
     # swap the boolean closed-or-not for a time when the changeset will
index 50ba6321dc24ffea9e7388137433f1b370e51f4c..81cdd4d0541bc485f362c87f4b40b995466b21f6 100644 (file)
@@ -59,6 +59,11 @@ module ActiveRecord
         types[:bigint_auto_20] = { :name => "bigint(20) DEFAULT NULL auto_increment" }
         types[:four_byte_unsigned] = { :name=> "integer unsigned" }
         types[:inet] = { :name=> "integer unsigned" }
+
+        enumerations.each do |e,v|
+          types[e.to_sym]= { :name => "enum('#{v.join '\',\''}')" }
+        end
+
         types
       end
 
@@ -96,8 +101,16 @@ module ActiveRecord
         execute "CREATE FULLTEXT INDEX `#{table_name}_#{column}_idx` ON `#{table_name}` (`#{column}`)"
       end
 
-      def alter_column_nwr_enum (table_name, column)
-        execute "alter table #{table_name} change column #{column} #{column} enum('Node','Way','Relation');"
+      def enumerations
+        @enumerations ||= Hash.new
+      end
+
+      def create_enumeration (enumeration_name, values)
+        enumerations[enumeration_name] = values
+      end
+
+      def drop_enumeration (enumeration_name)
+        enumerations.delete(enumeration_name)
       end
 
       def alter_primary_key(table_name, new_columns)
@@ -125,6 +138,11 @@ module ActiveRecord
         types[:bigint_auto_20] = { :name => "bigint" } #fixme: need autoincrement?
         types[:four_byte_unsigned] = { :name => "bigint" } # meh
         types[:inet] = { :name=> "inet" }
+
+        enumerations.each_key do |e|
+          types[e.to_sym]= { :name => e }
+        end
+
         types
       end
 
@@ -147,13 +165,18 @@ module ActiveRecord
         execute "CREATE INDEX #{table_name}_#{column}_idx on #{table_name} (#{column})"
       end
 
-      def alter_column_nwr_enum (table_name, column)
-        response = select_one("select count(*) as count from pg_type where typname = 'nwr_enum'")
-        if response['count'] == "0" #yep, as a string
-          execute "create type nwr_enum as ENUM ('Node', 'Way', 'Relation')"
-        end
-        execute        "alter table #{table_name} drop #{column}"
-        execute "alter table #{table_name} add #{column} nwr_enum"
+      def enumerations
+        @enumerations ||= Hash.new
+      end
+
+      def create_enumeration (enumeration_name, values)
+        enumerations[enumeration_name] = values
+        execute "create type #{enumeration_name} as enum ('#{values.join '\',\''}')"
+      end
+
+      def drop_enumeration (enumeration_name)
+        execute "drop type #{enumeration_name}"
+        enumerations.delete(enumeration_name)
       end
 
       def alter_primary_key(table_name, new_columns)
index ccfc064bcee0139f7630ad98e1447e88aa560511..74e021a6f4612beaf129716566f6db377f065cec 100644 (file)
Binary files a/public/potlatch/potlatch.swf and b/public/potlatch/potlatch.swf differ
index 42311c38fdbbd4a3fea8a10d62f943189812b8ca..0595f3d086827163ac3ad88905133b42747e90a9 100644 (file)
@@ -178,6 +178,12 @@ class NodeControllerTest < ActionController::TestCase
     delete :delete, :id => current_nodes(:visible_node).id
     assert_response :conflict
 
+    # try to delete a node with a different ID
+    content(nodes(:public_visible_node).to_xml)
+    delete :delete, :id => current_nodes(:visible_node).id
+    assert_response :bad_request, 
+       "should not be able to delete a node with a different ID from the XML"
+
     # valid delete now takes a payload
     content(nodes(:public_visible_node).to_xml)
     delete :delete, :id => current_nodes(:public_visible_node).id
@@ -271,9 +277,6 @@ class NodeControllerTest < ActionController::TestCase
     content current_nodes(:visible_node).to_xml
     put :update, :id => current_nodes(:visible_node).id
     assert_require_public_data "should have failed with a forbidden when data isn't public"
-
-    
-    
     
     ## Finally test with the public user
     
@@ -344,6 +347,12 @@ class NodeControllerTest < ActionController::TestCase
     assert_response :conflict, 
        "should not be able to put 'p1r4at3s!' in the version field"
     
+    ## try an update with the wrong ID
+    content current_nodes(:public_visible_node).to_xml
+    put :update, :id => current_nodes(:visible_node).id
+    assert_response :bad_request, 
+       "should not be able to update a node with a different ID from the XML"
+
     ## finally, produce a good request which should work
     content current_nodes(:public_visible_node).to_xml
     put :update, :id => current_nodes(:public_visible_node).id