More refactoring.

Fix delete.
This commit is contained in:
bootstraponline
2012-08-01 00:51:10 -06:00
parent 72e26fc90b
commit a0f05eaf67
+35 -29
View File
@@ -98,7 +98,8 @@ module Precious
path = extract_path(path) path = extract_path(path)
wiki = wiki_new wiki = wiki_new
wiki.paged(name, path, version) OpenStruct.new(:wiki => wiki, :page => wiki.paged(name, path, version),
:name => name, :path => path)
end end
def wiki_new def wiki_new
@@ -106,17 +107,17 @@ module Precious
end end
get '/data/*' do get '/data/*' do
if page = wiki_page(params[:splat].first) if page = wiki_page(params[:splat].first).page
page.raw_data page.raw_data
end end
end end
get '/edit/*' do get '/edit/*' do
splat = params[:splat].first wikip = wiki_page(params[:splat].first)
@name = extract_name(splat) @name = wikip.name
@path = extract_path(splat) @path = wikip.path
wiki = wiki_new wiki = wikip.wiki
if page = wiki.paged(@name, @path) if page = wikip.page
if wiki.live_preview && page.format.to_s.include?('markdown') && supported_useragent?(request.user_agent) if wiki.live_preview && page.format.to_s.include?('markdown') && supported_useragent?(request.user_agent)
live_preview_url = '/livepreview/index.html?page=' + encodeURIComponent(@name) live_preview_url = '/livepreview/index.html?page=' + encodeURIComponent(@name)
if @path if @path
@@ -136,10 +137,10 @@ module Precious
end end
post '/edit/*' do post '/edit/*' do
path = extract_path(sanitize_empty_params(params[:path])) wikip = wiki_page(CGI.unescape(params[:page]), sanitize_empty_params(params[:path]))
wiki_options = settings.wiki_options.merge({ :page_file_dir => path }) path = wikip.path
wiki = Gollum::Wiki.new(settings.gollum_path, wiki_options) wiki = wikip.wiki
page = wiki.page(CGI.unescape(params[:page])) page = wikip.page
rename = params[:rename].to_url if params[:rename] rename = params[:rename].to_url if params[:rename]
name = rename || page.name name = rename || page.name
committer = Gollum::Committer.new(wiki, commit_message) committer = Gollum::Committer.new(wiki, commit_message)
@@ -157,20 +158,22 @@ module Precious
end end
get '/delete/*' do get '/delete/*' do
name = params[:splat].first wikip = wiki_page(params[:splat].first)
page = wiki_page(params[:splat].first) name = wikip.name
wiki = wiki_new wiki = wikip.wiki
page = wikip.page
wiki.delete_page(page, { :message => "Destroyed #{name} (#{page.format})" }) wiki.delete_page(page, { :message => "Destroyed #{name} (#{page.format})" })
redirect to('/') redirect to('/')
end end
get '/create/*' do get '/create/*' do
@name = extract_name(params[:splat].first).to_url splat = params[:splat].first
@path = extract_path(params[:splat].first) wikip = wiki_page(extract_name(splat).to_url, splat)
wiki = wiki_new @name = wikip.name
@path = wikip.path
page = wiki.paged(@name,@path) page = wikip.page
if page if page
redirect to("/#{page.escaped_url_path}") redirect to("/#{page.escaped_url_path}")
else else
@@ -183,6 +186,7 @@ module Precious
path = sanitize_empty_params(params[:path]) path = sanitize_empty_params(params[:path])
format = params[:format].intern format = params[:format].intern
# write_page is not directory aware so use wiki_options to emulate dir support.
wiki_options = settings.wiki_options.merge({ :page_file_dir => path }) wiki_options = settings.wiki_options.merge({ :page_file_dir => path })
wiki = Gollum::Wiki.new(settings.gollum_path, wiki_options) wiki = Gollum::Wiki.new(settings.gollum_path, wiki_options)
@@ -197,9 +201,10 @@ module Precious
end end
post '/revert/:page/*' do post '/revert/:page/*' do
@path = extract_path(params[:page]) wikip = wiki_page(params[:page])
@name = extract_name(params[:page]) @path = wikip.path
wiki = wiki_new @name = wikip.name
wiki = wikip.wiki
@page = wiki.paged(@name,@path) @page = wiki.paged(@name,@path)
shas = params[:splat].first.split("/") shas = params[:splat].first.split("/")
sha1 = shas.shift sha1 = shas.shift
@@ -218,7 +223,7 @@ module Precious
end end
post '/preview' do post '/preview' do
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options) wiki = wiki_new
@name = params[:page] || "Preview" @name = params[:page] || "Preview"
@page = wiki.preview_page(@name, params[:content], params[:format]) @page = wiki.preview_page(@name, params[:content], params[:format])
@content = @page.formatted_data @content = @page.formatted_data
@@ -229,7 +234,7 @@ module Precious
end end
get '/history/*' do get '/history/*' do
@page = wiki_page(params[:splat].first) @page = wiki_page(params[:splat].first).page
@page_num = [params[:page].to_i, 1].max @page_num = [params[:page].to_i, 1].max
@versions = @page.versions :page => @page_num @versions = @page.versions :page => @page_num
mustache :history mustache :history
@@ -257,11 +262,12 @@ module Precious
\.{2,3} # match .. or ... \.{2,3} # match .. or ...
(.+) # match the second SHA1 (.+) # match the second SHA1
}x do |path, start_version, end_version| }x do |path, start_version, end_version|
@path = extract_path(path) wikip = wiki_page(path)
@name = extract_name(path) @path = wikip.path
@name = wikip.name
@versions = [start_version, end_version] @versions = [start_version, end_version]
wiki = wiki_new wiki = wikip.wiki
@page = wiki.paged(@name,@path) @page = wikip.page
diffs = wiki.repo.diff(@versions.first, @versions.last, @page.path) diffs = wiki.repo.diff(@versions.first, @versions.last, @page.path)
@diff = diffs.first @diff = diffs.first
mustache :compare mustache :compare
@@ -282,7 +288,7 @@ module Precious
name = extract_name(file_path) name = extract_name(file_path)
path = extract_path(file_path) path = extract_path(file_path)
version = params[:captures][1] version = params[:captures][1]
if page = wiki_page(name, path, version) if page = wiki_page(name, path, version).page
@page = page @page = page
@name = name @name = name
@content = page.formatted_data @content = page.formatted_data
@@ -295,7 +301,7 @@ module Precious
get '/search' do get '/search' do
@query = params[:q] @query = params[:q]
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options) wiki = wiki_new
@results = wiki.search @query @results = wiki.search @query
@name = @query @name = @query
mustache :search mustache :search