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