OSDN Git Service

03be3ac994caa2b95d97320b4c7259096e587012
[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.boost
58     @speech_balloon.supply_default
59     @speech_balloon.get_balloon.supply_default 
60     @speech_balloon.get_speech.supply_default 
61     
62     respond_to do |format|
63       format.html {
64         render @speech_balloon_template.engine_name + '/speech_balloons/new'
65       }
66       format.json { render :json => @speech_balloon.to_json(SpeechBalloon.show_json_opt) }
67     end
68   end
69
70   def edit
71     @speech_balloon = SpeechBalloon.show(params[:id], @author)
72     @speech_balloon_template = @speech_balloon.speech_balloon_template
73     @panel = Panel.edit(@speech_balloon.panel.id, @author)
74     
75     @speech_balloon.boost
76     
77     respond_to do |format|
78       format.html {
79         render @speech_balloon_template.engine_name + '/speech_balloons/edit'
80       }
81     end
82   end
83
84   def create
85     SpeechBalloon.fold_extend_settings params
86     @panel = Panel.edit(@author.working_panel, @author)
87     @speech_balloon = SpeechBalloon.new 
88     @speech_balloon.attributes = params[:speech_balloon]
89     
90     @speech_balloon_template = @speech_balloon.speech_balloon_template
91     @speech_balloon.boost
92     
93     params[:speech_balloon][:balloon_attributes][:system_picture_id] = @speech_balloon.get_balloon.select_system_picture 
94     
95     @speech_balloon.overwrite @panel.id
96     
97     respond_to do |format|
98       if @speech_balloon.valid? and @speech_balloon.store(@author, params[:speech_balloon])
99         flash[:notice] = I18n.t('flash.notice.created', :model => Panel.model_name.human)
100         format.html { redirect_to @panel }
101         format.json { render json: @panel.panel_elements_as_json, status: :created, location: @panel }
102       else
103         flash[:notice] = I18n.t('flash.notice.not_created', :model => SpeechBalloon.model_name.human)
104         format.html {
105           render @speech_balloon_template.engine_name + '/speech_balloons/new'
106         }
107         format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
108       end
109     end
110   end
111
112   def update
113     SpeechBalloon.fold_extend_settings params
114     @speech_balloon = SpeechBalloon.show(params[:id], @author)
115     @speech_balloon.attributes = params[:speech_balloon]
116     
117     @speech_balloon_template = @speech_balloon.speech_balloon_template
118     @speech_balloon.boost
119     
120     params[:speech_balloon][:balloon_attributes][:system_picture_id] = @speech_balloon.get_balloon.select_system_picture 
121     
122     @panel = Panel.edit(@speech_balloon.panel.id, @author)
123     @speech_balloon.overwrite @panel.id
124     
125     respond_to do |format|
126       if @speech_balloon.valid? and @speech_balloon.store(@author, params[:speech_balloon])
127         flash[:notice] = I18n.t('flash.notice.updated', :model => SpeechBalloon.model_name.human)
128         format.html { redirect_to @speech_balloon }
129         format.json { head :ok }
130       else
131         flash[:notice] = I18n.t('flash.notice.not_updated', :model => SpeechBalloon.model_name.human)
132         format.html {
133           render @speech_balloon.speech_balloon_template.engine_name + '/speech_balloons/edit'
134         }
135         format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
136       end
137     end
138   end
139
140   def destroy
141     @speech_balloon = SpeechBalloon.show(params[:id], @author)
142     @panel = Panel.edit(@speech_balloon.panel.id, @author)
143     
144     respond_to do |format|
145       if @speech_balloon.remove @author
146         flash[:notice] = I18n.t('flash.notice.destroyed', :model => SpeechBalloon.model_name.human)
147         format.html { redirect_to @panel }
148         format.json { head :ok }
149       else
150         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => SpeechBalloon.model_name.human)
151         format.html { redirect_to @speech_balloon }
152         format.json { render json: @speech_balloon.errors, status: :unprocessable_entity }
153       end
154     end
155   end
156   
157 end