OSDN Git Service

add show
[pettanr/pettanr.git] / app / controllers / sheets_controller.rb
1 class SheetsController < ApplicationController
2   if Manifest.manifest.magic_numbers['run_mode'] == 0
3     before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
4     before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
5   else
6     before_filter :authenticate_reader, :only => [
7       :index, :show, :play, :by_story, :by_panel, :by_author, :count, :count_by_story, :count_by_panel, :count_by_author
8     ]
9     before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
10     before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
11   end
12
13   def self.model
14     Sheet
15   end
16   
17   def index
18     filer_list
19   end
20   
21   def by_story
22     filer_list
23   end
24   
25   def by_panel
26     filer_list
27   end
28   
29   def by_author
30     filer_list
31   end
32   
33   def show_html_format format
34     format.html {
35       if @operators.author
36         @new_panel_items = assist_items('panel', 'private')
37         
38         @new_story_items = assist_items('story', 'private')
39         @fresh_story_items = assist_items('story_sheet', 'private').map {|ss| ss.story}
40       end
41     }
42   end
43   
44   def show
45     set_show
46     respond_to do |format|
47       show_html_format format
48       show_prof_format format
49       show_json_format_for_root format
50     end
51   end
52   
53   def play
54     @item = self.class.model.show(params[:id], @operators)
55     set_play
56     list_result = @list.open(@operators, 
57       {:id => params[:id]}
58     )
59     @items = list_result.items 
60     respond_to do |format|
61       format.html {
62         if @operators.author
63           @new_panel_items = assist_items('panel', 'private')
64         end
65       }
66       format.json { render json: @items.to_json(self.class.model.list_json_opt) }
67     end
68   end
69   
70   def count
71     list_count
72   end
73   
74   def count_by_story
75     list_count
76   end
77   
78   def count_by_panel
79     list_count
80   end
81   
82   def count_by_author
83     list_count
84   end
85   
86   def new
87     set_new
88     respond_to do |format|
89       format.html {
90         @editor = Editor::SheetEditor.new @item, @operators
91         render :template => @editor.template_name, :locals => {
92           :editor => @editor
93         }
94       }
95       format.json { render json: @item.to_json }
96     end
97   end
98   
99   def edit
100     set_edit
101     respond_to do |format|
102       format.html {
103         @editor = Editor::SheetEditor.new @item, @operators
104         render :template => @editor.template_name, :locals => {
105           :editor => @editor
106         }
107       }
108       format.json { render json: @item.to_json }
109     end
110   end
111   
112   def create
113     @sheet = Sheet.new
114     @sheet.supply_default 
115     jsn = nil
116     if params[:json]
117       jsn = JSON.parse_no_except(params[:json])
118     end
119     @prm = params[:sheet] || jsn
120     
121     respond_to do |format|
122       if @sheet.store @prm, @operators
123         created_html_format format
124         created_json_format format
125       else
126         format.html {
127           flash[:notice] = I18n.t('flash.notice.not_created', :model => @my_model_class.model_name.human)
128           @editor = Editor::PanelEditor.new @item, @operators
129           render :template => @editor.template_name, :locals => {
130             :editor => @editor
131           }
132         }
133         not_created_json_format format
134       end
135     end
136   end
137   
138   def update
139     @sheet = Sheet.edit(params[:id], @operators)
140     jsn = nil
141     if params[:json]
142       jsn = JSON.parse(params[:json])
143     end
144     @prm = params[:sheet] || jsn
145     respond_to do |format|
146       if @sheet.store @prm, @operators
147         updated_html_format format
148         updated_json_format format
149       else
150         format.html {
151           flash[:notice] = I18n.t('flash.notice.not_updated', :model => @my_model_class.model_name.human)
152           @editor = Editor::PanelEditor.new @item, @operators
153           render :template => @editor.template_name, :locals => {
154             :editor => @editor
155           }
156         }
157         not_updated_json_format format
158       end
159     end
160   end
161   
162   def destroy
163     @sheet = Sheet.edit(params[:id], @operators)
164     respond_to do |format|
165       if @sheet.destroy_with_sheet_panel
166         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Sheet.model_name.human)
167         format.html { redirect_to '/home/sheets' }
168         format.json { head :ok }
169       else
170         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Sheet.model_name.human)
171         format.html { redirect_to @sheet }
172         format.json { render json: @sheet.errors, status: :unprocessable_entity }
173       end
174     end
175   end
176 end