OSDN Git Service

29390ce48c58cd2db62674587dd1b876adee5b7a
[pettanr/pettanr.git] / app / controllers / panels_controller.rb
1 class PanelsController < ApplicationController
2   layout 'test' if Pettanr::TestLayout
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 json: @panels.to_json(Panel.list_json_opt) }
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.to_json(Panel.show_json_include_opt) }
29       format.jsonp {
30         render :json => "callback(" + @panel.to_json(Panel.show_json_include_opt) + ");"
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 }
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     if params[:json]
84       jsn = JSON.parse(params[:json])
85     end
86     @prm = params[:panel] || jsn
87     @panel.attributes = @prm
88     @panel.overwrite @author
89     respond_to do |format|
90       if @panel.store
91         format.html { redirect_to @panel, notice: 'Panel was successfully created.' }
92         format.json { render json: @panel, status: :created, location: @panel }
93       else
94         format.html { render action: "new" }
95         format.json { render json: @panel.errors, status: :unprocessable_entity }
96       end
97     end
98   end
99
100   # PUT /panels/1
101   # PUT /panels/1.json
102   def update
103     @panel = Panel.edit(params[:id], @author)
104     if params[:json]
105       jsn = JSON.parse(params[:json])
106     end
107     @prm = params[:panel] || jsn
108     @panel.attributes = @prm
109     @panel.overwrite @author
110     respond_to do |format|
111       if @panel.store
112         format.html { redirect_to @panel, notice: 'Panel was successfully updated.' }
113         format.json { head :ok }
114       else
115         format.html { render action: "edit" }
116         format.json { render json: @panel.errors, status: :unprocessable_entity }
117       end
118     end
119   end
120
121   # DELETE /panels/1
122   # DELETE /panels/1.json
123   def destroy
124     @panel = Panel.edit(params[:id], @author)
125     respond_to do |format|
126       Panel.transaction do
127         @panel.destroy
128         format.html { redirect_to panels_url }
129         format.json { head :ok }
130       end
131     end
132   end
133   
134 end