]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/3410'
authorTom Hughes <tom@compton.nu>
Thu, 6 Jan 2022 13:25:42 +0000 (13:25 +0000)
committerTom Hughes <tom@compton.nu>
Thu, 6 Jan 2022 13:25:42 +0000 (13:25 +0000)
app/abilities/ability.rb
app/controllers/geocoder_controller.rb
config/locales/nqo.yml
config/locales/pt-PT.yml
test/system/user_suspension_test.rb [new file with mode: 0644]

index a45bf9a574ec84623d52c9d54ad19eda0c85a048..b8e21b4867e430d13d1955b2296e78696c249eb3 100644 (file)
@@ -23,7 +23,7 @@ class Ability
       can [:index, :show], Redaction
       can [:new, :create, :destroy], :session
       can [:index, :show, :data, :georss, :picture, :icon], Trace
-      can [:terms, :new, :create, :save,  :show, :auth_success, :auth_failure], User
+      can [:terms, :new, :create, :save, :suspended, :show, :auth_success, :auth_failure], User
       can [:index, :show, :blocks_on, :blocks_by], UserBlock
       can [:index, :show], Node
       can [:index, :show, :full, :ways_for_node], Way
index bc1220af8faa767a16a3f464b9792f5f24052b24..8d651fe0f1345b27cbaeff18044e19164d99a992 100644 (file)
@@ -296,17 +296,17 @@ class GeocoderController < ApplicationController
       elsif latlon = query.match(/^(\d{1,3}(\.\d*)?)\s*([NS])\W*(\d{1,3}(\.\d*)?)\s*([EW])$/).try(:captures) # decimal degrees [NSEW]
         params.merge!(nsew_to_decdeg(latlon)).delete(:query)
 
-      elsif latlon = query.match(/^([NS])\s*(\d{1,3})°?\s*(\d{1,3}(\.\d*)?)?['′]?\W*([EW])\s*(\d{1,3})°?\s*(\d{1,3}(\.\d*)?)?['′]?$/).try(:captures) # [NSEW] degrees, decimal minutes
+      elsif latlon = query.match(/^([NS])\s*(\d{1,3})°?(?:\s*(\d{1,3}(\.\d*)?)?['′]?)?\W*([EW])\s*(\d{1,3})°?(?:\s*(\d{1,3}(\.\d*)?)?['′]?)?$/).try(:captures) # [NSEW] degrees, decimal minutes
         params.merge!(ddm_to_decdeg(latlon)).delete(:query)
-      elsif latlon = query.match(/^(\d{1,3})°?\s*(\d{1,3}(\.\d*)?)?['′]?\s*([NS])\W*(\d{1,3})°?\s*(\d{1,3}(\.\d*)?)?['′]?\s*([EW])$/).try(:captures) # degrees, decimal minutes [NSEW]
+      elsif latlon = query.match(/^(\d{1,3})°?(?:\s*(\d{1,3}(\.\d*)?)?['′]?)?\s*([NS])\W*(\d{1,3})°?(?:\s*(\d{1,3}(\.\d*)?)?['′]?)?\s*([EW])$/).try(:captures) # degrees, decimal minutes [NSEW]
         params.merge!(ddm_to_decdeg(latlon)).delete(:query)
 
-      elsif latlon = query.match(/^([NS])\s*(\d{1,3})°?\s*(\d{1,2})['′]?\s*(\d{1,3}(\.\d*)?)?["″]?\W*([EW])\s*(\d{1,3})°?\s*(\d{1,2})['′]?\s*(\d{1,3}(\.\d*)?)?["″]?$/).try(:captures) # [NSEW] degrees, minutes, decimal seconds
+      elsif latlon = query.match(/^([NS])\s*(\d{1,3})°?\s*(\d{1,2})['′]?(?:\s*(\d{1,3}(\.\d*)?)?["″]?)?\W*([EW])\s*(\d{1,3})°?\s*(\d{1,2})['′]?(?:\s*(\d{1,3}(\.\d*)?)?["″]?)?$/).try(:captures) # [NSEW] degrees, minutes, decimal seconds
         params.merge!(dms_to_decdeg(latlon)).delete(:query)
-      elsif latlon = query.match(/^(\d{1,3})°?\s*(\d{1,2})['′]?\s*(\d{1,3}(\.\d*)?)?["″]\s*([NS])\W*(\d{1,3})°?\s*(\d{1,2})['′]?\s*(\d{1,3}(\.\d*)?)?["″]?\s*([EW])$/).try(:captures) # degrees, minutes, decimal seconds [NSEW]
+      elsif latlon = query.match(/^(\d{1,3})°?\s*(\d{1,2})['′]?(?:\s*(\d{1,3}(\.\d*)?)?["″]?)?\s*([NS])\W*(\d{1,3})°?\s*(\d{1,2})['′]?(?:\s*(\d{1,3}(\.\d*)?)?["″]?)?\s*([EW])$/).try(:captures) # degrees, minutes, decimal seconds [NSEW]
         params.merge!(dms_to_decdeg(latlon)).delete(:query)
 
-      elsif latlon = query.match(/^\s*([+-]?\d+(\.\d*)?)\s*[\s,]\s*([+-]?\d+(\.\d*)?)\s*$/)
+      elsif latlon = query.match(/^([+-]?\d+(\.\d*)?)(?:\s+|\s*,\s*)([+-]?\d+(\.\d*)?)$/)
         params.merge!(:lat => latlon[1].to_f, :lon => latlon[3].to_f).delete(:query)
 
         params[:latlon_digits] = true unless params[:whereami]
index 37508735354703812d5cdc53eaa70fb22229f162..c7995cbcf274dbf294452a7154e684d6f5e80459 100644 (file)
@@ -566,6 +566,7 @@ nqo:
           water_point: ߖߌ߫ ߡߊ߫ ߦߙߐ
           weighbridge: ߖߌߘߊ߲ߕߊ߫ ߛߍ߲
         boundary:
+          administrative: ߓߐߕߏ߲߫ ߞߎ߲߬ߠߊ߬ߛߌ߰ߟߊ߬ߞߊ
           protected_area: ߦߙߐ߫ ߟߊߞߊ߲ߘߊߣߍ߲
           "yes": ߓߐߕߏ߲
         bridge:
@@ -620,6 +621,7 @@ nqo:
           service: ߗߋߘߊ߫ ߛߌߟߊ
           speed_camera: ߞߊߟߌߦߊ ߖߊ߬ߛߏ߲߬ߟߊ߲
           steps: ߛߊ߲߬ߞߊ߬ߛߊ߲ߞߊ
+          street_lamp: ߝߏ߲߬ߘߏ߬ߞߊ߲߬ ߡߟߍߞߘߍ
           unclassified: ߛߌߟߊ߫ ߛߙߊߛߌ߰ߓߊߟߌ
           "yes": ߛߌߟߊ
         historic:
@@ -634,6 +636,7 @@ nqo:
           mine: ߘߊ߬ߡߊ߲
           monument: ߝߙߎߕߎ
           railway: ߣߍ߰ߛߌߟߊ ߘߝߐ߬ߡߊ
+          stone: ߞߓߊ
           tomb: ߛߊ߬ߙߌ
           tower: ߛߊ߲ߓߏ߲
           "yes": ߘߐ߬ߝߐ ߞߍߦߙߐ
@@ -942,7 +945,11 @@ nqo:
       hi: '%{to_user} ߣߌ߫ ߕߎ߬ߡߊ߬'
       subject: '[ߏߔߌ߲ߛߑߕߙߌߕߑߡߊߔ] %{user} ߓߘߴߌ ߝߙߊ߬ ߕߋߙߌ ߟߎ߬ ߟߊ߫'
       had_added_you: '%{user} ߓߘߴߌ ߝߙߊ߬ ߕߋߙߌ ߟߎ߬ ߟߊ߫ ߏߔߌ߲ߛߑߕߙߌߕߑߡߊߔ ߞߊ߲߬.'
+      see_their_profile: ߌ ߘߌ߫ ߛߴߊ߬ߟߎ߬ ߢߊߞߙߍ ߦߋ߫ ߟߊ߫ ߦߊ߲߬ %{userurl}.
+      see_their_profile_html: ߌ ߘߌ߫ ߛߴߊ߬ߟߎ߬ ߢߊߞߙߍ ߦߋ߫ ߟߊ߫ ߦߊ߲߬ %{userurl}.
       befriend_them: ߌ ߝߣߊ߫ ߘߌ߫ ߛߴߊ߬ߟߎ߫ ߝߙߊ߬ ߟߊ߫ ߕߋߙߌ ߟߎ߬ ߟߊ߫ %{befriendurl} ߘߐ߫
+      befriend_them_html: ߌ ߘߌ߫ ߛߴߊ߬ߟߎ߫ ߝߙߊ߬ ߟߊ߫ ߕߋߙߌ ߟߎ߬ ߟߊ߫ ߝߣߊ߫ %{befriendurl}
+        ߘߐ߫
     gpx_failure:
       hi: '%{to_user} ߣߌ߫ ߕߎ߬ߡߊ߬'
       failed_to_import: 'ߟߊ߬ߛߣߍ߬ߟߌ߬ ߗߌߙߏ߲ߣߍ߲. ߝߎ߬ߕߎ߲߬ߕߌ ߦߋ߫ ߦߊ߲߬:'
@@ -1124,10 +1131,16 @@ nqo:
   preferences:
     show:
       title: ߒ ߠߊ߫ ߦߟߌߡߊߛߙߋ ߟߎ߬
+      preferred_editor: ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߊ ߝߌ߬ߛߊ߬ߡߊ߲߬ߕߋ
+      preferred_languages: ߞߊ߲߫ ߝߌ߬ߛߊ߬ߡߊ߲߬ߕߋ ߟߎ߬
+      edit_preferences: ߦߟߌߡߊߛߙߋ ߡߊߦߟߍ߬ߡߊ߲߫
     edit:
+      title: ߦߟߌߡߊߛߙߋ ߡߊߦߟߍ߬ߡߊ߲߫
       cancel: ߊ߬ ߘߐߛߊ߬
   profiles:
     edit:
+      title: ߢߊߞߙߍ ߡߊߦߟߍ߬ߡߊ߲߫
+      save: ߢߊߞߙߍ ߟߊߞߎߘߦߊ߫
       cancel: ߊ߬ ߘߐߛߊ߬
       image: ߖߌ߬ߦߊ߬ߓߍ
       new image: ߖߌ߬ߦߊ߬ߓߍ ߘߏ߫ ߝߙߊ߬
index 775fff87c5805c8b9ac62956aaf3f6f82791ec3a..3b2dea2a1c4cf9e0a7d9f35e1950951990b834b3 100644 (file)
@@ -256,7 +256,7 @@ pt-PT:
       description: Controlo Remoto (JOSM ou Merkaartor)
   auth:
     providers:
-      none: Nenhum
+      none: Nenhuma
       openid: OpenID
       google: Google
       facebook: Facebook
@@ -1545,7 +1545,7 @@ pt-PT:
     export_data: Exportar dados
     gps_traces: Rotas GPS
     gps_traces_tooltip: Gerir rotas GPS
-    user_diaries: Diários dos utilizadores
+    user_diaries: Diários dos Utilizadores
     user_diaries_tooltip: Ver diários do utilizador
     edit_with: Editar com %{editor}
     tag_line: O mapa mundial livre e editável
@@ -1567,7 +1567,7 @@ pt-PT:
     donate: Apoia o OpenStreetMap %{link} para o Fundo de Atualização do Hardware.
     help: Ajuda
     about: Sobre
-    copyright: Direitos de autor
+    copyright: Direitos de Autor
     community: Comunidade
     community_blogs: Blogues da comunidade
     community_blogs_title: Blogues de membros da comunidade OpenStreetMap
@@ -1979,7 +1979,7 @@ pt-PT:
         (OSMF) em nome da comunidade. A utilização de todos os serviços operados pela
         OSMF estão sujeitos aos nossos <a href="https://wiki.osmfoundation.org/wiki/Terms_of_Use">Termos
         de Utilização</a>, <a href="https://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy">Políticas
-        de Utilização Aceitáveis</a> e à nossa <a href="https://wiki.osmfoundation.org/wiki/Privacy_Policy">Política
+        de Utilização Aceitável</a> e à nossa <a href="https://wiki.osmfoundation.org/wiki/Privacy_Policy">Política
         de Privacidade</a>.
       legal_2_html: |-
         Se tiver perguntas sobre o licenciamento, direitos de autor ou outras questões legais, por favor, <a href='https://osmfoundation.org/Contact'>contacte a OSMF</a>.
@@ -2455,7 +2455,7 @@ pt-PT:
       more: mais
       trace_details: Ver detalhes da rota
       view_map: Ver mapa
-      edit_map: Editar mapa
+      edit_map: Editar mapa
       public: PÚBLICO
       identifiable: IDENTIFICÁVEL
       private: PRIVADO
@@ -2548,7 +2548,7 @@ pt-PT:
       write_gpx: Enviar rotas GPS
       write_notes: Modificar notas
       read_email: ‎Ler e-mail de utilizador
-      skip_authorization: Auto aprovar aplicativo
+      skip_authorization: Aprovar a aplicação automaticamente
   oauth_clients:
     new:
       title: Registar uma nova aplicação
@@ -2645,9 +2645,9 @@ pt-PT:
       title: Criar conta
       no_auto_account_create: Infelizmente, e de momento, não é possível criar uma
         conta automaticamente.
-      contact_support_html: Contacte o <a href="%{support}">suporte</a> para combinar
-        a criação de uma conta, por favor - tentaremos responder ao pedido o mais
-        rapidamente possível.
+      contact_support_html: Por favor, contacta o <a href="%{support}">apoio</a> para
+        combinar a criação de uma conta - tentaremos responder ao pedido o mais rapidamente
+        possível.
       about:
         header: Livre e editável
         html: |-
@@ -2781,7 +2781,7 @@ pt-PT:
     suspended:
       title: Conta suspensa
       heading: Conta Suspensa
-      support: suporte
+      support: apoio
       body_html: |-
         <p>
           Lamentamos, mas a tua conta foi automaticamente suspensa devido a atividades suspeitas.
@@ -3018,8 +3018,7 @@ pt-PT:
       map_notes_zoom_in_tooltip: Aproxime para ver erros reportados
       map_data_zoom_in_tooltip: Amplia para veres os dados do mapa
       queryfeature_tooltip: Consultar elementos em redor
-      queryfeature_disabled_tooltip: Aproxime a vista para consultar elementos em
-        redor
+      queryfeature_disabled_tooltip: Amplia para consultares elementos
     changesets:
       show:
         comment: Comentar
diff --git a/test/system/user_suspension_test.rb b/test/system/user_suspension_test.rb
new file mode 100644 (file)
index 0000000..075303f
--- /dev/null
@@ -0,0 +1,15 @@
+require "application_system_test_case"
+
+class UserSuspensionTest < ApplicationSystemTestCase
+  test "User shown a message when suspended mid-session" do
+    user = create(:user)
+    sign_in_as(user)
+    visit edit_account_path
+    assert_content "My Settings"
+
+    user.update(:status => "suspended")
+
+    visit edit_account_path
+    assert_content "This decision will be reviewed by an administrator shortly"
+  end
+end