wikis_controller.rb 1.7 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 5 6
  before_filter :authorize_read_wiki!
  before_filter :authorize_write_wiki!, :except => [:show, :destroy]
  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
V
Valery Sizov 已提交
15
    respond_to do |format|
V
Valery Sizov 已提交
16 17 18 19 20 21
      if @wiki
        format.html
      else
        @wiki = @project.wikis.new(:slug => params[:id])
        format.html { render "edit" }
      end
V
Valery Sizov 已提交
22 23 24 25
    end
  end

  def edit
V
Valery Sizov 已提交
26 27
    @wiki = @project.wikis.where(:slug => params[:id]).order("created_at").last
    @wiki = Wiki.regenerate_from @wiki
V
Valery Sizov 已提交
28 29 30
  end

  def create
V
Valery Sizov 已提交
31
    @wiki = @project.wikis.new(params[:wiki])
V
Valery Sizov 已提交
32
    @wiki.user = current_user
V
Valery Sizov 已提交
33 34 35

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

  def history
    @wikis = @project.wikis.where(:slug => params[:id]).order("created_at")
  end
V
Valery Sizov 已提交
46
  
V
Valery Sizov 已提交
47
  def destroy
V
vsizov 已提交
48
    @wikis = @project.wikis.where(:slug => params[:id]).delete_all
V
Valery Sizov 已提交
49 50

    respond_to do |format|
V
vsizov 已提交
51
      format.html { redirect_to project_wiki_path(@project, :index), notice: "Page was successfully deleted" }
V
Valery Sizov 已提交
52 53
    end
  end
D
Dmitriy Zaporozhets 已提交
54 55 56 57 58 59 60 61 62 63 64 65 66 67

  protected 

  def authorize_read_wiki!
    can?(current_user, :read_wiki, @project)
  end

  def authorize_write_wiki!
    can?(current_user, :write_wiki, @project)
  end

  def authorize_admin_wiki!
    can?(current_user, :admin_wiki, @project)
  end
V
Valery Sizov 已提交
68
end