OSDN Git Service

fix:element remove func failed
authoryasushiito <yas@pen-chan.jp>
Thu, 1 Oct 2015 00:56:36 +0000 (09:56 +0900)
committeryasushiito <yas@pen-chan.jp>
Thu, 1 Oct 2015 00:56:36 +0000 (09:56 +0900)
app/assets/javascripts/editor/panel_editor/element.js.coffee
app/assets/javascripts/locmare/form.js.coffee
app/assets/javascripts/peta/item.js.coffee
app/assets/javascripts/views/scrolls/play.js.coffee
app/controllers/panels_controller.rb
lib/peta/element_nestable_content.rb
lib/peta/item.rb

index a412975..0b584db 100644 (file)
@@ -125,7 +125,7 @@ class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.Dock
     _.each @removed_elements, (element) ->\r
       name = element.table_name() + '_attributes'\r
       attrs[name] ||= []\r
-      attrs[name].push({id: element.get('id'), _destroy: true})\r
+      attrs[name].push({id: element.get('id'), _destroy: 1})\r
     attrs\r
   \r
   pick: (new_item) ->\r
index 983863b..3de88ab 100644 (file)
@@ -187,12 +187,15 @@ class Locmare.Form extends Locmare.FormBase
     @item.save()\r
   \r
   success: (model, response) ->\r
+    # strip element's attributes\r
+    m = @item.my_class().my_manifest().classify()\r
+    pure_item = new m(model.pure_attributes())\r
     if !Pettanr.cache.restore(model.cache_key())\r
       # item is new\r
-      model.url = model.default_url()\r
-      Pettanr.cache.store(model)\r
+      pure_item.url = model.default_url()\r
+      Pettanr.cache.store(pure_item)\r
     else\r
-      @item.fix()\r
+      pure_item.fix()\r
     @trigger('success', model, response)\r
   \r
   fail: (model, response) ->\r
index c11b572..ef292df 100644 (file)
@@ -127,6 +127,12 @@ class Peta.Item extends Backbone.Model
     else\r
       @item_name()\r
   \r
+  pure_attributes: () ->\r
+    r = {}\r
+    _.each @my_class().my_manifest().attributes, (v, name) =>\r
+      r[name] = @get(name)\r
+    r\r
+  \r
   _label: (label_column_name, options) ->\r
     shorten = options.shorten\r
     l = if _.isBoolean(shorten)\r
index 9c78936..c0657de 100644 (file)
@@ -285,6 +285,7 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Pettanr.View
       scroll: @binder, scroll_panel: scroll_panel,\r
     })\r
     @listenTo(panel_view, 'ready', @ready)\r
+    @listenTo(panel_view, 'http_get', @http_get)\r
     @listenTo(panel_view, 'click:insert', @click_insert)\r
     @listenTo(panel_view, 'click:move', @click_move)\r
     @listenTo(panel_view, 'click:destroy', @click_destroy)\r
@@ -295,6 +296,9 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Pettanr.View
   ready: (panel) ->\r
     this.credits.push(panel.licensed_pictures())\r
   \r
+  http_get: (url) ->\r
+    @trigger('http_get', url)\r
+  \r
   click_insert: (panel_view = null) ->\r
     @dialog = new Editor.Player.PanelInsertDialog({\r
       parent: this, binder: @binder, target_model: Pettanr.ScrollPanel,\r
@@ -472,6 +476,7 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Pettanr.View
         credits: credits,\r
       })\r
       @listenTo(credits, 'click:credit:icon', @click_credit_icon)\r
+      @listenTo(@panels, 'http_get', @http_get)\r
       @listenTo(@panels, 'click:insert', @click_insert)\r
       @listenTo(@panels, 'click:move', @click_move)\r
       @listenTo(@panels, 'dialog:close', @close_dialog)\r
@@ -495,6 +500,9 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Pettanr.View
   click_append: () ->\r
     @panels.click_insert()\r
   \r
+  http_get: (url) ->\r
+    @trigger('http_get', url)\r
+  \r
   click_insert: (dialog) ->\r
     @appender.hide()\r
     @trigger('click:insert', dialog)\r
index 70d8d5d..8f9278b 100644 (file)
@@ -141,7 +141,7 @@ class PanelsController < ApplicationController
     @prm = if params[:panel] == nil or params[:panel].empty?
       jsn
     else
-      @item.permit_params(params)
+      @item.permit_params(params, [:_destroy])
     end
     @item.class.fold_extend_settings @prm
     # @item.refresh
index 7ee2e9f..df9884b 100644 (file)
@@ -21,6 +21,17 @@ module Peta
     
     # Class Methods
     
+    def self.permit_attributes default_permit_attributes = []
+      attrs = super
+      self.child_models.each do |element_model|
+        name = self.my_manifest.associations.child_element_name(element_model) + '_attributes'
+        child_attrs = {}
+        child_attrs[name] = element_model.permit_attributes(default_permit_attributes)
+        attrs.push child_attrs
+      end
+      attrs
+    end
+    
     # Instance Methods
     
     def boosts level
index 5e50ed5..e33702a 100644 (file)
@@ -255,19 +255,14 @@ module Peta
       true
     end
     
-    def permit_params params
-      attrs = self.class.permit_attributes
+    def permit_params params, default_permit_attributes = []
+      attrs = self.class.permit_attributes(default_permit_attributes)
       params.require(self.item_name.to_sym).permit(attrs)
     end
     
-    def self.permit_attributes
+    def self.permit_attributes default_permit_attributes = []
       attrs = self.my_manifest.attributes.keys
-      self.child_models.each do |element_model|
-        name = self.my_manifest.associations.child_element_name(element_model) + '_attributes'
-        child_attrs = {}
-        child_attrs[name] = element_model.permit_attributes
-        attrs.push child_attrs
-      end
+      attrs.concat(default_permit_attributes)
       attrs
     end