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 |
} |