OSDN Git Service

t30350#:fix destroy
[pettanr/pettanr.git] / app / controllers / panels_controller.rb
1 class PanelsController < ApplicationController
2   layout 'test' if MagicNumber['test_layout']
3   before_filter :authenticate_user!, :only => [:index, :show, :new, :edit, :create, :update, :destroy]
4   before_filter :authenticate_author, :only => [:index, :show, :new, :edit, :create, :update, :destroy]
5   before_filter :authenticate_admin!, :only => [:list, :browse]
6
7   public
8   
9   def index
10     @page = Panel.page params[:page]
11     @page_size = Panel.page_size params[:page_size]
12     @panels = Panel.list(@page, @page_size)
13
14     respond_to do |format|
15       format.html # index.html.erb
16       format.json { render text: Panel.list_as_json_text(@panels) }
17     end
18   end
19
20   def show
21     @panel = Panel.show(params[:id], @author)
22
23     respond_to do |format|
24       format.html # show.html.erb
25       format.json { render json: @panel.panel_elements_as_json }
26       format.jsonp {
27         render :json => "callback(" + @panel.panel_elements_as_json + ");"
28       }
29     end
30   end
31
32   def count
33     @panel = {:count => Panel.visible_count}
34     respond_to do |format|
35       format.json { render json: @panel.to_json }
36     end
37   end
38   
39   def list
40     @panels = Panel.all :order => 'updated_at'
41
42     respond_to do |format|
43       format.html { render layout: 'system' }
44       format.json { render json: @panels }
45     end
46   end
47
48   def browse
49     @panel = Panel.find(params[:id])
50
51     respond_to do |format|
52       format.html { render layout: 'system' }
53     end
54   end
55
56   def new
57     @panel = Panel.new
58     @panel.supply_default
59
60     respond_to do |format|
61       format.html # new.html.erb
62       format.js
63       format.json { render json: @panel.panel_elements_as_json }
64     end
65   end
66
67   def edit
68     @panel = Panel.edit(params[:id], @author)
69     respond_to do |format|
70       format.html
71       format.js
72     end
73   end
74
75   def create
76     @panel = Panel.new
77     @panel.supply_default
78     jsn = nil
79     if params[:json]
80       jsn = JSON.parse_no_except(params[:json])
81     end
82     @prm = params[:panel] || jsn
83     respond_to do |format|
84       if @panel.store @prm, @author
85         flash[:notice] = I18n.t('flash.notice.created', :model => Panel.model_name.human)
86         format.html { redirect_to @panel }
87         format.json { render json: @panel.panel_elements_as_json, status: :created, location: @panel }
88       else
89         format.html { render action: "new" }
90         format.json { render json: @panel.errors, status: :unprocessable_entity }
91       end
92     end
93   end
94
95   def update
96     @panel = Panel.edit(params[:id], @author)
97     jsn = nil
98     if params[:json]
99       jsn = JSON.parse(params[:json])
100     end
101     @prm = params[:panel] || jsn
102     respond_to do |format|
103       if @panel.store @prm, @author
104         flash[:notice] = I18n.t('flash.notice.updated', :model => Panel.model_name.human)
105         format.html { redirect_to @panel }
106         format.json { head :ok }
107       else
108         format.html { render action: "edit" }
109         format.json { render json: @panel.errors, status: :unprocessable_entity }
110       end
111     end
112   end
113
114   def destroy
115     @panel = Panel.edit(params[:id], @author)
116     respond_to do |format|
117       Panel.transaction do
118         if @panel.destroy_with_elements
119           flash[:notice] = I18n.t('flash.notice.destroyed', :model => Panel.model_name.human)
120           format.html { redirect_to '/home/panel' }
121           format.json { head :ok }
122         else
123           flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Panel.model_name.human)
124           format.html { redirect_to @panel }
125           format.json { render json: @panel.errors, status: :unprocessable_entity }
126         end
127       end
128     end
129   end
130   
131 end