diff --git a/mailnews/base/prefs/resources/content/aw-done.js b/mailnews/base/prefs/resources/content/aw-done.js index ddd9ac71b7f..2795bf2b776 100644 --- a/mailnews/base/prefs/resources/content/aw-done.js +++ b/mailnews/base/prefs/resources/content/aw-done.js @@ -20,28 +20,104 @@ function onInit() { var pageData = parent.wizardManager.WSM.PageData; + var showMailServerDetails = true; + + var currentAccountData = parent.gCurrentAccountData; + if (currentAccountData) { + // find out if we need to hide server details + showMailServerDetails = currentAccountData.showServerDetailsOnWizardSummary; + + // Change the username field description to email field label in aw-identity + setUserNameDescField(currentAccountData.emailIDFieldTitle); + } + + var accountName=""; + if (pageData.accname && pageData.accname.prettyName) { + accountName = pageData.accname.prettyName.value; + if (!accountName && + currentAccountData && + currentAccountData.prettyName) + accountName = currentAccountData.prettyName; + } + setDivTextFromForm("account.name", accountName); var email = ""; if (pageData.identity && pageData.identity.email) { // fixup the email email = pageData.identity.email.value; - if (email.split('@').length < 2 && parent.gCurrentAccountData.domain) - email += "@" + parent.gCurrentAccountData.domain; + if (email.split('@').length < 2 && + currentAccountData && + currentAccountData.domain) + email += "@" + currentAccountData.domain; } setDivTextFromForm("identity.email", email); - var username=""; - if (pageData.login && pageData.login.username) - username = pageData.login.username.value; - setDivTextFromForm("server.username", username); + var userName=""; + if (pageData.login && pageData.login.username) { + userName = pageData.login.username.value; + } + if (!userName && email) { + var emailData = email.split('@'); + userName = emailData[0]; + } + setDivTextFromForm("server.username", userName); + + // Show mail servers (incoming&outgoing) detials + // based on current account data. ISP can set + // rdf value of literal showServerDetailsOnWizardSummary + // to false to hide server details + if (showMailServerDetails) { + var incomingServerName=""; + if (pageData.server && pageData.server.hostname) { + incomingServerName = pageData.server.hostname.value; + if (!incomingServerName && + currentAccountData && + currentAccountData.incomingServer.hostname) + incomingServerName = currentAccountData.incomingServer.hostName; + } + setDivTextFromForm("server.name", incomingServerName); + + var incomingServerType=""; + if (pageData.server && pageData.server.servertype) { + incomingServerType = pageData.server.servertype.value; + if (!incomingServerType && + currentAccountData && + currentAccountData.incomingServer.type) + incomingServerType = currentAccountData.incomingServer.type; + } + setDivTextFromForm("server.type", incomingServerType.toUpperCase()); + + var smtpServerName=""; + if (pageData.server && pageData.server.smtphostname) { + var smtpServer = parent.smtpService.defaultServer; + smtpServerName = pageData.server.smtphostname.value; + if (!smtpServerName && smtpServer.hostname) + smtpServerName = smtpServer.hostname; + } + setDivTextFromForm("smtpServer.name", smtpServerName); + } + else { + setDivTextFromForm("server.name", null); + setDivTextFromForm("server.type", null); + setDivTextFromForm("smtpServer.name", null); + } + + var newsServerName=""; + if (pageData.newsserver && pageData.newsserver.hostname) + newsServerName = pageData.newsserver.hostname.value; + if (newsServerName) { + // No need to show username for news account + setDivTextFromForm("server.username", null); + } + setDivTextFromForm("newsServer.name", newsServerName); } function setDivTextFromForm(divid, value) { - // hide the .label if the div has no value - if (!value || value =="") { - var div = document.getElementById(divid + ".label"); - div.setAttribute("hidden","true"); + // collapse the row if the div has no value + if (!value) { + var div = document.getElementById(divid); + div.setAttribute("collapsed","true"); return; } @@ -52,6 +128,14 @@ function setDivTextFromForm(divid, value) { div.setAttribute("value", value); } +function setUserNameDescField(name) +{ + if (name) { + var userNameField = document.getElementById("server.username.label"); + userNameField.setAttribute("value", name); + } +} + function setupAnother(event) { window.alert("Unimplemented, see bug #19982"); diff --git a/mailnews/base/prefs/resources/content/aw-done.xul b/mailnews/base/prefs/resources/content/aw-done.xul index d7b3c96fdcd..5ab5e41d0e1 100644 --- a/mailnews/base/prefs/resources/content/aw-done.xul +++ b/mailnews/base/prefs/resources/content/aw-done.xul @@ -44,18 +44,38 @@ Rights Reserved. - + - - + + + + + + - - + + + + + + + + + + + + + + + + + + diff --git a/mailnews/base/prefs/resources/content/aw-identity.js b/mailnews/base/prefs/resources/content/aw-identity.js index f6b4f384830..c2fcf0f9cb8 100644 --- a/mailnews/base/prefs/resources/content/aw-identity.js +++ b/mailnews/base/prefs/resources/content/aw-identity.js @@ -85,11 +85,74 @@ function validateEmail() { function onInit() { + setEmailDescriptionText(); checkForDomain(); checkForFullName(); checkForEmail(); } +// Use email example data that ISP has provided. ISP data, if avaialble +// for the choice user has made, will be read into CurrentAccountData. +// Default example data from properties will be used when the info is missing. +function setEmailDescriptionText() +{ + var emailDescText = document.getElementById("emailDescText"); + var emailFieldLabel = document.getElementById("emailFieldLabel"); + var currentAccountData = parent.gCurrentAccountData; + + var displayText = null; + var emailFieldLabelData = null; + var setDefaultEmailDescStrings = true; + + // Get values for customized data from current account + if (currentAccountData) + { + var emailProvider = currentAccountData.emailProviderName; + var sampleEmail = currentAccountData.sampleEmail; + var sampleUserName = currentAccountData.sampleUserName; + var emailIDDesc = currentAccountData.emailIDDescription; + var emailIDTitle = currentAccountData.emailIDFieldTitle; + + if (emailProvider && + sampleEmail && + sampleUserName && + emailIDDesc && + emailIDTitle) + { + // Get email description data + displayText = Bundle.GetStringFromName("customizedEmailText") + .replace(/%emailProvider%/g, emailProvider) + .replace(/%mailIDDesc%/g, emailIDDesc) + .replace(/%sampleEmail%/, sampleEmail) + .replace(/%sampleUserName%/, sampleUserName); + + // Set emailfield label + emailFieldLabelData = emailIDTitle; + emailFieldLabel.setAttribute("value", emailFieldLabelData); + + // Need to display customized data. Turn off default settings. + setDefaultEmailDescStrings = false; + } + } + + if (setDefaultEmailDescStrings) + { + // Check for obtained values and set with default values if needed + var username = Bundle.GetStringFromName("exampleEmailUserName"); + var domain = Bundle.GetStringFromName("exampleEmailDomain"); + + displayText = Bundle.GetStringFromName("defaultEmailText") + .replace(/%username%/, username) + .replace(/%domain%/, domain); + } + + // Create a text nodes with text to be displayed + var emailDescTextNode = document.createTextNode(displayText); + + // Display the dynamically generated text for email description + emailDescText.appendChild(emailDescTextNode); +} + // retrieve the current domain from the parent wizard window, // and update the UI to add the @domain static text function checkForDomain() diff --git a/mailnews/base/prefs/resources/content/aw-identity.xul b/mailnews/base/prefs/resources/content/aw-identity.xul index 2f4e8419f62..c635f9d01e5 100644 --- a/mailnews/base/prefs/resources/content/aw-identity.xul +++ b/mailnews/base/prefs/resources/content/aw-identity.xul @@ -38,24 +38,34 @@ Rights Reserved. - &identityDesc.label; &fullnameDesc.label; &fullnameExample.label; - + - &emailDesc.label; &emailExample.label; - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/mailnews/base/prefs/resources/locale/en-US/aw-done.dtd b/mailnews/base/prefs/resources/locale/en-US/aw-done.dtd index 4f694a7ed73..0cf7075fbe9 100644 --- a/mailnews/base/prefs/resources/locale/en-US/aw-done.dtd +++ b/mailnews/base/prefs/resources/locale/en-US/aw-done.dtd @@ -3,6 +3,11 @@ + + + + + diff --git a/mailnews/base/prefs/resources/locale/en-US/aw-identity.dtd b/mailnews/base/prefs/resources/locale/en-US/aw-identity.dtd index ff47a5aec59..6945bcbba63 100644 --- a/mailnews/base/prefs/resources/locale/en-US/aw-identity.dtd +++ b/mailnews/base/prefs/resources/locale/en-US/aw-identity.dtd @@ -12,7 +12,4 @@ - - - diff --git a/mailnews/base/prefs/resources/locale/en-US/prefs.properties b/mailnews/base/prefs/resources/locale/en-US/prefs.properties index dc06276d8be..663dd2ae0f9 100644 --- a/mailnews/base/prefs/resources/locale/en-US/prefs.properties +++ b/mailnews/base/prefs/resources/locale/en-US/prefs.properties @@ -38,6 +38,12 @@ failedDeleteAccount=Failed to delete this account. failedDuplicateAccount=Failed to duplicate this account. confirmDeleteAccount=Are you sure you want to delete this account? +#Provide default example values for sample email address +exampleEmailUserName=example +exampleEmailDomain=netscape.net +defaultEmailText=Enter your email address. This is the address others will use to send email to you. (For example, "%username%@%domain%".) +customizedEmailText=Enter your %emailProvider% %mailIDDesc%. (For example, if your %emailProvider% email address is "%sampleEmail%", your %mailIDDesc% is "%sampleUserName%".) + # account manager stuff prefPanel-server=Server prefPanel-copies=Copies and Folders diff --git a/mailnews/base/public/nsIMsgIncomingServer.idl b/mailnews/base/public/nsIMsgIncomingServer.idl index 159df82cdff..de55046cd84 100644 --- a/mailnews/base/public/nsIMsgIncomingServer.idl +++ b/mailnews/base/public/nsIMsgIncomingServer.idl @@ -186,6 +186,9 @@ interface nsIMsgIncomingServer : nsISupports { /* used for comparing nsIMsgIncomingServers */ boolean equals(in nsIMsgIncomingServer server); + /* Get Messages at startup */ + readonly attribute boolean downloadMessagesAtStartup; + /** * can this server be removed from the account manager? for * instance, local mail is not removable, but an imported folder is diff --git a/mailnews/base/resources/content/commandglue.js b/mailnews/base/resources/content/commandglue.js index 5d385e17e9b..fff18cfc1d4 100644 --- a/mailnews/base/resources/content/commandglue.js +++ b/mailnews/base/resources/content/commandglue.js @@ -25,7 +25,6 @@ //The eventual goal is for this file to go away and for the functions to either be brought into //mailCommands.js or into 3pane specific code. - var gFolderJustSwitched = false; var gBeforeFolderLoadTime; var gRDFNamespace = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; @@ -180,9 +179,19 @@ function ChangeFolderByURI(uri, isThreaded, sortID, sortDirection, viewType) //if it's a server, clear the threadpane and don't bother trying to load. if(msgfolder.isServer) { - ClearThreadPane(); + ClearThreadPane(); + + // Load AccountCentral page here. + ShowAccountCentral(); return; } + + // If the user clicks on msgfolder, time to display thread pane and message pane. + // Hide AccountCentral page + if (gAccountCentralLoaded) + { + HideAccountCentral(); + } if (showPerformance) { gBeforeFolderLoadTime = new Date(); @@ -777,7 +786,8 @@ function FolderPaneSelectionChange() ClearThreadPane(); } } - ClearMessagePane(); + if (!gAccountCentralLoaded) + ClearMessagePane(); } diff --git a/mailnews/base/resources/content/mailWindow.js b/mailnews/base/resources/content/mailWindow.js index 73097b9f1b6..317c1f41b58 100644 --- a/mailnews/base/resources/content/mailWindow.js +++ b/mailnews/base/resources/content/mailWindow.js @@ -54,7 +54,10 @@ var messageDSContractID = datasourceContractIDPrefix + "mailnewsmessages" var accountManagerDataSource; var folderDataSource; var messageDataSource; - + +var messagesBox = null; +var accountCentralBox = null; +var gAccountCentralLoaded = false; //End progress and Status variables function OnMailWindowUnload() @@ -153,6 +156,8 @@ function CreateMailWindowGlobals() folderDataSource = Components.classes[folderDSContractID].createInstance(); messageDataSource = Components.classes[messageDSContractID].createInstance(); + messagesBox = document.getElementById("messagesBox"); + accountCentralBox = document.getElementById("accountCentralBox"); } function InitMsgWindow() @@ -391,3 +396,55 @@ function loadStartPage() { } } +// Display AccountCentral page when users clicks on the Account Folder. +// When AccountCentral page need to be shown, we need to hide +// the box containing threadPane, splitter and messagePane. +// Load iframe in the AccountCentral box with corresponding page +function ShowAccountCentral() +{ + try { + var acctCentralPage = pref.getLocalizedUnicharPref("mailnews.account_central_page.url"); + messagesBox.setAttribute("hidden", "true"); + accountCentralBox.removeAttribute("hidden"); + window.frames["accountCentralPane"].location = acctCentralPage; + gAccountCentralLoaded = true; + } + catch (ex) { + dump("Error loading AccountCentral page -> " + ex + "\n"); + return; + } +} + +// Display thread and message panes with splitter when user tries +// to read messages by clicking on msgfolders. Hide AccountCentral +// box and display message box. +function HideAccountCentral() +{ + try { + accountCentralBox.setAttribute("hidden", "true"); + messagesBox.removeAttribute("hidden"); + gAccountCentralLoaded = false; + } + catch (ex) { + dump("Error hiding AccountCentral page -> " + ex + "\n"); + return; + } +} + +// Given the server, open the twisty and the set the selection +// on inbox of that server +function OpenInboxForServer(server) +{ + try { + HideAccountCentral(); + OpenTwistyForServer(server); + var inboxFolder = GetInboxFolder(server); + var folderTree = GetFolderTree(); + var inboxFolderUri = document.getElementById(inboxFolder.URI); + ChangeSelection(folderTree, inboxFolderUri); + } + catch (ex) { + dump("Error opening inbox for server -> " + ex + "\n"); + return; + } +} diff --git a/mailnews/base/resources/content/mailWindowOverlay.js b/mailnews/base/resources/content/mailWindowOverlay.js index 91fc4eb5f6f..6196b3b2e7c 100644 --- a/mailnews/base/resources/content/mailWindowOverlay.js +++ b/mailnews/base/resources/content/mailWindowOverlay.js @@ -208,6 +208,36 @@ function GetFirstSelectedMsgFolder() return result; } +function GetInboxFolder(server) +{ + try { + var rootFolder = server.RootFolder; + var rootMsgFolder = rootFolder.QueryInterface(Components.interfaces.nsIMsgFolder); + + //now find Inbox + var outNumFolders = new Object(); + var inboxFolder = rootMsgFolder.getFoldersWithFlag(0x1000, 1, outNumFolders); + + return inboxFolder.QueryInterface(Components.interfaces.nsIMsgFolder); + } + catch (ex) { + dump(ex + "\n"); + } + return null; +} + +function GetMessagesForInboxOnServer(server) +{ + var inboxFolder = GetInboxFolder(server); + if (!inboxFolder) return; + + var folders = new Array(1); + folders[0] = inboxFolder; + + var compositeDataSource = GetCompositeDataSource("GetNewMessages"); + GetNewMessages(folders, compositeDataSource); +} + function MsgGetMessage() { var folders = GetSelectedMsgFolders(); @@ -215,6 +245,37 @@ function MsgGetMessage() GetNewMessages(folders, compositeDataSource); } +function MsgGetMessagesForAllServers(defaultServer) +{ + // now log into any server + try + { + var allServers = accountManager.allServers; + + for (var i=0;i