diff options
Diffstat (limited to 'mailnews/base/prefs/content/aw-outgoing.js')
-rw-r--r-- | mailnews/base/prefs/content/aw-outgoing.js | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/mailnews/base/prefs/content/aw-outgoing.js b/mailnews/base/prefs/content/aw-outgoing.js new file mode 100644 index 000000000..8caffc274 --- /dev/null +++ b/mailnews/base/prefs/content/aw-outgoing.js @@ -0,0 +1,151 @@ +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +Components.utils.import("resource:///modules/hostnameUtils.jsm"); +Components.utils.import("resource:///modules/mailServices.js"); + +var gProtocolInfo = null; +var gPrefsBundle; + +function outgoingPageValidate() { + let canAdvance = true; + + let smtpServer = document.getElementById("smtphostname").value; + let usingDefaultSMTP = document.getElementById("noSmtp").hidden; + if (!usingDefaultSMTP && !isLegalHostNameOrIP(cleanUpHostName(smtpServer))) + canAdvance = false; + + document.documentElement.canAdvance = canAdvance; +} + +function outgoingPageUnload() { + var pageData = parent.GetPageData(); + var username = document.getElementById("username").value; + let smtpserver = document.getElementById("smtphostname").value; + setPageData(pageData, "server", "smtphostname", cleanUpHostName(smtpserver)); + + // If SMTP username box is blank it is because the + // incoming and outgoing server names were the same, + // so set to be same as incoming username + var smtpusername = document.getElementById("smtpusername").value || username; + + setPageData(pageData, "login", "smtpusername", smtpusername); + + return true; +} + +function outgoingPageInit() { + gPrefsBundle = document.getElementById("bundle_prefs"); + var pageData = parent.GetPageData(); + + var smtpServer = null; + var smtpCreateNewServer = gCurrentAccountData && gCurrentAccountData.smtpCreateNewServer; + + // Don't use the default smtp server if smtp server creation was explicitly + // requested in isp rdf. + // If we're reusing the default smtp we should not set the smtp hostname. + if (MailServices.smtp.defaultServer && !smtpCreateNewServer) { + smtpServer = MailServices.smtp.defaultServer; + setPageData(pageData, "identity", "smtpServerKey", ""); + } + + var noSmtpBox = document.getElementById("noSmtp"); + var haveSmtpBox = document.getElementById("haveSmtp"); + + var boxToHide; + var boxToShow; + + if (pageData.server && pageData.server.smtphostname && smtpCreateNewServer) { + var smtpTextBox = document.getElementById("smtphostname"); + if (smtpTextBox && smtpTextBox.value == "") + smtpTextBox.value = pageData.server.smtphostname.value; + } + + if (smtpServer && smtpServer.hostname) { + // we have a hostname, so modify and show the static text and + // store the value of the default smtp server in the textbox. + modifyStaticText(smtpServer.hostname, "1") + boxToShow = haveSmtpBox; + boxToHide = noSmtpBox; + } + else { + // no default hostname yet + boxToShow = noSmtpBox; + boxToHide = haveSmtpBox; + } + + if (boxToHide) + boxToHide.setAttribute("hidden", "true"); + + if (boxToShow) + boxToShow.removeAttribute("hidden"); + + var smtpNameInput = document.getElementById("smtpusername"); + smtpServer = MailServices.smtp.defaultServer; + if (smtpServer && smtpServer.hostname && smtpServer.username) { + // we have a default SMTP server, so modify and show the static text + // and store the username for the default server in the textbox. + modifyStaticText(smtpServer.username, "2") + hideShowLoginSettings(2, 1, 3); + smtpNameInput.value = smtpServer.username; + } + else { + // no default SMTP server yet, so need to compare + // incoming and outgoing server names + var smtpServerName = pageData.server.smtphostname.value; + var incomingServerName = pageData.server.hostname.value; + if (smtpServerName == incomingServerName) { + // incoming and outgoing server names are the same, so show + // the static text and make sure textbox blank for later tests. + modifyStaticText(smtpServerName, "3") + hideShowLoginSettings(3, 1, 2); + smtpNameInput.value = ""; + } + else { + // incoming and outgoing server names are different, so set smtp + // username's textbox to be the same as incoming's one, unless already set. + hideShowLoginSettings(1, 2, 3); + smtpNameInput.value = smtpNameInput.value || loginNameInput.value; + } + } + outgoingPageValidate(); +} + +function modifyStaticText(smtpMod, smtpBox) +{ + // modify the value in the smtp display if we already have a + // smtp server so that the single string displays the hostname + // or username for the smtp server. + var smtpStatic = document.getElementById("smtpStaticText"+smtpBox); + if (smtpStatic && smtpStatic.hasChildNodes()) + smtpStatic.childNodes[0].nodeValue = smtpStatic.getAttribute("prefix") + + smtpMod + smtpStatic.getAttribute("suffix"); +} + +function hideShowLoginSettings(aEle, bEle, cEle) +{ + document.getElementById("loginSet" + aEle).hidden = false; + document.getElementById("loginSet" + bEle).hidden = true; + document.getElementById("loginSet" + cEle).hidden = true; +} + +var savedPassword=""; + +function onSavePassword(target) { + dump("savePassword changed! (" + target.checked + ")\n"); + var passwordField = document.getElementById("server.password"); + if (!passwordField) return; + + if (target.checked) { + passwordField.removeAttribute("disabled"); + passwordField.value = savedPassword; + } + else { + passwordField.setAttribute("disabled", "true"); + savedPassword = passwordField.value; + passwordField.value = ""; + } + +} |