Fix #4111: Cache custom CSS.

This commit is contained in:
evazion
2019-08-01 00:06:18 -05:00
parent efc5487dd6
commit 692981e964
5 changed files with 18 additions and 12 deletions

View File

@@ -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)

11
app/logical/custom_css.rb Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -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 %>
<script type="application/ld+json">

View File

@@ -1 +1 @@
<%= raw CurrentUser.user.presenter.custom_css %>
<%= raw @css %>