mirror of
https://github.com/openstreetmap/openstreetmap-website.git
synced 2025-07-22 01:22:54 +00:00
Merge remote-tracking branch 'upstream/pull/5855'
This commit is contained in:
@ -140,6 +140,10 @@ fossgis_valhalla_url: "https://valhalla1.openstreetmap.de/route"
|
||||
linkify_hosts: ["www.openstreetmap.org", "www.osm.org", "www.openstreetmap.com", "openstreetmap.org", "osm.org", "openstreetmap.com"]
|
||||
# Shorter host to replace main hosts
|
||||
linkify_hosts_replacement: "osm.org"
|
||||
# Wiki website hosts to match in linkify
|
||||
linkify_wiki_hosts: ["wiki.openstreetmap.org", "wiki.osm.org", "wiki.openstreetmap.com", "wiki.openstreetmaps.org", "osm.wiki", "www.osm.wiki", "wiki.osm.wiki"]
|
||||
# Shorter host to replace wiki hosts
|
||||
linkify_wiki_hosts_replacement: "osm.wiki"
|
||||
# External authentication credentials
|
||||
#google_auth_id: ""
|
||||
#google_auth_secret: ""
|
||||
|
@ -78,12 +78,18 @@ module RichText
|
||||
def linkify(text, mode = :urls)
|
||||
link_attr = tag_builder.tag_options(:rel => "nofollow noopener noreferrer")
|
||||
Rinku.auto_link(ERB::Util.html_escape(text), mode, link_attr) do |url|
|
||||
%r{^https?://([^/]*)(.*)$}.match(url) do |m|
|
||||
"#{Settings.linkify_hosts_replacement}#{m[2]}" if Settings.linkify_hosts_replacement &&
|
||||
Settings.linkify_hosts&.include?(m[1])
|
||||
end || url
|
||||
url = shorten_host(url, Settings.linkify_hosts, Settings.linkify_hosts_replacement)
|
||||
shorten_host(url, Settings.linkify_wiki_hosts, Settings.linkify_wiki_hosts_replacement)
|
||||
end.html_safe
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def shorten_host(url, hosts, hosts_replacement)
|
||||
%r{^https?://([^/]*)(.*)$}.match(url) do |m|
|
||||
"#{hosts_replacement}#{m[2]}" if hosts_replacement && hosts&.include?(m[1])
|
||||
end || url
|
||||
end
|
||||
end
|
||||
|
||||
class HTML < Base
|
||||
|
@ -269,6 +269,18 @@ class RichTextTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
def test_text_to_html_linkify_wiki_replace
|
||||
with_settings(:linkify_wiki_hosts => ["replace-me-wiki.example.com"], :linkify_wiki_hosts_replacement => "wiki.example.com") do
|
||||
r = RichText.new("text", "foo https://replace-me-wiki.example.com/wiki/Tag:surface%3Dmetal bar")
|
||||
assert_html r do
|
||||
assert_dom "a", :count => 1, :text => "wiki.example.com/wiki/Tag:surface%3Dmetal" do
|
||||
assert_dom "> @href", "https://replace-me-wiki.example.com/wiki/Tag:surface%3Dmetal"
|
||||
assert_dom "> @rel", "nofollow noopener noreferrer"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def test_text_to_html_email
|
||||
r = RichText.new("text", "foo example@example.com bar")
|
||||
assert_html r do
|
||||
|
Reference in New Issue
Block a user