Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / atom / widget / FeedEntryEditor.js

History | View | Annotate | Download (31.9 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.widget.FeedEntryEditor"]){
9
dojo._hasResource["dojox.atom.widget.FeedEntryEditor"]=true;
10
dojo.provide("dojox.atom.widget.FeedEntryEditor");
11
dojo.require("dojox.atom.widget.FeedEntryViewer");
12
dojo.require("dijit._Widget");
13
dojo.require("dijit._Templated");
14
dojo.require("dijit._Container");
15
dojo.require("dijit.Editor");
16
dojo.require("dijit.form.TextBox");
17
dojo.require("dijit.form.SimpleTextarea");
18
dojo.requireLocalization("dojox.atom.widget","FeedEntryEditor",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
19
dojo.requireLocalization("dojox.atom.widget","PeopleEditor",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
20
dojo.experimental("dojox.atom.widget.FeedEntryEditor");
21
dojo.declare("dojox.atom.widget.FeedEntryEditor",dojox.atom.widget.FeedEntryViewer,{_contentEditor:null,_oldContent:null,_setObject:null,enableEdit:false,_contentEditorCreator:null,_editors:{},entryNewButton:null,_editable:false,templateString:dojo.cache("dojox.atom","widget/templates/FeedEntryEditor.html","<div class=\"feedEntryViewer\">\n    <table border=\"0\" width=\"100%\" class=\"feedEntryViewerMenuTable\" dojoAttachPoint=\"feedEntryViewerMenu\" style=\"display: none;\">\n        <tr width=\"100%\"  dojoAttachPoint=\"entryCheckBoxDisplayOptions\">\n        \t<td align=\"left\" dojoAttachPoint=\"entryNewButton\">\n                <span class=\"feedEntryViewerMenu\" dojoAttachPoint=\"doNew\" dojoAttachEvent=\"onclick:_toggleNew\"></span>\n        \t</td>\n            <td align=\"left\" dojoAttachPoint=\"entryEditButton\" style=\"display: none;\">\n                <span class=\"feedEntryViewerMenu\" dojoAttachPoint=\"edit\" dojoAttachEvent=\"onclick:_toggleEdit\"></span>\n            </td>\n            <td align=\"left\" dojoAttachPoint=\"entrySaveCancelButtons\" style=\"display: none;\">\n                <span class=\"feedEntryViewerMenu\" dojoAttachPoint=\"save\" dojoAttachEvent=\"onclick:saveEdits\"></span>\n                <span class=\"feedEntryViewerMenu\" dojoAttachPoint=\"cancel\" dojoAttachEvent=\"onclick:cancelEdits\"></span>\n            </td>\n            <td align=\"right\">\n                <span class=\"feedEntryViewerMenu\" dojoAttachPoint=\"displayOptions\" dojoAttachEvent=\"onclick:_toggleOptions\"></span>\n            </td>\n        </tr>\n        <tr class=\"feedEntryViewerDisplayCheckbox\" dojoAttachPoint=\"entryCheckBoxRow\" width=\"100%\" style=\"display: none;\">\n            <td dojoAttachPoint=\"feedEntryCelltitle\">\n                <input type=\"checkbox\" name=\"title\" value=\"Title\" dojoAttachPoint=\"feedEntryCheckBoxTitle\" dojoAttachEvent=\"onclick:_toggleCheckbox\"/>\n\t\t\t\t<label for=\"title\" dojoAttachPoint=\"feedEntryCheckBoxLabelTitle\"></label>\n            </td>\n            <td dojoAttachPoint=\"feedEntryCellauthors\">\n                <input type=\"checkbox\" name=\"authors\" value=\"Authors\" dojoAttachPoint=\"feedEntryCheckBoxAuthors\" dojoAttachEvent=\"onclick:_toggleCheckbox\"/>\n\t\t\t\t<label for=\"title\" dojoAttachPoint=\"feedEntryCheckBoxLabelAuthors\"></label>\n            </td>\n            <td dojoAttachPoint=\"feedEntryCellcontributors\">\n                <input type=\"checkbox\" name=\"contributors\" value=\"Contributors\" dojoAttachPoint=\"feedEntryCheckBoxContributors\" dojoAttachEvent=\"onclick:_toggleCheckbox\"/>\n\t\t\t\t<label for=\"title\" dojoAttachPoint=\"feedEntryCheckBoxLabelContributors\"></label>\n            </td>\n            <td dojoAttachPoint=\"feedEntryCellid\">\n                <input type=\"checkbox\" name=\"id\" value=\"Id\" dojoAttachPoint=\"feedEntryCheckBoxId\" dojoAttachEvent=\"onclick:_toggleCheckbox\"/>\n\t\t\t\t<label for=\"title\" dojoAttachPoint=\"feedEntryCheckBoxLabelId\"></label>\n            </td>\n            <td rowspan=\"2\" align=\"right\">\n                <span class=\"feedEntryViewerMenu\" dojoAttachPoint=\"close\" dojoAttachEvent=\"onclick:_toggleOptions\"></span>\n            </td>\n\t\t</tr>\n\t\t<tr class=\"feedEntryViewerDisplayCheckbox\" dojoAttachPoint=\"entryCheckBoxRow2\" width=\"100%\" style=\"display: none;\">\n            <td dojoAttachPoint=\"feedEntryCellupdated\">\n                <input type=\"checkbox\" name=\"updated\" value=\"Updated\" dojoAttachPoint=\"feedEntryCheckBoxUpdated\" dojoAttachEvent=\"onclick:_toggleCheckbox\"/>\n\t\t\t\t<label for=\"title\" dojoAttachPoint=\"feedEntryCheckBoxLabelUpdated\"></label>\n            </td>\n            <td dojoAttachPoint=\"feedEntryCellsummary\">\n                <input type=\"checkbox\" name=\"summary\" value=\"Summary\" dojoAttachPoint=\"feedEntryCheckBoxSummary\" dojoAttachEvent=\"onclick:_toggleCheckbox\"/>\n\t\t\t\t<label for=\"title\" dojoAttachPoint=\"feedEntryCheckBoxLabelSummary\"></label>\n            </td>\n            <td dojoAttachPoint=\"feedEntryCellcontent\">\n                <input type=\"checkbox\" name=\"content\" value=\"Content\" dojoAttachPoint=\"feedEntryCheckBoxContent\" dojoAttachEvent=\"onclick:_toggleCheckbox\"/>\n\t\t\t\t<label for=\"title\" dojoAttachPoint=\"feedEntryCheckBoxLabelContent\"></label>\n            </td>\n        </tr>\n    </table>\n    \n    <table class=\"feedEntryViewerContainer\" border=\"0\" width=\"100%\">\n        <tr class=\"feedEntryViewerTitle\" dojoAttachPoint=\"entryTitleRow\" style=\"display: none;\">\n            <td>\n                <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n                    <tr class=\"graphic-tab-lgray\">\n\t\t\t\t\t\t<td class=\"lp2\">\n\t\t\t\t\t\t\t<span class=\"lp\" dojoAttachPoint=\"entryTitleHeader\"></span>\n\t\t\t\t\t\t</td>\n                    </tr>\n                    <tr>\n                        <td>\n                        \t<select dojoAttachPoint=\"entryTitleSelect\" dojoAttachEvent=\"onchange:_switchEditor\" style=\"display: none\">\n                        \t\t<option value=\"text\">Text</option>\n\t\t\t\t\t\t\t\t<option value=\"html\">HTML</option>\n\t\t\t\t\t\t\t\t<option value=\"xhtml\">XHTML</option>\n                        \t</select>\n                        </td>\n                    </tr>\n                    <tr>\n                        <td colspan=\"2\" dojoAttachPoint=\"entryTitleNode\">\n                        </td>\n                    </tr>\n                </table>\n            </td>\n        </tr>\n\n        <tr class=\"feedEntryViewerAuthor\" dojoAttachPoint=\"entryAuthorRow\" style=\"display: none;\">\n            <td>\n                <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n                    <tr class=\"graphic-tab-lgray\">\n\t\t\t\t\t\t<td class=\"lp2\">\n\t\t\t\t\t\t\t<span class=\"lp\" dojoAttachPoint=\"entryAuthorHeader\"></span>\n\t\t\t\t\t\t</td>\n                    </tr>\n                    <tr>\n                        <td dojoAttachPoint=\"entryAuthorNode\">\n                        </td>\n                    </tr>\n                </table>\n            </td>\n        </tr>\n\n        <tr class=\"feedEntryViewerContributor\" dojoAttachPoint=\"entryContributorRow\" style=\"display: none;\">\n            <td>\n                <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n                    <tr class=\"graphic-tab-lgray\">\n\t\t\t\t\t\t<td class=\"lp2\">\n\t\t\t\t\t\t\t<span class=\"lp\" dojoAttachPoint=\"entryContributorHeader\"></span>\n\t\t\t\t\t\t</td>\n                    </tr>\n                    <tr>\n                        <td dojoAttachPoint=\"entryContributorNode\" class=\"feedEntryViewerContributorNames\">\n                        </td>\n                    </tr>\n                </table>\n            </td>\n        </tr>\n        \n        <tr class=\"feedEntryViewerId\" dojoAttachPoint=\"entryIdRow\" style=\"display: none;\">\n            <td>\n                <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n                    <tr class=\"graphic-tab-lgray\">\n\t\t\t\t\t\t<td class=\"lp2\">\n\t\t\t\t\t\t\t<span class=\"lp\" dojoAttachPoint=\"entryIdHeader\"></span>\n\t\t\t\t\t\t</td>\n                    </tr>\n                    <tr>\n                        <td dojoAttachPoint=\"entryIdNode\" class=\"feedEntryViewerIdText\">\n                        </td>\n                    </tr>\n                </table>\n            </td>\n        </tr>\n    \n        <tr class=\"feedEntryViewerUpdated\" dojoAttachPoint=\"entryUpdatedRow\" style=\"display: none;\">\n            <td>\n                <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n                    <tr class=\"graphic-tab-lgray\">\n\t\t\t\t\t\t<td class=\"lp2\">\n\t\t\t\t\t\t\t<span class=\"lp\" dojoAttachPoint=\"entryUpdatedHeader\"></span>\n\t\t\t\t\t\t</td>\n                    </tr>\n                    <tr>\n                        <td dojoAttachPoint=\"entryUpdatedNode\" class=\"feedEntryViewerUpdatedText\">\n                        </td>\n                    </tr>\n                </table>\n            </td>\n        </tr>\n    \n        <tr class=\"feedEntryViewerSummary\" dojoAttachPoint=\"entrySummaryRow\" style=\"display: none;\">\n            <td>\n                <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n                    <tr class=\"graphic-tab-lgray\">\n\t\t\t\t\t\t<td class=\"lp2\" colspan=\"2\">\n\t\t\t\t\t\t\t<span class=\"lp\" dojoAttachPoint=\"entrySummaryHeader\"></span>\n\t\t\t\t\t\t</td>\n                    </tr>\n                    <tr>\n                        <td>\n                        \t<select dojoAttachPoint=\"entrySummarySelect\" dojoAttachEvent=\"onchange:_switchEditor\" style=\"display: none\">\n                        \t\t<option value=\"text\">Text</option>\n\t\t\t\t\t\t\t\t<option value=\"html\">HTML</option>\n\t\t\t\t\t\t\t\t<option value=\"xhtml\">XHTML</option>\n                        \t</select>\n                        </td>\n                    </tr>\n                    <tr>\n                        <td dojoAttachPoint=\"entrySummaryNode\">\n                        </td>\n                    </tr>\n                </table>\n            </td>\n        </tr>\n    \n        <tr class=\"feedEntryViewerContent\" dojoAttachPoint=\"entryContentRow\" style=\"display: none;\">\n            <td>\n                <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n                    <tr class=\"graphic-tab-lgray\">\n\t\t\t\t\t\t<td class=\"lp2\">\n\t\t\t\t\t\t\t<span class=\"lp\" dojoAttachPoint=\"entryContentHeader\"></span>\n\t\t\t\t\t\t</td>\n                    </tr>\n                    <tr>\n                        <td>\n                        \t<select dojoAttachPoint=\"entryContentSelect\" dojoAttachEvent=\"onchange:_switchEditor\" style=\"display: none\">\n                        \t\t<option value=\"text\">Text</option>\n\t\t\t\t\t\t\t\t<option value=\"html\">HTML</option>\n\t\t\t\t\t\t\t\t<option value=\"xhtml\">XHTML</option>\n                        \t</select>\n                        </td>\n                    </tr>\n                    <tr>\n                        <td dojoAttachPoint=\"entryContentNode\">\n                        </td>\n                    </tr>\n                </table>\n            </td>\n        </tr>\n    </table>\n</div>\n"),postCreate:function(){
22
if(this.entrySelectionTopic!==""){
23
this._subscriptions=[dojo.subscribe(this.entrySelectionTopic,this,"_handleEvent")];
24
}
25
var _1=dojo.i18n.getLocalization("dojox.atom.widget","FeedEntryViewer");
26
this.displayOptions.innerHTML=_1.displayOptions;
27
this.feedEntryCheckBoxLabelTitle.innerHTML=_1.title;
28
this.feedEntryCheckBoxLabelAuthors.innerHTML=_1.authors;
29
this.feedEntryCheckBoxLabelContributors.innerHTML=_1.contributors;
30
this.feedEntryCheckBoxLabelId.innerHTML=_1.id;
31
this.close.innerHTML=_1.close;
32
this.feedEntryCheckBoxLabelUpdated.innerHTML=_1.updated;
33
this.feedEntryCheckBoxLabelSummary.innerHTML=_1.summary;
34
this.feedEntryCheckBoxLabelContent.innerHTML=_1.content;
35
_1=dojo.i18n.getLocalization("dojox.atom.widget","FeedEntryEditor");
36
this.doNew.innerHTML=_1.doNew;
37
this.edit.innerHTML=_1.edit;
38
this.save.innerHTML=_1.save;
39
this.cancel.innerHTML=_1.cancel;
40
},setEntry:function(_2,_3,_4){
41
if(this._entry!==_2){
42
this._editMode=false;
43
_4=false;
44
}else{
45
_4=true;
46
}
47
dojox.atom.widget.FeedEntryEditor.superclass.setEntry.call(this,_2,_3);
48
this._editable=this._isEditable(_2);
49
if(!_4&&!this._editable){
50
dojo.style(this.entryEditButton,"display","none");
51
dojo.style(this.entrySaveCancelButtons,"display","none");
52
}
53
if(this._editable&&this.enableEdit){
54
if(!_4){
55
dojo.style(this.entryEditButton,"display","");
56
if(this.enableMenuFade&&this.entrySaveCancelButton){
57
dojo.fadeOut({node:this.entrySaveCancelButton,duration:250}).play();
58
}
59
}
60
}
61
},_toggleEdit:function(){
62
if(this._editable&&this.enableEdit){
63
dojo.style(this.entryEditButton,"display","none");
64
dojo.style(this.entrySaveCancelButtons,"display","");
65
this._editMode=true;
66
this.setEntry(this._entry,this._feed,true);
67
}
68
},_handleEvent:function(_5){
69
if(_5.source!=this&&_5.action=="delete"&&_5.entry&&_5.entry==this._entry){
70
dojo.style(this.entryEditButton,"display","none");
71
}
72
dojox.atom.widget.FeedEntryEditor.superclass._handleEvent.call(this,_5);
73
},_isEditable:function(_6){
74
var _7=false;
75
if(_6&&_6!==null&&_6.links&&_6.links!==null){
76
for(var x in _6.links){
77
if(_6.links[x].rel&&_6.links[x].rel=="edit"){
78
_7=true;
79
break;
80
}
81
}
82
}
83
return _7;
84
},setTitle:function(_8,_9,_a){
85
if(!_9){
86
dojox.atom.widget.FeedEntryEditor.superclass.setTitle.call(this,_8,_9,_a);
87
if(_a.title&&_a.title.value&&_a.title.value!==null){
88
this.setFieldValidity("title",true);
89
}
90
}else{
91
if(_a.title&&_a.title.value&&_a.title.value!==null){
92
if(!this._toLoad){
93
this._toLoad=[];
94
}
95
this.entryTitleSelect.value=_a.title.type;
96
var _b=this._createEditor(_8,_a.title,true,_a.title.type==="html"||_a.title.type==="xhtml");
97
_b.name="title";
98
this._toLoad.push(_b);
99
this.setFieldValidity("titleedit",true);
100
this.setFieldValidity("title",true);
101
}
102
}
103
},setAuthors:function(_c,_d,_e){
104
if(!_d){
105
dojox.atom.widget.FeedEntryEditor.superclass.setAuthors.call(this,_c,_d,_e);
106
if(_e.authors&&_e.authors.length>0){
107
this.setFieldValidity("authors",true);
108
}
109
}else{
110
if(_e.authors&&_e.authors.length>0){
111
this._editors.authors=this._createPeopleEditor(this.entryAuthorNode,{data:_e.authors,name:"Author"});
112
this.setFieldValidity("authors",true);
113
}
114
}
115
},setContributors:function(_f,_10,_11){
116
if(!_10){
117
dojox.atom.widget.FeedEntryEditor.superclass.setContributors.call(this,_f,_10,_11);
118
if(_11.contributors&&_11.contributors.length>0){
119
this.setFieldValidity("contributors",true);
120
}
121
}else{
122
if(_11.contributors&&_11.contributors.length>0){
123
this._editors.contributors=this._createPeopleEditor(this.entryContributorNode,{data:_11.contributors,name:"Contributor"});
124
this.setFieldValidity("contributors",true);
125
}
126
}
127
},setId:function(_12,_13,_14){
128
if(!_13){
129
dojox.atom.widget.FeedEntryEditor.superclass.setId.call(this,_12,_13,_14);
130
if(_14.id&&_14.id!==null){
131
this.setFieldValidity("id",true);
132
}
133
}else{
134
if(_14.id&&_14.id!==null){
135
this._editors.id=this._createEditor(_12,_14.id);
136
this.setFieldValidity("id",true);
137
}
138
}
139
},setUpdated:function(_15,_16,_17){
140
if(!_16){
141
dojox.atom.widget.FeedEntryEditor.superclass.setUpdated.call(this,_15,_16,_17);
142
if(_17.updated&&_17.updated!==null){
143
this.setFieldValidity("updated",true);
144
}
145
}else{
146
if(_17.updated&&_17.updated!==null){
147
this._editors.updated=this._createEditor(_15,_17.updated);
148
this.setFieldValidity("updated",true);
149
}
150
}
151
},setSummary:function(_18,_19,_1a){
152
if(!_19){
153
dojox.atom.widget.FeedEntryEditor.superclass.setSummary.call(this,_18,_19,_1a);
154
if(_1a.summary&&_1a.summary.value&&_1a.summary.value!==null){
155
this.setFieldValidity("summary",true);
156
}
157
}else{
158
if(_1a.summary&&_1a.summary.value&&_1a.summary.value!==null){
159
if(!this._toLoad){
160
this._toLoad=[];
161
}
162
this.entrySummarySelect.value=_1a.summary.type;
163
var _1b=this._createEditor(_18,_1a.summary,true,_1a.summary.type==="html"||_1a.summary.type==="xhtml");
164
_1b.name="summary";
165
this._toLoad.push(_1b);
166
this.setFieldValidity("summaryedit",true);
167
this.setFieldValidity("summary",true);
168
}
169
}
170
},setContent:function(_1c,_1d,_1e){
171
if(!_1d){
172
dojox.atom.widget.FeedEntryEditor.superclass.setContent.call(this,_1c,_1d,_1e);
173
if(_1e.content&&_1e.content.value&&_1e.content.value!==null){
174
this.setFieldValidity("content",true);
175
}
176
}else{
177
if(_1e.content&&_1e.content.value&&_1e.content.value!==null){
178
if(!this._toLoad){
179
this._toLoad=[];
180
}
181
this.entryContentSelect.value=_1e.content.type;
182
var _1f=this._createEditor(_1c,_1e.content,true,_1e.content.type==="html"||_1e.content.type==="xhtml");
183
_1f.name="content";
184
this._toLoad.push(_1f);
185
this.setFieldValidity("contentedit",true);
186
this.setFieldValidity("content",true);
187
}
188
}
189
},_createEditor:function(_20,_21,_22,rte){
190
var _23;
191
var box;
192
if(!_21){
193
if(rte){
194
return {anchorNode:_20,entryValue:"",editor:null,generateEditor:function(){
195
var _24=document.createElement("div");
196
_24.innerHTML=this.entryValue;
197
this.anchorNode.appendChild(_24);
198
var _25=new dijit.Editor({},_24);
199
this.editor=_25;
200
return _25;
201
}};
202
}
203
if(_22){
204
_23=document.createElement("textarea");
205
_20.appendChild(_23);
206
dojo.style(_23,"width","90%");
207
box=new dijit.form.SimpleTextarea({},_23);
208
}else{
209
_23=document.createElement("input");
210
_20.appendChild(_23);
211
dojo.style(_23,"width","95%");
212
box=new dijit.form.TextBox({},_23);
213
}
214
box.attr("value","");
215
return box;
216
}
217
var _26;
218
if(_21.value!==undefined){
219
_26=_21.value;
220
}else{
221
if(_21.attr){
222
_26=_21.attr("value");
223
}else{
224
_26=_21;
225
}
226
}
227
if(rte){
228
if(_26.indexOf("<")!=-1){
229
_26=_26.replace(/</g,"&lt;");
230
}
231
return {anchorNode:_20,entryValue:_26,editor:null,generateEditor:function(){
232
var _27=document.createElement("div");
233
_27.innerHTML=this.entryValue;
234
this.anchorNode.appendChild(_27);
235
var _28=new dijit.Editor({},_27);
236
this.editor=_28;
237
return _28;
238
}};
239
}
240
if(_22){
241
_23=document.createElement("textarea");
242
_20.appendChild(_23);
243
dojo.style(_23,"width","90%");
244
box=new dijit.form.SimpleTextarea({},_23);
245
}else{
246
_23=document.createElement("input");
247
_20.appendChild(_23);
248
dojo.style(_23,"width","95%");
249
box=new dijit.form.TextBox({},_23);
250
}
251
box.attr("value",_26);
252
return box;
253
},_switchEditor:function(_29){
254
var _2a=null;
255
var _2b=null;
256
var _2c=null;
257
if(dojo.isIE){
258
_2b=_29.srcElement;
259
}else{
260
_2b=_29.target;
261
}
262
if(_2b===this.entryTitleSelect){
263
_2c=this.entryTitleNode;
264
_2a="title";
265
}else{
266
if(_2b===this.entrySummarySelect){
267
_2c=this.entrySummaryNode;
268
_2a="summary";
269
}else{
270
_2c=this.entryContentNode;
271
_2a="content";
272
}
273
}
274
var _2d=this._editors[_2a];
275
var _2e;
276
var _2f;
277
if(_2b.value==="text"){
278
if(_2d.declaredClass==="dijit.Editor"){
279
_2f=_2d.attr("value",false);
280
_2d.close(false,true);
281
_2d.destroy();
282
while(_2c.firstChild){
283
dojo.destroy(_2c.firstChild);
284
}
285
_2e=this._createEditor(_2c,{value:_2f},true,false);
286
this._editors[_2a]=_2e;
287
}
288
}else{
289
if(_2d.declaredClass!="dijit.Editor"){
290
_2f=_2d.attr("value");
291
_2d.destroy();
292
while(_2c.firstChild){
293
dojo.destroy(_2c.firstChild);
294
}
295
_2e=this._createEditor(_2c,{value:_2f},true,true);
296
_2e=dojo.hitch(_2e,_2e.generateEditor)();
297
this._editors[_2a]=_2e;
298
}
299
}
300
},_createPeopleEditor:function(_30,_31){
301
var _32=document.createElement("div");
302
_30.appendChild(_32);
303
return new dojox.atom.widget.PeopleEditor(_31,_32);
304
},saveEdits:function(){
305
dojo.style(this.entrySaveCancelButtons,"display","none");
306
dojo.style(this.entryEditButton,"display","");
307
dojo.style(this.entryNewButton,"display","");
308
var _33=false;
309
var _34;
310
var i;
311
var _35;
312
var _36;
313
var _37;
314
var _38;
315
if(!this._new){
316
_36=this.getEntry();
317
if(this._editors.title&&(this._editors.title.attr("value")!=_36.title.value||this.entryTitleSelect.value!=_36.title.type)){
318
_34=this._editors.title.attr("value");
319
if(this.entryTitleSelect.value==="xhtml"){
320
_34=this._enforceXhtml(_34);
321
if(_34.indexOf("<div xmlns=\"http://www.w3.org/1999/xhtml\">")!==0){
322
_34="<div xmlns=\"http://www.w3.org/1999/xhtml\">"+_34+"</div>";
323
}
324
}
325
_36.title=new dojox.atom.io.model.Content("title",_34,null,this.entryTitleSelect.value);
326
_33=true;
327
}
328
if(this._editors.id.attr("value")!=_36.id){
329
_36.id=this._editors.id.attr("value");
330
_33=true;
331
}
332
if(this._editors.summary&&(this._editors.summary.attr("value")!=_36.summary.value||this.entrySummarySelect.value!=_36.summary.type)){
333
_34=this._editors.summary.attr("value");
334
if(this.entrySummarySelect.value==="xhtml"){
335
_34=this._enforceXhtml(_34);
336
if(_34.indexOf("<div xmlns=\"http://www.w3.org/1999/xhtml\">")!==0){
337
_34="<div xmlns=\"http://www.w3.org/1999/xhtml\">"+_34+"</div>";
338
}
339
}
340
_36.summary=new dojox.atom.io.model.Content("summary",_34,null,this.entrySummarySelect.value);
341
_33=true;
342
}
343
if(this._editors.content&&(this._editors.content.attr("value")!=_36.content.value||this.entryContentSelect.value!=_36.content.type)){
344
_34=this._editors.content.attr("value");
345
if(this.entryContentSelect.value==="xhtml"){
346
_34=this._enforceXhtml(_34);
347
if(_34.indexOf("<div xmlns=\"http://www.w3.org/1999/xhtml\">")!==0){
348
_34="<div xmlns=\"http://www.w3.org/1999/xhtml\">"+_34+"</div>";
349
}
350
}
351
_36.content=new dojox.atom.io.model.Content("content",_34,null,this.entryContentSelect.value);
352
_33=true;
353
}
354
if(this._editors.authors){
355
if(_33){
356
_36.authors=[];
357
_37=this._editors.authors.getValues();
358
for(i in _37){
359
if(_37[i].name||_37[i].email||_37[i].uri){
360
_36.addAuthor(_37[i].name,_37[i].email,_37[i].uri);
361
}
362
}
363
}else{
364
var _39=_36.authors;
365
var _3a=function(_3b,_3c,uri){
366
for(i in _39){
367
if(_39[i].name===_3b&&_39[i].email===_3c&&_39[i].uri===uri){
368
return true;
369
}
370
}
371
return false;
372
};
373
_37=this._editors.authors.getValues();
374
_35=false;
375
for(i in _37){
376
if(!_3a(_37[i].name,_37[i].email,_37[i].uri)){
377
_35=true;
378
break;
379
}
380
}
381
if(_35){
382
_36.authors=[];
383
for(i in _37){
384
if(_37[i].name||_37[i].email||_37[i].uri){
385
_36.addAuthor(_37[i].name,_37[i].email,_37[i].uri);
386
}
387
}
388
_33=true;
389
}
390
}
391
}
392
if(this._editors.contributors){
393
if(_33){
394
_36.contributors=[];
395
_38=this._editors.contributors.getValues();
396
for(i in _38){
397
if(_38[i].name||_38[i].email||_38[i].uri){
398
_36.addAuthor(_38[i].name,_38[i].email,_38[i].uri);
399
}
400
}
401
}else{
402
var _3d=_36.contributors;
403
var _3e=function(_3f,_40,uri){
404
for(i in _3d){
405
if(_3d[i].name===_3f&&_3d[i].email===_40&&_3d[i].uri===uri){
406
return true;
407
}
408
}
409
return false;
410
};
411
_38=this._editors.contributors.getValues();
412
_35=false;
413
for(i in _38){
414
if(_3e(_38[i].name,_38[i].email,_38[i].uri)){
415
_35=true;
416
break;
417
}
418
}
419
if(_35){
420
_36.contributors=[];
421
for(i in _38){
422
if(_38[i].name||_38[i].email||_38[i].uri){
423
_36.addContributor(_38[i].name,_38[i].email,_38[i].uri);
424
}
425
}
426
_33=true;
427
}
428
}
429
}
430
if(_33){
431
dojo.publish(this.entrySelectionTopic,[{action:"update",source:this,entry:_36,callback:this._handleSave}]);
432
}
433
}else{
434
this._new=false;
435
_36=new dojox.atom.io.model.Entry();
436
_34=this._editors.title.attr("value");
437
if(this.entryTitleSelect.value==="xhtml"){
438
_34=this._enforceXhtml(_34);
439
_34="<div xmlns=\"http://www.w3.org/1999/xhtml\">"+_34+"</div>";
440
}
441
_36.setTitle(_34,this.entryTitleSelect.value);
442
_36.id=this._editors.id.attr("value");
443
_37=this._editors.authors.getValues();
444
for(i in _37){
445
if(_37[i].name||_37[i].email||_37[i].uri){
446
_36.addAuthor(_37[i].name,_37[i].email,_37[i].uri);
447
}
448
}
449
_38=this._editors.contributors.getValues();
450
for(i in _38){
451
if(_38[i].name||_38[i].email||_38[i].uri){
452
_36.addContributor(_38[i].name,_38[i].email,_38[i].uri);
453
}
454
}
455
_34=this._editors.summary.attr("value");
456
if(this.entrySummarySelect.value==="xhtml"){
457
_34=this._enforceXhtml(_34);
458
_34="<div xmlns=\"http://www.w3.org/1999/xhtml\">"+_34+"</div>";
459
}
460
_36.summary=new dojox.atom.io.model.Content("summary",_34,null,this.entrySummarySelect.value);
461
_34=this._editors.content.attr("value");
462
if(this.entryContentSelect.value==="xhtml"){
463
_34=this._enforceXhtml(_34);
464
_34="<div xmlns=\"http://www.w3.org/1999/xhtml\">"+_34+"</div>";
465
}
466
_36.content=new dojox.atom.io.model.Content("content",_34,null,this.entryContentSelect.value);
467
dojo.style(this.entryNewButton,"display","");
468
dojo.publish(this.entrySelectionTopic,[{action:"post",source:this,entry:_36}]);
469
}
470
this._editMode=false;
471
this.setEntry(_36,this._feed,true);
472
},_handleSave:function(_41,_42){
473
this._editMode=false;
474
this.clear();
475
this.setEntry(_41,this.getFeed(),true);
476
},cancelEdits:function(){
477
this._new=false;
478
dojo.style(this.entrySaveCancelButtons,"display","none");
479
if(this._editable){
480
dojo.style(this.entryEditButton,"display","");
481
}
482
dojo.style(this.entryNewButton,"display","");
483
this._editMode=false;
484
this.clearEditors();
485
this.setEntry(this.getEntry(),this.getFeed(),true);
486
},clear:function(){
487
this._editable=false;
488
this.clearEditors();
489
dojox.atom.widget.FeedEntryEditor.superclass.clear.apply(this);
490
if(this._contentEditor){
491
this._contentEditor=this._setObject=this._oldContent=this._contentEditorCreator=null;
492
this._editors={};
493
}
494
},clearEditors:function(){
495
for(var key in this._editors){
496
if(this._editors[key].declaredClass==="dijit.Editor"){
497
this._editors[key].close(false,true);
498
}
499
this._editors[key].destroy();
500
}
501
this._editors={};
502
},_enforceXhtml:function(_43){
503
var _44=null;
504
if(_43){
505
var _45=/<br>/g;
506
_44=_43.replace(_45,"<br/>");
507
_44=this._closeTag(_44,"hr");
508
_44=this._closeTag(_44,"img");
509
}
510
return _44;
511
},_closeTag:function(_46,tag){
512
var _47="<"+tag;
513
var _48=_46.indexOf(_47);
514
if(_48!==-1){
515
while(_48!==-1){
516
var _49="";
517
var _4a=false;
518
for(var i=0;i<_46.length;i++){
519
var c=_46.charAt(i);
520
if(i<=_48||_4a){
521
_49+=c;
522
}else{
523
if(c===">"){
524
_49+="/";
525
_4a=true;
526
}
527
_49+=c;
528
}
529
}
530
_46=_49;
531
_48=_46.indexOf(_47,_48+1);
532
}
533
}
534
return _46;
535
},_toggleNew:function(){
536
dojo.style(this.entryNewButton,"display","none");
537
dojo.style(this.entryEditButton,"display","none");
538
dojo.style(this.entrySaveCancelButtons,"display","");
539
this.entrySummarySelect.value="text";
540
this.entryContentSelect.value="text";
541
this.entryTitleSelect.value="text";
542
this.clearNodes();
543
this._new=true;
544
var _4b=dojo.i18n.getLocalization("dojox.atom.widget","FeedEntryViewer");
545
var _4c=new dojox.atom.widget.EntryHeader({title:_4b.title});
546
this.entryTitleHeader.appendChild(_4c.domNode);
547
this._editors.title=this._createEditor(this.entryTitleNode,null);
548
this.setFieldValidity("title",true);
549
var _4d=new dojox.atom.widget.EntryHeader({title:_4b.authors});
550
this.entryAuthorHeader.appendChild(_4d.domNode);
551
this._editors.authors=this._createPeopleEditor(this.entryAuthorNode,{name:"Author"});
552
this.setFieldValidity("authors",true);
553
var _4e=new dojox.atom.widget.EntryHeader({title:_4b.contributors});
554
this.entryContributorHeader.appendChild(_4e.domNode);
555
this._editors.contributors=this._createPeopleEditor(this.entryContributorNode,{name:"Contributor"});
556
this.setFieldValidity("contributors",true);
557
var _4f=new dojox.atom.widget.EntryHeader({title:_4b.id});
558
this.entryIdHeader.appendChild(_4f.domNode);
559
this._editors.id=this._createEditor(this.entryIdNode,null);
560
this.setFieldValidity("id",true);
561
var _50=new dojox.atom.widget.EntryHeader({title:_4b.updated});
562
this.entryUpdatedHeader.appendChild(_50.domNode);
563
this._editors.updated=this._createEditor(this.entryUpdatedNode,null);
564
this.setFieldValidity("updated",true);
565
var _51=new dojox.atom.widget.EntryHeader({title:_4b.summary});
566
this.entrySummaryHeader.appendChild(_51.domNode);
567
this._editors.summary=this._createEditor(this.entrySummaryNode,null,true);
568
this.setFieldValidity("summaryedit",true);
569
this.setFieldValidity("summary",true);
570
var _52=new dojox.atom.widget.EntryHeader({title:_4b.content});
571
this.entryContentHeader.appendChild(_52.domNode);
572
this._editors.content=this._createEditor(this.entryContentNode,null,true);
573
this.setFieldValidity("contentedit",true);
574
this.setFieldValidity("content",true);
575
this._displaySections();
576
},_displaySections:function(){
577
dojo.style(this.entrySummarySelect,"display","none");
578
dojo.style(this.entryContentSelect,"display","none");
579
dojo.style(this.entryTitleSelect,"display","none");
580
if(this.isFieldValid("contentedit")){
581
dojo.style(this.entryContentSelect,"display","");
582
}
583
if(this.isFieldValid("summaryedit")){
584
dojo.style(this.entrySummarySelect,"display","");
585
}
586
if(this.isFieldValid("titleedit")){
587
dojo.style(this.entryTitleSelect,"display","");
588
}
589
dojox.atom.widget.FeedEntryEditor.superclass._displaySections.apply(this);
590
if(this._toLoad){
591
for(var i in this._toLoad){
592
var _53;
593
if(this._toLoad[i].generateEditor){
594
_53=dojo.hitch(this._toLoad[i],this._toLoad[i].generateEditor)();
595
}else{
596
_53=this._toLoad[i];
597
}
598
this._editors[this._toLoad[i].name]=_53;
599
this._toLoad[i]=null;
600
}
601
this._toLoad=null;
602
}
603
}});
604
dojo.declare("dojox.atom.widget.PeopleEditor",[dijit._Widget,dijit._Templated,dijit._Container],{templateString:dojo.cache("dojox.atom","widget/templates/PeopleEditor.html","<div class=\"peopleEditor\">\n\t<table style=\"width: 100%\">\n\t\t<tbody dojoAttachPoint=\"peopleEditorEditors\"></tbody>\n\t</table>\n\t<span class=\"peopleEditorButton\" dojoAttachPoint=\"peopleEditorButton\" dojoAttachEvent=\"onclick:_add\"></span>\n</div>\n"),_rows:[],_editors:[],_index:0,_numRows:0,postCreate:function(){
605
var _54=dojo.i18n.getLocalization("dojox.atom.widget","PeopleEditor");
606
if(this.name){
607
if(this.name=="Author"){
608
this.peopleEditorButton.appendChild(document.createTextNode("["+_54.addAuthor+"]"));
609
}else{
610
if(this.name=="Contributor"){
611
this.peopleEditorButton.appendChild(document.createTextNode("["+_54.addContributor+"]"));
612
}
613
}
614
}else{
615
this.peopleEditorButton.appendChild(document.createTextNode("["+_54.add+"]"));
616
}
617
this._editors=[];
618
if(!this.data||this.data.length===0){
619
this._createEditors(null,null,null,0,this.name);
620
this._index=1;
621
}else{
622
for(var i in this.data){
623
this._createEditors(this.data[i].name,this.data[i].email,this.data[i].uri,i);
624
this._index++;
625
this._numRows++;
626
}
627
}
628
},destroy:function(){
629
for(var key in this._editors){
630
for(var _55 in this._editors[key]){
631
this._editors[key][_55].destroy();
632
}
633
}
634
this._editors=[];
635
},_createEditors:function(_56,_57,uri,_58,_59){
636
var row=document.createElement("tr");
637
this.peopleEditorEditors.appendChild(row);
638
row.id="removeRow"+_58;
639
var _5a=document.createElement("td");
640
_5a.setAttribute("align","right");
641
row.appendChild(_5a);
642
_5a.colSpan=2;
643
if(this._numRows>0){
644
var hr=document.createElement("hr");
645
_5a.appendChild(hr);
646
hr.id="hr"+_58;
647
}
648
row=document.createElement("span");
649
_5a.appendChild(row);
650
row.className="peopleEditorButton";
651
dojo.style(row,"font-size","x-small");
652
dojo.connect(row,"onclick",this,"_removeEditor");
653
row.id="remove"+_58;
654
_5a=document.createTextNode("[X]");
655
row.appendChild(_5a);
656
row=document.createElement("tr");
657
this.peopleEditorEditors.appendChild(row);
658
row.id="editorsRow"+_58;
659
var _5b=document.createElement("td");
660
row.appendChild(_5b);
661
dojo.style(_5b,"width","20%");
662
_5a=document.createElement("td");
663
row.appendChild(_5a);
664
row=document.createElement("table");
665
_5b.appendChild(row);
666
dojo.style(row,"width","100%");
667
_5b=document.createElement("tbody");
668
row.appendChild(_5b);
669
row=document.createElement("table");
670
_5a.appendChild(row);
671
dojo.style(row,"width","100%");
672
_5a=document.createElement("tbody");
673
row.appendChild(_5a);
674
this._editors[_58]=[];
675
this._editors[_58].push(this._createEditor(_56,_59+"name"+_58,"Name:",_5b,_5a));
676
this._editors[_58].push(this._createEditor(_57,_59+"email"+_58,"Email:",_5b,_5a));
677
this._editors[_58].push(this._createEditor(uri,_59+"uri"+_58,"URI:",_5b,_5a));
678
},_createEditor:function(_5c,id,_5d,_5e,_5f){
679
var row=document.createElement("tr");
680
_5e.appendChild(row);
681
var _60=document.createElement("label");
682
_60.setAttribute("for",id);
683
_60.appendChild(document.createTextNode(_5d));
684
_5e=document.createElement("td");
685
_5e.appendChild(_60);
686
row.appendChild(_5e);
687
row=document.createElement("tr");
688
_5f.appendChild(row);
689
_5f=document.createElement("td");
690
row.appendChild(_5f);
691
var _61=document.createElement("input");
692
_61.setAttribute("id",id);
693
_5f.appendChild(_61);
694
dojo.style(_61,"width","95%");
695
var box=new dijit.form.TextBox({},_61);
696
box.attr("value",_5c);
697
return box;
698
},_removeEditor:function(_62){
699
var _63=null;
700
if(dojo.isIE){
701
_63=_62.srcElement;
702
}else{
703
_63=_62.target;
704
}
705
var id=_63.id;
706
id=id.substring(6);
707
for(var key in this._editors[id]){
708
this._editors[id][key].destroy();
709
}
710
var _64=dojo.byId("editorsRow"+id);
711
var _65=_64.parentNode;
712
_65.removeChild(_64);
713
_64=dojo.byId("removeRow"+id);
714
_65=_64.parentNode;
715
_65.removeChild(_64);
716
this._numRows--;
717
if(this._numRows===1&&_65.firstChild.firstChild.firstChild.tagName.toLowerCase()==="hr"){
718
_64=_65.firstChild.firstChild;
719
_64.removeChild(_64.firstChild);
720
}
721
this._editors[id]=null;
722
},_add:function(){
723
this._createEditors(null,null,null,this._index);
724
this._index++;
725
this._numRows++;
726
},getValues:function(){
727
var _66=[];
728
for(var i in this._editors){
729
if(this._editors[i]){
730
_66.push({name:this._editors[i][0].attr("value"),email:this._editors[i][1].attr("value"),uri:this._editors[i][2].attr("value")});
731
}
732
}
733
return _66;
734
}});
735
}