OSDN Git Service

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