diff --git a/app/helpers/entries_helper.rb b/app/helpers/entries_helper.rb index c5d868d..4ae6bdc 100644 --- a/app/helpers/entries_helper.rb +++ b/app/helpers/entries_helper.rb @@ -1,6 +1,21 @@ module EntriesHelper - def alphabet_letters - ("A".."Z").to_a + def alphabet_letters(language_code) + return ("A".."Z").to_a if language_code.blank? + + case language_code.to_s + when "ru" + %w[ + А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я + ] + when "no" + ("A".."Z").to_a + %w[Æ Ø Å] + when "sv" + ("A".."Z").to_a + %w[Å Ä Ö] + when "fi" + ("A".."Z").to_a + %w[Å Ä Ö] + else + ("A".."Z").to_a + end end def entry_translation_for(entry, language_code) diff --git a/app/views/entries/index.html.erb b/app/views/entries/index.html.erb index 81df9b0..0456bed 100644 --- a/app/views/entries/index.html.erb +++ b/app/views/entries/index.html.erb @@ -25,10 +25,18 @@ + <% if @query.present? %> +
+ <%= link_to "×", + entries_path(category: @category.presence, language: @language_code.presence, starts_with: @starts_with.presence), + class: "text-slate-400 hover:text-slate-600 text-2xl leading-none", + aria: { label: "Clear search" } %> +
+ <% end %> <%= form.text_field :q, value: @query, placeholder: "Search words, phrases, or biblical terms...", - class: "block w-full pl-11 pr-4 py-4 bg-white border border-slate-200 rounded-2xl shadow-sm focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 transition" %> + class: "block w-full pl-11 pr-10 py-4 bg-white border border-slate-200 rounded-2xl shadow-sm focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 transition" %> <% end %> @@ -63,7 +71,7 @@ <%= link_to "All", entries_path(alphabet_params), class: "px-2.5 py-1 rounded-md #{@starts_with.blank? ? 'bg-indigo-600 text-white' : 'bg-white border border-slate-200 text-slate-600 hover:border-indigo-300'}" %> - <% alphabet_letters.each do |letter| %> + <% alphabet_letters(@language_code).each do |letter| %> <%= link_to letter, entries_path(alphabet_params.merge(starts_with: letter)), class: "px-2.5 py-1 rounded-md #{@starts_with == letter ? 'bg-indigo-600 text-white' : 'bg-white border border-slate-200 text-slate-600 hover:border-indigo-300'}" %> @@ -108,14 +116,22 @@ + <% preferred_language_code = @language_code.presence || "fi" %> + <% preferred_language = @display_languages.find { |language| language.code == preferred_language_code } %> - <% @display_languages.each do |language| %> + <% table_languages = @display_languages.reject { |language| language.code == preferred_language_code } %> + <% if preferred_language_code != "en" %> + <% english_language, other_languages = table_languages.partition { |language| language.code == "en" } %> + <% table_languages = english_language + other_languages %> + <% end %> + <% table_languages.each do |language| %> <% if @entries.empty? %> - <% else %> <% @entries.each do |entry| %> - <% translation_values = @display_languages.map { |language| entry.public_send(language.code) } %> + <% translation_values = table_languages.map { |language| entry.public_send(language.code) } %> <% missing_any = translation_values.any?(&:blank?) %> - <% @display_languages.each do |language| %> + <% table_languages.each do |language| %> <% translation = entry.public_send(language.code) %>
-
Entry
+
<%= preferred_language&.name || "Finnish" %> + <%= preferred_language_code.upcase %>
Category / Status
-
<%= language.name %>
-
<%= language.code.upcase %>
+
<%= language.name %> + <%= language.code.upcase %>
<%= @language_completion.fetch(language, 0) %>% complete
@@ -126,22 +142,17 @@
+ No entries matched your filters.
- <% primary_text = if @language_code.present? - entry.public_send(@language_code) - else - translation_values.find(&:present?) - end %> - <% primary_text = primary_text.presence || "Untitled" %> + <% primary_text = entry.public_send(preferred_language_code).presence || "Untitled" %>
<%= primary_text %>
<%= format_entry_category(entry) %> @@ -155,7 +166,7 @@ class: "text-indigo-600 font-semibold hover:underline" %>
<% if translation.present? %>