OSDN Git Service

fix new element dialog
authoryasushiito <yas@pen-chan.jp>
Thu, 22 Jan 2015 08:13:39 +0000 (17:13 +0900)
committeryasushiito <yas@pen-chan.jp>
Thu, 22 Jan 2015 08:13:39 +0000 (17:13 +0900)
1  2 
app/assets/javascripts/editor/panel_editor.js.coffee
app/assets/javascripts/editor/panel_editor/dock.js.coffee
app/assets/javascripts/locmare/form.js.coffee
app/assets/javascripts/locmare/form/field/tag/number.js.coffee
app/controllers/panels_controller.rb

@@@ -67,9 -67,9 +68,17 @@@ class Editor.PanelEditor extends Backbo
      #$(trace + 'width').val(w)\r
      #$(trace + 'height').val(h)\r
    \r
-     window.editor = null  # enable leave cancel flag on unsave\r
 +  quit: () ->\r
 +    @dialog.$el.dialog('destroy')\r
 -    attrs = @dock.save_data()\r
++    window.editor = null  # release editor\r
++  \r
+   put: () ->\r
++    if @dock.save()\r
++      window.editor = null  # release editor\r
++      @dock.valid()\r
++    else\r
++      @dock.invalid()\r
+     false\r
    \r
    root_item: () ->\r
      @panel\r
@@@ -66,6 -67,15 +67,25 @@@ class Editor.PanelEditor.Dock extends E
    dom_labels_class: () ->\r
      @dom_class() + '-labels'\r
    \r
+   put: () ->\r
+     @trigger('put')\r
+     false\r
+   \r
++  save: () ->\r
++    attrs = @save_data()\r
++    @root_bay.body.form.save(attrs)\r
++  \r
+   save_data: () ->\r
+     attrs = @root_bay.save_data()\r
+     _.extend(attrs, @element_bay.save_data())\r
+     attrs\r
+   \r
++  valid: () ->\r
++    @root_bay.body.form.valid()\r
++  \r
++  invalid: () ->\r
++    @root_bay.body.form.invalid()\r
++  \r
  class Editor.EditorModule.DockModule.RootBay extends Editor.EditorModule.DockModule.SimpleBay\r
    \r
    render: () ->\r
@@@ -140,11 -148,28 +148,39 @@@ class Locmare.Form extends Locmare.Form
      _.each @fields, (field) =>\r
        @item.set(field.field_name, field.val())\r
      @item.overwrite({operators: @operators})\r
-     if @item.save()\r
 -    attrs = @make_attrs()\r
 -    if @item.save(attrs)\r
--      window.router.navigate('/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')), true)\r
--      return false\r
++    if @save()\r
++      @valid()\r
      else\r
--      alert('invalid')\r
++      @invalid()\r
++  \r
++  save: (attrs = null) ->\r
++    if attrs\r
++      @item.save(attrs)\r
++    else\r
++      @item.save()\r
++  \r
++  valid: () ->\r
++    window.router.navigate('/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')), true)\r
++    return false\r
++  \r
++  invalid: () ->\r
++    alert('invalid')\r
+   \r
+   save_data: () ->\r
+     @item.my_class().child_models()\r
+     attrs = {}\r
+     _.each @fields, (field) =>\r
+       attrs[field.field_name] = @item.get(field.field_name)\r
+     _.each @child_forms, (child_form, name) =>\r
+       mm = @item.my_class().my_manifest()\r
+       em = child_form.item.my_class().my_manifest()\r
+       if mm.associations.is_has_one(em)\r
+         attrs[name + '_attributes'] = child_form.save_data()\r
+       else\r
+         attrs[name + '_attributes'] = []\r
+         _.each child_form, (form) =>\r
+           attrs[name + '_attributes'].push(form.save_data())\r
+     attrs\r
    \r
  class Locmare.ExtendForm extends Locmare.FormBase\r
    tagName: 'div'\r
@@@ -21,3 -21,3 +21,6 @@@ class Locmare.FormModule.FieldModule.Ta
      @field.helpers.refresh()\r
      @field.trigger('change')\r
    \r
++  val: () ->\r
++    parseInt(super)\r
++  \r
@@@ -143,6 -143,6 +143,7 @@@ class PanelsController < ApplicationCon
          updated_html_format format
          updated_json_format format
        else
++      p @item.errors
          format.html {
            flash[:notice] = I18n.t('flash.notice.not_updated', :model => @my_model_class.model_name.human)
            @editor = Editor::PanelEditor.new @item, @operators