2 class Item < ActiveRecord::Base
3 self.abstract_class = true
7 def self._valid_encode_columns
8 self.my_manifest.valid_encode_columns
11 def self._extend_column_name
12 self.my_manifest.extend_column_name
15 def self.load_manifest
16 return nil unless self.my_manifest
17 r = self._valid_encode_columns
18 define_singleton_method("valid_encode_columns") do
21 n = self._extend_column_name
22 define_singleton_method("extend_column_name") do
31 before_validation :valid_encode
34 Manifest.manifest.models[self.item_name]
42 self.singular.pluralize
46 self.singular.underscore
57 def self.path_name with_engine = false
58 self.plural.underscore
61 def self.visible_count_options
77 def self.list_json_opt
81 def self.show item_id, operators
83 opt.merge!(self.show_opt)
84 item = self.find(item_id, opt)
85 raise ActiveRecord::Forbidden unless item.visible?(operators)
93 def self.show_json_opt
99 def self.fold_extend_settings params
100 speech_balloon_settings = params[:speech_balloon][:settings]
101 if speech_balloon_settings.is_a?(Hash)
102 params[:speech_balloon][:settings] = speech_balloon_settings.to_json
104 balloon_settings = params[:speech_balloon][:balloon_attributes][:settings]
105 if balloon_settings.is_a?(Hash)
106 params[:speech_balloon][:balloon_attributes][:settings] = balloon_settings.to_json
108 speech_settings = params[:speech_balloon][:speech_attributes][:settings]
109 if speech_settings.is_a?(Hash)
110 params[:speech_balloon][:speech_attributes][:settings] = speech_settings.to_json
115 Object.const_get self.attributes[self.extend_column_name]
118 def my_engine_resource
119 Manifest.manifest.system_resources.engine_resources[self.table_name]
123 self.my_engine_resource.resource_items.include? self.extend_column_name
126 def extend_engine_module
127 self.extend self.engine.extend_module
128 self.elements.each do |element|
142 self.class.table_name
145 def extend_column_name
146 self.class.extend_column_name
149 def path_name with_engine = false
150 self.class.path_name(with_engine)
153 def form_template with_engine = false
154 self.path_name(with_engine) + '/form'
158 self.extend_column ? self.attributes[self.extend_column] : self.item_name
162 self.class.valid_encode_columns.each do |a|
163 next if attributes[a] == nil
164 raise Pettanr::BadRequest unless attributes[a].valid_encoding?
174 def visible? operators
175 if Manifest.manifest.magic_numbers['run_mode'] == 0
176 return false unless operators.guest?
178 return false unless operators.resource_reader?
204 self.new_record? ? 'stored' : 'new'
207 def dom_item_id name = nil
208 r = [self.editor.eid, self.dom_pool_type, self.item_name, self.dom_id]
209 r += name.to_s if column_name
213 def tag_attributes name = nil, opt = {}
215 'data-pool_type' => self.dom_pool_type, 'data-id' => self.dom_id,
216 'data-item_name' => self.item_name
218 r.merge!({'id' => self.dom_item_id(name)}) if self.editor
223 def field_tag_attributes column_name, opt = {}
224 self.tag_attributes(column_name, opt).merge(
225 {'data-column_name' => column_name}