Allow nested files in wiki.
This commit is contained in:
parent
0050c07fdd
commit
c4b1a5f5ea
4 changed files with 20 additions and 4 deletions
|
@ -64,7 +64,8 @@ class ProjectWiki
|
|||
#
|
||||
# Returns an initialized WikiPage instance or 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)
|
||||
else
|
||||
nil
|
||||
|
@ -90,6 +91,12 @@ class ProjectWiki
|
|||
wiki.delete_page(page, commit_details(:deleted, message, page.title))
|
||||
end
|
||||
|
||||
def page_title_and_dir(title)
|
||||
title_array = title.split("/")
|
||||
title = title_array.pop
|
||||
[title.gsub(/\.[^.]*$/, ""), title_array.join("/")]
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_repo!
|
||||
|
|
|
@ -175,8 +175,17 @@ class WikiPage
|
|||
end
|
||||
|
||||
def save(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
|
||||
|
||||
|
|
|
@ -9,6 +9,6 @@
|
|||
%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)
|
||||
%p.hint
|
||||
Please don't use spaces and slashes
|
||||
Please don't use spaces.
|
||||
.modal-footer
|
||||
= link_to 'Build', '#', class: 'build-new-wiki btn btn-create'
|
||||
|
|
|
@ -204,7 +204,7 @@ Gitlab::Application.routes.draw do
|
|||
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
|
||||
get :pages
|
||||
put ':id' => 'wikis#update'
|
||||
|
|
Loading…
Reference in a new issue