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