X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fmodels%2Fspeech_balloon_template.rb;h=4660b97859eb42f786992e13bd654d1e5ba72085;hb=36efc33fdc25c5a77b8a6d22b3ca040cd6dad565;hp=b560c3f4baeb6af2c76ee906d1f2849a2fd7e1ec;hpb=bb0844d2d5f498cb1be426064bdbf15c5f2359b1;p=pettanr%2Fpettanr.git diff --git a/app/models/speech_balloon_template.rb b/app/models/speech_balloon_template.rb index b560c3f4..4660b978 100644 --- a/app/models/speech_balloon_template.rb +++ b/app/models/speech_balloon_template.rb @@ -1,59 +1,59 @@ #フキダシテンプレート -class SpeechBalloonTemplate < ActiveRecord::Base +class SpeechBalloonTemplate < Peta::Template + load_manifest has_many :speech_balloons + belongs_to :system_picture validates :name, :presence => true, :uniqueness => true, :length => {:maximum => 50} - validates :classname, :presence => true, :length => {:maximum => 50} + validates :module_name, :presence => true, :length => {:maximum => 50} validates :caption, :presence => true, :length => {:maximum => 30} validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} + validates :system_picture_id, :presence => true, :numericality => true, :existence => {:both => false} validates :settings, :presence => true - def supply_default + scope :find_index, -> do + self end - def overwrite - self.t = SpeechBalloonTemplate.count.to_i if self.new_record? + scope :find_by_original_picture, -> (original_picture_id) do + find_index.where(original_picture_id: original_picture_id) end - def visible? author - true + scope :with_panels, -> do + includes(speech_balloons: panel) end - def self.list - opt = {} - opt.merge!(self.list_opt) - opt.merge!({:order => 'speech_balloon_templates.t asc'}) - SpeechBalloonTemplate.find(:all, opt) + scope :find_by_panel, -> (panel_id) do + with_panels.where(Panel.arel_table[:id].eq panel_id).references(:panel) end - def self.list_opt - {} + scope :find_by_system_picture, -> (system_picture_id) do + find_index.where(system_picture_id: system_picture_id) end - def self.list_json_opt - {} + def supply_default end - def self.show rid, au - opt = {} - opt.merge!(self.show_opt) - res = SpeechBalloonTemplate.find(rid, opt) - raise ActiveRecord::Forbidden unless res.visible?(au) - res + def overwrite + self.t = SpeechBalloonTemplate.count.to_i if self.new_record? + end + + def symbol_option + self.system_picture.tmb_opt_img_tag end def self.show_opt {} end - def self.show_json_opt - {} + def parsed_settings + @parsed_settings ||= JSON.parse(self.settings) end def self.store name, attr #settingsにはHashデータが丸っと文字列化されて入る - r = SpeechBalloonTemplate.replace_system_picture(attr["settings"] || {}) - attr["settings"] = r ? r.to_json : nil + r = SpeechBalloonTemplate.replace_system_picture(attr || {}) + attr["settings"] = r["settings"] ? r["settings"].to_json : nil r = SpeechBalloonTemplate.modify_object name, attr r.overwrite r.save @@ -64,4 +64,15 @@ class SpeechBalloonTemplate < ActiveRecord::Base SpeechBalloonTemplate.import_file(filename) {|name, attr| SpeechBalloonTemplate.store(name, attr)} end + def self.disp_import_error r + if r == false + puts "json file error. file does not exist or broken" + else + unless r.empty? + r.each do |sbt| + put sbt.errors.full_messages + end + end + end + end end