OSDN Git Service

rename model name
[pettanr/pettanr.git] / app / controllers / panels_controller.rb
1 class PanelsController < ApplicationController
2   if Manifest.manifest.magic_numbers['run_mode'] == 0
3     before_filter :authenticate_user, :only => [:new, :edit, :create, :update, :destroy, :catch]
4     before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy, :catch]
5   else
6     before_filter :authenticate_reader, :only => [
7       :index, :show, :by_scroll, :by_sheet, :by_author, :by_speech_balloon_template
8     ]
9     before_filter :authenticate_user, :only => [:new, :edit, :create, :update, :destroy, :catch]
10     before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy, :catch]
11   end
12   
13   private
14   def panel_list
15     set_list
16     list_result = @list.open(@operators)
17     @items = list_result.items 
18     @pager = list_result.paginate
19     respond_to do |format|
20       format.html 
21       format.json { render json: @items.map{|i| i.attributes}.to_json }
22       format.atom 
23       format.rss
24     end
25   end
26   public
27   def index
28     if params[:mode] == 'filer'
29       filer_list
30     else
31       panel_list
32     end
33   end
34   
35   def by_scroll
36     filer_list
37   end
38   
39   def by_sheet
40     filer_list
41   end
42   
43   def by_author
44     filer_list
45   end
46   
47   def by_speech_balloon_template
48     filer_list
49   end
50   
51   def show_html_format format
52     format.html {
53       if @operators.author
54         @new_scroll_items = assist_items('home', 'scrolls')
55         @fresh_scroll_items = assist_items('home', 'scroll_panels').map {|sp| sp.scroll}
56       end
57     }
58   end
59   
60   def show
61     set_show
62     respond_to do |format|
63       show_html_format format
64       show_prof_format format
65       if params[:with_elements]
66         show_json_format_for_root format
67       else
68         show_json_format format
69       end
70     end
71   end
72
73   def count
74     list_count
75   end
76   
77   def count_by_scroll
78     list_count
79   end
80   
81   def count_by_sheet
82     list_count
83   end
84   
85   def count_by_author
86     list_count
87   end
88   
89   def count_by_speech_balloon_template
90     list_count
91   end
92   
93   def new
94     set_new
95     respond_to do |format|
96       format.html {
97         @editor = Editor::PanelEditor.new @item, @operators
98         render :template => @editor.template_name, :locals => {
99           :editor => @editor
100         }
101       }
102       format.json { render json: @item.to_json }
103     end
104   end
105   
106   def edit
107     set_edit
108     respond_to do |format|
109       format.html {
110         @editor = Editor::PanelEditor.new @item, @operators
111         render :template => @editor.template_name, :locals => {
112           :editor => @editor
113         }
114       }
115       format.json { render json: @item.to_json }
116     end
117   end
118   
119   def create
120     set_model
121     @item = @my_model_class.new
122 #    @item.boosts 'post'
123     jsn = nil
124     if params[:json]
125       jsn = JSON.parse_no_except(params[:json])
126     end
127     @prm = if params[:panel] == nil or params[:panel].empty?
128        jsn
129     else
130        params[:panel]
131     end
132     @item.class.fold_extend_settings @prm
133     #@item.refresh
134     respond_to do |format|
135       if @item.store @prm, @operators
136         created_html_format format
137         created_json_format format
138       else
139         format.html {
140           flash[:notice] = I18n.t('flash.notice.not_created', :model => @my_model_class.model_name.human)
141           @editor = Editor::PanelEditor.new @item, @operators
142           render :template => @editor.template_name, :locals => {
143             :editor => @editor
144           }
145         }
146         not_created_json_format format
147       end
148     end
149   end
150   
151   def update
152     @item = Panel.edit(params[:id], @operators)
153     @item.boosts 'post'
154     jsn = nil
155     if params[:json]
156       jsn = JSON.parse(params[:json])
157     end
158     @prm = params[:panel] || jsn
159     self.model.fold_extend_settings @prm
160     @item.attributes = @prm
161     @item.refresh
162     respond_to do |format|
163       if @item.store @item.packed_attributes, @operators
164         updated_html_format format
165         updated_json_format format
166       else
167         format.html {
168           flash[:notice] = I18n.t('flash.notice.not_updated', :model => @my_model_class.model_name.human)
169           @editor = Editor::PanelEditor.new @item, @operators
170           render :template => @editor.template_name, :locals => {
171             :editor => @editor
172           }
173         }
174         not_updated_json_format format
175       end
176     end
177   end
178   
179   def destroy
180     @item = Panel.edit(params[:id], @operators)
181     respond_to do |format|
182       Panel.transaction do
183         if @item.destroy_with_elements
184           flash[:notice] = I18n.t('flash.notice.destroyed', :model => Panel.model_name.human)
185           format.html { redirect_to '/home/panels' }
186           format.json { head :ok }
187         else
188           flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Panel.model_name.human)
189           format.html { redirect_to @item }
190           format.json { render json: @item.errors, status: :unprocessable_entity }
191         end
192       end
193     end
194   end
195   
196   def catch
197     @item = Panel.edit(params[:id], @operators)
198
199     respond_to do |format|
200       @operators.author.working_panel_id = @item.id
201       if @operators.author.save
202         format.html { redirect_to @item }
203       else
204       end
205     end
206   end
207
208 end