_.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
@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
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
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
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
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
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
@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
# 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
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