OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[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     if params[:json]
135       jsn = JSON.parse(params[:json])
136     end
137     @prm = params[:panel] || jsn
138     @item.class.fold_extend_settings @prm
139     @item.attributes = @prm
140     # @item.refresh
141     respond_to do |format|
142       if @item.store @prm, @operators
143         updated_html_format format
144         updated_json_format format
145       else
146         format.html {
147           flash[:notice] = I18n.t('flash.notice.not_updated', :model => @my_model_class.model_name.human)
148           @editor = Editor::PanelEditor.new @item, @operators
149           render :template => @editor.template_name, :locals => {
150             :editor => @editor
151           }
152         }
153         not_updated_json_format format
154       end
155     end
156   end
157   
158   def destroy
159     @item = Panel.edit(params[:id], @operators)
160     respond_to do |format|
161       Panel.transaction do
162         if @item.destroy_with_elements
163           flash[:notice] = I18n.t('flash.notice.destroyed', :model => Panel.model_name.human)
164           format.html { redirect_to '/home/panels' }
165           format.json { head :ok }
166         else
167           flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Panel.model_name.human)
168           format.html { redirect_to @item }
169           format.json { render json: @item.errors, status: :unprocessable_entity }
170         end
171       end
172     end
173   end
174   
175   def catch
176     @item = Panel.edit(params[:id], @operators)
177
178     respond_to do |format|
179       @operators.author.working_panel_id = @item.id
180       if @operators.author.save
181         format.html { redirect_to @item }
182       else
183       end
184     end
185   end
186
187 end