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/views/dashboard.erb b/views/dashboard.erb index db5391c8..1f3abe8c 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 %> +
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('.', '')