2 class Item < ActiveRecord::Base
3 self.abstract_class = true
8 def self._valid_encode_columns
9 self.my_manifest.valid_encode_columns
12 def self.load_manifest
13 return nil unless self.my_manifest
14 r = self._valid_encode_columns
15 define_singleton_method("valid_encode_columns") do
18 r = self.my_manifest.child_models
19 define_singleton_method("child_models") do
22 r = self.my_manifest.child_element_names
23 define_singleton_method("child_element_names") do
33 before_validation :valid_encode
36 Manifest.manifest.items[self.item_name]
40 Manifest.manifest.models[self.item_name]
48 self.singular.pluralize
52 self.singular.underscore
75 def self.path_name with_engine = false
76 self.plural.underscore
79 def self.find_boost_name column_name
80 self.my_peta.find_boost_name column_name
83 def self.extend_column? column_name
84 self.my_peta.extend_column? column_name
87 def self.visible_count_options
103 def self.list_json_opt
107 def self.show item_id, operators
109 opt.merge!(self.show_opt)
110 item = self.find(item_id, opt)
112 raise ActiveRecord::Forbidden unless item.visible?(operators)
120 def self.show_json_opt
124 def self.fold_extend_settings params
125 self.my_peta.boost.each do |name, manifest|
126 my_settings = params[self.item_name][manifest.settings_column_name]
127 if my_settings.is_a?(Hash)
128 params[self.item_name][manifest.settings_column_name] = my_settings.to_json
131 self.child_models.each do |child_model|
132 child_model.fold_extend_settings params
147 self.class.table_name
150 def path_name with_engine = false
151 self.class.path_name(with_engine)
154 def form_template with_engine = false
155 self.path_name(with_engine) + '/form'
159 self.extend_column ? self.attributes[self.extend_column] : self.item_name
163 self.class.valid_encode_columns.each do |a|
164 next if attributes[a] == nil
165 raise Pettanr::BadRequest unless attributes[a].valid_encoding?
170 self.class.my_peta.boost.each do |boost_name, boost_manifest|
171 next unless boost_manifest.level == level
172 self.boost boost_manifest
176 def boost boost_manifest
178 @boosters[boost_manifest.name] = Locmare::Booster.new(boost_manifest, self)
181 def extend_column? column_name
182 self.class.extend_column? column_name
186 self.class.my_peta.supply_defaults self
192 def visible? operators
193 if Manifest.manifest.magic_numbers['run_mode'] == 0
194 return false unless operators.guest?
196 return false unless operators.resource_reader?
202 self.respond_to? :editor
210 self.new_record? ? 'stored' : 'new'
213 def merge_dom_item_id attr, name = nil
215 attr.merge({'id' => self.dom_item_id(name)})
221 def tag_attributes name = nil, opt = {}
223 'data-pool_type' => self.dom_pool_type, 'data-id' => self.dom_id,
224 'data-item_name' => self.item_name
226 r = self.merge_dom_item_id r, name
231 def field_tag_attributes column_name, opt = {}
232 self.tag_attributes(column_name, opt).merge(
233 {'data-column_name' => column_name}
237 def post_attribute_key