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.load_manifest
12 return nil unless self.my_manifest
13 r = self._valid_encode_columns
14 define_singleton_method("valid_encode_columns") do
23 before_validation :valid_encode
26 Manifest.manifest.models[self.item_name]
34 self.singular.pluralize
38 self.singular.underscore
49 def self.path_name with_engine = false
50 self.plural.underscore
53 def self.visible_count_options
69 def self.list_json_opt
73 def self.show item_id, operators
75 opt.merge!(self.show_opt)
76 item = self.find(item_id, opt)
77 raise ActiveRecord::Forbidden unless item.visible?(operators)
85 def self.show_json_opt
89 def self.visible_count
90 self.count self.visible_count_options
93 def self.visible_count_options
108 self.class.table_name
111 def path_name with_engine = false
112 self.class.path_name(with_engine)
115 def form_template with_engine = false
116 self.path_name(with_engine) + '/form'
124 self.extend_column ? self.attributes[self.extend_column] : self.item_name
128 self.extend_item_name
132 self.class.valid_encode_columns.each do |a|
133 next if attributes[a] == nil
134 raise Pettanr::BadRequest unless attributes[a].valid_encoding?
144 def visible? operators
145 if Manifest.manifest.magic_numbers['run_mode'] == 0
146 return false unless operators.guest?
148 return false unless operators.resource_reader?
158 self.new_record? ? '1' : self.id.to_s
162 self.new_record? ? 'stored' : 'new'
165 def dom_item_id column_name = nil
166 r = self.dom_pool_type + '-' + self.item_name + '-' + self.dom_id
167 r += '-' + column_name.to_s if column_name
171 def tag_attributes column_name = nil, opt = {}
173 'data-pool_type' => self.dom_pool_type, 'data-id' => self.dom_id,
174 'data-item_name' => self.item_name
176 r.merge!({'id' => self.dom_item_id(column_name)}) if self.pool
177 # 'data-parent_dom_id' => self.parent.dom_item_id
182 def field_tag_attributes column_name, opt = {}
183 self.tag_attributes(column_name, opt).merge(
184 {'data-column_name' => column_name}
188 #render element by body
189 def any_tag_attributes name = nil, opt = {}
190 r = self.tag_attributes(name)
192 {:new_index => self.tag_new_index}