X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fmodels%2Fspeech_balloon_template.rb;h=4660b97859eb42f786992e13bd654d1e5ba72085;hb=aface4aab08729b68bbf8275a14f4915e4b803b6;hp=62b5c5fd218946080d234cd8b00305adcd820794;hpb=c1cc9e23250273e2e8258240768c57ab25b15677;p=pettanr%2Fpettanr.git diff --git a/app/models/speech_balloon_template.rb b/app/models/speech_balloon_template.rb index 62b5c5fd..4660b978 100644 --- a/app/models/speech_balloon_template.rb +++ b/app/models/speech_balloon_template.rb @@ -1,70 +1,53 @@ #フキダシテンプレート -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 - before_validation :valid_encode - - def valid_encode - ['name', 'classname', 'caption', 'settings'].each do |a| - next if attributes[a] == nil - raise Pettanr::BadRequest unless attributes[a].valid_encoding? - end + scope :find_index, -> do + self end - def supply_default + scope :find_by_original_picture, -> (original_picture_id) do + find_index.where(original_picture_id: original_picture_id) end - def overwrite - self.t = SpeechBalloonTemplate.count.to_i if self.new_record? + scope :with_panels, -> do + includes(speech_balloons: panel) end - def visible? author - true + scope :find_by_panel, -> (panel_id) do + with_panels.where(Panel.arel_table[:id].eq panel_id).references(: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_system_picture, -> (system_picture_id) do + find_index.where(system_picture_id: system_picture_id) end - def self.enable_list - SpeechBalloonTemplate.list.delete_if {|sbt| - Pettanr::Application.speech_balloons[sbt.classname] == nil - } - end - - def self.list_opt - {} + def supply_default end - def self.list_json_opt - {} + def overwrite + self.t = SpeechBalloonTemplate.count.to_i if self.new_record? 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 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 @@ -77,46 +60,6 @@ class SpeechBalloonTemplate < ActiveRecord::Base r end - def parsed_settings - @template_settings ||= JSON.parse(self.settings) - end - - def engine_name - Pettanr::Application.speech_balloons[self.classname] - end - - def engine_module_name - self.engine_name.camelize - end - - def engine - Object.const_get self.engine_module_name - end - - def engine_speech_balloon_model - engine.const_get 'SpeechBalloon' - end - - def engine_speech_balloon_module - engine.const_get 'SpeechBalloonModule' - end - - def engine_balloon_model - engine.const_get 'Balloon' - end - - def engine_balloon_module - engine.const_get 'BalloonModule' - end - - def engine_speech_model - engine.const_get 'Speech' - end - - def engine_speech_module - engine.const_get 'SpeechModule' - end - def self.import filename SpeechBalloonTemplate.import_file(filename) {|name, attr| SpeechBalloonTemplate.store(name, attr)} end