OSDN Git Service

work
[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
12   def self.model
13     Story
14   end
15   
16   def index
17     public_list
18   end
19
20   def show
21     @item = Story.show(params[:id], @operators)
22
23     respond_to do |format|
24       format.html { 
25         if @operators.author
26           @new_sheet_items = assist_items('sheet', 'private_list')
27           @new_sheet_filer = assist_filer 'sheet', @new_sheet_items
28         end
29       }
30       format_prof format
31       format.json { render json: @item.to_json(Story.show_json_opt) }
32     end
33   end
34   
35   def play
36     @story = Story.show(params[:id], @operators)
37     @page = StorySheet.page params[:page]
38     @sheet = StorySheet.play_sheet(@story, @author, @page)
39     respond_to do |format|
40       format.html {
41         @paginate = StorySheet.play_paginate(@story, @page)
42         if @author
43           @new_sheets = Sheet.mylist(@author, 1, 5)
44         end
45       }
46       format.json {
47         if @sheet
48           @story_sheets = SheetPanel.play_list @sheet, @author
49           render text: SheetPanel.list_as_json_text(@story_sheets, @author)
50         else
51           render text: ''
52         end
53       }
54       format.jsonp {
55         render :json => "callback(" + @story_sheets.to_json_list + ");"
56       }
57     end
58   end
59   
60   def new
61     @story = Story.new 
62     @story.supply_default
63     respond_to do |format|
64       format.html
65       format.js
66       format.json { render json: @story.to_json(Story.show_json_opt) }
67     end
68   end
69
70   def edit
71     @story = Story.edit(params[:id], @operators)
72     respond_to do |format|
73       format.html 
74       format.js
75     end
76   end
77
78   def create
79     @story = Story.new 
80     @story.supply_default
81     @story.attributes = params[:story]
82     @story.overwrite
83     @comic = Comic.edit(@story.comic_id, @operators) if @story.comic_id
84     
85     respond_to do |format|
86       if @story.store @operators
87         flash[:notice] = I18n.t('flash.notice.created', :model => Story.model_name.human)
88         format.html { redirect_to play_story_path(@story, :page => @story.t.to_i + 1) }
89         format.json { render json: @story.to_json(Story.show_json_opt) }
90       else
91         flash[:notice] = I18n.t('flash.notice.not_created', :model => Story.model_name.human)
92         format.html { render action: "new" }
93         format.json { render json: @story.errors, status: :unprocessable_entity }
94       end
95     end
96   end
97   
98   def update
99     @story = Story.edit(params[:id], @operators)
100     ot = @story.t
101     @story.attributes = params[:story]
102     @story.overwrite
103     respond_to do |format|
104       if @story.store @operators, ot
105         flash[:notice] = I18n.t('flash.notice.updated', :model => Story.model_name.human)
106         format.html { redirect_to play_story_path(@story, :page => @story.t.to_i + 1) }
107         format.json { head :ok }
108       else
109         flash[:notice] = I18n.t('flash.notice.not_updated', :model => Story.model_name.human)
110         format.html { render action: "edit" }
111         format.json { render json: @story.errors, status: :unprocessable_entity }
112       end
113     end
114   end
115
116   def destroy
117     @story = Story.edit(params[:id], @operators)
118     respond_to do |format|
119       if @story.destroy_and_shorten
120         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Story.model_name.human)
121         format.html { redirect_to comic_path(@story.comic)}
122         format.json { head :ok }
123       else
124         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Story.model_name.human)
125         format.html { redirect_to story_path(@story) }
126         format.json { render json: @story.errors, status: :unprocessable_entity }
127       end
128     end
129   end
130 end