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._child_models
12 self.my_manifest.child_models tree_name
15 def self._extend_column_name
16 self.my_manifest.extend_column_name
19 def self.load_manifest
20 return nil unless self.my_manifest
21 r = self._valid_encode_columns
22 define_singleton_method("valid_encode_columns") do
25 r = self._child_models
26 define_singleton_method("child_models") do
29 define_singleton_method("child_element_names") do
30 self.my_manifest.child_element_names tree_name
32 n = self._extend_column_name
33 define_singleton_method("extend_column_name") do
43 before_validation :valid_encode
46 Manifest.manifest.items[self.item_name]
50 Manifest.manifest.models[self.item_name]
58 self.singular.pluralize
62 self.singular.underscore
85 def self.path_name with_engine = false
86 self.plural.underscore
89 def self.visible_count_options
105 def self.list_json_opt
109 def self.show item_id, operators
111 opt.merge!(self.show_opt)
112 item = self.find(item_id, opt)
113 raise ActiveRecord::Forbidden unless item.visible?(operators)
121 def self.show_json_opt
136 self.class.table_name
139 def extend_column_name
140 self.class.extend_column_name
143 def path_name with_engine = false
144 self.class.path_name(with_engine)
147 def form_template with_engine = false
148 self.path_name(with_engine) + '/form'
152 self.extend_column ? self.attributes[self.extend_column] : self.item_name
156 self.class.valid_encode_columns.each do |a|
157 next if attributes[a] == nil
158 raise Pettanr::BadRequest unless attributes[a].valid_encoding?
162 def self.fold_extend_settings params
163 speech_balloon_settings = params[:speech_balloon][:settings]
164 if speech_balloon_settings.is_a?(Hash)
165 params[:speech_balloon][:settings] = speech_balloon_settings.to_json
167 balloon_settings = params[:speech_balloon][:balloon_attributes][:settings]
168 if balloon_settings.is_a?(Hash)
169 params[:speech_balloon][:balloon_attributes][:settings] = balloon_settings.to_json
171 speech_settings = params[:speech_balloon][:speech_attributes][:settings]
172 if speech_settings.is_a?(Hash)
173 params[:speech_balloon][:speech_attributes][:settings] = speech_settings.to_json
178 Object.const_get self.attributes[self.extend_column_name]
181 def my_engine_resource
182 Manifest.manifest.system_resources.engine_resources[self.table_name]
186 return false unless self.my_engine_resource
187 self.my_engine_resource.resource_items.include? self.attributes[self.extend_column_name]
191 return false unless self.engine?
192 self.engine.boost self
202 def visible? operators
203 if Manifest.manifest.magic_numbers['run_mode'] == 0
204 return false unless operators.guest?
206 return false unless operators.resource_reader?
212 self.respond_to? :editor
220 self.new_record? ? 'stored' : 'new'
223 def merge_dom_item_id attr, name = nil
225 attr.merge({'id' => self.dom_item_id(name)})
231 def tag_attributes name = nil, opt = {}
233 'data-pool_type' => self.dom_pool_type, 'data-id' => self.dom_id,
234 'data-item_name' => self.item_name
236 r = self.merge_dom_item_id r, name
241 def field_tag_attributes column_name, opt = {}
242 self.tag_attributes(column_name, opt).merge(
243 {'data-column_name' => column_name}
247 def post_attribute_key