]> git.openstreetmap.org Git - rails.git/commitdiff
Add links to diaries in preferred languages
authorAnton Khorev <tony29@yandex.ru>
Tue, 2 Jan 2024 05:09:35 +0000 (08:09 +0300)
committerAnton Khorev <tony29@yandex.ru>
Wed, 3 Jan 2024 10:10:08 +0000 (13:10 +0300)
app/controllers/diary_entries_controller.rb
app/views/diary_entries/index.html.erb
test/system/diary_entry_test.rb

index 6db32797adffe5c582a381f8000781ae4090e97e..1f9574b9cbab8313e7cc0e9b7540c85ae5d9f3fe 100644 (file)
@@ -47,6 +47,8 @@ class DiaryEntriesController < ApplicationController
         @title = t ".in_language_title", :language => Language.find(params[:language]).english_name
         entries = entries.where(:language_code => params[:language])
       else
+        candidate_codes = preferred_languages.flat_map(&:candidates).uniq.map(&:to_s)
+        @languages = Language.where(:code => candidate_codes).in_order_of(:code, candidate_codes)
         @title = t ".title"
       end
     end
index 359bc5eb49682c1340a51b829f655609a36488cc..e9d7e18c916a3fd5f5f46fb8cea810db44fa150e 100644 (file)
             <li><%= rss_link_to :action => "rss", :language => params[:language] %></li>
           <% end -%>
 
+          <% @languages&.each do |language| %>
+            <li><%= link_to t(".in_language_title", :language => language.name), :action => "index", :language => language.code %></li>
+          <% end %>
+
           <% if @user && @user == current_user || !@user && current_user %>
             <li><%= link_to image_tag("new.png", :class => "small_icon") + t(".new"), new_diary_entry_path, :title => t(".new_title") %></li>
           <% end %>
index 554b89a6db05a3ec2b3353acfe69d9b78c088cf9..290b94207acec68cedbc8eb86819cfa7dbccfc49 100644 (file)
@@ -3,6 +3,9 @@ require "application_system_test_case"
 class DiaryEntrySystemTest < ApplicationSystemTestCase
   def setup
     create(:language, :code => "en")
+    create(:language, :code => "pt", :english_name => "Portuguese", :native_name => "Português")
+    create(:language, :code => "pt-BR", :english_name => "Brazilian Portuguese", :native_name => "Português do Brasil")
+    create(:language, :code => "ru", :english_name => "Russian", :native_name => "Русский")
     @diary_entry = create(:diary_entry)
   end
 
@@ -61,4 +64,14 @@ class DiaryEntrySystemTest < ApplicationSystemTestCase
 
     assert_content @deleted_comment.body
   end
+
+  test "should have links to preferred languages" do
+    sign_in_as(create(:user, :languages => %w[en-US pt-BR]))
+    visit diary_entries_path
+
+    assert_link "Diary Entries in English", :href => "/diary/en"
+    assert_link "Diary Entries in Brazilian Portuguese", :href => "/diary/pt-BR"
+    assert_link "Diary Entries in Portuguese", :href => "/diary/pt"
+    assert_no_link "Diary Entries in Russian"
+  end
 end