OSDN Git Service

add comic story
[pettanr/pettanr.git] / app / controllers / stories_controller.rb
1 class StoriesController < ApplicationController
2   if Manifest.manifest.magic_numbers['run_mode'] == 0
3     before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
4     before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
5   else
6     before_filter :authenticate_reader, :only => [
7       :index, :show, :play, :by_comic, :by_sheet, :by_author, :count, :count_by_comic, :count_by_sheet, :count_by_author
8     ]
9     before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
10     before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
11   end
12
13   def self.model
14     Story
15   end
16   
17   def index
18     filer_list
19   end
20   
21   def by_comic
22     filer_list
23   end
24   
25   def by_sheet
26     filer_list
27   end
28   
29   def by_author
30     filer_list
31   end
32   
33   def show_html_format format
34     format.html {
35       if @operators.author
36         @new_sheet_items = assist_items('sheet', 'private')
37         #@new_sheet_filer = assist_filer 'sheet', @new_sheet_items
38       end
39     }
40   end
41   
42   def show
43     set_show
44     respond_to do |format|
45       show_html_format format
46       show_prof_format format
47       show_json_format format
48     end
49   end
50   
51   def play
52     @item = Story.show(params[:id], @operators)
53     @page = StorySheet.page params[:page]
54     @sheet = StorySheet.play_sheet(@item, @operators, @page)
55     respond_to do |format|
56       format.html {
57         @paginate = StorySheet.play_paginate(@item, @page)
58         if @operators.author
59           @new_sheet_items = assist_items('sheet', 'private')
60           #@new_sheet_filer = assist_filer 'sheet', @new_sheet_items
61         end
62       }
63       format.json {
64         if @sheet
65           @story_sheets = SheetPanel.play_list @sheet, @author
66           render text: SheetPanel.list_as_json_text(@story_sheets, @author)
67         else
68           render text: ''
69         end
70       }
71       format.jsonp {
72         render :json => "callback(" + @story_sheets.to_json_list + ");"
73       }
74     end
75   end
76   
77   def count
78     list_count
79   end
80   
81   def count_by_comic
82     list_count
83   end
84   
85   def count_by_sheet
86     list_count
87   end
88   
89   def count_by_author
90     list_count
91   end
92   
93   def new
94     form_new
95   end
96   
97   def edit
98     form_edit
99   end
100   
101   def create
102     @story = Story.new
103     @story.supply_default 
104     jsn = nil
105     if params[:json]
106       jsn = JSON.parse_no_except(params[:json])
107     end
108     @prm = params[:story] || jsn
109     
110     respond_to do |format|
111       if @story.store @prm, @operators
112         flash[:notice] = I18n.t('flash.notice.created', :model => Story.model_name.human)
113         format.html { redirect_to @story }
114         format.json { render json: @story.to_json(Story.show_json_opt), status: :created, location: @story }
115       else
116         flash[:notice] = I18n.t('flash.notice.not_created', :model => Story.model_name.human)
117         format.html { render action: "new" }
118         format.json { render json: @story.errors, status: :unprocessable_entity }
119       end
120     end
121   end
122   
123   def update
124     @story = Story.edit(params[:id], @operators)
125     jsn = nil
126     if params[:json]
127       jsn = JSON.parse(params[:json])
128     end
129     @prm = params[:story] || jsn
130     respond_to do |format|
131       if @story.store @prm, @operators
132         flash[:notice] = I18n.t('flash.notice.updated', :model => Story.model_name.human)
133         format.html { redirect_to @story }
134         format.json { head :ok }
135       else
136         flash[:notice] = I18n.t('flash.notice.not_updated', :model => Story.model_name.human)
137         format.html { render action: "edit" }
138         format.json { render json: @story.errors, status: :unprocessable_entity }
139       end
140     end
141   end
142   
143   def destroy
144     @story = Story.edit(params[:id], @operators)
145     respond_to do |format|
146       if @story.destroy_with_story_panel
147         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Story.model_name.human)
148         format.html { redirect_to '/home/stories' }
149         format.json { head :ok }
150       else
151         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Story.model_name.human)
152         format.html { redirect_to @story }
153         format.json { render json: @story.errors, status: :unprocessable_entity }
154       end
155     end
156   end
157   
158 end