a11yist/app/models/concerns/rich_text_target_blank.rb
david d90f1b86b8
Some checks failed
/ Run tests (push) Failing after 14s
/ Run system tests (push) Failing after 14s
/ Build, push and deploy image (push) Has been skipped
Fix add newline on blank line
2024-10-26 20:06:32 +02:00

24 lines
766 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
next # FIXME: This adds additional newlines for each blank line.
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