]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/3257'
authorTom Hughes <tom@compton.nu>
Wed, 21 Jul 2021 18:24:31 +0000 (19:24 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 21 Jul 2021 18:24:31 +0000 (19:24 +0100)
47 files changed:
Gemfile.lock
app/assets/javascripts/oauth.js
app/assets/stylesheets/common.scss
app/controllers/api/user_preferences_controller.rb
app/controllers/application_controller.rb
app/controllers/issues_controller.rb
app/helpers/application_helper.rb
app/helpers/banner_helper.rb
app/models/concerns/consistency_validations.rb
app/models/user.rb
app/views/confirmations/confirm.html.erb
app/views/messages/inbox.html.erb
app/views/messages/outbox.html.erb
app/views/messages/show.html.erb
app/views/users/blocked.html.erb
app/views/users/new.html.erb
app/views/users/show.html.erb
app/views/users/terms.html.erb
config/locales/bn.yml
config/locales/de.yml
config/locales/en.yml
config/locales/fa.yml
config/locales/fi.yml
config/locales/fr.yml
config/locales/he.yml
config/locales/ko.yml
config/locales/nl.yml
config/locales/ru.yml
config/locales/tr.yml
config/settings.yml
lib/osm.rb
package.json
test/controllers/api/changesets_controller_test.rb
test/controllers/api/map_controller_test.rb
test/controllers/api/nodes_controller_test.rb
test/controllers/api/relations_controller_test.rb
test/controllers/api/tracepoints_controller_test.rb
test/controllers/api/traces_controller_test.rb
test/controllers/friendships_controller_test.rb
test/controllers/traces_controller_test.rb
test/lib/utf8_test.rb
test/models/message_test.rb
test/models/relation_tag_test.rb
test/models/user_test.rb
test/system/issues_test.rb
test/test_helper.rb
yarn.lock

index a5ba172de5537dc1d9e46c8755b4da464683890e..932435b34f7cf0006b7492440bae4462664b0a54 100644 (file)
@@ -53,7 +53,7 @@ GEM
     activerecord (6.1.4)
       activemodel (= 6.1.4)
       activesupport (= 6.1.4)
-    activerecord-import (1.1.0)
+    activerecord-import (1.2.0)
       activerecord (>= 3.2)
     activestorage (6.1.4)
       actionpack (= 6.1.4)
@@ -77,7 +77,7 @@ GEM
     autoprefixer-rails (10.2.5.1)
       execjs (> 0)
     aws-eventstream (1.1.1)
-    aws-partitions (1.478.0)
+    aws-partitions (1.479.0)
     aws-sdk-core (3.117.0)
       aws-eventstream (~> 1, >= 1.0.2)
       aws-partitions (~> 1, >= 1.239.0)
@@ -115,7 +115,7 @@ GEM
     bootstrap_form (4.5.0)
       actionpack (>= 5.2)
       activemodel (>= 5.2)
-    brakeman (5.0.4)
+    brakeman (5.1.1)
     browser (5.3.1)
     builder (3.2.4)
     bzip2-ffi (1.1.0)
@@ -416,7 +416,7 @@ GEM
       rubocop-ast (>= 1.7.0, < 2.0)
       ruby-progressbar (~> 1.7)
       unicode-display_width (>= 1.4.0, < 3.0)
-    rubocop-ast (1.7.0)
+    rubocop-ast (1.8.0)
       parser (>= 3.0.1.1)
     rubocop-minitest (0.14.0)
       rubocop (>= 0.90, < 2.0)
@@ -433,7 +433,7 @@ GEM
     ruby-progressbar (1.11.0)
     ruby-vips (2.1.2)
       ffi (~> 1.12)
-    ruby2_keywords (0.0.4)
+    ruby2_keywords (0.0.5)
     rubyzip (2.3.2)
     sanitize (5.2.3)
       crass (~> 1.0.2)
index d688590b05c0ce0ed8e6bbb25f307b3e2a32177f..0c3538c511089ae087da3aafb678d37f9979b458 100644 (file)
@@ -1,26 +1,11 @@
-//= require ohauth/ohauth
-
 $(document).ready(function () {
   var application_data = $("head").data();
 
-  function makeAbsolute(url) {
-    var a = document.createElement("a");
-    a.href = url;
-    return a.href;
-  }
-
-  if (application_data.token) {
-    var headerGenerator = window.ohauth.headerGenerator({
-      consumer_key: application_data.consumerKey,
-      consumer_secret: application_data.consumerSecret,
-      token: application_data.token,
-      token_secret: application_data.tokenSecret
-    });
-
-    $.ajaxPrefilter(function (options, jqxhr) {
+  if (application_data.oauthToken) {
+    $.ajaxPrefilter(function (options) {
       if (options.oauth) {
         options.headers = options.headers || {};
-        options.headers.Authorization = headerGenerator(options.type, makeAbsolute(options.url), jqxhr.data);
+        options.headers.Authorization = "Bearer " + application_data.oauthToken;
       }
     });
   }
index 3bec5fe3612fd125af6df3e85454adf18e7baa4c..0023286bf6391e405de80666cb962cf7d5fa0cba 100644 (file)
@@ -1035,20 +1035,11 @@ tr.turn:hover {
 
 /* Overrides for pages that use new layout conventions */
 
-.users-new,
-.users-create,
-.users-terms,
-.users-confirm {
-  .content-heading .content-inner {
-    height: 200px;
-  }
-}
-
 .header-illustration {
   background-position: 0 0;
   background-repeat: no-repeat;
-  position: absolute;
-  height: 200px;
+  position: relative;
+  min-height: 200px;
   width: 100%;
   left: 0;
   bottom: 0;
@@ -1068,9 +1059,10 @@ tr.turn:hover {
   &.new-user-arm {
     height: 110px;
     width: 130px;
-    left: 260px;
-    top: 160px;
+    left: 280px;
+    top: 180px;
     background-image: image-url("sign-up-illustration-arm.png");
+    position: absolute;
     z-index: 100;
   }
 }
index 40ccfccbbc4a222a841c67f312d6665a13998a10..02a23095addd70ef9a72dde3d84cad35a257b308 100644 (file)
@@ -1,4 +1,4 @@
-# Update and read user preferences, which are arbitrayr key/val pairs
+# Update and read user preferences, which are arbitrary key/val pairs
 module Api
   class UserPreferencesController < ApiController
     before_action :authorize
index 2083627f56da30349b6b85eb679dca4d543e45d0..0884964edffbd3498b6f6466626e4e8e78203dff 100644 (file)
@@ -17,7 +17,6 @@ class ApplicationController < ActionController::Base
 
   helper_method :current_user
   helper_method :oauth_token
-  helper_method :preferred_langauges
 
   private
 
@@ -67,7 +66,7 @@ class ApplicationController < ActionController::Base
   end
 
   def require_oauth
-    @oauth_token = current_user.access_token(Settings.oauth_key) if current_user && Settings.key?(:oauth_key)
+    @oauth_token = current_user.oauth_token(Settings.oauth_application) if current_user && Settings.key?(:oauth_application)
   end
 
   ##
index f30ece3ec023d3dcef7523d8ad7584a8919d2c40..5940389397ca76e8b7b6d9a524a76d9df41185c0 100644 (file)
@@ -47,7 +47,7 @@ class IssuesController < ApplicationController
     @new_comment = IssueComment.new(:issue => @issue)
   end
 
-  # Status Transistions
+  # Status Transitions
   def resolve
     if @issue.resolve
       @issue.updated_by = current_user.id
index faf538fa926917dc429136d1a960eebd4ba7e13e..c9f165d528af8f7d32bd6ee94e03035e02d3a2e8 100644 (file)
@@ -58,13 +58,7 @@ module ApplicationHelper
     end
 
     data[:location] = session[:location] if session[:location]
-
-    if oauth_token
-      data[:token] = oauth_token.token
-      data[:token_secret] = oauth_token.secret
-      data[:consumer_key] = oauth_token.client_application.key
-      data[:consumer_secret] = oauth_token.client_application.secret
-    end
+    data[:oauth_token] = oauth_token.token if oauth_token
 
     data
   end
index fef6eaa5e77c989c177eb0c15aed84687c844fbf..17c6eace3d4eb2cf4c4f24e5d208ab07925acdd7 100644 (file)
@@ -28,7 +28,7 @@ module BannerHelper
       index = cval.to_i
       cookies[ckey] = index - 1 if index.positive?
 
-      # pick banner with mininum queue position
+      # pick banner with minimum queue position
       next if index > min_index
 
       # or if equal queue position, pick banner with soonest end date (i.e. next expiring)
index 00c6ce9934b7b37c6a95f74e32a68d4678714668..8c89f61de9dfad633a31e65fa8356ad963d75817 100644 (file)
@@ -3,7 +3,7 @@ module ConsistencyValidations
 
   # Generic checks that are run for the updates and deletes of
   # node, ways and relations. This code is here to avoid duplication,
-  # and allow the extention of the checks without having to modify the
+  # and allow the extension of the checks without having to modify the
   # code in 6 places for all the updates and deletes. Some of these tests are
   # needed for creates, but are currently not run :-(
   # This will throw an exception if there is an inconsistency
index 4b471f60d8ce8155544617c76478a43218ee2840..8b8f31676b6e37870dfb9542ec8bad4229805b26 100644 (file)
@@ -68,7 +68,7 @@ class User < ApplicationRecord
   has_many :client_applications
   has_many :oauth_tokens, -> { order(:authorized_at => :desc).preload(:client_application) }, :class_name => "OauthToken"
 
-  has_many :oauth2_applications, :class_name => Doorkeeper.config.application_model.name, :foreign_key => :owner_id
+  has_many :oauth2_applications, :class_name => Doorkeeper.config.application_model.name, :as => :owner
   has_many :access_grants, :class_name => Doorkeeper.config.access_grant_model.name, :foreign_key => :resource_owner_id
   has_many :access_tokens, :class_name => Doorkeeper.config.access_token_model.name, :foreign_key => :resource_owner_id
 
@@ -283,11 +283,23 @@ class User < ApplicationRecord
   end
 
   ##
-  # return an oauth access token for a specified application
+  # return an oauth access token for a specified application
   def access_token(application_key)
     ClientApplication.find_by(:key => application_key).access_token_for_user(self)
   end
 
+  ##
+  # return an oauth 2 access token for a specified application
+  def oauth_token(application_id)
+    application = Doorkeeper.config.application_model.find_by(:uid => application_id)
+
+    Doorkeeper.config.access_token_model.find_or_create_for(
+      :application => application,
+      :resource_owner => self,
+      :scopes => application.scopes
+    )
+  end
+
   def fingerprint
     digest = Digest::SHA256.new
     digest.update(email)
index fde54554662b797b12b49863ddc69a189539f92d..7350f86287494a9e4af12fc15c4bff07f35bbd06 100644 (file)
@@ -1,6 +1,8 @@
+<% content_for :heading_class, "pb-0" %>
 <% content_for :heading do %>
-  <h1><%= t ".heading" %></h1>
-  <div class='header-illustration confirm-main'></div>
+  <div class='header-illustration confirm-main'>
+    <h1><%= t ".heading" %></h1>
+  </div>
 <% end %>
 
 <% if params[:confirm_string] %>
index a27d7f15c8221d621703da9c5d6ecd4ce2a8d06d..4f2925b149e386f86fa4e07c372c8ec5152797fd 100644 (file)
@@ -2,8 +2,11 @@
   <%= javascript_include_tag "messages" %>
 <% end %>
 
+<% content_for :heading_class, "pb-0" %>
+
 <% content_for :heading do %>
-  <ul class="nav nav-pills">
+  <h1><%= t("users.show.my messages") %></h1>
+  <ul class="nav nav-tabs">
     <li class="nav-item">
       <a class="nav-link active"><%= t ".my_inbox" %></a>
     </li>
index 562bd9df1123cf27b6ccd72cb54d58b8aa8cd13e..0099b573d816a0d289ca4e65cf17ee52bc400ad5 100644 (file)
@@ -2,8 +2,12 @@
   <%= javascript_include_tag "messages" %>
 <% end %>
 
+<% content_for :heading_class, "pb-0" %>
+
 <% content_for :heading do %>
-  <ul class="nav nav-pills">
+  <h1><%= t("users.show.my messages") %></h1>
+
+  <ul class="nav nav-tabs">
     <li class="nav-item">
       <%= link_to t(".my_inbox"), inbox_messages_path, :class => "nav-link" %>
     </li>
index 3631467fd249277fa9c43af99c41ab53cd7826f7..74c61669fb21f2799ca6cdc1485b3ed2eaadf3ed 100644 (file)
@@ -1,8 +1,8 @@
-<% if current_user == @message.recipient %>
-  <% content_for :heading do %>
-    <h2><%= @message.title %></h2>
-  <% end %>
+<% content_for :heading do %>
+  <h2><%= @message.title %></h2>
+<% end %>
 
+<% if current_user == @message.recipient %>
   <div class='info-line clearfix'>
     <%= user_thumbnail_tiny @message.sender %>
     <%= link_to @message.sender.display_name, user_path(@message.sender) %></td>
     </div>
   </div>
 
-  <div class="richtext"><%= @message.body.to_html %></div>
+  <div class="richtext text-break"><%= @message.body.to_html %></div>
 
   <div>
     <%= link_to t(".reply_button"), message_reply_path(@message), :class => "btn btn-primary" %>
     <%= link_to t(".unread_button"), message_mark_path(@message, :mark => "unread"), :method => "post", :class => "btn btn-primary" %>
-    <%= link_to t(".destroy_button"), message_path(@message), :method => "delete", :class => "btn btn-primary" %>
+    <%= link_to t(".destroy_button"), message_path(@message), :method => "delete", :class => "btn btn-danger" %>
     <%= link_to t(".back"), inbox_messages_path, :class => "btn btn-link" %>
   </div>
-
 <% else %>
-
-  <h2><%= @message.title %></h2>
-
   <div class='info-line clearfix'>
     <%= user_thumbnail_tiny @message.recipient %>
     <%= link_to @message.recipient.display_name, user_path(@message.recipient) %></td>
@@ -35,7 +31,7 @@
   <div class="richtext text-break"><%= @message.body.to_html %></div>
 
   <div>
+    <%= link_to t(".destroy_button"), message_path(@message), :method => "delete", :class => "btn btn-danger" %>
     <%= link_to t(".back"), outbox_messages_path, :class => "btn btn-link" %>
   </div>
-
 <% end %>
index ed00a8fcc4343815278ec7b1c77b8521141056d7..5753ebd9af84fd98d91b4fe80fff0c57bf41c41d 100644 (file)
@@ -1,6 +1,8 @@
+<% content_for :heading_class, "pb-0" %>
 <% content_for :heading do %>
-  <h1><%= t "users.new.title" %></h1>
-  <div class='header-illustration new-user-main'></div>
+  <div class='header-illustration new-user-main'>
+    <h1><%= t "users.new.title" %></h1>
+  </div>
   <div class='header-illustration new-user-arm'></div>
 <% end %>
 
index 264fc8e023a227f2c7b622b560851f904d615eac..a94d4a812afdd8b0ed28e1bc87b69b67d41e8cfc 100644 (file)
@@ -2,9 +2,11 @@
   <%= javascript_include_tag "user" %>
 <% end %>
 
+<% content_for :heading_class, "pb-0" %>
 <% content_for :heading do %>
-  <h1><%= t ".title" %></h1>
-  <div class='header-illustration new-user-main'></div>
+  <div class='header-illustration new-user-main'>
+    <h1><%= t ".title" %></h1>
+  </div>
   <div class='header-illustration new-user-arm'></div>
 <% end %>
 
index 3974a2f9cf8a1ff92e4249a791d065690307d660..ac6938af76066e1fc7a11fed8eb73a28895571dc 100644 (file)
@@ -4,7 +4,7 @@
     <div class='userinformation-inner'>
       <h1><%= @user.display_name %> <%= role_icons(@user) %></h1>
       <% if current_user and @user.id == current_user.id %>
-        <!-- Displaying user's own profile page to themself -->
+        <!-- Displaying user's own profile page -->
         <ul class='secondary-actions clearfix'>
           <li>
             <%= link_to t(".my edits"), :controller => "changesets", :action => "index", :display_name => current_user.display_name %>
index 99af8b84185e6a3da2b8cd3dccb75f19372ff39e..05cf62e3e67038d2572a3d836c721d25bbb19aac 100644 (file)
@@ -2,9 +2,11 @@
   <%= javascript_include_tag "user" %>
 <% end %>
 
+<% content_for :heading_class, "pb-0" %>
 <% content_for :heading do %>
-  <h1><%= t ".heading" %></h1>
-  <div class='header-illustration new-user-terms'></div>
+  <div class='header-illustration new-user-terms'>
+    <h1><%= t ".heading" %></h1>
+  </div>
 <% end %>
 
 <%= form_tag({ :action => "save" }) do %>
index 4a255e3770151fd11a6e758bd63750621b9b9c8e..a012ddad8df6f84a54220191cf91735e042fc5be 100644 (file)
@@ -1534,7 +1534,7 @@ bn:
       my_tokens: আমার অনুমোদিত অ্যাপ্লিকেশনসমূহ
       list_tokens: 'নিম্নলিখিত টোকেনগুলি আপনার নামে অধীনে অ্যাপ্লিকেশনগুলির জন্য তৈরী
         করা হয়েছে:'
-      application: অ্যাপলিকেশনের নাম
+      application: à¦\85à§\8dযাপà§\8dলিà¦\95à§\87শনà§\87র à¦¨à¦¾à¦®
       issued_at: অনুমোদনের তারিখ
   users:
     new:
index 30db818b1fe696173a82fa6d4c388c4537bb7338..bd29adecdfa7dee64641190499589449ffee1bb2 100644 (file)
@@ -933,6 +933,7 @@ de:
           railway: Historische Zugstrecke
           roman_road: Römerstraße
           ruins: Ruine
+          rune_stone: Runenstein
           stone: Findling
           tomb: Grabstätte
           tower: Historischer Turm
index fcfb2bc89533a5c3e603178fbbbbbd7375b24b9e..83b697e8c315db58258df8c0203b8a7c00050611 100644 (file)
@@ -152,7 +152,7 @@ en:
       trace:
         tagstring: comma delimited
       user_block:
-        reason: The reason why the user is being blocked. Please be as calm and as reasonable as possible, giving as much detail as you can about the situation, remembering that the message will be publicly visible. Bear in mind that not all users understand the community jargon, so please try to use laymans terms.
+        reason: The reason why the user is being blocked. Please be as calm and as reasonable as possible, giving as much detail as you can about the situation, remembering that the message will be publicly visible. Bear in mind that not all users understand the community jargon, so please try to use layman's terms.
         needs_view: Does the user need to log in before this block will be cleared?
       user:
         email_confirmation: 'Your address is not displayed publicly, see our <a href="https://wiki.osmfoundation.org/wiki/Privacy_Policy" title="OSMF privacy policy including section on email addresses">privacy policy</a> for more information.'
@@ -697,7 +697,7 @@ en:
           houseboat: "Houseboat"
           hut: "Hut"
           industrial: "Industrial Building"
-          kindergarten: "Kindergarden Building"
+          kindergarten: "Kindergarten Building"
           manufacture: "Manufacturing Building"
           office: "Office Building"
           public: "Public Building"
@@ -722,7 +722,7 @@ en:
           sport: "Sportsclub"
           "yes": "Club"
         craft:
-          beekeper: "Beekeeper"
+          beekeeper: "Beekeeper"
           blacksmith: "Blacksmith"
           brewery: "Brewery"
           carpenter: "Carpenter"
@@ -752,7 +752,7 @@ en:
           ambulance_station: "Ambulance Station"
           assembly_point: "Assembly Point"
           defibrillator: "Defibrillator"
-          fire_xtinguisher: "Fire Extinguisher"
+          fire_extinguisher: "Fire Extinguisher"
           fire_water_pond: "Fire Water Pond"
           landing_site: "Emergency Landing Site"
           life_ring: "Emergency Life Ring"
@@ -837,6 +837,7 @@ en:
           railway: "Historic Railway"
           roman_road: "Roman Road"
           ruins: "Ruins"
+          rune_stone: "Rune Stone"
           stone: "Stone"
           tomb: "Tomb"
           tower: "Tower"
index aa81b0c70758a6e81a6d0494353fec37c129c6a0..7acf6fe019e9169a0a722fcd2002821f8b2d25c2 100644 (file)
@@ -64,7 +64,7 @@ fa:
         update: بروزرسانی
       doorkeeper_application:
         create: ثبت‌نام
-        update: Ø±Ù\88زآÙ\85دسازی
+        update: Ø¨Ø±Ù\88زرساÙ\86ی
       redaction:
         create: ایجاد پاک‌سازی
         update: ذخیرهٔ پاک‌سازی
@@ -2345,10 +2345,10 @@ fa:
       read_prefs: خواندن ترجیحات کاربر
       write_prefs: تغییر ترجیحات کاربر
       write_diary: ایجاد روزنوشت، نظردهی و افزودن دوست
-      write_api: ØªØºÛ\8cÛ\8cر نقشه
+      write_api: Ø§ØµÙ\84اح نقشه
       read_gpx: خواندن ردهای جی‌پی‌اس خصوصی
       write_gpx: آپلود ردهای جی‌پی‌اس
-      write_notes: ØªØºÛ\8cÛ\8cر یادداشت‌ها
+      write_notes: Ø§ØµÙ\84اح یادداشت‌ها
   oauth_clients:
     new:
       title: ثبت اپلیکیشن تازه
index d21e775d24abcd5f752b96865a6e00323d3460db..eb2621770b66025f8cb08ebf151bbeef48afbab3 100644 (file)
@@ -68,6 +68,9 @@ fi:
       client_application:
         create: Rekisteröi
         update: Päivitä
+      doorkeeper_application:
+        create: Rekisteröidy
+        update: Päivitä
       redaction:
         create: Luo redaktio
         update: Tallenna redaktio
@@ -139,6 +142,9 @@ fi:
         latitude: Leveyspiiri
         longitude: Pituuspiiri
         language: Kieli
+      doorkeeper/application:
+        name: Nimi
+        scopes: Käyttöoikeudet
       friend:
         user: Käyttäjä
         friend: Kaveri
@@ -524,6 +530,11 @@ fi:
       comment: Kommentti
       newer_comments: Uudemmat kommentit
       older_comments: Vanhemmat kommentit
+  doorkeeper:
+    flash:
+      applications:
+        create:
+          notice: Sovellus rekisteröity.
   friendships:
     make_friend:
       heading: Lisätäänkö %{user} kaveriksi?
@@ -719,6 +730,7 @@ fi:
           semidetached_house: Paritalo
           service: Palvelurakennus
           stable: Talli
+          static_caravan: Karavaani
           temple: Temppelirakennus
           terrace: Rivitalo
           train_station: Rautatieasema
@@ -726,18 +738,25 @@ fi:
           warehouse: Varasto
           "yes": Rakennus
         club:
+          sport: Urheiluseura
           "yes": Klubi
         craft:
+          beekeper: Mehiläishoitaja
           brewery: Panimo
           carpenter: Puuseppä
+          caterer: Pitopalvelu
+          confectionery: Makeiset
+          dressmaker: Ompelija
           electrician: Sähköasentaja
           gardener: Puutarhuri
+          handicraft: Käsityöt
           painter: Taidemaalari
           photographer: Valokuvaaja
           plumber: Putkimies
           sawmill: Sahalaitos
           shoemaker: Suutari
           tailor: Räätäli
+          winery: Viinitila
           "yes": Käsityömyymälä
         emergency:
           ambulance_station: Ensihoitoasema
@@ -830,6 +849,7 @@ fi:
           "yes": Risteys
         landuse:
           allotments: Siirtolapuutarha
+          aquaculture: Vesiviljely
           basin: Syvänne
           brownfield: Purettujen rakennusten alue
           cemetery: Hautausmaa
@@ -893,6 +913,7 @@ fi:
           "yes": Vapaa-aika
         man_made:
           adit: Suuaukko
+          advertising: Mainonta
           antenna: Antenni
           beacon: Majakka
           beehive: ampiaispesä
@@ -2237,6 +2258,8 @@ fi:
       flash: Olet poistanut sovelluksen %{application} käyttöoikeudet
     permissions:
       missing: Et ole sallinut sovelluksen käyttöoikeutta tähän palveluun
+    scopes:
+      write_api: Muokkaa karttaa
   oauth_clients:
     new:
       title: Rekisteröi uusi sovellus
@@ -2278,6 +2301,28 @@ fi:
       flash: Sovelluksen tiedot on päivitetty.
     destroy:
       flash: Sovelluksen käyttöoikeus on poistettu.
+  oauth2_applications:
+    index:
+      new: Rekisteröi uusi sovellus
+      name: Nimi
+      permissions: Käyttöoikeudet
+    application:
+      edit: Muokkaa
+      delete: Poista
+      confirm_delete: Poista tämä sovellus?
+    new:
+      title: Rekisteröi uusi sovellus
+    edit:
+      title: Muokkaa sovellustasi
+    show:
+      edit: Muokkaa
+      delete: Poista
+      confirm_delete: Poista tämä sovellus?
+      permissions: Oikeudet
+  oauth2_authorized_applications:
+    index:
+      application: Sovellus
+      permissions: Oikeudet
   users:
     new:
       title: Rekisteröidy
@@ -2332,6 +2377,7 @@ fi:
         italy: Italia
         rest_of_world: Muu maailma
     terms_declined_flash:
+      terms_declined_link: tämä wikisivu
       terms_declined_url: https://wiki.openstreetmap.org/wiki/Fi:Contributor_Terms_Declined
     no_such_user:
       title: Haettua käyttäjää ei ole olemassa
@@ -2481,6 +2527,7 @@ fi:
     suspended:
       title: Käyttäjätili jäädytetty
       heading: Käyttäjätili jäädytetty
+      support: tuki
       body_html: |-
         <p>
          Pahoittelut, tilisi on automaattisesti suljettu
index a195d2f5c003e10f8156f338d6a5d207fa17080b..4e89db375766ebe7590ccabe1a5bf14cbab4814f 100644 (file)
@@ -943,6 +943,7 @@ fr:
           railway: Chemin de fer historique
           roman_road: Voie romaine
           ruins: Ruines
+          rune_stone: Pierre runique
           stone: Pierre
           tomb: Tombeau
           tower: Tour
index 8df93eea09b0d052c6b8d306a5b5081dcd786a4f..3dc59c4c7b1d1c5e29ba81dbd2850a724d866dc0 100644 (file)
@@ -3,6 +3,7 @@
 # Export driver: phpyaml
 # Author: Amire80
 # Author: Aude
+# Author: Avma
 # Author: Dan.translate
 # Author: Dekel E
 # Author: Deror avi
@@ -72,27 +73,27 @@ he:
     errors:
       messages:
         invalid_email_address: זאת אינה כתובת דוא״ל תקנית
-        email_address_not_routable: ×\90×\99 ×\90פשר ×\9c×\99צ×\95ר × ×ª×\99ב
+        email_address_not_routable: ×\9c×\90 ×\91ר־נ×\99ת×\95ב
     models:
       acl: רשימת בקרת גישה
       changeset: ערכת שינויים
       changeset_tag: תג ערכת שינויים
       country: מדינה
       diary_comment: תגובה ליומן
-      diary_entry: ×¨×©×\95×\9e×\94 ×\91יומן
+      diary_entry: ×¨×©×\95×\9eת יומן
       friend: חבר
-      issue: ×\93×\99×\95×\95×\97
+      issue: ×¡×\95×\92×\99×\99×\94
       language: שפה
       message: הודעה
       node: נקודה
-      node_tag: ×ª×\92 ×©×\9c × ×§×\95×\93×\94
+      node_tag: ×ª×\92 ×¦×\95×\9eת
       notifier: מתריע
-      old_node: × ×§×\95×\93×\94 ×\99שנ×\94
-      old_node_tag: ×ª×\92 ×©×\9c × ×§×\95×\93×\94 ×\99שנ×\94
+      old_node: ×¦×\95×\9eת ×\99ש×\9f
+      old_node_tag: ×ª×\92 ×¦×\95×\9eת ×\99ש×\9f
       old_relation: יחס ישן
       old_relation_member: איבר יחס ישן
       old_relation_tag: תג יחס ישן
-      old_way: ×§×\95 ×\99ש×\9f
+      old_way: ×\93ר×\9a ×\99שנ×\94
       old_way_node: נקודת קו ישנה
       old_way_tag: תג קו ישן
       relation: יחס
index 3de1244c0602228947ba3786c9a54e2957035b94..2196845222072fd5f6a9dc70a3186f2ad47c69ab 100644 (file)
@@ -2155,6 +2155,8 @@ ko:
       flash: '%{application}에 대한 토큰을 해제했습니다'
     permissions:
       missing: 이 애플리케이션이 이 기능을 사용할 수 있도록 승인하지 않았습니다
+    scopes:
+      write_prefs: 사용자 환경 설정 수정
   oauth_clients:
     new:
       title: 새 애플리케이션 등록
@@ -2197,13 +2199,19 @@ ko:
       flash: 클라이언트 애플리케이션 등록을 파기했습니다
   oauth2_applications:
     index:
+      title: 내 클라이언트 애플리케이션
       name: 이름
       permissions: 권한
     application:
       edit: 편집
+    new:
+      title: 새 애플리케이션 등록
+    edit:
+      title: 내 애플리케이션 편집
     show:
       edit: 편집
       delete: 삭제
+      confirm_delete: 이 애플리케이션을 삭제하시겠습니까?
       client_id: 클라이언트 ID
       permissions: 권한
   oauth2_authorizations:
@@ -2211,6 +2219,7 @@ ko:
       title: 오류가 발생했습니다
   oauth2_authorized_applications:
     index:
+      application: 애플리케이션
       permissions: 권한
   users:
     new:
@@ -2377,6 +2386,9 @@ ko:
       save changes button: 변경사항 저장
       make edits public button: 내 편집을 공개하기
       return to profile: 프로필로 돌아가기
+      oauth1 settings: OAuth 1 설정
+      oauth2 applications: OAuth 2 애플리케이션
+      oauth2 authorizations: OAuth 2 인가
       flash update success confirm needed: 사용자 정보를 성공적으로 업데이트했습니다. 새 이메일 주소를 확인하기
         위해 이메일을 확인하세요.
       flash update success: 사용자 정보를 성공적으로 업데이트했습니다.
@@ -2398,6 +2410,7 @@ ko:
     suspended:
       title: 계정 정지
       heading: 계정 정지
+      support: 지원
       body_html: |-
         <p>
           죄송합니다, 의심스러운 활동으로 인해 계정이 자동으로
index 0201717ddaecc956317806d7e33e446719ec2d2b..bdbcb613a622f334cd404217a2ef7ff486db0ff9 100644 (file)
@@ -157,6 +157,7 @@ nl:
         language: Taal
       doorkeeper/application:
         name: Naam
+        redirect_uri: Omleidings-URI's
         confidential: Vertrouwelijke toepassing?
         scopes: Rechten
       friend:
@@ -201,6 +202,11 @@ nl:
         pass_crypt: Wachtwoord
         pass_crypt_confirmation: Wachtwoord bevestigen
     help:
+      doorkeeper/application:
+        confidential: Applicatie wordt gebruikt waar het clientgeheim vertrouwelijk
+          kan worden gehouden (native mobiele apps en apps met één pagina zijn niet
+          vertrouwelijk)
+        redirect_uri: Gebruik één regel per URI
       trace:
         tagstring: kommagescheiden
       user_block:
@@ -1670,6 +1676,12 @@ nl:
       success: Uw e-mailadreswijziging is bevestigd.
       failure: Er is al een e-mailadres bevestigd met dit token.
       unknown_token: De opgegeven bevestigingscode is verlopen of bestaat niet.
+    resend_success_flash:
+      confirmation_sent: We hebben een nieuwe bevestigingsnotitie naar %{email} gestuurd
+        en zodra u uw account bevestigt, kunt u een toewijzing krijgen.
+      whitelist: Als u een antispamsysteem gebruikt dat bevestigingsverzoeken verzendt,
+        zorg er dan voor dat u %{sender} op de witte lijst plaatst, aangezien we niet
+        kunnen reageren op bevestigingsverzoeken.
   messages:
     inbox:
       title: Postvak IN
@@ -1784,9 +1796,8 @@ nl:
       account not active: Uw gebruiker is helaas nog niet actief.<br />Klik op de
         koppeling in de bevestiging om deze te activeren of <a href="%{reconfirm}">vraag
         een nieuwe bevestiging per e-mail aan</a>.
-      account is suspended: Uw gebruiker is automatisch opgeschort vanwege verdachte
-        activiteit.<br />Neem contact op met de <a href="%{webmaster}">webmaster</a>
-        als u deze handeling wilt bespreken.
+      account is suspended: Sorry, uw account is opgeschort vanwege verdachte activiteit.<br
+        /> Neem contact op met <a href="%{webmaster}">support</a> als u dit wilt bespreken.
       auth failure: Met deze gegevens kunt u helaas niet aanmelden.
       openid_logo_alt: Aanmelden met een OpenID
       auth_providers:
@@ -2364,7 +2375,7 @@ nl:
       in: in
     index:
       public_traces: Openbare gps-trajecten
-      my_traces: Mijn gps-trajecten
+      my_traces: Mijn trajecten
       public_traces_from: Openbare gps-trajecten van %{user}
       description: Door recente gps-traject-uploads bladeren
       tagged_with: ' gelabeld met %{tags}'
@@ -2373,6 +2384,7 @@ nl:
       upload_trace: Traject uploaden
       all_traces: Alle trajecten
       traces_from: Openbare trajecten van %{user}
+      remove_tag_filter: Tagfilter verwijderen
     destroy:
       scheduled_for_deletion: Traject staat op de lijst voor verwijdering
     make_public:
@@ -2436,8 +2448,11 @@ nl:
     scopes:
       read_prefs: Gebruikersvoorkeuren lezen
       write_prefs: Gebruikersvoorkeuren wijzigen
+      write_diary: Dagboekberichten schrijven, reacties geven en vrienden maken
+      write_api: Wijzig de kaart
       read_gpx: Persoonlijke gps-trajecten lezen
       write_gpx: Gps-trajecten uploaden
+      write_notes: Notities wijzigen
   oauth_clients:
     new:
       title: Nieuwe toepassing registreren
@@ -2481,6 +2496,11 @@ nl:
       flash: Registratie van de client-toepassing verwijderd
   oauth2_applications:
     index:
+      title: Mijn client-toepassingen
+      no_applications_html: Heeft u een toepassing die u wilt registreren met de %{oauth2}-standaard?
+        Dan moet u uw webtoepassing registreren voordat u OAuth-verzoeken naar deze
+        dienst kunt maken.
+      new: Nieuwe toepassing registreren
       name: Naam
       permissions: Rechten
     application:
@@ -2496,10 +2516,18 @@ nl:
       delete: Verwijderen
       confirm_delete: Deze toepassing verwijderen?
       client_id: Client-ID
+      client_secret: Clientgeheim
+      client_secret_warning: Zorg ervoor dat u dit geheim opslaat - het zal niet meer
+        toegankelijk zijn
       permissions: Rechten
+      redirect_uris: Omleidings-URI's
+    not_found:
+      sorry: Sorry, die applicatie kan niet worden gevonden.
   oauth2_authorizations:
     new:
       title: Autorisatie vereist
+      introduction: '%{application} autoriseren om toegang te krijgen tot uw account
+        met de volgende machtigingen?'
       authorize: Autoriseren
       deny: Weigeren
     error:
@@ -2511,6 +2539,7 @@ nl:
       title: Mijn geautoriseerde toepassingen
       application: Toepassing
       permissions: Rechten
+      no_applications_html: U heeft nog geen %{oauth2}-applicaties geautoriseerd.
     application:
       revoke: Toegang intrekken
       confirm_revoke: Toegang voor deze toepassing intrekken?
@@ -2520,7 +2549,7 @@ nl:
       no_auto_account_create: Helaas is het niet mogelijk om automatisch een gebruiker
         voor u aan te maken.
       contact_support_html: Neem contact op met de <a href="%{support}">webmaster</a>
-        om een account te laten maken. We proberen uw aanvraag dan zo snel mogelijk
+        om een account aan te maken - we zullen proberen het verzoek zo snel mogelijk
         af te handelen.
       about:
         header: Open en te bewerken
@@ -2729,8 +2758,9 @@ nl:
     suspended:
       title: Gebruiker opgeschort
       heading: Account opgeschort
+      support: ondersteuning
       body_html: |-
-        <p>Uw gebruiker is automatisch opgeschort vanwege verdachte activiteit.</p>
+        <p>Uw account is automatisch opgeschort vanwege verdachte activiteit.</p>
         <p>Deze beslissing wordt snel beoordeeld door een beheerder, maar u kunt ook contact opnemen met de %{webmaster} als u deze handeling wilt bespreken.</p>
     auth_failure:
       connection_failed: Verbinding met authenticatieprovider mislukt
index 6e9b747a2c795628b84ec5b97f9ac2fb57b0f36c..9caea1e3b94e5ffa5b47929e91cf2416014d66ce 100644 (file)
@@ -79,6 +79,7 @@
 # Author: Sobloku
 # Author: Spider
 # Author: TarzanASG
+# Author: Thothsum
 # Author: Tourorist
 # Author: Valencia212
 # Author: Vlad5250
@@ -1753,8 +1754,8 @@ ru:
         активировать её, пожалуйста, нажмите на ссылку в отправленном вам письме,
         или <a href="%{reconfirm}">запросите отправку нового письма-подтверждения</a>.
       account is suspended: Извините, ваша учётная запись была приостановлена из-за
-        подозрительной активности.<br />Пожалуйста, свяжитесь с <a href="%{webmaster}">веб-мастером</a>,
-        если вы хотите выяснить подробности.
+        подозрительной активности.<br />Пожалуйста, свяжитесь со <a href="%{webmaster}">службой
+        Ð¿Ð¾Ð´Ð´ÐµÑ\80жки</a>, ÐµÑ\81ли Ð²Ñ\8b Ñ\85оÑ\82иÑ\82е Ð²Ñ\8bÑ\8fÑ\81ниÑ\82Ñ\8c Ð¿Ð¾Ð´Ñ\80обноÑ\81Ñ\82и.
       auth failure: Извините, вход с этими именем или паролем невозможен.
       openid_logo_alt: Войти с помощью OpenID
       auth_providers:
@@ -2373,6 +2374,7 @@ ru:
     scopes:
       write_prefs: Изменить настройки пользователя
       write_api: Изменить карту
+      read_gpx: Читать частные GPS-треки
       write_gpx: Загрузить GPS-треки
       write_notes: Изменить заметки
   oauth_clients:
@@ -2433,7 +2435,8 @@ ru:
       edit: Редактировать
       delete: Удалить
       confirm_delete: Удалить это приложение?
-      client_secret: Секрет клиента
+      client_id: ID клиента
+      client_secret: Тайна клиента
       client_secret_warning: Обязательно сохраните этот секрет - он больше не будет
         доступен
       permissions: Разрешения
@@ -2448,15 +2451,16 @@ ru:
   oauth2_authorized_applications:
     index:
       title: Мои авторизованные приложения
+      permissions: Разрешения
       no_applications_html: Вы еще не авторизовали ни одно приложение %{oauth2}.
   users:
     new:
       title: Регистрация
       no_auto_account_create: К сожалению, сейчас мы не можем автоматически создать
         для вас учётную запись.
-      contact_support_html: Пожалуйста, свяжитесь с <a href="%{support}">вебмастером</a>
-        с просьбой создать подобную учётную запись. Мы попробуем и ответим настолько
-        быстро, насколько сможем.
+      contact_support_html: Пожалуйста, свяжитесь со <a href="%{support}">службой
+        поддержки</a> с просьбой создать подобную учётную запись. Мы попробуем и ответим
+        Ð½Ð°Ñ\81Ñ\82олÑ\8cко Ð±Ñ\8bÑ\81Ñ\82Ñ\80о, Ð½Ð°Ñ\81колÑ\8cко Ñ\81можем.
       about:
         header: Свободно редактируемая
         html: |-
index 4dff0d7641cba5e6c9ea21f50f52182b58d477bf..c4038977bb27a7d5e416607d7a682ab05f2f3a68 100644 (file)
@@ -492,7 +492,7 @@ tr:
       location: Konum
       use_map_link: Haritayı Kullan
     index:
-      title: Kullanıcıların günlükleri
+      title: Kullanıcı Günlükleri
       title_friends: Arkadaşların günlükleri
       title_nearby: Yakındaki kullanıcıların günlükleri
       user_title: '%{user} kullanıcısının günlüğü'
@@ -520,7 +520,7 @@ tr:
         kontrol edin ya da tıkladığınız bağlantı hatalı olabilir.
     diary_entry:
       posted_by_html: '%{link_user} tarafından %{created} tarihinde %{language_link}
-        olarak gönderildi.'
+        dilinde gönderildi.'
       updated_at_html: En son %{updated} tarihinde güncellendi.
       comment_link: Bu girdiyi yorumla
       reply_link: Yazara mesaj gönder
@@ -912,6 +912,7 @@ tr:
           railway: Tarihi Demiryolu
           roman_road: Roma Yolu
           ruins: Harabe
+          rune_stone: Rün Taşı
           stone: Taş
           tomb: Mezar
           tower: Kule
@@ -1785,13 +1786,13 @@ tr:
       password: 'Parola:'
       openid_html: '%{logo} OpenID:'
       remember: Beni hatırla
-      lost password link: Parolanızı mı kaybettiniz?
+      lost password link: Parolanı mı unuttun?
       login_button: Oturum aç
       register now: Şimdi kaydol
       with username: 'OpenStreetMap hesabınız var mı? Lütfen kullanıcı adı ve parolanızla
         oturum açın:'
-      with external: 'Alternatif olarak, bir üçüncü parti uygulaması kullanarak oturum
-        açın:'
+      with external: 'Alternatif olarak bir üçüncü parti uygulaması kullanarak oturum
+        aç:'
       new to osm: OpenStreetMap sitesinde yeni misiniz?
       to make changes: OpenStreetMap verileri değiştirmek için bir hesabın olması
         gerekir.
@@ -1859,9 +1860,9 @@ tr:
       copyright_html: <span>&copy;</span>OpenStreetMap<br>katkıda bulunanları
       used_by_html: '%{name} binlerce web sitesi, mobil uygulama ve donanım cihazı
         için harita verileri sağlar'
-      lede_text: OpenStreetMap; tüm dünyada yollar, yollar, kafeler, tren istasyonları
-        ve daha pek çok şey hakkında veri sağlayan ve koruyan bir haritalar topluluğu
-        tarafından oluşturulmuştur.
+      lede_text: OpenStreetMap; tüm dünyada yollar, patikalar, kafeler, tren istasyonları
+        ve çok daha fazlası hakkında veri sağlayan ve bunları koruyan bir haritacılar
+        topluluğu tarafından oluşturulmuştur.
       local_knowledge_title: Yerel Bilgi
       local_knowledge_html: |-
         OpenStreetMap, piyasa bilgisi üzerinde durmaktadır. Katkıda bulunanlar,
@@ -2165,7 +2166,7 @@ tr:
         kullanılamaz.
       desktop_html: Potlatch'ı <a href="https://www.systemed.net/potlatch/">Mac ve
         Windows için masaüstü uygulamasını indirerek</a> kullanmaya devam edebilirsiniz.
-      id_html: Alternatif olarak, varsayılan düzenleyicinizi, daha önce Potlatch'ın
+      id_html: Alternatif olarak varsayılan düzenleyicinizi, daha önce Potlatch'ın
         yaptığı gibi web tarayıcınızda çalışan iD olarak ayarlayabilirsiniz. <a href="%{settings_url}">Kullanıcı
         ayarlarınızı buradan değiştirin</a>.
     sidebar:
@@ -2565,8 +2566,8 @@ tr:
       display name description: Herkes tarafından görünecek bir kullanıcı adı. Bu
         adı istediğin zaman 'tercihlerim' bölümünde değiştirebilirsin.
       external auth: 'Üçüncü Taraf Kimlik Doğrulaması:'
-      use external auth: 'Alternatif olarak, bir üçüncü parti uygulaması kullanarak
-        oturum açın:'
+      use external auth: 'Alternatif olarak bir üçüncü parti uygulaması kullanarak
+        oturum aç:'
       auth no password: Üçüncü taraf kimlik doğrulamasında bir parola gerekli değildir,
         ancak bazı ek araçlar veya sunucu için yine de bir parola gerekebilir.
       continue: Kaydol
index 81ab3701597a304a314adb95e6bcf2a4adf525c8..6f77efcfd835ea3b83e00e6706225839b2ac2166 100644 (file)
@@ -84,8 +84,8 @@ oauth_10_support: true
 nominatim_url: "https://nominatim.openstreetmap.org/"
 # Default editor
 default_editor: "id"
-# OAuth consumer key for the web site
-#oauth_key: ""
+# OAuth application for the web site
+#oauth_application: ""
 # OAuth consumer key for iD
 #id_key: ""
 # Imagery to return in capabilities as blacklisted
index b6dd64b9986131b04fb6ddf6a1e9043f073a9240..005d3ebb848fcd5c109fac687872b2a6d704ba76 100644 (file)
@@ -474,7 +474,7 @@ module OSM
 
   # Construct a random token of a given length
   def self.make_token(length = 30)
-    chars = "abcdefghijklmnopqrtuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+    chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
     token = ""
 
     length.times do
index 60da79b05fb7deb051a12bdcca089fd095bc8bd3..4e5538cfde6494160bedd546d787eae5f4dad60c 100644 (file)
@@ -8,7 +8,6 @@
     "js-cookie": "^2.2.1",
     "leaflet": "^1.6.0",
     "leaflet.locatecontrol": "^0.74.0",
-    "ohauth": "^1.0.0",
     "qs": "^6.9.4"
   },
   "devDependencies": {
index 567f77fd35d8ef64e834eff776b4c5c6be935297..8e8f4c1850523aa23ab5f3f9d3490879f0b51bf3 100644 (file)
@@ -63,7 +63,7 @@ module Api
             "</changeset></osm>"
       put changeset_create_path, :params => xml, :headers => auth_header
 
-      assert_response :success, "Creation of changeset did not return sucess status"
+      assert_response :success, "Creation of changeset did not return success status"
       newid = @response.body.to_i
 
       # check end time, should be an hour ahead of creation time
@@ -700,7 +700,7 @@ module Api
       # upload it
       post changeset_upload_path(changeset), :params => diff, :headers => auth_header
       assert_response :bad_request,
-                      "shoudln't be able to upload too long a tag to changeset: #{@response.body}"
+                      "shouldn't be able to upload too long a tag to changeset: #{@response.body}"
     end
 
     ##
@@ -1326,7 +1326,7 @@ module Api
           <node id='-7' visible='true' changeset='#{changeset_id}' lat='51.49560784152179' lon='-0.18694719410005425' />
           <node id='-8' visible='true' changeset='#{changeset_id}' lat='51.49567389979617' lon='-0.1860289771788006' />
           <node id='-9' visible='true' changeset='#{changeset_id}' lat='51.49543761398892' lon='-0.186820684213126' />
-          <way id='-10' action='modiy' visible='true' changeset='#{changeset_id}'>
+          <way id='-10' action='modify' visible='true' changeset='#{changeset_id}'>
             <nd ref='-1' />
             <nd ref='-2' />
             <nd ref='-3' />
index e9459b6a283692196b3ab26897f0979b5effcf0f..1e96e353ce7ea7a423eca52e0f0c3af4d10f4cbd 100644 (file)
@@ -13,7 +13,7 @@ module Api
       @goodbbox = %w[-0.1,-0.1,0.1,0.1 51.1,-0.1,51.2,0
                      -0.1,%20-0.1,%200.1,%200.1 -0.1edcd,-0.1d,0.1,0.1 -0.1E,-0.1E,0.1S,0.1N S0.1,W0.1,N0.1,E0.1]
       # That last item in the goodbbox really shouldn't be there, as the API should
-      # reall reject it, however this is to test to see if the api changes.
+      # really reject it, however this is to test to see if the api changes.
     end
 
     ##
@@ -129,7 +129,7 @@ module Api
         print @request.to_yaml
         print @response.body
       end
-      assert_response :success, "Expected scucess with the map call"
+      assert_response :success, "Expected success with the map call"
       assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do
         assert_select "bounds[minlon='#{format('%<lon>.7f', :lon => minlon)}']" \
                       "[minlat='#{format('%<lat>.7f', :lat => minlat)}']" \
index b085dee9d2fdacfbbc9e392e8e5f5ec9190e689d..95658842b8e498212acf6610e3aaf92ef8d52866 100644 (file)
@@ -86,7 +86,7 @@ module Api
     end
 
     def test_create_invalid_xml
-      ## Only test public user here, as test_create should cover what's the forbiddens
+      ## Only test public user here, as test_create should cover what's the forbidden
       ## that would occur here
 
       user = create(:user)
index 44c6cd4eec1e817db0d615389403266f1f9e65a0..ec86e07a57ac242f60c71f11b90750695731b3df 100644 (file)
@@ -1009,7 +1009,7 @@ module Api
     ##
     # updates the relation (XML) +rel+ and
     # yields the new version of that relation into the block.
-    # the parsed XML doc is retured.
+    # the parsed XML doc is returned.
     def with_update(rel, headers)
       rel_id = rel.find("//osm/relation").first["id"].to_i
       put api_relation_path(:id => rel_id), :params => rel.to_s, :headers => headers
@@ -1029,7 +1029,7 @@ module Api
     ##
     # updates the relation (XML) +rel+ via the diff-upload API and
     # yields the new version of that relation into the block.
-    # the parsed XML doc is retured.
+    # the parsed XML doc is returned.
     def with_update_diff(rel, headers)
       rel_id = rel.find("//osm/relation").first["id"].to_i
       cs_id = rel.find("//osm/relation").first["changeset"].to_i
index d3fb195feb6ce42950b00bdbc03e83e645707679..a904e8127693f37e7ccb48900a3e8b0259311074 100644 (file)
@@ -13,7 +13,7 @@ module Api
       @goodbbox = %w[-0.1,-0.1,0.1,0.1 51.1,-0.1,51.2,0
                      -0.1,%20-0.1,%200.1,%200.1 -0.1edcd,-0.1d,0.1,0.1 -0.1E,-0.1E,0.1S,0.1N S0.1,W0.1,N0.1,E0.1]
       # That last item in the goodbbox really shouldn't be there, as the API should
-      # reall reject it, however this is to test to see if the api changes.
+      # really reject it, however this is to test to see if the api changes.
     end
 
     ##
index c2ddb6031f6742274d49854530ef1fdd369a22d0..52df899ba0778e8f2b600ddf14d6272827aa66da 100644 (file)
@@ -70,7 +70,7 @@ module Api
       assert_response :success
     end
 
-    # Check an anoymous trace can't be specifically fetched by another user
+    # Check an anonymous trace can't be specifically fetched by another user
     def test_show_anon
       anon_trace_file = create(:trace, :visibility => "private")
 
index b25986d8476a81e4d03d1a69049952088fd59c43..6273caaf2938a01c969e78c1ee87985bae930934 100644 (file)
@@ -110,7 +110,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
     ActionMailer::Base.deliveries.clear
   end
 
-  def test_make_friend_unkown_user
+  def test_make_friend_unknown_user
     # Should error when a bogus user is specified
     session_for(create(:user))
     get make_friend_path(:display_name => "No Such User")
@@ -188,7 +188,7 @@ class FriendshipsControllerTest < ActionDispatch::IntegrationTest
     assert_nil Friendship.where(:befriender => user, :befriendee => friend).first
   end
 
-  def test_remove_friend_unkown_user
+  def test_remove_friend_unknown_user
     # Should error when a bogus user is specified
     session_for(create(:user))
     get remove_friend_path(:display_name => "No Such User")
index 39a72568fe2eeff7bf94a0f16c13b31d0ffbc699..1c3dc2d31def9fc85db02a1d437d5593ea1143b4 100644 (file)
@@ -133,7 +133,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
   # Check that the index of traces is displayed
   def test_index
     user = create(:user)
-    # The fourth test below is surpisingly sensitive to timestamp ordering when the timestamps are equal.
+    # The fourth test below is surprisingly sensitive to timestamp ordering when the timestamps are equal.
     trace_a = create(:trace, :visibility => "public", :timestamp => 4.seconds.ago) do |trace|
       create(:tracetag, :trace => trace, :tag => "London")
     end
@@ -255,7 +255,7 @@ class TracesControllerTest < ActionDispatch::IntegrationTest
   # Check the RSS feed
   def test_rss
     user = create(:user)
-    # The fourth test below is surpisingly sensitive to timestamp ordering when the timestamps are equal.
+    # The fourth test below is surprisingly sensitive to timestamp ordering when the timestamps are equal.
     trace_a = create(:trace, :visibility => "public", :timestamp => 4.seconds.ago) do |trace|
       create(:tracetag, :trace => trace, :tag => "London")
     end
index d90d5efa9787d6cf99cdf560d929faa3b02e3dcc..0eac9253db7db8bfab941a5d4144874d18098b9f 100644 (file)
@@ -12,6 +12,6 @@ class UTF8Test < ActiveSupport::TestCase
     assert_not UTF8.valid?("\xC2\xC2")     # 2-byte multibyte identifier, followed by another one
     assert_not UTF8.valid?("\x4a\x82")     # plain ASCII, followed by multibyte continuation
     assert_not UTF8.valid?("\x82\x82")     # multibyte continuations without multibyte identifier
-    assert_not UTF8.valid?("\xe1\x82\x4a") # three-byte identifier, contination and (incorrectly) plain ASCII
+    assert_not UTF8.valid?("\xe1\x82\x4a") # three-byte identifier, continuation and (incorrectly) plain ASCII
   end
 end
index 99a4710753a4ec4fef62eddc79c6d26d02b0bc80..d5391c6f8e2e6ad136154e5cbe02ca77482f67da 100644 (file)
@@ -51,7 +51,7 @@ class MessageTest < ActiveSupport::TestCase
                          "\xC2\xC2",     # 2-byte multibyte identifier, followed by another one
                          "\x4a\x82",     # plain ASCII, followed by multibyte continuation
                          "\x82\x82",     # multibyte continuations without multibyte identifier
-                         "\xe1\x82\x4a"] # three-byte identifier, contination and (incorrectly) plain ASCII
+                         "\xe1\x82\x4a"] # three-byte identifier, continuation and (incorrectly) plain ASCII
     invalid_sequences.each do |char|
       # create a message and save to the database
       msg = make_message(char, 1)
index 429e77a92f5997043fbb2fc87f4a0a8e8cf5d4f3..02d6d95c705a6d2ca798372bdc1dff3ab05e42a5 100644 (file)
@@ -37,7 +37,7 @@ class RelationTagTest < ActiveSupport::TestCase
     assert tag.errors[:relation].any?
   end
 
-  def test_uniquness
+  def test_uniqueness
     existing = create(:relation_tag)
     tag = RelationTag.new
     tag.relation_id = existing.relation_id
index 4c863272bf7d3cb92130b3b4c56486362c2f1a8f..c34b4b81fe310f092b02088ce8b321711ad45865 100644 (file)
@@ -76,7 +76,7 @@ class UserTest < ActiveSupport::TestCase
 
   def test_display_name_valid
     # Due to sanitisation in the view some of these that you might not
-    # expact are allowed
+    # expect are allowed
     # However, would they affect the xml planet dumps?
     ok = ["Name", "'me", "he\"", "<hr>", "*ho", "\"help\"@",
           "vergrößern", "ルシステムにも対応します", "輕觸搖晃的遊戲", "space space"]
index 4c84d44fcd68c6a7404a18fdf371350a49365448..55e8b1b26a4a81c5577629149be35d876dc0e287 100644 (file)
@@ -58,7 +58,7 @@ class IssuesTest < ApplicationSystemTestCase
 
     # User doesn't exist
     visit issues_path
-    fill_in "search_by_user", :with => "Nonexistant User"
+    fill_in "search_by_user", :with => "Nonexistent User"
     click_on "Search"
     assert page.has_content?(I18n.t("issues.index.user_not_found"))
     assert page.has_content?(I18n.t("issues.index.issues_not_found"))
index 505fa256876b2a9000965d59fda9923b67f6580d..6c8a798aac1d4106b6ac29dec0957c216d7323d6 100644 (file)
@@ -195,7 +195,7 @@ module ActiveSupport
 
     ##
     # Used to check that the error header and the forbidden responses are given
-    # when the owner of the changset has their data not marked as public
+    # when the owner of the changeset has their data not marked as public
     def assert_require_public_data(msg = "Shouldn't be able to use API when the user's data is not public")
       assert_response :forbidden, msg
       assert_equal("You must make your edits public to upload new data", @response.headers["Error"], "Wrong error message")
index a7ce79e460d40f733a0deb4cc404f222398a2a63..f92004bcba13130564957cddc9f0ad1ae70d4750 100644 (file)
--- a/yarn.lock
+++ b/yarn.lock
     chalk "^2.0.0"
     js-tokens "^4.0.0"
 
-"@eslint/eslintrc@^0.4.2":
-  version "0.4.2"
-  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179"
-  integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==
+"@eslint/eslintrc@^0.4.3":
+  version "0.4.3"
+  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
+  integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
   dependencies:
     ajv "^6.12.4"
     debug "^4.1.1"
@@ -284,12 +284,12 @@ eslint-visitor-keys@^2.0.0:
   integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
 
 eslint@^7.3.1:
-  version "7.30.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.30.0.tgz#6d34ab51aaa56112fd97166226c9a97f505474f8"
-  integrity sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==
+  version "7.31.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.31.0.tgz#f972b539424bf2604907a970860732c5d99d3aca"
+  integrity sha512-vafgJpSh2ia8tnTkNUkwxGmnumgckLh5aAbLa1xRmIn9+owi8qBNGKL+B881kNKNTy7FFqTEkpNkUvmw0n6PkA==
   dependencies:
     "@babel/code-frame" "7.12.11"
-    "@eslint/eslintrc" "^0.4.2"
+    "@eslint/eslintrc" "^0.4.3"
     "@humanwhocodes/config-array" "^0.5.0"
     ajv "^6.10.0"
     chalk "^4.0.0"
@@ -565,11 +565,6 @@ js-yaml@^3.13.1:
     argparse "^1.0.7"
     esprima "^4.0.0"
 
-jshashes@~1.0.8:
-  version "1.0.8"
-  resolved "https://registry.yarnpkg.com/jshashes/-/jshashes-1.0.8.tgz#f60d837428383abf73ab022e1542e6614bd75514"
-  integrity sha512-btmQZ/w1rj8Lb6nEwvhjM7nBYoj54yaEFo2PWh3RkxZ8qNwuvOxvQYN/JxVuwoMmdIluL+XwYVJ+pEEZoSYybQ==
-
 json-schema-traverse@^0.4.1:
   version "0.4.1"
   resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
@@ -640,13 +635,6 @@ object-inspect@^1.9.0:
   resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
   integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
 
-ohauth@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/ohauth/-/ohauth-1.0.1.tgz#a5d4ab8e5390bb1cad68a58cc9c58630173c02f2"
-  integrity sha512-R9ZUN3+FVCwzeOOHCJpzA9jw/byRxp5O9X06mTL6Sp/LIQn/rLrMv6cwYctX+hoIKzRUsalGJXZ1kG5wBmSskQ==
-  dependencies:
-    jshashes "~1.0.8"
-
 once@^1.3.0:
   version "1.4.0"
   resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"