22 lines
692 B
Ruby
22 lines
692 B
Ruby
# frozen_string_literal: true
|
|
|
|
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
|