OSDN Git Service

fix move panel detail after update
[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     @items = @list.items 
17     @pager = @list.page_status.pager
18     respond_to do |format|
19       format.html 
20       list_json_format @list, format
21       format.atom 
22       format.rss
23     end
24   end
25   public
26   def index
27     if params[:mode] == 'filer'
28       filer_list
29     else
30       panel_list
31     end
32   end
33   
34   def by_scroll
35     filer_list
36   end
37   
38   def by_sheet
39     filer_list
40   end
41   
42   def by_author
43     filer_list
44   end
45   
46   def by_speech_balloon_template
47     filer_list
48   end
49   
50   def show_html_format format
51     format.html {
52       if @operators.author
53         @new_scroll_items = assist_items('home', 'scrolls')
54         @fresh_scroll_items = assist_items('home', 'scroll_panels').map {|sp| sp.scroll}
55       end
56     }
57   end
58   
59   def show
60     set_show
61     respond_to do |format|
62       show_html_format format
63       show_prof_format format
64       if params[:with_elements]
65         show_json_format_for_root format
66       else
67         show_json_format format
68       end
69     end
70   end
71   
72   def new
73     set_new
74     respond_to do |format|
75       format.html {
76         @editor = Editor::PanelEditor.new @item, @operators
77         render :template => @editor.template_name, :locals => {
78           :editor => @editor
79         }
80       }
81       format.json { render json: @item.to_json }
82     end
83   end
84   
85   def edit
86     set_edit
87     respond_to do |format|
88       format.html {
89         @editor = Editor::PanelEditor.new @item, @operators
90         render :template => @editor.template_name, :locals => {
91           :editor => @editor
92         }
93       }
94       format.json { render json: @item.to_json }
95     end
96   end
97   
98   def create
99     set_model
100     @item = @my_model_class.new
101 #    @item.boosts 'post'
102     jsn = nil
103     if params[:json]
104       jsn = JSON.parse_no_except(params[:json])
105     end
106     @prm = if params[:panel] == nil or params[:panel].empty?
107        jsn
108     else
109        params[:panel]
110     end
111     @item.class.fold_extend_settings @prm
112     #@item.refresh
113     respond_to do |format|
114       if @item.store @prm, @operators
115         created_html_format format
116         created_json_format format
117       else
118         format.html {
119           flash[:notice] = I18n.t('flash.notice.not_created', :model => @my_model_class.model_name.human)
120           @editor = Editor::PanelEditor.new @item, @operators
121           render :template => @editor.template_name, :locals => {
122             :editor => @editor
123           }
124         }
125         not_created_json_format format
126       end
127     end
128   end
129   
130   def update
131     @item = Panel.edit(params[:id], @operators)
132     @item.boosts 'post'
133     jsn = nil
134     p params[:json]
135     if params[:json]
136       jsn = JSON.parse(params[:json])
137     end
138     @prm = params[:panel] || jsn
139     @item.class.fold_extend_settings @prm
140     @item.attributes = @prm
141     # @item.refresh
142     respond_to do |format|
143       if @item.store @prm, @operators
144         updated_html_format format
145         updated_json_format format
146       else
147         format.html {
148           flash[:notice] = I18n.t('flash.notice.not_updated', :model => @my_model_class.model_name.human)
149           @editor = Editor::PanelEditor.new @item, @operators
150           render :template => @editor.template_name, :locals => {
151             :editor => @editor
152           }
153         }
154         not_updated_json_format format
155       end
156     end
157   end
158   
159   def destroy
160     @item = Panel.edit(params[:id], @operators)
161     respond_to do |format|
162       Panel.transaction do
163         if @item.destroy_with_elements
164           flash[:notice] = I18n.t('flash.notice.destroyed', :model => Panel.model_name.human)
165           format.html { redirect_to '/home/panels' }
166           format.json { head :ok }
167         else
168           flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Panel.model_name.human)
169           format.html { redirect_to @item }
170           format.json { render json: @item.errors, status: :unprocessable_entity }
171         end
172       end
173     end
174   end
175   
176   def catch
177     @item = Panel.edit(params[:id], @operators)
178
179     respond_to do |format|
180       @operators.author.working_panel_id = @item.id
181       if @operators.author.save
182         format.html { redirect_to @item }
183       else
184       end
185     end
186   end
187
188 end