root / trunk / web / dojo / dojox / atom / io / model.js @ 12
History | View | Annotate | Download (22.8 KB)
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 |
|
8 |
if(!dojo._hasResource["dojox.atom.io.model"]){ |
9 |
dojo._hasResource["dojox.atom.io.model"]=true; |
10 |
dojo.provide("dojox.atom.io.model");
|
11 |
dojo.require("dojox.xml.parser");
|
12 |
dojo.require("dojo.string");
|
13 |
dojo.require("dojo.date.stamp");
|
14 |
dojox.atom.io.model._Constants={"ATOM_URI":"http://www.w3.org/2005/Atom","ATOM_NS":"http://www.w3.org/2005/Atom","PURL_NS":"http://purl.org/atom/app#","APP_NS":"http://www.w3.org/2007/app"}; |
15 |
dojox.atom.io.model._actions={"link":function(_1,_2){ |
16 |
if(_1.links===null){ |
17 |
_1.links=[]; |
18 |
} |
19 |
var _3=new dojox.atom.io.model.Link(); |
20 |
_3.buildFromDom(_2); |
21 |
_1.links.push(_3); |
22 |
},"author":function(_4,_5){ |
23 |
if(_4.authors===null){ |
24 |
_4.authors=[]; |
25 |
} |
26 |
var _6=new dojox.atom.io.model.Person("author"); |
27 |
_6.buildFromDom(_5); |
28 |
_4.authors.push(_6); |
29 |
},"contributor":function(_7,_8){ |
30 |
if(_7.contributors===null){ |
31 |
_7.contributors=[]; |
32 |
} |
33 |
var _9=new dojox.atom.io.model.Person("contributor"); |
34 |
_9.buildFromDom(_8); |
35 |
_7.contributors.push(_9); |
36 |
},"category":function(_a,_b){ |
37 |
if(_a.categories===null){ |
38 |
_a.categories=[]; |
39 |
} |
40 |
var _c=new dojox.atom.io.model.Category(); |
41 |
_c.buildFromDom(_b); |
42 |
_a.categories.push(_c); |
43 |
},"icon":function(_d,_e){ |
44 |
_d.icon=dojox.xml.parser.textContent(_e); |
45 |
},"id":function(_f,_10){ |
46 |
_f.id=dojox.xml.parser.textContent(_10); |
47 |
},"rights":function(obj,_11){ |
48 |
obj.rights=dojox.xml.parser.textContent(_11); |
49 |
},"subtitle":function(obj,_12){ |
50 |
var cnt=new dojox.atom.io.model.Content("subtitle"); |
51 |
cnt.buildFromDom(_12); |
52 |
obj.subtitle=cnt; |
53 |
},"title":function(obj,_13){ |
54 |
var cnt=new dojox.atom.io.model.Content("title"); |
55 |
cnt.buildFromDom(_13); |
56 |
obj.title=cnt; |
57 |
},"updated":function(obj,_14){ |
58 |
obj.updated=dojox.atom.io.model.util.createDate(_14); |
59 |
},"issued":function(obj,_15){ |
60 |
obj.issued=dojox.atom.io.model.util.createDate(_15); |
61 |
},"modified":function(obj,_16){ |
62 |
obj.modified=dojox.atom.io.model.util.createDate(_16); |
63 |
},"published":function(obj,_17){ |
64 |
obj.published=dojox.atom.io.model.util.createDate(_17); |
65 |
},"entry":function(obj,_18){ |
66 |
if(obj.entries===null){ |
67 |
obj.entries=[]; |
68 |
} |
69 |
var _19=obj.createEntry?obj.createEntry():new dojox.atom.io.model.Entry(); |
70 |
_19.buildFromDom(_18); |
71 |
obj.entries.push(_19); |
72 |
},"content":function(obj,_1a){ |
73 |
var cnt=new dojox.atom.io.model.Content("content"); |
74 |
cnt.buildFromDom(_1a); |
75 |
obj.content=cnt; |
76 |
},"summary":function(obj,_1b){ |
77 |
var _1c=new dojox.atom.io.model.Content("summary"); |
78 |
_1c.buildFromDom(_1b); |
79 |
obj.summary=_1c; |
80 |
},"name":function(obj,_1d){ |
81 |
obj.name=dojox.xml.parser.textContent(_1d); |
82 |
},"email":function(obj,_1e){ |
83 |
obj.email=dojox.xml.parser.textContent(_1e); |
84 |
},"uri":function(obj,_1f){ |
85 |
obj.uri=dojox.xml.parser.textContent(_1f); |
86 |
},"generator":function(obj,_20){ |
87 |
obj.generator=new dojox.atom.io.model.Generator();
|
88 |
obj.generator.buildFromDom(_20); |
89 |
}}; |
90 |
dojox.atom.io.model.util={createDate:function(_21){ |
91 |
var _22=dojox.xml.parser.textContent(_21);
|
92 |
if(_22){
|
93 |
return dojo.date.stamp.fromISOString(dojo.trim(_22));
|
94 |
} |
95 |
return null; |
96 |
},escapeHtml:function(str){ |
97 |
return str.replace(/&/gm,"&").replace(/</gm,"<").replace(/>/gm,">").replace(/"/gm,""").replace(/'/gm,"'"); |
98 |
},unEscapeHtml:function(str){ |
99 |
return str.replace(/</gm,"<").replace(/>/gm,">").replace(/"/gm,"\"").replace(/'/gm,"'").replace(/&/gm,"&"); |
100 |
},getNodename:function(_23){ |
101 |
var _24=null; |
102 |
if(_23!==null){ |
103 |
_24=_23.localName?_23.localName:_23.nodeName; |
104 |
if(_24!==null){ |
105 |
var _25=_24.indexOf(":"); |
106 |
if(_25!==-1){ |
107 |
_24=_24.substring((_25+1),_24.length);
|
108 |
} |
109 |
} |
110 |
} |
111 |
return _24;
|
112 |
}}; |
113 |
dojo.declare("dojox.atom.io.model.Node",null,{constructor:function(_26,_27,_28,_29,_2a){ |
114 |
this.name_space=_26;
|
115 |
this.name=_27;
|
116 |
this.attributes=[];
|
117 |
if(_28){
|
118 |
this.attributes=_28;
|
119 |
} |
120 |
this.content=[];
|
121 |
this.rawNodes=[];
|
122 |
this.textContent=null; |
123 |
if(_29){
|
124 |
this.content.push(_29);
|
125 |
} |
126 |
this.shortNs=_2a;
|
127 |
this._objName="Node"; |
128 |
},buildFromDom:function(_2b){ |
129 |
this._saveAttributes(_2b);
|
130 |
this.name_space=_2b.namespaceURI;
|
131 |
this.shortNs=_2b.prefix;
|
132 |
this.name=dojox.atom.io.model.util.getNodename(_2b);
|
133 |
for(var x=0;x<_2b.childNodes.length;x++){ |
134 |
var c=_2b.childNodes[x];
|
135 |
if(dojox.atom.io.model.util.getNodename(c)!="#text"){ |
136 |
this.rawNodes.push(c);
|
137 |
var n=new dojox.atom.io.model.Node(); |
138 |
n.buildFromDom(c,true);
|
139 |
this.content.push(n);
|
140 |
}else{
|
141 |
this.content.push(c.nodeValue);
|
142 |
} |
143 |
} |
144 |
this.textContent=dojox.xml.parser.textContent(_2b);
|
145 |
},_saveAttributes:function(_2c){ |
146 |
if(!this.attributes){ |
147 |
this.attributes=[];
|
148 |
} |
149 |
var _2d=function(_2e){ |
150 |
var _2f=_2e.attributes;
|
151 |
if(_2f===null){ |
152 |
return false; |
153 |
} |
154 |
return (_2f.length!==0); |
155 |
}; |
156 |
if(_2d(_2c)&&this._getAttributeNames){ |
157 |
var _30=this._getAttributeNames(_2c); |
158 |
if(_30&&_30.length>0){ |
159 |
for(var x in _30){ |
160 |
var _31=_2c.getAttribute(_30[x]);
|
161 |
if(_31){
|
162 |
this.attributes[_30[x]]=_31;
|
163 |
} |
164 |
} |
165 |
} |
166 |
} |
167 |
},addAttribute:function(_32,_33){ |
168 |
this.attributes[_32]=_33;
|
169 |
},getAttribute:function(_34){ |
170 |
return this.attributes[_34]; |
171 |
},_getAttributeNames:function(_35){ |
172 |
var _36=[];
|
173 |
for(var i=0;i<_35.attributes.length;i++){ |
174 |
_36.push(_35.attributes[i].nodeName); |
175 |
} |
176 |
return _36;
|
177 |
},toString:function(){ |
178 |
var xml=[];
|
179 |
var x;
|
180 |
var _37=(this.shortNs?this.shortNs+":":"")+this.name; |
181 |
var _38=(this.name=="#cdata-section"); |
182 |
if(_38){
|
183 |
xml.push("<![CDATA[");
|
184 |
xml.push(this.textContent);
|
185 |
xml.push("]]>");
|
186 |
}else{
|
187 |
xml.push("<");
|
188 |
xml.push(_37); |
189 |
if(this.name_space){ |
190 |
xml.push(" xmlns='"+this.name_space+"'"); |
191 |
} |
192 |
if(this.attributes){ |
193 |
for(x in this.attributes){ |
194 |
xml.push(" "+x+"='"+this.attributes[x]+"'"); |
195 |
} |
196 |
} |
197 |
if(this.content){ |
198 |
xml.push(">");
|
199 |
for(x in this.content){ |
200 |
xml.push(this.content[x]);
|
201 |
} |
202 |
xml.push("</"+_37+">\n"); |
203 |
}else{
|
204 |
xml.push("/>\n");
|
205 |
} |
206 |
} |
207 |
return xml.join(""); |
208 |
},addContent:function(_39){ |
209 |
this.content.push(_39);
|
210 |
}}); |
211 |
dojo.declare("dojox.atom.io.model.AtomItem",dojox.atom.io.model.Node,{constructor:function(_3a){ |
212 |
this.ATOM_URI=dojox.atom.io.model._Constants.ATOM_URI;
|
213 |
this.links=null; |
214 |
this.authors=null; |
215 |
this.categories=null; |
216 |
this.contributors=null; |
217 |
this.icon=this.id=this.logo=this.xmlBase=this.rights=null; |
218 |
this.subtitle=this.title=null; |
219 |
this.updated=this.published=null; |
220 |
this.issued=this.modified=null; |
221 |
this.content=null; |
222 |
this.extensions=null; |
223 |
this.entries=null; |
224 |
this.name_spaces={};
|
225 |
this._objName="AtomItem"; |
226 |
},_getAttributeNames:function(){ |
227 |
return null; |
228 |
},_accepts:{},accept:function(tag){ |
229 |
return Boolean(this._accepts[tag]); |
230 |
},_postBuild:function(){ |
231 |
},buildFromDom:function(_3b){ |
232 |
var i,c,n;
|
233 |
for(i=0;i<_3b.attributes.length;i++){ |
234 |
c=_3b.attributes.item(i); |
235 |
n=dojox.atom.io.model.util.getNodename(c); |
236 |
if(c.prefix=="xmlns"&&c.prefix!=n){ |
237 |
this.addNamespace(c.nodeValue,n);
|
238 |
} |
239 |
} |
240 |
c=_3b.childNodes; |
241 |
for(i=0;i<c.length;i++){ |
242 |
if(c[i].nodeType==1){ |
243 |
var _3c=dojox.atom.io.model.util.getNodename(c[i]);
|
244 |
if(!_3c){
|
245 |
continue;
|
246 |
} |
247 |
if(c[i].namespaceURI!=dojox.atom.io.model._Constants.ATOM_NS&&_3c!="#text"){ |
248 |
if(!this.extensions){ |
249 |
this.extensions=[];
|
250 |
} |
251 |
var _3d=new dojox.atom.io.model.Node(); |
252 |
_3d.buildFromDom(c[i]); |
253 |
this.extensions.push(_3d);
|
254 |
} |
255 |
if(!this.accept(_3c.toLowerCase())){ |
256 |
continue;
|
257 |
} |
258 |
var fn=dojox.atom.io.model._actions[_3c];
|
259 |
if(fn){
|
260 |
fn(this,c[i]);
|
261 |
} |
262 |
} |
263 |
} |
264 |
this._saveAttributes(_3b);
|
265 |
if(this._postBuild){ |
266 |
this._postBuild();
|
267 |
} |
268 |
},addNamespace:function(_3e,_3f){ |
269 |
if(_3e&&_3f){
|
270 |
this.name_spaces[_3f]=_3e;
|
271 |
} |
272 |
},addAuthor:function(_40,_41,uri){ |
273 |
if(!this.authors){ |
274 |
this.authors=[];
|
275 |
} |
276 |
this.authors.push(new dojox.atom.io.model.Person("author",_40,_41,uri)); |
277 |
},addContributor:function(_42,_43,uri){ |
278 |
if(!this.contributors){ |
279 |
this.contributors=[];
|
280 |
} |
281 |
this.contributors.push(new dojox.atom.io.model.Person("contributor",_42,_43,uri)); |
282 |
},addLink:function(_44,rel,_45,_46,_47){ |
283 |
if(!this.links){ |
284 |
this.links=[];
|
285 |
} |
286 |
this.links.push(new dojox.atom.io.model.Link(_44,rel,_45,_46,_47)); |
287 |
},removeLink:function(_48,rel){ |
288 |
if(!this.links||!dojo.isArray(this.links)){ |
289 |
return;
|
290 |
} |
291 |
var _49=0; |
292 |
for(var i=0;i<this.links.length;i++){ |
293 |
if((!_48||this.links[i].href===_48)&&(!rel||this.links[i].rel===rel)){ |
294 |
this.links.splice(i,1); |
295 |
_49++; |
296 |
} |
297 |
} |
298 |
return _49;
|
299 |
},removeBasicLinks:function(){ |
300 |
if(!this.links){ |
301 |
return;
|
302 |
} |
303 |
var _4a=0; |
304 |
for(var i=0;i<this.links.length;i++){ |
305 |
if(!this.links[i].rel){ |
306 |
this.links.splice(i,1); |
307 |
_4a++; |
308 |
i--; |
309 |
} |
310 |
} |
311 |
return _4a;
|
312 |
},addCategory:function(_4b,_4c,_4d){ |
313 |
if(!this.categories){ |
314 |
this.categories=[];
|
315 |
} |
316 |
this.categories.push(new dojox.atom.io.model.Category(_4b,_4c,_4d)); |
317 |
},getCategories:function(_4e){ |
318 |
if(!_4e){
|
319 |
return this.categories; |
320 |
} |
321 |
var arr=[];
|
322 |
for(var x in this.categories){ |
323 |
if(this.categories[x].scheme===_4e){ |
324 |
arr.push(this.categories[x]);
|
325 |
} |
326 |
} |
327 |
return arr;
|
328 |
},removeCategories:function(_4f,_50){ |
329 |
if(!this.categories){ |
330 |
return;
|
331 |
} |
332 |
var _51=0; |
333 |
for(var i=0;i<this.categories.length;i++){ |
334 |
if((!_4f||this.categories[i].scheme===_4f)&&(!_50||this.categories[i].term===_50)){ |
335 |
this.categories.splice(i,1); |
336 |
_51++; |
337 |
i--; |
338 |
} |
339 |
} |
340 |
return _51;
|
341 |
},setTitle:function(str,_52){ |
342 |
if(!str){
|
343 |
return;
|
344 |
} |
345 |
this.title=new dojox.atom.io.model.Content("title"); |
346 |
this.title.value=str;
|
347 |
if(_52){
|
348 |
this.title.type=_52;
|
349 |
} |
350 |
},addExtension:function(_53,_54,_55,_56,_57){ |
351 |
if(!this.extensions){ |
352 |
this.extensions=[];
|
353 |
} |
354 |
this.extensions.push(new dojox.atom.io.model.Node(_53,_54,_55,_56,_57||"ns"+this.extensions.length)); |
355 |
},getExtensions:function(_58,_59){ |
356 |
var arr=[];
|
357 |
if(!this.extensions){ |
358 |
return arr;
|
359 |
} |
360 |
for(var x in this.extensions){ |
361 |
if((this.extensions[x].name_space===_58||this.extensions[x].shortNs===_58)&&(!_59||this.extensions[x].name===_59)){ |
362 |
arr.push(this.extensions[x]);
|
363 |
} |
364 |
} |
365 |
return arr;
|
366 |
},removeExtensions:function(_5a,_5b){ |
367 |
if(!this.extensions){ |
368 |
return;
|
369 |
} |
370 |
for(var i=0;i<this.extensions.length;i++){ |
371 |
if((this.extensions[i].name_space==_5a||this.extensions[i].shortNs===_5a)&&this.extensions[i].name===_5b){ |
372 |
this.extensions.splice(i,1); |
373 |
i--; |
374 |
} |
375 |
} |
376 |
},destroy:function(){ |
377 |
this.links=null; |
378 |
this.authors=null; |
379 |
this.categories=null; |
380 |
this.contributors=null; |
381 |
this.icon=this.id=this.logo=this.xmlBase=this.rights=null; |
382 |
this.subtitle=this.title=null; |
383 |
this.updated=this.published=null; |
384 |
this.issued=this.modified=null; |
385 |
this.content=null; |
386 |
this.extensions=null; |
387 |
this.entries=null; |
388 |
}}); |
389 |
dojo.declare("dojox.atom.io.model.Category",dojox.atom.io.model.Node,{constructor:function(_5c,_5d,_5e){ |
390 |
this.scheme=_5c;
|
391 |
this.term=_5d;
|
392 |
this.label=_5e;
|
393 |
this._objName="Category"; |
394 |
},_postBuild:function(){ |
395 |
},_getAttributeNames:function(){ |
396 |
return ["label","scheme","term"]; |
397 |
},toString:function(){ |
398 |
var s=[];
|
399 |
s.push("<category ");
|
400 |
if(this.label){ |
401 |
s.push(" label=\""+this.label+"\" "); |
402 |
} |
403 |
if(this.scheme){ |
404 |
s.push(" scheme=\""+this.scheme+"\" "); |
405 |
} |
406 |
if(this.term){ |
407 |
s.push(" term=\""+this.term+"\" "); |
408 |
} |
409 |
s.push("/>\n");
|
410 |
return s.join(""); |
411 |
},buildFromDom:function(_5f){ |
412 |
this._saveAttributes(_5f);
|
413 |
this.label=this.attributes.label; |
414 |
this.scheme=this.attributes.scheme; |
415 |
this.term=this.attributes.term; |
416 |
if(this._postBuild){ |
417 |
this._postBuild();
|
418 |
} |
419 |
}}); |
420 |
dojo.declare("dojox.atom.io.model.Content",dojox.atom.io.model.Node,{constructor:function(_60,_61,src,_62,_63){ |
421 |
this.tagName=_60;
|
422 |
this.value=_61;
|
423 |
this.src=src;
|
424 |
this.type=_62;
|
425 |
this.xmlLang=_63;
|
426 |
this.HTML="html"; |
427 |
this.TEXT="text"; |
428 |
this.XHTML="xhtml"; |
429 |
this.XML="xml"; |
430 |
this._useTextContent="true"; |
431 |
},_getAttributeNames:function(){ |
432 |
return ["type","src"]; |
433 |
},_postBuild:function(){ |
434 |
},buildFromDom:function(_64){ |
435 |
var _65=_64.getAttribute("type"); |
436 |
if(_65){
|
437 |
_65=_65.toLowerCase(); |
438 |
if(_65=="xml"||"text/xml"){ |
439 |
_65=this.XML;
|
440 |
} |
441 |
}else{
|
442 |
_65="text";
|
443 |
} |
444 |
if(_65===this.XML){ |
445 |
if(_64.firstChild){
|
446 |
var i;
|
447 |
this.value=""; |
448 |
for(i=0;i<_64.childNodes.length;i++){ |
449 |
var c=_64.childNodes[i];
|
450 |
if(c){
|
451 |
this.value+=dojox.xml.parser.innerXML(c);
|
452 |
} |
453 |
} |
454 |
} |
455 |
}else{
|
456 |
if(_64.innerHTML){
|
457 |
this.value=_64.innerHTML;
|
458 |
}else{
|
459 |
this.value=dojox.xml.parser.textContent(_64);
|
460 |
} |
461 |
} |
462 |
this._saveAttributes(_64);
|
463 |
if(this.attributes){ |
464 |
this.type=this.attributes.type; |
465 |
this.scheme=this.attributes.scheme; |
466 |
this.term=this.attributes.term; |
467 |
} |
468 |
if(!this.type){ |
469 |
this.type="text"; |
470 |
} |
471 |
var _66=this.type.toLowerCase(); |
472 |
if(_66==="html"||_66==="text/html"||_66==="xhtml"||_66==="text/xhtml"){ |
473 |
this.value=this.value?dojox.atom.io.model.util.unEscapeHtml(this.value):""; |
474 |
} |
475 |
if(this._postBuild){ |
476 |
this._postBuild();
|
477 |
} |
478 |
},toString:function(){ |
479 |
var s=[];
|
480 |
s.push("<"+this.tagName+" "); |
481 |
if(!this.type){ |
482 |
this.type="text"; |
483 |
} |
484 |
if(this.type){ |
485 |
s.push(" type=\""+this.type+"\" "); |
486 |
} |
487 |
if(this.xmlLang){ |
488 |
s.push(" xml:lang=\""+this.xmlLang+"\" "); |
489 |
} |
490 |
if(this.xmlBase){ |
491 |
s.push(" xml:base=\""+this.xmlBase+"\" "); |
492 |
} |
493 |
if(this.type.toLowerCase()==this.HTML){ |
494 |
s.push(">"+dojox.atom.io.model.util.escapeHtml(this.value)+"</"+this.tagName+">\n"); |
495 |
}else{
|
496 |
s.push(">"+this.value+"</"+this.tagName+">\n"); |
497 |
} |
498 |
var ret=s.join(""); |
499 |
return ret;
|
500 |
}}); |
501 |
dojo.declare("dojox.atom.io.model.Link",dojox.atom.io.model.Node,{constructor:function(_67,rel,_68,_69,_6a){ |
502 |
this.href=_67;
|
503 |
this.hrefLang=_68;
|
504 |
this.rel=rel;
|
505 |
this.title=_69;
|
506 |
this.type=_6a;
|
507 |
},_getAttributeNames:function(){ |
508 |
return ["href","jrefLang","rel","title","type"]; |
509 |
},_postBuild:function(){ |
510 |
},buildFromDom:function(_6b){ |
511 |
this._saveAttributes(_6b);
|
512 |
this.href=this.attributes.href; |
513 |
this.hrefLang=this.attributes.hreflang; |
514 |
this.rel=this.attributes.rel; |
515 |
this.title=this.attributes.title; |
516 |
this.type=this.attributes.type; |
517 |
if(this._postBuild){ |
518 |
this._postBuild();
|
519 |
} |
520 |
},toString:function(){ |
521 |
var s=[];
|
522 |
s.push("<link ");
|
523 |
if(this.href){ |
524 |
s.push(" href=\""+this.href+"\" "); |
525 |
} |
526 |
if(this.hrefLang){ |
527 |
s.push(" hrefLang=\""+this.hrefLang+"\" "); |
528 |
} |
529 |
if(this.rel){ |
530 |
s.push(" rel=\""+this.rel+"\" "); |
531 |
} |
532 |
if(this.title){ |
533 |
s.push(" title=\""+this.title+"\" "); |
534 |
} |
535 |
if(this.type){ |
536 |
s.push(" type = \""+this.type+"\" "); |
537 |
} |
538 |
s.push("/>\n");
|
539 |
return s.join(""); |
540 |
}}); |
541 |
dojo.declare("dojox.atom.io.model.Person",dojox.atom.io.model.Node,{constructor:function(_6c,_6d,_6e,uri){ |
542 |
this.author="author"; |
543 |
this.contributor="contributor"; |
544 |
if(!_6c){
|
545 |
_6c=this.author;
|
546 |
} |
547 |
this.personType=_6c;
|
548 |
this.name=_6d||""; |
549 |
this.email=_6e||""; |
550 |
this.uri=uri||""; |
551 |
this._objName="Person"; |
552 |
},_getAttributeNames:function(){ |
553 |
return null; |
554 |
},_postBuild:function(){ |
555 |
},accept:function(tag){ |
556 |
return Boolean(this._accepts[tag]); |
557 |
},buildFromDom:function(_6f){ |
558 |
var c=_6f.childNodes;
|
559 |
for(var i=0;i<c.length;i++){ |
560 |
var _70=dojox.atom.io.model.util.getNodename(c[i]);
|
561 |
if(!_70){
|
562 |
continue;
|
563 |
} |
564 |
if(c[i].namespaceURI!=dojox.atom.io.model._Constants.ATOM_NS&&_70!="#text"){ |
565 |
if(!this.extensions){ |
566 |
this.extensions=[];
|
567 |
} |
568 |
var _71=new dojox.atom.io.model.Node(); |
569 |
_71.buildFromDom(c[i]); |
570 |
this.extensions.push(_71);
|
571 |
} |
572 |
if(!this.accept(_70.toLowerCase())){ |
573 |
continue;
|
574 |
} |
575 |
var fn=dojox.atom.io.model._actions[_70];
|
576 |
if(fn){
|
577 |
fn(this,c[i]);
|
578 |
} |
579 |
} |
580 |
this._saveAttributes(_6f);
|
581 |
if(this._postBuild){ |
582 |
this._postBuild();
|
583 |
} |
584 |
},_accepts:{"name":true,"uri":true,"email":true},toString:function(){ |
585 |
var s=[];
|
586 |
s.push("<"+this.personType+">\n"); |
587 |
if(this.name){ |
588 |
s.push("\t<name>"+this.name+"</name>\n"); |
589 |
} |
590 |
if(this.email){ |
591 |
s.push("\t<email>"+this.email+"</email>\n"); |
592 |
} |
593 |
if(this.uri){ |
594 |
s.push("\t<uri>"+this.uri+"</uri>\n"); |
595 |
} |
596 |
s.push("</"+this.personType+">\n"); |
597 |
return s.join(""); |
598 |
}}); |
599 |
dojo.declare("dojox.atom.io.model.Generator",dojox.atom.io.model.Node,{constructor:function(uri,_72,_73){ |
600 |
this.uri=uri;
|
601 |
this.version=_72;
|
602 |
this.value=_73;
|
603 |
},_postBuild:function(){ |
604 |
},buildFromDom:function(_74){ |
605 |
this.value=dojox.xml.parser.textContent(_74);
|
606 |
this._saveAttributes(_74);
|
607 |
this.uri=this.attributes.uri; |
608 |
this.version=this.attributes.version; |
609 |
if(this._postBuild){ |
610 |
this._postBuild();
|
611 |
} |
612 |
},toString:function(){ |
613 |
var s=[];
|
614 |
s.push("<generator ");
|
615 |
if(this.uri){ |
616 |
s.push(" uri=\""+this.uri+"\" "); |
617 |
} |
618 |
if(this.version){ |
619 |
s.push(" version=\""+this.version+"\" "); |
620 |
} |
621 |
s.push(">"+this.value+"</generator>\n"); |
622 |
var ret=s.join(""); |
623 |
return ret;
|
624 |
}}); |
625 |
dojo.declare("dojox.atom.io.model.Entry",dojox.atom.io.model.AtomItem,{constructor:function(id){ |
626 |
this.id=id;
|
627 |
this._objName="Entry"; |
628 |
this.feedUrl=null; |
629 |
},_getAttributeNames:function(){ |
630 |
return null; |
631 |
},_accepts:{"author":true,"content":true,"category":true,"contributor":true,"created":true,"id":true,"link":true,"published":true,"rights":true,"summary":true,"title":true,"updated":true,"xmlbase":true,"issued":true,"modified":true},toString:function(_75){ |
632 |
var s=[];
|
633 |
var i;
|
634 |
if(_75){
|
635 |
s.push("<?xml version='1.0' encoding='UTF-8'?>");
|
636 |
s.push("<entry xmlns='"+dojox.atom.io.model._Constants.ATOM_URI+"'"); |
637 |
}else{
|
638 |
s.push("<entry");
|
639 |
} |
640 |
if(this.xmlBase){ |
641 |
s.push(" xml:base=\""+this.xmlBase+"\" "); |
642 |
} |
643 |
for(i in this.name_spaces){ |
644 |
s.push(" xmlns:"+i+"=\""+this.name_spaces[i]+"\""); |
645 |
} |
646 |
s.push(">\n");
|
647 |
s.push("<id>"+(this.id?this.id:"")+"</id>\n"); |
648 |
if(this.issued&&!this.published){ |
649 |
this.published=this.issued; |
650 |
} |
651 |
if(this.published){ |
652 |
s.push("<published>"+dojo.date.stamp.toISOString(this.published)+"</published>\n"); |
653 |
} |
654 |
if(this.created){ |
655 |
s.push("<created>"+dojo.date.stamp.toISOString(this.created)+"</created>\n"); |
656 |
} |
657 |
if(this.issued){ |
658 |
s.push("<issued>"+dojo.date.stamp.toISOString(this.issued)+"</issued>\n"); |
659 |
} |
660 |
if(this.modified){ |
661 |
s.push("<modified>"+dojo.date.stamp.toISOString(this.modified)+"</modified>\n"); |
662 |
} |
663 |
if(this.modified&&!this.updated){ |
664 |
this.updated=this.modified; |
665 |
} |
666 |
if(this.updated){ |
667 |
s.push("<updated>"+dojo.date.stamp.toISOString(this.updated)+"</updated>\n"); |
668 |
} |
669 |
if(this.rights){ |
670 |
s.push("<rights>"+this.rights+"</rights>\n"); |
671 |
} |
672 |
if(this.title){ |
673 |
s.push(this.title.toString());
|
674 |
} |
675 |
if(this.summary){ |
676 |
s.push(this.summary.toString());
|
677 |
} |
678 |
var _76=[this.authors,this.categories,this.links,this.contributors,this.extensions]; |
679 |
for(var x in _76){ |
680 |
if(_76[x]){
|
681 |
for(var y in _76[x]){ |
682 |
s.push(_76[x][y]); |
683 |
} |
684 |
} |
685 |
} |
686 |
if(this.content){ |
687 |
s.push(this.content.toString());
|
688 |
} |
689 |
s.push("</entry>\n");
|
690 |
return s.join(""); |
691 |
},getEditHref:function(){ |
692 |
if(this.links===null||this.links.length===0){ |
693 |
return null; |
694 |
} |
695 |
for(var x in this.links){ |
696 |
if(this.links[x].rel&&this.links[x].rel=="edit"){ |
697 |
return this.links[x].href; |
698 |
} |
699 |
} |
700 |
return null; |
701 |
},setEditHref:function(url){ |
702 |
if(this.links===null){ |
703 |
this.links=[];
|
704 |
} |
705 |
for(var x in this.links){ |
706 |
if(this.links[x].rel&&this.links[x].rel=="edit"){ |
707 |
this.links[x].href=url;
|
708 |
return;
|
709 |
} |
710 |
} |
711 |
this.addLink(url,"edit"); |
712 |
}}); |
713 |
dojo.declare("dojox.atom.io.model.Feed",dojox.atom.io.model.AtomItem,{_accepts:{"author":true,"content":true,"category":true,"contributor":true,"created":true,"id":true,"link":true,"published":true,"rights":true,"summary":true,"title":true,"updated":true,"xmlbase":true,"entry":true,"logo":true,"issued":true,"modified":true,"icon":true,"subtitle":true},addEntry:function(_77){ |
714 |
if(!_77.id){
|
715 |
throw new Error("The entry object must be assigned an ID attribute."); |
716 |
} |
717 |
if(!this.entries){ |
718 |
this.entries=[];
|
719 |
} |
720 |
_77.feedUrl=this.getSelfHref();
|
721 |
this.entries.push(_77);
|
722 |
},getFirstEntry:function(){ |
723 |
if(!this.entries||this.entries.length===0){ |
724 |
return null; |
725 |
} |
726 |
return this.entries[0]; |
727 |
},getEntry:function(_78){ |
728 |
if(!this.entries){ |
729 |
return null; |
730 |
} |
731 |
for(var x in this.entries){ |
732 |
if(this.entries[x].id==_78){ |
733 |
return this.entries[x]; |
734 |
} |
735 |
} |
736 |
return null; |
737 |
},removeEntry:function(_79){ |
738 |
if(!this.entries){ |
739 |
return;
|
740 |
} |
741 |
var _7a=0; |
742 |
for(var i=0;i<this.entries.length;i++){ |
743 |
if(this.entries[i]===_79){ |
744 |
this.entries.splice(i,1); |
745 |
_7a++; |
746 |
} |
747 |
} |
748 |
return _7a;
|
749 |
},setEntries:function(_7b){ |
750 |
for(var x in _7b){ |
751 |
this.addEntry(_7b[x]);
|
752 |
} |
753 |
},toString:function(){ |
754 |
var s=[];
|
755 |
var i;
|
756 |
s.push("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
|
757 |
s.push("<feed xmlns=\""+dojox.atom.io.model._Constants.ATOM_URI+"\""); |
758 |
if(this.xmlBase){ |
759 |
s.push(" xml:base=\""+this.xmlBase+"\""); |
760 |
} |
761 |
for(i in this.name_spaces){ |
762 |
s.push(" xmlns:"+i+"=\""+this.name_spaces[i]+"\""); |
763 |
} |
764 |
s.push(">\n");
|
765 |
s.push("<id>"+(this.id?this.id:"")+"</id>\n"); |
766 |
if(this.title){ |
767 |
s.push(this.title);
|
768 |
} |
769 |
if(this.copyright&&!this.rights){ |
770 |
this.rights=this.copyright; |
771 |
} |
772 |
if(this.rights){ |
773 |
s.push("<rights>"+this.rights+"</rights>\n"); |
774 |
} |
775 |
if(this.issued){ |
776 |
s.push("<issued>"+dojo.date.stamp.toISOString(this.issued)+"</issued>\n"); |
777 |
} |
778 |
if(this.modified){ |
779 |
s.push("<modified>"+dojo.date.stamp.toISOString(this.modified)+"</modified>\n"); |
780 |
} |
781 |
if(this.modified&&!this.updated){ |
782 |
this.updated=this.modified; |
783 |
} |
784 |
if(this.updated){ |
785 |
s.push("<updated>"+dojo.date.stamp.toISOString(this.updated)+"</updated>\n"); |
786 |
} |
787 |
if(this.published){ |
788 |
s.push("<published>"+dojo.date.stamp.toISOString(this.published)+"</published>\n"); |
789 |
} |
790 |
if(this.icon){ |
791 |
s.push("<icon>"+this.icon+"</icon>\n"); |
792 |
} |
793 |
if(this.language){ |
794 |
s.push("<language>"+this.language+"</language>\n"); |
795 |
} |
796 |
if(this.logo){ |
797 |
s.push("<logo>"+this.logo+"</logo>\n"); |
798 |
} |
799 |
if(this.subtitle){ |
800 |
s.push(this.subtitle.toString());
|
801 |
} |
802 |
if(this.tagline){ |
803 |
s.push(this.tagline.toString());
|
804 |
} |
805 |
var _7c=[this.alternateLinks,this.authors,this.categories,this.contributors,this.otherLinks,this.extensions,this.entries]; |
806 |
for(i in _7c){ |
807 |
if(_7c[i]){
|
808 |
for(var x in _7c[i]){ |
809 |
s.push(_7c[i][x]); |
810 |
} |
811 |
} |
812 |
} |
813 |
s.push("</feed>");
|
814 |
return s.join(""); |
815 |
},createEntry:function(){ |
816 |
var _7d=new dojox.atom.io.model.Entry(); |
817 |
_7d.feedUrl=this.getSelfHref();
|
818 |
return _7d;
|
819 |
},getSelfHref:function(){ |
820 |
if(this.links===null||this.links.length===0){ |
821 |
return null; |
822 |
} |
823 |
for(var x in this.links){ |
824 |
if(this.links[x].rel&&this.links[x].rel=="self"){ |
825 |
return this.links[x].href; |
826 |
} |
827 |
} |
828 |
return null; |
829 |
}}); |
830 |
dojo.declare("dojox.atom.io.model.Service",dojox.atom.io.model.AtomItem,{constructor:function(_7e){ |
831 |
this.href=_7e;
|
832 |
},buildFromDom:function(_7f){ |
833 |
var i;
|
834 |
this.workspaces=[];
|
835 |
if(_7f.tagName!="service"){ |
836 |
return;
|
837 |
} |
838 |
if(_7f.namespaceURI!=dojox.atom.io.model._Constants.PURL_NS&&_7f.namespaceURI!=dojox.atom.io.model._Constants.APP_NS){
|
839 |
return;
|
840 |
} |
841 |
var ns=_7f.namespaceURI;
|
842 |
this.name_space=_7f.namespaceURI;
|
843 |
var _80;
|
844 |
if(typeof (_7f.getElementsByTagNameNS)!="undefined"){ |
845 |
_80=_7f.getElementsByTagNameNS(ns,"workspace");
|
846 |
}else{
|
847 |
_80=[]; |
848 |
var _81=_7f.getElementsByTagName("workspace"); |
849 |
for(i=0;i<_81.length;i++){ |
850 |
if(_81[i].namespaceURI==ns){
|
851 |
_80.push(_81[i]); |
852 |
} |
853 |
} |
854 |
} |
855 |
if(_80&&_80.length>0){ |
856 |
var _82=0; |
857 |
var _83;
|
858 |
for(i=0;i<_80.length;i++){ |
859 |
_83=(typeof (_80.item)==="undefined"?_80[i]:_80.item(i)); |
860 |
var _84=new dojox.atom.io.model.Workspace(); |
861 |
_84.buildFromDom(_83); |
862 |
this.workspaces[_82++]=_84;
|
863 |
} |
864 |
} |
865 |
},getCollection:function(url){ |
866 |
for(var i=0;i<this.workspaces.length;i++){ |
867 |
var _85=this.workspaces[i].collections; |
868 |
for(var j=0;j<_85.length;j++){ |
869 |
if(_85[j].href==url){
|
870 |
return _85;
|
871 |
} |
872 |
} |
873 |
} |
874 |
return null; |
875 |
}}); |
876 |
dojo.declare("dojox.atom.io.model.Workspace",dojox.atom.io.model.AtomItem,{constructor:function(_86){ |
877 |
this.title=_86;
|
878 |
this.collections=[];
|
879 |
},buildFromDom:function(_87){ |
880 |
var _88=dojox.atom.io.model.util.getNodename(_87);
|
881 |
if(_88!="workspace"){ |
882 |
return;
|
883 |
} |
884 |
var c=_87.childNodes;
|
885 |
var len=0; |
886 |
for(var i=0;i<c.length;i++){ |
887 |
var _89=c[i];
|
888 |
if(_89.nodeType===1){ |
889 |
_88=dojox.atom.io.model.util.getNodename(_89); |
890 |
if(_89.namespaceURI==dojox.atom.io.model._Constants.PURL_NS||_89.namespaceURI==dojox.atom.io.model._Constants.APP_NS){
|
891 |
if(_88==="collection"){ |
892 |
var _8a=new dojox.atom.io.model.Collection(); |
893 |
_8a.buildFromDom(_89); |
894 |
this.collections[len++]=_8a;
|
895 |
} |
896 |
}else{
|
897 |
if(_89.namespaceURI===dojox.atom.io.model._Constants.ATOM_NS){
|
898 |
if(_88==="title"){ |
899 |
this.title=dojox.xml.parser.textContent(_89);
|
900 |
} |
901 |
} |
902 |
} |
903 |
} |
904 |
} |
905 |
}}); |
906 |
dojo.declare("dojox.atom.io.model.Collection",dojox.atom.io.model.AtomItem,{constructor:function(_8b,_8c){ |
907 |
this.href=_8b;
|
908 |
this.title=_8c;
|
909 |
this.attributes=[];
|
910 |
this.features=[];
|
911 |
this.children=[];
|
912 |
this.memberType=null; |
913 |
this.id=null; |
914 |
},buildFromDom:function(_8d){ |
915 |
this.href=_8d.getAttribute("href"); |
916 |
var c=_8d.childNodes;
|
917 |
for(var i=0;i<c.length;i++){ |
918 |
var _8e=c[i];
|
919 |
if(_8e.nodeType===1){ |
920 |
var _8f=dojox.atom.io.model.util.getNodename(_8e);
|
921 |
if(_8e.namespaceURI==dojox.atom.io.model._Constants.PURL_NS||_8e.namespaceURI==dojox.atom.io.model._Constants.APP_NS){
|
922 |
if(_8f==="member-type"){ |
923 |
this.memberType=dojox.xml.parser.textContent(_8e);
|
924 |
}else{
|
925 |
if(_8f=="feature"){ |
926 |
if(_8e.getAttribute("id")){ |
927 |
this.features.push(_8e.getAttribute("id")); |
928 |
} |
929 |
}else{
|
930 |
var _90=new dojox.atom.io.model.Node(); |
931 |
_90.buildFromDom(_8e); |
932 |
this.children.push(_90);
|
933 |
} |
934 |
} |
935 |
}else{
|
936 |
if(_8e.namespaceURI===dojox.atom.io.model._Constants.ATOM_NS){
|
937 |
if(_8f==="id"){ |
938 |
this.id=dojox.xml.parser.textContent(_8e);
|
939 |
}else{
|
940 |
if(_8f==="title"){ |
941 |
this.title=dojox.xml.parser.textContent(_8e);
|
942 |
} |
943 |
} |
944 |
} |
945 |
} |
946 |
} |
947 |
} |
948 |
}}); |
949 |
} |