OSDN Git Service

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