| /* |
| Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. |
| Available via Academic Free License >= 2.1 OR the modified BSD license. |
| see: http://dojotoolkit.org/license for details |
| */ |
| |
| |
| if(!dojo._hasResource["dojox.atom.widget.FeedViewer"]){ |
| dojo._hasResource["dojox.atom.widget.FeedViewer"]=true; |
| dojo.provide("dojox.atom.widget.FeedViewer"); |
| dojo.require("dijit._Widget"); |
| dojo.require("dijit._Templated"); |
| dojo.require("dijit._Container"); |
| dojo.require("dojox.atom.io.Connection"); |
| dojo.requireLocalization("dojox.atom.widget","FeedViewerEntry",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw"); |
| dojo.experimental("dojox.atom.widget.FeedViewer"); |
| dojo.declare("dojox.atom.widget.FeedViewer",[dijit._Widget,dijit._Templated,dijit._Container],{feedViewerTableBody:null,feedViewerTable:null,entrySelectionTopic:"",url:"",xmethod:false,localSaveOnly:false,templateString:dojo.cache("dojox.atom","widget/templates/FeedViewer.html","<div class=\"feedViewerContainer\" dojoAttachPoint=\"feedViewerContainerNode\">\n\t<table cellspacing=\"0\" cellpadding=\"0\" class=\"feedViewerTable\">\n\t\t<tbody dojoAttachPoint=\"feedViewerTableBody\" class=\"feedViewerTableBody\">\n\t\t</tbody>\n\t</table>\n</div>\n"),_feed:null,_currentSelection:null,_includeFilters:null,alertsEnabled:false,postCreate:function(){ |
| this._includeFilters=[]; |
| if(this.entrySelectionTopic!==""){ |
| this._subscriptions=[dojo.subscribe(this.entrySelectionTopic,this,"_handleEvent")]; |
| } |
| this.atomIO=new dojox.atom.io.Connection(); |
| this.childWidgets=[]; |
| },startup:function(){ |
| this.containerNode=this.feedViewerTableBody; |
| var _1=this.getDescendants(); |
| for(var i in _1){ |
| var _2=_1[i]; |
| if(_2&&_2.isFilter){ |
| this._includeFilters.push(new dojox.atom.widget.FeedViewer.CategoryIncludeFilter(_2.scheme,_2.term,_2.label)); |
| _2.destroy(); |
| } |
| } |
| if(this.url!==""){ |
| this.setFeedFromUrl(this.url); |
| } |
| },clear:function(){ |
| this.destroyDescendants(); |
| },setFeedFromUrl:function(_3){ |
| if(_3!==""){ |
| if(this._isRelativeURL(_3)){ |
| var _4=""; |
| if(_3.charAt(0)!=="/"){ |
| _4=this._calculateBaseURL(window.location.href,true); |
| }else{ |
| _4=this._calculateBaseURL(window.location.href,false); |
| } |
| this.url=_4+_3; |
| } |
| this.atomIO.getFeed(_3,dojo.hitch(this,this.setFeed)); |
| } |
| },setFeed:function(_5){ |
| this._feed=_5; |
| this.clear(); |
| var _6=function(a,b){ |
| var _7=this._displayDateForEntry(a); |
| var _8=this._displayDateForEntry(b); |
| if(_7>_8){ |
| return -1; |
| } |
| if(_7<_8){ |
| return 1; |
| } |
| return 0; |
| }; |
| var _9=function(_a){ |
| var _b=_a.split(","); |
| _b.pop(); |
| return _b.join(","); |
| }; |
| var _c=_5.entries.sort(dojo.hitch(this,_6)); |
| if(_5){ |
| var _d=null; |
| for(var i=0;i<_c.length;i++){ |
| var _e=_c[i]; |
| if(this._isFilterAccepted(_e)){ |
| var _f=this._displayDateForEntry(_e); |
| var _10=""; |
| if(_f!==null){ |
| _10=_9(_f.toLocaleString()); |
| if(_10===""){ |
| _10=""+(_f.getMonth()+1)+"/"+_f.getDate()+"/"+_f.getFullYear(); |
| } |
| } |
| if((_d===null)||(_d!=_10)){ |
| this.appendGrouping(_10); |
| _d=_10; |
| } |
| this.appendEntry(_e); |
| } |
| } |
| } |
| },_displayDateForEntry:function(_11){ |
| if(_11.updated){ |
| return _11.updated; |
| } |
| if(_11.modified){ |
| return _11.modified; |
| } |
| if(_11.issued){ |
| return _11.issued; |
| } |
| return new Date(); |
| },appendGrouping:function(_12){ |
| var _13=new dojox.atom.widget.FeedViewerGrouping({}); |
| _13.setText(_12); |
| this.addChild(_13); |
| this.childWidgets.push(_13); |
| },appendEntry:function(_14){ |
| var _15=new dojox.atom.widget.FeedViewerEntry({"xmethod":this.xmethod}); |
| _15.setTitle(_14.title.value); |
| _15.setTime(this._displayDateForEntry(_14).toLocaleTimeString()); |
| _15.entrySelectionTopic=this.entrySelectionTopic; |
| _15.feed=this; |
| this.addChild(_15); |
| this.childWidgets.push(_15); |
| this.connect(_15,"onClick","_rowSelected"); |
| _14.domNode=_15.entryNode; |
| _14._entryWidget=_15; |
| _15.entry=_14; |
| },deleteEntry:function(_16){ |
| if(!this.localSaveOnly){ |
| this.atomIO.deleteEntry(_16.entry,dojo.hitch(this,this._removeEntry,_16),null,this.xmethod); |
| }else{ |
| this._removeEntry(_16,true); |
| } |
| dojo.publish(this.entrySelectionTopic,[{action:"delete",source:this,entry:_16.entry}]); |
| },_removeEntry:function(_17,_18){ |
| if(_18){ |
| var idx=dojo.indexOf(this.childWidgets,_17); |
| var _19=this.childWidgets[idx-1]; |
| var _1a=this.childWidgets[idx+1]; |
| if(_19.declaredClass==="dojox.atom.widget.FeedViewerGrouping"&&(_1a===undefined||_1a.declaredClass==="dojox.atom.widget.FeedViewerGrouping")){ |
| _19.destroy(); |
| } |
| _17.destroy(); |
| }else{ |
| } |
| },_rowSelected:function(evt){ |
| var _1b=evt.target; |
| while(_1b){ |
| if(_1b.attributes){ |
| var _1c=_1b.attributes.getNamedItem("widgetid"); |
| if(_1c&&_1c.value.indexOf("FeedViewerEntry")!=-1){ |
| break; |
| } |
| } |
| _1b=_1b.parentNode; |
| } |
| for(var i=0;i<this._feed.entries.length;i++){ |
| var _1d=this._feed.entries[i]; |
| if((_1b===_1d.domNode)&&(this._currentSelection!==_1d)){ |
| dojo.addClass(_1d.domNode,"feedViewerEntrySelected"); |
| dojo.removeClass(_1d._entryWidget.timeNode,"feedViewerEntryUpdated"); |
| dojo.addClass(_1d._entryWidget.timeNode,"feedViewerEntryUpdatedSelected"); |
| this.onEntrySelected(_1d); |
| if(this.entrySelectionTopic!==""){ |
| dojo.publish(this.entrySelectionTopic,[{action:"set",source:this,feed:this._feed,entry:_1d}]); |
| } |
| if(this._isEditable(_1d)){ |
| _1d._entryWidget.enableDelete(); |
| } |
| this._deselectCurrentSelection(); |
| this._currentSelection=_1d; |
| break; |
| }else{ |
| if((_1b===_1d.domNode)&&(this._currentSelection===_1d)){ |
| dojo.publish(this.entrySelectionTopic,[{action:"delete",source:this,entry:_1d}]); |
| this._deselectCurrentSelection(); |
| break; |
| } |
| } |
| } |
| },_deselectCurrentSelection:function(){ |
| if(this._currentSelection){ |
| dojo.addClass(this._currentSelection._entryWidget.timeNode,"feedViewerEntryUpdated"); |
| dojo.removeClass(this._currentSelection.domNode,"feedViewerEntrySelected"); |
| dojo.removeClass(this._currentSelection._entryWidget.timeNode,"feedViewerEntryUpdatedSelected"); |
| this._currentSelection._entryWidget.disableDelete(); |
| this._currentSelection=null; |
| } |
| },_isEditable:function(_1e){ |
| var _1f=false; |
| if(_1e&&_1e!==null&&_1e.links&&_1e.links!==null){ |
| for(var x in _1e.links){ |
| if(_1e.links[x].rel&&_1e.links[x].rel=="edit"){ |
| _1f=true; |
| break; |
| } |
| } |
| } |
| return _1f; |
| },onEntrySelected:function(_20){ |
| },_isRelativeURL:function(url){ |
| var _21=function(url){ |
| var _22=false; |
| if(url.indexOf("file://")===0){ |
| _22=true; |
| } |
| return _22; |
| }; |
| var _23=function(url){ |
| var _24=false; |
| if(url.indexOf("http://")===0){ |
| _24=true; |
| } |
| return _24; |
| }; |
| var _25=false; |
| if(url!==null){ |
| if(!_21(url)&&!_23(url)){ |
| _25=true; |
| } |
| } |
| return _25; |
| },_calculateBaseURL:function(_26,_27){ |
| var _28=null; |
| if(_26!==null){ |
| var _29=_26.indexOf("?"); |
| if(_29!=-1){ |
| _26=_26.substring(0,_29); |
| } |
| if(_27){ |
| _29=_26.lastIndexOf("/"); |
| if((_29>0)&&(_29<_26.length)&&(_29!==(_26.length-1))){ |
| _28=_26.substring(0,(_29+1)); |
| }else{ |
| _28=_26; |
| } |
| }else{ |
| _29=_26.indexOf("://"); |
| if(_29>0){ |
| _29=_29+3; |
| var _2a=_26.substring(0,_29); |
| var _2b=_26.substring(_29,_26.length); |
| _29=_2b.indexOf("/"); |
| if((_29<_2b.length)&&(_29>0)){ |
| _28=_2a+_2b.substring(0,_29); |
| }else{ |
| _28=_2a+_2b; |
| } |
| } |
| } |
| } |
| return _28; |
| },_isFilterAccepted:function(_2c){ |
| var _2d=false; |
| if(this._includeFilters&&(this._includeFilters.length>0)){ |
| for(var i=0;i<this._includeFilters.length;i++){ |
| var _2e=this._includeFilters[i]; |
| if(_2e.match(_2c)){ |
| _2d=true; |
| break; |
| } |
| } |
| }else{ |
| _2d=true; |
| } |
| return _2d; |
| },addCategoryIncludeFilter:function(_2f){ |
| if(_2f){ |
| var _30=_2f.scheme; |
| var _31=_2f.term; |
| var _32=_2f.label; |
| var _33=true; |
| if(!_30){ |
| _30=null; |
| } |
| if(!_31){ |
| _30=null; |
| } |
| if(!_32){ |
| _30=null; |
| } |
| if(this._includeFilters&&this._includeFilters.length>0){ |
| for(var i=0;i<this._includeFilters.length;i++){ |
| var _34=this._includeFilters[i]; |
| if((_34.term===_31)&&(_34.scheme===_30)&&(_34.label===_32)){ |
| _33=false; |
| break; |
| } |
| } |
| } |
| if(_33){ |
| this._includeFilters.push(dojox.atom.widget.FeedViewer.CategoryIncludeFilter(_30,_31,_32)); |
| } |
| } |
| },removeCategoryIncludeFilter:function(_35){ |
| if(_35){ |
| var _36=_35.scheme; |
| var _37=_35.term; |
| var _38=_35.label; |
| if(!_36){ |
| _36=null; |
| } |
| if(!_37){ |
| _36=null; |
| } |
| if(!_38){ |
| _36=null; |
| } |
| var _39=[]; |
| if(this._includeFilters&&this._includeFilters.length>0){ |
| for(var i=0;i<this._includeFilters.length;i++){ |
| var _3a=this._includeFilters[i]; |
| if(!((_3a.term===_37)&&(_3a.scheme===_36)&&(_3a.label===_38))){ |
| _39.push(_3a); |
| } |
| } |
| this._includeFilters=_39; |
| } |
| } |
| },_handleEvent:function(_3b){ |
| if(_3b.source!=this){ |
| if(_3b.action=="update"&&_3b.entry){ |
| var evt=_3b; |
| if(!this.localSaveOnly){ |
| this.atomIO.updateEntry(evt.entry,dojo.hitch(evt.source,evt.callback),null,true); |
| } |
| this._currentSelection._entryWidget.setTime(this._displayDateForEntry(evt.entry).toLocaleTimeString()); |
| this._currentSelection._entryWidget.setTitle(evt.entry.title.value); |
| }else{ |
| if(_3b.action=="post"&&_3b.entry){ |
| if(!this.localSaveOnly){ |
| this.atomIO.addEntry(_3b.entry,this.url,dojo.hitch(this,this._addEntry)); |
| }else{ |
| this._addEntry(_3b.entry); |
| } |
| } |
| } |
| } |
| },_addEntry:function(_3c){ |
| this._feed.addEntry(_3c); |
| this.setFeed(this._feed); |
| dojo.publish(this.entrySelectionTopic,[{action:"set",source:this,feed:this._feed,entry:_3c}]); |
| },destroy:function(){ |
| this.clear(); |
| dojo.forEach(this._subscriptions,dojo.unsubscribe); |
| }}); |
| dojo.declare("dojox.atom.widget.FeedViewerEntry",[dijit._Widget,dijit._Templated],{templateString:dojo.cache("dojox.atom","widget/templates/FeedViewerEntry.html","<tr class=\"feedViewerEntry\" dojoAttachPoint=\"entryNode\" dojoAttachEvent=\"onclick:onClick\">\n <td class=\"feedViewerEntryUpdated\" dojoAttachPoint=\"timeNode\">\n </td>\n <td>\n <table border=\"0\" width=\"100%\" dojoAttachPoint=\"titleRow\">\n <tr padding=\"0\" border=\"0\">\n <td class=\"feedViewerEntryTitle\" dojoAttachPoint=\"titleNode\">\n </td>\n <td class=\"feedViewerEntryDelete\" align=\"right\">\n <span dojoAttachPoint=\"deleteButton\" dojoAttachEvent=\"onclick:deleteEntry\" class=\"feedViewerDeleteButton\" style=\"display:none;\">[delete]</span>\n </td>\n <tr>\n </table>\n </td>\n</tr>\n"),entryNode:null,timeNode:null,deleteButton:null,entry:null,feed:null,postCreate:function(){ |
| var _3d=dojo.i18n.getLocalization("dojox.atom.widget","FeedViewerEntry"); |
| this.deleteButton.innerHTML=_3d.deleteButton; |
| },setTitle:function(_3e){ |
| if(this.titleNode.lastChild){ |
| this.titleNode.removeChild(this.titleNode.lastChild); |
| } |
| var _3f=document.createElement("div"); |
| _3f.innerHTML=_3e; |
| this.titleNode.appendChild(_3f); |
| },setTime:function(_40){ |
| if(this.timeNode.lastChild){ |
| this.timeNode.removeChild(this.timeNode.lastChild); |
| } |
| var _41=document.createTextNode(_40); |
| this.timeNode.appendChild(_41); |
| },enableDelete:function(){ |
| if(this.deleteButton!==null){ |
| this.deleteButton.style.display="inline"; |
| } |
| },disableDelete:function(){ |
| if(this.deleteButton!==null){ |
| this.deleteButton.style.display="none"; |
| } |
| },deleteEntry:function(_42){ |
| _42.preventDefault(); |
| _42.stopPropagation(); |
| this.feed.deleteEntry(this); |
| },onClick:function(e){ |
| }}); |
| dojo.declare("dojox.atom.widget.FeedViewerGrouping",[dijit._Widget,dijit._Templated],{templateString:dojo.cache("dojox.atom","widget/templates/FeedViewerGrouping.html","<tr dojoAttachPoint=\"groupingNode\" class=\"feedViewerGrouping\">\n\t<td colspan=\"2\" dojoAttachPoint=\"titleNode\" class=\"feedViewerGroupingTitle\">\n\t</td>\n</tr>\n"),groupingNode:null,titleNode:null,setText:function(_43){ |
| if(this.titleNode.lastChild){ |
| this.titleNode.removeChild(this.titleNode.lastChild); |
| } |
| var _44=document.createTextNode(_43); |
| this.titleNode.appendChild(_44); |
| }}); |
| dojo.declare("dojox.atom.widget.AtomEntryCategoryFilter",[dijit._Widget,dijit._Templated],{scheme:"",term:"",label:"",isFilter:true}); |
| dojo.declare("dojox.atom.widget.FeedViewer.CategoryIncludeFilter",null,{constructor:function(_45,_46,_47){ |
| this.scheme=_45; |
| this.term=_46; |
| this.label=_47; |
| },match:function(_48){ |
| var _49=false; |
| if(_48!==null){ |
| var _4a=_48.categories; |
| if(_4a!==null){ |
| for(var i=0;i<_4a.length;i++){ |
| var _4b=_4a[i]; |
| if(this.scheme!==""){ |
| if(this.scheme!==_4b.scheme){ |
| break; |
| } |
| } |
| if(this.term!==""){ |
| if(this.term!==_4b.term){ |
| break; |
| } |
| } |
| if(this.label!==""){ |
| if(this.label!==_4b.label){ |
| break; |
| } |
| } |
| _49=true; |
| } |
| } |
| } |
| return _49; |
| }}); |
| } |