cacert-testmgr/external/ZendFramework-1.9.5/externals/dojo/demos/mail/src.js
Markus Warg 8398c9048d initially import ZendFramework-1.9.5 into repository
code was modified slightly, so the code differs from the original downloadable 1.9.5 version
2010-03-31 10:12:32 +02:00

206 lines
6.4 KiB
JavaScript

dojo.require("dojo.parser");
dojo.require("dojo.data.ItemFileWriteStore");
dojo.require("dojo.date.locale");
dojo.require("dojo.date.stamp");
dojo.require("dijit.dijit");
dojo.require("dijit.Declaration");
dojo.require("dijit.form.Button");
dojo.require("dijit.Menu");
dojo.require("dijit.Tree");
dojo.require("dijit.Tooltip");
dojo.require("dijit.Dialog");
dojo.require("dijit.Toolbar");
dojo.require("dijit._Calendar");
dojo.require("dijit.ColorPalette");
dojo.require("dijit.Editor");
dojo.require("dijit._editor.plugins.LinkDialog");
dojo.require("dijit._editor.plugins.FontChoice");
dojo.require("dijit.ProgressBar");
dojo.require("dijit.form.ComboBox");
dojo.require("dijit.form.CheckBox");
dojo.require("dijit.form.Textarea");
dojo.require("dijit.form.TextBox");
dojo.require("dijit.form.ComboBox");
dojo.require("dijit.form.FilteringSelect");
dojo.require("dijit.form.Textarea");
dojo.require("dijit.form.Form")
dojo.require("dijit.layout.BorderContainer");
dojo.require("dijit.layout.AccordionContainer");
dojo.require("dijit.layout.TabContainer");
dojo.require("dijit.layout.ContentPane");
dojo.require("dojox.grid.DataGrid");
dojo.require("dojox.widget.FisheyeLite");
dojo.require("dojox.analytics.Urchin");
dojo.addOnLoad(function(){
dojo.parser.parse();
dijit.setWaiRole(dojo.body(), "application");
var n = dojo.byId("preLoader");
dojo.fadeOut({
node:n,
duration:720,
onEnd:function(){
// dojo._destroyElement(n);
dojo.style(n,"display","none");
}
}).play();
// Set up handler so that when contact information is updated the "display field"
// (used by "To" field drop-down") is also updated
dojo.connect(contactStore, "onSet", function(/* item */ item,
/* attribute-name-string */ attribute,
/* object | array */ oldValue,
/* object | array */ newValue){
if(attribute != "display"){
contactStore.setValue(item, "display",
contactStore.getValue(item, "first") + " " +
contactStore.getValue(item, "last") + " <" +
contactStore.getValue(item, "email") + ">");
}
});
// make tooltips go down (from buttons on toolbar) rather than to the right
dijit.Tooltip.defaultPosition = ["above", "below"];
// Write A-Z "links" on contactIndex tab to do filtering
genIndex();
new dojox.analytics.Urchin({
acct: "UA-3572741-1",
GAonLoad: function(){
this.trackPageView("/demos/dijitmail");
}
});
});
function genIndex(){
// summary: generate A-Z push buttons for navigating contact list
var ci = dojo.byId("contactIndex");
function addChar(c, func, cls){
// add specified character, when clicked will execute func
var span = document.createElement("span");
span.innerHTML = c;
span.className = cls || "contactIndex";
ci.appendChild(span);
new dojox.widget.FisheyeLite(
{
properties: {fontSize: 1.5},
easeIn: dojo.fx.easing.linear,
durationIn: 100,
easeOut: dojo.fx.easing.linear,
durationOut: 100
},
span
);
dojo.connect(span, "onclick", func || function(){ contactTable.setQuery({first: c+"*"}, {ignoreCase: true}) });
dojo.connect(span, "onclick", function(){
dojo.query(">", ci).removeClass("contactIndexSelected");
dojo.addClass(span, "contactIndexSelected");
});
}
addChar("ALL", function(){contactTable.setQuery({})}, 'contactIndexAll' );
for(var l = "A".charCodeAt(0); l <= "Z".charCodeAt(0); l++){
addChar(String.fromCharCode(l))
}
addChar("ALL", function(){contactTable.setQuery({})}, 'contactIndexAll' );
}
var paneId = 1;
function onMessageClick(cell){
// summary: when user clicks a row in the message list pane
var item = cell.grid.getItem(cell.rowIndex),
sender = this.store.getValue(item, "sender"),
subject = this.store.getValue(item, "label"),
sent = dojo.date.locale.format(
dojo.date.stamp.fromISOString(this.store.getValue(item, "sent")),
{formatLength: "long", selector: "date"}),
text = this.store.getValue(item, "text"),
messageInner = "<span class='messageHeader'>From: " + sender + "<br>" +
"Subject: "+ subject + "<br>" +
"Date: " + sent + "<br><br></span>" +
text;
dijit.byId("message").setContent(messageInner);
}
function searchMessages(){
// summary: do a custom search for messages across inbox folders
var query = {type: "message"};
var searchCriteria = searchForm.attr('value');
for(var key in searchCriteria){
var val = searchCriteria[key];
if(val){
query[key] = "*" + val + "*";
}
table.setQuery(query, {ignoreCase: true});
}
}
// for "new message" tab closing
function testClose(pane,tab){
return confirm("Are you sure you want to leave your changes?");
}
// fake mail download code:
var numMails;
var updateFetchStatus = function(x){
if(x == 0){
dijit.byId('fakeFetch').update({ indeterminate: false });
return;
}
dijit.byId('fakeFetch').update({ progress: x + 1 });
if(x == numMails){
dojo.fadeOut({ node: 'fetchMail', duration:800,
// set progress back to indeterminate. we're cheating, because this
// doesn't actually have any data to "progress"
onEnd: function(){
dijit.byId('fakeFetch').update({ indeterminate: true });
dojo.byId('fetchMail').style.visibility='hidden'; // remove progress bar from tab order
}
}).play();
}
}
var fakeReport = function(percent){
// FIXME: can't set a label on an indeterminate progress bar
// like if(this.indeterminate) { return " connecting."; }
return dojo.string.substitute("Fetching: ${0} of ${1} messages.", [percent * this.maximum, this.maximum]);
}
var fakeDownload = function(){
dojo.byId('fetchMail').style.visibility='visible';
numMails = Math.floor(Math.random()*10) + 1;
dijit.byId('fakeFetch').update({ maximum: numMails, progress:0 });
dojo.fadeIn({ node: 'fetchMail', duration:300 }).play();
for(var ii = 0; ii < numMails + 1; ++ii){
var func = dojo.partial(updateFetchStatus, ii);
setTimeout(func, ((ii + 1) * (Math.floor(Math.random()*100) + 400)));
}
}
// fake sending dialog progress bar
var stopSendBar = function(){
dijit.byId('fakeSend').update({ indeterminate: false });
dijit.byId('sendDialog').hide();
tabs.selectedChildWidget.onClose = function(){return true;}; // don't want confirm message
tabs.closeChild(tabs.selectedChildWidget);
}
var showSendBar = function(){
dijit.byId('fakeSend').update({ indeterminate: true });
dijit.byId('sendDialog').show();
setTimeout(function(){stopSendBar();}, 3000);
}
var formatDate = function(inDatum){
return dojo.date.locale.format(dojo.date.stamp.fromISOString(inDatum), {selector: "date"});
}