DEV: update base url links to respect subfolder installs (#27740)

This change eliminates a couple of instances where subfolder urls are badly formatted, in most cases we can use Discourse.base_url_no_prefix to prevent adding the subfolder to the base url.
This commit is contained in:
David Battersby 2024-07-09 12:42:38 +04:00 committed by GitHub
parent e58cf24fcc
commit f44ec18fd2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 27 additions and 3 deletions

View File

@ -24,7 +24,7 @@ module EmailHelper
def email_topic_link(topic)
url, title = extract_details(topic)
raw "<a href='#{Discourse.base_url}#{url}' style='color: ##{@anchor_color}'>#{title}</a>"
raw "<a href='#{Discourse.base_url_no_prefix}#{url}' style='color: ##{@anchor_color}'>#{title}</a>"
end
def email_html_template

View File

@ -1,5 +1,5 @@
<li>
<a href='<%= Discourse.base_url + topic.relative_url %>' style='color: #<%= @anchor_color %>'><%= raw format_topic_title(topic.title) %></a>
<a href='<%= Discourse.base_url_no_prefix + topic.relative_url %>' style='color: #<%= @anchor_color %>'><%= raw format_topic_title(topic.title) %></a>
<span><%= post_count %></span>
<%= category_badge(topic.category, inline_style: true, absolute_url: true) %>
</li>

View File

@ -171,7 +171,9 @@ module Email
if topic
if SiteSetting.private_email?
@message.header["List-Archive"] = "#{Discourse.base_url}#{topic.slugless_url}"
@message.header[
"List-Archive"
] = "#{Discourse.base_url_no_prefix}#{topic.slugless_url}"
else
@message.header["List-Archive"] = topic.url
end

View File

@ -0,0 +1,11 @@
# frozen_string_literal: true
RSpec.describe EmailHelper do
describe "#email_topic_link" do
it "respects subfolder" do
set_subfolder "/forum"
topic = Fabricate(:topic)
expect(helper.email_topic_link(topic)).to include("#{Discourse.base_url_no_prefix}/forum/t")
end
end
end

View File

@ -2238,6 +2238,17 @@ RSpec.describe Post do
end
end
describe "full_url" do
it "returns the correct post url with subfolder install" do
set_subfolder "/forum"
post = Fabricate(:post)
expect(post.full_url).to eq(
"#{Discourse.base_url_no_prefix}/forum/t/#{post.topic.slug}/#{post.topic.id}/#{post.post_number}",
)
end
end
describe "public_posts_count_per_day" do
before do
freeze_time_safe