root / trunk / web / dojo / dojox / atom / io / Connection.js @ 9
History | View | Annotate | Download (5.35 KB)
1 | 9 | andrej.cim | /*
|
---|---|---|---|
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 | |||
8 | if(!dojo._hasResource["dojox.atom.io.Connection"]){ |
||
9 | dojo._hasResource["dojox.atom.io.Connection"]=true; |
||
10 | dojo.provide("dojox.atom.io.Connection");
|
||
11 | dojo.require("dojox.atom.io.model");
|
||
12 | dojo.declare("dojox.atom.io.Connection",null,{constructor:function(_1,_2){ |
||
13 | this.sync=_1;
|
||
14 | this.preventCache=_2;
|
||
15 | },preventCache:false,alertsEnabled:false,getFeed:function(_3,_4,_5,_6){ |
||
16 | this._getXmlDoc(_3,"feed",new dojox.atom.io.model.Feed(),dojox.atom.io.model._Constants.ATOM_NS,_4,_5,_6); |
||
17 | },getService:function(_7,_8,_9,_a){ |
||
18 | this._getXmlDoc(_7,"service",new dojox.atom.io.model.Service(_7),dojox.atom.io.model._Constants.APP_NS,_8,_9,_a); |
||
19 | },getEntry:function(_b,_c,_d,_e){ |
||
20 | this._getXmlDoc(_b,"entry",new dojox.atom.io.model.Entry(),dojox.atom.io.model._Constants.ATOM_NS,_c,_d,_e); |
||
21 | },_getXmlDoc:function(_f,_10,_11,_12,_13,_14,_15){ |
||
22 | if(!_15){
|
||
23 | _15=dojo.global; |
||
24 | } |
||
25 | var ae=this.alertsEnabled; |
||
26 | var _16={url:_f,handleAs:"xml",sync:this.sync,preventCache:this.preventCache,load:function(_17,_18){ |
||
27 | var _19=null; |
||
28 | var _1a=_17;
|
||
29 | var _1b;
|
||
30 | if(_1a){
|
||
31 | if(typeof (_1a.getElementsByTagNameNS)!="undefined"){ |
||
32 | _1b=_1a.getElementsByTagNameNS(_12,_10); |
||
33 | if(_1b&&_1b.length>0){ |
||
34 | _19=_1b.item(0);
|
||
35 | }else{
|
||
36 | if(_1a.lastChild){
|
||
37 | _19=_1a.lastChild; |
||
38 | } |
||
39 | } |
||
40 | }else{
|
||
41 | if(typeof (_1a.getElementsByTagName)!="undefined"){ |
||
42 | _1b=_1a.getElementsByTagName(_10); |
||
43 | if(_1b&&_1b.length>0){ |
||
44 | for(var i=0;i<_1b.length;i++){ |
||
45 | if(_1b[i].namespaceURI==_12){
|
||
46 | _19=_1b[i]; |
||
47 | break;
|
||
48 | } |
||
49 | } |
||
50 | }else{
|
||
51 | if(_1a.lastChild){
|
||
52 | _19=_1a.lastChild; |
||
53 | } |
||
54 | } |
||
55 | }else{
|
||
56 | if(_1a.lastChild){
|
||
57 | _19=_1a.lastChild; |
||
58 | }else{
|
||
59 | _13.call(_15,null,null,_18); |
||
60 | return;
|
||
61 | } |
||
62 | } |
||
63 | } |
||
64 | _11.buildFromDom(_19); |
||
65 | if(_13){
|
||
66 | _13.call(_15,_11,_1a,_18); |
||
67 | }else{
|
||
68 | if(ae){
|
||
69 | throw new Error("The callback value does not exist."); |
||
70 | } |
||
71 | } |
||
72 | }else{
|
||
73 | _13.call(_15,null,null,_18); |
||
74 | } |
||
75 | }}; |
||
76 | if(this.user&&this.user!==null){ |
||
77 | _16.user=this.user;
|
||
78 | } |
||
79 | if(this.password&&this.password!==null){ |
||
80 | _16.password=this.password;
|
||
81 | } |
||
82 | if(_14){
|
||
83 | _16.error=function(_1c,_1d){ |
||
84 | _14.call(_15,_1c,_1d); |
||
85 | }; |
||
86 | }else{
|
||
87 | _16.error=function(){ |
||
88 | throw new Error("The URL requested cannot be accessed"); |
||
89 | }; |
||
90 | } |
||
91 | dojo.xhrGet(_16); |
||
92 | },updateEntry:function(_1e,_1f,_20,_21,_22,_23){ |
||
93 | if(!_23){
|
||
94 | _23=dojo.global; |
||
95 | } |
||
96 | _1e.updated=new Date();
|
||
97 | var url=_1e.getEditHref();
|
||
98 | if(!url){
|
||
99 | throw new Error("A URL has not been specified for editing this entry."); |
||
100 | } |
||
101 | var _24=this; |
||
102 | var ae=this.alertsEnabled; |
||
103 | var _25={url:url,handleAs:"text",contentType:"text/xml",sync:this.sync,preventCache:this.preventCache,load:function(_26,_27){ |
||
104 | var _28=null; |
||
105 | if(_21){
|
||
106 | _28=_27.xhr.getResponseHeader("Location");
|
||
107 | if(!_28){
|
||
108 | _28=url; |
||
109 | } |
||
110 | var _29=function(_2a,dom,_2b){ |
||
111 | if(_1f){
|
||
112 | _1f.call(_23,_2a,_28,_2b); |
||
113 | }else{
|
||
114 | if(ae){
|
||
115 | throw new Error("The callback value does not exist."); |
||
116 | } |
||
117 | } |
||
118 | }; |
||
119 | _24.getEntry(_28,_29); |
||
120 | }else{
|
||
121 | if(_1f){
|
||
122 | _1f.call(_23,_1e,_27.xhr.getResponseHeader("Location"),_27);
|
||
123 | }else{
|
||
124 | if(ae){
|
||
125 | throw new Error("The callback value does not exist."); |
||
126 | } |
||
127 | } |
||
128 | } |
||
129 | return _26;
|
||
130 | }}; |
||
131 | if(this.user&&this.user!==null){ |
||
132 | _25.user=this.user;
|
||
133 | } |
||
134 | if(this.password&&this.password!==null){ |
||
135 | _25.password=this.password;
|
||
136 | } |
||
137 | if(_20){
|
||
138 | _25.error=function(_2c,_2d){ |
||
139 | _20.call(_23,_2c,_2d); |
||
140 | }; |
||
141 | }else{
|
||
142 | _25.error=function(){ |
||
143 | throw new Error("The URL requested cannot be accessed"); |
||
144 | }; |
||
145 | } |
||
146 | if(_22){
|
||
147 | _25.postData=_1e.toString(true);
|
||
148 | _25.headers={"X-Method-Override":"PUT"}; |
||
149 | dojo.rawXhrPost(_25); |
||
150 | }else{
|
||
151 | _25.putData=_1e.toString(true);
|
||
152 | var xhr=dojo.rawXhrPut(_25);
|
||
153 | } |
||
154 | },addEntry:function(_2e,url,_2f,_30,_31,_32){ |
||
155 | if(!_32){
|
||
156 | _32=dojo.global; |
||
157 | } |
||
158 | _2e.published=new Date();
|
||
159 | _2e.updated=new Date();
|
||
160 | var _33=_2e.feedUrl;
|
||
161 | var ae=this.alertsEnabled; |
||
162 | if(!url&&_33){
|
||
163 | url=_33; |
||
164 | } |
||
165 | if(!url){
|
||
166 | if(ae){
|
||
167 | throw new Error("The request cannot be processed because the URL parameter is missing."); |
||
168 | } |
||
169 | return;
|
||
170 | } |
||
171 | var _34=this; |
||
172 | var _35={url:url,handleAs:"text",contentType:"text/xml",sync:this.sync,preventCache:this.preventCache,postData:_2e.toString(true),load:function(_36,_37){ |
||
173 | var _38=_37.xhr.getResponseHeader("Location"); |
||
174 | if(!_38){
|
||
175 | _38=url; |
||
176 | } |
||
177 | if(!_37.retrieveEntry){
|
||
178 | if(_2f){
|
||
179 | _2f.call(_32,_2e,_38,_37); |
||
180 | }else{
|
||
181 | if(ae){
|
||
182 | throw new Error("The callback value does not exist."); |
||
183 | } |
||
184 | } |
||
185 | }else{
|
||
186 | var _39=function(_3a,dom,_3b){ |
||
187 | if(_2f){
|
||
188 | _2f.call(_32,_3a,_38,_3b); |
||
189 | }else{
|
||
190 | if(ae){
|
||
191 | throw new Error("The callback value does not exist."); |
||
192 | } |
||
193 | } |
||
194 | }; |
||
195 | _34.getEntry(_38,_39); |
||
196 | } |
||
197 | return _36;
|
||
198 | }}; |
||
199 | if(this.user&&this.user!==null){ |
||
200 | _35.user=this.user;
|
||
201 | } |
||
202 | if(this.password&&this.password!==null){ |
||
203 | _35.password=this.password;
|
||
204 | } |
||
205 | if(_30){
|
||
206 | _35.error=function(_3c,_3d){ |
||
207 | _30.call(_32,_3c,_3d); |
||
208 | }; |
||
209 | }else{
|
||
210 | _35.error=function(){ |
||
211 | throw new Error("The URL requested cannot be accessed"); |
||
212 | }; |
||
213 | } |
||
214 | dojo.rawXhrPost(_35); |
||
215 | },deleteEntry:function(_3e,_3f,_40,_41,_42){ |
||
216 | if(!_42){
|
||
217 | _42=dojo.global; |
||
218 | } |
||
219 | var url=null; |
||
220 | if(typeof (_3e)=="string"){ |
||
221 | url=_3e; |
||
222 | }else{
|
||
223 | url=_3e.getEditHref(); |
||
224 | } |
||
225 | if(!url){
|
||
226 | _3f.call(_42,false,null); |
||
227 | throw new Error("The request cannot be processed because the URL parameter is missing."); |
||
228 | } |
||
229 | var _43={url:url,handleAs:"text",sync:this.sync,preventCache:this.preventCache,load:function(_44,_45){ |
||
230 | _3f.call(_42,_45); |
||
231 | return _44;
|
||
232 | }}; |
||
233 | if(this.user&&this.user!==null){ |
||
234 | _43.user=this.user;
|
||
235 | } |
||
236 | if(this.password&&this.password!==null){ |
||
237 | _43.password=this.password;
|
||
238 | } |
||
239 | if(_40){
|
||
240 | _43.error=function(_46,_47){ |
||
241 | _40.call(_42,_46,_47); |
||
242 | }; |
||
243 | }else{
|
||
244 | _43.error=function(){ |
||
245 | throw new Error("The URL requested cannot be accessed"); |
||
246 | }; |
||
247 | } |
||
248 | if(_41){
|
||
249 | _43.headers={"X-Method-Override":"DELETE"}; |
||
250 | dojo.xhrPost(_43); |
||
251 | }else{
|
||
252 | dojo.xhrDelete(_43); |
||
253 | } |
||
254 | }}); |
||
255 | } |