OSDN Git Service

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