From 0a636b2397c884709a3e8c5c39fa5908f7a16f77 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Mon, 21 Apr 2014 18:30:25 -0700 Subject: [PATCH 1/2] code to delete thumbnails and screenshots --- models/site.rb | 46 ++++++++++++++++++++++++++++++++---- workers/screenshot_worker.rb | 3 +-- workers/thumbnail_worker.rb | 3 +-- 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/models/site.rb b/models/site.rb index 2b19c68a..9badbb11 100644 --- a/models/site.rb +++ b/models/site.rb @@ -52,6 +52,9 @@ class Site < Sequel::Model LOSSLESS_IMAGE_REGEX = /png|bmp|gif/ LOSSY_IMAGE_REGEX = /jpg|jpeg/ HTML_REGEX = /htm|html/ + + SCREENSHOT_RESOLUTIONS = ['235x141', '105x63', '270x162'] + THUMBNAIL_RESOLUTIONS = ['105x63'] many_to_one :server @@ -180,7 +183,7 @@ class Site < Sequel::Model FileUtils.mv uploaded.path, file_path(filename) File.chmod(0640, file_path(filename)) - ext = File.extname(filename).gsub('.', '') + ext = File.extname(filename).gsub(/^./, '') if ext.match HTML_REGEX ScreenshotWorker.perform_async values[:username], filename @@ -218,8 +221,13 @@ class Site < Sequel::Model begin FileUtils.rm file_path(filename) rescue Errno::ENOENT - return false end + + ext = File.extname(filename).gsub(/^./, '') + + screenshots_delete(filename) if ext.match HTML_REGEX + thumbnails_delete(filename) if ext.match IMAGE_REGEX + true end @@ -369,6 +377,28 @@ class Site < Sequel::Model values[:title] || values[:username] end + def screenshots_delete(filename) + SCREENSHOT_RESOLUTIONS.each do |res| + begin + FileUtils.rm screenshot_path(filename, res) + rescue Errno::ENOENT + end + end + end + + def thumbnails_delete(filename) + THUMBNAIL_RESOLUTIONS.each do |res| + begin + FileUtils.rm thumbnail_path(filename, res) + rescue Errno::ENOENT + end + end + end + + def screenshot_path(filename, resolution) + File.join(SCREENSHOTS_ROOT, values[:username], "#{filename}.#{resolution}.jpg") + end + def screenshot_exists?(filename, resolution) File.exist? File.join(SCREENSHOTS_ROOT, values[:username], "#{filename}.#{resolution}.jpg") end @@ -377,9 +407,17 @@ class Site < Sequel::Model "#{SCREENSHOTS_URL_ROOT}/#{values[:username]}/#{filename}.#{resolution}.jpg" end - def thumbnail_exists?(filename, resolution) + def thumbnail_path(filename, resolution) ext = File.extname(filename).gsub('.', '').match(LOSSY_IMAGE_REGEX) ? 'jpg' : 'png' - File.exist?(File.join(THUMBNAILS_ROOT, values[:username], "#{filename}.#{resolution}.#{ext}")) + File.join THUMBNAILS_ROOT, values[:username], "#{filename}.#{resolution}.#{ext}" + end + + def thumbnail_exists?(filename, resolution) + File.exist? thumbnail_path(filename, resolution) + end + + def thumbnail_delete(filename, resolution) + File.rm thumbnail_path(filename, resolution) end def thumbnail_url(filename, resolution) diff --git a/workers/screenshot_worker.rb b/workers/screenshot_worker.rb index a954c5b4..5610eb5e 100644 --- a/workers/screenshot_worker.rb +++ b/workers/screenshot_worker.rb @@ -27,7 +27,6 @@ module Phantomjs end class ScreenshotWorker - REQUIRED_RESOLUTIONS = ['235x141', '105x63', '270x162'] SCREENSHOTS_PATH = File.join DIR_ROOT, 'public', 'site_screenshots' include Sidekiq::Worker sidekiq_options queue: :screenshots, retry: 3, backtrace: true @@ -82,7 +81,7 @@ class ScreenshotWorker user_screenshots_path = File.join SCREENSHOTS_PATH, username FileUtils.mkdir_p user_screenshots_path - REQUIRED_RESOLUTIONS.each do |res| + Site::SCREENSHOT_RESOLUTIONS.each do |res| img.scale(*res.split('x').collect {|r| r.to_i}).write(File.join(user_screenshots_path, "#{filename}.#{res}.jpg")) { self.quality = 90 } diff --git a/workers/thumbnail_worker.rb b/workers/thumbnail_worker.rb index 804b15b2..d09881c4 100644 --- a/workers/thumbnail_worker.rb +++ b/workers/thumbnail_worker.rb @@ -1,7 +1,6 @@ require 'RMagick' class ThumbnailWorker - REQUIRED_RESOLUTIONS = ['105x63'] THUMBNAILS_PATH = File.join DIR_ROOT, 'public', 'site_thumbnails' include Sidekiq::Worker sidekiq_options queue: :thumbnails, retry: 3, backtrace: true @@ -14,7 +13,7 @@ class ThumbnailWorker user_thumbnails_path = File.join THUMBNAILS_PATH, username FileUtils.mkdir_p user_thumbnails_path - REQUIRED_RESOLUTIONS.each do |res| + Site::THUMBNAIL_RESOLUTIONS.each do |res| resimg = img.resize_to_fit(*res.split('x').collect {|r| r.to_i}) format = File.extname(filename).gsub('.', '') From 4773973bfe1eae5cde53bb89e70a44ce99ee354b Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Mon, 21 Apr 2014 18:33:52 -0700 Subject: [PATCH 2/2] flash messages for dashboard, remove welcome after 5 changes --- views/dashboard.erb | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/views/dashboard.erb b/views/dashboard.erb index 8279bcad..b8d741fa 100644 --- a/views/dashboard.erb +++ b/views/dashboard.erb @@ -54,17 +54,30 @@
+<% unless current_site.changed_count > 5 %>
-
+

Hello! Welcome to your new site.

To get started, click on the index.html file below to edit it. It's your home page! You can add more files (such as images) from your computer by dragging them into the box below. Need help building web sites? Check out these tutorials!
+<% end %> <% if @error %>

<%= @error %>

<% end %> + + <% if flash.keys.length > 0 %> +
+

+ <% flash.keys.each do |key| %> + <%= flash[key] %> + <% end %> +

+
+ <% end %> +