From c75beda743dfd6af63f512e928d0889d9ead3973 Mon Sep 17 00:00:00 2001 From: Ken Date: Sat, 9 May 2026 04:41:03 +0000 Subject: =?UTF-8?q?Initial=20commit=20=E2=80=94=20Albumen=20photo=20album?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ruby/Sinatra self-hosted photo album with directory hierarchy, per-photo captions and visibility, lightbox, slideshow, admin UI, and Let's Encrypt HTTPS via Apache reverse proxy on prouter. Co-Authored-By: Claude Sonnet 4.6 --- views/album.erb | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 views/album.erb (limited to 'views/album.erb') diff --git a/views/album.erb b/views/album.erb new file mode 100644 index 0000000..077e119 --- /dev/null +++ b/views/album.erb @@ -0,0 +1,99 @@ +
+ <% unless @crumbs.empty? %> + + <% end %> +

<%= @title %>

+ <% if @desc %>

<%= @desc %>

<% end %> +
+ <% if @entries.any? { |e| %i[image video].include?(e[:type]) } %> + Slideshow + <% end %> +
+
+ +<% unless @albums.empty? %> +
+ <% if @entries.any? %><% end %> +
+ <% @albums.each do |a| %> + <% href = @rel.empty? ? "/browse/#{a[:name]}" : "/browse/#{@rel}/#{a[:name]}" %> + +
+ <% cover_rel = @rel.empty? ? "#{a[:name]}/#{a[:cover]}" : "#{@rel}/#{a[:name]}/#{a[:cover]}" %> + <% if a[:cover] %> + <%= a[:title] %> + <% else %> +
📁
+ <% end %> +
+
<%= a[:title] %>
+
+ <% end %> +
+
+<% end %> + +<% unless @entries.empty? %> +
+ <% if @albums.any? %><% end %> +
+ <% @entries.each_with_index do |e, i| %> + <% file_rel = @rel.empty? ? e[:name] : "#{@rel}/#{e[:name]}" %> +
+
+ <%= ERB::Util.html_escape(e[:title]) %> + <% if e[:type] == :video %><% end %> + <% if e[:type] == :audio %><% end %> +
+ <% if e[:caption] %> +

<%= e[:caption] %>

+ <% end %> +
+ <% end %> +
+
+<% end %> + +<% if @albums.empty? && @entries.empty? %> +

This album is empty.

+<% end %> + + + + + -- cgit v1.2.3