OSDN Git Service

t#32472:add select on profiles
[pettanr/pettanr.git] / app / controllers / story_sheets_controller.rb
1 class StorySheetsController < 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]
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 = StorySheet.page params[:page]
15     @page_size = StorySheet.page_size params[:page_size]
16     @story_sheets = StorySheet.list(@page, @page_size)
17
18     respond_to do |format|
19       format.html {
20         @paginate = StorySheet.list_paginate(@page, @page_size)
21         render :template => 'system/filer', :locals => {
22           :items => @story_sheets, :model => StorySheet, 
23           :roles => [@user, @admin], :pager => @paginate
24         }
25       }
26       format.json { render :json => @story_sheets.to_json(StorySheet.list_json_opt) }
27     end
28   end
29
30   def show
31     @item = StorySheet.show(params[:id], [@user, @admin])
32
33     respond_to do |format|
34       format.html {
35         @story_sheet = @item
36       }
37       format_prof format
38       format.json { render json: @item.to_json(StorySheet.show_json_opt) }
39     end
40   end
41   
42   def list
43     @story_sheets = StorySheet.all
44
45     respond_to do |format|
46       format.html { render layout: 'system' }# index.html.erb
47       format.json { render json: @story_sheets }
48     end
49   end
50
51   def browse
52     @story_sheet = StorySheet.find(params[:id])
53
54     respond_to do |format|
55       format.html { render layout: 'system' } # show.html.erb
56       format.json { render json: @story_sheet }
57     end
58   end
59   
60   def new
61     @story_sheet = StorySheet.new 
62     @story_sheet.supply_default
63     respond_to do |format|
64       format.html # new.html.erb
65       format.js
66       format.json { render json: @story_sheet.to_json(StorySheet.show_json_opt) }
67     end
68   end
69
70   def edit
71     @story_sheet = StorySheet.edit(params[:id], @author)
72     respond_to do |format|
73       format.html 
74       format.js
75     end
76   end
77
78   def create
79     @story_sheet = StorySheet.new 
80     @story_sheet.supply_default
81     @story_sheet.attributes = params[:story_sheet]
82     @story_sheet.overwrite @author
83     @story = Story.edit(@story_sheet.story_id, @author) if @story_sheet.story_id
84     @sheet = Sheet.show(@story_sheet.sheet_id, @author) if @story_sheet.sheet_id
85     
86     respond_to do |format|
87       if @story_sheet.store
88         flash[:notice] = I18n.t('flash.notice.created', :model => StorySheet.model_name.human)
89         format.html { redirect_to play_story_path(@story) }
90         format.json { render json: @story_sheet.to_json(StorySheet.show_json_opt) }
91       else
92         flash[:notice] = I18n.t('flash.notice.not_created', :model => StorySheet.model_name.human)
93         format.html { render action: "new" }
94         format.json { render json: @story_sheet.errors, status: :unprocessable_entity }
95       end
96     end
97   end
98   
99   def update
100     @story_sheet = StorySheet.edit(params[:id], @author)
101     ot = @story_sheet.t
102     @story_sheet.attributes = params[:story_sheet]
103     @story_sheet.overwrite @author
104     @story = Story.edit(@story_sheet.story_id, @author) if @story_sheet.story_id
105     respond_to do |format|
106       if @story_sheet.store ot
107         flash[:notice] = I18n.t('flash.notice.updated', :model => StorySheet.model_name.human)
108         format.html { redirect_to play_story_path(@story) }
109         format.json { head :ok }
110       else
111         flash[:notice] = I18n.t('flash.notice.not_updated', :model => StorySheet.model_name.human)
112         format.html { render action: "edit" }
113         format.json { render json: @story_sheet.errors, status: :unprocessable_entity }
114       end
115     end
116   end
117
118   def destroy
119     @story_sheet = StorySheet.edit(params[:id], @author)
120     @story = Story.edit(@story_sheet.story_id, @author) if @story_sheet.story_id
121     respond_to do |format|
122       if @story_sheet.destroy_and_shorten
123         flash[:notice] = I18n.t('flash.notice.destroyed', :model => StorySheet.model_name.human)
124         format.html { redirect_to play_story_path(@story) }
125         format.json { head :ok }
126       else
127         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => StorySheet.model_name.human)
128         format.html { redirect_to story_sheet_path(@story_sheet) }
129         format.json { render json: @story_sheet.errors, status: :unprocessable_entity }
130       end
131     end
132   end
133 end