OSDN Git Service

t#:
[pettanr/pettanr.git] / app / controllers / authors_controller.rb
1 class AuthorsController < ApplicationController
2   layout 'test' if MagicNumber['test_layout']
3   if MagicNumber['run_mode'] == 0
4     before_filter :authenticate_user, :only => [:new, :create, :edit, :update]
5     before_filter :authenticate_author, :only => [:edit, :update]
6   else
7     before_filter :authenticate_reader, :only => [:index, :show, :scrolls, :scroll_panels, :comics, :stories, :story_sheets, :sheets, :sheet_panels, :panels, :panel_pictures, :speech_balloons, :ground_pictures, :ground_colors]
8     before_filter :authenticate_user, :only => [:new, :create, :edit, :update]
9     before_filter :authenticate_author, :only => [:edit, :update]
10   end
11
12   def self.model
13     Author
14   end
15   
16   def index
17     public_list
18   end
19
20   def show
21     @item = Author.show(params[:id], @operators)
22
23     respond_to do |format|
24       format.html {
25         @author = @item
26       }
27       format_prof format
28       format.json { render :json => @item.to_json(Author.show_json_opt) }
29     end
30   end
31
32   def scrolls
33     @au = Author.show(params[:id], [@user, @admin])
34
35     @page = Author.page params[:page]
36     @page_size = Author.scroll_page_size params[:page_size]
37     @scrolls = Scroll.himlist(@au, @page, @page_size)
38
39     respond_to do |format|
40       format.html {
41         @paginate = Scroll.himlist_paginate(@au, @page, @page_size)
42         render :template => 'system/filer', :locals => {
43           :items => @scrolls, :model => Scroll, 
44           :roles => [@user, @admin], :pager => @paginate
45         }
46       }
47       format.json { render json: @scrolls.to_json(Scroll.list_json_opt) }
48     end
49   end
50   
51   def scroll_panels
52     @au = Author.show(params[:id], [@user, @admin])
53
54     @page = Author.page params[:page]
55     @page_size = Author.scroll_page_size params[:page_size]
56     @scroll_panels = ScrollPanel.himlist(@au, @page, @page_size)
57
58     respond_to do |format|
59       format.html {
60         @paginate = ScrollPanel.himlist_paginate(@au, @page, @page_size)
61         render :template => 'system/filer', :locals => {
62           :items => @scroll_panels, :model => ScrollPanel, 
63           :roles => [@user, @admin], :pager => @paginate
64         }
65       }
66       format.json { render json: @scroll_panels.to_json(ScrollPanel.list_json_opt) }
67     end
68   end
69   
70   def comics
71     @au = Author.show(params[:id], [@user, @admin])
72
73     @page = Author.page params[:page]
74     @page_size = Author.comic_page_size params[:page_size]
75     @comics = Comic.himlist(@au, @page, @page_size)
76
77     respond_to do |format|
78       format.html {
79         @paginate = Comic.himlist_paginate(@au, @page, @page_size)
80         render :template => 'system/filer', :locals => {
81           :items => @comics, :model => Comic, 
82           :roles => [@user, @admin], :pager => @paginate
83         }
84       }
85       format.json { render json: @comics.to_json(Comic.list_json_opt) }
86     end
87   end
88   
89   def stories
90     @au = Author.show(params[:id], [@user, @admin])
91
92     @page = Author.page params[:page]
93     @page_size = Author.story_page_size params[:page_size]
94     @stories = Story.himlist(@au, @page, @page_size)
95
96     respond_to do |format|
97       format.html {
98         @paginate = Story.himlist_paginate(@au, @page, @page_size)
99         render :template => 'system/filer', :locals => {
100           :items => @stories, :model => Story, 
101           :roles => [@user, @admin], :pager => @paginate
102         }
103       }
104       format.json { render json: @stories.to_json(Story.list_json_opt) }
105     end
106   end
107   
108   def story_sheets
109     @au = Author.show(params[:id], [@user, @admin])
110
111     @page = Author.page params[:page]
112     @page_size = Author.sheet_page_size params[:page_size]
113     @story_sheets = StorySheet.himlist(@au, @page, @page_size)
114
115     respond_to do |format|
116       format.html {
117         @paginate = StorySheet.himlist_paginate(@au, @page, @page_size)
118         render :template => 'system/filer', :locals => {
119           :items => @story_sheets, :model => StorySheet, 
120           :roles => [@user, @admin], :pager => @paginate
121         }
122       }
123       format.json { render json: @story_sheets.to_json(StorySheet.list_json_opt) }
124     end
125   end
126   
127   def sheets
128     @au = Author.show(params[:id], [@user, @admin])
129
130     @page = Author.page params[:page]
131     @page_size = Author.sheet_page_size params[:page_size]
132     @sheets = Sheet.himlist(@au, @page, @page_size)
133
134     respond_to do |format|
135       format.html {
136         @paginate = Sheet.himlist_paginate(@au, @page, @page_size)
137         render :template => 'system/filer', :locals => {
138           :items => @sheets, :model => Sheet, 
139           :roles => [@user, @admin], :pager => @paginate
140         }
141       }
142       format.json { render json: @sheets.to_json(Sheet.list_json_opt) }
143     end
144   end
145   
146   def sheet_panels
147     @au = Author.show(params[:id], [@user, @admin])
148
149     @page = Author.page params[:page]
150     @page_size = Author.sheet_page_size params[:page_size]
151     @sheet_panels = SheetPanel.himlist(@au, @page, @page_size)
152
153     respond_to do |format|
154       format.html {
155         @paginate = SheetPanel.himlist_paginate(@au, @page, @page_size)
156         render :template => 'system/filer', :locals => {
157           :items => @sheet_panels, :model => SheetPanel, 
158           :roles => [@user, @admin], :pager => @paginate
159         }
160       }
161       format.json { render json: @sheet_panels.to_json(SheetPanel.list_json_opt) }
162     end
163   end
164   
165   def panels
166     @au = Author.show(params[:id], [@user, @admin])
167
168     @page = Author.page params[:page]
169     @page_size = Author.panel_page_size params[:page_size]
170     @panels = Panel.himlist(@au, @page, @page_size)
171
172     respond_to do |format|
173       format.html {
174         @paginate = Panel.himlist_paginate(@au, @page, @page_size)
175         render :template => 'system/filer', :locals => {
176           :items => @panels, :model => Panel, 
177           :roles => [@user, @admin], :pager => @paginate
178         }
179       }
180       format.json { render text: Panel.list_as_json_text(@panels) }
181     end
182   end
183   
184   def panel_pictures
185     @au = Author.show(params[:id], [@user, @admin])
186
187     @page = Author.page params[:page]
188     @page_size = Author.panel_picture_page_size params[:page_size]
189     @panel_pictures = PanelPicture.himlist(@au, @page, @page_size)
190
191     respond_to do |format|
192       format.html {
193         @paginate = PanelPicture.himlist_paginate(@au, @page, @page_size)
194         render :template => 'system/filer', :locals => {
195           :items => @panel_pictures, :model => PanelPicture, 
196           :roles => [@user, @admin], :pager => @paginate
197         }
198       }
199       format.json { render json: @panel_pictures.to_json(PanelPicture.list_json_opt) }
200     end
201   end
202   
203   def speech_balloons
204     @au = Author.show(params[:id], [@user, @admin])
205
206     @page = Author.page params[:page]
207     @page_size = Author.panel_picture_page_size params[:page_size]
208     @speech_balloons = SpeechBalloon.himlist(@au, @page, @page_size)
209
210     respond_to do |format|
211       format.html {
212         @paginate = SpeechBalloon.himlist_paginate(@au, @page, @page_size)
213         render :template => 'system/filer', :locals => {
214           :items => @speech_balloons, :model => SpeechBalloon, 
215           :roles => [@user, @admin], :pager => @paginate
216         }
217       }
218       format.json { render json: @speech_balloons.to_json(SpeechBalloon.list_json_opt) }
219     end
220   end
221   
222   def ground_pictures
223     @au = Author.show(params[:id], [@user, @admin])
224
225     @page = Author.page params[:page]
226     @page_size = Author.ground_picture_page_size params[:page_size]
227     @ground_pictures = GroundPicture.himlist(@au, @page, @page_size)
228
229     respond_to do |format|
230       format.html {
231         @paginate = GroundPicture.himlist_paginate(@au, @page, @page_size)
232         render :template => 'system/filer', :locals => {
233           :items => @ground_pictures, :model => GroundPicture, 
234           :roles => [@user, @admin], :pager => @paginate
235         }
236       }
237       format.json { render json: @ground_pictures.to_json(GroundPicture.list_json_opt) }
238     end
239   end
240   
241   def ground_colors
242     @au = Author.show(params[:id], [@user, @admin])
243
244     @page = Author.page params[:page]
245     @page_size = Author.ground_color_page_size params[:page_size]
246     @ground_colors = GroundColor.himlist(@au, @page, @page_size)
247
248     respond_to do |format|
249       format.html {
250         @paginate = GroundColor.himlist_paginate(@au, @page, @page_size)
251         render :template => 'system/filer', :locals => {
252           :items => @ground_colors, :model => GroundColor, 
253           :roles => [@user, @admin], :pager => @paginate
254         }
255       }
256       format.json { render json: @ground_colors.to_json(GroundColor.list_json_opt) }
257     end
258   end
259   
260   def count
261     @au = {:count => Author.visible_count}
262     respond_to do |format|
263       format.json { render json: @au.to_json }
264     end
265   end
266   
267   def new
268     @author = Author.new
269     @author.supply_default 
270
271     respond_to do |format|
272       format.html
273       format.js
274       format.json { render json: @au.to_json(Author.show_json_opt) }
275     end
276   end
277
278   def edit
279     @author = Author.edit(params[:id], @operators)
280   end
281
282   def create
283     @author = Author.new()
284     @author.supply_default 
285     @author.attributes = params[:author]
286     @author.overwrite @operators
287     respond_to do |format|
288       if @author.save
289         flash[:notice] = I18n.t('flash.notice.created', :model => Author.model_name.human)
290         format.html { redirect_to root_path }
291         format.json { render json: @author.to_json(Author.show_json_opt), status: :created }
292       else
293         flash[:notice] = I18n.t('flash.notice.not_created', :model => Author.model_name.human)
294         format.html { render action: "new" }
295         format.json { render json: @au.errors, status: :unprocessable_entity }
296       end
297     end
298   end
299
300   def update
301     @author = Author.edit(params[:id], @operators)
302     @author.attributes = params[:author]
303     @author.overwrite @operators
304
305     respond_to do |format|
306       if @author.save
307         flash[:notice] = I18n.t('flash.notice.updated', :model => Author.model_name.human)
308         format.html { redirect_to '/home/configure' }
309         format.json { head :ok }
310       else
311         flash[:notice] = I18n.t('flash.notice.not_updated', :model => Author.model_name.human)
312         format.html { render action: "edit" }
313         format.json { render json: @author.errors, status: :unprocessable_entity }
314       end
315     end
316   end
317 end