OSDN Git Service

remove counter api
[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 new
74     set_new
75     respond_to do |format|
76       format.html {
77         @editor = Editor::PanelEditor.new @item, @operators
78         render :template => @editor.template_name, :locals => {
79           :editor => @editor
80         }
81       }
82       format.json { render json: @item.to_json }
83     end
84   end
85   
86   def edit
87     set_edit
88     respond_to do |format|
89       format.html {
90         @editor = Editor::PanelEditor.new @item, @operators
91         render :template => @editor.template_name, :locals => {
92           :editor => @editor
93         }
94       }
95       format.json { render json: @item.to_json }
96     end
97   end
98   
99   def create
100     set_model
101     @item = @my_model_class.new
102 #    @item.boosts 'post'
103     jsn = nil
104     if params[:json]
105       jsn = JSON.parse_no_except(params[:json])
106     end
107     @prm = if params[:panel] == nil or params[:panel].empty?
108        jsn
109     else
110        params[:panel]
111     end
112     @item.class.fold_extend_settings @prm
113     #@item.refresh
114     respond_to do |format|
115       if @item.store @prm, @operators
116         created_html_format format
117         created_json_format format
118       else
119         format.html {
120           flash[:notice] = I18n.t('flash.notice.not_created', :model => @my_model_class.model_name.human)
121           @editor = Editor::PanelEditor.new @item, @operators
122           render :template => @editor.template_name, :locals => {
123             :editor => @editor
124           }
125         }
126         not_created_json_format format
127       end
128     end
129   end
130   
131   def update
132     @item = Panel.edit(params[:id], @operators)
133     @item.boosts 'post'
134     jsn = nil
135     if params[:json]
136       jsn = JSON.parse(params[:json])
137     end
138     @prm = params[:panel] || jsn
139     self.model.fold_extend_settings @prm
140     @item.attributes = @prm
141     @item.refresh
142     respond_to do |format|
143       if @item.store @item.packed_attributes, @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