OSDN Git Service

fix manifest
[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       if @operators.author
59         @new_scroll_items = assist_items('scroll', 'private')
60         @fresh_scroll_items = assist_items('scroll_panel', 'private').map {|sp| sp.scroll}
61         
62         @new_sheet_items = assist_items('sheet', 'private')
63         @fresh_sheet_items = assist_items('sheet_panel', 'private').map {|sp| sp.sheet}
64       end
65     }
66   end
67   
68   def show
69     set_show
70     respond_to do |format|
71       show_html_format format
72       show_prof_format format
73       show_json_format format
74     end
75   end
76
77   def count
78     list_count
79   end
80   
81   def count_by_scroll
82     list_count
83   end
84   
85   def count_by_sheet
86     list_count
87   end
88   
89   def count_by_author
90     list_count
91   end
92   
93   def count_by_speech_balloon_template
94     list_count
95   end
96   
97   def new
98     set_new
99     respond_to do |format|
100       format.html {
101         @editor = Editor::PanelEditor.new @item, @operators
102         render :template => @editor.template_name, :locals => {
103           :editor => @editor
104         }
105       }
106       format.json { render json: @item.to_json }
107     end
108   end
109   
110   def edit
111     set_edit
112     respond_to do |format|
113       format.html {
114         @editor = Editor::PanelEditor.new @item, @operators
115         render :template => @editor.template_name, :locals => {
116           :editor => @editor
117         }
118       }
119       format.json { render json: @item.to_json }
120     end
121   end
122   
123   def create
124     @item = Panel.new
125 #    @item.boosts 'post'
126     jsn = nil
127     if params[:json]
128       jsn = JSON.parse_no_except(params[:json])
129     end
130     @prm = if params[:panel] == nil or params[:panel].empty?
131        jsn
132     else
133        params[:panel]
134     end
135     @item.class.fold_extend_settings @prm
136     #@item.refresh
137     respond_to do |format|
138       if @item.store @prm, @operators
139         created_html_format format
140         created_json_format format
141       else
142         format.html {
143           flash[:notice] = I18n.t('flash.notice.not_created', :model => @my_model_class.model_name.human)
144           @editor = Editor::PanelEditor.new @item, @operators
145           render :template => @editor.template_name, :locals => {
146             :editor => @editor
147           }
148         }
149         not_created_json_format format
150       end
151     end
152   end
153   
154   def update
155     @item = Panel.edit(params[:id], @operators)
156     @item.boost
157     jsn = nil
158     if params[:json]
159       jsn = JSON.parse(params[:json])
160     end
161     @prm = params[:panel] || jsn
162     self.model.fold_extend_settings @prm
163     @item.attributes = @prm
164     @item.refresh
165     respond_to do |format|
166       if @item.store @item.packed_attributes, @operators
167         updated_html_format format
168         updated_json_format format
169       else
170         format.html {
171           flash[:notice] = I18n.t('flash.notice.not_updated', :model => @my_model_class.model_name.human)
172           @editor = Editor::PanelEditor.new @item, @operators
173           render :template => @editor.template_name, :locals => {
174             :editor => @editor
175           }
176         }
177         not_updated_json_format format
178       end
179     end
180   end
181   
182   def destroy
183     @item = Panel.edit(params[:id], @operators)
184     respond_to do |format|
185       Panel.transaction do
186         if @item.destroy_with_elements
187           flash[:notice] = I18n.t('flash.notice.destroyed', :model => Panel.model_name.human)
188           format.html { redirect_to '/home/panels' }
189           format.json { head :ok }
190         else
191           flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Panel.model_name.human)
192           format.html { redirect_to @item }
193           format.json { render json: @item.errors, status: :unprocessable_entity }
194         end
195       end
196     end
197   end
198   
199   def catch
200     @item = Panel.edit(params[:id], @operators)
201
202     respond_to do |format|
203       @operators.author.working_panel_id = @item.id
204       if @operators.author.save
205         format.html { redirect_to @item }
206       else
207       end
208     end
209   end
210
211 end