Commit 5bbe6559 authored by Alex Braha Stoll's avatar Alex Braha Stoll

Add component to show the full path of a wiki page when viewing its content

parent 294acf1c
...@@ -14,7 +14,8 @@ ...@@ -14,7 +14,8 @@
font-size: 22px; font-size: 22px;
} }
.wiki-last-edit-by { .wiki-last-edit-by, .wiki-page-full-path {
display: block;
color: $gl-gray-light; color: $gl-gray-light;
strong { strong {
......
...@@ -88,6 +88,12 @@ class WikiPage ...@@ -88,6 +88,12 @@ class WikiPage
end end
end end
# The hierarchy of the directory this page is contained in.
def directory
dir = wiki.page_title_and_dir(slug).last
dir.present? ? dir : '/'
end
# The processed/formatted content of this page. # The processed/formatted content of this page.
def formatted_content def formatted_content
@attributes[:formatted_content] ||= if @page @attributes[:formatted_content] ||= if @page
...@@ -100,6 +106,11 @@ class WikiPage ...@@ -100,6 +106,11 @@ class WikiPage
@attributes[:format] || :markdown @attributes[:format] || :markdown
end end
# The full path for this page, including its filename and extension.
def full_path
"/#{directory}/#{page.filename}".gsub(/\/+/, '/')
end
# The commit message for this page version. # The commit message for this page version.
def message def message
version.try(:message) version.try(:message)
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
.nav-text .nav-text
%h2.wiki-page-title= @page.title.capitalize %h2.wiki-page-title= @page.title.capitalize
%span.wiki-page-full-path= "(#{@page.full_path})"
%span.wiki-last-edit-by %span.wiki-last-edit-by
Last edited by Last edited by
%strong %strong
......
...@@ -224,6 +224,46 @@ describe WikiPage, models: true do ...@@ -224,6 +224,46 @@ describe WikiPage, models: true do
end end
end end
describe '#directory' do
context 'when the page is at the root directory' do
it 'returns /' do
create_page('file', 'content')
page = wiki.find_page('file')
expect(page.directory).to eq('/')
end
end
context 'when the page is inside an actual directory' do
it 'returns the full directory hierarchy' do
create_page('dir_1/dir_1_1/file', 'content')
page = wiki.find_page('dir_1/dir_1_1/file')
expect(page.directory).to eq('dir_1/dir_1_1')
end
end
end
describe '#full_path' do
context 'when the page is at the root directory' do
it 'returns /filename.fileextension' do
create_page('file', 'content')
page = wiki.find_page('file')
expect(page.full_path).to eq('/file.md')
end
end
context 'when the page is inside an actual directory' do
it 'returns /directory/filename.fileextension' do
create_page('dir/file', 'content')
page = wiki.find_page('dir/file')
expect(page.full_path).to eq('/dir/file.md')
end
end
end
describe '#historical?' do describe '#historical?' do
before do before do
create_page('Update', 'content') create_page('Update', 'content')
......
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