soap.js 2.1 KB

1
  1. Ext.define('Ext.data.soap.Reader',{extend:'Ext.data.reader.Xml',alias:'reader.soap',getData:function(a){var b=a.documentElement,c=b.prefix;return Ext.DomQuery.selectNode(c+'|Body',a)}});Ext.define('Ext.data.soap.Proxy',{extend:'Ext.data.proxy.Ajax',alias:'proxy.soap',requires:['Ext.data.soap.Reader'],config:{soapAction:{},operationParam:'op',reader:'soap',url:'',envelopeTpl:['<?xml version="1.0" encoding="utf-8" ?>','<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">','{[values.bodyTpl.apply(values)]}','</soap:Envelope>'],createBodyTpl:null,readBodyTpl:['<soap:Body>','<{operation} xmlns="{targetNamespace}">','<tpl foreach="params">','<{$}>{.}</{$}>','</tpl>','</{operation}>','</soap:Body>'],updateBodyTpl:null,destroyBodyTpl:null,writeBodyTpl:['<soap:Body>','<{operation} xmlns="{targetNamespace}">','<tpl for="records">','{% var recordName=values.modelName.split(".").pop(); %}','<{[recordName]}>','<tpl for="fields">','<{name}>{[parent.get(values.name)]}</{name}>','</tpl>','</{[recordName]}>','</tpl>','</{operation}>','</soap:Body>'],targetNamespace:''},applyEnvelopeTpl:function(a){return this.createTpl(a)},applyCreateBodyTpl:function(a){return this.createTpl(a)},applyReadBodyTpl:function(a){return this.createTpl(a)},applyUpdateBodyTpl:function(a){return this.createTpl(a)},applyDestroyBodyTpl:function(a){return this.createTpl(a)},applyWriteBodyTpl:function(a){return this.createTpl(a)},createTpl:function(a){if(a&&!a.isTpl){a=new Ext.XTemplate(a)}return a},doRequest:function(b){var a=this,c=b.getAction(),e=a.getApi()[c],g=Ext.applyIf(b.getParams()||{},a.getExtraParams()||{}),f=a.getEnvelopeTpl().apply({operation:e,targetNamespace:a.getTargetNamespace(),params:g,records:b.getRecords(),bodyTpl:a.getBodyTpl(c)}),d=new Ext.data.Request({url:a.getUrl()+'?'+a.getOperationParam()+'='+e,method:'POST',action:c,operation:b,xmlData:f,headers:Ext.apply({SOAPAction:a.getSoapAction()[c]},a.getHeaders()),timeout:a.getTimeout(),scope:a,disableCaching:!1});d.setCallback(a.createRequestCallback(d,b));return a.sendRequest(d)},getBodyTpl:function(a){a=Ext.String.capitalize(a);var b=this['get'+a+'BodyTpl']();return b||this.getWriteBodyTpl()}});