mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-17 03:46:21 +00:00
feat: limpieza de estilos
esto permite guardar los nuevos estilos sin permitir otras cosas sutty/editor!1
This commit is contained in:
parent
0781bee40a
commit
4e4091f6c9
1 changed files with 31 additions and 0 deletions
|
@ -77,9 +77,40 @@ class MetadataContent < MetadataTemplate
|
||||||
resource['controls'] = true
|
resource['controls'] = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Elimina los estilos salvo los que asigne el editor
|
||||||
|
html.css('[style]').each do |element|
|
||||||
|
if (style = sanitize_style(element['style'])).present?
|
||||||
|
element['style'] = style
|
||||||
|
else
|
||||||
|
element.remove_attribute('style')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
html.to_s.html_safe
|
html.to_s.html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Limpia estilos en base a una lista de permitidos
|
||||||
|
#
|
||||||
|
# @param style [String]
|
||||||
|
# @return [String]
|
||||||
|
def sanitize_style(style)
|
||||||
|
style.split(';').reduce({}) do |style_hash, style_string|
|
||||||
|
key, value = style_string.split(':', 2)
|
||||||
|
|
||||||
|
style_hash[key] ||= value
|
||||||
|
style_hash
|
||||||
|
end.slice(*allowed_styles).map do |style_pair|
|
||||||
|
style_pair.join(':')
|
||||||
|
end.join(';')
|
||||||
|
end
|
||||||
|
|
||||||
|
# Estilos permitidos
|
||||||
|
#
|
||||||
|
# @return [Array<String>]
|
||||||
|
def allowed_styles
|
||||||
|
@allowed_styles ||= %w[text-align color background-color]
|
||||||
|
end
|
||||||
|
|
||||||
# Convierte una ubicación local al sitio en una URL de ActiveStorage
|
# Convierte una ubicación local al sitio en una URL de ActiveStorage
|
||||||
#
|
#
|
||||||
# XXX: Por qué son tan díficiles de encontrar las rutas de AS
|
# XXX: Por qué son tan díficiles de encontrar las rutas de AS
|
||||||
|
|
Loading…
Reference in a new issue