a11yist/app/models/concerns/rich_text_target_blank.rb
2024-07-20 16:55:10 +02:00

20 lines
661 B
Ruby

module RichTextTargetBlank
extend ActiveSupport::Concern
class_methods do
# Override has_rich_text to include target="_blank" functionality
def has_rich_text(name)
super # Call the original has_rich_text to set up the rich text association
# Define the before_save callback to modify the links
before_save do
rich_text_attribute = send(name)
if rich_text_attribute.present?
doc = Nokogiri::HTML::DocumentFragment.parse(rich_text_attribute.body.to_html)
doc.css('a').each { |a| a['target'] ||= '_blank' }
rich_text_attribute.body = doc.to_html
end
end
end
end
end