From: Tom Hughes Date: Thu, 30 May 2024 15:20:54 +0000 (+0100) Subject: Merge remote-tracking branch 'upstream/pull/4847' X-Git-Tag: live~971 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/15e86708f1948d5b07a08bc2a30bf315bab9c07e?hp=15623aa35a9fe77343efd7e67f04d33599a8ce3b Merge remote-tracking branch 'upstream/pull/4847' --- diff --git a/Gemfile.lock b/Gemfile.lock index bf78a3d3d..4c7bba388 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,13 +95,13 @@ GEM autoprefixer-rails (10.4.16.0) execjs (~> 2) aws-eventstream (1.3.0) - aws-partitions (1.931.0) + aws-partitions (1.934.0) aws-sdk-core (3.196.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.8) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.81.0) + aws-sdk-kms (1.82.0) aws-sdk-core (~> 3, >= 3.193.0) aws-sigv4 (~> 1.1) aws-sdk-s3 (1.151.0) @@ -140,7 +140,7 @@ GEM builder (3.2.4) bzip2-ffi (1.1.1) ffi (~> 1.0) - cancancan (3.5.0) + cancancan (3.6.1) canonical-rails (0.2.15) actionview (>= 4.1, <= 7.2) capybara (3.40.0) @@ -153,7 +153,7 @@ GEM regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) concurrent-ruby (1.2.3) - config (5.4.0) + config (5.5.0) deep_merge (~> 1.2, >= 1.2.1) connection_pool (2.4.1) crack (1.0.0) @@ -198,7 +198,7 @@ GEM concurrent-ruby (~> 1.0) dry-core (~> 1.0, < 2) zeitwerk (~> 2.6) - dry-schema (1.13.3) + dry-schema (1.13.4) concurrent-ruby (~> 1.0) dry-configurable (~> 1.0, >= 1.0.1) dry-core (~> 1.0, < 2) @@ -330,7 +330,7 @@ GEM mini_portile2 (2.8.6) mini_racer (0.9.0) libv8-node (~> 18.19.0.0) - minitest (5.23.0) + minitest (5.23.1) minitest-focus (1.4.0) minitest (>= 4, < 6) msgpack (1.7.2) @@ -369,8 +369,9 @@ GEM hashie (>= 3.4.6) rack (>= 1.6.2, < 3) rack-protection - omniauth-facebook (9.0.0) - omniauth-oauth2 (~> 1.2) + omniauth-facebook (10.0.0) + bigdecimal + omniauth-oauth2 (>= 1.2, < 3) omniauth-github (2.0.1) omniauth (~> 2.0) omniauth-oauth2 (~> 1.8) @@ -474,7 +475,7 @@ GEM rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) - rdoc (6.6.3.1) + rdoc (6.7.0) psych (>= 4.0.0) regexp_parser (2.9.2) reline (0.5.7) @@ -488,7 +489,7 @@ GEM rouge (4.2.1) rtlcss (0.2.1) mini_racer (>= 0.6.3) - rubocop (1.63.5) + rubocop (1.64.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -541,8 +542,7 @@ GEM simplecov-html (0.12.3) simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) - simpleidn (0.2.2) - unf (~> 0.1.4) + simpleidn (0.2.3) smart_properties (1.17.0) snaky_hash (2.0.1) hashie @@ -574,9 +574,6 @@ GEM railties (>= 6.0.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.9.1) unicode-display_width (2.5.0) uri (0.13.0) validates_email_format_of (1.8.2) @@ -584,7 +581,7 @@ GEM simpleidn vendorer (0.2.0) version_gem (1.1.4) - webmock (3.23.0) + webmock (3.23.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -595,7 +592,7 @@ GEM websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.14) + zeitwerk (2.6.15) PLATFORMS ruby diff --git a/app/controllers/api/capabilities_controller.rb b/app/controllers/api/capabilities_controller.rb index 80222c40b..cbdcace0c 100644 --- a/app/controllers/api/capabilities_controller.rb +++ b/app/controllers/api/capabilities_controller.rb @@ -1,5 +1,7 @@ module Api class CapabilitiesController < ApiController + skip_before_action :check_api_readable + authorize_resource :class => false before_action :set_request_formats diff --git a/app/controllers/api/changeset_comments_controller.rb b/app/controllers/api/changeset_comments_controller.rb index e8d3f4c3a..4a96ec3bb 100644 --- a/app/controllers/api/changeset_comments_controller.rb +++ b/app/controllers/api/changeset_comments_controller.rb @@ -1,7 +1,6 @@ module Api class ChangesetCommentsController < ApiController before_action :check_api_writable - before_action :check_api_readable, :except => [:create] before_action :authorize authorize_resource diff --git a/app/controllers/api/changesets_controller.rb b/app/controllers/api/changesets_controller.rb index 2e21f0c75..3d59eeb17 100644 --- a/app/controllers/api/changesets_controller.rb +++ b/app/controllers/api/changesets_controller.rb @@ -3,7 +3,6 @@ module Api class ChangesetsController < ApiController before_action :check_api_writable, :only => [:create, :update, :upload, :subscribe, :unsubscribe] - before_action :check_api_readable, :except => [:index, :create, :update, :upload, :download, :subscribe, :unsubscribe] before_action :setup_user_auth, :only => [:show] before_action :authorize, :only => [:create, :update, :upload, :close, :subscribe, :unsubscribe] diff --git a/app/controllers/api/map_controller.rb b/app/controllers/api/map_controller.rb index 5a05f6de2..6d4a9feb6 100644 --- a/app/controllers/api/map_controller.rb +++ b/app/controllers/api/map_controller.rb @@ -1,7 +1,5 @@ module Api class MapController < ApiController - before_action :check_api_readable - authorize_resource :class => false around_action :api_call_handle_error, :api_call_timeout diff --git a/app/controllers/api/nodes_controller.rb b/app/controllers/api/nodes_controller.rb index dc7d04dc5..5aad78dbf 100644 --- a/app/controllers/api/nodes_controller.rb +++ b/app/controllers/api/nodes_controller.rb @@ -3,7 +3,6 @@ module Api class NodesController < ApiController before_action :check_api_writable, :only => [:create, :update, :delete] - before_action :check_api_readable, :except => [:create, :update, :delete] before_action :authorize, :only => [:create, :update, :delete] authorize_resource diff --git a/app/controllers/api/notes_controller.rb b/app/controllers/api/notes_controller.rb index 8a0a82c40..d53059a94 100644 --- a/app/controllers/api/notes_controller.rb +++ b/app/controllers/api/notes_controller.rb @@ -1,6 +1,5 @@ module Api class NotesController < ApiController - before_action :check_api_readable before_action :check_api_writable, :only => [:create, :comment, :close, :reopen, :destroy] before_action :setup_user_auth, :only => [:create, :show] before_action :authorize, :only => [:close, :reopen, :destroy, :comment] diff --git a/app/controllers/api/old_elements_controller.rb b/app/controllers/api/old_elements_controller.rb index 6a468a900..2343252db 100644 --- a/app/controllers/api/old_elements_controller.rb +++ b/app/controllers/api/old_elements_controller.rb @@ -3,7 +3,6 @@ # nodes, ways and relations are basically identical. module Api class OldElementsController < ApiController - before_action :check_api_readable before_action :check_api_writable, :only => [:redact] before_action :setup_user_auth, :only => [:history, :show] before_action :authorize, :only => [:redact] diff --git a/app/controllers/api/permissions_controller.rb b/app/controllers/api/permissions_controller.rb index 8c0c949dc..717bbfa6f 100644 --- a/app/controllers/api/permissions_controller.rb +++ b/app/controllers/api/permissions_controller.rb @@ -1,7 +1,5 @@ module Api class PermissionsController < ApiController - before_action :check_api_readable - authorize_resource :class => false before_action :setup_user_auth diff --git a/app/controllers/api/relations_controller.rb b/app/controllers/api/relations_controller.rb index e82ac6368..5fb99dbd1 100644 --- a/app/controllers/api/relations_controller.rb +++ b/app/controllers/api/relations_controller.rb @@ -1,7 +1,6 @@ module Api class RelationsController < ApiController before_action :check_api_writable, :only => [:create, :update, :delete] - before_action :check_api_readable, :except => [:create, :update, :delete] before_action :authorize, :only => [:create, :update, :delete] authorize_resource diff --git a/app/controllers/api/tracepoints_controller.rb b/app/controllers/api/tracepoints_controller.rb index f38351de9..d8d9da98b 100644 --- a/app/controllers/api/tracepoints_controller.rb +++ b/app/controllers/api/tracepoints_controller.rb @@ -1,7 +1,5 @@ module Api class TracepointsController < ApiController - before_action :check_api_readable - authorize_resource around_action :api_call_handle_error, :api_call_timeout diff --git a/app/controllers/api/traces_controller.rb b/app/controllers/api/traces_controller.rb index 956bcde6e..738642fff 100644 --- a/app/controllers/api/traces_controller.rb +++ b/app/controllers/api/traces_controller.rb @@ -1,14 +1,11 @@ module Api class TracesController < ApiController - before_action :check_database_readable, :except => [:show, :data] - before_action :check_database_writable, :only => [:create, :update, :destroy] + before_action :check_api_writable, :only => [:create, :update, :destroy] before_action :set_locale before_action :authorize authorize_resource - before_action :check_api_readable, :only => [:show, :data] - before_action :check_api_writable, :only => [:create, :update, :destroy] before_action :offline_error, :only => [:create, :destroy, :data] around_action :api_call_handle_error diff --git a/app/controllers/api/user_blocks_controller.rb b/app/controllers/api/user_blocks_controller.rb index 19fd4b400..6c285e14a 100644 --- a/app/controllers/api/user_blocks_controller.rb +++ b/app/controllers/api/user_blocks_controller.rb @@ -1,7 +1,5 @@ module Api class UserBlocksController < ApiController - before_action :check_api_readable - authorize_resource around_action :api_call_handle_error, :api_call_timeout diff --git a/app/controllers/api/user_preferences_controller.rb b/app/controllers/api/user_preferences_controller.rb index 99d224c51..cb852ce88 100644 --- a/app/controllers/api/user_preferences_controller.rb +++ b/app/controllers/api/user_preferences_controller.rb @@ -1,6 +1,7 @@ # Update and read user preferences, which are arbitrary key/val pairs module Api class UserPreferencesController < ApiController + before_action :check_api_writable, :only => [:update_all, :update, :destroy] before_action :authorize authorize_resource diff --git a/app/controllers/api/users_controller.rb b/app/controllers/api/users_controller.rb index 6fa47095a..5ff275ee9 100644 --- a/app/controllers/api/users_controller.rb +++ b/app/controllers/api/users_controller.rb @@ -1,6 +1,5 @@ module Api class UsersController < ApiController - before_action :check_api_readable before_action :disable_terms_redirect, :only => [:details] before_action :setup_user_auth, :only => [:show, :index] before_action :authorize, :only => [:details, :gpx_files] diff --git a/app/controllers/api/versions_controller.rb b/app/controllers/api/versions_controller.rb index d5c9c5f87..d311a18d2 100644 --- a/app/controllers/api/versions_controller.rb +++ b/app/controllers/api/versions_controller.rb @@ -1,5 +1,6 @@ module Api class VersionsController < ApiController + skip_before_action :check_api_readable authorize_resource :class => false before_action :set_request_formats diff --git a/app/controllers/api/ways_controller.rb b/app/controllers/api/ways_controller.rb index f8254d802..4099e1676 100644 --- a/app/controllers/api/ways_controller.rb +++ b/app/controllers/api/ways_controller.rb @@ -1,7 +1,6 @@ module Api class WaysController < ApiController before_action :check_api_writable, :only => [:create, :update, :delete] - before_action :check_api_readable, :except => [:create, :update, :delete] before_action :authorize, :only => [:create, :update, :delete] authorize_resource diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index edafac7cc..ff7f694c5 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -1,6 +1,8 @@ class ApiController < ApplicationController skip_before_action :verify_authenticity_token + before_action :check_api_readable + private ## diff --git a/app/controllers/site_controller.rb b/app/controllers/site_controller.rb index 8b742a585..15ffe58a2 100644 --- a/app/controllers/site_controller.rb +++ b/app/controllers/site_controller.rb @@ -19,6 +19,7 @@ class SiteController < ApplicationController content_security_policy(:only => :id) do |policy| policy.connect_src("*") policy.img_src(*policy.img_src, "*", :blob) + policy.script_src(*policy.script_src, :unsafe_eval) policy.style_src(*policy.style_src, :unsafe_inline) end diff --git a/app/models/trace.rb b/app/models/trace.rb index d1f917571..20723b98d 100644 --- a/app/models/trace.rb +++ b/app/models/trace.rb @@ -81,7 +81,7 @@ class Trace < ApplicationRecord :content_type => content_type(attachable.path), :identify => false) else - super(attachable) + super end end diff --git a/app/views/application/_auth_providers.html.erb b/app/views/application/_auth_providers.html.erb index 554ec8dda..0cbb529a5 100644 --- a/app/views/application/_auth_providers.html.erb +++ b/app/views/application/_auth_providers.html.erb @@ -1,29 +1,42 @@
-
+
+ <% prefered_auth_button_available = false %> <% %w[google facebook microsoft github wikipedia].each do |provider| %> <% if Settings.key?("#{provider}_auth_id".to_sym) -%> <% if @preferred_auth_provider == provider %> -
<%= auth_button_preferred provider, provider %>
+ <% prefered_auth_button_available = true %> <% end %> <% end -%> <% end -%> -
-
- <%= link_to image_tag("openid.png", - :alt => t("application.auth_providers.openid.title"), - :size => "24"), - "#", - :id => "openid_open_url", - :title => t("application.auth_providers.openid.title"), - :class => "p-2 d-block" %> + <% if prefered_auth_button_available %> +
+ <% %w[google facebook microsoft github wikipedia].each do |provider| %> + <% if Settings.key?("#{provider}_auth_id".to_sym) -%> + <% if @preferred_auth_provider == provider %> + <%= auth_button_preferred provider, provider %> + <% end %> + <% end -%> + <% end -%>
+
+ <% else %> +
+ <% end %> + + <%= link_to image_tag("openid.png", + :alt => t("application.auth_providers.openid.title"), + :size => "24"), + "#", + :id => "openid_open_url", + :title => t("application.auth_providers.openid.title"), + :class => "p-2 d-block" %> <% %w[google facebook microsoft github wikipedia].each do |provider| %> <% unless @preferred_auth_provider == provider %> <% if Settings.key?("#{provider}_auth_id".to_sym) -%> -
<%= auth_button provider, provider %>
+ <%= auth_button provider, provider %> <% end -%> <% end %> <% end -%> diff --git a/app/views/sessions/new.html.erb b/app/views/sessions/new.html.erb index acbf8dab0..c02b2d376 100644 --- a/app/views/sessions/new.html.erb +++ b/app/views/sessions/new.html.erb @@ -39,13 +39,13 @@
- <%= f.label :password, :class => "form-label" %> + <%= f.label :password, t(".password"), :class => "form-label" %>
<%= link_to(t(".lost password link"), user_forgot_password_path) %>
- + <%= f.form_group do %> <%= f.check_box :remember_me, { :label => t(".remember"), :tabindex => 3, :checked => (params[:remember_me] == "yes") }, "yes" %> diff --git a/config/initializers/abstract_adapter.rb b/config/initializers/abstract_adapter.rb index 2bc4f5e59..9d59656c7 100644 --- a/config/initializers/abstract_adapter.rb +++ b/config/initializers/abstract_adapter.rb @@ -6,7 +6,7 @@ if defined?(ActiveRecord::ConnectionAdaptors::AbstractAdapter) if e.is_a?(Timeout::Error) || e.is_a?(OSM::APITimeoutError) e else - super(e, sql) + super end end end diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb index 5ce53e863..9ddaf70f9 100644 --- a/config/initializers/content_security_policy.rb +++ b/config/initializers/content_security_policy.rb @@ -6,7 +6,7 @@ Rails.application.configure do connect_src = [:self] - img_src = [:self, :data, "www.gravatar.com", "*.wp.com", "tile.openstreetmap.org", "*.tile.thunderforest.com", "tile.tracestrack.com", "*.openstreetmap.fr"] + img_src = [:self, :data, "www.gravatar.com", "*.wp.com", "tile.openstreetmap.org", "gps.tile.openstreetmap.org", "*.tile.thunderforest.com", "tile.tracestrack.com", "*.openstreetmap.fr"] script_src = [:self] connect_src << Settings.matomo["location"] if defined?(Settings.matomo) diff --git a/config/initializers/cors.rb b/config/initializers/cors.rb index fdbf11a2c..e7b813b73 100644 --- a/config/initializers/cors.rb +++ b/config/initializers/cors.rb @@ -6,7 +6,7 @@ module OpenStreetMap class Cors < Rack::Cors def call(env) - status, headers, body = super(env) + status, headers, body = super headers["Cache-Control"] = "no-cache" if headers["Access-Control-Allow-Origin"] [status, headers, body] end diff --git a/config/initializers/i18n.rb b/config/initializers/i18n.rb index 266e41cbb..8f74c3cd3 100644 --- a/config/initializers/i18n.rb +++ b/config/initializers/i18n.rb @@ -18,7 +18,7 @@ module OpenStreetMap def store_translations(locale, data, options = {}) locale = ::I18n::Locale::Tag::Rfc4646.tag(locale).to_s - super(locale, data, options) + super end end diff --git a/config/initializers/mail_delivery_job.rb b/config/initializers/mail_delivery_job.rb index 4bab2000b..30b23d2dd 100644 --- a/config/initializers/mail_delivery_job.rb +++ b/config/initializers/mail_delivery_job.rb @@ -4,7 +4,7 @@ module OpenStreetMap def perform(mailer, mail_method, delivery_method, *args, **kwargs) kwargs = args.pop if kwargs.empty? && args.last.is_a?(Hash) - super(mailer, mail_method, delivery_method, *args, **kwargs) + super end end end diff --git a/config/initializers/oauth.rb b/config/initializers/oauth.rb index fbe4ad219..812e6610d 100644 --- a/config/initializers/oauth.rb +++ b/config/initializers/oauth.rb @@ -45,7 +45,7 @@ module OpenStreetMap status = options.delete(:status) || :ok head status, options else - super(options) + super end end @@ -61,7 +61,7 @@ module OpenStreetMap end end - super(controller) + super end end end diff --git a/config/initializers/router.rb b/config/initializers/router.rb index 4357a87f2..849aba2ad 100644 --- a/config/initializers/router.rb +++ b/config/initializers/router.rb @@ -5,7 +5,7 @@ module OpenStreetMap module Router module ForceEncoding def normalize_path(path) - super(path).force_encoding("UTF-8") + super.force_encoding("UTF-8") end end end diff --git a/config/initializers/rtlcss.rb b/config/initializers/rtlcss.rb index 11e4e0d5c..793c484fc 100644 --- a/config/initializers/rtlcss.rb +++ b/config/initializers/rtlcss.rb @@ -2,7 +2,7 @@ require "rtlcss" class RtlcssSCSSProcessor < SassC::Rails::ScssTemplate def self.call(input) - output = super(input) + output = super data = Rtlcss.flip_css(output[:data]) output.delete(:map) output.merge(:data => data) diff --git a/config/locales/bn.yml b/config/locales/bn.yml index a9f60ec4e..0c1cf6f6f 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -19,6 +19,7 @@ # Author: R4356th # Author: R4bb1 # Author: Rasal Lia +# Author: RiazACU # Author: Sayma Jahan # Author: Tahmid # Author: Tauhid16 diff --git a/config/locales/br.yml b/config/locales/br.yml index b3202260d..d91b60e3b 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -2198,7 +2198,7 @@ br: close: Serriñ search: search: Klask - get_directions: Kaout an tuioù + get_directions: Kaout an durc'hadurioù get_directions_title: Kavit an hentoù etre an daou boent from: Eus to: Da @@ -3097,7 +3097,7 @@ br: fossgis_valhalla_car: Karr (Valhalla) fossgis_valhalla_foot: War droad (Valhalla) descend: Diskenn - directions: Tuioù + directions: Durc'hadurioù distance: Hed distance_m: '%{distance}m' distance_km: '%{distance}km' diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 44aaeceb8..1bb90b062 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -38,6 +38,7 @@ # Author: GeorgeKaplan # Author: Gileri # Author: Gomoko +# Author: Graineahumus # Author: Gravitystorm # Author: Guilhelma # Author: Hashar @@ -75,6 +76,7 @@ # Author: Orikrin1998 # Author: Otourly # Author: Oupsa +# Author: Overflorian # Author: Peter17 # Author: Phoenamandre # Author: Pipo @@ -457,6 +459,7 @@ fr: view_unredacted_history: Voir l'historique non censuré view_details: Afficher les détails view_redacted_data: Afficher les données censurées + view_redaction_message: Afficher le message de rédaction location: 'Emplacement :' common_details: coordinates_html: '%{latitude} ; %{longitude}' @@ -583,6 +586,7 @@ fr: closed: Fermé belongs_to: Auteur subscribe: + heading: S'abonner à la discussion sur l'ensemble de modifications suivante ? button: S'abonner à la discussion unsubscribe: heading: Se désabonner de la discussion du groupe de modifications suivant ? @@ -591,6 +595,7 @@ fr: title: Groupe de modifications %{id} created_by_html: Créé par %{link_user} le %{created}. no_such_entry: + title: Aucun ensemble de modifications de ce type heading: 'Aucune entrée avec l’identifiant : %{id}' body: Désolé, il n’y a aucun groupe de modifications avec l'identifiant %{id}. Veuillez vérifier l'orthographe ou la validité du lien sur lequel vous avez @@ -740,8 +745,10 @@ fr: newer_comments: Commentaires plus récents older_comments: Commentaires plus anciens subscribe: + heading: S'abonner à la discussion suivante sur les entrées de journal ? button: S'abonner à la discussion unsubscribe: + heading: Se désinscrire de la discussion suivante sur les entrées du journal ? button: Se désinscrire de la discussion doorkeeper: errors: @@ -785,6 +792,10 @@ fr: contact_the_community_html: N’hésitez pas à %{contact_link} la communauté OpenStreetMap si vous avez trouvé un lien cassé ou une anomalie. Notez l’URL exacte de votre demande. + bad_request: + title: Mauvaise requête + description: L'opération que vous avez demandée sur le serveur OpenStreetMap + n'est pas valide (HTTP 400) forbidden: title: Interdit description: L’opération que vous avez demandée sur le serveur OpenStreetMap @@ -1725,6 +1736,7 @@ fr: hosting_partners_2024_html: L’hébergement est pris en charge par %{fastly}, %{corpmembers}, et d’autres %{partners}. partners_fastly: Fastly + partners_corpmembers: Membres d'entreprise de l'OSMF partners_partners: partenaires tou: Conditions d’utilisation osm_offline: La base de données OpenStreetMap est actuellement hors ligne ; une @@ -1860,8 +1872,8 @@ fr: La note se trouve près de %{place}.' commented_note_html: '%{commenter} a réactivé une note de carte que vous avez commentée. La note est près de %{place}.' - details: Plus de détails concernant la note se trouvent à %{url}. - details_html: Plus de détails concernant la note se trouvent à %{url}. + details: Répondez ou apprenez-en plus sur la note sur %{url}. + details_html: Répondez ou en savoir plus sur la note sur %{url}. changeset_comment_notification: description: 'Groupe de modifications OpenStreetMap #%{id}' hi: Bonjour %{to_user}, @@ -1882,9 +1894,8 @@ fr: partial_changeset_with_comment: avec le commentaire « %{changeset_comment} » partial_changeset_with_comment_html: avec le commentaire « %{changeset_comment} » partial_changeset_without_comment: sans commentaire - details: Plus de détails sur l’ensemble de modifications à %{url}. - details_html: Vous pouvez trouver plus de détails sur l’ensemble de modifications - sur %{url}. + details: Répondez ou en savoir plus sur l'ensemble de changements sur %{url}. + details_html: Répondre ou en savoir plus sur l'ensemble de changements sur %{url}. unsubscribe: Vous pouvez vous désabonner des mises à jour de cet ensemble de modifications depuis %{url}. unsubscribe_html: Vous pouvez vous désabonner des mises à jour de cet ensemble @@ -1983,9 +1994,9 @@ fr: unread_button: Marque comme non lu destroy_button: Supprimer back: Retour - wrong_user: Vous êtes identifié comme « %{user} » mais le message que vous essayez - de lire n’a pas été envoyé par cet utilisateur, ni ne lui a été destiné. Veuillez - vous connecter avec l’identifiant correct pour pouvoir le lire. + wrong_user: Vous êtes identifié comme « %{user} » mais le message que vous avez + demandé de lire n’a pas été envoyé par cet utilisateur, ni ne lui a été destiné. + Veuillez vous connecter avec le bon identifiant pour pouvoir le lire. sent_message_summary: destroy_button: Supprimer heading: @@ -2067,6 +2078,7 @@ fr: new: title: Se connecter tab_title: Se connecter + login_to_authorize_html: Connectez-vous à OpenStreetMap pour accéder à %{client_app_name}. email or username: 'Adresse de courriel ou nom d’utilisateur :' password: 'Mot de passe :' remember: Se souvenir de moi @@ -2266,7 +2278,12 @@ fr: générale des finances publiques (anciennement la Direction générale des impôts).' contributors_fr_france: France + contributors_hr_credit_html: |- + %{croatia} : contient des données de %{dgu_link} et %{open_data_portal} + (informations publiques de Croatie). contributors_hr_croatia: Croatie + contributors_hr_dgu: Administration géodésique de l'État de Croatie + contributors_hr_open_data_portal: Portail national des données ouvertes contributors_nl_credit_html: '%{netherlands} : contient des données © AND, 2007 (%{and_link})' contributors_nl_netherlands: Pays-Bas @@ -2719,6 +2736,8 @@ fr: identifiable: IDENTIFIABLE private: PRIVÉE trackable: PISTABLE + details_with_tags_html: '%{time_ago} par %{user} dans %{tags}' + details_without_tags_html: '%{time_ago} par %{user}' index: public_traces: Traces GPS publiques my_gps_traces: Mes traces GPS @@ -2781,13 +2800,13 @@ fr: title: Connexion avec OpenID alt: Se connecter avec une URL OpenID google: - title: Connexion avec Google + title: Se connecter avec Google alt: Se connecter avec un OpenID de Google facebook: title: Connexion avec Facebook alt: Se connecter avec un compte de Facebook microsoft: - title: Connexion avec Microsoft + title: Se connecter avec Microsoft alt: Se connecter avec un compte Microsoft github: title: Connexion avec GitHub @@ -2799,7 +2818,7 @@ fr: title: Connexion avec Wordpress alt: Se connecter avec un OpenID de Wordpress aol: - title: Connexion avec AOL + title: Se connecter avec AOL alt: Se connecter avec un OpenID d’AOL oauth: authorize: @@ -2844,6 +2863,9 @@ fr: write_redactions: Caviarder les données cartographiques read_email: Lire l’adresse courriel de l’utilisateur skip_authorization: Demande d’approbation automatique + for_roles: + moderator: Cette autorisation concerne les actions disponibles uniquement pour + les modérateurs oauth_clients: new: title: Inscrire une nouvelle application @@ -2954,9 +2976,15 @@ fr: la réparer, la mettre à jour, la télécharger et l’utiliser. paragraph_2: Inscrivez-vous pour commencer à contribuer. Nous vous enverrons un courriel pour confirmer votre compte. + duplicate_social_email: Si vous possédez déjà un compte OpenStreetMap et souhaitez + utiliser un fournisseur d'identité tiers, veuillez vous connecter en utilisant + votre mot de passe et modifier les paramètres de votre compte. display name description: Votre nom d’utilisateur affiché publiquement. Vous pouvez changer ceci ultérieurement dans les préférences. + by_signing_up_html: En vous inscrivant, vous acceptez nos %{tou_link}, %{privacy_policy_link} + et %{contributor_terms_link}. tou: conditions d'utilisation + contributor_terms: Conditions de contribution external auth: 'Authentification tierce :' continue: S’inscrire terms accepted: Merci d’avoir accepté les nouveaux termes du contributeur ! @@ -2965,10 +2993,10 @@ fr: privacy_policy: politique de confidentialité privacy_policy_title: Politique de confidentialité de l’OSMF, qui comprend une section sur les adresses de courriel + consider_pd_html: Je considère que mes contributions se situent dans le %{consider_pd_link}. consider_pd: domaine public or: ou - use external auth: Vous pouvez également utiliser un service tiers pour vous - connecter. + use external auth: ou vous pouvez vous connecter avec un service tiers. terms: title: Conditions heading: Conditions @@ -3079,6 +3107,9 @@ fr: heading: Utilisateurs older: Utilisateurs plus anciens newer: Utilisateurs plus récents + found_users: + one: '%{count} utilisateur trouvé' + other: '%{count} utilisateurs trouvés' summary_html: '%{name} créé depuis %{ip_address} le %{date}' summary_no_ip_html: '%{name} créé le %{date}' confirm: Confirmer les utilisateurs sélectionnés @@ -3103,9 +3134,9 @@ fr: heading: Votre identifiant n’est pas encore associé à un compte OpenStreetMap. option_1: Si vous êtes nouveau sur OpenStreetMap, veuillez créer un nouveau compte à l’aide du formulaire ci-dessous. - option_2: Si vous avez déjà un compte, vous pouvez vous connecter avec en utilisant - votre nom d’utilisateur et votre mot de passe, puis associer le compte avec - votre ID dans vos préférences utilisateur. + option_2: Si vous avez déjà un compte, vous pouvez vous y connecter avec en + utilisant votre nom d’utilisateur et votre mot de passe, puis associer le + compte avec votre ID dans vos préférences utilisateur. user_role: filter: not_a_role: La chaîne « %{role} » n’est pas un rôle valide. @@ -3236,6 +3267,8 @@ fr: reason: Motif du blocage status: État revoker_name: Révoqué par + older: Blocs plus anciens + newer: Blocs plus récents navigation: all_blocks: Tous les blocages blocks_on_me: Blocages me concernant diff --git a/config/locales/pa.yml b/config/locales/pa.yml index 7f9b61067..07edc2883 100644 --- a/config/locales/pa.yml +++ b/config/locales/pa.yml @@ -197,7 +197,7 @@ pa: relation: ਸਬੰਧ start_rjs: load_data: ਡਾਟਾ ਲੋਡ ਕਰੋ - loading: ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ… + loading: ਲੱਦ ਰਿਹਾ ਹੈ... tag_details: tags: ਟੈਗ wikipedia_link: '%{page} ਲੇਖ ਵਿਕਿਪੀਡਿਆ ਉੱਤੇ' @@ -731,7 +731,7 @@ pa: sign_up: ਭਰਤੀ ਹੋਵੋ start_mapping: ਨਕਸ਼ਾਬੰਦੀ ਸ਼ੁਰੂ ਕਰੋ edit: ਸੋਧੋ - history: ਅਤੀਤ + history: ਪੁਰਾਣਾ export: ਬਰਾਮਦ data: ਸਮੱਗਰੀ export_data: ਸਮੱਗਰੀ ਬਰਾਮਦ ਕਰੋ diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 1dc5c537a..638a310b0 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -710,6 +710,10 @@ pt-PT: contact_the_community_html: Fique à vontade para %{contact_link} a comunidade OpenStreetMap caso tenha encontrado uma ligação inativa ou um erro. Deixe uma nota da URL exata da sua solicitação. + bad_request: + title: Pedido inválido + description: A operação solicitada no servidor OpenStreetMap não é válida (HTTP + 400) forbidden: title: Proibido description: A operação solicitada no servidor do OpenStreetMap só está disponível @@ -1778,8 +1782,8 @@ pt-PT: perto de %{place}.' commented_note_html: '%{commenter} reabriu uma nota comentada por ti. A nota fica perto de %{place}.' - details: Podes ver mais detalhes sobre a nota em %{url}. - details_html: Podes ver mais detalhes sobre a nota em %{url}. + details: Responde ou descobre mais sobre a nota em %{url}. + details_html: Responde ou descobre mais sobre a nota em %{url}. changeset_comment_notification: description: Conjunto de alterações n.º %{id} hi: Olá, %{to_user}. @@ -1800,10 +1804,8 @@ pt-PT: partial_changeset_with_comment: com o comentário '%{changeset_comment}' partial_changeset_with_comment_html: com o comentário '%{changeset_comment}' partial_changeset_without_comment: sem comentários - details: Podes encontrar mais informações sobre o conjunto de alterações em - %{url}. - details_html: Podes encontrar mais informações sobre o conjunto de alterações - em %{url}. + details: Responde ou descobre mais sobre o conjunto de alterações em %{url}. + details_html: Responde ou descobre mais sobre o conjunto de alterações em %{url}. unsubscribe: Podes deixar de acompanhar as atualizações deste conjunto de alterações em %{url}. unsubscribe_html: Podes deixar de acompanhar as atualizações deste conjunto @@ -1980,13 +1982,15 @@ pt-PT: new: title: Entrar tab_title: Iniciar sessão + login_to_authorize_html: Inicia sessão no OpenStreetMap para acederes a %{client_app_name}. email or username: 'E-mail ou Nome de utilizador:' password: Palavra-passe remember: Ficar autenticado entre sessões lost password link: Perdeste a tua palavra-passe? login_button: Iniciar sessão register now: Regista-te agora - with external: 'Em alternativa, usa um serviço externo para iniciares sessão:' + with external: ou inicia sessão com uma aplicação de terceiros + or: ou auth failure: Lamentamos, mas não foi possível iniciar sessão com os dados fornecidos. destroy: title: Sair @@ -2157,6 +2161,12 @@ pt-PT: contributors_fr_credit_html: '%{france}: contém dados provenientes da Direção Geral de Impostos.' contributors_fr_france: França + contributors_hr_credit_html: |- + %{croatia}: Contém dados de %{dgu_link} e %{open_data_portal} + (informação pública da Croácia). + contributors_hr_croatia: Croácia + contributors_hr_dgu: Administração Geodésica Estatal da Croácia + contributors_hr_open_data_portal: Portal Nacional de Dados Abertos contributors_nl_credit_html: '%{netherlands}: Contém © e dados, 2007 (%{and_link})' contributors_nl_netherlands: Países Baixos @@ -2617,6 +2627,9 @@ pt-PT: other: Ficheiro GPX com %{count} pontos de %{user} description_without_count: Ficheiro GPX de %{user} application: + basic_auth_disabled: 'A Autenticação Básica HTTP está desativada: %{link}' + oauth_10a_disabled: 'OAuth 1.0 e 1.0a estão desativados: %{link}' + auth_disabled_link: https://wiki.openstreetmap.org/wiki/2024_authentication_update permission_denied: Não tens permissões para realizar essa operação require_cookies: cookies_needed: Parece que tens os "cookies" desativados - por favor, ativa-os @@ -2639,6 +2652,7 @@ pt-PT: muted_users: Utilizadores Silenciados auth_providers: openid_logo_alt: Iniciar sessão com um OpenID + openid_login_button: Continuar openid: title: Iniciar sessão com OpenID alt: Iniciar sessão com um URL do OpenID @@ -2703,6 +2717,8 @@ pt-PT: write_redactions: Rever dados do mapa read_email: ‎Ler e-mail de utilizador skip_authorization: Aprovar a aplicação automaticamente + for_roles: + moderator: Esta permissão é para ações disponíveis apenas para moderadores oauth_clients: new: title: Registar uma nova aplicação @@ -2798,20 +2814,29 @@ pt-PT: users: new: title: Criar conta + tab_title: Registar + signup_to_authorize_html: Inicia sessão no OpenStreetMap para acederes a %{client_app_name}. no_auto_account_create: Infelizmente, e de momento, não é possível criar uma conta automaticamente. please_contact_support_html: Por favor, contacta %{support_link} para pedir a criação de uma conta - tentaremos tratar do pedido o mais rapidamente possível. support: apoio about: - header: Livre e editável + header: Gratuito e editável. paragraph_1: Ao contrário de outros mapas, o OpenStreetMap é completamente criado por pessoas como tu, e qualquer pessoa o pode corrigir, transferir e usar de forma gratuita. - paragraph_2: Regista-te para começares a contribuir. Iremos enviar um e-mail - para confirmar a tua conta. + paragraph_2: Regista-te para começares a contribuir. + welcome: Bem-vind@ ao OpenStreetMap + duplicate_social_email: Se já tens uma conta OpenStreetMap e desejas utilizar + um provedor de identidade externo, inicia sessão com a tua palavra-passe e + modifica as definições da tua conta. display name description: O nome de utilizador ficará visível publicamente. Poderás alterar o nome posteriormente nas configurações do teu perfil. + by_signing_up_html: Ao registares-te, aceitas os nossos %{tou_link}, %{privacy_policy_link} + e %{contributor_terms_link}. + tou: Termos de Utilização + contributor_terms: Termos de Contribuidor external auth: 'Autenticação por terceiros:' continue: Criar conta terms accepted: Obrigado por aceitares os novos termos de contribuidor! @@ -2820,7 +2845,10 @@ pt-PT: privacy_policy: política de privacidade privacy_policy_title: Política de privacidade da OSMF incluindo secção sobre endereços de correio eletrónico - use external auth: Em alternativa, usa um serviço externo para iniciares sessão + consider_pd_html: Considero que as minhas contribuições estão no %{consider_pd_link}. + consider_pd: domínio público + or: ou + use external auth: ou regista-te com um serviço externo terms: title: Termos heading: Termos @@ -3091,6 +3119,13 @@ pt-PT: revoker_name: Revogado por older: Blocos mais antigos newer: Blocos mais recentes + navigation: + all_blocks: Todos os bloqueios + blocks_on_me: Quem me bloqueou + blocks_on_user: Bloqueios a %{user} + blocks_by_me: Os meus bloqueios + blocks_by_user: Bloqueios de %{user} + block: 'Bloqueio #%{id}' user_mutes: index: title: Utilizadores Silenciados @@ -3166,6 +3201,10 @@ pt-PT: o mais pormenorizada possível sobre o que pretendes ver alterado no mapa, para que outros mapeadores te possam ajudar. Posiciona o marcador no local correto e escreve uma nota que explique o problema. + anonymous_warning_html: Não tens sessão iniciada. Por favor, %{log_in} ou %{sign_up} + se quiseres receber atualizações sobre a tua nota. + anonymous_warning_log_in: inicia sessão + anonymous_warning_sign_up: regista-te advice: 'Lembra-te: a tua nota é pública e poderá ser usada para atualizar o mapa, portanto, não introduzas informações pessoais, dados de mapas ou catálogos protegidos por direitos de autor.' diff --git a/lib/osm.rb b/lib/osm.rb index 65eab6907..a0fcef8b9 100644 --- a/lib/osm.rb +++ b/lib/osm.rb @@ -8,7 +8,7 @@ module OSM # The base class for API Errors. class APIError < RuntimeError def initialize(message = "Generic API Error") - super(message) + super end def status diff --git a/test/controllers/api/capabilities_controller_test.rb b/test/controllers/api/capabilities_controller_test.rb index 46ebb6a37..7d2feed29 100644 --- a/test/controllers/api/capabilities_controller_test.rb +++ b/test/controllers/api/capabilities_controller_test.rb @@ -71,5 +71,75 @@ module Api assert_equal "online", js["api"]["status"]["gpx"] assert_equal Settings.imagery_blacklist.length, js["policy"]["imagery"]["blacklist"].length end + + def test_capabilities_api_readonly + with_settings(:status => "api_readonly") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='online']", :count => 1 + assert_select "status[api='readonly']", :count => 1 + assert_select "status[gpx='online']", :count => 1 + end + end + end + end + + def test_capabilities_api_offline + with_settings(:status => "api_offline") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='online']", :count => 1 + assert_select "status[api='offline']", :count => 1 + assert_select "status[gpx='online']", :count => 1 + end + end + end + end + + def test_capabilities_database_readonly + with_settings(:status => "database_readonly") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='readonly']", :count => 1 + assert_select "status[api='readonly']", :count => 1 + assert_select "status[gpx='readonly']", :count => 1 + end + end + end + end + + def test_capabilities_database_offline + with_settings(:status => "database_offline") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='offline']", :count => 1 + assert_select "status[api='offline']", :count => 1 + assert_select "status[gpx='offline']", :count => 1 + end + end + end + end + + def test_capabilities_gpx_offline + with_settings(:status => "gpx_offline") do + get api_capabilities_path + assert_response :success + assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "status[database='online']", :count => 1 + assert_select "status[api='online']", :count => 1 + assert_select "status[gpx='offline']", :count => 1 + end + end + end + end end end diff --git a/test/controllers/api/versions_controller_test.rb b/test/controllers/api/versions_controller_test.rb index 1c70831c9..d2b353a8e 100644 --- a/test/controllers/api/versions_controller_test.rb +++ b/test/controllers/api/versions_controller_test.rb @@ -46,5 +46,17 @@ module Api assert_response :success assert_select "osm[version]", :count => 0 end + + def test_versions_available_while_offline + with_settings(:status => "api_offline") do + get api_versions_path + assert_response :success + assert_select "osm[generator='#{Settings.generator}']", :count => 1 do + assert_select "api", :count => 1 do + assert_select "version", Settings.api_version + end + end + end + end end end diff --git a/yarn.lock b/yarn.lock index 230c1c716..dec04559d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -576,9 +576,9 @@ optionator@^0.9.3: type-check "^0.4.0" osm-community-index@^5.2.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.7.0.tgz#1c1a785fd13a2e00535da8db132c4e49780f0b28" - integrity sha512-r5h58L9mGh2Wu4XcJoGKLdw3oBY41jWAMUVBNE9tBS9sZINwSZccrImhxuOS5DmpslTjZ6w1cn7x9sE8tnFGpQ== + version "5.7.1" + resolved "https://registry.yarnpkg.com/osm-community-index/-/osm-community-index-5.7.1.tgz#2341666c83d14c00ef3d9a90298c96d5e791b56c" + integrity sha512-E+Xib5m//WliNq2iqeUXyKqZk7yhZu/vSJbwwyxDAPzcNWxgIMoO0B7cUMeFNckhMQsKM2UuC2BAjWuVfbYf1Q== dependencies: diacritics "^1.3.0"