Dactyloidae/mailnews/base/prefs/content/aw-outgoing.js

151 lines
5.5 KiB
JavaScript

/* -*- 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 = "";
}
}