diff options
author | Marin Jankovski <marin@gitlab.com> | 2014-04-28 16:22:31 +0200 |
---|---|---|
committer | Marin Jankovski <marin@gitlab.com> | 2014-04-28 16:22:31 +0200 |
commit | c4b1a5f5ea338d9be6b24f29a562b567b3c2598b (patch) | |
tree | 505b2ac5bd4d38b16e3b471e2c398f5f24617cc5 /app/models | |
parent | 0050c07fdda59f36ca2959e08d422ff5d6479e10 (diff) | |
download | gitlab-ce-c4b1a5f5ea338d9be6b24f29a562b567b3c2598b.tar.gz |
Allow nested files in wiki.
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/project_wiki.rb | 9 | ||||
-rw-r--r-- | app/models/wiki_page.rb | 11 |
2 files changed, 18 insertions, 2 deletions
diff --git a/app/models/project_wiki.rb b/app/models/project_wiki.rb index 163302a18f7..08a52782475 100644 --- a/app/models/project_wiki.rb +++ b/app/models/project_wiki.rb @@ -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! diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb index 76f311ed0b4..c95b82734ab 100644 --- a/app/models/wiki_page.rb +++ b/app/models/wiki_page.rb @@ -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 |