From c3227b69fa383f1fc29b3e2714a978d92e281d94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Fri, 29 May 2015 09:57:54 +0200 Subject: [PATCH] FIX: proper support for pixel ratios up to 3 --- app/controllers/user_avatars_controller.rb | 2 +- app/jobs/regular/create_thumbnails.rb | 9 ++------- lib/discourse.rb | 15 +++++++++++---- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/app/controllers/user_avatars_controller.rb b/app/controllers/user_avatars_controller.rb index c2be05ce8..ffe914cdc 100644 --- a/app/controllers/user_avatars_controller.rb +++ b/app/controllers/user_avatars_controller.rb @@ -59,7 +59,7 @@ class UserAvatarsController < ApplicationController return render_dot if size < 8 || size > 500 if !Discourse.avatar_sizes.include?(size) && Discourse.store.external? - closest = Discourse.avatar_sizes.to_a.min{|a,b| (size-a).abs <=> (size-b).abs} + closest = Discourse.avatar_sizes.to_a.min { |a,b| (size-a).abs <=> (size-b).abs } return redirect_to cdn_path("/user_avatar/#{params[:hostname]}/#{user.username_lower}/#{closest}/#{version}.png") end diff --git a/app/jobs/regular/create_thumbnails.rb b/app/jobs/regular/create_thumbnails.rb index 06d7ffe47..390aab8c6 100644 --- a/app/jobs/regular/create_thumbnails.rb +++ b/app/jobs/regular/create_thumbnails.rb @@ -17,14 +17,9 @@ module Jobs self.send("create_thumbnails_for_#{type}", upload) end - PIXEL_RATIOS ||= [1, 2, 3] - def create_thumbnails_for_avatar(upload) - PIXEL_RATIOS.each do |pixel_ratio| - Discourse.avatar_sizes.each do |size| - size *= pixel_ratio - OptimizedImage.create_for(upload, max, max, allow_animation: SiteSetting.allow_animated_avatars) - end + Discourse.avatar_sizes.each do |size| + OptimizedImage.create_for(upload, size, size, allow_animation: SiteSetting.allow_animated_avatars) end end diff --git a/lib/discourse.rb b/lib/discourse.rb index b7fb22a08..5c9737753 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -78,11 +78,18 @@ module Discourse @anonymous_top_menu_items ||= Discourse.anonymous_filters + [:category, :categories, :top] end + PIXEL_RATIOS ||= [1, 2, 3] + def self.avatar_sizes - # Don't cache until we can get a notification from site settings to expire cache - set = Set.new(SiteSetting.avatar_sizes.split("|").map(&:to_i)) - # add retinas which are 2x dpi - set.to_a.each { |size| set << size * 2 } + # TODO: should cache these when we get a notification system for site settings + set = Set.new + + SiteSetting.avatar_sizes.split("|").map(&:to_i).each do |size| + PIXEL_RATIOS.each do |pixel_ratio| + set << size * pixel_ratio + end + end + set end