OSDN Git Service

fix
[pettanr/pettanr.git] / app / controllers / sheets_controller.rb
1 class SheetsController < ApplicationController
2   layout 'test' if MagicNumber['test_layout']
3   if MagicNumber['run_mode'] == 0
4     before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
5     before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
6   else
7     before_filter :authenticate_reader, :only => [:index, :show, :play, :story_sheets, :stories, :sheet_panels, :panels, :by_story, :by_panel, :by_author]
8     before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
9     before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
10   end
11
12   def self.model
13     Sheet
14   end
15   
16   def index
17     public_list
18   end
19   
20   def story_sheets
21     has_many_list
22   end
23   
24   def stories
25     has_many_list
26   end
27   
28   def sheet_panels
29     has_many_list
30   end
31   
32   def panels
33     has_many_list
34   end
35   
36   def by_story
37     filter_list
38   end
39   
40   def by_panel
41     filter_list
42   end
43   
44   def by_author
45     filter_list
46   end
47   
48   def show
49     @item = Sheet.show(params[:id], @operators)
50
51     respond_to do |format|
52       format.html {
53         if @operators.author
54           @new_panel_items = assist_items('panel', 'private_list')
55           @new_panel_filer = assist_filer 'panel', @new_panel_items
56           
57           @new_story_items = assist_items('story', 'private_list')
58           @new_story_filer = assist_filer 'story', @new_story_items
59           @fresh_story_items = assist_items('story_sheet', 'private_list').map {|ss| ss.story}
60           @fresh_story_filer = assist_filer 'story', @fresh_story_items
61         end
62       }
63       format_prof format
64       format.json { render json: @item.to_json(Sheet.show_json_opt) }
65       format.atom 
66       format.rss 
67     end
68   end
69
70   def play
71     @item = self.class.model.show(params[:id], @operators)
72     action_name = params[:action]
73     @action = self.class.controller.open(action_name, params, @operators)
74     @items = @action.list.items @item
75     respond_to do |format|
76       format.html {
77         @count = @action.list.count @item
78         @prev_offset = @action.list.prev_offset @item
79         @next_offset = @action.list.next_offset @item
80         if @operators.author
81           @new_panel_items = assist_items('panel', 'private_list')
82           @new_panel_filer = assist_filer 'panel', @new_panel_items
83         end
84       }
85       format.json { render json: @items.to_json(self.class.model.list_json_opt) }
86     end
87   end
88   
89   def count
90     @sheet = {:count => Sheet.visible_count}
91     respond_to do |format|
92       format.json { render json: @sheet.to_json }
93     end
94   end
95   
96   def new
97     @sheet = Sheet.new
98     @sheet.supply_default
99     respond_to do |format|
100       format.html
101       format.js
102       format.json { render json: @sheet.to_json(Sheet.show_json_opt) }
103     end
104   end
105
106   def edit
107     @sheet = Sheet.edit(params[:id], @operators)
108     respond_to do |format|
109       format.html 
110       format.js
111     end
112   end
113
114   def create
115     @sheet = Sheet.new
116     @sheet.supply_default 
117     jsn = nil
118     if params[:json]
119       jsn = JSON.parse_no_except(params[:json])
120     end
121     @prm = params[:sheet] || jsn
122
123     respond_to do |format|
124       if @sheet.store @prm, @operators
125         flash[:notice] = I18n.t('flash.notice.created', :model => Sheet.model_name.human)
126         format.html { redirect_to @sheet }
127         format.json { render json: @sheet.to_json(Sheet.show_json_opt), status: :created, location: @sheet }
128       else
129         flash[:notice] = I18n.t('flash.notice.not_created', :model => Sheet.model_name.human)
130         format.html { render action: "new" }
131         format.json { render json: @sheet.errors, status: :unprocessable_entity }
132       end
133     end
134   end
135
136   def update
137     @sheet = Sheet.edit(params[:id], @operators)
138     jsn = nil
139     if params[:json]
140       jsn = JSON.parse(params[:json])
141     end
142     @prm = params[:sheet] || jsn
143     respond_to do |format|
144       if @sheet.store @prm, @operators
145         flash[:notice] = I18n.t('flash.notice.updated', :model => Sheet.model_name.human)
146         format.html { redirect_to @sheet }
147         format.json { head :ok }
148       else
149         flash[:notice] = I18n.t('flash.notice.not_updated', :model => Sheet.model_name.human)
150         format.html { render action: "edit" }
151         format.json { render json: @sheet.errors, status: :unprocessable_entity }
152       end
153     end
154   end
155
156   def destroy
157     @sheet = Sheet.edit(params[:id], @operators)
158     respond_to do |format|
159       if @sheet.destroy_with_sheet_panel
160         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Sheet.model_name.human)
161         format.html { redirect_to '/home/sheets' }
162         format.json { head :ok }
163       else
164         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Sheet.model_name.human)
165         format.html { redirect_to @sheet }
166         format.json { render json: @sheet.errors, status: :unprocessable_entity }
167       end
168     end
169   end
170 end