OSDN Git Service

fix form
[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
34     @item = Sheet.show(params[:id], @operators)
35
36     respond_to do |format|
37       format.html {
38         if @operators.author
39           @new_panel_items = assist_items('panel', 'private_list')
40           @new_panel_filer = assist_filer 'panel', @new_panel_items
41           
42           @new_story_items = assist_items('story', 'private_list')
43           @new_story_filer = assist_filer 'story', @new_story_items
44           @fresh_story_items = assist_items('story_sheet', 'private_list').map {|ss| ss.story}
45           @fresh_story_filer = assist_filer 'story', @fresh_story_items
46         end
47       }
48       format_prof format
49       format.json { render json: @item.to_json(Sheet.show_json_opt) }
50       format.atom 
51       format.rss 
52     end
53   end
54
55   def play
56     @item = self.class.model.show(params[:id], @operators)
57     action_name = params[:action]
58     @action = self.class.controller.open(action_name, params, @operators)
59     @items = @action.list.items @item
60     respond_to do |format|
61       format.html {
62         @count = @action.list.count @item
63         @prev_offset = @action.list.prev_offset @item
64         @next_offset = @action.list.next_offset @item
65         if @operators.author
66           @new_panel_items = assist_items('panel', 'private_list')
67           @new_panel_filer = assist_filer 'panel', @new_panel_items
68         end
69       }
70       format.json { render json: @items.to_json(self.class.model.list_json_opt) }
71     end
72   end
73   
74   def count
75     list_count
76   end
77   
78   def count_by_story
79     list_count
80   end
81   
82   def count_by_panel
83     list_count
84   end
85   
86   def count_by_author
87     list_count
88   end
89   
90   def new
91     form_new
92   end
93   
94   def edit
95     form_edit
96   end
97   
98   def create
99     @sheet = Sheet.new
100     @sheet.supply_default 
101     jsn = nil
102     if params[:json]
103       jsn = JSON.parse_no_except(params[:json])
104     end
105     @prm = params[:sheet] || jsn
106
107     respond_to do |format|
108       if @sheet.store @prm, @operators
109         flash[:notice] = I18n.t('flash.notice.created', :model => Sheet.model_name.human)
110         format.html { redirect_to @sheet }
111         format.json { render json: @sheet.to_json(Sheet.show_json_opt), status: :created, location: @sheet }
112       else
113         flash[:notice] = I18n.t('flash.notice.not_created', :model => Sheet.model_name.human)
114         format.html { render action: "new" }
115         format.json { render json: @sheet.errors, status: :unprocessable_entity }
116       end
117     end
118   end
119
120   def update
121     @sheet = Sheet.edit(params[:id], @operators)
122     jsn = nil
123     if params[:json]
124       jsn = JSON.parse(params[:json])
125     end
126     @prm = params[:sheet] || jsn
127     respond_to do |format|
128       if @sheet.store @prm, @operators
129         flash[:notice] = I18n.t('flash.notice.updated', :model => Sheet.model_name.human)
130         format.html { redirect_to @sheet }
131         format.json { head :ok }
132       else
133         flash[:notice] = I18n.t('flash.notice.not_updated', :model => Sheet.model_name.human)
134         format.html { render action: "edit" }
135         format.json { render json: @sheet.errors, status: :unprocessable_entity }
136       end
137     end
138   end
139
140   def destroy
141     @sheet = Sheet.edit(params[:id], @operators)
142     respond_to do |format|
143       if @sheet.destroy_with_sheet_panel
144         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Sheet.model_name.human)
145         format.html { redirect_to '/home/sheets' }
146         format.json { head :ok }
147       else
148         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Sheet.model_name.human)
149         format.html { redirect_to @sheet }
150         format.json { render json: @sheet.errors, status: :unprocessable_entity }
151       end
152     end
153   end
154 end