From b82556c9c078ca7c2fd4bed618687323a09716c0 Mon Sep 17 00:00:00 2001 From: bootstraponline Date: Sun, 14 Oct 2012 15:42:06 -0600 Subject: [PATCH] Fix #460 --- lib/gollum/frontend/app.rb | 4 +++- test/test_app.rb | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/gollum/frontend/app.rb b/lib/gollum/frontend/app.rb index 6b0f2d92..b5f4d4ef 100644 --- a/lib/gollum/frontend/app.rb +++ b/lib/gollum/frontend/app.rb @@ -145,6 +145,7 @@ module Precious page_name = CGI.unescape(params[:page]) wiki = wiki_new page = wiki.paged(page_name, path, exact = true) + return if page.nil? rename = params[:rename].to_url if params[:rename] name = rename || page.name committer = Gollum::Committer.new(wiki, commit_message) @@ -192,7 +193,8 @@ module Precious page_dir = File.join(settings.wiki_options[:page_file_dir].to_s, settings.wiki_options[:base_path].to_s) - page_dir = File.join(page_dir, path.sub(page_dir, '')) + + page_dir = File.join(page_dir, path) # write_page is not directory aware so use wiki_options to emulate dir support. wiki_options = settings.wiki_options.merge({ :page_file_dir => page_dir }) diff --git a/test/test_app.rb b/test/test_app.rb index bf1fdb58..c1eca62d 100644 --- a/test/test_app.rb +++ b/test/test_app.rb @@ -273,6 +273,9 @@ context "Frontend" do Precious::App.set(:wiki_options, { :base_path => '/wiki/' }) get "/" assert_match "http://example.org/wiki/Home", last_response.headers['Location'] + + # Reset base path + Precious::App.set(:wiki_options, { :base_path => nil }) end test "author details in session are used" do @@ -377,6 +380,7 @@ context "Frontend with lotr" do test "edit pages within sub-directories" do post "/create", :content => 'big smelly creatures', :page => 'Orc', :path => 'Mordor', :format => 'markdown', :message => 'oooh, scary' + assert_equal 'http://example.org/Mordor/orc', last_response.headers['Location'] post "/edit/Mordor/Orc", :content => 'not so big smelly creatures',