Commit a4a8ac21 authored by Gabriel Mazetto's avatar Gabriel Mazetto Committed by Alejandro Rodríguez

Merge branch 'unescape-relative-path' into 'master'

Avoid escaping relative links in Markdown twice

## What does this MR do?

Avoid escaping relative links in Markdown twice.

## Why was this MR needed?

Relative links with special characters (e.g. spaces) were escaped twice.

## What are the relevant issue numbers?

closes #25191, #25318

See merge request !7940
parent fed8b5e6
---
title: Avoid escaping relative links in Markdown twice
merge_request: 7940
author: winniehell
......@@ -46,7 +46,7 @@ module Banzai
end
def rebuild_relative_uri(uri)
file_path = relative_file_path(uri.path)
file_path = relative_file_path(uri)
uri.path = [
relative_url_root,
......@@ -59,8 +59,10 @@ module Banzai
uri
end
def relative_file_path(path)
nested_path = build_relative_path(path, context[:requested_path])
def relative_file_path(uri)
path = Addressable::URI.unescape(uri.path)
request_path = Addressable::URI.unescape(context[:requested_path])
nested_path = build_relative_path(path, request_path)
file_exists?(nested_path) ? nested_path : path
end
......@@ -108,11 +110,7 @@ module Banzai
end
def uri_type(path)
@uri_types[path] ||= begin
unescaped_path = Addressable::URI.unescape(path)
current_commit.uri_type(unescaped_path)
end
@uri_types[path] ||= current_commit.uri_type(path)
end
def current_commit
......
......@@ -175,7 +175,7 @@ describe Banzai::Filter::RelativeLinkFilter, lib: true do
allow_any_instance_of(described_class).to receive(:uri_type).and_return(:raw)
doc = filter(image(escaped))
expect(doc.at_css('img')['src']).to match '/raw/'
expect(doc.at_css('img')['src']).to eq "/#{project_path}/raw/#{Addressable::URI.escape(ref)}/#{escaped}"
end
context 'when requested path is a file in the repo' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment