OSDN Git Service

t#32471:add profiles
[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   before_filter :authenticate_admin!, :only => [:list, :browse]
12
13   def index
14     @page = Story.page params[:page]
15     @page_size = Story.page_size params[:page_size]
16     @stories = Story.list(@page, @page_size)
17
18     respond_to do |format|
19       format.html {
20         @paginate = Story.list_paginate(@page, @page_size)
21         render :template => 'system/filer', :locals => {
22           :items => @stories, :model => Story, 
23           :roles => [@user, @admin], :pager => @paginate
24         }
25       }
26       format.json { render :json => @stories.to_json(Story.list_json_opt) }
27     end
28   end
29
30   def show
31     @item = Story.show(params[:id], [@user, @admin])
32
33     respond_to do |format|
34       format.html { 
35         if @author
36           @new_sheets = Sheet.mylist(@author, 1, 5)
37         end
38       }
39       format_prof format
40       format.json { render json: @item.to_json(Story.show_json_opt) }
41     end
42   end
43   
44   def play
45     @story = Story.show(params[:id], [@user, @admin])
46     @page = StorySheet.page params[:page]
47     @sheet = StorySheet.play_sheet(@story, @author, @page)
48     respond_to do |format|
49       format.html {
50         @paginate = StorySheet.play_paginate(@story, @page)
51         if @author
52           @new_sheets = Sheet.mylist(@author, 1, 5)
53         end
54       }
55       format.json {
56         if @sheet
57           @story_sheets = SheetPanel.play_list @sheet, @author
58           render text: SheetPanel.list_as_json_text(@story_sheets, @author)
59         else
60           render text: ''
61         end
62       }
63       format.jsonp {
64         render :json => "callback(" + @story_sheets.to_json_list + ");"
65       }
66     end
67   end
68   
69   def list
70     @stories = Story.all
71
72     respond_to do |format|
73       format.html { render layout: 'system' }# index.html.erb
74       format.json { render json: @stories }
75     end
76   end
77
78   def browse
79     @story = Story.find(params[:id])
80
81     respond_to do |format|
82       format.html { render layout: 'system' } # show.html.erb
83       format.json { render json: @story }
84     end
85   end
86   
87   def new
88     @story = Story.new 
89     @story.supply_default
90     respond_to do |format|
91       format.html # new.html.erb
92       format.js
93       format.json { render json: @story.to_json(Story.show_json_opt) }
94     end
95   end
96
97   def edit
98     @story = Story.edit(params[:id], @author)
99     respond_to do |format|
100       format.html 
101       format.js
102     end
103   end
104
105   def create
106     @story = Story.new 
107     @story.supply_default
108     @story.attributes = params[:story]
109     @story.overwrite
110     @comic = Comic.edit(@story.comic_id, @author) if @story.comic_id
111     
112     respond_to do |format|
113       if @story.store @author
114         flash[:notice] = I18n.t('flash.notice.created', :model => Story.model_name.human)
115         format.html { redirect_to play_story_path(@story, :page => @story.t.to_i + 1) }
116         format.json { render json: @story.to_json(Story.show_json_opt) }
117       else
118         flash[:notice] = I18n.t('flash.notice.not_created', :model => Story.model_name.human)
119         format.html { render action: "new" }
120         format.json { render json: @story.errors, status: :unprocessable_entity }
121       end
122     end
123   end
124   
125   def update
126     @story = Story.edit(params[:id], @author)
127     ot = @story.t
128     @story.attributes = params[:story]
129     @story.overwrite
130     respond_to do |format|
131       if @story.store  @author, ot
132         flash[:notice] = I18n.t('flash.notice.updated', :model => Story.model_name.human)
133         format.html { redirect_to play_story_path(@story, :page => @story.t.to_i + 1) }
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], @author)
145     respond_to do |format|
146       if @story.destroy_and_shorten
147         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Story.model_name.human)
148         format.html { redirect_to comic_path(@story.comic)}
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_path(@story) }
153         format.json { render json: @story.errors, status: :unprocessable_entity }
154       end
155     end
156   end
157 end