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