More refactoring.
Fix delete.
This commit is contained in:
+36
-30
@@ -91,14 +91,15 @@ module Precious
|
|||||||
end
|
end
|
||||||
|
|
||||||
# name, path, version
|
# name, path, version
|
||||||
def wiki_page( name, path = nil, version = nil )
|
def wiki_page( name, path = nil, version = nil)
|
||||||
path = name if path.nil?
|
path = name if path.nil?
|
||||||
|
|
||||||
name = extract_name(name)
|
name = extract_name(name)
|
||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user