diff options
| author | Ken D'Ambrosio <ken@jots.org> | 2026-06-18 21:58:04 +0000 |
|---|---|---|
| committer | Ken D'Ambrosio <ken@jots.org> | 2026-06-18 21:58:04 +0000 |
| commit | c5ec42b2f42e285a95610f1b9b9efba4beef3d7e (patch) | |
| tree | 549fdff3243113484a840bf0bc631c65eda4fddc /views | |
| parent | 462e0081cc9062beb29530e84d15edf2003802db (diff) | |
Rename global search to "Album Search" and group results by album
Photo search was returning every individual matching photo, which
was overkill for what's meant to be a quick way to find an album.
/search now groups matches by album (cover thumbnail + match count)
instead of listing each photo, and is relabeled "Album Search"
throughout the UI.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'views')
| -rw-r--r-- | views/layout.erb | 2 | ||||
| -rw-r--r-- | views/search.erb | 33 |
2 files changed, 13 insertions, 22 deletions
diff --git a/views/layout.erb b/views/layout.erb index 6a85482..17a5983 100644 --- a/views/layout.erb +++ b/views/layout.erb @@ -22,7 +22,7 @@ <header class="site-header"> <a href="/browse/" class="site-logo">Albumen</a> <form action="/search" method="get" class="header-search"> - <input type="search" name="q" placeholder="Search…" autocomplete="off" + <input type="search" name="q" placeholder="Album search…" autocomplete="off" value="<%= defined?(@search_query) ? ERB::Util.html_escape(@search_query.to_s) : '' %>" class="header-search-input"> </form> diff --git a/views/search.erb b/views/search.erb index 1010284..00c9553 100644 --- a/views/search.erb +++ b/views/search.erb @@ -1,5 +1,5 @@ <div class="album-header"> - <h1>Search</h1> + <h1>Album Search</h1> <form action="/search" method="get" class="search-form"> <input type="search" name="q" value="<%= ERB::Util.html_escape(@search_query.to_s) %>" placeholder="e.g. ken 2004 OR carol AND NOT vacation" @@ -16,34 +16,25 @@ <% if @search_query && !@search_query.empty? %> <% if @results %> <p class="update-hint"> - <%= @total %> result<%= @total == 1 ? '' : 's' %> - <% if @total > @results.length %>(showing first <%= @results.length %>)<% end %> + <%= @total %> album<%= @total == 1 ? '' : 's' %> matched </p> <% if @results.empty? %> - <p class="empty-album">No photos matched "<%= ERB::Util.html_escape(@search_query) %>".</p> + <p class="empty-album">No albums matched "<%= ERB::Util.html_escape(@search_query) %>".</p> <% else %> <div class="grid"> <% @results.each do |r| %> <% album_url = r[:dir_rel].empty? ? '/browse/' : "/browse/#{ERB::Util.html_escape(r[:dir_rel])}" %> - <a href="<%= album_url %>?photo=<%= ERB::Util.url_encode(r[:filename]) %>" - class="card search-card" style="text-decoration:none"> + <% cover_rel = r[:dir_rel].empty? ? r[:cover] : "#{r[:dir_rel]}/#{r[:cover]}" %> + <a href="<%= album_url %>" class="card album-card"> <div class="thumb-wrap"> - <img src="/thumb/<%= ERB::Util.html_escape(r[:rel]) %>" loading="lazy" - alt="<%= ERB::Util.html_escape(r[:filename]) %>"> - </div> - <div class="card-meta"> - <div class="filename"><%= ERB::Util.html_escape(r[:filename]) %></div> - <% if r[:taken_at] %> - <div class="card-caption"><%= ERB::Util.html_escape(r[:taken_at][0..9]) %></div> - <% end %> - <% unless r[:people].empty? %> - <div class="card-caption"><%= ERB::Util.html_escape(r[:people].join(', ')) %></div> + <% if r[:cover] %> + <img src="/thumb/<%= ERB::Util.html_escape(cover_rel) %>" alt="<%= ERB::Util.html_escape(r[:title]) %>" loading="lazy"> + <% else %> + <div class="thumb-placeholder">📁</div> <% end %> - <div class="search-album-path"> - <a href="<%= album_url %>" onclick="event.stopPropagation()"> - <%= ERB::Util.html_escape(r[:dir_rel].empty? ? '(root)' : r[:dir_rel]) %> - </a> - </div> + </div> + <div class="album-label"> + <%= ERB::Util.html_escape(r[:title]) %><span class="album-count"><%= r[:count] %></span> </div> </a> <% end %> |
