# HG changeset patch # User Torsten Irländer # Date 1372174327 -7200 # Node ID 819bfedb70de0250e67e8aafa5b7667df9825cd6 # Parent 04439f3feba33d33796f50f65f2e714c6725b18c Do not use the model.save mathod to store items in the databut but trigger a custom Ajax POST or PUT request. diff -r 04439f3feba3 -r 819bfedb70de app/view/widgets/LadaForm.js --- a/app/view/widgets/LadaForm.js Tue Jun 25 17:30:58 2013 +0200 +++ b/app/view/widgets/LadaForm.js Tue Jun 25 17:32:07 2013 +0200 @@ -21,6 +21,7 @@ errors: null, warnings: null, message: null, + success: null, readonly: false, initComponent: function() { @@ -64,23 +65,50 @@ if (this.form.isDirty() && this.form.isValid()) { this.form.updateRecord(this.model); - this.model.save({ - callback: function(records, operation) { - this.parseResponse(operation); - if (operation.wasSuccessful()) { + var data = this.model.getAllData(); + var baseUrl = this.model.getProxy().url; + var url = baseUrl; + var method = "POST"; + if (this.model.getId()) { + url += this.model.getEidi(); + method = "PUT"; + } + + Ext.Ajax.request({ + url: url, + jsonData: data, + method: method, + callback: function(option, success, response) { + this.parseResponse(response); + if (this.success) { console.log('Save was successfull'); - this.fireEvent('savesuccess', this, records, operation); + this.fireEvent('savesuccess', this); } else { console.log('Save was not successfull'); this.form.markInvalid(this.errors); - this.fireEvent('savefailure', this, records, operation); - } - if (callback) { - callback.call(scope || this, this, operation.wasSuccessful(), this.model); + this.fireEvent('savefailure', this); } }, scope: this }); + + //this.model.save({ + // callback: function(records, operation) { + // this.parseResponse(operation); + // if (operation.wasSuccessful()) { + // console.log('Save was successfull'); + // this.fireEvent('savesuccess', this, records, operation); + // } else { + // console.log('Save was not successfull'); + // this.form.markInvalid(this.errors); + // this.fireEvent('savefailure', this, records, operation); + // } + // if (callback) { + // callback.call(scope || this, this, operation.wasSuccessful(), this.model); + // } + // }, + // scope: this + //}); } }, @@ -108,11 +136,24 @@ field.setReadOnly(bReadOnly); }); }, - parseResponse: function(operation) { - this.errors = this.translateReturnCodes(operation.request.scope.reader.jsonData["errors"]); - this.warnings = this.translateReturnCodes(operation.request.scope.reader.jsonData["warnings"]); - this.message = Lada.getApplication().bundle.getMsg(operation.request.scope.reader.jsonData["message"]); + parseResponse: function(response) { + var json = Ext.decode(response.responseText); + if (json) { + this.success = json.success; + this.errors = this.translateReturnCodes(json.errors); + this.warnings = this.translateReturnCodes(json.warnings); + this.message = Lada.getApplication().bundle.getMsg(json.message); + } //this.setReadOnly(true); } + // This parse method is used if the model.save() method is used to trigger + // a request on the server side. In this case the response object is + // different. + //parseResponse: function(operation) { + // this.errors = this.translateReturnCodes(operation.request.scope.reader.jsonData["errors"]); + // this.warnings = this.translateReturnCodes(operation.request.scope.reader.jsonData["warnings"]); + // this.message = Lada.getApplication().bundle.getMsg(operation.request.scope.reader.jsonData["message"]); + // //this.setReadOnly(true); + //} });