X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Flocmare%2Fform.js.coffee;h=4e55865ab24a942d55146c54ea6c7e2d2bf80b47;hp=65a30e9fc12750dd042bf23dfb0e028c1203175b;hb=aa9eca25671c772ffec8f2f65aecc8a978a2f375;hpb=cc2dbf353c285c78423a8a29d7adf233e1651c6e diff --git a/app/assets/javascripts/locmare/form.js.coffee b/app/assets/javascripts/locmare/form.js.coffee index 65a30e9f..4e55865a 100644 --- a/app/assets/javascripts/locmare/form.js.coffee +++ b/app/assets/javascripts/locmare/form.js.coffee @@ -59,11 +59,7 @@ class Locmare.Form extends Locmare.FormBase @init_fields() render: () -> - @attr = { - method: @method_type(), - action: @action_url() - } - this.$el.attr(@attr) + this.$el.attr(@form_attr()) this.$el.html('') @error_explanation = null @div_fields = new Locmare.FormModule.Fields({ @@ -79,6 +75,12 @@ class Locmare.Form extends Locmare.FormBase @delegateEvents({'submit': @method_type()}) this + form_attr: () -> + { + method: @method_type(), + action: @action_url() + } + refresh: () -> _.each @fields, (field) => field.refresh() @@ -126,6 +128,11 @@ class Locmare.Form extends Locmare.FormBase @child_forms[child_element_name].push(form) form + remove_elements: () -> + _.each @child_forms, (child_form, name) => + child_form.item.set({_destroy: true}, {silent: true}) + child_form.remove_elements() + init_fields: () -> _.each @manifest.field_names, (field_name) => field_manifest = @manifest.fields[field_name] @@ -182,6 +189,7 @@ class Locmare.Form extends Locmare.FormBase success: (model, response) -> if !Pettanr.cache.restore(model.cache_key()) # item is new + model.url = model.default_url() Pettanr.cache.store(model) else @item.fix() @@ -237,11 +245,12 @@ class Locmare.ExtendForm extends Locmare.FormBase render: () -> this.$el.html('') - this.$el.append(@label.render().el) if not @label.hidden() - @div_fields = new Locmare.FormModule.Fields({ - fields: @fields - }) - this.$el.append(@div_fields.render().el) + if !@is_hidden() + this.$el.append(@label.render().el) if not @label.hidden() + @div_fields = new Locmare.FormModule.Fields({ + fields: @fields + }) + this.$el.append(@div_fields.render().el) this refresh: () -> @@ -262,6 +271,9 @@ class Locmare.ExtendForm extends Locmare.FormBase val: () -> JSON.stringify(@item.attributes) + is_hidden: () -> + _.isEmpty(@manifest.field_names) + init_fields: () -> _.each @manifest.field_names, (field_name) => field_manifest = @manifest.fields[field_name]