lib/gollum/frontend/app.rb in gollum-2.1.0 vs lib/gollum/frontend/app.rb in gollum-2.1.2

- old
+ new

@@ -80,24 +80,28 @@ configure :test do enable :logging, :raise_errors, :dump_errors end before do - @base_url = settings.wiki_options.has_key?(:base_url) ? settings.wiki_options[:base_url] : url('/') + @base_url = url('/', false) settings.wiki_options.merge!({ :base_path => @base_url }) unless settings.wiki_options.has_key? :base_path end get '/' do show_page_or_file('Home') end + # path is set to name if path is nil. + # if path is 'a/b' and a and b are dirs, then + # path must have a trailing slash 'a/b/' or + # extract_path will trim path to 'a' # name, path, version def wiki_page( name, path = nil, version = nil) path = name if path.nil? - name = extract_name(name) path = extract_path(path) + wiki = wiki_new OpenStruct.new(:wiki => wiki, :page => wiki.paged(name, path, version), :name => name, :path => path) end @@ -135,11 +139,11 @@ redirect to("/create/#{CGI.escape(@name)}") end end post '/edit/*' do - wikip = wiki_page(CGI.unescape(params[:page]), sanitize_empty_params(params[:path])) + wikip = wiki_page(CGI.unescape(params[:page]), sanitize_empty_params(params[:path])) path = wikip.path wiki = wikip.wiki page = wikip.page rename = params[:rename].to_url if params[:rename] name = rename || page.name @@ -166,13 +170,12 @@ redirect to('/') end get '/create/*' do - splat = params[:splat].first - wikip = wiki_page(extract_name(splat).to_url, splat) - @name = wikip.name + wikip = wiki_page(params[:splat].first) + @name = wikip.name.to_url @path = wikip.path page = wikip.page if page redirect to("/#{page.escaped_url_path}") @@ -191,11 +194,11 @@ wiki = Gollum::Wiki.new(settings.gollum_path, wiki_options) begin wiki.write_page(name, format, params[:content], commit_message) page = wiki.page(name) - redirect to("/#{page.escaped_url_path}") + redirect to("/#{page.escaped_url_path}") unless page.nil? rescue Gollum::DuplicatePageError => e @message = "Duplicate page: #{e.message}" mustache :error end end @@ -283,13 +286,14 @@ halt 404 end get %r{/(.+?)/([0-9a-f]{40})} do file_path = params[:captures][0] - name = extract_name(file_path) - path = extract_path(file_path) version = params[:captures][1] - if page = wiki_page(name, path, version).page + wikip = wiki_page(file_path, file_path, version) + name = wikip.name + path = wikip.path + if page = wikip.page @page = page @name = name @content = page.formatted_data @editable = true mustache :page