foodsoft/app/controllers/pages_controller.rb

113 lines
2.7 KiB
Ruby
Raw Normal View History

class PagesController < ApplicationController
def index
@page = Page.find_by_permalink "Home"
if @page
render :action => 'show'
else
redirect_to all_pages_path
end
end
def show
2009-09-28 15:31:20 +02:00
if params[:permalink]
@page = Page.find_by_permalink(params[:permalink])
elsif params[:id]
page = Page.find_by_id(params[:id])
if page.nil?
flash[:error] = "Seite existiert nicht!"
redirect_to all_pages_path and return
else
redirect_to wiki_page_path(page.permalink) and return
end
end
if @page.nil?
redirect_to new_page_path(:title => params[:permalink])
elsif @page.redirect?
flash[:notice] = "Weitergeleitet von #{@page.title} ..."
redirect_to wiki_page_path(Page.find(@page.redirect).permalink)
end
end
def new
@page = Page.new
@page.title = params[:title].gsub("_", " ") if params[:title]
@page.parent = Page.find_by_permalink(params[:parent]) if params[:parent]
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @page }
end
end
def edit
@page = Page.find(params[:id])
end
def create
2009-05-15 17:32:45 +02:00
@page = current_user.pages.build(params[:page])
if params[:preview]
render :action => 'new'
else
if @page.save
2009-05-07 18:15:14 +02:00
flash[:notice] = 'Seite wurde angelegt.'
redirect_to(wiki_page_path(@page.permalink))
else
render :action => "new"
end
end
end
def update
@page = Page.find(params[:id])
@page.attributes = params[:page].merge({:user => current_user})
if params[:preview]
@page.attributes = params[:page]
render :action => 'edit'
else
if @page.save
@page.parent_id = parent_id if (!params[:parent_id].blank? \
and params[:parent_id] != @page_id)
flash[:notice] = 'Seite wurde aktualisiert.'
redirect_to wiki_page_path(@page.permalink)
else
render :action => "edit"
end
end
rescue ActiveRecord::StaleObjectError
flash[:error] = "Achtung, die Seite wurde gerade von jemand anderes bearbeitet. Bitte versuche es erneut."
redirect_to wiki_page_path(@page.permalink)
end
def destroy
@page = Page.find(params[:id])
@page.destroy
respond_to do |format|
format.html { redirect_to(pages_url) }
format.xml { head :ok }
end
end
def all
@pages = Page.all :order => 'updated_at DESC', :conditions => {:redirect => nil}
end
2009-05-15 17:32:45 +02:00
def version
@page = Page.find(params[:id])
@version = Page::Version.find_by_page_id_and_lock_version params[:id], params[:version]
2009-05-15 17:32:45 +02:00
end
def revert
@page = Page.find(params[:id])
@page.revert_to!(params[:version].to_i)
2009-05-15 17:32:45 +02:00
redirect_to wiki_page_path(@page.permalink)
2009-05-15 17:32:45 +02:00
end
end