- return false\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
- refresh_attribute = () ->\r
- attr = {}\r
- $('input').map ->\r
- if $(@).attr('tree') \r
- keys = $(@).attr('tree').split('-')\r
- set_tree_value(keys, attr, $(this).val())\r
- $('textarea').map ->\r
- if $(@).attr('tree') \r
- keys = $(@).attr('tree').split('-')\r
- set_tree_value(keys, attr, $(this).val())\r
- $('select').map ->\r
- if $(@).attr('tree') \r
- keys = $(@).attr('tree').split('-')\r
- set_tree_value(keys, attr, $(this).val())\r
- $('#pettanr-panel-json').val(JSON.stringify(attr['panels'][pettanr_current_panel_id.toString() ]))\r
- \r
- $('#tabs').tabs()\r
- $('#elements-tabs').tabs()\r
- $('#elements-tabs').addClass( "ui-tabs-vertical ui-helper-clearfix" )\r
- $("#elements-tabs li").removeClass("ui-corner-top")\r
- $("#elements-tabs li").addClass("ui-corner-left")\r
- \r
- $('#pettanr-panel-submit').focusin ->\r
- refresh_attribute()\r
- \r
- # panel\r
- $('.pettanr-comic-panel').map ->\r
- if is_editable($(@))\r
+ return hash[key]\r
+ \r
+ set_validates = (form) ->\r
+ rules = {}\r
+ $('input', form).map ->\r
+ model_name = $(@).attr('data-model')\r
+ column_name = $(@).attr('column')\r
+ name = $(@).attr('name')\r
+ if model_name and column_name\r
+ model = find_configurations(configurations['models'], model_name)\r
+ rule = model['attributes'][column_name]['rules']\r
+ trace = editor.element_tag_id($(@)) \r
+ if rule\r
+ rules[name] = rule\r
+ $(@).focusout ->\r
+ if editor.is_panel(form)\r
+ validate_panel(form)\r
+ else\r
+ validate_element(form)\r
+ if Object.keys(rules).length > 0\r
+ v = form.validate({ignore:[],rules: rules})\r
+ \r
+ display_panel = (panel, vis) ->\r
+ v = if vis\r
+ ''\r
+ else\r
+ 'none'\r
+ trace = editor.panel_tag_id(panel)\r
+ $(trace).css('display', v)\r
+ \r
+ validate_panel = (form) ->\r
+ valid = form.valid()\r
+ bc = if valid\r
+ ''\r
+ else\r
+ '#ef29ef'\r
+ $('a', $('#tabs-1-tab')).map ->\r
+ $(@).css('background-color', bc)\r
+ display_panel(form, valid)\r
+ valid\r
+ \r
+ display_element = (element, vis) ->\r
+ trace = editor.element_tag_id(element)\r
+ d = $(trace + '_destroy').val()\r
+ v = if vis and d.length < 1\r
+ ''\r
+ else\r
+ 'none'\r
+ switch element.attr('element_type')\r
+ when 'panel_picture'\r
+ trace = trace + 'div'\r
+ $(trace).css('display', v)\r
+ \r
+ validate_element = (form) ->\r
+ valid = form.valid()\r
+ bc = if valid\r
+ ''\r
+ else\r
+ '#ef29ef'\r
+ display_element(form, valid)\r
+ trace = editor.element_tag_id(form) \r
+ $('.elements-tab', $(trace + 'element_tab')).map ->\r
+ $(@).css('background-color', bc)\r
+ valid\r
+ \r
+ validate_forms = () ->\r
+ valid = true\r
+ $('form', $('#tabs-1')).map ->\r
+ form_name = $(@).attr('data-form-name')\r
+ if form_name\r
+ if validate_panel($(@))\r
+ else\r
+ valid = false\r
+ invalid_elements = []\r
+ $('form', $('#tabs-2')).map ->\r
+ form_name = $(@).attr('data-form-name')\r
+ if form_name\r
+ if validate_element($(@))\r
+ else\r
+ valid = false\r
+ invalid_elements.push form_name\r
+ if invalid_elements.length > 0\r
+ bc = '#ef29ef'\r
+ else\r
+ bc = ''\r
+ $('a', $('#tabs-2-tab')).map ->\r
+ $(@).css('background-color', bc)\r
+ return valid\r
+ $('form').map ->\r
+ form_name = $(@).attr('data-form-name')\r
+ if form_name\r
+ form = $(this)\r
+ set_validates(form)\r
+ $('.panel-editor').map ->\r
+ if $(@).attr('current') and parseInt($(@).attr('current')) > 0\r
+ editor.pettanr_current_panel_id = parseInt($(@).attr('panel_id'))\r
+ if editor.is_editting()\r
+ $('#tabs').tabs()\r
+ $('#elements-tabs').tabs()\r
+ $('#new-element-tabs').tabs()\r
+ $('#new-speech_balloon-tabs').tabs()\r
+ $('#elements-tabs').addClass( "ui-tabs-vertical ui-helper-clearfix" )\r
+ $("#elements-tabs li").removeClass("ui-corner-top")\r
+ $("#elements-tabs li").addClass("ui-corner-left")\r
+ $("#elements-tabs li").map ->\r
+ $(@).mouseover -> \r
+ switch $(@).attr('element_type')\r
+ when 'speech_balloon'\r
+ trace = editor.element_tag_id($(@)) \r
+ t = $('img', $(trace))\r
+ when 'panel_picture'\r
+ trace = editor.element_tag_id($(@)) + 'img'\r
+ t = $(trace)\r
+ else\r
+ t = null\r
+ if t\r
+ $('.ui-resizable-handle', t.parent()).map ->\r
+ $(@).css('display', 'block')\r
+ $(@).mouseout -> \r
+ switch $(@).attr('element_type')\r
+ when 'speech_balloon'\r
+ trace = editor.element_tag_id($(@)) \r
+ t = $('img', $(trace))\r
+ when 'panel_picture'\r
+ trace = editor.element_tag_id($(@)) + 'img'\r
+ t = $(trace)\r
+ else\r
+ t = null\r
+ if t\r
+ $('.ui-resizable-handle', t.parent()).map ->\r
+ $(@).css('display', 'none')\r
+ \r
+ #destroy button\r
+ $('.ui-icon-destroy').map ->\r
+ $(@).button {\r
+ icons: {\r
+ primary: 'ui-icon-close', \r
+ secondary: null\r
+ }, \r
+ text: false\r
+ }\r
+ $(@).click -> \r
+ if confirm('destroy ?')\r
+ trace = editor.element_tag_id($(@))\r
+ $(trace + '_destroy').val('true')\r
+ panel_trace = editor.panel_tag_id($(@))\r
+ update_t(panel_trace + 'tsort')\r
+ update_z(panel_trace + 'zsort')\r
+ # sync\r
+ $(trace + 'element_tab').css('display', 'none')\r
+ $(trace + 'tab_panel').css('display', 'none')\r
+ $(trace + 'zsort').css('display', 'none')\r
+ $(trace + 'tsort').css('display', 'none')\r
+ display_element($(@), false)\r
+ \r
+ $('#pettanr-panel-submit').focusin ->\r
+ editor.refresh_attribute($('#pettanr-panel-json'))\r
+ \r
+ # panel\r
+ $('.pettanr-comic-panel').map ->\r
+ if editor.is_editable($(@))\r
+ $(@).resizable {\r
+ stop: ( event, ui ) ->\r
+ trace = editor.panel_tag_id($(@))\r
+ w = parseInt($(@).width())\r
+ h = parseInt($(@).height())\r
+ $(trace + 'width').val(w)\r
+ $(trace + 'height').val(h)\r
+ $('.pettanr-comic-ground-picture').map ->\r
+ $(@).width(w)\r
+ $(@).height(h)\r
+ $('.pettanr-comic-ground-color').map ->\r
+ $(@).width(w)\r
+ $(@).height(h)\r
+ , autoHide: true\r
+ }\r
+ \r
+ # sync view \r
+ $('input').map ->\r
+ if $(@).attr('element_type')\r
+ else\r
+ if $(@).attr('panel_id')\r
+ $(@).focusout ->\r
+ switch $(@).attr('column')\r
+ when 'width'\r
+ trace = editor.panel_tag_id($(@))\r
+ $(trace).width(parseInt( $(@).val()))\r
+ when 'height'\r
+ trace = editor.panel_tag_id($(@))\r
+ $(trace).height(parseInt( $(@).val()))\r
+ when 'border'\r
+ trace = editor.panel_tag_id($(@))\r
+ $(trace).css('border-width', parseInt($(@).val()).toString() + 'px')\r
+ \r
+ # panel picture\r
+ PictureSizeHelper.add_helper()\r
+ PopupHelper.add_helper()\r
+ \r
+ $('.pettanr-panel-picture-wrapper').map ->\r
+ $(@).draggable {\r
+ stop: ( event, ui ) ->\r
+ trace = editor.element_tag_id($(@))\r
+ img = $(trace + 'img')\r
+ left = img.parent().position().left + $(@).position().left\r
+ top = img.parent().position().top + $(@).position().top\r
+ $(trace + 'x').val(parseInt(left))\r
+ $(trace + 'y').val(parseInt(top))\r
+ }\r
+ \r
+ $('.panel-picture').map ->\r