--- /dev/null
+class Element\r
+ colum_structures = () ->\r
+ raise\r
+ \r
+ list_opt_for_panel = () ->\r
+ {}\r
+ \r
+ show_opt_for_panel = () ->\r
+ {}\r
+ \r
+ json_opt_for_panel = () ->\r
+ {}\r
+ \r
+ path_name = (with_engine = false) ->\r
+ self.to_s.tableize\r
+ \r
+ \r
+ \r
+ has_picture? = () ->\r
+ false\r
+ \r
+ has_part? = () ->\r
+ false\r
+ \r
+ parts = () ->\r
+ @parts ||= []\r
+ \r
+ has_helper? = (column_name) ->\r
+ self.class.colum_structures[column_name] and self.class.colum_structures[column_name][:helper]\r
+ \r
+ element_name = () ->\r
+ self.class.to_s.underscore\r
+ \r
+ extend_column = () ->\r
+ nil\r
+ \r
+ extend_element_name = () ->\r
+ self.extend_column ? self.attributes[extend_column] : self.element_name\r
+ \r
+ find_configurations hash, key = () ->\r
+ if hash[key].is_a? String\r
+ self.find_configurations hash, hash[key]\r
+ else\r
+ return hash[key]\r
+ \r
+ new_index = () ->\r
+ @new_index\r
+ \r
+ new_index= v = () ->\r
+ @new_index = v\r
+ \r
+ new_panel = () ->\r
+ @new_panel\r
+ \r
+ new_panel= v = () ->\r
+ @new_panel = v\r
+ \r
+ get_panel = () ->\r
+ self.panel || @new_panel\r
+ \r
+ tag_id = (c = nil) ->\r
+ 'panel' + self.tag_panel_id + self.tag_element_type + self.tag_element_id + c.to_s\r
+ \r
+ field_tag_id = (f) ->\r
+ self.tag_id + f.to_s\r
+ \r
+ tag_panel_id = () ->\r
+ self.get_panel.new_record? ? '0' : self.get_panel.id.to_s\r
+ \r
+ tag_element_id = () ->\r
+ self.new_record? ? '0' : self.id.to_s\r
+ \r
+ tag_element_type = () ->\r
+ raise\r
+ \r
+ tag_new_index = () ->\r
+ self.new_index.to_s\r
+ \r
+ path_name = (with_engine = false) ->\r
+ self.class.path_name(with_engine)\r
+ \r
+ form_template = (with_engine = false) ->\r
+ self.path_name(with_engine) + '/form'\r
+ \r
+ scenario_template = (with_engine = false) ->\r
+ self.path_name(with_engine) + '/scenario'\r
+ \r
+ element_face_template = (with_engine = false) ->\r
+ self.path_name(with_engine) + '/element_face'\r
+ \r
+ form_helper_template(colum_name) = () ->\r
+ self.class.colum_structures[colum_name][:helper]\r
+ \r
+ tag_attributes = (column = nil, opt = {}) ->\r
+ {\r
+ :id => self.field_tag_id(column), :panel_id => self.tag_panel_id, \r
+ :element_id => self.tag_element_id, :element_type => self.tag_element_type\r
+ }.merge(opt)\r
+ \r
+ field_tag_attributes = (column, no_attr, opt = {}) ->\r
+ self.tag_attributes(column).merge(\r
+ {:column => column, :new_index => self.tag_new_index, :no_attr => no_attr}\r
+ ).merge(opt)\r
+ \r
+ #render element by body\r
+ any_tag_attributes = (name = nil, opt = {}) ->\r
+ r = self.tag_attributes(name)\r
+ _.extend(r, \r
+ {:new_index => self.tag_new_index}\r
+ ) if self.new_index\r
+ r.merge(opt)\r
+ \r
+ select_tag_attributes = (selected, column, no_attr) ->\r
+ [\r
+ :last, :first, \r
+ {:html => {:selected => selected}}, \r
+ self.field_tag_attributes(column, no_attr)\r
+ ]\r
+ \r
+ tag_attr = (column = nil, opt = {}) ->\r
+ self.tag_attributes(column, opt).to_attr\r
+ \r
+ field_tag_attr = (column, no_attr, opt = {}) ->\r
+ self.field_tag_attributes(column, no_attr, opt).to_attr\r
+ \r
+ any_tag_attr = (name = nil, opt = {}) ->\r
+ self.any_tag_attributes(name, opt).to_attr\r
+\r
+ @pettanr_current_panel_id = 0\r
+ \r
+ @new_element_index = {}\r
+ @new_element_index[PettanrEditor.pettanr_current_panel_id] = 0\r
+ \r
+ @current_panel = () ->\r
+ $('#panel' + PettanrEditor.pettanr_current_panel_id.toString())\r
+ \r
+ @set_tree_value = (keys, last_attr, value) ->\r
+ key = keys.shift()\r
+ if keys.length <= 0\r
+ last_attr[key] = value\r
+ else\r
+ last_attr[key] = last_attr[key] || {}\r
+ PettanrEditor.set_tree_value(keys, last_attr[key], value)\r
+\r
+ @repeat_texts = ['repeat', 'repeat-x', 'repeat-y', 'no-repeat']\r
+ \r
+ @is_editting = () ->\r
+ trace = '#panel' + PettanrEditor.pettanr_current_panel_id.toString() + 'wrapper'\r
+ if $(trace) and $(trace).attr('editable')\r
+ return true\r
+ else\r
+ return false\r
+ @is_editable = (p) ->\r
+ if p.parent().attr('editable')\r
+ return true\r
+ else\r
+ return false\r
+ @is_var = (o) ->\r
+ if parseInt(o.attr('no_attr')) > 0\r
+ return false\r
+ else\r
+ if o.attr('column') \r
+ if o.attr('column') == '_destroy' and o.val().length < 1\r
+ return false\r
+ else\r
+ return true\r
+ else\r
+ return false\r
+ @is_panel = (o) ->\r
+ if PettanrEditor.is_element(o)\r
+ return false\r
+ else\r
+ return true\r
+ @is_element = (o) ->\r
+ if o.attr('element_type')\r
+ return true\r
+ else\r
+ return false\r
+ @is_element_part = (o) ->\r
+ if o.attr('element_part_type')\r
+ return true\r
+ else\r
+ return false\r
+ @element_is = (element_type, o) ->\r
+ if PettanrEditor.is_element(o) and o.attr('element_type') == element_type\r
+ return true\r
+ else\r
+ return false\r
+ @element_types = {'panel_picture': 'panel_pictures', 'speech_balloon': 'speech_balloons', 'ground_picture': 'ground_pictures', 'ground_color': 'ground_colors'}\r
+ @element_type_to_table = (element_type) ->\r
+ PettanrEditor.element_types[element_type]\r
+ @text_align_texts = ['left', 'left', 'right', 'center']\r
+\r
+ @make_tree = (attr, o) ->\r
+ if PettanrEditor.is_var(o)\r
+ tree = 'panels-' + o.attr('panel_id') + '-'\r
+ if PettanrEditor.is_element(o)\r
+ tree = tree + PettanrEditor.element_type_to_table(o.attr('element_type')) + '_attributes-' + o.attr('element_id') + '-'\r
+ if PettanrEditor.is_element_part(o)\r
+ tree = tree + o.attr('element_part_type') + '_attributes-'\r
+ tree = tree + o.attr('column')\r
+ keys = tree.split('-')\r
+ PettanrEditor.set_tree_value(keys, attr, o.val())\r
+ \r
+ @panel_tag_id = (element) ->\r
+ '#panel' + element.attr('panel_id')\r
+ \r
+ @element_tag_id = (element) ->\r
+ '#panel' + element.attr('panel_id') + element.attr('element_type') + element.attr('element_id')\r
+ \r
+ @element_part_tag_id = (element_part) ->\r
+ '#panel' + element_part.attr('panel_id') + element_part.attr('element_type') + element_part.attr('element_id') + element_part.attr('element_part_type') + element_part.attr('element_part_id')\r
+ \r
+ @refresh_attribute = (field) ->\r
+ attr = {}\r
+ $('input').map ->\r
+ PettanrEditor.make_tree(attr, $(@))\r
+ $('textarea').map ->\r
+ PettanrEditor.make_tree(attr, $(@))\r
+ $('select').map ->\r
+ PettanrEditor.make_tree(attr, $(@))\r
+ field.val(JSON.stringify(attr['panels'][PettanrEditor.pettanr_current_panel_id.toString() ]))\r
+ \r
+@PettanrEditor = PettanrEditor\r