OSDN Git Service

fix new element dialog
[pettanr/pettanr.git] / app / controllers / sheets_controller.rb
1 class SheetsController < ApplicationController
2   if Manifest.manifest.magic_numbers['run_mode'] == 0
3     before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
4     before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
5   else
6     before_filter :authenticate_reader, :only => [
7       :index, :show, :play, :by_story, :by_panel, :by_author
8     ]
9     before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
10     before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
11   end
12   
13   def index
14     filer_list
15   end
16   
17   def by_story
18     filer_list
19   end
20   
21   def by_panel
22     filer_list
23   end
24   
25   def by_author
26     filer_list
27   end
28   
29   def show_html_format format
30     format.html {
31       if @operators.author
32         @new_panel_items = assist_items('home', 'panels')
33         
34         @new_story_items = assist_items('home', 'stories')
35         @fresh_story_items = assist_items('home', 'story_sheets').map {|ss| ss.story}
36       end
37     }
38   end
39   
40   def show
41     set_show
42     respond_to do |format|
43       show_html_format format
44       show_prof_format format
45       show_json_format_for_root format
46     end
47   end
48   
49   def play
50     @item = self.class.model.show(params[:id], @operators)
51     set_play
52     list_result = @list.open(@operators, params[:id])
53     @items = list_result.items 
54     respond_to do |format|
55       format.html {
56         if @operators.author
57           @new_panel_items = assist_items('panel', 'private')
58         end
59       }
60       format.json { render json: @items.to_json(self.class.model.list_json_opt) }
61     end
62   end
63   
64   def new
65     set_new
66     respond_to do |format|
67       format.html {
68         @editor = Editor::SheetEditor.new @item, @operators
69         render :template => @editor.template_name, :locals => {
70           :editor => @editor
71         }
72       }
73       format.json { render json: @item.to_json }
74     end
75   end
76   
77   def edit
78     set_edit
79     respond_to do |format|
80       format.html {
81         @editor = Editor::SheetEditor.new @item, @operators
82         render :template => @editor.template_name, :locals => {
83           :editor => @editor
84         }
85       }
86       format.json { render json: @item.to_json }
87     end
88   end
89   
90   def create
91     @sheet = Sheet.new
92     @sheet.supply_default 
93     jsn = nil
94     if params[:json]
95       jsn = JSON.parse_no_except(params[:json])
96     end
97     @prm = params[:sheet] || jsn
98     
99     respond_to do |format|
100       if @sheet.store @prm, @operators
101         created_html_format format
102         created_json_format format
103       else
104         format.html {
105           flash[:notice] = I18n.t('flash.notice.not_created', :model => @my_model_class.model_name.human)
106           @editor = Editor::PanelEditor.new @item, @operators
107           render :template => @editor.template_name, :locals => {
108             :editor => @editor
109           }
110         }
111         not_created_json_format format
112       end
113     end
114   end
115   
116   def update
117     @sheet = Sheet.edit(params[:id], @operators)
118     jsn = nil
119     if params[:json]
120       jsn = JSON.parse(params[:json])
121     end
122     @prm = params[:sheet] || jsn
123     respond_to do |format|
124       if @sheet.store @prm, @operators
125         updated_html_format format
126         updated_json_format format
127       else
128         format.html {
129           flash[:notice] = I18n.t('flash.notice.not_updated', :model => @my_model_class.model_name.human)
130           @editor = Editor::PanelEditor.new @item, @operators
131           render :template => @editor.template_name, :locals => {
132             :editor => @editor
133           }
134         }
135         not_updated_json_format format
136       end
137     end
138   end
139   
140   def destroy
141     @sheet = Sheet.edit(params[:id], @operators)
142     respond_to do |format|
143       if @sheet.destroy_with_sheet_panel
144         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Sheet.model_name.human)
145         format.html { redirect_to '/home/sheets' }
146         format.json { head :ok }
147       else
148         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Sheet.model_name.human)
149         format.html { redirect_to @sheet }
150         format.json { render json: @sheet.errors, status: :unprocessable_entity }
151       end
152     end
153   end
154 end