OSDN Git Service

t#32046:
[pettanr/pettanr.git] / app / controllers / stories_controller.rb
1 class StoriesController < 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]
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   before_filter :authenticate_admin!, :only => [:list, :browse]
12
13   def index
14     @page = Story.page params[:page]
15     @page_size = Story.page_size params[:page_size]
16     @stories = Story.list(@page, @page_size)
17
18     respond_to do |format|
19       format.html {
20         @paginate = Story.list_paginate(@page, @page_size)
21       }
22       format.json { render :json => @stories.to_json(Story.list_json_opt) }
23     end
24   end
25
26   def show
27     @story = Story.show(params[:id], [@user, @admin])
28
29     respond_to do |format|
30       format.html { 
31         @sheet = StorySheet.play_sheet(@story, @author)
32         if @author
33           @new_sheets = Sheet.mylist(@author, 1, 5)
34         end
35       }
36       format.json { render json: @story.story_as_json(@author) }
37     end
38   end
39   
40   def play
41     @story = Story.show(params[:id], [@user, @admin])
42     @page = StorySheet.page params[:page]
43     @sheet = StorySheet.play_sheet(@story, @author, @page)
44     respond_to do |format|
45       format.html {
46         @paginate = StorySheet.play_paginate(@story, @page)
47         if @author
48           @new_sheets = Sheet.mylist(@author, 1, 5)
49         end
50       }
51       format.json {render text: StorySheet.list_as_json_text(@story_sheets, @author)}
52       format.jsonp {
53         render :json => "callback(" + @story_sheets.to_json_list + ");"
54       }
55     end
56   end
57   
58   def list
59     @stories = Story.all
60
61     respond_to do |format|
62       format.html { render layout: 'system' }# index.html.erb
63       format.json { render json: @stories }
64     end
65   end
66
67   def browse
68     @story = Story.find(params[:id])
69
70     respond_to do |format|
71       format.html { render layout: 'system' } # show.html.erb
72       format.json { render json: @story }
73     end
74   end
75   
76   def new
77     @story = Story.new 
78     @story.supply_default
79     respond_to do |format|
80       format.html # new.html.erb
81       format.js
82       format.json { render json: @story.story_as_json(@author) }
83     end
84   end
85
86   def edit
87     @story = Story.edit(params[:id], @author)
88     respond_to do |format|
89       format.html 
90       format.js
91     end
92   end
93
94   def create
95     @story = Story.new 
96     @story.supply_default
97     @story.attributes = params[:story]
98     @story.overwrite @author
99     @comic = Comic.edit(@story.comic_id, @author) if @story.comic_id
100     
101     respond_to do |format|
102       if @story.store
103         flash[:notice] = I18n.t('flash.notice.created', :model => Story.model_name.human)
104         format.html { redirect_to story_path(@story) }
105         format.json { render json: @story.story_as_json(@author) }
106       else
107         flash[:notice] = I18n.t('flash.notice.not_created', :model => Story.model_name.human)
108         format.html { render action: "new" }
109         format.json { render json: @story.errors, status: :unprocessable_entity }
110       end
111     end
112   end
113   
114   def update
115     @story = Story.edit(params[:id], @author)
116     ot = @story.t
117     @story.attributes = params[:story]
118     @story.overwrite @author
119     respond_to do |format|
120       if @story.store ot
121         flash[:notice] = I18n.t('flash.notice.updated', :model => Story.model_name.human)
122         format.html { redirect_to story_path(@story) }
123         format.json { head :ok }
124       else
125         flash[:notice] = I18n.t('flash.notice.not_updated', :model => Story.model_name.human)
126         format.html { render action: "edit" }
127         format.json { render json: @story.errors, status: :unprocessable_entity }
128       end
129     end
130   end
131
132   def destroy
133     @story = Story.edit(params[:id], @author)
134     respond_to do |format|
135       if @story.destroy_and_shorten
136         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Story.model_name.human)
137         format.html { redirect_to comic_path(@story.comic)}
138         format.json { head :ok }
139       else
140         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Story.model_name.human)
141         format.html { redirect_to story_path(@story) }
142         format.json { render json: @story.errors, status: :unprocessable_entity }
143       end
144     end
145   end
146 end