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_comic_items = assist_items('comic', 'private')
37         @new_sheet_items = assist_items('sheet', 'private')
38         #@new_sheet_filer = assist_filer 'sheet', @new_sheet_items
39       end
40     }
41   end
42   
43   def show
44     set_show
45     respond_to do |format|
46       show_html_format format
47       show_prof_format format
48       show_json_format format
49     end
50   end
51   
52   def play
53     @item = Story.show(params[:id], @operators)
54     @page = StorySheet.page params[:page]
55     @sheet = StorySheet.play_sheet(@item, @operators, @page)
56     respond_to do |format|
57       format.html {
58         @paginate = StorySheet.play_paginate(@item, @page)
59         if @operators.author
60           @new_sheet_items = assist_items('sheet', 'private')
61           #@new_sheet_filer = assist_filer 'sheet', @new_sheet_items
62         end
63       }
64       format.json {
65         if @sheet
66           @story_sheets = SheetPanel.play_list @sheet, @author
67           render text: SheetPanel.list_as_json_text(@story_sheets, @author)
68         else
69           render text: ''
70         end
71       }
72       format.jsonp {
73         render :json => "callback(" + @story_sheets.to_json_list + ");"
74       }
75     end
76   end
77   
78   def count
79     list_count
80   end
81   
82   def count_by_comic
83     list_count
84   end
85   
86   def count_by_sheet
87     list_count
88   end
89   
90   def count_by_author
91     list_count
92   end
93   
94   def new
95     form_new
96   end
97   
98   def edit
99     form_edit
100   end
101   
102   def create
103     @story = Story.new
104     @story.supply_default 
105     jsn = nil
106     if params[:json]
107       jsn = JSON.parse_no_except(params[:json])
108     end
109     @prm = params[:story] || jsn
110     
111     respond_to do |format|
112       if @story.store @prm, @operators
113         flash[:notice] = I18n.t('flash.notice.created', :model => Story.model_name.human)
114         format.html { redirect_to @story }
115         format.json { render json: @story.to_json(Story.show_json_opt), status: :created, location: @story }
116       else
117         flash[:notice] = I18n.t('flash.notice.not_created', :model => Story.model_name.human)
118         format.html { render action: "new" }
119         format.json { render json: @story.errors, status: :unprocessable_entity }
120       end
121     end
122   end
123   
124   def update
125     @story = Story.edit(params[:id], @operators)
126     jsn = nil
127     if params[:json]
128       jsn = JSON.parse(params[:json])
129     end
130     @prm = params[:story] || jsn
131     respond_to do |format|
132       if @story.store @prm, @operators
133         flash[:notice] = I18n.t('flash.notice.updated', :model => Story.model_name.human)
134         format.html { redirect_to @story }
135         format.json { head :ok }
136       else
137         flash[:notice] = I18n.t('flash.notice.not_updated', :model => Story.model_name.human)
138         format.html { render action: "edit" }
139         format.json { render json: @story.errors, status: :unprocessable_entity }
140       end
141     end
142   end
143   
144   def destroy
145     @story = Story.edit(params[:id], @operators)
146     respond_to do |format|
147       if @story.destroy_with_story_panel
148         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Story.model_name.human)
149         format.html { redirect_to '/home/stories' }
150         format.json { head :ok }
151       else
152         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Story.model_name.human)
153         format.html { redirect_to @story }
154         format.json { render json: @story.errors, status: :unprocessable_entity }
155       end
156     end
157   end
158   
159 end