OSDN Git Service

038436ce753bad64795c3ea508a9886e126d867d
[pettanr/pettanr.git] / app / controllers / speech_balloons_controller.rb
1 class SpeechBalloonsController < ApplicationController
2   layout 'test' if MagicNumber['test_layout']
3   if MagicNumber['run_mode'] == 0
4     before_filter :authenticate_user, :only => [:new, :edit, :create, :update, :destroy]
5     before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy]
6   else
7     before_filter :authenticate_reader, :only => [:index, :show]
8     before_filter :authenticate_user, :only => [:new, :edit, :create, :update, :destroy]
9     before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy]
10   end
11   before_filter :authenticate_admin!, :only => [:list, :browse]
12
13   def index
14     @page = SpeechBalloon.page params[:page]
15     @page_size = SpeechBalloon.page_size params[:page_size]
16     @speech_balloons = SpeechBalloon.list(@page, @page_size)
17
18     respond_to do |format|
19       format.html {
20         @paginate = SpeechBalloon.list_paginate(@page, @page_size)
21       }
22       format.json { render json: @speech_balloons.to_json(SpeechBalloon.list_json_opt) }
23     end
24   end
25   
26   def show
27     @speech_balloon = SpeechBalloon.show(params[:id], [@user, @admin])
28     respond_to do |format|
29       format.html # show.html.erb
30       format.json { render json: @speech_balloon.to_json(SpeechBalloon.show_json_opt) }
31     end
32   end
33   
34   def list
35     @speech_balloons = SpeechBalloon.all
36
37     respond_to do |format|
38       format.html { render layout: 'system' }
39       format.json { render json: @speech_balloons }
40     end
41   end
42
43   def browse
44     @speech_balloon = SpeechBalloon.find(params[:id])
45
46     respond_to do |format|
47       format.html { render layout: 'system' }
48       format.json { render json: @speech_balloon }
49     end
50   end
51
52   def new
53     @speech_balloon_template = SpeechBalloonTemplate.show params[:speech_balloon_template_id], @author
54     
55     @panel = Panel.edit(@author.working_panel, @author)
56     @speech_balloon = SpeechBalloon.new :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id
57     @speech_balloon.extend @speech_balloon_template.engine_speech_balloon_module
58     @speech_balloon.supply_default
59     @balloon = @speech_balloon.build_balloon 
60     @speech = @speech_balloon.build_speech 
61     @balloon.extend @speech_balloon_template.engine_balloon_module
62     @speech.extend @speech_balloon_template.engine_speech_module
63     @balloon.new_speech_balloon = @speech_balloon
64     @speech.new_speech_balloon = @speech_balloon
65     @balloon.supply_default 
66     @speech.supply_default 
67     @speech_balloon_extend = @speech_balloon.extend_speech_balloon
68     @balloon_extend = @balloon.extend_balloon
69     @speech_extend = @speech.extend_speech
70     
71     respond_to do |format|
72       format.html {
73         render @speech_balloon_template.engine_name + '/speech_balloons/new'
74       }
75       format.json { render :json => @speech_balloon.to_json(SpeechBalloon.show_json_opt) }
76     end
77   end
78
79   def edit
80     @speech_balloon = SpeechBalloon.show(params[:id], @author)
81     @speech_balloon_template = @speech_balloon.speech_balloon_template
82     @panel = Panel.edit(@speech_balloon.panel.id, @author)
83     
84     @balloon = @speech_balloon.balloon 
85     @speech = @speech_balloon.speech 
86     @speech_balloon.extend @speech_balloon_template.engine_speech_balloon_module
87     @balloon.extend @speech_balloon_template.engine_balloon_module
88     @speech.extend @speech_balloon_template.engine_speech_module
89     
90     @speech_balloon_extend = @speech_balloon.extend_speech_balloon
91     @balloon_extend = @balloon.extend_balloon
92     @speech_extend = @speech.extend_speech
93     
94     respond_to do |format|
95       format.html {
96         render @speech_balloon_template.engine_name + '/speech_balloons/edit'
97       }
98     end
99   end
100
101   def create
102     speech_balloon_settings = params[:speech_balloon][:settings]
103     if speech_balloon_settings.blank?
104       speech_balloon_settings = {}
105     else
106       if speech_balloon_settings.is_a?(Hash)
107         params[:speech_balloon][:settings] = speech_balloon_settings.to_json
108       else
109         speech_balloon_settings = {}
110       end
111     end
112     balloon_settings = params[:speech_balloon][:balloon_attributes][:settings]
113     if balloon_settings.blank?
114       balloon_settings = {}
115     else
116       if balloon_settings.is_a?(Hash)
117         params[:speech_balloon][:balloon_attributes][:settings] = balloon_settings.to_json
118       else
119         balloon_settings = {}
120       end
121     end
122     speech_settings = params[:speech_balloon][:speech_attributes][:settings]
123     if speech_settings.blank?
124       speech_settings = {}
125     else
126       if speech_settings.is_a?(Hash)
127         params[:speech_balloon][:speech_attributes][:settings] = speech_settings.to_json
128       else
129         speech_settings = {}
130       end
131     end
132     @panel = Panel.edit(@author.working_panel, @author)
133     @speech_balloon = SpeechBalloon.new 
134     @speech_balloon.attributes = params[:speech_balloon]
135     
136     @speech_balloon_template = @speech_balloon.speech_balloon_template
137     @balloon = @speech_balloon.balloon 
138     @speech = @speech_balloon.speech 
139     
140     @speech_balloon.extend @speech_balloon_template.engine_speech_balloon_module
141     @balloon.extend @speech_balloon_template.engine_balloon_module
142     @speech.extend @speech_balloon_template.engine_speech_module
143     
144     @balloon.new_speech_balloon = @speech_balloon
145     @speech.new_speech_balloon = @speech_balloon
146     
147     @speech_balloon.extend_speech_balloon = speech_balloon_settings
148     @balloon.extend_balloon = balloon_settings
149     @speech.extend_speech = speech_settings
150     
151     @speech_balloon_extend = @speech_balloon.extend_speech_balloon
152     @balloon_extend = @balloon.extend_balloon
153     @speech_extend = @speech.extend_speech
154     
155     params[:speech_balloon][:balloon_attributes][:system_picture_id] = @balloon.select_system_picture 
156     
157     @speech_balloon.overwrite @panel.id
158     
159     respond_to do |format|
160       sbv = @speech_balloon_extend.valid?
161       bv = @balloon_extend.valid?
162       sv = @speech_extend.valid?
163       if @speech_balloon.valid? and @speech_balloon_extend.valid? and @balloon_extend.valid? and @speech_extend.valid? and sbv and bv and sv
164         if @speech_balloon.store @author, params[:speech_balloon]
165           flash[:notice] = I18n.t('flash.notice.created', :model => Panel.model_name.human)
166           format.html { redirect_to @panel }
167           format.json { render json: @panel.panel_elements_as_json, status: :created, location: @panel }
168         else
169           flash[:notice] = I18n.t('flash.notice.not_created', :model => SpeechBalloon.model_name.human)
170           format.html {
171             render @speech_balloon_template.engine_name + '/speech_balloons/new'
172           }
173           format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
174         end
175       else
176         flash[:notice] = I18n.t('flash.notice.not_created', :model => SpeechBalloon.model_name.human)
177         format.html {
178           render @speech_balloon_template.engine_name + '/speech_balloons/new'
179         }
180         format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
181       end
182     end
183   end
184
185   def update
186     speech_balloon_settings = params[:speech_balloon][:settings]
187     if speech_balloon_settings.blank?
188       speech_balloon_settings = {}
189     else
190       if speech_balloon_settings.is_a?(Hash)
191         params[:speech_balloon][:settings] = speech_balloon_settings.to_json
192       else
193         speech_balloon_settings = {}
194       end
195     end
196     balloon_settings = params[:speech_balloon][:balloon_attributes][:settings]
197     if balloon_settings.blank?
198       balloon_settings = {}
199     else
200       if balloon_settings.is_a?(Hash)
201         params[:speech_balloon][:balloon_attributes][:settings] = balloon_settings.to_json
202       else
203         balloon_settings = {}
204       end
205     end
206     speech_settings = params[:speech_balloon][:speech_attributes][:settings]
207     if speech_settings.blank?
208       speech_settings = {}
209     else
210       if speech_settings.is_a?(Hash)
211         params[:speech_balloon][:speech_attributes][:settings] = speech_settings.to_json
212       else
213         speech_settings = {}
214       end
215     end
216     @speech_balloon = SpeechBalloon.show(params[:id], @author)
217     @speech_balloon.attributes = params[:speech_balloon]
218     
219     @speech_balloon_template = @speech_balloon.speech_balloon_template
220     @speech_balloon.extend @speech_balloon.speech_balloon_template.engine_speech_balloon_module
221     @balloon = @speech_balloon.balloon 
222     @speech = @speech_balloon.speech 
223     
224     @speech_balloon.extend @speech_balloon_template.engine_speech_balloon_module
225     @balloon.extend @speech_balloon_template.engine_balloon_module
226     @speech.extend @speech_balloon_template.engine_speech_module
227     
228     @speech_balloon.extend_speech_balloon = speech_balloon_settings
229     @balloon.extend_balloon = balloon_settings
230     @speech.extend_speech = speech_settings
231     
232     @speech_balloon_extend = @speech_balloon.extend_speech_balloon
233     @balloon_extend = @balloon.extend_balloon
234     @speech_extend = @speech.extend_speech
235     
236     params[:speech_balloon][:balloon_attributes][:system_picture_id] = @balloon.select_system_picture 
237     
238     @panel = Panel.edit(@speech_balloon.panel.id, @author)
239     @speech_balloon.overwrite @panel.id
240     
241     respond_to do |format|
242       sbv = @speech_balloon_extend.valid?
243       bv = @balloon_extend.valid?
244       sv = @speech_extend.valid?
245       if @speech_balloon.valid? and @speech_balloon_extend.valid? and @balloon_extend.valid? and @speech_extend.valid? and sbv and bv and sv
246         if @speech_balloon.store @author, params[:speech_balloon]
247           flash[:notice] = I18n.t('flash.notice.updated', :model => SpeechBalloon.model_name.human)
248           format.html { redirect_to @speech_balloon }
249           format.json { head :ok }
250         else
251           flash[:notice] = I18n.t('flash.notice.not_updated', :model => SpeechBalloon.model_name.human)
252           format.html {
253             render @speech_balloon.speech_balloon_template.engine_name + '/speech_balloons/edit'
254           }
255           format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
256         end
257       else
258         flash[:notice] = I18n.t('flash.notice.not_updated', :model => SpeechBalloon.model_name.human)
259         format.html {
260           render @speech_balloon.speech_balloon_template.engine_name + '/speech_balloons/edit'
261         }
262         format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
263       end
264     end
265   end
266
267   def destroy
268     @speech_balloon = SpeechBalloon.show(params[:id], @author)
269     @panel = Panel.edit(@speech_balloon.panel.id, @author)
270     
271     respond_to do |format|
272       if @speech_balloon.remove @author
273         flash[:notice] = I18n.t('flash.notice.destroyed', :model => SpeechBalloon.model_name.human)
274         format.html { redirect_to @panel }
275         format.json { head :ok }
276       else
277         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => SpeechBalloon.model_name.human)
278         format.html { redirect_to @speech_balloon }
279         format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
280       end
281     end
282   end
283   
284 end