From: yasushiito Date: Thu, 1 Oct 2015 00:56:36 +0000 (+0900) Subject: fix:element remove func failed X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=commitdiff_plain;h=f522407ab18ef79c237ed4dfe2f3bbb590d1b42e fix:element remove func failed --- diff --git a/app/assets/javascripts/editor/panel_editor/element.js.coffee b/app/assets/javascripts/editor/panel_editor/element.js.coffee index a4129756..0b584db2 100644 --- a/app/assets/javascripts/editor/panel_editor/element.js.coffee +++ b/app/assets/javascripts/editor/panel_editor/element.js.coffee @@ -125,7 +125,7 @@ class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.Dock _.each @removed_elements, (element) -> name = element.table_name() + '_attributes' attrs[name] ||= [] - attrs[name].push({id: element.get('id'), _destroy: true}) + attrs[name].push({id: element.get('id'), _destroy: 1}) attrs pick: (new_item) -> diff --git a/app/assets/javascripts/locmare/form.js.coffee b/app/assets/javascripts/locmare/form.js.coffee index 983863bf..3de88abb 100644 --- a/app/assets/javascripts/locmare/form.js.coffee +++ b/app/assets/javascripts/locmare/form.js.coffee @@ -187,12 +187,15 @@ class Locmare.Form extends Locmare.FormBase @item.save() success: (model, response) -> + # strip element's attributes + m = @item.my_class().my_manifest().classify() + pure_item = new m(model.pure_attributes()) if !Pettanr.cache.restore(model.cache_key()) # item is new - model.url = model.default_url() - Pettanr.cache.store(model) + pure_item.url = model.default_url() + Pettanr.cache.store(pure_item) else - @item.fix() + pure_item.fix() @trigger('success', model, response) fail: (model, response) -> diff --git a/app/assets/javascripts/peta/item.js.coffee b/app/assets/javascripts/peta/item.js.coffee index c11b572d..ef292df0 100644 --- a/app/assets/javascripts/peta/item.js.coffee +++ b/app/assets/javascripts/peta/item.js.coffee @@ -127,6 +127,12 @@ class Peta.Item extends Backbone.Model else @item_name() + pure_attributes: () -> + r = {} + _.each @my_class().my_manifest().attributes, (v, name) => + r[name] = @get(name) + r + _label: (label_column_name, options) -> shorten = options.shorten l = if _.isBoolean(shorten) diff --git a/app/assets/javascripts/views/scrolls/play.js.coffee b/app/assets/javascripts/views/scrolls/play.js.coffee index 9c789364..c0657de1 100644 --- a/app/assets/javascripts/views/scrolls/play.js.coffee +++ b/app/assets/javascripts/views/scrolls/play.js.coffee @@ -285,6 +285,7 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Pettanr.View scroll: @binder, scroll_panel: scroll_panel, }) @listenTo(panel_view, 'ready', @ready) + @listenTo(panel_view, 'http_get', @http_get) @listenTo(panel_view, 'click:insert', @click_insert) @listenTo(panel_view, 'click:move', @click_move) @listenTo(panel_view, 'click:destroy', @click_destroy) @@ -295,6 +296,9 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Pettanr.View ready: (panel) -> this.credits.push(panel.licensed_pictures()) + http_get: (url) -> + @trigger('http_get', url) + click_insert: (panel_view = null) -> @dialog = new Editor.Player.PanelInsertDialog({ parent: this, binder: @binder, target_model: Pettanr.ScrollPanel, @@ -472,6 +476,7 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Pettanr.View credits: credits, }) @listenTo(credits, 'click:credit:icon', @click_credit_icon) + @listenTo(@panels, 'http_get', @http_get) @listenTo(@panels, 'click:insert', @click_insert) @listenTo(@panels, 'click:move', @click_move) @listenTo(@panels, 'dialog:close', @close_dialog) @@ -495,6 +500,9 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Pettanr.View click_append: () -> @panels.click_insert() + http_get: (url) -> + @trigger('http_get', url) + click_insert: (dialog) -> @appender.hide() @trigger('click:insert', dialog) diff --git a/app/controllers/panels_controller.rb b/app/controllers/panels_controller.rb index 70d8d5d1..8f9278b9 100644 --- a/app/controllers/panels_controller.rb +++ b/app/controllers/panels_controller.rb @@ -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 diff --git a/lib/peta/element_nestable_content.rb b/lib/peta/element_nestable_content.rb index 7ee2e9f6..df9884b4 100644 --- a/lib/peta/element_nestable_content.rb +++ b/lib/peta/element_nestable_content.rb @@ -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 diff --git a/lib/peta/item.rb b/lib/peta/item.rb index 5e50ed52..e33702a1 100644 --- a/lib/peta/item.rb +++ b/lib/peta/item.rb @@ -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