OSDN Git Service

fix orm
[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_list')
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_list')
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     @story.attributes = params[:story]
105     @story.overwrite
106     @comic = Comic.edit(@story.comic_id, @operators) if @story.comic_id
107     
108     respond_to do |format|
109       if @story.store @operators
110         flash[:notice] = I18n.t('flash.notice.created', :model => Story.model_name.human)
111         format.html { redirect_to play_story_path(@story, :page => @story.t.to_i + 1) }
112         format.json { render json: @story.to_json(Story.show_json_opt) }
113       else
114         flash[:notice] = I18n.t('flash.notice.not_created', :model => Story.model_name.human)
115         format.html { render action: "new" }
116         format.json { render json: @story.errors, status: :unprocessable_entity }
117       end
118     end
119   end
120   
121   def update
122     @story = Story.edit(params[:id], @operators)
123     ot = @story.t
124     @story.attributes = params[:story]
125     @story.overwrite
126     respond_to do |format|
127       if @story.store @operators, ot
128         flash[:notice] = I18n.t('flash.notice.updated', :model => Story.model_name.human)
129         format.html { redirect_to play_story_path(@story, :page => @story.t.to_i + 1) }
130         format.json { head :ok }
131       else
132         flash[:notice] = I18n.t('flash.notice.not_updated', :model => Story.model_name.human)
133         format.html { render action: "edit" }
134         format.json { render json: @story.errors, status: :unprocessable_entity }
135       end
136     end
137   end
138
139   def destroy
140     @story = Story.edit(params[:id], @operators)
141     respond_to do |format|
142       if @story.destroy_and_shorten
143         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Story.model_name.human)
144         format.html { redirect_to comic_path(@story.comic)}
145         format.json { head :ok }
146       else
147         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Story.model_name.human)
148         format.html { redirect_to story_path(@story) }
149         format.json { render json: @story.errors, status: :unprocessable_entity }
150       end
151     end
152   end
153 end