2 class Root < ElementNestableContent
3 self.abstract_class = true
15 def self.show_json_opt_for_root
16 r = (self.build_json_opt(self))
17 #r[:include].merge!(:author => {})
21 def self.build_json_opt my_model
22 if my_model.child_models.empty?
26 my_model.child_models.each do |child_model|
27 r[my_model.my_manifest.associations.child_element_name(child_model).to_sym] = self.build_json_opt(child_model)
34 def copy_attributes opt = {}
45 self.class.child_models.each do |k|
46 r += (self.element_items(k) || [])
53 self.parts_element.each do |e|
61 self.parts_element.each do |e|
68 self.scenario_elements.size
72 self.scenario_elements.size + 1
75 def self.collect_element_value elements, name
77 if e['_destroy'] or e[:_destroy]
85 def self.validate_serial ary, offset = 0
87 ary.compact.sort.each do |n|
88 break false unless n == i
91 ary.compact.size == i - offset
94 def self.validate_element_serial elements, name, offset = 0
95 self.validate_serial(self.collect_element_value(elements, name), offset)
98 def self.validate_elements_serial c
100 self.validate_element_serial(conf[:elements], conf[:name], conf[:offset]) ? nil : false
104 def validate_serial_list
106 {:elements => self.elements_items, :name => :t, :offset => 0},
107 {:elements => self.elements_items, :name => :z, :offset => 1}
112 # r1 = Panel.validate_elements_id validate_id_list
113 self.class.validate_elements_serial validate_serial_list
116 def store attr, operators
118 self.errors.add :base, I18n.t('errors.invalid_json')
121 self.attributes = attr
122 self.overwrite operators
124 self.class.transaction do
127 unless validate_child
129 self.errors.add :base, I18n.t('errors.invalid_t')
130 raise ActiveRecord::Rollback
136 def destroy_with_elements
138 self.class.transaction do
139 self.parts_element.each do |element|
140 raise ActiveRecord::Rollback unless element.destroy
142 raise ActiveRecord::Rollback unless self.destroy
148 def self.panelize panel
149 attr = panel.attributes