[#issue 64] Routes to Wiki and some methods in controller.
Useless yet.
This commit is contained in:
parent
81378478ca
commit
ec95373d28
|
@ -1,8 +1,28 @@
|
||||||
|
require 'cgi'
|
||||||
|
|
||||||
class WikiController < ApplicationController
|
class WikiController < ApplicationController
|
||||||
|
WIKI_OPTIONS = {:page_file_dir => '/', :ref => 'master'}
|
||||||
|
|
||||||
|
load_and_authorize_resource :project
|
||||||
|
|
||||||
|
before_filter :get_wiki
|
||||||
|
|
||||||
def index
|
def index
|
||||||
|
@name = 'Home'
|
||||||
|
if page = @wiki.page(@name)
|
||||||
|
@page = page
|
||||||
|
@content = page.formatted_data
|
||||||
|
@editable = true
|
||||||
|
render :show
|
||||||
|
else
|
||||||
|
render :new
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
@name = params[:id]
|
||||||
|
rev = params[:rev] ? params[:rev] : nil
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
|
@ -15,5 +35,93 @@ class WikiController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
@name = params[:name]
|
||||||
|
format = params[:format].intern
|
||||||
|
|
||||||
|
begin
|
||||||
|
@wiki.write_page(@name, format, params[:content], commit_message)
|
||||||
|
redirect project_wiki_path(@project, @name)
|
||||||
|
rescue Gollum::DuplicatePageError => e
|
||||||
|
@message = "Duplicate page: #{@name}"
|
||||||
|
render :action => :new
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
def compare
|
||||||
|
@name = params[:id]
|
||||||
|
if request.post?
|
||||||
|
@versions = params[:versions] || []
|
||||||
|
if @versions.size < 2
|
||||||
|
redirect_to history_project_wiki_path(@project, CGI.escape(@name))
|
||||||
|
else
|
||||||
|
redirect_to compare_versions_project_wiki_path(@project, CGI.escape(@name),
|
||||||
|
sprintf('%s...%s', @versions.last, @versions.first))
|
||||||
|
end
|
||||||
|
elsif request.get?
|
||||||
|
@versions = params[:versions].split(/\.{2,3}/)
|
||||||
|
@page = @wiki.page(@name)
|
||||||
|
diffs = @wiki.repo.diff(@versions.first, @versions.last, @page.path)
|
||||||
|
@diff = diffs.first
|
||||||
|
render :compare
|
||||||
|
else
|
||||||
|
redirect_to project_wiki_path(@project, CGI.escape(@name))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def revert
|
||||||
|
@name = params[:id]
|
||||||
|
@page = @wiki.page(@name)
|
||||||
|
sha1 = params[:sha1]
|
||||||
|
sha2 = params[:sha2]
|
||||||
|
|
||||||
|
if @wiki.revert_page(@page, sha1, sha2, commit_message)
|
||||||
|
redirect_to project_wiki_path(@project, "#{CGI.escape(@name)}")
|
||||||
|
else
|
||||||
|
sha2, sha1 = sha1, "#{sha1}^" if !sha2
|
||||||
|
@versions = [sha1, sha2]
|
||||||
|
diffs = @wiki.repo.diff(@versions.first, @versions.last, @page.path)
|
||||||
|
@diff = diffs.first
|
||||||
|
@message = "The patch does not apply."
|
||||||
|
render :compare
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def preview
|
||||||
|
@name = 'Preview'
|
||||||
|
@page = @wiki.preview_page(@name, params[:content], params[:format])
|
||||||
|
@content = @page.formatted_data
|
||||||
|
@editable = false
|
||||||
|
render :show
|
||||||
|
end
|
||||||
|
|
||||||
|
def history
|
||||||
|
@name = params[:name]
|
||||||
|
@page = @wiki.page(@name)
|
||||||
|
@versions = @page.versions :page => params[:page] #try to use will_paginate
|
||||||
|
end
|
||||||
|
|
||||||
|
def search
|
||||||
|
@query = params[:q]
|
||||||
|
@results = @wiki.search @query
|
||||||
|
@name = @query
|
||||||
|
end
|
||||||
|
|
||||||
|
def pages
|
||||||
|
@results = @wiki.pages
|
||||||
|
@ref = @wiki.ref
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def get_wiki
|
||||||
|
@wiki = Gollum::Wiki.new(@project.wiki_path, WIKI_OPTIONS.merge(:base_path => project_wiki_path(@project)))
|
||||||
|
end
|
||||||
|
|
||||||
|
def commit_message
|
||||||
|
{ :message => params[:message] }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,24 @@ Rosa::Application.routes.draw do
|
||||||
|
|
||||||
resources :projects do
|
resources :projects do
|
||||||
resource :repo, :controller => "git/repositories", :only => [:show]
|
resource :repo, :controller => "git/repositories", :only => [:show]
|
||||||
|
resources :wiki do
|
||||||
|
collection do
|
||||||
|
# Uncomment if gollum can revert page without name
|
||||||
|
# match 'revert/:sha1/:sha2' => 'wiki#revert', :as => :revert, :via => :get, :constrains => {:sha1 => /[0-9a-f]{40}/, :sha2 => /[0-9a-f]{40}/}
|
||||||
|
|
||||||
|
post :preview
|
||||||
|
get :search
|
||||||
|
get :pages
|
||||||
|
end
|
||||||
|
member do
|
||||||
|
match 'revert/:sha1/:sha2' => 'wiki#revert', :as => :revert_page, :via => :get
|
||||||
|
match ':rev' => 'wiki#show', :as => :versioned, :via => :get
|
||||||
|
|
||||||
|
get :history
|
||||||
|
post :compare
|
||||||
|
match 'compare/*versions' => 'wiki#compare', :as => :compare_versions, :via => :get
|
||||||
|
end
|
||||||
|
end
|
||||||
resources :build_lists, :only => [:index, :show] do
|
resources :build_lists, :only => [:index, :show] do
|
||||||
collection do
|
collection do
|
||||||
get :recent
|
get :recent
|
||||||
|
|
Loading…
Reference in New Issue