wikis_controller.rb 1.5 KB
Newer Older
V
Valery Sizov 已提交
1 2
class WikisController < ApplicationController
  before_filter :project
V
Valery Sizov 已提交
3
  before_filter :add_project_abilities
D
Dmitriy Zaporozhets 已提交
4
  before_filter :authorize_read_wiki!
5
  before_filter :authorize_write_wiki!, :only => [:edit, :create, :history]
D
Dmitriy Zaporozhets 已提交
6
  before_filter :authorize_admin_wiki!, :only => :destroy
V
Valery Sizov 已提交
7 8 9
  layout "project"
  
  def show
V
Valery Sizov 已提交
10 11 12 13 14
    if params[:old_page_id]
      @wiki = @project.wikis.find(params[:old_page_id])
    else
      @wiki = @project.wikis.where(:slug => params[:id]).order("created_at").last
    end
15 16 17 18 19

    unless @wiki
      return render_404 unless can?(current_user, :write_wiki, @project)
    end

V
Valery Sizov 已提交
20
    respond_to do |format|
V
Valery Sizov 已提交
21 22 23 24 25 26
      if @wiki
        format.html
      else
        @wiki = @project.wikis.new(:slug => params[:id])
        format.html { render "edit" }
      end
V
Valery Sizov 已提交
27 28 29 30
    end
  end

  def edit
V
Valery Sizov 已提交
31 32
    @wiki = @project.wikis.where(:slug => params[:id]).order("created_at").last
    @wiki = Wiki.regenerate_from @wiki
V
Valery Sizov 已提交
33 34 35
  end

  def create
V
Valery Sizov 已提交
36
    @wiki = @project.wikis.new(params[:wiki])
V
Valery Sizov 已提交
37
    @wiki.user = current_user
V
Valery Sizov 已提交
38 39 40

    respond_to do |format|
      if @wiki.save
V
Valery Sizov 已提交
41
        format.html { redirect_to [@project, @wiki], notice: 'Wiki was successfully updated.' }
V
Valery Sizov 已提交
42 43 44 45 46
      else
        format.html { render action: "edit" }
      end
    end
  end
V
Valery Sizov 已提交
47 48 49 50

  def history
    @wikis = @project.wikis.where(:slug => params[:id]).order("created_at")
  end
V
Valery Sizov 已提交
51
  
V
Valery Sizov 已提交
52
  def destroy
V
vsizov 已提交
53
    @wikis = @project.wikis.where(:slug => params[:id]).delete_all
V
Valery Sizov 已提交
54 55

    respond_to do |format|
V
vsizov 已提交
56
      format.html { redirect_to project_wiki_path(@project, :index), notice: "Page was successfully deleted" }
V
Valery Sizov 已提交
57 58 59
    end
  end
end