OSDN Git Service

t#:
[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.supply_default @speech_balloon_template.parsed_settings
64     @speech.supply_default @speech_balloon_template.parsed_settings
65     
66     respond_to do |format|
67       format.html {
68         render @speech_balloon_template.engine_name + '/speech_balloons/new'
69       }
70       format.json { render :json => @speech_balloon.to_json(SpeechBalloon.show_json_opt) }
71     end
72   end
73
74   def edit
75     @speech_balloon = SpeechBalloon.show(params[:id], @author)
76     @speech_balloon_template = @speech_balloon.speech_balloon_template
77     @panel = Panel.edit(@speech_balloon.panel.id, @author)
78     
79     @balloon = @speech_balloon.balloon 
80     @speech = @speech_balloon.speech 
81     @speech_balloon.extend @speech_balloon_template.engine_speech_balloon_module
82     @balloon.extend @speech_balloon_template.engine_balloon_module
83     @speech.extend @speech_balloon_template.engine_speech_module
84     
85     respond_to do |format|
86       format.html {
87         render @speech_balloon_template.engine_name + '/speech_balloons/edit'
88       }
89     end
90   end
91
92   def create
93     @panel = Panel.edit(@author.working_panel, @author)
94     if params[:speech_balloon][:settings] and params[:speech_balloon][:settings].is_a?(Hash)
95       params[:speech_balloon][:settings] = params[:speech_balloon][:settings].to_json
96     end
97     if params[:speech_balloon][:balloon_attributes][:settings] and params[:speech_balloon][:balloon_attributes][:settings].is_a?(Hash)
98       params[:speech_balloon][:balloon_attributes][:settings] = params[:speech_balloon][:balloon_attributes][:settings].to_json
99     end
100     if params[:speech_balloon][:speech_attributes][:settings] and params[:speech_balloon][:speech_attributes][:settings].is_a?(Hash)
101       params[:speech_balloon][:speech_attributes][:settings] = params[:speech_balloon][:speech_attributes][:settings].to_json
102     end
103     @speech_balloon = SpeechBalloon.new 
104     @speech_balloon.attributes = params[:speech_balloon]
105     
106     @speech_balloon_template = @speech_balloon.speech_balloon_template
107     @balloon = @speech_balloon.balloon 
108     @speech = @speech_balloon.speech 
109     @speech_balloon.extend @speech_balloon_template.engine_speech_balloon_module
110     @balloon.extend @speech_balloon_template.engine_balloon_module
111     @speech.extend @speech_balloon_template.engine_speech_module
112     @speech_balloon_extend = @speech_balloon.extend_speech_balloon
113     @balloon_extend = @balloon.extend_balloon
114     @speech_extend = @speech.extend_speech
115     
116     @speech_balloon.overwrite @panel.id
117     
118     respond_to do |format|
119       if @speech_balloon.valid? or @speech_balloon.extend_speech_balloon.valid? or @balloon.extend_balloon.valid? or @speech.extend_speech.valid? or @speech_balloon_extend.valid?
120         if @speech_balloon.store @author, params[:speech_balloon]
121           flash[:notice] = I18n.t('flash.notice.created', :model => Panel.model_name.human)
122           format.html { redirect_to @panel }
123           format.json { render json: @panel.panel_elements_as_json, status: :created, location: @panel }
124         else
125           flash[:notice] = I18n.t('flash.notice.not_created', :model => SpeechBalloon.model_name.human)
126           format.html {
127             render @speech_balloon_template.engine_name + '/speech_balloons/new'
128           }
129           format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
130         end
131       else
132         flash[:notice] = I18n.t('flash.notice.not_created', :model => SpeechBalloon.model_name.human)
133         format.html {
134           render @speech_balloon_template.engine_name + '/speech_balloons/new'
135         }
136         format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
137       end
138     end
139   end
140
141   def update
142     speech_balloon_settings = params[:speech_balloon][:settings]
143     if speech_balloon_settings.blank?
144       speech_balloon_settings = {}
145     else
146       if speech_balloon_settings.is_a?(Hash)
147         params[:speech_balloon][:settings] = speech_balloon_settings.to_json
148       else
149         speech_balloon_settings = {}
150       end
151     end
152     balloon_settings = params[:speech_balloon][:balloon_attributes][:settings]
153     if balloon_settings.blank?
154       balloon_settings = {}
155     else
156       if balloon_settings.is_a?(Hash)
157         params[:speech_balloon][:balloon_attributes][:settings] = balloon_settings.to_json
158       else
159         balloon_settings = {}
160       end
161     end
162     speech_settings = params[:speech_balloon][:speech_attributes][:settings]
163     if speech_settings.blank?
164       speech_settings = {}
165     else
166       if speech_settings.is_a?(Hash)
167         params[:speech_balloon][:speech_attributes][:settings] = speech_settings.to_json
168       else
169         speech_settings = {}
170       end
171     end
172     @speech_balloon = SpeechBalloon.show(params[:id], @author)
173     @speech_balloon.attributes = params[:speech_balloon]
174     
175     @speech_balloon_template = @speech_balloon.speech_balloon_template
176     @speech_balloon.extend @speech_balloon.speech_balloon_template.engine_speech_balloon_module
177     @balloon = @speech_balloon.balloon 
178     @speech = @speech_balloon.speech 
179     
180     @speech_balloon.extend @speech_balloon_template.engine_speech_balloon_module
181     @balloon.extend @speech_balloon_template.engine_balloon_module
182     @speech.extend @speech_balloon_template.engine_speech_module
183     
184     @speech_balloon.extend_speech_balloon = speech_balloon_settings
185     @balloon.extend_balloon = balloon_settings
186     @speech.extend_speech = speech_settings
187     
188     @speech_balloon_extend = @speech_balloon.extend_speech_balloon
189     @balloon_extend = @balloon.extend_balloon
190     @speech_extend = @speech.extend_speech
191     
192     @balloon.select_system_picture 
193     
194     @panel = Panel.edit(@speech_balloon.panel.id, @author)
195     @speech_balloon.overwrite @panel.id
196     
197     respond_to do |format|
198       sbv = @speech_balloon_extend.valid?
199       bv = @balloon_extend.valid?
200       sv = @speech_extend.valid?
201       if @speech_balloon.valid? and @speech_balloon_extend.valid? and @balloon_extend.valid? and @speech_extend.valid? and sbv and bv and sv
202         if @speech_balloon.store @author, params[:speech_balloon]
203           flash[:notice] = I18n.t('flash.notice.updated', :model => SpeechBalloon.model_name.human)
204           format.html { redirect_to @speech_balloon }
205           format.json { head :ok }
206         else
207           flash[:notice] = I18n.t('flash.notice.not_updated', :model => SpeechBalloon.model_name.human)
208           format.html {
209             render @speech_balloon.speech_balloon_template.engine_name + '/speech_balloons/edit'
210           }
211           format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
212         end
213       else
214         flash[:notice] = I18n.t('flash.notice.not_updated', :model => SpeechBalloon.model_name.human)
215         format.html {
216           render @speech_balloon.speech_balloon_template.engine_name + '/speech_balloons/edit'
217         }
218         format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
219       end
220     end
221   end
222
223   def destroy
224     @speech_balloon = SpeechBalloon.show(params[:id], @author)
225     @panel = Panel.edit(@speech_balloon.panel.id, @author)
226     
227     respond_to do |format|
228       if @speech_balloon.remove @author
229         flash[:notice] = I18n.t('flash.notice.destroyed', :model => SpeechBalloon.model_name.human)
230         format.html { redirect_to @panel }
231         format.json { head :ok }
232       else
233         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => SpeechBalloon.model_name.human)
234         format.html { redirect_to @speech_balloon }
235         format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
236       end
237     end
238   end
239   
240 end