From 692981e964e8d703a9c9743676aa1d1de0569fea Mon Sep 17 00:00:00 2001 From: evazion Date: Thu, 1 Aug 2019 00:06:18 -0500 Subject: [PATCH] Fix #4111: Cache custom CSS. --- app/controllers/users_controller.rb | 5 +++++ app/logical/custom_css.rb | 11 +++++++++++ app/presenters/user_presenter.rb | 10 ---------- app/views/layouts/default.html.erb | 2 +- app/views/users/custom_style.css.erb | 2 +- 5 files changed, 18 insertions(+), 12 deletions(-) create mode 100644 app/logical/custom_css.rb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index b364b5bd6..9ab672097 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -75,6 +75,11 @@ class UsersController < ApplicationController end end + def custom_style + @css = CustomCss.parse(CurrentUser.user.custom_style) + expires_in 10.years + end + private def check_privilege(user) diff --git a/app/logical/custom_css.rb b/app/logical/custom_css.rb new file mode 100644 index 000000000..0f3629095 --- /dev/null +++ b/app/logical/custom_css.rb @@ -0,0 +1,11 @@ +module CustomCss + def self.parse(css) + css.to_s.split(/\r\n|\r|\n/).map do |line| + if line =~ /\A@import/ + line + else + line.gsub(/([^[:space:]])[[:space:]]*(?:!important)?[[:space:]]*(;|})/, "\\1 !important\\2") + end + end.join("\n") + end +end diff --git a/app/presenters/user_presenter.rb b/app/presenters/user_presenter.rb index 5608faebd..aafecb8a5 100644 --- a/app/presenters/user_presenter.rb +++ b/app/presenters/user_presenter.rb @@ -172,14 +172,4 @@ class UserPresenter def previous_names(template) user.user_name_change_requests.map { |req| template.link_to req.original_name, req }.join(", ").html_safe end - - def custom_css - user.custom_style.to_s.split(/\r\n|\r|\n/).map do |line| - if line =~ /\A@import/ - line - else - line.gsub(/([^[:space:]])[[:space:]]*(?:!important)?[[:space:]]*(;|})/, "\\1 !important\\2") - end - end.join("\n") - end end diff --git a/app/views/layouts/default.html.erb b/app/views/layouts/default.html.erb index 4f0cb1fcd..790043c20 100644 --- a/app/views/layouts/default.html.erb +++ b/app/views/layouts/default.html.erb @@ -32,7 +32,7 @@ <%= javascript_pack_tag "application" %> <%= stylesheet_pack_tag "application" %> <% if CurrentUser.user.custom_style.present? %> - <%= stylesheet_link_tag custom_style_users_path, :media => "screen" %> + <%= stylesheet_link_tag custom_style_users_path(md5: Digest::MD5.hexdigest(CurrentUser.user.custom_style)), media: "screen" %> <% end %> <% if Danbooru.config.twitter_site %>