Allow nested files in wiki.
This commit is contained in:
parent
0050c07fdd
commit
c4b1a5f5ea
|
@ -64,7 +64,8 @@ class ProjectWiki
|
||||||
#
|
#
|
||||||
# Returns an initialized WikiPage instance or nil
|
# Returns an initialized WikiPage instance or nil
|
||||||
def find_page(title, version = nil)
|
def find_page(title, version = nil)
|
||||||
if page = wiki.page(title, version)
|
page_title, page_dir = page_title_and_dir(title)
|
||||||
|
if page = wiki.page(page_title, version, page_dir)
|
||||||
WikiPage.new(self, page, true)
|
WikiPage.new(self, page, true)
|
||||||
else
|
else
|
||||||
nil
|
nil
|
||||||
|
@ -90,6 +91,12 @@ class ProjectWiki
|
||||||
wiki.delete_page(page, commit_details(:deleted, message, page.title))
|
wiki.delete_page(page, commit_details(:deleted, message, page.title))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def page_title_and_dir(title)
|
||||||
|
title_array = title.split("/")
|
||||||
|
title = title_array.pop
|
||||||
|
[title.gsub(/\.[^.]*$/, ""), title_array.join("/")]
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def create_repo!
|
def create_repo!
|
||||||
|
|
|
@ -175,8 +175,17 @@ class WikiPage
|
||||||
end
|
end
|
||||||
|
|
||||||
def save(method, *args)
|
def save(method, *args)
|
||||||
|
|
||||||
if valid? && wiki.send(method, *args)
|
if valid? && wiki.send(method, *args)
|
||||||
@page = wiki.wiki.paged(title)
|
|
||||||
|
page_details = if method == :update_page
|
||||||
|
@page.path
|
||||||
|
else
|
||||||
|
title
|
||||||
|
end
|
||||||
|
|
||||||
|
page_title, page_dir = wiki.page_title_and_dir(page_details)
|
||||||
|
@page = wiki.wiki.paged(page_title, page_dir)
|
||||||
|
|
||||||
set_attributes
|
set_attributes
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,6 @@
|
||||||
%span Page slug
|
%span Page slug
|
||||||
= text_field_tag :new_wiki_path, nil, placeholder: 'how-to-setup', class: 'form-control', required: true, :'data-wikis-path' => project_wikis_path(@project)
|
= text_field_tag :new_wiki_path, nil, placeholder: 'how-to-setup', class: 'form-control', required: true, :'data-wikis-path' => project_wikis_path(@project)
|
||||||
%p.hint
|
%p.hint
|
||||||
Please don't use spaces and slashes
|
Please don't use spaces.
|
||||||
.modal-footer
|
.modal-footer
|
||||||
= link_to 'Build', '#', class: 'build-new-wiki btn btn-create'
|
= link_to 'Build', '#', class: 'build-new-wiki btn btn-create'
|
||||||
|
|
|
@ -204,7 +204,7 @@ Gitlab::Application.routes.draw do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :wikis, only: [:show, :edit, :destroy, :create], constraints: {id: /[a-zA-Z.0-9_\-]+/} do
|
resources :wikis, only: [:show, :edit, :destroy, :create], constraints: {id: /[a-zA-Z.0-9_\-\/]+/} do
|
||||||
collection do
|
collection do
|
||||||
get :pages
|
get :pages
|
||||||
put ':id' => 'wikis#update'
|
put ':id' => 'wikis#update'
|
||||||
|
|
Loading…
Reference in New Issue