]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/4451'
authorTom Hughes <tom@compton.nu>
Wed, 3 Jan 2024 18:49:59 +0000 (18:49 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 3 Jan 2024 18:49:59 +0000 (18:49 +0000)
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 e464b99b4829d40758fcd7912d1b805c8393de64..78ac0dcf869976bf05d4a020172e1e2c0202b90e 100644 (file)
         <ul class="clearfix">
           <% unless params[:friends] or params[:nearby] -%>
             <li><%= rss_link_to :action => "rss", :language => params[:language] %></li>
-            <% end -%>
+          <% 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 %>
+          <% @languages&.each do |language| %>
+            <li><%= link_to t(".in_language_title", :language => language.name), :action => "index", :language => language.code %></li>
+          <% end %>
 
-            <% if !@user && current_user %>
-              <li><%= link_to t(".my_diary"), :controller => "diary_entries", :action => "index", :display_name => current_user.display_name %></li>
-            <% end %>
+          <% if !@user && current_user %>
+            <li><%= link_to t(".my_diary"), :controller => "diary_entries", :action => "index", :display_name => current_user.display_name %></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 %>
         </ul>
       </nav>
     </div>
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