summaryrefslogtreecommitdiffstats
path: root/app.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app.rb')
-rw-r--r--app.rb13
1 files changed, 12 insertions, 1 deletions
diff --git a/app.rb b/app.rb
index 0678c67..af18d44 100644
--- a/app.rb
+++ b/app.rb
@@ -160,7 +160,7 @@ helpers do
cover = data['cover']
return cover if cover && cover != '__random__' && File.exist?(File.join(dir, cover))
candidates = cover_candidates(dir)
- cover == '__random__' ? candidates.sample : candidates.first
+ candidates.sample
end
def cover_candidates(dir)
@@ -413,6 +413,17 @@ post '/admin/edit/*' do
rel = params[:splat].first.chomp('/')
dir = resolve_dir(rel)
+ # Handle file deletions before save so save_edits doesn't re-add them
+ to_delete = (params['file_delete'] || {}).select { |_, v| v == '1' }.keys
+ to_delete.each do |name|
+ full = File.join(dir, name)
+ thumb = File.join(CACHE_ROOT, rel.empty? ? "#{name}.th.jpg" : "#{rel}/#{name}.th.jpg")
+ File.unlink(full) if File.exist?(full)
+ File.unlink(thumb) if File.exist?(thumb)
+ params['file_visible']&.delete(name)
+ params['file_caption']&.delete(name)
+ end
+
unless rel.empty?
new_name = params['folder_name'].to_s.strip
new_name = '' if new_name.include?('/') || new_name.include?("\x00") ||