OSDN Git Service

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