]> git.wh0rd.org - tt-rss.git/blame - lib/dojo/_base/xhr.js
add dijit/dojo stuff; initial ui mockup
[tt-rss.git] / lib / dojo / _base / xhr.js
CommitLineData
2f01fe57
AD
1/*
2 Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
3 Available via Academic Free License >= 2.1 OR the modified BSD license.
4 see: http://dojotoolkit.org/license for details
5*/
6
7
8if(!dojo._hasResource["dojo._base.xhr"]){
9dojo._hasResource["dojo._base.xhr"]=true;
10dojo.provide("dojo._base.xhr");
11dojo.require("dojo._base.Deferred");
12dojo.require("dojo._base.json");
13dojo.require("dojo._base.lang");
14dojo.require("dojo._base.query");
15(function(){
16var _1=dojo,_2=_1.config;
17function _3(_4,_5,_6){
18if(_6===null){
19return;
20}
21var _7=_4[_5];
22if(typeof _7=="string"){
23_4[_5]=[_7,_6];
24}else{
25if(_1.isArray(_7)){
26_7.push(_6);
27}else{
28_4[_5]=_6;
29}
30}
31};
32dojo.fieldToObject=function(_8){
33var _9=null;
34var _a=_1.byId(_8);
35if(_a){
36var _b=_a.name;
37var _c=(_a.type||"").toLowerCase();
38if(_b&&_c&&!_a.disabled){
39if(_c=="radio"||_c=="checkbox"){
40if(_a.checked){
41_9=_a.value;
42}
43}else{
44if(_a.multiple){
45_9=[];
46_1.query("option",_a).forEach(function(_d){
47if(_d.selected){
48_9.push(_d.value);
49}
50});
51}else{
52_9=_a.value;
53}
54}
55}
56}
57return _9;
58};
59dojo.formToObject=function(_e){
60var _f={};
61var _10="file|submit|image|reset|button|";
62_1.forEach(dojo.byId(_e).elements,function(_11){
63var _12=_11.name;
64var _13=(_11.type||"").toLowerCase();
65if(_12&&_13&&_10.indexOf(_13)==-1&&!_11.disabled){
66_3(_f,_12,_1.fieldToObject(_11));
67if(_13=="image"){
68_f[_12+".x"]=_f[_12+".y"]=_f[_12].x=_f[_12].y=0;
69}
70}
71});
72return _f;
73};
74dojo.objectToQuery=function(map){
75var enc=encodeURIComponent;
76var _14=[];
77var _15={};
78for(var _16 in map){
79var _17=map[_16];
80if(_17!=_15[_16]){
81var _18=enc(_16)+"=";
82if(_1.isArray(_17)){
83for(var i=0;i<_17.length;i++){
84_14.push(_18+enc(_17[i]));
85}
86}else{
87_14.push(_18+enc(_17));
88}
89}
90}
91return _14.join("&");
92};
93dojo.formToQuery=function(_19){
94return _1.objectToQuery(_1.formToObject(_19));
95};
96dojo.formToJson=function(_1a,_1b){
97return _1.toJson(_1.formToObject(_1a),_1b);
98};
99dojo.queryToObject=function(str){
100var ret={};
101var qp=str.split("&");
102var dec=decodeURIComponent;
103_1.forEach(qp,function(_1c){
104if(_1c.length){
105var _1d=_1c.split("=");
106var _1e=dec(_1d.shift());
107var val=dec(_1d.join("="));
108if(typeof ret[_1e]=="string"){
109ret[_1e]=[ret[_1e]];
110}
111if(_1.isArray(ret[_1e])){
112ret[_1e].push(val);
113}else{
114ret[_1e]=val;
115}
116}
117});
118return ret;
119};
120dojo._blockAsync=false;
121var _1f=_1._contentHandlers=dojo.contentHandlers={text:function(xhr){
122return xhr.responseText;
123},json:function(xhr){
124return _1.fromJson(xhr.responseText||null);
125},"json-comment-filtered":function(xhr){
126if(!dojo.config.useCommentedJson){
127console.warn("Consider using the standard mimetype:application/json."+" json-commenting can introduce security issues. To"+" decrease the chances of hijacking, use the standard the 'json' handler and"+" prefix your json with: {}&&\n"+"Use djConfig.useCommentedJson=true to turn off this message.");
128}
129var _20=xhr.responseText;
130var _21=_20.indexOf("/*");
131var _22=_20.lastIndexOf("*/");
132if(_21==-1||_22==-1){
133throw new Error("JSON was not comment filtered");
134}
135return _1.fromJson(_20.substring(_21+2,_22));
136},javascript:function(xhr){
137return _1.eval(xhr.responseText);
138},xml:function(xhr){
139var _23=xhr.responseXML;
140if(_1.isIE&&(!_23||!_23.documentElement)){
141var ms=function(n){
142return "MSXML"+n+".DOMDocument";
143};
144var dp=["Microsoft.XMLDOM",ms(6),ms(4),ms(3),ms(2)];
145_1.some(dp,function(p){
146try{
147var dom=new ActiveXObject(p);
148dom.async=false;
149dom.loadXML(xhr.responseText);
150_23=dom;
151}
152catch(e){
153return false;
154}
155return true;
156});
157}
158return _23;
159},"json-comment-optional":function(xhr){
160if(xhr.responseText&&/^[^{\[]*\/\*/.test(xhr.responseText)){
161return _1f["json-comment-filtered"](xhr);
162}else{
163return _1f["json"](xhr);
164}
165}};
166dojo._ioSetArgs=function(_24,_25,_26,_27){
167var _28={args:_24,url:_24.url};
168var _29=null;
169if(_24.form){
170var _2a=_1.byId(_24.form);
171var _2b=_2a.getAttributeNode("action");
172_28.url=_28.url||(_2b?_2b.value:null);
173_29=_1.formToObject(_2a);
174}
175var _2c=[{}];
176if(_29){
177_2c.push(_29);
178}
179if(_24.content){
180_2c.push(_24.content);
181}
182if(_24.preventCache){
183_2c.push({"dojo.preventCache":new Date().valueOf()});
184}
185_28.query=_1.objectToQuery(_1.mixin.apply(null,_2c));
186_28.handleAs=_24.handleAs||"text";
187var d=new _1.Deferred(_25);
188d.addCallbacks(_26,function(_2d){
189return _27(_2d,d);
190});
191var ld=_24.load;
192if(ld&&_1.isFunction(ld)){
193d.addCallback(function(_2e){
194return ld.call(_24,_2e,_28);
195});
196}
197var err=_24.error;
198if(err&&_1.isFunction(err)){
199d.addErrback(function(_2f){
200return err.call(_24,_2f,_28);
201});
202}
203var _30=_24.handle;
204if(_30&&_1.isFunction(_30)){
205d.addBoth(function(_31){
206return _30.call(_24,_31,_28);
207});
208}
209if(_2.ioPublish&&_1.publish&&_28.args.ioPublish!==false){
210d.addCallbacks(function(res){
211_1.publish("/dojo/io/load",[d,res]);
212return res;
213},function(res){
214_1.publish("/dojo/io/error",[d,res]);
215return res;
216});
217d.addBoth(function(res){
218_1.publish("/dojo/io/done",[d,res]);
219return res;
220});
221}
222d.ioArgs=_28;
223return d;
224};
225var _32=function(dfd){
226dfd.canceled=true;
227var xhr=dfd.ioArgs.xhr;
228var _33=typeof xhr.abort;
229if(_33=="function"||_33=="object"||_33=="unknown"){
230xhr.abort();
231}
232var err=dfd.ioArgs.error;
233if(!err){
234err=new Error("xhr cancelled");
235err.dojoType="cancel";
236}
237return err;
238};
239var _34=function(dfd){
240var ret=_1f[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);
241return ret===undefined?null:ret;
242};
243var _35=function(_36,dfd){
244if(!dfd.ioArgs.args.failOk){
245console.error(_36);
246}
247return _36;
248};
249var _37=null;
250var _38=[];
251var _39=0;
252var _3a=function(dfd){
253if(_39<=0){
254_39=0;
255if(_2.ioPublish&&_1.publish&&(!dfd||dfd&&dfd.ioArgs.args.ioPublish!==false)){
256_1.publish("/dojo/io/stop");
257}
258}
259};
260var _3b=function(){
261var now=(new Date()).getTime();
262if(!_1._blockAsync){
263for(var i=0,tif;i<_38.length&&(tif=_38[i]);i++){
264var dfd=tif.dfd;
265var _3c=function(){
266if(!dfd||dfd.canceled||!tif.validCheck(dfd)){
267_38.splice(i--,1);
268_39-=1;
269}else{
270if(tif.ioCheck(dfd)){
271_38.splice(i--,1);
272tif.resHandle(dfd);
273_39-=1;
274}else{
275if(dfd.startTime){
276if(dfd.startTime+(dfd.ioArgs.args.timeout||0)<now){
277_38.splice(i--,1);
278var err=new Error("timeout exceeded");
279err.dojoType="timeout";
280dfd.errback(err);
281dfd.cancel();
282_39-=1;
283}
284}
285}
286}
287};
288if(dojo.config.debugAtAllCosts){
289_3c.call(this);
290}else{
291try{
292_3c.call(this);
293}
294catch(e){
295dfd.errback(e);
296}
297}
298}
299}
300_3a(dfd);
301if(!_38.length){
302clearInterval(_37);
303_37=null;
304return;
305}
306};
307dojo._ioCancelAll=function(){
308try{
309_1.forEach(_38,function(i){
310try{
311i.dfd.cancel();
312}
313catch(e){
314}
315});
316}
317catch(e){
318}
319};
320if(_1.isIE){
321_1.addOnWindowUnload(_1._ioCancelAll);
322}
323_1._ioNotifyStart=function(dfd){
324if(_2.ioPublish&&_1.publish&&dfd.ioArgs.args.ioPublish!==false){
325if(!_39){
326_1.publish("/dojo/io/start");
327}
328_39+=1;
329_1.publish("/dojo/io/send",[dfd]);
330}
331};
332_1._ioWatch=function(dfd,_3d,_3e,_3f){
333var _40=dfd.ioArgs.args;
334if(_40.timeout){
335dfd.startTime=(new Date()).getTime();
336}
337_38.push({dfd:dfd,validCheck:_3d,ioCheck:_3e,resHandle:_3f});
338if(!_37){
339_37=setInterval(_3b,50);
340}
341if(_40.sync){
342_3b();
343}
344};
345var _41="application/x-www-form-urlencoded";
346var _42=function(dfd){
347return dfd.ioArgs.xhr.readyState;
348};
349var _43=function(dfd){
350return 4==dfd.ioArgs.xhr.readyState;
351};
352var _44=function(dfd){
353var xhr=dfd.ioArgs.xhr;
354if(_1._isDocumentOk(xhr)){
355dfd.callback(dfd);
356}else{
357var err=new Error("Unable to load "+dfd.ioArgs.url+" status:"+xhr.status);
358err.status=xhr.status;
359err.responseText=xhr.responseText;
360dfd.errback(err);
361}
362};
363dojo._ioAddQueryToUrl=function(_45){
364if(_45.query.length){
365_45.url+=(_45.url.indexOf("?")==-1?"?":"&")+_45.query;
366_45.query=null;
367}
368};
369dojo.xhr=function(_46,_47,_48){
370var dfd=_1._ioSetArgs(_47,_32,_34,_35);
371var _49=dfd.ioArgs;
372var xhr=_49.xhr=_1._xhrObj(_49.args);
373if(!xhr){
374dfd.cancel();
375return dfd;
376}
377if("postData" in _47){
378_49.query=_47.postData;
379}else{
380if("putData" in _47){
381_49.query=_47.putData;
382}else{
383if("rawBody" in _47){
384_49.query=_47.rawBody;
385}else{
386if((arguments.length>2&&!_48)||"POST|PUT".indexOf(_46.toUpperCase())==-1){
387_1._ioAddQueryToUrl(_49);
388}
389}
390}
391}
392xhr.open(_46,_49.url,_47.sync!==true,_47.user||undefined,_47.password||undefined);
393if(_47.headers){
394for(var hdr in _47.headers){
395if(hdr.toLowerCase()==="content-type"&&!_47.contentType){
396_47.contentType=_47.headers[hdr];
397}else{
398if(_47.headers[hdr]){
399xhr.setRequestHeader(hdr,_47.headers[hdr]);
400}
401}
402}
403}
404xhr.setRequestHeader("Content-Type",_47.contentType||_41);
405if(!_47.headers||!("X-Requested-With" in _47.headers)){
406xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");
407}
408_1._ioNotifyStart(dfd);
409if(dojo.config.debugAtAllCosts){
410xhr.send(_49.query);
411}else{
412try{
413xhr.send(_49.query);
414}
415catch(e){
416_49.error=e;
417dfd.cancel();
418}
419}
420_1._ioWatch(dfd,_42,_43,_44);
421xhr=null;
422return dfd;
423};
424dojo.xhrGet=function(_4a){
425return _1.xhr("GET",_4a);
426};
427dojo.rawXhrPost=dojo.xhrPost=function(_4b){
428return _1.xhr("POST",_4b,true);
429};
430dojo.rawXhrPut=dojo.xhrPut=function(_4c){
431return _1.xhr("PUT",_4c,true);
432};
433dojo.xhrDelete=function(_4d){
434return _1.xhr("DELETE",_4d);
435};
436})();
437}