OSDN Git Service

fix panel viewer
[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, :count, :count_by_scroll, :count_by_sheet, :count_by_author, :count_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   def self.model
14     Panel
15   end
16   private
17   def panel_list
18     set_list
19     list_result = @list.open(@operators, 
20       {:id => params[:id], :page => params[:page], :page_size => params[:page_size]}
21     )
22     @items = list_result.items 
23     @pager = list_result.paginate
24     respond_to do |format|
25       format.html 
26       format.json { render json: @items.to_json }
27       format.atom 
28       format.rss
29     end
30   end
31   public
32   def index
33     if params[:mode] == 'filer'
34       filer_list
35     else
36       panel_list
37     end
38   end
39   
40   def by_scroll
41     filer_list
42   end
43   
44   def by_sheet
45     filer_list
46   end
47   
48   def by_author
49     filer_list
50   end
51   
52   def by_speech_balloon_template
53     filer_list
54   end
55   
56   def show_html_format format
57     format.html {
58       @panel = @item
59       if @operators.author
60         @new_scroll_items = assist_items('scroll', 'private')
61         #@new_scroll_filer = assist_filer 'scroll', @new_scroll_items
62         @fresh_scroll_items = assist_items('scroll_panel', 'private').map {|sp| sp.scroll}
63         #@fresh_scroll_filer = assist_filer 'scroll', @fresh_scroll_items
64         
65         @new_sheet_items = assist_items('sheet', 'private')
66         #@new_sheet_filer = assist_filer 'sheet', @new_sheet_items
67         @fresh_sheet_items = assist_items('sheet_panel', 'private').map {|sp| sp.sheet}
68         #@fresh_sheet_filer = assist_filer 'sheet', @fresh_sheet_items
69       end
70     }
71   end
72   
73   def show
74     set_show
75     respond_to do |format|
76       show_html_format format
77       show_prof_format format
78       show_json_format format
79     end
80   end
81
82   def count
83     list_count
84   end
85   
86   def count_by_scroll
87     list_count
88   end
89   
90   def count_by_sheet
91     list_count
92   end
93   
94   def count_by_author
95     list_count
96   end
97   
98   def count_by_speech_balloon_template
99     list_count
100   end
101   
102   def new
103     @panel = Panel.new
104     @panel.boosts 'post'
105     @panel.supply_default
106     respond_to do |format|
107       format.html {
108         @editor = Editor::PanelEditor.new @panel, @operators
109         render :template => @editor.template_name, :locals => {
110           :editor => @editor
111         }
112       }
113       format.js
114       format.json { render json: @panel.panel_elements_as_json }
115     end
116   end
117
118   def edit
119     @panel = Panel.edit(params[:id], @operators)
120     respond_to do |format|
121       format.html {
122         @editor = Editor::PanelEditor.new @panel, @operators
123         render :template => @editor.template_name, :locals => {
124           :editor => @editor
125         }
126       }
127       format.js
128     end
129   end
130
131   def create
132     @panel = Panel.new
133 #    @panel.boosts 'post'
134     jsn = nil
135     if params[:json]
136       jsn = JSON.parse_no_except(params[:json])
137     end
138     @prm = if params[:panel] == nil or params[:panel].empty?
139        jsn
140     else
141        params[:panel]
142     end
143     @panel.class.fold_extend_settings @prm
144     #@panel.refresh
145     respond_to do |format|
146       if @panel.store @prm, @operators
147         flash[:notice] = I18n.t('flash.notice.created', :model => Panel.model_name.human)
148         format.html { redirect_to @panel }
149         format.json { render json: @panel.panel_elements_as_json, status: :created, location: @panel }
150       else
151         format.html {
152           @editor = Editor::PanelEditor.new @panel, @operators
153           render :template => @editor.template_name, :locals => {
154             :editor => @editor
155           }
156         }
157         format.json { render json: @panel.errors, status: :unprocessable_entity }
158       end
159     end
160   end
161
162   def update
163     @panel = Panel.edit(params[:id], @operators)
164     @panel.boost
165     jsn = nil
166     if params[:json]
167       jsn = JSON.parse(params[:json])
168     end
169     @prm = params[:panel] || jsn
170     self.model.fold_extend_settings @prm
171     @panel.attributes = @prm
172     @panel.refresh
173     respond_to do |format|
174       if @panel.store @panel.packed_attributes, @operators
175         flash[:notice] = I18n.t('flash.notice.updated', :model => Panel.model_name.human)
176         format.html { redirect_to @panel }
177         format.json { head :ok }
178       else
179         format.html { render action: "edit" }
180         format.json { render json: @panel.errors, status: :unprocessable_entity }
181       end
182     end
183   end
184
185   def destroy
186     @panel = Panel.edit(params[:id], @operators)
187     respond_to do |format|
188       Panel.transaction do
189         if @panel.destroy_with_elements
190           flash[:notice] = I18n.t('flash.notice.destroyed', :model => Panel.model_name.human)
191           format.html { redirect_to '/home/panels' }
192           format.json { head :ok }
193         else
194           flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Panel.model_name.human)
195           format.html { redirect_to @panel }
196           format.json { render json: @panel.errors, status: :unprocessable_entity }
197         end
198       end
199     end
200   end
201   
202   def catch
203     @panel = Panel.edit(params[:id], @operators)
204
205     respond_to do |format|
206       @operators.author.working_panel_id = @panel.id
207       if @operators.author.save
208         format.html { redirect_to @panel }
209       else
210       end
211     end
212   end
213
214 end