summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorMarin Jankovski <marin@gitlab.com>2014-04-28 16:22:31 +0200
committerMarin Jankovski <marin@gitlab.com>2014-04-28 16:22:31 +0200
commitc4b1a5f5ea338d9be6b24f29a562b567b3c2598b (patch)
tree505b2ac5bd4d38b16e3b471e2c398f5f24617cc5 /app/models
parent0050c07fdda59f36ca2959e08d422ff5d6479e10 (diff)
downloadgitlab-ce-c4b1a5f5ea338d9be6b24f29a562b567b3c2598b.tar.gz
Allow nested files in wiki.
Diffstat (limited to 'app/models')
-rw-r--r--app/models/project_wiki.rb9
-rw-r--r--app/models/wiki_page.rb11
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