@panel = Panel.edit(@author.working_panel, @author)
@speech_balloon = SpeechBalloon.new :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id
- @speech_balloon.extend @speech_balloon_template.engine_speech_balloon_module
+ @speech_balloon.boost
@speech_balloon.supply_default
- @balloon = @speech_balloon.build_balloon
- @speech = @speech_balloon.build_speech
- @balloon.extend @speech_balloon_template.engine_balloon_module
- @speech.extend @speech_balloon_template.engine_speech_module
- @balloon.new_speech_balloon = @speech_balloon
- @speech.new_speech_balloon = @speech_balloon
- @balloon.supply_default
- @speech.supply_default
- @speech_balloon_extend = @speech_balloon.extend_speech_balloon
- @balloon_extend = @balloon.extend_balloon
- @speech_extend = @speech.extend_speech
+ @speech_balloon.get_balloon.supply_default
+ @speech_balloon.get_speech.supply_default
respond_to do |format|
format.html {
@speech_balloon_template = @speech_balloon.speech_balloon_template
@panel = Panel.edit(@speech_balloon.panel.id, @author)
- @balloon = @speech_balloon.balloon
- @speech = @speech_balloon.speech
- @speech_balloon.extend @speech_balloon_template.engine_speech_balloon_module
- @balloon.extend @speech_balloon_template.engine_balloon_module
- @speech.extend @speech_balloon_template.engine_speech_module
-
- @speech_balloon_extend = @speech_balloon.extend_speech_balloon
- @balloon_extend = @balloon.extend_balloon
- @speech_extend = @speech.extend_speech
+ @speech_balloon.boost
respond_to do |format|
format.html {
end
def create
- speech_balloon_settings = params[:speech_balloon][:settings]
- if speech_balloon_settings.blank?
- speech_balloon_settings = {}
- else
- if speech_balloon_settings.is_a?(Hash)
- params[:speech_balloon][:settings] = speech_balloon_settings.to_json
- else
- speech_balloon_settings = {}
- end
- end
- balloon_settings = params[:speech_balloon][:balloon_attributes][:settings]
- if balloon_settings.blank?
- balloon_settings = {}
- else
- if balloon_settings.is_a?(Hash)
- params[:speech_balloon][:balloon_attributes][:settings] = balloon_settings.to_json
- else
- balloon_settings = {}
- end
- end
- speech_settings = params[:speech_balloon][:speech_attributes][:settings]
- if speech_settings.blank?
- speech_settings = {}
- else
- if speech_settings.is_a?(Hash)
- params[:speech_balloon][:speech_attributes][:settings] = speech_settings.to_json
- else
- speech_settings = {}
- end
- end
+ SpeechBalloon.fold_extend_settings params
@panel = Panel.edit(@author.working_panel, @author)
@speech_balloon = SpeechBalloon.new
@speech_balloon.attributes = params[:speech_balloon]
@speech_balloon_template = @speech_balloon.speech_balloon_template
- @balloon = @speech_balloon.balloon
- @speech = @speech_balloon.speech
-
- @speech_balloon.extend @speech_balloon_template.engine_speech_balloon_module
- @balloon.extend @speech_balloon_template.engine_balloon_module
- @speech.extend @speech_balloon_template.engine_speech_module
-
- @balloon.new_speech_balloon = @speech_balloon
- @speech.new_speech_balloon = @speech_balloon
-
- @speech_balloon.extend_speech_balloon = speech_balloon_settings
- @balloon.extend_balloon = balloon_settings
- @speech.extend_speech = speech_settings
+ @speech_balloon.boost
- @speech_balloon_extend = @speech_balloon.extend_speech_balloon
- @balloon_extend = @balloon.extend_balloon
- @speech_extend = @speech.extend_speech
-
- params[:speech_balloon][:balloon_attributes][:system_picture_id] = @balloon.select_system_picture
+ params[:speech_balloon][:balloon_attributes][:system_picture_id] = @speech_balloon.get_balloon.select_system_picture
@speech_balloon.overwrite @panel.id
respond_to do |format|
- sbv = @speech_balloon_extend.valid?
- bv = @balloon_extend.valid?
- sv = @speech_extend.valid?
- if @speech_balloon.valid? and @speech_balloon_extend.valid? and @balloon_extend.valid? and @speech_extend.valid? and sbv and bv and sv
+ sbv = @speech_balloon.extend_speech_balloon.valid?
+ bv = @speech_balloon.get_balloon.extend_balloon.valid?
+ sv = @speech_balloon.get_speech.extend_speech.valid?
+ if @speech_balloon.valid? and @speech_balloon.get_balloon.valid? and @speech_balloon.get_speech.valid? and sbv and bv and sv
if @speech_balloon.store @author, params[:speech_balloon]
flash[:notice] = I18n.t('flash.notice.created', :model => Panel.model_name.human)
format.html { redirect_to @panel }
end
def update
- speech_balloon_settings = params[:speech_balloon][:settings]
- if speech_balloon_settings.blank?
- speech_balloon_settings = {}
- else
- if speech_balloon_settings.is_a?(Hash)
- params[:speech_balloon][:settings] = speech_balloon_settings.to_json
- else
- speech_balloon_settings = {}
- end
- end
- balloon_settings = params[:speech_balloon][:balloon_attributes][:settings]
- if balloon_settings.blank?
- balloon_settings = {}
- else
- if balloon_settings.is_a?(Hash)
- params[:speech_balloon][:balloon_attributes][:settings] = balloon_settings.to_json
- else
- balloon_settings = {}
- end
- end
- speech_settings = params[:speech_balloon][:speech_attributes][:settings]
- if speech_settings.blank?
- speech_settings = {}
- else
- if speech_settings.is_a?(Hash)
- params[:speech_balloon][:speech_attributes][:settings] = speech_settings.to_json
- else
- speech_settings = {}
- end
- end
+ SpeechBalloon.fold_extend_settings params
@speech_balloon = SpeechBalloon.show(params[:id], @author)
@speech_balloon.attributes = params[:speech_balloon]
@speech_balloon_template = @speech_balloon.speech_balloon_template
- @speech_balloon.extend @speech_balloon.speech_balloon_template.engine_speech_balloon_module
- @balloon = @speech_balloon.balloon
- @speech = @speech_balloon.speech
-
- @speech_balloon.extend @speech_balloon_template.engine_speech_balloon_module
- @balloon.extend @speech_balloon_template.engine_balloon_module
- @speech.extend @speech_balloon_template.engine_speech_module
-
- @speech_balloon.extend_speech_balloon = speech_balloon_settings
- @balloon.extend_balloon = balloon_settings
- @speech.extend_speech = speech_settings
-
- @speech_balloon_extend = @speech_balloon.extend_speech_balloon
- @balloon_extend = @balloon.extend_balloon
- @speech_extend = @speech.extend_speech
+ @speech_balloon.boost
- params[:speech_balloon][:balloon_attributes][:system_picture_id] = @balloon.select_system_picture
+ params[:speech_balloon][:balloon_attributes][:system_picture_id] = @speech_balloon.get_balloon.select_system_picture
@panel = Panel.edit(@speech_balloon.panel.id, @author)
@speech_balloon.overwrite @panel.id
respond_to do |format|
- sbv = @speech_balloon_extend.valid?
- bv = @balloon_extend.valid?
- sv = @speech_extend.valid?
- if @speech_balloon.valid? and @speech_balloon_extend.valid? and @balloon_extend.valid? and @speech_extend.valid? and sbv and bv and sv
+ sbv = @speech_balloon.extend_speech_balloon.valid?
+ bv = @speech_balloon.get_balloon.extend_balloon.valid?
+ sv = @speech_balloon.get_speech.extend_speech.valid?
+ if @speech_balloon.valid? and @speech_balloon.get_balloon.valid? and @speech_balloon.get_speech.valid? and sbv and bv and sv
if @speech_balloon.store @author, params[:speech_balloon]
flash[:notice] = I18n.t('flash.notice.updated', :model => SpeechBalloon.model_name.human)
format.html { redirect_to @speech_balloon }
self.system_picture_id = 1
end
+ def new_speech_balloon
+ @new_speech_balloon
+ end
+
+ def new_speech_balloon= v
+ @new_speech_balloon = v
+ end
+
def get_speech_balloon
- self.speech_balloon
+ self.speech_balloon || @new_speech_balloon
end
def get_panel_id
self.panel || @new_panel
end
+ def boost
+ end
+
def tag_id c = nil
'panel' + tag_panel_id + 'ground_color' + tag_element_id + c.to_s
end
self.panel || @new_panel
end
+ def boost
+ end
+
def tag_id c = nil
'panel' + tag_panel_id + 'ground_picture' + tag_element_id + c.to_s
end
Panel.transaction do
self.panel_elements.each do |elm|
elm.new_panel = self
+ elm.boost
end
#self.publish = nil
res = self.save
self.panel || @new_panel
end
+ def boost
+ end
+
def tag_id c = nil
'panel' + tag_panel_id + 'panel_picture' + tag_element_id + c.to_s
end
self.speech_balloon.panel.visible? roles
end
+ def new_speech_balloon
+ @new_speech_balloon
+ end
+
+ def new_speech_balloon= v
+ @new_speech_balloon = v
+ end
+
def get_speech_balloon
- self.speech_balloon
+ self.speech_balloon || @new_speech_balloon
end
def get_panel_id
validates :classname, :presence => true, :length => {:maximum => 50}
validates :z, :presence => true, :numericality => {:greater_than => 0}
validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0}
-# validates :settings, :presence => true
+ validates :settings, :extend_speech_balloon => true
before_validation :valid_encode
self.panel || @new_panel
end
+ def new_sballoon
+ @new_balloon
+ end
+
+ def new_balloon= v
+ @new_balloon = v
+ end
+
+ def get_balloon
+ self.balloon || @new_balloon
+ end
+
+ def new_speech
+ @new_speech
+ end
+
+ def new_speech= v
+ @new_speech = v
+ end
+
+ def get_speech
+ self.speech || @new_speech
+ end
+
+ def boost
+ self.extend self.speech_balloon_template.engine_speech_balloon_module
+ if self.balloon
+ else
+ self.new_balloon = self.build_balloon
+ self.new_speech = self.build_speech
+ end
+ self.get_balloon.extend self.speech_balloon_template.engine_balloon_module
+ self.get_speech.extend self.speech_balloon_template.engine_speech_module
+ self.get_balloon.new_speech_balloon = self
+ self.get_speech.new_speech_balloon = self
+ self.extend_speech_balloon = if self.settings.blank?
+ {}
+ else
+ JSON.parse(self.settings)
+ end
+ self.get_balloon.extend_balloon = if self.get_balloon.settings.blank?
+ {}
+ else
+ JSON.parse(self.get_balloon.settings)
+ end
+ self.get_speech.extend_speech = if self.get_speech.settings.blank?
+ {}
+ else
+ JSON.parse(self.get_speech.settings)
+ end
+ end
+
+ def self.fold_extend_settings params
+ speech_balloon_settings = params[:speech_balloon][:settings]
+ if speech_balloon_settings.is_a?(Hash)
+ params[:speech_balloon][:settings] = speech_balloon_settings.to_json
+ end
+ balloon_settings = params[:speech_balloon][:balloon_attributes][:settings]
+ if balloon_settings.is_a?(Hash)
+ params[:speech_balloon][:balloon_attributes][:settings] = balloon_settings.to_json
+ end
+ speech_settings = params[:speech_balloon][:speech_attributes][:settings]
+ if speech_settings.is_a?(Hash)
+ params[:speech_balloon][:speech_attributes][:settings] = speech_settings.to_json
+ end
+ end
+
def tag_id c = nil
'panel' + tag_panel_id + 'speech_balloon' + tag_element_id + c.to_s
end
SpeechBalloonTemplate.find(:all, opt)
end
+ def self.enable_list
+ SpeechBalloonTemplate.list.delete_if {|sbt|
+ Pettanr::Application.speech_balloons[sbt.classname] == nil
+ }
+ end
+
def self.list_opt
{}
end
<% panel.panel_elements.each do |elm| %>
<% case elm.class.to_s %>
<% when 'SpeechBalloon' %>
- <%
- speech_balloon = elm
- speech_balloon_template = speech_balloon.speech_balloon_template
- balloon = speech_balloon.balloon
- speech = speech_balloon.speech
- speech_balloon.extend speech_balloon_template.engine_speech_balloon_module
- balloon.extend speech_balloon_template.engine_balloon_module
- speech.extend speech_balloon_template.engine_speech_module
-
- balloon.new_speech_balloon = speech_balloon
- speech.new_speech_balloon = speech_balloon
-
- %>
+ <% elm.boost %>
<% end %>
<% end %>
<div id="<%= panel.tag_id -%>" panel_id="<%= panel.tag_panel_id -%>" class="pettanr-comic-panel" style="width:<%= panel.width %>px;height:<%= panel.height %>px;border-style: solid;border-width: <%= panel.border %>px;border-color:black; background-color:white;">
<% when 'PanelPicture' %>
<%= render 'panel_pictures/form', :panel_picture => elm, :no_attr => 0 %>
<% when 'SpeechBalloon' %>
- <%
- speech_balloon = elm
- speech_balloon_template = speech_balloon.speech_balloon_template
- balloon = speech_balloon.balloon
- speech = speech_balloon.speech
-
- speech_balloon_extend = speech_balloon.extend_speech_balloon
- balloon_extend = balloon.extend_balloon
- speech_extend = speech.extend_speech
- %>
- <%= render elm.speech_balloon_template.engine_name + '/speech_balloons/form', :speech_balloon => speech_balloon, :balloon => balloon, :speech => speech, :speech_balloon_extend => speech_balloon_extend, :balloon_extend => balloon_extend, :speech_extend => speech_extend, :no_attr => 0 %>
+ <% elm.boost %>
+ <%= render elm.speech_balloon_template.engine_name + '/speech_balloons/form', :speech_balloon => elm, :no_attr => 0 %>
<% when 'GroundPicture' %>
<%= render 'ground_pictures/form', :ground_picture => elm, :no_attr => 0 %>
<% when 'GroundColor' %>
</li>
<% end %>
</ul>
- <% SpeechBalloonTemplate.list().each_with_index do |sbt, index| %>
+ <% SpeechBalloonTemplate.enable_list().each_with_index do |sbt, index| %>
<div id="new-speech_balloon-tabs-<%= index -%>">
<% elm = SpeechBalloon.new :panel_id => @panel.id, :speech_balloon_template_id => sbt.id %>
<%
- speech_balloon = elm
- speech_balloon_template = speech_balloon.speech_balloon_template
- speech_balloon.extend speech_balloon_template.engine_speech_balloon_module
- speech_balloon.supply_default
- balloon = speech_balloon.build_balloon
- speech = speech_balloon.build_speech
- balloon.extend speech_balloon_template.engine_balloon_module
- speech.extend speech_balloon_template.engine_speech_module
-
- speech_balloon_extend = speech_balloon.extend_speech_balloon
- balloon_extend = balloon.extend_balloon
- speech_extend = speech.extend_speech
-
- balloon.new_speech_balloon = speech_balloon
- speech.new_speech_balloon = speech_balloon
- balloon.supply_default
- speech.supply_default
+ elm.boost
+ elm.supply_default
+ elm.get_balloon.supply_default
+ elm.get_speech.supply_default
%>
- <%= render elm.speech_balloon_template.engine_name + '/speech_balloons/form', :speech_balloon => speech_balloon, :balloon => balloon, :speech => speech, :speech_balloon_extend => speech_balloon_extend, :balloon_extend => balloon_extend, :speech_extend => speech_extend, :no_attr => 1 %>
+ <%= render elm.speech_balloon_template.engine_name + '/speech_balloons/form', :speech_balloon => elm, :no_attr => 1 %>
</div>
<% end %>
<% when 'GroundPicture' %>
</div>
<script>
<!--
- <% SpeechBalloonTemplate.list().each do |sbt| %>
+ <% SpeechBalloonTemplate.enable_list().each do |sbt| %>
var <%= h(sbt.engine_name) %>_settings = <%= raw sbt.parsed_settings.to_json -%>;
<% end %>
// -->
</script>
- <% SpeechBalloonTemplate.list().each do |sbt| %>
+ <% SpeechBalloonTemplate.enable_list().each do |sbt| %>
<%= stylesheet_link_tag sbt.engine_name + "/application" %>
<%= javascript_include_tag sbt.engine_name + "/application" %>
<% end %>
--- /dev/null
+class ExtendSpeechBalloonValidator < ActiveModel::EachValidator\r
+ def validate_each(record, attribute, value)\r
+ record.errors[attribute] << (options[:message] || I18n.t('activerecord.errors.messages.natural_number')) unless record.extend_speech_balloon.valid?\r
+ end\r
+end\r
+\r
@lg = FactoryGirl.create :license_group\r
@license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id\r
\r
- @speech_balloon_template = FactoryGirl.create :speech_balloon_template\r
+ @speech_balloon_template = FactoryGirl.create :speech_balloon_template, "name" => "circle@pettan.com", "classname" => "CircleSpeechBalloon", "caption" => "cc", "system_picture_id" => @sp.id, "settings" => '{}'\r
@writing_format = FactoryGirl.create :writing_format\r
@panel = FactoryGirl.create :panel, :author_id => @author.id\r
end\r
\r
describe '検証に於いて' do\r
before do\r
- @sb = FactoryGirl.create :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
- @speech = FactoryGirl.create :speech, :speech_balloon_id => @sb.id, :writing_format_id => @writing_format.id\r
- @balloon = FactoryGirl.build :balloon, :speech_balloon_id => @sb.id, :system_picture_id => @sp.id\r
+ @sb = FactoryGirl.build :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
+ @speech = @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @balloon = @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
end\r
context 'オーソドックスなデータのとき' do\r
it '下限データが通る' do\r
\r
describe '文字コード検証に於いて' do\r
before do\r
- @sb = FactoryGirl.create :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
- @speech = FactoryGirl.create :speech, :speech_balloon_id => @sb.id, :writing_format_id => @writing_format.id\r
- @balloon = FactoryGirl.build :balloon, :speech_balloon_id => @sb.id, :system_picture_id => @sp.id\r
+ @sb = FactoryGirl.build :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
+ @speech = @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @balloon = @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
end\r
\r
context 'settingsを検証するとき' do\r
\r
describe '閲覧許可に於いて' do\r
before do\r
- @sb = FactoryGirl.create :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
- @balloon = FactoryGirl.create :balloon, :speech_balloon_id => @sb.id, :system_picture_id => @sp.id\r
- @speech = FactoryGirl.create :speech, :speech_balloon_id => @sb.id, :writing_format_id => @writing_format.id\r
+ @sb = FactoryGirl.build :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
+ @speech = @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @balloon = @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
end\r
context 'オープンモードのとき' do\r
before do\r
\r
describe '一覧取得に於いて' do\r
before do\r
- @sb = FactoryGirl.create :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
- @balloon = FactoryGirl.create :balloon, :speech_balloon_id => @sb.id, :system_picture_id => @sp.id\r
- @speech = FactoryGirl.create :speech, :speech_balloon_id => @sb.id, :writing_format_id => @writing_format.id\r
+ @sb = FactoryGirl.build :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
+ @speech = @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @balloon = @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
end\r
context 'page補正について' do\r
it '文字列から数値に変換される' do\r
it '時系列で並んでいる' do\r
#公開されたコマのフキダシ枠は(他人のフキダシ枠であっても)含んでいる\r
hc = FactoryGirl.create :panel, :author_id => @other_author.id, :publish => 1\r
- nsb = FactoryGirl.create :speech_balloon, :panel_id => hc.id, :speech_balloon_template_id => @speech_balloon_template.id, :updated_at => Time.now + 100\r
- npl = FactoryGirl.create :balloon, :speech_balloon_id => nsb.id, :updated_at => Time.now + 100\r
+ nsb = FactoryGirl.build :speech_balloon, :panel_id => hc.id, :speech_balloon_template_id => @speech_balloon_template.id, :updated_at => Time.now + 100\r
+ nsb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ npl =nsb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id, :updated_at => Time.now + 100)\r
+ )\r
+ nsb.boost\r
+ nsb.save!\r
r = Balloon.list\r
r.should eq [npl, @balloon]\r
end\r
it '非公開のコマのフキダシ枠は自分のフキダシ枠であっても含まない' do\r
hc = FactoryGirl.create :panel, :author_id => @author.id, :publish => 0\r
- nsb = FactoryGirl.create :speech_balloon, :panel_id => hc.id, :speech_balloon_template_id => @speech_balloon_template.id, :updated_at => Time.now + 100\r
+ nsb = FactoryGirl.build :speech_balloon, :panel_id => hc.id, :speech_balloon_template_id => @speech_balloon_template.id, :updated_at => Time.now + 100\r
+ nsb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ nsb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ nsb.boost\r
+ nsb.save!\r
npl = FactoryGirl.create :balloon, :speech_balloon_id => nsb.id, :updated_at => Time.now + 100\r
pl = Balloon.list\r
pl.should eq [@balloon]\r
end\r
describe 'json一覧出力オプションに於いて' do\r
before do\r
- @sb = FactoryGirl.create :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
- @balloon = FactoryGirl.create :balloon, :speech_balloon_id => @sb.id, :system_picture_id => @sp.id\r
- @speech = FactoryGirl.create :speech, :speech_balloon_id => @sb.id, :writing_format_id => @writing_format.id\r
+ @sb = FactoryGirl.build :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
+ @speech = @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @balloon = @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
end\r
it 'フキダシを含んでいる' do\r
r = Balloon.list.to_json Balloon.list_json_opt\r
\r
describe '単体取得に於いて' do\r
before do\r
- @sb = FactoryGirl.create :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
- @balloon = FactoryGirl.create :balloon, :speech_balloon_id => @sb.id, :system_picture_id => @sp.id\r
- @speech = FactoryGirl.create :speech, :speech_balloon_id => @sb.id, :writing_format_id => @writing_format.id\r
+ @sb = FactoryGirl.build :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
+ @speech = @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @balloon = @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
end\r
context 'つつがなく終わるとき' do\r
it '単体取得オプションを利用している' do\r
end\r
describe 'json単体出力オプションに於いて' do\r
before do\r
- @sb = FactoryGirl.create :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
- @balloon = FactoryGirl.create :balloon, :speech_balloon_id => @sb.id, :system_picture_id => @sp.id\r
- @speech = FactoryGirl.create :speech, :speech_balloon_id => @sb.id, :writing_format_id => @writing_format.id\r
+ @sb = FactoryGirl.build :speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @speech_balloon_template.id\r
+ @speech = @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @balloon = @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
end\r
it 'フキダシを含んでいる' do\r
r = Balloon.show(@balloon.id, @author).to_json Balloon.show_json_opt\r
@op = FactoryGirl.create :original_picture, :artist_id => @artist.id\r
@p = FactoryGirl.create :picture, :original_picture_id => @op.id, :license_id => @license.id, :artist_id => @artist.id\r
@rp = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op.id, :picture_id => @p.id\r
- @sbt = FactoryGirl.create :speech_balloon_template\r
+ @sbt = FactoryGirl.create :speech_balloon_template, "name" => "circle@pettan.com", "classname" => "CircleSpeechBalloon", "caption" => "cc", "system_picture_id" => @sp.id, "settings" => '{}'\r
end\r
\r
describe '検証に於いて' do\r
#コマを作成しておく。\r
@panel = FactoryGirl.create :panel, :author_id => @author.id\r
@pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 1, :width => @p.width, :height => @p.height\r
- @sb = @panel.speech_balloons.create(\r
+ @sb = @panel.speech_balloons.build(\r
FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
)\r
+ @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
@gc = @panel.ground_colors.create(\r
FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :t => 2)\r
)\r
#コマを作成しておく。\r
@panel = FactoryGirl.create :panel, :author_id => @author.id\r
@pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 0, :z => 2, :width => @p.width, :height => @p.height\r
- @sb = @panel.speech_balloons.create(\r
+ @sb = @panel.speech_balloons.build(\r
FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 1, :z => 1)\r
)\r
+ @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
@gc = @panel.ground_colors.create(\r
FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :t => 2, :z => 3)\r
)\r
end\r
context 'さらに末尾にフキダシを追加したとき' do\r
before do\r
- @sb2 = @panel.speech_balloons.create(\r
+ @sb2 = @panel.speech_balloons.build(\r
FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 4, :z => 5)\r
)\r
+ @sb2.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb2.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @sb2.boost\r
+ @sb2.save!\r
@panel.reload\r
end\r
it 'zでソートしている' do\r
#コマを作成しておく。\r
@panel = FactoryGirl.create :panel, :author_id => @author.id\r
@pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 1, :width => @p.width, :height => @p.height\r
- @sb = @panel.speech_balloons.create(\r
+ @sb = @panel.speech_balloons.build(\r
FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
)\r
+ @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
@gc = @panel.ground_colors.create(\r
FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :t => 2)\r
)\r
end\r
context 'さらに末尾にフキダシを追加したとき' do\r
before do\r
- @sb2 = @panel.speech_balloons.create(\r
+ @sb2 = @panel.speech_balloons.build(\r
FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 4)\r
)\r
+ @sb2.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb2.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @sb2.boost\r
+ @sb2.save!\r
@panel.reload\r
end\r
it 'tでソートしている' do\r
#コマを作成しておく。\r
@panel = FactoryGirl.create :panel, :author_id => @author.id\r
@pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 1, :width => @p.width, :height => @p.height\r
- @sb = @panel.speech_balloons.create(\r
+ @sb = @panel.speech_balloons.build(\r
FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
)\r
+ @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
@gc = @panel.ground_colors.create(\r
FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :t => 2)\r
)\r
#コマを作成しておく。\r
@panel = FactoryGirl.create :panel, :author_id => @author.id\r
@pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 1, :width => @p.width, :height => @p.height\r
- @sb = @panel.speech_balloons.create(\r
+ @sb = @panel.speech_balloons.build(\r
FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
)\r
+ @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
@sb.create_balloon(\r
- FactoryGirl.attributes_for(:balloon, :speech_balloon_id => @sb.id)\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
)\r
@sb.create_speech(\r
- FactoryGirl.attributes_for(:speech, :speech_balloon_id => @sb.id, :writing_format_id => @writing_format.id)\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
)\r
@gc = @panel.ground_colors.create(\r
FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :t => 2)\r
@rp2 = FactoryGirl.create :resource_picture, :artist_id => @artist.id, :license_id => @license.id, :original_picture_id => @op2.id, :picture_id => @p2.id\r
@panel = FactoryGirl.create :panel, :author_id => @author.id\r
@pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 1, :width => @p.width, :height => @p.height, :picture_id => @p.id\r
- @sb = @panel.speech_balloons.create(\r
+ @sb = @panel.speech_balloons.build(\r
FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
)\r
+ @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
@gc = @panel.ground_colors.create(\r
FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :t => 2)\r
)\r
FactoryGirl.attributes_for(:panel_picture, :panel_id => @panel.id, :picture_id => @p.id, :t => 1, :z => 1+1)\r
)\r
sb1 = @panel.speech_balloons.build(\r
- FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 2, :z => 2+1)\r
+ FactoryGirl.attributes_for(:speech_balloon, :speech_balloon_template_id => @sbt.id, :t => 2, :z => 2+1)\r
)\r
sb1.build_balloon(\r
- FactoryGirl.attributes_for(:balloon, :speech_balloon_id => sb1.id)\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
)\r
sb1.build_speech(\r
- FactoryGirl.attributes_for(:speech, :speech_balloon_id => sb1.id)\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
)\r
+ sb1.boost\r
+ sb1.save!\r
sb2 = @panel.speech_balloons.build(\r
- FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 3, :z => 3+1)\r
+ FactoryGirl.attributes_for(:speech_balloon, :speech_balloon_template_id => @sbt.id, :t => 3, :z => 3+1)\r
)\r
sb2.build_balloon(\r
- FactoryGirl.attributes_for(:balloon, :speech_balloon_id => sb2.id)\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
)\r
sb2.build_speech(\r
- FactoryGirl.attributes_for(:speech, :speech_balloon_id => sb2.id)\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
)\r
+ sb2.boost\r
+ sb2.save!\r
@gc = @panel.ground_colors.build(\r
FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :t => 4, :z => 4+1)\r
)\r
FactoryGirl.attributes_for(:panel_picture, :panel_id => @panel.id, :picture_id => @p.id, :t => 1, :z => 1+1)\r
)\r
sb1 = @panel.speech_balloons.build(\r
- FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 2, :z => 2+1)\r
+ FactoryGirl.attributes_for(:speech_balloon, :speech_balloon_template_id => @sbt.id, :t => 2, :z => 2+1)\r
)\r
sb1.build_balloon(\r
- FactoryGirl.attributes_for(:balloon, :speech_balloon_id => sb1.id)\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
)\r
sb1.build_speech(\r
- FactoryGirl.attributes_for(:speech, :speech_balloon_id => sb1.id)\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
)\r
+ sb1.boost\r
+ sb1.save!\r
sb2 = @panel.speech_balloons.build(\r
- FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 4, :z => 3+1)\r
+ FactoryGirl.attributes_for(:speech_balloon, :speech_balloon_template_id => @sbt.id, :t => 4, :z => 3+1)\r
)\r
sb2.build_balloon(\r
- FactoryGirl.attributes_for(:balloon, :speech_balloon_id => sb2.id)\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
)\r
sb2.build_speech(\r
- FactoryGirl.attributes_for(:speech, :speech_balloon_id => sb2.id)\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
)\r
+ sb2.boost\r
+ sb2.save!\r
@gc = @panel.ground_colors.build(\r
FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :t => 4, :z => 4+1)\r
)\r
FactoryGirl.attributes_for(:panel_picture, :panel_id => @panel.id, :picture_id => @p.id, :t => 1, :z => 0+1)\r
)\r
sb1 = @panel.speech_balloons.build(\r
- FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 2, :z => 2+1)\r
+ FactoryGirl.attributes_for(:speech_balloon, :speech_balloon_template_id => @sbt.id, :t => 2, :z => 2+1)\r
)\r
sb1.build_balloon(\r
- FactoryGirl.attributes_for(:balloon, :speech_balloon_id => sb1.id)\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
)\r
sb1.build_speech(\r
- FactoryGirl.attributes_for(:speech, :speech_balloon_id => sb1.id)\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
)\r
+ sb1.boost\r
+ sb1.save!\r
sb2 = @panel.speech_balloons.build(\r
- FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 3, :z => 3+1)\r
+ FactoryGirl.attributes_for(:speech_balloon, :speech_balloon_template_id => @sbt.id, :t => 3, :z => 3+1)\r
)\r
sb2.build_balloon(\r
- FactoryGirl.attributes_for(:balloon, :speech_balloon_id => sb2.id)\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
)\r
sb2.build_speech(\r
- FactoryGirl.attributes_for(:speech, :speech_balloon_id => sb2.id)\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
)\r
+ sb2.boost\r
+ sb2.save!\r
@gc = @panel.ground_colors.build(\r
FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id, :t => 4, :z => 4+1)\r
)\r
end\r
end\r
\r
+ describe '要素の検証に於いて' do\r
+ before do\r
+ @panel = Panel.new\r
+ @panel.supply_default\r
+ @attr = FactoryGirl.attributes_for :panel\r
+@sbattr = {\r
+ "speech_balloons_attributes" => {\r
+ "0" => {\r
+ "caption" => "大きな文字で","z" => "1","t" => "0",\r
+ "classname" => "CircleSpeechBalloon","speech_balloon_template_id" => @sbt.id,\r
+ "speech_attributes" => {\r
+ "content" => "カギッコ","x" => "20","y" => "20","width" => "-60","height" => "60",\r
+ "settings" => "","writing_format_id" => @writing_format.id\r
+ },\r
+ "balloon_attributes" => {\r
+ "r" => "247","x" => "293","y" => "-2","width" => "200","height" => "200",\r
+ "system_picture_id" => @sp.id,"settings" => ""\r
+ }\r
+ }\r
+ },\r
+ "publish" => "0"\r
+}\r
+@ppattr = {\r
+ "panel_pictures_attributes" => {\r
+ "4" => {\r
+ "caption" => "司会","x" => "a","y" => "99","z" => "1","t" => "0",\r
+ "width" => "156","height" => "245","link" => "","picture_id" => @p.id\r
+ }\r
+ },\r
+ "publish" => "0"\r
+}\r
+ end\r
+ context 'フキダシの幅がマイナスで検証に失敗したとき' do\r
+ before do\r
+ @attr.merge!(@sbattr)\r
+ end\r
+ it 'エラーメッセージがセットされている' do\r
+ r = @panel.store @attr, @author\r
+ r.should be_false\r
+ @panel.errors.should_not be_empty\r
+ end\r
+ end\r
+ context 'コマ絵の横軸はアルファベットのため検証に失敗したとき' do\r
+ before do\r
+ @attr.merge!(@ppattr)\r
+ end\r
+ it 'エラーメッセージがセットされている' do\r
+ r = @panel.store @attr, @author\r
+ r.should be_false\r
+ @panel.errors.should_not be_empty\r
+ end\r
+ end\r
+ end\r
+ \r
describe '削除に於いて' do\r
before do\r
@comic = FactoryGirl.create :comic, :author_id => @author.id\r
@panel = FactoryGirl.create :panel, :author_id => @author.id, :publish => 1\r
@pp = FactoryGirl.create :panel_picture, :panel_id => @panel.id, :t => 1, :width => @p.width, :height => @p.height\r
- @sb = @panel.speech_balloons.create(\r
+ @sb = @panel.speech_balloons.build(\r
FactoryGirl.attributes_for(:speech_balloon, :panel_id => @panel.id, :speech_balloon_template_id => @sbt.id, :t => 0)\r
)\r
+ @sb.build_balloon(\r
+ FactoryGirl.attributes_for(:balloon, :system_picture_id => @sp.id)\r
+ )\r
+ @sb.build_speech(\r
+ FactoryGirl.attributes_for(:speech, :writing_format_id => @writing_format.id)\r
+ )\r
+ @sb.boost\r
+ @sb.save!\r
@gc = @panel.ground_colors.create(\r
FactoryGirl.attributes_for(:ground_color, :panel_id => @panel.id)\r
)\r