]> git.openstreetmap.org Git - rails.git/commitdiff
merge upstream/master and resolve conflicts from https://github.com/openstreetmap...
authorMikel Maron <mikel_maron@yahoo.com>
Wed, 12 Oct 2016 14:52:05 +0000 (10:52 -0400)
committerMikel Maron <mikel_maron@yahoo.com>
Wed, 12 Oct 2016 14:52:05 +0000 (10:52 -0400)
35 files changed:
app/controllers/diary_entry_controller.rb
app/controllers/message_controller.rb
app/controllers/notes_controller.rb
app/controllers/trace_controller.rb
app/controllers/user_controller.rb
config/locales/bn.yml
config/locales/en-GB.yml
config/locales/en.yml
config/locales/eo.yml
config/locales/he.yml
config/locales/id.yml
config/locales/it.yml
config/locales/pt-BR.yml
config/locales/pt-PT.yml
config/locales/ru.yml
config/locales/sl.yml
config/locales/zh-CN.yml
config/locales/zh-TW.yml
test/controllers/browse_controller_test.rb
test/controllers/changeset_controller_test.rb
test/controllers/diary_entry_controller_test.rb
test/controllers/notes_controller_test.rb
test/controllers/site_controller_test.rb
test/controllers/user_controller_test.rb
test/factories/friends.rb [new file with mode: 0644]
test/factories/note_comments.rb [new file with mode: 0644]
test/factories/notes.rb [new file with mode: 0644]
test/fixtures/friends.yml [deleted file]
test/fixtures/note_comments.yml [deleted file]
test/fixtures/notes.yml [deleted file]
test/models/friend_test.rb
test/models/note_comment_test.rb
test/models/note_test.rb
test/models/user_test.rb
test/test_helper.rb

index fdc0e9d242214bddbfa3065d93c22878e2e472da..bf9f2a9a24975ffaad3f40e6a9da1a880f40d940 100644 (file)
@@ -28,7 +28,7 @@ class DiaryEntryController < ApplicationController
         # Subscribe user to diary comments
         @diary_entry.subscriptions.create(:user => @user)
 
-        redirect_to :controller => "diary_entry", :action => "list", :display_name => @user.display_name
+        redirect_to :action => "list", :display_name => @user.display_name
       else
         render :action => "edit"
       end
@@ -46,9 +46,9 @@ class DiaryEntryController < ApplicationController
     @diary_entry = DiaryEntry.find(params[:id])
 
     if @user != @diary_entry.user
-      redirect_to :controller => "diary_entry", :action => "view", :id => params[:id]
+      redirect_to :action => "view", :id => params[:id]
     elsif params[:diary_entry] && @diary_entry.update_attributes(entry_params)
-      redirect_to :controller => "diary_entry", :action => "view", :id => params[:id]
+      redirect_to :action => "view", :id => params[:id]
     end
 
     set_map_location
@@ -72,7 +72,7 @@ class DiaryEntryController < ApplicationController
       # Add the commenter to the subscribers if necessary
       @entry.subscriptions.create(:user => @user) unless @entry.subscribers.exists?(@user.id)
 
-      redirect_to :controller => "diary_entry", :action => "view", :display_name => @entry.user.display_name, :id => @entry.id
+      redirect_to :action => "view", :display_name => @entry.user.display_name, :id => @entry.id
     else
       render :action => "view"
     end
@@ -85,7 +85,7 @@ class DiaryEntryController < ApplicationController
 
     diary_entry.subscriptions.create(:user => @user) unless diary_entry.subscribers.exists?(@user.id)
 
-    redirect_to :controller => "diary_entry", :action => "view", :display_name => diary_entry.user.display_name, :id => diary_entry.id
+    redirect_to :action => "view", :display_name => diary_entry.user.display_name, :id => diary_entry.id
   rescue ActiveRecord::RecordNotFound
     render :action => "no_such_entry", :status => :not_found
   end
@@ -95,7 +95,7 @@ class DiaryEntryController < ApplicationController
 
     diary_entry.subscriptions.where(:user => @user).delete_all if diary_entry.subscribers.exists?(@user.id)
 
-    redirect_to :controller => "diary_entry", :action => "view", :display_name => diary_entry.user.display_name, :id => diary_entry.id
+    redirect_to :action => "view", :display_name => diary_entry.user.display_name, :id => diary_entry.id
   rescue ActiveRecord::RecordNotFound
     render :action => "no_such_entry", :status => :not_found
   end
@@ -232,7 +232,7 @@ class DiaryEntryController < ApplicationController
   def require_administrator
     unless @user.administrator?
       flash[:error] = t("user.filter.not_an_administrator")
-      redirect_to :controller => "diary_entry", :action => "view"
+      redirect_to :action => "view"
     end
   end
 
index a22802e63accdbe85531db1d740ba87df6a683f4..97e892156f097cc1a0cb22d51806ff5ec7efed4e 100644 (file)
@@ -25,7 +25,7 @@ class MessageController < ApplicationController
         if @message.save
           flash[:notice] = t "message.new.message_sent"
           Notifier.message_notification(@message).deliver_now
-          redirect_to :controller => "message", :action => "inbox", :display_name => @user.display_name
+          redirect_to :action => "inbox", :display_name => @user.display_name
         end
       end
     end
@@ -81,7 +81,7 @@ class MessageController < ApplicationController
     @title = t "message.inbox.title"
     if @user && params[:display_name] == @user.display_name
     else
-      redirect_to :controller => "message", :action => "inbox", :display_name => @user.display_name
+      redirect_to :action => "inbox", :display_name => @user.display_name
     end
   end
 
@@ -90,7 +90,7 @@ class MessageController < ApplicationController
     @title = t "message.outbox.title"
     if @user && params[:display_name] == @user.display_name
     else
-      redirect_to :controller => "message", :action => "outbox", :display_name => @user.display_name
+      redirect_to :action => "outbox", :display_name => @user.display_name
     end
   end
 
@@ -107,7 +107,7 @@ class MessageController < ApplicationController
     @message.message_read = message_read
     if @message.save && !request.xhr?
       flash[:notice] = notice
-      redirect_to :controller => "message", :action => "inbox", :display_name => @user.display_name
+      redirect_to :action => "inbox", :display_name => @user.display_name
     end
   rescue ActiveRecord::RecordNotFound
     @title = t "message.no_such_message.title"
@@ -125,7 +125,7 @@ class MessageController < ApplicationController
       if params[:referer]
         redirect_to params[:referer]
       else
-        redirect_to :controller => "message", :action => "inbox", :display_name => @user.display_name
+        redirect_to :action => "inbox", :display_name => @user.display_name
       end
     end
   rescue ActiveRecord::RecordNotFound
index 51ef4491d35363be75437919e9089537f1eeff9a..1366038f03e97b7f7f40b99cc23d742e281ba959 100644 (file)
@@ -316,7 +316,7 @@ class NotesController < ApplicationController
   end
 
   ##
-  # Generate a condition to choose which bugs we want based
+  # Generate a condition to choose which notes we want based
   # on their status and the user's request parameters
   def closed_condition(notes)
     closed_since = if params[:closed]
index 60b5a4585330309f5c7aa1bf873ae6e5fe220dea..b7c9ccd70061357f324af38446c84b53b89afa65 100644 (file)
@@ -95,11 +95,11 @@ class TraceController < ApplicationController
       @title = t "trace.view.title", :name => @trace.name
     else
       flash[:error] = t "trace.view.trace_not_found"
-      redirect_to :controller => "trace", :action => "list"
+      redirect_to :action => "list"
     end
   rescue ActiveRecord::RecordNotFound
     flash[:error] = t "trace.view.trace_not_found"
-    redirect_to :controller => "trace", :action => "list"
+    redirect_to :action => "list"
   end
 
   def create
index d250cf21c457a0687e0d2b58c7bf311b7194f474..e49b01ebe2a46144b51ae112cb31e44da93c46fa 100644 (file)
@@ -142,7 +142,7 @@ class UserController < ApplicationController
     @user.data_public = true
     @user.save
     flash[:notice] = t "user.go_public.flash success"
-    redirect_to :controller => "user", :action => "account", :display_name => @user.display_name
+    redirect_to :action => "account", :display_name => @user.display_name
   end
 
   def lost_password
@@ -423,7 +423,7 @@ class UserController < ApplicationController
         if params[:referer]
           redirect_to params[:referer]
         else
-          redirect_to :controller => "user", :action => "view"
+          redirect_to :action => "view"
         end
       end
     else
@@ -446,7 +446,7 @@ class UserController < ApplicationController
         if params[:referer]
           redirect_to params[:referer]
         else
-          redirect_to :controller => "user", :action => "view"
+          redirect_to :action => "view"
         end
       end
     else
@@ -459,14 +459,14 @@ class UserController < ApplicationController
   def set_status
     @this_user.status = params[:status]
     @this_user.save
-    redirect_to :controller => "user", :action => "view", :display_name => params[:display_name]
+    redirect_to :action => "view", :display_name => params[:display_name]
   end
 
   ##
   # delete a user, marking them as deleted and removing personal data
   def delete
     @this_user.delete
-    redirect_to :controller => "user", :action => "view", :display_name => params[:display_name]
+    redirect_to :action => "view", :display_name => params[:display_name]
   end
 
   ##
@@ -628,7 +628,7 @@ class UserController < ApplicationController
     # - If they were referred to the login, send them back there.
     # - Otherwise, send them to the home page.
     if REQUIRE_TERMS_SEEN && !user.terms_seen
-      redirect_to :controller => :user, :action => :terms, :referer => target
+      redirect_to :action => :terms, :referer => target
     elsif user.blocked_on_view
       redirect_to user.blocked_on_view, :referer => target
     else
@@ -740,12 +740,12 @@ class UserController < ApplicationController
       flash[:error] = t("user.filter.not_an_administrator")
 
       if params[:display_name]
-        redirect_to :controller => "user", :action => "view", :display_name => params[:display_name]
+        redirect_to :action => "view", :display_name => params[:display_name]
       else
-        redirect_to :controller => "user", :action => "login", :referer => request.fullpath
+        redirect_to :action => "login", :referer => request.fullpath
       end
     elsif !@user
-      redirect_to :controller => "user", :action => "login", :referer => request.fullpath
+      redirect_to :action => "login", :referer => request.fullpath
     end
   end
 
@@ -768,7 +768,7 @@ class UserController < ApplicationController
   def lookup_user_by_name
     @this_user = User.find_by_display_name(params[:display_name])
   rescue ActiveRecord::RecordNotFound
-    redirect_to :controller => "user", :action => "view", :display_name => params[:display_name] unless @this_user
+    redirect_to :action => "view", :display_name => params[:display_name] unless @this_user
   end
 
   ##
index 7bfe40f81bc0b5c5baaa12658ac61df6f9402e29..aee9198c00c257145d4fc63381808b83ed7c29c2 100644 (file)
@@ -24,7 +24,7 @@ bn:
       changeset_tag: পরিবর্তনধার্য ট্যাগ
       country: দেশ
       diary_comment: ডাইরি মন্তব্য
-      diary_entry: à¦¡à¦¾à¦\87রি à¦\8fনà§\8dà¦\9fà§\8dরি
+      diary_entry: à¦¡à¦¾à¦\87রি à¦­à§\81à¦\95à§\8dতি
       friend: বন্ধু
       language: ভাষা
       message: বার্তা
@@ -50,14 +50,14 @@ bn:
       user_preference: ব্যবহারকারীর পছন্দ
       user_token: ব্যবহারকারী টোকেন
       way: রাস্তা
-      way_node: à¦\93য়à§\87 নোড
-      way_tag: à¦\93য়à§\87 ট্যাগ
+      way_node: à¦°à¦¾à¦¸à§\8dতার নোড
+      way_tag: à¦°à¦¾à¦¸à§\8dতার ট্যাগ
     attributes:
       diary_comment:
-        body: à¦¬à¦¡à¦¿
+        body: à¦®à§\82লাà¦\82শ
       diary_entry:
         user: ব্যবহারকারী
-        title: à¦¶à¦¿à¦°à§\8bনাম
+        title: à¦¬à¦¿à¦·à¦¯à¦¼
         latitude: অক্ষাংশ
         longitude: দ্রাঘিমাংশ
         language: ভাষা
@@ -105,8 +105,8 @@ bn:
     closed_html: <abbr title='%{title}'>%{time} আগে</abbr> বন্ধ
     created_by_html: '%{user} কর্তৃক <abbr title=''%{title}''>%{time} আগে</abbr> তৈরি'
     deleted_by_html: '%{user} কর্তৃক <abbr title=''%{title}''>%{time}আগে</abbr> অপসারণ'
-    edited_by_html: '%{user} কর্তৃক <abbr title=''%{title}''>%{time}আগে</abbr> সম্পাদিত'
-    closed_by_html: '%{user} কর্তৃক <abbr title=''%{title}''>%{time}আগে</abbr> বন্ধ'
+    edited_by_html: '%{user} কর্তৃক <abbr title=''%{title}''>%{time} আগে</abbr> সম্পাদিত'
+    closed_by_html: '%{user} কর্তৃক <abbr title=''%{title}''>%{time} আগে</abbr> বন্ধ'
     version: সংস্করণ
     in_changeset: পরিবর্তনসমূহ
     anonymous: নামহীন
@@ -126,9 +126,9 @@ bn:
       relation: সম্পর্ক (%{count}টি)
       relation_paginated: সম্পর্ক (%{count}টির %{x}-%{y})
       comment: মন্তব্য (%{count}টি)
-      hidden_commented_by: '%{user} থেকে মন্তব্য লুকান <abbr title=''%{exact_time}''>%{when}
-        à¦\86à¦\97à§\87</abbr>'
-      commented_by: '%{user} থেকে মন্তব্য <abbr title=''%{exact_time}''>%{when} আগে</abbr>'
+      hidden_commented_by: '%{user} থেকে <abbr title=''%{exact_time}''>%{when} আগের</abbr>
+        à¦®à¦¨à§\8dতবà§\8dয à¦²à§\81à¦\95ান'
+      commented_by: <abbr title='%{exact_time}'>%{when} আগে</abbr> %{user} থেকে মন্তব্য
       changesetxml: পরিবর্তনধার্য এক্সএমএল
       osmchangexml: osmChange এক্সএমএল
       feed:
@@ -175,8 +175,8 @@ bn:
         note: টীকা
     redacted:
       redaction: সম্পর্ক %{id}
-      message_html: কোনও কারণে %{type}-এর %{version} সংস্করণটি দেখানো যাবেনা। বিস্তারিত
-        à¦\9cানতà§\87 %{redaction_link} à¦²à¦¿à¦\82à¦\95à¦\9fি à¦¦à§\87à¦\96à§\81ন।
+      message_html: কোনও কারণে %{type}-এর %{version} সংস্করণটি দেখানো যাবে না। বিস্তারিত
+        জানতে %{redaction_link} দেখুন।
       type:
         node: সংযোগস্থল
         way: দিক
@@ -198,16 +198,16 @@ bn:
       title: টীকা:%{id}
       new_note: নতুন টীকা
       description: 'বর্ণনা:'
-      open_title: অসমাধিত টীকা %{note_name}
-      closed_title: সমাধান করা টীকা#%{note_name}
-      hidden_title: লুকানো টীকা#%{note_name}
+      open_title: 'অমীমাংসিত টীকা #%{note_name}'
+      closed_title: 'মীমাংসিত টীকা #%{note_name}'
+      hidden_title: 'লুকানো টীকা #%{note_name}'
       open_by: '%{user} কর্তৃক <abbr title=''%{exact_time}''>%{when} আগে</abbr> তৈরি'
       open_by_anonymous: বেনামী ব্যবহারকারী কর্তৃক <abbr title='%{exact_time}'>%{when}
         আগে</abbr> তৈরি
-      commented_by: '%{user} কর্তৃক <abbr title=''%{exact_time}''>%{when} আগে</abbr>
-        à¦¦à§\87য়া à¦®à¦¨à§\8dতবà§\8dয'
-      commented_by_anonymous: à¦¬à§\87নামà§\80 à¦¬à§\8dযবহারà¦\95ারà§\80 à¦\95রà§\8dতà§\83à¦\95 <abbr title='%{exact_time}'>%{when}
-        আগে</abbr> দেয়া মন্তব্য
+      commented_by: '%{user} কর্তৃক করা <abbr title=''%{exact_time}''>%{when} আগের</abbr>
+        মন্তব্য'
+      commented_by_anonymous: à¦¬à§\87নামি à¦¬à§\8dযবহারà¦\95ারà§\80 à¦\95রà§\8dতà§\83à¦\95 à¦\95রা <abbr title='%{exact_time}'>%{when}
+        আগের</abbr> মন্তব্য
       closed_by: '%{user} কর্তৃক <abbr title=''%{exact_time}''>%{when} আগে</abbr>
         মীমাংসিত'
       closed_by_anonymous: বেনামি ব্যবহারকারী দ্বারা <abbr title='%{exact_time}'>%{when}
@@ -224,7 +224,7 @@ bn:
       enclosing: আবদ্ধ বৈশিষ্ট্য
   changeset:
     changeset_paging_nav:
-      showing_page: '%{page} পাতা'
+      showing_page: '%{page}টি পাতা'
       next: পরবর্তী »
       previous: « পূর্ববর্তী
     changeset:
@@ -351,7 +351,7 @@ bn:
         advice: 'যদি উপরের রপ্তানি ব্যর্থ হয়, দয়া করে নীচে তালিকাভুক্ত উৎসের কোন
           একটি ব্যবহারের জন্য বিবেচনা করুন:'
         planet:
-          title: à¦\93à¦\8fসà¦\8fল জগৎ
+          title: à¦\93à¦\8fসà¦\8fম জগৎ
           description: সম্পূর্ণ ওপেনস্ট্রীটম্যাপ ডাটাবেসের নিয়মিত হালনাগাদের অনুলিপি
         overpass:
           title: ওভারপাস API
@@ -361,7 +361,7 @@ bn:
           title: অন্যান্য উৎস
           description: ওপেনস্ট্রীটম্যাপ উইকিতে তালিকাভুক্ত অতিরিক্ত সূত্র
       options: বিকল্প
-      format: 'ফরম্যাট:'
+      format: বিন্যাস
       scale: স্কেল
       max: সর্বোচ্চ
       image_size: চিত্রের আকার
@@ -442,10 +442,10 @@ bn:
           gambling: জুয়াখেলার আড্ডা
           grave_yard: কবরস্থান
           gym: ব্যায়াম কেন্দ্র / জিমখানা
-          health_centre: স্বাস্থ কেন্দ্র
+          health_centre: স্বাস্থকেন্দ্র
           hospital: হাসপাতাল
           hunting_stand: শিকারশালা
-          ice_cream: আইস ক্রিম
+          ice_cream: আইসক্রিম
           kindergarten: শিশুবিদ্যালয়
           library: পাঠাগার
           market: বাজার
@@ -584,7 +584,7 @@ bn:
           farmland: কৃষিজমি
           forest: অরণ্য
           garages: গ্যারেজ
-          grass: ঘস
+          grass: à¦\98াস
           greenfield: তৃণভূমি
           industrial: শিল্পাঞ্চল
           meadow: তৃণভূমি
@@ -719,7 +719,7 @@ bn:
           preserved: সংরক্ষিত রেলপথ
           proposed: প্রস্তাবিত রেলপথ
           station: রেল স্টেশন
-          stop: à¦°à§\87ল à¦¸à§\8dà¦\9fপ
+          stop: à¦°à§\87ল à¦¥à¦¾à¦®à¦¾à¦° à¦¸à§\8dথান
           subway: ভূগর্ভস্থ পথ
           subway_entrance: ভূগর্ভস্থ পথের প্রবেশিকা
           tram: ট্রামপথ
@@ -757,7 +757,7 @@ bn:
           general: সাধারণ দোকান
           gift: উপহারের দোকান
           greengrocer: সবজিওয়ালা
-          grocery: মুদি দোকান
+          grocery: মুদি দোকান
           hairdresser: নাপিত
           hardware: যন্ত্রাংশের দোকান
           hifi: হাই-ফাই
@@ -773,7 +773,7 @@ bn:
           optician: চশমা বিক্রেতা
           organic: জৈব খাদ্যের দোকান
           pharmacy: ঔষধালয়
-          photo: à¦«à¦\9fà§\8bশপ
+          photo: à¦\9bবির à¦¦à§\8bà¦\95ান
           salon: সালোন
           second_hand: পুরনো-সামগ্রীর দোকান
           shoes: জুতোর দোকান
@@ -811,13 +811,14 @@ bn:
           lock_gate: ফটক বন্ধ
           mooring: নঙ্গরাবদ্ধকরণ
           river: নদী
+          wadi: ওয়াদি
           waterfall: জলপ্রপাত
           "yes": জলপথ
       admin_levels:
         level2: রাষ্ট্রের সীমানা
         level4: রাজ্যের সীমানা
         level5: অঞ্চলের সীমানা
-        level6: à¦ªà§\8dরদসের সীমানা
+        level6: à¦ªà§\8dরদà§\87শের সীমানা
         level8: নগরের সীমান
         level9: গ্রামের সীমানা
         level10: উপনগরের সীমানা
@@ -922,9 +923,9 @@ bn:
   notifier:
     diary_comment_notification:
       subject: '[OpenStreetMap] %{user} আপনার দিনলিপি ভুক্তিতে মন্তব্য করেছেন'
-      hi: হাই %{to_user}
+      hi: হাই %{to_user},
     message_notification:
-      hi: হাই %{to_user}
+      hi: হাই %{to_user},
     friend_notification:
       had_added_you: '%{user} আপনাকে ওপেনস্ট্রীটম্যাপে বন্ধু হিসেবে যোগ করেছেন।'
       see_their_profile: আপনি %{userurl}-এ তাদের প্রোফাইল দেখতে পারেন।
@@ -968,6 +969,11 @@ bn:
       outbox: আউটবক্স
       subject: বিষয়
       date: তারিখ
+      people_mapping_nearby: কাছাকাছি অবদানকারী
+    message_summary:
+      unread_button: অপঠিত হিসেবে চিহ্নিত করুন
+      read_button: পঠিত হিসেবে চিহ্নিত করুন
+      reply_button: প্রত্যুত্তর
   site:
     key:
       table:
@@ -1137,7 +1143,7 @@ bn:
         destination_without_exit: গন্তব্যে পৌঁছানো
         against_oneway_without_exit: '%{name}-এ একমুখীর বিরুদ্ধে যান'
         end_oneway_without_exit: '%{name}-এর একমুখী শেষ'
-        unnamed: à¦¬à§\87নামি সড়ক
+        unnamed: à¦¨à¦¾à¦®à¦¹à§\80ন সড়ক
       time: সময়
     query:
       node: সংযোগস্থল
index 791cca0bda64005a33a0e0270dcc8d7f18aac369..5486084fe9cad92fd9e9866fe300846def04a6c8 100644 (file)
@@ -9,6 +9,7 @@
 # Author: Chase me ladies, I'm the Cavalry
 # Author: E THP
 # Author: EdLoach
+# Author: Eduard Popov
 # Author: Jagwar
 # Author: Kosovastar
 # Author: Macofe
@@ -2389,7 +2390,7 @@ en-GB:
         turn_left_without_exit: Turn left onto %{name}
         offramp_left_without_exit: Take the sliproad on the left onto %{name}
         onramp_left_without_exit: Turn left on the sliproad onto %{name}
-        endofroad_left_without_exit: At the end of the road turn left onto %{name}
+        endofroad_left_without_exit: В конце дороги поверните налево на %{name}
         merge_left_without_exit: Merge left onto %{name}
         fork_left_without_exit: At the fork turn left onto %{name}
         slight_left_without_exit: Slight left onto %{name}
index 23307bdc53b641dfaefdcc7d0001b04798eb0bd2..6403087ef0a6b8e41485533ba6d331e8d90ec38a 100644 (file)
@@ -2191,7 +2191,7 @@ en:
     key:
       title: "Map Key"
       tooltip: "Map Key"
-      tooltip_disabled: "Map Key available only for Standard layer"
+      tooltip_disabled: "Map Key not available for this layer"
     map:
       zoom:
         in: Zoom In
index d92c3bcc356c98bbf349fc41f0d82d7e1ca1ae2a..3018512ee392cf7c3504c5b646451e49be9b9ac6 100644 (file)
@@ -94,13 +94,13 @@ eo:
     default: Implicita (nune %{name})
     potlatch:
       name: Potlatch 1
-      description: Potlatch 1 (en-retumila redaktilo)
+      description: Potlatch 1 (en-foliumila redaktilo)
     id:
       name: iD
-      description: iD (en-retumila redaktilo)
+      description: iD (en-foliumila redaktilo)
     potlatch2:
       name: Potlatch 2
-      description: Potlatch 2 (en-retumila redaktilo)
+      description: Potlatch 2 (en-foliumila redaktilo)
     remote:
       name: ekstera redaktilo
       description: ekstera redaktilo (JOSM aŭ Merkaartor)
@@ -121,7 +121,7 @@ eo:
     download_xml: Elŝuti XML-on
     view_history: Vidi historion
     view_details: Montri detalojn
-    location: 'Loko:'
+    location: 'Pozicio:'
     changeset:
       title: 'Ŝanĝaro: %{id}'
       belongs_to: Aŭtoro
@@ -191,7 +191,7 @@ eo:
         way: linio
         relation: rilato
     start_rjs:
-      feature_warning: Ŝarĝanta %{num_features} eblojn, kiuj eblas igi vian retumilon
+      feature_warning: Ŝarĝanta %{num_features} eblojn, kiuj eblas igi vian foliumilon
         malrapida aŭ nerespondebla. Ĉu vi certe volas montri tiujn ĉi datumojn?
       load_data: Elŝuti datumojn
       loading: Ŝargante...
@@ -743,9 +743,9 @@ eo:
           airport: Flughaveno
           city: Urbego
           country: Lando
-          county: Provinco
+          county: Distrikto
           farm: Farmobieno
-          hamlet: Vilaĝego
+          hamlet: Vilaĝeto
           house: Domo
           houses: Domoj
           island: Insulo
@@ -754,13 +754,13 @@ eo:
           locality: Ejo
           moor: Arbustetaro
           municipality: Municipo
-          neighbourhood: Kvartaleto
+          neighbourhood: Najbaraĵo
           postcode: Poŝtkodo
           region: Regiono
           sea: Maro
-          state: Subŝtato
+          state: Provinco
           subdivision: Kvartalo
-          suburb: Kvartalego
+          suburb: Suburbo
           town: Urbo
           unincorporated_area: Ekstermunicipa tereno
           village: Vilaĝo
@@ -909,13 +909,13 @@ eo:
           weir: Riversojlo
           "yes": Akvovojo
       admin_levels:
-        level2: Limo de lando
-        level4: Limo de subŝtato
-        level5: Limo de regiono
-        level6: Limo de provinco
-        level8: Limo de urbo
-        level9: Limo de distrikto
-        level10: Limo de kvartalego
+        level2: Limo de lando (niv.2)
+        level4: Limo de provinco (niv.4)
+        level5: Limo de regiono (niv.5)
+        level6: Limo de distrikto (niv.6)
+        level8: Limo de urbo (niv.8)
+        level9: Limo de kvartalo (niv.9)
+        level10: Limo de subkvartalo (niv.10)
     description:
       title:
         osm_nominatim: Loko el <a href="http://nominatim.openstreetmap.org/">OpenStreetMap
@@ -998,7 +998,7 @@ eo:
         href="http://osmfoundation.org/">OpenStreetMap Foundation</a> (OSMF).
       intro_2_html: Vi rajtas kopii, disdoni, transdoni kaj modifi niajn datumojn,
         nur se vi atribuos aŭtorecon al OpenStreetMap kaj ĝiaj kontribuintoj. Se vi
-        modifos aŭ uzos niajn datumojn, vi devos distribui la verkon sub la sama permesilo.
+        modifos aŭ uzos niajn datumojn, vi povos distribui la verkon sub la sama permesilo.
         La plena <a href="http://opendatacommons.org/licenses/odbl/1.0/">interkonsento
         de uzado</a> eksplikas viajn rajtojn kaj devojn.
       intro_3_html: |-
@@ -1006,45 +1006,338 @@ eo:
         Commons Atribuite-Samkondiĉe 2.0</a> (CC BY-SA).
       credit_title_html: Kiel atribui aŭtorecon
       credit_1_html: 'Ni postulas, ke vi markos: &ldquo;&copy; Kontribuintoj de OpenStreetMap&rdquo;.'
+      credit_2_html: Vi ankaŭ devas klarigi, ke datumoj estas disponeblaj sub la permesilo
+        Open Database License, kaj kartografio de map-kaheloj sub la permesilo CC
+        BY-SA. Vi povas indiki tion per fari ligilon al <a href="http://www.openstreetmap.org/copyright">tiu
+        ĉi paĝo pri permesilo</a>. Alimaniere, se vi distribuas OSM en datuma formo,
+        vi povas mencii nomo(j)n kaj ligilo(j)n al la permesilo(j). Se ne estas eble
+        meti ligilojn (ekz. en paperaj mapoj), ni sugestas direkti viajn legantojn
+        al openstreetmap.org (eble meti plenan retadreson), al opendatacommons.org
+        kaj (se necesas) al creativecommons.org.
+      credit_3_html: |-
+        En esploreblaj elektronikaj mapoj, la aŭtorecon povas esti montrata ĉe la angulo de mapo.
+        Ekzemplo:
+      attribution_example:
+        alt: Ekzemplo kiel atribui OpenStreetMap sur retpaĝo
+        title: Ekzemplo de aŭtorec-atribuado
+      more_title_html: Sciigi pli
+      more_1_html: |-
+        Legu pli pri uzado de niaj datumoj kaj kiel atribui aŭtorecon, je la <a
+        href="http://osmfoundation.org/Licence">retpaĝo de OSMF Licence</a> kaj je la <a
+        href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">paĝo de oftaj demandoj pri leĝo</a>.
+      more_2_html: Kvankam la datumoj de OpenStreetMap estas liberaj, ni ne povas
+        liveri senpagan API-on por eksteraj programistoj. Legu nian <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">politikon
+        pri uzado de API</a>, <a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">politikon
+        pri uzado de kaheloj</a> kaj <a href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">poltikon
+        pri uzado de Nominatim</a>.
+      contributors_title_html: Kunlaborantoj
+      contributors_intro_html: 'Niaj kunlaborantoj estas miloj da homoj. Ni ankaŭ
+        inkludas datumoj sub malferma permesilo el landaj kartografiaj organizaĵoj
+        kaj el aliaj fontoj, inter ili:'
+      contributors_at_html: |-
+        <strong>Aŭstrujo</strong>: enhavas datumojn el <a href="http://data.wien.gv.at/">Stadt Wien</a> (sub <a href="http://creativecommons.org/licenses/by/3.0/at/deed.eo">CC BY</a>),
+        <a href="http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm">Land Vorarlberg</a> kaj
+        Land Tirol (sub <a href="http://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/">CC BY AT kun postaj ŝanĝoj</a>).
+      contributors_ca_html: |-
+        <strong>Kanado</strong>: enhavas datumojn el
+        GeoBase&reg;, GeoGratis (&copy; Department of Natural
+        Resources Canada), CanVec (&copy; Department of Natural
+        Resources Canada), kaj StatCan (Geography Division,
+        Statistics Canada).
+      contributors_fi_html: |-
+        <strong>Suomujo</strong>: enhavas datumojn el
+        National Land Survey of Finland's Topographic Database kaj aliaj fontoj, sub la <a href="http://www.maanmittauslaitos.fi/en/NLS_open_data_licence_version1_20120501">NLSFI permesilo</a>.
+      contributors_fr_html: '<strong>Francujo</strong>: enhavas datumojn ricevitajn
+        el ''Direction Générale des Impôts''.'
+      contributors_nl_html: |-
+        <strong>Nederlando</strong>: enhavas datumojn el &copy; AND, 2007
+        (<a href="http://www.and.com">www.and.com</a>).
+      contributors_nz_html: '<strong>Nov-Zelando</strong>: enhavas datumojn ricevitajn
+        el ''Land Information New Zealand''. Crown Copyright reserved.'
+      contributors_si_html: |-
+        <strong>Slovenujo</strong>: enhavas datumojn el <a href="http://www.gu.gov.si/">Ofico de Termezurado kaj Kartografio</a> kaj
+        <a href="http://www.mkgp.gov.si/">Ministerio pri Terkulturo, Arbarkulturo kaj Proviantado</a>
+        (publikaj informoj de Slovenujo).
+      contributors_za_html: |-
+        <strong>Sud-Afriko</strong>: enhavas datumojn ricevitajn el <a href="http://www.ngi.gov.za/">Chief Directorate:
+        National Geo-Spatial Information</a>, landaj kopirajtoj rezervitaj.
+      contributors_gb_html: |-
+        <strong>Unuiĝinta Reĝlando</strong>: enhavas datumojn el 'Ordnance
+        Survey' &copy; Crown copyright and database right
+        2010-12.
+      contributors_footer_1_html: |-
+        Por pli da detaloj pri ĉi tiuj kaj aliaj fontoj uzitaj por plibonigi OpenStreetMap, bonvolu viziti la <a
+        href="http://wiki.openstreetmap.org/wiki/Contributors">paĝon pri kontribuintoj</a> en la OpenStreetMap-vikio.
+      contributors_footer_2_html: Inkludo de datumoj en OpenStreetMap ne indikas,
+        ke la provizanto de datumoj apogas OpenStreetMap, garantias por iu aŭ respondumas
+        por iu.
+      infringement_title_html: Rompo de kopirajtoj
+      infringement_1_html: OSM-kunlaborantoj memoru, por ke neniam aldonu datumojn
+        el iuj ajn fontoj protektataj de kopirajto (ekz. Google Maps aŭ paperaj mapoj)
+        sen klara permeso de posedanto de kopirajtoj.
+      infringement_2_html: Se ve pensas, ke datumoj protektataj per kopirajto estas
+        misaldonitaj al OpenStreetMap-datumbazo aŭ al tiu ĉi retpaĝo, bonvolu legi
+        pri <a href="http://www.osmfoundation.org/wiki/License/Takedown_procedure">proceduro
+        de forigado de datumoj</a> aŭ plenigi la <a href="http://dmca.openstreetmap.org/">enretan
+        formularon</a>.
+      trademarks_title_html: <span id="trademarks"></span>Registritaj markoj
+      trademarks_1_html: OpenStreetMap, la piktogramo de grandiga lenso kaj 'State
+        of the Map' estas registritaj markoj de Fondaĵo OpenStreetMap. Se vi havas
+        iujn demandojn pri uzado de niaj markoj, bonvolu sendi viajn demandojn al
+        la <a href="http://wiki.osmfoundation.org/wiki/Licensing_Working_Group">grupo
+        de laboro pri permesilo</a>.
   welcome_page:
     title: Bonvenon!
+    introduction_html: Bonvenon al OpenStreetMap, la libera kaj redaktebla mapo de
+      la mondo. Nun kiam vi registriĝis, vi eblas eki mapigadon. Jen estas mallonga
+      manlibreto kun la plej gravaj aĵoj kiuj vi povas scii.
+    whats_on_the_map:
+      title: Kio estas sur la mapo
+      on_html: OpenStreetMap estas loko por mapigi objektojn, kiuj estas <em>kaj realaj
+        kaj aktualaj</em> - tiu estas milionoj da konstruaĵoj, vojoj kaj aliaj detalaĵoj
+        pri lokoj. Vi povas mapigi ĉiujn elementojn de reala mondo kiuj interesas
+        vin.
+      off_html: Ni <em>ne povas</em> inkludi personajn taksojn, eksajn aŭ malcertajn
+        objektojn, kaj datumoj de kopirajtataj fontoj. Escepte se vi estas permesita,
+        ne kopiu datumoj el aliaj interretaj aŭ paperaj mapoj.
+    basic_terms:
+      title: Fundamentaj terminoj pri mapigado
+      paragraph_1_html: OpenStreetMap havas sian propran ĵargonon. Jen estas kelkaj
+        utilaj vorotoj.
+      editor_html: <strong>Redaktilo</strong> estas programo aŭ retpaĝo, kiun vi povas
+        uzi por modifi mapon.
+      node_html: <strong>Nodo</strong> (ang 'nodo') estas punkto sur la mapo, kiel
+        restoracio aŭ arbo.
+      way_html: <strong>Linio</strong> (ang. 'way') estas linio aŭ areo, kiel vojo,
+        rivereto, lago aŭ konstruaĵo.
+      tag_html: <strong>Etikedo</strong> (ang. 'tag') estas kolekto de datumoj priskribanta
+        nodon aŭ linion, kiel nomo de restoracio aŭ rapidlimo de vojo.
+    rules:
+      title: Reguloj!
+      paragraph_1_html: "OpenStreetMap havas malmultajn formalajn regulojn, tamen
+        ni esperas, ke ĉiuj kunlaboros kaj interparolos en la komunumo. Se vi planas
+        iujn agadojn aliajn ol permanajn redaktojn, bonvolu legi la sekvajn rekomendojn
+        pri <a href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>enportadoj</a>
+        kaj \n<a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>aŭtomataj
+        redaktoj</a>."
+    questions:
+      title: Iaj demandoj?
+      paragraph_1_html: OpenStreetMap havas kelkajn ejojn por lerni pri la projekto,
+        por demandi pri ion ajn kaj kune diskuti kaj dokumenti pri mapigado. <a href='%{help_url}'>Alklaku
+        por ricevi helpon</a>.
     start_mapping: Eki mapigadon
+    add_a_note:
+      title: Ĉu mankas al vi tempo por ridaktado? Aldonu rimarkon!
+      paragraph_1_html: Se vi volas nur korekti iun etan kaj vi ne havas tempon por
+        registriĝi kaj lerni redaktadon, vi povas facile aldoni rimarkon.
+      paragraph_2_html: Simple iru al <a href='%{map_url}'>la mapo</a> kaj alklaku
+        la piktogramon <span class='icon note'></span>. Tio aldonos treneblan markon
+        al la mapo. Entajpu vian mesaĝon, konservu ĝin kaj aliaj mapigistoj okupiĝos
+        pri via rimarko.
+  fixthemap:
+    title: Raporti problemon / Korekti mapon
+    how_to_help:
+      title: Kiel helpi
+      join_the_community:
+        title: Aliĝi al la komunumo
+        explanation_html: Se vi rimarkis iun problemon kun niaj map-datumoj, ekzemple
+          strato aŭ adreso mankas, la plej bona rimedo estas aniĝi OpenStreetMap-komunumo
+          kaj redakti kaj ripari datumojn mem.
+      add_a_note:
+        instructions_html: Simple alklaku <a class='icon note'></a> aŭ la saman piktogramon
+          sur la mapo. Tio ĉi aldonos moveblan markon, aldonu vian mesaĝon, konservu
+          ĝin, kaj aliaj mapigistoj okupiĝos pri via rimarko.
+    other_concerns:
+      title: Aliaj aferoj
+      explanation_html: Se vi havas demandojn pri kial niaj datumoj aŭ enhavo estas
+        uzataj, bonvolu ekkoni <a href='/copyright'>paĝon pri kopirajto</a> por pliaj
+        leĝaj informoj, aŭ kontaktu la <a href='http://wiki.osmfoundation.org/wiki/Working_Groups'>OSMF-laborgrupon</a>.
   help_page:
+    title: Akiri helpon
+    introduction: OpenStreetMap havas kelkajn ejojn por lerni pri la projekto, por
+      demandi pri ion ajn kaj kune diskuti kaj dokumenti pri mapigado.
+    welcome:
+      url: /welcome
+      title: Bonvenon al OSM
+      description: Komencu ekde tiu ĉi manlibreto ampleksanta fundamentojn de OpenStreetMap.
+    beginners_guide:
+      url: http://wiki.openstreetmap.org/wiki/Beginners%27_guide
+      title: Manlibro por komencantoj
+      description: Manlibro por komencantoj kreata de la komunumo (en la Angla).
     help:
       url: https://help.openstreetmap.org/
+      title: OpenStreetMap-helppaĝo
+      description: Demandu aŭ serĉu respondojn je retpaĝo de demandoj-kaj-respondoj
+        pri OSM.
+    mailing_lists:
+      title: Dissendolistoj
+      description: Demandu aŭ diskutu pri interesaj temoj en multaj pritemaj aŭ regionaj
+        dissendolistoj.
     forums:
       title: Forumoj
+      description: Demandoj kaj diskutoj por tiuj, kiuj preferas kutimaj diskutforumoj.
+    irc:
+      title: IRC
+      description: Interaga babilejo en multaj diversaj lingvoj kaj pri multaj temoj.
+    switch2osm:
+      title: switch2osm
+      description: Helpas firmaojn kaj organizaĵojn ŝanĝi al mapoj kaj aliaj servoj
+        de OpenStreetMap.
+    wiki:
+      url: https://wiki.openstreetmap.org/wiki/Eo:Main_Page
+      title: Vikio OpenStreetMap
+      description: Esploru vikion por akiri detalan dokumentadon de OSM.
+  about_page:
+    next: Sekva
+    copyright_html: <span>&copy;</span>OpenStreetMap<br>kontribuintoj
+    used_by: '%{name} liveras map-datumojn por miloj da retpaĝoj, poŝtelefonaj aplikaĵoj
+      kaj aparatoj'
+    lede_text: OpenStreetMap estas kreata de komunumo de mapigistoj kiuj aldonas kaj
+      prizorgas datumojn pri vojoj, kursoj, kafejoj, stacidomoj kaj pli da aliaj,
+      en la tuta mondo.
+    local_knowledge_title: Loka scio
+    local_knowledge_html: OpenStreetMap emfazas lokan scion. Kontribuantoj uzas aerfotojn,
+      GPS-aparatojn kaj normajn mapojn por verigi ĉu datumoj de OSM estas akurataj
+      kaj ĝisdatigaj.
+    community_driven_title: Kondukata de komunumo
+    community_driven_html: |-
+      La komunumo de OpenStreetMap estas diversa, pasia kaj kreskas tagon post tago. Inter niaj kontribuantoj estas amatoroj de mapoj, istoj de GIS, inĝenieroj prizorgantaj OSM-servilojn, helpistoj kiuj mapigas en terenoj de katastrofoj kaj pli da aliuloj. Por lerni pli pri la komunumo, vidu <a href='%{diary_path}'>ĵurnalojn de uzantoj</a>,
+      <a href='http://blogs.openstreetmap.org/'>komunumajn taglibrojn</a> kaj la retpaĝon de <a href='http://www.osmfoundation.org/'>Fundaĵo OSM</a>.
+    open_data_title: Malfermaj datumoj
+    open_data_html: 'OpenStreetMap estas <i>malfermaj datumoj</i>: vi povas uzi ĝin
+      kiamaniere vi volas sub la kondiĉo de vi atribuos aŭtorecon al OpenStreetMap
+      kaj ĝiaj kontribuintoj. Se vi modifos aŭ uzos niajn datumojn, vi povos distribui
+      la verkon nur sub la sama permesilo. Vidu la <a href=''%{copyright_path}''>paĝon
+      pri kopirajto kaj permesilo</a> por pli da detaloj.'
+    legal_title: Leĝaj demandoj
+    legal_html: Tiu ĉi retpaĝo kaj aliaj servoj estas formale administrata de la <a
+      href='http://osmfoundation.org/'>Fondaĵo OpenStreetMap</a> (OSMF) komisie de
+      la komunumo. Uzado de ĉiuj OSMF-servoj estas regulata per <a href="http://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy">Politiko
+      de uzado</a> kaj nia <a href="http://wiki.osmfoundation.org/wiki/Privacy_Policy">Politiko
+      de privateco</a>. Bonvolu <a href='http://osmfoundation.org/Contact'>kontakti
+      kun OSMF</a>, se vi havas iun demandon pri permesilo, kopirajto aŭ leĝo.
+    partners_title: Kunlaborantoj
   notifier:
     diary_comment_notification:
+      subject: '[OpenStreetMap] %{user} komentis vian ĵurnal-afiŝon'
       hi: Saluton %{to_user},
+      header: '%{from_user} komentis vian afiŝon en OpenStreetMap-ĵurnalo kun la temo
+        %{subject}:'
+      footer: Vi ankaŭ povas legi la komenton ĉe %{readurl} kaj komenti ĝin ĉe %{commenturl}
+        aŭ responde ĉe %{replyurl}
     message_notification:
       hi: Saluton %{to_user},
+      header: '%{from_user} sendis al vi mesaĝon tra OpenStreetMap kun la temo %{subject}:'
+      footer_html: Vi ankaŭ povas legi la mesaĝon ĉe %{readurl} kaj respondi ĉe %{replyurl}
     friend_notification:
       subject: '[OpenStreetMap] %{user} aldonis vin kiel amikon'
+      had_added_you: '%{user} aldonis vin kiel amikon je OpenStreetMap.'
+      see_their_profile: Vi povas vidi lian profilon ĉe %{userurl}.
+      befriend_them: Vi ankaŭ povas aldoni vin kiel amikon ĉe %{befriendurl}.
     gpx_notification:
       greeting: Saluton,
+      your_gpx_file: Ŝajnas, ke via GPX-dosiero
       with_description: kun la priskribo
+      and_the_tags: 'kaj kun la sekvaj etikedoj:'
+      and_no_tags: kaj kun neniu etikedo.
+      failure:
+        subject: '[OpenStreetMap] Eraro dum enportado de GPX-dosiero'
+        failed_to_import: 'ne estas enportita sukcese. Eraro:'
+        more_info_1: Pli da informoj pri malsukceso de enportado de GPX-dosieroj kaj
+          kiel eviti
+        more_info_2: 'ilin vi povas trovi je:'
+      success:
+        subject: '[OpenStreetMap] GPX-dosiero enportita sukcese'
+        loaded_successfully: estas sukcese ŝargita kun %{trace_points} el %{possible_points}
+          punktoj.
+    signup_confirm:
+      subject: '[OpenStreetMap] Bonvenon al OpenStreetMap'
+      greeting: Saluton!
+      created: Iu (espereble vi) ĵus kreis konton je %{site_url}.
+      confirm: Unue devas konfirmi, ke tiu ĉi peto devenas de vi, do bonvolu alklaki
+        la ligilon sube por konfirmi vian konton.
+      welcome: Post konfirmo de konto, ni liveros al vi pliajn informojn kiel komenci.
     email_confirm:
-      subject: '[OpenStreetMap] Konfirmi vian retpoŝtadreson'
+      subject: '[OpenStreetMap] Konfirmado de retpoŝtadreso'
     email_confirm_plain:
       greeting: Saluton,
+      hopefully_you: Iu (espereble vi) volas ŝanĝi vian retpoŝtadreson je %{server_url}
+        al %{new_address}.
+      click_the_link: Se tiu estas vi, bonvolu alklaku la ligilon sube por konfirmi
+        ŝanĝon de adreso.
     email_confirm_html:
       greeting: Saluton,
+      hopefully_you: Iu (espereble vi) volas ŝanĝi vian retpoŝtadreson je %{server_url}
+        al %{new_address}.
+      click_the_link: Se tiu estas vi, bonvolu alklaku la ligilon sube por konfirmi
+        ŝanĝon de adreso.
+    lost_password:
+      subject: '[OpenStreetMap] Peto pri restarigo de pasvorto'
     lost_password_plain:
       greeting: Saluton,
+      hopefully_you: Iu (espereble vi) volas restarigi la pasvorton por konto je openstreetmap.org
+        por tiu ĉi retpoŝtadreso.
+      click_the_link: Se tiu estas vi, bonvolu alklaki la ligilon sube por restarigi
+        la pasvorton.
     lost_password_html:
       greeting: Saluton,
+      hopefully_you: Iu (espereble vi) volas restarigi la pasvorton por konto je openstreetmap.org
+        por tiu ĉi retpoŝtadreso.
+      click_the_link: Se tiu estas vi, bonvolu alklaki la ligilon sube por restarigi
+        la pasvorton.
     note_comment_notification:
+      anonymous: Anonimulo
       greeting: Saluton,
+      commented:
+        subject_own: '[OpenStreetMap] %{commenter} komentis vian rimarkon'
+        subject_other: '[OpenStreetMap] %{commenter} komentis rimarkon pri kiu vi
+          interesiĝas'
+        your_note: '%{commenter} komentis vian rimarkon sur mapo ĉe %{place}.'
+        commented_note: '%{commenter} komentis rimarkon sur mapo pri kiu vi interesiĝas.
+          La rimarko troviĝas ĉe %{place}.'
+      closed:
+        subject_own: '[OpenStreetMap] %{commenter} solvis vian rimarkon'
+        subject_other: '[OpenStreetMap] %{commenter} solvis rimarkon pri kiu vi interesiĝas'
+        your_note: '%{commenter} solvis vian rimarkon sur mapo ĉe %{place}.'
+        commented_note: '%{commenter} solvis rimarkon sur mapo pri kiu vi interesiĝas.
+          La rimarko troviĝis ĉe %{place}.'
+      reopened:
+        subject_own: '[OpenStreetMap] %{commenter} remalfermis vian rimarkon'
+        subject_other: '[OpenStreetMap] %{commenter} remalfermis rimarkon pri kiu
+          vi interesiĝis'
+        your_note: '%{commenter} remalfermis vian rimarkon sur mapo ĉe %{place}.'
+        commented_note: '%{commenter} remalfermis rimarkon sur mapo pri kiu vi interesiĝis.
+          La rimarko troviĝis ĉe %{place}.'
+      details: Pli da detaloj pri la rimarko, vi povas trovi je %{url}.
     changeset_comment_notification:
       greeting: Saluton,
+      commented:
+        subject_own: '[OpenStreetMap] %{commenter} komentis vian ŝanĝaron'
+        subject_other: '[OpenStreetMap] %{commenter} komentis ŝanĝaron pri kiu vi
+          interesiĝas'
+        your_changeset: '%{commenter} komentis vian ŝanĝaron kreitan je %{time}'
+        commented_changeset: '%{commenter} komentis ŝanĝaron observatan de vi, kreitan
+          de %{changeset_author} je %{time}'
+        partial_changeset_with_comment: kun komento '%{changeset_comment}'
+        partial_changeset_without_comment: sen komento
+      details: Pli da detaloj pri la ŝanĝaro povas esti trovita ĉe %{url}.
   message:
     inbox:
       title: Alvenkesto
       my_inbox: Mia leterkesto
+      outbox: elirkesto
+      messages: Vi havas %{new_messages} kaj %{old_messages}
+      new_messages:
+        one: '%{count} novan mesaĝon'
+        other: '%{count} novajn mesaĝojn'
+      old_messages:
+        one: '%{count} malnovan mesaĝon'
+        other: '%{count} malnovajn mesaĝojn'
       from: De
       subject: Temo
       date: Dato
+      no_messages_yet: Vi ankoraŭ ne havas iun mesaĝon. Eble kontaktu kun iu el %{people_mapping_nearby_link}?
+      people_mapping_nearby: proksimaj mapigistoj
     message_summary:
       unread_button: Marki kiel nelegitan
       read_button: Marki kiel legitan
@@ -1053,53 +1346,112 @@ eo:
     new:
       title: Sendi mesaĝon
       send_message_to: Sendi novan mesaĝon al %{name}
+      subject: Temo
+      body: Enhavo
       send_button: Sendi
-      back_to_inbox: Reen al mesaĝejo
+      back_to_inbox: Reen al alvenkesto
       message_sent: Mesaĝo sendita
+      limit_exceeded: Vi antaŭnelonge sendis multajn mesaĝojn. Bonvolu atendi iom
+        da tempo antaŭ vi sendos pliajn.
+    no_such_message:
+      title: Neekzistanta mesaĝo
+      heading: Tiu ĉi mesaĝo ne ekzistas
+      body: Bedaŭrinde ne ekzistas mesaĝo kun tiu ĉi identigilo.
     outbox:
+      title: Elirkesto
       my_inbox: Mia %{inbox_link}
-      inbox: Alvenkesto
+      inbox: alvenkesto
+      outbox: elirkesto
+      messages:
+        one: Vi havas %{count} senditan mesaĝon
+        other: Vi havas %{count} senditajn mesaĝojn
       to: Al
       subject: Temo
       date: Dato
+      no_sent_messages: Vi ankoraŭ ne sendis iun mesaĝon. Eble kontaktu kun iu el
+        %{people_mapping_nearby_link}?
+      people_mapping_nearby: proksimaj mapigistoj
+    reply:
+      wrong_user: Vi estas ensalutita kiel '%{user}', sed la mesaĝo, kiun vi volas
+        respondi, ne estas sendita al tiu uzanto. Bonvolu ensaluti kiel propra uzanto
+        por respondi ĝin.
     read:
       title: Legi mesaĝon
       from: De
       subject: Temo
       date: Dato
       reply_button: Respondi
-      unread_button: Marki kiel nelegita
+      unread_button: Marki kiel nelegitan
+      back: Reen
       to: Al
+      wrong_user: Vi estas ensalutita kiel '%{user}', sed la mesaĝo, kiun vi volas
+        legi estas sendita al tiu uzanto. Bonvolu ensaluti kiel propra uzanto por
+        legi ĝin.
     sent_message_summary:
       delete_button: Forigi
     mark:
-      as_read: Mesaĝo markita kiel legita
-      as_unread: Mesaĝo markita kiel nelegita
+      as_read: Mesaĝo markita kiel legitan
+      as_unread: Mesaĝo markita kiel nelegitan
     delete:
       deleted: Mesaĝo forigita
   site:
     index:
+      js_1: Vi aŭ uzas foliumilon, kiu ne subtenas Ĝavoskripton, aŭ vi havas ĝin malaktivan.
+      js_2: OpensStreetMap uzas Ĝavoskripton por montri ŝoveblan mapon.
+      permalink: Konstanta ligilo
+      shortlink: Mallonga ligilo
       createnote: Aldoni rimarkon
+      license:
+        copyright: Kopirajto de OpenStreetMap kaj kontribuintoj, sub malferma permesilo
+      remote_failed: Redaktado malsukcesis - certigu ĉu JOSM aŭ Merkaartor estas startigita
+        kaj ĉu defora aliro estas aktiva
     edit:
+      not_public: Vi ne agordis por viaj redaktoj estu publikaj.
+      not_public_description: Vi ne povas plu redakti la mapon. Vi povas agordi ilin
+        kiel publikan ĉe via %{user_page}.
       user_page_link: uzantpaĝo
+      anon_edits_link_text: Tie ĉi vi sciigis kiel.
+      flash_player_required: Por uzi Potlatch, la OpenStreetMap-redaktilo, vi bezonas
+        la kromprogramon Flash. Vi povas <a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">elŝuti
+        Flash Player el Adobe.com retpaĝo</a>. <a href="http://wiki.openstreetmap.org/wiki/Editing">Kelkaj
+        aliaj redaktiloj</a> estas disponeblaj por redakti OpenStreetMap.
+      potlatch_unsaved_changes: Vi havas nekonservitajn ŝanĝojn. (Por konservi ŝanĝojn
+        en Potlatch, malelektu nune elektitan linion aŭ punkton se vi redaktas en
+        'rekta reĝimo', aŭ alklaku butonon 'konservi', se ĝi videblas.)
+      potlatch2_not_configured: Potlatch 2 ne estas agordita - vidu http://wiki.openstreetmap.org/wiki/The_Rails_Port#Potlatch_2
+        por pli da informoj
+      potlatch2_unsaved_changes: Vi havas nekonservitajn ŝanĝojn. (Por konservi ilin
+        en Potlatch 2, alklaku 'konservi'.)
+      id_not_configured: iD ne estas agordita
+      no_iframe_support: Via foliumilo ne subtenas 'HTML iframes', ili estas bezonataj
+        por tiu ĉi eblo.
     sidebar:
       search_results: Serĉrezultoj
       close: Fermi
     search:
       search: Serĉi
+      get_directions: Difini la kurson
+      get_directions_title: Difinas la kurson inter du punktoj
       from: El
       to: Al
       where_am_i: Kie mi estas?
+      where_am_i_title: Trovas la nunan pozicion per la foliumilo
       submit_text: Ek
     key:
       table:
         entry:
           motorway: Aŭtovojo
           main_road: Ĉefa vojo
-          primary: Strato de unua ordo
-          secondary: Strato de dua ordo
+          trunk: Vojo ekspresa
+          primary: Vojo unua-ranga
+          secondary: Vojo dua-ranga
+          unclassified: Vojo kvara-ranga
           track: Vojo kampa
+          bridleway: Ĉevalvojo
           cycleway: Bicikla vojo
+          cycleway_national: Bicikla vojo nacia
+          cycleway_regional: Bicikla vojo regiona
+          cycleway_local: Bicikla vojo loka
           footway: Trotuaro
           rail: Fervojo
           subway: Metroo
@@ -1107,7 +1459,14 @@ eo:
           - Fervojo malpeza
           - tramo
           cable:
-            1: seĝtelfero
+          - Kablovojo
+          - seĝtelfero
+          runway:
+          - Avia dromo
+          - aŭtokur-strato
+          apron:
+          - Aviadil-parkumejo
+          - flugstacio
           admin: Administra limo
           forest: Kultiv-arbaro
           wood: Arbaro
@@ -1117,7 +1476,7 @@ eo:
           common:
           - Publika ripoza tereno
           - herbejo
-          retail: Butikcentro
+          retail: Komercejo
           industrial: Industria areo
           commercial: Oficeja tereno
           heathland: Erikejo
@@ -1125,6 +1484,7 @@ eo:
           - Lago
           - akvorezervujo
           farm: Farmobieno
+          brownfield: Antaŭ-konstruejo (post-malkonstruado)
           cemetery: Tombejo
           allotments: Familiaj ĝardenoj
           pitch: Ludkampo
@@ -1139,8 +1499,13 @@ eo:
           summit:
           - Montosupro
           - montopinto
-          destination: Nur por lokaj loĝantoj
+          tunnel: Strekumita konturo - tunelo
+          bridge: Nigra konturo - ponto
+          private: Privata aliro
+          destination: Aliro nur al celo
+          construction: Vojoj dum konstruado
           bicycle_shop: Bicikl-vendejo
+          bicycle_parking: Parkumejo bicikla
           toilets: Necesejo
     richtext_area:
       edit: Redakti
@@ -1303,17 +1668,18 @@ eo:
       my diary: Mia ĵurnalo
       new diary entry: nova ĵurnalrikordo
       my edits: Miaj redaktoj
-      my traces: Miaj spuroj
+      my traces: Spuroj
       my notes: Miaj rimarkoj
       my messages: Mesaĝoj
       my profile: Profilo
-      my settings: Miaj agordoj
+      my settings: Agordoj
       my comments: Miaj komentoj
       blocks on me: Blokas min
       send message: Sendi mesaĝon
       diary: Ĵurnalo
       edits: Redaktoj
       traces: Spuroj
+      notes: Map-rimarkoj
       remove as friend: Eksamikigi
       add as friend: Aldoni kiel amikon
       mapper since: 'Mapigisto ekde:'
@@ -1331,6 +1697,7 @@ eo:
       role:
         administrator: Ĉi tiu uzanto estas administranto
         moderator: Ĉi tiu uzanto estas kontrolanto
+      comments: Komentoj
       create_block: Bloki ĉi tiun uzanton
       activate_user: Aktivigi tiun ĉi uzanton
       deactivate_user: Malaktivigi tiun ĉi uzanton
@@ -1357,7 +1724,7 @@ eo:
         heading: Publika redaktado
       profile description: 'Priskribo de profilo:'
       preferred languages: 'Preferataj Lingvoj:'
-      home location: 'Hejma Loko:'
+      home location: 'Hejma pozicio:'
       no home location: Vi ne enigis vian hejmlokon.
       latitude: 'Latitudo:'
       longitude: 'Longitudo:'
@@ -1381,7 +1748,7 @@ eo:
       success: Ŝanĝo de via retpoŝta adreso konfirmita!
       failure: Retadreso jam estis konfirmita per tiu ĵetono.
     set_home:
-      flash success: Hejma loko sukcese konservita
+      flash success: Pozicio de hejmo sukcese konservita
     go_public:
       flash success: Ĉiuj viaj redaktoj naŭ estas publikaj, kaj vi naŭ rajtas redakti.
     make_friend:
@@ -1436,6 +1803,7 @@ eo:
       cancel: Nuligi
     key:
       title: Mapklarigo
+      tooltip: Mapklarigo
       tooltip_disabled: Mapklarigo estas nur disponebla ĉe la norma tavolo
     map:
       zoom:
index 8df0a1f336dba7d9c1dee4da5aebc48d4166a50f..cdf75890c19a35b79ac780dcca452307e3848da1 100644 (file)
@@ -1230,7 +1230,10 @@ he:
       לפי התנאים של אותו הרישיון. ר' את <a href='%{copyright_path}'>דף הרישיון וזכויות היוצרים</a> לפרטים נוספים.
     legal_title: משפטי
     legal_html: |-
-      האתר הזה ושירותים רבים אחרים מופעלים על־ידי <a href='http://osmfoundation.org/'>קרן OpenStreetMap</a>&rlm; (OSMF) בשם הקהילה.
+      האתר הזה ושירותים רבים אחרים מופעלים על־ידי <a href='http://osmfoundation.org/'>קרן OpenStreetMap</a>&rlm; (OSMF) בשם הקהילה. השימוש בכל השירותים במפעילה OSMF כפוף
+      ל־<a href="http://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy">
+      מדיניות שימוש קביל</a> שלנו
+      ול־<a href="http://wiki.osmfoundation.org/wiki/Privacy_Policy">Privacy Policy</a>מדיניות הפרטיות</a> שלנו
       <br>
       נא <a href='http://osmfoundation.org/Contact'>ליצור קשר עם OSMF</a> אם יש לך שאלות על רישוי, זכויות יוצרים או שאלות ובעיות משפטיות אחרות.
     partners_title: שותפים
@@ -1824,9 +1827,9 @@ he:
         התרומה</a>.
       email address: 'כתובת דוא״ל:'
       confirm email address: 'אימות כתובת דוא״ל:'
-      not displayed publicly: ×\9c×\90 ×\9e×\95צ×\92 ×\91פ×\95×\9e×\91×\99 (ר׳ <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
-        title="wiki privacy policy including section on email addresses">מידיניות
-        פרטיות</a>)
+      not displayed publicly: ×\94×\9bת×\95×\91ת ×©×\9c×£ ×\9c×\90 ×\9e×\95צ×\92ת ×\91פ×\95×\9e×\91×\99, ×¨×³ ×\90ת <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
+        title="OSMF privacy policy including section on email addresses">מידיניות
+        פרטיות</a> למידע נוסף
       display name: 'שם התצוגה:'
       display name description: שם המשתמש שלך, שמוצג בפומבי. אפשר לשנות את זה בהעפות
         שלך.
index 476a93ddc1db77f7c9cc8d3c00373297b18e9b47..01f4db744352c76e83aec522551777987c9b830c 100644 (file)
@@ -1245,7 +1245,8 @@ id:
       Hak Cipta dan Lisensi</a> untuk perinciannya.'
     legal_title: Legal
     legal_html: |-
-      Situs ini dan layanan terkait lainnya dioperasikan secara resmi oleh <a href='http://osmfoundation.org/'>OpenStreetMap Foundation</a> (OSMF) atas nama komunitas.
+      Situs ini dan layanan terkait lainnya dioperasikan secara resmi oleh <a href='http://osmfoundation.org/'>OpenStreetMap Foundation</a> (OSMF) atas nama komunitas. Menggunakan semua layanan yang dioperasikan oleh OSMF tunduk kepada <a href="http://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy">
+      Kebijakan Penggunaan Diterima</a> dan <a href="http://wiki.osmfoundation.org/wiki/Privacy_Policy">Kebijakan Privasi</a> kami
       <br>
       Silakan <a href='http://osmfoundation.org/Contact'>menghubungi OSMF</a> jika Anda punya pertanyaan seputar lisensi, hak cipta, atau isu dan pertanyaan hukum lainnya.
     partners_title: Rekan
@@ -1875,9 +1876,10 @@ id:
         kontributor</a>.
       email address: 'Alamat Email:'
       confirm email address: 'Konfirmasi Alamat Email:'
-      not displayed publicly: Tidak dipajangkan secara umum (Lihat <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
-        title="wiki privacy policy including section on email addresses">kebijakan
-        privasi</a>)
+      not displayed publicly: Alamat Anda tidak dipajangkan secara umum, lihat <a
+        href="http://wiki.osmfoundation.org/wiki/Privacy_Policy" title="OSMF privacy
+        policy including section on email addresses">kebijakan privasi</a> kami untuk
+        informasi lebih lanjut
       display name: 'Tampilan Nama:'
       display name description: Username Anda yang ditampilkan pada publik. Anda dapat
         mengubahnya dalam pengaturan.
index ae6cfbb469b2bbd70e09a45423b33f912746047a..48aa89ad184233c8f1c07bc4b4df2b57b83d3542 100644 (file)
@@ -33,6 +33,7 @@
 # Author: Ricordisamoa
 # Author: Rippitippi
 # Author: Ruila
+# Author: Selven
 # Author: Shirayuki
 # Author: Simone
 # Author: SimoneSVC
@@ -2050,6 +2051,8 @@ it:
       gravatar:
         gravatar: Usa Gravatar
         link text: che cos'è questo?
+        disabled: Gravatar è stato disattivato.
+        enabled: La visualizzazione del vostro Gravatar è stata attivata.
       new image: Aggiungi un'immagine
       keep image: Mantieni l'immagine attuale
       delete image: Rimuovi l'immagine attuale
index 9edd7dae147fdb2bcbec695b1615e0626b05bee3..1307e3969893d16f39a2bf83b5cdc5f2cf5bd48f 100644 (file)
@@ -22,6 +22,7 @@
 # Author: Luk3
 # Author: Macofe
 # Author: Matheus Sousa L.T
+# Author: NMaia
 # Author: Nemo bis
 # Author: Nighto
 # Author: Rodrigo Avila
@@ -1253,11 +1254,14 @@ pt-BR:
       Se você alterar os dados ou criar algo com os dados, pode distribuir
       o produto resultante apenas sob a mesma licença. Consulte <a href='%{copyright_path}'>a página sobre direitos de autor e licenciamento</a> para mais informações.
     legal_title: Jurídico
-    legal_html: Esta página e vários outros serviços relacionados são formalmente
+    legal_html: "Esta página e vários outros serviços relacionados são formalmente
       operados pela <a href='http://osmfoundation.org/'>OpenStreetMap Foundation</a>
-      (OSMF) em nome da comunidade. <br> Por favor <a href='http://osmfoundation.org/Contact'>contate
+      (OSMF) em nome da comunidade. O uso de todos os serviços operados pela OSMF
+      está sujeito às nossas <a href=\"http://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy\">\nPolíticas
+      de Uso Aceitável</a> e à nossa <a href=\"http://wiki.osmfoundation.org/wiki/Privacy_Policy\">Política
+      de Privacidade</a>\n<br> \nPor favor <a href='http://osmfoundation.org/Contact'>contate
       a OSMF</a> se tiver perguntas sobre licenciamento, direitos autorais ou outras
-      questões e problemas legais.
+      questões e problemas legais."
     partners_title: Parceiros
   notifier:
     diary_comment_notification:
@@ -1884,9 +1888,9 @@ pt-BR:
         do Contribuidor</a>.
       email address: 'Endereço de E-mail:'
       confirm email address: 'Confirme o Endereço de E-mail:'
-      not displayed publicly: Não será exibido publicamente (veja a <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
+      not displayed publicly: Seu endereço não é exibido publicamente, veja a <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
         title="política de privacidade no wiki incluindo a seção sobre endereços de
-        e-mail">política de privacidade</a>)
+        e-mail">política de privacidade</a> para mais informações
       display name: 'Nome de Exibição:'
       display name description: Seu nome de usuário disponível publicamente. Você
         pode mudá-lo depois nas preferências.
index 82d2b1e49f150ef9779a314777a5e0a07c69363b..3134bc720c5056667992681e764cdc4971d4b80e 100644 (file)
@@ -1863,9 +1863,10 @@ pt-PT:
         de Colaboração</a>.
       email address: 'E-mail:'
       confirm email address: 'Confirmar E-mail:'
-      not displayed publicly: Não será visível publicamente (ver <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
-        title="política de privacidade incluindo secção sobre endereços de e-mail">política
-        de privacidade</a>)
+      not displayed publicly: O seu endereço de IP não será visível publicamente.
+        Consulte a <a href="http://wiki.osmfoundation.org/wiki/Privacy_Policy" title="política
+        de privacidade OSMF, incluindo secção sobre endereços de correio eletrónico">política
+        de privacidade</a> para mais informação.
       display name: 'Nome de utilizador:'
       display name description: O nome de utilizador será visível publicamente. Poderá
         alterar o nome posteriormente nas preferências.
index 29b8df2c7c8cdae38554a06a3184d166677f16c9..751cd79860777e0b7da8f6878db8af337ee936c2 100644 (file)
@@ -16,6 +16,7 @@
 # Author: DCamer
 # Author: Dmitry-s93
 # Author: Dr&mx
+# Author: Eduard Popov
 # Author: Edward17
 # Author: Eleferen
 # Author: Ergo
@@ -1569,6 +1570,8 @@ ru:
           private: Частный доступ
           destination: Целевой доступ
           construction: Строительство дороги
+          bicycle_shop: Магазин велосипедов
+          bicycle_parking: Парковка для велосипедов
     richtext_area:
       edit: Изменить
       preview: Предпросмотр
@@ -2055,6 +2058,8 @@ ru:
       gravatar:
         gravatar: Использовать Gravatar
         link text: что это?
+        disabled: Gravatar отключён.
+        enabled: Отображение вашего Gravatar включено.
       new image: Добавить изображение
       keep image: Оставить текущее изображение
       delete image: Удалить текущее изображение
@@ -2420,11 +2425,17 @@ ru:
       instructions:
         continue_without_exit: Продолжите по %{name}
         slight_right_without_exit: Слегка направо на %{name}
+        endofroad_right_without_exit: В конце дороги поверните направо на %{name}
+        merge_right_without_exit: Перестройтесь направо на %{name}
+        fork_right_without_exit: На развилке поверните направо на %{name}
         turn_right_without_exit: Поверните направо на %{name}
         sharp_right_without_exit: Резко направо на %{name}
         uturn_without_exit: Разворот по %{name}
         sharp_left_without_exit: Резко налево на %{name}
         turn_left_without_exit: Поверните налево на %{name}
+        endofroad_left_without_exit: В конце дороги поверните налево на %{name}
+        merge_left_without_exit: Перестройтесь налево на %{name}
+        fork_left_without_exit: На развилке поверните налево на %{name}
         slight_left_without_exit: Слегка влево на %{name}
         via_point_without_exit: (через точку)
         follow_without_exit: Следуйте %{name}
index d01174f5262504427c70bfcd77f72503060b3f20..42eb0d0957503fec30e71185184452873899c9bf 100644 (file)
@@ -8,6 +8,7 @@
 # Author: Macofe
 # Author: Mateju
 # Author: Peter Klofutar
+# Author: Pickle12
 # Author: Ruila
 # Author: Skalcaa
 # Author: Stefanb
@@ -1647,9 +1648,9 @@ sl:
         sodelovanja</a>.
       email address: 'E-poštni naslov:'
       confirm email address: 'Potrdite naslov e-pošte:'
-      not displayed publicly: Ne bo javno objavljeno (glej <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
-        title="politika zasebnosti z razdelkom o naslovu elektronske pošte v wiki-ju">politiko
-        zasebnosti</a>)
+      not displayed publicly: Vaš naslov ne bo javno objavljen (za več informacij
+        glej <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy" title="politika
+        zasebnosti z razdelkom o naslovu elektronske pošte v wiki-ju">politiko zasebnosti</a>)
       display name: 'Prikazno ime:'
       display name description: Javno prikazano uporabniško ime. To lahko spremenite
         kasneje v nastavitvah.
index d24d8c25faa8a1195a541b906c0cd22ec1413f0c..f140eb32c9b0ead6bc5e0cae958df0eda8377fe2 100644 (file)
@@ -1019,12 +1019,12 @@ zh-CN:
         href="http://osmfoundation.org/Licence">OSMF许可协议页面</a>和<a
         href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">法律常见问题</a>阅读更多关于使用我们的数据,以及如何表明我们是作者的信息。
       more_2_html: 尽管 OpenStreetMap 开放数据,但是我们无法为第三方开发人员提供免费的地图 API。详见我们的 <a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">API使用政策</a>、<a
-        href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">图块使用政策</a>及<a
-        href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">名称服务使用政策</a>。
+        href="http://wiki.openstreetmap.org/wiki/Zh-hans:Tile_usage_policy">地图图块使用政策</a>及<a
+        href="http://wiki.openstreetmap.org/wiki/Zh-hans:Nominatim#使用政策">名称服务使用政策</a>。
       contributors_title_html: 我们的贡献者
       contributors_intro_html: 我们的数据来源于成千上万人的贡献。但我们也从国家测绘机构等处获取公共版权的数据,其中包括:
       contributors_at_html: <strong>奥地利</strong>:包含来自 <a href="http://data.wien.gv.at/">Stadt
-        Wien</a>(<a href="http://creativecommons.org/licenses/by/3.0/at/deed.de">CC
+        Wien</a>(<a href="http://creativecommons.org/licenses/by/3.0/at/deed.zh">CC
         BY</a>协议)、<a href="http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm">Land
         Vorarlberg</a>及 Land Tirol (修订的 <a href="http://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/">CC-BY
         AT</a>协议)的数据。
@@ -1044,7 +1044,7 @@ zh-CN:
       contributors_gb_html: <strong>英国</strong>:包含来自 Ordnance 的调查数据,&copy; Crown 版权所有及数据库权利,2010-12。
       contributors_footer_1_html: |-
         关于其进一步的细节,及其他被用来帮助提升 OpenStreetMap 的来源,详见 OpenStreetMap Wiki 的<a
-        href="http://wiki.openstreetmap.org/wiki/Contributors">贡献者页面</a>。
+        href="http://wiki.openstreetmap.org/wiki/Zh-hans:Contributors">贡献者页面</a>。
       contributors_footer_2_html: OpenStreetMap 纳入数据并不意味着原始数据提供者认可 OpenStreetMap、提供任何担保或担负任何法律责任。
       infringement_title_html: 著作权侵犯
       infringement_1_html: OSM 的贡献者会被提醒,绝不要在没有著作权人的明确许可时添加来自任何有著作权的来源的数据(如谷歌地图或印刷地图)。
@@ -1069,7 +1069,7 @@ zh-CN:
       tag_html: <strong>标签</strong>是关于节点或路径的简短数据,例如餐馆的名字或者道路的速度限制。
     rules:
       title: 规则!
-      paragraph_1_html: OpenStreetMap很少有正式规则,但我们期待所有参与者能合作,并与社区沟通。如果在考虑任何除手工编辑的活动,请阅读并遵守<a
+      paragraph_1_html: OpenStreetMap很少有正式规则,但我们期待所有参与者能合作,并与社区沟通。如果在考虑任何除手工编辑的活动,请阅读并遵守<a
         href='http://wiki.openstreetmap.org/wiki/Import/Guidelines'>导入</a>和<a href='http://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct'>自动编辑</a>的指导。
     questions:
       title: 还有疑问吗?
@@ -1143,7 +1143,8 @@ zh-CN:
       OpenStreetMap。如果您改变或者使用这些数据,您必须按照相同的版权协议发布结果。详情请参见<a href='%{copyright_path}'>版权协议</a>。
     legal_title: 法律
     legal_html: |-
-      此网站和很多其他相关服务已由<a href='http://osmfoundation.org/'>OpenStreetMap基金会</a>(OSMF)正式代表社群运营。
+      此网站和很多其他相关服务已由<a href='http://osmfoundation.org/'>OpenStreetMap基金会</a>(OSMF)正式代表社群运营。使用所有由OSMF运营的服务均需符合我们的<a href="http://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy">
+      可接受使用方针</a>和我们的<a href="http://wiki.osmfoundation.org/wiki/Privacy_Policy">隐私政策</a>
       <br>
       如果您有许可协议、版权或其他法律问题,请<a href='http://osmfoundation.org/Contact'>联络OSMF</a>。
     partners_title: 合作伙伴
@@ -1512,7 +1513,7 @@ zh-CN:
       public_traces_from: 来自 %{user} 的公开 GPS 轨迹
       description: 浏览最近上传的 GPS 轨迹
       tagged_with: 以 %{tags} 标记
-      empty_html: 尚无轨迹。<a href='%{upload_link}'>上传新轨迹</a>或在<a href='http://wiki.openstreetmap.org/wiki/Beginners_Guide_1.2'>wiki页面</a>上了解
+      empty_html: 尚无轨迹。<a href='%{upload_link}'>上传新轨迹</a>或在<a href='http://wiki.openstreetmap.org/wiki/Zh-hans:Beginners_Guide_1.2'>wiki页面</a>上了解
         GPS 轨迹。
     delete:
       scheduled_for_deletion: 计划删除的轨迹
@@ -1698,8 +1699,8 @@ zh-CN:
       license_agreement: 当您确认您的帐户时,您需要同意<a href="http://www.osmfoundation.org/wiki/License/Contributor_Terms">贡献者条款</a>。
       email address: 电子邮件地址:
       confirm email address: 确认电子邮件地址:
-      not displayed publicly: 不公开显示(参阅<a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
-        title="wiki privacy policy including section on email addresses">隐私政策</a>)
+      not displayed publicly: 您的地址未公开显示,请参见我们的<a href="http://wiki.osmfoundation.org/wiki/Privacy_Policy"
+        title="OSMF隐私政策,包含部分电子邮件地址">隐私政策</a>以获取更多信息
       display name: 显示名称:
       display name description: 您公开显示的用户名。您可以稍后在首选项中进行修改。
       external auth: 第三方身份验证:
@@ -1754,7 +1755,7 @@ zh-CN:
       remove as friend: 删除朋友
       add as friend: 添加朋友
       mapper since: 绘图始于:
-      ago: (%{time_in_words_ago} 前)
+      ago: (%{time_in_words_ago} 前)
       ct status: 贡献者条款:
       ct undecided: 未决定
       ct declined: 已拒绝
index a5ba417e6f654e32029fcfc4725b73b1ea4c535c..064655ad6077cede6f70876576d49026ee1f6719 100644 (file)
@@ -990,8 +990,8 @@ zh-TW:
       intro_2_html: |-
         您可以自由地複製、散布、傳輸及修改我們的資料,前提是您須標明作者為 OpenStreetMap 及其貢獻者。若您在我們的資料上作修改或據之衍生其他資料
         ,則只可依相同授權條款散佈有關成果。授權的<a href="http://opendatacommons.org/licenses/odbl/1.0/">法律原文</a>詳述您的權責。
-      intro_3_html: 我們地圖影像塊的製圖法以及我們的文件,以<a href="http://creativecommons.org/licenses/by-sa/2.0/">共享創意-署名-相同方式共享
-        2.0</a>(CC BY-SA) 條款授權。
+      intro_3_html: 我們地圖影像塊的製圖法以及我們的文件,以<a href="http://creativecommons.org/licenses/by-sa/2.0/deed.zh_TW">創用CC
+        姓名標示-相同方式分享 (CC BY-SA) 2.0版</a>條款授權。
       credit_title_html: 如何標明作者是 OpenStreetMap
       credit_1_html: 我們要求您以&ldquo;&copy; OpenStreetMap 貢獻者&rdquo;標明作者。
       credit_2_html: 您亦須清晰註明,有關資料可透過開放資料庫授權條款取得。若使用我們的影像塊,則須註明其製圖法是按 CC-BY-SA 授權。您可以透過連結至<a
@@ -1007,15 +1007,16 @@ zh-TW:
       more_title_html: 尋找更多
       more_1_html: |-
         在<a
-        href="http://wiki.openstreetmap.org/wiki/Legal_FAQ">常見法律問題</a>中,可閱讀更多關於使用我們的資料,以及如何標明我們是作者的資料。
+        href="http://osmfoundation.org/Licence">OSMF 授權條款頁面</a>與<a
+        href="http://wiki.openstreetmap.org/wiki/Zh-hant:Legal_FAQ">法律上的常見問題</a>中,可閱讀更多關於使用我們的資料,以及如何標明我們是作者的資料。
       more_2_html: 雖然 OpenStreetMap 是開放資料,但我們無法為第三方開發人員提供免費的地圖 API。詳見我們的<a href="http://wiki.openstreetmap.org/wiki/API_usage_policy">API
         使用政策</a>、<a href="http://wiki.openstreetmap.org/wiki/Tile_usage_policy">地圖影像塊使用政策</a>及<a
-        href="http://wiki.openstreetmap.org/wiki/Nominatim#Usage_Policy">Nominatim
+        href="http://wiki.openstreetmap.org/wiki/Zh-hant:Nominatim#使用政策">Nominatim
         服務使用政策</a>。
       contributors_title_html: 我們的貢獻者
       contributors_intro_html: 我們的貢獻者為成千上萬的人。我們也收納了從國家測繪機構及其他來源等取得的開放版權資料,其中包括:
       contributors_at_html: <strong>奧地利</strong>:包含來自 <a href="http://data.wien.gv.at/">Stadt
-        Wien</a> (<a href="http://creativecommons.org/licenses/by/3.0/at/deed.de">CC
+        Wien</a> (<a href="http://creativecommons.org/licenses/by/3.0/at/deed.zh_TW">CC
         BY</a>授權) 、<a href="http://www.vorarlberg.at/vorarlberg/bauen_wohnen/bauen/vermessung_geoinformation/weitereinformationen/services/wmsdienste.htm">Land
         Vorarlberg</a>及 Land Tirol (修訂的<a href="http://www.tirol.gv.at/applikationen/e-government/data/nutzungsbedingungen/">CC-BY
         AT</a>授權) 的資料。
@@ -1161,8 +1162,9 @@ zh-TW:
       及其貢獻者。若您在我們的資料上作修改或以之透過某些方式衍生其他資料,則只可依相同授權條款散佈有關成果。詳情請參閱<a href='%{copyright_path}'>版權及授權條款頁面</a>。
     legal_title: 法律資訊
     legal_html: "本站以及許多相關的服務正式由<a href='http://osmfoundation.org/'>OpenStreetMap 基金會</a>
-      (OSMF) 代表社群所營運。\n<br> \n若您有任何授權、版權或其他法律諮詢與問題,請<a href='http://osmfoundation.org/Contact'>聯絡
-      OSMF</a>。"
+      (OSMF) 代表社群所營運。所有使用的OSMF運行服務皆符合我們的<a href=\"http://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy\">可接受使用政策</a>和<a
+      href=\"http://wiki.osmfoundation.org/wiki/Privacy_Policy\">隱私政策</a>\n<br> \n若您有任何授權、版權或其他法律諮詢與問題,請<a
+      href='http://osmfoundation.org/Contact'>聯絡 OSMF</a>。"
     partners_title: 合作夥伴
   notifier:
     diary_comment_notification:
@@ -1530,7 +1532,7 @@ zh-TW:
       public_traces_from: '%{user} 的公開 GPS 軌跡'
       description: 瀏覽最近的 GPS 軌跡上傳
       tagged_with: 有如下標籤:%{tags}
-      empty_html: 還沒有軌跡。<a href='%{upload_link}'>上傳新的軌跡</a>或在 <a href='http://wiki.openstreetmap.org/wiki/Beginners_Guide_1.2'>wiki
+      empty_html: 還沒有軌跡。<a href='%{upload_link}'>上傳新的軌跡</a>或在 <a href='http://wiki.openstreetmap.org/wiki/Zh-hant:Beginners_Guide_1.2'>wiki
         頁面</a>上瞭解更多有關 GPS 軌跡的資訊。
     delete:
       scheduled_for_deletion: 軌跡已被排程刪除
@@ -1717,8 +1719,8 @@ zh-TW:
         。
       email address: 電子郵件地址:
       confirm email address: 確認電子郵件地址:
-      not displayed publicly: 不要公開顯示 (請看 <a href="http://wiki.openstreetmap.org/wiki/Privacy_Policy"
-        title="wiki privacy policy including section on email addresses">隱私權政策</a>)
+      not displayed publicly: 您的地址未公開顯示,請看我們的<a href="http://wiki.osmfoundation.org/wiki/Privacy_Policy"
+        title="包含部份電郵地址的OSMF隱私權政策">隱私權政策</a>來獲得更多訊息
       display name: 顯示名稱:
       display name description: 您公開顯示的使用者名稱。您可以稍後在偏好設定中改變它。
       external auth: 第三方身份認證
index d0cbeb796a9593fb425b0be53fba45f2f8f33d98..f4e157f6607e082e13c3deefabb1c53237da044f 100644 (file)
@@ -85,32 +85,40 @@ class BrowseControllerTest < ActionController::TestCase
   end
 
   def test_read_note
-    browse_check "note", notes(:open_note).id, "browse/note"
+    open_note = create(:note_with_comments)
+
+    browse_check "note", open_note.id, "browse/note"
   end
 
   def test_read_hidden_note
-    get :note, :id => notes(:hidden_note_with_comment).id
+    hidden_note_with_comment = create(:note_with_comments, :status => "hidden")
+
+    get :note, :id => hidden_note_with_comment.id
     assert_response :not_found
     assert_template "browse/not_found"
     assert_template :layout => "map"
 
-    xhr :get, :note, :id => notes(:hidden_note_with_comment).id
+    xhr :get, :note, :id => hidden_note_with_comment.id
     assert_response :not_found
     assert_template "browse/not_found"
     assert_template :layout => "xhr"
 
     session[:user] = users(:moderator_user).id
 
-    browse_check "note", notes(:hidden_note_with_comment).id, "browse/note"
+    browse_check "note", hidden_note_with_comment.id, "browse/note"
   end
 
   def test_read_note_hidden_comments
-    browse_check "note", notes(:note_with_hidden_comment).id, "browse/note"
+    note_with_hidden_comment = create(:note_with_comments, :comments_count => 2) do |note|
+      create(:note_comment, :note => note, :visible => false)
+    end
+
+    browse_check "note", note_with_hidden_comment.id, "browse/note"
     assert_select "div.note-comments ul li", :count => 1
 
     session[:user] = users(:moderator_user).id
 
-    browse_check "note", notes(:note_with_hidden_comment).id, "browse/note"
+    browse_check "note", note_with_hidden_comment.id, "browse/note"
     assert_select "div.note-comments ul li", :count => 2
   end
 
index e1960d4e8882492f9c3869bc43ed1549f67e590a..c996bbaab3c2297e8effe87b41158b58b1610721 100644 (file)
@@ -3,7 +3,7 @@ require "changeset_controller"
 
 class ChangesetControllerTest < ActionController::TestCase
   api_fixtures
-  fixtures :friends, :changeset_comments, :changesets_subscribers
+  fixtures :changeset_comments, :changesets_subscribers
 
   ##
   # test all routes which lead to this controller
index 6ebf4ec0912fef585f6e733915cd0c9bb8c7b994..d926f26569e1781ff12f96a9fb91ffdf9c83f8d4 100644 (file)
@@ -1,7 +1,7 @@
 require "test_helper"
 
 class DiaryEntryControllerTest < ActionController::TestCase
-  fixtures :users, :user_roles, :languages, :friends
+  fixtures :users, :user_roles, :languages
 
   include ActionView::Helpers::NumberHelper
 
@@ -440,7 +440,8 @@ class DiaryEntryControllerTest < ActionController::TestCase
   end
 
   def test_list_friends
-    diary_entry = create(:diary_entry, :user_id => friends(:normal_user_with_second_user).friend_user_id)
+    friend = create(:friend, :user_id => users(:normal_user).id)
+    diary_entry = create(:diary_entry, :user_id => friend.friend_user_id)
     _other_entry = create(:diary_entry, :user_id => users(:second_public_user).id)
 
     # Try a list of diary entries for your friends when not logged in
index bad1e5f1b4e2f1a20f0efb09214e40e70dabfff2..e846bbd6aba21e1386bf29b75a2cacab564adb28 100644 (file)
@@ -1,7 +1,7 @@
 require "test_helper"
 
 class NotesControllerTest < ActionController::TestCase
-  fixtures :users, :user_roles, :notes, :note_comments
+  fixtures :users, :user_roles
 
   ##
   # test all routes which lead to this controller
@@ -214,44 +214,50 @@ class NotesControllerTest < ActionController::TestCase
   end
 
   def test_comment_success
+    open_note_with_comment = create(:note_with_comments)
     assert_difference "NoteComment.count", 1 do
       assert_no_difference "ActionMailer::Base.deliveries.size" do
-        post :comment, :id => notes(:open_note_with_comment).id, :text => "This is an additional comment", :format => "json"
+        post :comment, :id => open_note_with_comment.id, :text => "This is an additional comment", :format => "json"
       end
     end
     assert_response :success
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
-    assert_equal notes(:open_note_with_comment).id, js["properties"]["id"]
+    assert_equal open_note_with_comment.id, js["properties"]["id"]
     assert_equal "open", js["properties"]["status"]
-    assert_equal 5, js["properties"]["comments"].count
+    assert_equal 2, js["properties"]["comments"].count
     assert_equal "commented", js["properties"]["comments"].last["action"]
     assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
     assert_nil js["properties"]["comments"].last["user"]
 
-    get :show, :id => notes(:open_note_with_comment).id, :format => "json"
+    get :show, :id => open_note_with_comment.id, :format => "json"
     assert_response :success
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
-    assert_equal notes(:open_note_with_comment).id, js["properties"]["id"]
+    assert_equal open_note_with_comment.id, js["properties"]["id"]
     assert_equal "open", js["properties"]["status"]
-    assert_equal 5, js["properties"]["comments"].count
+    assert_equal 2, js["properties"]["comments"].count
     assert_equal "commented", js["properties"]["comments"].last["action"]
     assert_equal "This is an additional comment", js["properties"]["comments"].last["text"]
     assert_nil js["properties"]["comments"].last["user"]
 
+    # Ensure that emails are sent to users
+    note_with_comments_by_users = create(:note) do |note|
+      create(:note_comment, :note => note, :author_id => users(:normal_user).id)
+      create(:note_comment, :note => note, :author_id => users(:second_public_user).id)
+    end
     assert_difference "NoteComment.count", 1 do
       assert_difference "ActionMailer::Base.deliveries.size", 2 do
-        post :comment, :id => notes(:note_with_comments_by_users).id, :text => "This is an additional comment", :format => "json"
+        post :comment, :id => note_with_comments_by_users.id, :text => "This is an additional comment", :format => "json"
       end
     end
     assert_response :success
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
-    assert_equal notes(:note_with_comments_by_users).id, js["properties"]["id"]
+    assert_equal note_with_comments_by_users.id, js["properties"]["id"]
     assert_equal "open", js["properties"]["status"]
     assert_equal 3, js["properties"]["comments"].count
     assert_equal "commented", js["properties"]["comments"].last["action"]
@@ -268,12 +274,12 @@ class NotesControllerTest < ActionController::TestCase
     assert_equal 1, email.to.length
     assert_equal "[OpenStreetMap] An anonymous user has commented on a note you are interested in", email.subject
 
-    get :show, :id => notes(:note_with_comments_by_users).id, :format => "json"
+    get :show, :id => note_with_comments_by_users.id, :format => "json"
     assert_response :success
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
-    assert_equal notes(:note_with_comments_by_users).id, js["properties"]["id"]
+    assert_equal note_with_comments_by_users.id, js["properties"]["id"]
     assert_equal "open", js["properties"]["status"]
     assert_equal 3, js["properties"]["comments"].count
     assert_equal "commented", js["properties"]["comments"].last["action"]
@@ -286,14 +292,14 @@ class NotesControllerTest < ActionController::TestCase
 
     assert_difference "NoteComment.count", 1 do
       assert_difference "ActionMailer::Base.deliveries.size", 2 do
-        post :comment, :id => notes(:note_with_comments_by_users).id, :text => "This is an additional comment", :format => "json"
+        post :comment, :id => note_with_comments_by_users.id, :text => "This is an additional comment", :format => "json"
       end
     end
     assert_response :success
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
-    assert_equal notes(:note_with_comments_by_users).id, js["properties"]["id"]
+    assert_equal note_with_comments_by_users.id, js["properties"]["id"]
     assert_equal "open", js["properties"]["status"]
     assert_equal 4, js["properties"]["comments"].count
     assert_equal "commented", js["properties"]["comments"].last["action"]
@@ -311,12 +317,12 @@ class NotesControllerTest < ActionController::TestCase
     assert_equal 1, email.to.length
     assert_equal "[OpenStreetMap] test2 has commented on a note you are interested in", email.subject
 
-    get :show, :id => notes(:note_with_comments_by_users).id, :format => "json"
+    get :show, :id => note_with_comments_by_users.id, :format => "json"
     assert_response :success
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
-    assert_equal notes(:note_with_comments_by_users).id, js["properties"]["id"]
+    assert_equal note_with_comments_by_users.id, js["properties"]["id"]
     assert_equal "open", js["properties"]["status"]
     assert_equal 4, js["properties"]["comments"].count
     assert_equal "commented", js["properties"]["comments"].last["action"]
@@ -327,18 +333,20 @@ class NotesControllerTest < ActionController::TestCase
   end
 
   def test_comment_fail
+    open_note_with_comment = create(:note_with_comments)
+
     assert_no_difference "NoteComment.count" do
       post :comment, :text => "This is an additional comment"
     end
     assert_response :bad_request
 
     assert_no_difference "NoteComment.count" do
-      post :comment, :id => notes(:open_note_with_comment).id
+      post :comment, :id => open_note_with_comment.id
     end
     assert_response :bad_request
 
     assert_no_difference "NoteComment.count" do
-      post :comment, :id => notes(:open_note_with_comment).id, :text => ""
+      post :comment, :id => open_note_with_comment.id, :text => ""
     end
     assert_response :bad_request
 
@@ -347,43 +355,49 @@ class NotesControllerTest < ActionController::TestCase
     end
     assert_response :not_found
 
+    hidden_note_with_comment = create(:note_with_comments, :status => "hidden")
+
     assert_no_difference "NoteComment.count" do
-      post :comment, :id => notes(:hidden_note_with_comment).id, :text => "This is an additional comment"
+      post :comment, :id => hidden_note_with_comment.id, :text => "This is an additional comment"
     end
     assert_response :gone
 
+    closed_note_with_comment = create(:note_with_comments, :status => "closed", :closed_at => Time.now)
+
     assert_no_difference "NoteComment.count" do
-      post :comment, :id => notes(:closed_note_with_comment).id, :text => "This is an additional comment"
+      post :comment, :id => closed_note_with_comment.id, :text => "This is an additional comment"
     end
     assert_response :conflict
   end
 
   def test_close_success
-    post :close, :id => notes(:open_note_with_comment).id, :text => "This is a close comment", :format => "json"
+    open_note_with_comment = create(:note_with_comments)
+
+    post :close, :id => open_note_with_comment.id, :text => "This is a close comment", :format => "json"
     assert_response :unauthorized
 
     basic_authorization(users(:public_user).email, "test")
 
-    post :close, :id => notes(:open_note_with_comment).id, :text => "This is a close comment", :format => "json"
+    post :close, :id => open_note_with_comment.id, :text => "This is a close comment", :format => "json"
     assert_response :success
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
-    assert_equal notes(:open_note_with_comment).id, js["properties"]["id"]
+    assert_equal open_note_with_comment.id, js["properties"]["id"]
     assert_equal "closed", js["properties"]["status"]
-    assert_equal 5, js["properties"]["comments"].count
+    assert_equal 2, js["properties"]["comments"].count
     assert_equal "closed", js["properties"]["comments"].last["action"]
     assert_equal "This is a close comment", js["properties"]["comments"].last["text"]
     assert_equal "test2", js["properties"]["comments"].last["user"]
 
-    get :show, :id => notes(:open_note_with_comment).id, :format => "json"
+    get :show, :id => open_note_with_comment.id, :format => "json"
     assert_response :success
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
-    assert_equal notes(:open_note_with_comment).id, js["properties"]["id"]
+    assert_equal open_note_with_comment.id, js["properties"]["id"]
     assert_equal "closed", js["properties"]["status"]
-    assert_equal 5, js["properties"]["comments"].count
+    assert_equal 2, js["properties"]["comments"].count
     assert_equal "closed", js["properties"]["comments"].last["action"]
     assert_equal "This is a close comment", js["properties"]["comments"].last["text"]
     assert_equal "test2", js["properties"]["comments"].last["user"]
@@ -401,37 +415,43 @@ class NotesControllerTest < ActionController::TestCase
     post :close, :id => 12345
     assert_response :not_found
 
-    post :close, :id => notes(:hidden_note_with_comment).id
+    hidden_note_with_comment = create(:note_with_comments, :status => "hidden")
+
+    post :close, :id => hidden_note_with_comment.id
     assert_response :gone
 
-    post :close, :id => notes(:closed_note_with_comment).id
+    closed_note_with_comment = create(:note_with_comments, :status => "closed", :closed_at => Time.now)
+
+    post :close, :id => closed_note_with_comment.id
     assert_response :conflict
   end
 
   def test_reopen_success
-    post :reopen, :id => notes(:closed_note_with_comment).id, :text => "This is a reopen comment", :format => "json"
+    closed_note_with_comment = create(:note_with_comments, :status => "closed", :closed_at => Time.now)
+
+    post :reopen, :id => closed_note_with_comment.id, :text => "This is a reopen comment", :format => "json"
     assert_response :unauthorized
 
     basic_authorization(users(:public_user).email, "test")
 
-    post :reopen, :id => notes(:closed_note_with_comment).id, :text => "This is a reopen comment", :format => "json"
+    post :reopen, :id => closed_note_with_comment.id, :text => "This is a reopen comment", :format => "json"
     assert_response :success
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
-    assert_equal notes(:closed_note_with_comment).id, js["properties"]["id"]
+    assert_equal closed_note_with_comment.id, js["properties"]["id"]
     assert_equal "open", js["properties"]["status"]
     assert_equal 2, js["properties"]["comments"].count
     assert_equal "reopened", js["properties"]["comments"].last["action"]
     assert_equal "This is a reopen comment", js["properties"]["comments"].last["text"]
     assert_equal "test2", js["properties"]["comments"].last["user"]
 
-    get :show, :id => notes(:closed_note_with_comment).id, :format => "json"
+    get :show, :id => closed_note_with_comment.id, :format => "json"
     assert_response :success
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
-    assert_equal notes(:closed_note_with_comment).id, js["properties"]["id"]
+    assert_equal closed_note_with_comment.id, js["properties"]["id"]
     assert_equal "open", js["properties"]["status"]
     assert_equal 2, js["properties"]["comments"].count
     assert_equal "reopened", js["properties"]["comments"].last["action"]
@@ -440,7 +460,9 @@ class NotesControllerTest < ActionController::TestCase
   end
 
   def test_reopen_fail
-    post :reopen, :id => notes(:hidden_note_with_comment).id
+    hidden_note_with_comment = create(:note_with_comments, :status => "hidden")
+
+    post :reopen, :id => hidden_note_with_comment.id
     assert_response :unauthorized
 
     basic_authorization(users(:public_user).email, "test")
@@ -448,126 +470,138 @@ class NotesControllerTest < ActionController::TestCase
     post :reopen, :id => 12345
     assert_response :not_found
 
-    post :reopen, :id => notes(:hidden_note_with_comment).id
+    post :reopen, :id => hidden_note_with_comment.id
     assert_response :gone
 
-    post :reopen, :id => notes(:open_note_with_comment).id
+    open_note_with_comment = create(:note_with_comments)
+
+    post :reopen, :id => open_note_with_comment.id
     assert_response :conflict
   end
 
   def test_show_success
-    get :show, :id => notes(:open_note).id, :format => "xml"
+    open_note = create(:note_with_comments)
+
+    get :show, :id => open_note.id, :format => "xml"
     assert_response :success
     assert_equal "application/xml", @response.content_type
     assert_select "osm", :count => 1 do
-      assert_select "note[lat='#{notes(:open_note).lat}'][lon='#{notes(:open_note).lon}']", :count => 1 do
-        assert_select "id", notes(:open_note).id
-        assert_select "url", note_url(notes(:open_note), :format => "xml")
-        assert_select "comment_url", comment_note_url(notes(:open_note), :format => "xml")
-        assert_select "close_url", close_note_url(notes(:open_note), :format => "xml")
-        assert_select "date_created", notes(:open_note).created_at.to_s
-        assert_select "status", notes(:open_note).status
+      assert_select "note[lat='#{open_note.lat}'][lon='#{open_note.lon}']", :count => 1 do
+        assert_select "id", open_note.id.to_s
+        assert_select "url", note_url(open_note, :format => "xml")
+        assert_select "comment_url", comment_note_url(open_note, :format => "xml")
+        assert_select "close_url", close_note_url(open_note, :format => "xml")
+        assert_select "date_created", open_note.created_at.to_s
+        assert_select "status", open_note.status
         assert_select "comments", :count => 1 do
           assert_select "comment", :count => 1
         end
       end
     end
 
-    get :show, :id => notes(:open_note).id, :format => "rss"
+    get :show, :id => open_note.id, :format => "rss"
     assert_response :success
     assert_equal "application/rss+xml", @response.content_type
     assert_select "rss", :count => 1 do
       assert_select "channel", :count => 1 do
         assert_select "item", :count => 1 do
-          assert_select "link", browse_note_url(notes(:open_note))
-          assert_select "guid", note_url(notes(:open_note))
-          assert_select "pubDate", notes(:open_note).created_at.to_s(:rfc822)
-          #          assert_select "geo:lat", notes(:open_note).lat.to_s
-          #          assert_select "geo:long", notes(:open_note).lon
-          #          assert_select "georss:point", "#{notes(:open_note).lon} #{notes(:open_note).lon}"
+          assert_select "link", browse_note_url(open_note)
+          assert_select "guid", note_url(open_note)
+          assert_select "pubDate", open_note.created_at.to_s(:rfc822)
+          #          assert_select "geo:lat", open_note.lat.to_s
+          #          assert_select "geo:long", open_note.lon
+          #          assert_select "georss:point", "#{open_note.lon} #{open_note.lon}"
         end
       end
     end
 
-    get :show, :id => notes(:open_note).id, :format => "json"
+    get :show, :id => open_note.id, :format => "json"
     assert_response :success
     assert_equal "application/json", @response.content_type
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
     assert_equal "Point", js["geometry"]["type"]
-    assert_equal notes(:open_note).lat, js["geometry"]["coordinates"][0]
-    assert_equal notes(:open_note).lon, js["geometry"]["coordinates"][1]
-    assert_equal notes(:open_note).id, js["properties"]["id"]
-    assert_equal note_url(notes(:open_note), :format => "json"), js["properties"]["url"]
-    assert_equal comment_note_url(notes(:open_note), :format => "json"), js["properties"]["comment_url"]
-    assert_equal close_note_url(notes(:open_note), :format => "json"), js["properties"]["close_url"]
-    assert_equal notes(:open_note).created_at, js["properties"]["date_created"]
-    assert_equal notes(:open_note).status, js["properties"]["status"]
+    assert_equal open_note.lat, js["geometry"]["coordinates"][0]
+    assert_equal open_note.lon, js["geometry"]["coordinates"][1]
+    assert_equal open_note.id, js["properties"]["id"]
+    assert_equal note_url(open_note, :format => "json"), js["properties"]["url"]
+    assert_equal comment_note_url(open_note, :format => "json"), js["properties"]["comment_url"]
+    assert_equal close_note_url(open_note, :format => "json"), js["properties"]["close_url"]
+    assert_equal open_note.created_at.to_s, js["properties"]["date_created"]
+    assert_equal open_note.status, js["properties"]["status"]
 
-    get :show, :id => notes(:open_note).id, :format => "gpx"
+    get :show, :id => open_note.id, :format => "gpx"
     assert_response :success
     assert_equal "application/gpx+xml", @response.content_type
     assert_select "gpx", :count => 1 do
-      assert_select "wpt[lat='#{notes(:open_note).lat}'][lon='#{notes(:open_note).lon}']", :count => 1 do
+      assert_select "wpt[lat='#{open_note.lat}'][lon='#{open_note.lon}']", :count => 1 do
         assert_select "time", :count => 1
-        assert_select "name", "Note: #{notes(:open_note).id}"
+        assert_select "name", "Note: #{open_note.id}"
         assert_select "desc", :count => 1
-        assert_select "link[href='http://www.openstreetmap.org/note/#{notes(:open_note).id}']", :count => 1
+        assert_select "link[href='http://www.openstreetmap.org/note/#{open_note.id}']", :count => 1
         assert_select "extensions", :count => 1 do
-          assert_select "id", notes(:open_note).id
-          assert_select "url", note_url(notes(:open_note), :format => "gpx")
-          assert_select "comment_url", comment_note_url(notes(:open_note), :format => "gpx")
-          assert_select "close_url", close_note_url(notes(:open_note), :format => "gpx")
+          assert_select "id", open_note.id.to_s
+          assert_select "url", note_url(open_note, :format => "gpx")
+          assert_select "comment_url", comment_note_url(open_note, :format => "gpx")
+          assert_select "close_url", close_note_url(open_note, :format => "gpx")
         end
       end
     end
   end
 
   def test_show_hidden_comment
-    get :show, :id => notes(:note_with_hidden_comment).id, :format => "json"
+    note_with_hidden_comment = create(:note) do |note|
+      create(:note_comment, :note => note, :body => "Valid comment for hidden note")
+      create(:note_comment, :note => note, :visible => false)
+      create(:note_comment, :note => note, :body => "Another valid comment for hidden note")
+    end
+
+    get :show, :id => note_with_hidden_comment.id, :format => "json"
     assert_response :success
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
-    assert_equal notes(:note_with_hidden_comment).id, js["properties"]["id"]
+    assert_equal note_with_hidden_comment.id, js["properties"]["id"]
     assert_equal 2, js["properties"]["comments"].count
-    assert_equal "Valid comment for note 5", js["properties"]["comments"][0]["text"]
-    assert_equal "Another valid comment for note 5", js["properties"]["comments"][1]["text"]
+    assert_equal "Valid comment for hidden note", js["properties"]["comments"][0]["text"]
+    assert_equal "Another valid comment for hidden note", js["properties"]["comments"][1]["text"]
   end
 
   def test_show_fail
     get :show, :id => 12345
     assert_response :not_found
 
-    get :show, :id => notes(:hidden_note_with_comment).id
+    get :show, :id => create(:note, :status => "hidden").id
     assert_response :gone
   end
 
   def test_destroy_success
-    delete :destroy, :id => notes(:open_note_with_comment).id, :text => "This is a hide comment", :format => "json"
+    open_note_with_comment = create(:note_with_comments)
+
+    delete :destroy, :id => open_note_with_comment.id, :text => "This is a hide comment", :format => "json"
     assert_response :unauthorized
 
     basic_authorization(users(:public_user).email, "test")
 
-    delete :destroy, :id => notes(:open_note_with_comment).id, :text => "This is a hide comment", :format => "json"
+    delete :destroy, :id => open_note_with_comment.id, :text => "This is a hide comment", :format => "json"
     assert_response :forbidden
 
     basic_authorization(users(:moderator_user).email, "test")
 
-    delete :destroy, :id => notes(:open_note_with_comment).id, :text => "This is a hide comment", :format => "json"
+    delete :destroy, :id => open_note_with_comment.id, :text => "This is a hide comment", :format => "json"
     assert_response :success
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "Feature", js["type"]
-    assert_equal notes(:open_note_with_comment).id, js["properties"]["id"]
+    assert_equal open_note_with_comment.id, js["properties"]["id"]
     assert_equal "hidden", js["properties"]["status"]
-    assert_equal 5, js["properties"]["comments"].count
+    assert_equal 2, js["properties"]["comments"].count
     assert_equal "hidden", js["properties"]["comments"].last["action"]
     assert_equal "This is a hide comment", js["properties"]["comments"].last["text"]
     assert_equal "moderator", js["properties"]["comments"].last["user"]
 
-    get :show, :id => notes(:open_note_with_comment).id, :format => "json"
+    get :show, :id => open_note_with_comment.id, :format => "json"
     assert_response :gone
   end
 
@@ -585,11 +619,17 @@ class NotesControllerTest < ActionController::TestCase
     delete :destroy, :id => 12345, :format => "json"
     assert_response :not_found
 
-    delete :destroy, :id => notes(:hidden_note_with_comment).id, :format => "json"
+    hidden_note_with_comment = create(:note_with_comments, :status => "hidden")
+
+    delete :destroy, :id => hidden_note_with_comment.id, :format => "json"
     assert_response :gone
   end
 
   def test_index_success
+    position = (1.1 * GeoRecord::SCALE).to_i
+    create(:note_with_comments, :latitude => position, :longitude => position)
+    create(:note_with_comments, :latitude => position, :longitude => position)
+
     get :index, :bbox => "1,1,1.2,1.2", :format => "rss"
     assert_response :success
     assert_equal "application/rss+xml", @response.content_type
@@ -623,6 +663,10 @@ class NotesControllerTest < ActionController::TestCase
   end
 
   def test_index_limit
+    position = (1.1 * GeoRecord::SCALE).to_i
+    create(:note_with_comments, :latitude => position, :longitude => position)
+    create(:note_with_comments, :latitude => position, :longitude => position)
+
     get :index, :bbox => "1,1,1.2,1.2", :limit => 1, :format => "rss"
     assert_response :success
     assert_equal "application/rss+xml", @response.content_type
@@ -707,29 +751,37 @@ class NotesControllerTest < ActionController::TestCase
   end
 
   def test_index_closed
+    create(:note_with_comments, :status => "closed", :closed_at => Time.now - 5.days)
+    create(:note_with_comments, :status => "closed", :closed_at => Time.now - 100.days)
+    create(:note_with_comments, :status => "hidden")
+    create(:note_with_comments)
+
+    # Open notes + closed in last 7 days
     get :index, :bbox => "1,1,1.7,1.7", :closed => "7", :format => "json"
     assert_response :success
     assert_equal "application/json", @response.content_type
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "FeatureCollection", js["type"]
-    assert_equal 4, js["features"].count
+    assert_equal 2, js["features"].count
 
+    # Only open notes
     get :index, :bbox => "1,1,1.7,1.7", :closed => "0", :format => "json"
     assert_response :success
     assert_equal "application/json", @response.content_type
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "FeatureCollection", js["type"]
-    assert_equal 4, js["features"].count
+    assert_equal 1, js["features"].count
 
+    # Open notes + all closed notes
     get :index, :bbox => "1,1,1.7,1.7", :closed => "-1", :format => "json"
     assert_response :success
     assert_equal "application/json", @response.content_type
     js = ActiveSupport::JSON.decode(@response.body)
     assert_not_nil js
     assert_equal "FeatureCollection", js["type"]
-    assert_equal 6, js["features"].count
+    assert_equal 3, js["features"].count
   end
 
   def test_index_bad_params
@@ -759,14 +811,16 @@ class NotesControllerTest < ActionController::TestCase
   end
 
   def test_search_success
-    get :search, :q => "note 1", :format => "xml"
+    create(:note_with_comments)
+
+    get :search, :q => "note comment", :format => "xml"
     assert_response :success
     assert_equal "application/xml", @response.content_type
     assert_select "osm", :count => 1 do
       assert_select "note", :count => 1
     end
 
-    get :search, :q => "note 1", :format => "json"
+    get :search, :q => "note comment", :format => "json"
     assert_response :success
     assert_equal "application/json", @response.content_type
     js = ActiveSupport::JSON.decode(@response.body)
@@ -774,7 +828,7 @@ class NotesControllerTest < ActionController::TestCase
     assert_equal "FeatureCollection", js["type"]
     assert_equal 1, js["features"].count
 
-    get :search, :q => "note 1", :format => "rss"
+    get :search, :q => "note comment", :format => "rss"
     assert_response :success
     assert_equal "application/rss+xml", @response.content_type
     assert_select "rss", :count => 1 do
@@ -783,7 +837,7 @@ class NotesControllerTest < ActionController::TestCase
       end
     end
 
-    get :search, :q => "note 1", :format => "gpx"
+    get :search, :q => "note comment", :format => "gpx"
     assert_response :success
     assert_equal "application/gpx+xml", @response.content_type
     assert_select "gpx", :count => 1 do
@@ -792,6 +846,8 @@ class NotesControllerTest < ActionController::TestCase
   end
 
   def test_search_no_match
+    create(:note_with_comments)
+
     get :search, :q => "no match", :format => "xml"
     assert_response :success
     assert_equal "application/xml", @response.content_type
@@ -836,12 +892,19 @@ class NotesControllerTest < ActionController::TestCase
   end
 
   def test_feed_success
+    position = (1.1 * GeoRecord::SCALE).to_i
+    create(:note_with_comments, :latitude => position, :longitude => position)
+    create(:note_with_comments, :latitude => position, :longitude => position)
+    position = (1.5 * GeoRecord::SCALE).to_i
+    create(:note_with_comments, :latitude => position, :longitude => position)
+    create(:note_with_comments, :latitude => position, :longitude => position)
+
     get :feed, :format => "rss"
     assert_response :success
     assert_equal "application/rss+xml", @response.content_type
     assert_select "rss", :count => 1 do
       assert_select "channel", :count => 1 do
-        assert_select "item", :count => 10
+        assert_select "item", :count => 4
       end
     end
 
@@ -850,7 +913,7 @@ class NotesControllerTest < ActionController::TestCase
     assert_equal "application/rss+xml", @response.content_type
     assert_select "rss", :count => 1 do
       assert_select "channel", :count => 1 do
-        assert_select "item", :count => 5
+        assert_select "item", :count => 2
       end
     end
   end
@@ -870,13 +933,24 @@ class NotesControllerTest < ActionController::TestCase
   end
 
   def test_mine_success
+    create(:note) do |note|
+      create(:note_comment, :note => note, :author_id => users(:normal_user).id)
+    end
+    create(:note) do |note|
+      create(:note_comment, :note => note, :author_id => users(:second_public_user).id)
+    end
+    create(:note, :status => "hidden") do |note|
+      create(:note_comment, :note => note, :author_id => users(:second_public_user).id)
+    end
+
+    # Note that the table rows include a header row
     get :mine, :display_name => "test"
     assert_response :success
     assert_select "table.note_list tr", :count => 2
 
     get :mine, :display_name => "pulibc_test2"
     assert_response :success
-    assert_select "table.note_list tr", :count => 3
+    assert_select "table.note_list tr", :count => 2
 
     get :mine, :display_name => "non-existent"
     assert_response :not_found
@@ -889,7 +963,7 @@ class NotesControllerTest < ActionController::TestCase
 
     get :mine, :display_name => "pulibc_test2"
     assert_response :success
-    assert_select "table.note_list tr", :count => 4
+    assert_select "table.note_list tr", :count => 3
 
     get :mine, :display_name => "non-existent"
     assert_response :not_found
index 453af4550bb25fa58bdba42d313ebf700ccf0b9f..70eacb3aa9bbb6868b57e8528658fa7201e97874 100644 (file)
@@ -265,7 +265,9 @@ class SiteControllerTest < ActionController::TestCase
   # Test editing a specific note
   def test_edit_with_note
     user = users(:public_user)
-    note = notes(:open_note)
+    note = create(:note) do |n|
+      n.comments.create(:author_id => user.id)
+    end
 
     get :edit, { :note => note.id }, { :user => user.id }
     assert_response :success
index ede841032ef20072514bde568a1f1220f62b228d..6a5fca78563af0077ae27c80c2dceb33032dbcbf 100644 (file)
@@ -2,7 +2,7 @@ require "test_helper"
 
 class UserControllerTest < ActionController::TestCase
   api_fixtures
-  fixtures :messages, :friends
+  fixtures :messages
 
   ##
   # test all routes which lead to this controller
@@ -1191,6 +1191,7 @@ class UserControllerTest < ActionController::TestCase
     # Get users to work with
     user = users(:normal_user)
     friend = users(:public_user)
+    create(:friend, :user_id => user.id, :friend_user_id => friend.id)
 
     # Check that the users are friends
     assert Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
@@ -1231,6 +1232,7 @@ class UserControllerTest < ActionController::TestCase
     # Get users to work with
     user = users(:normal_user)
     friend = users(:public_user)
+    create(:friend, :user_id => user.id, :friend_user_id => friend.id)
 
     # Check that the users are friends
     assert Friend.where(:user_id => user.id, :friend_user_id => friend.id).first
diff --git a/test/factories/friends.rb b/test/factories/friends.rb
new file mode 100644 (file)
index 0000000..46b14a3
--- /dev/null
@@ -0,0 +1,7 @@
+FactoryGirl.define do
+  factory :friend do
+    # Fixme requires User Factory
+    user_id 1
+    friend_user_id 2
+  end
+end
diff --git a/test/factories/note_comments.rb b/test/factories/note_comments.rb
new file mode 100644 (file)
index 0000000..b06dc37
--- /dev/null
@@ -0,0 +1,8 @@
+FactoryGirl.define do
+  factory :note_comment do
+    sequence(:body) { |n| "This is note comment #{n}" }
+    visible true
+    event "opened"
+    note
+  end
+end
diff --git a/test/factories/notes.rb b/test/factories/notes.rb
new file mode 100644 (file)
index 0000000..9dbcdf5
--- /dev/null
@@ -0,0 +1,17 @@
+FactoryGirl.define do
+  factory :note do
+    latitude 1 * GeoRecord::SCALE
+    longitude 1 * GeoRecord::SCALE
+    # tile QuadTile.tile_for_point(1,1)
+
+    factory :note_with_comments do
+      transient do
+        comments_count 1
+      end
+
+      after(:create) do |note, evaluator|
+        create_list(:note_comment, evaluator.comments_count, :note => note)
+      end
+    end
+  end
+end
diff --git a/test/fixtures/friends.yml b/test/fixtures/friends.yml
deleted file mode 100644 (file)
index 782f1e3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-normal_user_with_second_user:
-  id: 1
-  user_id: 1
-  friend_user_id: 2
diff --git a/test/fixtures/note_comments.yml b/test/fixtures/note_comments.yml
deleted file mode 100644 (file)
index c4b998c..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-t1:
-  id: 1
-  note_id: 1
-  visible: true
-  event: opened
-  created_at: 2007-01-01 00:00:00
-  author_ip: '192.168.1.1'
-  body: 'This is the initial description of the note 1'
-
-t2:
-  id: 2
-  note_id: 2
-  visible: true
-  event: opened
-  created_at: 2007-01-01 00:00:00
-  author_ip: '192.168.1.1'
-  body: 'This is the initial description of the note 2'
-
-t3:
-  id: 3
-  note_id: 2
-  visible: true
-  event: opened
-  created_at: 2007-02-01 00:00:00
-  author_ip: '192.168.1.1'
-  body: 'This is an additional comment for note 2'
-
-t4:
-  id: 4
-  note_id: 3
-  visible: true
-  event: opened
-  created_at: 2007-01-01 00:00:00
-  author_ip: '192.168.1.1'
-  body: 'This is the initial comment for note 3'
-
-t5:
-  id: 5
-  note_id: 4
-  visible: true
-  event: opened
-  created_at: 2007-01-01 00:00:00
-  author_ip: '192.168.1.1'
-  body: 'Spam for note 4'
-
-t6:
-  id: 6
-  note_id: 5
-  visible: true
-  event: opened
-  created_at: 2007-01-01 00:00:00
-  author_ip: '192.168.1.1'
-  body: 'Valid comment for note 5'
-
-t7:
-  id: 7
-  note_id: 5
-  visible: false
-  event: commented
-  created_at: 2007-02-01 00:00:00
-  author_ip: '192.168.1.1'
-  body: 'Spam for note 5'
-
-t8:
-  id: 8
-  note_id: 5
-  visible: true
-  event: commented
-  created_at: 2007-02-01 00:00:00
-  author_ip: '192.168.1.1'
-  body: 'Another valid comment for note 5'
-
-t9:
-  id: 9
-  note_id: 6
-  visible: true
-  event: opened
-  created_at: 2007-01-01 00:00:00
-  author_id: 1
-  body: 'This is a note with from a logged-in user'
-
-t10:
-  id: 10
-  note_id: 6
-  visible: true
-  event: commented
-  created_at: 2007-02-01 00:00:00
-  author_id: 4
-  body: 'A comment from another logged-in user'
-
-t11:
-  id: 11
-  note_id: 7
-  visible: true
-  event: opened
-  created_at: 2007-01-01 00:00:00
-  author_ip: '192.168.1.1'
-  body: 'Initial note description'
-
-t12:
-  id: 12
-  note_id: 7
-  visible: true
-  event: commented
-  created_at: 2007-02-01 00:00:00
-  author_ip: '192.168.1.1'
-  body: 'A comment description'
-
-t13:
-  id: 13
-  note_id: 7
-  visible: true
-  event: closed
-  created_at: 2007-03-01 00:00:00
-  author_id: 4
-
-t14:
-  id: 14
-  note_id: 8
-  visible: true
-  event: commented
-  created_at: 2007-02-01 00:00:00
-  author_id: 4
-  body: 'A comment description'
-
-t15:
-  id: 15
-  note_id: 2
-  visible: true
-  event: opened
-  created_at: 2007-01-01 00:00:00
-  author_id: 10
-  body: 'This is a note with from a suspended user'
-
-t16:
-  id: 16
-  note_id: 2
-  visible: true
-  event: opened
-  created_at: 2007-01-01 00:00:00
-  author_id: 11
-  body: 'This is a note with from a deleted user'
diff --git a/test/fixtures/notes.yml b/test/fixtures/notes.yml
deleted file mode 100644 (file)
index 79e488f..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-<% SCALE = 10000000 unless defined?(SCALE) %>
-
-open_note:
-  id: 1
-  latitude: <%= 1*SCALE %>
-  longitude: <%= 1*SCALE %>
-  status: open
-  tile: <%= QuadTile.tile_for_point(1,1) %>
-  created_at: 2007-01-01 00:00:00
-  updated_at: 2007-01-01 00:00:00
-
-open_note_with_comment:
-  id: 2
-  latitude: <%= 1.1*SCALE %>
-  longitude: <%= 1.1*SCALE %>
-  status: open
-  tile: <%= QuadTile.tile_for_point(1.1,1.1) %>
-  created_at: 2007-01-01 00:00:00
-  updated_at: 2007-02-01 00:00:00
-
-closed_note_with_comment:
-  id: 3
-  latitude: <%= 1.2*SCALE %>
-  longitude: <%= 1.2*SCALE %>
-  status: closed
-  tile: <%= QuadTile.tile_for_point(1.2,1.2) %>
-  created_at: 2007-01-01 00:00:00
-  updated_at: 2007-03-01 00:00:00
-  closed_at:  2007-03-01 00:00:00
-
-hidden_note_with_comment:
-  id: 4
-  latitude: <%= 1.3*SCALE %>
-  longitude: <%= 1.3*SCALE %>
-  status: hidden
-  tile: <%= QuadTile.tile_for_point(1.3,1.3) %>
-  created_at: 2007-01-01 00:00:00
-  updated_at: 2007-03-01 00:00:00
-
-note_with_hidden_comment:
-  id: 5
-  latitude: <%= 1.4*SCALE %>
-  longitude: <%= 1.4*SCALE %>
-  status: open
-  tile: <%= QuadTile.tile_for_point(1.4,1.4) %>
-  created_at: 2007-01-01 00:00:00
-  updated_at: 2007-03-01 00:00:00
-
-note_with_comments_by_users:
-  id: 6
-  latitude: <%= 1.5*SCALE %>
-  longitude: <%= 1.5*SCALE %>
-  status: open
-  tile: <%= QuadTile.tile_for_point(1.5,1.5) %>
-  created_at: 2007-01-01 00:00:00
-  updated_at: 2007-03-01 00:00:00
-
-note_closed_by_user:
-  id: 7
-  latitude: <%= 1.6*SCALE %>
-  longitude: <%= 1.6*SCALE %>
-  status: closed
-  tile: <%= QuadTile.tile_for_point(1.6,1.6) %>
-  created_at: 2007-01-01 00:00:00
-  updated_at: 2007-03-01 00:00:00
-  closed_at:  2007-03-01 00:00:00
-
-hidden_note_with_comment:
-  id: 4
-  latitude: <%= 1.3*SCALE %>
-  longitude: <%= 1.3*SCALE %>
-  status: hidden
-  tile: <%= QuadTile.tile_for_point(1.3,1.3) %>
-  created_at: 2007-01-01 00:00:00
-  updated_at: 2007-03-01 00:00:00
-
-note_with_hidden_comment:
-  id: 5
-  latitude: <%= 1.4*SCALE %>
-  longitude: <%= 1.4*SCALE %>
-  status: open
-  tile: <%= QuadTile.tile_for_point(1.4,1.4) %>
-  created_at: 2007-01-01 00:00:00
-  updated_at: 2007-03-01 00:00:00
-
-note_with_comments_by_users:
-  id: 6
-  latitude: <%= 1.5*SCALE %>
-  longitude: <%= 1.5*SCALE %>
-  status: open
-  tile: <%= QuadTile.tile_for_point(1.5,1.5) %>
-  created_at: 2007-01-01 00:00:00
-  updated_at: 2007-03-01 00:00:00
-
-note_closed_by_user:
-  id: 7
-  latitude: <%= 1.6*SCALE %>
-  longitude: <%= 1.6*SCALE %>
-  status: closed
-  tile: <%= QuadTile.tile_for_point(1.6,1.6) %>
-  created_at: 2007-01-01 00:00:00
-  updated_at: 2007-03-01 00:00:00
-  closed_at:  2007-03-01 00:00:00
-
-hidden_note_with_comment_by_user:
-  id: 8
-  latitude: <%= 1.3*SCALE %>
-  longitude: <%= 1.3*SCALE %>
-  status: hidden
-  tile: <%= QuadTile.tile_for_point(1.3,1.3) %>
-  created_at: 2007-01-01 00:00:00
-  updated_at: 2007-03-01 00:00:00
index a13f67470fd1c409f6cbabfec16011477e262934..08eeeeb17a3b3c7839245431a021469d1c7af962 100644 (file)
@@ -2,9 +2,9 @@ require "test_helper"
 
 class FriendTest < ActiveSupport::TestCase
   api_fixtures
-  fixtures :friends
 
   def test_friend_count
+    create(:friend)
     assert_equal 1, Friend.count
   end
 end
index 323a827c042678d9ca961b87624a4e66de06ec63..2375ba9d4de2f08c0799be9785a35b41eae2c86d 100644 (file)
@@ -2,20 +2,20 @@
 require "test_helper"
 
 class NoteCommentTest < ActiveSupport::TestCase
-  fixtures :users, :notes, :note_comments
+  fixtures :users
 
   def test_event_valid
     ok = %w(opened closed reopened commented hidden)
     bad = %w(expropriated fubared)
 
     ok.each do |event|
-      note_comment = note_comments(:t1)
+      note_comment = create(:note_comment)
       note_comment.event = event
       assert note_comment.valid?, "#{event} is invalid, when it should be"
     end
 
     bad.each do |event|
-      note_comment = note_comments(:t1)
+      note_comment = create(:note_comment)
       note_comment.event = event
       assert !note_comment.valid?, "#{event} is valid when it shouldn't be"
     end
@@ -28,13 +28,13 @@ class NoteCommentTest < ActiveSupport::TestCase
            "foo\ufffebar", "foo\uffffbar"]
 
     ok.each do |body|
-      note_comment = note_comments(:t1)
+      note_comment = create(:note_comment)
       note_comment.body = body
       assert note_comment.valid?, "#{body} is invalid, when it should be"
     end
 
     bad.each do |body|
-      note_comment = note_comments(:t1)
+      note_comment = create(:note_comment)
       note_comment.body = body
       assert !note_comment.valid?, "#{body} is valid when it shouldn't be"
     end
index 4adbef4b884c9a734fc9688e8fd8d4ee9c49024c..6525ee5f61ec39a3914d27e4ac45434f57e3111c 100644 (file)
@@ -2,27 +2,27 @@
 require "test_helper"
 
 class NoteTest < ActiveSupport::TestCase
-  fixtures :users, :notes, :note_comments
+  fixtures :users
 
   def test_status_valid
     ok = %w(open closed hidden)
     bad = %w(expropriated fubared)
 
     ok.each do |status|
-      note = notes(:open_note)
+      note = create(:note)
       note.status = status
       assert note.valid?, "#{status} is invalid, when it should be"
     end
 
     bad.each do |status|
-      note = notes(:open_note)
+      note = create(:note)
       note.status = status
       assert !note.valid?, "#{status} is valid when it shouldn't be"
     end
   end
 
   def test_close
-    note = notes(:open_note)
+    note = create(:note)
     assert_equal "open", note.status
     assert_nil note.closed_at
     note.close
@@ -31,7 +31,7 @@ class NoteTest < ActiveSupport::TestCase
   end
 
   def test_reopen
-    note = notes(:closed_note_with_comment)
+    note = create(:note, :status => "closed", :closed_at => Time.now)
     assert_equal "closed", note.status
     assert_not_nil note.closed_at
     note.reopen
@@ -40,23 +40,29 @@ class NoteTest < ActiveSupport::TestCase
   end
 
   def test_visible?
-    assert_equal true, notes(:open_note).visible?
-    assert_equal true, notes(:note_with_hidden_comment).visible?
-    assert_equal false, notes(:hidden_note_with_comment).visible?
+    assert_equal true, create(:note, :status => "open").visible?
+    assert_equal true, create(:note, :status => "closed").visible?
+    assert_equal false, create(:note, :status => "hidden").visible?
   end
 
   def test_closed?
-    assert_equal true, notes(:closed_note_with_comment).closed?
-    assert_equal false, notes(:open_note).closed?
+    assert_equal true, create(:note, :status => "closed", :closed_at => Time.now).closed?
+    assert_equal false, create(:note, :status => "open", :closed_at => nil).closed?
   end
 
   def test_author
-    assert_nil notes(:open_note).author
-    assert_equal users(:normal_user), notes(:note_with_comments_by_users).author
+    comment = create(:note_comment)
+    assert_nil comment.note.author
+
+    comment = create(:note_comment, :author_id => users(:normal_user).id)
+    assert_equal users(:normal_user), comment.note.author
   end
 
   def test_author_ip
-    assert_equal IPAddr.new("192.168.1.1"), notes(:open_note).author_ip
-    assert_nil notes(:note_with_comments_by_users).author_ip
+    comment = create(:note_comment)
+    assert_nil comment.note.author_ip
+
+    comment = create(:note_comment, :author_ip => IPAddr.new("192.168.1.1"))
+    assert_equal IPAddr.new("192.168.1.1"), comment.note.author_ip
   end
 end
index f9d94cc17cf1fabc9e386252c445bcd0bbe53ab4..5de5db326a34033a4ddda42184456c0fb013b298 100644 (file)
@@ -5,7 +5,7 @@ class UserTest < ActiveSupport::TestCase
   include Rails::Dom::Testing::Assertions::SelectorAssertions
 
   api_fixtures
-  fixtures :friends, :languages, :user_roles
+  fixtures :languages, :user_roles
 
   def test_invalid_with_empty_attributes
     user = User.new
@@ -106,6 +106,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   def test_friend_with
+    create(:friend, :user_id => users(:normal_user).id, :friend_user_id => users(:public_user).id)
     assert users(:normal_user).is_friends_with?(users(:public_user))
     assert !users(:normal_user).is_friends_with?(users(:inactive_user))
     assert !users(:public_user).is_friends_with?(users(:normal_user))
@@ -129,14 +130,11 @@ class UserTest < ActiveSupport::TestCase
 
   def test_friends_with
     # normal user is a friend of second user
-    # it should be a one way friend accossitation
-    assert_equal 1, Friend.count
+    # it should be a one way friend associatation
     norm = users(:normal_user)
     sec = users(:public_user)
-    # friend = Friend.new
-    # friend.befriender = norm
-    # friend.befriendee = sec
-    # friend.save
+    create(:friend, :user_id => norm.id, :friend_user_id => sec.id)
+    assert_equal 1, Friend.count
     assert_equal [sec], norm.friend_users
     assert_equal 1, norm.friend_users.size
     assert_equal 1, Friend.count
index 419ea18063bd5873197a3c1388fc31932a5f0256..42b7cc498bb1b085e842f7fd2e368f651b5ac7e7 100644 (file)
@@ -60,8 +60,6 @@ module ActiveSupport
       fixtures :client_applications
 
       fixtures :redactions
-
-      fixtures :notes, :note_comments
     end
 
     ##