| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-form-action-Submit'>/**
 
- </span> * A class which handles submission of data from {@link Ext.form.Basic Form}s and processes the returned response.
 
-  *
 
-  * Instances of this class are only created by a {@link Ext.form.Basic Form} when
 
-  * {@link Ext.form.Basic#submit submit}ting.
 
-  *
 
-  * # Response Packet Criteria
 
-  *
 
-  * A response packet may contain:
 
-  *
 
-  *   - **`success`** property : Boolean - required.
 
-  *
 
-  *   - **`errors`** property : Object - optional, contains error messages for invalid fields.
 
-  *
 
-  * # JSON Packets
 
-  *
 
-  * By default, response packets are assumed to be JSON, so a typical response packet may look like this:
 
-  *
 
-  *     {
 
-  *         success: false,
 
-  *         errors: {
 
-  *             clientCode: "Client not found",
 
-  *             portOfLoading: "This field must not be null"
 
-  *         }
 
-  *     }
 
-  *
 
-  * Other data may be placed into the response for processing by the {@link Ext.form.Basic}'s callback or event handler
 
-  * methods. The object decoded from this JSON is available in the {@link Ext.form.action.Action#result result} property.
 
-  *
 
-  * Alternatively, if an {@link Ext.form.Basic#errorReader errorReader} is specified as an
 
-  * {@link Ext.data.reader.Xml XmlReader}:
 
-  *
 
-  *     errorReader: new Ext.data.reader.Xml({
 
-  *             record : 'field',
 
-  *             success: '@success'
 
-  *         }, [
 
-  *             'id', 'msg'
 
-  *         ]
 
-  *     )
 
-  *
 
-  * then the results may be sent back in XML format:
 
-  *
 
-  *     <?xml version="1.0" encoding="UTF-8"?>
 
-  *     <message success="false">
 
-  *     <errors>
 
-  *         <field>
 
-  *             <id>clientCode</id>
 
-  *             <msg><![CDATA[Code not found. <br /><i>This is a test validation message from the server </i>]]></msg>
 
-  *         </field>
 
-  *         <field>
 
-  *             <id>portOfLoading</id>
 
-  *             <msg><![CDATA[Port not found. <br /><i>This is a test validation message from the server </i>]]></msg>
 
-  *         </field>
 
-  *     </errors>
 
-  *     </message>
 
-  *
 
-  * Other elements may be placed into the response XML for processing by the {@link Ext.form.Basic}'s callback or event
 
-  * handler methods. The XML document is available in the {@link Ext.form.Basic#errorReader errorReader}'s
 
-  * {@link Ext.data.reader.Xml#xmlData xmlData} property.
 
-  */
 
- Ext.define('Ext.form.action.Submit', {
 
-     extend:'Ext.form.action.Action',
 
-     alternateClassName: 'Ext.form.Action.Submit',
 
-     alias: 'formaction.submit',
 
-     type: 'submit',
 
- <span id='Ext-form-action-Submit-cfg-clientValidation'>    /**
 
- </span>     * @cfg {Boolean} [clientValidation=true]
 
-      * Determines whether a Form's fields are validated in a final call to {@link Ext.form.Basic#isValid isValid} prior
 
-      * to submission. Pass false in the Form's submit options to prevent this.
 
-      */
 
-     // inherit docs
 
-     run : function(){
 
-         var form = this.form;
 
-         if (this.clientValidation === false || form.isValid()) {
 
-             this.doSubmit();
 
-         } else {
 
-             // client validation failed
 
-             this.failureType = Ext.form.action.Action.CLIENT_INVALID;
 
-             form.afterAction(this, false);
 
-         }
 
-     },
 
- <span id='Ext-form-action-Submit-method-doSubmit'>    /**
 
- </span>     * @private
 
-      * Performs the submit of the form data.
 
-      */
 
-     doSubmit: function() {
 
-         var formEl,
 
-             ajaxOptions = Ext.apply(this.createCallback(), {
 
-                 url: this.getUrl(),
 
-                 method: this.getMethod(),
 
-                 headers: this.headers
 
-             });
 
-         // For uploads we need to create an actual form that contains the file upload fields,
 
-         // and pass that to the ajax call so it can do its iframe-based submit method.
 
-         if (this.form.hasUpload()) {
 
-             formEl = ajaxOptions.form = this.buildForm();
 
-             ajaxOptions.isUpload = true;
 
-         } else {
 
-             ajaxOptions.params = this.getParams();
 
-         }
 
-         Ext.Ajax.request(ajaxOptions);
 
-         if (formEl) {
 
-             Ext.removeNode(formEl);
 
-         }
 
-     },
 
- <span id='Ext-form-action-Submit-method-getParams'>    /**
 
- </span>     * @private
 
-      * Builds the full set of parameters from the field values plus any additional configured params.
 
-      */
 
-     getParams: function() {
 
-         var nope = false,
 
-             configParams = this.callParent(),
 
-             fieldParams = this.form.getValues(nope, nope, this.submitEmptyText !== nope);
 
-         return Ext.apply({}, fieldParams, configParams);
 
-     },
 
- <span id='Ext-form-action-Submit-method-buildForm'>    /**
 
- </span>     * @private
 
-      * Builds a form element containing fields corresponding to all the parameters to be
 
-      * submitted (everything returned by {@link #getParams}.
 
-      *
 
-      * NOTE: the form element is automatically added to the DOM, so any code that uses
 
-      * it must remove it from the DOM after finishing with it.
 
-      *
 
-      * @return {HTMLElement}
 
-      */
 
-     buildForm: function() {
 
-         var fieldsSpec = [],
 
-             formSpec,
 
-             formEl,
 
-             basicForm = this.form,
 
-             params = this.getParams(),
 
-             uploadFields = [],
 
-             fields = basicForm.getFields().items,
 
-             f,
 
-             fLen   = fields.length,
 
-             field, key, value, v, vLen,
 
-             u, uLen;
 
-         for (f = 0; f < fLen; f++) {
 
-             field = fields[f];
 
-             if (field.isFileUpload()) {
 
-                 uploadFields.push(field);
 
-             }
 
-         }
 
-         function addField(name, val) {
 
-             fieldsSpec.push({
 
-                 tag: 'input',
 
-                 type: 'hidden',
 
-                 name: name,
 
-                 value: Ext.String.htmlEncode(val)
 
-             });
 
-         }
 
-         for (key in params) {
 
-             if (params.hasOwnProperty(key)) {
 
-                 value = params[key];
 
-                 if (Ext.isArray(value)) {
 
-                     vLen = value.length;
 
-                     for (v = 0; v < vLen; v++) {
 
-                         addField(key, value[v]);
 
-                     }
 
-                 } else {
 
-                     addField(key, value);
 
-                 }
 
-             }
 
-         }
 
-         formSpec = {
 
-             tag: 'form',
 
-             action: this.getUrl(),
 
-             method: this.getMethod(),
 
-             target: this.target || '_self',
 
-             style: 'display:none',
 
-             cn: fieldsSpec
 
-         };
 
-         // Set the proper encoding for file uploads
 
-         if (uploadFields.length) {
 
-             formSpec.encoding = formSpec.enctype = 'multipart/form-data';
 
-         }
 
-         // Create the form
 
-         formEl = Ext.DomHelper.append(Ext.getBody(), formSpec);
 
-         // Special handling for file upload fields: since browser security measures prevent setting
 
-         // their values programatically, and prevent carrying their selected values over when cloning,
 
-         // we have to move the actual field instances out of their components and into the form.
 
-         uLen = uploadFields.length;
 
-         for (u = 0; u < uLen; u++) {
 
-             field = uploadFields[u];
 
-             if (field.rendered) { // can only have a selected file value after being rendered
 
-                 formEl.appendChild(field.extractFileInput());
 
-             }
 
-         }
 
-         return formEl;
 
-     },
 
- <span id='Ext-form-action-Submit-method-onSuccess'>    /**
 
- </span>     * @private
 
-      */
 
-     onSuccess: function(response) {
 
-         var form = this.form,
 
-             success = true,
 
-             result = this.processResponse(response);
 
-         if (result !== true && !result.success) {
 
-             if (result.errors) {
 
-                 form.markInvalid(result.errors);
 
-             }
 
-             this.failureType = Ext.form.action.Action.SERVER_INVALID;
 
-             success = false;
 
-         }
 
-         form.afterAction(this, success);
 
-     },
 
- <span id='Ext-form-action-Submit-method-handleResponse'>    /**
 
- </span>     * @private
 
-      */
 
-     handleResponse: function(response) {
 
-         var form = this.form,
 
-             errorReader = form.errorReader,
 
-             rs, errors, i, len, records;
 
-         if (errorReader) {
 
-             rs = errorReader.read(response);
 
-             records = rs.records;
 
-             errors = [];
 
-             if (records) {
 
-                 for(i = 0, len = records.length; i < len; i++) {
 
-                     errors[i] = records[i].data;
 
-                 }
 
-             }
 
-             if (errors.length < 1) {
 
-                 errors = null;
 
-             }
 
-             return {
 
-                 success : rs.success,
 
-                 errors : errors
 
-             };
 
-         }
 
-         return Ext.decode(response.responseText);
 
-     }
 
- });
 
- </pre>
 
- </body>
 
- </html>
 
 
  |