FIX: detect local assets for subfolder installs

This commit is contained in:
Jeff Wong 2019-04-13 10:35:23 -07:00
parent 95ada3f190
commit 2863abefdd
2 changed files with 9 additions and 1 deletions

View File

@ -18,7 +18,7 @@ class UrlHelper
def self.is_local(url) def self.is_local(url)
url.present? && ( url.present? && (
Discourse.store.has_been_uploaded?(url) || Discourse.store.has_been_uploaded?(url) ||
!!(url =~ /^\/(assets|plugins|images)\//) || !!(url =~ Regexp.new("^#{Discourse.base_uri}/(assets|plugins|images)/")) ||
url.start_with?(Discourse.asset_host || Discourse.base_url_no_prefix) url.start_with?(Discourse.asset_host || Discourse.base_url_no_prefix)
) )
end end

View File

@ -28,6 +28,14 @@ describe UrlHelper do
expect(UrlHelper.is_local("/assets/javascripts/all.js")).to eq(true) expect(UrlHelper.is_local("/assets/javascripts/all.js")).to eq(true)
end end
it "is true for relative assets for subfolders" do
store = stub
store.expects(:has_been_uploaded?).returns(false)
Discourse.stubs(:store).returns(store)
Discourse.stubs(:base_uri).returns("/subpath")
expect(UrlHelper.is_local("/subpath/assets/javascripts/all.js")).to eq(true)
end
it "is true for plugin assets" do it "is true for plugin assets" do
store = stub store = stub
store.expects(:has_been_uploaded?).returns(false) store.expects(:has_been_uploaded?).returns(false)